@edsis/ui 0.0.2 → 0.0.3
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/empty/README.md +1 -1
- package/fesm2022/edsis-ui-accordion.mjs +15 -15
- package/fesm2022/edsis-ui-alert-dialog.mjs +27 -27
- package/fesm2022/edsis-ui-alert.mjs +12 -12
- package/fesm2022/edsis-ui-aspect-ratio.mjs +3 -3
- package/fesm2022/edsis-ui-avatar.mjs +18 -18
- package/fesm2022/edsis-ui-badge.mjs +3 -3
- package/fesm2022/edsis-ui-breadcrumb.mjs +21 -21
- package/fesm2022/edsis-ui-button-group.mjs +9 -9
- package/fesm2022/edsis-ui-button.mjs +3 -3
- package/fesm2022/edsis-ui-calendar.mjs +3 -3
- package/fesm2022/edsis-ui-card.mjs +21 -21
- package/fesm2022/edsis-ui-carousel.mjs +18 -18
- package/fesm2022/edsis-ui-chart.mjs +80 -78
- package/fesm2022/edsis-ui-chart.mjs.map +1 -1
- package/fesm2022/edsis-ui-checkbox.mjs +3 -3
- package/fesm2022/edsis-ui-collapsible.mjs +12 -12
- package/fesm2022/edsis-ui-combobox.mjs +3 -3
- package/fesm2022/edsis-ui-command.mjs +41 -35
- package/fesm2022/edsis-ui-command.mjs.map +1 -1
- package/fesm2022/edsis-ui-composer.mjs +21 -21
- package/fesm2022/edsis-ui-context-menu.mjs +13 -7
- package/fesm2022/edsis-ui-context-menu.mjs.map +1 -1
- package/fesm2022/edsis-ui-date-picker.mjs +3 -3
- package/fesm2022/edsis-ui-dialog.mjs +27 -23
- package/fesm2022/edsis-ui-dialog.mjs.map +1 -1
- package/fesm2022/edsis-ui-dropdown-menu.mjs +58 -46
- package/fesm2022/edsis-ui-dropdown-menu.mjs.map +1 -1
- package/fesm2022/edsis-ui-editor.mjs +22 -20
- package/fesm2022/edsis-ui-editor.mjs.map +1 -1
- package/fesm2022/edsis-ui-empty.mjs +18 -18
- package/fesm2022/edsis-ui-form.mjs +38 -38
- package/fesm2022/edsis-ui-form.mjs.map +1 -1
- package/fesm2022/edsis-ui-hover-card.mjs +34 -13
- package/fesm2022/edsis-ui-hover-card.mjs.map +1 -1
- package/fesm2022/edsis-ui-input-group.mjs +18 -18
- package/fesm2022/edsis-ui-input-otp.mjs +15 -15
- package/fesm2022/edsis-ui-input.mjs +3 -3
- package/fesm2022/edsis-ui-item.mjs +30 -30
- package/fesm2022/edsis-ui-kanban.mjs +27 -27
- package/fesm2022/edsis-ui-kbd.mjs +6 -6
- package/fesm2022/edsis-ui-label.mjs +3 -3
- package/fesm2022/edsis-ui-layout-services.mjs +6 -0
- package/fesm2022/edsis-ui-layout-services.mjs.map +1 -0
- package/fesm2022/edsis-ui-layout-types.mjs +6 -0
- package/fesm2022/edsis-ui-layout-types.mjs.map +1 -0
- package/fesm2022/edsis-ui-layout.mjs +572 -0
- package/fesm2022/edsis-ui-layout.mjs.map +1 -0
- package/fesm2022/edsis-ui-menubar.mjs +22 -16
- package/fesm2022/edsis-ui-menubar.mjs.map +1 -1
- package/fesm2022/edsis-ui-native-select.mjs +9 -9
- package/fesm2022/edsis-ui-nav-service.mjs +343 -0
- package/fesm2022/edsis-ui-nav-service.mjs.map +1 -0
- package/fesm2022/edsis-ui-nav.mjs +2340 -0
- package/fesm2022/edsis-ui-nav.mjs.map +1 -0
- package/fesm2022/edsis-ui-navigation-menu.mjs +30 -24
- package/fesm2022/edsis-ui-navigation-menu.mjs.map +1 -1
- package/fesm2022/edsis-ui-page.mjs +397 -0
- package/fesm2022/edsis-ui-page.mjs.map +1 -0
- package/fesm2022/edsis-ui-pagination.mjs +3 -3
- package/fesm2022/edsis-ui-pillbox.mjs +16 -16
- package/fesm2022/edsis-ui-pillbox.mjs.map +1 -1
- package/fesm2022/edsis-ui-popover.mjs +16 -10
- package/fesm2022/edsis-ui-popover.mjs.map +1 -1
- package/fesm2022/edsis-ui-progress.mjs +3 -3
- package/fesm2022/edsis-ui-radio.mjs +6 -6
- package/fesm2022/edsis-ui-resizable.mjs +12 -12
- package/fesm2022/edsis-ui-scroll-area.mjs +3 -3
- package/fesm2022/edsis-ui-select.mjs +6 -6
- package/fesm2022/edsis-ui-separator.mjs +3 -3
- package/fesm2022/edsis-ui-sheet.mjs +27 -23
- package/fesm2022/edsis-ui-sheet.mjs.map +1 -1
- package/fesm2022/edsis-ui-skeleton.mjs +3 -3
- package/fesm2022/edsis-ui-slider.mjs +6 -6
- package/fesm2022/edsis-ui-spinner.mjs +3 -3
- package/fesm2022/edsis-ui-switch.mjs +3 -3
- package/fesm2022/edsis-ui-table.mjs +24 -24
- package/fesm2022/edsis-ui-tabs.mjs +18 -18
- package/fesm2022/edsis-ui-textarea.mjs +3 -3
- package/fesm2022/edsis-ui-theme.mjs +209 -0
- package/fesm2022/edsis-ui-theme.mjs.map +1 -0
- package/fesm2022/edsis-ui-timeline.mjs +18 -18
- package/fesm2022/edsis-ui-toast.mjs +3 -3
- package/fesm2022/edsis-ui-toggle-group.mjs +9 -9
- package/fesm2022/edsis-ui-toggle.mjs +3 -3
- package/fesm2022/edsis-ui-tooltip.mjs +12 -12
- package/layout/README.md +454 -0
- package/nav/README.md +96 -0
- package/package.json +31 -2
- package/page/README.md +46 -0
- package/types/edsis-ui-command.d.ts +4 -1
- package/types/edsis-ui-context-menu.d.ts +2 -1
- package/types/edsis-ui-dropdown-menu.d.ts +5 -2
- package/types/edsis-ui-editor.d.ts +1 -0
- package/types/edsis-ui-hover-card.d.ts +3 -1
- package/types/edsis-ui-layout-services.d.ts +1 -0
- package/types/edsis-ui-layout-types.d.ts +1 -0
- package/types/edsis-ui-layout.d.ts +153 -0
- package/types/edsis-ui-menubar.d.ts +2 -0
- package/types/edsis-ui-nav-service.d.ts +138 -0
- package/types/edsis-ui-nav.d.ts +205 -0
- package/types/edsis-ui-navigation-menu.d.ts +2 -0
- package/types/edsis-ui-page.d.ts +137 -0
- package/types/edsis-ui-popover.d.ts +2 -1
- package/types/edsis-ui-theme.d.ts +71 -0
|
@@ -40,19 +40,19 @@ class FormFieldContext {
|
|
|
40
40
|
return parts.length > 0 ? parts.join(' ') : null;
|
|
41
41
|
}, ...(ngDevMode ? [{ debugName: "describedBy" }] : /* istanbul ignore next */ []));
|
|
42
42
|
constructor() {
|
|
43
|
-
// Re-run computed() above whenever the control's status changes.
|
|
43
|
+
// Re-run computed() above whenever the control's status or interaction state changes.
|
|
44
44
|
effect((onCleanup) => {
|
|
45
45
|
const c = this.control();
|
|
46
46
|
if (!c)
|
|
47
47
|
return;
|
|
48
|
-
const sub = c.
|
|
48
|
+
const sub = c.events.subscribe(() => this.statusTick.update((n) => n + 1));
|
|
49
49
|
onCleanup(() => sub.unsubscribe());
|
|
50
50
|
});
|
|
51
51
|
}
|
|
52
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
53
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
52
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: FormFieldContext, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
53
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: FormFieldContext });
|
|
54
54
|
}
|
|
55
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
55
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: FormFieldContext, decorators: [{
|
|
56
56
|
type: Injectable
|
|
57
57
|
}], ctorParameters: () => [] });
|
|
58
58
|
|
|
@@ -73,10 +73,10 @@ class FormFieldComponent {
|
|
|
73
73
|
constructor() {
|
|
74
74
|
effect(() => this.ctx.manualInvalid.set(this.invalid()));
|
|
75
75
|
}
|
|
76
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
77
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.
|
|
76
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
77
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.15", type: FormFieldComponent, isStandalone: true, selector: "ui-form-field", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.data-orientation": "orientation()", "attr.data-invalid": "ctx.invalid() ? \"\" : null", "attr.role": "\"group\"" } }, providers: [FormFieldContext], ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
78
78
|
}
|
|
79
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
79
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: FormFieldComponent, decorators: [{
|
|
80
80
|
type: Component,
|
|
81
81
|
args: [{
|
|
82
82
|
selector: 'ui-form-field',
|
|
@@ -95,10 +95,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
95
95
|
class FormFieldsetComponent {
|
|
96
96
|
class = input('', ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
|
|
97
97
|
classes = computed(() => cn('block min-w-0 border-0 p-0 m-0', 'grid gap-4', this.class()), ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
|
|
98
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
99
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.
|
|
98
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: FormFieldsetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
99
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.15", type: FormFieldsetComponent, isStandalone: true, selector: "ui-form-fieldset, fieldset[ui-form-fieldset]", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
100
100
|
}
|
|
101
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
101
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: FormFieldsetComponent, decorators: [{
|
|
102
102
|
type: Component,
|
|
103
103
|
args: [{
|
|
104
104
|
selector: 'ui-form-fieldset, fieldset[ui-form-fieldset]',
|
|
@@ -114,10 +114,10 @@ class FormLegendComponent {
|
|
|
114
114
|
class = input('', ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
|
|
115
115
|
variant = input('legend', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
116
116
|
classes = computed(() => cn('block min-w-0 text-foreground', this.variant() === 'label' ? 'text-sm font-medium leading-none' : 'text-sm font-semibold leading-none', this.class()), ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
|
|
117
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
118
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.
|
|
117
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: FormLegendComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
118
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.15", type: FormLegendComponent, isStandalone: true, selector: "ui-form-legend, legend[ui-form-legend]", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
119
119
|
}
|
|
120
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
120
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: FormLegendComponent, decorators: [{
|
|
121
121
|
type: Component,
|
|
122
122
|
args: [{
|
|
123
123
|
selector: 'ui-form-legend, legend[ui-form-legend]',
|
|
@@ -132,10 +132,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
132
132
|
class FormGroupComponent {
|
|
133
133
|
class = input('', ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
|
|
134
134
|
classes = computed(() => cn('block min-w-0', 'grid gap-6', this.class()), ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
|
|
135
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
136
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.
|
|
135
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: FormGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
136
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.15", type: FormGroupComponent, isStandalone: true, selector: "ui-form-group", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
137
137
|
}
|
|
138
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
138
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: FormGroupComponent, decorators: [{
|
|
139
139
|
type: Component,
|
|
140
140
|
args: [{
|
|
141
141
|
selector: 'ui-form-group',
|
|
@@ -150,10 +150,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
150
150
|
class FormSeparatorComponent {
|
|
151
151
|
class = input('', ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
|
|
152
152
|
classes = computed(() => cn('block min-w-0', 'flex items-center gap-3 text-xs font-medium uppercase tracking-[0.24em] text-muted-foreground', 'before:h-px before:flex-1 before:bg-border after:h-px after:flex-1 after:bg-border', this.class()), ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
|
|
153
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
154
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.
|
|
153
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: FormSeparatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
154
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.15", type: FormSeparatorComponent, isStandalone: true, selector: "ui-form-separator", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `<span class="shrink-0"><ng-content /></span>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
155
155
|
}
|
|
156
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
156
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: FormSeparatorComponent, decorators: [{
|
|
157
157
|
type: Component,
|
|
158
158
|
args: [{
|
|
159
159
|
selector: 'ui-form-separator',
|
|
@@ -168,10 +168,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
168
168
|
class FormContentComponent {
|
|
169
169
|
class = input('', ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
|
|
170
170
|
classes = computed(() => cn('block min-w-0 flex-1', 'grid gap-1.5', this.class()), ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
|
|
171
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
172
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.
|
|
171
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: FormContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
172
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.15", type: FormContentComponent, isStandalone: true, selector: "ui-form-content", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
173
173
|
}
|
|
174
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
174
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: FormContentComponent, decorators: [{
|
|
175
175
|
type: Component,
|
|
176
176
|
args: [{
|
|
177
177
|
selector: 'ui-form-content',
|
|
@@ -186,10 +186,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
186
186
|
class FormTitleComponent {
|
|
187
187
|
class = input('', ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
|
|
188
188
|
classes = computed(() => cn('block text-sm font-medium leading-none text-foreground', this.class()), ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
|
|
189
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
190
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.
|
|
189
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: FormTitleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
190
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.15", type: FormTitleComponent, isStandalone: true, selector: "ui-form-title", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
191
191
|
}
|
|
192
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
192
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: FormTitleComponent, decorators: [{
|
|
193
193
|
type: Component,
|
|
194
194
|
args: [{
|
|
195
195
|
selector: 'ui-form-title',
|
|
@@ -205,10 +205,10 @@ class FormLabelComponent {
|
|
|
205
205
|
ctx = inject(FormFieldContext);
|
|
206
206
|
class = input('', ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
|
|
207
207
|
classes = computed(() => cn('text-sm font-medium leading-none', this.ctx.invalid() ? 'text-destructive' : 'text-foreground', 'peer-disabled:cursor-not-allowed peer-disabled:opacity-70', this.class()), ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
|
|
208
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
209
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.
|
|
208
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: FormLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
209
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.15", type: FormLabelComponent, isStandalone: true, selector: "ui-form-label, label[ui-form-label]", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.for": "ctx.controlId" } }, ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
210
210
|
}
|
|
211
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
211
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: FormLabelComponent, decorators: [{
|
|
212
212
|
type: Component,
|
|
213
213
|
args: [{
|
|
214
214
|
selector: 'ui-form-label, label[ui-form-label]',
|
|
@@ -232,10 +232,10 @@ class FormDescriptionComponent {
|
|
|
232
232
|
ngOnDestroy() {
|
|
233
233
|
this.ctx?.hasDescription.set(false);
|
|
234
234
|
}
|
|
235
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
236
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.
|
|
235
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: FormDescriptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
236
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.15", type: FormDescriptionComponent, isStandalone: true, selector: "ui-form-description, p[ui-form-description]", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.id": "descriptionId()" } }, ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
237
237
|
}
|
|
238
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
238
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: FormDescriptionComponent, decorators: [{
|
|
239
239
|
type: Component,
|
|
240
240
|
args: [{
|
|
241
241
|
selector: 'ui-form-description, p[ui-form-description]',
|
|
@@ -263,14 +263,14 @@ class FormMessageComponent {
|
|
|
263
263
|
ngOnDestroy() {
|
|
264
264
|
this.ctx.hasMessage.set(false);
|
|
265
265
|
}
|
|
266
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
267
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
266
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: FormMessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
267
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: FormMessageComponent, isStandalone: true, selector: "ui-form-message, p[ui-form-message]", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.id": "ctx.messageId", "attr.role": "\"alert\"", "attr.aria-live": "\"polite\"" } }, ngImport: i0, template: `
|
|
268
268
|
@if (show()) {
|
|
269
269
|
<ng-content>{{ ctx.firstError() }}</ng-content>
|
|
270
270
|
}
|
|
271
271
|
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
272
272
|
}
|
|
273
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
273
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: FormMessageComponent, decorators: [{
|
|
274
274
|
type: Component,
|
|
275
275
|
args: [{
|
|
276
276
|
selector: 'ui-form-message, p[ui-form-message]',
|
|
@@ -311,10 +311,10 @@ class FormControlDirective {
|
|
|
311
311
|
this.ctx.control.set(this.ngControl.control);
|
|
312
312
|
}
|
|
313
313
|
}
|
|
314
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
315
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.
|
|
314
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: FormControlDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
315
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.15", type: FormControlDirective, isStandalone: true, selector: "[uiFormControl]", host: { properties: { "attr.id": "ctx.controlId", "attr.aria-describedby": "ctx.describedBy()", "attr.aria-invalid": "ctx.invalid() ? \"true\" : null" } }, ngImport: i0 });
|
|
316
316
|
}
|
|
317
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
317
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: FormControlDirective, decorators: [{
|
|
318
318
|
type: Directive,
|
|
319
319
|
args: [{
|
|
320
320
|
selector: '[uiFormControl]',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edsis-ui-form.mjs","sources":["../../../library/ui/form/form-field.context.ts","../../../library/ui/form/form-field.component.ts","../../../library/ui/form/form-fieldset.component.ts","../../../library/ui/form/form-legend.component.ts","../../../library/ui/form/form-group.component.ts","../../../library/ui/form/form-separator.component.ts","../../../library/ui/form/form-content.component.ts","../../../library/ui/form/form-title.component.ts","../../../library/ui/form/form-label.component.ts","../../../library/ui/form/form-description.component.ts","../../../library/ui/form/form-message.component.ts","../../../library/ui/form/form-control.directive.ts","../../../library/ui/form/edsis-ui-form.ts"],"sourcesContent":["import { Injectable, computed, effect, signal } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\n\nlet nextId = 0;\n\n/**\n * Backing store for a single `<ui-form-field>`. Provided on the component\n * so descendant parts (label, description, message, control) can inject it.\n */\n@Injectable()\nexport class FormFieldContext {\n private readonly uid = ++nextId;\n readonly controlId = `ui-form-field-${this.uid}`;\n readonly descriptionId = `${this.controlId}-description`;\n readonly messageId = `${this.controlId}-message`;\n\n readonly control = signal<AbstractControl | null>(null);\n readonly manualInvalid = signal(false);\n readonly hasDescription = signal(false);\n readonly hasMessage = signal(false);\n\n private readonly statusTick = signal(0);\n\n readonly invalid = computed(() => {\n this.statusTick();\n const c = this.control();\n return this.manualInvalid() || (!!c && c.invalid && (c.touched || c.dirty));\n });\n\n readonly firstError = computed<string | null>(() => {\n this.statusTick();\n const c = this.control();\n if (!c?.errors) return null;\n const keys = Object.keys(c.errors);\n return keys.length > 0 ? keys[0]! : null;\n });\n\n readonly describedBy = computed(() => {\n const parts: string[] = [];\n if (this.hasDescription()) parts.push(this.descriptionId);\n if (this.hasMessage() && this.invalid()) parts.push(this.messageId);\n return parts.length > 0 ? parts.join(' ') : null;\n });\n\n constructor() {\n // Re-run computed() above whenever the control's status changes.\n effect((onCleanup) => {\n const c = this.control();\n if (!c) return;\n const sub = c.statusChanges.subscribe(() => this.statusTick.update((n) => n + 1));\n onCleanup(() => sub.unsubscribe());\n });\n }\n}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, effect, inject, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { FormFieldContext } from './form-field.context';\n\n/**\n * Groups a label, control, description, and validation message.\n * Provides ids + invalid state to descendants via {@link FormFieldContext}.\n */\n@Component({\n selector: 'ui-form-field',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [FormFieldContext],\n host: {\n '[class]': 'classes()',\n '[attr.data-orientation]': 'orientation()',\n '[attr.data-invalid]': 'ctx.invalid() ? \"\" : null',\n '[attr.role]': '\"group\"',\n },\n template: `<ng-content />`,\n})\nexport class FormFieldComponent {\n protected readonly ctx = inject(FormFieldContext);\n\n readonly class = input<string>('');\n readonly orientation = input<'vertical' | 'horizontal' | 'responsive'>('vertical');\n readonly invalid = input(false, { transform: booleanAttribute });\n\n protected readonly classes = computed(() => {\n const orientation = this.orientation();\n\n return cn(\n 'block min-w-0',\n orientation === 'vertical' && 'flex flex-col gap-2',\n orientation === 'horizontal' && 'flex items-start gap-3',\n orientation === 'responsive' &&\n 'flex flex-col gap-3 sm:grid sm:grid-cols-[minmax(0,12rem)_minmax(0,1fr)] sm:items-start',\n this.class(),\n );\n });\n\n constructor() {\n effect(() => this.ctx.manualInvalid.set(this.invalid()));\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\n\n@Component({\n selector: 'ui-form-fieldset, fieldset[ui-form-fieldset]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n },\n template: `<ng-content />`,\n})\nexport class FormFieldsetComponent {\n readonly class = input<string>('');\n\n protected readonly classes = computed(() => cn('block min-w-0 border-0 p-0 m-0', 'grid gap-4', this.class()));\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\n\n@Component({\n selector: 'ui-form-legend, legend[ui-form-legend]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n },\n template: `<ng-content />`,\n})\nexport class FormLegendComponent {\n readonly class = input<string>('');\n readonly variant = input<'legend' | 'label'>('legend');\n\n protected readonly classes = computed(() =>\n cn(\n 'block min-w-0 text-foreground',\n this.variant() === 'label' ? 'text-sm font-medium leading-none' : 'text-sm font-semibold leading-none',\n this.class(),\n ),\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\n\n@Component({\n selector: 'ui-form-group',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n },\n template: `<ng-content />`,\n})\nexport class FormGroupComponent {\n readonly class = input<string>('');\n\n protected readonly classes = computed(() => cn('block min-w-0', 'grid gap-6', this.class()));\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\n\n@Component({\n selector: 'ui-form-separator',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n },\n template: `<span class=\"shrink-0\"><ng-content /></span>`,\n})\nexport class FormSeparatorComponent {\n readonly class = input<string>('');\n\n protected readonly classes = computed(() =>\n cn(\n 'block min-w-0',\n 'flex items-center gap-3 text-xs font-medium uppercase tracking-[0.24em] text-muted-foreground',\n 'before:h-px before:flex-1 before:bg-border after:h-px after:flex-1 after:bg-border',\n this.class(),\n ),\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\n\n@Component({\n selector: 'ui-form-content',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n },\n template: `<ng-content />`,\n})\nexport class FormContentComponent {\n readonly class = input<string>('');\n\n protected readonly classes = computed(() => cn('block min-w-0 flex-1', 'grid gap-1.5', this.class()));\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\n\n@Component({\n selector: 'ui-form-title',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n },\n template: `<ng-content />`,\n})\nexport class FormTitleComponent {\n readonly class = input<string>('');\n\n protected readonly classes = computed(() =>\n cn('block text-sm font-medium leading-none text-foreground', this.class()),\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { FormFieldContext } from './form-field.context';\n\n@Component({\n selector: 'ui-form-label, label[ui-form-label]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.for]': 'ctx.controlId',\n },\n template: `<ng-content />`,\n})\nexport class FormLabelComponent {\n protected readonly ctx = inject(FormFieldContext);\n readonly class = input<string>('');\n\n protected readonly classes = computed(() =>\n cn(\n 'text-sm font-medium leading-none',\n this.ctx.invalid() ? 'text-destructive' : 'text-foreground',\n 'peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n this.class(),\n ),\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, OnDestroy, OnInit } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { FormFieldContext } from './form-field.context';\n\n@Component({\n selector: 'ui-form-description, p[ui-form-description]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.id]': 'descriptionId()',\n },\n template: `<ng-content />`,\n})\nexport class FormDescriptionComponent implements OnInit, OnDestroy {\n protected readonly ctx = inject(FormFieldContext, { optional: true });\n readonly class = input<string>('');\n\n protected readonly classes = computed(() => cn('text-sm text-muted-foreground', this.class()));\n protected readonly descriptionId = computed(() => this.ctx?.descriptionId ?? null);\n\n ngOnInit(): void {\n this.ctx?.hasDescription.set(true);\n }\n\n ngOnDestroy(): void {\n this.ctx?.hasDescription.set(false);\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, OnDestroy, OnInit } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { FormFieldContext } from './form-field.context';\n\n/**\n * Renders validation errors for the field's control.\n * By default, surfaces the first error key. Provide custom content to override.\n */\n@Component({\n selector: 'ui-form-message, p[ui-form-message]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.id]': 'ctx.messageId',\n '[attr.role]': '\"alert\"',\n '[attr.aria-live]': '\"polite\"',\n },\n template: `\n @if (show()) {\n <ng-content>{{ ctx.firstError() }}</ng-content>\n }\n `,\n})\nexport class FormMessageComponent implements OnInit, OnDestroy {\n protected readonly ctx = inject(FormFieldContext);\n readonly class = input<string>('');\n\n protected readonly show = computed(() => this.ctx.invalid());\n protected readonly classes = computed(() => cn('text-sm font-medium text-destructive', this.class()));\n\n ngOnInit(): void {\n this.ctx.hasMessage.set(true);\n }\n\n ngOnDestroy(): void {\n this.ctx.hasMessage.set(false);\n }\n}\n","import { Directive, OnInit, inject } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { FormFieldContext } from './form-field.context';\n\n/**\n * Attach to the native form control inside a `<ui-form-field>` to auto-wire:\n * - `id` ↔ `<ui-form-label for>`\n * - `aria-describedby` ↔ description + error message\n * - `aria-invalid` ↔ control validity (after touch/dirty)\n *\n * @example\n * <ui-form-field>\n * <ui-form-label>Email</ui-form-label>\n * <input ui-input uiFormControl [formControl]=\"email\" />\n * <ui-form-description>We'll never share it.</ui-form-description>\n * <ui-form-message />\n * </ui-form-field>\n */\n@Directive({\n selector: '[uiFormControl]',\n host: {\n '[attr.id]': 'ctx.controlId',\n '[attr.aria-describedby]': 'ctx.describedBy()',\n '[attr.aria-invalid]': 'ctx.invalid() ? \"true\" : null',\n },\n})\nexport class FormControlDirective implements OnInit {\n protected readonly ctx = inject(FormFieldContext);\n private readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n ngOnInit(): void {\n if (this.ngControl?.control) {\n this.ctx.control.set(this.ngControl.control);\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"edsis-ui-form.mjs","sources":["../../../library/ui/form/form-field.context.ts","../../../library/ui/form/form-field.component.ts","../../../library/ui/form/form-fieldset.component.ts","../../../library/ui/form/form-legend.component.ts","../../../library/ui/form/form-group.component.ts","../../../library/ui/form/form-separator.component.ts","../../../library/ui/form/form-content.component.ts","../../../library/ui/form/form-title.component.ts","../../../library/ui/form/form-label.component.ts","../../../library/ui/form/form-description.component.ts","../../../library/ui/form/form-message.component.ts","../../../library/ui/form/form-control.directive.ts","../../../library/ui/form/edsis-ui-form.ts"],"sourcesContent":["import { Injectable, computed, effect, signal } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\n\nlet nextId = 0;\n\n/**\n * Backing store for a single `<ui-form-field>`. Provided on the component\n * so descendant parts (label, description, message, control) can inject it.\n */\n@Injectable()\nexport class FormFieldContext {\n private readonly uid = ++nextId;\n readonly controlId = `ui-form-field-${this.uid}`;\n readonly descriptionId = `${this.controlId}-description`;\n readonly messageId = `${this.controlId}-message`;\n\n readonly control = signal<AbstractControl | null>(null);\n readonly manualInvalid = signal(false);\n readonly hasDescription = signal(false);\n readonly hasMessage = signal(false);\n\n private readonly statusTick = signal(0);\n\n readonly invalid = computed(() => {\n this.statusTick();\n const c = this.control();\n return this.manualInvalid() || (!!c && c.invalid && (c.touched || c.dirty));\n });\n\n readonly firstError = computed<string | null>(() => {\n this.statusTick();\n const c = this.control();\n if (!c?.errors) return null;\n const keys = Object.keys(c.errors);\n return keys.length > 0 ? keys[0]! : null;\n });\n\n readonly describedBy = computed(() => {\n const parts: string[] = [];\n if (this.hasDescription()) parts.push(this.descriptionId);\n if (this.hasMessage() && this.invalid()) parts.push(this.messageId);\n return parts.length > 0 ? parts.join(' ') : null;\n });\n\n constructor() {\n // Re-run computed() above whenever the control's status or interaction state changes.\n effect((onCleanup) => {\n const c = this.control();\n if (!c) return;\n const sub = c.events.subscribe(() => this.statusTick.update((n) => n + 1));\n onCleanup(() => sub.unsubscribe());\n });\n }\n}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, effect, inject, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { FormFieldContext } from './form-field.context';\n\n/**\n * Groups a label, control, description, and validation message.\n * Provides ids + invalid state to descendants via {@link FormFieldContext}.\n */\n@Component({\n selector: 'ui-form-field',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [FormFieldContext],\n host: {\n '[class]': 'classes()',\n '[attr.data-orientation]': 'orientation()',\n '[attr.data-invalid]': 'ctx.invalid() ? \"\" : null',\n '[attr.role]': '\"group\"',\n },\n template: `<ng-content />`,\n})\nexport class FormFieldComponent {\n protected readonly ctx = inject(FormFieldContext);\n\n readonly class = input<string>('');\n readonly orientation = input<'vertical' | 'horizontal' | 'responsive'>('vertical');\n readonly invalid = input(false, { transform: booleanAttribute });\n\n protected readonly classes = computed(() => {\n const orientation = this.orientation();\n\n return cn(\n 'block min-w-0',\n orientation === 'vertical' && 'flex flex-col gap-2',\n orientation === 'horizontal' && 'flex items-start gap-3',\n orientation === 'responsive' &&\n 'flex flex-col gap-3 sm:grid sm:grid-cols-[minmax(0,12rem)_minmax(0,1fr)] sm:items-start',\n this.class(),\n );\n });\n\n constructor() {\n effect(() => this.ctx.manualInvalid.set(this.invalid()));\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\n\n@Component({\n selector: 'ui-form-fieldset, fieldset[ui-form-fieldset]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n },\n template: `<ng-content />`,\n})\nexport class FormFieldsetComponent {\n readonly class = input<string>('');\n\n protected readonly classes = computed(() => cn('block min-w-0 border-0 p-0 m-0', 'grid gap-4', this.class()));\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\n\n@Component({\n selector: 'ui-form-legend, legend[ui-form-legend]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n },\n template: `<ng-content />`,\n})\nexport class FormLegendComponent {\n readonly class = input<string>('');\n readonly variant = input<'legend' | 'label'>('legend');\n\n protected readonly classes = computed(() =>\n cn(\n 'block min-w-0 text-foreground',\n this.variant() === 'label' ? 'text-sm font-medium leading-none' : 'text-sm font-semibold leading-none',\n this.class(),\n ),\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\n\n@Component({\n selector: 'ui-form-group',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n },\n template: `<ng-content />`,\n})\nexport class FormGroupComponent {\n readonly class = input<string>('');\n\n protected readonly classes = computed(() => cn('block min-w-0', 'grid gap-6', this.class()));\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\n\n@Component({\n selector: 'ui-form-separator',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n },\n template: `<span class=\"shrink-0\"><ng-content /></span>`,\n})\nexport class FormSeparatorComponent {\n readonly class = input<string>('');\n\n protected readonly classes = computed(() =>\n cn(\n 'block min-w-0',\n 'flex items-center gap-3 text-xs font-medium uppercase tracking-[0.24em] text-muted-foreground',\n 'before:h-px before:flex-1 before:bg-border after:h-px after:flex-1 after:bg-border',\n this.class(),\n ),\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\n\n@Component({\n selector: 'ui-form-content',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n },\n template: `<ng-content />`,\n})\nexport class FormContentComponent {\n readonly class = input<string>('');\n\n protected readonly classes = computed(() => cn('block min-w-0 flex-1', 'grid gap-1.5', this.class()));\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\n\n@Component({\n selector: 'ui-form-title',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n },\n template: `<ng-content />`,\n})\nexport class FormTitleComponent {\n readonly class = input<string>('');\n\n protected readonly classes = computed(() =>\n cn('block text-sm font-medium leading-none text-foreground', this.class()),\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { FormFieldContext } from './form-field.context';\n\n@Component({\n selector: 'ui-form-label, label[ui-form-label]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.for]': 'ctx.controlId',\n },\n template: `<ng-content />`,\n})\nexport class FormLabelComponent {\n protected readonly ctx = inject(FormFieldContext);\n readonly class = input<string>('');\n\n protected readonly classes = computed(() =>\n cn(\n 'text-sm font-medium leading-none',\n this.ctx.invalid() ? 'text-destructive' : 'text-foreground',\n 'peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n this.class(),\n ),\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, OnDestroy, OnInit } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { FormFieldContext } from './form-field.context';\n\n@Component({\n selector: 'ui-form-description, p[ui-form-description]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.id]': 'descriptionId()',\n },\n template: `<ng-content />`,\n})\nexport class FormDescriptionComponent implements OnInit, OnDestroy {\n protected readonly ctx = inject(FormFieldContext, { optional: true });\n readonly class = input<string>('');\n\n protected readonly classes = computed(() => cn('text-sm text-muted-foreground', this.class()));\n protected readonly descriptionId = computed(() => this.ctx?.descriptionId ?? null);\n\n ngOnInit(): void {\n this.ctx?.hasDescription.set(true);\n }\n\n ngOnDestroy(): void {\n this.ctx?.hasDescription.set(false);\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, OnDestroy, OnInit } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { FormFieldContext } from './form-field.context';\n\n/**\n * Renders validation errors for the field's control.\n * By default, surfaces the first error key. Provide custom content to override.\n */\n@Component({\n selector: 'ui-form-message, p[ui-form-message]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.id]': 'ctx.messageId',\n '[attr.role]': '\"alert\"',\n '[attr.aria-live]': '\"polite\"',\n },\n template: `\n @if (show()) {\n <ng-content>{{ ctx.firstError() }}</ng-content>\n }\n `,\n})\nexport class FormMessageComponent implements OnInit, OnDestroy {\n protected readonly ctx = inject(FormFieldContext);\n readonly class = input<string>('');\n\n protected readonly show = computed(() => this.ctx.invalid());\n protected readonly classes = computed(() => cn('text-sm font-medium text-destructive', this.class()));\n\n ngOnInit(): void {\n this.ctx.hasMessage.set(true);\n }\n\n ngOnDestroy(): void {\n this.ctx.hasMessage.set(false);\n }\n}\n","import { Directive, OnInit, inject } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { FormFieldContext } from './form-field.context';\n\n/**\n * Attach to the native form control inside a `<ui-form-field>` to auto-wire:\n * - `id` ↔ `<ui-form-label for>`\n * - `aria-describedby` ↔ description + error message\n * - `aria-invalid` ↔ control validity (after touch/dirty)\n *\n * @example\n * <ui-form-field>\n * <ui-form-label>Email</ui-form-label>\n * <input ui-input uiFormControl [formControl]=\"email\" />\n * <ui-form-description>We'll never share it.</ui-form-description>\n * <ui-form-message />\n * </ui-form-field>\n */\n@Directive({\n selector: '[uiFormControl]',\n host: {\n '[attr.id]': 'ctx.controlId',\n '[attr.aria-describedby]': 'ctx.describedBy()',\n '[attr.aria-invalid]': 'ctx.invalid() ? \"true\" : null',\n },\n})\nexport class FormControlDirective implements OnInit {\n protected readonly ctx = inject(FormFieldContext);\n private readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n ngOnInit(): void {\n if (this.ngControl?.control) {\n this.ctx.control.set(this.ngControl.control);\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -13,10 +13,10 @@ class HoverCardComponent {
|
|
|
13
13
|
sideOffset = input(8, ...(ngDevMode ? [{ debugName: "sideOffset" }] : /* istanbul ignore next */ []));
|
|
14
14
|
openDelay = input(100, ...(ngDevMode ? [{ debugName: "openDelay" }] : /* istanbul ignore next */ []));
|
|
15
15
|
closeDelay = input(100, ...(ngDevMode ? [{ debugName: "closeDelay" }] : /* istanbul ignore next */ []));
|
|
16
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
17
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.
|
|
16
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: HoverCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
17
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.15", type: HoverCardComponent, isStandalone: true, selector: "ui-hover-card", 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: HOVER_CARD_DEFAULTS, useExisting: forwardRef(() => HoverCardComponent) }], ngImport: i0, template: '<ng-content />', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
18
18
|
}
|
|
19
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: HoverCardComponent, decorators: [{
|
|
20
20
|
type: Component,
|
|
21
21
|
args: [{
|
|
22
22
|
selector: 'ui-hover-card',
|
|
@@ -31,10 +31,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
31
31
|
|
|
32
32
|
class HoverCardContentDirective {
|
|
33
33
|
template = inject(TemplateRef);
|
|
34
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
35
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.
|
|
34
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: HoverCardContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
35
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.15", type: HoverCardContentDirective, isStandalone: true, selector: "ng-template[uiHoverCardContent]", exportAs: ["uiHoverCardContent"], ngImport: i0 });
|
|
36
36
|
}
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: HoverCardContentDirective, decorators: [{
|
|
38
38
|
type: Directive,
|
|
39
39
|
args: [{
|
|
40
40
|
selector: 'ng-template[uiHoverCardContent]',
|
|
@@ -103,6 +103,13 @@ class HoverCardTriggerDirective {
|
|
|
103
103
|
isContentHovered = false;
|
|
104
104
|
isTriggerFocused = false;
|
|
105
105
|
isContentFocused = false;
|
|
106
|
+
constructor() {
|
|
107
|
+
this.destroyRef.onDestroy(() => {
|
|
108
|
+
this.clearOpenTimeout();
|
|
109
|
+
this.clearCloseTimeout();
|
|
110
|
+
this.close(false);
|
|
111
|
+
});
|
|
112
|
+
}
|
|
106
113
|
handleTriggerPointerEnter() {
|
|
107
114
|
if (this.disabled()) {
|
|
108
115
|
return;
|
|
@@ -165,18 +172,22 @@ class HoverCardTriggerDirective {
|
|
|
165
172
|
this.isOpen.set(true);
|
|
166
173
|
this.openedChange.emit(true);
|
|
167
174
|
}
|
|
168
|
-
close() {
|
|
175
|
+
close(emitOpenedChange = true) {
|
|
169
176
|
this.clearOpenTimeout();
|
|
170
177
|
this.clearCloseTimeout();
|
|
171
178
|
if (!this.isOpen()) {
|
|
172
179
|
return;
|
|
173
180
|
}
|
|
174
|
-
this.overlayRef
|
|
181
|
+
const overlayRef = this.overlayRef;
|
|
182
|
+
this.unbindOverlayInteractions();
|
|
175
183
|
this.overlayRef = null;
|
|
176
184
|
this.isContentHovered = false;
|
|
177
185
|
this.isContentFocused = false;
|
|
178
186
|
this.isOpen.set(false);
|
|
179
|
-
|
|
187
|
+
overlayRef?.dispose();
|
|
188
|
+
if (emitOpenedChange) {
|
|
189
|
+
this.openedChange.emit(false);
|
|
190
|
+
}
|
|
180
191
|
}
|
|
181
192
|
bindOverlayInteractions() {
|
|
182
193
|
const overlayElement = this.overlayRef?.overlayElement;
|
|
@@ -188,6 +199,16 @@ class HoverCardTriggerDirective {
|
|
|
188
199
|
overlayElement.addEventListener('focusin', this.onContentFocusIn);
|
|
189
200
|
overlayElement.addEventListener('focusout', this.onContentFocusOut);
|
|
190
201
|
}
|
|
202
|
+
unbindOverlayInteractions() {
|
|
203
|
+
const overlayElement = this.overlayRef?.overlayElement;
|
|
204
|
+
if (!overlayElement) {
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
overlayElement.removeEventListener('pointerenter', this.onContentPointerEnter);
|
|
208
|
+
overlayElement.removeEventListener('pointerleave', this.onContentPointerLeave);
|
|
209
|
+
overlayElement.removeEventListener('focusin', this.onContentFocusIn);
|
|
210
|
+
overlayElement.removeEventListener('focusout', this.onContentFocusOut);
|
|
211
|
+
}
|
|
191
212
|
onContentPointerEnter = () => {
|
|
192
213
|
this.isContentHovered = true;
|
|
193
214
|
this.clearCloseTimeout();
|
|
@@ -256,10 +277,10 @@ class HoverCardTriggerDirective {
|
|
|
256
277
|
oppositeSide(side) {
|
|
257
278
|
return side === 'top' ? 'bottom' : side === 'bottom' ? 'top' : side === 'left' ? 'right' : 'left';
|
|
258
279
|
}
|
|
259
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
260
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.
|
|
280
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: HoverCardTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
281
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.15", type: HoverCardTriggerDirective, isStandalone: true, selector: "[uiHoverCardTrigger]", inputs: { uiHoverCardTrigger: { classPropertyName: "uiHoverCardTrigger", publicName: "uiHoverCardTrigger", isSignal: true, isRequired: true, transformFunction: null }, 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 }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openedChange: "openedChange" }, host: { listeners: { "pointerenter": "handleTriggerPointerEnter()", "pointerleave": "handleTriggerPointerLeave($event)", "focusin": "handleTriggerFocusIn()", "focusout": "handleTriggerFocusOut($event)", "keydown.escape": "close()" }, properties: { "attr.aria-expanded": "isOpen()", "attr.aria-haspopup": "\"dialog\"" } }, exportAs: ["uiHoverCardTrigger"], ngImport: i0 });
|
|
261
282
|
}
|
|
262
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
283
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: HoverCardTriggerDirective, decorators: [{
|
|
263
284
|
type: Directive,
|
|
264
285
|
args: [{
|
|
265
286
|
selector: '[uiHoverCardTrigger]',
|
|
@@ -274,7 +295,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
274
295
|
'(keydown.escape)': 'close()',
|
|
275
296
|
},
|
|
276
297
|
}]
|
|
277
|
-
}], propDecorators: { uiHoverCardTrigger: [{ type: i0.Input, args: [{ isSignal: true, alias: "uiHoverCardTrigger", required: true }] }], side: [{ type: i0.Input, args: [{ isSignal: true, alias: "side", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], sideOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "sideOffset", required: false }] }], openDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "openDelay", required: false }] }], closeDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeDelay", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], openedChange: [{ type: i0.Output, args: ["openedChange"] }] } });
|
|
298
|
+
}], ctorParameters: () => [], propDecorators: { uiHoverCardTrigger: [{ type: i0.Input, args: [{ isSignal: true, alias: "uiHoverCardTrigger", required: true }] }], side: [{ type: i0.Input, args: [{ isSignal: true, alias: "side", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], sideOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "sideOffset", required: false }] }], openDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "openDelay", required: false }] }], closeDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeDelay", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], openedChange: [{ type: i0.Output, args: ["openedChange"] }] } });
|
|
278
299
|
|
|
279
300
|
/**
|
|
280
301
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edsis-ui-hover-card.mjs","sources":["../../../library/ui/hover-card/hover-card.component.ts","../../../library/ui/hover-card/hover-card-content.directive.ts","../../../library/ui/hover-card/hover-card-trigger.directive.ts","../../../library/ui/hover-card/edsis-ui-hover-card.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, InjectionToken, Signal, forwardRef, input } from '@angular/core';\n\nexport type HoverCardSide = 'top' | 'right' | 'bottom' | 'left';\nexport type HoverCardAlign = 'start' | 'center' | 'end';\n\nexport interface HoverCardDefaults {\n readonly side: Signal<HoverCardSide>;\n readonly align: Signal<HoverCardAlign>;\n readonly sideOffset: Signal<number>;\n readonly openDelay: Signal<number>;\n readonly closeDelay: Signal<number>;\n}\n\nexport const HOVER_CARD_DEFAULTS = new InjectionToken<HoverCardDefaults>('HOVER_CARD_DEFAULTS');\n\n@Component({\n selector: 'ui-hover-card',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: HOVER_CARD_DEFAULTS, useExisting: forwardRef(() => HoverCardComponent) }],\n host: {\n class: 'contents',\n },\n template: '<ng-content />',\n})\nexport class HoverCardComponent implements HoverCardDefaults {\n readonly side = input<HoverCardSide>('bottom');\n readonly align = input<HoverCardAlign>('center');\n readonly sideOffset = input(8);\n readonly openDelay = input(100);\n readonly closeDelay = input(100);\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n selector: 'ng-template[uiHoverCardContent]',\n exportAs: 'uiHoverCardContent',\n})\nexport class HoverCardContentDirective {\n readonly template = inject<TemplateRef<unknown>>(TemplateRef);\n}\n","import { Overlay, OverlayRef, ConnectedPosition } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { DestroyRef, Directive, ElementRef, ViewContainerRef, inject, input, output, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { merge } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { HOVER_CARD_DEFAULTS, type HoverCardAlign, type HoverCardSide } from './hover-card.component';\nimport type { HoverCardContentDirective } from './hover-card-content.directive';\n\nconst POSITION_ANCHORS: Record<HoverCardSide, (align: HoverCardAlign) => ConnectedPosition> = {\n top: (align) => ({\n originX: align === 'start' ? 'start' : align === 'end' ? 'end' : 'center',\n originY: 'top',\n overlayX: align === 'start' ? 'start' : align === 'end' ? 'end' : 'center',\n overlayY: 'bottom',\n }),\n bottom: (align) => ({\n originX: align === 'start' ? 'start' : align === 'end' ? 'end' : 'center',\n originY: 'bottom',\n overlayX: align === 'start' ? 'start' : align === 'end' ? 'end' : 'center',\n overlayY: 'top',\n }),\n left: (align) => ({\n originX: 'start',\n originY: align === 'start' ? 'top' : align === 'end' ? 'bottom' : 'center',\n overlayX: 'end',\n overlayY: align === 'start' ? 'top' : align === 'end' ? 'bottom' : 'center',\n }),\n right: (align) => ({\n originX: 'end',\n originY: align === 'start' ? 'top' : align === 'end' ? 'bottom' : 'center',\n overlayX: 'start',\n overlayY: align === 'start' ? 'top' : align === 'end' ? 'bottom' : 'center',\n }),\n};\n\nfunction positionFor(side: HoverCardSide, align: HoverCardAlign, sideOffset: number): ConnectedPosition {\n const anchor = POSITION_ANCHORS[side](align);\n\n if (side === 'top') {\n return { ...anchor, offsetY: -sideOffset };\n }\n\n if (side === 'bottom') {\n return { ...anchor, offsetY: sideOffset };\n }\n\n if (side === 'left') {\n return { ...anchor, offsetX: -sideOffset };\n }\n\n return { ...anchor, offsetX: sideOffset };\n}\n\n@Directive({\n selector: '[uiHoverCardTrigger]',\n exportAs: 'uiHoverCardTrigger',\n host: {\n '[attr.aria-expanded]': 'isOpen()',\n '[attr.aria-haspopup]': '\"dialog\"',\n '(pointerenter)': 'handleTriggerPointerEnter()',\n '(pointerleave)': 'handleTriggerPointerLeave($event)',\n '(focusin)': 'handleTriggerFocusIn()',\n '(focusout)': 'handleTriggerFocusOut($event)',\n '(keydown.escape)': 'close()',\n },\n})\nexport class HoverCardTriggerDirective {\n private readonly overlay = inject(Overlay);\n private readonly vcr = inject(ViewContainerRef);\n private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly defaults = inject(HOVER_CARD_DEFAULTS, { optional: true });\n\n readonly uiHoverCardTrigger = input.required<HoverCardContentDirective>();\n readonly side = input<HoverCardSide | undefined>(undefined);\n readonly align = input<HoverCardAlign | undefined>(undefined);\n readonly sideOffset = input<number | undefined>(undefined);\n readonly openDelay = input<number | undefined>(undefined);\n readonly closeDelay = input<number | undefined>(undefined);\n readonly disabled = input(false);\n\n readonly openedChange = output<boolean>();\n\n readonly isOpen = signal(false);\n\n private overlayRef: OverlayRef | null = null;\n private openTimeoutId: number | null = null;\n private closeTimeoutId: number | null = null;\n private isTriggerHovered = false;\n private isContentHovered = false;\n private isTriggerFocused = false;\n private isContentFocused = false;\n\n handleTriggerPointerEnter(): void {\n if (this.disabled()) {\n return;\n }\n\n this.isTriggerHovered = true;\n this.clearCloseTimeout();\n this.scheduleOpen();\n }\n\n handleTriggerPointerLeave(event: PointerEvent): void {\n this.isTriggerHovered = false;\n\n if (this.relatedTargetInsideContent(event.relatedTarget)) {\n return;\n }\n\n this.scheduleClose();\n }\n\n handleTriggerFocusIn(): void {\n if (this.disabled()) {\n return;\n }\n\n this.isTriggerFocused = true;\n this.clearCloseTimeout();\n this.scheduleOpen();\n }\n\n handleTriggerFocusOut(event: FocusEvent): void {\n this.isTriggerFocused = false;\n\n if (this.relatedTargetInsideContent(event.relatedTarget)) {\n return;\n }\n\n this.scheduleClose();\n }\n\n open(): void {\n if (this.isOpen() || this.disabled()) {\n return;\n }\n\n const side = this.side() ?? this.defaults?.side() ?? 'bottom';\n const align = this.align() ?? this.defaults?.align() ?? 'center';\n const sideOffset = this.sideOffset() ?? this.defaults?.sideOffset() ?? 8;\n\n const primary = positionFor(side, align, sideOffset);\n const fallback = positionFor(this.oppositeSide(side), align, sideOffset);\n\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.el)\n .withPositions([primary, fallback])\n .withPush(false)\n .withFlexibleDimensions(false);\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n hasBackdrop: false,\n panelClass: 'ui-hover-card-panel',\n });\n\n const portal = new TemplatePortal(this.uiHoverCardTrigger().template, this.vcr);\n this.overlayRef.attach(portal);\n this.bindOverlayInteractions();\n\n merge(\n this.overlayRef\n .outsidePointerEvents()\n .pipe(filter((event) => !this.el.nativeElement.contains(event.target as Node))),\n this.overlayRef.keydownEvents().pipe(filter((event) => event.key === 'Escape')),\n this.overlayRef.detachments(),\n )\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.close());\n\n this.isOpen.set(true);\n this.openedChange.emit(true);\n }\n\n close(): void {\n this.clearOpenTimeout();\n this.clearCloseTimeout();\n\n if (!this.isOpen()) {\n return;\n }\n\n this.overlayRef?.dispose();\n this.overlayRef = null;\n this.isContentHovered = false;\n this.isContentFocused = false;\n this.isOpen.set(false);\n this.openedChange.emit(false);\n }\n\n private bindOverlayInteractions(): void {\n const overlayElement = this.overlayRef?.overlayElement;\n\n if (!overlayElement) {\n return;\n }\n\n overlayElement.addEventListener('pointerenter', this.onContentPointerEnter);\n overlayElement.addEventListener('pointerleave', this.onContentPointerLeave);\n overlayElement.addEventListener('focusin', this.onContentFocusIn);\n overlayElement.addEventListener('focusout', this.onContentFocusOut);\n }\n\n private readonly onContentPointerEnter = (): void => {\n this.isContentHovered = true;\n this.clearCloseTimeout();\n };\n\n private readonly onContentPointerLeave = (event: PointerEvent): void => {\n this.isContentHovered = false;\n\n if (this.el.nativeElement.contains(event.relatedTarget as Node | null)) {\n return;\n }\n\n this.scheduleClose();\n };\n\n private readonly onContentFocusIn = (): void => {\n this.isContentFocused = true;\n this.clearCloseTimeout();\n };\n\n private readonly onContentFocusOut = (event: FocusEvent): void => {\n this.isContentFocused = false;\n\n if (this.el.nativeElement.contains(event.relatedTarget as Node | null)) {\n return;\n }\n\n this.scheduleClose();\n };\n\n private scheduleOpen(): void {\n this.clearCloseTimeout();\n\n if (this.isOpen()) {\n return;\n }\n\n this.clearOpenTimeout();\n this.openTimeoutId = window.setTimeout(\n () => {\n this.openTimeoutId = null;\n\n if (this.disabled() || (!this.isTriggerHovered && !this.isTriggerFocused)) {\n return;\n }\n\n this.open();\n },\n this.openDelay() ?? this.defaults?.openDelay() ?? 100,\n );\n }\n\n private scheduleClose(): void {\n this.clearOpenTimeout();\n\n if (!this.isOpen()) {\n return;\n }\n\n this.clearCloseTimeout();\n this.closeTimeoutId = window.setTimeout(\n () => {\n this.closeTimeoutId = null;\n\n if (this.isTriggerHovered || this.isContentHovered || this.isTriggerFocused || this.isContentFocused) {\n return;\n }\n\n this.close();\n },\n this.closeDelay() ?? this.defaults?.closeDelay() ?? 100,\n );\n }\n\n private clearOpenTimeout(): void {\n if (this.openTimeoutId !== null) {\n window.clearTimeout(this.openTimeoutId);\n this.openTimeoutId = null;\n }\n }\n\n private clearCloseTimeout(): void {\n if (this.closeTimeoutId !== null) {\n window.clearTimeout(this.closeTimeoutId);\n this.closeTimeoutId = null;\n }\n }\n\n private relatedTargetInsideContent(relatedTarget: EventTarget | null): boolean {\n return this.overlayRef?.overlayElement.contains(relatedTarget as Node | null) ?? false;\n }\n\n private oppositeSide(side: HoverCardSide): HoverCardSide {\n return side === 'top' ? 'bottom' : side === 'bottom' ? 'top' : side === 'left' ? 'right' : 'left';\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"edsis-ui-hover-card.mjs","sources":["../../../library/ui/hover-card/hover-card.component.ts","../../../library/ui/hover-card/hover-card-content.directive.ts","../../../library/ui/hover-card/hover-card-trigger.directive.ts","../../../library/ui/hover-card/edsis-ui-hover-card.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, InjectionToken, Signal, forwardRef, input } from '@angular/core';\n\nexport type HoverCardSide = 'top' | 'right' | 'bottom' | 'left';\nexport type HoverCardAlign = 'start' | 'center' | 'end';\n\nexport interface HoverCardDefaults {\n readonly side: Signal<HoverCardSide>;\n readonly align: Signal<HoverCardAlign>;\n readonly sideOffset: Signal<number>;\n readonly openDelay: Signal<number>;\n readonly closeDelay: Signal<number>;\n}\n\nexport const HOVER_CARD_DEFAULTS = new InjectionToken<HoverCardDefaults>('HOVER_CARD_DEFAULTS');\n\n@Component({\n selector: 'ui-hover-card',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: HOVER_CARD_DEFAULTS, useExisting: forwardRef(() => HoverCardComponent) }],\n host: {\n class: 'contents',\n },\n template: '<ng-content />',\n})\nexport class HoverCardComponent implements HoverCardDefaults {\n readonly side = input<HoverCardSide>('bottom');\n readonly align = input<HoverCardAlign>('center');\n readonly sideOffset = input(8);\n readonly openDelay = input(100);\n readonly closeDelay = input(100);\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n selector: 'ng-template[uiHoverCardContent]',\n exportAs: 'uiHoverCardContent',\n})\nexport class HoverCardContentDirective {\n readonly template = inject<TemplateRef<unknown>>(TemplateRef);\n}\n","import { Overlay, OverlayRef, ConnectedPosition } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { DestroyRef, Directive, ElementRef, ViewContainerRef, inject, input, output, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { merge } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { HOVER_CARD_DEFAULTS, type HoverCardAlign, type HoverCardSide } from './hover-card.component';\nimport type { HoverCardContentDirective } from './hover-card-content.directive';\n\nconst POSITION_ANCHORS: Record<HoverCardSide, (align: HoverCardAlign) => ConnectedPosition> = {\n top: (align) => ({\n originX: align === 'start' ? 'start' : align === 'end' ? 'end' : 'center',\n originY: 'top',\n overlayX: align === 'start' ? 'start' : align === 'end' ? 'end' : 'center',\n overlayY: 'bottom',\n }),\n bottom: (align) => ({\n originX: align === 'start' ? 'start' : align === 'end' ? 'end' : 'center',\n originY: 'bottom',\n overlayX: align === 'start' ? 'start' : align === 'end' ? 'end' : 'center',\n overlayY: 'top',\n }),\n left: (align) => ({\n originX: 'start',\n originY: align === 'start' ? 'top' : align === 'end' ? 'bottom' : 'center',\n overlayX: 'end',\n overlayY: align === 'start' ? 'top' : align === 'end' ? 'bottom' : 'center',\n }),\n right: (align) => ({\n originX: 'end',\n originY: align === 'start' ? 'top' : align === 'end' ? 'bottom' : 'center',\n overlayX: 'start',\n overlayY: align === 'start' ? 'top' : align === 'end' ? 'bottom' : 'center',\n }),\n};\n\nfunction positionFor(side: HoverCardSide, align: HoverCardAlign, sideOffset: number): ConnectedPosition {\n const anchor = POSITION_ANCHORS[side](align);\n\n if (side === 'top') {\n return { ...anchor, offsetY: -sideOffset };\n }\n\n if (side === 'bottom') {\n return { ...anchor, offsetY: sideOffset };\n }\n\n if (side === 'left') {\n return { ...anchor, offsetX: -sideOffset };\n }\n\n return { ...anchor, offsetX: sideOffset };\n}\n\n@Directive({\n selector: '[uiHoverCardTrigger]',\n exportAs: 'uiHoverCardTrigger',\n host: {\n '[attr.aria-expanded]': 'isOpen()',\n '[attr.aria-haspopup]': '\"dialog\"',\n '(pointerenter)': 'handleTriggerPointerEnter()',\n '(pointerleave)': 'handleTriggerPointerLeave($event)',\n '(focusin)': 'handleTriggerFocusIn()',\n '(focusout)': 'handleTriggerFocusOut($event)',\n '(keydown.escape)': 'close()',\n },\n})\nexport class HoverCardTriggerDirective {\n private readonly overlay = inject(Overlay);\n private readonly vcr = inject(ViewContainerRef);\n private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly defaults = inject(HOVER_CARD_DEFAULTS, { optional: true });\n\n readonly uiHoverCardTrigger = input.required<HoverCardContentDirective>();\n readonly side = input<HoverCardSide | undefined>(undefined);\n readonly align = input<HoverCardAlign | undefined>(undefined);\n readonly sideOffset = input<number | undefined>(undefined);\n readonly openDelay = input<number | undefined>(undefined);\n readonly closeDelay = input<number | undefined>(undefined);\n readonly disabled = input(false);\n\n readonly openedChange = output<boolean>();\n\n readonly isOpen = signal(false);\n\n private overlayRef: OverlayRef | null = null;\n private openTimeoutId: number | null = null;\n private closeTimeoutId: number | null = null;\n private isTriggerHovered = false;\n private isContentHovered = false;\n private isTriggerFocused = false;\n private isContentFocused = false;\n\n constructor() {\n this.destroyRef.onDestroy(() => {\n this.clearOpenTimeout();\n this.clearCloseTimeout();\n this.close(false);\n });\n }\n\n handleTriggerPointerEnter(): void {\n if (this.disabled()) {\n return;\n }\n\n this.isTriggerHovered = true;\n this.clearCloseTimeout();\n this.scheduleOpen();\n }\n\n handleTriggerPointerLeave(event: PointerEvent): void {\n this.isTriggerHovered = false;\n\n if (this.relatedTargetInsideContent(event.relatedTarget)) {\n return;\n }\n\n this.scheduleClose();\n }\n\n handleTriggerFocusIn(): void {\n if (this.disabled()) {\n return;\n }\n\n this.isTriggerFocused = true;\n this.clearCloseTimeout();\n this.scheduleOpen();\n }\n\n handleTriggerFocusOut(event: FocusEvent): void {\n this.isTriggerFocused = false;\n\n if (this.relatedTargetInsideContent(event.relatedTarget)) {\n return;\n }\n\n this.scheduleClose();\n }\n\n open(): void {\n if (this.isOpen() || this.disabled()) {\n return;\n }\n\n const side = this.side() ?? this.defaults?.side() ?? 'bottom';\n const align = this.align() ?? this.defaults?.align() ?? 'center';\n const sideOffset = this.sideOffset() ?? this.defaults?.sideOffset() ?? 8;\n\n const primary = positionFor(side, align, sideOffset);\n const fallback = positionFor(this.oppositeSide(side), align, sideOffset);\n\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.el)\n .withPositions([primary, fallback])\n .withPush(false)\n .withFlexibleDimensions(false);\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n hasBackdrop: false,\n panelClass: 'ui-hover-card-panel',\n });\n\n const portal = new TemplatePortal(this.uiHoverCardTrigger().template, this.vcr);\n this.overlayRef.attach(portal);\n this.bindOverlayInteractions();\n\n merge(\n this.overlayRef\n .outsidePointerEvents()\n .pipe(filter((event) => !this.el.nativeElement.contains(event.target as Node))),\n this.overlayRef.keydownEvents().pipe(filter((event) => event.key === 'Escape')),\n this.overlayRef.detachments(),\n )\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.close());\n\n this.isOpen.set(true);\n this.openedChange.emit(true);\n }\n\n close(emitOpenedChange = true): void {\n this.clearOpenTimeout();\n this.clearCloseTimeout();\n\n if (!this.isOpen()) {\n return;\n }\n\n const overlayRef = this.overlayRef;\n this.unbindOverlayInteractions();\n this.overlayRef = null;\n this.isContentHovered = false;\n this.isContentFocused = false;\n this.isOpen.set(false);\n overlayRef?.dispose();\n\n if (emitOpenedChange) {\n this.openedChange.emit(false);\n }\n }\n\n private bindOverlayInteractions(): void {\n const overlayElement = this.overlayRef?.overlayElement;\n\n if (!overlayElement) {\n return;\n }\n\n overlayElement.addEventListener('pointerenter', this.onContentPointerEnter);\n overlayElement.addEventListener('pointerleave', this.onContentPointerLeave);\n overlayElement.addEventListener('focusin', this.onContentFocusIn);\n overlayElement.addEventListener('focusout', this.onContentFocusOut);\n }\n\n private unbindOverlayInteractions(): void {\n const overlayElement = this.overlayRef?.overlayElement;\n\n if (!overlayElement) {\n return;\n }\n\n overlayElement.removeEventListener('pointerenter', this.onContentPointerEnter);\n overlayElement.removeEventListener('pointerleave', this.onContentPointerLeave);\n overlayElement.removeEventListener('focusin', this.onContentFocusIn);\n overlayElement.removeEventListener('focusout', this.onContentFocusOut);\n }\n\n private readonly onContentPointerEnter = (): void => {\n this.isContentHovered = true;\n this.clearCloseTimeout();\n };\n\n private readonly onContentPointerLeave = (event: PointerEvent): void => {\n this.isContentHovered = false;\n\n if (this.el.nativeElement.contains(event.relatedTarget as Node | null)) {\n return;\n }\n\n this.scheduleClose();\n };\n\n private readonly onContentFocusIn = (): void => {\n this.isContentFocused = true;\n this.clearCloseTimeout();\n };\n\n private readonly onContentFocusOut = (event: FocusEvent): void => {\n this.isContentFocused = false;\n\n if (this.el.nativeElement.contains(event.relatedTarget as Node | null)) {\n return;\n }\n\n this.scheduleClose();\n };\n\n private scheduleOpen(): void {\n this.clearCloseTimeout();\n\n if (this.isOpen()) {\n return;\n }\n\n this.clearOpenTimeout();\n this.openTimeoutId = window.setTimeout(\n () => {\n this.openTimeoutId = null;\n\n if (this.disabled() || (!this.isTriggerHovered && !this.isTriggerFocused)) {\n return;\n }\n\n this.open();\n },\n this.openDelay() ?? this.defaults?.openDelay() ?? 100,\n );\n }\n\n private scheduleClose(): void {\n this.clearOpenTimeout();\n\n if (!this.isOpen()) {\n return;\n }\n\n this.clearCloseTimeout();\n this.closeTimeoutId = window.setTimeout(\n () => {\n this.closeTimeoutId = null;\n\n if (this.isTriggerHovered || this.isContentHovered || this.isTriggerFocused || this.isContentFocused) {\n return;\n }\n\n this.close();\n },\n this.closeDelay() ?? this.defaults?.closeDelay() ?? 100,\n );\n }\n\n private clearOpenTimeout(): void {\n if (this.openTimeoutId !== null) {\n window.clearTimeout(this.openTimeoutId);\n this.openTimeoutId = null;\n }\n }\n\n private clearCloseTimeout(): void {\n if (this.closeTimeoutId !== null) {\n window.clearTimeout(this.closeTimeoutId);\n this.closeTimeoutId = null;\n }\n }\n\n private relatedTargetInsideContent(relatedTarget: EventTarget | null): boolean {\n return this.overlayRef?.overlayElement.contains(relatedTarget as Node | null) ?? false;\n }\n\n private oppositeSide(side: HoverCardSide): HoverCardSide {\n return side === 'top' ? 'bottom' : side === 'bottom' ? 'top' : side === 'left' ? 'right' : 'left';\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|