@ng-atomic/components 19.50.0 → 19.80.0
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/fesm2022/ng-atomic-components-atoms-chips-input.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-atoms-icon.mjs +2 -2
- package/fesm2022/ng-atomic-components-atoms-value-cell.mjs +2 -15
- package/fesm2022/ng-atomic-components-atoms-value-cell.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-extras-editor.mjs +0 -2
- package/fesm2022/ng-atomic-components-extras-editor.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-app.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-auto-layout.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-breadcrumb-navbar.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-card.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-columns.mjs +2 -4
- package/fesm2022/ng-atomic-components-frames-columns.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-divider.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-drawer.mjs +2 -7
- package/fesm2022/ng-atomic-components-frames-drawer.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-entrance.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-fab.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-horizontal-divider.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-line-up.mjs +60 -72
- package/fesm2022/ng-atomic-components-frames-line-up.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-loading.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-router-outlet.mjs +2 -4
- package/fesm2022/ng-atomic-components-frames-router-outlet.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-scroll.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-side-nav.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-smart-menu.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-vertical-hide.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames.mjs +0 -2
- package/fesm2022/ng-atomic-components-frames.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-molecules-action-input-field.mjs +0 -3
- package/fesm2022/ng-atomic-components-molecules-action-input-field.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-molecules-date-input-field.mjs +2 -2
- package/fesm2022/ng-atomic-components-molecules-date-range-input-field.mjs +2 -2
- package/fesm2022/ng-atomic-components-molecules-file-input-field.mjs +0 -1
- package/fesm2022/ng-atomic-components-molecules-file-input-field.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-molecules-grid-item.mjs +2 -2
- package/fesm2022/ng-atomic-components-molecules-loading-box.mjs +2 -2
- package/fesm2022/ng-atomic-components-molecules-navigation-list-item.mjs +2 -2
- package/fesm2022/ng-atomic-components-molecules-select-input-field.mjs +2 -2
- package/fesm2022/ng-atomic-components-molecules-thread-message.mjs +2 -2
- package/fesm2022/ng-atomic-components-molecules-tree-column.mjs +0 -7
- package/fesm2022/ng-atomic-components-molecules-tree-column.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-action-buttons-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-action-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-breadcrumb-navbar.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-card-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-cvc-and-exp-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-date-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-date-range-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-definition-list.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-definition-list.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-file-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-grid-cards-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-heading.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-menu-footer.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-menu-header.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-mermaid-section.mjs +1 -2
- package/fesm2022/ng-atomic-components-organisms-mermaid-section.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-messages-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-navigation-list.mjs +2 -3
- package/fesm2022/ng-atomic-components-organisms-navigation-list.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-navigator.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-number-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-paginator.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-password-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-select-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-slider-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-social-login-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-stripe-input-section.mjs +2 -5
- package/fesm2022/ng-atomic-components-organisms-stripe-input-section.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-table.mjs +2 -17
- package/fesm2022/ng-atomic-components-organisms-table.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-text-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-textarea-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-thread-messages-section.mjs +4 -4
- package/fesm2022/ng-atomic-components-organisms-thread-messages-section.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-tree-section.mjs +0 -22
- package/fesm2022/ng-atomic-components-organisms-tree-section.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms.mjs +0 -1
- package/fesm2022/ng-atomic-components-organisms.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-pages-_index.mjs +2 -4
- package/fesm2022/ng-atomic-components-pages-_index.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-pages-columns.mjs +2 -2
- package/fesm2022/ng-atomic-components-pages-form.mjs +2 -4
- package/fesm2022/ng-atomic-components-pages-form.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-services-global-iframe.mjs +2 -62
- package/fesm2022/ng-atomic-components-services-global-iframe.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-templates-_index.mjs +3 -15
- package/fesm2022/ng-atomic-components-templates-_index.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-templates-background.mjs +2 -2
- package/fesm2022/ng-atomic-components-templates-code-editor.mjs +2 -2
- package/fesm2022/ng-atomic-components-templates-columns.mjs +2 -2
- package/fesm2022/ng-atomic-components-templates-entrance.mjs +2 -2
- package/fesm2022/ng-atomic-components-templates-form-harness.mjs +0 -3
- package/fesm2022/ng-atomic-components-templates-form-harness.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-templates-form.mjs +4 -4
- package/fesm2022/ng-atomic-components-templates-icon-button-menu.mjs +2 -2
- package/fesm2022/ng-atomic-components-templates-menu.mjs +2 -2
- package/fesm2022/ng-atomic-components-templates-selection.mjs +2 -2
- package/fesm2022/ng-atomic-components-templates-settings.mjs +2 -2
- package/fesm2022/ng-atomic-components-templates.mjs +0 -3
- package/fesm2022/ng-atomic-components-templates.mjs.map +1 -1
- package/package.json +3 -3
- package/types/ng-atomic-components-frames-line-up.d.ts +7 -18
- package/types/ng-atomic-components-frames-line-up.d.ts.map +1 -1
- package/types/ng-atomic-components-frames.d.ts.map +1 -1
- package/types/ng-atomic-components-molecules-tree-column.d.ts +0 -2
- package/types/ng-atomic-components-molecules-tree-column.d.ts.map +1 -1
- package/types/ng-atomic-components-organisms-thread-messages-section.d.ts +1 -1
- package/types/ng-atomic-components-organisms-thread-messages-section.d.ts.map +1 -1
- package/types/ng-atomic-components-organisms-tree-section.d.ts +0 -2
- package/types/ng-atomic-components-organisms-tree-section.d.ts.map +1 -1
- package/types/ng-atomic-components-pages-form.d.ts +0 -2
- package/types/ng-atomic-components-pages-form.d.ts.map +1 -1
- package/types/ng-atomic-components-services-global-iframe.d.ts +0 -34
- package/types/ng-atomic-components-services-global-iframe.d.ts.map +1 -1
- package/types/ng-atomic-components-templates-form-harness.d.ts +0 -3
- package/types/ng-atomic-components-templates-form-harness.d.ts.map +1 -1
- package/types/ng-atomic-components-templates.d.ts +0 -1
- package/types/ng-atomic-components-templates.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-components-atoms-chips-input.mjs","sources":["../../../../../packages/@ng-atomic/components/src/lib/atoms/chips-input/chips-input.atom.ts","../../../../../packages/@ng-atomic/components/src/lib/atoms/chips-input/ng-atomic-components-atoms-chips-input.ts"],"sourcesContent":["import { COMMA, ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { Component, OnInit, ChangeDetectionStrategy, Input, ChangeDetectorRef, ViewEncapsulation, OnDestroy } from '@angular/core';\nimport { MatChipInputEvent, MatChipsModule } from '@angular/material/chips';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { ChipsManager } from '@ng-atomic/common/services/chips-manager';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInput, MatInputModule } from '@angular/material/input';\nimport { MatFormFieldControl } from '@angular/material/form-field';\n\n\n@Component({\n selector: 'atoms-chips-input',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatChipsModule,\n MatIconModule,\n MatInputModule,\n ],\n template: `\n <mat-chip-grid #chipGrid>\n <mat-chip-row *ngFor=\"let chip of chipsManager.chips\"\n (removed)=\"remove(chip)\"\n [editable]=\"false\"\n >\n {{ chip }}\n <button matChipRemove><mat-icon>cancel</mat-icon></button>\n </mat-chip-row>\n <input\n matInput\n type=\"search\"\n [placeholder]=\"placeholder\"\n [matChipInputFor]=\"chipGrid\"\n [matChipInputSeparatorKeyCodes]=\"separators\"\n [matChipInputAddOnBlur]=\"true\"\n (matChipInputTokenEnd)=\"onChiInputTokenEnd($event)\"\n >\n </mat-chip-grid>\n `,\n styleUrls: ['./chips-input.atom.scss'],\n
|
|
1
|
+
{"version":3,"file":"ng-atomic-components-atoms-chips-input.mjs","sources":["../../../../../packages/@ng-atomic/components/src/lib/atoms/chips-input/chips-input.atom.ts","../../../../../packages/@ng-atomic/components/src/lib/atoms/chips-input/ng-atomic-components-atoms-chips-input.ts"],"sourcesContent":["import { COMMA, ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { Component, OnInit, ChangeDetectionStrategy, Input, ChangeDetectorRef, ViewEncapsulation, OnDestroy } from '@angular/core';\nimport { MatChipInputEvent, MatChipsModule } from '@angular/material/chips';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { ChipsManager } from '@ng-atomic/common/services/chips-manager';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInput, MatInputModule } from '@angular/material/input';\nimport { MatFormFieldControl } from '@angular/material/form-field';\n\n\n@Component({\n selector: 'atoms-chips-input',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatChipsModule,\n MatIconModule,\n MatInputModule,\n ],\n template: `\n <mat-chip-grid #chipGrid>\n <mat-chip-row *ngFor=\"let chip of chipsManager.chips\"\n (removed)=\"remove(chip)\"\n [editable]=\"false\"\n >\n {{ chip }}\n <button matChipRemove><mat-icon>cancel</mat-icon></button>\n </mat-chip-row>\n <input\n matInput\n type=\"search\"\n [placeholder]=\"placeholder\"\n [matChipInputFor]=\"chipGrid\"\n [matChipInputSeparatorKeyCodes]=\"separators\"\n [matChipInputAddOnBlur]=\"true\"\n (matChipInputTokenEnd)=\"onChiInputTokenEnd($event)\"\n >\n </mat-chip-grid>\n `,\n styleUrls: ['./chips-input.atom.scss'],\n \n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n ChipsManager,\n ],\n hostDirectives: [],\n})\nexport class ChipsInputAtom implements OnInit, OnDestroy {\n private readonly destroy$ = new ReplaySubject<void>(1);\n\n @Input()\n separators = [ENTER, COMMA, SPACE] as const;\n\n @Input()\n control = new FormControl<string>('');\n\n @Input()\n placeholder = '';\n\n constructor(\n private cd: ChangeDetectorRef,\n public chipsManager: ChipsManager,\n ) { }\n\n ngOnInit(): void {\n this.chipsManager.setValue(this.control.value ?? '');\n this.control.valueChanges.pipe(takeUntil(this.destroy$)).subscribe((value) => {\n this.chipsManager.setValue(value ?? '');\n this.cd.markForCheck();\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n }\n\n onChiInputTokenEnd(event: MatChipInputEvent): void {\n this.chipsManager.add(event.value);\n this.control.setValue(this.chipsManager.getValue());\n event.input.value = '';\n }\n\n remove(value: string): void {\n this.chipsManager.remove(value);\n this.control.setValue(this.chipsManager.getValue());\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,7 @@ class IconAtom extends NgAtomicComponent {
|
|
|
21
21
|
} @else {
|
|
22
22
|
<mat-icon>{{ name() }}</mat-icon>
|
|
23
23
|
}
|
|
24
|
-
`, isInline: true, styles: [":host{display:block;--primary-color: #404040;--primary-color-SCOPED-IN-icon-
|
|
24
|
+
`, isInline: true, styles: [":host{display:block;--primary-color: #404040;--primary-color-SCOPED-IN-icon-E4Ae: var(--primary-color);--surface-color: #f0f0f0;--surface-color-SCOPED-IN-icon-E4Ae: var(--surface-color);--background-color: #f0f0f0;--background-color-SCOPED-IN-icon-E4Ae: var(--background-color);--on-primary-color: #f0f0f0;--on-primary-color-SCOPED-IN-icon-E4Ae: var(--on-primary-color);--on-background-color: #404040;--on-background-color-SCOPED-IN-icon-E4Ae: var(--on-background-color);--on-surface-color: #404040;--on-surface-color-SCOPED-IN-icon-E4Ae: var(--on-surface-color);--color: inherit;--color-SCOPED-IN-icon-E4Ae: var(--color)}:host mat-icon{color:var(--on-background-color-SCOPED-IN-icon-E4Ae)}:host mat-icon ::ng-deep svg .filled{transition:fill .5s;fill:var(--color-SCOPED-IN-icon-E4Ae)}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25
25
|
}
|
|
26
26
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: IconAtom, decorators: [{
|
|
27
27
|
type: Component,
|
|
@@ -33,7 +33,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
33
33
|
} @else {
|
|
34
34
|
<mat-icon>{{ name() }}</mat-icon>
|
|
35
35
|
}
|
|
36
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;--primary-color: #404040;--primary-color-SCOPED-IN-icon-
|
|
36
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;--primary-color: #404040;--primary-color-SCOPED-IN-icon-E4Ae: var(--primary-color);--surface-color: #f0f0f0;--surface-color-SCOPED-IN-icon-E4Ae: var(--surface-color);--background-color: #f0f0f0;--background-color-SCOPED-IN-icon-E4Ae: var(--background-color);--on-primary-color: #f0f0f0;--on-primary-color-SCOPED-IN-icon-E4Ae: var(--on-primary-color);--on-background-color: #404040;--on-background-color-SCOPED-IN-icon-E4Ae: var(--on-background-color);--on-surface-color: #404040;--on-surface-color-SCOPED-IN-icon-E4Ae: var(--on-surface-color);--color: inherit;--color-SCOPED-IN-icon-E4Ae: var(--color)}:host mat-icon{color:var(--on-background-color-SCOPED-IN-icon-E4Ae)}:host mat-icon ::ng-deep svg .filled{transition:fill .5s;fill:var(--color-SCOPED-IN-icon-E4Ae)}\n"] }]
|
|
37
37
|
}], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], color: [{
|
|
38
38
|
type: HostBinding,
|
|
39
39
|
args: ['style.--color']
|
|
@@ -13,7 +13,6 @@ import { SpreadSheetCellInput } from '@ng-atomic/common/services/spreadsheet';
|
|
|
13
13
|
import { ExpressionPipe } from '@ng-atomic/common/pipes/expression';
|
|
14
14
|
|
|
15
15
|
const NONE = 'NoValue';
|
|
16
|
-
// Stringでなくす
|
|
17
16
|
Object.assign(NONE, { __closure__: NONE });
|
|
18
17
|
function isNone(value) {
|
|
19
18
|
return value === NONE;
|
|
@@ -44,7 +43,6 @@ class ValueCellAtom extends NgAtomicComponent {
|
|
|
44
43
|
this.context = input.required(...(ngDevMode ? [{ debugName: "context" }] : []));
|
|
45
44
|
this.tempValue = signal(NONE, ...(ngDevMode ? [{ debugName: "tempValue" }] : []));
|
|
46
45
|
this.control = new FormControl(NONE);
|
|
47
|
-
// IME状態管理
|
|
48
46
|
this.isComposing = signal(false, ...(ngDevMode ? [{ debugName: "isComposing" }] : []));
|
|
49
47
|
this.displayValue = computed(() => {
|
|
50
48
|
const value = this.value();
|
|
@@ -76,7 +74,6 @@ class ValueCellAtom extends NgAtomicComponent {
|
|
|
76
74
|
setValue: (value) => this.tempValue.set(value),
|
|
77
75
|
},
|
|
78
76
|
});
|
|
79
|
-
// 編集終了を通知
|
|
80
77
|
this.dispatch({
|
|
81
78
|
id: ActionId.END_EDIT,
|
|
82
79
|
payload: {
|
|
@@ -87,7 +84,6 @@ class ValueCellAtom extends NgAtomicComponent {
|
|
|
87
84
|
}
|
|
88
85
|
onSelectChange(event) {
|
|
89
86
|
const context = this.context();
|
|
90
|
-
// 値の更新をディスパッチ
|
|
91
87
|
this.dispatch({
|
|
92
88
|
id: ActionId.UPDATE_VALUE,
|
|
93
89
|
payload: {
|
|
@@ -97,7 +93,6 @@ class ValueCellAtom extends NgAtomicComponent {
|
|
|
97
93
|
setValue: (value) => this.tempValue.set(value),
|
|
98
94
|
},
|
|
99
95
|
});
|
|
100
|
-
// 編集終了を通知(選択が完了したため)
|
|
101
96
|
this.dispatch({
|
|
102
97
|
id: ActionId.END_EDIT,
|
|
103
98
|
payload: {
|
|
@@ -109,7 +104,6 @@ class ValueCellAtom extends NgAtomicComponent {
|
|
|
109
104
|
onSelectFocus() {
|
|
110
105
|
const context = this.context();
|
|
111
106
|
console.debug('[ValueCellAtom] Select focused, columnId:', context.name, 'rowId:', context.item?.id);
|
|
112
|
-
// セレクトボックスにフォーカスが当たった時点で編集開始
|
|
113
107
|
this.dispatch({
|
|
114
108
|
id: ActionId.START_EDIT,
|
|
115
109
|
payload: {
|
|
@@ -123,7 +117,6 @@ class ValueCellAtom extends NgAtomicComponent {
|
|
|
123
117
|
const context = this.context();
|
|
124
118
|
console.debug('[ValueCellAtom] Select opened changed:', opened, 'columnId:', context.name, 'rowId:', context.item?.id);
|
|
125
119
|
if (opened) {
|
|
126
|
-
// セレクトボックスが開かれた時(念のため再度編集開始を通知)
|
|
127
120
|
this.dispatch({
|
|
128
121
|
id: ActionId.START_EDIT,
|
|
129
122
|
payload: {
|
|
@@ -151,15 +144,12 @@ class ValueCellAtom extends NgAtomicComponent {
|
|
|
151
144
|
this.isComposing.set(false);
|
|
152
145
|
}
|
|
153
146
|
onKeyDown(event) {
|
|
154
|
-
// IME入力中の場合はEnter/Tabキーのイベントバブリングを停止
|
|
155
147
|
if (this.isComposing() && (event.key === 'Enter' || event.key === 'Tab')) {
|
|
156
148
|
event.stopPropagation();
|
|
157
149
|
return;
|
|
158
150
|
}
|
|
159
|
-
// Tab/Enterキーでセル移動する前に値を更新
|
|
160
151
|
if ((event.key === 'Tab' || event.key === 'Enter') && !this.isComposing()) {
|
|
161
152
|
const context = this.context();
|
|
162
|
-
// 値の更新をディスパッチ
|
|
163
153
|
this.dispatch({
|
|
164
154
|
id: ActionId.UPDATE_VALUE,
|
|
165
155
|
payload: {
|
|
@@ -169,7 +159,6 @@ class ValueCellAtom extends NgAtomicComponent {
|
|
|
169
159
|
setValue: (value) => this.tempValue.set(value),
|
|
170
160
|
},
|
|
171
161
|
});
|
|
172
|
-
// 編集終了を通知
|
|
173
162
|
this.dispatch({
|
|
174
163
|
id: ActionId.END_EDIT,
|
|
175
164
|
payload: {
|
|
@@ -178,8 +167,6 @@ class ValueCellAtom extends NgAtomicComponent {
|
|
|
178
167
|
}
|
|
179
168
|
});
|
|
180
169
|
}
|
|
181
|
-
// IME確定後はEnter/Tabキーでセル移動を許可
|
|
182
|
-
// SpreadSheetServiceに処理を委譲(イベントバブリングを利用)
|
|
183
170
|
}
|
|
184
171
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ValueCellAtom, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
185
172
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.6", type: ValueCellAtom, isStandalone: true, selector: "atoms-value-cell, td[atoms-value-cell]", inputs: { formField: { classPropertyName: "formField", publicName: "formField", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, expressionValue: { classPropertyName: "expressionValue", publicName: "expressionValue", isSignal: true, isRequired: false, transformFunction: null }, isEditing: { classPropertyName: "isEditing", publicName: "isEditing", isSignal: true, isRequired: false, transformFunction: null }, context: { classPropertyName: "context", publicName: "context", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { value: "valueChange" }, usesInheritance: true, ngImport: i0, template: `
|
|
@@ -252,7 +239,7 @@ class ValueCellAtom extends NgAtomicComponent {
|
|
|
252
239
|
}
|
|
253
240
|
}
|
|
254
241
|
}
|
|
255
|
-
`, isInline: true, styles: [":host{--mat-table-row-item-label-text-size-SCOPED-IN-value-cell-
|
|
242
|
+
`, isInline: true, styles: [":host{--mat-table-row-item-label-text-size-SCOPED-IN-value-cell-2L5e: var(--mat-table-row-item-label-text-size)}:host .cell-input{position:absolute;inset:0;width:100%;height:100%;margin:0;border:none;box-sizing:border-box;padding-right:4px;font-size:var(--mat-table-row-item-label-text-size-SCOPED-IN-value-cell-2L5e)}:host .cell-input[type=number]{text-align:right}:host .cell-input{background:transparent}:host .cell-input[type=number]::-webkit-outer-spin-button,:host .cell-input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none}:host .cell-input[type=number]{-moz-appearance:textfield}:host .cell-input:focus{outline:none}:host p{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host mat-select{width:100%;font-size:var(--mat-table-row-item-label-text-size-SCOPED-IN-value-cell-2L5e)}:host mat-select .mat-mdc-select-value{font-size:var(--mat-table-row-item-label-text-size-SCOPED-IN-value-cell-2L5e);line-height:1.2}:host mat-select .mat-mdc-select-trigger{min-height:auto;padding:0}:host mat-select .mat-mdc-select-arrow-wrapper{transform:none}:host mat-select .mat-mdc-select-arrow-wrapper .mat-mdc-select-arrow{transform:scale(.8)}:host mat-select.mat-mdc-select{padding:0;margin:0}:host .autocomplete-field{width:100%}:host .autocomplete-field .mat-mdc-form-field-flex{align-items:center;min-height:auto}:host .autocomplete-field .mat-mdc-form-field-infix{padding:0;border:none;min-height:auto}:host .autocomplete-field .mat-mdc-form-field-subscript-wrapper{display:none}:host .autocomplete-field input{font-size:var(--mat-table-row-item-label-text-size-SCOPED-IN-value-cell-2L5e);border:none;outline:none;background:transparent;padding:0;margin:0}::ng-deep .mat-mdc-select-panel .mat-mdc-option{font-size:12px!important;line-height:1.3!important;min-height:32px!important;padding:4px 16px!important}::ng-deep .mat-mdc-select-panel .mat-mdc-option .mdc-list-item__primary-text{font-size:12px!important;line-height:1.3!important}::ng-deep .mat-mdc-select-panel .mat-mdc-option span{font-size:12px!important}::ng-deep .mat-mdc-select-panel .mat-mdc-option *{font-size:12px!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option{font-size:12px!important;line-height:1.3!important;min-height:32px!important;padding:4px 16px!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option .mdc-list-item__primary-text{font-size:12px!important;line-height:1.3!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option span{font-size:12px!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option *{font-size:12px!important}\n"], dependencies: [{ kind: "directive", type: SpreadSheetCellInput, selector: "[ssCellInput]", inputs: ["ssCellInput"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i2.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i3.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i3.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "pipe", type: StylePipe, name: "style" }, { kind: "pipe", type: ExpressionPipe, name: "expression" }] }); }
|
|
256
243
|
}
|
|
257
244
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ValueCellAtom, decorators: [{
|
|
258
245
|
type: Component,
|
|
@@ -334,7 +321,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
334
321
|
}
|
|
335
322
|
}
|
|
336
323
|
}
|
|
337
|
-
`, styles: [":host{--mat-table-row-item-label-text-size-SCOPED-IN-value-cell-
|
|
324
|
+
`, styles: [":host{--mat-table-row-item-label-text-size-SCOPED-IN-value-cell-2L5e: var(--mat-table-row-item-label-text-size)}:host .cell-input{position:absolute;inset:0;width:100%;height:100%;margin:0;border:none;box-sizing:border-box;padding-right:4px;font-size:var(--mat-table-row-item-label-text-size-SCOPED-IN-value-cell-2L5e)}:host .cell-input[type=number]{text-align:right}:host .cell-input{background:transparent}:host .cell-input[type=number]::-webkit-outer-spin-button,:host .cell-input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none}:host .cell-input[type=number]{-moz-appearance:textfield}:host .cell-input:focus{outline:none}:host p{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host mat-select{width:100%;font-size:var(--mat-table-row-item-label-text-size-SCOPED-IN-value-cell-2L5e)}:host mat-select .mat-mdc-select-value{font-size:var(--mat-table-row-item-label-text-size-SCOPED-IN-value-cell-2L5e);line-height:1.2}:host mat-select .mat-mdc-select-trigger{min-height:auto;padding:0}:host mat-select .mat-mdc-select-arrow-wrapper{transform:none}:host mat-select .mat-mdc-select-arrow-wrapper .mat-mdc-select-arrow{transform:scale(.8)}:host mat-select.mat-mdc-select{padding:0;margin:0}:host .autocomplete-field{width:100%}:host .autocomplete-field .mat-mdc-form-field-flex{align-items:center;min-height:auto}:host .autocomplete-field .mat-mdc-form-field-infix{padding:0;border:none;min-height:auto}:host .autocomplete-field .mat-mdc-form-field-subscript-wrapper{display:none}:host .autocomplete-field input{font-size:var(--mat-table-row-item-label-text-size-SCOPED-IN-value-cell-2L5e);border:none;outline:none;background:transparent;padding:0;margin:0}::ng-deep .mat-mdc-select-panel .mat-mdc-option{font-size:12px!important;line-height:1.3!important;min-height:32px!important;padding:4px 16px!important}::ng-deep .mat-mdc-select-panel .mat-mdc-option .mdc-list-item__primary-text{font-size:12px!important;line-height:1.3!important}::ng-deep .mat-mdc-select-panel .mat-mdc-option span{font-size:12px!important}::ng-deep .mat-mdc-select-panel .mat-mdc-option *{font-size:12px!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option{font-size:12px!important;line-height:1.3!important;min-height:32px!important;padding:4px 16px!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option .mdc-list-item__primary-text{font-size:12px!important;line-height:1.3!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option span{font-size:12px!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option *{font-size:12px!important}\n"] }]
|
|
338
325
|
}], ctorParameters: () => [], propDecorators: { formField: [{ type: i0.Input, args: [{ isSignal: true, alias: "formField", required: false }] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: true }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], expressionValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "expressionValue", required: false }] }], isEditing: [{ type: i0.Input, args: [{ isSignal: true, alias: "isEditing", required: false }] }], context: [{ type: i0.Input, args: [{ isSignal: true, alias: "context", required: true }] }] } });
|
|
339
326
|
|
|
340
327
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-components-atoms-value-cell.mjs","sources":["../../../../../packages/@ng-atomic/components/src/lib/atoms/value-cell/value-cell.atom.ts","../../../../../packages/@ng-atomic/components/src/lib/atoms/value-cell/ng-atomic-components-atoms-value-cell.ts"],"sourcesContent":["import { Component, input, model, signal, computed, Directive, effect, viewChild, ChangeDetectionStrategy, ChangeDetectorRef, inject } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatSelectChange, MatSelectModule, MatSelect } from '@angular/material/select';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatInputModule } from '@angular/material/input';\nimport { StylePipe } from '@ng-atomic/common/pipes/style';\nimport { _computed, NgAtomicComponent } from '@ng-atomic/core';\nimport { SpreadSheetCellInput, CellContext, Position } from '@ng-atomic/common/services/spreadsheet';\nimport { FormField } from '@ng-atomic/common/pipes/smart-field';\nimport { ExpressionPipe } from '@ng-atomic/common/pipes/expression';\n\nconst NONE = 'NoValue' as any;\n// Stringでなくす\nObject.assign(NONE, { __closure__: NONE });\n\nfunction isNone(value: any) {\n return value === NONE;\n}\n\nenum ActionId {\n UPDATE_VALUE = '[@ng-atomic/components/atoms/value-cell] update value',\n START_EDIT = '[@ng-atomic/components/atoms/value-cell] start edit',\n END_EDIT = '[@ng-atomic/components/atoms/value-cell] end edit',\n}\n\nexport interface UpdateValuePayload<T = any, V extends string | number = any> {\n current: V;\n next: V;\n context: CellContext<T>;\n setValue: (value: V) => void;\n}\n\n@Directive({ standalone: true })\nexport class ValueCellAtomStore {\n static readonly ActionId = ActionId;\n}\n\n@Component({\n selector: `atoms-value-cell, td[atoms-value-cell]`,\n imports: [\n SpreadSheetCellInput,\n StylePipe,\n ExpressionPipe,\n ReactiveFormsModule,\n MatSelectModule,\n MatAutocompleteModule,\n MatInputModule,\n ],\n template: `\n @let component = '@ng-atomic/components/atoms/value-cell';\n @let field = formField();\n\n @switch (field?.type) {\n @case ('select') {\n <mat-select\n [formControl]=\"control\"\n (selectionChange)=\"onSelectChange($event)\"\n (openedChange)=\"onSelectOpenedChange($event)\"\n (focus)=\"onSelectFocus()\"\n (blur)=\"onSelectBlur()\"\n [style]=\"displayValue() | style:context()\"\n #matSelect\n >\n @for (option of field.options; track option.value) {\n <mat-option [value]=\"option.value\">{{ option.name }}</mat-option>\n }\n </mat-select>\n }\n @default {\n @if (isEditing()) {\n @if (field?.autoComplete && field?.autoComplete?.length > 0) {\n <input\n class=\"cell-input\"\n [type]=\"field.type\"\n [formControl]=\"control\"\n [ssCellInput]=\"position()\"\n [matAutocomplete]=\"auto\"\n [style.visibility]=\"isEditing() ? 'visible' : 'hidden'\"\n [style.display]=\"isEditing() ? 'inherit' : 'none'\"\n (focus)=\"onInputFocus()\"\n (blur)=\"onInputBlur(context())\"\n (compositionstart)=\"onCompositionStart()\"\n (compositionend)=\"onCompositionEnd()\"\n (keydown)=\"onKeyDown($event)\"\n #input\n >\n <mat-autocomplete #auto=\"matAutocomplete\">\n @for (option of field.autoComplete; track option) {\n <mat-option [value]=\"option\">{{ option }}</mat-option>\n }\n </mat-autocomplete>\n } @else {\n <input\n class=\"cell-input\"\n [type]=\"field.type\"\n [formControl]=\"control\"\n [ssCellInput]=\"position()\"\n [style.visibility]=\"isEditing() ? 'visible' : 'hidden'\"\n [style.display]=\"isEditing() ? 'inherit' : 'none'\"\n (focus)=\"onInputFocus()\"\n (blur)=\"onInputBlur(context())\"\n (compositionstart)=\"onCompositionStart()\"\n (compositionend)=\"onCompositionEnd()\"\n (keydown)=\"onKeyDown($event)\"\n #inputv\n >\n }\n } @else {\n <p\n [style]=\"displayValue() | style:context()\"\n [style.visibility]=\"!isEditing() ? 'visible' : 'hidden'\"\n (click)=\"copy(value, $event)\"\n >\n {{ displayValue() | expression:context() }}\n </p>\n }\n }\n }\n `,\n styleUrl: `./value-cell.atom.scss`,\n})\nexport class ValueCellAtom<T> extends NgAtomicComponent {\n readonly formField = input<FormField>();\n readonly position = input.required<Position>();\n readonly value = model<T>();\n readonly expressionValue = input<string>();\n readonly isEditing = input<boolean>(false);\n readonly context = input.required<CellContext>();\n readonly tempValue = signal<T>(NONE);\n readonly control = new FormControl<T>(NONE as T);\n\n // IME状態管理\n private readonly isComposing = signal<boolean>(false);\n\n readonly displayValue = computed(() => {\n const value = this.value();\n const tempValue = this.tempValue();\n return isNone(tempValue) ? value : tempValue;\n })\n\n constructor() {\n super();\n\n effect(() => this.control.setValue(this.displayValue() as T | null));\n }\n\n protected copy(value: any, event: Event) {\n\n }\n\n protected onInputFocus() {\n const context = this.context();\n this.dispatch({\n id: ActionId.START_EDIT,\n payload: { \n rowId: context.item?.id || '', \n columnId: context.name || '',\n item: context.item\n }\n });\n }\n\n protected onInputBlur(context: CellContext) {\n this.dispatch({\n id: ActionId.UPDATE_VALUE,\n payload: <UpdateValuePayload>{\n current: this.displayValue(), \n next: this.control.value,\n context,\n setValue: (value) => this.tempValue.set(value),\n },\n });\n \n // 編集終了を通知\n this.dispatch({\n id: ActionId.END_EDIT,\n payload: { \n rowId: context.item?.id || '', \n columnId: context.name || ''\n }\n });\n }\n\n protected onSelectChange(event: MatSelectChange) {\n const context = this.context();\n \n // 値の更新をディスパッチ\n this.dispatch({\n id: ActionId.UPDATE_VALUE,\n payload: <UpdateValuePayload>{\n current: this.displayValue(), \n next: event.value,\n context: context,\n setValue: (value) => this.tempValue.set(value),\n },\n });\n \n // 編集終了を通知(選択が完了したため)\n this.dispatch({\n id: ActionId.END_EDIT,\n payload: { \n rowId: context.item?.id || '', \n columnId: context.name || ''\n }\n });\n }\n\n protected onSelectFocus() {\n const context = this.context();\n console.debug('[ValueCellAtom] Select focused, columnId:', context.name, 'rowId:', context.item?.id);\n \n // セレクトボックスにフォーカスが当たった時点で編集開始\n this.dispatch({\n id: ActionId.START_EDIT,\n payload: { \n rowId: context.item?.id || '', \n columnId: context.name || '',\n item: context.item\n }\n });\n }\n\n protected onSelectOpenedChange(opened: boolean) {\n const context = this.context();\n console.debug('[ValueCellAtom] Select opened changed:', opened, 'columnId:', context.name, 'rowId:', context.item?.id);\n \n if (opened) {\n // セレクトボックスが開かれた時(念のため再度編集開始を通知)\n this.dispatch({\n id: ActionId.START_EDIT,\n payload: { \n rowId: context.item?.id || '', \n columnId: context.name || '',\n item: context.item\n }\n });\n }\n }\n\n protected onSelectBlur() {\n const context = this.context();\n this.dispatch({ \n id: ActionId.END_EDIT,\n payload: { \n rowId: context.item?.id || '', \n columnId: context.name || ''\n }\n });\n }\n\n protected onCompositionStart(): void {\n this.isComposing.set(true);\n }\n\n protected onCompositionEnd(): void {\n this.isComposing.set(false);\n }\n\n protected onKeyDown(event: KeyboardEvent): void {\n // IME入力中の場合はEnter/Tabキーのイベントバブリングを停止\n if (this.isComposing() && (event.key === 'Enter' || event.key === 'Tab')) {\n event.stopPropagation();\n return;\n }\n \n // Tab/Enterキーでセル移動する前に値を更新\n if ((event.key === 'Tab' || event.key === 'Enter') && !this.isComposing()) {\n const context = this.context();\n \n // 値の更新をディスパッチ\n this.dispatch({\n id: ActionId.UPDATE_VALUE,\n payload: <UpdateValuePayload>{\n current: this.displayValue(), \n next: this.control.value,\n context: context,\n setValue: (value) => this.tempValue.set(value),\n },\n });\n \n // 編集終了を通知\n this.dispatch({\n id: ActionId.END_EDIT,\n payload: { \n rowId: context.item?.id || '', \n columnId: context.name || ''\n }\n });\n }\n \n // IME確定後はEnter/Tabキーでセル移動を許可\n // SpreadSheetServiceに処理を委譲(イベントバブリングを利用)\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-atomic-components-atoms-value-cell.mjs","sources":["../../../../../packages/@ng-atomic/components/src/lib/atoms/value-cell/value-cell.atom.ts","../../../../../packages/@ng-atomic/components/src/lib/atoms/value-cell/ng-atomic-components-atoms-value-cell.ts"],"sourcesContent":["import { Component, input, model, signal, computed, Directive, effect, viewChild, ChangeDetectionStrategy, ChangeDetectorRef, inject } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatSelectChange, MatSelectModule, MatSelect } from '@angular/material/select';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatInputModule } from '@angular/material/input';\nimport { StylePipe } from '@ng-atomic/common/pipes/style';\nimport { _computed, NgAtomicComponent } from '@ng-atomic/core';\nimport { SpreadSheetCellInput, CellContext, Position } from '@ng-atomic/common/services/spreadsheet';\nimport { FormField } from '@ng-atomic/common/pipes/smart-field';\nimport { ExpressionPipe } from '@ng-atomic/common/pipes/expression';\n\nconst NONE = 'NoValue' as any;\n\nObject.assign(NONE, { __closure__: NONE });\n\nfunction isNone(value: any) {\n return value === NONE;\n}\n\nenum ActionId {\n UPDATE_VALUE = '[@ng-atomic/components/atoms/value-cell] update value',\n START_EDIT = '[@ng-atomic/components/atoms/value-cell] start edit',\n END_EDIT = '[@ng-atomic/components/atoms/value-cell] end edit',\n}\n\nexport interface UpdateValuePayload<T = any, V extends string | number = any> {\n current: V;\n next: V;\n context: CellContext<T>;\n setValue: (value: V) => void;\n}\n\n@Directive({ standalone: true })\nexport class ValueCellAtomStore {\n static readonly ActionId = ActionId;\n}\n\n@Component({\n selector: `atoms-value-cell, td[atoms-value-cell]`,\n imports: [\n SpreadSheetCellInput,\n StylePipe,\n ExpressionPipe,\n ReactiveFormsModule,\n MatSelectModule,\n MatAutocompleteModule,\n MatInputModule,\n ],\n template: `\n @let component = '@ng-atomic/components/atoms/value-cell';\n @let field = formField();\n\n @switch (field?.type) {\n @case ('select') {\n <mat-select\n [formControl]=\"control\"\n (selectionChange)=\"onSelectChange($event)\"\n (openedChange)=\"onSelectOpenedChange($event)\"\n (focus)=\"onSelectFocus()\"\n (blur)=\"onSelectBlur()\"\n [style]=\"displayValue() | style:context()\"\n #matSelect\n >\n @for (option of field.options; track option.value) {\n <mat-option [value]=\"option.value\">{{ option.name }}</mat-option>\n }\n </mat-select>\n }\n @default {\n @if (isEditing()) {\n @if (field?.autoComplete && field?.autoComplete?.length > 0) {\n <input\n class=\"cell-input\"\n [type]=\"field.type\"\n [formControl]=\"control\"\n [ssCellInput]=\"position()\"\n [matAutocomplete]=\"auto\"\n [style.visibility]=\"isEditing() ? 'visible' : 'hidden'\"\n [style.display]=\"isEditing() ? 'inherit' : 'none'\"\n (focus)=\"onInputFocus()\"\n (blur)=\"onInputBlur(context())\"\n (compositionstart)=\"onCompositionStart()\"\n (compositionend)=\"onCompositionEnd()\"\n (keydown)=\"onKeyDown($event)\"\n #input\n >\n <mat-autocomplete #auto=\"matAutocomplete\">\n @for (option of field.autoComplete; track option) {\n <mat-option [value]=\"option\">{{ option }}</mat-option>\n }\n </mat-autocomplete>\n } @else {\n <input\n class=\"cell-input\"\n [type]=\"field.type\"\n [formControl]=\"control\"\n [ssCellInput]=\"position()\"\n [style.visibility]=\"isEditing() ? 'visible' : 'hidden'\"\n [style.display]=\"isEditing() ? 'inherit' : 'none'\"\n (focus)=\"onInputFocus()\"\n (blur)=\"onInputBlur(context())\"\n (compositionstart)=\"onCompositionStart()\"\n (compositionend)=\"onCompositionEnd()\"\n (keydown)=\"onKeyDown($event)\"\n #inputv\n >\n }\n } @else {\n <p\n [style]=\"displayValue() | style:context()\"\n [style.visibility]=\"!isEditing() ? 'visible' : 'hidden'\"\n (click)=\"copy(value, $event)\"\n >\n {{ displayValue() | expression:context() }}\n </p>\n }\n }\n }\n `,\n styleUrl: `./value-cell.atom.scss`,\n})\nexport class ValueCellAtom<T> extends NgAtomicComponent {\n readonly formField = input<FormField>();\n readonly position = input.required<Position>();\n readonly value = model<T>();\n readonly expressionValue = input<string>();\n readonly isEditing = input<boolean>(false);\n readonly context = input.required<CellContext>();\n readonly tempValue = signal<T>(NONE);\n readonly control = new FormControl<T>(NONE as T);\n\n \n private readonly isComposing = signal<boolean>(false);\n\n readonly displayValue = computed(() => {\n const value = this.value();\n const tempValue = this.tempValue();\n return isNone(tempValue) ? value : tempValue;\n })\n\n constructor() {\n super();\n\n effect(() => this.control.setValue(this.displayValue() as T | null));\n }\n\n protected copy(value: any, event: Event) {\n\n }\n\n protected onInputFocus() {\n const context = this.context();\n this.dispatch({\n id: ActionId.START_EDIT,\n payload: { \n rowId: context.item?.id || '', \n columnId: context.name || '',\n item: context.item\n }\n });\n }\n\n protected onInputBlur(context: CellContext) {\n this.dispatch({\n id: ActionId.UPDATE_VALUE,\n payload: <UpdateValuePayload>{\n current: this.displayValue(), \n next: this.control.value,\n context,\n setValue: (value) => this.tempValue.set(value),\n },\n });\n \n \n this.dispatch({\n id: ActionId.END_EDIT,\n payload: { \n rowId: context.item?.id || '', \n columnId: context.name || ''\n }\n });\n }\n\n protected onSelectChange(event: MatSelectChange) {\n const context = this.context();\n \n \n this.dispatch({\n id: ActionId.UPDATE_VALUE,\n payload: <UpdateValuePayload>{\n current: this.displayValue(), \n next: event.value,\n context: context,\n setValue: (value) => this.tempValue.set(value),\n },\n });\n \n \n this.dispatch({\n id: ActionId.END_EDIT,\n payload: { \n rowId: context.item?.id || '', \n columnId: context.name || ''\n }\n });\n }\n\n protected onSelectFocus() {\n const context = this.context();\n console.debug('[ValueCellAtom] Select focused, columnId:', context.name, 'rowId:', context.item?.id);\n \n \n this.dispatch({\n id: ActionId.START_EDIT,\n payload: { \n rowId: context.item?.id || '', \n columnId: context.name || '',\n item: context.item\n }\n });\n }\n\n protected onSelectOpenedChange(opened: boolean) {\n const context = this.context();\n console.debug('[ValueCellAtom] Select opened changed:', opened, 'columnId:', context.name, 'rowId:', context.item?.id);\n \n if (opened) {\n \n this.dispatch({\n id: ActionId.START_EDIT,\n payload: { \n rowId: context.item?.id || '', \n columnId: context.name || '',\n item: context.item\n }\n });\n }\n }\n\n protected onSelectBlur() {\n const context = this.context();\n this.dispatch({ \n id: ActionId.END_EDIT,\n payload: { \n rowId: context.item?.id || '', \n columnId: context.name || ''\n }\n });\n }\n\n protected onCompositionStart(): void {\n this.isComposing.set(true);\n }\n\n protected onCompositionEnd(): void {\n this.isComposing.set(false);\n }\n\n protected onKeyDown(event: KeyboardEvent): void {\n \n if (this.isComposing() && (event.key === 'Enter' || event.key === 'Tab')) {\n event.stopPropagation();\n return;\n }\n \n \n if ((event.key === 'Tab' || event.key === 'Enter') && !this.isComposing()) {\n const context = this.context();\n \n \n this.dispatch({\n id: ActionId.UPDATE_VALUE,\n payload: <UpdateValuePayload>{\n current: this.displayValue(), \n next: this.control.value,\n context: context,\n setValue: (value) => this.tempValue.set(value),\n },\n });\n \n \n this.dispatch({\n id: ActionId.END_EDIT,\n payload: { \n rowId: context.item?.id || '', \n columnId: context.name || ''\n }\n });\n }\n \n \n \n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -28,8 +28,6 @@ class EditorComponentStore extends InjectableComponent {
|
|
|
28
28
|
this.extensions = input([
|
|
29
29
|
json(),
|
|
30
30
|
], ...(ngDevMode ? [{ debugName: "extensions" }] : []));
|
|
31
|
-
// readonly update = signal<ViewUpdate>(null);
|
|
32
|
-
// readonly update$ = toObservable(this.update);
|
|
33
31
|
this.update$ = new ReplaySubject(0);
|
|
34
32
|
this.defaultExtensions = computed(() => [
|
|
35
33
|
basicSetup,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-components-extras-editor.mjs","sources":["../../../../../packages/@ng-atomic/components/src/lib/extras/editor/editor.component.ts","../../../../../packages/@ng-atomic/components/src/lib/extras/editor/ng-atomic-components-extras-editor.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, inject, input, effect, ElementRef, OnInit, AfterViewInit, output, signal, Directive, linkedSignal } from '@angular/core';\nimport { keymap, ViewUpdate } from \"@codemirror/view\"\nimport { indentWithTab } from \"@codemirror/commands\"\nimport { syntaxHighlighting } from '@codemirror/language';\nimport { oneDarkHighlightStyle, oneDark } from '@codemirror/theme-one-dark';\nimport { EditorSelection, EditorState, Extension, Text } from '@codemirror/state';\nimport { basicSetup, EditorView } from \"codemirror\"\nimport { Action, applyToInput, InjectableComponent, NgAtomicComponent } from '@ng-atomic/core';\nimport { json } from \"@codemirror/lang-json\";\nimport { distinctUntilChanged, filter, map, ReplaySubject } from 'rxjs';\nimport { FormControl } from '@angular/forms';\nimport { derivedAsync } from 'ngxtension/derived-async';\nimport { getRawValue$ } from '@ng-atomic/common/utils';\n\nfunction getSafeSelection(doc: string | Text, selection: EditorSelection): EditorSelection {\n const safeFrom = Math.max(0, Math.min(selection.main.from, doc.length));\n const safeTo = Math.max(0, Math.min(selection.main.to, doc.length));\n return EditorSelection.single(safeFrom, safeTo);\n}\n\n@Directive({ standalone: true })\nexport class EditorComponentStore extends InjectableComponent {\n readonly control = input<FormControl>(null as unknown as FormControl);\n readonly _content = input<string>('', {alias: 'content'});\n readonly content = linkedSignal(() => this._content());\n readonly contentChange = output<string>();\n readonly keyActions = input<{key: string, actionId: string}[]>([]);\n readonly extensions = input<Extension[]>([\n json(),\n ]);\n // readonly update = signal<ViewUpdate>(null);\n // readonly update$ = toObservable(this.update);\n readonly update$ = new ReplaySubject<ViewUpdate>(0);\n readonly defaultExtensions = computed(() => [\n basicSetup,\n oneDark,\n syntaxHighlighting(oneDarkHighlightStyle),\n EditorView.updateListener.of((update) => this.update$.next(update)),\n keymap.of([\n ...(this.keyActions()).map(({key, actionId}) => ({\n key,\n run: () => {\n this.action.emit({id: actionId});\n return true;\n },\n })),\n indentWithTab,\n ]),\n ]);\n\n readonly state = computed(() => {\n const editorView = this.editorView();\n const defaultExtensions = this.defaultExtensions();\n const extensions = this.extensions();\n if (!editorView) return null;\n return EditorState.create({\n ...editorView?.state,\n extensions: [...defaultExtensions, ...extensions],\n })\n });\n\n readonly editorView = signal<EditorView>(null as unknown as EditorView);\n readonly action = output<Action>();\n\n constructor() {\n super();\n const controlValue = derivedAsync(() => this.control() ? getRawValue$<string>(this.control()) : null);\n\n effect(() => {\n if (this.control()) this.content.set(controlValue() ?? '');\n });\n\n this.contentChange.subscribe((content) => {\n if (this.control()) this.control().setValue(content);\n });\n\n this.update$.pipe(\n filter((update) => update?.docChanged),\n map((update) => (update.state.doc.toString())),\n distinctUntilChanged(),\n ).subscribe((content) => {\n this.contentChange.emit(content);\n });\n\n effect(() => {\n const editorView = this.editorView();\n const newContent = this.content() ?? '';\n if (!editorView) return;\n const currentContent = editorView.state.doc.toString();\n \n if (newContent === currentContent) return;\n \n const doc = editorView.state.doc;\n const safeSelection = getSafeSelection(newContent, editorView.state.selection);\n \n editorView.dispatch(\n editorView.state.update({\n changes: {\n from: 0,\n to: doc.length,\n insert: newContent,\n },\n selection: safeSelection,\n scrollIntoView: true,\n }),\n );\n });\n\n effect(() => {\n const state = this.state();\n const editorView = this.editorView();\n if (state) editorView?.setState(state);\n });\n }\n}\n\n@Component({\n selector: 'extras-editor',\n standalone: true,\n template: ``,\n styleUrls: ['./editor.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: EditorComponentStore,\n inputs: ['control', 'content', 'keyActions', 'extensions'],\n outputs: ['contentChange'],\n }\n ]\n})\nexport class EditorComponent extends NgAtomicComponent implements OnInit, AfterViewInit {\n protected readonly store = inject(EditorComponentStore);\n protected readonly el = inject(ElementRef);\n\n ngOnInit(): void {\n this.store.action.subscribe((action) => this.dispatch(action));\n }\n\n ngAfterViewInit() {\n this.store.editorView()?.destroy();\n this.store.editorView.set(new EditorView({\n state: EditorState.create({\n doc: ``,\n extensions: [\n ...this.store.defaultExtensions(),\n ...this.store.extensions(),\n ],\n }),\n parent: this.el.nativeElement,\n }));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-atomic-components-extras-editor.mjs","sources":["../../../../../packages/@ng-atomic/components/src/lib/extras/editor/editor.component.ts","../../../../../packages/@ng-atomic/components/src/lib/extras/editor/ng-atomic-components-extras-editor.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, inject, input, effect, ElementRef, OnInit, AfterViewInit, output, signal, Directive, linkedSignal } from '@angular/core';\nimport { keymap, ViewUpdate } from \"@codemirror/view\"\nimport { indentWithTab } from \"@codemirror/commands\"\nimport { syntaxHighlighting } from '@codemirror/language';\nimport { oneDarkHighlightStyle, oneDark } from '@codemirror/theme-one-dark';\nimport { EditorSelection, EditorState, Extension, Text } from '@codemirror/state';\nimport { basicSetup, EditorView } from \"codemirror\"\nimport { Action, applyToInput, InjectableComponent, NgAtomicComponent } from '@ng-atomic/core';\nimport { json } from \"@codemirror/lang-json\";\nimport { distinctUntilChanged, filter, map, ReplaySubject } from 'rxjs';\nimport { FormControl } from '@angular/forms';\nimport { derivedAsync } from 'ngxtension/derived-async';\nimport { getRawValue$ } from '@ng-atomic/common/utils';\n\nfunction getSafeSelection(doc: string | Text, selection: EditorSelection): EditorSelection {\n const safeFrom = Math.max(0, Math.min(selection.main.from, doc.length));\n const safeTo = Math.max(0, Math.min(selection.main.to, doc.length));\n return EditorSelection.single(safeFrom, safeTo);\n}\n\n@Directive({ standalone: true })\nexport class EditorComponentStore extends InjectableComponent {\n readonly control = input<FormControl>(null as unknown as FormControl);\n readonly _content = input<string>('', {alias: 'content'});\n readonly content = linkedSignal(() => this._content());\n readonly contentChange = output<string>();\n readonly keyActions = input<{key: string, actionId: string}[]>([]);\n readonly extensions = input<Extension[]>([\n json(),\n ]);\n \n \n readonly update$ = new ReplaySubject<ViewUpdate>(0);\n readonly defaultExtensions = computed(() => [\n basicSetup,\n oneDark,\n syntaxHighlighting(oneDarkHighlightStyle),\n EditorView.updateListener.of((update) => this.update$.next(update)),\n keymap.of([\n ...(this.keyActions()).map(({key, actionId}) => ({\n key,\n run: () => {\n this.action.emit({id: actionId});\n return true;\n },\n })),\n indentWithTab,\n ]),\n ]);\n\n readonly state = computed(() => {\n const editorView = this.editorView();\n const defaultExtensions = this.defaultExtensions();\n const extensions = this.extensions();\n if (!editorView) return null;\n return EditorState.create({\n ...editorView?.state,\n extensions: [...defaultExtensions, ...extensions],\n })\n });\n\n readonly editorView = signal<EditorView>(null as unknown as EditorView);\n readonly action = output<Action>();\n\n constructor() {\n super();\n const controlValue = derivedAsync(() => this.control() ? getRawValue$<string>(this.control()) : null);\n\n effect(() => {\n if (this.control()) this.content.set(controlValue() ?? '');\n });\n\n this.contentChange.subscribe((content) => {\n if (this.control()) this.control().setValue(content);\n });\n\n this.update$.pipe(\n filter((update) => update?.docChanged),\n map((update) => (update.state.doc.toString())),\n distinctUntilChanged(),\n ).subscribe((content) => {\n this.contentChange.emit(content);\n });\n\n effect(() => {\n const editorView = this.editorView();\n const newContent = this.content() ?? '';\n if (!editorView) return;\n const currentContent = editorView.state.doc.toString();\n \n if (newContent === currentContent) return;\n \n const doc = editorView.state.doc;\n const safeSelection = getSafeSelection(newContent, editorView.state.selection);\n \n editorView.dispatch(\n editorView.state.update({\n changes: {\n from: 0,\n to: doc.length,\n insert: newContent,\n },\n selection: safeSelection,\n scrollIntoView: true,\n }),\n );\n });\n\n effect(() => {\n const state = this.state();\n const editorView = this.editorView();\n if (state) editorView?.setState(state);\n });\n }\n}\n\n@Component({\n selector: 'extras-editor',\n standalone: true,\n template: ``,\n styleUrls: ['./editor.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: EditorComponentStore,\n inputs: ['control', 'content', 'keyActions', 'extensions'],\n outputs: ['contentChange'],\n }\n ]\n})\nexport class EditorComponent extends NgAtomicComponent implements OnInit, AfterViewInit {\n protected readonly store = inject(EditorComponentStore);\n protected readonly el = inject(ElementRef);\n\n ngOnInit(): void {\n this.store.action.subscribe((action) => this.dispatch(action));\n }\n\n ngAfterViewInit() {\n this.store.editorView()?.destroy();\n this.store.editorView.set(new EditorView({\n state: EditorState.create({\n doc: ``,\n extensions: [\n ...this.store.defaultExtensions(),\n ...this.store.extensions(),\n ],\n }),\n parent: this.el.nativeElement,\n }));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -405,7 +405,7 @@ class AppFrame extends NgAtomicComponent {
|
|
|
405
405
|
</frames-fab>
|
|
406
406
|
</frames-progress-bar>
|
|
407
407
|
</frames-loading>
|
|
408
|
-
`, isInline: true, styles: [":host{--primary-color-SCOPED-IN-frames-app-
|
|
408
|
+
`, isInline: true, styles: [":host{--primary-color-SCOPED-IN-frames-app-eL5N: var(--primary-color);--on-primary-color-SCOPED-IN-frames-app-eL5N: var(--on-primary-color);--surface-color-SCOPED-IN-frames-app-eL5N: var(--surface-color);--on-surface-color-SCOPED-IN-frames-app-eL5N: var(--on-surface-color);--background-color-SCOPED-IN-frames-app-eL5N: var(--background-color);--on-background-color-SCOPED-IN-frames-app-eL5N: var(--on-background-color);--menu-width-SCOPED-IN-frames-app-eL5N: var(--menu-width);--page-width-lv1-SCOPED-IN-frames-app-eL5N: var(--page-width-lv1);--menu-background-color: var(--primary-color-SCOPED-IN-frames-app-eL5N);--menu-background-color-SCOPED-IN-frames-app-eL5N: var(--menu-background-color);--menu-on-background-color: var(--on-primary-color-SCOPED-IN-frames-app-eL5N);--menu-on-background-color-SCOPED-IN-frames-app-eL5N: var(--menu-on-background-color);--menu-padding-top: 56px;--menu-padding-top-SCOPED-IN-frames-app-eL5N: var(--menu-padding-top);--background-primary-color: var(--primary-color-SCOPED-IN-frames-app-eL5N);--background-primary-color-SCOPED-IN-frames-app-eL5N: var(--background-primary-color);--background-on-primary-color: var(--on-primary-color-SCOPED-IN-frames-app-eL5N);--background-on-primary-color-SCOPED-IN-frames-app-eL5N: var(--background-on-primary-color);--background-background-color: var(--background-color-SCOPED-IN-frames-app-eL5N);--background-background-color-SCOPED-IN-frames-app-eL5N: var(--background-background-color);--side-app-background-color-SCOPED-IN-frames-app-eL5N: var(--side-app-background-color);--loading-primary-color: var(--primary-color-SCOPED-IN-frames-app-eL5N);--loading-primary-color-SCOPED-IN-frames-app-eL5N: var(--loading-primary-color);--loading-z-index: 1000;--loading-z-index-SCOPED-IN-frames-app-eL5N: var(--loading-z-index)}:host{display:block;width:100%;height:100%;position:fixed;color:var(--primary-color-SCOPED-IN-frames-app-eL5N);touch-action:none}:host *{--primary-color: var(--primary-color-SCOPED-IN-frames-app-eL5N);--on-primary-color: var(--on-primary-color-SCOPED-IN-frames-app-eL5N);--surface-color: var(--surface-color-SCOPED-IN-frames-app-eL5N);--on-surface-color: var(--on-surface-color-SCOPED-IN-frames-app-eL5N);--background-color: var(--background-color-SCOPED-IN-frames-app-eL5N);--on-background-color: var(--on-background-color-SCOPED-IN-frames-app-eL5N);--menu-background-color: var(--menu-background-color-SCOPED-IN-frames-app-eL5N);--menu-on-background-color: var(--menu-on-background-color-SCOPED-IN-frames-app-eL5N)}:host frames-drawer{opacity:1;--background-color: var(--side-app-background-color-SCOPED-IN-frames-app-eL5N)}:host frames-side-nav{color:#000;--menu-width: var(--menu-width-SCOPED-IN-frames-app-eL5N)}:host frames-loading{--primary-color: var(--loading-primary-color-SCOPED-IN-frames-app-eL5N);opacity:.9}:host templates-background{--primary-color: var(--background-primary-color-SCOPED-IN-frames-app-eL5N);--on-primary-color: var(--background-on-primary-color-SCOPED-IN-frames-app-eL5N);--background-color: var(--background-background-color-SCOPED-IN-frames-app-eL5N);position:absolute;top:0;left:0}:host frames-side-nav .side-app{position:relative;width:var(--page-width-lv1-SCOPED-IN-frames-app-eL5N);height:100%}:host.is-entrance frames-drawer{opacity:1}:host.is-entrance frames-drawer mat-drawer[style*=\"100%\"]+mat-drawer-content{margin-right:0!important}:host.is-entrance frames-side-nav{display:none}frames-drawer mat-drawer[style*=\"calc(100%\"]+mat-drawer-content{margin-right:0!important}\n"], dependencies: [{ kind: "component", type: FabFrame, selector: "frames-fab" }, { kind: "component", type: LoadingFrame, selector: "frames-loading" }, { kind: "component", type: SideNavFrame, selector: "frames-side-nav" }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: EntranceFrame, selector: "frames-entrance" }, { kind: "component", type: DrawerFrame, selector: "frames-drawer" }, { kind: "component", type: ProgressBarFrame, selector: "frames-progress-bar" }, { kind: "component", type: BreadcrumbNavbarFrame, selector: "frames-breadcrumb-navbar" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, deferBlockDependencies: [() => [import('@ng-atomic/components/templates/background').then(m => m.BackgroundTemplateStore)]] }); }
|
|
409
409
|
}
|
|
410
410
|
i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "21.1.6", ngImport: i0, type: AppFrame, resolveDeferredDeps: () => [import('@ng-atomic/components/templates/background').then(m => m.BackgroundTemplateStore)], resolveMetadata: BackgroundTemplateStore => ({ decorators: [{
|
|
411
411
|
type: Component,
|
|
@@ -483,7 +483,7 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "21.1.6", ng
|
|
|
483
483
|
PreventBrowserZoomDirective,
|
|
484
484
|
], host: {
|
|
485
485
|
'[class.is-entrance]': 'store.isEntrance()',
|
|
486
|
-
}, styles: [":host{--primary-color-SCOPED-IN-frames-app-
|
|
486
|
+
}, styles: [":host{--primary-color-SCOPED-IN-frames-app-eL5N: var(--primary-color);--on-primary-color-SCOPED-IN-frames-app-eL5N: var(--on-primary-color);--surface-color-SCOPED-IN-frames-app-eL5N: var(--surface-color);--on-surface-color-SCOPED-IN-frames-app-eL5N: var(--on-surface-color);--background-color-SCOPED-IN-frames-app-eL5N: var(--background-color);--on-background-color-SCOPED-IN-frames-app-eL5N: var(--on-background-color);--menu-width-SCOPED-IN-frames-app-eL5N: var(--menu-width);--page-width-lv1-SCOPED-IN-frames-app-eL5N: var(--page-width-lv1);--menu-background-color: var(--primary-color-SCOPED-IN-frames-app-eL5N);--menu-background-color-SCOPED-IN-frames-app-eL5N: var(--menu-background-color);--menu-on-background-color: var(--on-primary-color-SCOPED-IN-frames-app-eL5N);--menu-on-background-color-SCOPED-IN-frames-app-eL5N: var(--menu-on-background-color);--menu-padding-top: 56px;--menu-padding-top-SCOPED-IN-frames-app-eL5N: var(--menu-padding-top);--background-primary-color: var(--primary-color-SCOPED-IN-frames-app-eL5N);--background-primary-color-SCOPED-IN-frames-app-eL5N: var(--background-primary-color);--background-on-primary-color: var(--on-primary-color-SCOPED-IN-frames-app-eL5N);--background-on-primary-color-SCOPED-IN-frames-app-eL5N: var(--background-on-primary-color);--background-background-color: var(--background-color-SCOPED-IN-frames-app-eL5N);--background-background-color-SCOPED-IN-frames-app-eL5N: var(--background-background-color);--side-app-background-color-SCOPED-IN-frames-app-eL5N: var(--side-app-background-color);--loading-primary-color: var(--primary-color-SCOPED-IN-frames-app-eL5N);--loading-primary-color-SCOPED-IN-frames-app-eL5N: var(--loading-primary-color);--loading-z-index: 1000;--loading-z-index-SCOPED-IN-frames-app-eL5N: var(--loading-z-index)}:host{display:block;width:100%;height:100%;position:fixed;color:var(--primary-color-SCOPED-IN-frames-app-eL5N);touch-action:none}:host *{--primary-color: var(--primary-color-SCOPED-IN-frames-app-eL5N);--on-primary-color: var(--on-primary-color-SCOPED-IN-frames-app-eL5N);--surface-color: var(--surface-color-SCOPED-IN-frames-app-eL5N);--on-surface-color: var(--on-surface-color-SCOPED-IN-frames-app-eL5N);--background-color: var(--background-color-SCOPED-IN-frames-app-eL5N);--on-background-color: var(--on-background-color-SCOPED-IN-frames-app-eL5N);--menu-background-color: var(--menu-background-color-SCOPED-IN-frames-app-eL5N);--menu-on-background-color: var(--menu-on-background-color-SCOPED-IN-frames-app-eL5N)}:host frames-drawer{opacity:1;--background-color: var(--side-app-background-color-SCOPED-IN-frames-app-eL5N)}:host frames-side-nav{color:#000;--menu-width: var(--menu-width-SCOPED-IN-frames-app-eL5N)}:host frames-loading{--primary-color: var(--loading-primary-color-SCOPED-IN-frames-app-eL5N);opacity:.9}:host templates-background{--primary-color: var(--background-primary-color-SCOPED-IN-frames-app-eL5N);--on-primary-color: var(--background-on-primary-color-SCOPED-IN-frames-app-eL5N);--background-color: var(--background-background-color-SCOPED-IN-frames-app-eL5N);position:absolute;top:0;left:0}:host frames-side-nav .side-app{position:relative;width:var(--page-width-lv1-SCOPED-IN-frames-app-eL5N);height:100%}:host.is-entrance frames-drawer{opacity:1}:host.is-entrance frames-drawer mat-drawer[style*=\"100%\"]+mat-drawer-content{margin-right:0!important}:host.is-entrance frames-side-nav{display:none}frames-drawer mat-drawer[style*=\"calc(100%\"]+mat-drawer-content{margin-right:0!important}\n"] }]
|
|
487
487
|
}], ctorParameters: null, propDecorators: null }) });
|
|
488
488
|
|
|
489
489
|
/**
|
|
@@ -19,7 +19,7 @@ class AutoLayoutFrame {
|
|
|
19
19
|
this.store = inject(AutoLayoutFrameStore);
|
|
20
20
|
}
|
|
21
21
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: AutoLayoutFrame, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
22
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.6", type: AutoLayoutFrame, isStandalone: true, selector: "frames-auto-layout", host: { properties: { "attr.type": "store.type()" } }, hostDirectives: [{ directive: AutoLayoutFrameStore, inputs: ["type", "type"] }], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{--gap: 24px;--gap-SCOPED-IN-auto-layout-
|
|
22
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.6", type: AutoLayoutFrame, isStandalone: true, selector: "frames-auto-layout", host: { properties: { "attr.type": "store.type()" } }, hostDirectives: [{ directive: AutoLayoutFrameStore, inputs: ["type", "type"] }], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{--gap: 24px;--gap-SCOPED-IN-auto-layout-iXgj: var(--gap);--vertical-padding: 24px;--vertical-padding-SCOPED-IN-auto-layout-iXgj: var(--vertical-padding);--horizontal-padding: 0;--horizontal-padding-SCOPED-IN-auto-layout-iXgj: var(--horizontal-padding)}:host{display:flex;width:100%;height:100%;justify-content:center;align-items:center;gap:var(--gap-SCOPED-IN-auto-layout-iXgj);box-sizing:border-box;padding:var(--vertical-padding-SCOPED-IN-auto-layout-iXgj) var(--horizontal-padding-SCOPED-IN-auto-layout-iXgj)}:host[type=horizontal]{flex-direction:row}:host[type=vertical]{flex-direction:column}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23
23
|
}
|
|
24
24
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: AutoLayoutFrame, decorators: [{
|
|
25
25
|
type: Component,
|
|
@@ -32,7 +32,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
32
32
|
},
|
|
33
33
|
], host: {
|
|
34
34
|
'[attr.type]': 'store.type()'
|
|
35
|
-
}, styles: [":host{--gap: 24px;--gap-SCOPED-IN-auto-layout-
|
|
35
|
+
}, styles: [":host{--gap: 24px;--gap-SCOPED-IN-auto-layout-iXgj: var(--gap);--vertical-padding: 24px;--vertical-padding-SCOPED-IN-auto-layout-iXgj: var(--vertical-padding);--horizontal-padding: 0;--horizontal-padding-SCOPED-IN-auto-layout-iXgj: var(--horizontal-padding)}:host{display:flex;width:100%;height:100%;justify-content:center;align-items:center;gap:var(--gap-SCOPED-IN-auto-layout-iXgj);box-sizing:border-box;padding:var(--vertical-padding-SCOPED-IN-auto-layout-iXgj) var(--horizontal-padding-SCOPED-IN-auto-layout-iXgj)}:host[type=horizontal]{flex-direction:row}:host[type=vertical]{flex-direction:column}\n"] }]
|
|
36
36
|
}] });
|
|
37
37
|
|
|
38
38
|
/**
|
|
@@ -68,7 +68,7 @@ class BreadcrumbNavbarFrame extends NgAtomicComponent {
|
|
|
68
68
|
<div class="breadcrumb-navbar-content">
|
|
69
69
|
<ng-content />
|
|
70
70
|
</div>
|
|
71
|
-
`, isInline: true, styles: [":host{display:block;--primary-color: inherit;--primary-color-SCOPED-IN-navigator-
|
|
71
|
+
`, isInline: true, styles: [":host{display:block;--primary-color: inherit;--primary-color-SCOPED-IN-navigator-D9RN: var(--primary-color);--on-primary-color: inherit;--on-primary-color-SCOPED-IN-navigator-D9RN: var(--on-primary-color);--secondary-color: inherit;--secondary-color-SCOPED-IN-navigator-D9RN: var(--secondary-color);--on-secondary-color: inherit;--on-secondary-color-SCOPED-IN-navigator-D9RN: var(--on-secondary-color);--background-color: inherit;--background-color-SCOPED-IN-navigator-D9RN: var(--background-color);--on-background-color: inherit;--on-background-color-SCOPED-IN-navigator-D9RN: var(--on-background-color)}:host{display:block;width:100%;height:100%}:host *{--primary-color: var(--primary-color-SCOPED-IN-navigator-D9RN);--on-primary-color: var(--on-primary-color-SCOPED-IN-navigator-D9RN);--secondary-color: var(--secondary-color-SCOPED-IN-navigator-D9RN);--on-secondary-color: var(--on-secondary-color-SCOPED-IN-navigator-D9RN);--background-color: var(--background-color-SCOPED-IN-navigator-D9RN);--on-background-color: var(--on-background-color-SCOPED-IN-navigator-D9RN)}:host .breadcrumb-navbar-frame{width:100%;z-index:100;background:var(--primary-color-SCOPED-IN-navigator-D9RN)}:host .breadcrumb-navbar-frame.fixed{position:fixed;top:0;left:0;right:0}:host .breadcrumb-navbar-frame ::ng-deep organisms-breadcrumb-navbar mat-toolbar{border-bottom:none}:host .breadcrumb-navbar-content{width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: BreadcrumbNavbarOrganismStore, selector: "organisms-breadcrumb-navbar", inputs: ["items", "separator", "showHome", "homeIcon", "homeLink", "showLogo", "logoHeight", "logoWidth", "endActions"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
72
72
|
}
|
|
73
73
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: BreadcrumbNavbarFrame, decorators: [{
|
|
74
74
|
type: Component,
|
|
@@ -105,7 +105,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
105
105
|
'hideOnMobile',
|
|
106
106
|
],
|
|
107
107
|
}
|
|
108
|
-
], styles: [":host{display:block;--primary-color: inherit;--primary-color-SCOPED-IN-navigator-
|
|
108
|
+
], styles: [":host{display:block;--primary-color: inherit;--primary-color-SCOPED-IN-navigator-D9RN: var(--primary-color);--on-primary-color: inherit;--on-primary-color-SCOPED-IN-navigator-D9RN: var(--on-primary-color);--secondary-color: inherit;--secondary-color-SCOPED-IN-navigator-D9RN: var(--secondary-color);--on-secondary-color: inherit;--on-secondary-color-SCOPED-IN-navigator-D9RN: var(--on-secondary-color);--background-color: inherit;--background-color-SCOPED-IN-navigator-D9RN: var(--background-color);--on-background-color: inherit;--on-background-color-SCOPED-IN-navigator-D9RN: var(--on-background-color)}:host{display:block;width:100%;height:100%}:host *{--primary-color: var(--primary-color-SCOPED-IN-navigator-D9RN);--on-primary-color: var(--on-primary-color-SCOPED-IN-navigator-D9RN);--secondary-color: var(--secondary-color-SCOPED-IN-navigator-D9RN);--on-secondary-color: var(--on-secondary-color-SCOPED-IN-navigator-D9RN);--background-color: var(--background-color-SCOPED-IN-navigator-D9RN);--on-background-color: var(--on-background-color-SCOPED-IN-navigator-D9RN)}:host .breadcrumb-navbar-frame{width:100%;z-index:100;background:var(--primary-color-SCOPED-IN-navigator-D9RN)}:host .breadcrumb-navbar-frame.fixed{position:fixed;top:0;left:0;right:0}:host .breadcrumb-navbar-frame ::ng-deep organisms-breadcrumb-navbar mat-toolbar{border-bottom:none}:host .breadcrumb-navbar-content{width:100%;height:100%}\n"] }]
|
|
109
109
|
}] });
|
|
110
110
|
|
|
111
111
|
/**
|
|
@@ -5,13 +5,13 @@ import { MatCardModule } from '@angular/material/card';
|
|
|
5
5
|
|
|
6
6
|
class CardFrame {
|
|
7
7
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: CardFrame, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.6", type: CardFrame, isStandalone: true, selector: "frames-card", ngImport: i0, template: `<mat-card><ng-content></ng-content></mat-card>`, isInline: true, styles: [":host{display:block;--background-color: rgba(255, 255, 255, .6);--background-color-SCOPED-IN-columns-
|
|
8
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.6", type: CardFrame, isStandalone: true, selector: "frames-card", ngImport: i0, template: `<mat-card><ng-content></ng-content></mat-card>`, isInline: true, styles: [":host{display:block;--background-color: rgba(255, 255, 255, .6);--background-color-SCOPED-IN-columns-QlFm: var(--background-color)}:host{display:block}:host mat-card{background-color:var(--background-color-SCOPED-IN-columns-QlFm);display:flex;justify-content:center;align-items:center;flex-direction:column;padding:24px;box-sizing:border-box;width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
9
9
|
}
|
|
10
10
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: CardFrame, decorators: [{
|
|
11
11
|
type: Component,
|
|
12
12
|
args: [{ selector: 'frames-card', imports: [
|
|
13
13
|
MatCardModule
|
|
14
|
-
], template: `<mat-card><ng-content></ng-content></mat-card>`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;--background-color: rgba(255, 255, 255, .6);--background-color-SCOPED-IN-columns-
|
|
14
|
+
], template: `<mat-card><ng-content></ng-content></mat-card>`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;--background-color: rgba(255, 255, 255, .6);--background-color-SCOPED-IN-columns-QlFm: var(--background-color)}:host{display:block}:host mat-card{background-color:var(--background-color-SCOPED-IN-columns-QlFm);display:flex;justify-content:center;align-items:center;flex-direction:column;padding:24px;box-sizing:border-box;width:100%}\n"] }]
|
|
15
15
|
}] });
|
|
16
16
|
|
|
17
17
|
/**
|
|
@@ -103,7 +103,7 @@ class ColumnsFrame extends NgAtomicComponent {
|
|
|
103
103
|
<ng-container [ngTemplateOutlet]="right()?.templateRef" />
|
|
104
104
|
</div>
|
|
105
105
|
}
|
|
106
|
-
`, isInline: true, styles: [":host{display:block;--side-width: 360px;--side-width-SCOPED-IN-columns-
|
|
106
|
+
`, isInline: true, styles: [":host{display:block;--side-width: 360px;--side-width-SCOPED-IN-columns-vSFg: var(--side-width)}:host{display:flex;flex-direction:row;justify-content:space-between;width:100%;height:100%}:host[type=row]{flex-direction:row;justify-content:space-between}:host[type=row] .container{width:100%}:host[type=row] .container.left{max-width:var(--side-width-SCOPED-IN-columns-vSFg)}:host[type=row] .container.right{max-width:var(--side-width-SCOPED-IN-columns-vSFg)}:host[type=column]{flex-direction:column;justify-content:flex-start}:host[type=column] .container.main{width:100%}:host[type=column] .container.left{width:100%}:host[type=column] .container.right{width:100%}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
107
107
|
}
|
|
108
108
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ColumnsFrame, decorators: [{
|
|
109
109
|
type: Component,
|
|
@@ -134,7 +134,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
134
134
|
}
|
|
135
135
|
], host: {
|
|
136
136
|
'[attr.type]': 'store.type()',
|
|
137
|
-
}, styles: [":host{display:block;--side-width: 360px;--side-width-SCOPED-IN-columns-
|
|
137
|
+
}, styles: [":host{display:block;--side-width: 360px;--side-width-SCOPED-IN-columns-vSFg: var(--side-width)}:host{display:flex;flex-direction:row;justify-content:space-between;width:100%;height:100%}:host[type=row]{flex-direction:row;justify-content:space-between}:host[type=row] .container{width:100%}:host[type=row] .container.left{max-width:var(--side-width-SCOPED-IN-columns-vSFg)}:host[type=row] .container.right{max-width:var(--side-width-SCOPED-IN-columns-vSFg)}:host[type=column]{flex-direction:column;justify-content:flex-start}:host[type=column] .container.main{width:100%}:host[type=column] .container.left{width:100%}:host[type=column] .container.right{width:100%}\n"] }]
|
|
138
138
|
}], propDecorators: { left: [{ type: i0.ContentChild, args: [i0.forwardRef(() => LeftColumn), { isSignal: true }] }], main: [{ type: i0.ContentChild, args: [i0.forwardRef(() => MainColumn), { isSignal: true }] }], right: [{ type: i0.ContentChild, args: [i0.forwardRef(() => RightColumn), { isSignal: true }] }] } });
|
|
139
139
|
class ColumnsFrameModule {
|
|
140
140
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ColumnsFrameModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
@@ -145,14 +145,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
145
145
|
type: NgModule,
|
|
146
146
|
args: [{
|
|
147
147
|
imports: [
|
|
148
|
-
// ColumnsFrameStore,
|
|
149
148
|
ColumnsFrame,
|
|
150
149
|
LeftColumn,
|
|
151
150
|
MainColumn,
|
|
152
151
|
RightColumn,
|
|
153
152
|
],
|
|
154
153
|
exports: [
|
|
155
|
-
// ColumnsFrameStore,
|
|
156
154
|
ColumnsFrame,
|
|
157
155
|
LeftColumn,
|
|
158
156
|
MainColumn,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-components-frames-columns.mjs","sources":["../../../../../packages/@ng-atomic/components/src/lib/frames/columns/columns.frame.ts","../../../../../packages/@ng-atomic/components/src/lib/frames/columns/ng-atomic-components-frames-columns.ts"],"sourcesContent":["import { isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Directive, NgModule, PLATFORM_ID, TemplateRef, contentChild, inject, input } from '@angular/core';\nimport { makeConfig } from '@ng-atomic/common/services/ui';\nimport { InjectableComponent, NgAtomicComponent, TokenizedType, _computed } from '@ng-atomic/core';\n\n@TokenizedType()\n@Directive({standalone: true, selector: 'frames-columns'})\nexport class ColumnsFrameStore extends InjectableComponent {\n static readonly Config = makeConfig(() => (context) => {\n const getType = (): 'row' | 'column' => {\n switch (context.breakpoint) {\n case 'xSmall':\n case 'small': return 'column';\n default: return 'row';\n }\n }\n return { type: getType() };\n }, ['components', 'frames', 'columns']);\n readonly config = ColumnsFrameStore.Config.inject();\n readonly type = input<'row' | 'column'>(_computed(() => this.config().type));\n}\n\n@Directive({standalone: true, selector: '[left], [leftColumn]'})\nexport class LeftColumn {\n readonly platformId = inject(PLATFORM_ID);\n readonly isPlatformBrowser = isPlatformBrowser(this.platformId);\n readonly templateRef = inject(TemplateRef<unknown>)\n}\n\n@Directive({\n standalone: true,\n selector: '[main], [mainColumn]',\n})\nexport class MainColumn {\n readonly platformId = inject(PLATFORM_ID);\n readonly isPlatformBrowser = isPlatformBrowser(this.platformId);\n readonly templateRef = inject(TemplateRef<unknown>)\n}\n\n@Directive({standalone: true, selector: '[right], [rightColumn]'})\nexport class RightColumn {\n readonly platformId = inject(PLATFORM_ID);\n readonly isPlatformBrowser = isPlatformBrowser(this.platformId);\n readonly templateRef = inject(TemplateRef<unknown>)\n}\n\n@Component({\n selector: 'frames-columns',\n imports: [\n NgTemplateOutlet,\n ],\n template: `\n @if(left()?.templateRef && left()?.isPlatformBrowser) {\n <div class=\"left container\">\n <ng-container [ngTemplateOutlet]=\"left()?.templateRef\" />\n </div>\n }\n\n @if (main()?.templateRef && main()?.isPlatformBrowser) {\n <main class=\"main container\">\n <ng-container [ngTemplateOutlet]=\"main()?.templateRef\" />\n </main>\n }\n \n @if (right()?.templateRef && right()?.isPlatformBrowser) {\n <div class=\"right container\">\n <ng-container [ngTemplateOutlet]=\"right()?.templateRef\" />\n </div>\n }\n `,\n styleUrl: './columns.frame.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: ColumnsFrameStore,\n inputs: ['type'],\n }\n ],\n host: {\n '[attr.type]': 'store.type()',\n }\n})\nexport class ColumnsFrame extends NgAtomicComponent {\n protected readonly platformId = inject(PLATFORM_ID);\n protected readonly store = inject(ColumnsFrameStore);\n protected readonly left = contentChild(LeftColumn);\n protected readonly main = contentChild(MainColumn);\n protected readonly right = contentChild(RightColumn);\n}\n\n@NgModule({\n imports: [\n
|
|
1
|
+
{"version":3,"file":"ng-atomic-components-frames-columns.mjs","sources":["../../../../../packages/@ng-atomic/components/src/lib/frames/columns/columns.frame.ts","../../../../../packages/@ng-atomic/components/src/lib/frames/columns/ng-atomic-components-frames-columns.ts"],"sourcesContent":["import { isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Directive, NgModule, PLATFORM_ID, TemplateRef, contentChild, inject, input } from '@angular/core';\nimport { makeConfig } from '@ng-atomic/common/services/ui';\nimport { InjectableComponent, NgAtomicComponent, TokenizedType, _computed } from '@ng-atomic/core';\n\n@TokenizedType()\n@Directive({standalone: true, selector: 'frames-columns'})\nexport class ColumnsFrameStore extends InjectableComponent {\n static readonly Config = makeConfig(() => (context) => {\n const getType = (): 'row' | 'column' => {\n switch (context.breakpoint) {\n case 'xSmall':\n case 'small': return 'column';\n default: return 'row';\n }\n }\n return { type: getType() };\n }, ['components', 'frames', 'columns']);\n readonly config = ColumnsFrameStore.Config.inject();\n readonly type = input<'row' | 'column'>(_computed(() => this.config().type));\n}\n\n@Directive({standalone: true, selector: '[left], [leftColumn]'})\nexport class LeftColumn {\n readonly platformId = inject(PLATFORM_ID);\n readonly isPlatformBrowser = isPlatformBrowser(this.platformId);\n readonly templateRef = inject(TemplateRef<unknown>)\n}\n\n@Directive({\n standalone: true,\n selector: '[main], [mainColumn]',\n})\nexport class MainColumn {\n readonly platformId = inject(PLATFORM_ID);\n readonly isPlatformBrowser = isPlatformBrowser(this.platformId);\n readonly templateRef = inject(TemplateRef<unknown>)\n}\n\n@Directive({standalone: true, selector: '[right], [rightColumn]'})\nexport class RightColumn {\n readonly platformId = inject(PLATFORM_ID);\n readonly isPlatformBrowser = isPlatformBrowser(this.platformId);\n readonly templateRef = inject(TemplateRef<unknown>)\n}\n\n@Component({\n selector: 'frames-columns',\n imports: [\n NgTemplateOutlet,\n ],\n template: `\n @if(left()?.templateRef && left()?.isPlatformBrowser) {\n <div class=\"left container\">\n <ng-container [ngTemplateOutlet]=\"left()?.templateRef\" />\n </div>\n }\n\n @if (main()?.templateRef && main()?.isPlatformBrowser) {\n <main class=\"main container\">\n <ng-container [ngTemplateOutlet]=\"main()?.templateRef\" />\n </main>\n }\n \n @if (right()?.templateRef && right()?.isPlatformBrowser) {\n <div class=\"right container\">\n <ng-container [ngTemplateOutlet]=\"right()?.templateRef\" />\n </div>\n }\n `,\n styleUrl: './columns.frame.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: ColumnsFrameStore,\n inputs: ['type'],\n }\n ],\n host: {\n '[attr.type]': 'store.type()',\n }\n})\nexport class ColumnsFrame extends NgAtomicComponent {\n protected readonly platformId = inject(PLATFORM_ID);\n protected readonly store = inject(ColumnsFrameStore);\n protected readonly left = contentChild(LeftColumn);\n protected readonly main = contentChild(MainColumn);\n protected readonly right = contentChild(RightColumn);\n}\n\n@NgModule({\n imports: [\n \n ColumnsFrame,\n LeftColumn,\n MainColumn,\n RightColumn,\n ],\n exports: [\n \n ColumnsFrame,\n LeftColumn,\n MainColumn,\n RightColumn,\n ]\n})\nexport class ColumnsFrameModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|