@simplysm/angular 14.0.42 → 14.0.43
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/dist/controls/button/sd-additional-button.js +1 -1
- package/dist/controls/button/sd-anchor.js +1 -1
- package/dist/controls/button/sd-button.js +1 -1
- package/dist/controls/button/sd-modal-select-button.d.ts +1 -1
- package/dist/controls/button/sd-modal-select-button.d.ts.map +1 -1
- package/dist/controls/button/sd-modal-select-button.js +8 -6
- package/dist/controls/checkbox/sd-checkbox-group-item.js +1 -1
- package/dist/controls/checkbox/sd-checkbox-group.js +1 -1
- package/dist/controls/checkbox/sd-checkbox.js +1 -1
- package/dist/controls/checkbox/sd-switch.js +1 -1
- package/dist/controls/collapse/sd-collapse-icon.d.ts.map +1 -1
- package/dist/controls/collapse/sd-collapse-icon.js +3 -3
- package/dist/controls/collapse/sd-collapse.d.ts +1 -1
- package/dist/controls/collapse/sd-collapse.d.ts.map +1 -1
- package/dist/controls/collapse/sd-collapse.js +8 -7
- package/dist/controls/dropdown/sd-dropdown-popup.d.ts +2 -0
- package/dist/controls/dropdown/sd-dropdown-popup.d.ts.map +1 -1
- package/dist/controls/dropdown/sd-dropdown-popup.js +21 -8
- package/dist/controls/dropdown/sd-dropdown.d.ts.map +1 -1
- package/dist/controls/dropdown/sd-dropdown.js +5 -16
- package/dist/controls/form/sd-form.js +1 -1
- package/dist/controls/gap/sd-gap.js +5 -5
- package/dist/controls/input/sd-date-range-picker.d.ts +1 -0
- package/dist/controls/input/sd-date-range-picker.d.ts.map +1 -1
- package/dist/controls/input/sd-date-range-picker.js +14 -19
- package/dist/controls/input/sd-numpad.js +3 -3
- package/dist/controls/input/sd-range.js +1 -1
- package/dist/controls/input/sd-textarea.js +2 -2
- package/dist/controls/input/sd-textfield-type-handlers.js +2 -2
- package/dist/controls/input/sd-textfield.js +9 -9
- package/dist/controls/list/sd-list-item.d.ts +0 -1
- package/dist/controls/list/sd-list-item.d.ts.map +1 -1
- package/dist/controls/list/sd-list-item.js +38 -38
- package/dist/controls/list/sd-list.d.ts.map +1 -1
- package/dist/controls/list/sd-list.js +3 -3
- package/dist/controls/pagination/sd-pagination.js +1 -1
- package/dist/controls/select/sd-select-button.d.ts.map +1 -1
- package/dist/controls/select/sd-select-button.js +4 -8
- package/dist/controls/select/sd-select-item.d.ts +3 -3
- package/dist/controls/select/sd-select-item.d.ts.map +1 -1
- package/dist/controls/select/sd-select-item.js +27 -20
- package/dist/controls/select/sd-select.d.ts +5 -4
- package/dist/controls/select/sd-select.d.ts.map +1 -1
- package/dist/controls/select/sd-select.js +20 -17
- package/dist/controls/tab/sd-tab-item.js +1 -1
- package/dist/controls/tab/sd-tab.js +1 -1
- package/dist/core/app-structure/sd-app-structure.utils.js +1 -1
- package/dist/core/busy/sd-busy-container.d.ts.map +1 -1
- package/dist/core/busy/sd-busy-container.js +62 -68
- package/dist/core/busy/sd-busy.provider.js +1 -1
- package/dist/core/commands/sd-command.d.ts +13 -0
- package/dist/core/commands/sd-command.d.ts.map +1 -0
- package/dist/core/commands/sd-command.js +52 -0
- package/dist/core/error-handler/sd-global-error-handler.plugin.js +1 -1
- package/dist/core/events/sd-events.d.ts +1 -6
- package/dist/core/events/sd-events.d.ts.map +1 -1
- package/dist/core/events/sd-events.js +3 -11
- package/dist/core/events/sd-intersection.d.ts +13 -0
- package/dist/core/events/sd-intersection.d.ts.map +1 -0
- package/dist/core/events/sd-intersection.js +27 -0
- package/dist/core/events/sd-resize.d.ts +16 -0
- package/dist/core/events/sd-resize.d.ts.map +1 -0
- package/dist/core/events/{sd-resize-event.plugin.js → sd-resize.js} +18 -20
- package/dist/core/file-dialog/sd-file-dialog.provider.js +1 -1
- package/dist/core/modal/injectDragResize.js +9 -9
- package/dist/core/modal/injectFocusTrap.js +1 -1
- package/dist/core/modal/sd-confirm-modal.js +1 -1
- package/dist/core/modal/sd-modal.d.ts +8 -1
- package/dist/core/modal/sd-modal.d.ts.map +1 -1
- package/dist/core/modal/sd-modal.js +135 -39
- package/dist/core/modal/sd-modal.provider.js +5 -5
- package/dist/core/modal/sd-prompt-modal.js +1 -1
- package/dist/core/provideSdAngular.d.ts.map +1 -1
- package/dist/core/provideSdAngular.js +0 -10
- package/dist/core/ripple/setupRipple.js +5 -5
- package/dist/core/routing/menu-utils.js +1 -1
- package/dist/core/routing/sd-navigate-window.provider.js +1 -1
- package/dist/core/routing/sd-router-link.js +1 -1
- package/dist/core/selection/setupCumulateSelectedKeys.js +3 -3
- package/dist/core/setupModelHook.js +1 -1
- package/dist/core/toast/sd-toast-container.d.ts +1 -1
- package/dist/core/toast/sd-toast-container.js +3 -7
- package/dist/core/toast/sd-toast.d.ts.map +1 -1
- package/dist/core/toast/sd-toast.js +27 -24
- package/dist/core/toast/sd-toast.provider.js +6 -6
- package/dist/core/validation/setupInvalid.js +2 -1
- package/dist/data/data-detail/sd-data-detail.d.ts +2 -1
- package/dist/data/data-detail/sd-data-detail.d.ts.map +1 -1
- package/dist/data/data-detail/sd-data-detail.js +37 -33
- package/dist/data/data-select-button/sd-data-select-button.js +1 -1
- package/dist/data/data-sheet/sd-data-sheet.d.ts +2 -1
- package/dist/data/data-sheet/sd-data-sheet.d.ts.map +1 -1
- package/dist/data/data-sheet/sd-data-sheet.js +30 -22
- package/dist/data/kanban/sd-kanban-board.js +1 -1
- package/dist/data/kanban/sd-kanban-lane.js +1 -1
- package/dist/data/kanban/sd-kanban.d.ts +1 -1
- package/dist/data/kanban/sd-kanban.d.ts.map +1 -1
- package/dist/data/kanban/sd-kanban.js +4 -4
- package/dist/data/permission-table/sd-permission-table.js +6 -6
- package/dist/data/shared-data/sd-shared-data-select-button.js +1 -1
- package/dist/data/shared-data/sd-shared-data-select-list.js +3 -3
- package/dist/data/shared-data/sd-shared-data-select.d.ts +1 -1
- package/dist/data/shared-data/sd-shared-data-select.d.ts.map +1 -1
- package/dist/data/shared-data/sd-shared-data-select.js +29 -54
- package/dist/data/sheet/injectSheetDomAccessor.d.ts +6 -2
- package/dist/data/sheet/injectSheetDomAccessor.d.ts.map +1 -1
- package/dist/data/sheet/injectSheetDomAccessor.js +27 -22
- package/dist/data/sheet/injectSheetSelectRowIndicator.d.ts +10 -0
- package/dist/data/sheet/injectSheetSelectRowIndicator.d.ts.map +1 -0
- package/dist/data/sheet/injectSheetSelectRowIndicator.js +55 -0
- package/dist/data/sheet/sd-sheet-config.modal.d.ts +18 -19
- package/dist/data/sheet/sd-sheet-config.modal.d.ts.map +1 -1
- package/dist/data/sheet/sd-sheet-config.modal.js +357 -217
- package/dist/data/sheet/sd-sheet.d.ts +27 -13
- package/dist/data/sheet/sd-sheet.d.ts.map +1 -1
- package/dist/data/sheet/sd-sheet.js +609 -291
- package/dist/data/sheet/useSheetCellAgent.js +6 -6
- package/dist/data/sheet/useSheetCellStyling.d.ts.map +1 -1
- package/dist/data/sheet/useSheetCellStyling.js +4 -4
- package/dist/data/sheet/useSheetFocusIndicator.d.ts +7 -0
- package/dist/data/sheet/useSheetFocusIndicator.d.ts.map +1 -0
- package/dist/data/sheet/useSheetFocusIndicator.js +53 -0
- package/dist/data/sheet/useSheetLayoutEngine.js +1 -1
- package/dist/data/state-preset/sd-state-preset.d.ts.map +1 -1
- package/dist/data/state-preset/sd-state-preset.js +14 -14
- package/dist/features/address/sd-address-search.modal.js +3 -3
- package/dist/features/editor/sd-tiptap-editor.js +6 -6
- package/dist/features/editor/useTiptapToolbar.js +2 -2
- package/dist/features/theme/sd-theme-selector.js +1 -1
- package/dist/features/visual/sd-barcode.js +1 -1
- package/dist/features/visual/sd-calendar.js +2 -2
- package/dist/features/visual/sd-echarts.d.ts +2 -1
- package/dist/features/visual/sd-echarts.d.ts.map +1 -1
- package/dist/features/visual/sd-echarts.js +5 -3
- package/dist/features/visual/sd-label.js +1 -1
- package/dist/features/visual/sd-note.js +1 -1
- package/dist/features/visual/sd-progress.js +1 -1
- package/dist/index.d.ts +3 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -5
- package/dist/layout/base-container/sd-base-container.js +3 -3
- package/dist/layout/dock/sd-dock-container.js +1 -1
- package/dist/layout/dock/sd-dock.d.ts +3 -2
- package/dist/layout/dock/sd-dock.d.ts.map +1 -1
- package/dist/layout/dock/sd-dock.js +6 -4
- package/dist/layout/sidebar/sd-sidebar-container.js +5 -5
- package/dist/layout/sidebar/sd-sidebar-menu.d.ts.map +1 -1
- package/dist/layout/sidebar/sd-sidebar-menu.js +7 -6
- package/dist/layout/sidebar/sd-sidebar-user.js +1 -1
- package/dist/layout/sidebar/sd-sidebar.js +1 -1
- package/dist/layout/topbar/sd-topbar-container.js +1 -1
- package/dist/layout/topbar/sd-topbar-menu.d.ts.map +1 -1
- package/dist/layout/topbar/sd-topbar-menu.js +7 -7
- package/dist/layout/topbar/sd-topbar-user.js +1 -1
- package/dist/layout/topbar/sd-topbar.js +3 -3
- package/package.json +5 -5
- package/src/controls/button/sd-modal-select-button.ts +7 -2
- package/src/controls/collapse/sd-collapse-icon.ts +2 -2
- package/src/controls/collapse/sd-collapse.ts +4 -5
- package/src/controls/dropdown/sd-dropdown-popup.ts +15 -2
- package/src/controls/dropdown/sd-dropdown.ts +4 -16
- package/src/controls/gap/sd-gap.ts +4 -4
- package/src/controls/input/sd-date-range-picker.ts +13 -16
- package/src/controls/input/sd-numpad.ts +1 -1
- package/src/controls/input/sd-textarea.ts +1 -1
- package/src/controls/input/sd-textfield-type-handlers.ts +2 -2
- package/src/controls/input/sd-textfield.ts +6 -6
- package/src/controls/list/sd-list-item.ts +40 -26
- package/src/controls/list/sd-list.ts +2 -1
- package/src/controls/select/sd-select-button.ts +8 -11
- package/src/controls/select/sd-select-item.ts +35 -27
- package/src/controls/select/sd-select.ts +111 -41
- package/src/core/app-structure/sd-app-structure.utils.ts +1 -1
- package/src/core/busy/sd-busy-container.ts +235 -123
- package/src/core/busy/sd-busy.provider.ts +1 -1
- package/src/core/commands/sd-command.ts +46 -0
- package/src/core/error-handler/sd-global-error-handler.plugin.ts +1 -1
- package/src/core/events/sd-events.ts +1 -12
- package/src/core/events/sd-intersection.ts +29 -0
- package/src/core/events/{sd-resize-event.plugin.ts → sd-resize.ts} +17 -24
- package/src/core/file-dialog/sd-file-dialog.provider.ts +1 -1
- package/src/core/modal/injectDragResize.ts +9 -9
- package/src/core/modal/injectFocusTrap.ts +1 -1
- package/src/core/modal/sd-modal.provider.ts +5 -5
- package/src/core/modal/sd-modal.ts +119 -41
- package/src/core/provideSdAngular.ts +0 -10
- package/src/core/ripple/setupRipple.ts +5 -5
- package/src/core/routing/menu-utils.ts +1 -1
- package/src/core/routing/sd-navigate-window.provider.ts +1 -1
- package/src/core/routing/sd-router-link.ts +1 -1
- package/src/core/selection/setupCumulateSelectedKeys.ts +3 -3
- package/src/core/setupModelHook.ts +1 -1
- package/src/core/toast/sd-toast-container.ts +1 -1
- package/src/core/toast/sd-toast.provider.ts +6 -6
- package/src/core/toast/sd-toast.ts +25 -22
- package/src/core/validation/setupInvalid.ts +2 -1
- package/src/data/data-detail/sd-data-detail.ts +15 -11
- package/src/data/data-sheet/sd-data-sheet.ts +13 -15
- package/src/data/kanban/sd-kanban.ts +4 -5
- package/src/data/permission-table/sd-permission-table.ts +4 -4
- package/src/data/shared-data/sd-shared-data-select-list.ts +1 -1
- package/src/data/shared-data/sd-shared-data-select.ts +8 -27
- package/src/data/sheet/injectSheetDomAccessor.ts +37 -25
- package/src/data/sheet/injectSheetSelectRowIndicator.ts +69 -0
- package/src/data/sheet/sd-sheet-config.modal.ts +215 -191
- package/src/data/sheet/sd-sheet.ts +529 -209
- package/src/data/sheet/useSheetCellAgent.ts +8 -8
- package/src/data/sheet/useSheetCellStyling.ts +4 -8
- package/src/data/sheet/useSheetFocusIndicator.ts +66 -0
- package/src/data/sheet/useSheetLayoutEngine.ts +1 -1
- package/src/data/state-preset/sd-state-preset.ts +26 -13
- package/src/features/address/sd-address-search.modal.ts +1 -1
- package/src/features/editor/sd-tiptap-editor.ts +4 -4
- package/src/features/editor/useTiptapToolbar.ts +2 -2
- package/src/features/visual/sd-calendar.ts +1 -1
- package/src/features/visual/sd-echarts.ts +2 -0
- package/src/index.ts +4 -6
- package/src/layout/base-container/sd-base-container.ts +1 -1
- package/src/layout/dock/sd-dock.ts +3 -2
- package/src/layout/sidebar/sd-sidebar-container.ts +2 -2
- package/src/layout/sidebar/sd-sidebar-menu.ts +1 -3
- package/src/layout/topbar/sd-topbar-menu.ts +11 -15
- package/src/layout/topbar/sd-topbar.ts +1 -1
- package/dist/core/commands/sd-insert-command-event.plugin.d.ts +0 -11
- package/dist/core/commands/sd-insert-command-event.plugin.d.ts.map +0 -1
- package/dist/core/commands/sd-insert-command-event.plugin.js +0 -35
- package/dist/core/commands/sd-refresh-command-event.plugin.d.ts +0 -11
- package/dist/core/commands/sd-refresh-command-event.plugin.d.ts.map +0 -1
- package/dist/core/commands/sd-refresh-command-event.plugin.js +0 -38
- package/dist/core/commands/sd-save-command-event.plugin.d.ts +0 -11
- package/dist/core/commands/sd-save-command-event.plugin.d.ts.map +0 -1
- package/dist/core/commands/sd-save-command-event.plugin.js +0 -38
- package/dist/core/events/sd-intersection-event.plugin.d.ts +0 -13
- package/dist/core/events/sd-intersection-event.plugin.d.ts.map +0 -1
- package/dist/core/events/sd-intersection-event.plugin.js +0 -29
- package/dist/core/events/sd-resize-event.plugin.d.ts +0 -16
- package/dist/core/events/sd-resize-event.plugin.d.ts.map +0 -1
- package/src/core/commands/sd-insert-command-event.plugin.ts +0 -39
- package/src/core/commands/sd-refresh-command-event.plugin.ts +0 -44
- package/src/core/commands/sd-save-command-event.plugin.ts +0 -44
- package/src/core/events/sd-intersection-event.plugin.ts +0 -35
|
@@ -21,12 +21,12 @@ export function useSheetCellAgent(options: {
|
|
|
21
21
|
|
|
22
22
|
function _enterEditMode(r: number, c: number): void {
|
|
23
23
|
editModeCellAddr.set({ r, c });
|
|
24
|
-
//
|
|
25
|
-
|
|
24
|
+
// requestAnimationFrame: Angular가 edit=true로 re-render 한 뒤 focus해야 readonly가 해제된 상태
|
|
25
|
+
requestAnimationFrame(() => {
|
|
26
26
|
const cell = options.domAccessor.getCell(r, c);
|
|
27
27
|
if (cell == null) return;
|
|
28
|
-
const tabbable =cell.findFirstTabbableChild();
|
|
29
|
-
if (tabbable
|
|
28
|
+
const tabbable = cell.findFirstTabbableChild();
|
|
29
|
+
if (tabbable != null) {
|
|
30
30
|
tabbable.focus();
|
|
31
31
|
}
|
|
32
32
|
});
|
|
@@ -47,12 +47,12 @@ export function useSheetCellAgent(options: {
|
|
|
47
47
|
_exitEditMode();
|
|
48
48
|
if (enterEdit) {
|
|
49
49
|
editModeCellAddr.set({ r, c });
|
|
50
|
-
|
|
50
|
+
requestAnimationFrame(() => {
|
|
51
51
|
_isTransitioning = false;
|
|
52
52
|
const targetCell = options.domAccessor.getCell(r, c);
|
|
53
53
|
if (targetCell == null) return;
|
|
54
|
-
const tabbable =targetCell.findFirstTabbableChild();
|
|
55
|
-
if (tabbable
|
|
54
|
+
const tabbable = targetCell.findFirstTabbableChild();
|
|
55
|
+
if (tabbable != null) {
|
|
56
56
|
tabbable.focus();
|
|
57
57
|
}
|
|
58
58
|
});
|
|
@@ -211,7 +211,7 @@ export function useSheetCellAgent(options: {
|
|
|
211
211
|
_enterEditMode(addr.r, addr.c);
|
|
212
212
|
|
|
213
213
|
// Wait for edit mode to render, then paste
|
|
214
|
-
|
|
214
|
+
requestAnimationFrame(() => {
|
|
215
215
|
const cell = options.domAccessor.getCell(addr.r, addr.c);
|
|
216
216
|
if (cell == null) return;
|
|
217
217
|
const inputEl = cell.querySelector<HTMLInputElement | HTMLTextAreaElement>(
|
|
@@ -21,15 +21,11 @@ export function useSheetCellStyling<T>(options: {
|
|
|
21
21
|
return null;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
function getFixedStyle(
|
|
25
|
-
colDef: SdSheetColumnDef,
|
|
26
|
-
zIndex: number = 1,
|
|
27
|
-
background: string = "var(--control-color)",
|
|
28
|
-
): string | null {
|
|
24
|
+
function getFixedStyle(colDef: SdSheetColumnDef): string | null {
|
|
29
25
|
const leftValue = options.fixedLeftMap().get(colDef.key);
|
|
30
26
|
if (leftValue == null) return null;
|
|
31
27
|
|
|
32
|
-
return `
|
|
28
|
+
return `left: ${leftValue}px`;
|
|
33
29
|
}
|
|
34
30
|
|
|
35
31
|
const headerColumnStyles = computed(() => {
|
|
@@ -38,7 +34,7 @@ export function useSheetCellStyling<T>(options: {
|
|
|
38
34
|
const parts: string[] = [];
|
|
39
35
|
const colStyle = getColDefStyle(colDef);
|
|
40
36
|
if (colStyle != null) parts.push(colStyle);
|
|
41
|
-
const fixedStyle = getFixedStyle(colDef
|
|
37
|
+
const fixedStyle = getFixedStyle(colDef);
|
|
42
38
|
if (fixedStyle != null) parts.push(fixedStyle);
|
|
43
39
|
map.set(colDef.key, parts.length > 0 ? parts.join("; ") : null);
|
|
44
40
|
}
|
|
@@ -76,7 +72,7 @@ export function useSheetCellStyling<T>(options: {
|
|
|
76
72
|
}
|
|
77
73
|
|
|
78
74
|
function getFixedCellStyle(colDef: SdSheetColumnDef): string | null {
|
|
79
|
-
return getFixedStyle(colDef
|
|
75
|
+
return getFixedStyle(colDef);
|
|
80
76
|
}
|
|
81
77
|
|
|
82
78
|
function getCellStyleWithIndent(item: T, colDef: SdSheetColumnDef, colIdx: number): string | null {
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { injectSheetDomAccessor } from "./injectSheetDomAccessor";
|
|
2
|
+
|
|
3
|
+
export function useSheetFocusIndicator(options: {
|
|
4
|
+
domAccessor: ReturnType<typeof injectSheetDomAccessor>;
|
|
5
|
+
}) {
|
|
6
|
+
function redraw(): void {
|
|
7
|
+
const containerEl = options.domAccessor.getContainer();
|
|
8
|
+
const rowIndicatorEl = options.domAccessor.getFocusRowIndicator();
|
|
9
|
+
const cellIndicatorEl = options.domAccessor.getFocusCellIndicator();
|
|
10
|
+
|
|
11
|
+
const focusedEl = document.activeElement;
|
|
12
|
+
if (!(focusedEl instanceof HTMLElement) || !containerEl.contains(focusedEl)) {
|
|
13
|
+
cellIndicatorEl.style.display = "none";
|
|
14
|
+
rowIndicatorEl.style.display = "none";
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const tdEl =
|
|
19
|
+
focusedEl.tagName.toLowerCase() === "td" ? focusedEl : focusedEl.closest("td");
|
|
20
|
+
if (!(tdEl instanceof HTMLTableCellElement)) {
|
|
21
|
+
cellIndicatorEl.style.display = "none";
|
|
22
|
+
rowIndicatorEl.style.display = "none";
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Cell indicator
|
|
27
|
+
const isFixed = tdEl.classList.contains("_fixed");
|
|
28
|
+
const fixedScrollLeft = isFixed ? containerEl.scrollLeft : 0;
|
|
29
|
+
Object.assign(cellIndicatorEl.style, {
|
|
30
|
+
display: focusedEl.tagName.toLowerCase() === "td" ? "block" : "none",
|
|
31
|
+
position: isFixed ? "sticky" : "absolute",
|
|
32
|
+
left: tdEl.offsetLeft - fixedScrollLeft - 2 + "px",
|
|
33
|
+
width: tdEl.offsetWidth + 3 + "px",
|
|
34
|
+
height: tdEl.offsetHeight + 3 + "px",
|
|
35
|
+
opacity: "1",
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
// Row indicator
|
|
39
|
+
const trEl = tdEl.parentElement!;
|
|
40
|
+
Object.assign(rowIndicatorEl.style, {
|
|
41
|
+
display: "block",
|
|
42
|
+
top: trEl.offsetTop - 2 + "px",
|
|
43
|
+
left: trEl.offsetLeft + "px",
|
|
44
|
+
width: trEl.offsetWidth + "px",
|
|
45
|
+
height: trEl.offsetHeight + 3 + "px",
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
// Dim cell indicator when behind sticky header or fixed columns
|
|
49
|
+
if (!(focusedEl instanceof HTMLTableCellElement)) return;
|
|
50
|
+
if (focusedEl.classList.contains("_fixed")) return;
|
|
51
|
+
|
|
52
|
+
const theadEl = options.domAccessor.getTHead();
|
|
53
|
+
const fixedHeaderEls = options.domAccessor.getLastDepthFixedHeaders();
|
|
54
|
+
|
|
55
|
+
const fixedAreaTop = theadEl.offsetHeight;
|
|
56
|
+
const fixedAreaLeft = fixedHeaderEls.reduce((sum, el) => sum + el.offsetWidth, 0);
|
|
57
|
+
|
|
58
|
+
const indicatorTop = rowIndicatorEl.offsetTop - containerEl.scrollTop + 2;
|
|
59
|
+
const indicatorLeft = cellIndicatorEl.offsetLeft - containerEl.scrollLeft + 2;
|
|
60
|
+
|
|
61
|
+
cellIndicatorEl.style.opacity =
|
|
62
|
+
indicatorTop < fixedAreaTop || indicatorLeft < fixedAreaLeft - 1 ? ".3" : "1";
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return { redraw };
|
|
66
|
+
}
|
|
@@ -31,18 +31,18 @@ export interface SdStatePresetDef {
|
|
|
31
31
|
template: `
|
|
32
32
|
<div class="_sd-state-preset">
|
|
33
33
|
<sd-anchor (click)="onAddClick()" class="_add-btn">
|
|
34
|
-
<ng-icon [svg]="tablerStar" />
|
|
34
|
+
<ng-icon [svg]="tablerStar" class="tx-theme-warning-default" />
|
|
35
35
|
</sd-anchor>
|
|
36
36
|
@for (preset of _presets(); track preset.name) {
|
|
37
37
|
<div class="_preset-item">
|
|
38
|
-
<sd-anchor class="_preset-name" (click)="onPresetClick(preset)">
|
|
38
|
+
<sd-anchor class="_preset-name tx-trans-default" (click)="onPresetClick(preset)">
|
|
39
39
|
{{ preset.name }}
|
|
40
40
|
</sd-anchor>
|
|
41
41
|
<sd-anchor class="_preset-save" (click)="onSaveClick(preset)">
|
|
42
|
-
<ng-icon [svg]="tablerDeviceFloppy" />
|
|
42
|
+
<ng-icon [svg]="tablerDeviceFloppy" [size]="'1em'" />
|
|
43
43
|
</sd-anchor>
|
|
44
44
|
<sd-anchor class="_preset-delete" [theme]="'danger'" (click)="onDeleteClick(preset)">
|
|
45
|
-
<ng-icon [svg]="tablerX" />
|
|
45
|
+
<ng-icon [svg]="tablerX" [size]="'1em'" />
|
|
46
46
|
</sd-anchor>
|
|
47
47
|
</div>
|
|
48
48
|
}
|
|
@@ -51,7 +51,8 @@ export interface SdStatePresetDef {
|
|
|
51
51
|
styles: [
|
|
52
52
|
/* language=SCSS */ `
|
|
53
53
|
sd-state-preset {
|
|
54
|
-
display: block;
|
|
54
|
+
display: inline-block;
|
|
55
|
+
vertical-align: top;
|
|
55
56
|
|
|
56
57
|
> ._sd-state-preset {
|
|
57
58
|
display: flex;
|
|
@@ -60,36 +61,48 @@ export interface SdStatePresetDef {
|
|
|
60
61
|
flex-wrap: wrap;
|
|
61
62
|
|
|
62
63
|
> ._add-btn {
|
|
63
|
-
|
|
64
|
+
line-height: var(--line-height);
|
|
65
|
+
border: 1px solid transparent;
|
|
66
|
+
padding: var(--gap-sm) var(--gap-default);
|
|
64
67
|
}
|
|
65
68
|
|
|
66
69
|
> ._preset-item {
|
|
67
70
|
display: inline-flex;
|
|
68
71
|
align-items: center;
|
|
69
72
|
gap: var(--gap-xs);
|
|
70
|
-
|
|
71
|
-
border
|
|
72
|
-
|
|
73
|
+
line-height: var(--line-height);
|
|
74
|
+
border: 1px solid transparent;
|
|
75
|
+
border-radius: var(--border-radius-lg);
|
|
76
|
+
padding: var(--gap-sm) var(--gap-default);
|
|
77
|
+
background: var(--theme-gray-lightest);
|
|
78
|
+
|
|
79
|
+
&:hover {
|
|
80
|
+
background: var(--theme-gray-lighter);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
> sd-anchor {
|
|
84
|
+
padding: 0 var(--gap-sm);
|
|
85
|
+
}
|
|
73
86
|
}
|
|
74
87
|
}
|
|
75
88
|
|
|
76
89
|
&[data-sd-size="sm"] > ._sd-state-preset {
|
|
77
90
|
> ._add-btn {
|
|
78
|
-
padding: var(--gap-
|
|
91
|
+
padding: var(--gap-xs) var(--gap-default);
|
|
79
92
|
}
|
|
80
93
|
|
|
81
94
|
> ._preset-item {
|
|
82
|
-
padding: var(--gap-
|
|
95
|
+
padding: var(--gap-xs) var(--gap-default);
|
|
83
96
|
}
|
|
84
97
|
}
|
|
85
98
|
|
|
86
99
|
&[data-sd-size="lg"] > ._sd-state-preset {
|
|
87
100
|
> ._add-btn {
|
|
88
|
-
padding: var(--gap-
|
|
101
|
+
padding: var(--gap-default) var(--gap-lg);
|
|
89
102
|
}
|
|
90
103
|
|
|
91
104
|
> ._preset-item {
|
|
92
|
-
padding: var(--gap-
|
|
105
|
+
padding: var(--gap-default) var(--gap-lg);
|
|
93
106
|
}
|
|
94
107
|
}
|
|
95
108
|
}
|
|
@@ -94,7 +94,7 @@ function loadDaumPostcodeScript(): Promise<void> {
|
|
|
94
94
|
imports: [SdBusyContainer],
|
|
95
95
|
template: `
|
|
96
96
|
<sd-busy-container [busy]="!initialized()">
|
|
97
|
-
@if (errorMessage()
|
|
97
|
+
@if (errorMessage() != null) {
|
|
98
98
|
<div class="_error">{{ errorMessage() }}</div>
|
|
99
99
|
} @else {
|
|
100
100
|
<div #content style="min-height: 100px;"></div>
|
|
@@ -101,7 +101,7 @@ const DEFAULT_EXTENSIONS: AnyExtension[] = [
|
|
|
101
101
|
<button type="button" data-cmd="clean" (click)="execCmd('clean')">Tx</button>
|
|
102
102
|
</div>
|
|
103
103
|
</div>
|
|
104
|
-
@if (colorPickerMode()
|
|
104
|
+
@if (colorPickerMode() != undefined) {
|
|
105
105
|
<div class="_color-picker">
|
|
106
106
|
@for (color of colorPresets; track color) {
|
|
107
107
|
<button type="button" class="_color-swatch"
|
|
@@ -271,10 +271,10 @@ export class SdTiptapEditor {
|
|
|
271
271
|
|
|
272
272
|
private readonly _resolvedExtensions = computed(() => {
|
|
273
273
|
const custom = this.extensions();
|
|
274
|
-
if (custom
|
|
274
|
+
if (custom != null) return custom;
|
|
275
275
|
|
|
276
276
|
const ph = this.placeholder();
|
|
277
|
-
if (ph
|
|
277
|
+
if (ph != null) {
|
|
278
278
|
return [...DEFAULT_EXTENSIONS, Placeholder.configure({ placeholder: ph })];
|
|
279
279
|
}
|
|
280
280
|
return DEFAULT_EXTENSIONS;
|
|
@@ -325,7 +325,7 @@ export class SdTiptapEditor {
|
|
|
325
325
|
|
|
326
326
|
if (this.validatorFn()) {
|
|
327
327
|
const message = this.validatorFn()!(this.value());
|
|
328
|
-
if (message
|
|
328
|
+
if (message != null) {
|
|
329
329
|
errorMessages.push(message);
|
|
330
330
|
}
|
|
331
331
|
}
|
|
@@ -151,13 +151,13 @@ export function useTiptapToolbar(opt: TiptapToolbarOptions): {
|
|
|
151
151
|
const chain = ed.chain().focus();
|
|
152
152
|
const mode = colorPickerMode();
|
|
153
153
|
if (mode === "text") {
|
|
154
|
-
if (color
|
|
154
|
+
if (color != null) {
|
|
155
155
|
chain.setColor(color).run();
|
|
156
156
|
} else {
|
|
157
157
|
chain.unsetColor().run();
|
|
158
158
|
}
|
|
159
159
|
} else if (mode === "bg") {
|
|
160
|
-
if (color
|
|
160
|
+
if (color != null) {
|
|
161
161
|
chain.setHighlight({ color }).run();
|
|
162
162
|
} else {
|
|
163
163
|
chain.unsetHighlight().run();
|
|
@@ -157,7 +157,7 @@ export class SdCalendar<T> {
|
|
|
157
157
|
const item = this.items()[i];
|
|
158
158
|
const tick = getDateFn(item, i).tick;
|
|
159
159
|
const arr = itemsByTick.get(tick);
|
|
160
|
-
if (arr
|
|
160
|
+
if (arr != null) {
|
|
161
161
|
arr.push(item);
|
|
162
162
|
} else {
|
|
163
163
|
itemsByTick.set(tick, [item]);
|
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
ViewEncapsulation,
|
|
12
12
|
} from "@angular/core";
|
|
13
13
|
import * as echarts from "echarts";
|
|
14
|
+
import { SdResizeDirective } from "../../core/events/sd-resize";
|
|
14
15
|
|
|
15
16
|
@Component({
|
|
16
17
|
selector: "sd-echarts",
|
|
@@ -18,6 +19,7 @@ import * as echarts from "echarts";
|
|
|
18
19
|
encapsulation: ViewEncapsulation.None,
|
|
19
20
|
standalone: true,
|
|
20
21
|
imports: [],
|
|
22
|
+
hostDirectives: [{ directive: SdResizeDirective, outputs: ["sdResize"] }],
|
|
21
23
|
host: {
|
|
22
24
|
"(sdResize)": "onHostResize()",
|
|
23
25
|
},
|
package/src/index.ts
CHANGED
|
@@ -19,17 +19,15 @@ export type {
|
|
|
19
19
|
|
|
20
20
|
// core/events
|
|
21
21
|
export { SdOptionEventPlugin } from "./core/events/sd-option-event.plugin";
|
|
22
|
-
export {
|
|
22
|
+
export { SdResizeDirective, type SdResizeEvent } from "./core/events/sd-resize";
|
|
23
23
|
export {
|
|
24
|
-
|
|
24
|
+
SdIntersectionDirective,
|
|
25
25
|
type SdIntersectionEvent,
|
|
26
|
-
} from "./core/events/sd-intersection
|
|
26
|
+
} from "./core/events/sd-intersection";
|
|
27
27
|
export { SdEvents } from "./core/events/sd-events";
|
|
28
28
|
|
|
29
29
|
// core/commands
|
|
30
|
-
export {
|
|
31
|
-
export { SdRefreshCommandEventPlugin } from "./core/commands/sd-refresh-command-event.plugin";
|
|
32
|
-
export { SdInsertCommandEventPlugin } from "./core/commands/sd-insert-command-event.plugin";
|
|
30
|
+
export { SdCommandDirective } from "./core/commands/sd-command";
|
|
33
31
|
|
|
34
32
|
// core/error-handler
|
|
35
33
|
export { SdGlobalErrorHandlerPlugin } from "./core/error-handler/sd-global-error-handler.plugin";
|
|
@@ -40,7 +40,7 @@ import { tablerAlertTriangle } from "@ng-icons/tabler-icons";
|
|
|
40
40
|
],
|
|
41
41
|
template: `
|
|
42
42
|
<sd-busy-container [busy]="busy()" [message]="busyMessage()">
|
|
43
|
-
@if (initialized()
|
|
43
|
+
@if (initialized() == null || initialized()) {
|
|
44
44
|
@if (restricted()) {
|
|
45
45
|
<div class="fill tx-theme-gray-light p-xxl tx-center">
|
|
46
46
|
<br />
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
ViewEncapsulation,
|
|
12
12
|
} from "@angular/core";
|
|
13
13
|
import { injectSdSystemConfigResource } from "../../core/config/injectSdSystemConfigResource";
|
|
14
|
-
import type
|
|
14
|
+
import { SdResizeDirective, type SdResizeEvent } from "../../core/events/sd-resize";
|
|
15
15
|
|
|
16
16
|
@Component({
|
|
17
17
|
selector: "sd-dock",
|
|
@@ -19,10 +19,11 @@ import type { SdResizeEvent } from "../../core/events/sd-resize-event.plugin";
|
|
|
19
19
|
encapsulation: ViewEncapsulation.None,
|
|
20
20
|
standalone: true,
|
|
21
21
|
imports: [],
|
|
22
|
+
hostDirectives: [{ directive: SdResizeDirective, outputs: ["sdResize"] }],
|
|
22
23
|
host: {
|
|
23
24
|
"[attr.data-sd-position]": "position()",
|
|
24
25
|
"[attr.data-sd-resizable]": "resizable()",
|
|
25
|
-
"(sdResize)": "onHostResize($
|
|
26
|
+
"(sdResize)": "onHostResize($event)",
|
|
26
27
|
},
|
|
27
28
|
template: `
|
|
28
29
|
<ng-content></ng-content>
|
|
@@ -14,7 +14,7 @@ import { filter } from "rxjs";
|
|
|
14
14
|
},
|
|
15
15
|
template: `
|
|
16
16
|
<ng-content />
|
|
17
|
-
<div class="_backdrop" (
|
|
17
|
+
<div class="_backdrop" tabindex="0" role="button" (click)="onBackdropClick()" (keydown.enter)="onBackdropClick()"></div>
|
|
18
18
|
`,
|
|
19
19
|
styles: [
|
|
20
20
|
/* language=SCSS */ `
|
|
@@ -87,6 +87,6 @@ export class SdSidebarContainer {
|
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
onBackdropClick(): void {
|
|
90
|
-
this.toggle.
|
|
90
|
+
this.toggle.update((v) => !v);
|
|
91
91
|
}
|
|
92
92
|
}
|
|
@@ -42,6 +42,7 @@ import { NgIcon } from "@ng-icons/core";
|
|
|
42
42
|
<ng-template #itemTpl [typed]="itemTemplateType" let-currMenus="menus" let-depth="depth">
|
|
43
43
|
@for (menu of currMenus; track menu.codeChain.join(".")) {
|
|
44
44
|
<sd-list-item
|
|
45
|
+
[contentClass]="depth === 0 ? 'pv-default' : ''"
|
|
45
46
|
[style.text-indent.em]="depth > 0 ? (depth + 1) * 0.5 : undefined"
|
|
46
47
|
[sdRouterLink]="getMenuRouterLinkOption(menu)"
|
|
47
48
|
(click)="onMenuClick(menu)"
|
|
@@ -76,9 +77,6 @@ import { NgIcon } from "@ng-icons/core";
|
|
|
76
77
|
background: var(--trans-lightest);
|
|
77
78
|
}
|
|
78
79
|
|
|
79
|
-
> sd-list-item > ._content {
|
|
80
|
-
padding-block: var(--gap-default);
|
|
81
|
-
}
|
|
82
80
|
}
|
|
83
81
|
|
|
84
82
|
&:not([data-sd-root-layout="accordion"]) {
|
|
@@ -41,6 +41,15 @@ import { tablerCaretDown } from "@ng-icons/tabler-icons";
|
|
|
41
41
|
host: {
|
|
42
42
|
"class": "flex-row gap-sm",
|
|
43
43
|
},
|
|
44
|
+
styles: [
|
|
45
|
+
/* language=SCSS */ `
|
|
46
|
+
sd-topbar-menu {
|
|
47
|
+
sd-list sd-list {
|
|
48
|
+
background: var(--trans-lightest);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
`,
|
|
52
|
+
],
|
|
44
53
|
template: `
|
|
45
54
|
@for (menu of menus(); track menu.codeChain.join("."); let i = $index) {
|
|
46
55
|
<sd-dropdown>
|
|
@@ -83,7 +92,7 @@ import { tablerCaretDown } from "@ng-icons/tabler-icons";
|
|
|
83
92
|
[sdRouterLink]="getMenuRouterLinkOption(menu)"
|
|
84
93
|
(click)="onMenuClick(menu, dropdownIndex)"
|
|
85
94
|
[selected]="getIsMenuSelected(menu)"
|
|
86
|
-
[
|
|
95
|
+
[layout]="'flat'"
|
|
87
96
|
>
|
|
88
97
|
@if (menu.icon) {
|
|
89
98
|
<ng-icon [svg]="menu.icon" />
|
|
@@ -106,19 +115,6 @@ import { tablerCaretDown } from "@ng-icons/tabler-icons";
|
|
|
106
115
|
}
|
|
107
116
|
</ng-template>
|
|
108
117
|
`,
|
|
109
|
-
styles: [
|
|
110
|
-
/* language=SCSS */ `
|
|
111
|
-
sd-topbar-menu {
|
|
112
|
-
sd-dropdown-popup {
|
|
113
|
-
sd-list[data-sd-inset="true"] {
|
|
114
|
-
sd-list {
|
|
115
|
-
background: var(--trans-lightest);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
`,
|
|
121
|
-
],
|
|
122
118
|
})
|
|
123
119
|
export class SdTopbarMenu {
|
|
124
120
|
menus = input<SdMenu[]>([]);
|
|
@@ -143,7 +139,7 @@ export class SdTopbarMenu {
|
|
|
143
139
|
window.open(menu.url, "_blank");
|
|
144
140
|
}
|
|
145
141
|
|
|
146
|
-
if (menu.children
|
|
142
|
+
if (menu.children == null) {
|
|
147
143
|
this._dropdowns()[dropdownIndex].open.set(false);
|
|
148
144
|
}
|
|
149
145
|
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { EventManagerPlugin } from "@angular/platform-browser";
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class SdInsertCommandEventPlugin extends EventManagerPlugin {
|
|
4
|
-
private readonly _document;
|
|
5
|
-
constructor();
|
|
6
|
-
supports(eventName: string): boolean;
|
|
7
|
-
addEventListener(element: HTMLElement, eventName: string, handler: (event: Event) => void): () => void;
|
|
8
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SdInsertCommandEventPlugin, never>;
|
|
9
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<SdInsertCommandEventPlugin>;
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=sd-insert-command-event.plugin.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sd-insert-command-event.plugin.d.ts","sourceRoot":"","sources":["../../../src/core/commands/sd-insert-command-event.plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;;AAI/D,qBACa,0BAA2B,SAAQ,kBAAkB;IAChE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;;IAMrC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIpC,gBAAgB,CACvB,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAC9B,MAAM,IAAI;yCAfF,0BAA0B;6CAA1B,0BAA0B;CAgCtC"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { inject, Injectable } from "@angular/core";
|
|
2
|
-
import { EventManagerPlugin } from "@angular/platform-browser";
|
|
3
|
-
import { DOCUMENT } from "@angular/common";
|
|
4
|
-
import { shouldProcessCommandEvent } from "./findTopOpenModalEl";
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class SdInsertCommandEventPlugin extends EventManagerPlugin {
|
|
7
|
-
_document = inject(DOCUMENT);
|
|
8
|
-
constructor() {
|
|
9
|
-
super(inject(DOCUMENT));
|
|
10
|
-
}
|
|
11
|
-
supports(eventName) {
|
|
12
|
-
return eventName === "sdInsertCommand";
|
|
13
|
-
}
|
|
14
|
-
addEventListener(element, eventName, handler) {
|
|
15
|
-
const listener = (event) => {
|
|
16
|
-
if (event.key === "Insert" && event.ctrlKey && !event.altKey && !event.shiftKey) {
|
|
17
|
-
if (!shouldProcessCommandEvent(this._document, element))
|
|
18
|
-
return;
|
|
19
|
-
event.preventDefault();
|
|
20
|
-
event.stopPropagation();
|
|
21
|
-
handler(event);
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
this._document.addEventListener("keydown", listener);
|
|
25
|
-
return () => {
|
|
26
|
-
this._document.removeEventListener("keydown", listener);
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
static ɵfac = function SdInsertCommandEventPlugin_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SdInsertCommandEventPlugin)(); };
|
|
30
|
-
static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: SdInsertCommandEventPlugin, factory: SdInsertCommandEventPlugin.ɵfac, providedIn: null });
|
|
31
|
-
}
|
|
32
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdInsertCommandEventPlugin, [{
|
|
33
|
-
type: Injectable,
|
|
34
|
-
args: [{ providedIn: null }]
|
|
35
|
-
}], () => [], null); })();
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { EventManagerPlugin } from "@angular/platform-browser";
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class SdRefreshCommandEventPlugin extends EventManagerPlugin {
|
|
4
|
-
private readonly _document;
|
|
5
|
-
constructor();
|
|
6
|
-
supports(eventName: string): eventName is "sdRefreshCommand";
|
|
7
|
-
addEventListener(element: HTMLElement, eventName: string, handler: (event: Event) => void): () => void;
|
|
8
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SdRefreshCommandEventPlugin, never>;
|
|
9
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<SdRefreshCommandEventPlugin>;
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=sd-refresh-command-event.plugin.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sd-refresh-command-event.plugin.d.ts","sourceRoot":"","sources":["../../../src/core/commands/sd-refresh-command-event.plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;;AAI/D,qBACa,2BAA4B,SAAQ,kBAAkB;IACjE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;;IAMrC,QAAQ,CAAC,SAAS,EAAE,MAAM;IAI1B,gBAAgB,CACvB,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAC9B,MAAM,IAAI;yCAfF,2BAA2B;6CAA3B,2BAA2B;CAqCvC"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { inject, Injectable } from "@angular/core";
|
|
2
|
-
import { EventManagerPlugin } from "@angular/platform-browser";
|
|
3
|
-
import { DOCUMENT } from "@angular/common";
|
|
4
|
-
import { shouldProcessCommandEvent } from "./findTopOpenModalEl";
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class SdRefreshCommandEventPlugin extends EventManagerPlugin {
|
|
7
|
-
_document = inject(DOCUMENT);
|
|
8
|
-
constructor() {
|
|
9
|
-
super(inject(DOCUMENT));
|
|
10
|
-
}
|
|
11
|
-
supports(eventName) {
|
|
12
|
-
return eventName === "sdRefreshCommand";
|
|
13
|
-
}
|
|
14
|
-
addEventListener(element, eventName, handler) {
|
|
15
|
-
const listener = (event) => {
|
|
16
|
-
if ((event.key === "l" || event.key === "L") &&
|
|
17
|
-
event.ctrlKey &&
|
|
18
|
-
event.altKey &&
|
|
19
|
-
!event.shiftKey) {
|
|
20
|
-
if (!shouldProcessCommandEvent(this._document, element))
|
|
21
|
-
return;
|
|
22
|
-
event.preventDefault();
|
|
23
|
-
event.stopPropagation();
|
|
24
|
-
handler(event);
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
this._document.addEventListener("keydown", listener);
|
|
28
|
-
return () => {
|
|
29
|
-
this._document.removeEventListener("keydown", listener);
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
static ɵfac = function SdRefreshCommandEventPlugin_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SdRefreshCommandEventPlugin)(); };
|
|
33
|
-
static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: SdRefreshCommandEventPlugin, factory: SdRefreshCommandEventPlugin.ɵfac, providedIn: null });
|
|
34
|
-
}
|
|
35
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdRefreshCommandEventPlugin, [{
|
|
36
|
-
type: Injectable,
|
|
37
|
-
args: [{ providedIn: null }]
|
|
38
|
-
}], () => [], null); })();
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { EventManagerPlugin } from "@angular/platform-browser";
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class SdSaveCommandEventPlugin extends EventManagerPlugin {
|
|
4
|
-
private readonly _document;
|
|
5
|
-
constructor();
|
|
6
|
-
supports(eventName: string): eventName is "sdSaveCommand";
|
|
7
|
-
addEventListener(element: HTMLElement, eventName: string, handler: (event: Event) => void): () => void;
|
|
8
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SdSaveCommandEventPlugin, never>;
|
|
9
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<SdSaveCommandEventPlugin>;
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=sd-save-command-event.plugin.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sd-save-command-event.plugin.d.ts","sourceRoot":"","sources":["../../../src/core/commands/sd-save-command-event.plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;;AAI/D,qBACa,wBAAyB,SAAQ,kBAAkB;IAC9D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;;IAMrC,QAAQ,CAAC,SAAS,EAAE,MAAM;IAI1B,gBAAgB,CACvB,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAC9B,MAAM,IAAI;yCAfF,wBAAwB;6CAAxB,wBAAwB;CAqCpC"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { inject, Injectable } from "@angular/core";
|
|
2
|
-
import { EventManagerPlugin } from "@angular/platform-browser";
|
|
3
|
-
import { DOCUMENT } from "@angular/common";
|
|
4
|
-
import { shouldProcessCommandEvent } from "./findTopOpenModalEl";
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class SdSaveCommandEventPlugin extends EventManagerPlugin {
|
|
7
|
-
_document = inject(DOCUMENT);
|
|
8
|
-
constructor() {
|
|
9
|
-
super(inject(DOCUMENT));
|
|
10
|
-
}
|
|
11
|
-
supports(eventName) {
|
|
12
|
-
return eventName === "sdSaveCommand";
|
|
13
|
-
}
|
|
14
|
-
addEventListener(element, eventName, handler) {
|
|
15
|
-
const listener = (event) => {
|
|
16
|
-
if ((event.key === "s" || event.key === "S") &&
|
|
17
|
-
event.ctrlKey &&
|
|
18
|
-
!event.altKey &&
|
|
19
|
-
!event.shiftKey) {
|
|
20
|
-
if (!shouldProcessCommandEvent(this._document, element))
|
|
21
|
-
return;
|
|
22
|
-
event.preventDefault();
|
|
23
|
-
event.stopPropagation();
|
|
24
|
-
handler(event);
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
this._document.addEventListener("keydown", listener);
|
|
28
|
-
return () => {
|
|
29
|
-
this._document.removeEventListener("keydown", listener);
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
static ɵfac = function SdSaveCommandEventPlugin_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SdSaveCommandEventPlugin)(); };
|
|
33
|
-
static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: SdSaveCommandEventPlugin, factory: SdSaveCommandEventPlugin.ɵfac, providedIn: null });
|
|
34
|
-
}
|
|
35
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdSaveCommandEventPlugin, [{
|
|
36
|
-
type: Injectable,
|
|
37
|
-
args: [{ providedIn: null }]
|
|
38
|
-
}], () => [], null); })();
|