@solidxai/core-ui 0.1.15 → 0.1.16-beta.1
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.
- package/README.md +1 -1
- package/dist/components/auth/AuthLayout.d.ts.map +1 -1
- package/dist/components/auth/AuthLayout.js +7 -7
- package/dist/components/auth/AuthLayout.js.map +1 -1
- package/dist/components/auth/AuthLayout.tsx +7 -11
- package/dist/components/common/SettingsComponent.module.css +7 -0
- package/dist/components/common/SolidLoadingState.d.ts.map +1 -1
- package/dist/components/common/SolidLoadingState.js +26 -0
- package/dist/components/common/SolidLoadingState.js.map +1 -1
- package/dist/components/common/SolidLoadingState.tsx +31 -0
- package/dist/components/common/SolidSettings/SettingsImageRemoveButton.d.ts.map +1 -1
- package/dist/components/common/SolidSettings/SettingsImageRemoveButton.js +2 -1
- package/dist/components/common/SolidSettings/SettingsImageRemoveButton.js.map +1 -1
- package/dist/components/common/SolidSettings/SettingsImageRemoveButton.tsx +3 -2
- package/dist/components/core/card/CardItem.d.ts.map +1 -1
- package/dist/components/core/card/CardItem.js +7 -1
- package/dist/components/core/card/CardItem.js.map +1 -1
- package/dist/components/core/card/CardItem.tsx +55 -45
- package/dist/components/core/card/SolidCardView.d.ts.map +1 -1
- package/dist/components/core/card/SolidCardView.js +1 -1
- package/dist/components/core/card/SolidCardView.js.map +1 -1
- package/dist/components/core/card/SolidCardView.tsx +1 -0
- package/dist/components/core/card/SolidCardViewConfigure.d.ts +1 -1
- package/dist/components/core/card/SolidCardViewConfigure.d.ts.map +1 -1
- package/dist/components/core/card/SolidCardViewConfigure.js +3 -3
- package/dist/components/core/card/SolidCardViewConfigure.js.map +1 -1
- package/dist/components/core/card/SolidCardViewConfigure.tsx +4 -3
- package/dist/components/core/chatter/SolidChatterHeader.d.ts.map +1 -1
- package/dist/components/core/chatter/SolidChatterHeader.js +10 -7
- package/dist/components/core/chatter/SolidChatterHeader.js.map +1 -1
- package/dist/components/core/chatter/SolidChatterHeader.tsx +12 -9
- package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.js +3 -3
- package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.tsx +2 -3
- package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js +1 -1
- package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js.map +1 -1
- package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.tsx +1 -1
- package/dist/components/core/filter/SolidBooleanFilterElement.js +1 -1
- package/dist/components/core/filter/SolidBooleanFilterElement.js.map +1 -1
- package/dist/components/core/filter/SolidBooleanFilterElement.tsx +1 -1
- package/dist/components/core/filter/SolidManyToManyFilterElement.js +1 -1
- package/dist/components/core/filter/SolidManyToManyFilterElement.js.map +1 -1
- package/dist/components/core/filter/SolidManyToManyFilterElement.tsx +1 -1
- package/dist/components/core/filter/SolidManyToOneFilterElement.js +1 -1
- package/dist/components/core/filter/SolidManyToOneFilterElement.js.map +1 -1
- package/dist/components/core/filter/SolidManyToOneFilterElement.tsx +1 -1
- package/dist/components/core/filter/SolidOneToManyFilterElement.js +1 -1
- package/dist/components/core/filter/SolidOneToManyFilterElement.js.map +1 -1
- package/dist/components/core/filter/SolidOneToManyFilterElement.tsx +1 -1
- package/dist/components/core/filter/SolidSelectionDynamicFilterElement.js +1 -1
- package/dist/components/core/filter/SolidSelectionDynamicFilterElement.js.map +1 -1
- package/dist/components/core/filter/SolidSelectionDynamicFilterElement.tsx +1 -1
- package/dist/components/core/filter/SolidSelectionStaticFilterElement.js +1 -1
- package/dist/components/core/filter/SolidSelectionStaticFilterElement.js.map +1 -1
- package/dist/components/core/filter/SolidSelectionStaticFilterElement.tsx +1 -1
- package/dist/components/core/filter/SolidVarInputsFilterElement.js +5 -5
- package/dist/components/core/filter/SolidVarInputsFilterElement.js.map +1 -1
- package/dist/components/core/filter/SolidVarInputsFilterElement.tsx +5 -5
- package/dist/components/core/filter/fields/SolidBooleanField.js +1 -1
- package/dist/components/core/filter/fields/SolidBooleanField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidBooleanField.tsx +1 -1
- package/dist/components/core/filter/fields/SolidDateField.js +1 -1
- package/dist/components/core/filter/fields/SolidDateField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidDateField.tsx +1 -1
- package/dist/components/core/filter/fields/SolidDatetimeField.js +1 -1
- package/dist/components/core/filter/fields/SolidDatetimeField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidDatetimeField.tsx +1 -1
- package/dist/components/core/filter/fields/SolidExternalIdField.js +1 -1
- package/dist/components/core/filter/fields/SolidExternalIdField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidExternalIdField.tsx +1 -1
- package/dist/components/core/filter/fields/SolidIdField.js +1 -1
- package/dist/components/core/filter/fields/SolidIdField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidIdField.tsx +1 -1
- package/dist/components/core/filter/fields/SolidIntField.js +1 -1
- package/dist/components/core/filter/fields/SolidIntField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidIntField.tsx +1 -1
- package/dist/components/core/filter/fields/SolidMediaMultipleField.js +1 -1
- package/dist/components/core/filter/fields/SolidMediaMultipleField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidMediaMultipleField.tsx +1 -1
- package/dist/components/core/filter/fields/SolidMediaSingleField.js +1 -1
- package/dist/components/core/filter/fields/SolidMediaSingleField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidMediaSingleField.tsx +1 -1
- package/dist/components/core/filter/fields/SolidSelectionDynamicField.js +1 -1
- package/dist/components/core/filter/fields/SolidSelectionDynamicField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidSelectionDynamicField.tsx +1 -1
- package/dist/components/core/filter/fields/SolidSelectionStaticField.js +1 -1
- package/dist/components/core/filter/fields/SolidSelectionStaticField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidSelectionStaticField.tsx +1 -1
- package/dist/components/core/filter/fields/SolidShortTextField.js +1 -1
- package/dist/components/core/filter/fields/SolidShortTextField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidShortTextField.tsx +1 -1
- package/dist/components/core/filter/fields/SolidTimeField.js +1 -1
- package/dist/components/core/filter/fields/SolidTimeField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidTimeField.tsx +1 -1
- package/dist/components/core/filter/fields/SolidUuidField.js +1 -1
- package/dist/components/core/filter/fields/SolidUuidField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidUuidField.tsx +1 -1
- package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.js +1 -1
- package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.js.map +1 -1
- package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.tsx +1 -1
- package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.js +1 -1
- package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.js.map +1 -1
- package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.tsx +1 -1
- package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.js +1 -1
- package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.js.map +1 -1
- package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.tsx +1 -1
- package/dist/components/core/form/fields/SolidMediaMultipleField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidMediaMultipleField.js +5 -3
- package/dist/components/core/form/fields/SolidMediaMultipleField.js.map +1 -1
- package/dist/components/core/form/fields/SolidMediaMultipleField.tsx +7 -3
- package/dist/components/core/form/fields/SolidMediaSingleField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidMediaSingleField.js +5 -2
- package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
- package/dist/components/core/form/fields/SolidMediaSingleField.tsx +7 -2
- package/dist/components/core/form/fields/solidFields.module.css +23 -15
- package/dist/components/core/kanban/KanbanCard.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanCard.js +9 -1
- package/dist/components/core/kanban/KanbanCard.js.map +1 -1
- package/dist/components/core/kanban/KanbanCard.tsx +28 -18
- package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.js +1 -1
- package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.tsx +1 -2
- package/dist/components/core/kanban/SolidKanbanViewConfigure.d.ts +1 -1
- package/dist/components/core/kanban/SolidKanbanViewConfigure.d.ts.map +1 -1
- package/dist/components/core/kanban/SolidKanbanViewConfigure.js +3 -3
- package/dist/components/core/kanban/SolidKanbanViewConfigure.js.map +1 -1
- package/dist/components/core/kanban/SolidKanbanViewConfigure.tsx +4 -3
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +1 -1
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +1 -0
- package/dist/components/core/list/SolidListViewConfigure.d.ts +1 -1
- package/dist/components/core/list/SolidListViewConfigure.d.ts.map +1 -1
- package/dist/components/core/list/SolidListViewConfigure.js +3 -4
- package/dist/components/core/list/SolidListViewConfigure.js.map +1 -1
- package/dist/components/core/list/SolidListViewConfigure.tsx +4 -4
- package/dist/components/core/model/FieldMetaDataForm.css +6 -0
- package/dist/components/core/model/FieldMetaDataForm.js +23 -23
- package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
- package/dist/components/core/model/FieldMetaDataForm.tsx +30 -30
- package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
- package/dist/components/core/tree/SolidTreeView.js +3 -2
- package/dist/components/core/tree/SolidTreeView.js.map +1 -1
- package/dist/components/core/tree/SolidTreeView.tsx +4 -1
- package/dist/components/core/users/CreateUserRole.js +1 -1
- package/dist/components/core/users/CreateUserRole.js.map +1 -1
- package/dist/components/core/users/CreateUserRole.tsx +1 -1
- package/dist/components/layout/FilterMenu.d.ts.map +1 -1
- package/dist/components/layout/FilterMenu.js +2 -1
- package/dist/components/layout/FilterMenu.js.map +1 -1
- package/dist/components/layout/FilterMenu.tsx +6 -5
- package/dist/components/layout/GlobalSearch.d.ts.map +1 -1
- package/dist/components/layout/GlobalSearch.js +2 -1
- package/dist/components/layout/GlobalSearch.js.map +1 -1
- package/dist/components/layout/GlobalSearch.tsx +2 -1
- package/dist/components/layout/ListingHeader.d.ts.map +1 -1
- package/dist/components/layout/ListingHeader.js +8 -4
- package/dist/components/layout/ListingHeader.js.map +1 -1
- package/dist/components/layout/ListingHeader.tsx +9 -9
- package/dist/components/layout/navbar-one.d.ts.map +1 -1
- package/dist/components/layout/navbar-one.js.map +1 -1
- package/dist/components/layout/navbar-one.tsx +4 -16
- package/dist/components/layout/navbar-two-menu.d.ts.map +1 -1
- package/dist/components/layout/navbar-two-menu.js +8 -3
- package/dist/components/layout/navbar-two-menu.js.map +1 -1
- package/dist/components/layout/navbar-two-menu.tsx +9 -4
- package/dist/components/shad-cn-ui/SolidDropdownMenu.d.ts +3 -1
- package/dist/components/shad-cn-ui/SolidDropdownMenu.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidDropdownMenu.js +3 -2
- package/dist/components/shad-cn-ui/SolidDropdownMenu.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidDropdownMenu.tsx +10 -3
- package/dist/components/shad-cn-ui/SolidIcon.js +1 -1
- package/dist/components/shad-cn-ui/SolidIcon.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidIcon.tsx +1 -1
- package/dist/components/workflow/WorkflowNodeDocsPanel.css +29 -0
- package/dist/components/workflow/WorkflowNodeSchemaEditor.css +65 -0
- package/dist/helpers/getAcceptedFileTypes.d.ts +1 -0
- package/dist/helpers/getAcceptedFileTypes.d.ts.map +1 -1
- package/dist/helpers/getAcceptedFileTypes.js +6 -0
- package/dist/helpers/getAcceptedFileTypes.js.map +1 -1
- package/dist/helpers/getAcceptedFileTypes.tsx +7 -0
- package/dist/helpers/mediaType.d.ts.map +1 -1
- package/dist/helpers/mediaType.js +6 -3
- package/dist/helpers/mediaType.js.map +1 -1
- package/dist/helpers/mediaType.ts +6 -3
- package/dist/resources/globals.css +94 -879
- package/dist/resources/solid-custom.css +93 -58
- package/dist/resources/solid-responsive.css +1 -106
- package/dist/resources/stylesheets/_config.scss +1 -10
- package/dist/resources/stylesheets/_utils.scss +0 -7
- package/dist/resources/themes/solid-dark-purple/theme.css +11 -5853
- package/dist/resources/themes/solid-light-purple/theme.css +6 -5896
- package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.css +0 -5
- package/dist/routes/pages/admin/core/WorkflowDefinitionEditorPage.css +293 -0
- package/dist/styles.d.ts +0 -1
- package/dist/styles.d.ts.map +1 -1
- package/dist/styles.js +0 -1
- package/dist/styles.js.map +1 -1
- package/dist/styles.ts +0 -1
- package/package.json +1 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidMediaSingleField.js","sourceRoot":"","sources":["../../../../../src/components/core/form/fields/SolidMediaSingleField.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mDAAmD,CAAC;AACxF,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EACL,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAEhE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAE3B,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAC5E,OAAO,oBAAoB,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iDAAiD,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAClE,OAAO,MAAM,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AASxD;IAKI,+BAAY,YAA6B,EAAE,eAAwE,EAC/G,eAAyC;QAJrC;;;;;WAA8B;QAC9B;;;;;WAAyE;QACzE;;;;;WAA0C;QAG9C,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IAC3C,CAAC;;;;;eAED,UAAe,KAAU,EAAE,QAAkB;YACzC,IAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAChD,IAAI,KAAK,YAAY,IAAI,EAAE;gBACvB,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;aACtD;QACL,CAAC;;;;;;eAED;YACI,IAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAClJ,OAAO,SAAS,CAAC;QACrB,CAAC;;;;;;eAED;YACI,+CAA+C;;YAE/C,IAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;YACtD,IAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAEhD,IAAM,UAAU,GAAG,MAAA,eAAe,CAAC,KAAK,CAAC,KAAK,mCAAI,aAAa,CAAC,WAAW,CAAC;YAC5E,mEAAmE;YAEnE,qBAAqB;YACrB,IAAI,MAAsC,CAAC;YAE3C,IAAI,aAAa,CAAC,QAAQ,EAAE;gBACxB,mDAAmD;gBACnD,MAAM,GAAG,GAAG,CAAC,KAAK,EAAiB;qBAC9B,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;qBACnD,IAAI,CACD,cAAc,CAAC,WAAW,EAC1B,cAAc,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAC9C,UAAC,KAAK;oBACF,OAAA,KAAK,YAAY,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAlD,CAAkD,CAAC,0BAA0B;iBACpF,CAAC;aACT;iBAAM;gBACH,+CAA+C;gBAC/C,MAAM,GAAG,GAAG,CAAC,KAAK,EAAO;qBACpB,QAAQ,EAAE,CAAC,wBAAwB;qBACnC,IAAI,CACD,cAAc,CAAC,WAAW,EAC1B,cAAc,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAC9C,UAAC,KAAK;oBACF,OAAA,KAAK,KAAK,IAAI,IAAI,aAAa;wBAC/B,KAAK,KAAK,SAAS,IAAI,kBAAkB;wBACzC,KAAK,YAAY,IAAI,IAAI,aAAa;wBACtC,KAAK,KAAK,OAAO;wBACjB,OAAO,KAAK,KAAK,QAAQ;gBAJzB,CAIyB,CAAC,eAAe;iBAChD,CAAC;aACT;YACD,OAAO,MAAM,CAAC;QAElB,CAAC;;;;;;eAED,UAAO,MAAoB;;YACvB,IAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;YACtD,IAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAChD,IAAM,SAAS,GAAG,CAAA,MAAA,eAAe,CAAC,KAAK,0CAAE,SAAS,KAAI,wBAAwB,CAAC;YAC/E,IAAM,gBAAgB,GAAG,UAAC,MAAW,EAAE,SAAiB,IAAK,OAAA,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAArD,CAAqD,CAAC;YAEnH,IAAI,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC;YAClD,IAAI,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC;YAClD,IAAI,CAAC,UAAU,EAAE;gBACb,UAAU,GAAG,kCAAkC,CAAC;aACnD;YACD,IAAI,CAAC,UAAU,EAAE;gBACb,UAAU,GAAG,kCAAkC,CAAC;aACnD;YACD,IAAM,QAAQ,GAAW,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;YAGpD,OAAO,CACH,4BACI,eAAK,SAAS,EAAE,SAAS,aACpB,QAAQ,KAAK,MAAM;4BAChB,IAAI,CAAC,yBAAyB,CAAC,UAAU,EAAE,MAAM,CAAC,EAErD,QAAQ,KAAK,MAAM;4BAChB,4BACK,UAAU;oCACP,IAAI,CAAC,yBAAyB,CAAC,UAAU,EAAE,MAAM,CAAC,GAEvD,IAEL,GACP,CACN,CAAC;QACN,CAAC;;;;;;eAGD,UAA0B,MAAc,EAAE,MAAoB;YAC1D,IAAI,aAAa,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAClD,IAAM,WAAW,GAAmC;gBAChD,MAAM,EAAE,MAAM;gBACd,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,eAAe,EAAE,IAAI,CAAC,eAAe;aACxC,CAAA;YACD,OAAO,CACH,4BACK,aAAa,IAAI,KAAC,aAAa,eAAK,WAAW,EAAI,GACrD,CACN,CAAA;QACL,CAAC;;IACL,4BAAC;AAAD,CAAC,AAnHD,IAmHC;;AAMD,MAAM,CAAC,IAAM,gCAAgC,GAAG,UAAC,EAA0F;;QAAxF,MAAM,YAAA,EAAE,YAAY,kBAAA,EAAE,eAAe,qBAAA,EAAE,eAAe,qBAAA;IACrG,IAAM,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC;IACjD,IAAM,eAAe,GAAG,YAAY,CAAC,KAAK,CAAC;IAC3C,IAAM,SAAS,GAAG,CAAA,MAAA,eAAe,CAAC,KAAK,0CAAE,SAAS,KAAI,wBAAwB,CAAC;IAC/E,IAAM,UAAU,GAAG,MAAA,eAAe,CAAC,KAAK,CAAC,KAAK,mCAAI,aAAa,CAAC,WAAW,CAAC;IAC5E,IAAM,gBAAgB,GAAG,MAAA,eAAe,CAAC,KAAK,CAAC,WAAW,mCAAI,aAAa,CAAC,WAAW,CAAC;IACxF,IAAM,qBAAqB,GAAG,YAAY,CAAC,qBAAqB,CAAC;IACjE,IAAM,cAAc,GAAG,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,SAAS,CAAC;IACzD,IAAM,kBAAkB,GAAG,YAAY,CAAC,QAAQ,CAAC;IACjD,IAAM,QAAQ,GAAW,YAAY,CAAC,QAAQ,CAAC;IAE/C,IAAM,aAAa,GAAG,MAAA,eAAe,CAAC,KAAK,0CAAE,QAAQ,CAAC;IACtD,IAAM,aAAa,GAAG,MAAA,eAAe,CAAC,KAAK,0CAAE,QAAQ,CAAC;IAEtD,IAAM,YAAY,GAAG,MAAA,MAAA,MAAA,qBAAqB,CAAC,IAAI,CAAC,SAAS,0CAAE,MAAM,0CAAE,KAAK,0CAAE,QAAQ,CAAC;IACnF,IAAM,YAAY,GAAG,MAAA,MAAA,MAAA,qBAAqB,CAAC,IAAI,CAAC,SAAS,0CAAE,MAAM,0CAAE,KAAK,0CAAE,QAAQ,CAAC;IAEnF,IAAM,eAAe,GAAG,YAAY,IAAI,aAAa,CAAC;IACtD,IAAM,eAAe,GAAG,YAAY,IAAI,aAAa,IAAI,kBAAkB,CAAC;IAEtE,IAAA,KAA4D,QAAQ,CAAC,KAAK,CAAC,EAA1E,0BAA0B,QAAA,EAAE,2BAA2B,QAAmB,CAAC;IAC5E,IAAA,KAAgC,QAAQ,CAA+B,IAAI,CAAC,EAA3E,WAAW,QAAA,EAAE,cAAc,QAAgD,CAAC;IAC7E,IAAA,KAA8D,QAAQ,CAAC,KAAK,CAAC,EAA5E,2BAA2B,QAAA,EAAE,4BAA4B,QAAmB,CAAC;IAC9E,IAAA,KAAwC,QAAQ,CAAM,IAAI,CAAC,EAA1D,eAAe,QAAA,EAAE,kBAAkB,QAAuB,CAAC;IAC5D,IAAA,KAAoC,QAAQ,CAAgB,IAAI,CAAC,EAAhE,aAAa,QAAA,EAAE,gBAAgB,QAAiC,CAAC;IACxE,IAAM,WAAW,GAAG,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,IAAI,CAAC;IAEhD,IAAM,cAAc,GAAG,UAAC,IAAY;QAChC,OAAO,IAAI,IAAI,IAAI,GAAG,IAAI;YACtB,CAAC,CAAC,UAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAK;YAC3C,CAAC,CAAC,UAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAK,CAAC;IAC3C,CAAC,CAAC;IAEK,IAAA,WAAW,GAAI,sBAAsB,EAAE,GAA5B,CAA6B;IAC/C,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,IAAM,iBAAiB,GAAG;QACtB,cAAc,CAAC,IAAI,CAAC,CAAC;QACrB,YAAY,CAAC,QAAQ,CACjB;YACI,MAAM,EAAE;gBACJ,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI;gBAChC,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE,MAAM;aACf;SACG,EACR,eAAe,CAClB,CAAC;IACN,CAAC,CAAC;IAEF,IAAM,4BAA4B,GAAG,UAAO,KAAc;;;;;oBACtD,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;oBAErC,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;yBACvC,CAAA,OAAO,KAAK,IAAI,CAAA,EAAhB,wBAAgB;oBAChB,qBAAM,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAA;;oBAAnC,SAAmC,CAAC;;;;;SAE3C,CAAC;IAEF,IAAM,kBAAkB,GAAG,UAAO,CAAmB;;;;;;oBACjD,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;oBACzC,CAAC,CAAC,eAAe,EAAE,CAAC;;;;oBAEhB,qBAAM,4BAA4B,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAA;;oBAA9E,SAA8E,CAAC;oBAC/E,iBAAiB,EAAE,CAAC;;;;oBAEpB,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,mBAAmB,EAAE,OAAK,CAAC,CAAC;oBACzD,QAAQ,CAAC,SAAS,CAAC;wBACf,QAAQ,EAAE,OAAO;wBACjB,OAAO,EAAE,eAAe;wBACxB,MAAM,EAAE,CAAA,MAAA,OAAK,aAAL,OAAK,uBAAL,OAAK,CAAE,IAAI,0CAAE,OAAO,MAAI,OAAK,aAAL,OAAK,uBAAL,OAAK,CAAE,OAAO,CAAA,IAAI,cAAc,CAAC,mBAAmB;wBACpF,IAAI,EAAE,IAAI;qBACb,CAAC,CAAC,CAAC;;;oBAER,2BAA2B,CAAC,KAAK,CAAC,CAAC;;;;SACtC,CAAC;IAEF,IAAM,eAAe,GAAG,UAAC,aAAoB;QACzC,IAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,WAAW,EAAE;YACb,8DAA8D;YAC9D,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACzB,4BAA4B,CAAC,IAAI,CAAC,CAAC;SACtC;aAAM;YACH,6CAA6C;YAC7C,UAAU,CAAC,IAAI,CAAC,CAAC;SACpB;IACL,CAAC,CAAC;IAEF,IAAM,UAAU,GAAG,UAAC,IAAU;QAC1B,cAAc,CAAC;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;YAClC,QAAQ,EAAE,IAAI,CAAC,IAAI;SACtB,CAAC,CAAC;QAEH,IAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC3B,YAAY,CAAC,QAAQ,CACjB;YACI,MAAM,EAAE;gBACJ,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI;gBAChC,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE,MAAM;aACf;SACG,EACR,eAAe,CAClB,CAAC;IACN,CAAC,CAAC;IAEF,IAAM,iBAAiB,GAAG;;;;;;;oBAElB,qBAAM,4BAA4B,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAA;;oBAA9E,SAA8E,CAAC;oBAC/E,iBAAiB,EAAE,CAAC;oBAEpB,kCAAkC;oBAClC,IAAI,eAAe,EAAE;wBACjB,UAAU,CAAC,eAAe,CAAC,CAAC;wBAC5B,kBAAkB,CAAC,IAAI,CAAC,CAAC;qBAC5B;;;;oBAED,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,mBAAmB,EAAE,OAAK,CAAC,CAAC;oBACzD,QAAQ,CAAC,SAAS,CAAC;wBACf,QAAQ,EAAE,OAAO;wBACjB,OAAO,EAAE,gBAAgB;wBACzB,MAAM,EAAE,CAAA,MAAA,OAAK,aAAL,OAAK,uBAAL,OAAK,CAAE,IAAI,0CAAE,OAAO,MAAI,OAAK,aAAL,OAAK,uBAAL,OAAK,CAAE,OAAO,CAAA,IAAI,cAAc,CAAC,mBAAmB;wBACpF,IAAI,EAAE,IAAI;qBACb,CAAC,CAAC,CAAC;;;oBAER,4BAA4B,CAAC,KAAK,CAAC,CAAC;;;;SACvC,CAAC;IAEF,SAAS,CAAC;QACN,IAAM,UAAU,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;YAC/C,cAAc,CAAC,IAAI,CAAC,CAAC;YACrB,OAAO;SACV;QAED,IAAI,UAAU,YAAY,IAAI,EAAE;YAC5B,IAAM,SAAO,GAAG,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAChD,cAAc,CAAC;gBACX,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,OAAO,WAAA;gBACP,QAAQ,EAAE,UAAU,CAAC,IAAI;aAC5B,CAAC,CAAC;YAEH,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC7D,OAAO,cAAM,OAAA,GAAG,CAAC,eAAe,CAAC,SAAO,CAAC,EAA5B,CAA4B,CAAC;SAC7C;QAED,IAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,OAAO,EAAE;YACV,cAAc,CAAC,IAAI,CAAC,CAAC;YACrB,OAAO;SACV;QAED,cAAc,CAAC;YACX,IAAI,EAAE,UAAU,CAAC,gBAAgB;YACjC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI;YACjE,OAAO,SAAA;YACP,QAAQ,EAAE,UAAU,CAAC,QAAQ;SAChC,CAAC,CAAC;QAEH,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACjE,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAE1C,IAAA,KAIF,WAAW,CAAC;QACZ,MAAM,EAAE,eAAe;QACvB,cAAc,EAAE,UAAC,cAAc;;YAC3B,IAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;YACpC,IAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,IAAI,KAAK,gBAAgB,EAA7B,CAA6B,CAAC,CAAC;YAC9E,IAAI,SAAS,EAAE;gBACX,gBAAgB,CAAC,cAAc,CAAC,cAAc,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC;aACjF;iBAAM;gBACH,gBAAgB,CAAC,CAAA,MAAA,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,0CAAE,OAAO,KAAI,cAAc,CAAC,eAAe,CAAC,CAAC;aACpF;QACL,CAAC;QACD,MAAM,EAAE,oBAAoB,CAAC,aAAa,CAAC,UAAU,EAAE,aAAa,CAAC,sBAAsB,EAAE,WAAW,CAAC;QACzG,OAAO,EAAE,aAAa,CAAC,cAAc,GAAG,IAAI;QAC5C,QAAQ,EAAE,eAAe,IAAI,eAAe;KAC/C,CAAC,EAjBgB,YAAY,kBAAA,EACX,aAAa,mBAAA,EACd,YAAY,kBAe5B,CAAC;IAEH,IAAM,gBAAgB,GAAG,UAAC,MAAW,EAAE,SAAiB,IAAK,OAAA,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAArD,CAAqD,CAAC;IACnH,IAAI,aAAa,GAAG,qBAAqB,CAAC,qCAAqC,CAAC,CAAC;IACjF,IAAM,WAAW,GAAG;QAChB,MAAM,EAAE,MAAM;QACd,YAAY,EAAE,YAAY;QAC1B,eAAe,EAAE,eAAe;QAChC,eAAe,EAAE,eAAe;KACnC,CAAA;IAED,IAAM,cAAc,GAAG,UAAC,GAAQ;QAC5B,IAAM,WAAW,GAAG,mBAAmB,CAAC;YACpC,GAAG,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO;YACjB,QAAQ,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI;YACnB,QAAQ,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI;SACtB,CAAC,CAAC;QAEH,IAAI,mBAAmB,CAAC,WAAW,CAAC,EAAE;YAClC,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAG;gBACd;oBACI,GAAG,EAAE,GAAG,CAAC,OAAO;oBAChB,WAAW,EAAE,GAAG,CAAC,OAAO;oBACxB,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;iBACtD;aACJ,CAAC,CAAC;YACH,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAG,IAAI,CAAC,CAAC;YACxB,OAAO;SACV;QAED,iBAAiB,CAAC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,CAAC,CAAC;IACpC,CAAC,CAAA;IAGD,OAAO,CACH,eAAK,KAAK,EAAE,CAAC,eAAe,KAAK,IAAI,IAAI,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,aACvH,eAAK,SAAS,EAAE,UAAG,MAAM,CAAC,YAAY,cAAW,aAC5C,cAAc,IAAI,KAAK;wBACpB,iBAAO,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,UAAG,MAAM,CAAC,UAAU,sBAAmB,aAAG,UAAU,EACtG,aAAa,CAAC,QAAQ,IAAI,eAAM,SAAS,EAAC,cAAc,mBAAU,EACnE,KAAC,iBAAiB,IAAC,YAAY,EAAE,YAAY,GAAI,IAE7C,EAEZ,eAAK,SAAS,EAAC,UAAU,aACrB,0BACQ,YAAY,EAAE,IAClB,SAAS,EAAC,wBAAwB,aAElC,2BAAW,aAAa,EAAE,EAAI,EAC9B,KAAC,mBAAmB,IAChB,UAAU,EAAE,aAAa,CAAC,UAAU,EACpC,sBAAsB,EAAE,aAAa,CAAC,sBAAsB,EAC5D,cAAc,EAAE,aAAa,CAAC,cAAc,GAC9C,KACA,EACL,gBAAgB,CAAC,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CACrD,cAAK,SAAS,EAAC,eAAe,YAC1B,KAAC,YAAY,IAAC,QAAQ,EAAC,OAAO,EAAC,IAAI,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,0CAAE,QAAQ,EAAE,GAAI,GAC7F,CACT,IACC,EAEF,aAAa;wBACb,KAAC,YAAY,IAAC,QAAQ,EAAC,OAAO,EAAC,IAAI,EAAE,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,QAAQ,EAAE,GAAI,EAErE,WAAW,IAAI,CACZ,cAAK,SAAS,EAAE,UAAG,MAAM,CAAC,mBAAmB,UAAO,YAChD,eAAK,SAAS,EAAE,UAAG,MAAM,CAAC,kBAAkB,gCAA6B,aACrE,KAAC,aAAa,IAAC,WAAW,EAAE,WAAW,GAAI,EAC3C,eAAK,SAAS,EAAE,UAAG,MAAM,CAAC,mBAAmB,YAAS,aAClD,eAAK,SAAS,EAAC,wCAAwC,aACnD,iBACI,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,MAAM,CAAC,mBAAmB,EACrC,OAAO,EAAE,cAAM,OAAA,cAAc,CAAC,WAAW,CAAC,EAA3B,CAA2B,EAC1C,KAAK,EAAE,WAAW,CAAC,IAAI,YAEtB,WAAW,CAAC,IAAI,GACZ,EACT,eAAK,SAAS,EAAE,UAAG,MAAM,CAAC,sBAAsB,6BAA0B,aACtE,iBACI,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,qBAAqB,EAC/B,QAAQ,EAAE,eAAe,IAAI,eAAe,gBACjC,eAAe,EAC1B,OAAO,EAAE,UAAC,KAAK;gEACX,KAAK,CAAC,cAAc,EAAE,CAAC;gEACvB,KAAK,CAAC,eAAe,EAAE,CAAC;gEACxB,iBAAiB,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI,CAAC,CAAC;4DAC/D,CAAC,YAED,KAAC,SAAS,IAAC,IAAI,EAAC,aAAa,wBAAe,GACvC,EACT,iBACI,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,+BAA+B,EACzC,QAAQ,EAAE,eAAe,IAAI,eAAe,gBACjC,aAAa,EACxB,OAAO,EAAE,cAAM,OAAA,2BAA2B,CAAC,IAAI,CAAC,EAAjC,CAAiC,YAEhD,KAAC,SAAS,IAAC,IAAI,EAAC,UAAU,wBAAe,GACpC,IACP,IACJ,EACN,cAAK,SAAS,EAAE,MAAM,CAAC,mBAAmB,YACrC,WAAW,IAAI,cAAc,CAAC,WAAW,CAAC,QAAQ,CAAC,GAClD,IACJ,IACJ,GACJ,CACT,IACC,EACN,MAAC,WAAW,IACR,IAAI,EAAE,0BAA0B,EAChC,YAAY,EAAE,2BAA2B,EACzC,SAAS,EAAC,6BAA6B,aAEvC,MAAC,iBAAiB,IAAC,SAAS,EAAC,0BAA0B,aACnD,KAAC,gBAAgB,iCAAkC,EACnD,KAAC,gBAAgB,KAAG,IACJ,EACpB,KAAC,oBAAoB,IAAC,SAAS,EAAC,yBAAyB,GAAG,EAC5D,KAAC,eAAe,IAAC,SAAS,EAAC,0BAA0B,YACjD,YAAG,SAAS,EAAC,0BAA0B,uDAA2C,GACpE,EAClB,MAAC,iBAAiB,IAAC,SAAS,EAAC,6BAA6B,aACtD,KAAC,WAAW,IAAC,OAAO,EAAC,aAAa,EAAC,IAAI,EAAC,IAAI,EAAC,SAAS,QAAC,OAAO,EAAE,kBAAkB,uBAEpE,EACd,KAAC,WAAW,IAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,cAAM,OAAA,2BAA2B,CAAC,KAAK,CAAC,EAAlC,CAAkC,uBAE5E,IACE,IACV,EACd,MAAC,WAAW,IACR,IAAI,EAAE,2BAA2B,EACjC,YAAY,EAAE,4BAA4B,EAC1C,SAAS,EAAC,6BAA6B,aAEvC,MAAC,iBAAiB,IAAC,SAAS,EAAC,0BAA0B,aACnD,KAAC,gBAAgB,gCAAiC,EAClD,KAAC,gBAAgB,KAAG,IACJ,EACpB,KAAC,oBAAoB,IAAC,SAAS,EAAC,yBAAyB,GAAG,EAC5D,KAAC,eAAe,IAAC,SAAS,EAAC,0BAA0B,YACjD,YAAG,SAAS,EAAC,0BAA0B,iGAAqF,GAC9G,EAClB,MAAC,iBAAiB,IAAC,SAAS,EAAC,6BAA6B,aACtD,KAAC,WAAW,IAAC,OAAO,EAAC,aAAa,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,iBAAiB,wBAEzD,EACd,KAAC,WAAW,IAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,cAAM,OAAA,4BAA4B,CAAC,KAAK,CAAC,EAAnC,CAAmC,uBAE7E,IACE,IACV,IACZ,CACT,CAAC;AACN,CAAC,CAAA;AAED,MAAM,CAAC,IAAM,gCAAgC,GAAG,UAAC,EAA0F;;QAAxF,MAAM,YAAA,EAAE,YAAY,kBAAA,EAAE,eAAe,qBAAA,EAAE,eAAe,qBAAA;IAC/F,IAAA,KAAgC,QAAQ,CAA+B,IAAI,CAAC,EAA3E,WAAW,QAAA,EAAE,cAAc,QAAgD,CAAC;IACnF,IAAM,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC;IACjD,IAAM,eAAe,GAAG,YAAY,CAAC,KAAK,CAAC;IAC3C,IAAM,SAAS,GAAG,CAAA,MAAA,eAAe,CAAC,KAAK,0CAAE,SAAS,KAAI,wBAAwB,CAAC;IAC/E,IAAM,UAAU,GAAG,MAAA,eAAe,CAAC,KAAK,CAAC,KAAK,mCAAI,aAAa,CAAC,WAAW,CAAC;IAC5E,IAAM,cAAc,GAAG,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,SAAS,CAAC;IAEzD,qFAAqF;IAErF,IAAM,gBAAgB,GAAG,UAAC,MAAW,EAAE,SAAiB,IAAK,OAAA,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAArD,CAAqD,CAAC;IACnH,IAAM,cAAc,GAAG,UAAC,IAAY;QAChC,OAAO,IAAI,IAAI,IAAI,GAAG,IAAI;YACtB,CAAC,CAAC,UAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAK;YAC3C,CAAC,CAAC,UAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAK,CAAC;IAC3C,CAAC,CAAC;IAEF,SAAS,CAAC;QACN,IAAM,UAAU,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;YAC/C,cAAc,CAAC,IAAI,CAAC,CAAC;YACrB,OAAO;SACV;QAED,IAAI,UAAU,YAAY,IAAI,EAAE;YAC5B,IAAM,SAAO,GAAG,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAChD,cAAc,CAAC;gBACX,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,OAAO,WAAA;gBACP,QAAQ,EAAE,UAAU,CAAC,IAAI;aAC5B,CAAC,CAAC;YAEH,OAAO,cAAM,OAAA,GAAG,CAAC,eAAe,CAAC,SAAO,CAAC,EAA5B,CAA4B,CAAC;SAC7C;QAED,IAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,OAAO,EAAE;YACV,cAAc,CAAC,IAAI,CAAC,CAAC;YACrB,OAAO;SACV;QAED,cAAc,CAAC;YACX,IAAI,EAAE,UAAU,CAAC,gBAAgB;YACjC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI;YACjE,OAAO,SAAA;YACP,QAAQ,EAAE,UAAU,CAAC,QAAQ;SAChC,CAAC,CAAC;IACP,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAEhD,IAAM,cAAc,GAAG,UAAC,GAAQ;QAC5B,IAAM,WAAW,GAAG,mBAAmB,CAAC;YACpC,GAAG,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO;YACjB,QAAQ,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI;YACnB,QAAQ,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI;SACtB,CAAC,CAAC;QAEH,IAAI,mBAAmB,CAAC,WAAW,CAAC,EAAE;YAClC,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAG;gBACd;oBACI,GAAG,EAAE,GAAG,CAAC,OAAO;oBAChB,WAAW,EAAE,GAAG,CAAC,OAAO;oBACxB,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;iBACtD;aACJ,CAAC,CAAC;YACH,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAG,IAAI,CAAC,CAAC;YACxB,OAAO;SACV;QAED,iBAAiB,CAAC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,CAAC,CAAC;IACpC,CAAC,CAAA;IAED,OAAO,CACH,eAAK,SAAS,EAAE,UAAG,MAAM,CAAC,gBAAgB,cAAW,aAChD,cAAc,IAAI,KAAK;gBACpB,iBAAO,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,UAAG,MAAM,CAAC,cAAc,sBAAmB,aAAG,UAAU,EAC3G,KAAC,iBAAiB,IAAC,YAAY,EAAE,YAAY,GAAI,IAC7C,EAGX,WAAW,IAAI,CACZ,cAAK,SAAS,EAAE,UAAG,MAAM,CAAC,mBAAmB,cAAI,MAAM,CAAC,uBAAuB,UAAO,YAClF,eAAK,SAAS,EAAE,UAAG,MAAM,CAAC,kBAAkB,gCAA6B,aACrE,KAAC,aAAa,IAAC,WAAW,EAAE,WAAW,GAAI,EAC3C,eAAK,SAAS,EAAE,UAAG,MAAM,CAAC,mBAAmB,YAAS,aAClD,eAAK,SAAS,EAAC,wCAAwC,aACnD,iBACI,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,MAAM,CAAC,mBAAmB,EACrC,OAAO,EAAE,cAAM,OAAA,cAAc,CAAC,WAAW,CAAC,EAA3B,CAA2B,EAC1C,KAAK,EAAE,WAAW,CAAC,IAAI,YAEtB,WAAW,CAAC,IAAI,GACZ,EACT,cAAK,SAAS,EAAE,UAAG,MAAM,CAAC,sBAAsB,gCAA6B,YACzE,iBACI,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,qBAAqB,gBACpB,eAAe,EAC1B,OAAO,EAAE,UAAC,KAAK;oDACX,KAAK,CAAC,cAAc,EAAE,CAAC;oDACvB,KAAK,CAAC,eAAe,EAAE,CAAC;oDACxB,iBAAiB,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI,CAAC,CAAC;gDAC/D,CAAC,YAED,KAAC,SAAS,IAAC,IAAI,EAAC,aAAa,wBAAe,GACvC,GACP,IACJ,EACN,cAAK,SAAS,EAAE,MAAM,CAAC,mBAAmB,YACrC,WAAW,IAAI,cAAc,CAAC,WAAW,CAAC,QAAQ,CAAC,GAClD,IACJ,IACJ,GACJ,CACT,IACC,CACT,CAAC;AACN,CAAC,CAAA","sourcesContent":["\nimport { DropzonePlaceholder } from \"../../../../components/common/DropzonePlaceholder\";\nimport { useDeleteMediaMutation } from \"../../../../redux/api/mediaApi\";\nimport { SolidButton } from \"../../../shad-cn-ui/SolidButton\";\nimport {\n SolidDialog,\n SolidDialogBody,\n SolidDialogClose,\n SolidDialogFooter,\n SolidDialogHeader,\n SolidDialogSeparator,\n SolidDialogTitle,\n} from \"../../../shad-cn-ui/SolidDialog\";\nimport { SolidMessage } from \"../../../shad-cn-ui/SolidMessage\";\nimport { SolidProgressBar } from \"../../../shad-cn-ui/SolidProgressBar\";\nimport { useEffect, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { useDropzone } from \"react-dropzone\";\nimport * as Yup from 'yup';\nimport { FormikObject, ISolidField, SolidFieldProps } from \"./ISolidField\";\nimport { FileReaderExt } from \"../../../../components/common/FileReaderExt\";\nimport getAcceptedFileTypes from \"../../../../helpers/getAcceptedFileTypes\";\nimport { downloadMediaFile } from \"../../../../helpers/downloadMediaFile\";\nimport { getExtensionComponent } from \"../../../../helpers/registry\";\nimport { openMediaInNewTab } from \"../../../../helpers/mediaUrl\";\nimport { getMediaPreviewKind, isLightboxMediaKind } from \"../../../../helpers/mediaType\";\nimport { SolidMediaFormFieldWidgetProps } from \"../../../../types/solid-core\";\nimport { SolidFieldTooltip } from \"../../../../components/common/SolidFieldTooltip\";\nimport { ERROR_MESSAGES } from \"../../../../constants/error-messages\";\nimport { showToast } from \"../../../../redux/features/toastSlice\";\nimport styles from \"./solidFields.module.css\";\nimport { SolidIcon } from \"../../../shad-cn-ui\";\nimport { getPersistedMediaId } from \"./mediaFieldUtils\";\n\ntype SingleMediaFileDetail = {\n name: string;\n type: string;\n fileUrl: string;\n fileSize: number;\n};\n\nexport class SolidMediaSingleField implements ISolidField {\n\n private fieldContext: SolidFieldProps;\n private setLightboxUrls?: (urls: { src: string; downloadUrl: string }[]) => void;\n private setOpenLightbox?: (open: boolean) => void;\n constructor(fieldContext: SolidFieldProps, setLightboxUrls?: (urls: { src: string; downloadUrl: string }[]) => void,\n setOpenLightbox?: (open: boolean) => void) {\n this.fieldContext = fieldContext;\n this.setLightboxUrls = setLightboxUrls;\n this.setOpenLightbox = setOpenLightbox;\n }\n\n updateFormData(value: any, formData: FormData): any {\n const fieldLayoutInfo = this.fieldContext.field;\n if (value instanceof File) {\n formData.append(fieldLayoutInfo.attrs.name, value);\n }\n }\n\n initialValue(): any {\n const mediaUrls = this.fieldContext.data && this.fieldContext.data._media && this.fieldContext.data._media[this.fieldContext.field.attrs.name][0];\n return mediaUrls;\n }\n\n validationSchema(): Yup.Schema {\n // let schema: Yup.StringSchema = Yup.object();\n\n const fieldMetadata = this.fieldContext.fieldMetadata;\n const fieldLayoutInfo = this.fieldContext.field;\n\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n // Dynamically determine the base type based on the 'required' flag\n\n // Define base schema\n let schema: Yup.MixedSchema<File | object>;\n\n if (fieldMetadata.required) {\n // For required fields: disallow null and undefined\n schema = Yup.mixed<File | object>()\n .required(ERROR_MESSAGES.FIELD_REUQIRED(fieldLabel))\n .test(\n ERROR_MESSAGES.FILE_OBJECT,\n ERROR_MESSAGES.MUST_BE_FILE_OBJECT(fieldLabel),\n (value) =>\n value instanceof File || typeof value === \"object\" // Validate File or object\n );\n } else {\n // For optional fields: allow null or undefined\n schema = Yup.mixed<any>()\n .nullable() // Allow null explicitly\n .test(\n ERROR_MESSAGES.FILE_OBJECT,\n ERROR_MESSAGES.MUST_BE_FILE_OBJECT(fieldLabel),\n (value) =>\n value === null || // Allow null\n value === undefined || // Allow undefined\n value instanceof File || // Allow File\n value === 'false' ||\n typeof value === \"object\" // Allow object\n );\n }\n return schema;\n\n }\n\n render(formik: FormikObject) {\n const fieldMetadata = this.fieldContext.fieldMetadata;\n const fieldLayoutInfo = this.fieldContext.field;\n const className = fieldLayoutInfo.attrs?.className || 'field w-full px-2 pt-2';\n const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];\n\n let viewWidget = fieldLayoutInfo.attrs.viewWidget;\n let editWidget = fieldLayoutInfo.attrs.editWidget;\n if (!editWidget) {\n editWidget = 'DefaultMediaSingleFormEditWidget';\n }\n if (!viewWidget) {\n viewWidget = 'DefaultMediaSingleFormViewWidget';\n }\n const viewMode: string = this.fieldContext.viewMode;\n\n\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 </div>\n </>\n );\n }\n\n\n renderExtensionRenderMode(widget: string, formik: FormikObject) {\n let DynamicWidget = getExtensionComponent(widget);\n const widgetProps: SolidMediaFormFieldWidgetProps = {\n formik: formik,\n fieldContext: this.fieldContext,\n setLightboxUrls: this.setLightboxUrls,\n setOpenLightbox: this.setOpenLightbox\n }\n return (\n <>\n {DynamicWidget && <DynamicWidget {...widgetProps} />}\n </>\n )\n }\n}\n\n\n\n\n\nexport const DefaultMediaSingleFormEditWidget = ({ formik, fieldContext, setLightboxUrls, setOpenLightbox }: SolidMediaFormFieldWidgetProps) => {\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n const className = fieldLayoutInfo.attrs?.className || 'field w-full px-2 pt-2';\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const fieldDescription = fieldLayoutInfo.attrs.description ?? fieldMetadata.description;\n const solidFormViewMetaData = fieldContext.solidFormViewMetaData;\n const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;\n const readOnlyPermission = fieldContext.readOnly;\n const viewMode: string = fieldContext.viewMode;\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 const isFieldDisabled = formDisabled || fieldDisabled;\n const isFieldReadonly = formReadonly || fieldReadonly || readOnlyPermission;\n\n const [isDeleteImageDialogVisible, setDeleteImageDialogVisible] = useState(false);\n const [fileDetails, setFileDetails] = useState<SingleMediaFileDetail | null>(null);\n const [isReplaceImageDialogVisible, setReplaceImageDialogVisible] = useState(false);\n const [newFileToUpload, setNewFileToUpload] = useState<any>(null);\n const [fileSizeError, setFileSizeError] = useState<string | null>(null);\n const mediaConfig = solidFormViewMetaData?.data;\n\n const formatFileSize = (size: number) => {\n return size >= 1024 * 1024\n ? `${(size / (1024 * 1024)).toFixed(1)} MB`\n : `${(size / 1024).toFixed(1)} KB`;\n };\n\n const [deleteMedia] = useDeleteMediaMutation();\n const dispatch = useDispatch();\n\n const clearSelectedFile = () => {\n setFileDetails(null);\n fieldContext.onChange(\n {\n target: {\n name: fieldLayoutInfo.attrs.name,\n value: null,\n type: \"text\",\n },\n } as any,\n \"onFieldChange\"\n );\n };\n\n const deletePersistedMediaIfNeeded = async (value: unknown) => {\n console.log(\"DeletePersistedMedia Called\");\n \n const mediaId = getPersistedMediaId(value);\n if (mediaId !== null) {\n await deleteMedia(mediaId).unwrap();\n }\n };\n\n const handleCancelUpload = async (e: React.MouseEvent) => {\n console.log(\"handleCancelUpload called\");\n e.stopPropagation();\n try {\n await deletePersistedMediaIfNeeded(formik?.values[fieldLayoutInfo.attrs.name]);\n clearSelectedFile();\n } catch (error: any) {\n console.error(ERROR_MESSAGES.ERROR_DELETING_FILE, error);\n dispatch(showToast({\n severity: \"error\",\n summary: \"Delete Failed\",\n detail: error?.data?.message || error?.message || ERROR_MESSAGES.ERROR_DELETING_FILE,\n life: 4000,\n }));\n }\n setDeleteImageDialogVisible(false);\n };\n\n const handleDropImage = (acceptedFiles: any[]) => {\n const file = acceptedFiles[0];\n if (!file) return;\n setFileSizeError(null);\n if (fileDetails) {\n // If a file is already uploaded, show the confirmation dialog\n setNewFileToUpload(file);\n setReplaceImageDialogVisible(true);\n } else {\n // If no file is present, proceed with upload\n uploadFile(file);\n }\n };\n\n const uploadFile = (file: File) => {\n setFileDetails({\n name: file.name,\n type: file.type,\n fileUrl: URL.createObjectURL(file),\n fileSize: file.size\n });\n\n const reader = new FileReader();\n reader.readAsDataURL(file);\n fieldContext.onChange(\n {\n target: {\n name: fieldLayoutInfo.attrs.name,\n value: file,\n type: \"text\",\n },\n } as any,\n \"onFieldChange\"\n );\n };\n\n const handleReplaceFile = async () => {\n try {\n await deletePersistedMediaIfNeeded(formik?.values[fieldLayoutInfo.attrs.name]);\n clearSelectedFile();\n\n // Proceed with uploading new file\n if (newFileToUpload) {\n uploadFile(newFileToUpload);\n setNewFileToUpload(null);\n }\n } catch (error: any) {\n console.error(ERROR_MESSAGES.ERROR_DELETING_FILE, error);\n dispatch(showToast({\n severity: \"error\",\n summary: \"Replace Failed\",\n detail: error?.data?.message || error?.message || ERROR_MESSAGES.ERROR_DELETING_FILE,\n life: 4000,\n }));\n }\n setReplaceImageDialogVisible(false);\n };\n\n useEffect(() => {\n const fieldValue = formik?.values[fieldLayoutInfo.attrs.name];\n if (!fieldValue || typeof fieldValue !== \"object\") {\n setFileDetails(null);\n return;\n }\n\n if (fieldValue instanceof File) {\n const fileUrl = URL.createObjectURL(fieldValue);\n setFileDetails({\n name: fieldValue.name,\n type: fieldValue.type,\n fileUrl,\n fileSize: fieldValue.size,\n });\n\n formik.setFieldValue(fieldLayoutInfo.attrs.name, fieldValue);\n return () => URL.revokeObjectURL(fileUrl);\n }\n\n const fileUrl = fieldValue._full_url;\n if (!fileUrl) {\n setFileDetails(null);\n return;\n }\n\n setFileDetails({\n name: fieldValue.originalFileName,\n type: fieldValue.mimeType ? fieldValue.mimeType : fieldValue.type,\n fileUrl,\n fileSize: fieldValue.fileSize,\n });\n\n formik.setFieldValue(fieldLayoutInfo.attrs.name, fieldValue);\n }, [formik.values, fieldLayoutInfo.attrs.name]);\n\n const {\n getRootProps: getRootProps,\n getInputProps: getInputProps,\n isDragActive: isDragActive,\n } = useDropzone({\n onDrop: handleDropImage,\n onDropRejected: (fileRejections) => {\n const rejection = fileRejections[0];\n const sizeError = rejection.errors.find(err => err.code === 'file-too-large');\n if (sizeError) {\n setFileSizeError(ERROR_MESSAGES.FILE_TOO_LAREG(fieldMetadata.mediaMaxSizeKb));\n } else {\n setFileSizeError(rejection.errors[0]?.message || ERROR_MESSAGES.FILE_NOT_ACCEPT);\n }\n },\n accept: getAcceptedFileTypes(fieldMetadata.mediaTypes, fieldMetadata.mediaAllowedExtensions, mediaConfig),\n maxSize: fieldMetadata.mediaMaxSizeKb * 1024,\n disabled: isFieldDisabled || isFieldReadonly\n });\n\n const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];\n let DynamicWidget = getExtensionComponent(\"SolidFormFieldViewMediaSingleWidget\");\n const widgetProps = {\n formik: formik,\n fieldContext: fieldContext,\n setLightboxUrls: setLightboxUrls,\n setOpenLightbox: setOpenLightbox\n }\n\n const handleFileView = (url: any) => {\n const previewKind = getMediaPreviewKind({\n url: url?.fileUrl,\n fileName: url?.name,\n mimeType: url?.type,\n });\n\n if (isLightboxMediaKind(previewKind)) {\n setLightboxUrls?.([\n {\n src: url.fileUrl,\n downloadUrl: url.fileUrl,\n type: previewKind === \"video\" ? \"video\" : undefined\n },\n ]);\n setOpenLightbox?.(true);\n return;\n }\n\n openMediaInNewTab(url?.fileUrl);\n }\n\n\n return (\n <div style={(isFieldDisabled === true || isFieldReadonly === true) ? { filter: 'opacity(50%)', pointerEvents: 'none' } : {}}>\n <div className={`${styles.fieldWrapper} relative`}>\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 {/* {fieldDescription && <span className=\"form_field_help\">({fieldDescription}) </span>} */}\n </label>\n }\n <div className=\"relative\">\n <div\n {...getRootProps()}\n className=\"solid-dropzone-wrapper\"\n >\n <input {...getInputProps()} />\n <DropzonePlaceholder\n mediaTypes={fieldMetadata.mediaTypes}\n mediaAllowedExtensions={fieldMetadata.mediaAllowedExtensions}\n mediaMaxSizeKb={fieldMetadata.mediaMaxSizeKb}\n />\n </div>\n {isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (\n <div className=\"absolute mt-1\">\n <SolidMessage severity=\"error\" text={formik?.errors[fieldLayoutInfo.attrs.name]?.toString()} />\n </div>\n )}\n </div>\n {\n fileSizeError &&\n <SolidMessage severity=\"error\" text={fileSizeError?.toString()} />\n }\n {fileDetails && (\n <div className={`${styles.mediaAttachmentCard} mt-4`}>\n <div className={`${styles.mediaAttachmentRow} flex items-center md:gap-2`}>\n <FileReaderExt fileDetails={fileDetails} />\n <div className={`${styles.mediaAttachmentMeta} w-full`}>\n <div className=\"flex items-start justify-between gap-4\">\n <button\n type=\"button\"\n className={styles.mediaAttachmentName}\n onClick={() => handleFileView(fileDetails)}\n title={fileDetails.name}\n >\n {fileDetails.name}\n </button>\n <div className={`${styles.mediaAttachmentActions} flex items-center gap-2`}>\n <button\n type=\"button\"\n className=\"solid-file-icon-btn\"\n disabled={isFieldDisabled || isFieldReadonly}\n aria-label=\"Download file\"\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n downloadMediaFile(fileDetails?.fileUrl, fileDetails?.name);\n }}\n >\n <SolidIcon name=\"si-download\" aria-hidden />\n </button>\n <button\n type=\"button\"\n className=\"solid-file-icon-btn is-danger\"\n disabled={isFieldDisabled || isFieldReadonly}\n aria-label=\"Remove file\"\n onClick={() => setDeleteImageDialogVisible(true)}\n >\n <SolidIcon name=\"si-times\" aria-hidden />\n </button>\n </div>\n </div>\n <div className={styles.mediaAttachmentSize}>\n {fileDetails && formatFileSize(fileDetails.fileSize)}\n </div>\n </div>\n </div>\n </div>\n )}\n </div>\n <SolidDialog\n open={isDeleteImageDialogVisible}\n onOpenChange={setDeleteImageDialogVisible}\n className=\"solid-shadcn-confirm-dialog\"\n >\n <SolidDialogHeader className=\"solid-shadcn-dialog-head\">\n <SolidDialogTitle>Confirm Delete</SolidDialogTitle>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogSeparator className=\"solid-shadcn-dialog-sep\" />\n <SolidDialogBody className=\"solid-shadcn-dialog-body\">\n <p className=\"solid-shadcn-dialog-text\">Are you sure you want to delete media?</p>\n </SolidDialogBody>\n <SolidDialogFooter className=\"solid-shadcn-dialog-actions\">\n <SolidButton variant=\"destructive\" size=\"sm\" autoFocus onClick={handleCancelUpload}>\n Delete\n </SolidButton>\n <SolidButton variant=\"outline\" size=\"sm\" onClick={() => setDeleteImageDialogVisible(false)}>\n Cancel\n </SolidButton>\n </SolidDialogFooter>\n </SolidDialog>\n <SolidDialog\n open={isReplaceImageDialogVisible}\n onOpenChange={setReplaceImageDialogVisible}\n className=\"solid-shadcn-confirm-dialog\"\n >\n <SolidDialogHeader className=\"solid-shadcn-dialog-head\">\n <SolidDialogTitle>Replace Media</SolidDialogTitle>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogSeparator className=\"solid-shadcn-dialog-sep\" />\n <SolidDialogBody className=\"solid-shadcn-dialog-body\">\n <p className=\"solid-shadcn-dialog-text\">A media file is already uploaded. Do you want to delete it and upload a new one?</p>\n </SolidDialogBody>\n <SolidDialogFooter className=\"solid-shadcn-dialog-actions\">\n <SolidButton variant=\"destructive\" size=\"sm\" onClick={handleReplaceFile}>\n Replace\n </SolidButton>\n <SolidButton variant=\"outline\" size=\"sm\" onClick={() => setReplaceImageDialogVisible(false)}>\n Cancel\n </SolidButton>\n </SolidDialogFooter>\n </SolidDialog>\n </div>\n );\n}\n\nexport const DefaultMediaSingleFormViewWidget = ({ formik, fieldContext, setLightboxUrls, setOpenLightbox }: SolidMediaFormFieldWidgetProps) => {\n const [fileDetails, setFileDetails] = useState<SingleMediaFileDetail | null>(null);\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n const className = fieldLayoutInfo.attrs?.className || 'field w-full px-2 pt-2';\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;\n\n // useEffect(() => { formik.setFieldValue(fieldLayoutInfo.attrs.name, \"false\") }, [])\n\n const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];\n const formatFileSize = (size: number) => {\n return size >= 1024 * 1024\n ? `${(size / (1024 * 1024)).toFixed(1)} MB`\n : `${(size / 1024).toFixed(1)} KB`;\n };\n\n useEffect(() => {\n const fieldValue = formik?.values[fieldLayoutInfo.attrs.name];\n if (!fieldValue || typeof fieldValue !== \"object\") {\n setFileDetails(null);\n return;\n }\n\n if (fieldValue instanceof File) {\n const fileUrl = URL.createObjectURL(fieldValue);\n setFileDetails({\n name: fieldValue.name,\n type: fieldValue.type,\n fileUrl,\n fileSize: fieldValue.size,\n });\n\n return () => URL.revokeObjectURL(fileUrl);\n }\n\n const fileUrl = fieldValue._full_url;\n if (!fileUrl) {\n setFileDetails(null);\n return;\n }\n\n setFileDetails({\n name: fieldValue.originalFileName,\n type: fieldValue.mimeType ? fieldValue.mimeType : fieldValue.type,\n fileUrl,\n fileSize: fieldValue.fileSize,\n });\n }, [formik.values, fieldLayoutInfo.attrs.name]);\n\n const handleFileView = (url: any) => {\n const previewKind = getMediaPreviewKind({\n url: url?.fileUrl,\n fileName: url?.name,\n mimeType: url?.type,\n });\n\n if (isLightboxMediaKind(previewKind)) {\n setLightboxUrls?.([\n {\n src: url.fileUrl,\n downloadUrl: url.fileUrl,\n type: previewKind === \"video\" ? \"video\" : undefined\n },\n ]);\n setOpenLightbox?.(true);\n return;\n }\n\n openMediaInNewTab(url?.fileUrl);\n }\n\n return (\n <div className={`${styles.fieldViewWrapper} relative`}>\n {showFieldLabel != false &&\n <label htmlFor={fieldLayoutInfo.attrs.name} className={`${styles.fieldViewLabel} form-field-label`}>{fieldLabel}\n <SolidFieldTooltip fieldContext={fieldContext} />\n </label>\n }\n\n {fileDetails && (\n <div className={`${styles.mediaAttachmentCard} ${styles.mediaAttachmentCardView} mt-4`}>\n <div className={`${styles.mediaAttachmentRow} flex items-center md:gap-2`}>\n <FileReaderExt fileDetails={fileDetails} />\n <div className={`${styles.mediaAttachmentMeta} w-full`}>\n <div className=\"flex items-start justify-between gap-4\">\n <button\n type=\"button\"\n className={styles.mediaAttachmentName}\n onClick={() => handleFileView(fileDetails)}\n title={fileDetails.name}\n >\n {fileDetails.name}\n </button>\n <div className={`${styles.mediaAttachmentActions} flex items-center md:gap-2`}>\n <button\n type=\"button\"\n className=\"solid-file-icon-btn\"\n aria-label=\"Download file\"\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n downloadMediaFile(fileDetails?.fileUrl, fileDetails?.name);\n }}\n >\n <SolidIcon name=\"si-download\" aria-hidden />\n </button>\n </div>\n </div>\n <div className={styles.mediaAttachmentSize}>\n {fileDetails && formatFileSize(fileDetails.fileSize)}\n </div>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SolidMediaSingleField.js","sourceRoot":"","sources":["../../../../../src/components/core/form/fields/SolidMediaSingleField.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport { DropzonePlaceholder } from \"../../../../components/common/DropzonePlaceholder\";\nimport { useDeleteMediaMutation } from \"../../../../redux/api/mediaApi\";\nimport { SolidButton } from \"../../../shad-cn-ui/SolidButton\";\nimport {\n SolidDialog,\n SolidDialogBody,\n SolidDialogClose,\n SolidDialogFooter,\n SolidDialogHeader,\n SolidDialogSeparator,\n SolidDialogTitle,\n} from \"../../../shad-cn-ui/SolidDialog\";\nimport { SolidMessage } from \"../../../shad-cn-ui/SolidMessage\";\nimport { SolidProgressBar } from \"../../../shad-cn-ui/SolidProgressBar\";\nimport { useEffect, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { useDropzone } from \"react-dropzone\";\nimport * as Yup from 'yup';\nimport { FormikObject, ISolidField, SolidFieldProps } from \"./ISolidField\";\nimport { FileReaderExt } from \"../../../../components/common/FileReaderExt\";\nimport getAcceptedFileTypes, { getAllowedMediaExtensionsErrorMessage } from \"../../../../helpers/getAcceptedFileTypes\";\nimport { downloadMediaFile } from \"../../../../helpers/downloadMediaFile\";\nimport { getExtensionComponent } from \"../../../../helpers/registry\";\nimport { openMediaInNewTab } from \"../../../../helpers/mediaUrl\";\nimport { getMediaPreviewKind, isLightboxMediaKind } from \"../../../../helpers/mediaType\";\nimport { SolidMediaFormFieldWidgetProps } from \"../../../../types/solid-core\";\nimport { SolidFieldTooltip } from \"../../../../components/common/SolidFieldTooltip\";\nimport { ERROR_MESSAGES } from \"../../../../constants/error-messages\";\nimport { showToast } from \"../../../../redux/features/toastSlice\";\nimport styles from \"./solidFields.module.css\";\nimport { SolidIcon } from \"../../../shad-cn-ui\";\nimport { getPersistedMediaId } from \"./mediaFieldUtils\";\n\ntype SingleMediaFileDetail = {\n name: string;\n type: string;\n fileUrl: string;\n fileSize: number;\n};\n\nexport class SolidMediaSingleField implements ISolidField {\n\n private fieldContext: SolidFieldProps;\n private setLightboxUrls?: (urls: { src: string; downloadUrl: string }[]) => void;\n private setOpenLightbox?: (open: boolean) => void;\n constructor(fieldContext: SolidFieldProps, setLightboxUrls?: (urls: { src: string; downloadUrl: string }[]) => void,\n setOpenLightbox?: (open: boolean) => void) {\n this.fieldContext = fieldContext;\n this.setLightboxUrls = setLightboxUrls;\n this.setOpenLightbox = setOpenLightbox;\n }\n\n updateFormData(value: any, formData: FormData): any {\n const fieldLayoutInfo = this.fieldContext.field;\n if (value instanceof File) {\n formData.append(fieldLayoutInfo.attrs.name, value);\n }\n }\n\n initialValue(): any {\n const mediaUrls = this.fieldContext.data && this.fieldContext.data._media && this.fieldContext.data._media[this.fieldContext.field.attrs.name][0];\n return mediaUrls;\n }\n\n validationSchema(): Yup.Schema {\n // let schema: Yup.StringSchema = Yup.object();\n\n const fieldMetadata = this.fieldContext.fieldMetadata;\n const fieldLayoutInfo = this.fieldContext.field;\n\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n // Dynamically determine the base type based on the 'required' flag\n\n // Define base schema\n let schema: Yup.MixedSchema<File | object>;\n\n if (fieldMetadata.required) {\n // For required fields: disallow null and undefined\n schema = Yup.mixed<File | object>()\n .required(ERROR_MESSAGES.FIELD_REUQIRED(fieldLabel))\n .test(\n ERROR_MESSAGES.FILE_OBJECT,\n ERROR_MESSAGES.MUST_BE_FILE_OBJECT(fieldLabel),\n (value) =>\n value instanceof File || typeof value === \"object\" // Validate File or object\n );\n } else {\n // For optional fields: allow null or undefined\n schema = Yup.mixed<any>()\n .nullable() // Allow null explicitly\n .test(\n ERROR_MESSAGES.FILE_OBJECT,\n ERROR_MESSAGES.MUST_BE_FILE_OBJECT(fieldLabel),\n (value) =>\n value === null || // Allow null\n value === undefined || // Allow undefined\n value instanceof File || // Allow File\n value === 'false' ||\n typeof value === \"object\" // Allow object\n );\n }\n return schema;\n\n }\n\n render(formik: FormikObject) {\n const fieldMetadata = this.fieldContext.fieldMetadata;\n const fieldLayoutInfo = this.fieldContext.field;\n const className = fieldLayoutInfo.attrs?.className || 'field w-full px-2 pt-2';\n const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];\n\n let viewWidget = fieldLayoutInfo.attrs.viewWidget;\n let editWidget = fieldLayoutInfo.attrs.editWidget;\n if (!editWidget) {\n editWidget = 'DefaultMediaSingleFormEditWidget';\n }\n if (!viewWidget) {\n viewWidget = 'DefaultMediaSingleFormViewWidget';\n }\n const viewMode: string = this.fieldContext.viewMode;\n\n\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 </div>\n </>\n );\n }\n\n\n renderExtensionRenderMode(widget: string, formik: FormikObject) {\n let DynamicWidget = getExtensionComponent(widget);\n const widgetProps: SolidMediaFormFieldWidgetProps = {\n formik: formik,\n fieldContext: this.fieldContext,\n setLightboxUrls: this.setLightboxUrls,\n setOpenLightbox: this.setOpenLightbox\n }\n return (\n <>\n {DynamicWidget && <DynamicWidget {...widgetProps} />}\n </>\n )\n }\n}\n\n\n\n\n\nexport const DefaultMediaSingleFormEditWidget = ({ formik, fieldContext, setLightboxUrls, setOpenLightbox }: SolidMediaFormFieldWidgetProps) => {\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n const className = fieldLayoutInfo.attrs?.className || 'field w-full px-2 pt-2';\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const fieldDescription = fieldLayoutInfo.attrs.description ?? fieldMetadata.description;\n const solidFormViewMetaData = fieldContext.solidFormViewMetaData;\n const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;\n const readOnlyPermission = fieldContext.readOnly;\n const viewMode: string = fieldContext.viewMode;\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 const isFieldDisabled = formDisabled || fieldDisabled;\n const isFieldReadonly = formReadonly || fieldReadonly || readOnlyPermission;\n\n const [isDeleteImageDialogVisible, setDeleteImageDialogVisible] = useState(false);\n const [fileDetails, setFileDetails] = useState<SingleMediaFileDetail | null>(null);\n const [isReplaceImageDialogVisible, setReplaceImageDialogVisible] = useState(false);\n const [newFileToUpload, setNewFileToUpload] = useState<any>(null);\n const [fileSizeError, setFileSizeError] = useState<string | null>(null);\n const mediaConfig = solidFormViewMetaData?.data;\n\n const formatFileSize = (size: number) => {\n return size >= 1024 * 1024\n ? `${(size / (1024 * 1024)).toFixed(1)} MB`\n : `${(size / 1024).toFixed(1)} KB`;\n };\n\n const [deleteMedia] = useDeleteMediaMutation();\n const dispatch = useDispatch();\n\n const clearSelectedFile = () => {\n setFileDetails(null);\n fieldContext.onChange(\n {\n target: {\n name: fieldLayoutInfo.attrs.name,\n value: null,\n type: \"text\",\n },\n } as any,\n \"onFieldChange\"\n );\n };\n\n const deletePersistedMediaIfNeeded = async (value: unknown) => {\n console.log(\"DeletePersistedMedia Called\");\n \n const mediaId = getPersistedMediaId(value);\n if (mediaId !== null) {\n await deleteMedia(mediaId).unwrap();\n }\n };\n\n const handleCancelUpload = async (e: React.MouseEvent) => {\n console.log(\"handleCancelUpload called\");\n e.stopPropagation();\n try {\n await deletePersistedMediaIfNeeded(formik?.values[fieldLayoutInfo.attrs.name]);\n clearSelectedFile();\n } catch (error: any) {\n console.error(ERROR_MESSAGES.ERROR_DELETING_FILE, error);\n dispatch(showToast({\n severity: \"error\",\n summary: \"Delete Failed\",\n detail: error?.data?.message || error?.message || ERROR_MESSAGES.ERROR_DELETING_FILE,\n life: 4000,\n }));\n }\n setDeleteImageDialogVisible(false);\n };\n\n const handleDropImage = (acceptedFiles: any[]) => {\n const file = acceptedFiles[0];\n if (!file) return;\n setFileSizeError(null);\n if (fileDetails) {\n // If a file is already uploaded, show the confirmation dialog\n setNewFileToUpload(file);\n setReplaceImageDialogVisible(true);\n } else {\n // If no file is present, proceed with upload\n uploadFile(file);\n }\n };\n\n const uploadFile = (file: File) => {\n setFileDetails({\n name: file.name,\n type: file.type,\n fileUrl: URL.createObjectURL(file),\n fileSize: file.size\n });\n\n const reader = new FileReader();\n reader.readAsDataURL(file);\n fieldContext.onChange(\n {\n target: {\n name: fieldLayoutInfo.attrs.name,\n value: file,\n type: \"text\",\n },\n } as any,\n \"onFieldChange\"\n );\n };\n\n const handleReplaceFile = async () => {\n try {\n await deletePersistedMediaIfNeeded(formik?.values[fieldLayoutInfo.attrs.name]);\n clearSelectedFile();\n\n // Proceed with uploading new file\n if (newFileToUpload) {\n uploadFile(newFileToUpload);\n setNewFileToUpload(null);\n }\n } catch (error: any) {\n console.error(ERROR_MESSAGES.ERROR_DELETING_FILE, error);\n dispatch(showToast({\n severity: \"error\",\n summary: \"Replace Failed\",\n detail: error?.data?.message || error?.message || ERROR_MESSAGES.ERROR_DELETING_FILE,\n life: 4000,\n }));\n }\n setReplaceImageDialogVisible(false);\n };\n\n useEffect(() => {\n const fieldValue = formik?.values[fieldLayoutInfo.attrs.name];\n if (!fieldValue || typeof fieldValue !== \"object\") {\n setFileDetails(null);\n return;\n }\n\n if (fieldValue instanceof File) {\n const fileUrl = URL.createObjectURL(fieldValue);\n setFileDetails({\n name: fieldValue.name,\n type: fieldValue.type,\n fileUrl,\n fileSize: fieldValue.size,\n });\n\n formik.setFieldValue(fieldLayoutInfo.attrs.name, fieldValue);\n return () => URL.revokeObjectURL(fileUrl);\n }\n\n const fileUrl = fieldValue._full_url;\n if (!fileUrl) {\n setFileDetails(null);\n return;\n }\n\n setFileDetails({\n name: fieldValue.originalFileName,\n type: fieldValue.mimeType ? fieldValue.mimeType : fieldValue.type,\n fileUrl,\n fileSize: fieldValue.fileSize,\n });\n\n formik.setFieldValue(fieldLayoutInfo.attrs.name, fieldValue);\n }, [formik.values, fieldLayoutInfo.attrs.name]);\n\n const {\n getRootProps: getRootProps,\n getInputProps: getInputProps,\n isDragActive: isDragActive,\n } = useDropzone({\n onDrop: handleDropImage,\n onDropRejected: (fileRejections) => {\n const rejection = fileRejections[0];\n const sizeError = rejection.errors.find(err => err.code === 'file-too-large');\n if (sizeError) {\n setFileSizeError(ERROR_MESSAGES.FILE_TOO_LAREG(fieldMetadata.mediaMaxSizeKb));\n } else {\n const invalidTypeError = rejection.errors.find((error) => error.code === \"file-invalid-type\");\n setFileSizeError(\n (invalidTypeError && getAllowedMediaExtensionsErrorMessage(fieldMetadata.mediaAllowedExtensions))\n || rejection.errors[0]?.message\n || ERROR_MESSAGES.FILE_NOT_ACCEPT\n );\n }\n },\n accept: getAcceptedFileTypes(fieldMetadata.mediaTypes, fieldMetadata.mediaAllowedExtensions, mediaConfig),\n maxSize: fieldMetadata.mediaMaxSizeKb * 1024,\n disabled: isFieldDisabled || isFieldReadonly\n });\n\n const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];\n let DynamicWidget = getExtensionComponent(\"SolidFormFieldViewMediaSingleWidget\");\n const widgetProps = {\n formik: formik,\n fieldContext: fieldContext,\n setLightboxUrls: setLightboxUrls,\n setOpenLightbox: setOpenLightbox\n }\n\n const handleFileView = (url: any) => {\n const previewKind = getMediaPreviewKind({\n url: url?.fileUrl,\n fileName: url?.name,\n mimeType: url?.type,\n });\n\n if (isLightboxMediaKind(previewKind)) {\n setLightboxUrls?.([\n {\n src: url.fileUrl,\n downloadUrl: url.fileUrl,\n type: previewKind === \"video\" ? \"video\" : undefined\n },\n ]);\n setOpenLightbox?.(true);\n return;\n }\n\n openMediaInNewTab(url?.fileUrl);\n }\n\n\n return (\n <div style={(isFieldDisabled === true || isFieldReadonly === true) ? { filter: 'opacity(50%)', pointerEvents: 'none' } : {}}>\n <div className={`${styles.fieldWrapper} relative`}>\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 {/* {fieldDescription && <span className=\"form_field_help\">({fieldDescription}) </span>} */}\n </label>\n }\n <div className=\"relative\">\n <div\n {...getRootProps()}\n className=\"solid-dropzone-wrapper\"\n >\n <input {...getInputProps()} />\n <DropzonePlaceholder\n mediaTypes={fieldMetadata.mediaTypes}\n mediaAllowedExtensions={fieldMetadata.mediaAllowedExtensions}\n mediaMaxSizeKb={fieldMetadata.mediaMaxSizeKb}\n />\n </div>\n {isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (\n <div className=\"absolute mt-1\">\n <SolidMessage severity=\"error\" text={formik?.errors[fieldLayoutInfo.attrs.name]?.toString()} />\n </div>\n )}\n </div>\n {\n fileSizeError &&\n <SolidMessage severity=\"error\" text={fileSizeError?.toString()} />\n }\n {fileDetails && (\n <div className={`${styles.mediaAttachmentCard} mt-4`}>\n <div className={`${styles.mediaAttachmentRow} flex items-center md:gap-2`}>\n <FileReaderExt fileDetails={fileDetails} />\n <div className={`${styles.mediaAttachmentMeta} w-full`}>\n <div className=\"flex items-start justify-between gap-4\">\n <button\n type=\"button\"\n className={styles.mediaAttachmentName}\n onClick={() => handleFileView(fileDetails)}\n title={fileDetails.name}\n >\n {fileDetails.name}\n </button>\n <div className={`${styles.mediaAttachmentActions} flex items-center gap-2`}>\n <button\n type=\"button\"\n className=\"solid-file-icon-btn\"\n disabled={isFieldDisabled || isFieldReadonly}\n aria-label=\"Download file\"\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n downloadMediaFile(fileDetails?.fileUrl, fileDetails?.name);\n }}\n >\n <SolidIcon name=\"si-download\" aria-hidden />\n </button>\n <button\n type=\"button\"\n className=\"solid-file-icon-btn is-danger\"\n disabled={isFieldDisabled || isFieldReadonly}\n aria-label=\"Remove file\"\n onClick={() => setDeleteImageDialogVisible(true)}\n >\n <SolidIcon name=\"si-times\" aria-hidden />\n </button>\n </div>\n </div>\n <div className={styles.mediaAttachmentSize}>\n {fileDetails && formatFileSize(fileDetails.fileSize)}\n </div>\n </div>\n </div>\n </div>\n )}\n </div>\n <SolidDialog\n open={isDeleteImageDialogVisible}\n onOpenChange={setDeleteImageDialogVisible}\n className=\"solid-shadcn-confirm-dialog\"\n >\n <SolidDialogHeader className=\"solid-shadcn-dialog-head\">\n <SolidDialogTitle>Confirm Delete</SolidDialogTitle>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogSeparator className=\"solid-shadcn-dialog-sep\" />\n <SolidDialogBody className=\"solid-shadcn-dialog-body\">\n <p className=\"solid-shadcn-dialog-text\">Are you sure you want to delete media?</p>\n </SolidDialogBody>\n <SolidDialogFooter className=\"solid-shadcn-dialog-actions\">\n <SolidButton variant=\"destructive\" size=\"sm\" autoFocus onClick={handleCancelUpload}>\n Delete\n </SolidButton>\n <SolidButton variant=\"outline\" size=\"sm\" onClick={() => setDeleteImageDialogVisible(false)}>\n Cancel\n </SolidButton>\n </SolidDialogFooter>\n </SolidDialog>\n <SolidDialog\n open={isReplaceImageDialogVisible}\n onOpenChange={setReplaceImageDialogVisible}\n className=\"solid-shadcn-confirm-dialog\"\n >\n <SolidDialogHeader className=\"solid-shadcn-dialog-head\">\n <SolidDialogTitle>Replace Media</SolidDialogTitle>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogSeparator className=\"solid-shadcn-dialog-sep\" />\n <SolidDialogBody className=\"solid-shadcn-dialog-body\">\n <p className=\"solid-shadcn-dialog-text\">A media file is already uploaded. Do you want to delete it and upload a new one?</p>\n </SolidDialogBody>\n <SolidDialogFooter className=\"solid-shadcn-dialog-actions\">\n <SolidButton variant=\"destructive\" size=\"sm\" onClick={handleReplaceFile}>\n Replace\n </SolidButton>\n <SolidButton variant=\"outline\" size=\"sm\" onClick={() => setReplaceImageDialogVisible(false)}>\n Cancel\n </SolidButton>\n </SolidDialogFooter>\n </SolidDialog>\n </div>\n );\n}\n\nexport const DefaultMediaSingleFormViewWidget = ({ formik, fieldContext, setLightboxUrls, setOpenLightbox }: SolidMediaFormFieldWidgetProps) => {\n const [fileDetails, setFileDetails] = useState<SingleMediaFileDetail | null>(null);\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n const className = fieldLayoutInfo.attrs?.className || 'field w-full px-2 pt-2';\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;\n\n // useEffect(() => { formik.setFieldValue(fieldLayoutInfo.attrs.name, \"false\") }, [])\n\n const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];\n const formatFileSize = (size: number) => {\n return size >= 1024 * 1024\n ? `${(size / (1024 * 1024)).toFixed(1)} MB`\n : `${(size / 1024).toFixed(1)} KB`;\n };\n\n useEffect(() => {\n const fieldValue = formik?.values[fieldLayoutInfo.attrs.name];\n if (!fieldValue || typeof fieldValue !== \"object\") {\n setFileDetails(null);\n return;\n }\n\n if (fieldValue instanceof File) {\n const fileUrl = URL.createObjectURL(fieldValue);\n setFileDetails({\n name: fieldValue.name,\n type: fieldValue.type,\n fileUrl,\n fileSize: fieldValue.size,\n });\n\n return () => URL.revokeObjectURL(fileUrl);\n }\n\n const fileUrl = fieldValue._full_url;\n if (!fileUrl) {\n setFileDetails(null);\n return;\n }\n\n setFileDetails({\n name: fieldValue.originalFileName,\n type: fieldValue.mimeType ? fieldValue.mimeType : fieldValue.type,\n fileUrl,\n fileSize: fieldValue.fileSize,\n });\n }, [formik.values, fieldLayoutInfo.attrs.name]);\n\n const handleFileView = (url: any) => {\n const previewKind = getMediaPreviewKind({\n url: url?.fileUrl,\n fileName: url?.name,\n mimeType: url?.type,\n });\n\n if (isLightboxMediaKind(previewKind)) {\n setLightboxUrls?.([\n {\n src: url.fileUrl,\n downloadUrl: url.fileUrl,\n type: previewKind === \"video\" ? \"video\" : undefined\n },\n ]);\n setOpenLightbox?.(true);\n return;\n }\n\n openMediaInNewTab(url?.fileUrl);\n }\n\n return (\n <div className={`${styles.fieldViewWrapper} relative`}>\n {showFieldLabel != false &&\n <label htmlFor={fieldLayoutInfo.attrs.name} className={`${styles.fieldViewLabel} form-field-label`}>{fieldLabel}\n <SolidFieldTooltip fieldContext={fieldContext} />\n </label>\n }\n\n {fileDetails && (\n <div className={`${styles.mediaAttachmentCard} ${styles.mediaAttachmentCardView} mt-4`}>\n <div className={`${styles.mediaAttachmentRow} flex items-center md:gap-2`}>\n <FileReaderExt fileDetails={fileDetails} />\n <div className={`${styles.mediaAttachmentMeta} w-full`}>\n <div className=\"flex items-start justify-between gap-4\">\n <button\n type=\"button\"\n className={styles.mediaAttachmentName}\n onClick={() => handleFileView(fileDetails)}\n title={fileDetails.name}\n >\n {fileDetails.name}\n </button>\n <div className={`${styles.mediaAttachmentActions} flex items-center md:gap-2`}>\n <button\n type=\"button\"\n className=\"solid-file-icon-btn\"\n aria-label=\"Download file\"\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n downloadMediaFile(fileDetails?.fileUrl, fileDetails?.name);\n }}\n >\n <SolidIcon name=\"si-download\" aria-hidden />\n </button>\n </div>\n </div>\n <div className={styles.mediaAttachmentSize}>\n {fileDetails && formatFileSize(fileDetails.fileSize)}\n </div>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n"]}
|
|
@@ -19,7 +19,7 @@ import { useDropzone } from "react-dropzone";
|
|
|
19
19
|
import * as Yup from 'yup';
|
|
20
20
|
import { FormikObject, ISolidField, SolidFieldProps } from "./ISolidField";
|
|
21
21
|
import { FileReaderExt } from "../../../../components/common/FileReaderExt";
|
|
22
|
-
import getAcceptedFileTypes from "../../../../helpers/getAcceptedFileTypes";
|
|
22
|
+
import getAcceptedFileTypes, { getAllowedMediaExtensionsErrorMessage } from "../../../../helpers/getAcceptedFileTypes";
|
|
23
23
|
import { downloadMediaFile } from "../../../../helpers/downloadMediaFile";
|
|
24
24
|
import { getExtensionComponent } from "../../../../helpers/registry";
|
|
25
25
|
import { openMediaInNewTab } from "../../../../helpers/mediaUrl";
|
|
@@ -343,7 +343,12 @@ export const DefaultMediaSingleFormEditWidget = ({ formik, fieldContext, setLigh
|
|
|
343
343
|
if (sizeError) {
|
|
344
344
|
setFileSizeError(ERROR_MESSAGES.FILE_TOO_LAREG(fieldMetadata.mediaMaxSizeKb));
|
|
345
345
|
} else {
|
|
346
|
-
|
|
346
|
+
const invalidTypeError = rejection.errors.find((error) => error.code === "file-invalid-type");
|
|
347
|
+
setFileSizeError(
|
|
348
|
+
(invalidTypeError && getAllowedMediaExtensionsErrorMessage(fieldMetadata.mediaAllowedExtensions))
|
|
349
|
+
|| rejection.errors[0]?.message
|
|
350
|
+
|| ERROR_MESSAGES.FILE_NOT_ACCEPT
|
|
351
|
+
);
|
|
347
352
|
}
|
|
348
353
|
},
|
|
349
354
|
accept: getAcceptedFileTypes(fieldMetadata.mediaTypes, fieldMetadata.mediaAllowedExtensions, mediaConfig),
|
|
@@ -1,11 +1,3 @@
|
|
|
1
|
-
.solidCustomSlider {
|
|
2
|
-
height: 0.625rem;
|
|
3
|
-
}
|
|
4
|
-
.solidCustomSlider .p-slider .p-slider-handle {
|
|
5
|
-
background: var(--primary-color);
|
|
6
|
-
border: 2px solid #fff;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
1
|
/* === Field UI refresh === */
|
|
10
2
|
|
|
11
3
|
.fieldWrapper {
|
|
@@ -78,16 +70,20 @@
|
|
|
78
70
|
background: var(--solid-form-control-bg-disabled, color-mix(in srgb, var(--muted) 18%, var(--card) 82%)) !important;
|
|
79
71
|
}
|
|
80
72
|
|
|
73
|
+
.fieldInput:global(.is-invalid),
|
|
74
|
+
.fieldTextarea:global(.is-invalid),
|
|
75
|
+
:global(.is-invalid).fieldInput,
|
|
76
|
+
:global(.is-invalid).fieldTextarea {
|
|
77
|
+
border-color: #ef4444 !important;
|
|
78
|
+
box-shadow: 0 0 0 1px #fecaca inset !important;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
81
|
/* InputNumber wrapper — className lands on the outer span */
|
|
82
82
|
.fieldNumberWrapper {
|
|
83
83
|
width: 100%;
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
-
.fieldNumberWrapper :global(.
|
|
87
|
-
width: 100% !important;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
.fieldNumberWrapper :global(.p-inputnumber-input) {
|
|
86
|
+
.fieldNumberWrapper :global(.solid-input) {
|
|
91
87
|
width: 100% !important;
|
|
92
88
|
height: 34px !important;
|
|
93
89
|
border-radius: 8px !important;
|
|
@@ -100,17 +96,23 @@
|
|
|
100
96
|
transition: border-color 0.15s ease, box-shadow 0.15s ease !important;
|
|
101
97
|
}
|
|
102
98
|
|
|
103
|
-
.fieldNumberWrapper :global(.
|
|
99
|
+
.fieldNumberWrapper :global(.solid-input):focus,
|
|
100
|
+
.fieldNumberWrapper :global(.solid-input):focus-visible {
|
|
104
101
|
outline: none !important;
|
|
105
102
|
border-color: color-mix(in srgb, var(--primary-color, var(--primary)) 65%, var(--border)) !important;
|
|
106
103
|
}
|
|
107
104
|
|
|
108
|
-
.fieldNumberWrapper :global(.
|
|
105
|
+
.fieldNumberWrapper :global(.solid-input):disabled {
|
|
109
106
|
opacity: 0.75 !important;
|
|
110
107
|
cursor: not-allowed !important;
|
|
111
108
|
background: var(--solid-form-control-bg-disabled, color-mix(in srgb, var(--muted) 18%, var(--card) 82%)) !important;
|
|
112
109
|
}
|
|
113
110
|
|
|
111
|
+
.fieldNumberWrapper :global(.is-invalid) {
|
|
112
|
+
border-color: #ef4444 !important;
|
|
113
|
+
box-shadow: 0 0 0 1px #fecaca inset !important;
|
|
114
|
+
}
|
|
115
|
+
|
|
114
116
|
.fieldError {
|
|
115
117
|
margin: 2px 0 0;
|
|
116
118
|
color: #ef4444;
|
|
@@ -134,6 +136,12 @@
|
|
|
134
136
|
border-color: #ef4444 !important;
|
|
135
137
|
}
|
|
136
138
|
|
|
139
|
+
:global(.solid-segmented.is-invalid) {
|
|
140
|
+
border-color: #ef4444 !important;
|
|
141
|
+
box-shadow: 0 0 0 1px #fecaca inset !important;
|
|
142
|
+
border-radius: 8px;
|
|
143
|
+
}
|
|
144
|
+
|
|
137
145
|
.fieldErrorBadge {
|
|
138
146
|
display: inline-flex;
|
|
139
147
|
align-items: center;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KanbanCard.d.ts","sourceRoot":"","sources":["../../../../src/components/core/kanban/KanbanCard.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"KanbanCard.d.ts","sourceRoot":"","sources":["../../../../src/components/core/kanban/KanbanCard.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAgB1B,UAAU,IAAI;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,IAAI,CAAC;IACX,uBAAuB,EAAE,GAAG,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,iBAAiB,CAAC,EAAE,GAAG,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,uBAAuB,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;CAClE;AAED,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAuIzC,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -11,6 +11,7 @@ var __assign = (this && this.__assign) || function () {
|
|
|
11
11
|
};
|
|
12
12
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
13
|
import { useRouter } from "../../../hooks/useRouter";
|
|
14
|
+
import { RotateCcw } from "lucide-react";
|
|
14
15
|
import { CompatibleDraggable } from "../common/dndCompat";
|
|
15
16
|
import { storeCurrentModelViewContext } from "../../../helpers/modelViewPersistence";
|
|
16
17
|
import { SolidDropdownMenu, SolidDropdownMenuContent, SolidDropdownMenuItem, SolidDropdownMenuTrigger, SolidIcon, } from "../../shad-cn-ui";
|
|
@@ -34,9 +35,16 @@ var KanbanCard = function (_a) {
|
|
|
34
35
|
persistReturnView();
|
|
35
36
|
router.push("".concat(editButtonUrl, "/").concat(data === null || data === void 0 ? void 0 : data.id, "?viewMode=edit"));
|
|
36
37
|
};
|
|
38
|
+
var renderRecoverAction = function (data) {
|
|
39
|
+
if (!showArchived || !isArchivedRecord || !onRecover)
|
|
40
|
+
return null;
|
|
41
|
+
return (_jsx("div", { className: "solid-kanban-action", onClick: function (e) { return e.stopPropagation(); }, children: _jsx("button", { type: "button", className: "retrieve-button solid-row-menu-trigger", onClick: function () { return onRecover(data); }, "aria-label": "Recover record", title: "Recover", children: _jsx(RotateCcw, { size: 14, "aria-hidden": true }) }) }));
|
|
42
|
+
};
|
|
37
43
|
var renderKanbanAction = function (data) {
|
|
38
44
|
var _a, _b, _c;
|
|
39
|
-
|
|
45
|
+
if (isArchivedRecord)
|
|
46
|
+
return renderRecoverAction(data);
|
|
47
|
+
return (_jsx("div", { className: "solid-kanban-action", onClick: function (e) { return e.stopPropagation(); }, children: _jsxs(SolidDropdownMenu, { children: [_jsx(SolidDropdownMenuTrigger, { asChild: true, children: _jsx("button", { type: "button", className: "solid-header-cog-trigger solid-kanban-action-trigger", "aria-label": "Open card actions", children: _jsx(SolidIcon, { name: "si-ellipsis-v", "aria-hidden": true }) }) }), _jsxs(SolidDropdownMenuContent, { className: "solid-custom-overlay", align: "end", children: [_jsxs(SolidDropdownMenuItem, { className: "solid-header-dropdown-item", onSelect: openEdit, children: [_jsx(SolidIcon, { name: "si-pencil", className: "solid-header-action-button-icon", "aria-hidden": true }), _jsx("span", { className: "solid-header-action-button-label", children: "Edit" })] }), onDelete && ((data === null || data === void 0 ? void 0 : data.deletedAt) === null || (data === null || data === void 0 ? void 0 : data.deletedAt) === undefined) ? (_jsxs(SolidDropdownMenuItem, { className: "solid-header-dropdown-item solid-header-dropdown-item-danger", onSelect: function () { return onDelete(data); }, children: [_jsx(SolidIcon, { name: "si-trash", className: "solid-header-action-button-icon", "aria-hidden": true }), _jsx("span", { className: "solid-header-action-button-label", children: "Delete" })] })) : null, !isArchivedRecord && handleCustomButtonClick ? (_jsx(SolidCollectionRowActionMenuItems, { buttons: (_c = (_b = (_a = solidKanbanViewMetaData === null || solidKanbanViewMetaData === void 0 ? void 0 : solidKanbanViewMetaData.solidView) === null || _a === void 0 ? void 0 : _a.layout) === null || _b === void 0 ? void 0 : _b.attrs) === null || _c === void 0 ? void 0 : _c.rowButtons, params: params, rowData: data, solidViewMetaData: solidKanbanViewMetaData, handleCustomButtonClick: handleCustomButtonClick, showSeparator: true })) : null] })] }) }));
|
|
40
48
|
};
|
|
41
49
|
return (_jsx(CompatibleDraggable, { draggableId: String(data.id), index: index, isDragDisabled: isDragDisabled, children: function (provided, snapshot) {
|
|
42
50
|
var _a, _b;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KanbanCard.js","sourceRoot":"","sources":["../../../../src/components/core/kanban/KanbanCard.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,EACxB,SAAS,GACV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,iCAAiC,EAAE,MAAM,6CAA6C,CAAC;AA6BhG,IAAM,UAAU,GAA8B,UAAC,EAAuQ;QAArQ,IAAI,UAAA,EAAE,uBAAuB,6BAAA,EAAE,KAAK,WAAA,EAAE,sBAAsB,EAAtB,cAAc,mBAAG,KAAK,KAAA,EAAE,eAAe,qBAAA,EAAE,eAAe,qBAAA,EAAE,aAAa,mBAAA,EAAE,yBAA0B,EAA1B,iBAAiB,mBAAG,MAAM,KAAA,EAAE,gBAAgB,sBAAA,EAAE,KAAK,WAAA,EAAE,QAAQ,cAAA,EAAE,iBAAiB,uBAAA,EAAE,QAAQ,cAAA,EAAE,SAAS,eAAA,EAAE,YAAY,kBAAA,EAAE,MAAM,YAAA,EAAE,uBAAuB,6BAAA;IAClT,IAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,IAAM,gBAAgB,GAAG,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS,MAAK,IAAI,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS,MAAK,SAAS,CAAC;IAEnF,IAAM,iBAAiB,GAAG;QACxB,4BAA4B,EAAE,CAAC;IACjC,CAAC,CAAC;IAEF,IAAM,UAAU,GAAG;QACjB,IAAI,gBAAgB;YAAE,OAAO;QAC7B,iBAAiB,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,UAAG,aAAa,cAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE,uBAAa,iBAAiB,CAAE,CAAC,CAAC;IAC5E,CAAC,CAAC;IAEF,IAAM,QAAQ,GAAG;QACf,IAAI,gBAAgB;YAAE,OAAO;QAC7B,iBAAiB,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,UAAG,aAAa,cAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE,mBAAgB,CAAC,CAAC;IAC5D,CAAC,CAAC;IAEF,IAAM,kBAAkB,GAAG,UAAC,IAAI;;QAC9B,OAAO,CACL,cAAK,SAAS,EAAC,qBAAqB,EAAC,OAAO,EAAE,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,eAAe,EAAE,EAAnB,CAAmB,YACtE,MAAC,iBAAiB,eAChB,KAAC,wBAAwB,IAAC,OAAO,kBAC/B,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,sDAAsD,gBACrD,mBAAmB,YAE9B,KAAC,SAAS,IAAC,IAAI,EAAC,eAAe,wBAAe,GACvC,GACgB,EAC3B,MAAC,wBAAwB,IAAC,SAAS,EAAC,sBAAsB,EAAC,KAAK,EAAC,KAAK,aACnE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CACnB,MAAC,qBAAqB,IACpB,SAAS,EAAC,4BAA4B,EACtC,QAAQ,EAAE,QAAQ,aAElB,KAAC,SAAS,IAAC,IAAI,EAAC,WAAW,EAAC,SAAS,EAAC,iCAAiC,wBAAe,EACtF,eAAM,SAAS,EAAC,kCAAkC,qBAAY,IACxC,CACzB,CAAC,CAAC,CAAC,IAAI,EACP,YAAY,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS,MAAK,IAAI,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS,MAAK,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,CACxF,MAAC,qBAAqB,IACpB,SAAS,EAAC,4BAA4B,EACtC,QAAQ,EAAE,cAAM,OAAA,SAAS,CAAC,IAAI,CAAC,EAAf,CAAe,aAE/B,KAAC,SAAS,IAAC,IAAI,EAAC,YAAY,EAAC,SAAS,EAAC,iCAAiC,wBAAe,EACvF,eAAM,SAAS,EAAC,kCAAkC,wBAAe,IAC3C,CACzB,CAAC,CAAC,CAAC,IAAI,EACP,QAAQ,IAAI,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS,MAAK,IAAI,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS,MAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CACzE,MAAC,qBAAqB,IACpB,SAAS,EAAC,8DAA8D,EACxE,QAAQ,EAAE,cAAM,OAAA,QAAQ,CAAC,IAAI,CAAC,EAAd,CAAc,aAE9B,KAAC,SAAS,IAAC,IAAI,EAAC,UAAU,EAAC,SAAS,EAAC,iCAAiC,wBAAe,EACrF,eAAM,SAAS,EAAC,kCAAkC,uBAAc,IAC1C,CACzB,CAAC,CAAC,CAAC,IAAI,EACP,CAAC,gBAAgB,IAAI,uBAAuB,CAAC,CAAC,CAAC,CAC9C,KAAC,iCAAiC,IAChC,OAAO,EAAE,MAAA,MAAA,MAAA,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAE,SAAS,0CAAE,MAAM,0CAAE,KAAK,0CAAE,UAAU,EACtE,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,IAAI,EACb,iBAAiB,EAAE,uBAAuB,EAC1C,uBAAuB,EAAE,uBAAuB,EAChD,aAAa,EAAE,IAAI,GACnB,CACH,CAAC,CAAC,CAAC,IAAI,IACiB,IACT,GAChB,CACP,CAAA;IACH,CAAC,CAAA;IAED,OAAO,CACL,KAAC,mBAAmB,IAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,cAAc,YAC5F,UAAC,QAA2B,EAAE,QAAQ;;YAAK,OAAA,CAC1C,uBACE,SAAS,EAAC,EAAE,EACZ,GAAG,EAAE,QAAQ,CAAC,QAAQ,IAClB,QAAQ,CAAC,cAAc,EACvB,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,IACrD,KAAK,aAAI,SAAS,EAAE,MAAM,IAAK,QAAQ,CAAC,cAAc,CAAC,KAAK,GAC5D,SAAS,EAAC,uBAAuB,YAIjC,eACE,KAAK,EAAE;wBACL,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;wBAClE,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;wBACrD,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;qBAC7E,EACD,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACtC,SAAS,EAAE,2BAAoB,gBAAgB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAE,EAC1E,OAAO,EAAE,UAAU,aAElB,kBAAkB,CAAC,IAAI,CAAC,EACxB,iBAAiB,CAAC,CAAC,CAAC,CACnB,cAAK,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,YAClE,KAAC,iBAAiB,IAChB,OAAO,EAAE,IAAI,EACb,uBAAuB,EAAE,uBAAuB,EAChD,SAAS,EAAE,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAE,SAAS,EAC7C,mBAAmB,EAAE,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAE,mBAAmB,EACjE,IAAI,EAAE,QAAQ,EACd,WAAW,EAAE,CAAA,MAAA,MAAA,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAE,SAAS,0CAAE,MAAM,0CAAE,KAAK,KAAI,EAAE,EACpE,WAAW,EAAE,IAAI,EACjB,gBAAgB,EAAE,gBAAgB,EAClC,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,EAC/D,eAAe,EAAE,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,EAC/D,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,GAClB,GACE,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,IACF,CACP,CAAA;SAAA,GACmB,CACvB,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC","sourcesContent":["// @ts-nocheck\nimport React from \"react\";\nimport { useRouter } from \"../../../hooks/useRouter\";\nimport { DraggableProvided } from \"@hello-pangea/dnd\";\nimport { CompatibleDraggable } from \"../common/dndCompat\";\nimport { storeCurrentModelViewContext } from \"../../../helpers/modelViewPersistence\";\nimport {\n SolidDropdownMenu,\n SolidDropdownMenuContent,\n SolidDropdownMenuItem,\n SolidDropdownMenuTrigger,\n SolidIcon,\n} from \"../../shad-cn-ui\";\nimport { SolidCollectionRowActionMenuItems } from \"../common/SolidCollectionRowActionMenuItems\";\n\n// Define the types for the data and props\ninterface Data {\n id: string;\n title: string;\n content: string;\n}\n\ninterface KanbanCardProps {\n data: Data;\n solidKanbanViewMetaData: any;\n index: number;\n isDragDisabled?: boolean;\n setLightboxUrls?: any;\n setOpenLightbox?: any;\n editButtonUrl?: string;\n recordClickAction?: \"view\" | \"edit\";\n groupByFieldName?: string;\n group?: any;\n cardNode?: any;\n DynamicCardWidget?: any;\n onDelete?: (record: Data) => void;\n onRecover?: (record: Data) => void;\n showArchived?: boolean;\n params?: any;\n handleCustomButtonClick?: (buttonAttrs: any, event: any) => void;\n}\n\nconst KanbanCard: React.FC<KanbanCardProps> = ({ data, solidKanbanViewMetaData, index, isDragDisabled = false, setLightboxUrls, setOpenLightbox, editButtonUrl, recordClickAction = \"edit\", groupByFieldName, group, cardNode, DynamicCardWidget, onDelete, onRecover, showArchived, params, handleCustomButtonClick }) => {\n const router = useRouter()\n const isArchivedRecord = data?.deletedAt !== null && data?.deletedAt !== undefined;\n\n const persistReturnView = () => {\n storeCurrentModelViewContext();\n };\n\n const openRecord = () => {\n if (isArchivedRecord) return;\n persistReturnView();\n router.push(`${editButtonUrl}/${data?.id}?viewMode=${recordClickAction}`);\n };\n\n const openEdit = () => {\n if (isArchivedRecord) return;\n persistReturnView();\n router.push(`${editButtonUrl}/${data?.id}?viewMode=edit`);\n };\n\n const renderKanbanAction = (data) => {\n return (\n <div className=\"solid-kanban-action\" onClick={(e) => e.stopPropagation()}>\n <SolidDropdownMenu>\n <SolidDropdownMenuTrigger asChild>\n <button\n type=\"button\"\n className=\"solid-header-cog-trigger solid-kanban-action-trigger\"\n aria-label=\"Open card actions\"\n >\n <SolidIcon name=\"si-ellipsis-v\" aria-hidden />\n </button>\n </SolidDropdownMenuTrigger>\n <SolidDropdownMenuContent className=\"solid-custom-overlay\" align=\"end\">\n {!isArchivedRecord ? (\n <SolidDropdownMenuItem\n className=\"solid-header-dropdown-item\"\n onSelect={openEdit}\n >\n <SolidIcon name=\"si-pencil\" className=\"solid-header-action-button-icon\" aria-hidden />\n <span className=\"solid-header-action-button-label\">Edit</span>\n </SolidDropdownMenuItem>\n ) : null}\n {showArchived && data?.deletedAt !== null && data?.deletedAt !== undefined && onRecover ? (\n <SolidDropdownMenuItem\n className=\"solid-header-dropdown-item\"\n onSelect={() => onRecover(data)}\n >\n <SolidIcon name=\"si-refresh\" className=\"solid-header-action-button-icon\" aria-hidden />\n <span className=\"solid-header-action-button-label\">Recover</span>\n </SolidDropdownMenuItem>\n ) : null}\n {onDelete && (data?.deletedAt === null || data?.deletedAt === undefined) ? (\n <SolidDropdownMenuItem\n className=\"solid-header-dropdown-item solid-header-dropdown-item-danger\"\n onSelect={() => onDelete(data)}\n >\n <SolidIcon name=\"si-trash\" className=\"solid-header-action-button-icon\" aria-hidden />\n <span className=\"solid-header-action-button-label\">Delete</span>\n </SolidDropdownMenuItem>\n ) : null}\n {!isArchivedRecord && handleCustomButtonClick ? (\n <SolidCollectionRowActionMenuItems\n buttons={solidKanbanViewMetaData?.solidView?.layout?.attrs?.rowButtons}\n params={params}\n rowData={data}\n solidViewMetaData={solidKanbanViewMetaData}\n handleCustomButtonClick={handleCustomButtonClick}\n showSeparator={true}\n />\n ) : null}\n </SolidDropdownMenuContent>\n </SolidDropdownMenu>\n </div>\n )\n }\n\n return (\n <CompatibleDraggable draggableId={String(data.id)} index={index} isDragDisabled={isDragDisabled}>\n {(provided: DraggableProvided, snapshot) => (\n <div\n className=\"\"\n ref={provided.innerRef}\n {...provided.draggableProps}\n {...(!isDragDisabled ? provided.dragHandleProps : {})}\n style={{ marginTop: \"1rem\", ...provided.draggableProps.style }}\n className=\"kanban-card-container\"\n >\n {/* <p className=\"kanban-card-heading\">{data.title}</p> */}\n {/* <p className=\"kanban-card-content\">{data.content}</p> */}\n <div\n style={{\n opacity: snapshot.isDragging ? 0.9 : (isArchivedRecord ? 0.55 : 1),\n transform: snapshot.isDragging ? \"rotate(-2deg)\" : \"\",\n cursor: isArchivedRecord ? \"default\" : (isDragDisabled ? \"pointer\" : \"grab\")\n }}\n elevation={snapshot.isDragging ? 3 : 1}\n className={`solid-kanban-card${isArchivedRecord ? \" greyed-out-row\" : \"\"}`}\n onClick={openRecord}\n >\n {renderKanbanAction(data)}\n {DynamicCardWidget ? (\n <div style={isArchivedRecord ? { pointerEvents: \"none\" } : undefined}>\n <DynamicCardWidget\n rowData={data}\n solidKanbanViewMetaData={solidKanbanViewMetaData}\n solidView={solidKanbanViewMetaData?.solidView}\n solidFieldsMetadata={solidKanbanViewMetaData?.solidFieldsMetadata}\n card={cardNode}\n layoutAttrs={solidKanbanViewMetaData?.solidView?.layout?.attrs || {}}\n groupedView={true}\n groupByFieldName={groupByFieldName}\n group={group}\n editButtonUrl={editButtonUrl}\n setLightboxUrls={isArchivedRecord ? undefined : setLightboxUrls}\n setOpenLightbox={isArchivedRecord ? undefined : setOpenLightbox}\n openRecord={openRecord}\n openEdit={openEdit}\n />\n </div>\n ) : null}\n </div>\n </div>\n )}\n </CompatibleDraggable>\n );\n};\n\nexport default KanbanCard;\n"]}
|
|
1
|
+
{"version":3,"file":"KanbanCard.js","sourceRoot":"","sources":["../../../../src/components/core/kanban/KanbanCard.tsx"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport React from \"react\";\nimport { useRouter } from \"../../../hooks/useRouter\";\nimport { DraggableProvided } from \"@hello-pangea/dnd\";\nimport { RotateCcw } from \"lucide-react\";\nimport { CompatibleDraggable } from \"../common/dndCompat\";\nimport { storeCurrentModelViewContext } from \"../../../helpers/modelViewPersistence\";\nimport {\n SolidDropdownMenu,\n SolidDropdownMenuContent,\n SolidDropdownMenuItem,\n SolidDropdownMenuTrigger,\n SolidIcon,\n} from \"../../shad-cn-ui\";\nimport { SolidCollectionRowActionMenuItems } from \"../common/SolidCollectionRowActionMenuItems\";\n\n// Define the types for the data and props\ninterface Data {\n id: string;\n title: string;\n content: string;\n}\n\ninterface KanbanCardProps {\n data: Data;\n solidKanbanViewMetaData: any;\n index: number;\n isDragDisabled?: boolean;\n setLightboxUrls?: any;\n setOpenLightbox?: any;\n editButtonUrl?: string;\n recordClickAction?: \"view\" | \"edit\";\n groupByFieldName?: string;\n group?: any;\n cardNode?: any;\n DynamicCardWidget?: any;\n onDelete?: (record: Data) => void;\n onRecover?: (record: Data) => void;\n showArchived?: boolean;\n params?: any;\n handleCustomButtonClick?: (buttonAttrs: any, event: any) => void;\n}\n\nconst KanbanCard: React.FC<KanbanCardProps> = ({ data, solidKanbanViewMetaData, index, isDragDisabled = false, setLightboxUrls, setOpenLightbox, editButtonUrl, recordClickAction = \"edit\", groupByFieldName, group, cardNode, DynamicCardWidget, onDelete, onRecover, showArchived, params, handleCustomButtonClick }) => {\n const router = useRouter()\n const isArchivedRecord = data?.deletedAt !== null && data?.deletedAt !== undefined;\n\n const persistReturnView = () => {\n storeCurrentModelViewContext();\n };\n\n const openRecord = () => {\n if (isArchivedRecord) return;\n persistReturnView();\n router.push(`${editButtonUrl}/${data?.id}?viewMode=${recordClickAction}`);\n };\n\n const openEdit = () => {\n if (isArchivedRecord) return;\n persistReturnView();\n router.push(`${editButtonUrl}/${data?.id}?viewMode=edit`);\n };\n\n const renderRecoverAction = (data) => {\n if (!showArchived || !isArchivedRecord || !onRecover) return null;\n\n return (\n <div className=\"solid-kanban-action\" onClick={(e) => e.stopPropagation()}>\n <button\n type=\"button\"\n className=\"retrieve-button solid-row-menu-trigger\"\n onClick={() => onRecover(data)}\n aria-label=\"Recover record\"\n title=\"Recover\"\n >\n <RotateCcw size={14} aria-hidden />\n </button>\n </div>\n );\n };\n\n const renderKanbanAction = (data) => {\n if (isArchivedRecord) return renderRecoverAction(data);\n\n return (\n <div className=\"solid-kanban-action\" onClick={(e) => e.stopPropagation()}>\n <SolidDropdownMenu>\n <SolidDropdownMenuTrigger asChild>\n <button\n type=\"button\"\n className=\"solid-header-cog-trigger solid-kanban-action-trigger\"\n aria-label=\"Open card actions\"\n >\n <SolidIcon name=\"si-ellipsis-v\" aria-hidden />\n </button>\n </SolidDropdownMenuTrigger>\n <SolidDropdownMenuContent className=\"solid-custom-overlay\" align=\"end\">\n <SolidDropdownMenuItem\n className=\"solid-header-dropdown-item\"\n onSelect={openEdit}\n >\n <SolidIcon name=\"si-pencil\" className=\"solid-header-action-button-icon\" aria-hidden />\n <span className=\"solid-header-action-button-label\">Edit</span>\n </SolidDropdownMenuItem>\n {onDelete && (data?.deletedAt === null || data?.deletedAt === undefined) ? (\n <SolidDropdownMenuItem\n className=\"solid-header-dropdown-item solid-header-dropdown-item-danger\"\n onSelect={() => onDelete(data)}\n >\n <SolidIcon name=\"si-trash\" className=\"solid-header-action-button-icon\" aria-hidden />\n <span className=\"solid-header-action-button-label\">Delete</span>\n </SolidDropdownMenuItem>\n ) : null}\n {!isArchivedRecord && handleCustomButtonClick ? (\n <SolidCollectionRowActionMenuItems\n buttons={solidKanbanViewMetaData?.solidView?.layout?.attrs?.rowButtons}\n params={params}\n rowData={data}\n solidViewMetaData={solidKanbanViewMetaData}\n handleCustomButtonClick={handleCustomButtonClick}\n showSeparator={true}\n />\n ) : null}\n </SolidDropdownMenuContent>\n </SolidDropdownMenu>\n </div>\n )\n }\n\n return (\n <CompatibleDraggable draggableId={String(data.id)} index={index} isDragDisabled={isDragDisabled}>\n {(provided: DraggableProvided, snapshot) => (\n <div\n className=\"\"\n ref={provided.innerRef}\n {...provided.draggableProps}\n {...(!isDragDisabled ? provided.dragHandleProps : {})}\n style={{ marginTop: \"1rem\", ...provided.draggableProps.style }}\n className=\"kanban-card-container\"\n >\n {/* <p className=\"kanban-card-heading\">{data.title}</p> */}\n {/* <p className=\"kanban-card-content\">{data.content}</p> */}\n <div\n style={{\n opacity: snapshot.isDragging ? 0.9 : (isArchivedRecord ? 0.55 : 1),\n transform: snapshot.isDragging ? \"rotate(-2deg)\" : \"\",\n cursor: isArchivedRecord ? \"default\" : (isDragDisabled ? \"pointer\" : \"grab\")\n }}\n elevation={snapshot.isDragging ? 3 : 1}\n className={`solid-kanban-card${isArchivedRecord ? \" greyed-out-row\" : \"\"}`}\n onClick={openRecord}\n >\n {renderKanbanAction(data)}\n {DynamicCardWidget ? (\n <div style={isArchivedRecord ? { pointerEvents: \"none\" } : undefined}>\n <DynamicCardWidget\n rowData={data}\n solidKanbanViewMetaData={solidKanbanViewMetaData}\n solidView={solidKanbanViewMetaData?.solidView}\n solidFieldsMetadata={solidKanbanViewMetaData?.solidFieldsMetadata}\n card={cardNode}\n layoutAttrs={solidKanbanViewMetaData?.solidView?.layout?.attrs || {}}\n groupedView={true}\n groupByFieldName={groupByFieldName}\n group={group}\n editButtonUrl={editButtonUrl}\n setLightboxUrls={isArchivedRecord ? undefined : setLightboxUrls}\n setOpenLightbox={isArchivedRecord ? undefined : setOpenLightbox}\n openRecord={openRecord}\n openEdit={openEdit}\n />\n </div>\n ) : null}\n </div>\n </div>\n )}\n </CompatibleDraggable>\n );\n};\n\nexport default KanbanCard;\n"]}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import React from "react";
|
|
3
3
|
import { useRouter } from "../../../hooks/useRouter";
|
|
4
4
|
import { DraggableProvided } from "@hello-pangea/dnd";
|
|
5
|
+
import { RotateCcw } from "lucide-react";
|
|
5
6
|
import { CompatibleDraggable } from "../common/dndCompat";
|
|
6
7
|
import { storeCurrentModelViewContext } from "../../../helpers/modelViewPersistence";
|
|
7
8
|
import {
|
|
@@ -60,7 +61,27 @@ const KanbanCard: React.FC<KanbanCardProps> = ({ data, solidKanbanViewMetaData,
|
|
|
60
61
|
router.push(`${editButtonUrl}/${data?.id}?viewMode=edit`);
|
|
61
62
|
};
|
|
62
63
|
|
|
64
|
+
const renderRecoverAction = (data) => {
|
|
65
|
+
if (!showArchived || !isArchivedRecord || !onRecover) return null;
|
|
66
|
+
|
|
67
|
+
return (
|
|
68
|
+
<div className="solid-kanban-action" onClick={(e) => e.stopPropagation()}>
|
|
69
|
+
<button
|
|
70
|
+
type="button"
|
|
71
|
+
className="retrieve-button solid-row-menu-trigger"
|
|
72
|
+
onClick={() => onRecover(data)}
|
|
73
|
+
aria-label="Recover record"
|
|
74
|
+
title="Recover"
|
|
75
|
+
>
|
|
76
|
+
<RotateCcw size={14} aria-hidden />
|
|
77
|
+
</button>
|
|
78
|
+
</div>
|
|
79
|
+
);
|
|
80
|
+
};
|
|
81
|
+
|
|
63
82
|
const renderKanbanAction = (data) => {
|
|
83
|
+
if (isArchivedRecord) return renderRecoverAction(data);
|
|
84
|
+
|
|
64
85
|
return (
|
|
65
86
|
<div className="solid-kanban-action" onClick={(e) => e.stopPropagation()}>
|
|
66
87
|
<SolidDropdownMenu>
|
|
@@ -74,24 +95,13 @@ const KanbanCard: React.FC<KanbanCardProps> = ({ data, solidKanbanViewMetaData,
|
|
|
74
95
|
</button>
|
|
75
96
|
</SolidDropdownMenuTrigger>
|
|
76
97
|
<SolidDropdownMenuContent className="solid-custom-overlay" align="end">
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
</SolidDropdownMenuItem>
|
|
85
|
-
) : null}
|
|
86
|
-
{showArchived && data?.deletedAt !== null && data?.deletedAt !== undefined && onRecover ? (
|
|
87
|
-
<SolidDropdownMenuItem
|
|
88
|
-
className="solid-header-dropdown-item"
|
|
89
|
-
onSelect={() => onRecover(data)}
|
|
90
|
-
>
|
|
91
|
-
<SolidIcon name="si-refresh" className="solid-header-action-button-icon" aria-hidden />
|
|
92
|
-
<span className="solid-header-action-button-label">Recover</span>
|
|
93
|
-
</SolidDropdownMenuItem>
|
|
94
|
-
) : null}
|
|
98
|
+
<SolidDropdownMenuItem
|
|
99
|
+
className="solid-header-dropdown-item"
|
|
100
|
+
onSelect={openEdit}
|
|
101
|
+
>
|
|
102
|
+
<SolidIcon name="si-pencil" className="solid-header-action-button-icon" aria-hidden />
|
|
103
|
+
<span className="solid-header-action-button-label">Edit</span>
|
|
104
|
+
</SolidDropdownMenuItem>
|
|
95
105
|
{onDelete && (data?.deletedAt === null || data?.deletedAt === undefined) ? (
|
|
96
106
|
<SolidDropdownMenuItem
|
|
97
107
|
className="solid-header-dropdown-item solid-header-dropdown-item-danger"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidKanbanView.d.ts","sourceRoot":"","sources":["../../../../src/components/core/kanban/SolidKanbanView.tsx"],"names":[],"mappings":";AAkDA,KAAK,qBAAqB,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,GAAG,CAAC;CACpB,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B,uBAAuB,CAAC,EAAE,GAAG,CAAC;IAC9B,gBAAgB,CAAC,EAAE,GAAG,CAAC;IACvB,sBAAsB,CAAC,EAAE,GAAG,CAAC;IAC7B,2BAA2B,CAAC,EAAE,GAAG,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,WAAW,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACtD,eAAe,EAAE,MAAM,GAAG,EAAE,CAAC;IAC7B,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC;IAC7E,eAAe,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,QAAQ,EAAE,MAAM;QACd,gBAAgB,EAAE,MAAM,CAAC;QACzB,YAAY,EAAE,OAAO,CAAC;QACtB,OAAO,EAAE,GAAG,CAAC;QACb,gBAAgB,EAAE,GAAG,CAAC;QACtB,UAAU,EAAE,GAAG,EAAE,CAAC;QAClB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;CACH,CAAC;AAqEF,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"SolidKanbanView.d.ts","sourceRoot":"","sources":["../../../../src/components/core/kanban/SolidKanbanView.tsx"],"names":[],"mappings":";AAkDA,KAAK,qBAAqB,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,GAAG,CAAC;CACpB,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B,uBAAuB,CAAC,EAAE,GAAG,CAAC;IAC9B,gBAAgB,CAAC,EAAE,GAAG,CAAC;IACvB,sBAAsB,CAAC,EAAE,GAAG,CAAC;IAC7B,2BAA2B,CAAC,EAAE,GAAG,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,WAAW,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACtD,eAAe,EAAE,MAAM,GAAG,EAAE,CAAC;IAC7B,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC;IAC7E,eAAe,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,QAAQ,EAAE,MAAM;QACd,gBAAgB,EAAE,MAAM,CAAC;QACzB,YAAY,EAAE,OAAO,CAAC;QACtB,OAAO,EAAE,GAAG,CAAC;QACb,gBAAgB,EAAE,GAAG,CAAC;QACtB,UAAU,EAAE,GAAG,EAAE,CAAC;QAClB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;CACH,CAAC;AAqEF,eAAO,MAAM,eAAe,yHAqpC1B,CAAC"}
|
|
@@ -1109,7 +1109,7 @@ export var SolidKanbanView = forwardRef(function (params, ref) {
|
|
|
1109
1109
|
};
|
|
1110
1110
|
console.log("Logging kanban data: ", solidKanbanViewMetaData);
|
|
1111
1111
|
return (_jsxs("div", { className: "page-parent-wrapper solid-list-page-wrapper flex h-full min-h-0 overflow-hidden", children: [_jsx("div", { className: "solid-list-content flex flex-col flex-grow-1", children: _jsxs("div", { className: "solid-list-surface solid-kanban-surface flex flex-col flex-1 min-h-0", children: [_jsx("div", { className: "page-header solid-list-toolbar solid-kanban-toolbar flex-col lg:flex-row", children: _jsxs("div", { className: "flex w-full flex-col-reverse lg:flex-row lg:items-center items-end", children: [_jsx("div", { className: "solid-list-toolbar-left flex w-full items-center gap-3 lg:min-w-0 lg:flex-1", children: _jsx("div", { className: "".concat(showGlobalSearchElement ? "flex" : "max-lg:hidden lg:flex", " w-full mt-3 lg:mt-0 lg:min-w-0"), children: _jsx(SolidGlobalSearchElement, { viewType: "kanban", showSaveFilterPopup: showSaveFilterPopup, setShowSaveFilterPopup: setShowSaveFilterPopup, ref: solidGlobalSearchElementRef, viewData: solidKanbanViewMetaData, handleApplyCustomFilter: handleApplyCustomFilter, filterPredicates: filterPredicates }) }) }), _jsxs("div", { className: "flex items-center solid-header-buttons-wrapper solid-list-toolbar-actions lg:ml-auto", children: [_jsx(SolidHeaderRequestStatus, { label: headerRequestStatusLabel }), _jsx("div", { className: "solid-list-search-toggle", children: _jsx(SolidButton, { type: "button", variant: "outline", size: "sm", className: "solid-icon-button", onClick: function () { return setShowGlobalSearchElement(!showGlobalSearchElement); }, "aria-label": "Toggle search", leftIcon: _jsx(SolidIcon, { name: "si-search", "aria-hidden": true }) }) }), _jsx("div", { className: "solid-header-buttons-wrapper hidden items-center lg:flex", children: (_q = visibleHeaderButtons === null || visibleHeaderButtons === void 0 ? void 0 : visibleHeaderButtons.filter(function (button) { var _a; return ((_a = button === null || button === void 0 ? void 0 : button.attrs) === null || _a === void 0 ? void 0 : _a.actionInContextMenu) !== true; })) === null || _q === void 0 ? void 0 : _q.map(function (button, index) { return (_jsx(SolidListViewHeaderButton, { button: button, params: params, solidListViewMetaData: solidKanbanViewMetaData, handleCustomButtonClick: handleCustomButtonClick, selectedRecords: selectedRecords, filters: filters }, index)); }) }), actionsAllowed.includes("".concat(permissionExpression(params.modelName, 'create'))) && ((_t = (_s = (_r = solidKanbanViewMetaData === null || solidKanbanViewMetaData === void 0 ? void 0 : solidKanbanViewMetaData.data) === null || _r === void 0 ? void 0 : _r.solidView) === null || _s === void 0 ? void 0 : _s.layout) === null || _t === void 0 ? void 0 : _t.attrs.create) !== false &&
|
|
1112
|
-
_jsx(SolidCreateButton, { createButtonUrl: createButtonUrl, createActionQueryParams: createActionQueryParams, responsiveIconOnly: true }), actionsAllowed.includes("".concat(permissionExpression(params.modelName, 'delete'))) && ((_w = (_v = (_u = solidKanbanViewMetaData === null || solidKanbanViewMetaData === void 0 ? void 0 : solidKanbanViewMetaData.data) === null || _u === void 0 ? void 0 : _u.solidView) === null || _v === void 0 ? void 0 : _v.layout) === null || _w === void 0 ? void 0 : _w.attrs.delete) !== false && selectedRecords.length > 0 && _jsx(SolidButton, { type: "button", variant: "destructive", size: "sm", onClick: function () { return setDialogVisible(true); }, children: "Delete" }), _jsx(SolidButton, { type: "button", variant: "outline", size: "sm", className: "solid-icon-button", onClick: handleRefreshView, "aria-label": "Refresh board", leftIcon: _jsx(SolidIcon, { name: "si-refresh", "aria-hidden": true }) }), _jsx(SolidKanbanViewConfigure, { solidKanbanViewMetaData: solidKanbanViewMetaData, params: params, modelName: params.modelName, actionsAllowed: actionsAllowed, headerButtons: visibleHeaderButtons, handleCustomButtonClick: handleCustomButtonClick, selectedRecords: selectedRecords, filters: filters, viewModes: viewModes, setShowArchived: setShowArchived, showArchived: showArchived, setLayoutDialogVisible: setLayoutDialogVisible, setShowSaveFilterPopup: setShowSaveFilterPopup, handleRefreshView: handleRefreshView })] })] }) }),
|
|
1112
|
+
_jsx(SolidCreateButton, { createButtonUrl: createButtonUrl, createActionQueryParams: createActionQueryParams, responsiveIconOnly: true }), actionsAllowed.includes("".concat(permissionExpression(params.modelName, 'delete'))) && ((_w = (_v = (_u = solidKanbanViewMetaData === null || solidKanbanViewMetaData === void 0 ? void 0 : solidKanbanViewMetaData.data) === null || _u === void 0 ? void 0 : _u.solidView) === null || _v === void 0 ? void 0 : _v.layout) === null || _w === void 0 ? void 0 : _w.attrs.delete) !== false && selectedRecords.length > 0 && _jsx(SolidButton, { type: "button", variant: "destructive", size: "sm", onClick: function () { return setDialogVisible(true); }, children: "Delete" }), _jsx(SolidButton, { type: "button", variant: "outline", size: "sm", className: "solid-icon-button", onClick: handleRefreshView, "aria-label": "Refresh board", leftIcon: _jsx(SolidIcon, { name: "si-refresh", "aria-hidden": true }) }), _jsx(SolidKanbanViewConfigure, { solidKanbanViewMetaData: solidKanbanViewMetaData, params: params, modelName: params.modelName, actionsAllowed: actionsAllowed, headerButtons: visibleHeaderButtons, handleCustomButtonClick: handleCustomButtonClick, selectedRecords: selectedRecords, filters: filters, viewModes: viewModes, setShowArchived: setShowArchived, showArchived: showArchived, setLayoutDialogVisible: setLayoutDialogVisible, setShowSaveFilterPopup: setShowSaveFilterPopup, hasAnyActiveFilters: hasAnyActiveFilters, handleRefreshView: handleRefreshView })] })] }) }), solidKanbanViewMetaData && kanbanViewData &&
|
|
1113
1113
|
_jsx(KanbanBoard, { groupByFieldName: groupByFieldName, kanbanViewData: kanbanViewData, maxSwimLanesCount: maxSwimLanesCount, solidKanbanViewMetaData: solidKanbanViewMetaData === null || solidKanbanViewMetaData === void 0 ? void 0 : solidKanbanViewMetaData.data, setKanbanViewData: setKanbanViewData, handleLoadMore: handleLoadMore, onDragEnd: onDragEnd, handleSwimLanePagination: handleSwimLanePagination, onDelete: actionsAllowed.includes("".concat(permissionExpression(params.modelName, 'delete'))) && ((_z = (_y = (_x = solidKanbanViewMetaData === null || solidKanbanViewMetaData === void 0 ? void 0 : solidKanbanViewMetaData.data) === null || _x === void 0 ? void 0 : _x.solidView) === null || _y === void 0 ? void 0 : _y.layout) === null || _z === void 0 ? void 0 : _z.attrs.delete) !== false ? openDeleteDialogForRecord : undefined, onRecover: handleRecoverRecord, setLightboxUrls: setLightboxUrls, setOpenLightbox: setOpenLightbox, editButtonUrl: editBaseUrl, recordClickAction: recordClickAction, showArchived: showArchived, params: params, handleCustomButtonClick: handleCustomButtonClick })] }) }), _jsx(SolidConfirmDialog, { open: isDialogVisible, onCancel: onDeleteClose, onConfirm: deleteBulk, className: "solid-shadcn-confirm-dialog solid-delete-confirm-dialog", headerClassName: "solid-shadcn-dialog-head", bodyClassName: "solid-shadcn-dialog-body", footerClassName: "solid-shadcn-dialog-actions", separatorClassName: "solid-shadcn-dialog-sep", showSeparator: true, title: "Delete ".concat(entityDisplayName), message: _jsx("p", { className: "solid-shadcn-dialog-text", children: selectedRecords.length === 1
|
|
1114
1114
|
? "Are you sure you want to delete this ".concat(entityDisplayName, " record?")
|
|
1115
1115
|
: "Are you sure you want to delete the selected ".concat(entityDisplayName, " records?") }), confirmLabel: "Delete", cancelLabel: "Cancel" }), openLightbox && (_jsx(SolidLightbox, { open: openLightbox, slides: lightboxSlides, onClose: function () { return setOpenLightbox(false); } })), _jsxs(SolidDialog, { open: isLayoutDialogVisible, onOpenChange: setLayoutDialogVisible, className: "solid-kanban-layout-dialog", style: { width: "min(800px, calc(100vw - 32px))" }, children: [_jsxs(SolidDialogHeader, { children: [_jsx(SolidDialogTitle, { children: "Change Kanban Layout" }), _jsx(SolidDialogClose, {})] }), _jsx(SolidDialogSeparator, {}), _jsx(SolidDialogBody, { className: "solid-kanban-layout-dialog-body", children: _jsx(KanbanUserViewLayout, { solidKanbanViewMetaData: solidKanbanViewMetaData, setLayoutDialogVisible: setLayoutDialogVisible }) })] })] }));
|