@nu-art/thunderstorm-frontend 0.400.5
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/_ats/ATS_ActionProcessor/ATS_ActionProcessor.d.ts +17 -0
- package/_ats/ATS_ActionProcessor/ATS_ActionProcessor.js +52 -0
- package/_ats/ATS_ActionProcessor/ATS_ActionProcessor.scss +43 -0
- package/_ats/ATS_AppConfigEditor/ATS_AppConfigEditor.d.ts +25 -0
- package/_ats/ATS_AppConfigEditor/ATS_AppConfigEditor.js +88 -0
- package/_ats/ATS_AppConfigEditor/ATS_AppConfigEditor.scss +117 -0
- package/_ats/ATS_CollectionUpgrades/ATS_CollectionUpgrades.d.ts +17 -0
- package/_ats/ATS_CollectionUpgrades/ATS_CollectionUpgrades.js +45 -0
- package/_ats/ATS_CollectionUpgrades/ATS_CollectionUpgrades.scss +24 -0
- package/_ats/ATS_CrudOperations/ATS_CrudOperations.d.ts +29 -0
- package/_ats/ATS_CrudOperations/ATS_CrudOperations.js +93 -0
- package/_ats/ATS_CrudOperations/ATS_CrudOperations.scss +46 -0
- package/_ats/ATS_CrudOperations/ui-components.d.ts +24 -0
- package/_ats/ATS_CrudOperations/ui-components.js +11 -0
- package/_ats/ATS_EditableItem/ATS_EditableItem.d.ts +16 -0
- package/_ats/ATS_EditableItem/ATS_EditableItem.js +48 -0
- package/_ats/ATS_IDBCacheComparison/ATS_IDBCacheComparison.d.ts +18 -0
- package/_ats/ATS_IDBCacheComparison/ATS_IDBCacheComparison.js +28 -0
- package/_ats/ATS_IDBCacheComparison/ATS_IDBCacheComparison.scss +7 -0
- package/_ats/ATS_IDBCacheComparison/Component_CollectionGrid.d.ts +23 -0
- package/_ats/ATS_IDBCacheComparison/Component_CollectionGrid.js +66 -0
- package/_ats/ATS_IDBCacheComparison/Component_CollectionGrid.scss +52 -0
- package/_ats/ATS_IDBCacheComparison/Dialog_IDBCacheComparison.d.ts +17 -0
- package/_ats/ATS_IDBCacheComparison/Dialog_IDBCacheComparison.js +30 -0
- package/_ats/ATS_IDBCacheComparison/Dialog_IDBCacheComparison.scss +25 -0
- package/_ats/ATS_Printables/ATS_AbstractPrintable.d.ts +16 -0
- package/_ats/ATS_Printables/ATS_AbstractPrintable.js +37 -0
- package/_ats/ATS_Printables/ATS_Printable.d.ts +13 -0
- package/_ats/ATS_Printables/ATS_Printable.js +45 -0
- package/_ats/ATS_Printables/ATS_Printable.scss +40 -0
- package/_ats/ATS_ProtoComponent/ATS_ProtoComponent.d.ts +33 -0
- package/_ats/ATS_ProtoComponent/ATS_ProtoComponent.js +80 -0
- package/_ats/ATS_ProtoComponent/ATS_ProtoComponent.scss +19 -0
- package/_ats/ATS_SyncEnv/ATS_SyncEnv.d.ts +51 -0
- package/_ats/ATS_SyncEnv/ATS_SyncEnv.js +215 -0
- package/_ats/ATS_SyncEnv/ATS_SyncEnv.scss +172 -0
- package/_ats/ATS_Toaster/ATS_Toaster.d.ts +23 -0
- package/_ats/ATS_Toaster/ATS_Toaster.js +48 -0
- package/_ats/ATS_Toaster/ATS_Toaster.scss +2 -0
- package/_ats/ATS_Toaster/index.d.ts +1 -0
- package/_ats/ATS_Toaster/index.js +1 -0
- package/_ats/dialogs/Dialog_ActionProcessorConfirmation/Dialog_ActionProcessorConfirmation.d.ts +18 -0
- package/_ats/dialogs/Dialog_ActionProcessorConfirmation/Dialog_ActionProcessorConfirmation.js +41 -0
- package/_ats/dialogs/Dialog_ActionProcessorConfirmation/Dialog_ActionProcessorConfirmation.scss +71 -0
- package/_ats/dialogs/index.d.ts +1 -0
- package/_ats/dialogs/index.js +1 -0
- package/_ats/index.d.ts +8 -0
- package/_ats/index.js +8 -0
- package/_entity/app-config/ModuleFE_AppConfig.d.ts +24 -0
- package/_entity/app-config/ModuleFE_AppConfig.js +52 -0
- package/_entity/app-config/index.d.ts +2 -0
- package/_entity/app-config/index.js +2 -0
- package/_entity/app-config/module-pack.d.ts +1 -0
- package/_entity/app-config/module-pack.js +2 -0
- package/_entity/editable-test/ModuleFE_EditableTest.d.ts +11 -0
- package/_entity/editable-test/ModuleFE_EditableTest.js +12 -0
- package/_entity/editable-test/index.d.ts +2 -0
- package/_entity/editable-test/index.js +2 -0
- package/_entity/editable-test/module-pack.d.ts +1 -0
- package/_entity/editable-test/module-pack.js +2 -0
- package/_entity/editable-test/ui-components.d.ts +37 -0
- package/_entity/editable-test/ui-components.js +21 -0
- package/_entity.d.ts +2 -0
- package/_entity.js +2 -0
- package/_to-refactor/MenuAndButton.d.ts +1 -0
- package/_to-refactor/MenuAndButton.js +87 -0
- package/behavior-functions/index.d.ts +1 -0
- package/behavior-functions/index.js +1 -0
- package/behavior-functions/scroll-into-view.d.ts +6 -0
- package/behavior-functions/scroll-into-view.js +55 -0
- package/component-modules/ModuleFE_Dialog.d.ts +27 -0
- package/component-modules/ModuleFE_Dialog.js +48 -0
- package/component-modules/ModuleFE_Notifications.d.ts +45 -0
- package/component-modules/ModuleFE_Notifications.js +133 -0
- package/component-modules/ModuleFE_Toaster.d.ts +28 -0
- package/component-modules/ModuleFE_Toaster.js +97 -0
- package/component-modules/mouse-interactivity/ModuleFE_MouseInteractivity.d.ts +9 -0
- package/component-modules/mouse-interactivity/ModuleFE_MouseInteractivity.js +35 -0
- package/component-modules/mouse-interactivity/helper-functions.d.ts +108 -0
- package/component-modules/mouse-interactivity/helper-functions.js +339 -0
- package/component-modules/mouse-interactivity/index.d.ts +3 -0
- package/component-modules/mouse-interactivity/index.js +3 -0
- package/component-modules/mouse-interactivity/types.d.ts +37 -0
- package/component-modules/mouse-interactivity/types.js +2 -0
- package/components/ActionButton.d.ts +7 -0
- package/components/ActionButton.js +29 -0
- package/components/AwaitModules/AwaitModules.d.ts +40 -0
- package/components/AwaitModules/AwaitModules.js +95 -0
- package/components/AwaitModules/AwaitModules.scss +53 -0
- package/components/AwaitSync/AwaitSync.d.ts +18 -0
- package/components/AwaitSync/AwaitSync.js +25 -0
- package/components/AwaitSync/AwaitSync.scss +13 -0
- package/components/Button/ATS_Button.d.ts +21 -0
- package/components/Button/ATS_Button.js +66 -0
- package/components/Button/ATS_Button.scss +19 -0
- package/components/Button/Button.d.ts +40 -0
- package/components/Button/Button.js +94 -0
- package/components/Button/Button.scss +151 -0
- package/components/FrameLayout/FrameLayout.d.ts +7 -0
- package/components/FrameLayout/FrameLayout.js +10 -0
- package/components/FrameLayout/FrameLayout.scss +5 -0
- package/components/FrameLayout/index.d.ts +1 -0
- package/components/FrameLayout/index.js +1 -0
- package/components/GenericDropDown/GenericDropDownV3.d.ts +108 -0
- package/components/GenericDropDown/GenericDropDownV3.js +98 -0
- package/components/GenericDropDown/index.d.ts +1 -0
- package/components/GenericDropDown/index.js +1 -0
- package/components/GenericRenderer/Component_GenericRenderer.d.ts +15 -0
- package/components/GenericRenderer/Component_GenericRenderer.js +13 -0
- package/components/HeightBounder.d.ts +11 -0
- package/components/HeightBounder.js +25 -0
- package/components/Label/ATS_Label.d.ts +12 -0
- package/components/Label/ATS_Label.js +34 -0
- package/components/Label/ATS_Label.scss +24 -0
- package/components/Label/Label.d.ts +30 -0
- package/components/Label/Label.js +84 -0
- package/components/Label/Label.scss +89 -0
- package/components/Layouts/Layouts.d.ts +38 -0
- package/components/Layouts/Layouts.js +56 -0
- package/components/Layouts/_Layouts.scss +53 -0
- package/components/Layouts/_Layouts_.scss +69 -0
- package/components/Layouts/index.d.ts +1 -0
- package/components/Layouts/index.js +21 -0
- package/components/Page_ItemsEditor/Page_ItemsEditor.d.ts +66 -0
- package/components/Page_ItemsEditor/Page_ItemsEditor.js +134 -0
- package/components/Page_ItemsEditor/Page_ItemsEditor.scss +104 -0
- package/components/Page_ItemsEditor/defaults/ItemEditor_DefaultFilter/ItemEditor_DefaultFilter.d.ts +16 -0
- package/components/Page_ItemsEditor/defaults/ItemEditor_DefaultFilter/ItemEditor_DefaultFilter.js +15 -0
- package/components/Page_ItemsEditor/defaults/ItemEditor_DefaultFilter/ItemEditor_DefaultFilter.scss +4 -0
- package/components/Page_ItemsEditor/defaults/ItemEditor_DefaultFilter/index.d.ts +1 -0
- package/components/Page_ItemsEditor/defaults/ItemEditor_DefaultFilter/index.js +1 -0
- package/components/Page_ItemsEditor/defaults/ItemEditor_ListRenderer/ItemEditor_DefaultList.d.ts +26 -0
- package/components/Page_ItemsEditor/defaults/ItemEditor_ListRenderer/ItemEditor_DefaultList.js +68 -0
- package/components/Page_ItemsEditor/defaults/ItemEditor_ListRenderer/ItemEditor_DefaultList.scss +4 -0
- package/components/Page_ItemsEditor/defaults/ItemEditor_ListRenderer/index.d.ts +1 -0
- package/components/Page_ItemsEditor/defaults/ItemEditor_ListRenderer/index.js +1 -0
- package/components/Page_ItemsEditor/index.d.ts +1 -0
- package/components/Page_ItemsEditor/index.js +1 -0
- package/components/Page_ItemsEditor/types.d.ts +4 -0
- package/components/Page_ItemsEditor/types.js +1 -0
- package/components/RelativeLayout/RelativeLayout.d.ts +7 -0
- package/components/RelativeLayout/RelativeLayout.js +10 -0
- package/components/RelativeLayout/RelativeLayout.scss +3 -0
- package/components/RelativeLayout/index.d.ts +1 -0
- package/components/RelativeLayout/index.js +1 -0
- package/components/Show.d.ts +20 -0
- package/components/Show.js +30 -0
- package/components/TS_AppTools/TS_AppTools.d.ts +30 -0
- package/components/TS_AppTools/TS_AppTools.js +144 -0
- package/components/TS_AppTools/TS_AppTools.scss +193 -0
- package/components/TS_AppTools/TS_AppTools_Default.d.ts +7 -0
- package/components/TS_AppTools/TS_AppTools_Default.js +16 -0
- package/components/TS_AppTools/index.d.ts +2 -0
- package/components/TS_AppTools/index.js +22 -0
- package/components/TS_AppTools/types.d.ts +19 -0
- package/components/TS_AppTools/types.js +6 -0
- package/components/TS_ButtonGroup/TS_ButtonGroup.d.ts +12 -0
- package/components/TS_ButtonGroup/TS_ButtonGroup.js +94 -0
- package/components/TS_ButtonGroup/TS_ButtonGroup.scss +58 -0
- package/components/TS_ButtonGroup/index.d.ts +2 -0
- package/components/TS_ButtonGroup/index.js +2 -0
- package/components/TS_ButtonGroup/types.d.ts +38 -0
- package/components/TS_ButtonGroup/types.js +1 -0
- package/components/TS_ButtonLoader/TS_ButtonLoader.d.ts +5 -0
- package/components/TS_ButtonLoader/TS_ButtonLoader.js +8 -0
- package/components/TS_ButtonLoader/TS_ButtonLoader.scss +63 -0
- package/components/TS_ButtonLoader/index.d.ts +1 -0
- package/components/TS_ButtonLoader/index.js +1 -0
- package/components/TS_Card/TS_Card.d.ts +7 -0
- package/components/TS_Card/TS_Card.js +14 -0
- package/components/TS_Card/TS_Card.scss +7 -0
- package/components/TS_Card/index.d.ts +1 -0
- package/components/TS_Card/index.js +1 -0
- package/components/TS_Checkbox/ATS_CheckboxV2.d.ts +3 -0
- package/components/TS_Checkbox/ATS_CheckboxV2.js +30 -0
- package/components/TS_Checkbox/ATS_CheckboxV2.scss +4 -0
- package/components/TS_Checkbox/TS_Checkbox.d.ts +48 -0
- package/components/TS_Checkbox/TS_Checkbox.js +46 -0
- package/components/TS_Checkbox/TS_Checkbox.scss +62 -0
- package/components/TS_Checkbox/TS_CheckboxV2.d.ts +37 -0
- package/components/TS_Checkbox/TS_CheckboxV2.js +53 -0
- package/components/TS_Checkbox/TS_CheckboxV2.scss +97 -0
- package/components/TS_Checkbox/index.d.ts +1 -0
- package/components/TS_Checkbox/index.js +21 -0
- package/components/TS_CheckboxGroup/ATS_CheckboxGroup.d.ts +19 -0
- package/components/TS_CheckboxGroup/ATS_CheckboxGroup.js +89 -0
- package/components/TS_CheckboxGroup/ATS_CheckboxGroup.scss +6 -0
- package/components/TS_CheckboxGroup/TS_CheckboxGroup.d.ts +35 -0
- package/components/TS_CheckboxGroup/TS_CheckboxGroup.js +47 -0
- package/components/TS_CheckboxGroup/TS_CheckboxGroup.scss +32 -0
- package/components/TS_CheckboxGroup/index.d.ts +1 -0
- package/components/TS_CheckboxGroup/index.js +1 -0
- package/components/TS_CollapsableContainer/TS_CollapsableContainer.d.ts +44 -0
- package/components/TS_CollapsableContainer/TS_CollapsableContainer.js +80 -0
- package/components/TS_CollapsableContainer/TS_CollapsableContainer.scss +47 -0
- package/components/TS_CollapsableContainer/index.d.ts +1 -0
- package/components/TS_CollapsableContainer/index.js +1 -0
- package/components/TS_CollapsableContainerV2/TS_CollapsableContainerV2.d.ts +36 -0
- package/components/TS_CollapsableContainerV2/TS_CollapsableContainerV2.js +46 -0
- package/components/TS_CollapsableContainerV2/TS_CollapsableContainerV2.scss +66 -0
- package/components/TS_CollapsableContainerV2/ats.d.ts +3 -0
- package/components/TS_CollapsableContainerV2/ats.js +39 -0
- package/components/TS_CollapsableContainerV2/ats.scss +35 -0
- package/components/TS_CollapsableContainerV2/index.d.ts +2 -0
- package/components/TS_CollapsableContainerV2/index.js +2 -0
- package/components/TS_ComponentTransition/TS_ComponentTransition.d.ts +25 -0
- package/components/TS_ComponentTransition/TS_ComponentTransition.js +65 -0
- package/components/TS_ComponentTransition/index.d.ts +1 -0
- package/components/TS_ComponentTransition/index.js +1 -0
- package/components/TS_CopyToClipboard/TS_CopyToClipboard.d.ts +4 -0
- package/components/TS_CopyToClipboard/TS_CopyToClipboard.js +11 -0
- package/components/TS_CopyToClipboard/index.d.ts +1 -0
- package/components/TS_CopyToClipboard/index.js +21 -0
- package/components/TS_Dialog/TS_Dialog.d.ts +89 -0
- package/components/TS_Dialog/TS_Dialog.js +140 -0
- package/components/TS_Dialog/TS_Dialog.scss +116 -0
- package/components/TS_Dialog/TS_DialogOverlay.d.ts +15 -0
- package/components/TS_Dialog/TS_DialogOverlay.js +48 -0
- package/components/TS_Dialog/TS_DialogOverlay.scss +41 -0
- package/components/TS_Dialog/TS_SimpleDialog.d.ts +21 -0
- package/components/TS_Dialog/TS_SimpleDialog.js +37 -0
- package/components/TS_Dialog/TS_SimpleDialog.scss +5 -0
- package/components/TS_Dialog/TS_SimpleDialogue.d.ts +28 -0
- package/components/TS_Dialog/TS_SimpleDialogue.js +38 -0
- package/components/TS_Dialog/index.d.ts +2 -0
- package/components/TS_Dialog/index.js +22 -0
- package/components/TS_DragAndDrop/TS_DragAndDrop.d.ts +48 -0
- package/components/TS_DragAndDrop/TS_DragAndDrop.js +105 -0
- package/components/TS_DragAndDrop/TS_DragAndDrop.scss +61 -0
- package/components/TS_DragAndDrop/index.d.ts +1 -0
- package/components/TS_DragAndDrop/index.js +21 -0
- package/components/TS_Dropdown/TS_DropDown.d.ts +120 -0
- package/components/TS_Dropdown/TS_DropDown.js +332 -0
- package/components/TS_Dropdown/TS_DropDown.scss +134 -0
- package/components/TS_Dropdown/index.d.ts +1 -0
- package/components/TS_Dropdown/index.js +21 -0
- package/components/TS_EditableContent/TS_EditableContent.d.ts +19 -0
- package/components/TS_EditableContent/TS_EditableContent.js +32 -0
- package/components/TS_EditableContent/types.d.ts +4 -0
- package/components/TS_EditableContent/types.js +1 -0
- package/components/TS_EditableItemComponent/TS_EditableItemComponent.d.ts +23 -0
- package/components/TS_EditableItemComponent/TS_EditableItemComponent.js +47 -0
- package/components/TS_EditableItemController/TS_EditableItemController.d.ts +36 -0
- package/components/TS_EditableItemController/TS_EditableItemController.js +54 -0
- package/components/TS_EditableItemController/TS_EditableItemController.scss +3 -0
- package/components/TS_EditableItemController/index.d.ts +1 -0
- package/components/TS_EditableItemController/index.js +1 -0
- package/components/TS_EditableItemControllerProto/TS_EditableItemControllerProto.d.ts +32 -0
- package/components/TS_EditableItemControllerProto/TS_EditableItemControllerProto.js +53 -0
- package/components/TS_EditableItemControllerProto/TS_EditableItemControllerProto.scss +3 -0
- package/components/TS_EditableItemControllerProto/index.d.ts +1 -0
- package/components/TS_EditableItemControllerProto/index.js +1 -0
- package/components/TS_EditableItemStatus/TS_EditableItemStatus.d.ts +20 -0
- package/components/TS_EditableItemStatus/TS_EditableItemStatus.js +34 -0
- package/components/TS_EditableText/TS_EditableText.d.ts +57 -0
- package/components/TS_EditableText/TS_EditableText.js +100 -0
- package/components/TS_EditableText/TS_EditableText.scss +90 -0
- package/components/TS_EditableText/index.d.ts +1 -0
- package/components/TS_EditableText/index.js +1 -0
- package/components/TS_ErrorBoundary/TS_ErrorBoundary.d.ts +54 -0
- package/components/TS_ErrorBoundary/TS_ErrorBoundary.js +103 -0
- package/components/TS_ErrorBoundary/TS_ErrorBoundary.scss +95 -0
- package/components/TS_ErrorBoundary/index.d.ts +1 -0
- package/components/TS_ErrorBoundary/index.js +21 -0
- package/components/TS_Form/TS_Form.d.ts +9 -0
- package/components/TS_Form/TS_Form.js +11 -0
- package/components/TS_Form/TS_Form.scss +0 -0
- package/components/TS_Form/consts.d.ts +1 -0
- package/components/TS_Form/consts.js +1 -0
- package/components/TS_Form/index.d.ts +3 -0
- package/components/TS_Form/index.js +3 -0
- package/components/TS_Form/types.d.ts +13 -0
- package/components/TS_Form/types.js +1 -0
- package/components/TS_GridTableProto/TS_GridTableProto.d.ts +18 -0
- package/components/TS_GridTableProto/TS_GridTableProto.js +22 -0
- package/components/TS_GridTableProto/TS_GridTableProto.scss +4 -0
- package/components/TS_GridTableProto/index.d.ts +1 -0
- package/components/TS_GridTableProto/index.js +1 -0
- package/components/TS_Input/ATS_TextArea.d.ts +14 -0
- package/components/TS_Input/ATS_TextArea.js +24 -0
- package/components/TS_Input/ATS_TextArea.scss +24 -0
- package/components/TS_Input/TS_BaseInput.d.ts +44 -0
- package/components/TS_Input/TS_BaseInput.js +47 -0
- package/components/TS_Input/TS_Input.d.ts +24 -0
- package/components/TS_Input/TS_Input.js +53 -0
- package/components/TS_Input/TS_Input.scss +64 -0
- package/components/TS_Input/TS_TextArea.d.ts +14 -0
- package/components/TS_Input/TS_TextArea.js +72 -0
- package/components/TS_Input/TS_TextArea.scss +41 -0
- package/components/TS_Input/index.d.ts +4 -0
- package/components/TS_Input/index.js +25 -0
- package/components/TS_JSONViewer/TS_JSONViewer.d.ts +18 -0
- package/components/TS_JSONViewer/TS_JSONViewer.js +64 -0
- package/components/TS_JSONViewer/TS_JSONViewer.scss +87 -0
- package/components/TS_JSONViewer/types.d.ts +10 -0
- package/components/TS_JSONViewer/types.js +1 -0
- package/components/TS_Link/TS_Link.d.ts +15 -0
- package/components/TS_Link/TS_Link.js +36 -0
- package/components/TS_Link/TS_Link.scss +32 -0
- package/components/TS_Link/index.d.ts +1 -0
- package/components/TS_Link/index.js +21 -0
- package/components/TS_ListOrganizer/TS_ListOrganizer.d.ts +33 -0
- package/components/TS_ListOrganizer/TS_ListOrganizer.js +64 -0
- package/components/TS_ListOrganizer/TS_ListOrganizer.scss +37 -0
- package/components/TS_ListOrganizer/index.d.ts +1 -0
- package/components/TS_ListOrganizer/index.js +21 -0
- package/components/TS_Loader/TS_Loader.d.ts +6 -0
- package/components/TS_Loader/TS_Loader.js +9 -0
- package/components/TS_Loader/TS_Loader.scss +71 -0
- package/components/TS_Loader/index.d.ts +1 -0
- package/components/TS_Loader/index.js +1 -0
- package/components/TS_MemoryMonitor/TS_MemoryMonitor.d.ts +10 -0
- package/components/TS_MemoryMonitor/TS_MemoryMonitor.js +48 -0
- package/components/TS_MemoryMonitor/TS_MemoryMonitor.scss +31 -0
- package/components/TS_MemoryMonitor/index.d.ts +1 -0
- package/components/TS_MemoryMonitor/index.js +21 -0
- package/components/TS_MouseInteractivity/TS_PopUp/TS_PopUp.d.ts +9 -0
- package/components/TS_MouseInteractivity/TS_PopUp/TS_PopUp.js +28 -0
- package/components/TS_MouseInteractivity/TS_PopUp/TS_PopUp.scss +53 -0
- package/components/TS_MouseInteractivity/TS_Tooltip/TS_ToolTip.d.ts +12 -0
- package/components/TS_MouseInteractivity/TS_Tooltip/TS_ToolTip.js +65 -0
- package/components/TS_MouseInteractivity/TS_Tooltip/TS_ToolTip.scss +46 -0
- package/components/TS_MouseInteractivity/base/TS_MouseInteractivity.d.ts +18 -0
- package/components/TS_MouseInteractivity/base/TS_MouseInteractivity.js +100 -0
- package/components/TS_MouseInteractivity/index.d.ts +2 -0
- package/components/TS_MouseInteractivity/index.js +22 -0
- package/components/TS_MultiSelect/TS_MultiSelect.scss +34 -0
- package/components/TS_MultiSelect/TS_MultiSelect_V2.d.ts +36 -0
- package/components/TS_MultiSelect/TS_MultiSelect_V2.js +41 -0
- package/components/TS_MultiSelect/index.d.ts +1 -0
- package/components/TS_MultiSelect/index.js +21 -0
- package/components/TS_Notifications/TS_Notifications.d.ts +22 -0
- package/components/TS_Notifications/TS_Notifications.js +96 -0
- package/components/TS_Notifications/TS_Notifications.scss +120 -0
- package/components/TS_Notifications/genericNotificationAction.d.ts +8 -0
- package/components/TS_Notifications/genericNotificationAction.js +16 -0
- package/components/TS_Notifications/index.d.ts +2 -0
- package/components/TS_Notifications/index.js +2 -0
- package/components/TS_Overlay/TS_Overlay.d.ts +12 -0
- package/components/TS_Overlay/TS_Overlay.js +32 -0
- package/components/TS_Overlay/TS_Overlay.scss +41 -0
- package/components/TS_Overlay/index.d.ts +1 -0
- package/components/TS_Overlay/index.js +21 -0
- package/components/TS_Printable/TS_Printable.d.ts +13 -0
- package/components/TS_Printable/TS_Printable.js +20 -0
- package/components/TS_Printable/TS_Printable.scss +47 -0
- package/components/TS_Printable/index.d.ts +1 -0
- package/components/TS_Printable/index.js +21 -0
- package/components/TS_ProgressBar/TS_ProgressBar.d.ts +22 -0
- package/components/TS_ProgressBar/TS_ProgressBar.js +47 -0
- package/components/TS_ProgressBar/TS_ProgressBar.scss +79 -0
- package/components/TS_ProgressBar/index.d.ts +1 -0
- package/components/TS_ProgressBar/index.js +1 -0
- package/components/TS_PropRenderer/TS_PropRenderer.d.ts +18 -0
- package/components/TS_PropRenderer/TS_PropRenderer.js +36 -0
- package/components/TS_PropRenderer/TS_PropRenderer.scss +19 -0
- package/components/TS_PropRenderer/index.d.ts +1 -0
- package/components/TS_PropRenderer/index.js +1 -0
- package/components/TS_Radio/TS_Radio.d.ts +34 -0
- package/components/TS_Radio/TS_Radio.js +49 -0
- package/components/TS_Radio/TS_Radio.scss +68 -0
- package/components/TS_Radio/index.d.ts +1 -0
- package/components/TS_Radio/index.js +1 -0
- package/components/TS_ReadMore/TS_ReadMore.d.ts +26 -0
- package/components/TS_ReadMore/TS_ReadMore.js +86 -0
- package/components/TS_ReadMore/TS_ReadMore.scss +36 -0
- package/components/TS_ReadMore/index.d.ts +1 -0
- package/components/TS_ReadMore/index.js +1 -0
- package/components/TS_Slider/TS_Slider.d.ts +26 -0
- package/components/TS_Slider/TS_Slider.js +42 -0
- package/components/TS_Slider/TS_Slider.scss +68 -0
- package/components/TS_Slider/index.d.ts +1 -0
- package/components/TS_Slider/index.js +1 -0
- package/components/TS_Space/TS_Space.d.ts +8 -0
- package/components/TS_Space/TS_Space.js +8 -0
- package/components/TS_Space/index.d.ts +1 -0
- package/components/TS_Space/index.js +1 -0
- package/components/TS_Space/ts-space.scss +3 -0
- package/components/TS_Table/TS_Table.d.ts +42 -0
- package/components/TS_Table/TS_Table.js +74 -0
- package/components/TS_Table/TS_Table.scss +51 -0
- package/components/TS_Table/index.d.ts +1 -0
- package/components/TS_Table/index.js +21 -0
- package/components/TS_Tabs/TS_Tabs.d.ts +55 -0
- package/components/TS_Tabs/TS_Tabs.js +102 -0
- package/components/TS_Tabs/TS_Tabs.scss +103 -0
- package/components/TS_Tabs/index.d.ts +1 -0
- package/components/TS_Tabs/index.js +21 -0
- package/components/TS_Toaster/TS_Toast.d.ts +5 -0
- package/components/TS_Toaster/TS_Toast.js +9 -0
- package/components/TS_Toaster/TS_Toast.scss +80 -0
- package/components/TS_Toaster/TS_ToastOverlay.d.ts +16 -0
- package/components/TS_Toaster/TS_ToastOverlay.js +26 -0
- package/components/TS_Toaster/TS_ToastOverlay.scss +33 -0
- package/components/TS_Toaster/index.d.ts +2 -0
- package/components/TS_Toaster/index.js +22 -0
- package/components/TS_Toggle/ATS_Toggle.d.ts +11 -0
- package/components/TS_Toggle/ATS_Toggle.js +18 -0
- package/components/TS_Toggle/TS_Toggle.d.ts +21 -0
- package/components/TS_Toggle/TS_Toggle.js +26 -0
- package/components/TS_Toggle/TS_Toggle.scss +56 -0
- package/components/TS_Toggle/index.d.ts +2 -0
- package/components/TS_Toggle/index.js +2 -0
- package/components/TS_Toggler/TS_Toggler.d.ts +23 -0
- package/components/TS_Toggler/TS_Toggler.js +50 -0
- package/components/TS_Toggler/TS_Toggler.scss +83 -0
- package/components/TS_Toggler/index.d.ts +1 -0
- package/components/TS_Toggler/index.js +1 -0
- package/components/TS_Tree/SimpleTreeNodeRenderer.d.ts +9 -0
- package/components/TS_Tree/SimpleTreeNodeRenderer.js +53 -0
- package/components/TS_Tree/TS_Tree.d.ts +68 -0
- package/components/TS_Tree/TS_Tree.js +174 -0
- package/components/TS_Tree/TS_Tree.scss +44 -0
- package/components/TS_Tree/index.d.ts +3 -0
- package/components/TS_Tree/index.js +23 -0
- package/components/TS_Tree/types.d.ts +4 -0
- package/components/TS_Tree/types.js +21 -0
- package/components/TS_V2_Input/TS_InputV2.d.ts +93 -0
- package/components/TS_V2_Input/TS_InputV2.js +220 -0
- package/components/TS_V2_Input/index.d.ts +1 -0
- package/components/TS_V2_Input/index.js +21 -0
- package/components/TS_V2_TextArea/TS_BaseInput.d.ts +42 -0
- package/components/TS_V2_TextArea/TS_BaseInput.js +46 -0
- package/components/TS_V2_TextArea/TS_TextAreaV2.d.ts +78 -0
- package/components/TS_V2_TextArea/TS_TextAreaV2.js +178 -0
- package/components/TS_V2_TextArea/TS_TextAreaV2.scss +49 -0
- package/components/TS_V2_TextArea/index.d.ts +2 -0
- package/components/TS_V2_TextArea/index.js +22 -0
- package/components/TS_VirtualizedList/TS_VirtualizedList.d.ts +14 -0
- package/components/TS_VirtualizedList/TS_VirtualizedList.js +22 -0
- package/components/TS_VirtualizedList/index.d.ts +1 -0
- package/components/TS_VirtualizedList/index.js +1 -0
- package/components/Video/Video.d.ts +16 -0
- package/components/Video/Video.js +40 -0
- package/components/Video/VideoDialog.d.ts +20 -0
- package/components/Video/VideoDialog.js +44 -0
- package/components/Video/VideoDialog.scss +31 -0
- package/components/Video/types.d.ts +20 -0
- package/components/Video/types.js +1 -0
- package/components/_TS_MultiSelect/DBItemDropDownMultiSelector.d.ts +57 -0
- package/components/_TS_MultiSelect/DBItemDropDownMultiSelector.js +63 -0
- package/components/adapter/Adapter.d.ts +139 -0
- package/components/adapter/Adapter.js +259 -0
- package/components/adapter/BaseRenderer.d.ts +24 -0
- package/components/adapter/BaseRenderer.js +31 -0
- package/components/ats-group.d.ts +2 -0
- package/components/ats-group.js +14 -0
- package/components/form/Form.d.ts +24 -0
- package/components/form/Form.js +34 -0
- package/components/form/types.d.ts +23 -0
- package/components/form/types.js +21 -0
- package/components/formv3/FormV3.d.ts +25 -0
- package/components/formv3/FormV3.js +23 -0
- package/components/formv3/types.d.ts +29 -0
- package/components/formv3/types.js +1 -0
- package/components/treeicons.d.ts +10 -0
- package/components/treeicons.js +3 -0
- package/components/types.d.ts +23 -0
- package/components/types.js +22 -0
- package/components/utils.d.ts +1 -0
- package/components/utils.js +7 -0
- package/consts.d.ts +2 -0
- package/consts.js +2 -0
- package/core/AppPage.d.ts +11 -0
- package/core/AppPage.js +52 -0
- package/core/AppPageV2.d.ts +9 -0
- package/core/AppPageV2.js +53 -0
- package/core/AppWrapper.d.ts +4 -0
- package/core/AppWrapper.js +34 -0
- package/core/ComponentAsync.d.ts +16 -0
- package/core/ComponentAsync.js +64 -0
- package/core/ComponentBase.d.ts +28 -0
- package/core/ComponentBase.js +152 -0
- package/core/ComponentSync.d.ts +13 -0
- package/core/ComponentSync.js +49 -0
- package/core/Controller.d.ts +13 -0
- package/core/Controller.js +28 -0
- package/core/IndexedDB.d.ts +42 -0
- package/core/IndexedDB.js +259 -0
- package/core/IndexedDBV3.d.ts +43 -0
- package/core/IndexedDBV3.js +259 -0
- package/core/IndexedDBV4/IndexedDB_Database.d.ts +20 -0
- package/core/IndexedDBV4/IndexedDB_Database.js +268 -0
- package/core/IndexedDBV4/IndexedDB_Store.d.ts +34 -0
- package/core/IndexedDBV4/IndexedDB_Store.js +207 -0
- package/core/IndexedDBV4/ModuleFE_IDBManager.d.ts +11 -0
- package/core/IndexedDBV4/ModuleFE_IDBManager.js +19 -0
- package/core/IndexedDBV4/types.d.ts +16 -0
- package/core/IndexedDBV4/types.js +1 -0
- package/core/SimpleScriptInjector.d.ts +13 -0
- package/core/SimpleScriptInjector.js +42 -0
- package/core/Thunder.d.ts +37 -0
- package/core/Thunder.js +139 -0
- package/core/ThunderstormDefaultApp.d.ts +12 -0
- package/core/ThunderstormDefaultApp.js +29 -0
- package/core/consts.d.ts +6 -0
- package/core/consts.js +2 -0
- package/core/db-api-gen/consts.d.ts +22 -0
- package/core/db-api-gen/consts.js +25 -0
- package/core/db-api-gen/db-def.d.ts +9 -0
- package/core/db-api-gen/db-def.js +16 -0
- package/core/db-api-gen/types.d.ts +23 -0
- package/core/db-api-gen/types.js +3 -0
- package/core/proto-component/ProtoComponent.d.ts +57 -0
- package/core/proto-component/ProtoComponent.js +73 -0
- package/core/proto-component/UrlState.d.ts +42 -0
- package/core/proto-component/UrlState.js +59 -0
- package/core/proto-component/index.d.ts +2 -0
- package/core/proto-component/index.js +2 -0
- package/core/proto-component/types.d.ts +25 -0
- package/core/proto-component/types.js +15 -0
- package/core/thunder-dispatcher.d.ts +13 -0
- package/core/thunder-dispatcher.js +69 -0
- package/core/thunder-helpers.d.ts +7 -0
- package/core/thunder-helpers.js +171 -0
- package/core/thunder-modulepack.d.ts +3 -0
- package/core/thunder-modulepack.js +34 -0
- package/core/typed-api.d.ts +6 -0
- package/core/typed-api.js +41 -0
- package/core/types.d.ts +6 -0
- package/core/types.js +1 -0
- package/editable-item.d.ts +7 -0
- package/editable-item.js +7 -0
- package/index.d.ts +112 -0
- package/index.js +134 -0
- package/modules/ModuleFE_BaseTheme.d.ts +18 -0
- package/modules/ModuleFE_BaseTheme.js +27 -0
- package/modules/ModuleFE_BroadcastChannel/ModuleFE_BroadcastChannel.d.ts +20 -0
- package/modules/ModuleFE_BroadcastChannel/ModuleFE_BroadcastChannel.js +66 -0
- package/modules/ModuleFE_BrowserHistory.d.ts +46 -0
- package/modules/ModuleFE_BrowserHistory.js +165 -0
- package/modules/ModuleFE_BrowserHistoryV2.d.ts +43 -0
- package/modules/ModuleFE_BrowserHistoryV2.js +113 -0
- package/modules/ModuleFE_CSVParser.d.ts +12 -0
- package/modules/ModuleFE_CSVParser.js +52 -0
- package/modules/ModuleFE_CollectionActions.d.ts +10 -0
- package/modules/ModuleFE_CollectionActions.js +18 -0
- package/modules/ModuleFE_ConnectivityModule.d.ts +15 -0
- package/modules/ModuleFE_ConnectivityModule.js +31 -0
- package/modules/ModuleFE_ForceUpgrade.d.ts +20 -0
- package/modules/ModuleFE_ForceUpgrade.js +54 -0
- package/modules/ModuleFE_LocalStorage.d.ts +46 -0
- package/modules/ModuleFE_LocalStorage.js +179 -0
- package/modules/ModuleFE_Locale.d.ts +44 -0
- package/modules/ModuleFE_Locale.js +83 -0
- package/modules/ModuleFE_Print.d.ts +16 -0
- package/modules/ModuleFE_Print.js +116 -0
- package/modules/ModuleFE_StorageCleaner.d.ts +17 -0
- package/modules/ModuleFE_StorageCleaner.js +90 -0
- package/modules/ModuleFE_Thunderstorm.d.ts +31 -0
- package/modules/ModuleFE_Thunderstorm.js +122 -0
- package/modules/ModuleFE_Utils/ModuleFE_Utils.d.ts +29 -0
- package/modules/ModuleFE_Utils/ModuleFE_Utils.js +43 -0
- package/modules/ModuleFE_Window.d.ts +19 -0
- package/modules/ModuleFE_Window.js +42 -0
- package/modules/ModuleFE_WindowMessenger.d.ts +62 -0
- package/modules/ModuleFE_WindowMessenger.js +128 -0
- package/modules/action-processor/ModuleFE_ActionProcessor.d.ts +9 -0
- package/modules/action-processor/ModuleFE_ActionProcessor.js +14 -0
- package/modules/archiving/ModuleFE_Archiving.d.ts +8 -0
- package/modules/archiving/ModuleFE_Archiving.js +15 -0
- package/modules/clearWebsiteDataDispatcher.d.ts +5 -0
- package/modules/clearWebsiteDataDispatcher.js +2 -0
- package/modules/component-loader/ReactEntryComponentInjector.d.ts +23 -0
- package/modules/component-loader/ReactEntryComponentInjector.js +59 -0
- package/modules/component-loader/entry-component-loading-module.d.ts +7 -0
- package/modules/component-loader/entry-component-loading-module.js +52 -0
- package/modules/component-loader/index.d.ts +2 -0
- package/modules/component-loader/index.js +2 -0
- package/modules/db-api-gen/ModuleFE_BaseApi.d.ts +45 -0
- package/modules/db-api-gen/ModuleFE_BaseApi.js +152 -0
- package/modules/db-api-gen/ModuleFE_BaseDB.d.ts +146 -0
- package/modules/db-api-gen/ModuleFE_BaseDB.js +433 -0
- package/modules/db-api-gen/types.d.ts +13 -0
- package/modules/db-api-gen/types.js +6 -0
- package/modules/http/ModuleFE_XHR.d.ts +20 -0
- package/modules/http/ModuleFE_XHR.js +175 -0
- package/modules/routing/LocationChangeListener.d.ts +6 -0
- package/modules/routing/LocationChangeListener.js +15 -0
- package/modules/routing/ModuleFE_Routing.d.ts +30 -0
- package/modules/routing/ModuleFE_Routing.js +122 -0
- package/modules/routing/ModuleFE_RoutingV2.d.ts +25 -0
- package/modules/routing/ModuleFE_RoutingV2.js +143 -0
- package/modules/routing/index.d.ts +5 -0
- package/modules/routing/index.js +5 -0
- package/modules/routing/route.d.ts +22 -0
- package/modules/routing/route.js +83 -0
- package/modules/routing/types.d.ts +20 -0
- package/modules/routing/types.js +1 -0
- package/modules/sync-env/ModuleFE_SyncEnvV2.d.ts +8 -0
- package/modules/sync-env/ModuleFE_SyncEnvV2.js +18 -0
- package/modules/sync-manager/ModuleFE_SyncManager.d.ts +59 -0
- package/modules/sync-manager/ModuleFE_SyncManager.js +378 -0
- package/modules/sync-manager/ModuleFE_SyncManager_CSV.d.ts +11 -0
- package/modules/sync-manager/ModuleFE_SyncManager_CSV.js +121 -0
- package/package.json +107 -0
- package/server-info/Button_VersionUpdate.d.ts +15 -0
- package/server-info/Button_VersionUpdate.js +29 -0
- package/server-info/Button_VersionUpdate.scss +29 -0
- package/server-info/ModuleFE_ServerInfo.d.ts +26 -0
- package/server-info/ModuleFE_ServerInfo.js +73 -0
- package/server-info/index.d.ts +2 -0
- package/server-info/index.js +2 -0
- package/shared.d.ts +1 -0
- package/shared.js +21 -0
- package/styles/declaration/basic.scss +155 -0
- package/styles/declaration/mixins.scss +58 -0
- package/styles/impl/basic.scss +141 -0
- package/styles/impl/icons.scss +34 -0
- package/styles.scss +40 -0
- package/utils/EditableItem.d.ts +240 -0
- package/utils/EditableItem.js +552 -0
- package/utils/console/LogClient_ConsoleInterceptor.d.ts +5 -0
- package/utils/console/LogClient_ConsoleInterceptor.js +70 -0
- package/utils/perform-action/genereteToasts.d.ts +3 -0
- package/utils/perform-action/genereteToasts.js +14 -0
- package/utils/perform-action/index.d.ts +2 -0
- package/utils/perform-action/index.js +2 -0
- package/utils/perform-action/notification-dispatchers.d.ts +6 -0
- package/utils/perform-action/notification-dispatchers.js +2 -0
- package/utils/perform-action/performAction.d.ts +34 -0
- package/utils/perform-action/performAction.js +77 -0
- package/utils/perform-action/resolve-dependency-toast/ResolveDependencyToast.d.ts +8 -0
- package/utils/perform-action/resolve-dependency-toast/ResolveDependencyToast.js +11 -0
- package/utils/perform-action/resolve-dependency-toast/ResolveDependencyToast.scss +12 -0
- package/utils/tools.d.ts +31 -0
- package/utils/tools.js +138 -0
- package/utils/types.d.ts +3 -0
- package/utils/types.js +1 -0
- package/widgets/FieldEditor.d.ts +29 -0
- package/widgets/FieldEditor.js +47 -0
- package/widgets/FieldEditorClick.d.ts +33 -0
- package/widgets/FieldEditorClick.js +49 -0
- package/widgets/FieldEditorWithButtons.d.ts +32 -0
- package/widgets/FieldEditorWithButtons.js +42 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import './TS_EditableItemController.scss';
|
|
3
|
+
import { BadImplementationException, exists, resolveContent } from '@nu-art/ts-common';
|
|
4
|
+
import { EditableDBItemV3 } from '../../utils/EditableItem.js';
|
|
5
|
+
import { ComponentSync } from '../../core/ComponentSync.js';
|
|
6
|
+
/**
|
|
7
|
+
* Item_EditorController class handles the editing of a specific db item
|
|
8
|
+
* and encapsulate logic to load the item from the local cache and uses the EditableItem to
|
|
9
|
+
* and TS_EditableContent for rendering and editing the db item.
|
|
10
|
+
*
|
|
11
|
+
* @template Proto - The database prototype def to be edited
|
|
12
|
+
* @template Props - The Props this class component takes
|
|
13
|
+
*/
|
|
14
|
+
export class TS_EditableItemController extends ComponentSync {
|
|
15
|
+
static DefaultAutoSave = (item) => {
|
|
16
|
+
return !!item?._id;
|
|
17
|
+
};
|
|
18
|
+
constructor(p) {
|
|
19
|
+
super(p);
|
|
20
|
+
const method = p.module.defaultDispatcher.method;
|
|
21
|
+
// @ts-ignore
|
|
22
|
+
this[method] = this.__onItemUpdated;
|
|
23
|
+
}
|
|
24
|
+
__onItemUpdated = (...params) => {
|
|
25
|
+
const itemId = this.state.editable.get('_id');
|
|
26
|
+
if (!itemId)
|
|
27
|
+
return;
|
|
28
|
+
let updatedItem;
|
|
29
|
+
if (!(params[0] === 'upsert-all' && (updatedItem = params[1].find(item => item._id === itemId))))
|
|
30
|
+
return;
|
|
31
|
+
this.state.editable?.setConflictingItem(updatedItem);
|
|
32
|
+
};
|
|
33
|
+
deriveStateFromProps(nextProps, state) {
|
|
34
|
+
const _state = (state || {});
|
|
35
|
+
let item = typeof nextProps.item === 'string' ? nextProps.module.cache.unique(nextProps.item) : nextProps.item;
|
|
36
|
+
if (!exists(item))
|
|
37
|
+
item = this.props.createInitialInstance?.();
|
|
38
|
+
if (!item)
|
|
39
|
+
throw new BadImplementationException('in order to use this component to create an item you need to provide a createInitialInstance callback');
|
|
40
|
+
_state.editable = new EditableDBItemV3(item, nextProps.module, nextProps.onError)
|
|
41
|
+
.setOnChanged(async (editable) => {
|
|
42
|
+
this.setState({ editable });
|
|
43
|
+
})
|
|
44
|
+
.setAutoSave(resolveContent(nextProps.autoSave || TS_EditableItemController.DefaultAutoSave, item) || false)
|
|
45
|
+
.setOnSaveCompleted(this.props.onSave);
|
|
46
|
+
if (nextProps.saveAction)
|
|
47
|
+
_state.editable.setSaveAction(nextProps.saveAction);
|
|
48
|
+
return _state;
|
|
49
|
+
}
|
|
50
|
+
render() {
|
|
51
|
+
const Editor = this.props.editor;
|
|
52
|
+
return _jsx(Editor, { editable: this.state.editable, ...(this.props.editorProps || {}) });
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './TS_EditableItemController.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './TS_EditableItemController.js';
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import './TS_EditableItemControllerProto.scss';
|
|
3
|
+
import { DB_Object, DBProto, ResolvableContent } from '@nu-art/ts-common';
|
|
4
|
+
import { ModuleFE_BaseApi } from '../../modules/db-api-gen/ModuleFE_BaseApi.js';
|
|
5
|
+
import { ProtoDef_Selection } from '../Page_ItemsEditor/index.js';
|
|
6
|
+
import { ProtoComponent } from '../../core/proto-component/index.js';
|
|
7
|
+
import { InferProps, InferState } from '../../utils/types.js';
|
|
8
|
+
import { EditableRef } from '../TS_EditableContent/types.js';
|
|
9
|
+
export type Props_EditableItemControllerProto<Proto extends DBProto<any>, EditorProps extends {} = {}> = ProtoDef_Selection['props'] & {
|
|
10
|
+
item?: Readonly<Partial<Proto['uiType']>> | string;
|
|
11
|
+
module: ModuleFE_BaseApi<Proto>;
|
|
12
|
+
onError?: (item: Partial<Proto['uiType']>, err: Error) => any | Promise<any>;
|
|
13
|
+
autoSave?: ResolvableContent<boolean, [Readonly<Proto['uiType']>]>;
|
|
14
|
+
editor: React.ComponentType<EditableRef<Proto['uiType']> & EditorProps>;
|
|
15
|
+
createInitialInstance?: () => Readonly<Partial<Proto['uiType']>>;
|
|
16
|
+
editorProps?: EditorProps;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Item_EditorController class handles the editing of a specific db item
|
|
20
|
+
* and encapsulate logic to load the item from the local cache and uses the EditableItem to
|
|
21
|
+
* and TS_EditableContent for rendering and editing the db item.
|
|
22
|
+
*
|
|
23
|
+
* @template Proto - The database prototype def to be edited
|
|
24
|
+
* @template Props - The Props this class component takes
|
|
25
|
+
*/
|
|
26
|
+
export declare class TS_EditableItemControllerProto<Proto extends DBProto<any>, EditorProps extends {} = {}, Props extends Props_EditableItemControllerProto<Proto, EditorProps> = Props_EditableItemControllerProto<Proto, EditorProps>> extends ProtoComponent<ProtoDef_Selection, Props, EditableRef<Proto['uiType']>> {
|
|
27
|
+
static DefaultAutoSave: (item?: Partial<DB_Object>) => boolean;
|
|
28
|
+
constructor(p: InferProps<TS_EditableItemControllerProto<Proto, EditorProps, Props>>);
|
|
29
|
+
private __onItemUpdated;
|
|
30
|
+
protected deriveStateFromProps(nextProps: InferProps<this>, state: InferState<this>): InferState<this>;
|
|
31
|
+
render(): import("react/jsx-runtime").JSX.Element;
|
|
32
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import './TS_EditableItemControllerProto.scss';
|
|
3
|
+
import { asArray, BadImplementationException, deepClone, exists, resolveContent } from '@nu-art/ts-common';
|
|
4
|
+
import { EditableDBItemV3 } from '../../utils/EditableItem.js';
|
|
5
|
+
import { ProtoComponent } from '../../core/proto-component/index.js';
|
|
6
|
+
/**
|
|
7
|
+
* Item_EditorController class handles the editing of a specific db item
|
|
8
|
+
* and encapsulate logic to load the item from the local cache and uses the EditableItem to
|
|
9
|
+
* and TS_EditableContent for rendering and editing the db item.
|
|
10
|
+
*
|
|
11
|
+
* @template Proto - The database prototype def to be edited
|
|
12
|
+
* @template Props - The Props this class component takes
|
|
13
|
+
*/
|
|
14
|
+
export class TS_EditableItemControllerProto extends ProtoComponent {
|
|
15
|
+
static DefaultAutoSave = (item) => {
|
|
16
|
+
return !!item?._id;
|
|
17
|
+
};
|
|
18
|
+
constructor(p) {
|
|
19
|
+
super(p);
|
|
20
|
+
const method = p.module.defaultDispatcher.method;
|
|
21
|
+
// @ts-ignore
|
|
22
|
+
this[method] = this.__onItemUpdated;
|
|
23
|
+
}
|
|
24
|
+
__onItemUpdated = (...params) => {
|
|
25
|
+
const itemId = this.state.editable.get('_id');
|
|
26
|
+
if (!itemId)
|
|
27
|
+
return;
|
|
28
|
+
if (!(params[0] === 'update' && params[1]._id === itemId))
|
|
29
|
+
return;
|
|
30
|
+
this.state.editable?.setConflictingItem(deepClone(asArray(params[1]))[0]);
|
|
31
|
+
};
|
|
32
|
+
deriveStateFromProps(nextProps, state) {
|
|
33
|
+
const _state = (state || {});
|
|
34
|
+
const selectedId = this.getQueryParam('selected')?.[this.props.module.dbDef.dbKey];
|
|
35
|
+
let item = typeof nextProps.item === 'string' ? nextProps.module.cache.unique(nextProps.item) : nextProps.item;
|
|
36
|
+
if (!exists(item))
|
|
37
|
+
item = nextProps.module.cache.unique(selectedId);
|
|
38
|
+
if (!exists(item))
|
|
39
|
+
item = this.props.createInitialInstance?.();
|
|
40
|
+
if (!item)
|
|
41
|
+
throw new BadImplementationException('in order to use this component to create an item you need to provide a createInitialInstance callback');
|
|
42
|
+
_state.editable = new EditableDBItemV3(item, nextProps.module, nextProps.onError)
|
|
43
|
+
.setOnChanged(async () => {
|
|
44
|
+
this.forceUpdate();
|
|
45
|
+
})
|
|
46
|
+
.setAutoSave(resolveContent(nextProps.autoSave || TS_EditableItemControllerProto.DefaultAutoSave, item) || false);
|
|
47
|
+
return _state;
|
|
48
|
+
}
|
|
49
|
+
render() {
|
|
50
|
+
const Editor = this.props.editor;
|
|
51
|
+
return _jsx(Editor, { editable: this.state.editable, ...(this.props.editorProps || {}) });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './TS_EditableItemControllerProto.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './TS_EditableItemControllerProto.js';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { TS_EditableContent } from '../TS_EditableContent/TS_EditableContent.js';
|
|
2
|
+
import { EditableItem_Status, EditableItemStatusListener } from '../../utils/EditableItem.js';
|
|
3
|
+
import { InferProps, InferState } from '../../utils/types.js';
|
|
4
|
+
type Props = {
|
|
5
|
+
labels: {
|
|
6
|
+
[K in EditableItem_Status]: string;
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
type State = {
|
|
10
|
+
statusLabel: string;
|
|
11
|
+
};
|
|
12
|
+
export declare class TS_EditableItemStatus extends TS_EditableContent<any, Props, State> implements EditableItemStatusListener {
|
|
13
|
+
static defaultProps: Props;
|
|
14
|
+
protected deriveStateFromProps(nextProps: InferProps<this>, _state: InferState<this>): InferState<this>;
|
|
15
|
+
componentDidMount(): void;
|
|
16
|
+
componentWillUnmount(): void;
|
|
17
|
+
onEditableItemStatusChanged(newStatus: EditableItem_Status): any;
|
|
18
|
+
render(): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
}
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { TS_EditableContent } from '../TS_EditableContent/TS_EditableContent.js';
|
|
3
|
+
import { EditableItemStatus_Creating, EditableItemStatus_ErrorSaving, EditableItemStatus_FailedValidation, EditableItemStatus_Saved, EditableItemStatus_SavedWithErrors, EditableItemStatus_Saving, EditableItemStatus_Unknown, EditableItemStatus_UnsavedChanges } from '../../utils/EditableItem.js';
|
|
4
|
+
export class TS_EditableItemStatus extends TS_EditableContent {
|
|
5
|
+
static defaultProps = {
|
|
6
|
+
labels: {
|
|
7
|
+
[EditableItemStatus_Saving]: 'Saving...',
|
|
8
|
+
[EditableItemStatus_SavedWithErrors]: 'Saved With Errors',
|
|
9
|
+
[EditableItemStatus_FailedValidation]: 'Validation Error',
|
|
10
|
+
[EditableItemStatus_ErrorSaving]: 'Saving Failed',
|
|
11
|
+
[EditableItemStatus_UnsavedChanges]: 'Unsaved Changes',
|
|
12
|
+
[EditableItemStatus_Creating]: 'Creating New',
|
|
13
|
+
[EditableItemStatus_Saved]: 'Saved',
|
|
14
|
+
[EditableItemStatus_Unknown]: 'Not Implemented',
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
deriveStateFromProps(nextProps, _state) {
|
|
18
|
+
const state = super.deriveStateFromProps(nextProps, _state);
|
|
19
|
+
state.statusLabel = this.props.labels[_state.editable.getStatus()] ?? 'Missing Status';
|
|
20
|
+
return state;
|
|
21
|
+
}
|
|
22
|
+
componentDidMount() {
|
|
23
|
+
setTimeout(() => this.props.editable.addStatusListener(this), 0);
|
|
24
|
+
}
|
|
25
|
+
componentWillUnmount() {
|
|
26
|
+
this.props.editable.removeStatusListener(this);
|
|
27
|
+
}
|
|
28
|
+
onEditableItemStatusChanged(newStatus) {
|
|
29
|
+
this.reDeriveState({});
|
|
30
|
+
}
|
|
31
|
+
render() {
|
|
32
|
+
return _jsx("div", { className: 'ts-editable-item-status', children: this.state.statusLabel });
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { ComponentSync } from '../../core/ComponentSync.js';
|
|
3
|
+
import './TS_EditableText.scss';
|
|
4
|
+
type Props = {
|
|
5
|
+
text: string;
|
|
6
|
+
shownText?: string;
|
|
7
|
+
className?: string;
|
|
8
|
+
editMode?: boolean;
|
|
9
|
+
disableEdit?: boolean;
|
|
10
|
+
onTextSaved?: ((text: string) => void | Promise<void>);
|
|
11
|
+
onCancel?: () => void;
|
|
12
|
+
highlightText?: string;
|
|
13
|
+
hideReset?: boolean;
|
|
14
|
+
readMore?: boolean;
|
|
15
|
+
readMoreCollapseHeight?: number;
|
|
16
|
+
renderers?: {
|
|
17
|
+
cancelButton?: React.ReactNode;
|
|
18
|
+
saveButton?: React.ReactNode;
|
|
19
|
+
resetButton?: React.ReactNode;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
type State = {
|
|
23
|
+
original: string;
|
|
24
|
+
text: string;
|
|
25
|
+
isEditing: boolean;
|
|
26
|
+
parentRef: React.RefObject<HTMLDivElement>;
|
|
27
|
+
};
|
|
28
|
+
declare class TS_EditableText_Base extends ComponentSync<Props, State> {
|
|
29
|
+
protected deriveStateFromProps(nextProps: Props): State;
|
|
30
|
+
protected onEnableEdit: () => void;
|
|
31
|
+
protected onTextChange: (text: string) => void;
|
|
32
|
+
protected onSubmitChanges: (e: React.MouseEvent | React.KeyboardEvent) => Promise<void>;
|
|
33
|
+
protected onCancelChanges: (e?: React.MouseEvent) => void;
|
|
34
|
+
protected onResetChanges: (e: React.MouseEvent) => void;
|
|
35
|
+
protected onGeneralClick: (e: React.MouseEvent) => void;
|
|
36
|
+
protected handleBlur: (e: React.FocusEvent) => void;
|
|
37
|
+
protected renderText: () => import("react/jsx-runtime").JSX.Element;
|
|
38
|
+
protected renderButton: {
|
|
39
|
+
reset: () => import("react/jsx-runtime").JSX.Element;
|
|
40
|
+
cancel: () => import("react/jsx-runtime").JSX.Element;
|
|
41
|
+
accept: () => import("react/jsx-runtime").JSX.Element;
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
declare class TS_EditableText_TextArea extends TS_EditableText_Base {
|
|
45
|
+
private renderButtons;
|
|
46
|
+
private renderTextArea;
|
|
47
|
+
render(): import("react/jsx-runtime").JSX.Element;
|
|
48
|
+
}
|
|
49
|
+
declare class TS_EditableText_Input extends TS_EditableText_Base {
|
|
50
|
+
private renderInput;
|
|
51
|
+
render(): import("react/jsx-runtime").JSX.Element;
|
|
52
|
+
}
|
|
53
|
+
export declare const TS_EditableText: {
|
|
54
|
+
TextArea: typeof TS_EditableText_TextArea;
|
|
55
|
+
Input: typeof TS_EditableText_Input;
|
|
56
|
+
};
|
|
57
|
+
export {};
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { ComponentSync } from '../../core/ComponentSync.js';
|
|
4
|
+
import './TS_EditableText.scss';
|
|
5
|
+
import { TS_Input, TS_TextArea } from '../TS_Input/index.js';
|
|
6
|
+
import { _className, stopPropagation, stringReplacer } from '../../utils/tools.js';
|
|
7
|
+
import { TS_ReadMore } from '../TS_ReadMore/index.js';
|
|
8
|
+
import { Button } from '../Button/Button.js';
|
|
9
|
+
class TS_EditableText_Base extends ComponentSync {
|
|
10
|
+
// ######################## Life Cycle ########################
|
|
11
|
+
deriveStateFromProps(nextProps) {
|
|
12
|
+
const state = { ...this.state };
|
|
13
|
+
state.original = nextProps.text;
|
|
14
|
+
state.text ||= nextProps.text;
|
|
15
|
+
state.isEditing = nextProps.editMode ?? false;
|
|
16
|
+
state.parentRef ||= React.createRef();
|
|
17
|
+
return state;
|
|
18
|
+
}
|
|
19
|
+
// ######################## Logic ########################
|
|
20
|
+
onEnableEdit = () => {
|
|
21
|
+
if (this.props.disableEdit || this.props.editMode !== undefined)
|
|
22
|
+
return;
|
|
23
|
+
this.setState({ text: this.state.original, isEditing: true });
|
|
24
|
+
};
|
|
25
|
+
onTextChange = (text) => {
|
|
26
|
+
this.setState({ text });
|
|
27
|
+
};
|
|
28
|
+
onSubmitChanges = async (e) => {
|
|
29
|
+
stopPropagation(e);
|
|
30
|
+
const text = this.state.text;
|
|
31
|
+
if (!this.props.onTextSaved)
|
|
32
|
+
this.setState({ original: text, isEditing: false });
|
|
33
|
+
await this.props.onTextSaved?.(text);
|
|
34
|
+
this.setState({ original: text });
|
|
35
|
+
};
|
|
36
|
+
onCancelChanges = (e) => {
|
|
37
|
+
if (e)
|
|
38
|
+
stopPropagation(e);
|
|
39
|
+
const original = this.state.original;
|
|
40
|
+
if (!this.props.onCancel)
|
|
41
|
+
this.setState({ text: original, isEditing: false });
|
|
42
|
+
this.setState({ text: original });
|
|
43
|
+
this.props.onCancel?.();
|
|
44
|
+
};
|
|
45
|
+
onResetChanges = (e) => {
|
|
46
|
+
stopPropagation(e);
|
|
47
|
+
const original = this.state.original;
|
|
48
|
+
this.setState({ text: original });
|
|
49
|
+
};
|
|
50
|
+
onGeneralClick = (e) => {
|
|
51
|
+
if (this.state.isEditing)
|
|
52
|
+
stopPropagation(e);
|
|
53
|
+
};
|
|
54
|
+
handleBlur = (e) => {
|
|
55
|
+
e.persist();
|
|
56
|
+
//e.relatedTarget can be null if lost focus due to Enter
|
|
57
|
+
if (e.relatedTarget === null || this.state.parentRef.current === e.relatedTarget || this.state.parentRef.current.contains(e.relatedTarget))
|
|
58
|
+
return;
|
|
59
|
+
this.onCancelChanges();
|
|
60
|
+
};
|
|
61
|
+
// ######################## Render ########################
|
|
62
|
+
renderText = () => {
|
|
63
|
+
const textToShow = this.props.shownText ?? this.state.original;
|
|
64
|
+
return _jsxs("div", { className: 'ts-editable-text__text', onClick: this.onEnableEdit, children: [this.props.readMore && _jsx(TS_ReadMore, { collapsedHeight: this.props.readMoreCollapseHeight, text: textToShow }), !this.props.readMore && (this.props.highlightText
|
|
65
|
+
? stringReplacer(textToShow, this.props.highlightText, (match, i) => _jsx("i", { className: 'ts-editable-text__highlight', children: match }, i))
|
|
66
|
+
: textToShow)] });
|
|
67
|
+
};
|
|
68
|
+
renderButton = {
|
|
69
|
+
reset: () => _jsx(Button, { className: 'ts-editable-text__buttons__reset', onClick: this.onResetChanges, children: this.props.renderers?.resetButton || 'Reset' }),
|
|
70
|
+
cancel: () => _jsx(Button, { className: 'ts-editable-text__buttons__cancel', onClick: this.onCancelChanges, children: this.props.renderers?.cancelButton || 'Cancel' }),
|
|
71
|
+
accept: () => _jsx(Button, { className: 'ts-editable-text__buttons__save', onClick: this.onSubmitChanges, children: this.props.renderers?.saveButton || 'Save' })
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
class TS_EditableText_TextArea extends TS_EditableText_Base {
|
|
75
|
+
renderButtons = () => {
|
|
76
|
+
return _jsxs("div", { className: 'ts-editable-text-area__buttons', children: [!this.props.hideReset && this.renderButton.reset(), this.renderButton.cancel(), this.renderButton.accept()] });
|
|
77
|
+
};
|
|
78
|
+
renderTextArea = () => {
|
|
79
|
+
return _jsxs("div", { className: 'ts-editable-text-area__edit', children: [_jsx(TS_TextArea, { className: 'ts-editable-text-area__text-area', type: 'text', focus: true, value: this.state.isEditing ? this.state.text : this.props.shownText, onChange: this.onTextChange, onAccept: (val, e) => this.onSubmitChanges(e) }), this.renderButtons()] });
|
|
80
|
+
};
|
|
81
|
+
render() {
|
|
82
|
+
const Renderer = this.state.isEditing ? this.renderTextArea : this.renderText;
|
|
83
|
+
const className = _className('ts-editable-text-area', this.props.className);
|
|
84
|
+
return _jsx("div", { className: className, onBlur: this.handleBlur, tabIndex: 1, onClick: this.onGeneralClick, ref: this.state.parentRef, children: _jsx(Renderer, {}) });
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
class TS_EditableText_Input extends TS_EditableText_Base {
|
|
88
|
+
renderInput = () => {
|
|
89
|
+
return _jsxs("div", { className: 'ts-editable-text-input__edit', children: [this.renderButton.reset(), _jsx(TS_Input, { className: 'ts-editable-text-input__input', type: 'text', focus: true, value: this.state.text, onChange: this.onTextChange, onAccept: (val, e) => this.onSubmitChanges(e) }), _jsxs("div", { className: 'ts-editable-text-input__buttons', children: [this.renderButton.cancel(), this.renderButton.accept()] })] });
|
|
90
|
+
};
|
|
91
|
+
render() {
|
|
92
|
+
const Renderer = this.state.isEditing ? this.renderInput : this.renderText;
|
|
93
|
+
const className = _className('ts-editable-text-input', this.props.className);
|
|
94
|
+
return _jsx("div", { className: className, tabIndex: 1, onBlur: this.handleBlur, onClick: this.onGeneralClick, ref: this.state.parentRef, children: _jsx(Renderer, {}) });
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
export const TS_EditableText = {
|
|
98
|
+
TextArea: TS_EditableText_TextArea,
|
|
99
|
+
Input: TS_EditableText_Input,
|
|
100
|
+
};
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
.ts-editable-text-area,
|
|
2
|
+
.ts-editable-text-input {
|
|
3
|
+
.ts-button {
|
|
4
|
+
min-width: unset;
|
|
5
|
+
min-height: unset;
|
|
6
|
+
padding: 4px 8px;
|
|
7
|
+
margin: 0;
|
|
8
|
+
font: {
|
|
9
|
+
size: 14px;
|
|
10
|
+
weight: bold;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.ts-editable-text__buttons__reset {
|
|
15
|
+
background: #3ca0c6;
|
|
16
|
+
margin-right: auto;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.ts-editable-text__buttons__cancel {
|
|
20
|
+
background-color: #D0312D;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.ts-editable-text__buttons__save {
|
|
24
|
+
background-color: #3CB043;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.ts-editable-text-area {
|
|
29
|
+
//What's rendered when not editing
|
|
30
|
+
.ts-editable-text-area__text {
|
|
31
|
+
height: 100%;
|
|
32
|
+
white-space: pre-wrap;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
//What's rendered when editing
|
|
36
|
+
.ts-editable-text-area__edit {
|
|
37
|
+
height: 100%;
|
|
38
|
+
display: flex;
|
|
39
|
+
flex-direction: column;
|
|
40
|
+
gap: 8px;
|
|
41
|
+
|
|
42
|
+
//The text-area itself
|
|
43
|
+
.ts-editable-text-area__text-area {
|
|
44
|
+
flex-grow: 1;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
//The actions buttons
|
|
48
|
+
.ts-editable-text-area__buttons {
|
|
49
|
+
flex-shrink: 0;
|
|
50
|
+
display: flex;
|
|
51
|
+
gap: 8px;
|
|
52
|
+
|
|
53
|
+
.ts-editable-text__buttons__reset {
|
|
54
|
+
background: #3ca0c6;
|
|
55
|
+
margin-right: auto;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.ts-editable-text-input {
|
|
62
|
+
.ts-editable-text-input__edit {
|
|
63
|
+
height: 32px;
|
|
64
|
+
display: flex;
|
|
65
|
+
border: 1px solid black;
|
|
66
|
+
border-radius: 8px;
|
|
67
|
+
overflow: hidden;
|
|
68
|
+
|
|
69
|
+
.ts-editable-text-input__input {
|
|
70
|
+
border: none;
|
|
71
|
+
height: 100%;
|
|
72
|
+
min-height: unset;
|
|
73
|
+
flex-grow: 1;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.ts-editable-text-input__buttons {
|
|
77
|
+
height: 100%;
|
|
78
|
+
display: flex;
|
|
79
|
+
flex-shrink: 0;
|
|
80
|
+
width: 60px;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.ts-button {
|
|
84
|
+
height: 100%;
|
|
85
|
+
flex-shrink: 0;
|
|
86
|
+
border-radius: 0;
|
|
87
|
+
width: 30px;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './TS_EditableText.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './TS_EditableText.js';
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
import './TS_ErrorBoundary.scss';
|
|
4
|
+
import { Logger } from '@nu-art/ts-common';
|
|
5
|
+
import { BaseComponent } from '../../core/ComponentBase.js';
|
|
6
|
+
type State = {
|
|
7
|
+
error?: Error;
|
|
8
|
+
controlled?: boolean;
|
|
9
|
+
errorInfo?: React.ErrorInfo;
|
|
10
|
+
};
|
|
11
|
+
type Props = React.PropsWithChildren<{
|
|
12
|
+
logger?: Logger;
|
|
13
|
+
component?: BaseComponent;
|
|
14
|
+
onClick?: (e: any) => void;
|
|
15
|
+
renderer?: (e: any) => ReactNode;
|
|
16
|
+
error?: Error;
|
|
17
|
+
}>;
|
|
18
|
+
export declare class TS_ErrorBoundary extends React.Component<Props, State> {
|
|
19
|
+
constructor(props: Props);
|
|
20
|
+
/**
|
|
21
|
+
* Called on changes in props.
|
|
22
|
+
* @param props
|
|
23
|
+
* @param state
|
|
24
|
+
*/
|
|
25
|
+
static getDerivedStateFromProps(props: Props, state: State): State;
|
|
26
|
+
/**
|
|
27
|
+
* Called when a descendant component throws an error (and there isn't an error boundary in the way already)
|
|
28
|
+
* used to return a state based on the error
|
|
29
|
+
* @param error
|
|
30
|
+
*/
|
|
31
|
+
static getDerivedStateFromError(error: Error): {
|
|
32
|
+
error: Error;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Called when a descendant component throws an error (and there isn't an error boundary in the way already)
|
|
36
|
+
* Can be used to return a state based on the error, but will be deprecated at some point, so watch out.
|
|
37
|
+
* @param error
|
|
38
|
+
* @param errorInfo
|
|
39
|
+
*/
|
|
40
|
+
componentDidCatch(error: Error, errorInfo: React.ErrorInfo): void;
|
|
41
|
+
/**
|
|
42
|
+
* Returns true.
|
|
43
|
+
* This component's props will not change unless an error has occurred, but the children component might need to
|
|
44
|
+
* because their props might have changed. therefore, inorder not to block their lifecycle, this component must always update.
|
|
45
|
+
* @param nextProps
|
|
46
|
+
* @param nextState
|
|
47
|
+
* @param nextContext
|
|
48
|
+
*/
|
|
49
|
+
shouldComponentUpdate(nextProps: Readonly<Props>, nextState: Readonly<State>, nextContext: any): boolean;
|
|
50
|
+
private defaultRenderer;
|
|
51
|
+
render(): string | number | boolean | Iterable<React.ReactNode> | import("react/jsx-runtime").JSX.Element | null | undefined;
|
|
52
|
+
protected onErrorBoundaryClick: (e: React.MouseEvent<HTMLDivElement>) => void;
|
|
53
|
+
}
|
|
54
|
+
export {};
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/*
|
|
3
|
+
* Thunderstorm is a full web app framework!
|
|
4
|
+
*
|
|
5
|
+
* Typescript & Express backend infrastructure that natively runs on firebase function
|
|
6
|
+
* Typescript & React frontend infrastructure
|
|
7
|
+
*
|
|
8
|
+
* Copyright (C) 2020 Adam van der Kruk aka TacB0sS
|
|
9
|
+
*
|
|
10
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
11
|
+
* you may not use this file except in compliance with the License.
|
|
12
|
+
* You may obtain a copy of the License at
|
|
13
|
+
*
|
|
14
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
15
|
+
*
|
|
16
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
17
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
18
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
19
|
+
* See the License for the specific language governing permissions and
|
|
20
|
+
* limitations under the License.
|
|
21
|
+
*/
|
|
22
|
+
import * as React from 'react';
|
|
23
|
+
import './TS_ErrorBoundary.scss';
|
|
24
|
+
export class TS_ErrorBoundary extends React.Component {
|
|
25
|
+
//######################### Life Cycle #########################
|
|
26
|
+
constructor(props) {
|
|
27
|
+
super(props);
|
|
28
|
+
this.state = {};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Called on changes in props.
|
|
32
|
+
* @param props
|
|
33
|
+
* @param state
|
|
34
|
+
*/
|
|
35
|
+
static getDerivedStateFromProps(props, state) {
|
|
36
|
+
//Check if the boundary is controlled (gets the error from outside)
|
|
37
|
+
if (!state.controlled)
|
|
38
|
+
state.controlled = !!props.error;
|
|
39
|
+
state.error = state.controlled ? props.error : state.error;
|
|
40
|
+
return state;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Called when a descendant component throws an error (and there isn't an error boundary in the way already)
|
|
44
|
+
* used to return a state based on the error
|
|
45
|
+
* @param error
|
|
46
|
+
*/
|
|
47
|
+
static getDerivedStateFromError(error) {
|
|
48
|
+
return { error };
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Called when a descendant component throws an error (and there isn't an error boundary in the way already)
|
|
52
|
+
* Can be used to return a state based on the error, but will be deprecated at some point, so watch out.
|
|
53
|
+
* @param error
|
|
54
|
+
* @param errorInfo
|
|
55
|
+
*/
|
|
56
|
+
componentDidCatch(error, errorInfo) {
|
|
57
|
+
this.setState({ error, errorInfo });
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Returns true.
|
|
61
|
+
* This component's props will not change unless an error has occurred, but the children component might need to
|
|
62
|
+
* because their props might have changed. therefore, inorder not to block their lifecycle, this component must always update.
|
|
63
|
+
* @param nextProps
|
|
64
|
+
* @param nextState
|
|
65
|
+
* @param nextContext
|
|
66
|
+
*/
|
|
67
|
+
shouldComponentUpdate(nextProps, nextState, nextContext) {
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
//######################### Render #########################
|
|
71
|
+
defaultRenderer = () => {
|
|
72
|
+
const titleMessage = randomMessages[Math.floor(Math.random() * randomMessages.length)];
|
|
73
|
+
return _jsxs("div", { className: 'ts-error-boundary', onClick: this.props.onClick ?? this.onErrorBoundaryClick, children: [_jsx("div", { className: 'ts-error-boundary__pic', children: "(\u30CE\u0CA0\u76CA\u0CA0\u30CE)" }), _jsx("div", { className: 'ts-error-boundary__title', children: titleMessage })] });
|
|
74
|
+
};
|
|
75
|
+
render() {
|
|
76
|
+
if (!this.state.error)
|
|
77
|
+
return this.props.children;
|
|
78
|
+
if (this.props.renderer)
|
|
79
|
+
return this.props.renderer(this.state.error);
|
|
80
|
+
return this.defaultRenderer();
|
|
81
|
+
}
|
|
82
|
+
onErrorBoundaryClick = (e) => {
|
|
83
|
+
const component = this.props.component;
|
|
84
|
+
if (!component)
|
|
85
|
+
return;
|
|
86
|
+
// @ts-ignore
|
|
87
|
+
const logInfo = component.logInfo;
|
|
88
|
+
// @ts-ignore
|
|
89
|
+
const reDeriveState = component.reDeriveState;
|
|
90
|
+
if (e.metaKey)
|
|
91
|
+
return logInfo('Component props and state', component.props, component.state);
|
|
92
|
+
if (e.shiftKey) {
|
|
93
|
+
logInfo('Re-deriving state');
|
|
94
|
+
return reDeriveState();
|
|
95
|
+
}
|
|
96
|
+
component.forceUpdate();
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
const randomMessages = [
|
|
100
|
+
'Jeepers Creepers! An error!',
|
|
101
|
+
'Something went wrong.. we\'re on it!',
|
|
102
|
+
'This component is having a bad day',
|
|
103
|
+
];
|