@lumeweb/portal-framework-ui 0.0.1 → 0.1.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/LICENSE +9 -0
- package/README.md +1 -45
- package/dist/esm/components/Copyable.d.ts +43 -0
- package/dist/esm/components/Copyable.js +50 -0
- package/dist/esm/components/Copyable.js.map +1 -0
- package/dist/esm/components/FilterChip.d.ts +16 -0
- package/dist/esm/components/FilterChip.js +47 -0
- package/dist/esm/components/FilterChip.js.map +1 -0
- package/dist/esm/components/Forms.d.ts +55 -0
- package/dist/esm/components/Forms.js +123 -0
- package/dist/esm/components/Forms.js.map +1 -0
- package/dist/esm/components/InlineAuthLinkBanner.d.ts +18 -0
- package/dist/esm/components/InlineAuthLinkBanner.js +23 -0
- package/dist/esm/components/InlineAuthLinkBanner.js.map +1 -0
- package/dist/esm/components/KeyboardShortcutDialog.d.ts +12 -0
- package/dist/esm/components/KeyboardShortcutDialog.js +48 -0
- package/dist/esm/components/KeyboardShortcutDialog.js.map +1 -0
- package/dist/esm/components/Loading.d.ts +13 -0
- package/dist/esm/components/Loading.js +38 -0
- package/dist/esm/components/Loading.js.map +1 -0
- package/dist/esm/components/LumeLogo.d.ts +12 -0
- package/dist/esm/components/LumeLogo.js +22 -0
- package/dist/esm/components/LumeLogo.js.map +1 -0
- package/dist/esm/components/MainNavigation.d.ts +11 -0
- package/dist/esm/components/MainNavigation.js +227 -0
- package/dist/esm/components/MainNavigation.js.map +1 -0
- package/dist/esm/components/SkeletonLoader.d.ts +25 -0
- package/dist/esm/components/SkeletonLoader.js +78 -0
- package/dist/esm/components/SkeletonLoader.js.map +1 -0
- package/dist/esm/components/TableActionsDropdown.d.ts +18 -0
- package/dist/esm/components/TableActionsDropdown.js +34 -0
- package/dist/esm/components/TableActionsDropdown.js.map +1 -0
- package/dist/esm/components/TableContainer.d.ts +13 -0
- package/dist/esm/components/TableContainer.js +15 -0
- package/dist/esm/components/TableContainer.js.map +1 -0
- package/dist/esm/components/ThemeSwitcher.d.ts +7 -0
- package/dist/esm/components/ThemeSwitcher.js +38 -0
- package/dist/esm/components/ThemeSwitcher.js.map +1 -0
- package/dist/esm/components/ThemedBadge.d.ts +23 -0
- package/dist/esm/components/ThemedBadge.js +20 -0
- package/dist/esm/components/ThemedBadge.js.map +1 -0
- package/dist/esm/components/actions/ActionListRenderer.d.ts +15 -0
- package/dist/esm/components/actions/ActionListRenderer.js +38 -0
- package/dist/esm/components/actions/ActionListRenderer.js.map +1 -0
- package/dist/esm/components/actions/actionHelpers.d.ts +127 -0
- package/dist/esm/components/actions/actionHelpers.js +205 -0
- package/dist/esm/components/actions/actionHelpers.js.map +1 -0
- package/dist/esm/components/actions/index.d.ts +6 -0
- package/dist/esm/components/actions/index.js +7 -0
- package/dist/esm/components/actions/items/ButtonActionItem.d.ts +9 -0
- package/dist/esm/components/actions/items/ButtonActionItem.js +23 -0
- package/dist/esm/components/actions/items/ButtonActionItem.js.map +1 -0
- package/dist/esm/components/actions/items/CancelActionItem.d.ts +9 -0
- package/dist/esm/components/actions/items/CancelActionItem.js +28 -0
- package/dist/esm/components/actions/items/CancelActionItem.js.map +1 -0
- package/dist/esm/components/actions/items/CustomActionItem.d.ts +9 -0
- package/dist/esm/components/actions/items/CustomActionItem.js +27 -0
- package/dist/esm/components/actions/items/CustomActionItem.js.map +1 -0
- package/dist/esm/components/actions/items/LinkActionItem.d.ts +9 -0
- package/dist/esm/components/actions/items/LinkActionItem.js +33 -0
- package/dist/esm/components/actions/items/LinkActionItem.js.map +1 -0
- package/dist/esm/components/actions/items/RetryActionItem.d.ts +9 -0
- package/dist/esm/components/actions/items/RetryActionItem.js +23 -0
- package/dist/esm/components/actions/items/RetryActionItem.js.map +1 -0
- package/dist/esm/components/actions/items/SubmitActionItem.d.ts +9 -0
- package/dist/esm/components/actions/items/SubmitActionItem.js +26 -0
- package/dist/esm/components/actions/items/SubmitActionItem.js.map +1 -0
- package/dist/esm/components/actions/register.d.ts +5 -0
- package/dist/esm/components/actions/register.js +20 -0
- package/dist/esm/components/actions/register.js.map +1 -0
- package/dist/esm/components/actions/registry.d.ts +14 -0
- package/dist/esm/components/actions/registry.js +20 -0
- package/dist/esm/components/actions/registry.js.map +1 -0
- package/dist/esm/components/actions/types.d.ts +132 -0
- package/dist/esm/components/actions/types.js +29 -0
- package/dist/esm/components/actions/types.js.map +1 -0
- package/dist/esm/components/app/AppComponent.d.ts +17 -0
- package/dist/esm/components/app/AppComponent.js +179 -0
- package/dist/esm/components/app/AppComponent.js.map +1 -0
- package/dist/esm/components/data-table/BaseTable.d.ts +86 -0
- package/dist/esm/components/data-table/BaseTable.js +123 -0
- package/dist/esm/components/data-table/BaseTable.js.map +1 -0
- package/dist/esm/components/data-table/BaseTableContent.d.ts +48 -0
- package/dist/esm/components/data-table/BaseTableContent.js +38 -0
- package/dist/esm/components/data-table/BaseTableContent.js.map +1 -0
- package/dist/esm/components/data-table/BaseTableInner.d.ts +11 -0
- package/dist/esm/components/data-table/BaseTableInner.js +35 -0
- package/dist/esm/components/data-table/BaseTableInner.js.map +1 -0
- package/dist/esm/components/data-table/BaseTableStackedLayout.d.ts +31 -0
- package/dist/esm/components/data-table/BaseTableStackedLayout.js +137 -0
- package/dist/esm/components/data-table/BaseTableStackedLayout.js.map +1 -0
- package/dist/esm/components/data-table/DataTable.d.ts +18 -0
- package/dist/esm/components/data-table/DataTable.js +97 -0
- package/dist/esm/components/data-table/DataTable.js.map +1 -0
- package/dist/esm/components/data-table/DataTable.types.d.ts +203 -0
- package/dist/esm/components/data-table/DataTable.types.js +25 -0
- package/dist/esm/components/data-table/DataTable.types.js.map +1 -0
- package/dist/esm/components/data-table/DataTableController.d.ts +19 -0
- package/dist/esm/components/data-table/DataTableController.js +31 -0
- package/dist/esm/components/data-table/DataTableController.js.map +1 -0
- package/dist/esm/components/data-table/DefaultPagination.d.ts +7 -0
- package/dist/esm/components/data-table/DefaultPagination.js +62 -0
- package/dist/esm/components/data-table/DefaultPagination.js.map +1 -0
- package/dist/esm/components/data-table/DefaultTableLayout.d.ts +28 -0
- package/dist/esm/components/data-table/DefaultTableLayout.js +70 -0
- package/dist/esm/components/data-table/DefaultTableLayout.js.map +1 -0
- package/dist/esm/components/data-table/EmptyState.d.ts +19 -0
- package/dist/esm/components/data-table/EmptyState.js +16 -0
- package/dist/esm/components/data-table/EmptyState.js.map +1 -0
- package/dist/esm/components/data-table/LoadingState.d.ts +19 -0
- package/dist/esm/components/data-table/LoadingState.js +34 -0
- package/dist/esm/components/data-table/LoadingState.js.map +1 -0
- package/dist/esm/components/data-table/TableAction.d.ts +21 -0
- package/dist/esm/components/data-table/TableAction.js +26 -0
- package/dist/esm/components/data-table/TableAction.js.map +1 -0
- package/dist/esm/components/data-table/TableActionMenu.d.ts +20 -0
- package/dist/esm/components/data-table/TableActionMenu.js +31 -0
- package/dist/esm/components/data-table/TableActionMenu.js.map +1 -0
- package/dist/esm/components/data-table/TableLayoutRenderer.d.ts +48 -0
- package/dist/esm/components/data-table/TableLayoutRenderer.js +45 -0
- package/dist/esm/components/data-table/TableLayoutRenderer.js.map +1 -0
- package/dist/esm/components/data-table/Toolbar.d.ts +17 -0
- package/dist/esm/components/data-table/Toolbar.js +176 -0
- package/dist/esm/components/data-table/Toolbar.js.map +1 -0
- package/dist/esm/components/data-table/ToolbarRegistry.d.ts +66 -0
- package/dist/esm/components/data-table/ToolbarRegistry.js +89 -0
- package/dist/esm/components/data-table/ToolbarRegistry.js.map +1 -0
- package/dist/esm/components/data-table/ToolbarRenderer.d.ts +45 -0
- package/dist/esm/components/data-table/ToolbarRenderer.js +137 -0
- package/dist/esm/components/data-table/ToolbarRenderer.js.map +1 -0
- package/dist/esm/components/data-table/contexts/FilterHelpers.d.ts +30 -0
- package/dist/esm/components/data-table/contexts/FilterHelpers.js +60 -0
- package/dist/esm/components/data-table/contexts/FilterHelpers.js.map +1 -0
- package/dist/esm/components/data-table/contexts/RefineTable.d.ts +25 -0
- package/dist/esm/components/data-table/contexts/RefineTable.js +69 -0
- package/dist/esm/components/data-table/contexts/RefineTable.js.map +1 -0
- package/dist/esm/components/data-table/contexts/TableConfig.d.ts +24 -0
- package/dist/esm/components/data-table/contexts/TableConfig.js +29 -0
- package/dist/esm/components/data-table/contexts/TableConfig.js.map +1 -0
- package/dist/esm/components/data-table/contexts/TableInstance.d.ts +20 -0
- package/dist/esm/components/data-table/contexts/TableInstance.js +21 -0
- package/dist/esm/components/data-table/contexts/TableInstance.js.map +1 -0
- package/dist/esm/components/data-table/contexts/index.d.ts +5 -0
- package/dist/esm/components/data-table/contexts/index.js +6 -0
- package/dist/esm/components/data-table/filterColumnsForMobile.d.ts +16 -0
- package/dist/esm/components/data-table/filterColumnsForMobile.js +31 -0
- package/dist/esm/components/data-table/filterColumnsForMobile.js.map +1 -0
- package/dist/esm/components/data-table/index.d.ts +50 -0
- package/dist/esm/components/data-table/index.js +39 -0
- package/dist/esm/components/data-table/register.d.ts +1 -0
- package/dist/esm/components/data-table/register.js +1 -0
- package/dist/esm/components/data-table/tableOptions.d.ts +18 -0
- package/dist/esm/components/data-table/tableOptions.js +40 -0
- package/dist/esm/components/data-table/tableOptions.js.map +1 -0
- package/dist/esm/components/data-table/toolbarItems/FilterGroup.d.ts +18 -0
- package/dist/esm/components/data-table/toolbarItems/FilterGroup.js +105 -0
- package/dist/esm/components/data-table/toolbarItems/FilterGroup.js.map +1 -0
- package/dist/esm/components/data-table/toolbarItems/FilterResolver.d.ts +22 -0
- package/dist/esm/components/data-table/toolbarItems/FilterResolver.js +74 -0
- package/dist/esm/components/data-table/toolbarItems/FilterResolver.js.map +1 -0
- package/dist/esm/components/data-table/toolbarItems/filters/BaseFilter.d.ts +27 -0
- package/dist/esm/components/data-table/toolbarItems/filters/BaseFilter.js +29 -0
- package/dist/esm/components/data-table/toolbarItems/filters/BaseFilter.js.map +1 -0
- package/dist/esm/components/data-table/toolbarItems/filters/FilterRegistry.d.ts +52 -0
- package/dist/esm/components/data-table/toolbarItems/filters/FilterRegistry.js +57 -0
- package/dist/esm/components/data-table/toolbarItems/filters/FilterRegistry.js.map +1 -0
- package/dist/esm/components/data-table/toolbarItems/filters/components/BooleanFilter.d.ts +12 -0
- package/dist/esm/components/data-table/toolbarItems/filters/components/BooleanFilter.js +34 -0
- package/dist/esm/components/data-table/toolbarItems/filters/components/BooleanFilter.js.map +1 -0
- package/dist/esm/components/data-table/toolbarItems/filters/components/DateFilter.d.ts +12 -0
- package/dist/esm/components/data-table/toolbarItems/filters/components/DateFilter.js +25 -0
- package/dist/esm/components/data-table/toolbarItems/filters/components/DateFilter.js.map +1 -0
- package/dist/esm/components/data-table/toolbarItems/filters/components/MultiSelectFilter.d.ts +13 -0
- package/dist/esm/components/data-table/toolbarItems/filters/components/MultiSelectFilter.js +44 -0
- package/dist/esm/components/data-table/toolbarItems/filters/components/MultiSelectFilter.js.map +1 -0
- package/dist/esm/components/data-table/toolbarItems/filters/components/NumberFilter.d.ts +12 -0
- package/dist/esm/components/data-table/toolbarItems/filters/components/NumberFilter.js +29 -0
- package/dist/esm/components/data-table/toolbarItems/filters/components/NumberFilter.js.map +1 -0
- package/dist/esm/components/data-table/toolbarItems/filters/components/RangeFilter.d.ts +16 -0
- package/dist/esm/components/data-table/toolbarItems/filters/components/RangeFilter.js +61 -0
- package/dist/esm/components/data-table/toolbarItems/filters/components/RangeFilter.js.map +1 -0
- package/dist/esm/components/data-table/toolbarItems/filters/components/SearchFilter.d.ts +12 -0
- package/dist/esm/components/data-table/toolbarItems/filters/components/SearchFilter.js +33 -0
- package/dist/esm/components/data-table/toolbarItems/filters/components/SearchFilter.js.map +1 -0
- package/dist/esm/components/data-table/toolbarItems/filters/components/SelectFilter.d.ts +13 -0
- package/dist/esm/components/data-table/toolbarItems/filters/components/SelectFilter.js +95 -0
- package/dist/esm/components/data-table/toolbarItems/filters/components/SelectFilter.js.map +1 -0
- package/dist/esm/components/data-table/toolbarItems/filters/components/TextFilter.d.ts +12 -0
- package/dist/esm/components/data-table/toolbarItems/filters/components/TextFilter.js +25 -0
- package/dist/esm/components/data-table/toolbarItems/filters/components/TextFilter.js.map +1 -0
- package/dist/esm/components/data-table/toolbarItems/filters/components/index.d.ts +9 -0
- package/dist/esm/components/data-table/toolbarItems/filters/components/index.js +10 -0
- package/dist/esm/components/data-table/toolbarItems/filters/hooks/useFilterOperators.d.ts +43 -0
- package/dist/esm/components/data-table/toolbarItems/filters/hooks/useFilterOperators.js +102 -0
- package/dist/esm/components/data-table/toolbarItems/filters/hooks/useFilterOperators.js.map +1 -0
- package/dist/esm/components/data-table/toolbarItems/filters/hooks/useFilterTooltip.d.ts +19 -0
- package/dist/esm/components/data-table/toolbarItems/filters/hooks/useFilterTooltip.js +34 -0
- package/dist/esm/components/data-table/toolbarItems/filters/hooks/useFilterTooltip.js.map +1 -0
- package/dist/esm/components/data-table/toolbarItems/filters/index.d.ts +11 -0
- package/dist/esm/components/data-table/toolbarItems/filters/index.js +13 -0
- package/dist/esm/components/data-table/toolbarItems/filters/register.d.ts +1 -0
- package/dist/esm/components/data-table/toolbarItems/filters/register.js +8 -0
- package/dist/esm/components/data-table/toolbarItems/filters/types.d.ts +140 -0
- package/dist/esm/components/data-table/toolbarItems/filters/types.js +58 -0
- package/dist/esm/components/data-table/toolbarItems/filters/types.js.map +1 -0
- package/dist/esm/components/data-table/toolbarItems/filters/util.d.ts +24 -0
- package/dist/esm/components/data-table/toolbarItems/filters/util.js +43 -0
- package/dist/esm/components/data-table/toolbarItems/filters/util.js.map +1 -0
- package/dist/esm/components/data-table/toolbarItems/index.d.ts +17 -0
- package/dist/esm/components/data-table/toolbarItems/index.js +18 -0
- package/dist/esm/components/data-table/toolbarItems/items/custom.d.ts +15 -0
- package/dist/esm/components/data-table/toolbarItems/items/custom.js +19 -0
- package/dist/esm/components/data-table/toolbarItems/items/custom.js.map +1 -0
- package/dist/esm/components/data-table/toolbarItems/items/index.d.ts +6 -0
- package/dist/esm/components/data-table/toolbarItems/items/index.js +6 -0
- package/dist/esm/components/data-table/toolbarItems/items/refresh.d.ts +7 -0
- package/dist/esm/components/data-table/toolbarItems/items/refresh.js +36 -0
- package/dist/esm/components/data-table/toolbarItems/items/refresh.js.map +1 -0
- package/dist/esm/components/data-table/toolbarItems/items/search.d.ts +7 -0
- package/dist/esm/components/data-table/toolbarItems/items/search.js +66 -0
- package/dist/esm/components/data-table/toolbarItems/items/search.js.map +1 -0
- package/dist/esm/components/data-table/toolbarItems/items/separator.d.ts +16 -0
- package/dist/esm/components/data-table/toolbarItems/items/separator.js +20 -0
- package/dist/esm/components/data-table/toolbarItems/items/separator.js.map +1 -0
- package/dist/esm/components/data-table/toolbarItems/register.d.ts +24 -0
- package/dist/esm/components/data-table/toolbarItems/register.js +119 -0
- package/dist/esm/components/data-table/toolbarItems/register.js.map +1 -0
- package/dist/esm/components/data-table/useMobileDetection.d.ts +18 -0
- package/dist/esm/components/data-table/useMobileDetection.js +32 -0
- package/dist/esm/components/data-table/useMobileDetection.js.map +1 -0
- package/dist/esm/components/data-table/useTableHandlers.d.ts +57 -0
- package/dist/esm/components/data-table/useTableHandlers.js +69 -0
- package/dist/esm/components/data-table/useTableHandlers.js.map +1 -0
- package/dist/esm/components/data-table/useTableLayoutSelector.d.ts +16 -0
- package/dist/esm/components/data-table/useTableLayoutSelector.js +12 -0
- package/dist/esm/components/data-table/useTableLayoutSelector.js.map +1 -0
- package/dist/esm/components/dialog/Dialog.context.d.ts +18 -0
- package/dist/esm/components/dialog/Dialog.context.js +80 -0
- package/dist/esm/components/dialog/Dialog.context.js.map +1 -0
- package/dist/esm/components/dialog/Dialog.registry.d.ts +22 -0
- package/dist/esm/components/dialog/Dialog.registry.js +24 -0
- package/dist/esm/components/dialog/Dialog.registry.js.map +1 -0
- package/dist/esm/components/dialog/Dialog.renderer.d.ts +9 -0
- package/dist/esm/components/dialog/Dialog.renderer.js +63 -0
- package/dist/esm/components/dialog/Dialog.renderer.js.map +1 -0
- package/dist/esm/components/dialog/Dialog.types.d.ts +273 -0
- package/dist/esm/components/dialog/Dialog.types.js +233 -0
- package/dist/esm/components/dialog/Dialog.types.js.map +1 -0
- package/dist/esm/components/dialog/DialogActions.context.d.ts +13 -0
- package/dist/esm/components/dialog/DialogActions.context.js +13 -0
- package/dist/esm/components/dialog/DialogActions.context.js.map +1 -0
- package/dist/esm/components/dialog/DialogContainer.d.ts +15 -0
- package/dist/esm/components/dialog/DialogContainer.js +37 -0
- package/dist/esm/components/dialog/DialogContainer.js.map +1 -0
- package/dist/esm/components/dialog/DialogContent.d.ts +14 -0
- package/dist/esm/components/dialog/DialogContent.js +18 -0
- package/dist/esm/components/dialog/DialogContent.js.map +1 -0
- package/dist/esm/components/dialog/DialogFooterContent.d.ts +14 -0
- package/dist/esm/components/dialog/DialogFooterContent.js +20 -0
- package/dist/esm/components/dialog/DialogFooterContent.js.map +1 -0
- package/dist/esm/components/dialog/DialogHeaderContent.d.ts +12 -0
- package/dist/esm/components/dialog/DialogHeaderContent.js +24 -0
- package/dist/esm/components/dialog/DialogHeaderContent.js.map +1 -0
- package/dist/esm/components/dialog/DialogState.context.d.ts +11 -0
- package/dist/esm/components/dialog/DialogState.context.js +11 -0
- package/dist/esm/components/dialog/DialogState.context.js.map +1 -0
- package/dist/esm/components/dialog/index.d.ts +6 -0
- package/dist/esm/components/dialog/index.js +8 -0
- package/dist/esm/components/dialog/types/AlertDialog.d.ts +19 -0
- package/dist/esm/components/dialog/types/AlertDialog.js +29 -0
- package/dist/esm/components/dialog/types/AlertDialog.js.map +1 -0
- package/dist/esm/components/dialog/types/ConfirmDialog.d.ts +17 -0
- package/dist/esm/components/dialog/types/ConfirmDialog.js +24 -0
- package/dist/esm/components/dialog/types/ConfirmDialog.js.map +1 -0
- package/dist/esm/components/dialog/types/CustomDialog.d.ts +28 -0
- package/dist/esm/components/dialog/types/CustomDialog.js +17 -0
- package/dist/esm/components/dialog/types/CustomDialog.js.map +1 -0
- package/dist/esm/components/dialog/types/FormDialog.d.ts +22 -0
- package/dist/esm/components/dialog/types/FormDialog.js +46 -0
- package/dist/esm/components/dialog/types/FormDialog.js.map +1 -0
- package/dist/esm/components/dialog/types/WizardDialog.d.ts +29 -0
- package/dist/esm/components/dialog/types/WizardDialog.js +43 -0
- package/dist/esm/components/dialog/types/WizardDialog.js.map +1 -0
- package/dist/esm/components/dialog/utils/dialogClasses.d.ts +7 -0
- package/dist/esm/components/dialog/utils/dialogClasses.js +14 -0
- package/dist/esm/components/dialog/utils/dialogClasses.js.map +1 -0
- package/dist/esm/components/dialog/utils/dialogDetection.d.ts +32 -0
- package/dist/esm/components/dialog/utils/dialogDetection.js +47 -0
- package/dist/esm/components/dialog/utils/dialogDetection.js.map +1 -0
- package/dist/esm/components/dialog/utils/index.d.ts +3 -0
- package/dist/esm/components/dialog/utils/index.js +4 -0
- package/dist/esm/components/editor/BlockTypeDropdown.d.ts +12 -0
- package/dist/esm/components/editor/BlockTypeDropdown.js +57 -0
- package/dist/esm/components/editor/BlockTypeDropdown.js.map +1 -0
- package/dist/esm/components/editor/Editor.d.ts +7 -0
- package/dist/esm/components/editor/Editor.js +17 -0
- package/dist/esm/components/editor/Editor.js.map +1 -0
- package/dist/esm/components/editor/EditorInner.d.ts +14 -0
- package/dist/esm/components/editor/EditorInner.js +107 -0
- package/dist/esm/components/editor/EditorInner.js.map +1 -0
- package/dist/esm/components/editor/Preview.d.ts +5 -0
- package/dist/esm/components/editor/Preview.js +18 -0
- package/dist/esm/components/editor/Preview.js.map +1 -0
- package/dist/esm/components/editor/ToolbarContext.d.ts +39 -0
- package/dist/esm/components/editor/ToolbarContext.js +54 -0
- package/dist/esm/components/editor/ToolbarContext.js.map +1 -0
- package/dist/esm/components/editor/ToolbarPlugin.d.ts +20 -0
- package/dist/esm/components/editor/ToolbarPlugin.js +194 -0
- package/dist/esm/components/editor/ToolbarPlugin.js.map +1 -0
- package/dist/esm/components/editor/formatting.d.ts +15 -0
- package/dist/esm/components/editor/formatting.js +117 -0
- package/dist/esm/components/editor/formatting.js.map +1 -0
- package/dist/esm/components/editor/index.d.ts +3 -0
- package/dist/esm/components/editor/index.js +3 -0
- package/dist/esm/components/form/FormGroup.d.ts +18 -0
- package/dist/esm/components/form/FormGroup.js +28 -0
- package/dist/esm/components/form/FormGroup.js.map +1 -0
- package/dist/esm/components/form/FormRenderer.d.ts +14 -0
- package/dist/esm/components/form/FormRenderer.js +179 -0
- package/dist/esm/components/form/FormRenderer.js.map +1 -0
- package/dist/esm/components/form/SchemaForm.d.ts +18 -0
- package/dist/esm/components/form/SchemaForm.js +172 -0
- package/dist/esm/components/form/SchemaForm.js.map +1 -0
- package/dist/esm/components/form/StepControlContext.d.ts +199 -0
- package/dist/esm/components/form/StepControlContext.js +249 -0
- package/dist/esm/components/form/StepControlContext.js.map +1 -0
- package/dist/esm/components/form/StepSchemaForm.d.ts +22 -0
- package/dist/esm/components/form/StepSchemaForm.js +176 -0
- package/dist/esm/components/form/StepSchemaForm.js.map +1 -0
- package/dist/esm/components/form/WizardForm.d.ts +16 -0
- package/dist/esm/components/form/WizardForm.js +126 -0
- package/dist/esm/components/form/WizardForm.js.map +1 -0
- package/dist/esm/components/form/WizardStepContent.d.ts +26 -0
- package/dist/esm/components/form/WizardStepContent.js +46 -0
- package/dist/esm/components/form/WizardStepContent.js.map +1 -0
- package/dist/esm/components/form/__mocks__/@hookform/resolvers/zod.d.ts +8 -0
- package/dist/esm/components/form/adapters.d.ts +23 -0
- package/dist/esm/components/form/adapters.js +43 -0
- package/dist/esm/components/form/adapters.js.map +1 -0
- package/dist/esm/components/form/autocomplete/index.d.ts +3 -0
- package/dist/esm/components/form/autocomplete/index.js +4 -0
- package/dist/esm/components/form/autocomplete/register.d.ts +8 -0
- package/dist/esm/components/form/autocomplete/register.js +161 -0
- package/dist/esm/components/form/autocomplete/register.js.map +1 -0
- package/dist/esm/components/form/autocomplete/rules.d.ts +15 -0
- package/dist/esm/components/form/autocomplete/rules.js +198 -0
- package/dist/esm/components/form/autocomplete/rules.js.map +1 -0
- package/dist/esm/components/form/context.d.ts +29 -0
- package/dist/esm/components/form/context.js +25 -0
- package/dist/esm/components/form/context.js.map +1 -0
- package/dist/esm/components/form/fields/Checkbox.d.ts +6 -0
- package/dist/esm/components/form/fields/Checkbox.js +33 -0
- package/dist/esm/components/form/fields/Checkbox.js.map +1 -0
- package/dist/esm/components/form/fields/DatePicker.d.ts +6 -0
- package/dist/esm/components/form/fields/DatePicker.js +29 -0
- package/dist/esm/components/form/fields/DatePicker.js.map +1 -0
- package/dist/esm/components/form/fields/EmailInput.d.ts +6 -0
- package/dist/esm/components/form/fields/EmailInput.js +25 -0
- package/dist/esm/components/form/fields/EmailInput.js.map +1 -0
- package/dist/esm/components/form/fields/FileInput.d.ts +6 -0
- package/dist/esm/components/form/fields/FileInput.js +28 -0
- package/dist/esm/components/form/fields/FileInput.js.map +1 -0
- package/dist/esm/components/form/fields/Input.d.ts +6 -0
- package/dist/esm/components/form/fields/Input.js +30 -0
- package/dist/esm/components/form/fields/Input.js.map +1 -0
- package/dist/esm/components/form/fields/RadioGroup.d.ts +6 -0
- package/dist/esm/components/form/fields/RadioGroup.js +42 -0
- package/dist/esm/components/form/fields/RadioGroup.js.map +1 -0
- package/dist/esm/components/form/fields/RichText.d.ts +6 -0
- package/dist/esm/components/form/fields/RichText.js +30 -0
- package/dist/esm/components/form/fields/RichText.js.map +1 -0
- package/dist/esm/components/form/fields/Select.d.ts +6 -0
- package/dist/esm/components/form/fields/Select.js +37 -0
- package/dist/esm/components/form/fields/Select.js.map +1 -0
- package/dist/esm/components/form/fields/Slider.d.ts +6 -0
- package/dist/esm/components/form/fields/Slider.js +29 -0
- package/dist/esm/components/form/fields/Slider.js.map +1 -0
- package/dist/esm/components/form/fields/Switch.d.ts +6 -0
- package/dist/esm/components/form/fields/Switch.js +33 -0
- package/dist/esm/components/form/fields/Switch.js.map +1 -0
- package/dist/esm/components/form/fields/Textarea.d.ts +6 -0
- package/dist/esm/components/form/fields/Textarea.js +28 -0
- package/dist/esm/components/form/fields/Textarea.js.map +1 -0
- package/dist/esm/components/form/fields/index.d.ts +13 -0
- package/dist/esm/components/form/fields/index.js +14 -0
- package/dist/esm/components/form/fields/registry.d.ts +11 -0
- package/dist/esm/components/form/fields/registry.js +15 -0
- package/dist/esm/components/form/fields/registry.js.map +1 -0
- package/dist/esm/components/form/fields/types.d.ts +37 -0
- package/dist/esm/components/form/fields/types.js +21 -0
- package/dist/esm/components/form/fields/types.js.map +1 -0
- package/dist/esm/components/form/handlers/core.d.ts +19 -0
- package/dist/esm/components/form/handlers/core.js +51 -0
- package/dist/esm/components/form/handlers/core.js.map +1 -0
- package/dist/esm/components/form/handlers/step.d.ts +19 -0
- package/dist/esm/components/form/handlers/step.js +40 -0
- package/dist/esm/components/form/handlers/step.js.map +1 -0
- package/dist/esm/components/form/index.d.ts +26 -0
- package/dist/esm/components/form/index.js +28 -0
- package/dist/esm/components/form/register.d.ts +5 -0
- package/dist/esm/components/form/register.js +31 -0
- package/dist/esm/components/form/register.js.map +1 -0
- package/dist/esm/components/form/types.d.ts +521 -0
- package/dist/esm/components/form/types.js +69 -0
- package/dist/esm/components/form/types.js.map +1 -0
- package/dist/esm/components/form/utils/animationUtils.d.ts +14 -0
- package/dist/esm/components/form/utils/animationUtils.js +20 -0
- package/dist/esm/components/form/utils/animationUtils.js.map +1 -0
- package/dist/esm/components/form/utils/autoSave.d.ts +8 -0
- package/dist/esm/components/form/utils/autoSave.js +17 -0
- package/dist/esm/components/form/utils/autoSave.js.map +1 -0
- package/dist/esm/components/form/utils/index.d.ts +4 -0
- package/dist/esm/components/form/utils/index.js +5 -0
- package/dist/esm/components/form/utils/stepRetry.d.ts +12 -0
- package/dist/esm/components/form/utils/stepRetry.js +16 -0
- package/dist/esm/components/form/utils/stepRetry.js.map +1 -0
- package/dist/esm/components/index.d.ts +126 -0
- package/dist/esm/components/index.js +130 -0
- package/dist/esm/components/layout/DesktopSidebar.d.ts +5 -0
- package/dist/esm/components/layout/DesktopSidebar.js +51 -0
- package/dist/esm/components/layout/DesktopSidebar.js.map +1 -0
- package/dist/esm/components/layout/GeneralLayout.d.ts +5 -0
- package/dist/esm/components/layout/GeneralLayout.js +34 -0
- package/dist/esm/components/layout/GeneralLayout.js.map +1 -0
- package/dist/esm/components/layout/MobileMenu.d.ts +5 -0
- package/dist/esm/components/layout/MobileMenu.js +48 -0
- package/dist/esm/components/layout/MobileMenu.js.map +1 -0
- package/dist/esm/components/layout/PageHeader.d.ts +16 -0
- package/dist/esm/components/layout/PageHeader.js +20 -0
- package/dist/esm/components/layout/PageHeader.js.map +1 -0
- package/dist/esm/components/layout/SidebarContext.d.ts +10 -0
- package/dist/esm/components/layout/SidebarContext.js +27 -0
- package/dist/esm/components/layout/SidebarContext.js.map +1 -0
- package/dist/esm/components/layout/SidebarToggle.d.ts +12 -0
- package/dist/esm/components/layout/SidebarToggle.js +23 -0
- package/dist/esm/components/layout/SidebarToggle.js.map +1 -0
- package/dist/esm/components/layout/UserNav.d.ts +5 -0
- package/dist/esm/components/layout/UserNav.js +110 -0
- package/dist/esm/components/layout/UserNav.js.map +1 -0
- package/dist/esm/components/layout/index.d.ts +7 -0
- package/dist/esm/components/layout/index.js +9 -0
- package/dist/esm/components/screen-reader/ScreenReaderAnnouncement.d.ts +23 -0
- package/dist/esm/components/screen-reader/ScreenReaderAnnouncement.js +28 -0
- package/dist/esm/components/screen-reader/ScreenReaderAnnouncement.js.map +1 -0
- package/dist/esm/components/screen-reader/hooks/useScreenReaderAnnouncement.d.ts +10 -0
- package/dist/esm/components/screen-reader/hooks/useScreenReaderAnnouncement.js +30 -0
- package/dist/esm/components/screen-reader/hooks/useScreenReaderAnnouncement.js.map +1 -0
- package/dist/esm/components/shared/UnifiedFooter.d.ts +17 -0
- package/dist/esm/components/shared/UnifiedFooter.js +210 -0
- package/dist/esm/components/shared/UnifiedFooter.js.map +1 -0
- package/dist/esm/components/shared/UnifiedHeader.d.ts +17 -0
- package/dist/esm/components/shared/UnifiedHeader.js +48 -0
- package/dist/esm/components/shared/UnifiedHeader.js.map +1 -0
- package/dist/esm/components/shared/context/FooterContext.d.ts +18 -0
- package/dist/esm/components/shared/context/FooterContext.js +24 -0
- package/dist/esm/components/shared/context/FooterContext.js.map +1 -0
- package/dist/esm/components/shared/context/HeaderContext.d.ts +18 -0
- package/dist/esm/components/shared/context/HeaderContext.js +23 -0
- package/dist/esm/components/shared/context/HeaderContext.js.map +1 -0
- package/dist/esm/components/shared/context/index.d.ts +3 -0
- package/dist/esm/components/shared/context/index.js +4 -0
- package/dist/esm/components/shared/environment/builders.d.ts +95 -0
- package/dist/esm/components/shared/environment/builders.js +163 -0
- package/dist/esm/components/shared/environment/builders.js.map +1 -0
- package/dist/esm/components/shared/environment/index.d.ts +7 -0
- package/dist/esm/components/shared/environment/index.js +3 -0
- package/dist/esm/components/shared/footers/ActionsFooter.d.ts +11 -0
- package/dist/esm/components/shared/footers/ActionsFooter.js +19 -0
- package/dist/esm/components/shared/footers/ActionsFooter.js.map +1 -0
- package/dist/esm/components/shared/footers/DefaultFooter.d.ts +13 -0
- package/dist/esm/components/shared/footers/DefaultFooter.js +20 -0
- package/dist/esm/components/shared/footers/DefaultFooter.js.map +1 -0
- package/dist/esm/components/shared/footers/FormFooter.d.ts +15 -0
- package/dist/esm/components/shared/footers/FormFooter.js +28 -0
- package/dist/esm/components/shared/footers/FormFooter.js.map +1 -0
- package/dist/esm/components/shared/footers/StepFormFooter.d.ts +15 -0
- package/dist/esm/components/shared/footers/StepFormFooter.js +28 -0
- package/dist/esm/components/shared/footers/StepFormFooter.js.map +1 -0
- package/dist/esm/components/shared/footers/WizardFooter.d.ts +12 -0
- package/dist/esm/components/shared/footers/WizardFooter.js +72 -0
- package/dist/esm/components/shared/footers/WizardFooter.js.map +1 -0
- package/dist/esm/components/shared/footers/index.d.ts +6 -0
- package/dist/esm/components/shared/footers/index.js +7 -0
- package/dist/esm/components/shared/headers/DefaultHeader.d.ts +13 -0
- package/dist/esm/components/shared/headers/DefaultHeader.js +30 -0
- package/dist/esm/components/shared/headers/DefaultHeader.js.map +1 -0
- package/dist/esm/components/shared/headers/FormHeader.d.ts +12 -0
- package/dist/esm/components/shared/headers/FormHeader.js +31 -0
- package/dist/esm/components/shared/headers/FormHeader.js.map +1 -0
- package/dist/esm/components/shared/headers/WizardHeader.d.ts +9 -0
- package/dist/esm/components/shared/headers/WizardHeader.js +116 -0
- package/dist/esm/components/shared/headers/WizardHeader.js.map +1 -0
- package/dist/esm/components/shared/headers/index.d.ts +4 -0
- package/dist/esm/components/shared/headers/index.js +5 -0
- package/dist/esm/components/shared/hooks/index.d.ts +3 -0
- package/dist/esm/components/shared/hooks/index.js +4 -0
- package/dist/esm/components/shared/hooks/useEnvironmentSync.d.ts +17 -0
- package/dist/esm/components/shared/hooks/useEnvironmentSync.js +17 -0
- package/dist/esm/components/shared/hooks/useEnvironmentSync.js.map +1 -0
- package/dist/esm/components/shared/hooks/useForceRerender.d.ts +17 -0
- package/dist/esm/components/shared/hooks/useForceRerender.js +26 -0
- package/dist/esm/components/shared/hooks/useForceRerender.js.map +1 -0
- package/dist/esm/components/shared/index.d.ts +31 -0
- package/dist/esm/components/shared/index.js +36 -0
- package/dist/esm/components/shared/registry/FooterRegistry.d.ts +15 -0
- package/dist/esm/components/shared/registry/FooterRegistry.js +47 -0
- package/dist/esm/components/shared/registry/FooterRegistry.js.map +1 -0
- package/dist/esm/components/shared/registry/HeaderRegistry.d.ts +15 -0
- package/dist/esm/components/shared/registry/HeaderRegistry.js +41 -0
- package/dist/esm/components/shared/registry/HeaderRegistry.js.map +1 -0
- package/dist/esm/components/shared/registry/index.d.ts +4 -0
- package/dist/esm/components/shared/registry/index.js +5 -0
- package/dist/esm/components/shared/registry/types.d.ts +23 -0
- package/dist/esm/components/shared/registry/types.js +21 -0
- package/dist/esm/components/shared/registry/types.js.map +1 -0
- package/dist/esm/components/shared/types/container.d.ts +70 -0
- package/dist/esm/components/shared/types/container.js +35 -0
- package/dist/esm/components/shared/types/container.js.map +1 -0
- package/dist/esm/components/shared/types/environment.d.ts +25 -0
- package/dist/esm/components/shared/types/environment.js +0 -0
- package/dist/esm/components/shared/types/footer.d.ts +121 -0
- package/dist/esm/components/shared/types/footer.js +58 -0
- package/dist/esm/components/shared/types/footer.js.map +1 -0
- package/dist/esm/components/shared/types/form.d.ts +120 -0
- package/dist/esm/components/shared/types/form.js +47 -0
- package/dist/esm/components/shared/types/form.js.map +1 -0
- package/dist/esm/components/shared/types/header.d.ts +81 -0
- package/dist/esm/components/shared/types/header.js +38 -0
- package/dist/esm/components/shared/types/header.js.map +1 -0
- package/dist/esm/components/shared/types/index.d.ts +8 -0
- package/dist/esm/components/shared/types/index.js +7 -0
- package/dist/esm/components/shared/types/navigation.d.ts +9 -0
- package/dist/esm/components/shared/types/navigation.js +0 -0
- package/dist/esm/components/shared/types/step.d.ts +104 -0
- package/dist/esm/components/shared/types/step.js +31 -0
- package/dist/esm/components/shared/types/step.js.map +1 -0
- package/dist/esm/components/shared/utils/createEnvironmentReceiver.d.ts +23 -0
- package/dist/esm/components/shared/utils/createEnvironmentReceiver.js +30 -0
- package/dist/esm/components/shared/utils/createEnvironmentReceiver.js.map +1 -0
- package/dist/esm/components/shared/utils/createForceRerenderReceiver.d.ts +22 -0
- package/dist/esm/components/shared/utils/createForceRerenderReceiver.js +30 -0
- package/dist/esm/components/shared/utils/createForceRerenderReceiver.js.map +1 -0
- package/dist/esm/components/shared/utils/index.d.ts +6 -0
- package/dist/esm/components/shared/utils/index.js +7 -0
- package/dist/esm/components/shared/utils/renderFooter.d.ts +37 -0
- package/dist/esm/components/shared/utils/renderFooter.js +99 -0
- package/dist/esm/components/shared/utils/renderFooter.js.map +1 -0
- package/dist/esm/components/shared/utils/renderHeader.d.ts +39 -0
- package/dist/esm/components/shared/utils/renderHeader.js +120 -0
- package/dist/esm/components/shared/utils/renderHeader.js.map +1 -0
- package/dist/esm/components/shared/utils/stepState.d.ts +36 -0
- package/dist/esm/components/shared/utils/stepState.js +61 -0
- package/dist/esm/components/shared/utils/stepState.js.map +1 -0
- package/dist/esm/components/sizing/index.d.ts +97 -0
- package/dist/esm/components/sizing/index.js +79 -0
- package/dist/esm/components/sizing/index.js.map +1 -0
- package/dist/esm/hooks/index.d.ts +16 -0
- package/dist/esm/hooks/index.js +17 -0
- package/dist/esm/hooks/useAccountSubdomain.d.ts +5 -0
- package/dist/esm/hooks/useAccountSubdomain.js +11 -0
- package/dist/esm/hooks/useAccountSubdomain.js.map +1 -0
- package/dist/esm/hooks/useAccountUrl.d.ts +5 -0
- package/dist/esm/hooks/useAccountUrl.js +27 -0
- package/dist/esm/hooks/useAccountUrl.js.map +1 -0
- package/dist/esm/hooks/useApiUrl.d.ts +5 -0
- package/dist/esm/hooks/useApiUrl.js +14 -0
- package/dist/esm/hooks/useApiUrl.js.map +1 -0
- package/dist/esm/hooks/useAvatar.d.ts +10 -0
- package/dist/esm/hooks/useAvatar.js +20 -0
- package/dist/esm/hooks/useAvatar.js.map +1 -0
- package/dist/esm/hooks/useFeatureFlag.d.ts +5 -0
- package/dist/esm/hooks/useFeatureFlag.js +10 -0
- package/dist/esm/hooks/useFeatureFlag.js.map +1 -0
- package/dist/esm/hooks/useLoginUrl.d.ts +5 -0
- package/dist/esm/hooks/useLoginUrl.js +10 -0
- package/dist/esm/hooks/useLoginUrl.js.map +1 -0
- package/dist/esm/hooks/useMenuItems.d.ts +12 -0
- package/dist/esm/hooks/useMenuItems.js +16 -0
- package/dist/esm/hooks/useMenuItems.js.map +1 -0
- package/dist/esm/hooks/usePluginMeta.d.ts +5 -0
- package/dist/esm/hooks/usePluginMeta.js +11 -0
- package/dist/esm/hooks/usePluginMeta.js.map +1 -0
- package/dist/esm/hooks/usePortalMeta.d.ts +7 -0
- package/dist/esm/hooks/usePortalMeta.js +10 -0
- package/dist/esm/hooks/usePortalMeta.js.map +1 -0
- package/dist/esm/hooks/usePortalUrl.d.ts +5 -0
- package/dist/esm/hooks/usePortalUrl.js +20 -0
- package/dist/esm/hooks/usePortalUrl.js.map +1 -0
- package/dist/esm/hooks/useProtocolDomain.d.ts +5 -0
- package/dist/esm/hooks/useProtocolDomain.js +12 -0
- package/dist/esm/hooks/useProtocolDomain.js.map +1 -0
- package/dist/esm/hooks/useRegisterUrl.d.ts +5 -0
- package/dist/esm/hooks/useRegisterUrl.js +10 -0
- package/dist/esm/hooks/useRegisterUrl.js.map +1 -0
- package/dist/esm/hooks/useResetPasswordUrl.d.ts +5 -0
- package/dist/esm/hooks/useResetPasswordUrl.js +10 -0
- package/dist/esm/hooks/useResetPasswordUrl.js.map +1 -0
- package/dist/esm/hooks/useSdk.d.ts +8 -0
- package/dist/esm/hooks/useSdk.js +33 -0
- package/dist/esm/hooks/useSdk.js.map +1 -0
- package/dist/esm/hooks/useTheme.d.ts +41 -0
- package/dist/esm/hooks/useTheme.js +79 -0
- package/dist/esm/hooks/useTheme.js.map +1 -0
- package/dist/esm/image.d.ts +6 -0
- package/dist/esm/images/account-banner-image.js +6 -0
- package/dist/esm/images/account-banner-image.js.map +1 -0
- package/dist/esm/images/discord-logo.js +6 -0
- package/dist/esm/images/discord-logo.js.map +1 -0
- package/dist/esm/images/lume-bg-image.js +6 -0
- package/dist/esm/images/lume-bg-image.js.map +1 -0
- package/dist/esm/images/lume-bg-login.js +6 -0
- package/dist/esm/images/lume-bg-login.js.map +1 -0
- package/dist/esm/images/lume-color-logo.js +6 -0
- package/dist/esm/images/lume-color-logo.js.map +1 -0
- package/dist/esm/images/lume-logo.js +6 -0
- package/dist/esm/images/lume-logo.js.map +1 -0
- package/dist/esm/images.d.ts +11 -0
- package/dist/esm/images.js +19 -0
- package/dist/esm/images.js.map +1 -0
- package/dist/esm/index.d.ts +150 -0
- package/dist/esm/index.js +149 -0
- package/dist/esm/store/appStore.d.ts +50 -0
- package/dist/esm/store/appStore.js +139 -0
- package/dist/esm/store/appStore.js.map +1 -0
- package/dist/esm/store/index.d.ts +5 -0
- package/dist/esm/store/index.js +6 -0
- package/dist/esm/store/portalStore.d.ts +33 -0
- package/dist/esm/store/portalStore.js +58 -0
- package/dist/esm/store/portalStore.js.map +1 -0
- package/dist/esm/store/saved-filters.d.ts +54 -0
- package/dist/esm/store/saved-filters.js +158 -0
- package/dist/esm/store/saved-filters.js.map +1 -0
- package/dist/esm/store/uiStore.d.ts +11 -0
- package/dist/esm/store/uiStore.js +16 -0
- package/dist/esm/store/uiStore.js.map +1 -0
- package/dist/esm/tests/portalMetaMocks.d.ts +16 -0
- package/dist/esm/tests/portalMetaMocks.js +15 -0
- package/dist/esm/tests/portalMetaMocks.js.map +1 -0
- package/dist/esm/types/badge.d.ts +16 -0
- package/dist/esm/types/badge.js +42 -0
- package/dist/esm/types/badge.js.map +1 -0
- package/dist/esm/types/index.d.ts +3 -0
- package/dist/esm/types/index.js +3 -0
- package/dist/esm/types/theme.d.ts +35 -0
- package/dist/esm/types/theme.js +0 -0
- package/dist/esm/utils/asyncUtils.d.ts +5 -0
- package/dist/esm/utils/asyncUtils.js +9 -0
- package/dist/esm/utils/asyncUtils.js.map +1 -0
- package/dist/esm/utils/fileSize.d.ts +5 -0
- package/dist/esm/utils/fileSize.js +18 -0
- package/dist/esm/utils/fileSize.js.map +1 -0
- package/dist/esm/utils/index.d.ts +4 -0
- package/dist/esm/utils/index.js +5 -0
- package/dist/esm/utils/theme.d.ts +197 -0
- package/dist/esm/utils/theme.js +689 -0
- package/dist/esm/utils/theme.js.map +1 -0
- package/package.json +75 -8
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import { blockTypeToBlockName, useToolbarState } from "./ToolbarContext.js";
|
|
2
|
+
import BlockTypeDropdown from "./BlockTypeDropdown.js";
|
|
3
|
+
import { Button, Separator, Toggle } from "@lumeweb/portal-framework-ui-core";
|
|
4
|
+
import React, { useEffect, useState } from "react";
|
|
5
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
import { useLexicalComposerContext } from "@lexical/react/LexicalComposerContext";
|
|
7
|
+
import { $isListNode } from "@lexical/list";
|
|
8
|
+
import { $isHeadingNode } from "@lexical/rich-text";
|
|
9
|
+
import { $findMatchingParent, mergeRegister } from "@lexical/utils";
|
|
10
|
+
import { $getSelection, $isRangeSelection, $isRootOrShadowRoot, CAN_REDO_COMMAND, CAN_UNDO_COMMAND, COMMAND_PRIORITY_CRITICAL, FORMAT_TEXT_COMMAND, REDO_COMMAND, SELECTION_CHANGE_COMMAND, UNDO_COMMAND } from "lexical";
|
|
11
|
+
import { FontBoldIcon, FontItalicIcon, ReloadIcon, UnderlineIcon } from "@radix-ui/react-icons";
|
|
12
|
+
|
|
13
|
+
//#region src/components/editor/ToolbarPlugin.tsx
|
|
14
|
+
const defaultToolbarOptions = [
|
|
15
|
+
"bold",
|
|
16
|
+
"italic",
|
|
17
|
+
"underline",
|
|
18
|
+
"undo",
|
|
19
|
+
"redo",
|
|
20
|
+
"blockTypes"
|
|
21
|
+
];
|
|
22
|
+
const formatToStateKey = {
|
|
23
|
+
bold: "isBold",
|
|
24
|
+
clear: "isClear",
|
|
25
|
+
italic: "isItalic",
|
|
26
|
+
strikethrough: "isStrikethrough",
|
|
27
|
+
subscript: "isSubscript",
|
|
28
|
+
superscript: "isSuperscript",
|
|
29
|
+
underline: "isUnderline"
|
|
30
|
+
};
|
|
31
|
+
const ToolbarButton = ({ children, command, disabled, payload, title }) => {
|
|
32
|
+
const [editor] = useLexicalComposerContext();
|
|
33
|
+
const { toolbarState, updateToolbarState } = useToolbarState();
|
|
34
|
+
const isActive = command === FORMAT_TEXT_COMMAND ? toolbarState[formatToStateKey[payload]] : false;
|
|
35
|
+
const handleClick = () => {
|
|
36
|
+
editor.dispatchCommand(command, payload);
|
|
37
|
+
};
|
|
38
|
+
if (command === FORMAT_TEXT_COMMAND) {
|
|
39
|
+
const stateKey = formatToStateKey[payload];
|
|
40
|
+
return /* @__PURE__ */ jsx(Toggle, {
|
|
41
|
+
"aria-label": title,
|
|
42
|
+
disabled,
|
|
43
|
+
onPressedChange: (pressed) => {
|
|
44
|
+
handleClick();
|
|
45
|
+
updateToolbarState(stateKey, pressed);
|
|
46
|
+
if (payload === "clear") setTimeout(() => {
|
|
47
|
+
updateToolbarState(stateKey, false);
|
|
48
|
+
}, 300);
|
|
49
|
+
},
|
|
50
|
+
pressed: toolbarState[stateKey],
|
|
51
|
+
size: "sm",
|
|
52
|
+
title,
|
|
53
|
+
children
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
return /* @__PURE__ */ jsx(Button, {
|
|
57
|
+
className: isActive ? "bg-gray-200" : "",
|
|
58
|
+
disabled,
|
|
59
|
+
onClick: handleClick,
|
|
60
|
+
size: "icon",
|
|
61
|
+
title,
|
|
62
|
+
variant: "ghost",
|
|
63
|
+
children
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
function ToolbarPlugin({ enablePreview = true, isPreview, setIsPreview, toolbarOptions = defaultToolbarOptions }) {
|
|
67
|
+
const [editor] = useLexicalComposerContext();
|
|
68
|
+
const { toolbarState, updateToolbarState } = useToolbarState();
|
|
69
|
+
const [canUndo, setCanUndo] = useState(false);
|
|
70
|
+
const [canRedo, setCanRedo] = useState(false);
|
|
71
|
+
const $updateToolbar = React.useCallback(() => {
|
|
72
|
+
const selection = $getSelection();
|
|
73
|
+
if ($isRangeSelection(selection)) {
|
|
74
|
+
updateToolbarState("isBold", selection.hasFormat("bold"));
|
|
75
|
+
updateToolbarState("isItalic", selection.hasFormat("italic"));
|
|
76
|
+
updateToolbarState("isStrikethrough", selection.hasFormat("strikethrough"));
|
|
77
|
+
updateToolbarState("isSubscript", selection.hasFormat("subscript"));
|
|
78
|
+
updateToolbarState("isSuperscript", selection.hasFormat("superscript"));
|
|
79
|
+
updateToolbarState("isUnderline", selection.hasFormat("underline"));
|
|
80
|
+
const anchorNode = selection.anchor.getNode();
|
|
81
|
+
let element = anchorNode.getKey() === "root" ? anchorNode : $findMatchingParent(anchorNode, (e) => {
|
|
82
|
+
const parent = e.getParent();
|
|
83
|
+
return parent !== null && $isRootOrShadowRoot(parent);
|
|
84
|
+
});
|
|
85
|
+
if (element === null) element = anchorNode.getTopLevelElementOrThrow();
|
|
86
|
+
const type = $isHeadingNode(element) ? element.getTag() : $isListNode(element) ? element.getListType() : element.getType();
|
|
87
|
+
if (type in blockTypeToBlockName) updateToolbarState("blockType", type);
|
|
88
|
+
}
|
|
89
|
+
}, [updateToolbarState]);
|
|
90
|
+
React.useEffect(() => {
|
|
91
|
+
return mergeRegister(editor.registerCommand(SELECTION_CHANGE_COMMAND, () => {
|
|
92
|
+
$updateToolbar();
|
|
93
|
+
return false;
|
|
94
|
+
}, COMMAND_PRIORITY_CRITICAL), editor.registerUpdateListener(({ editorState }) => {
|
|
95
|
+
editorState.read(() => {
|
|
96
|
+
$updateToolbar();
|
|
97
|
+
});
|
|
98
|
+
}));
|
|
99
|
+
}, [editor, $updateToolbar]);
|
|
100
|
+
useEffect(() => {
|
|
101
|
+
if (!enablePreview) setIsPreview(false);
|
|
102
|
+
if (enablePreview) editor.setEditable(!isPreview);
|
|
103
|
+
}, [
|
|
104
|
+
editor,
|
|
105
|
+
enablePreview,
|
|
106
|
+
isPreview,
|
|
107
|
+
setIsPreview
|
|
108
|
+
]);
|
|
109
|
+
useEffect(() => {
|
|
110
|
+
return mergeRegister(editor.registerCommand(CAN_UNDO_COMMAND, (payload) => {
|
|
111
|
+
setCanUndo(payload);
|
|
112
|
+
return false;
|
|
113
|
+
}, COMMAND_PRIORITY_CRITICAL), editor.registerCommand(CAN_REDO_COMMAND, (payload) => {
|
|
114
|
+
setCanRedo(payload);
|
|
115
|
+
return false;
|
|
116
|
+
}, COMMAND_PRIORITY_CRITICAL));
|
|
117
|
+
}, [editor]);
|
|
118
|
+
return /* @__PURE__ */ jsx("div", {
|
|
119
|
+
className: "relative z-10 w-full border-b",
|
|
120
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
121
|
+
className: "flex justify-center space-x-2 p-1",
|
|
122
|
+
children: [
|
|
123
|
+
toolbarOptions.includes("clear") && /* @__PURE__ */ jsx(ToolbarButton, {
|
|
124
|
+
command: FORMAT_TEXT_COMMAND,
|
|
125
|
+
disabled: isPreview,
|
|
126
|
+
payload: "clear",
|
|
127
|
+
title: "Clear Formatting",
|
|
128
|
+
children: /* @__PURE__ */ jsx(ReloadIcon, { className: "text-muted-foreground" })
|
|
129
|
+
}),
|
|
130
|
+
toolbarOptions.includes("undo") && /* @__PURE__ */ jsx(Button, {
|
|
131
|
+
className: "h-8 px-2",
|
|
132
|
+
disabled: !canUndo || isPreview,
|
|
133
|
+
onClick: () => editor.dispatchCommand(UNDO_COMMAND, void 0),
|
|
134
|
+
title: "Undo (Ctrl+Z)",
|
|
135
|
+
variant: "ghost",
|
|
136
|
+
children: /* @__PURE__ */ jsx(ReloadIcon, { className: "-scale-x-100 transform" })
|
|
137
|
+
}),
|
|
138
|
+
toolbarOptions.includes("redo") && /* @__PURE__ */ jsx(Button, {
|
|
139
|
+
className: "h-8 px-2",
|
|
140
|
+
disabled: !canRedo || isPreview,
|
|
141
|
+
onClick: () => editor.dispatchCommand(REDO_COMMAND, void 0),
|
|
142
|
+
title: "Redo (Ctrl+Y)",
|
|
143
|
+
variant: "ghost",
|
|
144
|
+
children: /* @__PURE__ */ jsx(ReloadIcon, { className: "rotate-180" })
|
|
145
|
+
}),
|
|
146
|
+
enablePreview && /* @__PURE__ */ jsxs("div", {
|
|
147
|
+
className: "flex items-center gap-1 pr-2",
|
|
148
|
+
children: [/* @__PURE__ */ jsx(Button, {
|
|
149
|
+
onClick: () => setIsPreview(false),
|
|
150
|
+
size: "sm",
|
|
151
|
+
type: "button",
|
|
152
|
+
variant: !isPreview ? "secondary" : "ghost",
|
|
153
|
+
children: "Write"
|
|
154
|
+
}), /* @__PURE__ */ jsx(Button, {
|
|
155
|
+
onClick: () => setIsPreview(true),
|
|
156
|
+
size: "sm",
|
|
157
|
+
type: "button",
|
|
158
|
+
variant: isPreview ? "secondary" : "ghost",
|
|
159
|
+
children: "Preview"
|
|
160
|
+
})]
|
|
161
|
+
}),
|
|
162
|
+
toolbarOptions.includes("blockTypes") && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Separator, {
|
|
163
|
+
className: "my-1 h-auto",
|
|
164
|
+
orientation: "vertical"
|
|
165
|
+
}), /* @__PURE__ */ jsx(BlockTypeDropdown, { blockType: toolbarState.blockType })] }),
|
|
166
|
+
toolbarOptions.includes("bold") && /* @__PURE__ */ jsx(ToolbarButton, {
|
|
167
|
+
command: FORMAT_TEXT_COMMAND,
|
|
168
|
+
disabled: isPreview,
|
|
169
|
+
payload: "bold",
|
|
170
|
+
title: "Bold (Ctrl+B)",
|
|
171
|
+
children: /* @__PURE__ */ jsx(FontBoldIcon, {})
|
|
172
|
+
}),
|
|
173
|
+
toolbarOptions.includes("italic") && /* @__PURE__ */ jsx(ToolbarButton, {
|
|
174
|
+
command: FORMAT_TEXT_COMMAND,
|
|
175
|
+
disabled: isPreview,
|
|
176
|
+
payload: "italic",
|
|
177
|
+
title: "Italic (Ctrl+I)",
|
|
178
|
+
children: /* @__PURE__ */ jsx(FontItalicIcon, {})
|
|
179
|
+
}),
|
|
180
|
+
toolbarOptions.includes("underline") && /* @__PURE__ */ jsx(ToolbarButton, {
|
|
181
|
+
command: FORMAT_TEXT_COMMAND,
|
|
182
|
+
disabled: isPreview,
|
|
183
|
+
payload: "underline",
|
|
184
|
+
title: "Underline (Ctrl+U)",
|
|
185
|
+
children: /* @__PURE__ */ jsx(UnderlineIcon, {})
|
|
186
|
+
})
|
|
187
|
+
]
|
|
188
|
+
})
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
//#endregion
|
|
193
|
+
export { ToolbarPlugin, defaultToolbarOptions };
|
|
194
|
+
//# sourceMappingURL=ToolbarPlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolbarPlugin.js","names":[],"sources":["../../../../src/components/editor/ToolbarPlugin.tsx"],"sourcesContent":["import { $isListNode } from \"@lexical/list\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $isHeadingNode } from \"@lexical/rich-text\";\nimport { $findMatchingParent, mergeRegister } from \"@lexical/utils\";\nimport { Button, Separator, Toggle } from \"@lumeweb/portal-framework-ui-core\";\nimport {\n FontBoldIcon,\n FontItalicIcon,\n ReloadIcon,\n UnderlineIcon,\n} from \"@radix-ui/react-icons\";\nimport {\n $getSelection,\n $isRangeSelection,\n $isRootOrShadowRoot,\n CAN_REDO_COMMAND,\n CAN_UNDO_COMMAND,\n COMMAND_PRIORITY_CRITICAL,\n FORMAT_TEXT_COMMAND,\n LexicalCommand,\n REDO_COMMAND,\n SELECTION_CHANGE_COMMAND,\n UNDO_COMMAND,\n} from \"lexical\";\nimport React, { useEffect, useState } from \"react\";\n\nimport BlockTypeDropdown from \"./BlockTypeDropdown\";\nimport { ToolbarOption } from \"./Editor\";\nimport {\n blockTypeToBlockName,\n ToolbarState,\n ToolbarStateKey,\n ToolbarStateValue,\n useToolbarState,\n} from \"./ToolbarContext\";\n\nexport const defaultToolbarOptions: ToolbarOption[] = [\n \"bold\",\n \"italic\",\n \"underline\",\n \"undo\",\n \"redo\",\n \"blockTypes\",\n];\n\nconst formatToStateKey = {\n bold: \"isBold\",\n clear: \"isClear\",\n italic: \"isItalic\",\n strikethrough: \"isStrikethrough\",\n subscript: \"isSubscript\",\n superscript: \"isSuperscript\",\n underline: \"isUnderline\",\n} as const;\n\ntype FormatPayload = keyof typeof formatToStateKey;\n\ninterface ToolbarButtonProps {\n children: React.ReactNode;\n command: LexicalCommand<any>;\n disabled?: boolean;\n payload?: any;\n title?: string;\n}\n\ninterface ToolbarPluginProps {\n enablePreview?: boolean;\n isPreview: boolean;\n setIsPreview: React.Dispatch<React.SetStateAction<boolean>>;\n toolbarOptions?: (\n | \"blockTypes\"\n | \"bold\"\n | \"clear\"\n | \"italic\"\n | \"redo\"\n | \"strikethrough\"\n | \"subscript\"\n | \"superscript\"\n | \"underline\"\n | \"undo\"\n )[];\n}\n\nconst ToolbarButton = ({\n children,\n command,\n disabled,\n payload,\n title,\n}: ToolbarButtonProps) => {\n const [editor] = useLexicalComposerContext();\n const {\n toolbarState,\n updateToolbarState,\n }: {\n toolbarState: ToolbarState;\n updateToolbarState: <Key extends ToolbarStateKey>(\n key: Key,\n value: ToolbarStateValue<Key>,\n ) => void;\n } = useToolbarState();\n\n const isActive =\n command === FORMAT_TEXT_COMMAND\n ? toolbarState[formatToStateKey[payload as FormatPayload]]\n : false;\n\n const handleClick = () => {\n editor.dispatchCommand(command, payload);\n };\n\n if (command === FORMAT_TEXT_COMMAND) {\n const stateKey = formatToStateKey[payload as FormatPayload];\n\n return (\n <Toggle\n aria-label={title}\n disabled={disabled}\n onPressedChange={(pressed) => {\n handleClick();\n updateToolbarState(stateKey, pressed);\n if (payload === \"clear\") {\n setTimeout(() => {\n updateToolbarState(stateKey, false);\n }, 300);\n }\n }}\n pressed={toolbarState[stateKey]}\n size=\"sm\"\n title={title}>\n {children}\n </Toggle>\n );\n }\n\n return (\n <Button\n className={isActive ? \"bg-gray-200\" : \"\"}\n disabled={disabled}\n onClick={handleClick}\n size=\"icon\"\n title={title}\n variant=\"ghost\">\n {children}\n </Button>\n );\n};\n\nexport function ToolbarPlugin({\n enablePreview = true,\n isPreview,\n setIsPreview,\n toolbarOptions = defaultToolbarOptions,\n}: ToolbarPluginProps) {\n const [editor] = useLexicalComposerContext();\n const { toolbarState, updateToolbarState } = useToolbarState();\n\n const [canUndo, setCanUndo] = useState(false);\n const [canRedo, setCanRedo] = useState(false);\n\n const $updateToolbar = React.useCallback(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n updateToolbarState(\"isBold\", selection.hasFormat(\"bold\"));\n updateToolbarState(\"isItalic\", selection.hasFormat(\"italic\"));\n updateToolbarState(\n \"isStrikethrough\",\n selection.hasFormat(\"strikethrough\"),\n );\n updateToolbarState(\"isSubscript\", selection.hasFormat(\"subscript\"));\n updateToolbarState(\"isSuperscript\", selection.hasFormat(\"superscript\"));\n updateToolbarState(\"isUnderline\", selection.hasFormat(\"underline\"));\n\n const anchorNode = selection.anchor.getNode();\n\n let element =\n anchorNode.getKey() === \"root\"\n ? anchorNode\n : $findMatchingParent(anchorNode, (e) => {\n const parent = e.getParent();\n return parent !== null && $isRootOrShadowRoot(parent);\n });\n\n if (element === null) {\n element = anchorNode.getTopLevelElementOrThrow();\n }\n\n const type = $isHeadingNode(element)\n ? element.getTag()\n : $isListNode(element)\n ? element.getListType()\n : element.getType();\n\n if (type in blockTypeToBlockName) {\n updateToolbarState(\n \"blockType\",\n type as keyof typeof blockTypeToBlockName,\n );\n }\n }\n }, [updateToolbarState]);\n\n React.useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n $updateToolbar();\n return false;\n },\n COMMAND_PRIORITY_CRITICAL,\n ),\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n $updateToolbar();\n });\n }),\n );\n }, [editor, $updateToolbar]);\n\n useEffect(() => {\n if (!enablePreview) {\n setIsPreview(false);\n }\n\n if (enablePreview) {\n editor.setEditable(!isPreview);\n }\n }, [editor, enablePreview, isPreview, setIsPreview]);\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n CAN_UNDO_COMMAND,\n (payload) => {\n setCanUndo(payload);\n return false;\n },\n COMMAND_PRIORITY_CRITICAL,\n ),\n editor.registerCommand(\n CAN_REDO_COMMAND,\n (payload) => {\n setCanRedo(payload);\n return false;\n },\n COMMAND_PRIORITY_CRITICAL,\n ),\n );\n }, [editor]);\n\n return (\n <div className=\"relative z-10 w-full border-b\">\n <div className=\"flex justify-center space-x-2 p-1\">\n {toolbarOptions.includes(\"clear\") && (\n <ToolbarButton\n command={FORMAT_TEXT_COMMAND}\n disabled={isPreview}\n payload=\"clear\"\n title=\"Clear Formatting\">\n <ReloadIcon className=\"text-muted-foreground\" />\n </ToolbarButton>\n )}\n\n {toolbarOptions.includes(\"undo\") && (\n <Button\n className=\"h-8 px-2\"\n disabled={!canUndo || isPreview}\n onClick={() => editor.dispatchCommand(UNDO_COMMAND, undefined)}\n title=\"Undo (Ctrl+Z)\"\n variant=\"ghost\">\n <ReloadIcon className=\"-scale-x-100 transform\" />\n </Button>\n )}\n\n {toolbarOptions.includes(\"redo\") && (\n <Button\n className=\"h-8 px-2\"\n disabled={!canRedo || isPreview}\n onClick={() => editor.dispatchCommand(REDO_COMMAND, undefined)}\n title=\"Redo (Ctrl+Y)\"\n variant=\"ghost\">\n <ReloadIcon className=\"rotate-180\" />\n </Button>\n )}\n\n {enablePreview && (\n <div className=\"flex items-center gap-1 pr-2\">\n <Button\n onClick={() => setIsPreview(false)}\n size=\"sm\"\n type=\"button\"\n variant={!isPreview ? \"secondary\" : \"ghost\"}>\n Write\n </Button>\n <Button\n onClick={() => setIsPreview(true)}\n size=\"sm\"\n type=\"button\"\n variant={isPreview ? \"secondary\" : \"ghost\"}>\n Preview\n </Button>\n </div>\n )}\n\n {toolbarOptions.includes(\"blockTypes\") && (\n <>\n <Separator className=\"my-1 h-auto\" orientation=\"vertical\" />\n <BlockTypeDropdown blockType={toolbarState.blockType} />\n </>\n )}\n\n {toolbarOptions.includes(\"bold\") && (\n <ToolbarButton\n command={FORMAT_TEXT_COMMAND}\n disabled={isPreview}\n payload=\"bold\"\n title=\"Bold (Ctrl+B)\">\n <FontBoldIcon />\n </ToolbarButton>\n )}\n\n {toolbarOptions.includes(\"italic\") && (\n <ToolbarButton\n command={FORMAT_TEXT_COMMAND}\n disabled={isPreview}\n payload=\"italic\"\n title=\"Italic (Ctrl+I)\">\n <FontItalicIcon />\n </ToolbarButton>\n )}\n\n {toolbarOptions.includes(\"underline\") && (\n <ToolbarButton\n command={FORMAT_TEXT_COMMAND}\n disabled={isPreview}\n payload=\"underline\"\n title=\"Underline (Ctrl+U)\">\n <UnderlineIcon />\n </ToolbarButton>\n )}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { HeadingTagType } from "@lexical/rich-text";
|
|
2
|
+
import { LexicalEditor } from "lexical";
|
|
3
|
+
|
|
4
|
+
//#region src/components/editor/formatting.d.ts
|
|
5
|
+
declare function clearFormatting(editor: any, updateToolbarState: (key: string, value: any) => void): void;
|
|
6
|
+
declare function formatCheckList(editor: any, currentBlockType: string, updateToolbarState: (key: string, value: any) => void): void;
|
|
7
|
+
declare const formatCode: (editor: LexicalEditor, blockType: string, updateToolbarState: (key: string, value: any) => void) => void;
|
|
8
|
+
declare function formatParagraph(editor: LexicalEditor, updateToolbarState: (key: string, value: any) => void): void;
|
|
9
|
+
declare const formatHeading: (editor: LexicalEditor, blockType: string, headingSize: HeadingTagType, updateToolbarState: (key: string, value: any) => void) => void;
|
|
10
|
+
declare const formatQuote: (editor: LexicalEditor, blockType: string, updateToolbarState: (key: string, value: any) => void) => void;
|
|
11
|
+
declare const formatBulletList: (editor: LexicalEditor, blockType: string, updateToolbarState: (key: string, value: any) => void) => void;
|
|
12
|
+
declare const formatOrderedList: (editor: LexicalEditor, blockType: string, updateToolbarState: (key: string, value: any) => void) => void;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { clearFormatting, formatBulletList, formatCheckList, formatCode, formatHeading, formatOrderedList, formatParagraph, formatQuote };
|
|
15
|
+
//# sourceMappingURL=formatting.d.ts.map
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { $createCodeNode } from "@lexical/code";
|
|
2
|
+
import { $isListNode, INSERT_CHECK_LIST_COMMAND, INSERT_ORDERED_LIST_COMMAND, INSERT_UNORDERED_LIST_COMMAND, REMOVE_LIST_COMMAND } from "@lexical/list";
|
|
3
|
+
import { $createHeadingNode, $createQuoteNode, $isHeadingNode } from "@lexical/rich-text";
|
|
4
|
+
import { $setBlocksType } from "@lexical/selection";
|
|
5
|
+
import { $findMatchingParent } from "@lexical/utils";
|
|
6
|
+
import { $createParagraphNode, $getSelection, $isRangeSelection, $isRootOrShadowRoot } from "lexical";
|
|
7
|
+
|
|
8
|
+
//#region src/components/editor/formatting.ts
|
|
9
|
+
function clearFormatting(editor, updateToolbarState) {
|
|
10
|
+
editor.update(() => {
|
|
11
|
+
const selection = $getSelection();
|
|
12
|
+
if ($isRangeSelection(selection)) {
|
|
13
|
+
const anchorNode = selection.anchor.getNode();
|
|
14
|
+
const element = anchorNode.getKey() === "root" ? anchorNode : $findMatchingParent(anchorNode, (e) => {
|
|
15
|
+
const parent = e.getParent();
|
|
16
|
+
return parent !== null && $isRootOrShadowRoot(parent);
|
|
17
|
+
});
|
|
18
|
+
if (element === null) return;
|
|
19
|
+
if (($isHeadingNode(element) ? element.getTag() : $isListNode(element) ? element.getListType() : element.getType()) === "paragraph") {
|
|
20
|
+
const textContent = selection.getTextContent();
|
|
21
|
+
const paragraphNode = $createParagraphNode();
|
|
22
|
+
selection.insertNodes([paragraphNode]);
|
|
23
|
+
const newSelection = $getSelection();
|
|
24
|
+
if ($isRangeSelection(newSelection)) newSelection.insertRawText(textContent);
|
|
25
|
+
} else $setBlocksType(selection, () => $createParagraphNode());
|
|
26
|
+
updateToolbarState("isBold", false);
|
|
27
|
+
updateToolbarState("isItalic", false);
|
|
28
|
+
updateToolbarState("isUnderline", false);
|
|
29
|
+
updateToolbarState("isStrikethrough", false);
|
|
30
|
+
updateToolbarState("isSubscript", false);
|
|
31
|
+
updateToolbarState("isSuperscript", false);
|
|
32
|
+
updateToolbarState("isClear", true);
|
|
33
|
+
updateToolbarState("blockType", "paragraph");
|
|
34
|
+
updateToolbarState("isBold", false);
|
|
35
|
+
updateToolbarState("isItalic", false);
|
|
36
|
+
updateToolbarState("isUnderline", false);
|
|
37
|
+
updateToolbarState("isStrikethrough", false);
|
|
38
|
+
updateToolbarState("isSubscript", false);
|
|
39
|
+
updateToolbarState("isSuperscript", false);
|
|
40
|
+
updateToolbarState("isClear", true);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
function formatCheckList(editor, currentBlockType, updateToolbarState) {
|
|
45
|
+
if (currentBlockType !== "check") {
|
|
46
|
+
editor.dispatchCommand(INSERT_CHECK_LIST_COMMAND, void 0);
|
|
47
|
+
updateToolbarState("blockType", "check");
|
|
48
|
+
} else formatParagraph(editor, updateToolbarState);
|
|
49
|
+
}
|
|
50
|
+
const formatCode = (editor, blockType, updateToolbarState) => {
|
|
51
|
+
if (blockType !== "code") {
|
|
52
|
+
editor.update(() => {
|
|
53
|
+
let selection = $getSelection();
|
|
54
|
+
if (!selection) return;
|
|
55
|
+
if (!$isRangeSelection(selection) || selection.isCollapsed()) $setBlocksType(selection, () => $createCodeNode());
|
|
56
|
+
else {
|
|
57
|
+
const textContent = selection.getTextContent();
|
|
58
|
+
const codeNode = $createCodeNode();
|
|
59
|
+
selection.insertNodes([codeNode]);
|
|
60
|
+
selection = $getSelection();
|
|
61
|
+
if ($isRangeSelection(selection)) selection.insertRawText(textContent);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
updateToolbarState("blockType", "code");
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
function formatParagraph(editor, updateToolbarState) {
|
|
68
|
+
editor.update(() => {
|
|
69
|
+
$setBlocksType($getSelection(), () => $createParagraphNode());
|
|
70
|
+
updateToolbarState("blockType", "paragraph");
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
const formatHeading = (editor, blockType, headingSize, updateToolbarState) => {
|
|
74
|
+
if (blockType !== headingSize) editor.update(() => {
|
|
75
|
+
const selection = $getSelection();
|
|
76
|
+
if ($isRangeSelection(selection)) {
|
|
77
|
+
const anchorNode = selection.anchor.getNode();
|
|
78
|
+
let element = anchorNode.getKey() === "root" ? anchorNode : $findMatchingParent(anchorNode, (e) => {
|
|
79
|
+
const parent = e.getParent();
|
|
80
|
+
return parent !== null && $isRootOrShadowRoot(parent);
|
|
81
|
+
});
|
|
82
|
+
if (element === null) element = anchorNode.getTopLevelElementOrThrow();
|
|
83
|
+
if (($isHeadingNode(element) ? element.getTag() : $isListNode(element) ? element.getListType() : element.getType()) === headingSize) {
|
|
84
|
+
$setBlocksType(selection, () => $createParagraphNode());
|
|
85
|
+
updateToolbarState("blockType", "paragraph");
|
|
86
|
+
} else {
|
|
87
|
+
$setBlocksType(selection, () => $createHeadingNode(headingSize));
|
|
88
|
+
updateToolbarState("blockType", headingSize);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
const formatQuote = (editor, blockType, updateToolbarState) => {
|
|
94
|
+
if (blockType !== "quote") editor.update(() => {
|
|
95
|
+
$setBlocksType($getSelection(), () => $createQuoteNode());
|
|
96
|
+
updateToolbarState("blockType", "paragraph");
|
|
97
|
+
});
|
|
98
|
+
};
|
|
99
|
+
const formatBulletList = (editor, blockType, updateToolbarState) => {
|
|
100
|
+
if (blockType !== "bullet") {
|
|
101
|
+
editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, void 0);
|
|
102
|
+
updateToolbarState("blockType", "bullet");
|
|
103
|
+
} else formatParagraph(editor, updateToolbarState);
|
|
104
|
+
};
|
|
105
|
+
const formatOrderedList = (editor, blockType, updateToolbarState) => {
|
|
106
|
+
if (blockType !== "number") {
|
|
107
|
+
editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, void 0);
|
|
108
|
+
updateToolbarState("blockType", "number");
|
|
109
|
+
} else {
|
|
110
|
+
editor.dispatchCommand(REMOVE_LIST_COMMAND, void 0);
|
|
111
|
+
updateToolbarState("blockType", "paragraph");
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
//#endregion
|
|
116
|
+
export { clearFormatting, formatBulletList, formatCheckList, formatCode, formatHeading, formatOrderedList, formatParagraph, formatQuote };
|
|
117
|
+
//# sourceMappingURL=formatting.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatting.js","names":[],"sources":["../../../../src/components/editor/formatting.ts"],"sourcesContent":["import { $createCodeNode } from \"@lexical/code\";\nimport {\n $isListNode,\n INSERT_CHECK_LIST_COMMAND,\n INSERT_ORDERED_LIST_COMMAND,\n INSERT_UNORDERED_LIST_COMMAND,\n REMOVE_LIST_COMMAND,\n} from \"@lexical/list\";\nimport {\n $createHeadingNode,\n $createQuoteNode,\n $isHeadingNode,\n HeadingTagType,\n} from \"@lexical/rich-text\";\nimport { $setBlocksType } from \"@lexical/selection\";\nimport { $findMatchingParent } from \"@lexical/utils\";\nimport {\n $createParagraphNode,\n $getSelection,\n $isRangeSelection,\n $isRootOrShadowRoot,\n LexicalEditor,\n} from \"lexical\";\n\nimport { blockTypeToBlockName } from \"./ToolbarContext\";\n\nexport function clearFormatting(\n editor: any,\n updateToolbarState: (key: string, value: any) => void,\n) {\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const anchorNode = selection.anchor.getNode();\n const element =\n anchorNode.getKey() === \"root\"\n ? anchorNode\n : $findMatchingParent(anchorNode, (e) => {\n const parent = e.getParent();\n return parent !== null && $isRootOrShadowRoot(parent);\n });\n\n if (element === null) return;\n\n const currentBlockType = $isHeadingNode(element)\n ? element.getTag()\n : $isListNode(element)\n ? element.getListType()\n : element.getType();\n\n if (currentBlockType === \"paragraph\") {\n const textContent = selection.getTextContent();\n const paragraphNode = $createParagraphNode();\n selection.insertNodes([paragraphNode]);\n const newSelection = $getSelection();\n if ($isRangeSelection(newSelection)) {\n newSelection.insertRawText(textContent);\n }\n } else {\n $setBlocksType(selection, () => $createParagraphNode());\n }\n\n updateToolbarState(\"isBold\", false);\n updateToolbarState(\"isItalic\", false);\n updateToolbarState(\"isUnderline\", false);\n updateToolbarState(\"isStrikethrough\", false);\n updateToolbarState(\"isSubscript\", false);\n updateToolbarState(\"isSuperscript\", false);\n updateToolbarState(\"isClear\", true);\n\n updateToolbarState(\"blockType\", \"paragraph\");\n updateToolbarState(\"isBold\", false);\n updateToolbarState(\"isItalic\", false);\n updateToolbarState(\"isUnderline\", false);\n updateToolbarState(\"isStrikethrough\", false);\n updateToolbarState(\"isSubscript\", false);\n updateToolbarState(\"isSuperscript\", false);\n updateToolbarState(\"isClear\", true);\n }\n });\n}\n\nexport function formatCheckList(\n editor: any,\n currentBlockType: string,\n updateToolbarState: (key: string, value: any) => void,\n) {\n if (currentBlockType !== \"check\") {\n editor.dispatchCommand(INSERT_CHECK_LIST_COMMAND, undefined);\n updateToolbarState(\"blockType\", \"check\");\n } else {\n formatParagraph(editor, updateToolbarState);\n }\n}\n\nexport const formatCode = (\n editor: LexicalEditor,\n blockType: string,\n updateToolbarState: (key: string, value: any) => void,\n) => {\n if (blockType !== \"code\") {\n editor.update(() => {\n let selection = $getSelection();\n if (!selection) {\n return;\n }\n if (!$isRangeSelection(selection) || selection.isCollapsed()) {\n $setBlocksType(selection, () => $createCodeNode());\n } else {\n const textContent = selection.getTextContent();\n const codeNode = $createCodeNode();\n selection.insertNodes([codeNode]);\n selection = $getSelection();\n if ($isRangeSelection(selection)) {\n selection.insertRawText(textContent);\n }\n }\n });\n updateToolbarState(\"blockType\", \"code\");\n }\n};\n\nexport function formatParagraph(\n editor: LexicalEditor,\n updateToolbarState: (key: string, value: any) => void,\n) {\n editor.update(() => {\n const selection = $getSelection();\n $setBlocksType(selection, () => $createParagraphNode());\n updateToolbarState(\"blockType\", \"paragraph\");\n });\n}\n\nexport const formatHeading = (\n editor: LexicalEditor,\n blockType: string,\n headingSize: HeadingTagType,\n updateToolbarState: (key: string, value: any) => void,\n) => {\n if (blockType !== headingSize) {\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const anchorNode = selection.anchor.getNode();\n let element =\n anchorNode.getKey() === \"root\"\n ? anchorNode\n : $findMatchingParent(anchorNode, (e) => {\n const parent = e.getParent();\n return parent !== null && $isRootOrShadowRoot(parent);\n });\n\n if (element === null) {\n element = anchorNode.getTopLevelElementOrThrow();\n }\n\n const currentBlockType = $isHeadingNode(element)\n ? element.getTag()\n : $isListNode(element)\n ? element.getListType()\n : element.getType();\n\n if (currentBlockType === headingSize) {\n $setBlocksType(selection, () => $createParagraphNode());\n updateToolbarState(\"blockType\", \"paragraph\");\n } else {\n $setBlocksType(selection, () => $createHeadingNode(headingSize));\n updateToolbarState(\n \"blockType\",\n headingSize as keyof typeof blockTypeToBlockName,\n );\n }\n }\n });\n }\n};\n\nexport const formatQuote = (\n editor: LexicalEditor,\n blockType: string,\n updateToolbarState: (key: string, value: any) => void,\n) => {\n if (blockType !== \"quote\") {\n editor.update(() => {\n const selection = $getSelection();\n $setBlocksType(selection, () => $createQuoteNode());\n updateToolbarState(\"blockType\", \"paragraph\");\n });\n }\n};\n\nexport const formatBulletList = (\n editor: LexicalEditor,\n blockType: string,\n updateToolbarState: (key: string, value: any) => void,\n) => {\n if (blockType !== \"bullet\") {\n editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined);\n updateToolbarState(\"blockType\", \"bullet\");\n } else {\n formatParagraph(editor, updateToolbarState);\n }\n};\n\nexport const formatOrderedList = (\n editor: LexicalEditor,\n blockType: string,\n updateToolbarState: (key: string, value: any) => void,\n) => {\n if (blockType !== \"number\") {\n editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined);\n updateToolbarState(\"blockType\", \"number\");\n } else {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n updateToolbarState(\"blockType\", \"paragraph\");\n }\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
|
|
3
|
+
//#region src/components/form/FormGroup.d.ts
|
|
4
|
+
interface FormGroupProps {
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
className?: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
title?: string;
|
|
9
|
+
}
|
|
10
|
+
declare const FormGroup: ({
|
|
11
|
+
children,
|
|
12
|
+
className,
|
|
13
|
+
description,
|
|
14
|
+
title
|
|
15
|
+
}: FormGroupProps) => any;
|
|
16
|
+
//#endregion
|
|
17
|
+
export { FormGroup };
|
|
18
|
+
//# sourceMappingURL=FormGroup.d.ts.map
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { cn } from "@lumeweb/portal-framework-ui-core";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
|
|
5
|
+
//#region src/components/form/FormGroup.tsx
|
|
6
|
+
const FormGroup = ({ children, className, description, title }) => {
|
|
7
|
+
return /* @__PURE__ */ jsx("div", {
|
|
8
|
+
className: cn(className),
|
|
9
|
+
children: title || description ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
10
|
+
title && /* @__PURE__ */ jsx("h3", {
|
|
11
|
+
className: "text-lg font-medium",
|
|
12
|
+
children: title
|
|
13
|
+
}),
|
|
14
|
+
description && /* @__PURE__ */ jsx("p", {
|
|
15
|
+
className: "text-muted-foreground text-sm",
|
|
16
|
+
children: description
|
|
17
|
+
}),
|
|
18
|
+
/* @__PURE__ */ jsx("div", {
|
|
19
|
+
className: "space-y-4",
|
|
20
|
+
children
|
|
21
|
+
})
|
|
22
|
+
] }) : children
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
//#endregion
|
|
27
|
+
export { FormGroup };
|
|
28
|
+
//# sourceMappingURL=FormGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormGroup.js","names":[],"sources":["../../../../src/components/form/FormGroup.tsx"],"sourcesContent":["import { cn } from \"@lumeweb/portal-framework-ui-core\";\nimport React from \"react\";\n\ninterface FormGroupProps {\n children: React.ReactNode;\n className?: string;\n description?: string;\n title?: string;\n}\n\nexport const FormGroup = ({\n children,\n className,\n description,\n title,\n}: FormGroupProps) => {\n return (\n <div className={cn(className)}>\n {title || description ? (\n <>\n {title && <h3 className=\"text-lg font-medium\">{title}</h3>}\n {description && (\n <p className=\"text-muted-foreground text-sm\">{description}</p>\n )}\n <div className=\"space-y-4\">{children}</div>\n </>\n ) : (\n children\n )}\n </div>\n );\n};\n"],"mappings":";;;;;AAUA,MAAa,aAAa,EACxB,UACA,WACA,aACA,YACoB;AACpB,QACE,oBAAC,OAAD;EAAK,WAAW,GAAG,UAAU;YAC1B,SAAS,cACR;GACG,SAAS,oBAAC,MAAD;IAAI,WAAU;cAAuB;IAAW;GACzD,eACC,oBAAC,KAAD;IAAG,WAAU;cAAiC;IAAgB;GAEhE,oBAAC,OAAD;IAAK,WAAU;IAAa;IAAe;GAC1C,MAEH;EAEE"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { FormFieldConfig, FormGroupType } from "./types.js";
|
|
2
|
+
import { FieldValues } from "react-hook-form";
|
|
3
|
+
|
|
4
|
+
//#region src/components/form/FormRenderer.d.ts
|
|
5
|
+
declare function FormRenderer<TRequest extends FieldValues = FieldValues>({
|
|
6
|
+
fields,
|
|
7
|
+
groups
|
|
8
|
+
}: {
|
|
9
|
+
fields?: FormFieldConfig<TRequest>[];
|
|
10
|
+
groups?: FormGroupType[];
|
|
11
|
+
}): any;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { FormRenderer };
|
|
14
|
+
//# sourceMappingURL=FormRenderer.d.ts.map
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { adapters } from "./adapters.js";
|
|
2
|
+
import { useFormContext as useFormContext$1 } from "./context.js";
|
|
3
|
+
import { getFormComponent } from "./fields/registry.js";
|
|
4
|
+
import { FormFieldType } from "./fields/types.js";
|
|
5
|
+
import "./fields/index.js";
|
|
6
|
+
import { FormGroup } from "./FormGroup.js";
|
|
7
|
+
import { getAutocompleteValue } from "./autocomplete/rules.js";
|
|
8
|
+
import "./autocomplete/index.js";
|
|
9
|
+
import { useOptionalStepControlContext } from "./StepControlContext.js";
|
|
10
|
+
import { GroupOrder } from "./types.js";
|
|
11
|
+
import { FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Spinner, cn } from "@lumeweb/portal-framework-ui-core";
|
|
12
|
+
import React, { useEffect, useMemo, useState } from "react";
|
|
13
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
14
|
+
import { useFormContext } from "react-hook-form";
|
|
15
|
+
import { get } from "lodash/get.js";
|
|
16
|
+
|
|
17
|
+
//#region src/components/form/FormRenderer.tsx
|
|
18
|
+
function FormRenderer({ fields = [], groups = [] }) {
|
|
19
|
+
const { groupedFields, ungroupedFields } = React.useMemo(() => {
|
|
20
|
+
const grouped = {};
|
|
21
|
+
const ungrouped = [];
|
|
22
|
+
groups?.forEach((group) => {
|
|
23
|
+
grouped[group.id] = [];
|
|
24
|
+
});
|
|
25
|
+
fields.forEach((field) => {
|
|
26
|
+
if (field.group && grouped[field.group]) grouped[field.group].push(field);
|
|
27
|
+
else ungrouped.push(field);
|
|
28
|
+
});
|
|
29
|
+
return {
|
|
30
|
+
groupedFields: grouped,
|
|
31
|
+
ungroupedFields: ungrouped
|
|
32
|
+
};
|
|
33
|
+
}, [fields, groups]);
|
|
34
|
+
const { adapter: adapterName, config } = useFormContext$1();
|
|
35
|
+
if (!adapters[adapterName]) throw new Error(`Form adapter "${String(adapterName)}" is not registered`);
|
|
36
|
+
const groupOrder = config.groupOrder ?? "ungrouped-first";
|
|
37
|
+
const renderGroups = () => /* @__PURE__ */ jsx(Fragment, { children: groups?.map((group) => {
|
|
38
|
+
const groupFields = groupedFields[group.id];
|
|
39
|
+
if (!groupFields?.length) return null;
|
|
40
|
+
return /* @__PURE__ */ jsx(FormGroup, {
|
|
41
|
+
className: group.className,
|
|
42
|
+
description: group.description,
|
|
43
|
+
title: group.title,
|
|
44
|
+
children: groupFields.map((field) => /* @__PURE__ */ jsx(FieldRenderer, { field }, field.name))
|
|
45
|
+
}, group.id);
|
|
46
|
+
}) });
|
|
47
|
+
const renderUngrouped = () => /* @__PURE__ */ jsx(Fragment, { children: ungroupedFields.map((field) => /* @__PURE__ */ jsx(FieldRenderer, { field }, field.name)) });
|
|
48
|
+
return /* @__PURE__ */ jsx(Fragment, { children: groupOrder === "groups-first" ? /* @__PURE__ */ jsxs(Fragment, { children: [renderGroups(), renderUngrouped()] }) : /* @__PURE__ */ jsxs(Fragment, { children: [renderUngrouped(), renderGroups()] }) });
|
|
49
|
+
}
|
|
50
|
+
function FieldRenderer({ field }) {
|
|
51
|
+
const rhfMethods = useFormContext();
|
|
52
|
+
const { control, getValues, watch } = rhfMethods;
|
|
53
|
+
const [isVisible, setIsVisible] = useState(true);
|
|
54
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
55
|
+
const { config: formConfig } = useFormContext$1();
|
|
56
|
+
const dependencies = useMemo(() => field.dependencies || [], [field.dependencies]);
|
|
57
|
+
const autoCompleteValue = useMemo(() => getFieldAutocompleteValue(field, formConfig?.action), [field, formConfig?.action]);
|
|
58
|
+
useEffect(() => {
|
|
59
|
+
const subscription = watch((values, { name }) => {
|
|
60
|
+
if (!dependencies.length || name && dependencies.includes(name)) checkVisibility();
|
|
61
|
+
});
|
|
62
|
+
const checkVisibility = async () => {
|
|
63
|
+
if (!getValues) return;
|
|
64
|
+
const currentValues = getValues();
|
|
65
|
+
let shouldShow = true;
|
|
66
|
+
if (field.requires) {
|
|
67
|
+
for (const requiredFieldPath in field.requires) if (Object.prototype.hasOwnProperty.call(field.requires, requiredFieldPath)) {
|
|
68
|
+
const requirement = field.requires[requiredFieldPath];
|
|
69
|
+
const actualValue = get(currentValues, requiredFieldPath);
|
|
70
|
+
let requirementMet = false;
|
|
71
|
+
if (typeof requirement === "function") requirementMet = requirement(actualValue);
|
|
72
|
+
else requirementMet = actualValue === requirement;
|
|
73
|
+
if (!requirementMet) {
|
|
74
|
+
shouldShow = false;
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (shouldShow && field.show) try {
|
|
80
|
+
const showPromiseOrValue = field.show(currentValues);
|
|
81
|
+
if (showPromiseOrValue instanceof Promise) {
|
|
82
|
+
setIsLoading(true);
|
|
83
|
+
shouldShow = await showPromiseOrValue;
|
|
84
|
+
if (isLoading) setIsLoading(false);
|
|
85
|
+
} else {
|
|
86
|
+
shouldShow = showPromiseOrValue;
|
|
87
|
+
if (isLoading) setIsLoading(false);
|
|
88
|
+
}
|
|
89
|
+
} catch (error) {
|
|
90
|
+
console.error(`Error checking show status for field ${String(field.name)}:`, error);
|
|
91
|
+
shouldShow = false;
|
|
92
|
+
if (isLoading) setIsLoading(false);
|
|
93
|
+
}
|
|
94
|
+
else if (!field.show) {
|
|
95
|
+
if (isLoading) setIsLoading(false);
|
|
96
|
+
} else if (isLoading) setIsLoading(false);
|
|
97
|
+
setIsVisible((prev) => {
|
|
98
|
+
if (prev !== shouldShow) return shouldShow;
|
|
99
|
+
return prev;
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
checkVisibility();
|
|
103
|
+
return () => subscription.unsubscribe();
|
|
104
|
+
}, [
|
|
105
|
+
dependencies,
|
|
106
|
+
field,
|
|
107
|
+
getValues,
|
|
108
|
+
isLoading,
|
|
109
|
+
watch
|
|
110
|
+
]);
|
|
111
|
+
if (isLoading) return /* @__PURE__ */ jsxs(FormItem, {
|
|
112
|
+
className: cn(field.className, field.itemClassName),
|
|
113
|
+
children: [
|
|
114
|
+
field.label && /* @__PURE__ */ jsx(FormLabel, { children: field.label }),
|
|
115
|
+
/* @__PURE__ */ jsx(FormControl, { children: /* @__PURE__ */ jsx("div", {
|
|
116
|
+
className: "flex h-14 items-center justify-center",
|
|
117
|
+
children: /* @__PURE__ */ jsx(Spinner, { size: "small" })
|
|
118
|
+
}) }),
|
|
119
|
+
field.description && /* @__PURE__ */ jsx(FormDescription, { children: field.description })
|
|
120
|
+
]
|
|
121
|
+
});
|
|
122
|
+
if (!isVisible) return null;
|
|
123
|
+
const componentEntry = getFormComponent(field.type);
|
|
124
|
+
const RegisteredComponent = componentEntry?.component;
|
|
125
|
+
if (!componentEntry && field.type !== "custom") {
|
|
126
|
+
console.warn(`No component registered for form field type: ${field.type}`);
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
return /* @__PURE__ */ jsx(FormField, {
|
|
130
|
+
control,
|
|
131
|
+
name: field.name,
|
|
132
|
+
render: ({ field: formFieldRenderProps }) => /* @__PURE__ */ jsxs(FormItem, {
|
|
133
|
+
className: cn(field.className, field.itemClassName),
|
|
134
|
+
children: [
|
|
135
|
+
field.label && !componentEntry?.handlesLabel && /* @__PURE__ */ jsxs(FormLabel, {
|
|
136
|
+
className: field.labelClassName,
|
|
137
|
+
children: [field.label, field.required && isVisible && /* @__PURE__ */ jsx("span", {
|
|
138
|
+
className: "text-destructive",
|
|
139
|
+
children: "*"
|
|
140
|
+
})]
|
|
141
|
+
}),
|
|
142
|
+
/* @__PURE__ */ jsx(FormControl, { children: RegisteredComponent ? /* @__PURE__ */ jsx(RegisteredComponent, {
|
|
143
|
+
...formFieldRenderProps,
|
|
144
|
+
...field.inputProps,
|
|
145
|
+
autocomplete: autoCompleteValue,
|
|
146
|
+
inputClassName: field.inputClassName,
|
|
147
|
+
label: componentEntry?.handlesLabel ? field.label : void 0,
|
|
148
|
+
options: field.options,
|
|
149
|
+
placeholder: field.placeholder,
|
|
150
|
+
required: field.required,
|
|
151
|
+
type: field.type
|
|
152
|
+
}) : field.component ? /* @__PURE__ */ jsx(field.component, {
|
|
153
|
+
...formFieldRenderProps,
|
|
154
|
+
formMethods: rhfMethods,
|
|
155
|
+
stepEnvironment: useOptionalStepControlContext() ? {
|
|
156
|
+
current: useOptionalStepControlContext()?.currentStep || 0,
|
|
157
|
+
isFirst: useOptionalStepControlContext()?.isFirstStep || false,
|
|
158
|
+
isLast: useOptionalStepControlContext()?.isLastStep || false,
|
|
159
|
+
jumpTo: useOptionalStepControlContext()?.jumpTo,
|
|
160
|
+
onNext: useOptionalStepControlContext()?.handleNext,
|
|
161
|
+
onPrevious: useOptionalStepControlContext()?.handlePrevious,
|
|
162
|
+
onRetry: useOptionalStepControlContext()?.handleRetry,
|
|
163
|
+
retryCount: useOptionalStepControlContext()?.retryCount || 0,
|
|
164
|
+
total: useOptionalStepControlContext()?.totalSteps || 0
|
|
165
|
+
} : void 0
|
|
166
|
+
}) : null }),
|
|
167
|
+
field.description && /* @__PURE__ */ jsx(FormDescription, { children: field.description }),
|
|
168
|
+
/* @__PURE__ */ jsx(FormMessage, {})
|
|
169
|
+
]
|
|
170
|
+
})
|
|
171
|
+
}, field.name);
|
|
172
|
+
}
|
|
173
|
+
function getFieldAutocompleteValue(field, formPurpose) {
|
|
174
|
+
return field.autocomplete ?? getAutocompleteValue(field, { formPurpose }) ?? field.inputProps?.autocomplete;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
//#endregion
|
|
178
|
+
export { FormRenderer };
|
|
179
|
+
//# sourceMappingURL=FormRenderer.js.map
|