@simplysm/angular 14.0.27 → 14.0.29

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.
Files changed (40) hide show
  1. package/dist/core/providers/sd-app-structure.provider.d.ts +4 -5
  2. package/dist/core/providers/sd-app-structure.provider.d.ts.map +1 -1
  3. package/dist/core/providers/sd-app-structure.provider.js +4 -2
  4. package/dist/core/providers/sd-shared-data.provider.js +4 -2
  5. package/dist/index.d.ts +0 -6
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +0 -6
  8. package/dist/styles.css +3 -0
  9. package/dist/ui/layout/kanban/sd-kanban.d.ts.map +1 -1
  10. package/dist/ui/layout/kanban/sd-kanban.js +10 -10
  11. package/package.json +24 -24
  12. package/scss/commons/_styles.scss +309 -297
  13. package/src/core/providers/sd-app-structure.provider.ts +5 -7
  14. package/src/core/providers/sd-shared-data.provider.ts +4 -4
  15. package/src/index.ts +0 -6
  16. package/src/ui/layout/kanban/sd-kanban.ts +7 -7
  17. package/dist/ui/layout/sd-card.d.ts +0 -6
  18. package/dist/ui/layout/sd-card.d.ts.map +0 -1
  19. package/dist/ui/layout/sd-card.js +0 -16
  20. package/dist/ui/layout/sd-pane.d.ts +0 -6
  21. package/dist/ui/layout/sd-pane.d.ts.map +0 -1
  22. package/dist/ui/layout/sd-pane.js +0 -17
  23. package/dist/ui/layout/view/sd-view-item.d.ts +0 -9
  24. package/dist/ui/layout/view/sd-view-item.d.ts.map +0 -1
  25. package/dist/ui/layout/view/sd-view-item.js +0 -25
  26. package/dist/ui/layout/view/sd-view.d.ts +0 -8
  27. package/dist/ui/layout/view/sd-view.d.ts.map +0 -1
  28. package/dist/ui/layout/view/sd-view.js +0 -23
  29. package/dist/ui/navigation/tab/sd-tabview-item.d.ts +0 -10
  30. package/dist/ui/navigation/tab/sd-tabview-item.d.ts.map +0 -1
  31. package/dist/ui/navigation/tab/sd-tabview-item.js +0 -26
  32. package/dist/ui/navigation/tab/sd-tabview.d.ts +0 -9
  33. package/dist/ui/navigation/tab/sd-tabview.d.ts.map +0 -1
  34. package/dist/ui/navigation/tab/sd-tabview.js +0 -67
  35. package/src/ui/layout/sd-card.ts +0 -10
  36. package/src/ui/layout/sd-pane.ts +0 -11
  37. package/src/ui/layout/view/sd-view-item.ts +0 -45
  38. package/src/ui/layout/view/sd-view.ts +0 -31
  39. package/src/ui/navigation/tab/sd-tabview-item.ts +0 -48
  40. package/src/ui/navigation/tab/sd-tabview.ts +0 -39
@@ -14,18 +14,16 @@ export function injectPermsSignal<K extends string>(viewCodes: string[], keys: K
14
14
  // 권한은 모듈만 체크하고
15
15
  // 메뉴는 모듈/권한 모두 체크함
16
16
  @Injectable({ providedIn: "root" })
17
- export abstract class SdAppStructureProvider<TModule = unknown> {
17
+ export class SdAppStructureProvider<TModule = unknown> {
18
18
  private readonly _clientFactory = inject(SdServiceClientFactoryProvider);
19
19
  private readonly _config = inject(SdAngularConfigProvider);
20
20
 
21
- abstract serviceKey: string;
22
- abstract usableModules: Signal<TModule[] | undefined>;
23
- abstract permRecord: Signal<Record<string, boolean> | undefined>;
24
-
21
+ readonly usableModules = signal<TModule[] | undefined>(undefined);
22
+ readonly permRecord = signal<Record<string, boolean> | undefined>(undefined);
25
23
  readonly items = signal<AppStructureItem<TModule>[]>([]);
26
24
 
27
- async fetchItems(): Promise<void> {
28
- const client = this._clientFactory.get(this.serviceKey);
25
+ async initialize(serviceKey: string): Promise<void> {
26
+ const client = this._clientFactory.get(serviceKey);
29
27
  const svc = client.getService<AppStructureService>("AppStructure");
30
28
  const itemsMap = await svc.getItems();
31
29
  this.items.set(
@@ -107,8 +107,8 @@ export abstract class SdSharedDataProvider<T extends Record<string, SharedDataBa
107
107
  }
108
108
 
109
109
  const client = this._clientFactory.get(entry.info.serviceKey);
110
- await client.emitEvent(
111
- SdSharedDataChangeEvent,
110
+ const event = client.getEvent<typeof SdSharedDataChangeEvent>("SdSharedDataChange");
111
+ await event.emit(
112
112
  (item) => item.name === (name as string) && obj.equal(item.filter, entry.info.filter),
113
113
  changeKeys,
114
114
  );
@@ -131,8 +131,8 @@ export abstract class SdSharedDataProvider<T extends Record<string, SharedDataBa
131
131
  // 이벤트 리스너 등록
132
132
  if (entry.listenerKey == null) {
133
133
  const client = this._clientFactory.get(entry.info.serviceKey);
134
- entry.listenerKey = await client.addListener(
135
- SdSharedDataChangeEvent,
134
+ const event = client.getEvent<typeof SdSharedDataChangeEvent>("SdSharedDataChange");
135
+ entry.listenerKey = await event.addListener(
136
136
  { name, filter: entry.info.filter },
137
137
  async (changeKeys) => {
138
138
  await this._onEvent(name, entry, changeKeys);
package/src/index.ts CHANGED
@@ -105,11 +105,7 @@ export { matchesSearchText } from "./features/shared-data/matchesSearchText";
105
105
  // ui/layout
106
106
  export { SdDockContainer } from "./ui/layout/dock/sd-dock-container";
107
107
  export { SdDock } from "./ui/layout/dock/sd-dock";
108
- export { SdPane } from "./ui/layout/sd-pane";
109
108
  export { SdGap } from "./ui/layout/sd-gap";
110
- export { SdView } from "./ui/layout/view/sd-view";
111
- export { SdViewItem } from "./ui/layout/view/sd-view-item";
112
- export { SdCard } from "./ui/layout/sd-card";
113
109
  export {
114
110
  SdKanbanBoard,
115
111
  type SdKanbanBoardDropInfo,
@@ -168,8 +164,6 @@ export { SdCollapseIcon } from "./ui/navigation/collapse/sd-collapse-icon";
168
164
  // ui/navigation/tab
169
165
  export { SdTab } from "./ui/navigation/tab/sd-tab";
170
166
  export { SdTabItem } from "./ui/navigation/tab/sd-tab-item";
171
- export { SdTabview } from "./ui/navigation/tab/sd-tabview";
172
- export { SdTabviewItem } from "./ui/navigation/tab/sd-tabview-item";
173
167
 
174
168
  // ui/navigation/menu
175
169
  export { getMenuRouterLinkOption, getIsMenuSelected } from "./ui/navigation/menu-utils";
@@ -19,14 +19,13 @@ import {
19
19
  import { SdKanbanLane } from "./sd-kanban-lane";
20
20
  import { SdEvents } from "../../../core/directives/sd-events";
21
21
  import type { SdResizeEvent } from "../../../core/plugins/events/sd-resize-event.plugin";
22
- import { SdCard } from "../sd-card";
23
22
 
24
23
  @Component({
25
24
  selector: "sd-kanban",
26
25
  changeDetection: ChangeDetectionStrategy.OnPush,
27
26
  encapsulation: ViewEncapsulation.None,
28
27
  standalone: true,
29
- imports: [SdEvents, SdCard],
28
+ imports: [SdEvents],
30
29
  host: {
31
30
  "[attr.data-sd-dragging-this]": "dragKanban() === thisRef",
32
31
  "[attr.data-sd-dragging]": "dragKanban() != null",
@@ -47,14 +46,15 @@ import { SdCard } from "../sd-card";
47
46
  [style.height]="dragOvered() ? (dragKanban()?.heightOnDrag() ?? 0) + 'px' : '0px'"
48
47
  [style.display]="dragKanban() ? 'block' : 'none'"
49
48
  ></div>
50
- <sd-card
49
+ <div
50
+ class="card"
51
51
  [class]="contentClass()"
52
52
  [draggable]="draggable()"
53
53
  (dragstart)="onCardDragStart()"
54
54
  (sdResize)="onCardResize($event)"
55
55
  >
56
56
  <ng-content></ng-content>
57
- </sd-card>
57
+ </div>
58
58
  `,
59
59
  styles: [
60
60
  /* language=SCSS */ `
@@ -79,7 +79,7 @@ import { SdCard } from "../sd-card";
79
79
  pointer-events: auto;
80
80
  }
81
81
 
82
- > sd-card {
82
+ > .card {
83
83
  pointer-events: none;
84
84
  cursor: pointer;
85
85
  }
@@ -103,7 +103,7 @@ import { SdCard } from "../sd-card";
103
103
  }
104
104
  }
105
105
 
106
- > sd-card {
106
+ > .card {
107
107
  white-space: normal;
108
108
  user-select: none;
109
109
  margin-bottom: var(--gap-lg);
@@ -145,7 +145,7 @@ export class SdKanban<L, T> implements SdKanbanDragRef<L, T>, SdKanbanDropTarget
145
145
 
146
146
  constructor() {
147
147
  afterNextRender(() => {
148
- const card = this._elRef.nativeElement.querySelector("sd-card");
148
+ const card = this._elRef.nativeElement.querySelector(".card");
149
149
  if (card != null) {
150
150
  const marginBottom = getComputedStyle(card).marginBottom;
151
151
  this.cardHeight.set(card.clientHeight + (parseInt(marginBottom) || 0));
@@ -1,6 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- export declare class SdCard {
3
- static ɵfac: i0.ɵɵFactoryDeclaration<SdCard, never>;
4
- static ɵdir: i0.ɵɵDirectiveDeclaration<SdCard, "sd-card,[sdCard]", never, {}, {}, never, never, true, never>;
5
- }
6
- //# sourceMappingURL=sd-card.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sd-card.d.ts","sourceRoot":"","sources":["../../../src/ui/layout/sd-card.ts"],"names":[],"mappings":";AAEA,qBAOa,MAAM;yCAAN,MAAM;2CAAN,MAAM;CAAG"}
@@ -1,16 +0,0 @@
1
- import { Directive } from "@angular/core";
2
- import * as i0 from "@angular/core";
3
- export class SdCard {
4
- static ɵfac = function SdCard_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SdCard)(); };
5
- static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: SdCard, selectors: [["sd-card"], ["", "sdCard", ""]], hostAttrs: [1, "card"] });
6
- }
7
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdCard, [{
8
- type: Directive,
9
- args: [{
10
- selector: "sd-card,[sdCard]",
11
- standalone: true,
12
- host: {
13
- class: "card",
14
- },
15
- }]
16
- }], null, null); })();
@@ -1,6 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- export declare class SdPane {
3
- static ɵfac: i0.ɵɵFactoryDeclaration<SdPane, never>;
4
- static ɵdir: i0.ɵɵDirectiveDeclaration<SdPane, "sd-pane,[sdPane]", never, {}, {}, never, never, true, never>;
5
- }
6
- //# sourceMappingURL=sd-pane.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sd-pane.d.ts","sourceRoot":"","sources":["../../../src/ui/layout/sd-pane.ts"],"names":[],"mappings":";AAEA,qBAQa,MAAM;yCAAN,MAAM;2CAAN,MAAM;CAAG"}
@@ -1,17 +0,0 @@
1
- import { Directive } from "@angular/core";
2
- import * as i0 from "@angular/core";
3
- export class SdPane {
4
- static ɵfac = function SdPane_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SdPane)(); };
5
- static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: SdPane, selectors: [["sd-pane"], ["", "sdPane", ""]], hostAttrs: [1, "fill", 2, "display", "block"] });
6
- }
7
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdPane, [{
8
- type: Directive,
9
- args: [{
10
- selector: "sd-pane,[sdPane]",
11
- standalone: true,
12
- host: {
13
- class: "fill",
14
- style: "display: block;",
15
- },
16
- }]
17
- }], null, null); })();
@@ -1,9 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- export declare class SdViewItem {
3
- value: import("@angular/core").InputSignal<any>;
4
- private readonly _parentControl;
5
- isSelected: import("@angular/core").Signal<boolean>;
6
- static ɵfac: i0.ɵɵFactoryDeclaration<SdViewItem, never>;
7
- static ɵcmp: i0.ɵɵComponentDeclaration<SdViewItem, "sd-view-item", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
8
- }
9
- //# sourceMappingURL=sd-view-item.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sd-view-item.d.ts","sourceRoot":"","sources":["../../../../src/ui/layout/view/sd-view-item.ts"],"names":[],"mappings":";AAUA,qBA4Ba,UAAU;IACrB,KAAK,2CAAgB;IAErB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAkB;IAEjD,UAAU,0CAAgE;yCAL/D,UAAU;2CAAV,UAAU;CAMtB"}
@@ -1,25 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation, } from "@angular/core";
2
- import { SdView } from "./sd-view";
3
- import * as i0 from "@angular/core";
4
- const _c0 = ["*"];
5
- export class SdViewItem {
6
- value = input(...(ngDevMode ? [undefined, { debugName: "value" }] : /* istanbul ignore next */ []));
7
- _parentControl = inject(SdView);
8
- isSelected = computed(() => this._parentControl.value() === this.value(), ...(ngDevMode ? [{ debugName: "isSelected" }] : /* istanbul ignore next */ []));
9
- static ɵfac = function SdViewItem_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SdViewItem)(); };
10
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SdViewItem, selectors: [["sd-view-item"]], hostVars: 1, hostBindings: function SdViewItem_HostBindings(rf, ctx) { if (rf & 2) {
11
- i0.ɵɵattribute("data-sd-selected", ctx.isSelected());
12
- } }, inputs: { value: [1, "value"] }, ngContentSelectors: _c0, decls: 1, vars: 0, template: function SdViewItem_Template(rf, ctx) { if (rf & 1) {
13
- i0.ɵɵprojectionDef();
14
- i0.ɵɵprojection(0);
15
- } }, styles: ["sd-view-item {\n display: none;\n}\nsd-view-item[data-sd-selected=true] {\n display: block;\n}\nsd-view[data-sd-fill=true] sd-view-item {\n height: 100%;\n}"], encapsulation: 2, changeDetection: 0 });
16
- }
17
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdViewItem, [{
18
- type: Component,
19
- args: [{ selector: "sd-view-item", changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [], template: `
20
- <ng-content></ng-content>
21
- `, host: {
22
- "[attr.data-sd-selected]": "isSelected()",
23
- }, styles: ["sd-view-item {\n display: none;\n}\nsd-view-item[data-sd-selected=true] {\n display: block;\n}\nsd-view[data-sd-fill=true] sd-view-item {\n height: 100%;\n}"] }]
24
- }], null, { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }] }); })();
25
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdViewItem, { className: "SdViewItem", filePath: "packages/angular/src/ui/layout/view/sd-view-item.ts", lineNumber: 39, forbidOrphanRendering: true }); })();
@@ -1,8 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- export declare class SdView {
3
- value: import("@angular/core").InputSignal<any>;
4
- fill: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
5
- static ɵfac: i0.ɵɵFactoryDeclaration<SdView, never>;
6
- static ɵcmp: i0.ɵɵComponentDeclaration<SdView, "sd-view", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "fill": { "alias": "fill"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
7
- }
8
- //# sourceMappingURL=sd-view.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sd-view.d.ts","sourceRoot":"","sources":["../../../../src/ui/layout/view/sd-view.ts"],"names":[],"mappings":";AAEA,qBAyBa,MAAM;IACjB,KAAK,2CAAgB;IACrB,IAAI,qEAAiD;yCAF1C,MAAM;2CAAN,MAAM;CAGlB"}
@@ -1,23 +0,0 @@
1
- import { booleanAttribute, ChangeDetectionStrategy, Component, input, ViewEncapsulation } from "@angular/core";
2
- import * as i0 from "@angular/core";
3
- const _c0 = ["*"];
4
- export class SdView {
5
- value = input(...(ngDevMode ? [undefined, { debugName: "value" }] : /* istanbul ignore next */ []));
6
- fill = input(false, { ...(ngDevMode ? { debugName: "fill" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
7
- static ɵfac = function SdView_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SdView)(); };
8
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SdView, selectors: [["sd-view"]], hostVars: 1, hostBindings: function SdView_HostBindings(rf, ctx) { if (rf & 2) {
9
- i0.ɵɵattribute("data-sd-fill", ctx.fill());
10
- } }, inputs: { value: [1, "value"], fill: [1, "fill"] }, ngContentSelectors: _c0, decls: 1, vars: 0, template: function SdView_Template(rf, ctx) { if (rf & 1) {
11
- i0.ɵɵprojectionDef();
12
- i0.ɵɵprojection(0);
13
- } }, styles: ["sd-view {\n display: block;\n background: var(--control-color);\n}\nsd-view[data-sd-fill=true] {\n height: 100%;\n}"], encapsulation: 2, changeDetection: 0 });
14
- }
15
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdView, [{
16
- type: Component,
17
- args: [{ selector: "sd-view", changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [], template: `
18
- <ng-content></ng-content>
19
- `, host: {
20
- "[attr.data-sd-fill]": "fill()",
21
- }, styles: ["sd-view {\n display: block;\n background: var(--control-color);\n}\nsd-view[data-sd-fill=true] {\n height: 100%;\n}"] }]
22
- }], null, { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], fill: [{ type: i0.Input, args: [{ isSignal: true, alias: "fill", required: false }] }] }); })();
23
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdView, { className: "SdView", filePath: "packages/angular/src/ui/layout/view/sd-view.ts", lineNumber: 28, forbidOrphanRendering: true }); })();
@@ -1,10 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- export declare class SdTabviewItem<T> {
3
- value: import("@angular/core").InputSignal<T>;
4
- header: import("@angular/core").InputSignal<string | undefined>;
5
- private readonly _parentControl;
6
- isSelected: import("@angular/core").Signal<boolean>;
7
- static ɵfac: i0.ɵɵFactoryDeclaration<SdTabviewItem<any>, never>;
8
- static ɵcmp: i0.ɵɵComponentDeclaration<SdTabviewItem<any>, "sd-tabview-item", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "header": { "alias": "header"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
9
- }
10
- //# sourceMappingURL=sd-tabview-item.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sd-tabview-item.d.ts","sourceRoot":"","sources":["../../../../src/ui/navigation/tab/sd-tabview-item.ts"],"names":[],"mappings":";AAWA,qBA2Ba,aAAa,CAAC,CAAC;IAC1B,KAAK,yCAAuB;IAC5B,MAAM,0DAAmB;IAEzB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAE7B;IAEF,UAAU,0CAAgE;yCAR/D,aAAa;2CAAb,aAAa;CASzB"}
@@ -1,26 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, computed, forwardRef, inject, input, ViewEncapsulation, } from "@angular/core";
2
- import { SdTabview } from "./sd-tabview";
3
- import * as i0 from "@angular/core";
4
- const _c0 = ["*"];
5
- export class SdTabviewItem {
6
- value = input.required(...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
7
- header = input(...(ngDevMode ? [undefined, { debugName: "header" }] : /* istanbul ignore next */ []));
8
- _parentControl = inject(forwardRef(() => SdTabview));
9
- isSelected = computed(() => this._parentControl.value() === this.value(), ...(ngDevMode ? [{ debugName: "isSelected" }] : /* istanbul ignore next */ []));
10
- static ɵfac = function SdTabviewItem_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SdTabviewItem)(); };
11
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SdTabviewItem, selectors: [["sd-tabview-item"]], hostVars: 1, hostBindings: function SdTabviewItem_HostBindings(rf, ctx) { if (rf & 2) {
12
- i0.ɵɵattribute("data-sd-selected", ctx.isSelected());
13
- } }, inputs: { value: [1, "value"], header: [1, "header"] }, ngContentSelectors: _c0, decls: 1, vars: 0, template: function SdTabviewItem_Template(rf, ctx) { if (rf & 1) {
14
- i0.ɵɵprojectionDef();
15
- i0.ɵɵprojection(0);
16
- } }, styles: ["sd-tabview-item {\n display: none;\n width: 100%;\n height: 100%;\n overflow: auto;\n}\nsd-tabview-item[data-sd-selected=true] {\n display: block;\n}"], encapsulation: 2, changeDetection: 0 });
17
- }
18
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdTabviewItem, [{
19
- type: Component,
20
- args: [{ selector: "sd-tabview-item", changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [], template: `
21
- <ng-content></ng-content>
22
- `, host: {
23
- "[attr.data-sd-selected]": "isSelected()",
24
- }, styles: ["sd-tabview-item {\n display: none;\n width: 100%;\n height: 100%;\n overflow: auto;\n}\nsd-tabview-item[data-sd-selected=true] {\n display: block;\n}"] }]
25
- }], null, { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], header: [{ type: i0.Input, args: [{ isSignal: true, alias: "header", required: false }] }] }); })();
26
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdTabviewItem, { className: "SdTabviewItem", filePath: "packages/angular/src/ui/navigation/tab/sd-tabview-item.ts", lineNumber: 39, forbidOrphanRendering: true }); })();
@@ -1,9 +0,0 @@
1
- import { SdTabviewItem } from "./sd-tabview-item";
2
- import * as i0 from "@angular/core";
3
- export declare class SdTabview<T> {
4
- value: import("@angular/core").ModelSignal<T | undefined>;
5
- itemControls: import("@angular/core").Signal<readonly SdTabviewItem<T>[]>;
6
- static ɵfac: i0.ɵɵFactoryDeclaration<SdTabview<any>, never>;
7
- static ɵcmp: i0.ɵɵComponentDeclaration<SdTabview<any>, "sd-tabview", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, ["itemControls"], ["*"], true, never>;
8
- }
9
- //# sourceMappingURL=sd-tabview.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sd-tabview.d.ts","sourceRoot":"","sources":["../../../../src/ui/navigation/tab/sd-tabview.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;;AAElD,qBAuBa,SAAS,CAAC,CAAC;IACtB,KAAK,qDAAc;IAEnB,YAAY,8DAAoD;yCAHrD,SAAS;2CAAT,SAAS;CAIrB"}
@@ -1,67 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, contentChildren, model, ViewEncapsulation, } from "@angular/core";
2
- import { SdTabItem } from "./sd-tab-item";
3
- import { SdTab } from "./sd-tab";
4
- import { SdTabviewItem } from "./sd-tabview-item";
5
- import * as i0 from "@angular/core";
6
- const _c0 = ["*"];
7
- const _forTrack0 = ($index, $item) => $item.value();
8
- function SdTabview_For_2_Template(rf, ctx) { if (rf & 1) {
9
- i0.ɵɵelementStart(0, "sd-tab-item", 1);
10
- i0.ɵɵtext(1);
11
- i0.ɵɵelementEnd();
12
- } if (rf & 2) {
13
- const itemControl_r1 = ctx.$implicit;
14
- i0.ɵɵproperty("value", itemControl_r1.value());
15
- i0.ɵɵadvance();
16
- i0.ɵɵtextInterpolate1(" ", itemControl_r1.header() || itemControl_r1.value(), " ");
17
- } }
18
- export class SdTabview {
19
- value = model(...(ngDevMode ? [undefined, { debugName: "value" }] : /* istanbul ignore next */ []));
20
- itemControls = contentChildren(SdTabviewItem, ...(ngDevMode ? [{ debugName: "itemControls" }] : /* istanbul ignore next */ []));
21
- static ɵfac = function SdTabview_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SdTabview)(); };
22
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SdTabview, selectors: [["sd-tabview"]], contentQueries: function SdTabview_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
23
- i0.ɵɵcontentQuerySignal(dirIndex, ctx.itemControls, SdTabviewItem, 4);
24
- } if (rf & 2) {
25
- i0.ɵɵqueryAdvance();
26
- } }, hostAttrs: [1, "flex-column", "fill"], inputs: { value: [1, "value"] }, outputs: { value: "valueChange" }, ngContentSelectors: _c0, decls: 5, vars: 1, consts: [[3, "valueChange", "value"], [3, "value"], [1, "flex-fill"]], template: function SdTabview_Template(rf, ctx) { if (rf & 1) {
27
- i0.ɵɵprojectionDef();
28
- i0.ɵɵelementStart(0, "sd-tab", 0);
29
- i0.ɵɵtwoWayListener("valueChange", function SdTabview_Template_sd_tab_valueChange_0_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.value, $event) || (ctx.value = $event); return $event; });
30
- i0.ɵɵrepeaterCreate(1, SdTabview_For_2_Template, 2, 2, "sd-tab-item", 1, _forTrack0);
31
- i0.ɵɵelementEnd();
32
- i0.ɵɵelementStart(3, "div", 2);
33
- i0.ɵɵprojection(4);
34
- i0.ɵɵelementEnd();
35
- } if (rf & 2) {
36
- i0.ɵɵtwoWayProperty("value", ctx.value);
37
- i0.ɵɵadvance();
38
- i0.ɵɵrepeater(ctx.itemControls());
39
- } }, dependencies: [SdTab, SdTabItem], encapsulation: 2, changeDetection: 0 });
40
- }
41
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdTabview, [{
42
- type: Component,
43
- args: [{
44
- selector: "sd-tabview",
45
- changeDetection: ChangeDetectionStrategy.OnPush,
46
- encapsulation: ViewEncapsulation.None,
47
- standalone: true,
48
- imports: [SdTab, SdTabItem],
49
- host: {
50
- class: "flex-column fill",
51
- },
52
- template: `
53
- <sd-tab [(value)]="value">
54
- @for (itemControl of itemControls(); track itemControl.value()) {
55
- <sd-tab-item [value]="itemControl.value()">
56
- {{ itemControl.header() || itemControl.value() }}
57
- </sd-tab-item>
58
- }
59
- </sd-tab>
60
-
61
- <div class="flex-fill">
62
- <ng-content />
63
- </div>
64
- `,
65
- }]
66
- }], null, { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], itemControls: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => SdTabviewItem), { isSignal: true }] }] }); })();
67
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdTabview, { className: "SdTabview", filePath: "packages/angular/src/ui/navigation/tab/sd-tabview.ts", lineNumber: 35, forbidOrphanRendering: true }); })();
@@ -1,10 +0,0 @@
1
- import { Directive } from "@angular/core";
2
-
3
- @Directive({
4
- selector: "sd-card,[sdCard]",
5
- standalone: true,
6
- host: {
7
- class: "card",
8
- },
9
- })
10
- export class SdCard {}
@@ -1,11 +0,0 @@
1
- import { Directive } from "@angular/core";
2
-
3
- @Directive({
4
- selector: "sd-pane,[sdPane]",
5
- standalone: true,
6
- host: {
7
- class: "fill",
8
- style: "display: block;",
9
- },
10
- })
11
- export class SdPane {}
@@ -1,45 +0,0 @@
1
- import {
2
- ChangeDetectionStrategy,
3
- Component,
4
- computed,
5
- inject,
6
- input,
7
- ViewEncapsulation,
8
- } from "@angular/core";
9
- import { SdView } from "./sd-view";
10
-
11
- @Component({
12
- selector: "sd-view-item",
13
- changeDetection: ChangeDetectionStrategy.OnPush,
14
- encapsulation: ViewEncapsulation.None,
15
- standalone: true,
16
- imports: [],
17
- styles: [
18
- /* language=SCSS */ `
19
- sd-view-item {
20
- display: none;
21
-
22
- &[data-sd-selected="true"] {
23
- display: block;
24
- }
25
-
26
- sd-view[data-sd-fill="true"] & {
27
- height: 100%;
28
- }
29
- }
30
- `,
31
- ],
32
- template: `
33
- <ng-content></ng-content>
34
- `,
35
- host: {
36
- "[attr.data-sd-selected]": "isSelected()",
37
- },
38
- })
39
- export class SdViewItem {
40
- value = input<any>();
41
-
42
- private readonly _parentControl = inject(SdView);
43
-
44
- isSelected = computed(() => this._parentControl.value() === this.value());
45
- }
@@ -1,31 +0,0 @@
1
- import { booleanAttribute, ChangeDetectionStrategy, Component, input, ViewEncapsulation } from "@angular/core";
2
-
3
- @Component({
4
- selector: "sd-view",
5
- changeDetection: ChangeDetectionStrategy.OnPush,
6
- encapsulation: ViewEncapsulation.None,
7
- standalone: true,
8
- imports: [],
9
- styles: [
10
- /* language=SCSS */ `
11
- sd-view {
12
- display: block;
13
- background: var(--control-color);
14
-
15
- &[data-sd-fill="true"] {
16
- height: 100%;
17
- }
18
- }
19
- `,
20
- ],
21
- template: `
22
- <ng-content></ng-content>
23
- `,
24
- host: {
25
- "[attr.data-sd-fill]": "fill()",
26
- },
27
- })
28
- export class SdView {
29
- value = input<any>();
30
- fill = input(false, { transform: booleanAttribute });
31
- }
@@ -1,48 +0,0 @@
1
- import {
2
- ChangeDetectionStrategy,
3
- Component,
4
- computed,
5
- forwardRef,
6
- inject,
7
- input,
8
- ViewEncapsulation,
9
- } from "@angular/core";
10
- import { SdTabview } from "./sd-tabview";
11
-
12
- @Component({
13
- selector: "sd-tabview-item",
14
- changeDetection: ChangeDetectionStrategy.OnPush,
15
- encapsulation: ViewEncapsulation.None,
16
- standalone: true,
17
- imports: [],
18
- styles: [
19
- /* language=SCSS */ `
20
- sd-tabview-item {
21
- display: none;
22
- width: 100%;
23
- height: 100%;
24
- overflow: auto;
25
-
26
- &[data-sd-selected="true"] {
27
- display: block;
28
- }
29
- }
30
- `,
31
- ],
32
- template: `
33
- <ng-content></ng-content>
34
- `,
35
- host: {
36
- "[attr.data-sd-selected]": "isSelected()",
37
- },
38
- })
39
- export class SdTabviewItem<T> {
40
- value = input.required<T>();
41
- header = input<string>();
42
-
43
- private readonly _parentControl = inject<SdTabview<T>>(
44
- forwardRef(() => SdTabview),
45
- );
46
-
47
- isSelected = computed(() => this._parentControl.value() === this.value());
48
- }
@@ -1,39 +0,0 @@
1
- import {
2
- ChangeDetectionStrategy,
3
- Component,
4
- contentChildren,
5
- model,
6
- ViewEncapsulation,
7
- } from "@angular/core";
8
- import { SdTabItem } from "./sd-tab-item";
9
- import { SdTab } from "./sd-tab";
10
- import { SdTabviewItem } from "./sd-tabview-item";
11
-
12
- @Component({
13
- selector: "sd-tabview",
14
- changeDetection: ChangeDetectionStrategy.OnPush,
15
- encapsulation: ViewEncapsulation.None,
16
- standalone: true,
17
- imports: [SdTab, SdTabItem],
18
- host: {
19
- class: "flex-column fill",
20
- },
21
- template: `
22
- <sd-tab [(value)]="value">
23
- @for (itemControl of itemControls(); track itemControl.value()) {
24
- <sd-tab-item [value]="itemControl.value()">
25
- {{ itemControl.header() || itemControl.value() }}
26
- </sd-tab-item>
27
- }
28
- </sd-tab>
29
-
30
- <div class="flex-fill">
31
- <ng-content />
32
- </div>
33
- `,
34
- })
35
- export class SdTabview<T> {
36
- value = model<T>();
37
-
38
- itemControls = contentChildren<SdTabviewItem<T>>(SdTabviewItem);
39
- }