@simplysm/angular 14.0.6 → 14.0.8
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/core/directives/sd-router-link.directive.d.ts.map +1 -1
- package/dist/core/directives/sd-router-link.directive.js +5 -10
- package/dist/core/plugins/events/sd-resize-event.plugin.d.ts.map +1 -1
- package/dist/core/plugins/events/sd-resize-event.plugin.js +3 -0
- package/dist/core/plugins/sd-global-error-handler.plugin.d.ts +1 -0
- package/dist/core/plugins/sd-global-error-handler.plugin.d.ts.map +1 -1
- package/dist/core/plugins/sd-global-error-handler.plugin.js +4 -0
- package/dist/core/providers/sd-app-structure.provider.d.ts.map +1 -1
- package/dist/core/providers/sd-app-structure.provider.js +4 -1
- package/dist/core/providers/sd-navigate-window.provider.d.ts +2 -1
- package/dist/core/providers/sd-navigate-window.provider.d.ts.map +1 -1
- package/dist/core/providers/sd-navigate-window.provider.js +13 -10
- 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/setups/setupCanDeactivate.d.ts.map +1 -1
- package/dist/core/utils/setups/setupCanDeactivate.js +9 -2
- package/dist/core/utils/setups/setupInvalid.d.ts.map +1 -1
- package/dist/core/utils/setups/setupInvalid.js +4 -0
- package/dist/core/utils/setups/setupModelHook.d.ts +1 -1
- package/dist/core/utils/setups/setupModelHook.d.ts.map +1 -1
- package/dist/core/utils/setups/setupModelHook.js +5 -1
- package/dist/core/utils/setups/setupRipple.d.ts.map +1 -1
- package/dist/core/utils/setups/setupRipple.js +3 -2
- package/dist/core/utils/useExpandingManager.d.ts.map +1 -1
- package/dist/core/utils/useExpandingManager.js +2 -1
- package/dist/core/utils/useSdSystemConfigResource.d.ts.map +1 -1
- package/dist/core/utils/useSdSystemConfigResource.js +6 -3
- 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/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/ui/data/list/sd-list-item.control.js +1 -1
- package/dist/ui/data/sheet/sd-sheet.control.d.ts +2 -1
- package/dist/ui/data/sheet/sd-sheet.control.d.ts.map +1 -1
- package/dist/ui/data/sheet/sd-sheet.control.js +16 -13
- 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/useSheetLayoutEngine.d.ts.map +1 -1
- package/dist/ui/data/sheet/useSheetLayoutEngine.js +1 -0
- package/dist/ui/form/editor/sd-tiptap-editor.control.d.ts +5 -5
- package/dist/ui/form/editor/sd-tiptap-editor.control.d.ts.map +1 -1
- package/dist/ui/form/editor/sd-tiptap-editor.control.js +79 -78
- package/dist/ui/form/input/sd-date-range.picker.d.ts.map +1 -1
- package/dist/ui/form/input/sd-date-range.picker.js +4 -3
- package/dist/ui/form/input/sd-textfield-type-handlers.d.ts.map +1 -1
- package/dist/ui/form/input/sd-textfield-type-handlers.js +21 -2
- package/dist/ui/form/input/sd-textfield.control.d.ts.map +1 -1
- package/dist/ui/form/input/sd-textfield.control.js +1 -0
- 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-lane.control.d.ts.map +1 -1
- package/dist/ui/layout/kanban/sd-kanban-lane.control.js +7 -1
- package/dist/ui/layout/sd-gap.control.d.ts +2 -2
- package/dist/ui/navigation/pagination/sd-pagination.control.d.ts.map +1 -1
- package/dist/ui/navigation/pagination/sd-pagination.control.js +7 -3
- package/dist/ui/navigation/sidebar/sd-sidebar-container.control.js +1 -1
- package/dist/ui/overlay/dropdown/sd-dropdown-popup.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 +11 -3
- package/dist/ui/overlay/modal/sd-modal.provider.d.ts +1 -1
- package/dist/ui/overlay/modal/sd-modal.provider.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-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/providers.md +1 -1
- package/docs/setup-functions.md +1 -1
- package/package.json +7 -10
- package/src/core/directives/sd-router-link.directive.ts +5 -13
- package/src/core/plugins/events/sd-resize-event.plugin.ts +3 -0
- package/src/core/plugins/sd-global-error-handler.plugin.ts +4 -0
- package/src/core/providers/sd-app-structure.provider.ts +4 -1
- package/src/core/providers/sd-navigate-window.provider.ts +12 -13
- package/src/core/utils/injectParent.ts +41 -0
- package/src/core/utils/setups/setupCanDeactivate.ts +10 -2
- package/src/core/utils/setups/setupInvalid.ts +5 -0
- package/src/core/utils/setups/setupModelHook.ts +5 -2
- package/src/core/utils/setups/setupRipple.ts +3 -2
- package/src/core/utils/useExpandingManager.ts +2 -1
- package/src/core/utils/useSdSystemConfigResource.ts +6 -3
- package/src/features/base/sd-base-container.control.ts +113 -0
- package/src/index.ts +4 -0
- package/src/ui/data/list/sd-list-item.control.ts +1 -1
- package/src/ui/data/sheet/sd-sheet.control.ts +17 -13
- package/src/ui/data/sheet/useSheetCellAgent.ts +1 -2
- package/src/ui/data/sheet/useSheetLayoutEngine.ts +1 -0
- package/src/ui/form/editor/sd-tiptap-editor.control.ts +64 -61
- package/src/ui/form/input/sd-date-range.picker.ts +4 -3
- package/src/ui/form/input/sd-textfield-type-handlers.ts +25 -5
- package/src/ui/form/input/sd-textfield.control.ts +1 -0
- 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 +10 -1
- package/src/ui/overlay/modal/sd-modal.provider.ts +1 -1
- package/src/ui/overlay/toast/sd-toast.provider.ts +9 -3
- package/src/ui/visual/sd-progress.control.ts +4 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-router-link.directive.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\core\\directives\\sd-router-link.directive.ts"],"names":[],"mappings":";AAIA,qBAQa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoC;IAE/D,MAAM;cAEM,MAAM;iBACH,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;iBACtB;YACP,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,MAAM,CAAC,EAAE,MAAM,CAAC;SACjB;qBACY,MAAM;sBACL,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;mBAGA;IAEpC,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;yCAlBpC,qBAAqB;2CAArB,qBAAqB;
|
|
1
|
+
{"version":3,"file":"sd-router-link.directive.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\core\\directives\\sd-router-link.directive.ts"],"names":[],"mappings":";AAIA,qBAQa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoC;IAE/D,MAAM;cAEM,MAAM;iBACH,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;iBACtB;YACP,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,MAAM,CAAC,EAAE,MAAM,CAAC;SACjB;qBACY,MAAM;sBACL,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;mBAGA;IAEpC,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;yCAlBpC,qBAAqB;2CAArB,qBAAqB;CA4DjC"}
|
|
@@ -10,6 +10,9 @@ export class SdRouterLinkDirective {
|
|
|
10
10
|
const option = this.option();
|
|
11
11
|
if (!option)
|
|
12
12
|
return;
|
|
13
|
+
// Alt+click → 무시 (Chrome 표준: 다운로드, SPA에서는 해당 없음)
|
|
14
|
+
if (event.altKey)
|
|
15
|
+
return;
|
|
13
16
|
event.preventDefault();
|
|
14
17
|
event.stopPropagation();
|
|
15
18
|
if (this._navWindow.isWindow) {
|
|
@@ -20,19 +23,11 @@ export class SdRouterLinkDirective {
|
|
|
20
23
|
: "";
|
|
21
24
|
this._navWindow.open(option.link + qp, option.params, `width=${width},height=${height}`);
|
|
22
25
|
}
|
|
23
|
-
else if (event.ctrlKey || event.
|
|
24
|
-
const qp = option.queryParams
|
|
25
|
-
? "?" + new URLSearchParams(option.queryParams).toString()
|
|
26
|
-
: "";
|
|
27
|
-
this._navWindow.open(option.link + qp, option.params, "_blank");
|
|
28
|
-
}
|
|
29
|
-
else if (event.shiftKey) {
|
|
30
|
-
const width = option.window?.width ?? 800;
|
|
31
|
-
const height = option.window?.height ?? 800;
|
|
26
|
+
else if (event.ctrlKey || event.shiftKey) {
|
|
32
27
|
const qp = option.queryParams
|
|
33
28
|
? "?" + new URLSearchParams(option.queryParams).toString()
|
|
34
29
|
: "";
|
|
35
|
-
this._navWindow.open(option.link + qp, option.params
|
|
30
|
+
this._navWindow.open(option.link + qp, option.params);
|
|
36
31
|
}
|
|
37
32
|
else if (option.outletName === undefined) {
|
|
38
33
|
await this._router.navigate([option.link, ...(option.params ? [option.params] : [])], option.queryParams ? { queryParams: option.queryParams } : undefined);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-resize-event.plugin.d.ts","sourceRoot":"","sources":["..\\..\\..\\..\\src\\core\\plugins\\events\\sd-resize-event.plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;;AAG/D,qBACa,mBAAoB,SAAQ,kBAAkB;;IAKhD,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIpC,gBAAgB,CACvB,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GACvC,MAAM,IAAI;yCAbF,mBAAmB;6CAAnB,mBAAmB;
|
|
1
|
+
{"version":3,"file":"sd-resize-event.plugin.d.ts","sourceRoot":"","sources":["..\\..\\..\\..\\src\\core\\plugins\\events\\sd-resize-event.plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;;AAG/D,qBACa,mBAAoB,SAAQ,kBAAkB;;IAKhD,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIpC,gBAAgB,CACvB,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GACvC,MAAM,IAAI;yCAbF,mBAAmB;6CAAnB,mBAAmB;CAgD/B;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,eAAe,CAAC;CAC9B"}
|
|
@@ -3,6 +3,7 @@ import * as i0 from "@angular/core";
|
|
|
3
3
|
export declare class SdGlobalErrorHandlerPlugin implements ErrorHandler {
|
|
4
4
|
private readonly _envInjector;
|
|
5
5
|
private readonly _systemLog;
|
|
6
|
+
private _hasDisplayedError;
|
|
6
7
|
handleError(event: any): false | undefined;
|
|
7
8
|
private _displayErrorMessage;
|
|
8
9
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdGlobalErrorHandlerPlugin, never>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-global-error-handler.plugin.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\core\\plugins\\sd-global-error-handler.plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EAIb,MAAM,eAAe,CAAC;;AAGvB,qBACa,0BAA2B,YAAW,YAAY;IAC7D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA+B;IAC5D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA+B;
|
|
1
|
+
{"version":3,"file":"sd-global-error-handler.plugin.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\core\\plugins\\sd-global-error-handler.plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EAIb,MAAM,eAAe,CAAC;;AAGvB,qBACa,0BAA2B,YAAW,YAAY;IAC7D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA+B;IAC5D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA+B;IAC1D,OAAO,CAAC,kBAAkB,CAAS;IAEnC,WAAW,CAAC,KAAK,EAAE,GAAG;IAoEtB,OAAO,CAAC,oBAAoB;yCAzEjB,0BAA0B;6CAA1B,0BAA0B;CAiHtC"}
|
|
@@ -4,6 +4,7 @@ import * as i0 from "@angular/core";
|
|
|
4
4
|
export class SdGlobalErrorHandlerPlugin {
|
|
5
5
|
_envInjector = inject(EnvironmentInjector);
|
|
6
6
|
_systemLog = inject(SdSystemLogProvider);
|
|
7
|
+
_hasDisplayedError = false;
|
|
7
8
|
handleError(event) {
|
|
8
9
|
try {
|
|
9
10
|
if (event instanceof PromiseRejectionEvent) {
|
|
@@ -70,6 +71,9 @@ export class SdGlobalErrorHandlerPlugin {
|
|
|
70
71
|
return false;
|
|
71
72
|
}
|
|
72
73
|
_displayErrorMessage(title, param) {
|
|
74
|
+
if (this._hasDisplayedError)
|
|
75
|
+
return;
|
|
76
|
+
this._hasDisplayedError = true;
|
|
73
77
|
const paramLines = Object.keys(param).map((key) => key + ": " + param[key]);
|
|
74
78
|
void this._systemLog.writeAsync("error", `[${title}]\n${paramLines.join("\n")}`);
|
|
75
79
|
const appRef = this._envInjector.get(ApplicationRef);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-app-structure.provider.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\core\\providers\\sd-app-structure.provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;;AAE5C,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAG5F;AAID,8BACsB,sBAAsB,CAAC,OAAO,GAAG,OAAO;IAC5D,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,CAAC;IACtD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;IAEjE,WAAW,6BAET;IACF,eAAe,iCAEb;IAEF,yBAAyB,CAAC,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,GAAE,MAAM,EAAO;IAIzF,kBAAkB,CAAC,QAAQ,EAAE,MAAM;IAInC,sBAAsB,CAAC,QAAQ,EAAE,MAAM;IAIvC,kBAAkB,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE;yCAxBzD,sBAAsB;6CAAtB,sBAAsB;CAgC3C;AAED,8BAAsB,mBAAmB;IAGvC,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"sd-app-structure.provider.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\core\\providers\\sd-app-structure.provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,6 +32,9 @@ export class SdAppStructureUtils {
|
|
|
32
32
|
//---------- Info
|
|
33
33
|
static getTitleByFullCode(items, fullCode) {
|
|
34
34
|
const itemChain = this.getItemChainByFullCode(items, fullCode);
|
|
35
|
+
if (itemChain.length === 0) {
|
|
36
|
+
throw new Error(`Item not found for fullCode: ${fullCode}`);
|
|
37
|
+
}
|
|
35
38
|
const parent = itemChain
|
|
36
39
|
.slice(0, -1)
|
|
37
40
|
.map((item) => item.title)
|
|
@@ -49,7 +52,7 @@ export class SdAppStructureUtils {
|
|
|
49
52
|
// 권한이라는것이 아얘 존재하지 않거나
|
|
50
53
|
else if (fullCodes.every((fullCode) => {
|
|
51
54
|
const item = this.getItemChainByFullCode(items, fullCode).last();
|
|
52
|
-
return
|
|
55
|
+
return item != null && !("perms" in item);
|
|
53
56
|
})) {
|
|
54
57
|
result.push(permKey);
|
|
55
58
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as i0 from "@angular/core";
|
|
2
2
|
export declare class SdNavigateWindowProvider {
|
|
3
|
-
private
|
|
3
|
+
private readonly _openedWindows;
|
|
4
|
+
private _beforeUnloadRegistered;
|
|
4
5
|
get isWindow(): boolean;
|
|
5
6
|
open(navigate: string, params?: Record<string, string>, features?: string): void;
|
|
6
7
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdNavigateWindowProvider, never>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-navigate-window.provider.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\core\\providers\\sd-navigate-window.provider.ts"],"names":[],"mappings":";AAEA,qBACa,wBAAwB;IACnC,OAAO,CAAC,uBAAuB,
|
|
1
|
+
{"version":3,"file":"sd-navigate-window.provider.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\core\\providers\\sd-navigate-window.provider.ts"],"names":[],"mappings":";AAEA,qBACa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;IACpD,OAAO,CAAC,uBAAuB,CAAS;IAExC,IAAI,QAAQ,IAAI,OAAO,CAKtB;IAED,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;yCAXrE,wBAAwB;6CAAxB,wBAAwB;CAuCpC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Injectable } from "@angular/core";
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export class SdNavigateWindowProvider {
|
|
4
|
-
|
|
4
|
+
_openedWindows = new Set();
|
|
5
|
+
_beforeUnloadRegistered = false;
|
|
5
6
|
get isWindow() {
|
|
6
7
|
const urlSearchParams = new URLSearchParams(location.hash.slice(location.hash.indexOf(";") + 1));
|
|
7
8
|
return urlSearchParams.get("window") === "true";
|
|
@@ -9,16 +10,18 @@ export class SdNavigateWindowProvider {
|
|
|
9
10
|
open(navigate, params, features) {
|
|
10
11
|
if (this.isWindow || (features != null && features !== "")) {
|
|
11
12
|
const newWindow = window.open(`${location.pathname}#${navigate};${new URLSearchParams({ ...params, window: "true" }).toString()}`, "", features);
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
if (newWindow) {
|
|
14
|
+
this._openedWindows.add(newWindow);
|
|
15
|
+
}
|
|
16
|
+
if (!this._beforeUnloadRegistered) {
|
|
17
|
+
this._beforeUnloadRegistered = true;
|
|
18
|
+
window.addEventListener("beforeunload", () => {
|
|
19
|
+
for (const w of this._openedWindows) {
|
|
20
|
+
w.close();
|
|
21
|
+
}
|
|
22
|
+
this._openedWindows.clear();
|
|
23
|
+
});
|
|
15
24
|
}
|
|
16
|
-
this._beforeUnloadController = new AbortController();
|
|
17
|
-
window.addEventListener("beforeunload", () => {
|
|
18
|
-
if (newWindow) {
|
|
19
|
-
newWindow.close();
|
|
20
|
-
}
|
|
21
|
-
}, { signal: this._beforeUnloadController.signal });
|
|
22
25
|
}
|
|
23
26
|
else {
|
|
24
27
|
window.open(`${location.pathname}#${navigate};${new URLSearchParams(params).toString()}`, "_blank");
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type AbstractType } from "@angular/core";
|
|
2
|
+
export declare function injectParent<T = object>(): T;
|
|
3
|
+
export declare function injectParent<T = object>(type: AbstractType<T>): T;
|
|
4
|
+
export declare function injectParent<T = object>(type: AbstractType<T>, options: {
|
|
5
|
+
optional: true;
|
|
6
|
+
}): T | undefined;
|
|
7
|
+
//# sourceMappingURL=injectParent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"injectParent.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\core\\utils\\injectParent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAsC,MAAM,eAAe,CAAC;AAEtF,wBAAgB,YAAY,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,CAAC;AAC9C,wBAAgB,YAAY,CAAC,CAAC,GAAG,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACnE,wBAAgB,YAAY,CAAC,CAAC,GAAG,MAAM,EACrC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EACrB,OAAO,EAAE;IAAE,QAAQ,EAAE,IAAI,CAAA;CAAE,GAC1B,CAAC,GAAG,SAAS,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { inject, Injector, ViewContainerRef } from "@angular/core";
|
|
2
|
+
export function injectParent(type, options) {
|
|
3
|
+
let currentInjector = inject(ViewContainerRef).injector;
|
|
4
|
+
while (currentInjector != null) {
|
|
5
|
+
// Angular internal: NodeInjector._lView[CONTEXT=8]에 컴포넌트 인스턴스 저장
|
|
6
|
+
const lView = currentInjector._lView;
|
|
7
|
+
if (lView == null) {
|
|
8
|
+
break;
|
|
9
|
+
}
|
|
10
|
+
const comp = lView[8];
|
|
11
|
+
if (type == null) {
|
|
12
|
+
return comp;
|
|
13
|
+
}
|
|
14
|
+
if (comp instanceof type) {
|
|
15
|
+
return comp;
|
|
16
|
+
}
|
|
17
|
+
currentInjector = currentInjector.get(Injector, undefined, {
|
|
18
|
+
skipSelf: true,
|
|
19
|
+
optional: true,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
if (options?.optional) {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
throw new Error("부모 컴포넌트를 찾을 수 없습니다.");
|
|
26
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setupCanDeactivate.d.ts","sourceRoot":"","sources":["..\\..\\..\\..\\src\\core\\utils\\setups\\setupCanDeactivate.ts"],"names":[],"mappings":"AAIA,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"setupCanDeactivate.d.ts","sourceRoot":"","sources":["..\\..\\..\\..\\src\\core\\utils\\setups\\setupCanDeactivate.ts"],"names":[],"mappings":"AAIA,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,OAAO,GAAG,IAAI,CAqC1D"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ElementRef, inject, reflectComponentType } from "@angular/core";
|
|
1
|
+
import { DestroyRef, ElementRef, inject, reflectComponentType } from "@angular/core";
|
|
2
2
|
import { ActivatedRoute } from "@angular/router";
|
|
3
3
|
import { SdActivatedModalProvider } from "../../../ui/overlay/modal/sd-modal.provider";
|
|
4
4
|
export function setupCanDeactivate(fn) {
|
|
@@ -6,7 +6,7 @@ export function setupCanDeactivate(fn) {
|
|
|
6
6
|
const activatedRoute = inject(ActivatedRoute, { optional: true });
|
|
7
7
|
const elRef = inject(ElementRef);
|
|
8
8
|
if (activatedModal != null) {
|
|
9
|
-
activatedModal.
|
|
9
|
+
activatedModal.canDeactiveFn = fn;
|
|
10
10
|
return;
|
|
11
11
|
}
|
|
12
12
|
if (activatedRoute) {
|
|
@@ -24,5 +24,12 @@ export function setupCanDeactivate(fn) {
|
|
|
24
24
|
activatedRoute.routeConfig.canDeactivate = [];
|
|
25
25
|
}
|
|
26
26
|
activatedRoute.routeConfig.canDeactivate.push(canDeactivateFn);
|
|
27
|
+
const destroyRef = inject(DestroyRef);
|
|
28
|
+
destroyRef.onDestroy(() => {
|
|
29
|
+
const idx = activatedRoute.routeConfig.canDeactivate.indexOf(canDeactivateFn);
|
|
30
|
+
if (idx !== -1) {
|
|
31
|
+
activatedRoute.routeConfig.canDeactivate.splice(idx, 1);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
27
34
|
}
|
|
28
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setupInvalid.d.ts","sourceRoot":"","sources":["..\\..\\..\\..\\src\\core\\utils\\setups\\setupInvalid.ts"],"names":[],"mappings":"AAKA,wBAAgB,YAAY,CAAC,iBAAiB,EAAE,MAAM,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"setupInvalid.d.ts","sourceRoot":"","sources":["..\\..\\..\\..\\src\\core\\utils\\setups\\setupInvalid.ts"],"names":[],"mappings":"AAKA,wBAAgB,YAAY,CAAC,iBAAiB,EAAE,MAAM,MAAM,GAAG,IAAI,CAmClE"}
|
|
@@ -18,6 +18,10 @@ export function setupInvalid(getInvalidMessage) {
|
|
|
18
18
|
const isInvalid = !inputEl.checkValidity();
|
|
19
19
|
setSafeStyle(renderer, indicatorEl, { display: isInvalid ? "block" : "none" });
|
|
20
20
|
});
|
|
21
|
+
destroyRef.onDestroy(() => {
|
|
22
|
+
indicatorEl.remove();
|
|
23
|
+
inputEl.remove();
|
|
24
|
+
});
|
|
21
25
|
const formEl = inputEl.form;
|
|
22
26
|
if (formEl == null)
|
|
23
27
|
return;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type Signal, type WritableSignal } from "@angular/core";
|
|
2
2
|
export declare function setupModelHook<T, S extends WritableSignal<T>>(model: S, canFn: Signal<(item: T) => boolean | Promise<boolean>>): void;
|
|
3
3
|
//# sourceMappingURL=setupModelHook.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setupModelHook.d.ts","sourceRoot":"","sources":["..\\..\\..\\..\\src\\core\\utils\\setups\\setupModelHook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"setupModelHook.d.ts","sourceRoot":"","sources":["..\\..\\..\\..\\src\\core\\utils\\setups\\setupModelHook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,MAAM,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAEvF,wBAAgB,cAAc,CAAC,CAAC,EAAE,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAC3D,KAAK,EAAE,CAAC,EACR,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,GACrD,IAAI,CAuBN"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { ErrorHandler, inject } from "@angular/core";
|
|
1
2
|
export function setupModelHook(model, canFn) {
|
|
3
|
+
const errorHandler = inject(ErrorHandler);
|
|
2
4
|
const orgSet = model.set;
|
|
3
5
|
model.set = (value) => {
|
|
4
6
|
const canSet = canFn()(value);
|
|
@@ -13,6 +15,8 @@ export function setupModelHook(model, canFn) {
|
|
|
13
15
|
if (allowed !== false) {
|
|
14
16
|
orgSet(value);
|
|
15
17
|
}
|
|
16
|
-
}).catch(() => {
|
|
18
|
+
}).catch((err) => {
|
|
19
|
+
errorHandler.handleError(err);
|
|
20
|
+
});
|
|
17
21
|
};
|
|
18
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setupRipple.d.ts","sourceRoot":"","sources":["..\\..\\..\\..\\src\\core\\utils\\setups\\setupRipple.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"setupRipple.d.ts","sourceRoot":"","sources":["..\\..\\..\\..\\src\\core\\utils\\setups\\setupRipple.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,OAAO,GAAG,IAAI,CA4E1D"}
|
|
@@ -33,9 +33,10 @@ export function setupRipple(enableFn) {
|
|
|
33
33
|
transform: "scale(0.1)",
|
|
34
34
|
});
|
|
35
35
|
el.appendChild(indicatorEl);
|
|
36
|
-
indicatorEl.ontransitionend = () => {
|
|
37
|
-
if (
|
|
36
|
+
indicatorEl.ontransitionend = (ev) => {
|
|
37
|
+
if (ev.propertyName === "opacity" && indicatorEl !== undefined) {
|
|
38
38
|
indicatorEl.remove();
|
|
39
|
+
indicatorEl = undefined;
|
|
39
40
|
}
|
|
40
41
|
};
|
|
41
42
|
requestAnimationFrame(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useExpandingManager.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\core\\utils\\useExpandingManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,MAAM,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,uBAAuB,CAAC;AAE/B,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC;IACR,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACzC,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,OAAO,EAAE;IAC9C,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IACnB,aAAa,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;IACnC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC;IACjF,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;CAC3B,GAAG;IACF,YAAY,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IACtB,SAAS,IAAI,IAAI,CAAC;IAClB,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC;IAC5B,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;CACjC,
|
|
1
|
+
{"version":3,"file":"useExpandingManager.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\core\\utils\\useExpandingManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,MAAM,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,uBAAuB,CAAC;AAE/B,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC;IACR,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACzC,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,OAAO,EAAE;IAC9C,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IACnB,aAAa,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;IACnC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC;IACjF,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;CAC3B,GAAG;IACF,YAAY,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IACtB,SAAS,IAAI,IAAI,CAAC;IAClB,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC;IAC5B,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;CACjC,CA8FA"}
|
|
@@ -57,9 +57,10 @@ export function useExpandingManager(binding) {
|
|
|
57
57
|
const itemDef = map.get(item);
|
|
58
58
|
if (itemDef == null)
|
|
59
59
|
return false;
|
|
60
|
+
const expandedSet = new Set(binding.expandedItems());
|
|
60
61
|
let current = itemDef.parentDef;
|
|
61
62
|
while (current != null) {
|
|
62
|
-
if (!
|
|
63
|
+
if (!expandedSet.has(current.item)) {
|
|
63
64
|
return false;
|
|
64
65
|
}
|
|
65
66
|
current = current.parentDef;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSdSystemConfigResource.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\core\\utils\\useSdSystemConfigResource.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"useSdSystemConfigResource.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\core\\utils\\useSdSystemConfigResource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgE,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAG1G,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;CAAE;;;;;;eAoB1E,CAAC,GAAG,SAAS;eAUb,CAAC,IAAI,EAAE,CAAC,GAAG,SAAS,KAAK,CAAC,GAAG,SAAS;EAKpD"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { ElementRef, inject, resource } from "@angular/core";
|
|
1
|
+
import { ElementRef, ErrorHandler, inject, resource } from "@angular/core";
|
|
2
2
|
import { SdSystemConfigProvider } from "../providers/sd-system-config.provider";
|
|
3
3
|
export function useSdSystemConfigResource(options) {
|
|
4
4
|
const sdSystemConfig = inject(SdSystemConfigProvider);
|
|
5
5
|
const elRef = inject(ElementRef);
|
|
6
|
+
const errorHandler = inject(ErrorHandler);
|
|
6
7
|
const elTag = elRef.nativeElement.tagName.toLowerCase();
|
|
7
8
|
const res = resource({ ...(ngDevMode ? { debugName: "res" } : /* istanbul ignore next */ {}), params: () => options.key(),
|
|
8
9
|
loader: async ({ params: key }) => {
|
|
@@ -19,8 +20,10 @@ export function useSdSystemConfigResource(options) {
|
|
|
19
20
|
const key = options.key();
|
|
20
21
|
if (key == null)
|
|
21
22
|
return;
|
|
22
|
-
queueMicrotask(
|
|
23
|
-
|
|
23
|
+
queueMicrotask(() => {
|
|
24
|
+
sdSystemConfig.setAsync(`${elTag}.${key}`, value).catch((err) => {
|
|
25
|
+
errorHandler.handleError(err);
|
|
26
|
+
});
|
|
24
27
|
});
|
|
25
28
|
},
|
|
26
29
|
update(fn) {
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { TemplateRef } from "@angular/core";
|
|
2
|
+
import { type TSdViewType } from "../../core/utils/useViewTypeSignal";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class SdBaseContainerControl {
|
|
5
|
+
private readonly _sdActivatedModal;
|
|
6
|
+
private readonly _sdAppStructure;
|
|
7
|
+
private readonly _parent;
|
|
8
|
+
private readonly _fullPageCode;
|
|
9
|
+
private readonly _currPageCode;
|
|
10
|
+
contentTplRef: import("@angular/core").Signal<TemplateRef<any>>;
|
|
11
|
+
pageTopbarTplRef: import("@angular/core").Signal<TemplateRef<any> | undefined>;
|
|
12
|
+
modalBottomTplRef: import("@angular/core").Signal<TemplateRef<any> | undefined>;
|
|
13
|
+
private readonly _parentViewType;
|
|
14
|
+
viewType: import("@angular/core").InputSignal<TSdViewType | undefined>;
|
|
15
|
+
currViewType: import("@angular/core").Signal<TSdViewType>;
|
|
16
|
+
header: import("@angular/core").InputSignal<string | undefined>;
|
|
17
|
+
modalOrPageTitle: import("@angular/core").Signal<any>;
|
|
18
|
+
initialized: import("@angular/core").InputSignal<boolean | undefined>;
|
|
19
|
+
restricted: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
20
|
+
busy: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
21
|
+
busyMessage: import("@angular/core").InputSignal<string | undefined>;
|
|
22
|
+
protected readonly tablerAlertTriangle = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--ng-icon__stroke-width, 2)\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"></path><path d=\"M12 9v4\"></path><path d=\"M10.363 3.591l-8.106 13.534a1.914 1.914 0 0 0 1.636 2.871h16.214a1.914 1.914 0 0 0 1.636 -2.87l-8.106 -13.536a1.914 1.914 0 0 0 -3.274 0z\"></path><path d=\"M12 16h.01\"></path></svg>";
|
|
23
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdBaseContainerControl, never>;
|
|
24
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SdBaseContainerControl, "sd-base-container", never, { "viewType": { "alias": "viewType"; "required": false; "isSignal": true; }; "header": { "alias": "header"; "required": false; "isSignal": true; }; "initialized": { "alias": "initialized"; "required": false; "isSignal": true; }; "restricted": { "alias": "restricted"; "required": false; "isSignal": true; }; "busy": { "alias": "busy"; "required": false; "isSignal": true; }; "busyMessage": { "alias": "busyMessage"; "required": false; "isSignal": true; }; }, {}, ["contentTplRef", "pageTopbarTplRef", "modalBottomTplRef"], never, true, never>;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=sd-base-container.control.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sd-base-container.control.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\features\\base\\sd-base-container.control.ts"],"names":[],"mappings":"AACA,OAAO,EAQL,WAAW,EAEZ,MAAM,eAAe,CAAC;AAQvB,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,oCAAoC,CAAC;;AAK5C,qBAqDa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAwD;IAC1F,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkC;IAElE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAE1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA2B;IACzD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAE5D,aAAa,mDAA8D;IAE3E,gBAAgB,+DAAwD;IACxE,iBAAiB,+DAAyD;IAE1E,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAyC;IACzE,QAAQ,+DAAwB;IAChC,YAAY,8CAA6D;IAEzE,MAAM,0DAAmB;IACzB,gBAAgB,sCAKd;IAEF,WAAW,2DAAyC;IACpD,UAAU,qEAAiD;IAC3D,IAAI,qEAAiD;IACrD,WAAW,0DAAmB;IAE9B,SAAS,CAAC,QAAQ,CAAC,mBAAmB,ifAAuB;yCA/BlD,sBAAsB;2CAAtB,sBAAsB;CAgClC"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { NgTemplateOutlet } from "@angular/common";
|
|
2
|
+
import { booleanAttribute, ChangeDetectionStrategy, Component, computed, contentChild, inject, input, TemplateRef, ViewEncapsulation, } from "@angular/core";
|
|
3
|
+
import { SdBusyContainerControl } from "../../ui/overlay/busy/sd-busy-container.control";
|
|
4
|
+
import { SdTopbarContainerControl } from "../../ui/navigation/topbar/sd-topbar-container.control";
|
|
5
|
+
import { SdTopbarControl } from "../../ui/navigation/topbar/sd-topbar.control";
|
|
6
|
+
import { SdAppStructureProvider } from "../../core/providers/sd-app-structure.provider";
|
|
7
|
+
import { SdActivatedModalProvider } from "../../ui/overlay/modal/sd-modal.provider";
|
|
8
|
+
import { useCurrentPageCodeSignal } from "../../core/utils/useCurrentPageCodeSignal";
|
|
9
|
+
import { useFullPageCodeSignal } from "../../core/utils/useFullPageCodeSignal";
|
|
10
|
+
import { useViewTypeSignal, } from "../../core/utils/useViewTypeSignal";
|
|
11
|
+
import { injectParent } from "../../core/utils/injectParent";
|
|
12
|
+
import { NgIcon } from "@ng-icons/core";
|
|
13
|
+
import { tablerAlertTriangle } from "@ng-icons/tabler-icons";
|
|
14
|
+
import * as i0 from "@angular/core";
|
|
15
|
+
const _c0 = ["contentTpl"];
|
|
16
|
+
const _c1 = ["pageTopbarTpl"];
|
|
17
|
+
const _c2 = ["modalBottomTpl"];
|
|
18
|
+
function SdBaseContainerControl_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
19
|
+
i0.ɵɵelementStart(0, "div", 1);
|
|
20
|
+
i0.ɵɵelement(1, "br")(2, "ng-icon", 4)(3, "br")(4, "br");
|
|
21
|
+
i0.ɵɵtext(5);
|
|
22
|
+
i0.ɵɵelementEnd();
|
|
23
|
+
} if (rf & 2) {
|
|
24
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
25
|
+
i0.ɵɵadvance(2);
|
|
26
|
+
i0.ɵɵproperty("svg", ctx_r0.tablerAlertTriangle)("size", "5em");
|
|
27
|
+
i0.ɵɵadvance(3);
|
|
28
|
+
i0.ɵɵtextInterpolate1(" '", ctx_r0.modalOrPageTitle(), "'\uC5D0 \uB300\uD55C \uC0AC\uC6A9\uAD8C\uD55C\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. \uC2DC\uC2A4\uD15C \uAD00\uB9AC\uC790\uC5D0\uAC8C \uBB38\uC758\uD558\uC138\uC694. ");
|
|
29
|
+
} }
|
|
30
|
+
function SdBaseContainerControl_Conditional_1_Conditional_1_ng_template_4_Template(rf, ctx) { }
|
|
31
|
+
function SdBaseContainerControl_Conditional_1_Conditional_1_ng_template_6_Template(rf, ctx) { }
|
|
32
|
+
function SdBaseContainerControl_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
33
|
+
i0.ɵɵelementStart(0, "sd-topbar-container")(1, "sd-topbar")(2, "h4");
|
|
34
|
+
i0.ɵɵtext(3);
|
|
35
|
+
i0.ɵɵelementEnd();
|
|
36
|
+
i0.ɵɵtemplate(4, SdBaseContainerControl_Conditional_1_Conditional_1_ng_template_4_Template, 0, 0, "ng-template", 3);
|
|
37
|
+
i0.ɵɵelementEnd();
|
|
38
|
+
i0.ɵɵelementStart(5, "div", 5);
|
|
39
|
+
i0.ɵɵtemplate(6, SdBaseContainerControl_Conditional_1_Conditional_1_ng_template_6_Template, 0, 0, "ng-template", 3);
|
|
40
|
+
i0.ɵɵelementEnd()();
|
|
41
|
+
} if (rf & 2) {
|
|
42
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
43
|
+
i0.ɵɵadvance(3);
|
|
44
|
+
i0.ɵɵtextInterpolate(ctx_r0.modalOrPageTitle());
|
|
45
|
+
i0.ɵɵadvance();
|
|
46
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r0.pageTopbarTplRef() ?? null);
|
|
47
|
+
i0.ɵɵadvance(2);
|
|
48
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r0.contentTplRef());
|
|
49
|
+
} }
|
|
50
|
+
function SdBaseContainerControl_Conditional_1_Conditional_2_ng_template_2_Template(rf, ctx) { }
|
|
51
|
+
function SdBaseContainerControl_Conditional_1_Conditional_2_Conditional_3_ng_template_1_Template(rf, ctx) { }
|
|
52
|
+
function SdBaseContainerControl_Conditional_1_Conditional_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
53
|
+
i0.ɵɵelementStart(0, "div", 7);
|
|
54
|
+
i0.ɵɵtemplate(1, SdBaseContainerControl_Conditional_1_Conditional_2_Conditional_3_ng_template_1_Template, 0, 0, "ng-template", 3);
|
|
55
|
+
i0.ɵɵelementEnd();
|
|
56
|
+
} if (rf & 2) {
|
|
57
|
+
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
58
|
+
i0.ɵɵadvance();
|
|
59
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r0.modalBottomTplRef() ?? null);
|
|
60
|
+
} }
|
|
61
|
+
function SdBaseContainerControl_Conditional_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
62
|
+
i0.ɵɵelementStart(0, "div", 2)(1, "div", 6);
|
|
63
|
+
i0.ɵɵtemplate(2, SdBaseContainerControl_Conditional_1_Conditional_2_ng_template_2_Template, 0, 0, "ng-template", 3);
|
|
64
|
+
i0.ɵɵelementEnd();
|
|
65
|
+
i0.ɵɵconditionalCreate(3, SdBaseContainerControl_Conditional_1_Conditional_2_Conditional_3_Template, 2, 1, "div", 7);
|
|
66
|
+
i0.ɵɵelementEnd();
|
|
67
|
+
} if (rf & 2) {
|
|
68
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
69
|
+
i0.ɵɵadvance(2);
|
|
70
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r0.contentTplRef());
|
|
71
|
+
i0.ɵɵadvance();
|
|
72
|
+
i0.ɵɵconditional(ctx_r0.modalBottomTplRef() ? 3 : -1);
|
|
73
|
+
} }
|
|
74
|
+
function SdBaseContainerControl_Conditional_1_Conditional_3_ng_template_0_Template(rf, ctx) { }
|
|
75
|
+
function SdBaseContainerControl_Conditional_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
76
|
+
i0.ɵɵtemplate(0, SdBaseContainerControl_Conditional_1_Conditional_3_ng_template_0_Template, 0, 0, "ng-template", 3);
|
|
77
|
+
} if (rf & 2) {
|
|
78
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
79
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r0.contentTplRef());
|
|
80
|
+
} }
|
|
81
|
+
function SdBaseContainerControl_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
82
|
+
i0.ɵɵconditionalCreate(0, SdBaseContainerControl_Conditional_1_Conditional_0_Template, 6, 3, "div", 1)(1, SdBaseContainerControl_Conditional_1_Conditional_1_Template, 7, 3, "sd-topbar-container")(2, SdBaseContainerControl_Conditional_1_Conditional_2_Template, 4, 2, "div", 2)(3, SdBaseContainerControl_Conditional_1_Conditional_3_Template, 1, 1, null, 3);
|
|
83
|
+
} if (rf & 2) {
|
|
84
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
85
|
+
i0.ɵɵconditional(ctx_r0.restricted() ? 0 : ctx_r0.currViewType() === "page" ? 1 : ctx_r0.currViewType() === "modal" ? 2 : 3);
|
|
86
|
+
} }
|
|
87
|
+
export class SdBaseContainerControl {
|
|
88
|
+
_sdActivatedModal = inject(SdActivatedModalProvider, { optional: true });
|
|
89
|
+
_sdAppStructure = inject(SdAppStructureProvider);
|
|
90
|
+
_parent = injectParent();
|
|
91
|
+
_fullPageCode = useFullPageCodeSignal();
|
|
92
|
+
_currPageCode = useCurrentPageCodeSignal();
|
|
93
|
+
contentTplRef = contentChild.required("contentTpl", { read: TemplateRef });
|
|
94
|
+
pageTopbarTplRef = contentChild("pageTopbarTpl", { ...(ngDevMode ? { debugName: "pageTopbarTplRef" } : /* istanbul ignore next */ {}), read: TemplateRef });
|
|
95
|
+
modalBottomTplRef = contentChild("modalBottomTpl", { ...(ngDevMode ? { debugName: "modalBottomTplRef" } : /* istanbul ignore next */ {}), read: TemplateRef });
|
|
96
|
+
_parentViewType = useViewTypeSignal(() => this._parent);
|
|
97
|
+
viewType = input(...(ngDevMode ? [undefined, { debugName: "viewType" }] : /* istanbul ignore next */ []));
|
|
98
|
+
currViewType = computed(() => this.viewType() ?? this._parentViewType(), ...(ngDevMode ? [{ debugName: "currViewType" }] : /* istanbul ignore next */ []));
|
|
99
|
+
header = input(...(ngDevMode ? [undefined, { debugName: "header" }] : /* istanbul ignore next */ []));
|
|
100
|
+
modalOrPageTitle = computed(() => this.header() ??
|
|
101
|
+
this._sdActivatedModal?.modalComponent()?.title() ??
|
|
102
|
+
this._sdAppStructure.getTitleByFullCode(this._currPageCode?.() ?? this._fullPageCode()), ...(ngDevMode ? [{ debugName: "modalOrPageTitle" }] : /* istanbul ignore next */ []));
|
|
103
|
+
initialized = input(undefined, ...(ngDevMode ? [{ debugName: "initialized" }] : /* istanbul ignore next */ []));
|
|
104
|
+
restricted = input(false, { ...(ngDevMode ? { debugName: "restricted" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
105
|
+
busy = input(false, { ...(ngDevMode ? { debugName: "busy" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
106
|
+
busyMessage = input(...(ngDevMode ? [undefined, { debugName: "busyMessage" }] : /* istanbul ignore next */ []));
|
|
107
|
+
tablerAlertTriangle = tablerAlertTriangle;
|
|
108
|
+
static ɵfac = function SdBaseContainerControl_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SdBaseContainerControl)(); };
|
|
109
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SdBaseContainerControl, selectors: [["sd-base-container"]], contentQueries: function SdBaseContainerControl_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
|
|
110
|
+
i0.ɵɵcontentQuerySignal(dirIndex, ctx.contentTplRef, _c0, 5, TemplateRef)(dirIndex, ctx.pageTopbarTplRef, _c1, 5, TemplateRef)(dirIndex, ctx.modalBottomTplRef, _c2, 5, TemplateRef);
|
|
111
|
+
} if (rf & 2) {
|
|
112
|
+
i0.ɵɵqueryAdvance(3);
|
|
113
|
+
} }, inputs: { viewType: [1, "viewType"], header: [1, "header"], initialized: [1, "initialized"], restricted: [1, "restricted"], busy: [1, "busy"], busyMessage: [1, "busyMessage"] }, decls: 2, vars: 3, consts: [[3, "busy", "message"], [1, "fill", "tx-theme-gray-light", "p-xxl", "tx-center"], [1, "flex-column", "fill"], [3, "ngTemplateOutlet"], [3, "svg", "size"], [1, "fill"], [1, "flex-fill"], [1, "bdt", "bdt-theme-gray-lightest"]], template: function SdBaseContainerControl_Template(rf, ctx) { if (rf & 1) {
|
|
114
|
+
i0.ɵɵelementStart(0, "sd-busy-container", 0);
|
|
115
|
+
i0.ɵɵconditionalCreate(1, SdBaseContainerControl_Conditional_1_Template, 4, 1);
|
|
116
|
+
i0.ɵɵelementEnd();
|
|
117
|
+
} if (rf & 2) {
|
|
118
|
+
i0.ɵɵproperty("busy", ctx.busy())("message", ctx.busyMessage());
|
|
119
|
+
i0.ɵɵadvance();
|
|
120
|
+
i0.ɵɵconditional(ctx.initialized() === undefined || ctx.initialized() ? 1 : -1);
|
|
121
|
+
} }, dependencies: [SdBusyContainerControl,
|
|
122
|
+
SdTopbarContainerControl,
|
|
123
|
+
SdTopbarControl,
|
|
124
|
+
NgTemplateOutlet,
|
|
125
|
+
NgIcon], encapsulation: 2, changeDetection: 0 });
|
|
126
|
+
}
|
|
127
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdBaseContainerControl, [{
|
|
128
|
+
type: Component,
|
|
129
|
+
args: [{
|
|
130
|
+
selector: "sd-base-container",
|
|
131
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
132
|
+
encapsulation: ViewEncapsulation.None,
|
|
133
|
+
standalone: true,
|
|
134
|
+
imports: [
|
|
135
|
+
SdBusyContainerControl,
|
|
136
|
+
SdTopbarContainerControl,
|
|
137
|
+
SdTopbarControl,
|
|
138
|
+
NgTemplateOutlet,
|
|
139
|
+
NgIcon,
|
|
140
|
+
],
|
|
141
|
+
template: `
|
|
142
|
+
<sd-busy-container [busy]="busy()" [message]="busyMessage()">
|
|
143
|
+
@if (initialized() === undefined || initialized()) {
|
|
144
|
+
@if (restricted()) {
|
|
145
|
+
<div class="fill tx-theme-gray-light p-xxl tx-center">
|
|
146
|
+
<br />
|
|
147
|
+
<ng-icon [svg]="tablerAlertTriangle" [size]="'5em'" />
|
|
148
|
+
<br />
|
|
149
|
+
<br />
|
|
150
|
+
'{{ modalOrPageTitle() }}'에 대한 사용권한이 없습니다. 시스템 관리자에게 문의하세요.
|
|
151
|
+
</div>
|
|
152
|
+
} @else if (currViewType() === "page") {
|
|
153
|
+
<sd-topbar-container>
|
|
154
|
+
<sd-topbar>
|
|
155
|
+
<h4>{{ modalOrPageTitle() }}</h4>
|
|
156
|
+
|
|
157
|
+
<ng-template [ngTemplateOutlet]="pageTopbarTplRef() ?? null" />
|
|
158
|
+
</sd-topbar>
|
|
159
|
+
|
|
160
|
+
<div class="fill">
|
|
161
|
+
<ng-template [ngTemplateOutlet]="contentTplRef()" />
|
|
162
|
+
</div>
|
|
163
|
+
</sd-topbar-container>
|
|
164
|
+
} @else if (currViewType() === "modal") {
|
|
165
|
+
<div class="flex-column fill">
|
|
166
|
+
<div class="flex-fill">
|
|
167
|
+
<ng-template [ngTemplateOutlet]="contentTplRef()" />
|
|
168
|
+
</div>
|
|
169
|
+
@if (modalBottomTplRef()) {
|
|
170
|
+
<div class="bdt bdt-theme-gray-lightest">
|
|
171
|
+
<ng-template [ngTemplateOutlet]="modalBottomTplRef() ?? null" />
|
|
172
|
+
</div>
|
|
173
|
+
}
|
|
174
|
+
</div>
|
|
175
|
+
} @else {
|
|
176
|
+
<ng-template [ngTemplateOutlet]="contentTplRef()" />
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
</sd-busy-container>
|
|
180
|
+
`,
|
|
181
|
+
}]
|
|
182
|
+
}], null, { contentTplRef: [{ type: i0.ContentChild, args: ["contentTpl", { ...{ read: TemplateRef }, isSignal: true }] }], pageTopbarTplRef: [{ type: i0.ContentChild, args: ["pageTopbarTpl", { ...{ read: TemplateRef }, isSignal: true }] }], modalBottomTplRef: [{ type: i0.ContentChild, args: ["modalBottomTpl", { ...{ read: TemplateRef }, isSignal: true }] }], viewType: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewType", required: false }] }], header: [{ type: i0.Input, args: [{ isSignal: true, alias: "header", required: false }] }], initialized: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialized", required: false }] }], restricted: [{ type: i0.Input, args: [{ isSignal: true, alias: "restricted", required: false }] }], busy: [{ type: i0.Input, args: [{ isSignal: true, alias: "busy", required: false }] }], busyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "busyMessage", required: false }] }] }); })();
|
|
183
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdBaseContainerControl, { className: "SdBaseContainerControl", filePath: "packages/angular/src/features/base/sd-base-container.control.ts", lineNumber: 81 }); })();
|
package/dist/index.d.ts
CHANGED
|
@@ -40,6 +40,8 @@ export { useViewTypeSignal, type TSdViewType } from "./core/utils/useViewTypeSig
|
|
|
40
40
|
export { setupCanDeactivate } from "./core/utils/setups/setupCanDeactivate";
|
|
41
41
|
export { useExpandingManager, type IExpandItemDef, } from "./core/utils/useExpandingManager";
|
|
42
42
|
export { useSelectionManager } from "./core/utils/useSelectionManager";
|
|
43
|
+
export { injectParent } from "./core/utils/injectParent";
|
|
44
|
+
export { SdBaseContainerControl } from "./features/base/sd-base-container.control";
|
|
43
45
|
export { SdDockContainerControl } from "./ui/layout/dock/sd-dock-container.control";
|
|
44
46
|
export { SdDockControl } from "./ui/layout/dock/sd-dock.control";
|
|
45
47
|
export { SdPaneDirective } from "./ui/layout/sd-pane.directive";
|