@solidxai/core-ui 0.1.3 → 0.1.4-beta.0

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 (127) hide show
  1. package/dist/components/auth/SolidInitialLoginOtp.d.ts.map +1 -1
  2. package/dist/components/auth/SolidInitialLoginOtp.js +0 -5
  3. package/dist/components/auth/SolidInitialLoginOtp.js.map +1 -1
  4. package/dist/components/auth/SolidInitialLoginOtp.tsx +0 -5
  5. package/dist/components/auth/SolidLogin.d.ts.map +1 -1
  6. package/dist/components/auth/SolidLogin.js +7 -5
  7. package/dist/components/auth/SolidLogin.js.map +1 -1
  8. package/dist/components/auth/SolidLogin.tsx +10 -8
  9. package/dist/components/common/GeneralSettings.d.ts.map +1 -1
  10. package/dist/components/common/GeneralSettings.js +48 -47
  11. package/dist/components/common/GeneralSettings.js.map +1 -1
  12. package/dist/components/common/GeneralSettings.tsx +41 -10
  13. package/dist/components/core/common/FilterComponent.js.map +1 -1
  14. package/dist/components/core/common/FilterComponent.tsx +1 -1
  15. package/dist/components/core/common/GroupingComponent.d.ts +54 -0
  16. package/dist/components/core/common/GroupingComponent.d.ts.map +1 -0
  17. package/dist/components/core/common/GroupingComponent.js +196 -0
  18. package/dist/components/core/common/GroupingComponent.js.map +1 -0
  19. package/dist/components/core/common/GroupingComponent.tsx +452 -0
  20. package/dist/components/core/common/SolidGlobalSearchElement.d.ts +18 -1
  21. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  22. package/dist/components/core/common/SolidGlobalSearchElement.js +146 -47
  23. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  24. package/dist/components/core/common/SolidGlobalSearchElement.tsx +191 -18
  25. package/dist/components/core/extension/solid-core/modelSequence/modelSequenceFormViewChangeHandler.d.ts +19 -0
  26. package/dist/components/core/extension/solid-core/modelSequence/modelSequenceFormViewChangeHandler.d.ts.map +1 -0
  27. package/dist/components/core/extension/solid-core/modelSequence/modelSequenceFormViewChangeHandler.js +90 -0
  28. package/dist/components/core/extension/solid-core/modelSequence/modelSequenceFormViewChangeHandler.js.map +1 -0
  29. package/dist/components/core/extension/solid-core/modelSequence/modelSequenceFormViewChangeHandler.tsx +59 -0
  30. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.d.ts.map +1 -1
  31. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js +7 -3
  32. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js.map +1 -1
  33. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.tsx +45 -40
  34. package/dist/components/core/filter/SolidOneToManyFilterElement.d.ts +2 -0
  35. package/dist/components/core/filter/SolidOneToManyFilterElement.d.ts.map +1 -0
  36. package/dist/components/core/filter/SolidOneToManyFilterElement.js +86 -0
  37. package/dist/components/core/filter/SolidOneToManyFilterElement.js.map +1 -0
  38. package/dist/components/core/filter/SolidOneToManyFilterElement.tsx +62 -0
  39. package/dist/components/core/filter/SolidVarInputsFilterElement.d.ts +1 -0
  40. package/dist/components/core/filter/SolidVarInputsFilterElement.d.ts.map +1 -1
  41. package/dist/components/core/filter/SolidVarInputsFilterElement.js +4 -1
  42. package/dist/components/core/filter/SolidVarInputsFilterElement.js.map +1 -1
  43. package/dist/components/core/filter/SolidVarInputsFilterElement.tsx +10 -0
  44. package/dist/components/core/filter/fields/SolidRelationField.d.ts.map +1 -1
  45. package/dist/components/core/filter/fields/SolidRelationField.js +4 -2
  46. package/dist/components/core/filter/fields/SolidRelationField.js.map +1 -1
  47. package/dist/components/core/filter/fields/SolidRelationField.tsx +4 -2
  48. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.d.ts +4 -0
  49. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.d.ts.map +1 -0
  50. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.js +25 -0
  51. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.js.map +1 -0
  52. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.tsx +60 -0
  53. package/dist/components/core/form/SolidFormFooter.js +4 -4
  54. package/dist/components/core/form/SolidFormFooter.js.map +1 -1
  55. package/dist/components/core/form/SolidFormFooter.tsx +4 -4
  56. package/dist/components/core/form/fields/SolidBooleanField.d.ts.map +1 -1
  57. package/dist/components/core/form/fields/SolidBooleanField.js +11 -8
  58. package/dist/components/core/form/fields/SolidBooleanField.js.map +1 -1
  59. package/dist/components/core/form/fields/SolidBooleanField.tsx +20 -8
  60. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.d.ts.map +1 -1
  61. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js +26 -21
  62. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js.map +1 -1
  63. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +27 -17
  64. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.d.ts +1 -0
  65. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.d.ts.map +1 -1
  66. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.js +51 -0
  67. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.js.map +1 -1
  68. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.ts +51 -0
  69. package/dist/components/core/kanban/SolidKanbanView.js +5 -5
  70. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  71. package/dist/components/core/kanban/SolidKanbanView.tsx +5 -5
  72. package/dist/components/core/list/SolidListView.d.ts +12 -7
  73. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  74. package/dist/components/core/list/SolidListView.js +138 -150
  75. package/dist/components/core/list/SolidListView.js.map +1 -1
  76. package/dist/components/core/list/SolidListView.tsx +84 -91
  77. package/dist/components/core/list/listViewRegistry.js.map +1 -1
  78. package/dist/components/core/list/listViewRegistry.ts +1 -2
  79. package/dist/components/core/tree/SolidTreeView.d.ts +38 -0
  80. package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -0
  81. package/dist/components/core/tree/SolidTreeView.js +1170 -0
  82. package/dist/components/core/tree/SolidTreeView.js.map +1 -0
  83. package/dist/components/core/tree/SolidTreeView.tsx +1603 -0
  84. package/dist/components/core/tree/treeViewRegistry.d.ts +7 -0
  85. package/dist/components/core/tree/treeViewRegistry.d.ts.map +1 -0
  86. package/dist/components/core/tree/treeViewRegistry.js +17 -0
  87. package/dist/components/core/tree/treeViewRegistry.js.map +1 -0
  88. package/dist/components/core/tree/treeViewRegistry.ts +23 -0
  89. package/dist/components/core/users/CreateUser.d.ts.map +1 -1
  90. package/dist/components/core/users/CreateUser.js +19 -6
  91. package/dist/components/core/users/CreateUser.js.map +1 -1
  92. package/dist/components/core/users/CreateUser.tsx +39 -0
  93. package/dist/helpers/helpers.d.ts +2 -0
  94. package/dist/helpers/helpers.d.ts.map +1 -1
  95. package/dist/helpers/helpers.js +3 -1
  96. package/dist/helpers/helpers.js.map +1 -1
  97. package/dist/helpers/helpers.ts +4 -1
  98. package/dist/helpers/registry.d.ts.map +1 -1
  99. package/dist/helpers/registry.js +2 -0
  100. package/dist/helpers/registry.js.map +1 -1
  101. package/dist/helpers/registry.ts +3 -1
  102. package/dist/index.d.ts +3 -1
  103. package/dist/index.d.ts.map +1 -1
  104. package/dist/index.js +2 -0
  105. package/dist/index.js.map +1 -1
  106. package/dist/index.ts +6 -1
  107. package/dist/resources/globals.css +18 -4
  108. package/dist/routes/pages/admin/core/ListPage.d.ts.map +1 -1
  109. package/dist/routes/pages/admin/core/ListPage.js +1 -1
  110. package/dist/routes/pages/admin/core/ListPage.js.map +1 -1
  111. package/dist/routes/pages/admin/core/ListPage.tsx +2 -1
  112. package/dist/routes/pages/admin/core/TreePage.d.ts +2 -0
  113. package/dist/routes/pages/admin/core/TreePage.d.ts.map +1 -0
  114. package/dist/routes/pages/admin/core/TreePage.js +37 -0
  115. package/dist/routes/pages/admin/core/TreePage.js.map +1 -0
  116. package/dist/routes/pages/admin/core/TreePage.tsx +30 -0
  117. package/dist/routes/solidRoutes.d.ts.map +1 -1
  118. package/dist/routes/solidRoutes.js +2 -0
  119. package/dist/routes/solidRoutes.js.map +1 -1
  120. package/dist/routes/solidRoutes.tsx +3 -1
  121. package/dist/routes/types.d.ts +1 -1
  122. package/dist/routes/types.d.ts.map +1 -1
  123. package/dist/routes/types.js.map +1 -1
  124. package/dist/routes/types.ts +1 -0
  125. package/dist/types/index.d.ts +8 -2
  126. package/dist/types/solid-core.d.ts +40 -0
  127. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"SolidRelationManyToManyField.js","sourceRoot":"","sources":["../../../../../../src/components/core/form/fields/relations/SolidRelationManyToManyField.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport { Message } from \"primereact/message\";\nimport { useEffect, useState } from \"react\";\nimport * as Yup from 'yup';\nimport { FormikObject, ISolidField, SolidFieldProps } from \"../ISolidField\";\nimport { getExtensionComponent } from \"../../../../../helpers/registry\";\nimport { AutoComplete, AutoCompleteCompleteEvent } from \"primereact/autocomplete\";\nimport { Button } from \"primereact/button\";\nimport { SolidFormFieldWidgetProps } from \"../../../../../types/solid-core\";\nimport { useRelationEntityHandler } from \"./widgets/helpers/useRelationEntityHandler\";\nimport { InlineRelationEntityDialog } from \"./widgets/helpers/InlineRelationEntityDialog\";\nimport { capitalize } from \"lodash\";\nimport { Checkbox } from \"primereact/checkbox\";\nimport { Panel } from \"primereact/panel\";\nimport { SolidFieldTooltip } from \"../../../../../components/common/SolidFieldTooltip\";\nimport qs from 'qs';\n// import Handlebars from \"handlebars/dist/handlebars\";\nimport * as Handlebars from \"handlebars\";\nimport { ERROR_MESSAGES } from \"../../../../../constants/error-messages\";\n\n\n\n\n\nexport class SolidRelationManyToManyField implements ISolidField {\n\n private fieldContext: SolidFieldProps;\n\n constructor(fieldContext: SolidFieldProps) {\n this.fieldContext = fieldContext;\n }\n\n initialValue(): any {\n\n const manyToManyFieldData = this.fieldContext.data[this.fieldContext.field.attrs.name];\n const fieldMetadata = this.fieldContext.fieldMetadata;\n const userKeyField = fieldMetadata?.relationModel?.userKeyField?.name;\n if (manyToManyFieldData) {\n return manyToManyFieldData.map((e: any) => {\n const manyToManyColVal = e[userKeyField] || '';\n return {\n label: manyToManyColVal,\n value: e?.id || '',\n original: e\n };\n });\n }\n return [];\n }\n\n updateFormData(value: any, formData: FormData): any {\n const fieldLayoutInfo = this.fieldContext.field;\n //if empty then clear the field\n if(value && value.length === 0) {\n formData.append(`${fieldLayoutInfo.attrs.name}Command`, \"clear\");\n }\n if (value && value.length > 0) {\n const shouldUseOriginal = value.every((item: any) => item.original && item.original.id);\n\n value.forEach((item: any, index: number) => {\n if (shouldUseOriginal) {\n formData.append(\n `${fieldLayoutInfo.attrs.name}Ids[${index}]`,\n item.value\n );\n } else {\n formData.append(\n `${fieldLayoutInfo.attrs.name}[${index}]`,\n JSON.stringify(item.original)\n );\n }\n });\n if (shouldUseOriginal) {\n formData.append(`${fieldLayoutInfo.attrs.name}Command`, \"set\")\n } else {\n formData.append(`${fieldLayoutInfo.attrs.name}Command`, \"update\")\n\n }\n\n }\n }\n\n validationSchema(): Yup.Schema {\n let schema = Yup.array();\n\n const fieldMetadata = this.fieldContext.fieldMetadata;\n const fieldLayoutInfo = this.fieldContext.field;\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n\n // 1. required \n if (fieldMetadata.required) {\n schema = schema\n .min(1, ERROR_MESSAGES.SELECT_ATLEAST_ONE(fieldLabel))\n .required(ERROR_MESSAGES.FIELD_REUQIRED(fieldLabel));\n }\n\n return schema;\n }\n\n render(formik: FormikObject) {\n const fieldMetadata = this.fieldContext.fieldMetadata;\n const fieldLayoutInfo = this.fieldContext.field;\n const className = fieldLayoutInfo.attrs?.className || 'field col-12';\n\n const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n\n let viewWidget = fieldLayoutInfo.attrs.viewWidget;\n let editWidget = fieldLayoutInfo.attrs.editWidget;\n if (!editWidget) {\n editWidget = 'DefaultRelationManyToManyAutoCompleteFormEditWidget';\n }\n if (!viewWidget) {\n viewWidget = 'DefaultRelationOneToManyFormViewWidget';\n }\n const viewMode: string = this.fieldContext.viewMode;\n return (\n <>\n <div className={className}>\n {viewMode === \"view\" &&\n this.renderExtensionRenderMode(viewWidget, formik)\n }\n {viewMode === \"edit\" && (\n <>\n {editWidget &&\n this.renderExtensionRenderMode(editWidget, formik)\n }\n </>\n )\n }\n </div>\n </>\n );\n }\n\n renderExtensionRenderMode(widget: string, formik: FormikObject) {\n let DynamicWidget = getExtensionComponent(widget);\n const widgetProps: SolidFormFieldWidgetProps = {\n formik: formik,\n fieldContext: this.fieldContext,\n }\n return (\n <>\n {DynamicWidget && <DynamicWidget {...widgetProps} />}\n </>\n )\n }\n}\n\n\n\nexport const DefaultRelationManyToManyAutoCompleteFormEditWidget = ({ formik, fieldContext }: SolidFormFieldWidgetProps) => {\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n const className = fieldLayoutInfo.attrs?.className || 'field col-12';\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;\n const readOnlyPermission = fieldContext.readOnly;\n const disabled = fieldLayoutInfo.attrs?.disabled;\n const readOnly = fieldLayoutInfo.attrs?.readOnly;\n const whereClause = fieldLayoutInfo.attrs.whereClause;\n\n const [visibleCreateDialog, setVisibleCreateDialog] = useState(false);\n const { autoCompleteItems, fetchRelationEntities, addNewRelation } = useRelationEntityHandler({ fieldContext, formik });\n const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];\n\n // const onChange = (e: any) => {\n // formik.setFieldValue(fieldContext.field.attrs.name, e.value);\n // };\n\n const autoCompleteSearch = async (event: AutoCompleteCompleteEvent) => {\n const queryData: any = {\n offset: 0,\n limit: 1000,\n filters: {\n $and: [\n {\n [fieldMetadata?.relationModel?.userKeyField?.name]: {\n [fieldLayoutInfo?.attrs?.autocompleteMatchMode || '$containsi']: event.query\n }\n }\n ]\n }\n };\n let fixedFilterToBeApplied = false;\n let fixedFilterParsed = false;\n\n if (fieldMetadata?.relationFieldFixedFilter || fieldLayoutInfo?.attrs?.whereClause) {\n const convertedFixedFilter = fieldLayoutInfo?.attrs?.whereClause ? fieldLayoutInfo?.attrs?.whereClause : fieldMetadata?.relationFieldFixedFilter;\n fixedFilterToBeApplied = true;\n const fixedFilterTemplate = Handlebars.compile(convertedFixedFilter);\n const renderedFilter = fixedFilterTemplate(formik.values);\n\n let parsedFilter: any;\n try {\n parsedFilter = JSON.parse(renderedFilter);\n const isValid = (obj: any): boolean => {\n if (!obj || typeof obj !== 'object') return false;\n\n const hasValidValue = (val: any): boolean => {\n if (val === null || val === undefined || val === '') return false;\n if (typeof val === 'object') {\n return Object.values(val).some(hasValidValue);\n }\n return true;\n };\n\n return hasValidValue(parsedFilter);\n };\n\n if (isValid(parsedFilter)) {\n queryData.filters.$and.push(parsedFilter);\n fixedFilterParsed = true;\n } else {\n console.warn(ERROR_MESSAGES.SKIPPING_EMPTY_FIXED_FILTER, parsedFilter);\n }\n } catch (e) {\n console.error(ERROR_MESSAGES.INVALID_JSON_WHERECLAUSE, renderedFilter);\n parsedFilter = {};\n }\n\n }\n\n let autocompleteQs = qs.stringify(queryData, {\n encodeValuesOnly: true,\n });\n // if (whereClause) {\n // autocompleteQs = `${autocompleteQs}&${whereClause}`;\n // }\n\n if (fixedFilterToBeApplied && !fixedFilterParsed) {\n console.error(ERROR_MESSAGES.FIXED_FILTER_NOT_APPLIED);\n\n } else {\n // const autocompleteQs = qs.stringify(queryData, {\n // encodeValuesOnly: true,\n // });\n fetchRelationEntities(autocompleteQs);\n }\n };\n\n return (\n\n <div className=\"relative\">\n <div className=\"flex flex-column gap-2 mt-1 sm:mt-2 md:mt-3 lg:mt-4\">\n {showFieldLabel != false &&\n <label htmlFor={fieldLayoutInfo.attrs.name} className=\"form-field-label\">\n {fieldLabel}\n {fieldMetadata.required && <span className=\"text-red-500\"> *</span>}\n <SolidFieldTooltip fieldContext={fieldContext} />\n </label>\n }\n <div className=\"flex align-items-center gap-3\">\n <AutoComplete\n readOnly={readOnly || readOnlyPermission}\n disabled={disabled || readOnlyPermission}\n multiple\n {...formik.getFieldProps(fieldLayoutInfo.attrs.name)}\n id={fieldLayoutInfo.attrs.name}\n field=\"label\"\n value={formik.values[fieldLayoutInfo.attrs.name] || ''}\n dropdown={!readOnlyPermission}\n suggestions={autoCompleteItems}\n completeMethod={autoCompleteSearch}\n onChange={(e) => fieldContext.onChange(e, 'onFieldChange')}\n className=\"solid-standard-autocomplete w-full\"\n />\n {fieldContext.field.attrs.inlineCreate && (\n <>\n <div>\n <Button\n icon=\"pi pi-plus\"\n rounded\n outlined\n aria-label=\"Filter\"\n type=\"button\"\n size=\"small\"\n onClick={() => setVisibleCreateDialog(true)}\n className=\"custom-add-button\"\n />\n </div>\n <InlineRelationEntityDialog\n visible={visibleCreateDialog}\n setVisible={setVisibleCreateDialog}\n fieldContext={fieldContext}\n onCreate={addNewRelation}\n />\n </>\n )}\n </div>\n </div>\n {isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (\n <div className=\"absolute mt-1\">\n <Message severity=\"error\" text={formik?.errors[fieldLayoutInfo.attrs.name]?.toString()} />\n </div>\n )}\n </div>\n );\n}\n\n\n\nexport const DefaultRelationManyToManyCheckBoxFormEditWidget = ({ formik, fieldContext }: SolidFormFieldWidgetProps) => {\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;\n\n const readOnlyPermission = fieldContext.readOnly;\n const [visibleCreateDialog, setVisibleCreateDialog] = useState(false);\n const { autoCompleteItems, fetchRelationEntities, addNewRelation } = useRelationEntityHandler({ fieldContext, formik });\n\n useEffect(() => {\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n const queryData: any = {\n offset: 0,\n limit: 1000,\n filters: {\n $and: []\n }\n };\n\n let fixedFilterToBeApplied = false;\n let fixedFilterParsed = false;\n\n if (fieldMetadata?.relationFieldFixedFilter || fieldLayoutInfo?.attrs?.whereClause) {\n const convertedFixedFilter = fieldLayoutInfo?.attrs?.whereClause ? fieldLayoutInfo?.attrs?.whereClause : fieldMetadata?.relationFieldFixedFilter;\n fixedFilterToBeApplied = true;\n const fixedFilterTemplate = Handlebars.compile(convertedFixedFilter);\n const renderedFilter = fixedFilterTemplate(formik.values);\n\n let parsedFilter: any;\n try {\n parsedFilter = JSON.parse(renderedFilter);\n const isValid = (obj: any): boolean => {\n if (!obj || typeof obj !== 'object') return false;\n\n const hasValidValue = (val: any): boolean => {\n if (val === null || val === undefined || val === '') return false;\n if (typeof val === 'object') {\n return Object.values(val).some(hasValidValue);\n }\n return true;\n };\n\n return hasValidValue(parsedFilter);\n };\n\n if (isValid(parsedFilter)) {\n queryData.filters.$and.push(parsedFilter);\n fixedFilterParsed = true;\n } else {\n console.warn(ERROR_MESSAGES.SKIPPING_EMPTY_FIXED_FILTER, parsedFilter);\n }\n } catch (e) {\n console.error(ERROR_MESSAGES.INVALID_JSON_WHERECLAUSE, renderedFilter);\n parsedFilter = {};\n }\n\n }\n\n if (fixedFilterToBeApplied && !fixedFilterParsed) {\n console.error(ERROR_MESSAGES.FIXED_FILTER_NOT_APPLIED);\n\n } else {\n const autocompleteQs = qs.stringify(queryData, {\n encodeValuesOnly: true,\n });\n fetchRelationEntities(autocompleteQs);\n }\n\n }, [fieldContext, formik.values]);\n\n const handleCheckboxChange = (e: any) => {\n if (formik.values[fieldLayoutInfo.attrs.name].some((item: any) => item.value === e.value)) {\n formik.setFieldValue(fieldLayoutInfo.attrs.name, formik.values[fieldLayoutInfo.attrs.name].filter((s: any) => s.value !== e.value));\n } else {\n formik.setFieldValue(fieldLayoutInfo.attrs.name, [...formik.values[fieldLayoutInfo.attrs.name], e]);\n }\n };\n\n const headerTemplate = (options: any) => {\n const className = `${options.className} justify-content-space-between`;\n\n return (\n <div className={className}>\n <div className=\"flex align-items-center gap-3\">\n {showFieldLabel != false &&\n <label className=\"form-field-label\">\n {capitalize(fieldLayoutInfo.attrs.name)}\n {fieldMetadata.required && <span className=\"text-red-500\"> *</span>}\n <SolidFieldTooltip fieldContext={fieldContext} />\n </label>\n }\n {fieldContext.field.attrs.inlineCreate && (\n <>\n <Button\n icon=\"pi pi-plus\"\n rounded\n outlined\n aria-label=\"Filter\"\n type=\"button\"\n size=\"small\"\n onClick={() => setVisibleCreateDialog(true)}\n className=\"custom-add-button\"\n />\n <InlineRelationEntityDialog\n visible={visibleCreateDialog}\n setVisible={setVisibleCreateDialog}\n fieldContext={fieldContext}\n onCreate={addNewRelation}\n />\n </>\n )}\n {/* <div className=\"many-to-many-add\" >\n <Button icon=\"pi pi-plus\"\n rounded\n outlined\n aria-label=\"Filter\"\n type=\"button\"\n onClick={() => autoCompleteSearch()}\n />\n </div> */}\n </div>\n <div>\n {options.togglerElement}\n </div>\n </div>\n );\n };\n return (\n <div>\n <Panel toggleable headerTemplate={headerTemplate}>\n <div className=\"formgrid grid\">\n {autoCompleteItems && autoCompleteItems.map((a: any, i: number) => {\n return (\n <div key={a.label} className={`field col-6 flex gap-2 ${i >= 2 ? 'mt-3' : ''}`}>\n <Checkbox\n readOnly={readOnlyPermission}\n inputId={a.label}\n checked={formik.values[fieldLayoutInfo.attrs.name].some((item: any) => item.label === a.label)}\n onChange={() => handleCheckboxChange(a)}\n />\n <label htmlFor={a.label} className=\"form-field-label m-0\"> {a.label}</label>\n </div>\n )\n })}\n </div>\n </Panel>\n </div>\n )\n\n}\n"]}
1
+ {"version":3,"file":"SolidRelationManyToManyField.js","sourceRoot":"","sources":["../../../../../../src/components/core/form/fields/relations/SolidRelationManyToManyField.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport { Message } from \"primereact/message\";\nimport { useEffect, useState } from \"react\";\nimport * as Yup from 'yup';\nimport { FormikObject, ISolidField, SolidFieldProps } from \"../ISolidField\";\nimport { getExtensionComponent } from \"../../../../../helpers/registry\";\nimport { AutoComplete, AutoCompleteCompleteEvent } from \"primereact/autocomplete\";\nimport { Button } from \"primereact/button\";\nimport { SolidFormFieldWidgetProps } from \"../../../../../types/solid-core\";\nimport { useRelationEntityHandler } from \"./widgets/helpers/useRelationEntityHandler\";\nimport { InlineRelationEntityDialog } from \"./widgets/helpers/InlineRelationEntityDialog\";\nimport { capitalize } from \"lodash\";\nimport { Checkbox } from \"primereact/checkbox\";\nimport { Panel } from \"primereact/panel\";\nimport { SolidFieldTooltip } from \"../../../../../components/common/SolidFieldTooltip\";\nimport qs from 'qs';\n// import Handlebars from \"handlebars/dist/handlebars\";\nimport * as Handlebars from \"handlebars\";\nimport { ERROR_MESSAGES } from \"../../../../../constants/error-messages\";\n\n\n\n\n\nexport class SolidRelationManyToManyField implements ISolidField {\n\n private fieldContext: SolidFieldProps;\n\n constructor(fieldContext: SolidFieldProps) {\n this.fieldContext = fieldContext;\n }\n\n initialValue(): any {\n\n // const manyToManyFieldData = this.fieldContext.data[this.fieldContext.field.attrs.name];\n // const fieldMetadata = this.fieldContext.fieldMetadata;\n // const userKeyField = fieldMetadata?.relationModel?.userKeyField?.name;\n // if (manyToManyFieldData) {\n // return manyToManyFieldData.map((e: any) => {\n // const manyToManyColVal = e[userKeyField] || '';\n // return {\n // label: manyToManyColVal,\n // value: e?.id || '',\n // original: e\n // };\n // });\n // }\n return [];\n }\n\n updateFormData(value: any, formData: FormData): any {\n const fieldLayoutInfo = this.fieldContext.field;\n //if empty then clear the field\n if (value && value.length === 0) {\n formData.append(`${fieldLayoutInfo.attrs.name}Command`, \"clear\");\n }\n if (value && value.length > 0) {\n const shouldUseOriginal = value.every((item: any) => item.original && item.original.id);\n\n value.forEach((item: any, index: number) => {\n if (shouldUseOriginal) {\n formData.append(\n `${fieldLayoutInfo.attrs.name}Ids[${index}]`,\n item.value\n );\n } else {\n formData.append(\n `${fieldLayoutInfo.attrs.name}[${index}]`,\n JSON.stringify(item.original)\n );\n }\n });\n if (shouldUseOriginal) {\n formData.append(`${fieldLayoutInfo.attrs.name}Command`, \"set\")\n } else {\n formData.append(`${fieldLayoutInfo.attrs.name}Command`, \"update\")\n\n }\n\n }\n }\n\n validationSchema(): Yup.Schema {\n let schema = Yup.array();\n\n const fieldMetadata = this.fieldContext.fieldMetadata;\n const fieldLayoutInfo = this.fieldContext.field;\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n\n // 1. required \n if (fieldMetadata.required) {\n schema = schema\n .min(1, ERROR_MESSAGES.SELECT_ATLEAST_ONE(fieldLabel))\n .required(ERROR_MESSAGES.FIELD_REUQIRED(fieldLabel));\n }\n\n return schema;\n }\n\n render(formik: FormikObject) {\n const fieldMetadata = this.fieldContext.fieldMetadata;\n const fieldLayoutInfo = this.fieldContext.field;\n const className = fieldLayoutInfo.attrs?.className || 'field col-12';\n\n const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n\n let viewWidget = fieldLayoutInfo.attrs.viewWidget;\n let editWidget = fieldLayoutInfo.attrs.editWidget;\n if (!editWidget) {\n editWidget = 'DefaultRelationManyToManyAutoCompleteFormEditWidget';\n }\n if (!viewWidget) {\n viewWidget = 'DefaultRelationOneToManyFormViewWidget';\n }\n const viewMode: string = this.fieldContext.viewMode;\n return (\n <>\n <div className={className}>\n {viewMode === \"view\" &&\n this.renderExtensionRenderMode(viewWidget, formik)\n }\n {viewMode === \"edit\" && (\n <>\n {editWidget &&\n this.renderExtensionRenderMode(editWidget, formik)\n }\n </>\n )\n }\n </div>\n </>\n );\n }\n\n renderExtensionRenderMode(widget: string, formik: FormikObject) {\n let DynamicWidget = getExtensionComponent(widget);\n const widgetProps: SolidFormFieldWidgetProps = {\n formik: formik,\n fieldContext: this.fieldContext,\n }\n return (\n <>\n {DynamicWidget && <DynamicWidget {...widgetProps} />}\n </>\n )\n }\n}\n\n\n\nexport const DefaultRelationManyToManyAutoCompleteFormEditWidget = ({ formik, fieldContext }: SolidFormFieldWidgetProps) => {\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n const className = fieldLayoutInfo.attrs?.className || 'field col-12';\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;\n const readOnlyPermission = fieldContext.readOnly;\n const disabled = fieldLayoutInfo.attrs?.disabled;\n const readOnly = fieldLayoutInfo.attrs?.readOnly;\n const whereClause = fieldLayoutInfo.attrs.whereClause;\n\n const [visibleCreateDialog, setVisibleCreateDialog] = useState(false);\n const { autoCompleteItems, fetchRelationEntities, populateFormikWithRelatedEntities, addNewRelation } = useRelationEntityHandler({ fieldContext, formik });\n const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];\n\n // const onChange = (e: any) => {\n // formik.setFieldValue(fieldContext.field.attrs.name, e.value);\n // };\n\n useEffect(() => {\n populateFormikWithRelatedEntities();\n }, [formik.values?.id]);\n\n\n const autoCompleteSearch = async (event: AutoCompleteCompleteEvent) => {\n const queryData: any = {\n offset: 0,\n limit: 1000,\n filters: {\n $and: [\n {\n [fieldMetadata?.relationModel?.userKeyField?.name]: {\n [fieldLayoutInfo?.attrs?.autocompleteMatchMode || '$containsi']: event.query\n }\n }\n ]\n }\n };\n let fixedFilterToBeApplied = false;\n let fixedFilterParsed = false;\n\n if (fieldMetadata?.relationFieldFixedFilter || fieldLayoutInfo?.attrs?.whereClause) {\n const convertedFixedFilter = fieldLayoutInfo?.attrs?.whereClause ? fieldLayoutInfo?.attrs?.whereClause : fieldMetadata?.relationFieldFixedFilter;\n fixedFilterToBeApplied = true;\n const fixedFilterTemplate = Handlebars.compile(convertedFixedFilter);\n const renderedFilter = fixedFilterTemplate(formik.values);\n\n let parsedFilter: any;\n try {\n parsedFilter = JSON.parse(renderedFilter);\n const isValid = (obj: any): boolean => {\n if (!obj || typeof obj !== 'object') return false;\n\n const hasValidValue = (val: any): boolean => {\n if (val === null || val === undefined || val === '') return false;\n if (typeof val === 'object') {\n return Object.values(val).some(hasValidValue);\n }\n return true;\n };\n\n return hasValidValue(parsedFilter);\n };\n\n if (isValid(parsedFilter)) {\n queryData.filters.$and.push(parsedFilter);\n fixedFilterParsed = true;\n } else {\n console.warn(ERROR_MESSAGES.SKIPPING_EMPTY_FIXED_FILTER, parsedFilter);\n }\n } catch (e) {\n console.error(ERROR_MESSAGES.INVALID_JSON_WHERECLAUSE, renderedFilter);\n parsedFilter = {};\n }\n\n }\n\n let autocompleteQs = qs.stringify(queryData, {\n encodeValuesOnly: true,\n });\n // if (whereClause) {\n // autocompleteQs = `${autocompleteQs}&${whereClause}`;\n // }\n\n if (fixedFilterToBeApplied && !fixedFilterParsed) {\n console.error(ERROR_MESSAGES.FIXED_FILTER_NOT_APPLIED);\n\n } else {\n // const autocompleteQs = qs.stringify(queryData, {\n // encodeValuesOnly: true,\n // });\n fetchRelationEntities(autocompleteQs);\n }\n };\n\n return (\n\n <div className=\"relative\">\n <div className=\"flex flex-column gap-2 mt-1 sm:mt-2 md:mt-3 lg:mt-4\">\n {showFieldLabel != false &&\n <label htmlFor={fieldLayoutInfo.attrs.name} className=\"form-field-label\">\n {fieldLabel}\n {fieldMetadata.required && <span className=\"text-red-500\"> *</span>}\n <SolidFieldTooltip fieldContext={fieldContext} />\n </label>\n }\n <div className=\"flex align-items-center gap-3\">\n <AutoComplete\n readOnly={readOnly || readOnlyPermission}\n disabled={disabled || readOnlyPermission}\n multiple\n {...formik.getFieldProps(fieldLayoutInfo.attrs.name)}\n id={fieldLayoutInfo.attrs.name}\n field=\"label\"\n value={formik.values[fieldLayoutInfo.attrs.name] || ''}\n dropdown={!readOnlyPermission}\n suggestions={autoCompleteItems}\n completeMethod={autoCompleteSearch}\n onChange={(e) => fieldContext.onChange(e, 'onFieldChange')}\n className=\"solid-standard-autocomplete w-full\"\n />\n {fieldContext.field.attrs.inlineCreate && (\n <>\n <div>\n <Button\n icon=\"pi pi-plus\"\n rounded\n outlined\n aria-label=\"Filter\"\n type=\"button\"\n size=\"small\"\n onClick={() => setVisibleCreateDialog(true)}\n className=\"custom-add-button\"\n />\n </div>\n <InlineRelationEntityDialog\n visible={visibleCreateDialog}\n setVisible={setVisibleCreateDialog}\n fieldContext={fieldContext}\n onCreate={addNewRelation}\n />\n </>\n )}\n </div>\n </div>\n {isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (\n <div className=\"absolute mt-1\">\n <Message severity=\"error\" text={formik?.errors[fieldLayoutInfo.attrs.name]?.toString()} />\n </div>\n )}\n </div>\n );\n}\n\n\n\nexport const DefaultRelationManyToManyCheckBoxFormEditWidget = ({ formik, fieldContext }: SolidFormFieldWidgetProps) => {\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;\n\n const readOnlyPermission = fieldContext.readOnly;\n const [visibleCreateDialog, setVisibleCreateDialog] = useState(false);\n const { autoCompleteItems, fetchRelationEntities, populateFormikWithRelatedEntities, addNewRelation } = useRelationEntityHandler({ fieldContext, formik });\n\n useEffect(() => {\n populateFormikWithRelatedEntities();\n }, [formik.values?.id]);\n\n\n useEffect(() => {\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n const queryData: any = {\n offset: 0,\n limit: 1000,\n filters: {\n $and: []\n }\n };\n\n let fixedFilterToBeApplied = false;\n let fixedFilterParsed = false;\n\n if (fieldMetadata?.relationFieldFixedFilter || fieldLayoutInfo?.attrs?.whereClause) {\n const convertedFixedFilter = fieldLayoutInfo?.attrs?.whereClause ? fieldLayoutInfo?.attrs?.whereClause : fieldMetadata?.relationFieldFixedFilter;\n fixedFilterToBeApplied = true;\n const fixedFilterTemplate = Handlebars.compile(convertedFixedFilter);\n const renderedFilter = fixedFilterTemplate(formik.values);\n\n let parsedFilter: any;\n try {\n parsedFilter = JSON.parse(renderedFilter);\n const isValid = (obj: any): boolean => {\n if (!obj || typeof obj !== 'object') return false;\n\n const hasValidValue = (val: any): boolean => {\n if (val === null || val === undefined || val === '') return false;\n if (typeof val === 'object') {\n return Object.values(val).some(hasValidValue);\n }\n return true;\n };\n\n return hasValidValue(parsedFilter);\n };\n\n if (isValid(parsedFilter)) {\n queryData.filters.$and.push(parsedFilter);\n fixedFilterParsed = true;\n } else {\n console.warn(ERROR_MESSAGES.SKIPPING_EMPTY_FIXED_FILTER, parsedFilter);\n }\n } catch (e) {\n console.error(ERROR_MESSAGES.INVALID_JSON_WHERECLAUSE, renderedFilter);\n parsedFilter = {};\n }\n\n }\n\n if (fixedFilterToBeApplied && !fixedFilterParsed) {\n console.error(ERROR_MESSAGES.FIXED_FILTER_NOT_APPLIED);\n\n } else {\n const autocompleteQs = qs.stringify(queryData, {\n encodeValuesOnly: true,\n });\n fetchRelationEntities(autocompleteQs);\n }\n\n }, [fieldContext, formik.values]);\n\n const handleCheckboxChange = (e: any) => {\n if (formik.values[fieldLayoutInfo.attrs.name].some((item: any) => item.value === e.value)) {\n formik.setFieldValue(fieldLayoutInfo.attrs.name, formik.values[fieldLayoutInfo.attrs.name].filter((s: any) => s.value !== e.value));\n } else {\n formik.setFieldValue(fieldLayoutInfo.attrs.name, [...formik.values[fieldLayoutInfo.attrs.name], e]);\n }\n };\n\n const headerTemplate = (options: any) => {\n const className = `${options.className} justify-content-space-between`;\n\n return (\n <div className={className}>\n <div className=\"flex align-items-center gap-3\">\n {showFieldLabel != false &&\n <label className=\"form-field-label\">\n {capitalize(fieldLayoutInfo.attrs.name)}\n {fieldMetadata.required && <span className=\"text-red-500\"> *</span>}\n <SolidFieldTooltip fieldContext={fieldContext} />\n </label>\n }\n {fieldContext.field.attrs.inlineCreate && (\n <>\n <Button\n icon=\"pi pi-plus\"\n rounded\n outlined\n aria-label=\"Filter\"\n type=\"button\"\n size=\"small\"\n onClick={() => setVisibleCreateDialog(true)}\n className=\"custom-add-button\"\n />\n <InlineRelationEntityDialog\n visible={visibleCreateDialog}\n setVisible={setVisibleCreateDialog}\n fieldContext={fieldContext}\n onCreate={addNewRelation}\n />\n </>\n )}\n {/* <div className=\"many-to-many-add\" >\n <Button icon=\"pi pi-plus\"\n rounded\n outlined\n aria-label=\"Filter\"\n type=\"button\"\n onClick={() => autoCompleteSearch()}\n />\n </div> */}\n </div>\n <div>\n {options.togglerElement}\n </div>\n </div>\n );\n };\n return (\n <div>\n <Panel toggleable headerTemplate={headerTemplate}>\n <div className=\"formgrid grid\">\n {autoCompleteItems && autoCompleteItems.map((a: any, i: number) => {\n return (\n <div key={a.label} className={`field col-6 flex gap-2 ${i >= 2 ? 'mt-3' : ''}`}>\n <Checkbox\n readOnly={readOnlyPermission}\n inputId={a.label}\n checked={formik.values[fieldLayoutInfo.attrs.name].some((item: any) => item.label === a.label)}\n onChange={() => handleCheckboxChange(a)}\n />\n <label htmlFor={a.label} className=\"form-field-label m-0\"> {a.label}</label>\n </div>\n )\n })}\n </div>\n </Panel>\n </div>\n )\n\n}\n"]}
@@ -32,26 +32,26 @@ export class SolidRelationManyToManyField implements ISolidField {
32
32
 
33
33
  initialValue(): any {
34
34
 
35
- const manyToManyFieldData = this.fieldContext.data[this.fieldContext.field.attrs.name];
36
- const fieldMetadata = this.fieldContext.fieldMetadata;
37
- const userKeyField = fieldMetadata?.relationModel?.userKeyField?.name;
38
- if (manyToManyFieldData) {
39
- return manyToManyFieldData.map((e: any) => {
40
- const manyToManyColVal = e[userKeyField] || '';
41
- return {
42
- label: manyToManyColVal,
43
- value: e?.id || '',
44
- original: e
45
- };
46
- });
47
- }
35
+ // const manyToManyFieldData = this.fieldContext.data[this.fieldContext.field.attrs.name];
36
+ // const fieldMetadata = this.fieldContext.fieldMetadata;
37
+ // const userKeyField = fieldMetadata?.relationModel?.userKeyField?.name;
38
+ // if (manyToManyFieldData) {
39
+ // return manyToManyFieldData.map((e: any) => {
40
+ // const manyToManyColVal = e[userKeyField] || '';
41
+ // return {
42
+ // label: manyToManyColVal,
43
+ // value: e?.id || '',
44
+ // original: e
45
+ // };
46
+ // });
47
+ // }
48
48
  return [];
49
49
  }
50
50
 
51
51
  updateFormData(value: any, formData: FormData): any {
52
52
  const fieldLayoutInfo = this.fieldContext.field;
53
53
  //if empty then clear the field
54
- if(value && value.length === 0) {
54
+ if (value && value.length === 0) {
55
55
  formData.append(`${fieldLayoutInfo.attrs.name}Command`, "clear");
56
56
  }
57
57
  if (value && value.length > 0) {
@@ -161,13 +161,18 @@ export const DefaultRelationManyToManyAutoCompleteFormEditWidget = ({ formik, fi
161
161
  const whereClause = fieldLayoutInfo.attrs.whereClause;
162
162
 
163
163
  const [visibleCreateDialog, setVisibleCreateDialog] = useState(false);
164
- const { autoCompleteItems, fetchRelationEntities, addNewRelation } = useRelationEntityHandler({ fieldContext, formik });
164
+ const { autoCompleteItems, fetchRelationEntities, populateFormikWithRelatedEntities, addNewRelation } = useRelationEntityHandler({ fieldContext, formik });
165
165
  const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];
166
166
 
167
167
  // const onChange = (e: any) => {
168
168
  // formik.setFieldValue(fieldContext.field.attrs.name, e.value);
169
169
  // };
170
170
 
171
+ useEffect(() => {
172
+ populateFormikWithRelatedEntities();
173
+ }, [formik.values?.id]);
174
+
175
+
171
176
  const autoCompleteSearch = async (event: AutoCompleteCompleteEvent) => {
172
177
  const queryData: any = {
173
178
  offset: 0,
@@ -307,7 +312,12 @@ export const DefaultRelationManyToManyCheckBoxFormEditWidget = ({ formik, fieldC
307
312
 
308
313
  const readOnlyPermission = fieldContext.readOnly;
309
314
  const [visibleCreateDialog, setVisibleCreateDialog] = useState(false);
310
- const { autoCompleteItems, fetchRelationEntities, addNewRelation } = useRelationEntityHandler({ fieldContext, formik });
315
+ const { autoCompleteItems, fetchRelationEntities, populateFormikWithRelatedEntities, addNewRelation } = useRelationEntityHandler({ fieldContext, formik });
316
+
317
+ useEffect(() => {
318
+ populateFormikWithRelatedEntities();
319
+ }, [formik.values?.id]);
320
+
311
321
 
312
322
  useEffect(() => {
313
323
  const fieldMetadata = fieldContext.fieldMetadata;
@@ -363,7 +373,7 @@ export const DefaultRelationManyToManyCheckBoxFormEditWidget = ({ formik, fieldC
363
373
  console.error(ERROR_MESSAGES.FIXED_FILTER_NOT_APPLIED);
364
374
 
365
375
  } else {
366
- const autocompleteQs = qs.stringify(queryData, {
376
+ const autocompleteQs = qs.stringify(queryData, {
367
377
  encodeValuesOnly: true,
368
378
  });
369
379
  fetchRelationEntities(autocompleteQs);
@@ -1,6 +1,7 @@
1
1
  export declare const useRelationEntityHandler: ({ fieldContext, formik, autoCompleteLimit }: any) => {
2
2
  autoCompleteItems: never[];
3
3
  fetchRelationEntities: (autocompleteQs?: string, limit?: any) => Promise<void>;
4
+ populateFormikWithRelatedEntities: () => Promise<void>;
4
5
  addNewRelation: (values: any) => void;
5
6
  };
6
7
  //# sourceMappingURL=useRelationEntityHandler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useRelationEntityHandler.d.ts","sourceRoot":"","sources":["../../../../../../../../src/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,wBAAwB,gDAAwD,GAAG;;;6BAoC9D,GAAG;CAuBpC,CAAC"}
1
+ {"version":3,"file":"useRelationEntityHandler.d.ts","sourceRoot":"","sources":["../../../../../../../../src/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,wBAAwB,gDAAwD,GAAG;;;;6BAsF9D,GAAG;CAwBpC,CAAC"}
@@ -44,6 +44,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
44
44
  return to.concat(ar || Array.prototype.slice.call(from));
45
45
  };
46
46
  import { useState } from "react";
47
+ import qs from "qs";
47
48
  import { createSolidEntityApi } from "../../../../../../../redux/api/solidEntityApi";
48
49
  export var useRelationEntityHandler = function (_a) {
49
50
  var fieldContext = _a.fieldContext, formik = _a.formik, _b = _a.autoCompleteLimit, autoCompleteLimit = _b === void 0 ? 1000 : _b;
@@ -80,6 +81,55 @@ export var useRelationEntityHandler = function (_a) {
80
81
  });
81
82
  });
82
83
  };
84
+ var populateFormikWithRelatedEntities = function () { return __awaiter(void 0, void 0, void 0, function () {
85
+ var relationFieldName, parentId, queryData, qsString, response, data, mappedItems;
86
+ var _a;
87
+ var _b, _c, _d, _e;
88
+ return __generator(this, function (_f) {
89
+ switch (_f.label) {
90
+ case 0:
91
+ relationFieldName = (_c = (_b = fieldContext.fieldMetadata) === null || _b === void 0 ? void 0 : _b.relationCoModelFieldName) !== null && _c !== void 0 ? _c : fieldContext.modelName;
92
+ parentId = (_e = (_d = fieldContext.data) === null || _d === void 0 ? void 0 : _d.id) !== null && _e !== void 0 ? _e : -1;
93
+ queryData = {
94
+ offset: 0,
95
+ limit: autoCompleteLimit,
96
+ filters: {
97
+ $and: [
98
+ (_a = {},
99
+ _a[relationFieldName] = {
100
+ id: { $eq: parentId },
101
+ },
102
+ _a),
103
+ ],
104
+ },
105
+ };
106
+ qsString = qs.stringify(queryData, {
107
+ encodeValuesOnly: true,
108
+ });
109
+ return [4 /*yield*/, triggerGetSolidEntities(qsString)];
110
+ case 1:
111
+ response = _f.sent();
112
+ data = response.data;
113
+ if (!data)
114
+ return [2 /*return*/];
115
+ mappedItems = data.records.map(function (item) {
116
+ var _a, _b;
117
+ return ({
118
+ label: item[(_b = (_a = fieldMetadata === null || fieldMetadata === void 0 ? void 0 : fieldMetadata.relationModel) === null || _a === void 0 ? void 0 : _a.userKeyField) === null || _b === void 0 ? void 0 : _b.name],
119
+ value: item.id,
120
+ original: item,
121
+ });
122
+ });
123
+ /**
124
+ * IMPORTANT:
125
+ * 1. Set checkbox options
126
+ * 2. Set formik selected values (checked state)
127
+ */
128
+ formik.setFieldValue(fieldLayoutInfo.attrs.name, mappedItems);
129
+ return [2 /*return*/];
130
+ }
131
+ });
132
+ }); };
83
133
  var addNewRelation = function (values) {
84
134
  var _a, _b;
85
135
  var currentData = formik.values[fieldLayoutInfo.attrs.name] || [];
@@ -99,6 +149,7 @@ export var useRelationEntityHandler = function (_a) {
99
149
  return {
100
150
  autoCompleteItems: autoCompleteItems,
101
151
  fetchRelationEntities: fetchRelationEntities,
152
+ populateFormikWithRelatedEntities: populateFormikWithRelatedEntities,
102
153
  addNewRelation: addNewRelation
103
154
  };
104
155
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useRelationEntityHandler.js","sourceRoot":"","sources":["../../../../../../../../src/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AAErF,MAAM,CAAC,IAAM,wBAAwB,GAAG,UAAC,EAAuD;QAArD,YAAY,kBAAA,EAAE,MAAM,YAAA,EAAE,yBAAwB,EAAxB,iBAAiB,mBAAG,IAAI,KAAA;IACvF,IAAM,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC;IACjD,IAAM,eAAe,GAAG,YAAY,CAAC,KAAK,CAAC;IAE3C,IAAM,SAAS,GAAG,oBAAoB,CAAC,aAAa,CAAC,2BAA2B,CAAC,CAAC;IAC1E,IAAA,4BAA4B,GAAK,SAAS,6BAAd,CAAe;IAC5C,IAAA,uBAAuB,GAAI,4BAA4B,EAAE,GAAlC,CAAmC;IAE3D,IAAA,KAA4C,QAAQ,CAAC,EAAE,CAAC,EAAvD,iBAAiB,QAAA,EAAE,oBAAoB,QAAgB,CAAC;IAE/D,IAAM,qBAAqB,GAAG,UAAO,cAAmB,EAAE,KAAyB;QAA9C,+BAAA,EAAA,mBAAmB;QAAE,sBAAA,EAAA,yBAAyB;;;;;4BAahE,qBAAM,uBAAuB,CAAC,cAAc,CAAC,EAAA;;wBAAxD,QAAQ,GAAG,SAA6C;wBACxD,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;wBAE3B,IAAI,IAAI,EAAE;4BACF,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,IAAS;;gCAAK,OAAA,CAAC;oCACnD,KAAK,EAAE,IAAI,CAAC,MAAA,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,aAAa,0CAAE,YAAY,0CAAE,IAAI,CAAC;oCAC7D,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC;oCACjB,QAAQ,EAAE,IAAI;iCACf,CAAC,CAAA;6BAAA,CAAC,CAAC;4BACJ,oBAAoB,CAAC,WAAW,CAAC,CAAC;yBACnC;;;;;KACF,CAAC;IAEF,IAAM,cAAc,GAAG,UAAC,MAAW;;QACjC,IAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACpE,IAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,IAAM,OAAO,GAAG;YACd,KAAK,EAAE,UAAU,CAAC,MAAA,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,aAAa,0CAAE,YAAY,0CAAE,IAAI,CAAC;YACnE,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,UAAU;SACrB,CAAC;QAEF,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,kCAAM,WAAW,UAAE,OAAO,UAAE,CAAC;QAE5E,sCAAsC;QACtC,oBAAoB,CAAC,UAAC,IAAS;YAC7B,IAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAC,IAAS,IAAK,OAAA,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,EAA5B,CAA4B,CAAC,CAAC;YACtE,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,iCAAK,IAAI,UAAE,OAAO,SAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,OAAO;QACL,iBAAiB,mBAAA;QACjB,qBAAqB,uBAAA;QACrB,cAAc,gBAAA;KACf,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { useState } from \"react\";\nimport qs from \"qs\";\nimport { createSolidEntityApi } from \"../../../../../../../redux/api/solidEntityApi\";\n\nexport const useRelationEntityHandler = ({ fieldContext, formik, autoCompleteLimit = 1000 }: any) => {\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n\n const entityApi = createSolidEntityApi(fieldMetadata.relationCoModelSingularName);\n const { useLazyGetSolidEntitiesQuery } = entityApi;\n const [triggerGetSolidEntities] = useLazyGetSolidEntitiesQuery();\n\n const [autoCompleteItems, setAutoCompleteItems] = useState([]);\n\n const fetchRelationEntities = async (autocompleteQs = \"\", limit = autoCompleteLimit) => {\n // const queryData = {\n // offset: 0,\n // limit: limit,\n // filters: {\n // [fieldMetadata?.relationModel?.userKeyField?.name]: {\n // '$containsi': query\n // }\n // }\n // };\n\n // const autocompleteQs = qs.stringify(queryData, { encodeValuesOnly: true });\n\n const response = await triggerGetSolidEntities(autocompleteQs);\n const data = response.data;\n\n if (data) {\n const mappedItems = data.records.map((item: any) => ({\n label: item[fieldMetadata?.relationModel?.userKeyField?.name],\n value: item['id'],\n original: item\n }));\n setAutoCompleteItems(mappedItems);\n }\n };\n\n const addNewRelation = (values: any) => {\n const currentData = formik.values[fieldLayoutInfo.attrs.name] || [];\n const jsonValues = Object.fromEntries(values.entries());\n const newItem = {\n label: jsonValues[fieldMetadata?.relationModel?.userKeyField?.name],\n value: \"new\",\n original: jsonValues,\n };\n\n formik.setFieldValue(fieldLayoutInfo.attrs.name, [...currentData, newItem]);\n\n // Optionally add to autocomplete list\n setAutoCompleteItems((prev: any) => {\n const exists = prev.some((item: any) => item.label === newItem.label);\n return exists ? prev : [...prev, newItem];\n });\n };\n\n return {\n autoCompleteItems,\n fetchRelationEntities,\n addNewRelation\n };\n};\n"]}
1
+ {"version":3,"file":"useRelationEntityHandler.js","sourceRoot":"","sources":["../../../../../../../../src/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.ts"],"names":[],"mappings":"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","sourcesContent":["import { useState } from \"react\";\nimport qs from \"qs\";\nimport { createSolidEntityApi } from \"../../../../../../../redux/api/solidEntityApi\";\n\nexport const useRelationEntityHandler = ({ fieldContext, formik, autoCompleteLimit = 1000 }: any) => {\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n\n const entityApi = createSolidEntityApi(fieldMetadata.relationCoModelSingularName);\n const { useLazyGetSolidEntitiesQuery } = entityApi;\n const [triggerGetSolidEntities] = useLazyGetSolidEntitiesQuery();\n\n const [autoCompleteItems, setAutoCompleteItems] = useState([]);\n\n const fetchRelationEntities = async (autocompleteQs = \"\", limit = autoCompleteLimit) => {\n // const queryData = {\n // offset: 0,\n // limit: limit,\n // filters: {\n // [fieldMetadata?.relationModel?.userKeyField?.name]: {\n // '$containsi': query\n // }\n // }\n // };\n\n // const autocompleteQs = qs.stringify(queryData, { encodeValuesOnly: true });\n\n const response = await triggerGetSolidEntities(autocompleteQs);\n const data = response.data;\n\n if (data) {\n const mappedItems = data.records.map((item: any) => ({\n label: item[fieldMetadata?.relationModel?.userKeyField?.name],\n value: item['id'],\n original: item\n }));\n setAutoCompleteItems(mappedItems);\n }\n };\n\n const populateFormikWithRelatedEntities = async () => {\n\n /**\n * Example:\n * permissions filtered by roles.id = current role id\n */\n\n const relationFieldName =\n fieldContext.fieldMetadata?.relationCoModelFieldName ??\n fieldContext.modelName;\n\n const parentId = fieldContext.data?.id ?? -1;\n\n const queryData = {\n offset: 0,\n limit: autoCompleteLimit,\n filters: {\n $and: [\n {\n [relationFieldName]: {\n id: { $eq: parentId },\n },\n },\n ],\n },\n };\n\n const qsString = qs.stringify(queryData, {\n encodeValuesOnly: true,\n });\n\n const response = await triggerGetSolidEntities(qsString);\n const data = response.data;\n\n if (!data) return;\n\n const mappedItems = data.records.map((item: any) => ({\n label: item[fieldMetadata?.relationModel?.userKeyField?.name],\n value: item.id,\n original: item,\n }));\n\n /**\n * IMPORTANT:\n * 1. Set checkbox options\n * 2. Set formik selected values (checked state)\n */\n formik.setFieldValue(fieldLayoutInfo.attrs.name, mappedItems);\n };\n\n const addNewRelation = (values: any) => {\n const currentData = formik.values[fieldLayoutInfo.attrs.name] || [];\n const jsonValues = Object.fromEntries(values.entries());\n const newItem = {\n label: jsonValues[fieldMetadata?.relationModel?.userKeyField?.name],\n value: \"new\",\n original: jsonValues,\n };\n\n formik.setFieldValue(fieldLayoutInfo.attrs.name, [...currentData, newItem]);\n\n // Optionally add to autocomplete list\n setAutoCompleteItems((prev: any) => {\n const exists = prev.some((item: any) => item.label === newItem.label);\n return exists ? prev : [...prev, newItem];\n });\n };\n\n return {\n autoCompleteItems,\n fetchRelationEntities,\n populateFormikWithRelatedEntities,\n addNewRelation\n };\n};\n"]}
@@ -38,6 +38,56 @@ export const useRelationEntityHandler = ({ fieldContext, formik, autoCompleteLim
38
38
  }
39
39
  };
40
40
 
41
+ const populateFormikWithRelatedEntities = async () => {
42
+
43
+ /**
44
+ * Example:
45
+ * permissions filtered by roles.id = current role id
46
+ */
47
+
48
+ const relationFieldName =
49
+ fieldContext.fieldMetadata?.relationCoModelFieldName ??
50
+ fieldContext.modelName;
51
+
52
+ const parentId = fieldContext.data?.id ?? -1;
53
+
54
+ const queryData = {
55
+ offset: 0,
56
+ limit: autoCompleteLimit,
57
+ filters: {
58
+ $and: [
59
+ {
60
+ [relationFieldName]: {
61
+ id: { $eq: parentId },
62
+ },
63
+ },
64
+ ],
65
+ },
66
+ };
67
+
68
+ const qsString = qs.stringify(queryData, {
69
+ encodeValuesOnly: true,
70
+ });
71
+
72
+ const response = await triggerGetSolidEntities(qsString);
73
+ const data = response.data;
74
+
75
+ if (!data) return;
76
+
77
+ const mappedItems = data.records.map((item: any) => ({
78
+ label: item[fieldMetadata?.relationModel?.userKeyField?.name],
79
+ value: item.id,
80
+ original: item,
81
+ }));
82
+
83
+ /**
84
+ * IMPORTANT:
85
+ * 1. Set checkbox options
86
+ * 2. Set formik selected values (checked state)
87
+ */
88
+ formik.setFieldValue(fieldLayoutInfo.attrs.name, mappedItems);
89
+ };
90
+
41
91
  const addNewRelation = (values: any) => {
42
92
  const currentData = formik.values[fieldLayoutInfo.attrs.name] || [];
43
93
  const jsonValues = Object.fromEntries(values.entries());
@@ -59,6 +109,7 @@ export const useRelationEntityHandler = ({ fieldContext, formik, autoCompleteLim
59
109
  return {
60
110
  autoCompleteItems,
61
111
  fetchRelationEntities,
112
+ populateFormikWithRelatedEntities,
62
113
  addNewRelation
63
114
  };
64
115
  };
@@ -80,7 +80,7 @@ import { useRouter } from "../../../hooks/useRouter";
80
80
  import { SolidKanbanViewConfigure } from "./SolidKanbanViewConfigure";
81
81
  import { KanbanUserViewLayout } from "./KanbanUserViewLayout";
82
82
  import { useDispatch, useSelector } from "react-redux";
83
- import { queryObjectToQueryString, queryStringToQueryObject } from "../list/SolidListView";
83
+ import { setFilterObjectToLocalStorage, getFilterObjectFromLocalStorage } from "../list/SolidListView";
84
84
  import { Toast } from "primereact/toast";
85
85
  import { ERROR_MESSAGES } from "../../../constants/error-messages";
86
86
  import { showNavbar, toggleNavbar } from "../../../redux/features/navbarSlice";
@@ -320,7 +320,7 @@ export var SolidKanbanView = function (params) {
320
320
  if (solidKanbanViewMetaData) {
321
321
  var swimlanesCount = ((_c = (_b = (_a = solidKanbanViewMetaData === null || solidKanbanViewMetaData === void 0 ? void 0 : solidKanbanViewMetaData.data.solidView) === null || _a === void 0 ? void 0 : _a.layout) === null || _b === void 0 ? void 0 : _b.attrs) === null || _c === void 0 ? void 0 : _c.swimlanesCount) || 5;
322
322
  if (groupByFieldName) {
323
- var queryObject = queryStringToQueryObject();
323
+ var queryObject = getFilterObjectFromLocalStorage();
324
324
  var queryString = "";
325
325
  if (queryObject) {
326
326
  var filters_1 = {
@@ -676,7 +676,7 @@ export var SolidKanbanView = function (params) {
676
676
  // @ts-ignore
677
677
  urlData.search_predicate = customFilter.search_predicate || {};
678
678
  // @ts-ignore
679
- queryObjectToQueryString(urlData);
679
+ setFilterObjectToLocalStorage(urlData);
680
680
  }
681
681
  return [4 /*yield*/, triggerGetSolidEntities(queryString)];
682
682
  case 1:
@@ -721,11 +721,11 @@ export var SolidKanbanView = function (params) {
721
721
  return (_jsxs("div", { className: "page-parent-wrapper", children: [_jsx(Toast, { ref: toast }), _jsxs("div", { className: "page-header flex-column lg:flex-row", children: [_jsxs("div", { className: "flex justify-content-between w-full ", children: [_jsxs("div", { className: "flex align-items-center solid-header-buttons-wrapper", children: [params.embeded !== true &&
722
722
  _jsx("div", { className: "apps-icon block md:hidden cursor-pointer", onClick: toggleBothSidebars, children: _jsx("i", { className: "pi pi-th-large" }) }), _jsx("p", { className: "m-0 view-title solid-text-wrapper", children: kanbanViewTitle }), ((_e = (_d = (_c = solidKanbanViewMetaData === null || solidKanbanViewMetaData === void 0 ? void 0 : solidKanbanViewMetaData.data) === null || _c === void 0 ? void 0 : _c.solidView) === null || _d === void 0 ? void 0 : _d.layout) === null || _e === void 0 ? void 0 : _e.attrs.enableGlobalSearch) === true &&
723
723
  // <SolidGlobalSearchElement viewData={solidKanbanViewMetaData} handleApplyCustomFilter={handleApplyCustomFilter} ></SolidGlobalSearchElement>
724
- _jsx("div", { className: "hidden lg:flex", children: _jsx(SolidGlobalSearchElement, { showSaveFilterPopup: showSaveFilterPopup, setShowSaveFilterPopup: setShowSaveFilterPopup, ref: solidGlobalSearchElementRef, viewData: solidKanbanViewMetaData, handleApplyCustomFilter: handleApplyCustomFilter }) })] }), _jsxs("div", { className: "flex align-items-center solid-header-buttons-wrapper", children: [((_h = (_g = (_f = solidKanbanViewMetaData === null || solidKanbanViewMetaData === void 0 ? void 0 : solidKanbanViewMetaData.data) === null || _f === void 0 ? void 0 : _f.solidView) === null || _g === void 0 ? void 0 : _g.layout) === null || _h === void 0 ? void 0 : _h.attrs.enableGlobalSearch) === true &&
724
+ _jsx("div", { className: "hidden lg:flex", children: _jsx(SolidGlobalSearchElement, { viewType: "kanban", showSaveFilterPopup: showSaveFilterPopup, setShowSaveFilterPopup: setShowSaveFilterPopup, ref: solidGlobalSearchElementRef, viewData: solidKanbanViewMetaData, handleApplyCustomFilter: handleApplyCustomFilter }) })] }), _jsxs("div", { className: "flex align-items-center solid-header-buttons-wrapper", children: [((_h = (_g = (_f = solidKanbanViewMetaData === null || solidKanbanViewMetaData === void 0 ? void 0 : solidKanbanViewMetaData.data) === null || _f === void 0 ? void 0 : _f.solidView) === null || _g === void 0 ? void 0 : _g.layout) === null || _h === void 0 ? void 0 : _h.attrs.enableGlobalSearch) === true &&
725
725
  _jsx("div", { className: "flex lg:hidden", children: _jsx(Button, { type: "button", size: "small", icon: "pi pi-search", severity: "secondary", outlined: true, className: "solid-icon-button", onClick: function () { return setShowGlobalSearchElement(!showGlobalSearchElement); } }) }), actionsAllowed.includes("".concat(permissionExpression(params.modelName, 'create'))) && ((_l = (_k = (_j = solidKanbanViewMetaData === null || solidKanbanViewMetaData === void 0 ? void 0 : solidKanbanViewMetaData.data) === null || _j === void 0 ? void 0 : _j.solidView) === null || _k === void 0 ? void 0 : _k.layout) === null || _l === void 0 ? void 0 : _l.attrs.create) !== false &&
726
726
  _jsx(SolidCreateButton, { createButtonUrl: createButtonUrl, createActionQueryParams: createActionQueryParams, responsiveIconOnly: true }), actionsAllowed.includes("".concat(permissionExpression(params.modelName, 'delete'))) && ((_p = (_o = (_m = solidKanbanViewMetaData === null || solidKanbanViewMetaData === void 0 ? void 0 : solidKanbanViewMetaData.data) === null || _m === void 0 ? void 0 : _m.solidView) === null || _o === void 0 ? void 0 : _o.layout) === null || _p === void 0 ? void 0 : _p.attrs.delete) !== false && selectedRecords.length > 0 && _jsx(Button, { type: "button", label: "Delete", size: "small", onClick: function () { return setDialogVisible(true); }, className: "small-button ", severity: "danger" }), _jsx(Button, { type: "button", size: "small", icon: "pi pi-refresh", severity: "secondary", className: "solid-icon-button", outlined: true, onClick: function () {
727
727
  window.location.reload();
728
- } }), _jsx(SolidKanbanViewConfigure, { solidKanbanViewMetaData: solidKanbanViewMetaData, actionsAllowed: actionsAllowed, viewModes: viewModes, setLayoutDialogVisible: setLayoutDialogVisible, setShowSaveFilterPopup: setShowSaveFilterPopup })] })] }), ((_s = (_r = (_q = solidKanbanViewMetaData === null || solidKanbanViewMetaData === void 0 ? void 0 : solidKanbanViewMetaData.data) === null || _q === void 0 ? void 0 : _q.solidView) === null || _r === void 0 ? void 0 : _r.layout) === null || _s === void 0 ? void 0 : _s.attrs.enableGlobalSearch) === true && showGlobalSearchElement && (_jsx("div", { className: "flex lg:hidden", children: _jsx(SolidGlobalSearchElement, { showSaveFilterPopup: showSaveFilterPopup, setShowSaveFilterPopup: setShowSaveFilterPopup, ref: solidGlobalSearchElementRef, viewData: solidKanbanViewMetaData, handleApplyCustomFilter: handleApplyCustomFilter }) }))] }), _jsx("style", { children: ".p-datatable .p-datatable-loading-overlay {background-color: rgba(0, 0, 0, 0.0);}" }), solidKanbanViewMetaData && kanbanViewData &&
728
+ } }), _jsx(SolidKanbanViewConfigure, { solidKanbanViewMetaData: solidKanbanViewMetaData, actionsAllowed: actionsAllowed, viewModes: viewModes, setLayoutDialogVisible: setLayoutDialogVisible, setShowSaveFilterPopup: setShowSaveFilterPopup })] })] }), ((_s = (_r = (_q = solidKanbanViewMetaData === null || solidKanbanViewMetaData === void 0 ? void 0 : solidKanbanViewMetaData.data) === null || _q === void 0 ? void 0 : _q.solidView) === null || _r === void 0 ? void 0 : _r.layout) === null || _s === void 0 ? void 0 : _s.attrs.enableGlobalSearch) === true && showGlobalSearchElement && (_jsx("div", { className: "flex lg:hidden", children: _jsx(SolidGlobalSearchElement, { viewType: "kanban", showSaveFilterPopup: showSaveFilterPopup, setShowSaveFilterPopup: setShowSaveFilterPopup, ref: solidGlobalSearchElementRef, viewData: solidKanbanViewMetaData, handleApplyCustomFilter: handleApplyCustomFilter }) }))] }), _jsx("style", { children: ".p-datatable .p-datatable-loading-overlay {background-color: rgba(0, 0, 0, 0.0);}" }), solidKanbanViewMetaData && kanbanViewData &&
729
729
  _jsx(KanbanBoard, { groupByFieldName: groupByFieldName, groupedView: groupedView, kanbanViewData: kanbanViewData, maxSwimLanesCount: maxSwimLanesCount, solidKanbanViewMetaData: solidKanbanViewMetaData === null || solidKanbanViewMetaData === void 0 ? void 0 : solidKanbanViewMetaData.data, setKanbanViewData: setKanbanViewData, handleLoadMore: handleLoadMore, onDragEnd: onDragEnd, handleSwimLanePagination: handleSwimLanePagination, setLightboxUrls: setLightboxUrls, setOpenLightbox: setOpenLightbox, editButtonUrl: editBaseUrl }), _jsx(Dialog, { visible: isDialogVisible, header: "Confirm Delete", modal: true, className: "solid-confirm-dialog", footer: function () { return (_jsxs("div", { className: "flex justify-content-center", children: [_jsx(Button, { label: "Yes", icon: "pi pi-check", className: 'small-button', severity: "danger", autoFocus: true, onClick: deleteBulk }), _jsx(Button, { label: "No", icon: "pi pi-times", className: 'small-button', onClick: onDeleteClose })] })); }, onHide: function () { return setDialogVisible(false); }, children: _jsx("p", { children: "Are you sure you want to delete the selected records?" }) }), openLightbox &&
730
730
  _jsx(Lightbox, { open: openLightbox, plugins: [Counter, Download], close: function () { return setOpenLightbox(false); },
731
731
  // @ts-ignore