@solidstarters/solid-core-ui 1.1.61 → 1.1.62

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/components/core/common/SolidGlobalSearchElement.d.ts +1 -0
  2. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  3. package/dist/components/core/common/SolidGlobalSearchElement.js +292 -56
  4. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  5. package/dist/components/core/common/SolidSaveCustomFilterForm.d.ts +9 -0
  6. package/dist/components/core/common/SolidSaveCustomFilterForm.d.ts.map +1 -0
  7. package/dist/components/core/common/SolidSaveCustomFilterForm.js +37 -0
  8. package/dist/components/core/common/SolidSaveCustomFilterForm.js.map +1 -0
  9. package/dist/components/core/filter/fields/SolidBooleanField.js +1 -1
  10. package/dist/components/core/filter/fields/SolidBooleanField.js.map +1 -1
  11. package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
  12. package/dist/components/core/kanban/SolidKanbanView.js +130 -98
  13. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  14. package/dist/components/core/model/CreateModel.js +3 -3
  15. package/dist/components/core/model/CreateModel.js.map +1 -1
  16. package/dist/components/core/model/FieldMetaDataForm.d.ts.map +1 -1
  17. package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
  18. package/dist/components/core/model/ModelMetaData.d.ts.map +1 -1
  19. package/dist/components/core/model/ModelMetaData.js +68 -15
  20. package/dist/components/core/model/ModelMetaData.js.map +1 -1
  21. package/dist/index.d.ts +1 -0
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +1 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/resources/globals.css +8 -0
  26. package/package.json +1 -1
  27. package/src/components/core/common/SolidGlobalSearchElement.tsx +425 -123
  28. package/src/components/core/common/SolidSaveCustomFilterForm.tsx +74 -0
  29. package/src/components/core/filter/fields/SolidBooleanField.tsx +1 -1
  30. package/src/components/core/kanban/SolidKanbanView.tsx +175 -157
  31. package/src/components/core/model/CreateModel.tsx +2 -2
  32. package/src/components/core/model/FieldMetaDataForm.tsx +0 -2
  33. package/src/components/core/model/ModelMetaData.tsx +204 -121
  34. package/src/index.ts +1 -0
  35. package/src/resources/globals.css +8 -0
@@ -2,6 +2,7 @@
2
2
  import { SingleSelectAutoCompleteField } from "@/components/common/SingleSelectAutoCompleteField";
3
3
  import { getSingularAndPlural } from "@/helpers/helpers";
4
4
  import { useGetFieldDefaultMetaDataQuery } from "@/redux/api/fieldApi";
5
+ import { useLazyGetModelsQuery } from "@/redux/api/modelApi";
5
6
  import { useLazyGetmodulesQuery } from "@/redux/api/moduleApi";
6
7
  import { useFormik } from "formik";
7
8
  import { snakeCase } from "lodash";
@@ -27,6 +28,7 @@ const ModelMetaData = React.forwardRef(({ modelMetaData, setModelMetaData, allMo
27
28
  const pathname = usePathname();
28
29
 
29
30
  const [triggerGetModules, { data: moduleData, isFetching: isModuleFetching, error: moduleError }] = useLazyGetmodulesQuery();
31
+ const [triggerGetModels, { data: modelData, isFetching: isModelFetching, error: modelError }] = useLazyGetModelsQuery();
30
32
  const { data: fieldDefaultMetaData, isLoading, error, refetch } = useGetFieldDefaultMetaDataQuery(null);
31
33
 
32
34
 
@@ -54,14 +56,22 @@ const ModelMetaData = React.forwardRef(({ modelMetaData, setModelMetaData, allMo
54
56
  enableSoftDelete: modelMetaData ? modelMetaData?.enableSoftDelete : "",
55
57
  enableAuditTracking: modelMetaData ? modelMetaData?.enableAuditTracking : "",
56
58
  internationalisation: modelMetaData ? modelMetaData?.internationalisation : "",
59
+ isChild: modelMetaData ? modelMetaData?.isChild : false,
60
+ parentModelId: modelMetaData ? modelMetaData?.parentModel?.id : "",
61
+ parentModel: modelMetaData ? modelMetaData?.parentModel : "",
62
+
57
63
  };
58
64
 
59
65
  const [showTableName, setShowTableName] = useState<any>(false);
66
+ const [showParentModel, setShowParentModel] = useState<any>(false);
60
67
 
61
68
  useEffect(() => {
62
69
  if (modelMetaData && modelMetaData.tableName) {
63
70
  setShowTableName(true)
64
71
  }
72
+ if (modelMetaData && modelMetaData.isChild) {
73
+ setShowParentModel(true)
74
+ }
65
75
  }, [modelMetaData])
66
76
 
67
77
  const validationSchema = Yup.object({
@@ -93,6 +103,10 @@ const ModelMetaData = React.forwardRef(({ modelMetaData, setModelMetaData, allMo
93
103
  enableSoftDelete: Yup.boolean(),
94
104
  enableAuditTracking: Yup.boolean(),
95
105
  internationalisation: Yup.boolean(),
106
+ isChild: Yup.boolean(),
107
+ parentModelId: Yup.number(),
108
+ parentModel: Yup.object()
109
+
96
110
  });
97
111
 
98
112
 
@@ -124,6 +138,11 @@ const ModelMetaData = React.forwardRef(({ modelMetaData, setModelMetaData, allMo
124
138
  enableSoftDelete: values.enableSoftDelete === true ? true : '',
125
139
  enableAuditTracking: values.enableAuditTracking === true ? true : '',
126
140
  internationalisation: values.internationalisation === true ? true : '',
141
+ isChild: values.isChild ? values.isChild === true : '',
142
+ ...(values.isChild == true && {
143
+ parentModelId: values.parentModelId,
144
+ parentModel: values.parentModel,
145
+ }),
127
146
  };
128
147
  setModelMetaData(modelData);
129
148
  nextTab()
@@ -198,6 +217,37 @@ const ModelMetaData = React.forwardRef(({ modelMetaData, setModelMetaData, allMo
198
217
  };
199
218
 
200
219
 
220
+ const searchModel = async (event: any) => {
221
+ try {
222
+ const query = event.query;
223
+ const queryData = {
224
+ limit: 10,
225
+ offset: 0,
226
+ filters: {
227
+ singularName: {
228
+ $containsi: query,
229
+ },
230
+ },
231
+ };
232
+
233
+ const queryString = qs.stringify(queryData, {
234
+ encodeValuesOnly: true,
235
+ });
236
+
237
+ const result = await triggerGetModels(queryString).unwrap();
238
+
239
+ if (result && result.records) {
240
+ const updatedSuggestion = [...result.records];
241
+ return updatedSuggestion
242
+ } else {
243
+ return []
244
+ }
245
+ } catch (error) {
246
+ return []
247
+ }
248
+ };
249
+
250
+
201
251
  const serachDataSource = async (event: any) => {
202
252
  const query = event.query;
203
253
  try {
@@ -404,6 +454,39 @@ const ModelMetaData = React.forwardRef(({ modelMetaData, setModelMetaData, allMo
404
454
  className="mt-2"
405
455
  />
406
456
  )}
457
+
458
+ <div className="mt-4">
459
+ <div className="flex align-items-center gap-2">
460
+ <Checkbox onChange={e => { setShowParentModel(e.checked) }} checked={showParentModel} disabled={params.id !== 'new'}></Checkbox>
461
+ <label htmlFor="ingredient1" className="form-field-label">
462
+ isChild
463
+ </label>
464
+ </div>
465
+ </div>
466
+ {showParentModel &&
467
+ <div className="flex flex-column gap-2 mt-3">
468
+ <label htmlFor="type" className="form-field-label">
469
+ Parent Model
470
+ </label>
471
+ <SingleSelectAutoCompleteField
472
+ disabled={params.id !== 'new'}
473
+ key="parentModel"
474
+ formik={formik}
475
+ isFormFieldValid={isFormFieldValid}
476
+ relationField={true}
477
+ fieldName="parentModel"
478
+ fieldNameId="parentModelId"
479
+ labelKey="displayName"
480
+ valueKey="id"
481
+ searchData={searchModel}
482
+ existingData={formik.values.parentModel}
483
+ formErrors={formErrors}
484
+ />
485
+ {(isFormFieldValid(formik, "parentModel") || (formErrors["parentModel"])) && (
486
+ <Message severity="error" text={formik?.errors?.parentModelId?.toString()} />
487
+ )}
488
+ </div>
489
+ }
407
490
  {/* <div className="field col-6">
408
491
  <div className="flex align-items-center gap-2 mt-3">
409
492
  <Checkbox
@@ -510,132 +593,132 @@ const ModelMetaData = React.forwardRef(({ modelMetaData, setModelMetaData, allMo
510
593
 
511
594
  {/* <p className="form-wrapper-heading text-base">Basic Settings</p> */}
512
595
  <Panel header={"Basic Settings"} className="solid-column-panel">
513
- <div className="flex flex-column gap-2 mt-3">
514
- <label htmlFor="displayName" className="form-field-label">
515
- Display Name
516
- </label>
517
- <InputText
518
- type="text"
519
- id="displayName"
520
- name="displayName"
521
- onChange={(e) => {
596
+ <div className="flex flex-column gap-2 mt-3">
597
+ <label htmlFor="displayName" className="form-field-label">
598
+ Display Name
599
+ </label>
600
+ <InputText
601
+ type="text"
602
+ id="displayName"
603
+ name="displayName"
604
+ onChange={(e) => {
522
605
 
523
- formik.handleChange(e);
524
- const { toCamelCase, toSnakeCase, toPluralCamelCase } = getSingularAndPlural(e.target.value);
606
+ formik.handleChange(e);
607
+ const { toCamelCase, toSnakeCase, toPluralCamelCase } = getSingularAndPlural(e.target.value);
608
+ if (params.id === 'new') {
609
+ formik.setFieldValue("singularName", toCamelCase);
610
+ formik.setFieldValue("pluralName", toPluralCamelCase);
611
+ }
612
+ if (showTableName == true) {
525
613
  if (params.id === 'new') {
526
- formik.setFieldValue("singularName", toCamelCase);
527
- formik.setFieldValue("pluralName", toPluralCamelCase);
528
- }
529
- if (showTableName == true) {
530
- if (params.id === 'new') {
531
- formik.setFieldValue("tableName", toSnakeCase);
532
- }
614
+ formik.setFieldValue("tableName", toSnakeCase);
533
615
  }
616
+ }
534
617
 
535
618
 
536
- }}
537
- value={formik.values.displayName}
538
- className={classNames("", {
539
- "p-invalid": isFormFieldValid(formik, "displayName") || formErrors["displayName"],
540
- })}
619
+ }}
620
+ value={formik.values.displayName}
621
+ className={classNames("", {
622
+ "p-invalid": isFormFieldValid(formik, "displayName") || formErrors["displayName"],
623
+ })}
624
+
625
+ />
541
626
 
627
+ {(isFormFieldValid(formik, "displayName") || (formErrors["displayName"])) && (
628
+ <Message
629
+ severity="error"
630
+ text={formik?.errors?.displayName?.toString()}
542
631
  />
632
+ )}
633
+ </div>
634
+ <div className="flex flex-column gap-1 mt-4">
635
+ <label htmlFor="singularName" className="form-field-label">
636
+ Singular Name
637
+ </label>
638
+ <InputText
639
+ disabled={true}
640
+ type="text"
641
+ id="singularName"
642
+ name="singularName"
643
+ onChange={formik.handleChange}
644
+ value={formik.values.singularName}
645
+ className={classNames("", {
646
+ "p-invalid": isFormFieldValid(formik, "singularName") || formErrors["singularName"],
647
+ })}
648
+ />
649
+ {(isFormFieldValid(formik, "singularName") || (formErrors["singularName"])) && (
650
+ <Message
651
+ severity="error"
652
+ text={formik?.errors?.singularName?.toString()}
653
+ />
654
+ )}
655
+ </div>
656
+ <div className="flex flex-column gap-1 mt-4">
657
+ <label htmlFor="pluralName" className="form-field-label">
658
+ Plural Name
659
+ </label>
660
+ <InputText
661
+ disabled={true}
662
+ type="text"
663
+ id="pluralName"
664
+ name="pluralName"
665
+ onChange={formik.handleChange}
666
+ value={formik.values.pluralName}
667
+ className={classNames("", {
668
+ "p-invalid": isFormFieldValid(formik, "pluralName") || formErrors["pluralName"],
669
+ })}
670
+ />
671
+ {(isFormFieldValid(formik, "pluralName") || (formErrors["pluralName"])) && (
672
+ <Message severity="error" text={formik?.errors?.pluralName?.toString()} />
673
+ )}
674
+ </div>
543
675
 
544
- {(isFormFieldValid(formik, "displayName") || (formErrors["displayName"])) && (
545
- <Message
546
- severity="error"
547
- text={formik?.errors?.displayName?.toString()}
548
- />
549
- )}
676
+ <div className="mt-4">
677
+ <div className="flex align-items-center gap-2">
678
+ <Checkbox onChange={e => {
679
+ setShowTableName(e.checked);
680
+ if (e.checked === true) {
681
+ const { toCamelCase, toSnakeCase, toPluralCamelCase } = getSingularAndPlural(formik.values.displayName);
682
+ if (params.id === 'new') {
683
+ formik.setFieldValue("tableName", toSnakeCase);
684
+ }
685
+ }
686
+
687
+ }} checked={showTableName} disabled={params.id !== 'new'}></Checkbox>
688
+ <label htmlFor="ingredient1" className="form-field-label">
689
+ Set table name
690
+ </label>
550
691
  </div>
692
+ </div>
693
+ {showTableName &&
551
694
  <div className="flex flex-column gap-1 mt-4">
552
- <label htmlFor="singularName" className="form-field-label">
553
- Singular Name
695
+ <label htmlFor="tableName" className="form-field-label">
696
+ Table Name
554
697
  </label>
555
698
  <InputText
556
- disabled={true}
699
+ disabled={params.id !== 'new'}
557
700
  type="text"
558
- id="singularName"
559
- name="singularName"
701
+ id="tableName"
702
+ name="tableName"
560
703
  onChange={formik.handleChange}
561
- value={formik.values.singularName}
704
+ value={formik.values.tableName}
562
705
  className={classNames("", {
563
- "p-invalid": isFormFieldValid(formik, "singularName") || formErrors["singularName"],
706
+ "p-invalid": isFormFieldValid(formik, "tableName") || formErrors["tableName"],
564
707
  })}
565
708
  />
566
- {(isFormFieldValid(formik, "singularName") || (formErrors["singularName"])) && (
709
+ {(isFormFieldValid(formik, "tableName") || (formErrors["tableName"])) && (
567
710
  <Message
568
711
  severity="error"
569
- text={formik?.errors?.singularName?.toString()}
712
+ text={formik?.errors?.tableName?.toString()}
570
713
  />
571
714
  )}
572
715
  </div>
573
- <div className="flex flex-column gap-1 mt-4">
574
- <label htmlFor="pluralName" className="form-field-label">
575
- Plural Name
576
- </label>
577
- <InputText
578
- disabled={true}
579
- type="text"
580
- id="pluralName"
581
- name="pluralName"
582
- onChange={formik.handleChange}
583
- value={formik.values.pluralName}
584
- className={classNames("", {
585
- "p-invalid": isFormFieldValid(formik, "pluralName") || formErrors["pluralName"],
586
- })}
587
- />
588
- {(isFormFieldValid(formik, "pluralName") || (formErrors["pluralName"])) && (
589
- <Message severity="error" text={formik?.errors?.pluralName?.toString()} />
590
- )}
591
- </div>
592
-
593
- <div className="mt-4">
594
- <div className="flex align-items-center gap-2">
595
- <Checkbox onChange={e => {
596
- setShowTableName(e.checked);
597
- if (e.checked === true) {
598
- const { toCamelCase, toSnakeCase, toPluralCamelCase } = getSingularAndPlural(formik.values.displayName);
599
- if (params.id === 'new') {
600
- formik.setFieldValue("tableName", toSnakeCase);
601
- }
602
- }
603
-
604
- }} checked={showTableName} disabled={params.id !== 'new'}></Checkbox>
605
- <label htmlFor="ingredient1" className="form-field-label">
606
- Set table name
607
- </label>
608
- </div>
609
- </div>
610
- {showTableName &&
611
- <div className="flex flex-column gap-1 mt-4">
612
- <label htmlFor="tableName" className="form-field-label">
613
- Table Name
614
- </label>
615
- <InputText
616
- disabled={params.id !== 'new'}
617
- type="text"
618
- id="tableName"
619
- name="tableName"
620
- onChange={formik.handleChange}
621
- value={formik.values.tableName}
622
- className={classNames("", {
623
- "p-invalid": isFormFieldValid(formik, "tableName") || formErrors["tableName"],
624
- })}
625
- />
626
- {(isFormFieldValid(formik, "tableName") || (formErrors["tableName"])) && (
627
- <Message
628
- severity="error"
629
- text={formik?.errors?.tableName?.toString()}
630
- />
631
- )}
632
- </div>
633
- }
634
- <div className="flex flex-column gap-1 mt-4">
635
- <label htmlFor="description" className="form-field-label">
636
- Description
637
- </label>
638
- {/* <InputText
716
+ }
717
+ <div className="flex flex-column gap-1 mt-4">
718
+ <label htmlFor="description" className="form-field-label">
719
+ Description
720
+ </label>
721
+ {/* <InputText
639
722
  type="text"
640
723
  id="description"
641
724
  name="description"
@@ -645,24 +728,24 @@ const ModelMetaData = React.forwardRef(({ modelMetaData, setModelMetaData, allMo
645
728
  "p-invalid": isFormFieldValid(formik, "description"),
646
729
  })}
647
730
  /> */}
648
- <InputTextarea
649
- id="description"
650
- name="description"
651
- onChange={formik.handleChange}
652
- value={formik.values.description}
653
- className={classNames("", {
654
- "p-invalid": isFormFieldValid(formik, "description") || formErrors["description"],
655
- })}
656
- rows={5}
657
- cols={30}
731
+ <InputTextarea
732
+ id="description"
733
+ name="description"
734
+ onChange={formik.handleChange}
735
+ value={formik.values.description}
736
+ className={classNames("", {
737
+ "p-invalid": isFormFieldValid(formik, "description") || formErrors["description"],
738
+ })}
739
+ rows={5}
740
+ cols={30}
741
+ />
742
+ {(isFormFieldValid(formik, "description") || (formErrors["description"])) && (
743
+ <Message
744
+ severity="error"
745
+ text={formik?.errors?.description?.toString()}
658
746
  />
659
- {(isFormFieldValid(formik, "description") || (formErrors["description"])) && (
660
- <Message
661
- severity="error"
662
- text={formik?.errors?.description?.toString()}
663
- />
664
- )}
665
- </div>
747
+ )}
748
+ </div>
666
749
  </Panel>
667
750
  </div>
668
751
 
package/src/index.ts CHANGED
@@ -225,6 +225,7 @@ export { SolidViewLayoutManager } from '@/components/core/common/SolidViewLayout
225
225
  export { SolidListViewConfigure } from '@/components/core/list/SolidListViewConfigure';
226
226
  export { SolidCreateButton } from '@/components/core/common/SolidCreateButton';
227
227
  export { SolidGlobalSearchElement } from '@/components/core/common/SolidGlobalSearchElement';
228
+ export { SolidSaveCustomFilterForm } from '@/components/core/common/SolidSaveCustomFilterForm';
228
229
  export { SolidSearchBox } from '@/components/core/common/SolidSearchBox';
229
230
 
230
231
  // export type {ModelMetaData} from '@/components/core/field/FieldListViewData'; //Commenting this line for now, since it does not seem to be used anywhere
@@ -3095,4 +3095,12 @@ flex-shrink: 0; */
3095
3095
  .view-widget-chip.p-chip .p-chip-text {
3096
3096
  margin-top: 0 !important;
3097
3097
  margin-bottom: 0 !important;
3098
+ }
3099
+
3100
+
3101
+
3102
+ .solid-global-search-element input {
3103
+
3104
+ min-width: 300px;
3105
+
3098
3106
  }