@ojiepermana/angular-component 22.0.44 → 22.0.46
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/ojiepermana-angular-component-accordion.mjs +9 -11
- package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs +100 -32
- package/fesm2022/ojiepermana-angular-component-alert.mjs +5 -9
- package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs +2 -3
- package/fesm2022/ojiepermana-angular-component-avatar.mjs +7 -13
- package/fesm2022/ojiepermana-angular-component-badge.mjs +2 -3
- package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs +16 -19
- package/fesm2022/ojiepermana-angular-component-button-group.mjs +4 -7
- package/fesm2022/ojiepermana-angular-component-button.mjs +2 -3
- package/fesm2022/ojiepermana-angular-component-calendar.mjs +7 -5
- package/fesm2022/ojiepermana-angular-component-card.mjs +8 -15
- package/fesm2022/ojiepermana-angular-component-carousel.mjs +15 -18
- package/fesm2022/ojiepermana-angular-component-checkbox.mjs +40 -11
- package/fesm2022/ojiepermana-angular-component-collapsible.mjs +8 -6
- package/fesm2022/ojiepermana-angular-component-combobox.mjs +36 -16
- package/fesm2022/ojiepermana-angular-component-command.mjs +25 -21
- package/fesm2022/ojiepermana-angular-component-composer.mjs +15 -18
- package/fesm2022/ojiepermana-angular-component-date-picker.mjs +36 -11
- package/fesm2022/ojiepermana-angular-component-dialog.mjs +85 -30
- package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs +31 -26
- package/fesm2022/ojiepermana-angular-component-editor.mjs +37 -28
- package/fesm2022/ojiepermana-angular-component-empty.mjs +7 -13
- package/fesm2022/ojiepermana-angular-component-form.mjs +32 -24
- package/fesm2022/ojiepermana-angular-component-hover-card.mjs +2 -3
- package/fesm2022/ojiepermana-angular-component-icon.mjs +51 -6
- package/fesm2022/ojiepermana-angular-component-input-group.mjs +17 -15
- package/fesm2022/ojiepermana-angular-component-input-otp.mjs +15 -14
- package/fesm2022/ojiepermana-angular-component-input.mjs +2 -3
- package/fesm2022/ojiepermana-angular-component-item.mjs +11 -21
- package/fesm2022/ojiepermana-angular-component-kanban.mjs +27 -26
- package/fesm2022/ojiepermana-angular-component-kbd.mjs +3 -5
- package/fesm2022/ojiepermana-angular-component-label.mjs +2 -3
- package/fesm2022/ojiepermana-angular-component-menubar.mjs +6 -6
- package/fesm2022/ojiepermana-angular-component-native-select.mjs +3 -3
- package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs +25 -12
- package/fesm2022/ojiepermana-angular-component-pagination.mjs +22 -13
- package/fesm2022/ojiepermana-angular-component-pillbox.mjs +70 -36
- package/fesm2022/ojiepermana-angular-component-progress.mjs +7 -5
- package/fesm2022/ojiepermana-angular-component-radio.mjs +21 -10
- package/fesm2022/ojiepermana-angular-component-resizable.mjs +22 -11
- package/fesm2022/ojiepermana-angular-component-scroll-area.mjs +8 -6
- package/fesm2022/ojiepermana-angular-component-select.mjs +29 -17
- package/fesm2022/ojiepermana-angular-component-separator.mjs +2 -3
- package/fesm2022/ojiepermana-angular-component-sheet.mjs +89 -30
- package/fesm2022/ojiepermana-angular-component-skeleton.mjs +2 -3
- package/fesm2022/ojiepermana-angular-component-slider.mjs +25 -13
- package/fesm2022/ojiepermana-angular-component-spinner.mjs +6 -5
- package/fesm2022/ojiepermana-angular-component-switch.mjs +17 -8
- package/fesm2022/ojiepermana-angular-component-table.mjs +9 -17
- package/fesm2022/ojiepermana-angular-component-tabs.mjs +5 -9
- package/fesm2022/ojiepermana-angular-component-textarea.mjs +2 -3
- package/fesm2022/ojiepermana-angular-component-timeline.mjs +22 -17
- package/fesm2022/ojiepermana-angular-component-toggle-group.mjs +12 -6
- package/fesm2022/ojiepermana-angular-component-toggle.mjs +2 -3
- package/fesm2022/ojiepermana-angular-component-tooltip.mjs +7 -6
- package/package.json +10 -1
- package/types/ojiepermana-angular-component-alert-dialog.d.ts +42 -3
- package/types/ojiepermana-angular-component-combobox.d.ts +4 -1
- package/types/ojiepermana-angular-component-command.d.ts +7 -2
- package/types/ojiepermana-angular-component-dialog.d.ts +33 -3
- package/types/ojiepermana-angular-component-form.d.ts +9 -0
- package/types/ojiepermana-angular-component-icon.d.ts +48 -1
- package/types/ojiepermana-angular-component-radio.d.ts +4 -1
- package/types/ojiepermana-angular-component-sheet.d.ts +33 -3
- package/types/ojiepermana-angular-component-timeline.d.ts +2 -1
|
@@ -2,12 +2,12 @@ import { Overlay } from '@angular/cdk/overlay';
|
|
|
2
2
|
import { TemplatePortal } from '@angular/cdk/portal';
|
|
3
3
|
import { FocusTrapFactory } from '@angular/cdk/a11y';
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
|
-
import { inject, ViewContainerRef, DestroyRef, model, input, output,
|
|
5
|
+
import { inject, ViewContainerRef, DestroyRef, model, input, output, signal, computed, viewChild, effect, Component, Directive } from '@angular/core';
|
|
6
6
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
7
7
|
import { DOCUMENT } from '@angular/common';
|
|
8
8
|
import { filter } from 'rxjs/operators';
|
|
9
9
|
import { ButtonComponent } from '@ojiepermana/angular-component/button';
|
|
10
|
-
import { cn, radiusBaseValue, densityBaseValue } from '@ojiepermana/angular-component/utils';
|
|
10
|
+
import { cn, radiusBaseValue, densityBaseValue, uniqueId } from '@ojiepermana/angular-component/utils';
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Declarative modal dialog. Renders into the body via CDK overlay when
|
|
@@ -44,6 +44,9 @@ class DialogComponent {
|
|
|
44
44
|
...(ngDevMode ? [{ debugName: "closeButtonLabel" }] : /* istanbul ignore next */ []));
|
|
45
45
|
labelledBy = input(null, { ...(ngDevMode ? { debugName: "labelledBy" } : /* istanbul ignore next */ {}), alias: 'aria-labelledby' });
|
|
46
46
|
describedBy = input(null, { ...(ngDevMode ? { debugName: "describedBy" } : /* istanbul ignore next */ {}), alias: 'aria-describedby' });
|
|
47
|
+
/** ARIA role for the surface. `'dialog'` by default; `AlertDialog` sets `'alertdialog'`. */
|
|
48
|
+
role = input('dialog', /* @ts-ignore */
|
|
49
|
+
...(ngDevMode ? [{ debugName: "role" }] : /* istanbul ignore next */ []));
|
|
47
50
|
class = input('', /* @ts-ignore */
|
|
48
51
|
...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
|
|
49
52
|
radius = input('inherit', /* @ts-ignore */
|
|
@@ -51,6 +54,36 @@ class DialogComponent {
|
|
|
51
54
|
density = input('inherit', /* @ts-ignore */
|
|
52
55
|
...(ngDevMode ? [{ debugName: "density" }] : /* istanbul ignore next */ []));
|
|
53
56
|
openedChange = output();
|
|
57
|
+
registeredTitleId = signal(null, /* @ts-ignore */
|
|
58
|
+
...(ngDevMode ? [{ debugName: "registeredTitleId" }] : /* istanbul ignore next */ []));
|
|
59
|
+
registeredDescriptionId = signal(null, /* @ts-ignore */
|
|
60
|
+
...(ngDevMode ? [{ debugName: "registeredDescriptionId" }] : /* istanbul ignore next */ []));
|
|
61
|
+
/** Explicit `aria-labelledby` wins; otherwise a projected `DialogTitle` supplies the id. */
|
|
62
|
+
resolvedLabelledBy = computed(() => this.labelledBy() ?? this.registeredTitleId(), /* @ts-ignore */
|
|
63
|
+
...(ngDevMode ? [{ debugName: "resolvedLabelledBy" }] : /* istanbul ignore next */ []));
|
|
64
|
+
/** Explicit `aria-describedby` wins; otherwise a projected `DialogDescription` supplies the id. */
|
|
65
|
+
resolvedDescribedBy = computed(() => this.describedBy() ?? this.registeredDescriptionId(), /* @ts-ignore */
|
|
66
|
+
...(ngDevMode ? [{ debugName: "resolvedDescribedBy" }] : /* istanbul ignore next */ []));
|
|
67
|
+
/** Called by a projected `DialogTitle` so default usage has an accessible name (AXE-safe). */
|
|
68
|
+
registerTitleId(id) {
|
|
69
|
+
this.registeredTitleId.set(id);
|
|
70
|
+
}
|
|
71
|
+
/** Cleared by a `DialogTitle` on destroy so a closed/reopened dialog never points at a stale id. */
|
|
72
|
+
unregisterTitleId(id) {
|
|
73
|
+
if (this.registeredTitleId() === id) {
|
|
74
|
+
this.registeredTitleId.set(null);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/** Called by a projected `DialogDescription`. */
|
|
78
|
+
registerDescriptionId(id) {
|
|
79
|
+
this.registeredDescriptionId.set(id);
|
|
80
|
+
}
|
|
81
|
+
/** Cleared by a `DialogDescription` on destroy. */
|
|
82
|
+
unregisterDescriptionId(id) {
|
|
83
|
+
if (this.registeredDescriptionId() === id) {
|
|
84
|
+
this.registeredDescriptionId.set(null);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
54
87
|
tpl = viewChild.required('tpl');
|
|
55
88
|
overlayRef = null;
|
|
56
89
|
focusTrap = null;
|
|
@@ -117,17 +150,18 @@ class DialogComponent {
|
|
|
117
150
|
this.requestClose();
|
|
118
151
|
}
|
|
119
152
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
120
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: DialogComponent, isStandalone: true, selector: "Dialog", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, closeOnEscape: { classPropertyName: "closeOnEscape", publicName: "closeOnEscape", isSignal: true, isRequired: false, transformFunction: null }, closeOnBackdropClick: { classPropertyName: "closeOnBackdropClick", publicName: "closeOnBackdropClick", isSignal: true, isRequired: false, transformFunction: null }, showCloseButton: { classPropertyName: "showCloseButton", publicName: "showCloseButton", isSignal: true, isRequired: false, transformFunction: null }, closeButtonLabel: { classPropertyName: "closeButtonLabel", publicName: "closeButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, labelledBy: { classPropertyName: "labelledBy", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, describedBy: { classPropertyName: "describedBy", publicName: "aria-describedby", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, radius: { classPropertyName: "radius", publicName: "radius", isSignal: true, isRequired: false, transformFunction: null }, density: { classPropertyName: "density", publicName: "density", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", openedChange: "openedChange" }, viewQueries: [{ propertyName: "tpl", first: true, predicate: ["tpl"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
153
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: DialogComponent, isStandalone: true, selector: "Dialog", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, closeOnEscape: { classPropertyName: "closeOnEscape", publicName: "closeOnEscape", isSignal: true, isRequired: false, transformFunction: null }, closeOnBackdropClick: { classPropertyName: "closeOnBackdropClick", publicName: "closeOnBackdropClick", isSignal: true, isRequired: false, transformFunction: null }, showCloseButton: { classPropertyName: "showCloseButton", publicName: "showCloseButton", isSignal: true, isRequired: false, transformFunction: null }, closeButtonLabel: { classPropertyName: "closeButtonLabel", publicName: "closeButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, labelledBy: { classPropertyName: "labelledBy", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, describedBy: { classPropertyName: "describedBy", publicName: "aria-describedby", isSignal: true, isRequired: false, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, radius: { classPropertyName: "radius", publicName: "radius", isSignal: true, isRequired: false, transformFunction: null }, density: { classPropertyName: "density", publicName: "density", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", openedChange: "openedChange" }, viewQueries: [{ propertyName: "tpl", first: true, predicate: ["tpl"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
121
154
|
<ng-template #tpl>
|
|
122
155
|
<div
|
|
123
156
|
class="dialog-surface"
|
|
124
|
-
role="
|
|
157
|
+
[attr.role]="role()"
|
|
125
158
|
aria-modal="true"
|
|
126
|
-
[attr.aria-labelledby]="
|
|
127
|
-
[attr.aria-describedby]="
|
|
159
|
+
[attr.aria-labelledby]="resolvedLabelledBy()"
|
|
160
|
+
[attr.aria-describedby]="resolvedDescribedBy()"
|
|
128
161
|
[class]="surfaceClasses()"
|
|
129
162
|
[style.--radius-base]="radiusBase()"
|
|
130
|
-
[style.--spacing-base]="densityBase()"
|
|
163
|
+
[style.--spacing-base]="densityBase()"
|
|
164
|
+
>
|
|
131
165
|
@if (showCloseButton()) {
|
|
132
166
|
<button
|
|
133
167
|
type="button"
|
|
@@ -136,7 +170,8 @@ class DialogComponent {
|
|
|
136
170
|
size="icon-sm"
|
|
137
171
|
class="dialog-close-button absolute right-4 top-4 h-8 w-8 rounded-md p-0 text-muted-foreground opacity-70 transition-opacity hover:opacity-100 focus-visible:ring-2 focus-visible:ring-ring"
|
|
138
172
|
[attr.aria-label]="closeButtonLabel()"
|
|
139
|
-
(click)="close()"
|
|
173
|
+
(click)="close()"
|
|
174
|
+
>
|
|
140
175
|
<span aria-hidden="true">X</span>
|
|
141
176
|
<span class="sr-only">{{ closeButtonLabel() }}</span>
|
|
142
177
|
</button>
|
|
@@ -144,25 +179,25 @@ class DialogComponent {
|
|
|
144
179
|
<ng-content />
|
|
145
180
|
</div>
|
|
146
181
|
</ng-template>
|
|
147
|
-
`, isInline: true, dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[Button], a[Button]", inputs: ["variant", "size", "class", "radius", "density"] }]
|
|
182
|
+
`, isInline: true, dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[Button], a[Button]", inputs: ["variant", "size", "class", "radius", "density"] }] });
|
|
148
183
|
}
|
|
149
184
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DialogComponent, decorators: [{
|
|
150
185
|
type: Component,
|
|
151
186
|
args: [{
|
|
152
187
|
selector: 'Dialog',
|
|
153
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
154
188
|
imports: [ButtonComponent],
|
|
155
189
|
template: `
|
|
156
190
|
<ng-template #tpl>
|
|
157
191
|
<div
|
|
158
192
|
class="dialog-surface"
|
|
159
|
-
role="
|
|
193
|
+
[attr.role]="role()"
|
|
160
194
|
aria-modal="true"
|
|
161
|
-
[attr.aria-labelledby]="
|
|
162
|
-
[attr.aria-describedby]="
|
|
195
|
+
[attr.aria-labelledby]="resolvedLabelledBy()"
|
|
196
|
+
[attr.aria-describedby]="resolvedDescribedBy()"
|
|
163
197
|
[class]="surfaceClasses()"
|
|
164
198
|
[style.--radius-base]="radiusBase()"
|
|
165
|
-
[style.--spacing-base]="densityBase()"
|
|
199
|
+
[style.--spacing-base]="densityBase()"
|
|
200
|
+
>
|
|
166
201
|
@if (showCloseButton()) {
|
|
167
202
|
<button
|
|
168
203
|
type="button"
|
|
@@ -171,7 +206,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImpor
|
|
|
171
206
|
size="icon-sm"
|
|
172
207
|
class="dialog-close-button absolute right-4 top-4 h-8 w-8 rounded-md p-0 text-muted-foreground opacity-70 transition-opacity hover:opacity-100 focus-visible:ring-2 focus-visible:ring-ring"
|
|
173
208
|
[attr.aria-label]="closeButtonLabel()"
|
|
174
|
-
(click)="close()"
|
|
209
|
+
(click)="close()"
|
|
210
|
+
>
|
|
175
211
|
<span aria-hidden="true">X</span>
|
|
176
212
|
<span class="sr-only">{{ closeButtonLabel() }}</span>
|
|
177
213
|
</button>
|
|
@@ -181,7 +217,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImpor
|
|
|
181
217
|
</ng-template>
|
|
182
218
|
`,
|
|
183
219
|
}]
|
|
184
|
-
}], ctorParameters: () => [], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], closeOnEscape: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnEscape", required: false }] }], closeOnBackdropClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnBackdropClick", required: false }] }], showCloseButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCloseButton", required: false }] }], closeButtonLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeButtonLabel", required: false }] }], labelledBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-labelledby", required: false }] }], describedBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-describedby", required: false }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], radius: [{ type: i0.Input, args: [{ isSignal: true, alias: "radius", required: false }] }], density: [{ type: i0.Input, args: [{ isSignal: true, alias: "density", required: false }] }], openedChange: [{ type: i0.Output, args: ["openedChange"] }], tpl: [{ type: i0.ViewChild, args: ['tpl', { isSignal: true }] }] } });
|
|
220
|
+
}], ctorParameters: () => [], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], closeOnEscape: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnEscape", required: false }] }], closeOnBackdropClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnBackdropClick", required: false }] }], showCloseButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCloseButton", required: false }] }], closeButtonLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeButtonLabel", required: false }] }], labelledBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-labelledby", required: false }] }], describedBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-describedby", required: false }] }], role: [{ type: i0.Input, args: [{ isSignal: true, alias: "role", required: false }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], radius: [{ type: i0.Input, args: [{ isSignal: true, alias: "radius", required: false }] }], density: [{ type: i0.Input, args: [{ isSignal: true, alias: "density", required: false }] }], openedChange: [{ type: i0.Output, args: ["openedChange"] }], tpl: [{ type: i0.ViewChild, args: ['tpl', { isSignal: true }] }] } });
|
|
185
221
|
|
|
186
222
|
class DialogCloseDirective {
|
|
187
223
|
dialog = inject(DialogComponent);
|
|
@@ -207,64 +243,84 @@ class DialogHeaderComponent {
|
|
|
207
243
|
classes = computed(() => cn('flex flex-col gap-1.5 text-center sm:text-left', this.class()), /* @ts-ignore */
|
|
208
244
|
...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
|
|
209
245
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DialogHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
210
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: DialogHeaderComponent, isStandalone: true, selector: "DialogHeader", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `<ng-content />`, isInline: true
|
|
246
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: DialogHeaderComponent, isStandalone: true, selector: "DialogHeader", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `<ng-content />`, isInline: true });
|
|
211
247
|
}
|
|
212
248
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DialogHeaderComponent, decorators: [{
|
|
213
249
|
type: Component,
|
|
214
250
|
args: [{
|
|
215
251
|
selector: 'DialogHeader',
|
|
216
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
217
252
|
host: { '[class]': 'classes()' },
|
|
218
253
|
template: `<ng-content />`,
|
|
219
254
|
}]
|
|
220
255
|
}], propDecorators: { class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
|
|
221
256
|
class DialogTitleComponent {
|
|
257
|
+
/** Explicit id override; when omitted a document-unique id is generated. */
|
|
258
|
+
id = input(null, /* @ts-ignore */
|
|
259
|
+
...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
|
|
222
260
|
class = input('', /* @ts-ignore */
|
|
223
261
|
...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
|
|
262
|
+
autoId = uniqueId('dialog-title');
|
|
263
|
+
dialog = inject(DialogComponent, { optional: true });
|
|
264
|
+
/** The id rendered on the element, used by the parent dialog for aria-labelledby. */
|
|
265
|
+
resolvedId = computed(() => this.id() ?? this.autoId, /* @ts-ignore */
|
|
266
|
+
...(ngDevMode ? [{ debugName: "resolvedId" }] : /* istanbul ignore next */ []));
|
|
224
267
|
classes = computed(() => cn('text-lg font-semibold leading-none tracking-tight', this.class()), /* @ts-ignore */
|
|
225
268
|
...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
|
|
269
|
+
constructor() {
|
|
270
|
+
effect(() => this.dialog?.registerTitleId(this.resolvedId()));
|
|
271
|
+
inject(DestroyRef).onDestroy(() => this.dialog?.unregisterTitleId(this.resolvedId()));
|
|
272
|
+
}
|
|
226
273
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DialogTitleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
227
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: DialogTitleComponent, isStandalone: true, selector: "DialogTitle, h2[DialogTitle]", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `<ng-content />`, isInline: true
|
|
274
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: DialogTitleComponent, isStandalone: true, selector: "DialogTitle, h2[DialogTitle]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.id": "resolvedId()" } }, ngImport: i0, template: `<ng-content />`, isInline: true });
|
|
228
275
|
}
|
|
229
276
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DialogTitleComponent, decorators: [{
|
|
230
277
|
type: Component,
|
|
231
278
|
args: [{
|
|
232
279
|
selector: 'DialogTitle, h2[DialogTitle]',
|
|
233
|
-
|
|
234
|
-
host: { '[class]': 'classes()' },
|
|
280
|
+
host: { '[class]': 'classes()', '[attr.id]': 'resolvedId()' },
|
|
235
281
|
template: `<ng-content />`,
|
|
236
282
|
}]
|
|
237
|
-
}], propDecorators: { class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
|
|
283
|
+
}], ctorParameters: () => [], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
|
|
238
284
|
class DialogDescriptionComponent {
|
|
285
|
+
/** Explicit id override; when omitted a document-unique id is generated. */
|
|
286
|
+
id = input(null, /* @ts-ignore */
|
|
287
|
+
...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
|
|
239
288
|
class = input('', /* @ts-ignore */
|
|
240
289
|
...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
|
|
290
|
+
autoId = uniqueId('dialog-description');
|
|
291
|
+
dialog = inject(DialogComponent, { optional: true });
|
|
292
|
+
/** The id rendered on the element, used by the parent dialog for aria-describedby. */
|
|
293
|
+
resolvedId = computed(() => this.id() ?? this.autoId, /* @ts-ignore */
|
|
294
|
+
...(ngDevMode ? [{ debugName: "resolvedId" }] : /* istanbul ignore next */ []));
|
|
241
295
|
classes = computed(() => cn('text-sm text-muted-foreground', this.class()), /* @ts-ignore */
|
|
242
296
|
...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
|
|
297
|
+
constructor() {
|
|
298
|
+
effect(() => this.dialog?.registerDescriptionId(this.resolvedId()));
|
|
299
|
+
inject(DestroyRef).onDestroy(() => this.dialog?.unregisterDescriptionId(this.resolvedId()));
|
|
300
|
+
}
|
|
243
301
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DialogDescriptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
244
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: DialogDescriptionComponent, isStandalone: true, selector: "DialogDescription, p[DialogDescription]", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `<ng-content />`, isInline: true
|
|
302
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: DialogDescriptionComponent, isStandalone: true, selector: "DialogDescription, p[DialogDescription]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.id": "resolvedId()" } }, ngImport: i0, template: `<ng-content />`, isInline: true });
|
|
245
303
|
}
|
|
246
304
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DialogDescriptionComponent, decorators: [{
|
|
247
305
|
type: Component,
|
|
248
306
|
args: [{
|
|
249
307
|
selector: 'DialogDescription, p[DialogDescription]',
|
|
250
|
-
|
|
251
|
-
host: { '[class]': 'classes()' },
|
|
308
|
+
host: { '[class]': 'classes()', '[attr.id]': 'resolvedId()' },
|
|
252
309
|
template: `<ng-content />`,
|
|
253
310
|
}]
|
|
254
|
-
}], propDecorators: { class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
|
|
311
|
+
}], ctorParameters: () => [], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
|
|
255
312
|
class DialogContentComponent {
|
|
256
313
|
class = input('', /* @ts-ignore */
|
|
257
314
|
...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
|
|
258
315
|
classes = computed(() => cn('grid gap-4', this.class()), /* @ts-ignore */
|
|
259
316
|
...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
|
|
260
317
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DialogContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
261
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: DialogContentComponent, isStandalone: true, selector: "DialogContent", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `<ng-content />`, isInline: true
|
|
318
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: DialogContentComponent, isStandalone: true, selector: "DialogContent", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `<ng-content />`, isInline: true });
|
|
262
319
|
}
|
|
263
320
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DialogContentComponent, decorators: [{
|
|
264
321
|
type: Component,
|
|
265
322
|
args: [{
|
|
266
323
|
selector: 'DialogContent',
|
|
267
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
268
324
|
host: { '[class]': 'classes()' },
|
|
269
325
|
template: `<ng-content />`,
|
|
270
326
|
}]
|
|
@@ -275,13 +331,12 @@ class DialogFooterComponent {
|
|
|
275
331
|
classes = computed(() => cn('flex flex-col-reverse gap-2 sm:flex-row sm:justify-end sm:gap-2', this.class()), /* @ts-ignore */
|
|
276
332
|
...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
|
|
277
333
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DialogFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
278
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: DialogFooterComponent, isStandalone: true, selector: "DialogFooter", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `<ng-content />`, isInline: true
|
|
334
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: DialogFooterComponent, isStandalone: true, selector: "DialogFooter", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `<ng-content />`, isInline: true });
|
|
279
335
|
}
|
|
280
336
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DialogFooterComponent, decorators: [{
|
|
281
337
|
type: Component,
|
|
282
338
|
args: [{
|
|
283
339
|
selector: 'DialogFooter',
|
|
284
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
285
340
|
host: { '[class]': 'classes()' },
|
|
286
341
|
template: `<ng-content />`,
|
|
287
342
|
}]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, ElementRef, input, output, Directive, computed,
|
|
2
|
+
import { inject, ElementRef, input, output, Directive, computed, Component, model, forwardRef, ContentChildren, TemplateRef, ViewContainerRef, DestroyRef, signal } from '@angular/core';
|
|
3
3
|
import { cn, radiusBaseValue, densityBaseValue, connectedPositionFor, oppositeSide } from '@ojiepermana/angular-component/utils';
|
|
4
4
|
import { FocusKeyManager } from '@angular/cdk/a11y';
|
|
5
5
|
import { Overlay } from '@angular/cdk/overlay';
|
|
@@ -50,13 +50,12 @@ class MenuGroupComponent {
|
|
|
50
50
|
classes = computed(() => cn('block', this.class()), /* @ts-ignore */
|
|
51
51
|
...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
|
|
52
52
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: MenuGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
53
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: MenuGroupComponent, isStandalone: true, selector: "MenuGroup", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.role": "\"group\"" } }, ngImport: i0, template: `<ng-content />`, isInline: true
|
|
53
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: MenuGroupComponent, isStandalone: true, selector: "MenuGroup", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.role": "\"group\"" } }, ngImport: i0, template: `<ng-content />`, isInline: true });
|
|
54
54
|
}
|
|
55
55
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: MenuGroupComponent, decorators: [{
|
|
56
56
|
type: Component,
|
|
57
57
|
args: [{
|
|
58
58
|
selector: 'MenuGroup',
|
|
59
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
60
59
|
host: {
|
|
61
60
|
'[class]': 'classes()',
|
|
62
61
|
'[attr.role]': '"group"',
|
|
@@ -85,14 +84,17 @@ class MenuRadioGroupComponent extends MenuRadioGroupBase {
|
|
|
85
84
|
this.value.set(value);
|
|
86
85
|
}
|
|
87
86
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: MenuRadioGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
88
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: MenuRadioGroupComponent, isStandalone: true, selector: "MenuRadioGroup", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { properties: { "class": "classes()", "attr.role": "\"group\"" } }, providers: [
|
|
87
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: MenuRadioGroupComponent, isStandalone: true, selector: "MenuRadioGroup", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { properties: { "class": "classes()", "attr.role": "\"group\"" } }, providers: [
|
|
88
|
+
{ provide: MenuRadioGroupBase, useExisting: forwardRef(() => MenuRadioGroupComponent) },
|
|
89
|
+
], usesInheritance: true, ngImport: i0, template: `<ng-content />`, isInline: true });
|
|
89
90
|
}
|
|
90
91
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: MenuRadioGroupComponent, decorators: [{
|
|
91
92
|
type: Component,
|
|
92
93
|
args: [{
|
|
93
94
|
selector: 'MenuRadioGroup',
|
|
94
|
-
|
|
95
|
-
|
|
95
|
+
providers: [
|
|
96
|
+
{ provide: MenuRadioGroupBase, useExisting: forwardRef(() => MenuRadioGroupComponent) },
|
|
97
|
+
],
|
|
96
98
|
host: {
|
|
97
99
|
'[class]': 'classes()',
|
|
98
100
|
'[attr.role]': '"group"',
|
|
@@ -107,13 +109,12 @@ class MenuItemComponent extends MenuFocusableItem {
|
|
|
107
109
|
this.emitSelection(e);
|
|
108
110
|
}
|
|
109
111
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: MenuItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
110
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.4", type: MenuItemComponent, isStandalone: true, selector: "MenuItem, button[MenuItem]", host: { attributes: { "tabindex": "-1" }, listeners: { "click": "handleClick($any($event))", "keydown.enter": "handleClick($any($event))", "keydown.space": "handleClick($any($event))" }, properties: { "class": "classes()", "attr.role": "\"menuitem\"", "attr.aria-disabled": "disabled ? \"true\" : null", "attr.data-inset": "inset() ? \"true\" : null", "attr.data-variant": "variant()" } }, providers: [{ provide: MenuFocusableItem, useExisting: forwardRef(() => MenuItemComponent) }], usesInheritance: true, ngImport: i0, template: `<ng-content />`, isInline: true
|
|
112
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.4", type: MenuItemComponent, isStandalone: true, selector: "MenuItem, button[MenuItem]", host: { attributes: { "tabindex": "-1" }, listeners: { "click": "handleClick($any($event))", "keydown.enter": "handleClick($any($event))", "keydown.space": "handleClick($any($event))" }, properties: { "class": "classes()", "attr.role": "\"menuitem\"", "attr.aria-disabled": "disabled ? \"true\" : null", "attr.data-inset": "inset() ? \"true\" : null", "attr.data-variant": "variant()" } }, providers: [{ provide: MenuFocusableItem, useExisting: forwardRef(() => MenuItemComponent) }], usesInheritance: true, ngImport: i0, template: `<ng-content />`, isInline: true });
|
|
111
113
|
}
|
|
112
114
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: MenuItemComponent, decorators: [{
|
|
113
115
|
type: Component,
|
|
114
116
|
args: [{
|
|
115
117
|
selector: 'MenuItem, button[MenuItem]',
|
|
116
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
117
118
|
providers: [{ provide: MenuFocusableItem, useExisting: forwardRef(() => MenuItemComponent) }],
|
|
118
119
|
host: {
|
|
119
120
|
'[class]': 'classes()',
|
|
@@ -141,7 +142,9 @@ class MenuCheckboxItemComponent extends MenuFocusableItem {
|
|
|
141
142
|
this.checked.set(!this.checked());
|
|
142
143
|
}
|
|
143
144
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: MenuCheckboxItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
144
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: MenuCheckboxItemComponent, isStandalone: true, selector: "MenuCheckboxItem, button[MenuCheckboxItem]", inputs: { checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange" }, host: { attributes: { "tabindex": "-1" }, listeners: { "click": "toggle($any($event))", "keydown.enter": "toggle($any($event))", "keydown.space": "toggle($any($event))" }, properties: { "class": "classes()", "attr.role": "\"menuitemcheckbox\"", "attr.aria-disabled": "disabled ? \"true\" : null", "attr.aria-checked": "checked()", "attr.data-state": "checked() ? \"checked\" : \"unchecked\"", "attr.data-variant": "variant()" } }, providers: [
|
|
145
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: MenuCheckboxItemComponent, isStandalone: true, selector: "MenuCheckboxItem, button[MenuCheckboxItem]", inputs: { checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange" }, host: { attributes: { "tabindex": "-1" }, listeners: { "click": "toggle($any($event))", "keydown.enter": "toggle($any($event))", "keydown.space": "toggle($any($event))" }, properties: { "class": "classes()", "attr.role": "\"menuitemcheckbox\"", "attr.aria-disabled": "disabled ? \"true\" : null", "attr.aria-checked": "checked()", "attr.data-state": "checked() ? \"checked\" : \"unchecked\"", "attr.data-variant": "variant()" } }, providers: [
|
|
146
|
+
{ provide: MenuFocusableItem, useExisting: forwardRef(() => MenuCheckboxItemComponent) },
|
|
147
|
+
], usesInheritance: true, ngImport: i0, template: `
|
|
145
148
|
<span class="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
|
|
146
149
|
@if (checked()) {
|
|
147
150
|
<svg
|
|
@@ -152,20 +155,22 @@ class MenuCheckboxItemComponent extends MenuFocusableItem {
|
|
|
152
155
|
stroke="currentColor"
|
|
153
156
|
stroke-width="2"
|
|
154
157
|
stroke-linecap="round"
|
|
155
|
-
stroke-linejoin="round"
|
|
158
|
+
stroke-linejoin="round"
|
|
159
|
+
>
|
|
156
160
|
<polyline points="20 6 9 17 4 12" />
|
|
157
161
|
</svg>
|
|
158
162
|
}
|
|
159
163
|
</span>
|
|
160
164
|
<ng-content />
|
|
161
|
-
`, isInline: true
|
|
165
|
+
`, isInline: true });
|
|
162
166
|
}
|
|
163
167
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: MenuCheckboxItemComponent, decorators: [{
|
|
164
168
|
type: Component,
|
|
165
169
|
args: [{
|
|
166
170
|
selector: 'MenuCheckboxItem, button[MenuCheckboxItem]',
|
|
167
|
-
|
|
168
|
-
|
|
171
|
+
providers: [
|
|
172
|
+
{ provide: MenuFocusableItem, useExisting: forwardRef(() => MenuCheckboxItemComponent) },
|
|
173
|
+
],
|
|
169
174
|
host: {
|
|
170
175
|
'[class]': 'classes()',
|
|
171
176
|
'[attr.role]': '"menuitemcheckbox"',
|
|
@@ -189,7 +194,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImpor
|
|
|
189
194
|
stroke="currentColor"
|
|
190
195
|
stroke-width="2"
|
|
191
196
|
stroke-linecap="round"
|
|
192
|
-
stroke-linejoin="round"
|
|
197
|
+
stroke-linejoin="round"
|
|
198
|
+
>
|
|
193
199
|
<polyline points="20 6 9 17 4 12" />
|
|
194
200
|
</svg>
|
|
195
201
|
}
|
|
@@ -213,21 +219,24 @@ class MenuRadioItemComponent extends MenuFocusableItem {
|
|
|
213
219
|
this.group.select(this.value());
|
|
214
220
|
}
|
|
215
221
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: MenuRadioItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
216
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: MenuRadioItemComponent, isStandalone: true, selector: "MenuRadioItem, button[MenuRadioItem]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null } }, host: { attributes: { "tabindex": "-1" }, listeners: { "click": "select($any($event))", "keydown.enter": "select($any($event))", "keydown.space": "select($any($event))" }, properties: { "class": "classes()", "attr.role": "\"menuitemradio\"", "attr.aria-disabled": "disabled ? \"true\" : null", "attr.aria-checked": "checked()", "attr.data-state": "checked() ? \"checked\" : \"unchecked\"", "attr.data-variant": "variant()" } }, providers: [
|
|
222
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: MenuRadioItemComponent, isStandalone: true, selector: "MenuRadioItem, button[MenuRadioItem]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null } }, host: { attributes: { "tabindex": "-1" }, listeners: { "click": "select($any($event))", "keydown.enter": "select($any($event))", "keydown.space": "select($any($event))" }, properties: { "class": "classes()", "attr.role": "\"menuitemradio\"", "attr.aria-disabled": "disabled ? \"true\" : null", "attr.aria-checked": "checked()", "attr.data-state": "checked() ? \"checked\" : \"unchecked\"", "attr.data-variant": "variant()" } }, providers: [
|
|
223
|
+
{ provide: MenuFocusableItem, useExisting: forwardRef(() => MenuRadioItemComponent) },
|
|
224
|
+
], usesInheritance: true, ngImport: i0, template: `
|
|
217
225
|
<span class="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
|
|
218
226
|
@if (checked()) {
|
|
219
227
|
<span aria-hidden="true" class="h-2 w-2 rounded-full bg-current"></span>
|
|
220
228
|
}
|
|
221
229
|
</span>
|
|
222
230
|
<ng-content />
|
|
223
|
-
`, isInline: true
|
|
231
|
+
`, isInline: true });
|
|
224
232
|
}
|
|
225
233
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: MenuRadioItemComponent, decorators: [{
|
|
226
234
|
type: Component,
|
|
227
235
|
args: [{
|
|
228
236
|
selector: 'MenuRadioItem, button[MenuRadioItem]',
|
|
229
|
-
|
|
230
|
-
|
|
237
|
+
providers: [
|
|
238
|
+
{ provide: MenuFocusableItem, useExisting: forwardRef(() => MenuRadioItemComponent) },
|
|
239
|
+
],
|
|
231
240
|
host: {
|
|
232
241
|
'[class]': 'classes()',
|
|
233
242
|
'[attr.role]': '"menuitemradio"',
|
|
@@ -256,13 +265,12 @@ class MenuSeparatorComponent {
|
|
|
256
265
|
classes = computed(() => cn('-mx-1 my-1 block h-px bg-border', this.class()), /* @ts-ignore */
|
|
257
266
|
...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
|
|
258
267
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: MenuSeparatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
259
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: MenuSeparatorComponent, isStandalone: true, selector: "MenuSeparator", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.role": "\"separator\"", "attr.aria-orientation": "\"horizontal\"" } }, ngImport: i0, template: '', isInline: true
|
|
268
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: MenuSeparatorComponent, isStandalone: true, selector: "MenuSeparator", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.role": "\"separator\"", "attr.aria-orientation": "\"horizontal\"" } }, ngImport: i0, template: '', isInline: true });
|
|
260
269
|
}
|
|
261
270
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: MenuSeparatorComponent, decorators: [{
|
|
262
271
|
type: Component,
|
|
263
272
|
args: [{
|
|
264
273
|
selector: 'MenuSeparator',
|
|
265
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
266
274
|
host: {
|
|
267
275
|
'[class]': 'classes()',
|
|
268
276
|
'[attr.role]': '"separator"',
|
|
@@ -279,13 +287,12 @@ class MenuLabelComponent {
|
|
|
279
287
|
classes = computed(() => cn('px-2 py-1.5 text-sm font-semibold text-foreground', this.inset() ? 'pl-8' : '', this.class()), /* @ts-ignore */
|
|
280
288
|
...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
|
|
281
289
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: MenuLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
282
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: MenuLabelComponent, isStandalone: true, selector: "MenuLabel", inputs: { inset: { classPropertyName: "inset", publicName: "inset", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `<ng-content />`, isInline: true
|
|
290
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: MenuLabelComponent, isStandalone: true, selector: "MenuLabel", inputs: { inset: { classPropertyName: "inset", publicName: "inset", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `<ng-content />`, isInline: true });
|
|
283
291
|
}
|
|
284
292
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: MenuLabelComponent, decorators: [{
|
|
285
293
|
type: Component,
|
|
286
294
|
args: [{
|
|
287
295
|
selector: 'MenuLabel',
|
|
288
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
289
296
|
host: { '[class]': 'classes()' },
|
|
290
297
|
template: `<ng-content />`,
|
|
291
298
|
}]
|
|
@@ -296,13 +303,12 @@ class MenuShortcutComponent {
|
|
|
296
303
|
classes = computed(() => cn('ml-auto text-xs tracking-widest text-muted-foreground', this.class()), /* @ts-ignore */
|
|
297
304
|
...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
|
|
298
305
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: MenuShortcutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
299
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: MenuShortcutComponent, isStandalone: true, selector: "MenuShortcut, span[MenuShortcut]", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `<ng-content />`, isInline: true
|
|
306
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: MenuShortcutComponent, isStandalone: true, selector: "MenuShortcut, span[MenuShortcut]", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `<ng-content />`, isInline: true });
|
|
300
307
|
}
|
|
301
308
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: MenuShortcutComponent, decorators: [{
|
|
302
309
|
type: Component,
|
|
303
310
|
args: [{
|
|
304
311
|
selector: 'MenuShortcut, span[MenuShortcut]',
|
|
305
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
306
312
|
host: { '[class]': 'classes()' },
|
|
307
313
|
template: `<ng-content />`,
|
|
308
314
|
}]
|
|
@@ -354,13 +360,12 @@ class MenuSurfaceComponent {
|
|
|
354
360
|
this.closeRequested.emit();
|
|
355
361
|
}
|
|
356
362
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: MenuSurfaceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
357
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: MenuSurfaceComponent, isStandalone: true, selector: "MenuSurface", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, radius: { classPropertyName: "radius", publicName: "radius", isSignal: true, isRequired: false, transformFunction: null }, density: { classPropertyName: "density", publicName: "density", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closeRequested: "closeRequested" }, host: { attributes: { "tabindex": "-1" }, listeners: { "keydown.arrowDown": "onArrow($any($event), 1)", "keydown.arrowUp": "onArrow($any($event), -1)", "keydown.home": "onHome($any($event))", "keydown.end": "onEnd($any($event))", "keydown.tab": "onTab($any($event))" }, properties: { "class": "classes()", "style.--radius-base": "radiusBase()", "style.--spacing-base": "densityBase()", "attr.role": "\"menu\"" } }, queries: [{ propertyName: "items", predicate: MenuFocusableItem, descendants: true }], ngImport: i0, template: `<ng-content />`, isInline: true
|
|
363
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: MenuSurfaceComponent, isStandalone: true, selector: "MenuSurface", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, radius: { classPropertyName: "radius", publicName: "radius", isSignal: true, isRequired: false, transformFunction: null }, density: { classPropertyName: "density", publicName: "density", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closeRequested: "closeRequested" }, host: { attributes: { "tabindex": "-1" }, listeners: { "keydown.arrowDown": "onArrow($any($event), 1)", "keydown.arrowUp": "onArrow($any($event), -1)", "keydown.home": "onHome($any($event))", "keydown.end": "onEnd($any($event))", "keydown.tab": "onTab($any($event))" }, properties: { "class": "classes()", "style.--radius-base": "radiusBase()", "style.--spacing-base": "densityBase()", "attr.role": "\"menu\"" } }, queries: [{ propertyName: "items", predicate: MenuFocusableItem, descendants: true }], ngImport: i0, template: `<ng-content />`, isInline: true });
|
|
358
364
|
}
|
|
359
365
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: MenuSurfaceComponent, decorators: [{
|
|
360
366
|
type: Component,
|
|
361
367
|
args: [{
|
|
362
368
|
selector: 'MenuSurface',
|
|
363
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
364
369
|
host: {
|
|
365
370
|
'[class]': 'classes()',
|
|
366
371
|
'[style.--radius-base]': 'radiusBase()',
|