@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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, booleanAttribute, computed,
|
|
2
|
+
import { input, booleanAttribute, computed, Component, inject } from '@angular/core';
|
|
3
3
|
import { cn } from '@ojiepermana/angular-component/utils';
|
|
4
4
|
|
|
5
5
|
const TIMELINE_BASE = [
|
|
@@ -53,16 +53,17 @@ class TimelineComponent {
|
|
|
53
53
|
...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
54
54
|
class = input('', /* @ts-ignore */
|
|
55
55
|
...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
|
|
56
|
-
classes = computed(() => cn(TIMELINE_BASE, timelineSizeClasses[this.size()], this.horizontal()
|
|
56
|
+
classes = computed(() => cn(TIMELINE_BASE, timelineSizeClasses[this.size()], this.horizontal()
|
|
57
|
+
? 'flex min-w-0 items-start gap-[var(--timeline-item-gap)] overflow-x-auto pb-1'
|
|
58
|
+
: 'grid', this.class()), /* @ts-ignore */
|
|
57
59
|
...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
|
|
58
60
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: TimelineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
59
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: TimelineComponent, isStandalone: true, selector: "Timeline", inputs: { horizontal: { classPropertyName: "horizontal", publicName: "horizontal", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.data-slot": "\"timeline\"", "attr.data-orientation": "horizontal() ? \"horizontal\" : \"vertical\"", "attr.data-align": "align()", "attr.data-size": "size()" } }, ngImport: i0, template: `<ng-content />`, isInline: true
|
|
61
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: TimelineComponent, isStandalone: true, selector: "Timeline", inputs: { horizontal: { classPropertyName: "horizontal", publicName: "horizontal", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.data-slot": "\"timeline\"", "attr.data-orientation": "horizontal() ? \"horizontal\" : \"vertical\"", "attr.data-align": "align()", "attr.data-size": "size()" } }, ngImport: i0, template: `<ng-content />`, isInline: true });
|
|
60
62
|
}
|
|
61
63
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: TimelineComponent, decorators: [{
|
|
62
64
|
type: Component,
|
|
63
65
|
args: [{
|
|
64
66
|
selector: 'Timeline',
|
|
65
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
66
67
|
host: {
|
|
67
68
|
'[class]': 'classes()',
|
|
68
69
|
'[attr.data-slot]': '"timeline"',
|
|
@@ -108,13 +109,12 @@ class TimelineItemComponent {
|
|
|
108
109
|
}, /* @ts-ignore */
|
|
109
110
|
...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
|
|
110
111
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: TimelineItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
111
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: TimelineItemComponent, isStandalone: true, selector: "TimelineItem", inputs: { status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.data-slot": "\"timeline-item\"", "attr.data-orientation": "orientation()", "attr.data-align": "resolvedAlign()", "attr.data-size": "resolvedSize()", "attr.data-status": "status() ?? null" } }, ngImport: i0, template: `<ng-content />`, isInline: true
|
|
112
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: TimelineItemComponent, isStandalone: true, selector: "TimelineItem", inputs: { status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.data-slot": "\"timeline-item\"", "attr.data-orientation": "orientation()", "attr.data-align": "resolvedAlign()", "attr.data-size": "resolvedSize()", "attr.data-status": "status() ?? null" } }, ngImport: i0, template: `<ng-content />`, isInline: true });
|
|
112
113
|
}
|
|
113
114
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: TimelineItemComponent, decorators: [{
|
|
114
115
|
type: Component,
|
|
115
116
|
args: [{
|
|
116
117
|
selector: 'TimelineItem',
|
|
117
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
118
118
|
host: {
|
|
119
119
|
'[class]': 'classes()',
|
|
120
120
|
'[attr.data-slot]': '"timeline-item"',
|
|
@@ -134,6 +134,7 @@ class TimelineIndicatorComponent {
|
|
|
134
134
|
...(ngDevMode ? [{ debugName: "status" }] : /* istanbul ignore next */ []));
|
|
135
135
|
color = input(null, /* @ts-ignore */
|
|
136
136
|
...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
|
|
137
|
+
ariaLabel = input(null, { ...(ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {}), alias: 'aria-label' });
|
|
137
138
|
class = input('', /* @ts-ignore */
|
|
138
139
|
...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
|
|
139
140
|
resolvedStatus = computed(() => this.status() ?? this.item?.status() ?? 'incomplete', /* @ts-ignore */
|
|
@@ -144,20 +145,25 @@ class TimelineIndicatorComponent {
|
|
|
144
145
|
? 'bg-background text-muted-foreground'
|
|
145
146
|
: [
|
|
146
147
|
'size-[var(--timeline-indicator-size)] rounded-full border text-xs font-medium shadow-sm',
|
|
147
|
-
color
|
|
148
|
+
color
|
|
149
|
+
? timelineIndicatorColorClasses[color]
|
|
150
|
+
: timelineIndicatorStatusClasses[this.resolvedStatus()],
|
|
148
151
|
].join(' '), this.class());
|
|
149
152
|
}, /* @ts-ignore */
|
|
150
153
|
...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
|
|
151
154
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: TimelineIndicatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
152
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: TimelineIndicatorComponent, isStandalone: true, selector: "TimelineIndicator", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.data-slot": "\"timeline-indicator\"", "attr.data-variant": "variant()", "attr.data-status": "resolvedStatus()", "attr.data-color": "color() ?? null" } }, ngImport: i0, template: `<ng-content />`, isInline: true
|
|
155
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: TimelineIndicatorComponent, isStandalone: true, selector: "TimelineIndicator", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.role": "ariaLabel() ? \"img\" : null", "attr.aria-label": "ariaLabel()", "attr.data-slot": "\"timeline-indicator\"", "attr.data-variant": "variant()", "attr.data-status": "resolvedStatus()", "attr.data-color": "color() ?? null" } }, ngImport: i0, template: `<ng-content />`, isInline: true });
|
|
153
156
|
}
|
|
154
157
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: TimelineIndicatorComponent, decorators: [{
|
|
155
158
|
type: Component,
|
|
156
159
|
args: [{
|
|
157
160
|
selector: 'TimelineIndicator',
|
|
158
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
159
161
|
host: {
|
|
160
162
|
'[class]': 'classes()',
|
|
163
|
+
// A labeled indicator is a status graphic (role="img" so aria-label is valid);
|
|
164
|
+
// without a label it stays a decorative marker.
|
|
165
|
+
'[attr.role]': 'ariaLabel() ? "img" : null',
|
|
166
|
+
'[attr.aria-label]': 'ariaLabel()',
|
|
161
167
|
'[attr.data-slot]': '"timeline-indicator"',
|
|
162
168
|
'[attr.data-variant]': 'variant()',
|
|
163
169
|
'[attr.data-status]': 'resolvedStatus()',
|
|
@@ -165,21 +171,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImpor
|
|
|
165
171
|
},
|
|
166
172
|
template: `<ng-content />`,
|
|
167
173
|
}]
|
|
168
|
-
}], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
|
|
174
|
+
}], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
|
|
169
175
|
class TimelineContentComponent {
|
|
170
176
|
item = inject(TimelineItemComponent, { optional: true });
|
|
171
177
|
class = input('', /* @ts-ignore */
|
|
172
178
|
...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
|
|
173
|
-
classes = computed(() => cn('min-w-0 text-sm leading-6 text-foreground', this.item?.orientation() === 'horizontal'
|
|
179
|
+
classes = computed(() => cn('min-w-0 text-sm leading-6 text-foreground', this.item?.orientation() === 'horizontal'
|
|
180
|
+
? 'row-start-2 max-w-40 text-center'
|
|
181
|
+
: 'col-start-2 row-start-1', this.class()), /* @ts-ignore */
|
|
174
182
|
...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
|
|
175
183
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: TimelineContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
176
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: TimelineContentComponent, isStandalone: true, selector: "TimelineContent", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.data-slot": "\"timeline-content\"" } }, ngImport: i0, template: `<ng-content />`, isInline: true
|
|
184
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: TimelineContentComponent, isStandalone: true, selector: "TimelineContent", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.data-slot": "\"timeline-content\"" } }, ngImport: i0, template: `<ng-content />`, isInline: true });
|
|
177
185
|
}
|
|
178
186
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: TimelineContentComponent, decorators: [{
|
|
179
187
|
type: Component,
|
|
180
188
|
args: [{
|
|
181
189
|
selector: 'TimelineContent',
|
|
182
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
183
190
|
host: {
|
|
184
191
|
'[class]': 'classes()',
|
|
185
192
|
'[attr.data-slot]': '"timeline-content"',
|
|
@@ -194,13 +201,12 @@ class TimelineBlockComponent {
|
|
|
194
201
|
classes = computed(() => cn('min-w-0', this.item?.orientation() === 'horizontal' ? 'row-start-2 w-full' : 'col-span-full', this.class()), /* @ts-ignore */
|
|
195
202
|
...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
|
|
196
203
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: TimelineBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
197
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: TimelineBlockComponent, isStandalone: true, selector: "TimelineBlock", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.data-slot": "\"timeline-block\"" } }, ngImport: i0, template: `<ng-content />`, isInline: true
|
|
204
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: TimelineBlockComponent, isStandalone: true, selector: "TimelineBlock", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.data-slot": "\"timeline-block\"" } }, ngImport: i0, template: `<ng-content />`, isInline: true });
|
|
198
205
|
}
|
|
199
206
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: TimelineBlockComponent, decorators: [{
|
|
200
207
|
type: Component,
|
|
201
208
|
args: [{
|
|
202
209
|
selector: 'TimelineBlock',
|
|
203
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
204
210
|
host: {
|
|
205
211
|
'[class]': 'classes()',
|
|
206
212
|
'[attr.data-slot]': '"timeline-block"',
|
|
@@ -214,13 +220,12 @@ class TimelineSubgridComponent {
|
|
|
214
220
|
classes = computed(() => cn('grid min-w-0 grid-cols-[var(--timeline-indicator-size)_minmax(0,1fr)] gap-x-[var(--timeline-content-gap)]', this.class()), /* @ts-ignore */
|
|
215
221
|
...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
|
|
216
222
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: TimelineSubgridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
217
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: TimelineSubgridComponent, isStandalone: true, selector: "TimelineSubgrid", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.data-slot": "\"timeline-subgrid\"" } }, ngImport: i0, template: `<ng-content />`, isInline: true
|
|
223
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: TimelineSubgridComponent, isStandalone: true, selector: "TimelineSubgrid", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.data-slot": "\"timeline-subgrid\"" } }, ngImport: i0, template: `<ng-content />`, isInline: true });
|
|
218
224
|
}
|
|
219
225
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: TimelineSubgridComponent, decorators: [{
|
|
220
226
|
type: Component,
|
|
221
227
|
args: [{
|
|
222
228
|
selector: 'TimelineSubgrid',
|
|
223
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
224
229
|
host: {
|
|
225
230
|
'[class]': 'classes()',
|
|
226
231
|
'[attr.data-slot]': '"timeline-subgrid"',
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Directive, input, model, numberAttribute, inject, ElementRef, signal, computed, forwardRef,
|
|
2
|
+
import { Directive, input, model, numberAttribute, inject, ElementRef, signal, computed, forwardRef, Component } from '@angular/core';
|
|
3
3
|
import { toggleVariants } from '@ojiepermana/angular-component/toggle';
|
|
4
4
|
import { cn } from '@ojiepermana/angular-component/utils';
|
|
5
5
|
|
|
@@ -117,7 +117,9 @@ class ToggleGroupComponent extends ToggleGroupContextBase {
|
|
|
117
117
|
return;
|
|
118
118
|
this.focusedValue.set(value);
|
|
119
119
|
if (this.type() === 'multiple') {
|
|
120
|
-
this.values.update((current) => current.includes(value)
|
|
120
|
+
this.values.update((current) => current.includes(value)
|
|
121
|
+
? current.filter((itemValue) => itemValue !== value)
|
|
122
|
+
: [...current, value]);
|
|
121
123
|
return;
|
|
122
124
|
}
|
|
123
125
|
this.value.set(this.value() === value ? null : value);
|
|
@@ -174,19 +176,23 @@ class ToggleGroupComponent extends ToggleGroupContextBase {
|
|
|
174
176
|
this.registrationVersion.update((version) => version + 1);
|
|
175
177
|
}
|
|
176
178
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: ToggleGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
177
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: ToggleGroupComponent, isStandalone: true, selector: "ToggleGroup", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, values: { classPropertyName: "values", publicName: "values", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, spacing: { classPropertyName: "spacing", publicName: "spacing", isSignal: true, isRequired: false, transformFunction: null }, loop: { classPropertyName: "loop", publicName: "loop", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, dir: { classPropertyName: "dir", publicName: "dir", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", values: "valuesChange" }, host: { properties: { "class": "classes()", "attr.role": "\"group\"", "attr.dir": "dir() ?? null", "attr.
|
|
179
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: ToggleGroupComponent, isStandalone: true, selector: "ToggleGroup", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, values: { classPropertyName: "values", publicName: "values", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, spacing: { classPropertyName: "spacing", publicName: "spacing", isSignal: true, isRequired: false, transformFunction: null }, loop: { classPropertyName: "loop", publicName: "loop", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, dir: { classPropertyName: "dir", publicName: "dir", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", values: "valuesChange" }, host: { properties: { "class": "classes()", "attr.role": "\"group\"", "attr.dir": "dir() ?? null", "attr.data-disabled": "disabled() ? \"\" : null", "attr.data-orientation": "orientation()", "attr.data-slot": "\"toggle-group\"", "attr.data-type": "type()" } }, providers: [
|
|
180
|
+
{ provide: ToggleGroupContextBase, useExisting: forwardRef(() => ToggleGroupComponent) },
|
|
181
|
+
], usesInheritance: true, ngImport: i0, template: `<ng-content />`, isInline: true });
|
|
178
182
|
}
|
|
179
183
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: ToggleGroupComponent, decorators: [{
|
|
180
184
|
type: Component,
|
|
181
185
|
args: [{
|
|
182
186
|
selector: 'ToggleGroup',
|
|
183
|
-
|
|
184
|
-
|
|
187
|
+
providers: [
|
|
188
|
+
{ provide: ToggleGroupContextBase, useExisting: forwardRef(() => ToggleGroupComponent) },
|
|
189
|
+
],
|
|
185
190
|
host: {
|
|
186
191
|
'[class]': 'classes()',
|
|
187
192
|
'[attr.role]': '"group"',
|
|
188
193
|
'[attr.dir]': 'dir() ?? null',
|
|
189
|
-
|
|
194
|
+
// aria-orientation is not allowed on role="group" (axe aria-allowed-attr);
|
|
195
|
+
// data-orientation below drives the visual layout instead.
|
|
190
196
|
'[attr.data-disabled]': 'disabled() ? "" : null',
|
|
191
197
|
'[attr.data-orientation]': 'orientation()',
|
|
192
198
|
'[attr.data-slot]': '"toggle-group"',
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { model, input, computed,
|
|
2
|
+
import { model, input, computed, Component } from '@angular/core';
|
|
3
3
|
import { cn } from '@ojiepermana/angular-component/utils';
|
|
4
4
|
import { cva } from 'class-variance-authority';
|
|
5
5
|
|
|
@@ -52,13 +52,12 @@ class ToggleComponent {
|
|
|
52
52
|
this.pressed.update((pressed) => !pressed);
|
|
53
53
|
}
|
|
54
54
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: ToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
55
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: ToggleComponent, isStandalone: true, selector: "button[Toggle]", inputs: { pressed: { classPropertyName: "pressed", publicName: "pressed", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pressed: "pressedChange" }, host: { attributes: { "type": "button" }, listeners: { "click": "toggle()" }, properties: { "class": "classes()", "attr.aria-pressed": "pressed()", "attr.data-disabled": "disabled() ? \"\" : null", "attr.data-size": "size()", "attr.data-state": "pressed() ? \"on\" : \"off\"", "attr.data-variant": "variant()", "disabled": "disabled() || null" } }, ngImport: i0, template: `<ng-content />`, isInline: true
|
|
55
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: ToggleComponent, isStandalone: true, selector: "button[Toggle]", inputs: { pressed: { classPropertyName: "pressed", publicName: "pressed", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pressed: "pressedChange" }, host: { attributes: { "type": "button" }, listeners: { "click": "toggle()" }, properties: { "class": "classes()", "attr.aria-pressed": "pressed()", "attr.data-disabled": "disabled() ? \"\" : null", "attr.data-size": "size()", "attr.data-state": "pressed() ? \"on\" : \"off\"", "attr.data-variant": "variant()", "disabled": "disabled() || null" } }, ngImport: i0, template: `<ng-content />`, isInline: true });
|
|
56
56
|
}
|
|
57
57
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: ToggleComponent, decorators: [{
|
|
58
58
|
type: Component,
|
|
59
59
|
args: [{
|
|
60
60
|
selector: 'button[Toggle]',
|
|
61
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
62
61
|
host: {
|
|
63
62
|
'[class]': 'classes()',
|
|
64
63
|
type: 'button',
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, input, forwardRef,
|
|
2
|
+
import { InjectionToken, input, forwardRef, Component, inject, TemplateRef, computed, Directive, ViewContainerRef, ElementRef, DestroyRef, output, signal, effect } from '@angular/core';
|
|
3
3
|
import { radiusBaseValue, densityBaseValue, connectedPositionFor, oppositeSide, uniqueId, overlayDismissals } from '@ojiepermana/angular-component/utils';
|
|
4
4
|
import { Overlay } from '@angular/cdk/overlay';
|
|
5
5
|
import { TemplatePortal, ComponentPortal } from '@angular/cdk/portal';
|
|
@@ -18,13 +18,12 @@ class TooltipComponent {
|
|
|
18
18
|
closeDelay = input(0, /* @ts-ignore */
|
|
19
19
|
...(ngDevMode ? [{ debugName: "closeDelay" }] : /* istanbul ignore next */ []));
|
|
20
20
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: TooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
21
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: TooltipComponent, isStandalone: true, selector: "Tooltip", inputs: { side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, sideOffset: { classPropertyName: "sideOffset", publicName: "sideOffset", isSignal: true, isRequired: false, transformFunction: null }, openDelay: { classPropertyName: "openDelay", publicName: "openDelay", isSignal: true, isRequired: false, transformFunction: null }, closeDelay: { classPropertyName: "closeDelay", publicName: "closeDelay", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "contents" }, providers: [{ provide: TOOLTIP_DEFAULTS, useExisting: forwardRef(() => TooltipComponent) }], ngImport: i0, template: '<ng-content />', isInline: true
|
|
21
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: TooltipComponent, isStandalone: true, selector: "Tooltip", inputs: { side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, sideOffset: { classPropertyName: "sideOffset", publicName: "sideOffset", isSignal: true, isRequired: false, transformFunction: null }, openDelay: { classPropertyName: "openDelay", publicName: "openDelay", isSignal: true, isRequired: false, transformFunction: null }, closeDelay: { classPropertyName: "closeDelay", publicName: "closeDelay", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "contents" }, providers: [{ provide: TOOLTIP_DEFAULTS, useExisting: forwardRef(() => TooltipComponent) }], ngImport: i0, template: '<ng-content />', isInline: true });
|
|
22
22
|
}
|
|
23
23
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: TooltipComponent, decorators: [{
|
|
24
24
|
type: Component,
|
|
25
25
|
args: [{
|
|
26
26
|
selector: 'Tooltip',
|
|
27
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
28
27
|
providers: [{ provide: TOOLTIP_DEFAULTS, useExisting: forwardRef(() => TooltipComponent) }],
|
|
29
28
|
host: {
|
|
30
29
|
class: 'contents',
|
|
@@ -323,12 +322,11 @@ class TooltipTextComponent {
|
|
|
323
322
|
text = signal('', /* @ts-ignore */
|
|
324
323
|
...(ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []));
|
|
325
324
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: TooltipTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
326
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.4", type: TooltipTextComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `{{ text() }}`, isInline: true
|
|
325
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.4", type: TooltipTextComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `{{ text() }}`, isInline: true });
|
|
327
326
|
}
|
|
328
327
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: TooltipTextComponent, decorators: [{
|
|
329
328
|
type: Component,
|
|
330
329
|
args: [{
|
|
331
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
332
330
|
template: `{{ text() }}`,
|
|
333
331
|
}]
|
|
334
332
|
}] });
|
|
@@ -377,7 +375,10 @@ class TooltipDirective {
|
|
|
377
375
|
const positionStrategy = this.overlay
|
|
378
376
|
.position()
|
|
379
377
|
.flexibleConnectedTo(this.el)
|
|
380
|
-
.withPositions([
|
|
378
|
+
.withPositions([
|
|
379
|
+
connectedPositionFor(side, 'center', 4),
|
|
380
|
+
connectedPositionFor(oppositeSide(side), 'center', 4),
|
|
381
|
+
])
|
|
381
382
|
.withPush(false)
|
|
382
383
|
.withFlexibleDimensions(false);
|
|
383
384
|
this.overlayRef = this.overlay.create({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ojiepermana/angular-component",
|
|
3
|
-
"version": "22.0.
|
|
3
|
+
"version": "22.0.46",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/edsis/angular.git"
|
|
@@ -21,6 +21,15 @@
|
|
|
21
21
|
"peerDependenciesMeta": {
|
|
22
22
|
"@angular/material": {
|
|
23
23
|
"optional": true
|
|
24
|
+
},
|
|
25
|
+
"@angular/forms": {
|
|
26
|
+
"optional": true
|
|
27
|
+
},
|
|
28
|
+
"@angular/platform-browser": {
|
|
29
|
+
"optional": true
|
|
30
|
+
},
|
|
31
|
+
"@angular/router": {
|
|
32
|
+
"optional": true
|
|
24
33
|
}
|
|
25
34
|
},
|
|
26
35
|
"dependencies": {
|
|
@@ -3,6 +3,15 @@ import { ButtonVariant, ButtonSize } from '@ojiepermana/angular-component/button
|
|
|
3
3
|
|
|
4
4
|
type AlertDialogSize = 'default' | 'sm';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Confirmation dialog with `role="alertdialog"`.
|
|
8
|
+
*
|
|
9
|
+
* For the accessible name/description to wire up automatically, project the
|
|
10
|
+
* matching `AlertDialogTitle` / `AlertDialogDescription` parts (they register
|
|
11
|
+
* their ids with this component). Plain `DialogTitle` / `DialogDescription` will
|
|
12
|
+
* not auto-wire here — pass `aria-labelledby` / `aria-describedby` explicitly if
|
|
13
|
+
* you use custom markup.
|
|
14
|
+
*/
|
|
6
15
|
declare class AlertDialogComponent {
|
|
7
16
|
readonly open: _angular_core.ModelSignal<boolean>;
|
|
8
17
|
readonly closeOnEscape: _angular_core.InputSignal<boolean>;
|
|
@@ -11,17 +20,33 @@ declare class AlertDialogComponent {
|
|
|
11
20
|
readonly closeButtonLabel: _angular_core.InputSignal<string>;
|
|
12
21
|
readonly labelledBy: _angular_core.InputSignal<string | null>;
|
|
13
22
|
readonly describedBy: _angular_core.InputSignal<string | null>;
|
|
23
|
+
/** ARIA role passed to the underlying dialog surface. `'alertdialog'` by default. */
|
|
24
|
+
readonly role: _angular_core.InputSignal<string>;
|
|
14
25
|
readonly class: _angular_core.InputSignal<string>;
|
|
15
26
|
readonly radius: _angular_core.InputSignal<"sm" | "inherit" | "none" | "md" | "lg" | "xl" | "full">;
|
|
16
27
|
readonly density: _angular_core.InputSignal<"inherit" | "compact" | "normal" | "relaxed" | "spacious">;
|
|
17
28
|
readonly openedChange: _angular_core.OutputEmitterRef<boolean>;
|
|
18
29
|
private readonly contentSize;
|
|
30
|
+
private readonly registeredTitleId;
|
|
31
|
+
private readonly registeredDescriptionId;
|
|
19
32
|
readonly resolvedSize: _angular_core.Signal<AlertDialogSize>;
|
|
20
33
|
protected readonly surfaceClasses: _angular_core.Signal<string>;
|
|
34
|
+
/** Explicit `aria-labelledby` wins; otherwise a projected `AlertDialogTitle` supplies the id. */
|
|
35
|
+
protected readonly resolvedLabelledBy: _angular_core.Signal<string | null>;
|
|
36
|
+
/** Explicit `aria-describedby` wins; otherwise a projected `AlertDialogDescription` supplies the id. */
|
|
37
|
+
protected readonly resolvedDescribedBy: _angular_core.Signal<string | null>;
|
|
21
38
|
setContentSize(size: AlertDialogSize): void;
|
|
39
|
+
/** Called by a projected `AlertDialogTitle` so default usage has an accessible name (AXE-safe). */
|
|
40
|
+
registerTitleId(id: string | null): void;
|
|
41
|
+
/** Cleared by an `AlertDialogTitle` on destroy so a reopened alert never points at a stale id. */
|
|
42
|
+
unregisterTitleId(id: string): void;
|
|
43
|
+
/** Called by a projected `AlertDialogDescription`. */
|
|
44
|
+
registerDescriptionId(id: string | null): void;
|
|
45
|
+
/** Cleared by an `AlertDialogDescription` on destroy. */
|
|
46
|
+
unregisterDescriptionId(id: string): void;
|
|
22
47
|
close(): void;
|
|
23
48
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AlertDialogComponent, never>;
|
|
24
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AlertDialogComponent, "AlertDialog", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "closeOnBackdropClick": { "alias": "closeOnBackdropClick"; "required": false; "isSignal": true; }; "showCloseButton": { "alias": "showCloseButton"; "required": false; "isSignal": true; }; "closeButtonLabel": { "alias": "closeButtonLabel"; "required": false; "isSignal": true; }; "labelledBy": { "alias": "aria-labelledby"; "required": false; "isSignal": true; }; "describedBy": { "alias": "aria-describedby"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "radius": { "alias": "radius"; "required": false; "isSignal": true; }; "density": { "alias": "density"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "openedChange": "openedChange"; }, never, ["*"], true, never>;
|
|
49
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AlertDialogComponent, "AlertDialog", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "closeOnBackdropClick": { "alias": "closeOnBackdropClick"; "required": false; "isSignal": true; }; "showCloseButton": { "alias": "showCloseButton"; "required": false; "isSignal": true; }; "closeButtonLabel": { "alias": "closeButtonLabel"; "required": false; "isSignal": true; }; "labelledBy": { "alias": "aria-labelledby"; "required": false; "isSignal": true; }; "describedBy": { "alias": "aria-describedby"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "radius": { "alias": "radius"; "required": false; "isSignal": true; }; "density": { "alias": "density"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "openedChange": "openedChange"; }, never, ["*"], true, never>;
|
|
25
50
|
}
|
|
26
51
|
|
|
27
52
|
declare class AlertDialogContentComponent {
|
|
@@ -40,16 +65,30 @@ declare class AlertDialogHeaderComponent {
|
|
|
40
65
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AlertDialogHeaderComponent, "AlertDialogHeader", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
41
66
|
}
|
|
42
67
|
declare class AlertDialogTitleComponent {
|
|
68
|
+
/** Explicit id override; when omitted a document-unique id is generated. */
|
|
69
|
+
readonly id: _angular_core.InputSignal<string | null>;
|
|
43
70
|
readonly class: _angular_core.InputSignal<string>;
|
|
71
|
+
private readonly autoId;
|
|
72
|
+
private readonly alertDialog;
|
|
73
|
+
/** The id rendered on the element, used by the parent alert dialog for aria-labelledby. */
|
|
74
|
+
readonly resolvedId: _angular_core.Signal<string>;
|
|
44
75
|
protected readonly classes: _angular_core.Signal<string>;
|
|
76
|
+
constructor();
|
|
45
77
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AlertDialogTitleComponent, never>;
|
|
46
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AlertDialogTitleComponent, "AlertDialogTitle, h2[AlertDialogTitle]", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
78
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AlertDialogTitleComponent, "AlertDialogTitle, h2[AlertDialogTitle]", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
47
79
|
}
|
|
48
80
|
declare class AlertDialogDescriptionComponent {
|
|
81
|
+
/** Explicit id override; when omitted a document-unique id is generated. */
|
|
82
|
+
readonly id: _angular_core.InputSignal<string | null>;
|
|
49
83
|
readonly class: _angular_core.InputSignal<string>;
|
|
84
|
+
private readonly autoId;
|
|
85
|
+
private readonly alertDialog;
|
|
86
|
+
/** The id rendered on the element, used by the parent alert dialog for aria-describedby. */
|
|
87
|
+
readonly resolvedId: _angular_core.Signal<string>;
|
|
50
88
|
protected readonly classes: _angular_core.Signal<string>;
|
|
89
|
+
constructor();
|
|
51
90
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AlertDialogDescriptionComponent, never>;
|
|
52
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AlertDialogDescriptionComponent, "AlertDialogDescription, p[AlertDialogDescription]", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
91
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AlertDialogDescriptionComponent, "AlertDialogDescription, p[AlertDialogDescription]", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
53
92
|
}
|
|
54
93
|
declare class AlertDialogMediaComponent {
|
|
55
94
|
readonly class: _angular_core.InputSignal<string>;
|
|
@@ -18,6 +18,9 @@ declare class ComboboxComponent<T = unknown> implements ControlValueAccessor {
|
|
|
18
18
|
readonly options: _angular_core.InputSignal<readonly ComboboxOption<T>[]>;
|
|
19
19
|
readonly value: _angular_core.ModelSignal<T | null>;
|
|
20
20
|
readonly placeholder: _angular_core.InputSignal<string>;
|
|
21
|
+
/** Accessible name for the combobox trigger (its text content is the value, not a name). */
|
|
22
|
+
readonly ariaLabel: _angular_core.InputSignal<string | null>;
|
|
23
|
+
readonly ariaLabelledby: _angular_core.InputSignal<string | null>;
|
|
21
24
|
readonly searchPlaceholder: _angular_core.InputSignal<string>;
|
|
22
25
|
readonly emptyText: _angular_core.InputSignal<string>;
|
|
23
26
|
readonly disabled: _angular_core.ModelSignal<boolean>;
|
|
@@ -46,7 +49,7 @@ declare class ComboboxComponent<T = unknown> implements ControlValueAccessor {
|
|
|
46
49
|
registerOnTouched(fn: () => void): void;
|
|
47
50
|
setDisabledState(state: boolean): void;
|
|
48
51
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ComboboxComponent<any>, never>;
|
|
49
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ComboboxComponent<any>, "Combobox", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "disabled": "disabledChange"; }, never, never, true, never>;
|
|
52
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ComboboxComponent<any>, "Combobox", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "ariaLabelledby": { "alias": "aria-labelledby"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "disabled": "disabledChange"; }, never, never, true, never>;
|
|
50
53
|
}
|
|
51
54
|
|
|
52
55
|
export { ComboboxComponent };
|
|
@@ -3,6 +3,8 @@ import { model } from '@angular/core';
|
|
|
3
3
|
|
|
4
4
|
/** Base class exposed to children for context lookup. */
|
|
5
5
|
declare abstract class CommandContextBase {
|
|
6
|
+
/** Shared id linking the combobox input (aria-controls) to the listbox. */
|
|
7
|
+
readonly listboxId: string;
|
|
6
8
|
abstract query: ReturnType<typeof model<string>>;
|
|
7
9
|
abstract matches(text: string): boolean;
|
|
8
10
|
abstract registerItem(item: CommandItemComponent): void;
|
|
@@ -48,10 +50,13 @@ declare class CommandInputComponent {
|
|
|
48
50
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CommandInputComponent, "input[CommandInput]", never, { "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
49
51
|
}
|
|
50
52
|
declare class CommandListComponent {
|
|
53
|
+
protected readonly ctx: CommandContextBase;
|
|
51
54
|
readonly class: _angular_core.InputSignal<string>;
|
|
55
|
+
/** Accessible name for the listbox (required on role="listbox"). */
|
|
56
|
+
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
52
57
|
protected readonly classes: _angular_core.Signal<string>;
|
|
53
58
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CommandListComponent, never>;
|
|
54
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CommandListComponent, "CommandList", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
59
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CommandListComponent, "CommandList", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
55
60
|
}
|
|
56
61
|
declare class CommandEmptyComponent {
|
|
57
62
|
protected readonly ctx: CommandComponent;
|
|
@@ -80,7 +85,7 @@ declare class CommandItemComponent {
|
|
|
80
85
|
readonly value: _angular_core.InputSignal<string>;
|
|
81
86
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
82
87
|
readonly class: _angular_core.InputSignal<string>;
|
|
83
|
-
readonly selected: _angular_core.OutputEmitterRef<
|
|
88
|
+
readonly selected: _angular_core.OutputEmitterRef<KeyboardEvent | MouseEvent>;
|
|
84
89
|
readonly active: _angular_core.WritableSignal<boolean>;
|
|
85
90
|
readonly visible: _angular_core.Signal<boolean>;
|
|
86
91
|
protected readonly classes: _angular_core.Signal<string>;
|
|
@@ -30,10 +30,26 @@ declare class DialogComponent {
|
|
|
30
30
|
readonly closeButtonLabel: _angular_core.InputSignal<string>;
|
|
31
31
|
readonly labelledBy: _angular_core.InputSignal<string | null>;
|
|
32
32
|
readonly describedBy: _angular_core.InputSignal<string | null>;
|
|
33
|
+
/** ARIA role for the surface. `'dialog'` by default; `AlertDialog` sets `'alertdialog'`. */
|
|
34
|
+
readonly role: _angular_core.InputSignal<string>;
|
|
33
35
|
readonly class: _angular_core.InputSignal<string>;
|
|
34
36
|
readonly radius: _angular_core.InputSignal<"inherit" | "none" | "sm" | "md" | "lg" | "xl" | "full">;
|
|
35
37
|
readonly density: _angular_core.InputSignal<"inherit" | "compact" | "normal" | "relaxed" | "spacious">;
|
|
36
38
|
readonly openedChange: _angular_core.OutputEmitterRef<boolean>;
|
|
39
|
+
private readonly registeredTitleId;
|
|
40
|
+
private readonly registeredDescriptionId;
|
|
41
|
+
/** Explicit `aria-labelledby` wins; otherwise a projected `DialogTitle` supplies the id. */
|
|
42
|
+
protected readonly resolvedLabelledBy: _angular_core.Signal<string | null>;
|
|
43
|
+
/** Explicit `aria-describedby` wins; otherwise a projected `DialogDescription` supplies the id. */
|
|
44
|
+
protected readonly resolvedDescribedBy: _angular_core.Signal<string | null>;
|
|
45
|
+
/** Called by a projected `DialogTitle` so default usage has an accessible name (AXE-safe). */
|
|
46
|
+
registerTitleId(id: string | null): void;
|
|
47
|
+
/** Cleared by a `DialogTitle` on destroy so a closed/reopened dialog never points at a stale id. */
|
|
48
|
+
unregisterTitleId(id: string): void;
|
|
49
|
+
/** Called by a projected `DialogDescription`. */
|
|
50
|
+
registerDescriptionId(id: string | null): void;
|
|
51
|
+
/** Cleared by a `DialogDescription` on destroy. */
|
|
52
|
+
unregisterDescriptionId(id: string): void;
|
|
37
53
|
private readonly tpl;
|
|
38
54
|
private overlayRef;
|
|
39
55
|
private focusTrap;
|
|
@@ -47,7 +63,7 @@ declare class DialogComponent {
|
|
|
47
63
|
private requestClose;
|
|
48
64
|
close(): void;
|
|
49
65
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DialogComponent, never>;
|
|
50
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DialogComponent, "Dialog", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "closeOnBackdropClick": { "alias": "closeOnBackdropClick"; "required": false; "isSignal": true; }; "showCloseButton": { "alias": "showCloseButton"; "required": false; "isSignal": true; }; "closeButtonLabel": { "alias": "closeButtonLabel"; "required": false; "isSignal": true; }; "labelledBy": { "alias": "aria-labelledby"; "required": false; "isSignal": true; }; "describedBy": { "alias": "aria-describedby"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "radius": { "alias": "radius"; "required": false; "isSignal": true; }; "density": { "alias": "density"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "openedChange": "openedChange"; }, never, ["*"], true, never>;
|
|
66
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DialogComponent, "Dialog", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "closeOnBackdropClick": { "alias": "closeOnBackdropClick"; "required": false; "isSignal": true; }; "showCloseButton": { "alias": "showCloseButton"; "required": false; "isSignal": true; }; "closeButtonLabel": { "alias": "closeButtonLabel"; "required": false; "isSignal": true; }; "labelledBy": { "alias": "aria-labelledby"; "required": false; "isSignal": true; }; "describedBy": { "alias": "aria-describedby"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "radius": { "alias": "radius"; "required": false; "isSignal": true; }; "density": { "alias": "density"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "openedChange": "openedChange"; }, never, ["*"], true, never>;
|
|
51
67
|
}
|
|
52
68
|
|
|
53
69
|
declare class DialogCloseDirective {
|
|
@@ -64,16 +80,30 @@ declare class DialogHeaderComponent {
|
|
|
64
80
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DialogHeaderComponent, "DialogHeader", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
65
81
|
}
|
|
66
82
|
declare class DialogTitleComponent {
|
|
83
|
+
/** Explicit id override; when omitted a document-unique id is generated. */
|
|
84
|
+
readonly id: _angular_core.InputSignal<string | null>;
|
|
67
85
|
readonly class: _angular_core.InputSignal<string>;
|
|
86
|
+
private readonly autoId;
|
|
87
|
+
private readonly dialog;
|
|
88
|
+
/** The id rendered on the element, used by the parent dialog for aria-labelledby. */
|
|
89
|
+
readonly resolvedId: _angular_core.Signal<string>;
|
|
68
90
|
protected readonly classes: _angular_core.Signal<string>;
|
|
91
|
+
constructor();
|
|
69
92
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DialogTitleComponent, never>;
|
|
70
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DialogTitleComponent, "DialogTitle, h2[DialogTitle]", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
93
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DialogTitleComponent, "DialogTitle, h2[DialogTitle]", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
71
94
|
}
|
|
72
95
|
declare class DialogDescriptionComponent {
|
|
96
|
+
/** Explicit id override; when omitted a document-unique id is generated. */
|
|
97
|
+
readonly id: _angular_core.InputSignal<string | null>;
|
|
73
98
|
readonly class: _angular_core.InputSignal<string>;
|
|
99
|
+
private readonly autoId;
|
|
100
|
+
private readonly dialog;
|
|
101
|
+
/** The id rendered on the element, used by the parent dialog for aria-describedby. */
|
|
102
|
+
readonly resolvedId: _angular_core.Signal<string>;
|
|
74
103
|
protected readonly classes: _angular_core.Signal<string>;
|
|
104
|
+
constructor();
|
|
75
105
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DialogDescriptionComponent, never>;
|
|
76
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DialogDescriptionComponent, "DialogDescription, p[DialogDescription]", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
106
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DialogDescriptionComponent, "DialogDescription, p[DialogDescription]", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
77
107
|
}
|
|
78
108
|
declare class DialogContentComponent {
|
|
79
109
|
readonly class: _angular_core.InputSignal<string>;
|
|
@@ -8,12 +8,20 @@ import { AbstractControl } from '@angular/forms';
|
|
|
8
8
|
*/
|
|
9
9
|
declare class FormFieldContext {
|
|
10
10
|
readonly controlId: string;
|
|
11
|
+
readonly labelId: string;
|
|
11
12
|
readonly descriptionId: string;
|
|
12
13
|
readonly messageId: string;
|
|
13
14
|
readonly control: _angular_core.WritableSignal<AbstractControl<any, any, any> | null>;
|
|
14
15
|
readonly manualInvalid: _angular_core.WritableSignal<boolean>;
|
|
16
|
+
readonly hasLabel: _angular_core.WritableSignal<boolean>;
|
|
15
17
|
readonly hasDescription: _angular_core.WritableSignal<boolean>;
|
|
16
18
|
readonly hasMessage: _angular_core.WritableSignal<boolean>;
|
|
19
|
+
/**
|
|
20
|
+
* `aria-labelledby` for the control. `<FormLabel>` renders as a custom element,
|
|
21
|
+
* so the native `for`/`id` pairing does not associate it — point the control at
|
|
22
|
+
* the label's id explicitly so it has an accessible name (axe `select-name`/`label`).
|
|
23
|
+
*/
|
|
24
|
+
readonly labelledBy: _angular_core.Signal<string | null>;
|
|
17
25
|
private readonly statusTick;
|
|
18
26
|
readonly invalid: _angular_core.Signal<boolean>;
|
|
19
27
|
readonly firstError: _angular_core.Signal<string | null>;
|
|
@@ -84,6 +92,7 @@ declare class FormTitleComponent {
|
|
|
84
92
|
declare class FormLabelComponent {
|
|
85
93
|
protected readonly ctx: FormFieldContext;
|
|
86
94
|
readonly class: _angular_core.InputSignal<string>;
|
|
95
|
+
constructor();
|
|
87
96
|
protected readonly classes: _angular_core.Signal<string>;
|
|
88
97
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FormLabelComponent, never>;
|
|
89
98
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FormLabelComponent, "FormLabel, label[FormLabel]", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|