@solidxai/core-ui 0.1.9-beta.13 → 0.1.9-beta.14

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 (78) hide show
  1. package/dist/components/common/SettingsComponent.js +1 -1
  2. package/dist/components/common/SettingsComponent.js.map +1 -1
  3. package/dist/components/common/SettingsComponent.module.css +17 -0
  4. package/dist/components/common/SettingsComponent.tsx +1 -1
  5. package/dist/components/core/chatter/SolidChatter.d.ts.map +1 -1
  6. package/dist/components/core/chatter/SolidChatter.js +24 -11
  7. package/dist/components/core/chatter/SolidChatter.js.map +1 -1
  8. package/dist/components/core/chatter/SolidChatter.tsx +20 -6
  9. package/dist/components/core/chatter/SolidChatterHeader.d.ts.map +1 -1
  10. package/dist/components/core/chatter/SolidChatterHeader.js +1 -1
  11. package/dist/components/core/chatter/SolidChatterHeader.js.map +1 -1
  12. package/dist/components/core/chatter/SolidChatterHeader.tsx +4 -0
  13. package/dist/components/core/chatter/SolidChatterMessageBox.d.ts +1 -0
  14. package/dist/components/core/chatter/SolidChatterMessageBox.d.ts.map +1 -1
  15. package/dist/components/core/chatter/SolidChatterMessageBox.js +150 -11
  16. package/dist/components/core/chatter/SolidChatterMessageBox.js.map +1 -1
  17. package/dist/components/core/chatter/SolidChatterMessageBox.tsx +252 -11
  18. package/dist/components/core/chatter/SolidMessageComposer.js +2 -2
  19. package/dist/components/core/chatter/SolidMessageComposer.js.map +1 -1
  20. package/dist/components/core/chatter/SolidMessageComposer.tsx +2 -2
  21. package/dist/components/core/chatter/chatter.module.css +1 -1
  22. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  23. package/dist/components/core/common/SolidGlobalSearchElement.js +13 -2
  24. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  25. package/dist/components/core/common/SolidGlobalSearchElement.tsx +11 -2
  26. package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
  27. package/dist/components/core/form/SolidFormView.js +3 -0
  28. package/dist/components/core/form/SolidFormView.js.map +1 -1
  29. package/dist/components/core/form/SolidFormView.tsx +3 -0
  30. package/dist/components/core/form/field-quality-check-fixes.md +201 -0
  31. package/dist/components/core/form/fields/SolidLongTextField.d.ts +0 -1
  32. package/dist/components/core/form/fields/SolidLongTextField.d.ts.map +1 -1
  33. package/dist/components/core/form/fields/SolidLongTextField.js +0 -52
  34. package/dist/components/core/form/fields/SolidLongTextField.js.map +1 -1
  35. package/dist/components/core/form/fields/SolidLongTextField.tsx +0 -95
  36. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.d.ts.map +1 -1
  37. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js +16 -14
  38. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js.map +1 -1
  39. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +9 -1
  40. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.d.ts.map +1 -1
  41. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +12 -12
  42. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
  43. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +10 -6
  44. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.d.ts.map +1 -1
  45. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js +9 -7
  46. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js.map +1 -1
  47. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.tsx +7 -1
  48. package/dist/components/core/list/field-quality-check-fixes.md +178 -0
  49. package/dist/components/layout/AdminTopHeader.d.ts.map +1 -1
  50. package/dist/components/layout/AdminTopHeader.js +5 -1
  51. package/dist/components/layout/AdminTopHeader.js.map +1 -1
  52. package/dist/components/layout/AdminTopHeader.tsx +5 -1
  53. package/dist/components/shad-cn-ui/SolidAutocomplete.d.ts +2 -1
  54. package/dist/components/shad-cn-ui/SolidAutocomplete.d.ts.map +1 -1
  55. package/dist/components/shad-cn-ui/SolidAutocomplete.js +45 -6
  56. package/dist/components/shad-cn-ui/SolidAutocomplete.js.map +1 -1
  57. package/dist/components/shad-cn-ui/SolidAutocomplete.tsx +68 -22
  58. package/dist/components/shad-cn-ui/SolidDialog.d.ts.map +1 -1
  59. package/dist/components/shad-cn-ui/SolidDialog.js +38 -4
  60. package/dist/components/shad-cn-ui/SolidDialog.js.map +1 -1
  61. package/dist/components/shad-cn-ui/SolidDialog.tsx +47 -3
  62. package/dist/helpers/registry.js.map +1 -1
  63. package/dist/helpers/registry.ts +1 -1
  64. package/dist/index.d.ts +1 -1
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js.map +1 -1
  67. package/dist/index.ts +1 -0
  68. package/dist/redux/api/solidChatterMessageApi.d.ts +2 -1
  69. package/dist/redux/api/solidChatterMessageApi.d.ts.map +1 -1
  70. package/dist/redux/api/solidChatterMessageApi.js +11 -1
  71. package/dist/redux/api/solidChatterMessageApi.js.map +1 -1
  72. package/dist/redux/api/solidChatterMessageApi.ts +10 -1
  73. package/dist/redux/store/defaultStoreConfig.d.ts +1 -0
  74. package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
  75. package/dist/resources/globals.css +5 -0
  76. package/dist/resources/shadcn-base.css +24 -0
  77. package/dist/types/index.d.ts +2 -0
  78. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"SolidRelationOneToManyField.js","sourceRoot":"","sources":["../../../../../../src/components/core/form/fields/relations/SolidRelationOneToManyField.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport { SolidListView } from \"../../../../../components/core/list/SolidListView\";\nimport { camelCase, capitalize } from \"lodash\";\nimport { useEffect, useState } from \"react\";\nimport * as Yup from 'yup';\nimport SolidFormView from '../../../../../components/core/form/SolidFormView';\nimport { FormikObject, ISolidField, SolidFieldProps } from \"../ISolidField\";\nimport { usePathname } from \"../../../../../hooks/usePathname\";\nimport { useRouter } from \"../../../../../hooks/useRouter\";\nimport { getExtensionComponent } from \"../../../../../helpers/registry\";\nimport { SolidFormFieldWidgetProps, SolidFormWidgetProps } from \"../../../../../types/solid-core\";\nimport { SolidFieldTooltip } from \"../../../../../components/common/SolidFieldTooltip\";\nimport { SolidButton } from \"../../../../shad-cn-ui/SolidButton\";\nimport { SolidDialog, SolidDialogBody, SolidDialogClose, SolidDialogHeader, SolidDialogTitle } from \"../../../../shad-cn-ui/SolidDialog\";\nimport { SolidMessage } from \"../../../../shad-cn-ui/SolidMessage\";\nimport { ERROR_MESSAGES } from \"../../../../../constants/error-messages\";\nimport styles from \"../solidFields.module.css\";\n\nexport type FormViewParams = {\n moduleName: any;\n id: any;\n embeded: any;\n isCustomCreate: any;\n customLayout: any;\n modelName: any;\n parentFieldName?: any;\n parentData: any;\n onEmbeddedFormSave: any;\n inlineCreateAutoSave: any;\n customCreateHandler?: any;\n handlePopupClose?: any\n}\n\nexport class SolidRelationOneToManyField implements ISolidField {\n\n private fieldContext: SolidFieldProps;\n constructor(fieldContext: SolidFieldProps) {\n this.fieldContext = fieldContext;\n }\n\n initialValue(): any {\n\n // const manyToOneFieldData = this.fieldContext.data[this.fieldContext.field.attrs.name];\n // const fieldMetadata = this.fieldContext.fieldMetadata;\n // const userKeyField = fieldMetadata.relationModel.userKeyField.name;\n // const manyToOneColVal = manyToOneFieldData ? manyToOneFieldData[userKeyField] : '';\n\n // return { label: manyToOneColVal || '', value: manyToOneFieldData?.id || '' };\n\n return '';\n }\n\n updateFormData(value: any, formData: FormData): any {\n const fieldLayoutInfo = this.fieldContext.field;\n // if(!value || value.length === 0) {\n // formData.append(`${fieldLayoutInfo.attrs.name}Command`, \"clear\");\n\n // }\n if (value) {\n formData.append(`${fieldLayoutInfo.attrs.name}Id`, value.value);\n }\n }\n\n validationSchema(): Yup.Schema {\n let schema = Yup.object();\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.required(ERROR_MESSAGES.FIELD_REUQIRED(fieldLabel));\n }\n return schema;\n }\n\n render(formik: FormikObject) {\n const fieldMetadata = this.fieldContext.fieldMetadata;\n\n const fieldLayoutInfo = this.fieldContext.field;\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const className = fieldLayoutInfo.attrs?.className || 'field col-12';\n\n const userKeyFieldName = fieldMetadata.relationModel?.userKeyField?.name;\n\n let DynamicWidget = getExtensionComponent(\"SolidFormFieldRelationViewModeWidget\");\n const widgetProps = {\n label: fieldLabel,\n value: (this.fieldContext.data?.[fieldLayoutInfo.attrs.name] || []).map(\n (item: any) => ({ label: item[userKeyFieldName] ?? '' })\n ),\n layout: fieldLayoutInfo\n }\n\n // DefaultRelationOneToManyFormEditWidget\n\n\n let viewWidget = fieldLayoutInfo.attrs.viewWidget;\n let editWidget = fieldLayoutInfo.attrs.editWidget;\n if (!editWidget) {\n editWidget = 'DefaultRelationOneToManyFormEditWidget';\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\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\n\n\nconst buildRelationCustomFilter = ({\n fieldContext,\n fieldLayoutInfo,\n}: {\n fieldContext: any;\n fieldLayoutInfo?: any;\n}) => {\n if (!fieldContext) {\n return { id: { $eq: -1 } };\n }\n const relationFieldName =\n fieldContext.fieldMetadata?.relationCoModelFieldName ??\n fieldContext.modelName;\n\n const parentId = fieldContext.data?.id ?? -1;\n\n\n const baseFilter = {\n [relationFieldName]: {\n id: { $eq: parentId },\n },\n };\n\n const whereClause = fieldLayoutInfo?.attrs?.whereClause;\n\n if (!whereClause) return { $and: [baseFilter] };\n\n try {\n const parsedWhereClause = JSON.parse(whereClause);\n\n return {\n $and: [baseFilter, parsedWhereClause],\n };\n } catch (error) {\n console.error(\"Failed to parse whereClause:\", error);\n return { $and: [baseFilter] };\n }\n};\n\n\nexport const DefaultRelationOneToManyFormEditWidget = ({ formik, fieldContext }: SolidFormFieldWidgetProps) => {\n const fieldMetadata = fieldContext.fieldMetadata;\n const router = useRouter();\n\n const fieldLayoutInfo = fieldContext.field;\n const className = fieldLayoutInfo.attrs?.className || 'field col-12';\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const fieldDescription = fieldLayoutInfo.attrs.description ?? fieldMetadata.description;\n const solidFormViewMetaData = fieldContext.solidFormViewMetaData;\n const [visibleCreateRelationEntity, setvisibleCreateRelationEntity] = useState(false);\n const [listViewParams, setListViewParams] = useState<any>()\n const [formViewParams, setformViewParams] = useState<FormViewParams>()\n const [refreshList, setRefreshList] = useState(false); // Added state for rerender\n const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;\n const readOnlyPermission = fieldContext.readOnly;\n const pathname = usePathname();\n const lastPathSegment = pathname.split('/').pop();\n const userKeyField: any = Object.entries(fieldContext.solidFormViewMetaData.data.solidFieldsMetadata).find(([_, value]: any) => value.isUserKey)?.[0];\n const [showSaveParentEntityConfirmationPopup, setShowSaveParentEntityConfirmationPopup] = useState(false);\n\n useEffect(() => {\n const urlParams = new URLSearchParams(window.location.search);\n const childEntity = urlParams.get('childEntity');\n if (childEntity === fieldLayoutInfo.attrs.name && lastPathSegment !== \"new\") {\n handleAddOrEditClickForEmbeddedView('new');\n }\n }, [])\n\n const handleAddOrEditClickForEmbeddedView = (id: any) => {\n if (lastPathSegment === \"new\") {\n setShowSaveParentEntityConfirmationPopup(true);\n } else {\n\n const formviewparams: FormViewParams = {\n moduleName: fieldContext.fieldMetadata.relationModelModuleName,\n id: id,\n embeded: true,\n isCustomCreate: false,\n customLayout: fieldLayoutInfo?.attrs?.inlineCreateLayout,\n modelName: camelCase(fieldContext.fieldMetadata.relationCoModelSingularName),\n parentFieldName: fieldContext.fieldMetadata.relationCoModelFieldName,\n parentData: userKeyField ? { [userKeyField]: { solidManyToOneLabel: fieldContext.data[userKeyField], solidManyToOneValue: fieldContext.data['id'] } } : {},\n onEmbeddedFormSave: fieldContext.onEmbeddedFormSave,\n inlineCreateAutoSave: fieldLayoutInfo?.attrs?.inlineCreateAutoSave,\n }\n setformViewParams(formviewparams);\n setvisibleCreateRelationEntity(true);\n }\n }\n\n const handlePopupClose = () => {\n setvisibleCreateRelationEntity(false);\n const currentUrl = new URL(window.location.href);\n currentUrl.searchParams.delete('childEntity');\n router.push(currentUrl.toString());\n setRefreshList((prev) => !prev);\n const customFilter = fieldContext.fieldMetadata.relationCoModelFieldName ? fieldContext.fieldMetadata.relationCoModelFieldName : `${fieldContext.modelName}`\n const lisviewparams = {\n moduleName: fieldContext.fieldMetadata.relationModelModuleName,\n modelName: camelCase(fieldContext.fieldMetadata.relationCoModelSingularName),\n inlineCreate: readOnlyPermission === false ? true : false,\n customLayout: fieldLayoutInfo?.attrs?.inlineListLayout,\n embeded: true,\n id: fieldContext.data ? fieldContext?.data?.id : 'new',\n customFilter: buildRelationCustomFilter({\n fieldContext,\n fieldLayoutInfo,\n })\n }\n setListViewParams(lisviewparams)\n }\n\n //Intial Params \n useEffect(() => {\n\n\n const customFilter = fieldContext.fieldMetadata.relationCoModelFieldName ? fieldContext.fieldMetadata.relationCoModelFieldName : `${fieldContext.modelName}`\n const listviewparams = {\n moduleName: fieldContext.fieldMetadata.relationModelModuleName,\n modelName: camelCase(fieldContext.fieldMetadata.relationCoModelSingularName),\n inlineCreate: readOnlyPermission === false ? true : false,\n customLayout: fieldLayoutInfo?.attrs?.inlineListLayout,\n embeded: true,\n id: fieldContext.data ? fieldContext?.data?.id : 'new',\n customFilter: buildRelationCustomFilter({\n fieldContext,\n fieldLayoutInfo,\n })\n\n }\n setListViewParams(listviewparams);\n const formviewparams: FormViewParams = {\n moduleName: fieldContext.fieldMetadata.relationModelModuleName,\n modelName: camelCase(fieldContext.fieldMetadata.relationCoModelSingularName),\n parentFieldName: fieldContext.fieldMetadata.relationCoModelFieldName,\n id: \"new\",\n embeded: true,\n isCustomCreate: false,\n customLayout: fieldLayoutInfo?.attrs?.inlineCreateLayout,\n parentData: userKeyField ? { [userKeyField]: { solidManyToOneLabel: fieldContext.data[userKeyField], solidManyToOneValue: fieldContext.data['id'] } } : {},\n onEmbeddedFormSave: fieldContext.onEmbeddedFormSave,\n inlineCreateAutoSave: fieldLayoutInfo?.attrs?.inlineCreateAutoSave,\n }\n\n\n\n setformViewParams(formviewparams)\n\n }, [readOnlyPermission])\n\n const fieldDisabled = fieldLayoutInfo.attrs?.disabled;\n const fieldReadonly = fieldLayoutInfo.attrs?.readonly;\n\n const formDisabled = solidFormViewMetaData.data.solidView?.layout?.attrs?.disabled;\n const formReadonly = solidFormViewMetaData.data.solidView?.layout?.attrs?.readonly;\n const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];\n\n const saveParentEntity = async () => {\n const currentPath = window.location.pathname;\n const currentUrl = new URL(window.location.href);\n currentUrl.searchParams.set('childEntity', fieldLayoutInfo.attrs.name);\n currentUrl.searchParams.set('viewMode', 'edit');\n const updatedPath = currentUrl.toString();\n try {\n console.log(\"updatedPath\", updatedPath);\n router.push(updatedPath);\n await formik.handleSubmit();\n } catch {\n\n }\n setShowSaveParentEntityConfirmationPopup(false);\n };\n\n\n\n return (\n <div>\n {/* <div className=\"justify-content-center align-items-center\"> */}\n {showFieldLabel != false &&\n <label htmlFor={fieldLayoutInfo.attrs.name} className={`${styles.fieldLabel} form-field-label`}>{fieldLabel}\n {fieldMetadata.required && <span className=\"text-red-500\"> *</span>}\n <SolidFieldTooltip fieldContext={fieldContext} />\n </label>\n }\n\n {/* {lastPathSegment === 'new' && <p>Please save the {solidFormViewMetaData.data.solidView.model.displayName} to be able to save {fieldMetadata.displayName}</p>} */}\n {listViewParams &&\n <SolidListView key={refreshList.toString()} {...listViewParams} handleAddClickForEmbeddedView={handleAddOrEditClickForEmbeddedView} handleEditClickForEmbeddedView={handleAddOrEditClickForEmbeddedView} />\n }\n {readOnlyPermission !== true && formViewParams &&\n <RenderSolidFormEmbededView formik={formik} fieldContext={fieldContext} visibleCreateRelationEntity={visibleCreateRelationEntity} setvisibleCreateRelationEntity={setvisibleCreateRelationEntity} formViewParams={formViewParams} handlePopupClose={handlePopupClose}></RenderSolidFormEmbededView>\n }\n\n <SolidDialog\n open={showSaveParentEntityConfirmationPopup}\n onOpenChange={setShowSaveParentEntityConfirmationPopup}\n className=\"solid-confirm-dialog solid-field-confirm-dialog\"\n style={{ width: \"min(420px, calc(100vw - 2rem))\" }}\n >\n <SolidDialogHeader className=\"solid-field-confirm-header\">\n <SolidDialogTitle>Save Required</SolidDialogTitle>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogBody className=\"solid-field-confirm-dialog-body\">\n <p className=\"solid-field-confirm-message\">\n Before creating {fieldLabel}, you need to save{\" \"}\n {solidFormViewMetaData?.data?.solidView?.model?.displayName\n ? solidFormViewMetaData.data.solidView.model.displayName\n : capitalize(fieldContext.modelName)}\n . Please save first if you want to continue.\n </p>\n </SolidDialogBody>\n <div className=\"solid-radix-dialog-footer solid-field-confirm-actions\">\n <SolidButton label=\"Save\" size=\"sm\" onClick={saveParentEntity} autoFocus />\n <SolidButton\n label=\"Cancel\"\n size=\"sm\"\n onClick={() => setShowSaveParentEntityConfirmationPopup(false)}\n variant=\"outline\"\n />\n </div>\n </SolidDialog>\n\n </div>\n );\n}\n\n\nexport const DefaultRelationOneToManyFormViewWidget = ({ formik, fieldContext }: SolidFormFieldWidgetProps) => {\n const fieldMetadata = fieldContext.fieldMetadata;\n\n const fieldLayoutInfo = fieldContext.field;\n const className = fieldLayoutInfo.attrs?.className || 'field col-12';\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const fieldDescription = fieldLayoutInfo.attrs.description ?? fieldMetadata.description;\n const solidFormViewMetaData = fieldContext.solidFormViewMetaData;\n const [visibleCreateRelationEntity, setvisibleCreateRelationEntity] = useState(false);\n const [listViewParams, setListViewParams] = useState<any>()\n const [formViewParams, setformViewParams] = useState<FormViewParams>()\n const [refreshList, setRefreshList] = useState(false); // Added state for rerender\n const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;\n const readOnlyPermission = fieldContext.readOnly;\n const pathname = usePathname();\n const lastPathSegment = pathname.split('/').pop();\n const userKeyField: any = Object.entries(fieldContext.solidFormViewMetaData.data.solidFieldsMetadata).find(([_, value]: any) => value.isUserKey)?.[0];\n\n\n const handleAddOrEditClickForEmbeddedView = (id: any) => {\n\n const formviewparams: FormViewParams = {\n moduleName: fieldContext.fieldMetadata.relationModelModuleName,\n id: id,\n embeded: true,\n isCustomCreate: false,\n customLayout: fieldLayoutInfo?.attrs?.inlineCreateLayout,\n modelName: camelCase(fieldContext.fieldMetadata.relationCoModelSingularName),\n parentFieldName: fieldContext.fieldMetadata.relationCoModelFieldName,\n parentData: userKeyField ? { [userKeyField]: { solidManyToOneLabel: fieldContext.data[userKeyField], solidManyToOneValue: fieldContext.data['id'] } } : {},\n onEmbeddedFormSave: fieldContext.onEmbeddedFormSave,\n inlineCreateAutoSave: fieldLayoutInfo?.attrs?.inlineCreateAutoSave,\n\n }\n setformViewParams(formviewparams);\n setvisibleCreateRelationEntity(true);\n\n\n }\n\n const handlePopupClose = () => {\n setvisibleCreateRelationEntity(false);\n setRefreshList((prev) => !prev);\n const customFilter = fieldContext.fieldMetadata.relationCoModelFieldName ? fieldContext.fieldMetadata.relationCoModelFieldName : `${fieldContext.modelName}`\n const lisviewparams = {\n moduleName: fieldContext.fieldMetadata.relationModelModuleName,\n modelName: camelCase(fieldContext.fieldMetadata.relationCoModelSingularName),\n inlineCreate: readOnlyPermission === false ? true : false,\n customLayout: fieldLayoutInfo?.attrs?.inlineListLayout,\n embeded: true,\n id: fieldContext.data ? fieldContext?.data?.id : 'new',\n customFilter: buildRelationCustomFilter({\n fieldContext,\n fieldLayoutInfo,\n })\n }\n setListViewParams(lisviewparams)\n }\n //Intial Params \n useEffect(() => {\n\n const customFilter = fieldContext.fieldMetadata.relationCoModelFieldName ? fieldContext.fieldMetadata.relationCoModelFieldName : `${fieldContext.modelName}`\n const listviewparams = {\n moduleName: fieldContext.fieldMetadata.relationModelModuleName,\n modelName: camelCase(fieldContext.fieldMetadata.relationCoModelSingularName),\n inlineCreate: readOnlyPermission === false ? true : false,\n customLayout: fieldLayoutInfo?.attrs?.inlineListLayout,\n embeded: true,\n id: fieldContext.data ? fieldContext?.data?.id : 'new',\n customFilter: buildRelationCustomFilter({\n fieldContext,\n fieldLayoutInfo,\n })\n }\n setListViewParams(listviewparams);\n const formviewparams: FormViewParams = {\n moduleName: fieldContext.fieldMetadata.relationModelModuleName,\n id: \"new\",\n embeded: true,\n inlineCreateAutoSave: fieldLayoutInfo?.attrs?.inlineCreateAutoSave,\n customLayout: fieldLayoutInfo?.attrs?.inlineCreateLayout,\n modelName: camelCase(fieldContext.fieldMetadata.relationCoModelSingularName),\n parentFieldName: fieldContext.fieldMetadata.relationCoModelFieldName,\n parentData: userKeyField ? { [userKeyField]: { solidManyToOneLabel: fieldContext.data[userKeyField], solidManyToOneValue: fieldContext.data['id'] } } : {},\n onEmbeddedFormSave: fieldContext.onEmbeddedFormSave,\n isCustomCreate: false\n\n }\n setformViewParams(formviewparams)\n\n }, [readOnlyPermission])\n\n const fieldDisabled = fieldLayoutInfo.attrs?.disabled;\n const fieldReadonly = fieldLayoutInfo.attrs?.readonly;\n\n const formDisabled = solidFormViewMetaData.data.solidView?.layout?.attrs?.disabled;\n const formReadonly = solidFormViewMetaData.data.solidView?.layout?.attrs?.readonly;\n\n\n return (\n <div>\n {/* <div className=\"justify-content-center align-items-center\"> */}\n {showFieldLabel != false &&\n <label htmlFor={fieldLayoutInfo.attrs.name} className={`${styles.fieldLabel} form-field-label`}>{fieldLabel}\n {fieldMetadata.required && <span className=\"text-red-500\"> *</span>}\n <SolidFieldTooltip fieldContext={fieldContext} />\n </label>\n }\n\n {/* {lastPathSegment === 'new' && <p>Please save the {solidFormViewMetaData.data.solidView.model.displayName} to be able to save {fieldMetadata.displayName}</p>} */}\n {listViewParams &&\n <SolidListView key={refreshList.toString()} {...listViewParams} handleAddClickForEmbeddedView={handleAddOrEditClickForEmbeddedView} handleEditClickForEmbeddedView={handleAddOrEditClickForEmbeddedView} />\n }\n {readOnlyPermission !== true && formViewParams &&\n <RenderSolidFormEmbededView fieldLayoutInfo={fieldLayoutInfo} visibleCreateRelationEntity={visibleCreateRelationEntity} setvisibleCreateRelationEntity={setvisibleCreateRelationEntity} formViewParams={formViewParams} handlePopupClose={handlePopupClose}></RenderSolidFormEmbededView>\n }\n\n\n </div>\n );\n}\n\n\nexport const RenderSolidFormEmbededView = ({ fieldLayoutInfo, customCreateHandler, visibleCreateRelationEntity, setvisibleCreateRelationEntity, formViewParams, handlePopupClose }: any) => {\n const router = useRouter();\n\n const params: FormViewParams = {\n moduleName: formViewParams.moduleName,\n id: formViewParams?.id,\n modelName: camelCase(formViewParams.modelName),\n embeded: formViewParams.embeded,\n customLayout: formViewParams.customLayout,\n customCreateHandler: ((values: any) => {\n setvisibleCreateRelationEntity(false);\n customCreateHandler(values)\n }),\n inlineCreateAutoSave: formViewParams.inlineCreateAutoSave,\n handlePopupClose: handlePopupClose,\n parentFieldName: formViewParams.parentFieldName,\n parentData: formViewParams.parentData,\n onEmbeddedFormSave: formViewParams.onEmbeddedFormSave,\n isCustomCreate: formViewParams.isCustomCreate\n }\n\n return (\n <div className=\"many-to-many-add\" >\n {/* <Button icon=\"si si-plus\"\n rounded\n outlined\n aria-label=\"Filter\"\n type=\"button\"\n onClick={() => setvisibleCreateRelationEntity(true)}\n /> */}\n <SolidDialog\n open={visibleCreateRelationEntity}\n onOpenChange={setvisibleCreateRelationEntity}\n className=\"solid-dialog\"\n style={{\n width: fieldLayoutInfo?.attrs?.inlineCreateLayout?.attrs?.width ?? \"60vw\",\n height: fieldLayoutInfo?.attrs?.inlineCreateLayout?.attrs?.height ?? \"auto\"\n }}\n showHeader={false}\n breakpoints={{ '1199px': '35rem', \"767px\": '85vw', \"550px\": '90vw' }}\n\n >\n {params &&\n <SolidFormView {...params} />\n }\n </SolidDialog>\n </div>\n )\n}\n\n\nexport const PseudoRelationOneToManyFormWidget = ({ formData, field, fieldsMetadata, viewMetadata, formViewData }: SolidFormWidgetProps) => {\n\n const fieldLayoutInfo = field;\n const className = fieldLayoutInfo.attrs?.className || 'field col-12';\n const fieldLabel = fieldLayoutInfo.attrs.label;\n const fieldDescription = fieldLayoutInfo.attrs.description;\n const [visibleCreateRelationEntity, setvisibleCreateRelationEntity] = useState(false);\n const [listViewParams, setListViewParams] = useState<any>()\n const [formViewParams, setformViewParams] = useState<FormViewParams | null>(null)\n const [refreshList, setRefreshList] = useState(false); // Added state for rerender\n const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;\n const readOnlyPermission = fieldLayoutInfo.readOnly ? fieldLayoutInfo.readOnly : false;\n const pathname = usePathname();\n\n const parentModelName = fieldLayoutInfo?.attrs?.parentModelName;\n const childModelName = fieldLayoutInfo?.attrs?.childModelName;\n const parentFieldName = fieldLayoutInfo?.attrs?.parentFieldName;\n const childFieldName = fieldLayoutInfo?.attrs?.childFieldName;\n const parentModuleName = fieldLayoutInfo?.attrs?.parentModuleName;\n const childModuleName = fieldLayoutInfo?.attrs?.childModuleName\n\n\n const buildCustomFilter = ({ childFieldName, parentFieldName, formViewData, fieldLayoutInfo,\n }: {\n childFieldName?: string;\n parentFieldName?: string;\n formViewData?: any;\n fieldLayoutInfo?: any;\n }) => {\n const baseFilter =\n childFieldName && formViewData?.data\n ? {\n [childFieldName]: {\n $eq: formViewData.data[parentFieldName as string],\n },\n }\n : { id: { $eq: -1 } };\n\n // 2️⃣ Optional whereClause merge\n const whereClause = fieldLayoutInfo?.attrs?.whereClause;\n\n if (!whereClause) return { $and: [baseFilter] };\n\n try {\n const parsedWhereClause = JSON.parse(whereClause);\n\n // If both filters exist, merge safely\n return {\n $and: [baseFilter, parsedWhereClause]\n };\n } catch (error) {\n console.error(\"Failed to parse whereClause:\", error);\n return { $and: [baseFilter] };\n }\n };\n\n\n\n const handleAddOrEditClickForEmbeddedView = (id: any) => {\n\n const formviewparams: FormViewParams = {\n moduleName: childModuleName,\n modelName: camelCase(childModelName),\n id: id,\n embeded: true,\n isCustomCreate: false,\n inlineCreateAutoSave: fieldLayoutInfo?.attrs?.inlineCreateAutoSave,\n customLayout: fieldLayoutInfo?.attrs?.inlineCreateLayout,\n parentFieldName: parentFieldName,\n parentData: childFieldName && formViewData?.data && formViewData?.data[parentFieldName] ? { [childFieldName]: formViewData.data[parentFieldName] } : {},\n onEmbeddedFormSave: fieldLayoutInfo.onEmbeddedFormSave ? fieldLayoutInfo : false\n }\n setformViewParams(formviewparams);\n setvisibleCreateRelationEntity(true);\n\n\n }\n\n const handlePopupClose = () => {\n setvisibleCreateRelationEntity(false);\n setRefreshList((prev) => !prev);\n const lisviewparams = {\n moduleName: childModuleName,\n modelName: camelCase(childModelName),\n inlineCreate: readOnlyPermission === false ? true : false,\n customLayout: fieldLayoutInfo?.attrs?.inlineListLayout,\n embeded: true,\n id: formViewData && formViewData?.data ? formViewData?.data?.id : 'new',\n customFilter: buildCustomFilter({\n childFieldName,\n parentFieldName,\n formViewData,\n fieldLayoutInfo,\n })\n }\n setListViewParams(lisviewparams)\n }\n //Intial Params \n useEffect(() => {\n\n const listviewparams = {\n moduleName: childModuleName,\n modelName: camelCase(childModelName),\n inlineCreate: readOnlyPermission === false ? true : false,\n customLayout: fieldLayoutInfo?.attrs?.inlineListLayout,\n embeded: true,\n id: formViewData && formViewData?.data ? formViewData?.data?.id : 'new',\n customFilter: buildCustomFilter({\n childFieldName,\n parentFieldName,\n formViewData,\n fieldLayoutInfo,\n })\n }\n setListViewParams(listviewparams);\n const formviewparams: FormViewParams = {\n moduleName: childModuleName,\n modelName: camelCase(childModelName),\n id: \"new\",\n embeded: true,\n isCustomCreate: false,\n inlineCreateAutoSave: fieldLayoutInfo?.attrs?.inlineCreateAutoSave,\n customLayout: fieldLayoutInfo?.attrs?.inlineCreateLayout,\n parentFieldName: parentFieldName,\n parentData: childFieldName && formViewData && formViewData?.data && formViewData?.data[parentFieldName] ? { [childFieldName]: formViewData.data[parentFieldName] } : {},\n onEmbeddedFormSave: formViewData && formViewData.onEmbeddedFormSave\n\n }\n\n setformViewParams(formviewparams)\n\n\n }, [readOnlyPermission, formViewData])\n\n return (\n <div>\n {/* <div className=\"justify-content-center align-items-center\"> */}\n {showFieldLabel != false &&\n <label htmlFor={fieldLayoutInfo.attrs.name} className={`${styles.fieldLabel} form-field-label`}>{fieldLabel}\n {/* {fieldMetadata.required && <span className=\"text-red-500\"> *</span>} */}\n {/* <SolidFieldTooltip fieldContext={fieldContext} /> */}\n </label>\n }\n\n {/* {lastPathSegment === 'new' && <p>Please save the {solidFormViewMetaData.data.solidView.model.displayName} to be able to save {fieldMetadata.displayName}</p>} */}\n {listViewParams &&\n <SolidListView key={refreshList.toString()} {...listViewParams} handleAddClickForEmbeddedView={handleAddOrEditClickForEmbeddedView} handleEditClickForEmbeddedView={handleAddOrEditClickForEmbeddedView} />\n }\n {readOnlyPermission !== true && formViewParams &&\n <RenderSolidFormEmbededView fieldLayoutInfo={fieldLayoutInfo} visibleCreateRelationEntity={visibleCreateRelationEntity} setvisibleCreateRelationEntity={setvisibleCreateRelationEntity} formViewParams={formViewParams} handlePopupClose={handlePopupClose}></RenderSolidFormEmbededView>\n }\n\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"SolidRelationOneToManyField.js","sourceRoot":"","sources":["../../../../../../src/components/core/form/fields/relations/SolidRelationOneToManyField.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport { SolidListView } from \"../../../../../components/core/list/SolidListView\";\nimport { camelCase, capitalize } from \"lodash\";\nimport { useEffect, useState } from \"react\";\nimport * as Yup from 'yup';\nimport SolidFormView from '../../../../../components/core/form/SolidFormView';\nimport { FormikObject, ISolidField, SolidFieldProps } from \"../ISolidField\";\nimport { usePathname } from \"../../../../../hooks/usePathname\";\nimport { useRouter } from \"../../../../../hooks/useRouter\";\nimport { getExtensionComponent } from \"../../../../../helpers/registry\";\nimport { SolidFormFieldWidgetProps, SolidFormWidgetProps } from \"../../../../../types/solid-core\";\nimport { SolidFieldTooltip } from \"../../../../../components/common/SolidFieldTooltip\";\nimport { SolidButton } from \"../../../../shad-cn-ui/SolidButton\";\nimport { SolidDialog, SolidDialogBody, SolidDialogClose, SolidDialogDescription, SolidDialogHeader, SolidDialogTitle } from \"../../../../shad-cn-ui/SolidDialog\";\nimport { SolidMessage } from \"../../../../shad-cn-ui/SolidMessage\";\nimport { ERROR_MESSAGES } from \"../../../../../constants/error-messages\";\nimport styles from \"../solidFields.module.css\";\n\nexport type FormViewParams = {\n moduleName: any;\n id: any;\n embeded: any;\n isCustomCreate: any;\n customLayout: any;\n modelName: any;\n parentFieldName?: any;\n parentData: any;\n onEmbeddedFormSave: any;\n inlineCreateAutoSave: any;\n customCreateHandler?: any;\n handlePopupClose?: any\n}\n\nexport class SolidRelationOneToManyField implements ISolidField {\n\n private fieldContext: SolidFieldProps;\n constructor(fieldContext: SolidFieldProps) {\n this.fieldContext = fieldContext;\n }\n\n initialValue(): any {\n\n // const manyToOneFieldData = this.fieldContext.data[this.fieldContext.field.attrs.name];\n // const fieldMetadata = this.fieldContext.fieldMetadata;\n // const userKeyField = fieldMetadata.relationModel.userKeyField.name;\n // const manyToOneColVal = manyToOneFieldData ? manyToOneFieldData[userKeyField] : '';\n\n // return { label: manyToOneColVal || '', value: manyToOneFieldData?.id || '' };\n\n return '';\n }\n\n updateFormData(value: any, formData: FormData): any {\n const fieldLayoutInfo = this.fieldContext.field;\n // if(!value || value.length === 0) {\n // formData.append(`${fieldLayoutInfo.attrs.name}Command`, \"clear\");\n\n // }\n if (value) {\n formData.append(`${fieldLayoutInfo.attrs.name}Id`, value.value);\n }\n }\n\n validationSchema(): Yup.Schema {\n let schema = Yup.object();\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.required(ERROR_MESSAGES.FIELD_REUQIRED(fieldLabel));\n }\n return schema;\n }\n\n render(formik: FormikObject) {\n const fieldMetadata = this.fieldContext.fieldMetadata;\n\n const fieldLayoutInfo = this.fieldContext.field;\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const className = fieldLayoutInfo.attrs?.className || 'field col-12';\n\n const userKeyFieldName = fieldMetadata.relationModel?.userKeyField?.name;\n\n let DynamicWidget = getExtensionComponent(\"SolidFormFieldRelationViewModeWidget\");\n const widgetProps = {\n label: fieldLabel,\n value: (this.fieldContext.data?.[fieldLayoutInfo.attrs.name] || []).map(\n (item: any) => ({ label: item[userKeyFieldName] ?? '' })\n ),\n layout: fieldLayoutInfo\n }\n\n // DefaultRelationOneToManyFormEditWidget\n\n\n let viewWidget = fieldLayoutInfo.attrs.viewWidget;\n let editWidget = fieldLayoutInfo.attrs.editWidget;\n if (!editWidget) {\n editWidget = 'DefaultRelationOneToManyFormEditWidget';\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\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\n\n\nconst buildRelationCustomFilter = ({\n fieldContext,\n fieldLayoutInfo,\n}: {\n fieldContext: any;\n fieldLayoutInfo?: any;\n}) => {\n if (!fieldContext) {\n return { id: { $eq: -1 } };\n }\n const relationFieldName =\n fieldContext.fieldMetadata?.relationCoModelFieldName ??\n fieldContext.modelName;\n\n const parentId = fieldContext.data?.id ?? -1;\n\n\n const baseFilter = {\n [relationFieldName]: {\n id: { $eq: parentId },\n },\n };\n\n const whereClause = fieldLayoutInfo?.attrs?.whereClause;\n\n if (!whereClause) return { $and: [baseFilter] };\n\n try {\n const parsedWhereClause = JSON.parse(whereClause);\n\n return {\n $and: [baseFilter, parsedWhereClause],\n };\n } catch (error) {\n console.error(\"Failed to parse whereClause:\", error);\n return { $and: [baseFilter] };\n }\n};\n\n\nexport const DefaultRelationOneToManyFormEditWidget = ({ formik, fieldContext }: SolidFormFieldWidgetProps) => {\n const fieldMetadata = fieldContext.fieldMetadata;\n const router = useRouter();\n\n const fieldLayoutInfo = fieldContext.field;\n const className = fieldLayoutInfo.attrs?.className || 'field col-12';\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const fieldDescription = fieldLayoutInfo.attrs.description ?? fieldMetadata.description;\n const solidFormViewMetaData = fieldContext.solidFormViewMetaData;\n const [visibleCreateRelationEntity, setvisibleCreateRelationEntity] = useState(false);\n const [listViewParams, setListViewParams] = useState<any>()\n const [formViewParams, setformViewParams] = useState<FormViewParams>()\n const [refreshList, setRefreshList] = useState(false); // Added state for rerender\n const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;\n const readOnlyPermission = fieldContext.readOnly;\n const pathname = usePathname();\n const lastPathSegment = pathname.split('/').pop();\n const userKeyField: any = Object.entries(fieldContext.solidFormViewMetaData.data.solidFieldsMetadata).find(([_, value]: any) => value.isUserKey)?.[0];\n const [showSaveParentEntityConfirmationPopup, setShowSaveParentEntityConfirmationPopup] = useState(false);\n\n useEffect(() => {\n const urlParams = new URLSearchParams(window.location.search);\n const childEntity = urlParams.get('childEntity');\n if (childEntity === fieldLayoutInfo.attrs.name && lastPathSegment !== \"new\") {\n handleAddOrEditClickForEmbeddedView('new');\n }\n }, [])\n\n const handleAddOrEditClickForEmbeddedView = (id: any) => {\n if (lastPathSegment === \"new\") {\n setShowSaveParentEntityConfirmationPopup(true);\n } else {\n\n const formviewparams: FormViewParams = {\n moduleName: fieldContext.fieldMetadata.relationModelModuleName,\n id: id,\n embeded: true,\n isCustomCreate: false,\n customLayout: fieldLayoutInfo?.attrs?.inlineCreateLayout,\n modelName: camelCase(fieldContext.fieldMetadata.relationCoModelSingularName),\n parentFieldName: fieldContext.fieldMetadata.relationCoModelFieldName,\n parentData: userKeyField ? { [userKeyField]: { solidManyToOneLabel: fieldContext.data[userKeyField], solidManyToOneValue: fieldContext.data['id'] } } : {},\n onEmbeddedFormSave: fieldContext.onEmbeddedFormSave,\n inlineCreateAutoSave: fieldLayoutInfo?.attrs?.inlineCreateAutoSave,\n }\n setformViewParams(formviewparams);\n setvisibleCreateRelationEntity(true);\n }\n }\n\n const handlePopupClose = () => {\n setvisibleCreateRelationEntity(false);\n const currentUrl = new URL(window.location.href);\n currentUrl.searchParams.delete('childEntity');\n router.push(currentUrl.toString());\n setRefreshList((prev) => !prev);\n const customFilter = fieldContext.fieldMetadata.relationCoModelFieldName ? fieldContext.fieldMetadata.relationCoModelFieldName : `${fieldContext.modelName}`\n const lisviewparams = {\n moduleName: fieldContext.fieldMetadata.relationModelModuleName,\n modelName: camelCase(fieldContext.fieldMetadata.relationCoModelSingularName),\n inlineCreate: readOnlyPermission === false ? true : false,\n customLayout: fieldLayoutInfo?.attrs?.inlineListLayout,\n embeded: true,\n id: fieldContext.data ? fieldContext?.data?.id : 'new',\n customFilter: buildRelationCustomFilter({\n fieldContext,\n fieldLayoutInfo,\n })\n }\n setListViewParams(lisviewparams)\n }\n\n //Intial Params \n useEffect(() => {\n\n\n const customFilter = fieldContext.fieldMetadata.relationCoModelFieldName ? fieldContext.fieldMetadata.relationCoModelFieldName : `${fieldContext.modelName}`\n const listviewparams = {\n moduleName: fieldContext.fieldMetadata.relationModelModuleName,\n modelName: camelCase(fieldContext.fieldMetadata.relationCoModelSingularName),\n inlineCreate: readOnlyPermission === false ? true : false,\n customLayout: fieldLayoutInfo?.attrs?.inlineListLayout,\n embeded: true,\n id: fieldContext.data ? fieldContext?.data?.id : 'new',\n customFilter: buildRelationCustomFilter({\n fieldContext,\n fieldLayoutInfo,\n })\n\n }\n setListViewParams(listviewparams);\n const formviewparams: FormViewParams = {\n moduleName: fieldContext.fieldMetadata.relationModelModuleName,\n modelName: camelCase(fieldContext.fieldMetadata.relationCoModelSingularName),\n parentFieldName: fieldContext.fieldMetadata.relationCoModelFieldName,\n id: \"new\",\n embeded: true,\n isCustomCreate: false,\n customLayout: fieldLayoutInfo?.attrs?.inlineCreateLayout,\n parentData: userKeyField ? { [userKeyField]: { solidManyToOneLabel: fieldContext.data[userKeyField], solidManyToOneValue: fieldContext.data['id'] } } : {},\n onEmbeddedFormSave: fieldContext.onEmbeddedFormSave,\n inlineCreateAutoSave: fieldLayoutInfo?.attrs?.inlineCreateAutoSave,\n }\n\n\n\n setformViewParams(formviewparams)\n\n }, [readOnlyPermission])\n\n const fieldDisabled = fieldLayoutInfo.attrs?.disabled;\n const fieldReadonly = fieldLayoutInfo.attrs?.readonly;\n\n const formDisabled = solidFormViewMetaData.data.solidView?.layout?.attrs?.disabled;\n const formReadonly = solidFormViewMetaData.data.solidView?.layout?.attrs?.readonly;\n const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];\n\n const saveParentEntity = async () => {\n const currentPath = window.location.pathname;\n const currentUrl = new URL(window.location.href);\n currentUrl.searchParams.set('childEntity', fieldLayoutInfo.attrs.name);\n currentUrl.searchParams.set('viewMode', 'edit');\n const updatedPath = currentUrl.toString();\n try {\n console.log(\"updatedPath\", updatedPath);\n router.push(updatedPath);\n await formik.handleSubmit();\n } catch {\n\n }\n setShowSaveParentEntityConfirmationPopup(false);\n };\n\n\n\n return (\n <div>\n {/* <div className=\"justify-content-center align-items-center\"> */}\n {showFieldLabel != false &&\n <label htmlFor={fieldLayoutInfo.attrs.name} className={`${styles.fieldLabel} form-field-label`}>{fieldLabel}\n {fieldMetadata.required && <span className=\"text-red-500\"> *</span>}\n <SolidFieldTooltip fieldContext={fieldContext} />\n </label>\n }\n\n {/* {lastPathSegment === 'new' && <p>Please save the {solidFormViewMetaData.data.solidView.model.displayName} to be able to save {fieldMetadata.displayName}</p>} */}\n {listViewParams &&\n <SolidListView key={refreshList.toString()} {...listViewParams} handleAddClickForEmbeddedView={handleAddOrEditClickForEmbeddedView} handleEditClickForEmbeddedView={handleAddOrEditClickForEmbeddedView} />\n }\n {readOnlyPermission !== true && formViewParams &&\n <RenderSolidFormEmbededView formik={formik} fieldContext={fieldContext} visibleCreateRelationEntity={visibleCreateRelationEntity} setvisibleCreateRelationEntity={setvisibleCreateRelationEntity} formViewParams={formViewParams} handlePopupClose={handlePopupClose}></RenderSolidFormEmbededView>\n }\n\n <SolidDialog\n open={showSaveParentEntityConfirmationPopup}\n onOpenChange={setShowSaveParentEntityConfirmationPopup}\n className=\"solid-confirm-dialog solid-field-confirm-dialog\"\n style={{ width: \"min(420px, calc(100vw - 2rem))\" }}\n >\n <SolidDialogHeader className=\"solid-field-confirm-header\">\n <SolidDialogTitle>Save Required</SolidDialogTitle>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogBody className=\"solid-field-confirm-dialog-body\">\n <p className=\"solid-field-confirm-message\">\n Before creating {fieldLabel}, you need to save{\" \"}\n {solidFormViewMetaData?.data?.solidView?.model?.displayName\n ? solidFormViewMetaData.data.solidView.model.displayName\n : capitalize(fieldContext.modelName)}\n . Please save first if you want to continue.\n </p>\n </SolidDialogBody>\n <div className=\"solid-radix-dialog-footer solid-field-confirm-actions\">\n <SolidButton label=\"Save\" size=\"sm\" onClick={saveParentEntity} autoFocus />\n <SolidButton\n label=\"Cancel\"\n size=\"sm\"\n onClick={() => setShowSaveParentEntityConfirmationPopup(false)}\n variant=\"outline\"\n />\n </div>\n </SolidDialog>\n\n </div>\n );\n}\n\n\nexport const DefaultRelationOneToManyFormViewWidget = ({ formik, fieldContext }: SolidFormFieldWidgetProps) => {\n const fieldMetadata = fieldContext.fieldMetadata;\n\n const fieldLayoutInfo = fieldContext.field;\n const className = fieldLayoutInfo.attrs?.className || 'field col-12';\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const fieldDescription = fieldLayoutInfo.attrs.description ?? fieldMetadata.description;\n const solidFormViewMetaData = fieldContext.solidFormViewMetaData;\n const [visibleCreateRelationEntity, setvisibleCreateRelationEntity] = useState(false);\n const [listViewParams, setListViewParams] = useState<any>()\n const [formViewParams, setformViewParams] = useState<FormViewParams>()\n const [refreshList, setRefreshList] = useState(false); // Added state for rerender\n const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;\n const readOnlyPermission = fieldContext.readOnly;\n const pathname = usePathname();\n const lastPathSegment = pathname.split('/').pop();\n const userKeyField: any = Object.entries(fieldContext.solidFormViewMetaData.data.solidFieldsMetadata).find(([_, value]: any) => value.isUserKey)?.[0];\n\n\n const handleAddOrEditClickForEmbeddedView = (id: any) => {\n\n const formviewparams: FormViewParams = {\n moduleName: fieldContext.fieldMetadata.relationModelModuleName,\n id: id,\n embeded: true,\n isCustomCreate: false,\n customLayout: fieldLayoutInfo?.attrs?.inlineCreateLayout,\n modelName: camelCase(fieldContext.fieldMetadata.relationCoModelSingularName),\n parentFieldName: fieldContext.fieldMetadata.relationCoModelFieldName,\n parentData: userKeyField ? { [userKeyField]: { solidManyToOneLabel: fieldContext.data[userKeyField], solidManyToOneValue: fieldContext.data['id'] } } : {},\n onEmbeddedFormSave: fieldContext.onEmbeddedFormSave,\n inlineCreateAutoSave: fieldLayoutInfo?.attrs?.inlineCreateAutoSave,\n\n }\n setformViewParams(formviewparams);\n setvisibleCreateRelationEntity(true);\n\n\n }\n\n const handlePopupClose = () => {\n setvisibleCreateRelationEntity(false);\n setRefreshList((prev) => !prev);\n const customFilter = fieldContext.fieldMetadata.relationCoModelFieldName ? fieldContext.fieldMetadata.relationCoModelFieldName : `${fieldContext.modelName}`\n const lisviewparams = {\n moduleName: fieldContext.fieldMetadata.relationModelModuleName,\n modelName: camelCase(fieldContext.fieldMetadata.relationCoModelSingularName),\n inlineCreate: readOnlyPermission === false ? true : false,\n customLayout: fieldLayoutInfo?.attrs?.inlineListLayout,\n embeded: true,\n id: fieldContext.data ? fieldContext?.data?.id : 'new',\n customFilter: buildRelationCustomFilter({\n fieldContext,\n fieldLayoutInfo,\n })\n }\n setListViewParams(lisviewparams)\n }\n //Intial Params \n useEffect(() => {\n\n const customFilter = fieldContext.fieldMetadata.relationCoModelFieldName ? fieldContext.fieldMetadata.relationCoModelFieldName : `${fieldContext.modelName}`\n const listviewparams = {\n moduleName: fieldContext.fieldMetadata.relationModelModuleName,\n modelName: camelCase(fieldContext.fieldMetadata.relationCoModelSingularName),\n inlineCreate: readOnlyPermission === false ? true : false,\n customLayout: fieldLayoutInfo?.attrs?.inlineListLayout,\n embeded: true,\n id: fieldContext.data ? fieldContext?.data?.id : 'new',\n customFilter: buildRelationCustomFilter({\n fieldContext,\n fieldLayoutInfo,\n })\n }\n setListViewParams(listviewparams);\n const formviewparams: FormViewParams = {\n moduleName: fieldContext.fieldMetadata.relationModelModuleName,\n id: \"new\",\n embeded: true,\n inlineCreateAutoSave: fieldLayoutInfo?.attrs?.inlineCreateAutoSave,\n customLayout: fieldLayoutInfo?.attrs?.inlineCreateLayout,\n modelName: camelCase(fieldContext.fieldMetadata.relationCoModelSingularName),\n parentFieldName: fieldContext.fieldMetadata.relationCoModelFieldName,\n parentData: userKeyField ? { [userKeyField]: { solidManyToOneLabel: fieldContext.data[userKeyField], solidManyToOneValue: fieldContext.data['id'] } } : {},\n onEmbeddedFormSave: fieldContext.onEmbeddedFormSave,\n isCustomCreate: false\n\n }\n setformViewParams(formviewparams)\n\n }, [readOnlyPermission])\n\n const fieldDisabled = fieldLayoutInfo.attrs?.disabled;\n const fieldReadonly = fieldLayoutInfo.attrs?.readonly;\n\n const formDisabled = solidFormViewMetaData.data.solidView?.layout?.attrs?.disabled;\n const formReadonly = solidFormViewMetaData.data.solidView?.layout?.attrs?.readonly;\n\n\n return (\n <div>\n {/* <div className=\"justify-content-center align-items-center\"> */}\n {showFieldLabel != false &&\n <label htmlFor={fieldLayoutInfo.attrs.name} className={`${styles.fieldLabel} form-field-label`}>{fieldLabel}\n {fieldMetadata.required && <span className=\"text-red-500\"> *</span>}\n <SolidFieldTooltip fieldContext={fieldContext} />\n </label>\n }\n\n {/* {lastPathSegment === 'new' && <p>Please save the {solidFormViewMetaData.data.solidView.model.displayName} to be able to save {fieldMetadata.displayName}</p>} */}\n {listViewParams &&\n <SolidListView key={refreshList.toString()} {...listViewParams} handleAddClickForEmbeddedView={handleAddOrEditClickForEmbeddedView} handleEditClickForEmbeddedView={handleAddOrEditClickForEmbeddedView} />\n }\n {readOnlyPermission !== true && formViewParams &&\n <RenderSolidFormEmbededView fieldLayoutInfo={fieldLayoutInfo} visibleCreateRelationEntity={visibleCreateRelationEntity} setvisibleCreateRelationEntity={setvisibleCreateRelationEntity} formViewParams={formViewParams} handlePopupClose={handlePopupClose}></RenderSolidFormEmbededView>\n }\n\n\n </div>\n );\n}\n\n\nexport const RenderSolidFormEmbededView = ({ fieldLayoutInfo, customCreateHandler, visibleCreateRelationEntity, setvisibleCreateRelationEntity, formViewParams, handlePopupClose }: any) => {\n const router = useRouter();\n const dialogTitle = `${formViewParams?.id && formViewParams.id !== \"new\" ? \"Edit\" : \"Create\"} ${fieldLayoutInfo?.attrs?.label ?? formViewParams?.modelName ?? \"related record\"}`;\n const dialogDescription = `Manage the ${fieldLayoutInfo?.attrs?.label ?? formViewParams?.modelName ?? \"related record\"} form in this dialog.`;\n\n const params: FormViewParams = {\n moduleName: formViewParams.moduleName,\n id: formViewParams?.id,\n modelName: camelCase(formViewParams.modelName),\n embeded: formViewParams.embeded,\n customLayout: formViewParams.customLayout,\n customCreateHandler: ((values: any) => {\n setvisibleCreateRelationEntity(false);\n customCreateHandler(values)\n }),\n inlineCreateAutoSave: formViewParams.inlineCreateAutoSave,\n handlePopupClose: handlePopupClose,\n parentFieldName: formViewParams.parentFieldName,\n parentData: formViewParams.parentData,\n onEmbeddedFormSave: formViewParams.onEmbeddedFormSave,\n isCustomCreate: formViewParams.isCustomCreate\n }\n\n return (\n <div className=\"many-to-many-add\" >\n {/* <Button icon=\"si si-plus\"\n rounded\n outlined\n aria-label=\"Filter\"\n type=\"button\"\n onClick={() => setvisibleCreateRelationEntity(true)}\n /> */}\n <SolidDialog\n open={visibleCreateRelationEntity}\n onOpenChange={setvisibleCreateRelationEntity}\n className=\"solid-dialog\"\n style={{\n width: fieldLayoutInfo?.attrs?.inlineCreateLayout?.attrs?.width ?? \"60vw\",\n height: fieldLayoutInfo?.attrs?.inlineCreateLayout?.attrs?.height ?? \"auto\"\n }}\n showHeader={false}\n breakpoints={{ '1199px': '35rem', \"767px\": '85vw', \"550px\": '90vw' }}\n\n >\n <SolidDialogHeader className=\"solid-sr-only\">\n <SolidDialogTitle>{dialogTitle}</SolidDialogTitle>\n <SolidDialogDescription>{dialogDescription}</SolidDialogDescription>\n </SolidDialogHeader>\n {params &&\n <SolidFormView {...params} />\n }\n </SolidDialog>\n </div>\n )\n}\n\n\nexport const PseudoRelationOneToManyFormWidget = ({ formData, field, fieldsMetadata, viewMetadata, formViewData }: SolidFormWidgetProps) => {\n\n const fieldLayoutInfo = field;\n const className = fieldLayoutInfo.attrs?.className || 'field col-12';\n const fieldLabel = fieldLayoutInfo.attrs.label;\n const fieldDescription = fieldLayoutInfo.attrs.description;\n const [visibleCreateRelationEntity, setvisibleCreateRelationEntity] = useState(false);\n const [listViewParams, setListViewParams] = useState<any>()\n const [formViewParams, setformViewParams] = useState<FormViewParams | null>(null)\n const [refreshList, setRefreshList] = useState(false); // Added state for rerender\n const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;\n const readOnlyPermission = fieldLayoutInfo.readOnly ? fieldLayoutInfo.readOnly : false;\n const pathname = usePathname();\n\n const parentModelName = fieldLayoutInfo?.attrs?.parentModelName;\n const childModelName = fieldLayoutInfo?.attrs?.childModelName;\n const parentFieldName = fieldLayoutInfo?.attrs?.parentFieldName;\n const childFieldName = fieldLayoutInfo?.attrs?.childFieldName;\n const parentModuleName = fieldLayoutInfo?.attrs?.parentModuleName;\n const childModuleName = fieldLayoutInfo?.attrs?.childModuleName\n\n\n const buildCustomFilter = ({ childFieldName, parentFieldName, formViewData, fieldLayoutInfo,\n }: {\n childFieldName?: string;\n parentFieldName?: string;\n formViewData?: any;\n fieldLayoutInfo?: any;\n }) => {\n const baseFilter =\n childFieldName && formViewData?.data\n ? {\n [childFieldName]: {\n $eq: formViewData.data[parentFieldName as string],\n },\n }\n : { id: { $eq: -1 } };\n\n // 2️⃣ Optional whereClause merge\n const whereClause = fieldLayoutInfo?.attrs?.whereClause;\n\n if (!whereClause) return { $and: [baseFilter] };\n\n try {\n const parsedWhereClause = JSON.parse(whereClause);\n\n // If both filters exist, merge safely\n return {\n $and: [baseFilter, parsedWhereClause]\n };\n } catch (error) {\n console.error(\"Failed to parse whereClause:\", error);\n return { $and: [baseFilter] };\n }\n };\n\n\n\n const handleAddOrEditClickForEmbeddedView = (id: any) => {\n\n const formviewparams: FormViewParams = {\n moduleName: childModuleName,\n modelName: camelCase(childModelName),\n id: id,\n embeded: true,\n isCustomCreate: false,\n inlineCreateAutoSave: fieldLayoutInfo?.attrs?.inlineCreateAutoSave,\n customLayout: fieldLayoutInfo?.attrs?.inlineCreateLayout,\n parentFieldName: parentFieldName,\n parentData: childFieldName && formViewData?.data && formViewData?.data[parentFieldName] ? { [childFieldName]: formViewData.data[parentFieldName] } : {},\n onEmbeddedFormSave: fieldLayoutInfo.onEmbeddedFormSave ? fieldLayoutInfo : false\n }\n setformViewParams(formviewparams);\n setvisibleCreateRelationEntity(true);\n\n\n }\n\n const handlePopupClose = () => {\n setvisibleCreateRelationEntity(false);\n setRefreshList((prev) => !prev);\n const lisviewparams = {\n moduleName: childModuleName,\n modelName: camelCase(childModelName),\n inlineCreate: readOnlyPermission === false ? true : false,\n customLayout: fieldLayoutInfo?.attrs?.inlineListLayout,\n embeded: true,\n id: formViewData && formViewData?.data ? formViewData?.data?.id : 'new',\n customFilter: buildCustomFilter({\n childFieldName,\n parentFieldName,\n formViewData,\n fieldLayoutInfo,\n })\n }\n setListViewParams(lisviewparams)\n }\n //Intial Params \n useEffect(() => {\n\n const listviewparams = {\n moduleName: childModuleName,\n modelName: camelCase(childModelName),\n inlineCreate: readOnlyPermission === false ? true : false,\n customLayout: fieldLayoutInfo?.attrs?.inlineListLayout,\n embeded: true,\n id: formViewData && formViewData?.data ? formViewData?.data?.id : 'new',\n customFilter: buildCustomFilter({\n childFieldName,\n parentFieldName,\n formViewData,\n fieldLayoutInfo,\n })\n }\n setListViewParams(listviewparams);\n const formviewparams: FormViewParams = {\n moduleName: childModuleName,\n modelName: camelCase(childModelName),\n id: \"new\",\n embeded: true,\n isCustomCreate: false,\n inlineCreateAutoSave: fieldLayoutInfo?.attrs?.inlineCreateAutoSave,\n customLayout: fieldLayoutInfo?.attrs?.inlineCreateLayout,\n parentFieldName: parentFieldName,\n parentData: childFieldName && formViewData && formViewData?.data && formViewData?.data[parentFieldName] ? { [childFieldName]: formViewData.data[parentFieldName] } : {},\n onEmbeddedFormSave: formViewData && formViewData.onEmbeddedFormSave\n\n }\n\n setformViewParams(formviewparams)\n\n\n }, [readOnlyPermission, formViewData])\n\n return (\n <div>\n {/* <div className=\"justify-content-center align-items-center\"> */}\n {showFieldLabel != false &&\n <label htmlFor={fieldLayoutInfo.attrs.name} className={`${styles.fieldLabel} form-field-label`}>{fieldLabel}\n {/* {fieldMetadata.required && <span className=\"text-red-500\"> *</span>} */}\n {/* <SolidFieldTooltip fieldContext={fieldContext} /> */}\n </label>\n }\n\n {/* {lastPathSegment === 'new' && <p>Please save the {solidFormViewMetaData.data.solidView.model.displayName} to be able to save {fieldMetadata.displayName}</p>} */}\n {listViewParams &&\n <SolidListView key={refreshList.toString()} {...listViewParams} handleAddClickForEmbeddedView={handleAddOrEditClickForEmbeddedView} handleEditClickForEmbeddedView={handleAddOrEditClickForEmbeddedView} />\n }\n {readOnlyPermission !== true && formViewParams &&\n <RenderSolidFormEmbededView fieldLayoutInfo={fieldLayoutInfo} visibleCreateRelationEntity={visibleCreateRelationEntity} setvisibleCreateRelationEntity={setvisibleCreateRelationEntity} formViewParams={formViewParams} handlePopupClose={handlePopupClose}></RenderSolidFormEmbededView>\n }\n\n </div>\n );\n}\n"]}
@@ -11,7 +11,7 @@ import { getExtensionComponent } from "../../../../../helpers/registry";
11
11
  import { SolidFormFieldWidgetProps, SolidFormWidgetProps } from "../../../../../types/solid-core";
12
12
  import { SolidFieldTooltip } from "../../../../../components/common/SolidFieldTooltip";
13
13
  import { SolidButton } from "../../../../shad-cn-ui/SolidButton";
14
- import { SolidDialog, SolidDialogBody, SolidDialogClose, SolidDialogHeader, SolidDialogTitle } from "../../../../shad-cn-ui/SolidDialog";
14
+ import { SolidDialog, SolidDialogBody, SolidDialogClose, SolidDialogDescription, SolidDialogHeader, SolidDialogTitle } from "../../../../shad-cn-ui/SolidDialog";
15
15
  import { SolidMessage } from "../../../../shad-cn-ui/SolidMessage";
16
16
  import { ERROR_MESSAGES } from "../../../../../constants/error-messages";
17
17
  import styles from "../solidFields.module.css";
@@ -496,6 +496,8 @@ export const DefaultRelationOneToManyFormViewWidget = ({ formik, fieldContext }:
496
496
 
497
497
  export const RenderSolidFormEmbededView = ({ fieldLayoutInfo, customCreateHandler, visibleCreateRelationEntity, setvisibleCreateRelationEntity, formViewParams, handlePopupClose }: any) => {
498
498
  const router = useRouter();
499
+ const dialogTitle = `${formViewParams?.id && formViewParams.id !== "new" ? "Edit" : "Create"} ${fieldLayoutInfo?.attrs?.label ?? formViewParams?.modelName ?? "related record"}`;
500
+ const dialogDescription = `Manage the ${fieldLayoutInfo?.attrs?.label ?? formViewParams?.modelName ?? "related record"} form in this dialog.`;
499
501
 
500
502
  const params: FormViewParams = {
501
503
  moduleName: formViewParams.moduleName,
@@ -536,6 +538,10 @@ export const RenderSolidFormEmbededView = ({ fieldLayoutInfo, customCreateHandle
536
538
  breakpoints={{ '1199px': '35rem', "767px": '85vw', "550px": '90vw' }}
537
539
 
538
540
  >
541
+ <SolidDialogHeader className="solid-sr-only">
542
+ <SolidDialogTitle>{dialogTitle}</SolidDialogTitle>
543
+ <SolidDialogDescription>{dialogDescription}</SolidDialogDescription>
544
+ </SolidDialogHeader>
539
545
  {params &&
540
546
  <SolidFormView {...params} />
541
547
  }
@@ -0,0 +1,178 @@
1
+ # Field Quality Checks And Fixes
2
+
3
+ This checklist tracks list and tree rendering issues and logical enhancements for each field type in `solid-core-ui`.
4
+
5
+ Use it for frontend concerns only:
6
+
7
+ - list and tree column behavior
8
+ - list widgets and render modes
9
+ - filtering and scanability UX
10
+ - visual density, truncation, and discoverability
11
+
12
+ Backend validation, persistence, and query concerns belong in `solid-core-module`.
13
+
14
+ ## `shortText`
15
+
16
+ - [ ] Decide whether truncation should remain layout-level only through `truncateAfter`, or whether `shortText` columns should also support a per-column override.
17
+ - [ ] If per-column truncation is needed, add a field-node level attr that can override the layout default without changing the existing behavior for other columns.
18
+ - [ ] Review whether default text columns should support an explicit no-truncate mode when the list layout uses `truncateAfter`.
19
+ - [ ] Consider richer alternative widgets for identifier-heavy fields such as copyable text, badge or chip rendering, link-style rendering, or compact monospace output.
20
+ - [ ] Review whether `SolidShortTextAvatarWidget` should remain a general text widget that can also render object-shaped values, or whether that behavior should move to relation-oriented widgets only.
21
+ - [ ] Add a real-world example and a stricter rendering contract for `SolidShortTextAvatarWidget` so its intended usage is unambiguous.
22
+ - [ ] Improve `SolidShortTextFieldImageListWidget` with safe empty-state handling, broken-image fallbacks, and optional size configuration.
23
+ - [ ] Consider optional widget attrs for avatar and image-based widgets such as size, shape, fallback text, or tooltip behavior.
24
+ - [ ] Review whether masked list rendering should support a configurable mask style for high-sensitivity versus low-sensitivity secrets.
25
+
26
+ ## `longText`
27
+
28
+ - [ ] Decide whether `longText` should continue to reuse the shared text-column path or receive a dedicated long-text column renderer.
29
+ - [ ] Review whether list rendering should support an expanded preview mode instead of only relying on truncation and tooltip behavior.
30
+ - [ ] If list previews are important, consider a dedicated widget for excerpt-style rendering with configurable line or character limits.
31
+ - [ ] Review whether `truncateAfter` is sufficient for multiline content or whether `longText` columns need field-node level overrides.
32
+ - [ ] Consider a dedicated read-more or modal-preview widget for verbose administrative notes and descriptions.
33
+ - [ ] Add focused coverage for how multiline text is flattened or displayed inside list and tree cells.
34
+
35
+ ## `richText`
36
+
37
+ - [ ] Decide whether `richText` should continue to reuse the shared text-column path or receive a dedicated rich-text list renderer.
38
+ - [ ] Review whether list rendering should strip HTML more explicitly before truncation and search presentation.
39
+ - [ ] Consider a dedicated excerpt widget that converts rich text to clean plain text for list and tree readability.
40
+ - [ ] Review whether tooltip behavior is sufficient when rich-text content contains markup, links, or long structured blocks.
41
+ - [ ] Add focused coverage for how formatted content is flattened or displayed inside list and tree cells.
42
+
43
+ ## `json`
44
+
45
+ - [ ] Add an explicit core list-column path for `json`, since JSON fields are not currently wired into list dispatch.
46
+ - [ ] Decide what the default list rendering strategy should be for JSON values: raw string, compact preview, key summary, or expandable inspector.
47
+ - [ ] Consider a dedicated widget for compact JSON previews with truncation and pretty-print affordances.
48
+ - [ ] Review whether JSON fields should participate in list search and filtering by default or require more deliberate configuration.
49
+ - [ ] Add focused coverage for how JSON fields behave when they are included in list metadata before a dedicated renderer exists.
50
+
51
+ ## `int`
52
+
53
+ - [ ] Review whether `int` should continue to render through `DefaultTextListWidget`, or whether a dedicated numeric list widget would make formatting and numeric semantics clearer.
54
+ - [ ] Consider per-column numeric formatting options such as thousand separators, compact notation, or score-style emphasis without requiring a custom widget.
55
+ - [ ] Review whether integer columns should support a clearer separation between exact numeric filtering and text-style global search behavior.
56
+ - [ ] Add focused coverage for sorting, filtering, zero values, negative values, and tree-view reuse of the shared numeric column path.
57
+
58
+
59
+ ## `bigint`
60
+
61
+ - [ ] Review whether `bigint` should continue to reuse the `int` list-column path, especially when values may exceed JavaScript safe-integer handling or need exact display fidelity.
62
+ - [ ] Consider a dedicated bigint renderer that preserves large values reliably and supports copy-friendly presentation for legacy IDs and external request keys.
63
+ - [ ] Review whether global search and filter behavior for bigint fields should be more deliberate, since large identifiers are often looked up exactly rather than searched fuzzily.
64
+ - [ ] Add focused coverage for very large values, sorting behavior, truncation, and tree-view reuse of the shared numeric column path.
65
+
66
+
67
+ ## `decimal`
68
+
69
+ - [ ] Review whether `decimal` should continue to render through `DefaultTextListWidget`, or whether a dedicated numeric renderer should own precision-aware display.
70
+ - [ ] Consider per-column decimal formatting options such as fixed precision, compact display, currency-style rendering, or percentage-style rendering.
71
+ - [ ] Review whether decimal fields need clearer behavior for sorting and filtering when stored values arrive as numbers in some flows and strings in others.
72
+ - [ ] Add focused coverage for fractional values, zero values, sorting, filtering, and tree-view reuse of the shared numeric column path.
73
+
74
+
75
+ ## `boolean`
76
+
77
+ - [ ] Fix the default boolean list widget so it always reads the row value by field name rather than falling back to the column label, which can break rendering when `label` is customized.
78
+ - [ ] Review whether `boolean` columns should support richer visual states such as badges, chips, icons, or colored status pills in addition to plain text.
79
+ - [ ] Consider whether per-column boolean styling should support explicit positive and negative tone configuration without requiring a custom widget.
80
+ - [ ] Review whether `trueLabel` and `falseLabel` should also influence filtering affordances or only the rendered cell output.
81
+ - [ ] Add focused test coverage for label overrides, empty values, nullable booleans, and tree-view reuse of the default boolean list widget.
82
+
83
+ ## `date`
84
+
85
+ - [ ] Review whether `date` should continue to rely on the single default list widget or support a richer set of date-oriented render modes such as relative time, calendar badges, or status-style date indicators.
86
+ - [ ] Clarify the ownership of the `format` attr, because list formatting is currently layout-driven while form view formatting can be field-node driven.
87
+ - [ ] Consider whether date columns should support per-column format overrides without requiring a layout-wide date format.
88
+ - [ ] Add focused coverage for empty dates, invalid incoming values, sorting behavior, and tree-view reuse of the default date renderer.
89
+
90
+ ## `datetime`
91
+
92
+ - [ ] Review whether `datetime` should continue to rely on the single default list widget or support richer render modes such as relative time, age indicators, or event-state styling.
93
+ - [ ] Clarify the ownership of the `format` attr, because list formatting is currently layout-driven while form view formatting can be field-node driven.
94
+ - [ ] Consider whether datetime columns should support per-column format overrides without requiring a layout-wide datetime format.
95
+ - [ ] Add focused coverage for empty datetimes, invalid incoming values, sorting behavior, and tree-view reuse of the default datetime renderer.
96
+
97
+ ## `time`
98
+
99
+ - [ ] Review whether the shared text-column path is sufficient for `time`, or whether this field type should have a dedicated list widget that formats time-only values consistently.
100
+ - [ ] Clarify how `format` should behave for time fields in list and tree views, since the current list path does not use a dedicated time renderer.
101
+ - [ ] Consider whether schedule-heavy screens would benefit from compact time badges, range rendering, or more explicit time-only display modes.
102
+ - [ ] Add focused coverage for truncation, time-only formatting, invalid incoming values, and tree-view reuse of the current time renderer.
103
+
104
+ ## `email`
105
+
106
+ - [ ] Review whether the shared text-column path is sufficient for `email`, or whether this field type should have a dedicated list widget for mailto links, copy actions, or privacy-aware masking.
107
+ - [ ] Consider whether long email addresses need a field-node level truncation override beyond the existing layout-wide `truncateAfter` behavior.
108
+ - [ ] Review whether searchable email columns should expose more deliberate affordances for exact lookup versus partial text search.
109
+ - [ ] Add focused coverage for truncation, null values, long addresses, and tree-view reuse of the shared email renderer.
110
+
111
+ ## `password`
112
+
113
+ - [ ] Decide whether password fields should be blocked more explicitly from ordinary list and tree rendering rather than simply lacking a core renderer.
114
+ - [ ] Review whether metadata-driven lists should surface a clearer error or omit the field automatically when a password field is configured in a list layout.
115
+ - [ ] Add focused coverage for how unsupported password list rendering should behave so accidental exposure risks are easier to catch.
116
+
117
+ ## `selectionStatic`
118
+
119
+ - [ ] Review whether the shared text-column path is sufficient for `selectionStatic`, or whether this field type should have a dedicated list widget that makes the label-mapping contract more explicit.
120
+ - [ ] Fix or clarify multi-select list rendering, because the current shared mapping logic looks reliable for scalar values but fragile for JSON-stringified multi-select values.
121
+ - [ ] Consider richer list presentations for status-style selection fields such as badges, chips, color-coded pills, or icon-assisted labels.
122
+ - [ ] Decide whether per-column styling for selection-like fields should be configurable without requiring a custom widget.
123
+ - [ ] Add focused coverage for single-select label mapping, multi-select display, truncation behavior, and tree-view reuse of the shared renderer.
124
+
125
+ ## `selectionDynamic`
126
+
127
+ - [ ] Review whether the shared text-column path is sufficient for `selectionDynamic`, because core list rendering currently shows the row value directly and does not perform provider-backed label resolution at render time.
128
+ - [ ] Consider whether provider-backed fields need a dedicated list widget that can render resolved labels, chips, or badges more explicitly.
129
+ - [ ] Review how multi-select dynamic values should appear in list and tree cells when the stored value is an array or a JSON-stringified array.
130
+ - [ ] Add focused coverage for single-select rendering, multi-select rendering, truncation behavior, and provider-backed values that arrive in object-shaped forms.
131
+
132
+ ## `many-to-one`
133
+
134
+ - [ ] Review whether the default relation column should continue opening the related record from the cell, or whether that behavior should be configurable per column for denser operational lists.
135
+ - [ ] Clarify how `disabled` should affect rendering, because it currently changes both interactivity and the user’s expectation of whether the cell is navigable.
136
+ - [ ] Consider whether `many-to-one` columns should support richer visual modes such as link-plus-subtitle, avatar-plus-label, or badge-style rendering without requiring custom widgets.
137
+ - [ ] Review whether `coModelFieldToDisplay` should support safer fallbacks when the configured related field is missing from the loaded relation payload.
138
+ - [ ] Add focused coverage for interactive versus disabled cells, missing related records, search-oriented relation columns, and tree-view reuse of the default renderer.
139
+
140
+ ## `one-to-many`
141
+
142
+ - [ ] Review whether showing only the first related label plus `+N` is sufficient for collection-heavy screens, or whether a dedicated summary widget should support configurable previews.
143
+ - [ ] Consider whether one-to-many columns should support a popover, dialog, or tooltip preview of the first few related records for faster scanning.
144
+ - [ ] Clarify how `coModelFieldToDisplay` should behave when child records are partially loaded or when the configured display field is absent.
145
+ - [ ] Review whether long child labels or large child collections need better truncation and overflow behavior than the current compact summary path.
146
+ - [ ] Add focused coverage for empty collections, one-item collections, larger collections, missing child labels, and tree-view reuse of the default renderer.
147
+
148
+ ## `many-to-many`
149
+
150
+ - [ ] Review whether the default membership summary should support richer previews for tag-heavy or user-heavy relationships instead of always showing one label plus `+N`.
151
+ - [ ] Consider whether many-to-many columns should support chip- or badge-based rendering for small membership sets without requiring a custom widget.
152
+ - [ ] Clarify how `coModelFieldToDisplay` should behave when relation payloads are partial, sparse, or missing the configured display field.
153
+ - [ ] Review whether the avatar widget should support configurable preview count, tooltip behavior, or overflow presentation for larger relation sets.
154
+ - [ ] Add focused coverage for empty memberships, one-item memberships, larger memberships, avatar rendering, and tree-view reuse of the default renderer.
155
+
156
+ ## `mediaSingle`
157
+
158
+ - [ ] Review whether the default single-media column should support configurable preview size so media-heavy lists can trade density for visual clarity.
159
+ - [ ] Consider whether non-image files should show richer metadata such as file extension or download hint instead of only icon-driven rendering.
160
+ - [ ] Review whether lightbox and download behavior should be more explicit in the cell UI so users can predict what clicking the preview will do.
161
+ - [ ] Consider whether broken preview URLs and missing media payloads should degrade to a clearer empty or error state.
162
+ - [ ] Add focused coverage for image, video, audio, and document rendering, missing media payloads, and tree-view reuse of the default renderer.
163
+
164
+ ## `mediaMultiple`
165
+
166
+ - [ ] Review whether the first-item-plus-count summary is sufficient for document-heavy attachment sets, or whether a non-gallery list preview is needed.
167
+ - [ ] Consider whether multi-media columns should support configurable preview count or a more deliberate overflow affordance for large collections.
168
+ - [ ] Review whether clicking the cell should behave differently for image-led collections versus document-led collections so the interaction stays predictable.
169
+ - [ ] Consider whether the `+N` badge should expose a hover or dialog preview of the remaining attachments for quicker scanning.
170
+ - [ ] Add focused coverage for mixed media collections, image-led collections, document-led collections, empty collections, and tree-view reuse of the default renderer.
171
+
172
+ ## `computed`
173
+
174
+ - [ ] Review whether delegating entirely by `computedFieldValueType` is sufficient, or whether computed fields need a dedicated list wrapper for consistent affordances and styling.
175
+ - [ ] Consider whether computed identifier-style fields should support copyable or badge-style rendering without forcing every screen to treat them as generic text.
176
+ - [ ] Review whether computed numeric and date values should inherit all formatting options from their delegated scalar renderers or support computed-specific overrides.
177
+ - [ ] Clarify what should happen when `computedFieldValueType` is unsupported, missing, or mismatched with the actual stored value shape.
178
+ - [ ] Add focused coverage for text, int, decimal, boolean, date, and datetime computed values, unsupported value types, and tree-view reuse of delegated rendering.
@@ -1 +1 @@
1
- {"version":3,"file":"AdminTopHeader.d.ts","sourceRoot":"","sources":["../../../src/components/layout/AdminTopHeader.tsx"],"names":[],"mappings":"AA0BA,eAAO,MAAM,cAAc,+CA+K1B,CAAC"}
1
+ {"version":3,"file":"AdminTopHeader.d.ts","sourceRoot":"","sources":["../../../src/components/layout/AdminTopHeader.tsx"],"names":[],"mappings":"AA0BA,eAAO,MAAM,cAAc,+CAmL1B,CAAC"}
@@ -60,7 +60,11 @@ export var AdminTopHeader = function () {
60
60
  var moduleName = segments[2];
61
61
  var modelName = segments[3];
62
62
  var viewName = segments[4];
63
- var next = [moduleName, modelName, viewName].filter(Boolean).map(function (item) { return toLabel(item); });
63
+ var next = [
64
+ moduleName ? toLabel(moduleName) : null,
65
+ modelFromApi ? decodeURIComponent(modelFromApi) : modelName ? toLabel(modelName) : null,
66
+ viewName ? toLabel(viewName) : null,
67
+ ].filter(Boolean);
64
68
  return next.length ? next : ["Admin"];
65
69
  }
66
70
  var menuItemName = searchParams.get("menuItemName");
@@ -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 = [moduleName, modelName, viewName].filter(Boolean).map((item) => toLabel(item!));\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 >\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"]}
@@ -70,7 +70,11 @@ export const AdminTopHeader = () => {
70
70
  const moduleName = segments[2];
71
71
  const modelName = segments[3];
72
72
  const viewName = segments[4];
73
- const next = [moduleName, modelName, viewName].filter(Boolean).map((item) => toLabel(item!));
73
+ const next = [
74
+ moduleName ? toLabel(moduleName) : null,
75
+ modelFromApi ? decodeURIComponent(modelFromApi) : modelName ? toLabel(modelName) : null,
76
+ viewName ? toLabel(viewName) : null,
77
+ ].filter(Boolean) as string[];
74
78
  return next.length ? next : ["Admin"];
75
79
  }
76
80