@solidxai/core-ui 0.1.9-beta.16 → 0.1.9-beta.18

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 (126) hide show
  1. package/dist/components/auth/SolidLogin.js +2 -2
  2. package/dist/components/auth/SolidLogin.js.map +1 -1
  3. package/dist/components/auth/SolidLogin.tsx +2 -2
  4. package/dist/components/auth/SolidRegister.js +1 -1
  5. package/dist/components/auth/SolidRegister.js.map +1 -1
  6. package/dist/components/auth/SolidRegister.tsx +1 -1
  7. package/dist/components/common/SettingsComponent.d.ts.map +1 -1
  8. package/dist/components/common/SettingsComponent.js +3 -0
  9. package/dist/components/common/SettingsComponent.js.map +1 -1
  10. package/dist/components/common/SettingsComponent.tsx +3 -0
  11. package/dist/components/common/SocialMediaLogin.d.ts.map +1 -1
  12. package/dist/components/common/SocialMediaLogin.js +1 -1
  13. package/dist/components/common/SocialMediaLogin.js.map +1 -1
  14. package/dist/components/common/SocialMediaLogin.tsx +4 -0
  15. package/dist/components/common/SolidFaviconProvider.d.ts +3 -0
  16. package/dist/components/common/SolidFaviconProvider.d.ts.map +1 -0
  17. package/dist/components/common/SolidFaviconProvider.js +102 -0
  18. package/dist/components/common/SolidFaviconProvider.js.map +1 -0
  19. package/dist/components/common/SolidFaviconProvider.tsx +55 -0
  20. package/dist/components/core/card/SolidCardView.js +1 -1
  21. package/dist/components/core/card/SolidCardView.js.map +1 -1
  22. package/dist/components/core/card/SolidCardView.tsx +1 -1
  23. package/dist/components/core/chatter/SolidChatterMessageBox.js +1 -1
  24. package/dist/components/core/chatter/SolidChatterMessageBox.js.map +1 -1
  25. package/dist/components/core/chatter/SolidChatterMessageBox.tsx +1 -1
  26. package/dist/components/core/chatter/SolidMessageComposer.d.ts.map +1 -1
  27. package/dist/components/core/chatter/SolidMessageComposer.js +2 -1
  28. package/dist/components/core/chatter/SolidMessageComposer.js.map +1 -1
  29. package/dist/components/core/chatter/SolidMessageComposer.tsx +2 -0
  30. package/dist/components/core/common/FilterComponent.d.ts.map +1 -1
  31. package/dist/components/core/common/FilterComponent.js +4 -2
  32. package/dist/components/core/common/FilterComponent.js.map +1 -1
  33. package/dist/components/core/common/FilterComponent.tsx +5 -2
  34. package/dist/components/core/common/SolidGenericImport/SolidImport.module.css +1 -1
  35. package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.d.ts.map +1 -1
  36. package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.js +2 -0
  37. package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.js.map +1 -1
  38. package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.tsx +2 -0
  39. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  40. package/dist/components/core/common/SolidGlobalSearchElement.js +77 -42
  41. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  42. package/dist/components/core/common/SolidGlobalSearchElement.tsx +43 -5
  43. package/dist/components/core/common/SolidSaveCustomFilterForm.d.ts.map +1 -1
  44. package/dist/components/core/common/SolidSaveCustomFilterForm.js +1 -1
  45. package/dist/components/core/common/SolidSaveCustomFilterForm.js.map +1 -1
  46. package/dist/components/core/common/SolidSaveCustomFilterForm.tsx +0 -1
  47. package/dist/components/core/form/SolidFormView.js +1 -1
  48. package/dist/components/core/form/SolidFormView.js.map +1 -1
  49. package/dist/components/core/form/SolidFormView.tsx +1 -1
  50. package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.d.ts.map +1 -1
  51. package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.js +12 -3
  52. package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.js.map +1 -1
  53. package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.tsx +21 -16
  54. package/dist/components/core/form/SolidFormViewNormalHeaderButton.d.ts.map +1 -1
  55. package/dist/components/core/form/SolidFormViewNormalHeaderButton.js +15 -5
  56. package/dist/components/core/form/SolidFormViewNormalHeaderButton.js.map +1 -1
  57. package/dist/components/core/form/SolidFormViewNormalHeaderButton.tsx +21 -9
  58. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  59. package/dist/components/core/list/SolidListView.js +28 -19
  60. package/dist/components/core/list/SolidListView.js.map +1 -1
  61. package/dist/components/core/list/SolidListView.tsx +25 -15
  62. package/dist/components/core/list/SolidListViewColumn.d.ts +1 -0
  63. package/dist/components/core/list/SolidListViewColumn.d.ts.map +1 -1
  64. package/dist/components/core/list/SolidListViewColumn.js +27 -0
  65. package/dist/components/core/list/SolidListViewColumn.js.map +1 -1
  66. package/dist/components/core/list/SolidListViewColumn.tsx +13 -0
  67. package/dist/components/core/list/SolidListViewConfigure.js +1 -1
  68. package/dist/components/core/list/SolidListViewConfigure.js.map +1 -1
  69. package/dist/components/core/list/SolidListViewConfigure.tsx +1 -1
  70. package/dist/components/core/list/SolidListViewHeaderButton.d.ts.map +1 -1
  71. package/dist/components/core/list/SolidListViewHeaderButton.js +6 -3
  72. package/dist/components/core/list/SolidListViewHeaderButton.js.map +1 -1
  73. package/dist/components/core/list/SolidListViewHeaderButton.tsx +10 -7
  74. package/dist/components/core/list/SolidListViewHeaderContextMenuButton.d.ts.map +1 -1
  75. package/dist/components/core/list/SolidListViewHeaderContextMenuButton.js +16 -7
  76. package/dist/components/core/list/SolidListViewHeaderContextMenuButton.js.map +1 -1
  77. package/dist/components/core/list/SolidListViewHeaderContextMenuButton.tsx +17 -6
  78. package/dist/components/core/list/SolidListViewRowActionMenuItem.d.ts.map +1 -1
  79. package/dist/components/core/list/SolidListViewRowActionMenuItem.js +14 -5
  80. package/dist/components/core/list/SolidListViewRowActionMenuItem.js.map +1 -1
  81. package/dist/components/core/list/SolidListViewRowActionMenuItem.tsx +17 -6
  82. package/dist/components/core/model/CreateModel.d.ts.map +1 -1
  83. package/dist/components/core/model/CreateModel.js +11 -24
  84. package/dist/components/core/model/CreateModel.js.map +1 -1
  85. package/dist/components/core/model/CreateModel.tsx +10 -22
  86. package/dist/components/core/model/FieldMetaDataForm.js +1 -1
  87. package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
  88. package/dist/components/core/model/FieldMetaDataForm.tsx +1 -1
  89. package/dist/components/core/model/ModelMetaData.d.ts.map +1 -1
  90. package/dist/components/core/model/ModelMetaData.js +6 -18
  91. package/dist/components/core/model/ModelMetaData.js.map +1 -1
  92. package/dist/components/core/model/ModelMetaData.tsx +8 -21
  93. package/dist/components/layout/AdminTopHeader.d.ts.map +1 -1
  94. package/dist/components/layout/AdminTopHeader.js +1 -1
  95. package/dist/components/layout/AdminTopHeader.js.map +1 -1
  96. package/dist/components/layout/AdminTopHeader.tsx +2 -1
  97. package/dist/components/shad-cn-ui/SolidAutocomplete.d.ts.map +1 -1
  98. package/dist/components/shad-cn-ui/SolidAutocomplete.js +15 -0
  99. package/dist/components/shad-cn-ui/SolidAutocomplete.js.map +1 -1
  100. package/dist/components/shad-cn-ui/SolidAutocomplete.tsx +13 -0
  101. package/dist/components/shad-cn-ui/SolidButton.d.ts.map +1 -1
  102. package/dist/components/shad-cn-ui/SolidButton.js +10 -2
  103. package/dist/components/shad-cn-ui/SolidButton.js.map +1 -1
  104. package/dist/components/shad-cn-ui/SolidButton.tsx +10 -2
  105. package/dist/components/shad-cn-ui/SolidIcon.d.ts +2 -1
  106. package/dist/components/shad-cn-ui/SolidIcon.d.ts.map +1 -1
  107. package/dist/components/shad-cn-ui/SolidIcon.js +1 -0
  108. package/dist/components/shad-cn-ui/SolidIcon.js.map +1 -1
  109. package/dist/components/shad-cn-ui/SolidIcon.tsx +1 -0
  110. package/dist/components/shad-cn-ui/SolidPasswordInput.d.ts.map +1 -1
  111. package/dist/components/shad-cn-ui/SolidPasswordInput.js +1 -1
  112. package/dist/components/shad-cn-ui/SolidPasswordInput.js.map +1 -1
  113. package/dist/components/shad-cn-ui/SolidPasswordInput.tsx +1 -0
  114. package/dist/helpers/buttonPresentation.d.ts +24 -0
  115. package/dist/helpers/buttonPresentation.d.ts.map +1 -0
  116. package/dist/helpers/buttonPresentation.js +28 -0
  117. package/dist/helpers/buttonPresentation.js.map +1 -0
  118. package/dist/helpers/buttonPresentation.ts +53 -0
  119. package/dist/index.d.ts +1 -0
  120. package/dist/index.d.ts.map +1 -1
  121. package/dist/index.js +1 -0
  122. package/dist/index.js.map +1 -1
  123. package/dist/index.ts +1 -0
  124. package/dist/resources/globals.css +9 -7
  125. package/dist/resources/shadcn-base.css +24 -4
  126. package/package.json +1 -1
@@ -3553,7 +3553,7 @@ const FieldMetaDataForm = ({ setIsDirty, modelMetaData, fieldMetaData, setFieldM
3553
3553
  )}
3554
3554
  </div>
3555
3555
  )}
3556
- {currentFields.includes("isPrimaryKey") && (modelMetaData?.isLegacyTable || modelMetaData?.isLegacyTableWithId) && (
3556
+ {currentFields.includes("isPrimaryKey") && modelMetaData?.isLegacyTable && (
3557
3557
  <div className="field col-6 flex-flex-column gap-2 mt-2">
3558
3558
  <div className="flex align-items-center gap-2">
3559
3559
  <SolidCheckbox
@@ -1 +1 @@
1
- {"version":3,"file":"ModelMetaData.d.ts","sourceRoot":"","sources":["../../../../src/components/core/model/ModelMetaData.tsx"],"names":[],"mappings":"AASA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAuB3D,QAAA,MAAM,aAAa,kFA4sBjB,CAAC;AAEH,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"ModelMetaData.d.ts","sourceRoot":"","sources":["../../../../src/components/core/model/ModelMetaData.tsx"],"names":[],"mappings":"AASA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAuB3D,QAAA,MAAM,aAAa,kFA+rBjB,CAAC;AAEH,eAAe,aAAa,CAAC"}
@@ -118,19 +118,7 @@ var ModelMetaData = React.forwardRef(function (_a, ref) {
118
118
  parentModelId: modelMetaData ? (_c = modelMetaData === null || modelMetaData === void 0 ? void 0 : modelMetaData.parentModel) === null || _c === void 0 ? void 0 : _c.id : "",
119
119
  parentModel: modelMetaData ? modelMetaData === null || modelMetaData === void 0 ? void 0 : modelMetaData.parentModel : "",
120
120
  isLegacyTable: modelMetaData ? modelMetaData === null || modelMetaData === void 0 ? void 0 : modelMetaData.isLegacyTable : false,
121
- isLegacyTableWithId: modelMetaData ? modelMetaData === null || modelMetaData === void 0 ? void 0 : modelMetaData.isLegacyTableWithId : false,
122
- // isLegacyTable: modelMetaData
123
- // ? (modelMetaData.isLegacyTable && modelMetaData.isLegacyTableWithId && params.id !== 'new')
124
- // ? true
125
- // : modelMetaData.isLegacyTableWithId
126
- // ? true
127
- // : false
128
- // : false,
129
- // isLegacyTableWithId: modelMetaData
130
- // ? (modelMetaData.isLegacyTable && modelMetaData.isLegacyTableWithId && params.id !== 'new')
131
- // ? true
132
- // : false
133
- // : false,
121
+ hasExistingId: modelMetaData ? modelMetaData === null || modelMetaData === void 0 ? void 0 : modelMetaData.hasExistingId : false,
134
122
  };
135
123
  var _j = useState(false), showTableName = _j[0], setShowTableName = _j[1];
136
124
  var _k = useState(false), showParentModel = _k[0], setShowParentModel = _k[1];
@@ -190,7 +178,7 @@ var ModelMetaData = React.forwardRef(function (_a, ref) {
190
178
  }
191
179
  }),
192
180
  isLegacyTable: Yup.boolean(),
193
- isLegacyTableWithId: Yup.boolean(),
181
+ hasExistingId: Yup.boolean(),
194
182
  });
195
183
  var isFormFieldValid = function (formik, fieldName) {
196
184
  return formik.touched[fieldName] && formik.errors[fieldName];
@@ -232,7 +220,7 @@ var ModelMetaData = React.forwardRef(function (_a, ref) {
232
220
  modelData_1 = __assign(__assign(__assign(__assign({}, modelMetaData), { singularName: values.singularName, pluralName: values.pluralName, displayName: values.displayName, description: values.description, dataSource: values.dataSource, dataSourceType: values.dataSourceType, tableName: (values === null || values === void 0 ? void 0 : values.tableName) || tableName, moduleId: values.moduleId, module: values.module, isSystem: values.isSystem ? values.isSystem === true : '', enableSoftDelete: values.enableSoftDelete === true ? true : '', enableAuditTracking: values.enableAuditTracking === true ? true : '', internationalisation: values.internationalisation === true ? true : '', draftPublishWorkflow: values.draftPublishWorkflow === true ? true : '', isChild: values.isChild === true ? true : '' }), (values.isChild == true && {
233
221
  parentModelId: values.parentModelId,
234
222
  parentModel: values.parentModel,
235
- })), { isLegacyTable: values.isLegacyTable === true ? true : false, isLegacyTableWithId: values.isLegacyTableWithId === true ? true : false });
223
+ })), { isLegacyTable: values.isLegacyTable === true ? true : false, hasExistingId: values.hasExistingId === true ? true : false });
236
224
  setModelMetaData(modelData_1);
237
225
  nextTab();
238
226
  }
@@ -445,10 +433,10 @@ var ModelMetaData = React.forwardRef(function (_a, ref) {
445
433
  var isChecked = event.currentTarget.checked;
446
434
  formik.setFieldValue("isLegacyTable", isChecked);
447
435
  if (!isChecked) {
448
- formik.setFieldValue("isLegacyTableWithId", false);
436
+ formik.setFieldValue("hasExistingId", false);
449
437
  }
450
- }, label: "Is Legacy Table" }) }), formik.values.isLegacyTable && (_jsxs(_Fragment, { children: [_jsx("div", { className: "ml-4 mt-2", children: _jsx(SolidCheckbox, { name: "isLegacyTableWithId", checked: !!formik.values.isLegacyTableWithId, onChange: function (event) {
451
- formik.setFieldValue("isLegacyTableWithId", event.currentTarget.checked);
438
+ }, label: "Is Legacy Table" }) }), formik.values.isLegacyTable && (_jsxs(_Fragment, { children: [_jsx("div", { className: "ml-4 mt-2", children: _jsx(SolidCheckbox, { name: "hasExistingId", checked: !!formik.values.hasExistingId, onChange: function (event) {
439
+ formik.setFieldValue("hasExistingId", event.currentTarget.checked);
452
440
  }, label: "Has existing Id" }) }), _jsx("p", { className: "form-field-label mt-2 text-sm", children: "Note: Legacy tables require at least one field marked as Primary Key during model creation" })] }))] })] }), _jsx("div", { className: "field col-12 lg:col-6 lg:pl-3", children: _jsxs(SolidPanel, { header: "Basic Settings", className: "solid-column-panel", children: [_jsxs("div", { className: styles.fieldWrapper, children: [_jsx("label", { htmlFor: "displayName", className: styles.fieldLabel, children: "Display Name" }), _jsx(SolidInput, { type: "text", id: "displayName", name: "displayName", className: styles.fieldInput, value: formik.values.displayName, onChange: function (e) {
453
441
  formik.handleChange(e);
454
442
  var _a = getSingularAndPlural(e.target.value), toCamelCase = _a.toCamelCase, toSnakeCase = _a.toSnakeCase, toPluralCamelCase = _a.toPluralCamelCase;
@@ -1 +1 @@
1
- {"version":3,"file":"ModelMetaData.js","sourceRoot":"","sources":["../../../../src/components/core/model/ModelMetaData.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport { ERROR_MESSAGES } from \"../../../constants/error-messages\";\nimport { getSingularAndPlural } from \"../../../helpers/helpers\";\nimport { useGetFieldDefaultMetaDataQuery } from \"../../../redux/api/fieldApi\";\nimport { useLazyGetModelsQuery } from \"../../../redux/api/modelApi\";\nimport { useLazyGetmodulesQuery } from \"../../../redux/api/moduleApi\";\nimport { useFormik } from \"formik\";\nimport { snakeCase } from \"lodash\";\nimport qs from \"qs\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { showToast } from \"../../../redux/features/toastSlice\";\nimport * as Yup from \"yup\";\nimport { SolidAutocomplete, SolidCheckbox, SolidInput, SolidPanel, SolidTextarea } from \"../../shad-cn-ui\";\nimport { useSolidAutocompleteField } from \"../../../hooks/useSolidAutocompleteField\";\nimport styles from \"../form/fields/solidFields.module.css\";\n\nconst cx = (...parts: Array<string | false | null | undefined | Record<string, boolean>>) => {\n const classes: string[] = [];\n parts.forEach((part) => {\n if (!part) return;\n if (typeof part === \"string\") {\n classes.push(part);\n return;\n }\n Object.entries(part).forEach(([key, value]) => {\n if (value) classes.push(key);\n });\n });\n return classes.join(\" \");\n};\n\nconst ModelMetaData = React.forwardRef(({ modelMetaData, setModelMetaData, allModelsNames, deleteModelFunction, nextTab, formikModelMetadataRef, params, formErrors, setIsDirty }: any, ref) => {\n\n // const ModelMetaData = ({ modelMetaData, setModelMetaData, deleteModelFunction, nextTab, formikModelMetadataRef }: any) => { \n\n const dispatch = useDispatch();\n\n const [triggerGetModules, { data: moduleData, isFetching: isModuleFetching, error: moduleError }] = useLazyGetmodulesQuery();\n const [triggerGetModels, { data: modelData, isFetching: isModelFetching, error: modelError }] = useLazyGetModelsQuery();\n const { data: fieldDefaultMetaData, isLoading, error, refetch } = useGetFieldDefaultMetaDataQuery(null);\n \n\n const initialValues = {\n singularName: modelMetaData ? modelMetaData?.singularName : \"\",\n pluralName: modelMetaData ? modelMetaData?.pluralName : \"\",\n displayName: modelMetaData ? modelMetaData?.displayName : \"\",\n description: modelMetaData ? modelMetaData?.description : \"\",\n dataSource: modelMetaData ? modelMetaData?.dataSource : \"\",\n dataSourceType: modelMetaData ? modelMetaData?.dataSourceType : \"\",\n tableName: modelMetaData ? modelMetaData?.tableName : null,\n moduleId: modelMetaData ? modelMetaData?.module?.id : \"\",\n module: modelMetaData ? modelMetaData?.module : \"\",\n isSystem: modelMetaData ? modelMetaData?.isSystem : false,\n enableSoftDelete: modelMetaData ? modelMetaData?.enableSoftDelete : \"\",\n enableAuditTracking: modelMetaData ? modelMetaData?.enableAuditTracking : true,\n internationalisation: modelMetaData ? modelMetaData?.internationalisation : \"\",\n draftPublishWorkflow: modelMetaData ? modelMetaData?.draftPublishWorkflow : \"\",\n isChild: modelMetaData ? modelMetaData?.isChild : \"\",\n parentModelId: modelMetaData ? modelMetaData?.parentModel?.id : \"\",\n parentModel: modelMetaData ? modelMetaData?.parentModel : \"\",\n isLegacyTable: modelMetaData ? modelMetaData?.isLegacyTable : false,\n isLegacyTableWithId: modelMetaData ? modelMetaData?.isLegacyTableWithId : false,\n // isLegacyTable: modelMetaData \n // ? (modelMetaData.isLegacyTable && modelMetaData.isLegacyTableWithId && params.id !== 'new') \n // ? true \n // : modelMetaData.isLegacyTableWithId \n // ? true \n // : false \n // : false,\n \n // isLegacyTableWithId: modelMetaData \n // ? (modelMetaData.isLegacyTable && modelMetaData.isLegacyTableWithId && params.id !== 'new') \n // ? true \n // : false \n // : false,\n };\n\n const [showTableName, setShowTableName] = useState<any>(false);\n const [showParentModel, setShowParentModel] = useState<any>(false);\n const [selectedModule, setSelectedModule] = useState<any>(null);\n\n\n useEffect(() => {\n if (modelMetaData && modelMetaData.tableName) {\n setShowTableName(true)\n }\n if (modelMetaData && modelMetaData.isChild) {\n setShowParentModel(true)\n }\n else if (modelMetaData && !modelMetaData.isChild) {\n setShowParentModel(false)\n }\n }, [modelMetaData])\n\n const validationSchema = Yup.object({\n singularName: Yup.string()\n // .matches(\n // /^[a-z]+(-[a-z]+)*$/,\n // \"Invalid format. Use lowercase letters and hyphens only\"\n // )\n .notOneOf(allModelsNames, ERROR_MESSAGES.FIELD_ALREADY_USE('Name', 'name'))\n .required(ERROR_MESSAGES.FIELD_REUQIRED('Singular Name')),\n pluralName: Yup.string()\n // .matches(\n // /^[a-z]+(-[a-z]+)*$/,\n // \"Invalid format. Use lowercase letters and hyphens only\"\n // )\n .required(ERROR_MESSAGES.FIELD_REUQIRED('Plural Name')),\n // tableName: Yup.string().required().matches(/^[a-z0-9_]+$/, ERROR_MESSAGES.SNAKE_CASE('Tabale')),\n displayName: Yup.string().required(ERROR_MESSAGES.FIELD_REUQIRED(\"Display Name\")),\n description: Yup.string().required(ERROR_MESSAGES.FIELD_REUQIRED(\"Description Name\")),\n dataSource: Yup.string().required(ERROR_MESSAGES.FIELD_REUQIRED(\"Data Source\")),\n dataSourceType: Yup.string().required(ERROR_MESSAGES.FIELD_REUQIRED(\"Data Source Type\")),\n moduleId: Yup.number().required(ERROR_MESSAGES.FIELD_REUQIRED(\"Module Id\")),\n module: Yup.object().required(ERROR_MESSAGES.FIELD_REUQIRED(\"Module\")),\n isSystem: Yup.boolean(),\n enableSoftDelete: Yup.boolean(),\n enableAuditTracking: Yup.boolean(),\n internationalisation: Yup.boolean(),\n draftPublishWorkflow: Yup.boolean(),\n isChild: Yup.boolean(),\n parentModelId: Yup.number().when(\"isChild\", (isChild: any, schema) => {\n if (isChild.length > 0 && isChild[0] == true) {\n return schema.required(ERROR_MESSAGES.FIELD_REUQIRED('Parent Model Id'))\n } else {\n return schema.notRequired().nullable();\n }\n }),\n parentModel: Yup.object().when(\"isChild\", (isChild: any, schema) => {\n if (isChild.length > 0 && isChild[0] == true) {\n return schema.required(ERROR_MESSAGES.FIELD_REUQIRED('Parent Model'))\n } else {\n return schema.notRequired().nullable();\n }\n }),\n isLegacyTable: Yup.boolean(),\n isLegacyTableWithId: Yup.boolean(),\n });\n\n\n\n const isFormFieldValid = (formik: any, fieldName: string) =>\n formik.touched[fieldName] && formik.errors[fieldName];\n\n const getFieldErrorMessage = (fieldName: string, fallbackField?: string) => {\n const errors = formik.errors as Record<string, any>;\n const message =\n errors[fieldName] ??\n (fallbackField ? errors[fallbackField] : undefined) ??\n formErrors[fieldName] ??\n (fallbackField ? formErrors[fallbackField] : undefined);\n return message;\n };\n\n const fieldHasError = (fieldName: string, fallbackField?: string) => {\n return Boolean(\n isFormFieldValid(formik, fieldName) ||\n (fallbackField && isFormFieldValid(formik, fallbackField)) ||\n formErrors[fieldName] ||\n (fallbackField && formErrors[fallbackField])\n );\n };\n\n const renderFieldError = (fieldName: string, fallbackField?: string) => {\n if (!fieldHasError(fieldName, fallbackField)) {\n return null;\n }\n\n const message = getFieldErrorMessage(fieldName, fallbackField);\n\n if (!message) {\n return null;\n }\n\n const errorText = Array.isArray(message) ? message.join(\", \") : String(message);\n return <p className={styles.fieldError}>{errorText}</p>;\n };\n\n const formik = useFormik({\n initialValues,\n validationSchema,\n validateOnChange: true, // This ensures validation runs when a field value is changed\n enableReinitialize: true,\n innerRef: formikModelMetadataRef,\n onSubmit: async (values) => {\n const tableName = generateTableName(values.module.displayName, values.singularName);\n\n try {\n const modelData = {\n ...modelMetaData,\n singularName: values.singularName,\n pluralName: values.pluralName,\n displayName: values.displayName,\n description: values.description,\n dataSource: values.dataSource,\n dataSourceType: values.dataSourceType,\n tableName: values?.tableName || tableName,\n moduleId: values.moduleId,\n module: values.module,\n isSystem: values.isSystem ? values.isSystem === true : '',\n enableSoftDelete: values.enableSoftDelete === true ? true : '',\n enableAuditTracking: values.enableAuditTracking === true ? true : '',\n internationalisation: values.internationalisation === true ? true : '',\n draftPublishWorkflow: values.draftPublishWorkflow === true ? true : '',\n isChild: values.isChild === true ? true : '',\n ...(values.isChild == true && {\n parentModelId: values.parentModelId,\n parentModel: values.parentModel,\n }),\n isLegacyTable:values.isLegacyTable === true ? true : false,\n isLegacyTableWithId:values.isLegacyTableWithId === true ? true :false\n \n };\n setModelMetaData(modelData);\n nextTab()\n\n } catch (err) {\n console.error(ERROR_MESSAGES.CREATE_MODEL, err);\n }\n },\n });\n\n function generateTableName(moduleSlug: string, modelName: string): string {\n const snakeCaseModelName = snakeCase(modelName);\n const sankeCaseModuleName = snakeCase(moduleSlug);\n return `${sankeCaseModuleName}_${snakeCaseModelName}`;\n }\n\n const showError = async () => {\n const errors = await formik.validateForm(); // Trigger validation and get the updated errors\n const errorMessages = Object.values(errors);\n if (errorMessages.length > 0) {\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.SEND_REPORT, detail: errorMessages.map(String).join(', '), life: 3000 }));\n }\n };\n\n\n const searchModule = async (event: any) => {\n try {\n const query = event.query;\n const queryData = {\n limit: 10,\n offset: 0,\n filters: {\n name: {\n $containsi: query,\n },\n },\n };\n\n const queryString = qs.stringify(queryData, {\n encodeValuesOnly: true,\n });\n\n const result = await triggerGetModules(queryString).unwrap();\n\n if (result && result.records) {\n const updatedSuggestion = [...result.records];\n return updatedSuggestion\n } else {\n return []\n }\n } catch (error) {\n return []\n }\n };\n\n\n const searchModel = async (event: any) => {\n try {\n const query = event.query;\n const queryData = {\n limit: 10,\n offset: 0,\n filters: {\n singularName: {\n $containsi: query,\n },\n },\n };\n\n // Add module filter dynamically\n if (selectedModule?.name) {\n (queryData.filters as any)[\"module\"] = {\n name: { $containsi: selectedModule.name },\n };\n }\n\n\n const queryString = qs.stringify(queryData, {\n encodeValuesOnly: true,\n });\n\n const result = await triggerGetModels(queryString).unwrap();\n\n if (result && result.records) {\n const updatedSuggestion = [...result.records];\n return updatedSuggestion\n } else {\n return []\n }\n } catch (error) {\n return []\n }\n };\n\n\n const serachDataSource = async (event: any) => {\n const query = event.query;\n try {\n const filterredData: any = fieldDefaultMetaData.data.dataSource.filter((t: any) => t.name.toLowerCase().startsWith(query.toLowerCase()));\n const transformedData = filterredData.map((e: any) => ({ label: e.name, value: e.name, type: e.type }));\n return transformedData\n } catch (error) {\n console.error(ERROR_MESSAGES.FETCHING_ITEMS, error);\n return []\n }\n };\n\n\n const serachDataSourceType = async (event: any) => {\n const query = event.query;\n try {\n\n const filterredData: any = fieldDefaultMetaData.data.dataSource.filter((t: any) => t.type.toLowerCase().startsWith(query.toLowerCase()));\n const transformedData = filterredData.map((e: any) => ({ label: e.type, value: e.type }))\n return transformedData;\n } catch (error) {\n console.error(ERROR_MESSAGES.FETCHING_ITEMS, error);\n return [];\n\n }\n };\n\n\n // useEffect(() => {\n // if (modelMetaData) {\n // setModelMetaData(modelMetaData.parentCategoryId);\n\n // // formik.setFieldValue(\"parentCategoryId\", modelMetaData.parentCategoryId);\n // }\n // }, [modelMetaData])\n\n\n // Set the formik reference to the formik instance\n // Set the formik reference to the formik instance\n useEffect(() => {\n if (formikModelMetadataRef) {\n formikModelMetadataRef.current = formik; // Assign the formik instance to the ref\n }\n }, [formik, formikModelMetadataRef]);\n\n\n const renderCount = useRef(0);\n\n useEffect(() => {\n renderCount.current += 1; // Increment count on every render\n });\n\n\n useEffect(() => {\n formik.validateForm();\n setModelMetaData(formik.values);\n\n }, [formik.values])\n\n useEffect(() => {\n if (formik.dirty) {\n setIsDirty(true);\n }\n }, [formik.dirty]);\n\n const moduleField = useSolidAutocompleteField({\n formik,\n fieldName: \"module\",\n fieldNameId: \"moduleId\",\n labelKey: \"displayName\",\n valueKey: \"id\",\n searchData: searchModule,\n existingData: formik.values.module,\n relationField: true,\n additionalAction: (e: any) => setSelectedModule(e.value),\n });\n\n const dataSourceField = useSolidAutocompleteField({\n formik,\n fieldName: \"dataSource\",\n labelKey: \"label\",\n valueKey: \"value\",\n searchData: serachDataSource,\n existingData: formik.values.dataSource,\n additionalAction: (e: any) => formik.setFieldValue(\"dataSourceType\", e.target.value.type),\n });\n\n const parentModelField = useSolidAutocompleteField({\n formik,\n fieldName: \"parentModel\",\n fieldNameId: \"parentModelId\",\n labelKey: \"displayName\",\n valueKey: \"id\",\n searchData: searchModel,\n existingData: formik.values.parentModel,\n relationField: true,\n });\n\n return (\n\n <>\n <form onSubmit={formik.handleSubmit}>\n <div className=\"\">\n <div className=\"grid formgrid\">\n <div className=\"field col-12 lg:col-6 lg:pr-3\">\n <SolidPanel header={\"Basic Info\"} className=\"solid-column-panel\">\n <div className={styles.fieldWrapper}>\n <label htmlFor=\"moduleId\" className={styles.fieldLabel}>\n Module\n </label>\n <div\n className={cx(\n \"solid-standard-autocomplete w-full\",\n fieldHasError(\"module\", \"moduleId\") && styles.fieldInvalidControl\n )}\n >\n <SolidAutocomplete\n disabled={params.id !== \"new\"}\n value={moduleField.selectedItem}\n suggestions={moduleField.filteredItems}\n completeMethod={moduleField.searchItems}\n onChange={moduleField.handleChange}\n dropdown\n field=\"displayName\"\n className=\"w-full\"\n />\n </div>\n {renderFieldError(\"module\", \"moduleId\")}\n </div>\n\n <div className={styles.fieldWrapper}>\n <label htmlFor=\"dataSource\" className={styles.fieldLabel}>\n Data Source\n </label>\n <div\n className={cx(\n \"solid-standard-autocomplete w-full\",\n fieldHasError(\"dataSource\") && styles.fieldInvalidControl\n )}\n >\n <SolidAutocomplete\n disabled={params.id !== \"new\"}\n value={dataSourceField.selectedItem}\n suggestions={dataSourceField.filteredItems}\n completeMethod={dataSourceField.searchItems}\n onChange={dataSourceField.handleChange}\n dropdown\n field=\"label\"\n className=\"w-full\"\n />\n </div>\n {formik.values.dataSourceType && (\n <p className=\"form-field-label text-sm\">\n Your datasource will connect to a {formik.values.dataSourceType} database\n </p>\n )}\n {renderFieldError(\"dataSource\")}\n </div>\n </SolidPanel>\n\n <SolidPanel header={\"Configurations\"} className=\"solid-column-panel mt-3 mb-3 lg:mt-5\">\n <div className=\"mt-2\">\n <SolidCheckbox\n name=\"enableSoftDelete\"\n disabled={params.id !== \"new\"}\n checked={!!formik.values.enableSoftDelete}\n onChange={(event) => {\n formik.setFieldValue(\"enableSoftDelete\", event.currentTarget.checked);\n }}\n label=\"Enable Soft Delete\"\n />\n {params.id !== \"new\" && (\n <p className=\"form-field-label mt-1 text-sm\">\n Soft-delete can only be set during initial creation to maintain data integrity\n </p>\n )}\n {renderFieldError(\"enableSoftDelete\")}\n </div>\n\n <div className=\"mt-3\">\n <SolidCheckbox\n name=\"isChild\"\n disabled={params.id !== \"new\"}\n checked={!!formik.values.isChild}\n onChange={(event) => {\n formik.setFieldValue(\"isChild\", event.currentTarget.checked);\n }}\n label=\"Is Child\"\n />\n {params.id !== \"new\" && (\n <p className=\"form-field-label mt-1 text-sm\">\n Is Current Model child of another Model\n </p>\n )}\n {renderFieldError(\"isChild\")}\n </div>\n\n {showParentModel && (\n <div className={styles.fieldWrapper}>\n <label htmlFor=\"parentModelId\" className={styles.fieldLabel}>\n Parent Model\n </label>\n <div\n className={cx(\n \"solid-standard-autocomplete w-full\",\n fieldHasError(\"parentModel\", \"parentModelId\") && styles.fieldInvalidControl\n )}\n >\n <SolidAutocomplete\n disabled={params.id !== \"new\"}\n value={parentModelField.selectedItem}\n suggestions={parentModelField.filteredItems}\n completeMethod={parentModelField.searchItems}\n onChange={parentModelField.handleChange}\n dropdown\n field=\"displayName\"\n className=\"w-full\"\n />\n </div>\n {renderFieldError(\"parentModel\", \"parentModelId\")}\n </div>\n )}\n\n <div className=\"mt-3\">\n <SolidCheckbox\n name=\"enableAuditTracking\"\n checked={!!formik.values.enableAuditTracking}\n onChange={(event) => {\n formik.setFieldValue(\"enableAuditTracking\", event.currentTarget.checked);\n }}\n label=\"Enable Audit Tracking\"\n />\n {renderFieldError(\"enableAuditTracking\")}\n </div>\n\n <div className=\"mt-3\">\n <SolidCheckbox\n name=\"internationalisation\"\n checked={!!formik.values.internationalisation}\n onChange={(event) => {\n formik.setFieldValue(\"internationalisation\", event.currentTarget.checked);\n }}\n label=\"Is Internationalisation Enabled\"\n />\n </div>\n\n <div className=\"mt-3\">\n <SolidCheckbox\n name=\"draftPublishWorkflow\"\n checked={!!formik.values.draftPublishWorkflow}\n onChange={(event) => {\n formik.setFieldValue(\"draftPublishWorkflow\", event.currentTarget.checked);\n }}\n label=\"Draft/Publish Workflow\"\n />\n </div>\n\n <div className=\"mt-3\">\n <SolidCheckbox\n name=\"isLegacyTable\"\n checked={!!formik.values.isLegacyTable}\n onChange={(event) => {\n const isChecked = event.currentTarget.checked;\n formik.setFieldValue(\"isLegacyTable\", isChecked);\n if (!isChecked) {\n formik.setFieldValue(\"isLegacyTableWithId\", false);\n }\n }}\n label=\"Is Legacy Table\"\n />\n </div>\n\n {formik.values.isLegacyTable && (\n <>\n <div className=\"ml-4 mt-2\">\n <SolidCheckbox\n name=\"isLegacyTableWithId\"\n checked={!!formik.values.isLegacyTableWithId}\n onChange={(event) => {\n formik.setFieldValue(\"isLegacyTableWithId\", event.currentTarget.checked);\n }}\n label=\"Has existing Id\"\n />\n </div>\n <p className=\"form-field-label mt-2 text-sm\">\n Note: Legacy tables require at least one field marked as Primary Key during model creation\n </p>\n </>\n )}\n </SolidPanel>\n </div>\n <div className=\"field col-12 lg:col-6 lg:pl-3\">\n <SolidPanel header={\"Basic Settings\"} className=\"solid-column-panel\">\n <div className={styles.fieldWrapper}>\n <label htmlFor=\"displayName\" className={styles.fieldLabel}>\n Display Name\n </label>\n <SolidInput\n type=\"text\"\n id=\"displayName\"\n name=\"displayName\"\n className={styles.fieldInput}\n value={formik.values.displayName}\n onChange={(e) => {\n formik.handleChange(e);\n const { toCamelCase, toSnakeCase, toPluralCamelCase } = getSingularAndPlural(e.target.value);\n if (params.id === \"new\") {\n formik.setFieldValue(\"singularName\", toCamelCase);\n formik.setFieldValue(\"pluralName\", toPluralCamelCase);\n formik.setFieldValue(\"tableName\", toSnakeCase);\n }\n }}\n />\n {renderFieldError(\"displayName\")}\n </div>\n\n <div className={styles.fieldWrapper}>\n <label htmlFor=\"singularName\" className={styles.fieldLabel}>\n Singular Name\n </label>\n <SolidInput\n type=\"text\"\n id=\"singularName\"\n name=\"singularName\"\n className={styles.fieldInput}\n value={formik.values.singularName}\n disabled\n onChange={formik.handleChange}\n />\n {renderFieldError(\"singularName\")}\n </div>\n\n <div className={styles.fieldWrapper}>\n <label htmlFor=\"pluralName\" className={styles.fieldLabel}>\n Plural Name\n </label>\n <SolidInput\n type=\"text\"\n id=\"pluralName\"\n name=\"pluralName\"\n className={styles.fieldInput}\n value={formik.values.pluralName}\n disabled\n onChange={formik.handleChange}\n />\n {renderFieldError(\"pluralName\")}\n </div>\n\n <div className={styles.fieldWrapper}>\n <label htmlFor=\"tableName\" className={styles.fieldLabel}>\n Table Name\n </label>\n <SolidInput\n type=\"text\"\n id=\"tableName\"\n name=\"tableName\"\n className={styles.fieldInput}\n value={formik.values.tableName}\n disabled={params.id !== \"new\"}\n onChange={formik.handleChange}\n />\n {renderFieldError(\"tableName\")}\n </div>\n\n <div className={styles.fieldWrapper}>\n <label htmlFor=\"description\" className={styles.fieldLabel}>\n Description\n </label>\n <SolidTextarea\n id=\"description\"\n name=\"description\"\n className={styles.fieldTextarea}\n value={formik.values.description}\n rows={5}\n onChange={formik.handleChange}\n />\n {renderFieldError(\"description\")}\n </div>\n </SolidPanel>\n </div>\n\n {/* <div className=\"md:col-6 sm:col-12\">\n <div className=\"field\">\n <label htmlFor=\"pluralName\" className=\"form-label form-field-label\">\n Plural Name\n </label>\n <InputText\n type=\"text\"\n id=\"pluralName\"\n name=\"pluralName\"\n onChange={formik.handleChange}\n value={formik.values.pluralName}\n className={cx(\"p-inputtext-sm w-full small-input\", {\n \"p-invalid\": isFormFieldValid(formik, \"pluralName\"),\n })}\n />\n {isFormFieldValid(formik, \"pluralName\") && (\n <Message severity=\"error\" text={formik?.errors?.pluralName?.toString()} />\n )}\n </div>\n </div> */}\n\n\n {/* <div className=\"md:col-6 sm:col-12\">\n <div className=\"field form-dropdown-select\">\n <label htmlFor=\"dataSourceType\" className=\"form-labe form-field-label\">\n Data Source\n </label>\n <Dropdown\n id=\"dataSourceType\"\n name=\"dataSourceType\"\n value={formik.values.dataSourceType}\n options={dataSourceTypes}\n onChange={(e) => {\n formik.setFieldValue(\"dataSourceType\", e.value);\n // if (e.value == \"mariadb\") {\n // formik.setFieldValue(\"dataSourceType\", \"mongodb\");\n // }\n // else {\n // formik.setFieldValue(\"dataSourceType\", \"rdbms\");\n // }\n }\n }\n placeholder=\"Select a Data Source\"\n className={cx(\"p-inputtext-sm w-full\", {\n \"p-invalid\": isFormFieldValid(formik, \"dataSource\"),\n })}\n />\n {isFormFieldValid(formik, \"dataSource\") && (\n <Message severity=\"error\" text={formik?.errors?.dataSource?.toString()} />\n )}\n </div>\n </div> */}\n\n\n </div>\n </div>\n </form>\n </>\n );\n});\n\nexport default ModelMetaData;\n"]}
1
+ {"version":3,"file":"ModelMetaData.js","sourceRoot":"","sources":["../../../../src/components/core/model/ModelMetaData.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport { ERROR_MESSAGES } from \"../../../constants/error-messages\";\nimport { getSingularAndPlural } from \"../../../helpers/helpers\";\nimport { useGetFieldDefaultMetaDataQuery } from \"../../../redux/api/fieldApi\";\nimport { useLazyGetModelsQuery } from \"../../../redux/api/modelApi\";\nimport { useLazyGetmodulesQuery } from \"../../../redux/api/moduleApi\";\nimport { useFormik } from \"formik\";\nimport { snakeCase } from \"lodash\";\nimport qs from \"qs\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { showToast } from \"../../../redux/features/toastSlice\";\nimport * as Yup from \"yup\";\nimport { SolidAutocomplete, SolidCheckbox, SolidInput, SolidPanel, SolidTextarea } from \"../../shad-cn-ui\";\nimport { useSolidAutocompleteField } from \"../../../hooks/useSolidAutocompleteField\";\nimport styles from \"../form/fields/solidFields.module.css\";\n\nconst cx = (...parts: Array<string | false | null | undefined | Record<string, boolean>>) => {\n const classes: string[] = [];\n parts.forEach((part) => {\n if (!part) return;\n if (typeof part === \"string\") {\n classes.push(part);\n return;\n }\n Object.entries(part).forEach(([key, value]) => {\n if (value) classes.push(key);\n });\n });\n return classes.join(\" \");\n};\n\nconst ModelMetaData = React.forwardRef(({ modelMetaData, setModelMetaData, allModelsNames, deleteModelFunction, nextTab, formikModelMetadataRef, params, formErrors, setIsDirty }: any, ref) => {\n\n // const ModelMetaData = ({ modelMetaData, setModelMetaData, deleteModelFunction, nextTab, formikModelMetadataRef }: any) => { \n\n const dispatch = useDispatch();\n\n const [triggerGetModules, { data: moduleData, isFetching: isModuleFetching, error: moduleError }] = useLazyGetmodulesQuery();\n const [triggerGetModels, { data: modelData, isFetching: isModelFetching, error: modelError }] = useLazyGetModelsQuery();\n const { data: fieldDefaultMetaData, isLoading, error, refetch } = useGetFieldDefaultMetaDataQuery(null);\n \n\n const initialValues = {\n singularName: modelMetaData ? modelMetaData?.singularName : \"\",\n pluralName: modelMetaData ? modelMetaData?.pluralName : \"\",\n displayName: modelMetaData ? modelMetaData?.displayName : \"\",\n description: modelMetaData ? modelMetaData?.description : \"\",\n dataSource: modelMetaData ? modelMetaData?.dataSource : \"\",\n dataSourceType: modelMetaData ? modelMetaData?.dataSourceType : \"\",\n tableName: modelMetaData ? modelMetaData?.tableName : null,\n moduleId: modelMetaData ? modelMetaData?.module?.id : \"\",\n module: modelMetaData ? modelMetaData?.module : \"\",\n isSystem: modelMetaData ? modelMetaData?.isSystem : false,\n enableSoftDelete: modelMetaData ? modelMetaData?.enableSoftDelete : \"\",\n enableAuditTracking: modelMetaData ? modelMetaData?.enableAuditTracking : true,\n internationalisation: modelMetaData ? modelMetaData?.internationalisation : \"\",\n draftPublishWorkflow: modelMetaData ? modelMetaData?.draftPublishWorkflow : \"\",\n isChild: modelMetaData ? modelMetaData?.isChild : \"\",\n parentModelId: modelMetaData ? modelMetaData?.parentModel?.id : \"\",\n parentModel: modelMetaData ? modelMetaData?.parentModel : \"\",\n isLegacyTable: modelMetaData ? modelMetaData?.isLegacyTable : false,\n hasExistingId: modelMetaData ? modelMetaData?.hasExistingId : false,\n };\n\n const [showTableName, setShowTableName] = useState<any>(false);\n const [showParentModel, setShowParentModel] = useState<any>(false);\n const [selectedModule, setSelectedModule] = useState<any>(null);\n\n\n useEffect(() => {\n if (modelMetaData && modelMetaData.tableName) {\n setShowTableName(true)\n }\n if (modelMetaData && modelMetaData.isChild) {\n setShowParentModel(true)\n }\n else if (modelMetaData && !modelMetaData.isChild) {\n setShowParentModel(false)\n }\n }, [modelMetaData])\n\n const validationSchema = Yup.object({\n singularName: Yup.string()\n // .matches(\n // /^[a-z]+(-[a-z]+)*$/,\n // \"Invalid format. Use lowercase letters and hyphens only\"\n // )\n .notOneOf(allModelsNames, ERROR_MESSAGES.FIELD_ALREADY_USE('Name', 'name'))\n .required(ERROR_MESSAGES.FIELD_REUQIRED('Singular Name')),\n pluralName: Yup.string()\n // .matches(\n // /^[a-z]+(-[a-z]+)*$/,\n // \"Invalid format. Use lowercase letters and hyphens only\"\n // )\n .required(ERROR_MESSAGES.FIELD_REUQIRED('Plural Name')),\n // tableName: Yup.string().required().matches(/^[a-z0-9_]+$/, ERROR_MESSAGES.SNAKE_CASE('Tabale')),\n displayName: Yup.string().required(ERROR_MESSAGES.FIELD_REUQIRED(\"Display Name\")),\n description: Yup.string().required(ERROR_MESSAGES.FIELD_REUQIRED(\"Description Name\")),\n dataSource: Yup.string().required(ERROR_MESSAGES.FIELD_REUQIRED(\"Data Source\")),\n dataSourceType: Yup.string().required(ERROR_MESSAGES.FIELD_REUQIRED(\"Data Source Type\")),\n moduleId: Yup.number().required(ERROR_MESSAGES.FIELD_REUQIRED(\"Module Id\")),\n module: Yup.object().required(ERROR_MESSAGES.FIELD_REUQIRED(\"Module\")),\n isSystem: Yup.boolean(),\n enableSoftDelete: Yup.boolean(),\n enableAuditTracking: Yup.boolean(),\n internationalisation: Yup.boolean(),\n draftPublishWorkflow: Yup.boolean(),\n isChild: Yup.boolean(),\n parentModelId: Yup.number().when(\"isChild\", (isChild: any, schema) => {\n if (isChild.length > 0 && isChild[0] == true) {\n return schema.required(ERROR_MESSAGES.FIELD_REUQIRED('Parent Model Id'))\n } else {\n return schema.notRequired().nullable();\n }\n }),\n parentModel: Yup.object().when(\"isChild\", (isChild: any, schema) => {\n if (isChild.length > 0 && isChild[0] == true) {\n return schema.required(ERROR_MESSAGES.FIELD_REUQIRED('Parent Model'))\n } else {\n return schema.notRequired().nullable();\n }\n }),\n isLegacyTable: Yup.boolean(),\n hasExistingId: Yup.boolean(),\n });\n\n\n\n const isFormFieldValid = (formik: any, fieldName: string) =>\n formik.touched[fieldName] && formik.errors[fieldName];\n\n const getFieldErrorMessage = (fieldName: string, fallbackField?: string) => {\n const errors = formik.errors as Record<string, any>;\n const message =\n errors[fieldName] ??\n (fallbackField ? errors[fallbackField] : undefined) ??\n formErrors[fieldName] ??\n (fallbackField ? formErrors[fallbackField] : undefined);\n return message;\n };\n\n const fieldHasError = (fieldName: string, fallbackField?: string) => {\n return Boolean(\n isFormFieldValid(formik, fieldName) ||\n (fallbackField && isFormFieldValid(formik, fallbackField)) ||\n formErrors[fieldName] ||\n (fallbackField && formErrors[fallbackField])\n );\n };\n\n const renderFieldError = (fieldName: string, fallbackField?: string) => {\n if (!fieldHasError(fieldName, fallbackField)) {\n return null;\n }\n\n const message = getFieldErrorMessage(fieldName, fallbackField);\n\n if (!message) {\n return null;\n }\n\n const errorText = Array.isArray(message) ? message.join(\", \") : String(message);\n return <p className={styles.fieldError}>{errorText}</p>;\n };\n\n const formik = useFormik({\n initialValues,\n validationSchema,\n validateOnChange: true, // This ensures validation runs when a field value is changed\n enableReinitialize: true,\n innerRef: formikModelMetadataRef,\n onSubmit: async (values) => {\n const tableName = generateTableName(values.module.displayName, values.singularName);\n\n try {\n const modelData = {\n ...modelMetaData,\n singularName: values.singularName,\n pluralName: values.pluralName,\n displayName: values.displayName,\n description: values.description,\n dataSource: values.dataSource,\n dataSourceType: values.dataSourceType,\n tableName: values?.tableName || tableName,\n moduleId: values.moduleId,\n module: values.module,\n isSystem: values.isSystem ? values.isSystem === true : '',\n enableSoftDelete: values.enableSoftDelete === true ? true : '',\n enableAuditTracking: values.enableAuditTracking === true ? true : '',\n internationalisation: values.internationalisation === true ? true : '',\n draftPublishWorkflow: values.draftPublishWorkflow === true ? true : '',\n isChild: values.isChild === true ? true : '',\n ...(values.isChild == true && {\n parentModelId: values.parentModelId,\n parentModel: values.parentModel,\n }),\n isLegacyTable: values.isLegacyTable === true ? true : false,\n hasExistingId: values.hasExistingId === true ? true : false,\n \n };\n setModelMetaData(modelData);\n nextTab()\n\n } catch (err) {\n console.error(ERROR_MESSAGES.CREATE_MODEL, err);\n }\n },\n });\n\n function generateTableName(moduleSlug: string, modelName: string): string {\n const snakeCaseModelName = snakeCase(modelName);\n const sankeCaseModuleName = snakeCase(moduleSlug);\n return `${sankeCaseModuleName}_${snakeCaseModelName}`;\n }\n\n const showError = async () => {\n const errors = await formik.validateForm(); // Trigger validation and get the updated errors\n const errorMessages = Object.values(errors);\n if (errorMessages.length > 0) {\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.SEND_REPORT, detail: errorMessages.map(String).join(', '), life: 3000 }));\n }\n };\n\n\n const searchModule = async (event: any) => {\n try {\n const query = event.query;\n const queryData = {\n limit: 10,\n offset: 0,\n filters: {\n name: {\n $containsi: query,\n },\n },\n };\n\n const queryString = qs.stringify(queryData, {\n encodeValuesOnly: true,\n });\n\n const result = await triggerGetModules(queryString).unwrap();\n\n if (result && result.records) {\n const updatedSuggestion = [...result.records];\n return updatedSuggestion\n } else {\n return []\n }\n } catch (error) {\n return []\n }\n };\n\n\n const searchModel = async (event: any) => {\n try {\n const query = event.query;\n const queryData = {\n limit: 10,\n offset: 0,\n filters: {\n singularName: {\n $containsi: query,\n },\n },\n };\n\n // Add module filter dynamically\n if (selectedModule?.name) {\n (queryData.filters as any)[\"module\"] = {\n name: { $containsi: selectedModule.name },\n };\n }\n\n\n const queryString = qs.stringify(queryData, {\n encodeValuesOnly: true,\n });\n\n const result = await triggerGetModels(queryString).unwrap();\n\n if (result && result.records) {\n const updatedSuggestion = [...result.records];\n return updatedSuggestion\n } else {\n return []\n }\n } catch (error) {\n return []\n }\n };\n\n\n const serachDataSource = async (event: any) => {\n const query = event.query;\n try {\n const filterredData: any = fieldDefaultMetaData.data.dataSource.filter((t: any) => t.name.toLowerCase().startsWith(query.toLowerCase()));\n const transformedData = filterredData.map((e: any) => ({ label: e.name, value: e.name, type: e.type }));\n return transformedData\n } catch (error) {\n console.error(ERROR_MESSAGES.FETCHING_ITEMS, error);\n return []\n }\n };\n\n\n const serachDataSourceType = async (event: any) => {\n const query = event.query;\n try {\n\n const filterredData: any = fieldDefaultMetaData.data.dataSource.filter((t: any) => t.type.toLowerCase().startsWith(query.toLowerCase()));\n const transformedData = filterredData.map((e: any) => ({ label: e.type, value: e.type }))\n return transformedData;\n } catch (error) {\n console.error(ERROR_MESSAGES.FETCHING_ITEMS, error);\n return [];\n\n }\n };\n\n\n // useEffect(() => {\n // if (modelMetaData) {\n // setModelMetaData(modelMetaData.parentCategoryId);\n\n // // formik.setFieldValue(\"parentCategoryId\", modelMetaData.parentCategoryId);\n // }\n // }, [modelMetaData])\n\n\n // Set the formik reference to the formik instance\n // Set the formik reference to the formik instance\n useEffect(() => {\n if (formikModelMetadataRef) {\n formikModelMetadataRef.current = formik; // Assign the formik instance to the ref\n }\n }, [formik, formikModelMetadataRef]);\n\n\n const renderCount = useRef(0);\n\n useEffect(() => {\n renderCount.current += 1; // Increment count on every render\n });\n\n\n useEffect(() => {\n formik.validateForm();\n setModelMetaData(formik.values);\n\n }, [formik.values])\n\n useEffect(() => {\n if (formik.dirty) {\n setIsDirty(true);\n }\n }, [formik.dirty]);\n\n const moduleField = useSolidAutocompleteField({\n formik,\n fieldName: \"module\",\n fieldNameId: \"moduleId\",\n labelKey: \"displayName\",\n valueKey: \"id\",\n searchData: searchModule,\n existingData: formik.values.module,\n relationField: true,\n additionalAction: (e: any) => setSelectedModule(e.value),\n });\n\n const dataSourceField = useSolidAutocompleteField({\n formik,\n fieldName: \"dataSource\",\n labelKey: \"label\",\n valueKey: \"value\",\n searchData: serachDataSource,\n existingData: formik.values.dataSource,\n additionalAction: (e: any) => formik.setFieldValue(\"dataSourceType\", e.target.value.type),\n });\n\n const parentModelField = useSolidAutocompleteField({\n formik,\n fieldName: \"parentModel\",\n fieldNameId: \"parentModelId\",\n labelKey: \"displayName\",\n valueKey: \"id\",\n searchData: searchModel,\n existingData: formik.values.parentModel,\n relationField: true,\n });\n\n return (\n\n <>\n <form onSubmit={formik.handleSubmit}>\n <div className=\"\">\n <div className=\"grid formgrid\">\n <div className=\"field col-12 lg:col-6 lg:pr-3\">\n <SolidPanel header={\"Basic Info\"} className=\"solid-column-panel\">\n <div className={styles.fieldWrapper}>\n <label htmlFor=\"moduleId\" className={styles.fieldLabel}>\n Module\n </label>\n <div\n className={cx(\n \"solid-standard-autocomplete w-full\",\n fieldHasError(\"module\", \"moduleId\") && styles.fieldInvalidControl\n )}\n >\n <SolidAutocomplete\n disabled={params.id !== \"new\"}\n value={moduleField.selectedItem}\n suggestions={moduleField.filteredItems}\n completeMethod={moduleField.searchItems}\n onChange={moduleField.handleChange}\n dropdown\n field=\"displayName\"\n className=\"w-full\"\n />\n </div>\n {renderFieldError(\"module\", \"moduleId\")}\n </div>\n\n <div className={styles.fieldWrapper}>\n <label htmlFor=\"dataSource\" className={styles.fieldLabel}>\n Data Source\n </label>\n <div\n className={cx(\n \"solid-standard-autocomplete w-full\",\n fieldHasError(\"dataSource\") && styles.fieldInvalidControl\n )}\n >\n <SolidAutocomplete\n disabled={params.id !== \"new\"}\n value={dataSourceField.selectedItem}\n suggestions={dataSourceField.filteredItems}\n completeMethod={dataSourceField.searchItems}\n onChange={dataSourceField.handleChange}\n dropdown\n field=\"label\"\n className=\"w-full\"\n />\n </div>\n {formik.values.dataSourceType && (\n <p className=\"form-field-label text-sm\">\n Your datasource will connect to a {formik.values.dataSourceType} database\n </p>\n )}\n {renderFieldError(\"dataSource\")}\n </div>\n </SolidPanel>\n\n <SolidPanel header={\"Configurations\"} className=\"solid-column-panel mt-3 mb-3 lg:mt-5\">\n <div className=\"mt-2\">\n <SolidCheckbox\n name=\"enableSoftDelete\"\n disabled={params.id !== \"new\"}\n checked={!!formik.values.enableSoftDelete}\n onChange={(event) => {\n formik.setFieldValue(\"enableSoftDelete\", event.currentTarget.checked);\n }}\n label=\"Enable Soft Delete\"\n />\n {params.id !== \"new\" && (\n <p className=\"form-field-label mt-1 text-sm\">\n Soft-delete can only be set during initial creation to maintain data integrity\n </p>\n )}\n {renderFieldError(\"enableSoftDelete\")}\n </div>\n\n <div className=\"mt-3\">\n <SolidCheckbox\n name=\"isChild\"\n disabled={params.id !== \"new\"}\n checked={!!formik.values.isChild}\n onChange={(event) => {\n formik.setFieldValue(\"isChild\", event.currentTarget.checked);\n }}\n label=\"Is Child\"\n />\n {params.id !== \"new\" && (\n <p className=\"form-field-label mt-1 text-sm\">\n Is Current Model child of another Model\n </p>\n )}\n {renderFieldError(\"isChild\")}\n </div>\n\n {showParentModel && (\n <div className={styles.fieldWrapper}>\n <label htmlFor=\"parentModelId\" className={styles.fieldLabel}>\n Parent Model\n </label>\n <div\n className={cx(\n \"solid-standard-autocomplete w-full\",\n fieldHasError(\"parentModel\", \"parentModelId\") && styles.fieldInvalidControl\n )}\n >\n <SolidAutocomplete\n disabled={params.id !== \"new\"}\n value={parentModelField.selectedItem}\n suggestions={parentModelField.filteredItems}\n completeMethod={parentModelField.searchItems}\n onChange={parentModelField.handleChange}\n dropdown\n field=\"displayName\"\n className=\"w-full\"\n />\n </div>\n {renderFieldError(\"parentModel\", \"parentModelId\")}\n </div>\n )}\n\n <div className=\"mt-3\">\n <SolidCheckbox\n name=\"enableAuditTracking\"\n checked={!!formik.values.enableAuditTracking}\n onChange={(event) => {\n formik.setFieldValue(\"enableAuditTracking\", event.currentTarget.checked);\n }}\n label=\"Enable Audit Tracking\"\n />\n {renderFieldError(\"enableAuditTracking\")}\n </div>\n\n <div className=\"mt-3\">\n <SolidCheckbox\n name=\"internationalisation\"\n checked={!!formik.values.internationalisation}\n onChange={(event) => {\n formik.setFieldValue(\"internationalisation\", event.currentTarget.checked);\n }}\n label=\"Is Internationalisation Enabled\"\n />\n </div>\n\n <div className=\"mt-3\">\n <SolidCheckbox\n name=\"draftPublishWorkflow\"\n checked={!!formik.values.draftPublishWorkflow}\n onChange={(event) => {\n formik.setFieldValue(\"draftPublishWorkflow\", event.currentTarget.checked);\n }}\n label=\"Draft/Publish Workflow\"\n />\n </div>\n\n <div className=\"mt-3\">\n <SolidCheckbox\n name=\"isLegacyTable\"\n checked={!!formik.values.isLegacyTable}\n onChange={(event) => {\n const isChecked = event.currentTarget.checked;\n formik.setFieldValue(\"isLegacyTable\", isChecked);\n if (!isChecked) {\n formik.setFieldValue(\"hasExistingId\", false);\n }\n }}\n label=\"Is Legacy Table\"\n />\n </div>\n\n {formik.values.isLegacyTable && (\n <>\n <div className=\"ml-4 mt-2\">\n <SolidCheckbox\n name=\"hasExistingId\"\n checked={!!formik.values.hasExistingId}\n onChange={(event) => {\n formik.setFieldValue(\"hasExistingId\", event.currentTarget.checked);\n }}\n label=\"Has existing Id\"\n />\n </div>\n <p className=\"form-field-label mt-2 text-sm\">\n Note: Legacy tables require at least one field marked as Primary Key during model creation\n </p>\n </>\n )}\n </SolidPanel>\n </div>\n <div className=\"field col-12 lg:col-6 lg:pl-3\">\n <SolidPanel header={\"Basic Settings\"} className=\"solid-column-panel\">\n <div className={styles.fieldWrapper}>\n <label htmlFor=\"displayName\" className={styles.fieldLabel}>\n Display Name\n </label>\n <SolidInput\n type=\"text\"\n id=\"displayName\"\n name=\"displayName\"\n className={styles.fieldInput}\n value={formik.values.displayName}\n onChange={(e) => {\n formik.handleChange(e);\n const { toCamelCase, toSnakeCase, toPluralCamelCase } = getSingularAndPlural(e.target.value);\n if (params.id === \"new\") {\n formik.setFieldValue(\"singularName\", toCamelCase);\n formik.setFieldValue(\"pluralName\", toPluralCamelCase);\n formik.setFieldValue(\"tableName\", toSnakeCase);\n }\n }}\n />\n {renderFieldError(\"displayName\")}\n </div>\n\n <div className={styles.fieldWrapper}>\n <label htmlFor=\"singularName\" className={styles.fieldLabel}>\n Singular Name\n </label>\n <SolidInput\n type=\"text\"\n id=\"singularName\"\n name=\"singularName\"\n className={styles.fieldInput}\n value={formik.values.singularName}\n disabled\n onChange={formik.handleChange}\n />\n {renderFieldError(\"singularName\")}\n </div>\n\n <div className={styles.fieldWrapper}>\n <label htmlFor=\"pluralName\" className={styles.fieldLabel}>\n Plural Name\n </label>\n <SolidInput\n type=\"text\"\n id=\"pluralName\"\n name=\"pluralName\"\n className={styles.fieldInput}\n value={formik.values.pluralName}\n disabled\n onChange={formik.handleChange}\n />\n {renderFieldError(\"pluralName\")}\n </div>\n\n <div className={styles.fieldWrapper}>\n <label htmlFor=\"tableName\" className={styles.fieldLabel}>\n Table Name\n </label>\n <SolidInput\n type=\"text\"\n id=\"tableName\"\n name=\"tableName\"\n className={styles.fieldInput}\n value={formik.values.tableName}\n disabled={params.id !== \"new\"}\n onChange={formik.handleChange}\n />\n {renderFieldError(\"tableName\")}\n </div>\n\n <div className={styles.fieldWrapper}>\n <label htmlFor=\"description\" className={styles.fieldLabel}>\n Description\n </label>\n <SolidTextarea\n id=\"description\"\n name=\"description\"\n className={styles.fieldTextarea}\n value={formik.values.description}\n rows={5}\n onChange={formik.handleChange}\n />\n {renderFieldError(\"description\")}\n </div>\n </SolidPanel>\n </div>\n\n {/* <div className=\"md:col-6 sm:col-12\">\n <div className=\"field\">\n <label htmlFor=\"pluralName\" className=\"form-label form-field-label\">\n Plural Name\n </label>\n <InputText\n type=\"text\"\n id=\"pluralName\"\n name=\"pluralName\"\n onChange={formik.handleChange}\n value={formik.values.pluralName}\n className={cx(\"p-inputtext-sm w-full small-input\", {\n \"p-invalid\": isFormFieldValid(formik, \"pluralName\"),\n })}\n />\n {isFormFieldValid(formik, \"pluralName\") && (\n <Message severity=\"error\" text={formik?.errors?.pluralName?.toString()} />\n )}\n </div>\n </div> */}\n\n\n {/* <div className=\"md:col-6 sm:col-12\">\n <div className=\"field form-dropdown-select\">\n <label htmlFor=\"dataSourceType\" className=\"form-labe form-field-label\">\n Data Source\n </label>\n <Dropdown\n id=\"dataSourceType\"\n name=\"dataSourceType\"\n value={formik.values.dataSourceType}\n options={dataSourceTypes}\n onChange={(e) => {\n formik.setFieldValue(\"dataSourceType\", e.value);\n // if (e.value == \"mariadb\") {\n // formik.setFieldValue(\"dataSourceType\", \"mongodb\");\n // }\n // else {\n // formik.setFieldValue(\"dataSourceType\", \"rdbms\");\n // }\n }\n }\n placeholder=\"Select a Data Source\"\n className={cx(\"p-inputtext-sm w-full\", {\n \"p-invalid\": isFormFieldValid(formik, \"dataSource\"),\n })}\n />\n {isFormFieldValid(formik, \"dataSource\") && (\n <Message severity=\"error\" text={formik?.errors?.dataSource?.toString()} />\n )}\n </div>\n </div> */}\n\n\n </div>\n </div>\n </form>\n </>\n );\n});\n\nexport default ModelMetaData;\n"]}
@@ -60,20 +60,7 @@ const ModelMetaData = React.forwardRef(({ modelMetaData, setModelMetaData, allMo
60
60
  parentModelId: modelMetaData ? modelMetaData?.parentModel?.id : "",
61
61
  parentModel: modelMetaData ? modelMetaData?.parentModel : "",
62
62
  isLegacyTable: modelMetaData ? modelMetaData?.isLegacyTable : false,
63
- isLegacyTableWithId: modelMetaData ? modelMetaData?.isLegacyTableWithId : false,
64
- // isLegacyTable: modelMetaData
65
- // ? (modelMetaData.isLegacyTable && modelMetaData.isLegacyTableWithId && params.id !== 'new')
66
- // ? true
67
- // : modelMetaData.isLegacyTableWithId
68
- // ? true
69
- // : false
70
- // : false,
71
-
72
- // isLegacyTableWithId: modelMetaData
73
- // ? (modelMetaData.isLegacyTable && modelMetaData.isLegacyTableWithId && params.id !== 'new')
74
- // ? true
75
- // : false
76
- // : false,
63
+ hasExistingId: modelMetaData ? modelMetaData?.hasExistingId : false,
77
64
  };
78
65
 
79
66
  const [showTableName, setShowTableName] = useState<any>(false);
@@ -135,7 +122,7 @@ const ModelMetaData = React.forwardRef(({ modelMetaData, setModelMetaData, allMo
135
122
  }
136
123
  }),
137
124
  isLegacyTable: Yup.boolean(),
138
- isLegacyTableWithId: Yup.boolean(),
125
+ hasExistingId: Yup.boolean(),
139
126
  });
140
127
 
141
128
 
@@ -208,8 +195,8 @@ const ModelMetaData = React.forwardRef(({ modelMetaData, setModelMetaData, allMo
208
195
  parentModelId: values.parentModelId,
209
196
  parentModel: values.parentModel,
210
197
  }),
211
- isLegacyTable:values.isLegacyTable === true ? true : false,
212
- isLegacyTableWithId:values.isLegacyTableWithId === true ? true :false
198
+ isLegacyTable: values.isLegacyTable === true ? true : false,
199
+ hasExistingId: values.hasExistingId === true ? true : false,
213
200
 
214
201
  };
215
202
  setModelMetaData(modelData);
@@ -571,7 +558,7 @@ const ModelMetaData = React.forwardRef(({ modelMetaData, setModelMetaData, allMo
571
558
  const isChecked = event.currentTarget.checked;
572
559
  formik.setFieldValue("isLegacyTable", isChecked);
573
560
  if (!isChecked) {
574
- formik.setFieldValue("isLegacyTableWithId", false);
561
+ formik.setFieldValue("hasExistingId", false);
575
562
  }
576
563
  }}
577
564
  label="Is Legacy Table"
@@ -582,10 +569,10 @@ const ModelMetaData = React.forwardRef(({ modelMetaData, setModelMetaData, allMo
582
569
  <>
583
570
  <div className="ml-4 mt-2">
584
571
  <SolidCheckbox
585
- name="isLegacyTableWithId"
586
- checked={!!formik.values.isLegacyTableWithId}
572
+ name="hasExistingId"
573
+ checked={!!formik.values.hasExistingId}
587
574
  onChange={(event) => {
588
- formik.setFieldValue("isLegacyTableWithId", event.currentTarget.checked);
575
+ formik.setFieldValue("hasExistingId", event.currentTarget.checked);
589
576
  }}
590
577
  label="Has existing Id"
591
578
  />
@@ -1 +1 @@
1
- {"version":3,"file":"AdminTopHeader.d.ts","sourceRoot":"","sources":["../../../src/components/layout/AdminTopHeader.tsx"],"names":[],"mappings":"AA0BA,eAAO,MAAM,cAAc,+CAmL1B,CAAC"}
1
+ {"version":3,"file":"AdminTopHeader.d.ts","sourceRoot":"","sources":["../../../src/components/layout/AdminTopHeader.tsx"],"names":[],"mappings":"AA0BA,eAAO,MAAM,cAAc,+CAoL1B,CAAC"}
@@ -103,6 +103,6 @@ export var AdminTopHeader = function () {
103
103
  }
104
104
  }
105
105
  };
106
- return (_jsx("header", { className: "solid-admin-header", children: _jsxs("div", { className: "solid-admin-header-inner", children: [_jsx("button", { type: "button", className: "solid-admin-sidebar-trigger", onClick: triggerSidebar, "aria-label": "Toggle sidebar", children: _jsxs("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: [_jsx("rect", { x: "1.5", y: "2", width: "13", height: "12", rx: "2", stroke: "currentColor" }), _jsx("path", { d: "M5.5 2V14", stroke: "currentColor" }), _jsx("rect", { x: "8", y: "5.25", width: "4.5", height: "5.5", rx: "0.9", stroke: "currentColor" })] }) }), _jsx("div", { className: "solid-admin-header-sep" }), _jsx("nav", { className: "solid-admin-breadcrumbs", "aria-label": "Breadcrumb", children: crumbs.map(function (crumb, index) { return (_jsxs("span", { className: "solid-admin-crumb", children: [index > 0 && _jsx("span", { className: "solid-admin-crumb-sep", children: "\u203A" }), index === 1 && showBack ? (_jsx("button", { type: "button", className: "solid-admin-crumb-link", onClick: function () { return handleBreadcrumbClick(index); }, style: { background: "none", border: "none", cursor: "pointer", color: "inherit", textDecoration: "underline" }, children: crumb })) : (_jsx("span", { children: crumb }))] }, "".concat(crumb, "-").concat(index))); }) }), _jsxs("div", { className: "solid-admin-header-actions", children: [isAdmin && isDev && !isStudioMode && (_jsxs("button", { type: "button", className: "solid-studio-trigger-btn", onClick: function () { dispatch(enterStudioMode()); router.push("/studio"); }, title: "Enter SolidX Studio", children: [_jsx(StudioSparkleIcon, {}), "Studio"] })), _jsxs("button", { type: "button", className: "solid-admin-theme-toggle", onClick: toggleThemeMode, "aria-label": "Toggle theme", title: "Toggle theme", children: [_jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: [_jsx("path", { d: "M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M12 3l0 18", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M12 9l4.65 -4.65", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M12 14.3l7.37 -7.37", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M12 19.6l8.85 -8.85", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" })] }), _jsx("span", { className: "solid-sr-only", children: "Toggle theme" })] }), showBack && (_jsx("button", { type: "button", className: "solid-admin-back-btn", onClick: function () { return router.back(); }, "aria-label": "Go back", children: "Back" }))] })] }) }));
106
+ return (_jsx("header", { className: "solid-admin-header", children: _jsxs("div", { className: "solid-admin-header-inner", children: [_jsx("button", { type: "button", className: "solid-admin-sidebar-trigger", onClick: triggerSidebar, "aria-label": "Toggle sidebar", children: _jsxs("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: [_jsx("rect", { x: "1.5", y: "2", width: "13", height: "12", rx: "2", stroke: "currentColor" }), _jsx("path", { d: "M5.5 2V14", stroke: "currentColor" }), _jsx("rect", { x: "8", y: "5.25", width: "4.5", height: "5.5", rx: "0.9", stroke: "currentColor" })] }) }), _jsx("div", { className: "solid-admin-header-sep" }), _jsx("nav", { className: "solid-admin-breadcrumbs", "aria-label": "Breadcrumb", children: crumbs.map(function (crumb, index) { return (_jsxs("span", { className: "solid-admin-crumb", children: [index > 0 && _jsx("span", { className: "solid-admin-crumb-sep", children: "\u203A" }), index === 1 && showBack ? (_jsx("button", { type: "button", className: "solid-admin-crumb-link", onClick: function () { return handleBreadcrumbClick(index); }, style: { background: "none", border: "none", cursor: "pointer", color: "inherit", textDecoration: "underline" }, children: crumb })) : (_jsx("span", { children: crumb }))] }, "".concat(crumb, "-").concat(index))); }) }), _jsxs("div", { className: "solid-admin-header-actions", children: [isAdmin && isDev && !isStudioMode && (_jsxs("button", { type: "button", className: "solid-studio-trigger-btn", onClick: function () { dispatch(enterStudioMode()); router.push("/studio"); }, title: "Enter SolidX Studio", "aria-label": "Enter SolidX Studio", children: [_jsx(StudioSparkleIcon, {}), _jsx("span", { className: "solid-studio-trigger-label", children: "Studio" })] })), _jsxs("button", { type: "button", className: "solid-admin-theme-toggle", onClick: toggleThemeMode, "aria-label": "Toggle theme", title: "Toggle theme", children: [_jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: [_jsx("path", { d: "M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M12 3l0 18", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M12 9l4.65 -4.65", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M12 14.3l7.37 -7.37", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M12 19.6l8.85 -8.85", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" })] }), _jsx("span", { className: "solid-sr-only", children: "Toggle theme" })] }), showBack && (_jsx("button", { type: "button", className: "solid-admin-back-btn", onClick: function () { return router.back(); }, "aria-label": "Go back", children: "Back" }))] })] }) }));
107
107
  };
108
108
  //# sourceMappingURL=AdminTopHeader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AdminTopHeader.js","sourceRoot":"","sources":["../../../src/components/layout/AdminTopHeader.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useContext, useMemo } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { usePathname } from \"../../hooks/usePathname\";\nimport { useSearchParams } from \"../../hooks/useSearchParams\";\nimport { useRouter } from \"../../hooks/useRouter\";\nimport { useSession } from \"../../hooks/useSession\";\nimport { useGetSolidActionByIdQuery } from \"../../redux/api/solidActionApi\";\nimport { LayoutContext } from \"./context/layoutcontext\";\nimport { enterStudioMode } from \"../../redux/features/solidStudioSlice\";\nimport { hasAnyRole } from \"../../helpers/rolesHelper\";\nimport { env } from \"../../adapters/env\";\n\nconst SIDEBAR_TOGGLE_EVENT = \"solidx:sidebar-toggle\";\n\nconst toLabel = (value: string) =>\n decodeURIComponent(value)\n .replace(/[-_]/g, \" \")\n .replace(/\\b\\w/g, (m) => m.toUpperCase());\n\nconst StudioSparkleIcon = () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M7 1v2M7 11v2M1 7h2M11 7h2M2.93 2.93l1.41 1.41M9.66 9.66l1.41 1.41M2.93 11.07l1.41-1.41M9.66 4.34l1.41-1.41\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinecap=\"round\" />\n <circle cx=\"7\" cy=\"7\" r=\"2\" stroke=\"currentColor\" strokeWidth=\"1.4\" />\n </svg>\n);\n\nexport const AdminTopHeader = () => {\n const pathname = usePathname();\n const searchParams = useSearchParams();\n const router = useRouter();\n const dispatch = useDispatch();\n const { toggleThemeMode } = useContext(LayoutContext);\n const { data: session } = useSession();\n const user = session?.user;\n const isAdmin = hasAnyRole(user?.roles, [\"Admin\"]);\n const isStudioMode = useSelector((state: any) => state.solidStudio?.isStudioMode ?? false);\n const isDev = env(\"VITE_SOLIDX_ENV\") === \"dev\";\n\n // We treat actionId as the source of truth for breadcrumb labels.\n // If present, we resolve module/model/action via action-metadata API\n // so breadcrumbs are consistent across list/form/tree/kanban pages.\n const actionId = searchParams.get(\"actionId\");\n const { data: actionResponse } = useGetSolidActionByIdQuery(actionId as string, {\n skip: !actionId,\n });\n\n const crumbs = useMemo(() => {\n // API response shapes vary by adapter layer, so normalize defensively.\n const actionData = actionResponse?.data?.data ?? actionResponse?.data ?? actionResponse;\n const moduleFromApi = actionData?.module?.displayName || actionData?.module?.name;\n const modelFromApi = actionData?.model?.displayName || actionData?.model?.name;\n const actionFromApi = actionData?.displayName || actionData?.name;\n const actionDataId = actionData?.id != null ? String(actionData.id) : null;\n const hasMatchingActionData = Boolean(actionId) && actionDataId === actionId;\n\n // Priority 1: exact business breadcrumb contract requested:\n // <module> > <model> > <action>.\n // We only trust API crumbs when they belong to the current URL's actionId.\n // This avoids stale list breadcrumbs bleeding into form routes that do not\n // carry actionId in their query string.\n if (hasMatchingActionData && (moduleFromApi || modelFromApi || actionFromApi)) {\n return [moduleFromApi, modelFromApi, actionFromApi].filter(Boolean);\n }\n\n const segments = pathname.split(\"/\").filter(Boolean);\n // Priority 2: derive from route segments when API data is unavailable.\n // This is intentionally ahead of query fallback so form pages don't\n // inherit stale list query labels after list -> form navigation.\n if (segments[0] === \"admin\" && segments[1] === \"core\") {\n const moduleName = segments[2];\n const modelName = segments[3];\n const viewName = segments[4];\n const next = [\n moduleName ? toLabel(moduleName) : null,\n modelFromApi ? decodeURIComponent(modelFromApi) : modelName ? toLabel(modelName) : null,\n viewName ? toLabel(viewName) : null,\n ].filter(Boolean) as string[];\n return next.length ? next : [\"Admin\"];\n }\n\n const menuItemName = searchParams.get(\"menuItemName\");\n const actionName = searchParams.get(\"actionName\");\n\n // Priority 3: legacy URL-query fallback for older links/pages.\n if (menuItemName || actionName) {\n return [menuItemName, actionName].filter(Boolean).map((item) => toLabel(item!));\n }\n\n return [\"Admin\"];\n }, [actionId, actionResponse, pathname, searchParams]);\n\n const showBack = /\\/admin\\/core\\/[^/]+\\/[^/]+\\/form\\/[^/]+/.test(pathname);\n\n const triggerSidebar = () => {\n window.dispatchEvent(new CustomEvent(SIDEBAR_TOGGLE_EVENT));\n };\n\n const handleBreadcrumbClick = (crumbIndex: number) => {\n // When on a form view, clicking the model name (second crumb) should navigate back to list\n // Index 1 is the model name in a breadcrumb like: Module > Model > Action\n if (crumbIndex === 1 && showBack) {\n if (typeof window !== \"undefined\") {\n // First, try to use the full stored URL (preserves all query params)\n const storedFullUrl = sessionStorage.getItem(\"fromViewUrl\");\n if (storedFullUrl) {\n router.push(storedFullUrl);\n return;\n }\n }\n \n // Fallback: construct URL from current path and stored view\n const segments = pathname.split(\"/\").filter(Boolean);\n if (segments[0] === \"admin\" && segments[1] === \"core\") {\n const moduleName = segments[2];\n const modelName = segments[3];\n const fromView = typeof window !== \"undefined\" \n ? sessionStorage.getItem(\"fromView\") || \"list\" \n : \"list\";\n router.push(`/admin/core/${moduleName}/${modelName}/${fromView}`);\n }\n }\n };\n\n return (\n <header className=\"solid-admin-header\">\n <div className=\"solid-admin-header-inner\">\n <button\n type=\"button\"\n className=\"solid-admin-sidebar-trigger\"\n onClick={triggerSidebar}\n aria-label=\"Toggle sidebar\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <rect x=\"1.5\" y=\"2\" width=\"13\" height=\"12\" rx=\"2\" stroke=\"currentColor\" />\n <path d=\"M5.5 2V14\" stroke=\"currentColor\" />\n <rect x=\"8\" y=\"5.25\" width=\"4.5\" height=\"5.5\" rx=\"0.9\" stroke=\"currentColor\" />\n </svg>\n </button>\n\n <div className=\"solid-admin-header-sep\" />\n\n <nav className=\"solid-admin-breadcrumbs\" aria-label=\"Breadcrumb\">\n {crumbs.map((crumb, index) => (\n <span key={`${crumb}-${index}`} className=\"solid-admin-crumb\">\n {index > 0 && <span className=\"solid-admin-crumb-sep\">›</span>}\n {index === 1 && showBack ? (\n <button\n type=\"button\"\n className=\"solid-admin-crumb-link\"\n onClick={() => handleBreadcrumbClick(index)}\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", color: \"inherit\", textDecoration: \"underline\" }}\n >\n {crumb}\n </button>\n ) : (\n <span>{crumb}</span>\n )}\n </span>\n ))}\n </nav>\n\n <div className=\"solid-admin-header-actions\">\n {isAdmin && isDev && !isStudioMode && (\n <button\n type=\"button\"\n className=\"solid-studio-trigger-btn\"\n onClick={() => { dispatch(enterStudioMode()); router.push(\"/studio\"); }}\n title=\"Enter SolidX Studio\"\n >\n <StudioSparkleIcon />\n Studio\n </button>\n )}\n\n <button\n type=\"button\"\n className=\"solid-admin-theme-toggle\"\n onClick={toggleThemeMode}\n aria-label=\"Toggle theme\"\n title=\"Toggle theme\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M12 3l0 18\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M12 9l4.65 -4.65\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M12 14.3l7.37 -7.37\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M12 19.6l8.85 -8.85\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n <span className=\"solid-sr-only\">Toggle theme</span>\n </button>\n\n {showBack && (\n <button\n type=\"button\"\n className=\"solid-admin-back-btn\"\n onClick={() => router.back()}\n aria-label=\"Go back\"\n >\n Back\n </button>\n )}\n </div>\n </div>\n </header>\n );\n};\n"]}
1
+ {"version":3,"file":"AdminTopHeader.js","sourceRoot":"","sources":["../../../src/components/layout/AdminTopHeader.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useContext, useMemo } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { usePathname } from \"../../hooks/usePathname\";\nimport { useSearchParams } from \"../../hooks/useSearchParams\";\nimport { useRouter } from \"../../hooks/useRouter\";\nimport { useSession } from \"../../hooks/useSession\";\nimport { useGetSolidActionByIdQuery } from \"../../redux/api/solidActionApi\";\nimport { LayoutContext } from \"./context/layoutcontext\";\nimport { enterStudioMode } from \"../../redux/features/solidStudioSlice\";\nimport { hasAnyRole } from \"../../helpers/rolesHelper\";\nimport { env } from \"../../adapters/env\";\n\nconst SIDEBAR_TOGGLE_EVENT = \"solidx:sidebar-toggle\";\n\nconst toLabel = (value: string) =>\n decodeURIComponent(value)\n .replace(/[-_]/g, \" \")\n .replace(/\\b\\w/g, (m) => m.toUpperCase());\n\nconst StudioSparkleIcon = () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M7 1v2M7 11v2M1 7h2M11 7h2M2.93 2.93l1.41 1.41M9.66 9.66l1.41 1.41M2.93 11.07l1.41-1.41M9.66 4.34l1.41-1.41\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinecap=\"round\" />\n <circle cx=\"7\" cy=\"7\" r=\"2\" stroke=\"currentColor\" strokeWidth=\"1.4\" />\n </svg>\n);\n\nexport const AdminTopHeader = () => {\n const pathname = usePathname();\n const searchParams = useSearchParams();\n const router = useRouter();\n const dispatch = useDispatch();\n const { toggleThemeMode } = useContext(LayoutContext);\n const { data: session } = useSession();\n const user = session?.user;\n const isAdmin = hasAnyRole(user?.roles, [\"Admin\"]);\n const isStudioMode = useSelector((state: any) => state.solidStudio?.isStudioMode ?? false);\n const isDev = env(\"VITE_SOLIDX_ENV\") === \"dev\";\n\n // We treat actionId as the source of truth for breadcrumb labels.\n // If present, we resolve module/model/action via action-metadata API\n // so breadcrumbs are consistent across list/form/tree/kanban pages.\n const actionId = searchParams.get(\"actionId\");\n const { data: actionResponse } = useGetSolidActionByIdQuery(actionId as string, {\n skip: !actionId,\n });\n\n const crumbs = useMemo(() => {\n // API response shapes vary by adapter layer, so normalize defensively.\n const actionData = actionResponse?.data?.data ?? actionResponse?.data ?? actionResponse;\n const moduleFromApi = actionData?.module?.displayName || actionData?.module?.name;\n const modelFromApi = actionData?.model?.displayName || actionData?.model?.name;\n const actionFromApi = actionData?.displayName || actionData?.name;\n const actionDataId = actionData?.id != null ? String(actionData.id) : null;\n const hasMatchingActionData = Boolean(actionId) && actionDataId === actionId;\n\n // Priority 1: exact business breadcrumb contract requested:\n // <module> > <model> > <action>.\n // We only trust API crumbs when they belong to the current URL's actionId.\n // This avoids stale list breadcrumbs bleeding into form routes that do not\n // carry actionId in their query string.\n if (hasMatchingActionData && (moduleFromApi || modelFromApi || actionFromApi)) {\n return [moduleFromApi, modelFromApi, actionFromApi].filter(Boolean);\n }\n\n const segments = pathname.split(\"/\").filter(Boolean);\n // Priority 2: derive from route segments when API data is unavailable.\n // This is intentionally ahead of query fallback so form pages don't\n // inherit stale list query labels after list -> form navigation.\n if (segments[0] === \"admin\" && segments[1] === \"core\") {\n const moduleName = segments[2];\n const modelName = segments[3];\n const viewName = segments[4];\n const next = [\n moduleName ? toLabel(moduleName) : null,\n modelFromApi ? decodeURIComponent(modelFromApi) : modelName ? toLabel(modelName) : null,\n viewName ? toLabel(viewName) : null,\n ].filter(Boolean) as string[];\n return next.length ? next : [\"Admin\"];\n }\n\n const menuItemName = searchParams.get(\"menuItemName\");\n const actionName = searchParams.get(\"actionName\");\n\n // Priority 3: legacy URL-query fallback for older links/pages.\n if (menuItemName || actionName) {\n return [menuItemName, actionName].filter(Boolean).map((item) => toLabel(item!));\n }\n\n return [\"Admin\"];\n }, [actionId, actionResponse, pathname, searchParams]);\n\n const showBack = /\\/admin\\/core\\/[^/]+\\/[^/]+\\/form\\/[^/]+/.test(pathname);\n\n const triggerSidebar = () => {\n window.dispatchEvent(new CustomEvent(SIDEBAR_TOGGLE_EVENT));\n };\n\n const handleBreadcrumbClick = (crumbIndex: number) => {\n // When on a form view, clicking the model name (second crumb) should navigate back to list\n // Index 1 is the model name in a breadcrumb like: Module > Model > Action\n if (crumbIndex === 1 && showBack) {\n if (typeof window !== \"undefined\") {\n // First, try to use the full stored URL (preserves all query params)\n const storedFullUrl = sessionStorage.getItem(\"fromViewUrl\");\n if (storedFullUrl) {\n router.push(storedFullUrl);\n return;\n }\n }\n \n // Fallback: construct URL from current path and stored view\n const segments = pathname.split(\"/\").filter(Boolean);\n if (segments[0] === \"admin\" && segments[1] === \"core\") {\n const moduleName = segments[2];\n const modelName = segments[3];\n const fromView = typeof window !== \"undefined\" \n ? sessionStorage.getItem(\"fromView\") || \"list\" \n : \"list\";\n router.push(`/admin/core/${moduleName}/${modelName}/${fromView}`);\n }\n }\n };\n\n return (\n <header className=\"solid-admin-header\">\n <div className=\"solid-admin-header-inner\">\n <button\n type=\"button\"\n className=\"solid-admin-sidebar-trigger\"\n onClick={triggerSidebar}\n aria-label=\"Toggle sidebar\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <rect x=\"1.5\" y=\"2\" width=\"13\" height=\"12\" rx=\"2\" stroke=\"currentColor\" />\n <path d=\"M5.5 2V14\" stroke=\"currentColor\" />\n <rect x=\"8\" y=\"5.25\" width=\"4.5\" height=\"5.5\" rx=\"0.9\" stroke=\"currentColor\" />\n </svg>\n </button>\n\n <div className=\"solid-admin-header-sep\" />\n\n <nav className=\"solid-admin-breadcrumbs\" aria-label=\"Breadcrumb\">\n {crumbs.map((crumb, index) => (\n <span key={`${crumb}-${index}`} className=\"solid-admin-crumb\">\n {index > 0 && <span className=\"solid-admin-crumb-sep\">›</span>}\n {index === 1 && showBack ? (\n <button\n type=\"button\"\n className=\"solid-admin-crumb-link\"\n onClick={() => handleBreadcrumbClick(index)}\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", color: \"inherit\", textDecoration: \"underline\" }}\n >\n {crumb}\n </button>\n ) : (\n <span>{crumb}</span>\n )}\n </span>\n ))}\n </nav>\n\n <div className=\"solid-admin-header-actions\">\n {isAdmin && isDev && !isStudioMode && (\n <button\n type=\"button\"\n className=\"solid-studio-trigger-btn\"\n onClick={() => { dispatch(enterStudioMode()); router.push(\"/studio\"); }}\n title=\"Enter SolidX Studio\"\n aria-label=\"Enter SolidX Studio\"\n >\n <StudioSparkleIcon />\n <span className=\"solid-studio-trigger-label\">Studio</span>\n </button>\n )}\n\n <button\n type=\"button\"\n className=\"solid-admin-theme-toggle\"\n onClick={toggleThemeMode}\n aria-label=\"Toggle theme\"\n title=\"Toggle theme\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M12 3l0 18\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M12 9l4.65 -4.65\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M12 14.3l7.37 -7.37\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M12 19.6l8.85 -8.85\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n <span className=\"solid-sr-only\">Toggle theme</span>\n </button>\n\n {showBack && (\n <button\n type=\"button\"\n className=\"solid-admin-back-btn\"\n onClick={() => router.back()}\n aria-label=\"Go back\"\n >\n Back\n </button>\n )}\n </div>\n </div>\n </header>\n );\n};\n"]}
@@ -166,9 +166,10 @@ export const AdminTopHeader = () => {
166
166
  className="solid-studio-trigger-btn"
167
167
  onClick={() => { dispatch(enterStudioMode()); router.push("/studio"); }}
168
168
  title="Enter SolidX Studio"
169
+ aria-label="Enter SolidX Studio"
169
170
  >
170
171
  <StudioSparkleIcon />
171
- Studio
172
+ <span className="solid-studio-trigger-label">Studio</span>
172
173
  </button>
173
174
  )}
174
175
 
@@ -1 +1 @@
1
- {"version":3,"file":"SolidAutocomplete.d.ts","sourceRoot":"","sources":["../../../src/components/shad-cn-ui/SolidAutocomplete.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgE,MAAM,OAAO,CAAC;AAIrF,KAAK,sBAAsB,GAAG;IAC5B,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC;IACpB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,GAAG,CAAA;KAAE,KAAK,IAAI,CAAC;IAC3C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,GAAG,CAAA;KAAE,KAAK,IAAI,CAAC;IAC3C,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,GAAG,CAAA;KAAE,KAAK,IAAI,CAAC;IAC7C,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,sBAAsB,CAAC,EAAE,GAAG,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAiBF,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,WAAgB,EAChB,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,EAAE,EACF,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,KAAe,EACf,WAAW,EACX,SAAS,EACT,cAAc,EACd,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,eAAmB,EACnB,KAAK,EACL,MAAM,EACN,MAAM,GACP,EAAE,sBAAsB,2CA2WxB"}
1
+ {"version":3,"file":"SolidAutocomplete.d.ts","sourceRoot":"","sources":["../../../src/components/shad-cn-ui/SolidAutocomplete.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgE,MAAM,OAAO,CAAC;AAIrF,KAAK,sBAAsB,GAAG;IAC5B,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC;IACpB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,GAAG,CAAA;KAAE,KAAK,IAAI,CAAC;IAC3C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,GAAG,CAAA;KAAE,KAAK,IAAI,CAAC;IAC3C,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,GAAG,CAAA;KAAE,KAAK,IAAI,CAAC;IAC7C,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,sBAAsB,CAAC,EAAE,GAAG,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAiBF,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,WAAgB,EAChB,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,EAAE,EACF,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,KAAe,EACf,WAAW,EACX,SAAS,EACT,cAAc,EACd,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,eAAmB,EACnB,KAAK,EACL,MAAM,EACN,MAAM,GACP,EAAE,sBAAsB,2CAwXxB"}
@@ -123,6 +123,21 @@ export function SolidAutocomplete(_a) {
123
123
  label: getDisplayValue(item, field),
124
124
  }); });
125
125
  }, [suggestions, field]);
126
+ useEffect(function () {
127
+ if (!portal || !open)
128
+ return;
129
+ var el = panelRef.current;
130
+ if (!el)
131
+ return;
132
+ var handleWheel = function (event) {
133
+ if (el.scrollHeight <= el.clientHeight)
134
+ return;
135
+ event.preventDefault();
136
+ el.scrollTop += event.deltaY;
137
+ };
138
+ el.addEventListener("wheel", handleWheel, { passive: false });
139
+ return function () { return el.removeEventListener("wheel", handleWheel); };
140
+ }, [portal, open, normalizedSuggestions.length]);
126
141
  var selectedItems = useMemo(function () {
127
142
  var isRenderable = function (item) {
128
143
  if (item === null || item === undefined || item === "")