@simplysm/angular 14.0.7 → 14.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +234 -246
- package/dist/core/commons.d.ts.map +1 -1
- package/dist/core/directives/sd-events.directive.d.ts.map +1 -1
- package/dist/core/directives/sd-invalid.directive.d.ts.map +1 -1
- package/dist/core/directives/sd-item-of-template.directive.d.ts.map +1 -1
- package/dist/core/directives/sd-ripple.directive.d.ts.map +1 -1
- package/dist/core/directives/sd-router-link.directive.d.ts.map +1 -1
- package/dist/core/directives/sd-show-effect.directive.d.ts.map +1 -1
- package/dist/core/directives/sd-typed-template.directive.d.ts.map +1 -1
- package/dist/core/pipes/format.pipe.d.ts.map +1 -1
- package/dist/core/plugins/commands/findTopOpenModalEl.d.ts.map +1 -1
- package/dist/core/plugins/commands/sd-insert-command-event.plugin.d.ts.map +1 -1
- package/dist/core/plugins/commands/sd-refresh-command-event.plugin.d.ts.map +1 -1
- package/dist/core/plugins/commands/sd-save-command-event.plugin.d.ts.map +1 -1
- package/dist/core/plugins/events/sd-intersection-event.plugin.d.ts.map +1 -1
- package/dist/core/plugins/events/sd-option-event.plugin.d.ts.map +1 -1
- package/dist/core/plugins/events/sd-resize-event.plugin.d.ts.map +1 -1
- package/dist/core/plugins/sd-global-error-handler.plugin.d.ts.map +1 -1
- package/dist/core/provideSdAngular.d.ts.map +1 -1
- package/dist/core/providers/sd-angular-config.provider.d.ts.map +1 -1
- package/dist/core/providers/sd-app-structure.provider.d.ts.map +1 -1
- package/dist/core/providers/sd-file-dialog.provider.d.ts.map +1 -1
- package/dist/core/providers/sd-local-storage.provider.d.ts.map +1 -1
- package/dist/core/providers/sd-navigate-window.provider.d.ts.map +1 -1
- package/dist/core/providers/sd-print.provider.d.ts +7 -2
- package/dist/core/providers/sd-print.provider.d.ts.map +1 -1
- package/dist/core/providers/sd-service-client-factory.provider.d.ts.map +1 -1
- package/dist/core/providers/sd-shared-data.provider.d.ts +3 -0
- package/dist/core/providers/sd-shared-data.provider.d.ts.map +1 -1
- package/dist/core/providers/sd-system-config.provider.d.ts.map +1 -1
- package/dist/core/providers/sd-system-log.provider.d.ts.map +1 -1
- package/dist/core/providers/sd-theme-provider.d.ts.map +1 -1
- package/dist/core/utils/TDirectiveInputSignals.d.ts +4 -0
- package/dist/core/utils/TDirectiveInputSignals.d.ts.map +1 -1
- package/dist/core/utils/injectParent.d.ts +7 -0
- package/dist/core/utils/injectParent.d.ts.map +1 -0
- package/dist/core/utils/injectParent.js +26 -0
- package/dist/core/utils/setSafeStyle.d.ts.map +1 -1
- package/dist/core/utils/setups/setupBgTheme.d.ts.map +1 -1
- package/dist/core/utils/setups/setupCanDeactivate.d.ts.map +1 -1
- package/dist/core/utils/setups/setupCloserWhenSingleSelectionChange.d.ts +9 -0
- package/dist/core/utils/setups/setupCloserWhenSingleSelectionChange.d.ts.map +1 -0
- package/dist/core/utils/setups/setupCloserWhenSingleSelectionChange.js +20 -0
- package/dist/core/utils/setups/setupCumulateSelectedKeys.d.ts +9 -0
- package/dist/core/utils/setups/setupCumulateSelectedKeys.d.ts.map +1 -0
- package/dist/core/utils/setups/setupCumulateSelectedKeys.js +27 -0
- package/dist/core/utils/setups/setupInvalid.d.ts.map +1 -1
- package/dist/core/utils/setups/setupModelHook.d.ts.map +1 -1
- package/dist/core/utils/setups/setupRevealOnShow.d.ts.map +1 -1
- package/dist/core/utils/setups/setupRipple.d.ts.map +1 -1
- package/dist/core/utils/useCurrentPageCodeSignal.d.ts.map +1 -1
- package/dist/core/utils/useExpandingManager.d.ts.map +1 -1
- package/dist/core/utils/useFullPageCodeSignal.d.ts.map +1 -1
- package/dist/core/utils/useSdSystemConfigResource.d.ts.map +1 -1
- package/dist/core/utils/useSelectionManager.d.ts.map +1 -1
- package/dist/core/utils/useSortingManager.d.ts.map +1 -1
- package/dist/core/utils/useViewTitleSignal.d.ts.map +1 -1
- package/dist/core/utils/useViewTypeSignal.d.ts.map +1 -1
- package/dist/features/address/sd-address-search.modal.d.ts +19 -0
- package/dist/features/address/sd-address-search.modal.d.ts.map +1 -0
- package/dist/features/address/sd-address-search.modal.js +88 -0
- package/dist/features/base/sd-base-container.control.d.ts +26 -0
- package/dist/features/base/sd-base-container.control.d.ts.map +1 -0
- package/dist/features/base/sd-base-container.control.js +183 -0
- package/dist/features/data-view/sd-data-detail.control.d.ts +70 -0
- package/dist/features/data-view/sd-data-detail.control.d.ts.map +1 -0
- package/dist/features/data-view/sd-data-detail.control.js +606 -0
- package/dist/features/data-view/sd-data-select-button.control.d.ts +35 -0
- package/dist/features/data-view/sd-data-select-button.control.d.ts.map +1 -0
- package/dist/features/data-view/sd-data-select-button.control.js +219 -0
- package/dist/features/data-view/sd-data-sheet-column.directive.d.ts +8 -0
- package/dist/features/data-view/sd-data-sheet-column.directive.d.ts.map +1 -0
- package/dist/features/data-view/sd-data-sheet-column.directive.js +15 -0
- package/dist/features/data-view/sd-data-sheet.control.d.ts +131 -0
- package/dist/features/data-view/sd-data-sheet.control.d.ts.map +1 -0
- package/dist/features/data-view/sd-data-sheet.control.js +1152 -0
- package/dist/features/shared-data/sd-shared-data-select-button.control.d.ts +16 -0
- package/dist/features/shared-data/sd-shared-data-select-button.control.d.ts.map +1 -0
- package/dist/features/shared-data/sd-shared-data-select-button.control.js +66 -0
- package/dist/features/shared-data/sd-shared-data-select-list.control.d.ts +33 -0
- package/dist/features/shared-data/sd-shared-data-select-list.control.d.ts.map +1 -0
- package/dist/features/shared-data/sd-shared-data-select-list.control.js +346 -0
- package/dist/features/shared-data/sd-shared-data-select.control.d.ts +50 -0
- package/dist/features/shared-data/sd-shared-data-select.control.d.ts.map +1 -0
- package/dist/features/shared-data/sd-shared-data-select.control.js +425 -0
- package/dist/index.d.ts +13 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -0
- package/dist/ui/data/list/sd-list-item.control.d.ts +3 -1
- package/dist/ui/data/list/sd-list-item.control.d.ts.map +1 -1
- package/dist/ui/data/list/sd-list-item.control.js +9 -5
- package/dist/ui/data/list/sd-list.control.d.ts.map +1 -1
- package/dist/ui/data/list/sd-list.control.js +1 -1
- package/dist/ui/data/sheet/sd-sheet-column.directive.d.ts +8 -1
- package/dist/ui/data/sheet/sd-sheet-column.directive.d.ts.map +1 -1
- package/dist/ui/data/sheet/sd-sheet-config.modal.d.ts.map +1 -1
- package/dist/ui/data/sheet/sd-sheet-config.modal.js +1 -1
- package/dist/ui/data/sheet/sd-sheet.control.d.ts +6 -5
- package/dist/ui/data/sheet/sd-sheet.control.d.ts.map +1 -1
- package/dist/ui/data/sheet/sd-sheet.control.js +19 -17
- package/dist/ui/data/sheet/types.d.ts.map +1 -1
- package/dist/ui/data/sheet/useSheetCellAgent.d.ts.map +1 -1
- package/dist/ui/data/sheet/useSheetCellAgent.js +1 -2
- package/dist/ui/data/sheet/useSheetColumnFixing.d.ts.map +1 -1
- package/dist/ui/data/sheet/useSheetDomAccessor.d.ts.map +1 -1
- package/dist/ui/data/sheet/useSheetLayoutEngine.d.ts.map +1 -1
- package/dist/ui/data/sheet/useSheetLayoutEngine.js +1 -0
- package/dist/ui/form/button/sd-additional-button.control.d.ts.map +1 -1
- package/dist/ui/form/button/sd-additional-button.control.js +1 -1
- package/dist/ui/form/button/sd-anchor.control.d.ts.map +1 -1
- package/dist/ui/form/button/sd-anchor.control.js +1 -1
- package/dist/ui/form/button/sd-button.control.d.ts.map +1 -1
- package/dist/ui/form/button/sd-button.control.js +1 -1
- package/dist/ui/form/button/sd-modal-select-button.control.d.ts +16 -18
- package/dist/ui/form/button/sd-modal-select-button.control.d.ts.map +1 -1
- package/dist/ui/form/button/sd-modal-select-button.control.js +22 -39
- package/dist/ui/form/checkbox/sd-checkbox-group-item.control.d.ts.map +1 -1
- package/dist/ui/form/checkbox/sd-checkbox-group-item.control.js +1 -1
- package/dist/ui/form/checkbox/sd-checkbox-group.control.d.ts.map +1 -1
- package/dist/ui/form/checkbox/sd-checkbox-group.control.js +1 -1
- package/dist/ui/form/checkbox/sd-checkbox.control.d.ts.map +1 -1
- package/dist/ui/form/checkbox/sd-checkbox.control.js +1 -1
- package/dist/ui/form/checkbox/sd-switch.control.d.ts.map +1 -1
- package/dist/ui/form/checkbox/sd-switch.control.js +1 -1
- package/dist/ui/form/choice/sd-state-preset.control.d.ts.map +1 -1
- package/dist/ui/form/choice/sd-state-preset.control.js +1 -1
- package/dist/ui/form/editor/sd-tiptap-editor.control.d.ts +18 -1
- package/dist/ui/form/editor/sd-tiptap-editor.control.d.ts.map +1 -1
- package/dist/ui/form/editor/sd-tiptap-editor.control.js +18 -2
- package/dist/ui/form/input/sd-date-range.picker.d.ts.map +1 -1
- package/dist/ui/form/input/sd-date-range.picker.js +1 -1
- package/dist/ui/form/input/sd-numpad.control.d.ts.map +1 -1
- package/dist/ui/form/input/sd-numpad.control.js +1 -1
- package/dist/ui/form/input/sd-range.control.d.ts.map +1 -1
- package/dist/ui/form/input/sd-range.control.js +1 -1
- package/dist/ui/form/input/sd-textarea.control.d.ts.map +1 -1
- package/dist/ui/form/input/sd-textarea.control.js +1 -1
- package/dist/ui/form/input/sd-textfield-type-handlers.d.ts.map +1 -1
- package/dist/ui/form/input/sd-textfield.control.d.ts.map +1 -1
- package/dist/ui/form/input/sd-textfield.control.js +1 -1
- package/dist/ui/form/sd-form.control.d.ts.map +1 -1
- package/dist/ui/form/sd-form.control.js +1 -1
- package/dist/ui/form/select/sd-select-button.control.d.ts.map +1 -1
- package/dist/ui/form/select/sd-select-button.control.js +1 -1
- package/dist/ui/form/select/sd-select-item.control.d.ts +1 -1
- package/dist/ui/form/select/sd-select-item.control.d.ts.map +1 -1
- package/dist/ui/form/select/sd-select-item.control.js +1 -1
- package/dist/ui/form/select/sd-select.control.d.ts +9 -6
- package/dist/ui/form/select/sd-select.control.d.ts.map +1 -1
- package/dist/ui/form/select/sd-select.control.js +1 -1
- package/dist/ui/layout/dock/sd-dock-container.control.d.ts.map +1 -1
- package/dist/ui/layout/dock/sd-dock-container.control.js +1 -1
- package/dist/ui/layout/dock/sd-dock.control.d.ts +2 -0
- package/dist/ui/layout/dock/sd-dock.control.d.ts.map +1 -1
- package/dist/ui/layout/dock/sd-dock.control.js +13 -4
- package/dist/ui/layout/kanban/sd-kanban-board.control.d.ts.map +1 -1
- package/dist/ui/layout/kanban/sd-kanban-board.control.js +1 -1
- package/dist/ui/layout/kanban/sd-kanban-lane.control.d.ts.map +1 -1
- package/dist/ui/layout/kanban/sd-kanban-lane.control.js +8 -2
- package/dist/ui/layout/kanban/sd-kanban.control.d.ts.map +1 -1
- package/dist/ui/layout/kanban/sd-kanban.control.js +1 -1
- package/dist/ui/layout/sd-card.directive.d.ts.map +1 -1
- package/dist/ui/layout/sd-gap.control.d.ts +2 -2
- package/dist/ui/layout/sd-gap.control.d.ts.map +1 -1
- package/dist/ui/layout/sd-gap.control.js +1 -1
- package/dist/ui/layout/sd-pane.directive.d.ts.map +1 -1
- package/dist/ui/layout/view/sd-view-item.control.d.ts.map +1 -1
- package/dist/ui/layout/view/sd-view-item.control.js +1 -1
- package/dist/ui/layout/view/sd-view.control.d.ts.map +1 -1
- package/dist/ui/layout/view/sd-view.control.js +1 -1
- package/dist/ui/navigation/collapse/sd-collapse-icon.control.d.ts.map +1 -1
- package/dist/ui/navigation/collapse/sd-collapse-icon.control.js +1 -1
- package/dist/ui/navigation/collapse/sd-collapse.control.d.ts.map +1 -1
- package/dist/ui/navigation/collapse/sd-collapse.control.js +1 -1
- package/dist/ui/navigation/menu-utils.d.ts.map +1 -1
- package/dist/ui/navigation/pagination/sd-pagination.control.d.ts.map +1 -1
- package/dist/ui/navigation/pagination/sd-pagination.control.js +8 -4
- package/dist/ui/navigation/sidebar/sd-sidebar-container.control.d.ts.map +1 -1
- package/dist/ui/navigation/sidebar/sd-sidebar-container.control.js +2 -2
- package/dist/ui/navigation/sidebar/sd-sidebar-menu.control.d.ts.map +1 -1
- package/dist/ui/navigation/sidebar/sd-sidebar-menu.control.js +1 -1
- package/dist/ui/navigation/sidebar/sd-sidebar-user.control.d.ts.map +1 -1
- package/dist/ui/navigation/sidebar/sd-sidebar-user.control.js +1 -1
- package/dist/ui/navigation/sidebar/sd-sidebar.control.d.ts.map +1 -1
- package/dist/ui/navigation/sidebar/sd-sidebar.control.js +1 -1
- package/dist/ui/navigation/tab/sd-tab-item.control.d.ts.map +1 -1
- package/dist/ui/navigation/tab/sd-tab-item.control.js +1 -1
- package/dist/ui/navigation/tab/sd-tab.control.d.ts.map +1 -1
- package/dist/ui/navigation/tab/sd-tab.control.js +1 -1
- package/dist/ui/navigation/tab/sd-tabview-item.control.d.ts.map +1 -1
- package/dist/ui/navigation/tab/sd-tabview-item.control.js +1 -1
- package/dist/ui/navigation/tab/sd-tabview.control.d.ts.map +1 -1
- package/dist/ui/navigation/tab/sd-tabview.control.js +1 -1
- package/dist/ui/navigation/topbar/sd-topbar-container.control.d.ts.map +1 -1
- package/dist/ui/navigation/topbar/sd-topbar-container.control.js +1 -1
- package/dist/ui/navigation/topbar/sd-topbar-menu.control.d.ts.map +1 -1
- package/dist/ui/navigation/topbar/sd-topbar-menu.control.js +1 -1
- package/dist/ui/navigation/topbar/sd-topbar-user.control.d.ts.map +1 -1
- package/dist/ui/navigation/topbar/sd-topbar-user.control.js +1 -1
- package/dist/ui/navigation/topbar/sd-topbar.control.d.ts.map +1 -1
- package/dist/ui/navigation/topbar/sd-topbar.control.js +1 -1
- package/dist/ui/overlay/busy/sd-busy-container.control.d.ts.map +1 -1
- package/dist/ui/overlay/busy/sd-busy-container.control.js +1 -1
- package/dist/ui/overlay/busy/sd-busy.provider.d.ts.map +1 -1
- package/dist/ui/overlay/dropdown/sd-dropdown-popup.control.d.ts.map +1 -1
- package/dist/ui/overlay/dropdown/sd-dropdown-popup.control.js +2 -2
- package/dist/ui/overlay/dropdown/sd-dropdown.control.d.ts.map +1 -1
- package/dist/ui/overlay/dropdown/sd-dropdown.control.js +1 -1
- package/dist/ui/overlay/modal/sd-confirm-modal.control.d.ts.map +1 -1
- package/dist/ui/overlay/modal/sd-confirm-modal.control.js +1 -1
- package/dist/ui/overlay/modal/sd-modal.control.d.ts +1 -0
- package/dist/ui/overlay/modal/sd-modal.control.d.ts.map +1 -1
- package/dist/ui/overlay/modal/sd-modal.control.js +10 -2
- package/dist/ui/overlay/modal/sd-modal.provider.d.ts +9 -3
- package/dist/ui/overlay/modal/sd-modal.provider.d.ts.map +1 -1
- package/dist/ui/overlay/modal/sd-prompt-modal.control.d.ts.map +1 -1
- package/dist/ui/overlay/modal/sd-prompt-modal.control.js +1 -1
- package/dist/ui/overlay/toast/sd-toast-container.control.d.ts.map +1 -1
- package/dist/ui/overlay/toast/sd-toast-container.control.js +1 -1
- package/dist/ui/overlay/toast/sd-toast.control.d.ts.map +1 -1
- package/dist/ui/overlay/toast/sd-toast.control.js +1 -1
- package/dist/ui/overlay/toast/sd-toast.provider.d.ts.map +1 -1
- package/dist/ui/overlay/toast/sd-toast.provider.js +7 -3
- package/dist/ui/visual/sd-barcode.control.d.ts.map +1 -1
- package/dist/ui/visual/sd-barcode.control.js +1 -1
- package/dist/ui/visual/sd-calendar.control.d.ts.map +1 -1
- package/dist/ui/visual/sd-calendar.control.js +1 -1
- package/dist/ui/visual/sd-echarts.control.d.ts.map +1 -1
- package/dist/ui/visual/sd-echarts.control.js +1 -1
- package/dist/ui/visual/sd-label.control.d.ts.map +1 -1
- package/dist/ui/visual/sd-label.control.js +1 -1
- package/dist/ui/visual/sd-note.control.d.ts.map +1 -1
- package/dist/ui/visual/sd-note.control.js +1 -1
- package/dist/ui/visual/sd-progress.control.d.ts +1 -0
- package/dist/ui/visual/sd-progress.control.d.ts.map +1 -1
- package/dist/ui/visual/sd-progress.control.js +5 -4
- package/docs/core.md +877 -0
- package/docs/features.md +377 -0
- package/docs/styling.md +309 -0
- package/docs/ui-data.md +233 -0
- package/docs/ui-form.md +421 -0
- package/docs/ui-layout.md +216 -0
- package/docs/ui-navigation.md +279 -0
- package/docs/ui-overlay.md +330 -0
- package/docs/ui-visual.md +131 -0
- package/package.json +5 -5
- package/src/core/providers/sd-print.provider.ts +10 -2
- package/src/core/providers/sd-shared-data.provider.ts +3 -0
- package/src/core/utils/TDirectiveInputSignals.ts +5 -0
- package/src/core/utils/injectParent.ts +41 -0
- package/src/core/utils/setups/setupCloserWhenSingleSelectionChange.ts +29 -0
- package/src/core/utils/setups/setupCumulateSelectedKeys.ts +38 -0
- package/src/features/address/sd-address-search.modal.ts +119 -0
- package/src/features/base/sd-base-container.control.ts +113 -0
- package/src/features/data-view/sd-data-detail.control.ts +394 -0
- package/src/features/data-view/sd-data-select-button.control.ts +210 -0
- package/src/features/data-view/sd-data-sheet-column.directive.ts +10 -0
- package/src/features/data-view/sd-data-sheet.control.ts +850 -0
- package/src/features/shared-data/sd-shared-data-select-button.control.ts +64 -0
- package/src/features/shared-data/sd-shared-data-select-list.control.ts +245 -0
- package/src/features/shared-data/sd-shared-data-select.control.ts +364 -0
- package/src/index.ts +39 -1
- package/src/scss.d.ts +5 -0
- package/src/ui/data/list/sd-list-item.control.ts +4 -2
- package/src/ui/data/sheet/sd-sheet-column.directive.ts +9 -1
- package/src/ui/data/sheet/sd-sheet.control.ts +23 -19
- package/src/ui/data/sheet/useSheetCellAgent.ts +1 -2
- package/src/ui/data/sheet/useSheetLayoutEngine.ts +1 -0
- package/src/ui/form/button/sd-modal-select-button.control.ts +41 -59
- package/src/ui/form/editor/sd-tiptap-editor.control.ts +35 -1
- package/src/ui/form/select/sd-select-item.control.ts +1 -1
- package/src/ui/form/select/sd-select.control.ts +7 -4
- package/src/ui/layout/dock/sd-dock.control.ts +15 -2
- package/src/ui/layout/kanban/sd-kanban-lane.control.ts +6 -3
- package/src/ui/navigation/pagination/sd-pagination.control.ts +5 -3
- package/src/ui/navigation/sidebar/sd-sidebar-container.control.ts +1 -1
- package/src/ui/overlay/dropdown/sd-dropdown-popup.control.ts +1 -1
- package/src/ui/overlay/modal/sd-modal.control.ts +9 -0
- package/src/ui/overlay/modal/sd-modal.provider.ts +15 -3
- package/src/ui/overlay/toast/sd-toast.provider.ts +9 -3
- package/src/ui/visual/sd-progress.control.ts +4 -1
- package/docs/commons-and-configuration.md +0 -34
- package/docs/data-display-components.md +0 -146
- package/docs/directives.md +0 -158
- package/docs/event-plugins.md +0 -109
- package/docs/form-components.md +0 -362
- package/docs/hooks-and-utilities.md +0 -175
- package/docs/layout-components.md +0 -140
- package/docs/navigation-components.md +0 -200
- package/docs/overlay-components.md +0 -193
- package/docs/pipes.md +0 -25
- package/docs/providers.md +0 -448
- package/docs/setup-functions.md +0 -66
- package/docs/visual-components.md +0 -89
package/src/index.ts
CHANGED
|
@@ -57,11 +57,45 @@ export { useFullPageCodeSignal } from "./core/utils/useFullPageCodeSignal";
|
|
|
57
57
|
export { useViewTitleSignal } from "./core/utils/useViewTitleSignal";
|
|
58
58
|
export { useViewTypeSignal, type TSdViewType } from "./core/utils/useViewTypeSignal";
|
|
59
59
|
export { setupCanDeactivate } from "./core/utils/setups/setupCanDeactivate";
|
|
60
|
+
export { setupCumulateSelectedKeys } from "./core/utils/setups/setupCumulateSelectedKeys";
|
|
61
|
+
export { setupCloserWhenSingleSelectionChange } from "./core/utils/setups/setupCloserWhenSingleSelectionChange";
|
|
60
62
|
export {
|
|
61
63
|
useExpandingManager,
|
|
62
64
|
type IExpandItemDef,
|
|
63
65
|
} from "./core/utils/useExpandingManager";
|
|
64
66
|
export { useSelectionManager } from "./core/utils/useSelectionManager";
|
|
67
|
+
export { injectParent } from "./core/utils/injectParent";
|
|
68
|
+
|
|
69
|
+
// features/address
|
|
70
|
+
export {
|
|
71
|
+
SdAddressSearchModal,
|
|
72
|
+
type IAddress,
|
|
73
|
+
} from "./features/address/sd-address-search.modal";
|
|
74
|
+
|
|
75
|
+
// features
|
|
76
|
+
export { SdBaseContainerControl } from "./features/base/sd-base-container.control";
|
|
77
|
+
export {
|
|
78
|
+
SdDataSheetControl,
|
|
79
|
+
AbsSdDataSheet,
|
|
80
|
+
type ISdDataSheetItemPropInfo,
|
|
81
|
+
type ISdDataSheetItemInfo,
|
|
82
|
+
type ISdDataSheetSearchResult,
|
|
83
|
+
} from "./features/data-view/sd-data-sheet.control";
|
|
84
|
+
export { SdDataSheetColumnDirective } from "./features/data-view/sd-data-sheet-column.directive";
|
|
85
|
+
export {
|
|
86
|
+
SdDataDetailControl,
|
|
87
|
+
AbsSdDataDetail,
|
|
88
|
+
type ISdDataDetailDataInfo,
|
|
89
|
+
} from "./features/data-view/sd-data-detail.control";
|
|
90
|
+
export {
|
|
91
|
+
SdDataSelectButtonControl,
|
|
92
|
+
AbsSdDataSelectButton,
|
|
93
|
+
} from "./features/data-view/sd-data-select-button.control";
|
|
94
|
+
|
|
95
|
+
// features/shared-data
|
|
96
|
+
export { SdSharedDataSelectControl } from "./features/shared-data/sd-shared-data-select.control";
|
|
97
|
+
export { SdSharedDataSelectButtonControl } from "./features/shared-data/sd-shared-data-select-button.control";
|
|
98
|
+
export { SdSharedDataSelectListControl } from "./features/shared-data/sd-shared-data-select-list.control";
|
|
65
99
|
|
|
66
100
|
// ui/layout
|
|
67
101
|
export { SdDockContainerControl } from "./ui/layout/dock/sd-dock-container.control";
|
|
@@ -225,4 +259,8 @@ export {
|
|
|
225
259
|
|
|
226
260
|
// core/utils
|
|
227
261
|
export { useSortingManager, type ISortingDef } from "./core/utils/useSortingManager";
|
|
228
|
-
export type {
|
|
262
|
+
export type {
|
|
263
|
+
TDirectiveInputSignals,
|
|
264
|
+
TUndefToOptional,
|
|
265
|
+
TWithOptional,
|
|
266
|
+
} from "./core/utils/TDirectiveInputSignals";
|
package/src/scss.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ import { setupRipple } from "../../../core/utils/setups/setupRipple";
|
|
|
24
24
|
standalone: true,
|
|
25
25
|
imports: [SdCollapseControl, SdCollapseIconControl, NgTemplateOutlet, NgIcon],
|
|
26
26
|
template: `
|
|
27
|
-
<div class="_content" tabindex="0" (click)="onContentClick()" (keydown.enter)="onContentClick()">
|
|
27
|
+
<div class="_content" [style]="contentStyle()" [class]="contentClass()" tabindex="0" (click)="onContentClick()" (keydown.enter)="onContentClick()">
|
|
28
28
|
@if (layout() === "accordion" && hasChildren()) {
|
|
29
29
|
<sd-collapse-icon [open]="open()" />
|
|
30
30
|
}
|
|
@@ -119,6 +119,8 @@ export class SdListItemControl {
|
|
|
119
119
|
selected = input(false, { transform: booleanAttribute });
|
|
120
120
|
selectedIcon = input<string>();
|
|
121
121
|
readonly = input(false, { transform: booleanAttribute });
|
|
122
|
+
contentStyle = input<string>();
|
|
123
|
+
contentClass = input<string>();
|
|
122
124
|
|
|
123
125
|
toolTpl = contentChild<TemplateRef<void>>("toolTpl");
|
|
124
126
|
|
|
@@ -131,7 +133,7 @@ export class SdListItemControl {
|
|
|
131
133
|
});
|
|
132
134
|
|
|
133
135
|
constructor() {
|
|
134
|
-
setupRipple(() => !this.readonly() &&
|
|
136
|
+
setupRipple(() => !this.readonly() && this.layout() !== "flat");
|
|
135
137
|
}
|
|
136
138
|
|
|
137
139
|
onContentClick(): void {
|
|
@@ -6,6 +6,14 @@ import {
|
|
|
6
6
|
TemplateRef,
|
|
7
7
|
} from "@angular/core";
|
|
8
8
|
|
|
9
|
+
export interface SdSheetCellContext {
|
|
10
|
+
$implicit: unknown;
|
|
11
|
+
item: unknown;
|
|
12
|
+
index: number;
|
|
13
|
+
depth: number;
|
|
14
|
+
edit: boolean;
|
|
15
|
+
}
|
|
16
|
+
|
|
9
17
|
@Directive({
|
|
10
18
|
selector: "sd-sheet-column",
|
|
11
19
|
standalone: true,
|
|
@@ -21,6 +29,6 @@ export class SdSheetColumnDirective {
|
|
|
21
29
|
disableResizing = input(false, { transform: booleanAttribute });
|
|
22
30
|
ordering = input(0);
|
|
23
31
|
|
|
24
|
-
cellTplRef = contentChild<TemplateRef<
|
|
32
|
+
cellTplRef = contentChild<TemplateRef<SdSheetCellContext>>("cellTpl");
|
|
25
33
|
summaryTplRef = contentChild<TemplateRef<void>>("summaryTpl");
|
|
26
34
|
}
|
|
@@ -135,7 +135,7 @@ import { SdSheetConfigModal } from "./sd-sheet-config.modal";
|
|
|
135
135
|
>
|
|
136
136
|
@if (expanding.hasExpandable()) {
|
|
137
137
|
<td class="_expand-col">
|
|
138
|
-
@if (getItemDef(item)
|
|
138
|
+
@if (getItemDef(item).hasChildren) {
|
|
139
139
|
<sd-anchor (click)="onExpandClick($event, item)">
|
|
140
140
|
<ng-icon [svg]="isExpanded(item) ? icons.tablerChevronDown : icons.tablerChevronRight" />
|
|
141
141
|
</sd-anchor>
|
|
@@ -351,7 +351,7 @@ export class SdSheetControl<T> {
|
|
|
351
351
|
inset = input(false, { transform: booleanAttribute });
|
|
352
352
|
contentStyle = input<string>();
|
|
353
353
|
getItemCellClassFn = input<(item: T, colKey: string) => string>();
|
|
354
|
-
getItemCellStyleFn = input<(item: T, colKey: string) => string>();
|
|
354
|
+
getItemCellStyleFn = input<(item: T, colKey: string) => string | undefined>();
|
|
355
355
|
hideConfigBar = input(false, { transform: booleanAttribute });
|
|
356
356
|
|
|
357
357
|
// Outputs
|
|
@@ -384,7 +384,7 @@ export class SdSheetControl<T> {
|
|
|
384
384
|
// Resizing state
|
|
385
385
|
_isResizing = signal(false);
|
|
386
386
|
_resizeIndicatorLeft = signal(0);
|
|
387
|
-
private
|
|
387
|
+
private _lastResizeEndTimeStamp = 0;
|
|
388
388
|
private _resizingCleanup: (() => void) | null = null;
|
|
389
389
|
|
|
390
390
|
// Config resource
|
|
@@ -478,13 +478,21 @@ export class SdSheetControl<T> {
|
|
|
478
478
|
getItemSelectableFn: this.getItemSelectableFn,
|
|
479
479
|
});
|
|
480
480
|
|
|
481
|
+
private readonly _columnControlMap = computed(() => {
|
|
482
|
+
const map = new Map<string, SdSheetColumnDirective>();
|
|
483
|
+
for (const col of this.columnControls()) {
|
|
484
|
+
map.set(col.key(), col);
|
|
485
|
+
}
|
|
486
|
+
return map;
|
|
487
|
+
});
|
|
488
|
+
|
|
481
489
|
getColumnCellTpl(key: string) {
|
|
482
|
-
const col = this.
|
|
490
|
+
const col = this._columnControlMap().get(key);
|
|
483
491
|
return col?.cellTplRef() ?? null;
|
|
484
492
|
}
|
|
485
493
|
|
|
486
494
|
getColumnSummaryTpl(key: string) {
|
|
487
|
-
const col = this.
|
|
495
|
+
const col = this._columnControlMap().get(key);
|
|
488
496
|
return col?.summaryTplRef() ?? null;
|
|
489
497
|
}
|
|
490
498
|
|
|
@@ -513,9 +521,8 @@ export class SdSheetControl<T> {
|
|
|
513
521
|
if (fixedStyle != null) {
|
|
514
522
|
parts.push(fixedStyle);
|
|
515
523
|
}
|
|
516
|
-
const
|
|
517
|
-
|
|
518
|
-
: undefined;
|
|
524
|
+
const styleFn = this.getItemCellStyleFn();
|
|
525
|
+
const customStyle = styleFn != null ? styleFn(item, colDef.key) : undefined;
|
|
519
526
|
if (customStyle != null) {
|
|
520
527
|
parts.push(customStyle);
|
|
521
528
|
}
|
|
@@ -556,7 +563,7 @@ export class SdSheetControl<T> {
|
|
|
556
563
|
}
|
|
557
564
|
|
|
558
565
|
onHeaderClick(event: MouseEvent, cell: ISdSheetHeaderDef): void {
|
|
559
|
-
if (this.
|
|
566
|
+
if (event.timeStamp - this._lastResizeEndTimeStamp < 50) return;
|
|
560
567
|
if (cell.colDef == null) return;
|
|
561
568
|
if (cell.colDef.disableSorting) return;
|
|
562
569
|
this.sorting.toggle(cell.colDef.key, event.shiftKey);
|
|
@@ -642,7 +649,8 @@ export class SdSheetControl<T> {
|
|
|
642
649
|
|
|
643
650
|
getDataCellClass(item: T, colDef: ISdSheetColumnDef, r: number, c: number): string | null {
|
|
644
651
|
const parts: string[] = [];
|
|
645
|
-
const
|
|
652
|
+
const classFn = this.getItemCellClassFn();
|
|
653
|
+
const customClass = classFn != null ? classFn(item, colDef.key) : undefined;
|
|
646
654
|
if (customClass != null) {
|
|
647
655
|
parts.push(customClass);
|
|
648
656
|
}
|
|
@@ -652,16 +660,16 @@ export class SdSheetControl<T> {
|
|
|
652
660
|
return parts.length > 0 ? parts.join(" ") : null;
|
|
653
661
|
}
|
|
654
662
|
|
|
655
|
-
async onKeydownCapture(event:
|
|
656
|
-
await this.cellAgent.handleKeydownCapture(event);
|
|
663
|
+
async onKeydownCapture(event: Event): Promise<void> {
|
|
664
|
+
await this.cellAgent.handleKeydownCapture(event as KeyboardEvent);
|
|
657
665
|
}
|
|
658
666
|
|
|
659
667
|
onDblClick(event: MouseEvent): void {
|
|
660
668
|
this.cellAgent.handleCellDoubleClick(event);
|
|
661
669
|
}
|
|
662
670
|
|
|
663
|
-
onBlurCapture(event:
|
|
664
|
-
this.cellAgent.handleBlurCapture(event);
|
|
671
|
+
onBlurCapture(event: Event): void {
|
|
672
|
+
this.cellAgent.handleBlurCapture(event as FocusEvent);
|
|
665
673
|
}
|
|
666
674
|
|
|
667
675
|
onItemKeydown(event: KeyboardEvent, item: T): void {
|
|
@@ -700,7 +708,6 @@ export class SdSheetControl<T> {
|
|
|
700
708
|
const startWidth = th.offsetWidth;
|
|
701
709
|
|
|
702
710
|
this._isResizing.set(true);
|
|
703
|
-
this._isOnResizing = true;
|
|
704
711
|
this._resizeIndicatorLeft.set(
|
|
705
712
|
th.offsetLeft + th.offsetWidth - container.scrollLeft,
|
|
706
713
|
);
|
|
@@ -724,10 +731,7 @@ export class SdSheetControl<T> {
|
|
|
724
731
|
this._isResizing.set(false);
|
|
725
732
|
this._saveColumnConfig(colDef.key, { width: `${newWidth}px` });
|
|
726
733
|
|
|
727
|
-
|
|
728
|
-
setTimeout(() => {
|
|
729
|
-
this._isOnResizing = false;
|
|
730
|
-
}, 300);
|
|
734
|
+
this._lastResizeEndTimeStamp = e.timeStamp;
|
|
731
735
|
};
|
|
732
736
|
|
|
733
737
|
document.addEventListener("mousemove", onMouseMove);
|
|
@@ -15,7 +15,6 @@ import {
|
|
|
15
15
|
type ISdModalInfo,
|
|
16
16
|
type ISdModalOptions,
|
|
17
17
|
} from "../../overlay/modal/sd-modal.provider";
|
|
18
|
-
import type { TDirectiveInputSignals } from "../../../core/utils/TDirectiveInputSignals";
|
|
19
18
|
import type { TSelectModeValue } from "../select/sd-select.control";
|
|
20
19
|
import { SdAnchorControl } from "./sd-anchor.control";
|
|
21
20
|
import { SdButtonControl } from "./sd-button.control";
|
|
@@ -28,30 +27,25 @@ import { tablerSearch, tablerEraser } from "@ng-icons/tabler-icons";
|
|
|
28
27
|
* ISdModal을 확장하여 selectMode와 selectedItemKeys를 추가한다.
|
|
29
28
|
*/
|
|
30
29
|
export interface ISdSelectModal<T> extends ISdModal<ISelectModalOutputResult<T>> {
|
|
31
|
-
selectMode: InputSignal<"single" | "multi">;
|
|
32
|
-
selectedItemKeys: InputSignal<
|
|
30
|
+
selectMode: InputSignal<"single" | "multi" | undefined>;
|
|
31
|
+
selectedItemKeys: InputSignal<any[]>;
|
|
33
32
|
}
|
|
34
33
|
|
|
35
34
|
/**
|
|
36
35
|
* 모달 선택 결과
|
|
37
36
|
*/
|
|
38
37
|
export interface ISelectModalOutputResult<T> {
|
|
39
|
-
selectedItemKeys:
|
|
40
|
-
selectedItems:
|
|
38
|
+
selectedItemKeys: any[];
|
|
39
|
+
selectedItems: T[];
|
|
41
40
|
}
|
|
42
41
|
|
|
43
42
|
/**
|
|
44
43
|
* 모달 선택 정보 (selectMode/selectedItemKeys를 제외한 inputs)
|
|
45
44
|
*/
|
|
46
|
-
export type TSdSelectModalInfo<T extends ISdSelectModal<any>> =
|
|
47
|
-
|
|
48
|
-
"
|
|
49
|
-
|
|
50
|
-
inputs: Omit<
|
|
51
|
-
TDirectiveInputSignals<T>,
|
|
52
|
-
"initialized" | "close" | "actionTplRef" | "selectMode" | "selectedItemKeys"
|
|
53
|
-
>;
|
|
54
|
-
};
|
|
45
|
+
export type TSdSelectModalInfo<T extends ISdSelectModal<any>> = ISdModalInfo<
|
|
46
|
+
T,
|
|
47
|
+
"selectMode" | "selectedItemKeys"
|
|
48
|
+
>;
|
|
55
49
|
|
|
56
50
|
@Component({
|
|
57
51
|
selector: "sd-modal-select-button",
|
|
@@ -71,7 +65,7 @@ export type TSdSelectModalInfo<T extends ISdSelectModal<any>> = Omit<
|
|
|
71
65
|
}
|
|
72
66
|
@if (!disabled()) {
|
|
73
67
|
<sd-button [inset]="true" (click)="onSearchClick()">
|
|
74
|
-
<ng-icon [svg]="
|
|
68
|
+
<ng-icon [svg]="searchIcon()" />
|
|
75
69
|
</sd-button>
|
|
76
70
|
}
|
|
77
71
|
</div>
|
|
@@ -156,20 +150,27 @@ export type TSdSelectModalInfo<T extends ISdSelectModal<any>> = Omit<
|
|
|
156
150
|
"[attr.data-sd-disabled]": "disabled()",
|
|
157
151
|
},
|
|
158
152
|
})
|
|
159
|
-
export class SdModalSelectButtonControl
|
|
153
|
+
export class SdModalSelectButtonControl<
|
|
154
|
+
T extends object,
|
|
155
|
+
K,
|
|
156
|
+
M extends keyof TSelectModeValue<K> = keyof TSelectModeValue<K>,
|
|
157
|
+
> {
|
|
160
158
|
private readonly _sdModal = inject(SdModalProvider);
|
|
161
159
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
160
|
+
modal = input.required<TSdSelectModalInfo<ISdSelectModal<T>>>();
|
|
161
|
+
|
|
162
|
+
value = model<TSelectModeValue<K>[M]>();
|
|
163
|
+
selectedItems = model<T[]>([]);
|
|
164
|
+
|
|
165
165
|
disabled = input(false, { transform: booleanAttribute });
|
|
166
166
|
required = input(false, { transform: booleanAttribute });
|
|
167
|
-
modal = input<TSdSelectModalInfo<any>>();
|
|
168
|
-
modalOptions = input<ISdModalOptions>();
|
|
169
|
-
size = input<"sm" | "lg">();
|
|
170
167
|
inset = input(false, { transform: booleanAttribute });
|
|
168
|
+
size = input<"sm" | "lg">();
|
|
169
|
+
selectMode = input<M>("single" as M);
|
|
170
|
+
modalOptions = input<ISdModalOptions>();
|
|
171
|
+
|
|
172
|
+
searchIcon = input(tablerSearch);
|
|
171
173
|
|
|
172
|
-
protected readonly tablerSearch = tablerSearch;
|
|
173
174
|
protected readonly tablerEraser = tablerEraser;
|
|
174
175
|
|
|
175
176
|
_hasValue = computed(() => {
|
|
@@ -190,48 +191,29 @@ export class SdModalSelectButtonControl {
|
|
|
190
191
|
}
|
|
191
192
|
|
|
192
193
|
onEraseClick(): void {
|
|
193
|
-
|
|
194
|
-
this.value.set([]);
|
|
195
|
-
} else {
|
|
196
|
-
this.value.set(undefined);
|
|
197
|
-
}
|
|
194
|
+
this.value.set((this.selectMode() === "multi" ? [] : undefined) as any);
|
|
198
195
|
this.selectedItems.set([]);
|
|
199
196
|
}
|
|
200
197
|
|
|
201
198
|
async onSearchClick(): Promise<void> {
|
|
202
|
-
const
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
const result = await this._sdModal.showAsync(
|
|
214
|
-
{
|
|
215
|
-
title: modalInfo.title,
|
|
216
|
-
type: modalInfo.type,
|
|
217
|
-
inputs: {
|
|
218
|
-
...modalInfo.inputs,
|
|
219
|
-
selectMode: this.selectMode(),
|
|
220
|
-
selectedItemKeys,
|
|
221
|
-
} as any,
|
|
199
|
+
const modal = this.modal();
|
|
200
|
+
const result = await this._sdModal.showAsync({
|
|
201
|
+
...modal,
|
|
202
|
+
inputs: {
|
|
203
|
+
selectMode: this.selectMode(),
|
|
204
|
+
selectedItemKeys: (this.selectMode() === "multi"
|
|
205
|
+
? ((this.value() as any[] | undefined) ?? [])
|
|
206
|
+
: [this.value()]
|
|
207
|
+
).filterExists(),
|
|
208
|
+
...modal.inputs,
|
|
222
209
|
},
|
|
223
|
-
|
|
224
|
-
);
|
|
225
|
-
|
|
226
|
-
if (result == null) return;
|
|
227
|
-
|
|
228
|
-
const typedResult = result as ISelectModalOutputResult<any>;
|
|
210
|
+
});
|
|
229
211
|
|
|
230
|
-
if (
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
this.value.set(
|
|
212
|
+
if (result) {
|
|
213
|
+
const newValue =
|
|
214
|
+
this.selectMode() === "multi" ? result.selectedItemKeys : result.selectedItemKeys[0];
|
|
215
|
+
this.value.set(newValue);
|
|
216
|
+
this.selectedItems.set(result.selectedItems);
|
|
234
217
|
}
|
|
235
|
-
this.selectedItems.set(typedResult.selectedItems);
|
|
236
218
|
}
|
|
237
219
|
}
|
|
@@ -24,6 +24,40 @@ import TextAlign from "@tiptap/extension-text-align";
|
|
|
24
24
|
import Image from "@tiptap/extension-image";
|
|
25
25
|
import Placeholder from "@tiptap/extension-placeholder";
|
|
26
26
|
|
|
27
|
+
interface TiptapActiveStates {
|
|
28
|
+
h1: boolean;
|
|
29
|
+
h2: boolean;
|
|
30
|
+
bold: boolean;
|
|
31
|
+
italic: boolean;
|
|
32
|
+
underline: boolean;
|
|
33
|
+
strike: boolean;
|
|
34
|
+
bulletList: boolean;
|
|
35
|
+
orderedList: boolean;
|
|
36
|
+
blockquote: boolean;
|
|
37
|
+
codeBlock: boolean;
|
|
38
|
+
alignLeft: boolean;
|
|
39
|
+
alignCenter: boolean;
|
|
40
|
+
alignRight: boolean;
|
|
41
|
+
alignJustify: boolean;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const DEFAULT_ACTIVE_STATES: TiptapActiveStates = {
|
|
45
|
+
h1: false,
|
|
46
|
+
h2: false,
|
|
47
|
+
bold: false,
|
|
48
|
+
italic: false,
|
|
49
|
+
underline: false,
|
|
50
|
+
strike: false,
|
|
51
|
+
bulletList: false,
|
|
52
|
+
orderedList: false,
|
|
53
|
+
blockquote: false,
|
|
54
|
+
codeBlock: false,
|
|
55
|
+
alignLeft: false,
|
|
56
|
+
alignCenter: false,
|
|
57
|
+
alignRight: false,
|
|
58
|
+
alignJustify: false,
|
|
59
|
+
};
|
|
60
|
+
|
|
27
61
|
const DEFAULT_EXTENSIONS: AnyExtension[] = [
|
|
28
62
|
StarterKit,
|
|
29
63
|
TextStyle,
|
|
@@ -251,7 +285,7 @@ export class SdTiptapEditorControl {
|
|
|
251
285
|
"#f9cb9c", "#ffe599", "#b6d7a8", "#a2c4c9", "#a4c2f4", "#9fc5e8", "#b4a7d6", "#d5a6bd",
|
|
252
286
|
];
|
|
253
287
|
|
|
254
|
-
activeStates: WritableSignal<
|
|
288
|
+
activeStates: WritableSignal<TiptapActiveStates> = signal(DEFAULT_ACTIVE_STATES);
|
|
255
289
|
activeColor = signal("");
|
|
256
290
|
activeBgColor = signal("");
|
|
257
291
|
colorPickerMode: "text" | "bg" | undefined;
|
|
@@ -78,7 +78,7 @@ import { SdGapControl } from "../../layout/sd-gap.control";
|
|
|
78
78
|
},
|
|
79
79
|
})
|
|
80
80
|
export class SdSelectItemControl<T> {
|
|
81
|
-
protected readonly _parentControl = inject<SdSelectControl<T>>(
|
|
81
|
+
protected readonly _parentControl = inject<SdSelectControl<any, T>>(
|
|
82
82
|
forwardRef(() => SdSelectControl),
|
|
83
83
|
);
|
|
84
84
|
private readonly _elRef = inject(ElementRef<HTMLElement>);
|
|
@@ -26,7 +26,10 @@ import { NgIcon } from "@ng-icons/core";
|
|
|
26
26
|
import { tablerCaretDown } from "@ng-icons/tabler-icons";
|
|
27
27
|
import { tabbable } from "tabbable";
|
|
28
28
|
|
|
29
|
-
export type TSelectModeValue<T> =
|
|
29
|
+
export type TSelectModeValue<T> = {
|
|
30
|
+
multi: T[];
|
|
31
|
+
single: T;
|
|
32
|
+
};
|
|
30
33
|
|
|
31
34
|
@Component({
|
|
32
35
|
selector: "sd-select",
|
|
@@ -175,9 +178,9 @@ export type TSelectModeValue<T> = T | T[] | undefined;
|
|
|
175
178
|
"[attr.data-sd-disabled]": "disabled()",
|
|
176
179
|
},
|
|
177
180
|
})
|
|
178
|
-
export class SdSelectControl<T> {
|
|
179
|
-
selectMode = input
|
|
180
|
-
value = model<TSelectModeValue<
|
|
181
|
+
export class SdSelectControl<M extends "single" | "multi", T> {
|
|
182
|
+
selectMode = input("single" as M);
|
|
183
|
+
value = model<TSelectModeValue<any>[M]>();
|
|
181
184
|
placeholder = input<string>();
|
|
182
185
|
disabled = input(false, { transform: booleanAttribute });
|
|
183
186
|
inline = input(false, { transform: booleanAttribute });
|
|
@@ -2,6 +2,7 @@ import {
|
|
|
2
2
|
booleanAttribute,
|
|
3
3
|
ChangeDetectionStrategy,
|
|
4
4
|
Component,
|
|
5
|
+
DestroyRef,
|
|
5
6
|
effect,
|
|
6
7
|
ElementRef,
|
|
7
8
|
inject,
|
|
@@ -87,6 +88,9 @@ import type { ISdResizeEvent } from "../../../core/plugins/events/sd-resize-even
|
|
|
87
88
|
})
|
|
88
89
|
export class SdDockControl {
|
|
89
90
|
private readonly _elRef = inject(ElementRef<HTMLElement>);
|
|
91
|
+
private readonly _destroyRef = inject(DestroyRef);
|
|
92
|
+
|
|
93
|
+
private _dragCleanup: (() => void) | undefined;
|
|
90
94
|
|
|
91
95
|
key = input<string>();
|
|
92
96
|
position = input<"top" | "bottom" | "right" | "left">("top");
|
|
@@ -97,6 +101,10 @@ export class SdDockControl {
|
|
|
97
101
|
private readonly _config = useSdSystemConfigResource<{ size?: string }>({ key: this.key });
|
|
98
102
|
|
|
99
103
|
constructor() {
|
|
104
|
+
this._destroyRef.onDestroy(() => {
|
|
105
|
+
this._dragCleanup?.();
|
|
106
|
+
});
|
|
107
|
+
|
|
100
108
|
effect(() => {
|
|
101
109
|
const conf = this._config.value();
|
|
102
110
|
if (this.resizable() && conf && conf.size != null) {
|
|
@@ -151,8 +159,7 @@ export class SdDockControl {
|
|
|
151
159
|
e.stopPropagation();
|
|
152
160
|
e.preventDefault();
|
|
153
161
|
|
|
154
|
-
|
|
155
|
-
document.removeEventListener("mouseup", stopDrag);
|
|
162
|
+
this._dragCleanup?.();
|
|
156
163
|
|
|
157
164
|
if (this.key() != null) {
|
|
158
165
|
const newConf: { size?: string } = {};
|
|
@@ -167,5 +174,11 @@ export class SdDockControl {
|
|
|
167
174
|
|
|
168
175
|
document.addEventListener("mousemove", doDrag);
|
|
169
176
|
document.addEventListener("mouseup", stopDrag);
|
|
177
|
+
|
|
178
|
+
this._dragCleanup = () => {
|
|
179
|
+
document.removeEventListener("mousemove", doDrag);
|
|
180
|
+
document.removeEventListener("mouseup", stopDrag);
|
|
181
|
+
this._dragCleanup = undefined;
|
|
182
|
+
};
|
|
170
183
|
}
|
|
171
184
|
}
|
|
@@ -136,9 +136,10 @@ export class SdKanbanLaneControl<L, T> implements ISdKanbanDropTarget<L, T> {
|
|
|
136
136
|
toolTplRef = contentChild<any, TemplateRef<void>>("toolTpl", { read: TemplateRef });
|
|
137
137
|
titleTplRef = contentChild<any, TemplateRef<void>>("titleTpl", { read: TemplateRef });
|
|
138
138
|
|
|
139
|
-
isAllSelected = computed(() =>
|
|
140
|
-
|
|
141
|
-
|
|
139
|
+
isAllSelected = computed(() => {
|
|
140
|
+
const selectableControls = this.kanbanControls().filter((ctrl) => ctrl.selectable());
|
|
141
|
+
return selectableControls.length > 0 && selectableControls.every((ctrl) => ctrl.selected());
|
|
142
|
+
});
|
|
142
143
|
|
|
143
144
|
dragKanban = computed(() => this._boardControl.dragKanban());
|
|
144
145
|
|
|
@@ -161,6 +162,7 @@ export class SdKanbanLaneControl<L, T> implements ISdKanbanDropTarget<L, T> {
|
|
|
161
162
|
this._boardControl.selectedValues.update((v) => {
|
|
162
163
|
const r = [...v];
|
|
163
164
|
for (const ctrl of this.kanbanControls()) {
|
|
165
|
+
if (!ctrl.selectable()) continue;
|
|
164
166
|
if (ctrl.value() == null) continue;
|
|
165
167
|
if (!v.includes(ctrl.value()!)) {
|
|
166
168
|
r.push(ctrl.value()!);
|
|
@@ -171,6 +173,7 @@ export class SdKanbanLaneControl<L, T> implements ISdKanbanDropTarget<L, T> {
|
|
|
171
173
|
} else {
|
|
172
174
|
this._boardControl.selectedValues.update((v) => {
|
|
173
175
|
const kanbanValues = this.kanbanControls()
|
|
176
|
+
.filter((ctrl) => ctrl.selectable())
|
|
174
177
|
.map((ctrl) => ctrl.value())
|
|
175
178
|
.filter((v2): v2 is T => v2 != null);
|
|
176
179
|
const result = v.filter((item) => !kanbanValues.includes(item));
|
|
@@ -67,7 +67,7 @@ export class SdPaginationControl {
|
|
|
67
67
|
visiblePageCount = input(10, { transform: numberAttribute });
|
|
68
68
|
|
|
69
69
|
private readonly groupIndex = computed(() => {
|
|
70
|
-
return Math.floor(this.currentPage() / this.visiblePageCount());
|
|
70
|
+
return Math.floor(this.currentPage() / Math.max(this.visiblePageCount(), 1));
|
|
71
71
|
});
|
|
72
72
|
|
|
73
73
|
hasPrev = computed(() => {
|
|
@@ -82,7 +82,7 @@ export class SdPaginationControl {
|
|
|
82
82
|
if (totalPageCount === 0) {
|
|
83
83
|
return false;
|
|
84
84
|
}
|
|
85
|
-
const lastGroupIndex = Math.floor((totalPageCount - 1) / this.visiblePageCount());
|
|
85
|
+
const lastGroupIndex = Math.floor((totalPageCount - 1) / Math.max(this.visiblePageCount(), 1));
|
|
86
86
|
return this.groupIndex() < lastGroupIndex;
|
|
87
87
|
});
|
|
88
88
|
|
|
@@ -112,7 +112,8 @@ export class SdPaginationControl {
|
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
goToPrevGroup(): void {
|
|
115
|
-
|
|
115
|
+
if (!this.hasPrev()) return;
|
|
116
|
+
this.currentPage.set((this.groupIndex() - 1) * Math.max(this.visiblePageCount(), 1));
|
|
116
117
|
}
|
|
117
118
|
|
|
118
119
|
goToFirst(): void {
|
|
@@ -120,6 +121,7 @@ export class SdPaginationControl {
|
|
|
120
121
|
}
|
|
121
122
|
|
|
122
123
|
goToLast(): void {
|
|
124
|
+
if (this.totalPageCount() === 0) return;
|
|
123
125
|
this.currentPage.set(this.totalPageCount() - 1);
|
|
124
126
|
}
|
|
125
127
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ChangeDetectionStrategy,
|
|
3
3
|
Component,
|
|
4
|
+
DestroyRef,
|
|
4
5
|
effect,
|
|
5
6
|
ElementRef,
|
|
6
7
|
inject,
|
|
@@ -62,6 +63,7 @@ export class SdModalControl {
|
|
|
62
63
|
private readonly _elRef = inject(ElementRef<HTMLElement>);
|
|
63
64
|
private readonly _activatedModal = inject(SdActivatedModalProvider, { optional: true });
|
|
64
65
|
private readonly _systemConfig = inject(SdSystemConfigProvider, { optional: true });
|
|
66
|
+
private readonly _destroyRef = inject(DestroyRef);
|
|
65
67
|
|
|
66
68
|
open = model(false);
|
|
67
69
|
key = input<string | undefined>(undefined);
|
|
@@ -147,6 +149,11 @@ export class SdModalControl {
|
|
|
147
149
|
void this._saveConfig();
|
|
148
150
|
}
|
|
149
151
|
};
|
|
152
|
+
|
|
153
|
+
this._destroyRef.onDestroy(() => {
|
|
154
|
+
document.removeEventListener("mousemove", this._onDocumentMouseMove);
|
|
155
|
+
document.removeEventListener("mouseup", this._onDocumentMouseUp);
|
|
156
|
+
});
|
|
150
157
|
}
|
|
151
158
|
|
|
152
159
|
onResizeMouseDown(event: MouseEvent, dir: string): void {
|
|
@@ -262,6 +269,8 @@ export class SdModalControl {
|
|
|
262
269
|
maxZ = z;
|
|
263
270
|
}
|
|
264
271
|
}
|
|
272
|
+
const currentZ = parseInt(hostEl.style.zIndex, 10);
|
|
273
|
+
if (currentZ >= maxZ) return;
|
|
265
274
|
hostEl.style.zIndex = String(maxZ + 1);
|
|
266
275
|
}
|
|
267
276
|
|