@frame-ui-ng/components 0.4.0-beta.0 → 0.4.2-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/calendar/src/styles/_vars.css +4 -0
- package/calendar/src/styles/calendar.css +29 -5
- package/confirm-popover/src/styles/confirm-popover.css +20 -0
- package/date-picker/src/styles/date-picker.css +27 -1
- package/drag-drop/src/styles/_vars.css +28 -0
- package/drag-drop/src/styles/drag-drop.css +132 -0
- package/fesm2022/frame-ui-ng-components-accordion.mjs +26 -21
- package/fesm2022/frame-ui-ng-components-accordion.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-alert.mjs +4 -0
- package/fesm2022/frame-ui-ng-components-alert.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-avatar.mjs +7 -0
- package/fesm2022/frame-ui-ng-components-avatar.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-badge.mjs +4 -0
- package/fesm2022/frame-ui-ng-components-badge.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-breadcrumb.mjs +13 -6
- package/fesm2022/frame-ui-ng-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-button-group.mjs +1 -0
- package/fesm2022/frame-ui-ng-components-button-group.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-button.mjs +5 -0
- package/fesm2022/frame-ui-ng-components-button.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-calendar.mjs +24 -1
- package/fesm2022/frame-ui-ng-components-calendar.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-card.mjs +15 -15
- package/fesm2022/frame-ui-ng-components-card.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-carousel.mjs +33 -16
- package/fesm2022/frame-ui-ng-components-carousel.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-checkbox.mjs +7 -9
- package/fesm2022/frame-ui-ng-components-checkbox.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-collapsible.mjs +24 -23
- package/fesm2022/frame-ui-ng-components-collapsible.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-combobox.mjs +66 -18
- package/fesm2022/frame-ui-ng-components-combobox.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-command.mjs +47 -16
- package/fesm2022/frame-ui-ng-components-command.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-confirm-modal.mjs +3 -0
- package/fesm2022/frame-ui-ng-components-confirm-modal.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-confirm-popover.mjs +423 -0
- package/fesm2022/frame-ui-ng-components-confirm-popover.mjs.map +1 -0
- package/fesm2022/frame-ui-ng-components-context-menu.mjs +71 -45
- package/fesm2022/frame-ui-ng-components-context-menu.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-date-picker.mjs +3 -0
- package/fesm2022/frame-ui-ng-components-date-picker.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-drag-drop.mjs +293 -0
- package/fesm2022/frame-ui-ng-components-drag-drop.mjs.map +1 -0
- package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs +73 -36
- package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-empty.mjs +6 -0
- package/fesm2022/frame-ui-ng-components-empty.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-field.mjs +21 -12
- package/fesm2022/frame-ui-ng-components-field.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-forms.mjs +1 -0
- package/fesm2022/frame-ui-ng-components-forms.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-hover-card.mjs +49 -43
- package/fesm2022/frame-ui-ng-components-hover-card.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-input-otp.mjs +5 -0
- package/fesm2022/frame-ui-ng-components-input-otp.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-input.mjs +13 -0
- package/fesm2022/frame-ui-ng-components-input.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-item.mjs +10 -0
- package/fesm2022/frame-ui-ng-components-item.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-menubar.mjs +15 -0
- package/fesm2022/frame-ui-ng-components-menubar.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-modal.mjs +167 -128
- package/fesm2022/frame-ui-ng-components-modal.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-navigation-menu.mjs +14 -0
- package/fesm2022/frame-ui-ng-components-navigation-menu.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-pagination.mjs +8 -0
- package/fesm2022/frame-ui-ng-components-pagination.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-popover.mjs +63 -51
- package/fesm2022/frame-ui-ng-components-popover.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-progress.mjs +2 -0
- package/fesm2022/frame-ui-ng-components-progress.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-radio-group.mjs +5 -0
- package/fesm2022/frame-ui-ng-components-radio-group.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-resizable.mjs +6 -0
- package/fesm2022/frame-ui-ng-components-resizable.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-select.mjs +62 -14
- package/fesm2022/frame-ui-ng-components-select.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-separator.mjs +1 -0
- package/fesm2022/frame-ui-ng-components-separator.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-sheet.mjs +99 -88
- package/fesm2022/frame-ui-ng-components-sheet.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-sidebar.mjs +27 -12
- package/fesm2022/frame-ui-ng-components-sidebar.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-skeleton.mjs +1 -0
- package/fesm2022/frame-ui-ng-components-skeleton.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-slider.mjs +29 -16
- package/fesm2022/frame-ui-ng-components-slider.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-spinner.mjs +1 -0
- package/fesm2022/frame-ui-ng-components-spinner.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-switch.mjs +6 -0
- package/fesm2022/frame-ui-ng-components-switch.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-table.mjs +76 -50
- package/fesm2022/frame-ui-ng-components-table.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-tabs.mjs +4 -0
- package/fesm2022/frame-ui-ng-components-tabs.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-textarea.mjs +1 -0
- package/fesm2022/frame-ui-ng-components-textarea.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-toast.mjs +2 -0
- package/fesm2022/frame-ui-ng-components-toast.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-toggle.mjs +23 -16
- package/fesm2022/frame-ui-ng-components-toggle.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-tooltip.mjs +30 -25
- package/fesm2022/frame-ui-ng-components-tooltip.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-utils.mjs +5 -1
- package/fesm2022/frame-ui-ng-components-utils.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs +26 -8
- package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components.mjs +1449 -571
- package/fesm2022/frame-ui-ng-components.mjs.map +1 -1
- package/package.json +10 -2
- package/popover/src/styles/popover.css +106 -101
- package/select/src/styles/select-content.css +27 -19
- package/src/styles/components.css +6 -4
- package/styles/components.css +6 -4
- package/styles.css +6 -4
- package/types/frame-ui-ng-components-accordion.d.ts +11 -4
- package/types/frame-ui-ng-components-alert.d.ts +4 -0
- package/types/frame-ui-ng-components-avatar.d.ts +7 -0
- package/types/frame-ui-ng-components-badge.d.ts +4 -0
- package/types/frame-ui-ng-components-breadcrumb.d.ts +7 -0
- package/types/frame-ui-ng-components-button-group.d.ts +1 -0
- package/types/frame-ui-ng-components-button.d.ts +5 -0
- package/types/frame-ui-ng-components-calendar.d.ts +2 -0
- package/types/frame-ui-ng-components-card.d.ts +8 -3
- package/types/frame-ui-ng-components-carousel.d.ts +11 -2
- package/types/frame-ui-ng-components-checkbox.d.ts +3 -2
- package/types/frame-ui-ng-components-collapsible.d.ts +9 -4
- package/types/frame-ui-ng-components-combobox.d.ts +32 -3
- package/types/frame-ui-ng-components-command.d.ts +26 -4
- package/types/frame-ui-ng-components-confirm-modal.d.ts +2 -0
- package/types/frame-ui-ng-components-confirm-popover.d.ts +87 -0
- package/types/frame-ui-ng-components-context-menu.d.ts +29 -10
- package/types/frame-ui-ng-components-date-picker.d.ts +1 -0
- package/types/frame-ui-ng-components-drag-drop.d.ts +103 -0
- package/types/frame-ui-ng-components-dropdown-menu.d.ts +32 -9
- package/types/frame-ui-ng-components-empty.d.ts +6 -0
- package/types/frame-ui-ng-components-field.d.ts +9 -0
- package/types/frame-ui-ng-components-forms.d.ts +1 -0
- package/types/frame-ui-ng-components-hover-card.d.ts +8 -2
- package/types/frame-ui-ng-components-input-otp.d.ts +4 -0
- package/types/frame-ui-ng-components-input.d.ts +13 -0
- package/types/frame-ui-ng-components-item.d.ts +10 -0
- package/types/frame-ui-ng-components-menubar.d.ts +15 -0
- package/types/frame-ui-ng-components-modal.d.ts +27 -4
- package/types/frame-ui-ng-components-navigation-menu.d.ts +14 -0
- package/types/frame-ui-ng-components-pagination.d.ts +8 -0
- package/types/frame-ui-ng-components-popover.d.ts +14 -2
- package/types/frame-ui-ng-components-progress.d.ts +2 -0
- package/types/frame-ui-ng-components-radio-group.d.ts +5 -0
- package/types/frame-ui-ng-components-resizable.d.ts +3 -0
- package/types/frame-ui-ng-components-select.d.ts +23 -2
- package/types/frame-ui-ng-components-separator.d.ts +1 -0
- package/types/frame-ui-ng-components-sheet.d.ts +11 -0
- package/types/frame-ui-ng-components-sidebar.d.ts +21 -0
- package/types/frame-ui-ng-components-skeleton.d.ts +1 -0
- package/types/frame-ui-ng-components-slider.d.ts +5 -2
- package/types/frame-ui-ng-components-spinner.d.ts +1 -0
- package/types/frame-ui-ng-components-switch.d.ts +6 -0
- package/types/frame-ui-ng-components-table.d.ts +26 -0
- package/types/frame-ui-ng-components-tabs.d.ts +4 -0
- package/types/frame-ui-ng-components-textarea.d.ts +1 -0
- package/types/frame-ui-ng-components-toast.d.ts +2 -0
- package/types/frame-ui-ng-components-toggle.d.ts +8 -2
- package/types/frame-ui-ng-components-tooltip.d.ts +6 -2
- package/types/frame-ui-ng-components-utils.d.ts +3 -1
- package/types/frame-ui-ng-components-virtual-scroll.d.ts +11 -2
- package/types/frame-ui-ng-components.d.ts +507 -80
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frame-ui-ng-components-empty.mjs","sources":["../../../projects/components/empty/src/empty.ts","../../../projects/components/empty/empty.module.ts","../../../projects/components/empty/frame-ui-ng-components-empty.ts"],"sourcesContent":["import { Directive, input } from '@angular/core';\n\nexport const FR_EMPTY_MEDIA_VARIANTS = ['default', 'icon'] as const;\nexport const FR_EMPTY_ORIENTATIONS = ['vertical', 'horizontal'] as const;\nexport const FR_EMPTY_VARIANTS = ['default', 'outline', 'soft'] as const;\n\nexport type FrEmptyMediaVariant = (typeof FR_EMPTY_MEDIA_VARIANTS)[number];\nexport type FrEmptyOrientation = (typeof FR_EMPTY_ORIENTATIONS)[number];\nexport type FrEmptyVariant = (typeof FR_EMPTY_VARIANTS)[number];\n\n@Directive({\n selector: '[frEmpty], frame-empty',\n host: {\n class: 'frame-empty',\n '[attr.data-orientation]': 'orientation()',\n '[attr.data-variant]': 'variant()',\n },\n})\nexport class FrEmpty {\n readonly orientation = input<FrEmptyOrientation>('vertical');\n readonly variant = input<FrEmptyVariant>('default');\n}\n\n@Directive({\n selector: '[frEmptyHeader], frame-empty-header',\n host: {\n class: 'frame-empty__header',\n },\n})\nexport class FrEmptyHeader {}\n\n@Directive({\n selector: '[frEmptyMedia], frame-empty-media',\n host: {\n class: 'frame-empty__media',\n '[attr.data-variant]': 'variant()',\n },\n})\nexport class FrEmptyMedia {\n readonly variant = input<FrEmptyMediaVariant>('default');\n}\n\n@Directive({\n selector: '[frEmptyTitle], frame-empty-title',\n host: {\n class: 'frame-empty__title',\n },\n})\nexport class FrEmptyTitle {}\n\n@Directive({\n selector: '[frEmptyDescription], frame-empty-description',\n host: {\n class: 'frame-empty__description',\n },\n})\nexport class FrEmptyDescription {}\n\n@Directive({\n selector: '[frEmptyContent], frame-empty-content',\n host: {\n class: 'frame-empty__content',\n },\n})\nexport class FrEmptyContent {}\n","import { NgModule } from '@angular/core';\nimport {\n FrEmpty,\n FrEmptyContent,\n FrEmptyDescription,\n FrEmptyHeader,\n FrEmptyMedia,\n FrEmptyTitle,\n} from './src/empty';\n\n@NgModule({\n imports: [\n FrEmpty,\n FrEmptyContent,\n FrEmptyDescription,\n FrEmptyHeader,\n FrEmptyMedia,\n FrEmptyTitle,\n ],\n exports: [\n FrEmpty,\n FrEmptyContent,\n FrEmptyDescription,\n FrEmptyHeader,\n FrEmptyMedia,\n FrEmptyTitle,\n ],\n})\nexport class FrEmptyModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAEa,uBAAuB,GAAG,CAAC,SAAS,EAAE,MAAM;MAC5C,qBAAqB,GAAG,CAAC,UAAU,EAAE,YAAY;AACvD,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"frame-ui-ng-components-empty.mjs","sources":["../../../projects/components/empty/src/empty.ts","../../../projects/components/empty/empty.module.ts","../../../projects/components/empty/frame-ui-ng-components-empty.ts"],"sourcesContent":["import { Directive, input } from '@angular/core';\r\n\r\nexport const FR_EMPTY_MEDIA_VARIANTS = ['default', 'icon'] as const;\r\nexport const FR_EMPTY_ORIENTATIONS = ['vertical', 'horizontal'] as const;\r\nexport const FR_EMPTY_VARIANTS = ['default', 'outline', 'soft'] as const;\r\n\r\nexport type FrEmptyMediaVariant = (typeof FR_EMPTY_MEDIA_VARIANTS)[number];\r\nexport type FrEmptyOrientation = (typeof FR_EMPTY_ORIENTATIONS)[number];\r\nexport type FrEmptyVariant = (typeof FR_EMPTY_VARIANTS)[number];\r\n\r\n/** Empty-state container with orientation and variant controls. */\r\n@Directive({\r\n selector: '[frEmpty], frame-empty',\r\n host: {\r\n class: 'frame-empty',\r\n '[attr.data-orientation]': 'orientation()',\r\n '[attr.data-variant]': 'variant()',\r\n },\r\n})\r\nexport class FrEmpty {\r\n readonly orientation = input<FrEmptyOrientation>('vertical');\r\n readonly variant = input<FrEmptyVariant>('default');\r\n}\r\n\r\n/** Header slot for empty. */\r\n@Directive({\r\n selector: '[frEmptyHeader], frame-empty-header',\r\n host: {\r\n class: 'frame-empty__header',\r\n },\r\n})\r\nexport class FrEmptyHeader {}\r\n\r\n/** Media slot for empty. */\r\n@Directive({\r\n selector: '[frEmptyMedia], frame-empty-media',\r\n host: {\r\n class: 'frame-empty__media',\r\n '[attr.data-variant]': 'variant()',\r\n },\r\n})\r\nexport class FrEmptyMedia {\r\n readonly variant = input<FrEmptyMediaVariant>('default');\r\n}\r\n\r\n/** Title slot for empty. */\r\n@Directive({\r\n selector: '[frEmptyTitle], frame-empty-title',\r\n host: {\r\n class: 'frame-empty__title',\r\n },\r\n})\r\nexport class FrEmptyTitle {}\r\n\r\n/** Description slot for empty. */\r\n@Directive({\r\n selector: '[frEmptyDescription], frame-empty-description',\r\n host: {\r\n class: 'frame-empty__description',\r\n },\r\n})\r\nexport class FrEmptyDescription {}\r\n\r\n/** Content slot for empty. */\r\n@Directive({\r\n selector: '[frEmptyContent], frame-empty-content',\r\n host: {\r\n class: 'frame-empty__content',\r\n },\r\n})\r\nexport class FrEmptyContent {}\r\n\r\n","import { NgModule } from '@angular/core';\nimport {\n FrEmpty,\n FrEmptyContent,\n FrEmptyDescription,\n FrEmptyHeader,\n FrEmptyMedia,\n FrEmptyTitle,\n} from './src/empty';\n\n@NgModule({\n imports: [\n FrEmpty,\n FrEmptyContent,\n FrEmptyDescription,\n FrEmptyHeader,\n FrEmptyMedia,\n FrEmptyTitle,\n ],\n exports: [\n FrEmpty,\n FrEmptyContent,\n FrEmptyDescription,\n FrEmptyHeader,\n FrEmptyMedia,\n FrEmptyTitle,\n ],\n})\nexport class FrEmptyModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { Directive, input, booleanAttribute, Component, NgModule } from '@angula
|
|
|
3
3
|
|
|
4
4
|
const FR_FIELD_LEGEND_VARIANTS = ['legend', 'label'];
|
|
5
5
|
const FR_FIELD_ORIENTATIONS = ['vertical', 'horizontal'];
|
|
6
|
+
/** Fieldset wrapper for related form fields. */
|
|
6
7
|
class FrFieldSet {
|
|
7
8
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrFieldSet, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
8
9
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrFieldSet, isStandalone: true, selector: "fieldset[frFieldSet], frame-field-set", host: { classAttribute: "frame-field-set" }, ngImport: i0 });
|
|
@@ -16,6 +17,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
16
17
|
},
|
|
17
18
|
}]
|
|
18
19
|
}] });
|
|
20
|
+
/** Legend slot for field. */
|
|
19
21
|
class FrFieldLegend {
|
|
20
22
|
variant = input('legend', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
21
23
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrFieldLegend, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -31,6 +33,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
31
33
|
},
|
|
32
34
|
}]
|
|
33
35
|
}], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
|
|
36
|
+
/** Group slot for field. */
|
|
34
37
|
class FrFieldGroup {
|
|
35
38
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrFieldGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
36
39
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrFieldGroup, isStandalone: true, selector: "[frFieldGroup], frame-field-group", host: { classAttribute: "frame-field-group" }, ngImport: i0 });
|
|
@@ -44,6 +47,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
44
47
|
},
|
|
45
48
|
}]
|
|
46
49
|
}] });
|
|
50
|
+
/** Form field row with orientation and responsive layout. */
|
|
47
51
|
class FrField {
|
|
48
52
|
orientation = input('vertical', ...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
|
|
49
53
|
disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
@@ -64,6 +68,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
64
68
|
},
|
|
65
69
|
}]
|
|
66
70
|
}], propDecorators: { orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }] } });
|
|
71
|
+
/** Content slot for field. */
|
|
67
72
|
class FrFieldContent {
|
|
68
73
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrFieldContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
69
74
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrFieldContent, isStandalone: true, selector: "[frFieldContent], frame-field-content", host: { classAttribute: "frame-field-content" }, ngImport: i0 });
|
|
@@ -77,6 +82,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
77
82
|
},
|
|
78
83
|
}]
|
|
79
84
|
}] });
|
|
85
|
+
/** Label slot for field. */
|
|
80
86
|
class FrFieldLabel {
|
|
81
87
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrFieldLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
82
88
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrFieldLabel, isStandalone: true, selector: "[frFieldLabel], frame-field-label", host: { classAttribute: "frame-field-label" }, ngImport: i0 });
|
|
@@ -90,6 +96,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
90
96
|
},
|
|
91
97
|
}]
|
|
92
98
|
}] });
|
|
99
|
+
/** Description slot for field. */
|
|
93
100
|
class FrFieldDescription {
|
|
94
101
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrFieldDescription, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
95
102
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrFieldDescription, isStandalone: true, selector: "[frFieldDescription], frame-field-description", host: { classAttribute: "frame-field-description" }, ngImport: i0 });
|
|
@@ -103,6 +110,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
103
110
|
},
|
|
104
111
|
}]
|
|
105
112
|
}] });
|
|
113
|
+
/** Separator slot for field. */
|
|
106
114
|
class FrFieldSeparator {
|
|
107
115
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrFieldSeparator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
108
116
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrFieldSeparator, isStandalone: true, selector: "[frFieldSeparator], frame-field-separator", host: { attributes: { "role": "separator" }, classAttribute: "frame-field-separator" }, ngImport: i0 });
|
|
@@ -117,6 +125,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
117
125
|
},
|
|
118
126
|
}]
|
|
119
127
|
}] });
|
|
128
|
+
/** Error slot for field. */
|
|
120
129
|
class FrFieldError {
|
|
121
130
|
errors = input(undefined, ...(ngDevMode ? [{ debugName: "errors" }] : /* istanbul ignore next */ []));
|
|
122
131
|
message() {
|
|
@@ -127,12 +136,12 @@ class FrFieldError {
|
|
|
127
136
|
return error?.message ?? '';
|
|
128
137
|
}
|
|
129
138
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrFieldError, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
130
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrFieldError, isStandalone: true, selector: "[frFieldError], frame-field-error", inputs: { errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "aria-live": "polite" }, classAttribute: "frame-field-error" }, ngImport: i0, template: `
|
|
131
|
-
@if (message()) {
|
|
132
|
-
<span>{{ message() }}</span>
|
|
133
|
-
} @else {
|
|
134
|
-
<ng-content />
|
|
135
|
-
}
|
|
139
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrFieldError, isStandalone: true, selector: "[frFieldError], frame-field-error", inputs: { errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "aria-live": "polite" }, classAttribute: "frame-field-error" }, ngImport: i0, template: `
|
|
140
|
+
@if (message()) {
|
|
141
|
+
<span>{{ message() }}</span>
|
|
142
|
+
} @else {
|
|
143
|
+
<ng-content />
|
|
144
|
+
}
|
|
136
145
|
`, isInline: true });
|
|
137
146
|
}
|
|
138
147
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrFieldError, decorators: [{
|
|
@@ -143,12 +152,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
143
152
|
class: 'frame-field-error',
|
|
144
153
|
'aria-live': 'polite',
|
|
145
154
|
},
|
|
146
|
-
template: `
|
|
147
|
-
@if (message()) {
|
|
148
|
-
<span>{{ message() }}</span>
|
|
149
|
-
} @else {
|
|
150
|
-
<ng-content />
|
|
151
|
-
}
|
|
155
|
+
template: `
|
|
156
|
+
@if (message()) {
|
|
157
|
+
<span>{{ message() }}</span>
|
|
158
|
+
} @else {
|
|
159
|
+
<ng-content />
|
|
160
|
+
}
|
|
152
161
|
`,
|
|
153
162
|
}]
|
|
154
163
|
}], propDecorators: { errors: [{ type: i0.Input, args: [{ isSignal: true, alias: "errors", required: false }] }] } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frame-ui-ng-components-field.mjs","sources":["../../../projects/components/field/src/field.ts","../../../projects/components/field/field.module.ts","../../../projects/components/field/frame-ui-ng-components-field.ts"],"sourcesContent":["import { Component, Directive, booleanAttribute, input } from '@angular/core';\n\nexport const FR_FIELD_LEGEND_VARIANTS = ['legend', 'label'] as const;\nexport const FR_FIELD_ORIENTATIONS = ['vertical', 'horizontal'] as const;\n\nexport type FrFieldLegendVariant = (typeof FR_FIELD_LEGEND_VARIANTS)[number];\nexport type FrFieldOrientation = (typeof FR_FIELD_ORIENTATIONS)[number];\nexport type FrFieldErrorLike = string | { message?: string | null } | null | undefined;\n\n@Directive({\n selector: 'fieldset[frFieldSet], frame-field-set',\n host: {\n class: 'frame-field-set',\n },\n})\nexport class FrFieldSet {}\n\n@Directive({\n selector: 'legend[frFieldLegend], frame-field-legend',\n host: {\n class: 'frame-field-legend',\n '[attr.data-variant]': 'variant()',\n },\n})\nexport class FrFieldLegend {\n readonly variant = input<FrFieldLegendVariant>('legend');\n}\n\n@Directive({\n selector: '[frFieldGroup], frame-field-group',\n host: {\n class: 'frame-field-group',\n },\n})\nexport class FrFieldGroup {}\n\n@Directive({\n selector: '[frField], frame-field',\n host: {\n class: 'frame-field',\n '[attr.data-orientation]': 'orientation() === \"horizontal\" ? orientation() : null',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.data-invalid]': 'invalid() ? \"\" : null',\n role: 'group',\n },\n})\nexport class FrField {\n readonly orientation = input<FrFieldOrientation>('vertical');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n}\n\n@Directive({\n selector: '[frFieldContent], frame-field-content',\n host: {\n class: 'frame-field-content',\n },\n})\nexport class FrFieldContent {}\n\n@Directive({\n selector: '[frFieldLabel], frame-field-label',\n host: {\n class: 'frame-field-label',\n },\n})\nexport class FrFieldLabel {}\n\n@Directive({\n selector: '[frFieldDescription], frame-field-description',\n host: {\n class: 'frame-field-description',\n },\n})\nexport class FrFieldDescription {}\n\n@Directive({\n selector: '[frFieldSeparator], frame-field-separator',\n host: {\n class: 'frame-field-separator',\n role: 'separator',\n },\n})\nexport class FrFieldSeparator {}\n\n@Component({\n selector: '[frFieldError], frame-field-error',\n host: {\n class: 'frame-field-error',\n 'aria-live': 'polite',\n },\n template: `\n @if (message()) {\n <span>{{ message() }}</span>\n } @else {\n <ng-content />\n }\n `,\n})\nexport class FrFieldError {\n readonly errors = input<FrFieldErrorLike>(undefined);\n\n message(): string {\n const error = this.errors();\n\n if (typeof error === 'string') {\n return error;\n }\n\n return error?.message ?? '';\n }\n}\n","import { NgModule } from '@angular/core';\nimport {\n FrField,\n FrFieldContent,\n FrFieldDescription,\n FrFieldError,\n FrFieldGroup,\n FrFieldLabel,\n FrFieldLegend,\n FrFieldSeparator,\n FrFieldSet,\n} from './src/field';\n\n@NgModule({\n imports: [\n FrField,\n FrFieldContent,\n FrFieldDescription,\n FrFieldError,\n FrFieldGroup,\n FrFieldLabel,\n FrFieldLegend,\n FrFieldSeparator,\n FrFieldSet,\n ],\n exports: [\n FrField,\n FrFieldContent,\n FrFieldDescription,\n FrFieldError,\n FrFieldGroup,\n FrFieldLabel,\n FrFieldLegend,\n FrFieldSeparator,\n FrFieldSet,\n ],\n})\nexport class FrFieldModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"frame-ui-ng-components-field.mjs","sources":["../../../projects/components/field/src/field.ts","../../../projects/components/field/field.module.ts","../../../projects/components/field/frame-ui-ng-components-field.ts"],"sourcesContent":["import { Component, Directive, booleanAttribute, input } from '@angular/core';\r\n\r\nexport const FR_FIELD_LEGEND_VARIANTS = ['legend', 'label'] as const;\r\nexport const FR_FIELD_ORIENTATIONS = ['vertical', 'horizontal'] as const;\r\n\r\nexport type FrFieldLegendVariant = (typeof FR_FIELD_LEGEND_VARIANTS)[number];\r\nexport type FrFieldOrientation = (typeof FR_FIELD_ORIENTATIONS)[number];\r\nexport type FrFieldErrorLike = string | { message?: string | null } | null | undefined;\r\n\r\n/** Fieldset wrapper for related form fields. */\r\n@Directive({\r\n selector: 'fieldset[frFieldSet], frame-field-set',\r\n host: {\r\n class: 'frame-field-set',\r\n },\r\n})\r\nexport class FrFieldSet {}\r\n\r\n/** Legend slot for field. */\r\n@Directive({\r\n selector: 'legend[frFieldLegend], frame-field-legend',\r\n host: {\r\n class: 'frame-field-legend',\r\n '[attr.data-variant]': 'variant()',\r\n },\r\n})\r\nexport class FrFieldLegend {\r\n readonly variant = input<FrFieldLegendVariant>('legend');\r\n}\r\n\r\n/** Group slot for field. */\r\n@Directive({\r\n selector: '[frFieldGroup], frame-field-group',\r\n host: {\r\n class: 'frame-field-group',\r\n },\r\n})\r\nexport class FrFieldGroup {}\r\n\r\n/** Form field row with orientation and responsive layout. */\r\n@Directive({\r\n selector: '[frField], frame-field',\r\n host: {\r\n class: 'frame-field',\r\n '[attr.data-orientation]': 'orientation() === \"horizontal\" ? orientation() : null',\r\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\r\n '[attr.data-invalid]': 'invalid() ? \"\" : null',\r\n role: 'group',\r\n },\r\n})\r\nexport class FrField {\r\n readonly orientation = input<FrFieldOrientation>('vertical');\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n readonly invalid = input(false, { transform: booleanAttribute });\r\n}\r\n\r\n/** Content slot for field. */\r\n@Directive({\r\n selector: '[frFieldContent], frame-field-content',\r\n host: {\r\n class: 'frame-field-content',\r\n },\r\n})\r\nexport class FrFieldContent {}\r\n\r\n/** Label slot for field. */\r\n@Directive({\r\n selector: '[frFieldLabel], frame-field-label',\r\n host: {\r\n class: 'frame-field-label',\r\n },\r\n})\r\nexport class FrFieldLabel {}\r\n\r\n/** Description slot for field. */\r\n@Directive({\r\n selector: '[frFieldDescription], frame-field-description',\r\n host: {\r\n class: 'frame-field-description',\r\n },\r\n})\r\nexport class FrFieldDescription {}\r\n\r\n/** Separator slot for field. */\r\n@Directive({\r\n selector: '[frFieldSeparator], frame-field-separator',\r\n host: {\r\n class: 'frame-field-separator',\r\n role: 'separator',\r\n },\r\n})\r\nexport class FrFieldSeparator {}\r\n\r\n/** Error slot for field. */\r\n@Component({\r\n selector: '[frFieldError], frame-field-error',\r\n host: {\r\n class: 'frame-field-error',\r\n 'aria-live': 'polite',\r\n },\r\n template: `\r\n @if (message()) {\r\n <span>{{ message() }}</span>\r\n } @else {\r\n <ng-content />\r\n }\r\n `,\r\n})\r\nexport class FrFieldError {\r\n readonly errors = input<FrFieldErrorLike>(undefined);\r\n\r\n message(): string {\r\n const error = this.errors();\r\n\r\n if (typeof error === 'string') {\r\n return error;\r\n }\r\n\r\n return error?.message ?? '';\r\n }\r\n}\r\n\r\n","import { NgModule } from '@angular/core';\nimport {\n FrField,\n FrFieldContent,\n FrFieldDescription,\n FrFieldError,\n FrFieldGroup,\n FrFieldLabel,\n FrFieldLegend,\n FrFieldSeparator,\n FrFieldSet,\n} from './src/field';\n\n@NgModule({\n imports: [\n FrField,\n FrFieldContent,\n FrFieldDescription,\n FrFieldError,\n FrFieldGroup,\n FrFieldLabel,\n FrFieldLegend,\n FrFieldSeparator,\n FrFieldSet,\n ],\n exports: [\n FrField,\n FrFieldContent,\n FrFieldDescription,\n FrFieldError,\n FrFieldGroup,\n FrFieldLabel,\n FrFieldLegend,\n FrFieldSeparator,\n FrFieldSet,\n ],\n})\nexport class FrFieldModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frame-ui-ng-components-forms.mjs","sources":["../../../projects/components/forms/src/control-value-accessor.ts","../../../projects/components/forms/forms.module.ts","../../../projects/components/forms/frame-ui-ng-components-forms.ts"],"sourcesContent":["import {\n DestroyRef,\n Directive,\n Injector,\n OnInit,\n Type,\n computed,\n forwardRef,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\n\nexport function provideDsValueAccessor(type: Type<ControlValueAccessor>) {\n return {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => type),\n multi: true,\n };\n}\n\n@Directive()\nexport abstract class FrControlValueAccessor<T> implements ControlValueAccessor, OnInit {\n private readonly injector = inject(Injector);\n private readonly FrControlDestroyRef = inject(DestroyRef);\n private readonly disabledFromForms = signal(false);\n private readonly controlStateVersion = signal(0);\n protected ngControl: NgControl | null = null;\n private onChange: (value: T) => void = () => {};\n private onTouched: () => void = () => {};\n\n protected readonly formDisabled = computed(() => this.disabledFromForms());\n protected readonly formInvalid = computed(() => {\n this.controlStateVersion();\n\n if (!this.ngControl) {\n return false;\n }\n\n return this.ngControl.invalid && (this.ngControl.touched || this.ngControl.dirty);\n });\n\n ngOnInit(): void {\n this.ngControl = this.injector.get(NgControl, null);\n\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n this.ngControl.statusChanges?.pipe(takeUntilDestroyed(this.FrControlDestroyRef)).subscribe(() => {\n this.refreshControlState();\n });\n this.ngControl.valueChanges?.pipe(takeUntilDestroyed(this.FrControlDestroyRef)).subscribe(() => {\n this.refreshControlState();\n });\n this.refreshControlState();\n }\n }\n\n writeValue(value: T): void {\n this.setViewValue(value);\n }\n\n registerOnChange(fn: (value: T) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabledFromForms.set(isDisabled);\n }\n\n protected notifyValueChange(value: T): void {\n this.onChange(value);\n }\n\n protected markAsTouched(): void {\n this.onTouched();\n this.refreshControlState();\n }\n\n protected abstract setViewValue(value: T): void;\n\n private refreshControlState(): void {\n this.controlStateVersion.update((version) => version + 1);\n }\n}\n","import { NgModule } from '@angular/core';\nimport {\n\n} from './src/forms';\n\n@NgModule({\n imports: [\n\n ],\n exports: [\n\n ],\n})\nexport class FrFormsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;AAcM,SAAU,sBAAsB,CAAC,IAAgC,EAAA;IACrE,OAAO;AACL,QAAA,OAAO,EAAE,iBAAiB;AAC1B,QAAA,WAAW,EAAE,UAAU,CAAC,MAAM,IAAI,CAAC;AACnC,QAAA,KAAK,EAAE,IAAI;KACZ;AACH;
|
|
1
|
+
{"version":3,"file":"frame-ui-ng-components-forms.mjs","sources":["../../../projects/components/forms/src/control-value-accessor.ts","../../../projects/components/forms/forms.module.ts","../../../projects/components/forms/frame-ui-ng-components-forms.ts"],"sourcesContent":["import {\r\n DestroyRef,\r\n Directive,\r\n Injector,\r\n OnInit,\r\n Type,\r\n computed,\r\n forwardRef,\r\n inject,\r\n signal,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\r\n\r\nexport function provideDsValueAccessor(type: Type<ControlValueAccessor>) {\r\n return {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => type),\r\n multi: true,\r\n };\r\n}\r\n\r\n/** Base ControlValueAccessor implementation for FrameUI form controls. */\r\n@Directive()\r\nexport abstract class FrControlValueAccessor<T> implements ControlValueAccessor, OnInit {\r\n private readonly injector = inject(Injector);\r\n private readonly FrControlDestroyRef = inject(DestroyRef);\r\n private readonly disabledFromForms = signal(false);\r\n private readonly controlStateVersion = signal(0);\r\n protected ngControl: NgControl | null = null;\r\n private onChange: (value: T) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n protected readonly formDisabled = computed(() => this.disabledFromForms());\r\n protected readonly formInvalid = computed(() => {\r\n this.controlStateVersion();\r\n\r\n if (!this.ngControl) {\r\n return false;\r\n }\r\n\r\n return this.ngControl.invalid && (this.ngControl.touched || this.ngControl.dirty);\r\n });\r\n\r\n ngOnInit(): void {\r\n this.ngControl = this.injector.get(NgControl, null);\r\n\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n this.ngControl.statusChanges?.pipe(takeUntilDestroyed(this.FrControlDestroyRef)).subscribe(() => {\r\n this.refreshControlState();\r\n });\r\n this.ngControl.valueChanges?.pipe(takeUntilDestroyed(this.FrControlDestroyRef)).subscribe(() => {\r\n this.refreshControlState();\r\n });\r\n this.refreshControlState();\r\n }\r\n }\r\n\r\n writeValue(value: T): void {\r\n this.setViewValue(value);\r\n }\r\n\r\n registerOnChange(fn: (value: T) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabledFromForms.set(isDisabled);\r\n }\r\n\r\n protected notifyValueChange(value: T): void {\r\n this.onChange(value);\r\n }\r\n\r\n protected markAsTouched(): void {\r\n this.onTouched();\r\n this.refreshControlState();\r\n }\r\n\r\n protected abstract setViewValue(value: T): void;\r\n\r\n private refreshControlState(): void {\r\n this.controlStateVersion.update((version) => version + 1);\r\n }\r\n}\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport {\r\n\r\n} from './src/forms';\r\n\r\n@NgModule({\r\n imports: [\r\n\r\n ],\r\n exports: [\r\n\r\n ],\r\n})\r\nexport class FrFormsModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, inject, TemplateRef, input, booleanAttribute, Directive, output, signal, computed, afterNextRender, ChangeDetectionStrategy, Component, ElementRef,
|
|
2
|
+
import { InjectionToken, inject, TemplateRef, input, booleanAttribute, Directive, output, signal, computed, afterNextRender, ChangeDetectionStrategy, Component, ElementRef, NgModule } from '@angular/core';
|
|
3
3
|
import { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';
|
|
4
4
|
import { NgTemplateOutlet } from '@angular/common';
|
|
5
5
|
|
|
@@ -70,6 +70,7 @@ function oppositeSide(side) {
|
|
|
70
70
|
|
|
71
71
|
const FR_HOVER_CARD_CONTROLLER = new InjectionToken('FrHoverCardController');
|
|
72
72
|
|
|
73
|
+
/** Content slot for hover card. */
|
|
73
74
|
class FrHoverCardContent {
|
|
74
75
|
templateRef = inject((TemplateRef));
|
|
75
76
|
align = input('center', ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
|
|
@@ -95,6 +96,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
95
96
|
exportAs: 'frHoverCardContent',
|
|
96
97
|
}]
|
|
97
98
|
}], propDecorators: { align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], alignOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "alignOffset", required: false }] }], debugVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "debugVisible", required: false }] }], side: [{ type: i0.Input, args: [{ isSignal: true, alias: "side", required: false }] }], sideOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "sideOffset", required: false }] }] } });
|
|
99
|
+
/** Panel slot for hover card. */
|
|
98
100
|
class FrHoverCardPanel {
|
|
99
101
|
content = inject(FrHoverCardContent);
|
|
100
102
|
root = inject(FR_HOVER_CARD_CONTROLLER);
|
|
@@ -126,6 +128,7 @@ const DEFAULT_POSITIONS = buildHoverCardPositions({
|
|
|
126
128
|
side: 'bottom',
|
|
127
129
|
sideOffset: 8,
|
|
128
130
|
});
|
|
131
|
+
/** Root controller for hover card. */
|
|
129
132
|
class FrHoverCardRoot {
|
|
130
133
|
openDelay = input(700, ...(ngDevMode ? [{ debugName: "openDelay" }] : /* istanbul ignore next */ []));
|
|
131
134
|
closeDelay = input(300, ...(ngDevMode ? [{ debugName: "closeDelay" }] : /* istanbul ignore next */ []));
|
|
@@ -259,24 +262,24 @@ class FrHoverCardRoot {
|
|
|
259
262
|
provide: FR_HOVER_CARD_CONTROLLER,
|
|
260
263
|
useExisting: FrHoverCardRoot,
|
|
261
264
|
},
|
|
262
|
-
], exportAs: ["frHoverCard"], ngImport: i0, template: `
|
|
263
|
-
<span cdkOverlayOrigin #origin="cdkOverlayOrigin" class="frame-hover-card__anchor">
|
|
264
|
-
<ng-content />
|
|
265
|
-
</span>
|
|
266
|
-
|
|
267
|
-
<ng-template
|
|
268
|
-
cdkConnectedOverlay
|
|
269
|
-
[cdkConnectedOverlayOrigin]="origin"
|
|
270
|
-
[cdkConnectedOverlayOpen]="isOpen()"
|
|
271
|
-
[cdkConnectedOverlayPositions]="positions()"
|
|
272
|
-
[cdkConnectedOverlayPanelClass]="overlayPanelClasses()"
|
|
273
|
-
[cdkConnectedOverlayPush]="true"
|
|
274
|
-
[cdkConnectedOverlayViewportMargin]="12"
|
|
275
|
-
(detach)="close()"
|
|
276
|
-
(positionChange)="handlePositionChange($event)"
|
|
277
|
-
>
|
|
278
|
-
<ng-container [ngTemplateOutlet]="content()?.templateRef ?? null" />
|
|
279
|
-
</ng-template>
|
|
265
|
+
], exportAs: ["frHoverCard"], ngImport: i0, template: `
|
|
266
|
+
<span cdkOverlayOrigin #origin="cdkOverlayOrigin" class="frame-hover-card__anchor">
|
|
267
|
+
<ng-content />
|
|
268
|
+
</span>
|
|
269
|
+
|
|
270
|
+
<ng-template
|
|
271
|
+
cdkConnectedOverlay
|
|
272
|
+
[cdkConnectedOverlayOrigin]="origin"
|
|
273
|
+
[cdkConnectedOverlayOpen]="isOpen()"
|
|
274
|
+
[cdkConnectedOverlayPositions]="positions()"
|
|
275
|
+
[cdkConnectedOverlayPanelClass]="overlayPanelClasses()"
|
|
276
|
+
[cdkConnectedOverlayPush]="true"
|
|
277
|
+
[cdkConnectedOverlayViewportMargin]="12"
|
|
278
|
+
(detach)="close()"
|
|
279
|
+
(positionChange)="handlePositionChange($event)"
|
|
280
|
+
>
|
|
281
|
+
<ng-container [ngTemplateOutlet]="content()?.templateRef ?? null" />
|
|
282
|
+
</ng-template>
|
|
280
283
|
`, isInline: true, dependencies: [{ kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation", "cdkConnectedOverlayUsePopover", "cdkConnectedOverlayMatchWidth", "cdkConnectedOverlay"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
281
284
|
}
|
|
282
285
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrHoverCardRoot, decorators: [{
|
|
@@ -296,40 +299,43 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
296
299
|
class: 'frame-hover-card',
|
|
297
300
|
'[attr.data-state]': 'isOpen() ? "open" : "closed"',
|
|
298
301
|
},
|
|
299
|
-
template: `
|
|
300
|
-
<span cdkOverlayOrigin #origin="cdkOverlayOrigin" class="frame-hover-card__anchor">
|
|
301
|
-
<ng-content />
|
|
302
|
-
</span>
|
|
303
|
-
|
|
304
|
-
<ng-template
|
|
305
|
-
cdkConnectedOverlay
|
|
306
|
-
[cdkConnectedOverlayOrigin]="origin"
|
|
307
|
-
[cdkConnectedOverlayOpen]="isOpen()"
|
|
308
|
-
[cdkConnectedOverlayPositions]="positions()"
|
|
309
|
-
[cdkConnectedOverlayPanelClass]="overlayPanelClasses()"
|
|
310
|
-
[cdkConnectedOverlayPush]="true"
|
|
311
|
-
[cdkConnectedOverlayViewportMargin]="12"
|
|
312
|
-
(detach)="close()"
|
|
313
|
-
(positionChange)="handlePositionChange($event)"
|
|
314
|
-
>
|
|
315
|
-
<ng-container [ngTemplateOutlet]="content()?.templateRef ?? null" />
|
|
316
|
-
</ng-template>
|
|
302
|
+
template: `
|
|
303
|
+
<span cdkOverlayOrigin #origin="cdkOverlayOrigin" class="frame-hover-card__anchor">
|
|
304
|
+
<ng-content />
|
|
305
|
+
</span>
|
|
306
|
+
|
|
307
|
+
<ng-template
|
|
308
|
+
cdkConnectedOverlay
|
|
309
|
+
[cdkConnectedOverlayOrigin]="origin"
|
|
310
|
+
[cdkConnectedOverlayOpen]="isOpen()"
|
|
311
|
+
[cdkConnectedOverlayPositions]="positions()"
|
|
312
|
+
[cdkConnectedOverlayPanelClass]="overlayPanelClasses()"
|
|
313
|
+
[cdkConnectedOverlayPush]="true"
|
|
314
|
+
[cdkConnectedOverlayViewportMargin]="12"
|
|
315
|
+
(detach)="close()"
|
|
316
|
+
(positionChange)="handlePositionChange($event)"
|
|
317
|
+
>
|
|
318
|
+
<ng-container [ngTemplateOutlet]="content()?.templateRef ?? null" />
|
|
319
|
+
</ng-template>
|
|
317
320
|
`,
|
|
318
321
|
}]
|
|
319
322
|
}], ctorParameters: () => [], propDecorators: { openDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "openDelay", required: false }] }], closeDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeDelay", required: false }] }], defaultOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultOpen", required: false }] }], debugVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "debugVisible", required: false }] }], openChange: [{ type: i0.Output, args: ["openChange"] }] } });
|
|
320
323
|
|
|
324
|
+
/** Trigger control for hover card. */
|
|
321
325
|
class FrHoverCardTrigger {
|
|
322
326
|
content = input(null, { ...(ngDevMode ? { debugName: "content" } : /* istanbul ignore next */ {}), alias: 'frHoverCardTrigger' });
|
|
323
327
|
root = inject(FR_HOVER_CARD_CONTROLLER);
|
|
324
328
|
elementRef = inject(ElementRef);
|
|
329
|
+
lastContent = null;
|
|
325
330
|
constructor() {
|
|
326
331
|
this.root.registerTrigger(this.elementRef.nativeElement);
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
}
|
|
332
|
+
}
|
|
333
|
+
ngDoCheck() {
|
|
334
|
+
const content = this.content();
|
|
335
|
+
if (content && content !== this.lastContent) {
|
|
336
|
+
this.root.setContent(content);
|
|
337
|
+
}
|
|
338
|
+
this.lastContent = content;
|
|
333
339
|
}
|
|
334
340
|
handleMouseEnter() {
|
|
335
341
|
this.root.setContent(this.content());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frame-ui-ng-components-hover-card.mjs","sources":["../../../projects/components/hover-card/src/hover-card.position.ts","../../../projects/components/hover-card/src/hover-card.tokens.ts","../../../projects/components/hover-card/src/hover-card.content.ts","../../../projects/components/hover-card/src/hover-card.root.ts","../../../projects/components/hover-card/src/hover-card.trigger.ts","../../../projects/components/hover-card/src/hover-card.types.ts","../../../projects/components/hover-card/hover-card.module.ts","../../../projects/components/hover-card/frame-ui-ng-components-hover-card.ts"],"sourcesContent":["import { ConnectedPosition } from '@angular/cdk/overlay';\n\nimport { FrHoverCardAlignment, FrHoverCardSide } from './hover-card.types';\n\nexport function buildHoverCardPositions(options: {\n align: FrHoverCardAlignment;\n alignOffset: number;\n side: FrHoverCardSide;\n sideOffset: number;\n}): ConnectedPosition[] {\n const primary = buildPosition(options.side, options);\n const opposite = oppositeSide(options.side);\n const fallback = buildPosition(opposite, {\n align: options.align,\n alignOffset: options.alignOffset,\n sideOffset: options.sideOffset,\n });\n\n return [primary, fallback];\n}\n\nfunction buildPosition(\n side: FrHoverCardSide,\n options: {\n align: FrHoverCardAlignment;\n alignOffset: number;\n sideOffset: number;\n },\n): ConnectedPosition {\n if (side === 'top' || side === 'bottom') {\n const isBottom = side === 'bottom';\n const offsetY = isBottom ? options.sideOffset : -options.sideOffset;\n\n return {\n originX: horizontalOrigin(options.align),\n originY: isBottom ? 'bottom' : 'top',\n overlayX: horizontalOverlay(options.align),\n overlayY: isBottom ? 'top' : 'bottom',\n offsetX: options.alignOffset,\n offsetY,\n };\n }\n\n const isRight = side === 'right';\n const offsetX = isRight ? options.sideOffset : -options.sideOffset;\n\n return {\n originX: isRight ? 'end' : 'start',\n originY: verticalOrigin(options.align),\n overlayX: isRight ? 'start' : 'end',\n overlayY: verticalOverlay(options.align),\n offsetX,\n offsetY: options.alignOffset,\n };\n}\n\nfunction horizontalOrigin(align: FrHoverCardAlignment): 'center' | 'end' | 'start' {\n return align;\n}\n\nfunction horizontalOverlay(align: FrHoverCardAlignment): 'center' | 'end' | 'start' {\n return align;\n}\n\nfunction verticalOrigin(align: FrHoverCardAlignment): 'bottom' | 'center' | 'top' {\n if (align === 'center') {\n return 'center';\n }\n\n return align === 'end' ? 'bottom' : 'top';\n}\n\nfunction verticalOverlay(align: FrHoverCardAlignment): 'bottom' | 'center' | 'top' {\n if (align === 'center') {\n return 'center';\n }\n\n return align === 'end' ? 'bottom' : 'top';\n}\n\nfunction oppositeSide(side: FrHoverCardSide): FrHoverCardSide {\n if (side === 'top') {\n return 'bottom';\n }\n\n if (side === 'bottom') {\n return 'top';\n }\n\n if (side === 'left') {\n return 'right';\n }\n\n return 'left';\n}\n","import { InjectionToken } from '@angular/core';\n\nexport type FrHoverCardController = {\n close: () => void;\n closeWithDelay: () => void;\n enterInteractiveArea: () => void;\n isOpen: () => boolean;\n leaveInteractiveArea: () => void;\n openWithDelay: () => void;\n registerTrigger: (trigger: HTMLElement) => void;\n setContent: (content: unknown | null) => void;\n};\n\nexport const FR_HOVER_CARD_CONTROLLER = new InjectionToken<FrHoverCardController>('FrHoverCardController');\n","import { ConnectedPosition } from '@angular/cdk/overlay';\nimport { Directive, TemplateRef, booleanAttribute, inject, input } from '@angular/core';\n\nimport { buildHoverCardPositions } from './hover-card.position';\nimport { FR_HOVER_CARD_CONTROLLER } from './hover-card.tokens';\nimport { FrHoverCardAlignment, FrHoverCardSide } from './hover-card.types';\n\n@Directive({\n selector: 'ng-template[frHoverCardContent]',\n exportAs: 'frHoverCardContent',\n})\nexport class FrHoverCardContent {\n readonly templateRef = inject(TemplateRef<unknown>);\n\n readonly align = input<FrHoverCardAlignment>('center');\n readonly alignOffset = input(0);\n readonly debugVisible = input(false, { transform: booleanAttribute });\n readonly side = input<FrHoverCardSide>('bottom');\n readonly sideOffset = input(8);\n\n getPositions(): ConnectedPosition[] {\n return buildHoverCardPositions({\n align: this.align(),\n alignOffset: this.alignOffset(),\n side: this.side(),\n sideOffset: this.sideOffset(),\n });\n }\n}\n\n@Directive({\n selector: '[frHoverCardPanel]',\n host: {\n class: 'frame-hover-card__content',\n '[attr.data-side]': 'content.side()',\n '(mouseenter)': 'handleMouseEnter()',\n '(mouseleave)': 'handleMouseLeave()',\n },\n})\nexport class FrHoverCardPanel {\n protected readonly content = inject(FrHoverCardContent);\n private readonly root = inject(FR_HOVER_CARD_CONTROLLER);\n\n protected handleMouseEnter(): void {\n this.root.enterInteractiveArea();\n }\n\n protected handleMouseLeave(): void {\n this.root.leaveInteractiveArea();\n }\n}\n","import {\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n ConnectedOverlayPositionChange,\n ConnectedPosition,\n} from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n afterNextRender,\n booleanAttribute,\n computed,\n input,\n output,\n signal,\n} from '@angular/core';\n\nimport { FrHoverCardContent } from './hover-card.content';\nimport { buildHoverCardPositions } from './hover-card.position';\nimport { FR_HOVER_CARD_CONTROLLER } from './hover-card.tokens';\n\nconst DEFAULT_POSITIONS: ConnectedPosition[] = buildHoverCardPositions({\n align: 'center',\n alignOffset: 0,\n side: 'bottom',\n sideOffset: 8,\n});\n\n@Component({\n selector: 'frame-hover-card',\n exportAs: 'frHoverCard',\n imports: [CdkConnectedOverlay, CdkOverlayOrigin, NgTemplateOutlet],\n providers: [\n {\n provide: FR_HOVER_CARD_CONTROLLER,\n useExisting: FrHoverCardRoot,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'frame-hover-card',\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\n },\n template: `\n <span cdkOverlayOrigin #origin=\"cdkOverlayOrigin\" class=\"frame-hover-card__anchor\">\n <ng-content />\n </span>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayPositions]=\"positions()\"\n [cdkConnectedOverlayPanelClass]=\"overlayPanelClasses()\"\n [cdkConnectedOverlayPush]=\"true\"\n [cdkConnectedOverlayViewportMargin]=\"12\"\n (detach)=\"close()\"\n (positionChange)=\"handlePositionChange($event)\"\n >\n <ng-container [ngTemplateOutlet]=\"content()?.templateRef ?? null\" />\n </ng-template>\n `,\n})\nexport class FrHoverCardRoot {\n readonly openDelay = input(700);\n readonly closeDelay = input(300);\n readonly defaultOpen = input(false, { transform: booleanAttribute });\n readonly debugVisible = input(false, { transform: booleanAttribute });\n readonly openChange = output<boolean>();\n\n readonly isOpen = signal(false);\n readonly content = signal<FrHoverCardContent | null>(null);\n readonly overlaySide = signal('bottom');\n\n private openTimer: ReturnType<typeof setTimeout> | null = null;\n private closeTimer: ReturnType<typeof setTimeout> | null = null;\n private pointerInsideCount = 0;\n private triggerElement: HTMLElement | null = null;\n\n readonly positions = computed(() => this.content()?.getPositions() ?? DEFAULT_POSITIONS);\n\n constructor() {\n afterNextRender(() => {\n if (this.defaultOpen() || this.debugVisible()) {\n this.open();\n }\n });\n }\n\n registerTrigger(trigger: HTMLElement): void {\n this.triggerElement = trigger;\n }\n\n setContent(content: unknown | null): void {\n this.content.set(content instanceof FrHoverCardContent ? content : null);\n }\n\n enterInteractiveArea(): void {\n this.pointerInsideCount += 1;\n this.cancelClose();\n }\n\n leaveInteractiveArea(): void {\n this.pointerInsideCount = Math.max(0, this.pointerInsideCount - 1);\n\n if (this.pointerInsideCount === 0) {\n this.closeWithDelay();\n }\n }\n\n openWithDelay(): void {\n this.cancelClose();\n this.cancelOpen();\n\n const delay = Math.max(0, this.openDelay());\n\n if (delay === 0) {\n this.open();\n return;\n }\n\n this.openTimer = setTimeout(() => this.open(), delay);\n }\n\n closeWithDelay(): void {\n if (this.debugVisible()) {\n return;\n }\n\n this.cancelOpen();\n this.cancelClose();\n\n const delay = Math.max(0, this.closeDelay());\n\n if (delay === 0) {\n this.close();\n return;\n }\n\n this.closeTimer = setTimeout(() => this.close(), delay);\n }\n\n open(): void {\n if (!this.content()) {\n return;\n }\n\n if (!this.isOpen()) {\n this.isOpen.set(true);\n this.openChange.emit(true);\n queueMicrotask(() => this.syncCustomPropertiesToOverlay());\n }\n }\n\n close(): void {\n if (this.debugVisible()) {\n return;\n }\n\n this.cancelOpen();\n this.cancelClose();\n this.pointerInsideCount = 0;\n\n if (this.isOpen()) {\n this.isOpen.set(false);\n this.openChange.emit(false);\n }\n }\n\n handlePositionChange(event: ConnectedOverlayPositionChange): void {\n const pair = event.connectionPair;\n\n if (pair.overlayY === 'top') {\n this.overlaySide.set('bottom');\n return;\n }\n\n if (pair.overlayY === 'bottom') {\n this.overlaySide.set('top');\n return;\n }\n\n this.overlaySide.set(pair.overlayX === 'start' ? 'right' : 'left');\n }\n\n overlayPanelClasses(): string[] {\n return ['frame-hover-card-overlay', `frame-hover-card-overlay--${this.overlaySide()}`];\n }\n\n private cancelOpen(): void {\n if (this.openTimer) {\n clearTimeout(this.openTimer);\n this.openTimer = null;\n }\n }\n\n private cancelClose(): void {\n if (this.closeTimer) {\n clearTimeout(this.closeTimer);\n this.closeTimer = null;\n }\n }\n\n private syncCustomPropertiesToOverlay(): void {\n const triggerElement = this.triggerElement;\n const overlayPane = document.querySelector<HTMLElement>('.cdk-overlay-pane.frame-hover-card-overlay');\n const panel = overlayPane?.querySelector<HTMLElement>('.frame-hover-card__content');\n\n if (!triggerElement || !overlayPane || !panel) {\n return;\n }\n\n const sourceStyles = getComputedStyle(triggerElement);\n\n for (let index = 0; index < sourceStyles.length; index += 1) {\n const propertyName = sourceStyles.item(index);\n\n if (!propertyName.startsWith('--frame-hover-card-')) {\n continue;\n }\n\n const propertyValue = sourceStyles.getPropertyValue(propertyName);\n overlayPane.style.setProperty(propertyName, propertyValue);\n panel.style.setProperty(propertyName, propertyValue);\n }\n }\n}\n","import { Directive, ElementRef, effect, inject, input } from '@angular/core';\n\nimport { FrHoverCardContent } from './hover-card.content';\nimport { FR_HOVER_CARD_CONTROLLER } from './hover-card.tokens';\n\n@Directive({\n selector: '[frHoverCardTrigger]',\n host: {\n class: 'frame-hover-card__trigger',\n '[attr.aria-expanded]': 'root.isOpen()',\n '[attr.data-state]': 'root.isOpen() ? \"open\" : \"closed\"',\n '(mouseenter)': 'handleMouseEnter()',\n '(mouseleave)': 'handleMouseLeave()',\n '(focusin)': 'handleFocusIn()',\n '(focusout)': 'handleFocusOut()',\n '(keydown)': 'handleKeydown($event)',\n },\n})\nexport class FrHoverCardTrigger {\n readonly content = input<FrHoverCardContent | null>(null, {\n alias: 'frHoverCardTrigger',\n });\n\n protected readonly root = inject(FR_HOVER_CARD_CONTROLLER);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n constructor() {\n this.root.registerTrigger(this.elementRef.nativeElement);\n\n effect(() => {\n const content = this.content();\n\n if (content) {\n this.root.setContent(content);\n }\n });\n }\n\n protected handleMouseEnter(): void {\n this.root.setContent(this.content());\n this.root.enterInteractiveArea();\n this.root.openWithDelay();\n }\n\n protected handleMouseLeave(): void {\n this.root.leaveInteractiveArea();\n }\n\n protected handleFocusIn(): void {\n this.root.setContent(this.content());\n this.root.openWithDelay();\n }\n\n protected handleFocusOut(): void {\n this.root.closeWithDelay();\n }\n\n protected handleKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n event.preventDefault();\n this.root.close();\n }\n }\n}\n","export const FR_HOVER_CARD_ALIGNMENTS = ['start', 'center', 'end'] as const;\nexport const FR_HOVER_CARD_SIDES = ['top', 'right', 'bottom', 'left'] as const;\n\nexport type FrHoverCardAlignment = (typeof FR_HOVER_CARD_ALIGNMENTS)[number];\nexport type FrHoverCardSide = (typeof FR_HOVER_CARD_SIDES)[number];\n","import { NgModule } from '@angular/core';\nimport {\n FrHoverCard,\n FrHoverCardContent,\n FrHoverCardPanel,\n FrHoverCardTrigger,\n} from './src/hover-card';\n\n@NgModule({\n imports: [\n FrHoverCard,\n FrHoverCardContent,\n FrHoverCardPanel,\n FrHoverCardTrigger,\n ],\n exports: [\n FrHoverCard,\n FrHoverCardContent,\n FrHoverCardPanel,\n FrHoverCardTrigger,\n ],\n})\nexport class FrHoverCardModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["FrHoverCard"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"frame-ui-ng-components-hover-card.mjs","sources":["../../../projects/components/hover-card/src/hover-card.position.ts","../../../projects/components/hover-card/src/hover-card.tokens.ts","../../../projects/components/hover-card/src/hover-card.content.ts","../../../projects/components/hover-card/src/hover-card.root.ts","../../../projects/components/hover-card/src/hover-card.trigger.ts","../../../projects/components/hover-card/src/hover-card.types.ts","../../../projects/components/hover-card/hover-card.module.ts","../../../projects/components/hover-card/frame-ui-ng-components-hover-card.ts"],"sourcesContent":["import { ConnectedPosition } from '@angular/cdk/overlay';\n\nimport { FrHoverCardAlignment, FrHoverCardSide } from './hover-card.types';\n\nexport function buildHoverCardPositions(options: {\n align: FrHoverCardAlignment;\n alignOffset: number;\n side: FrHoverCardSide;\n sideOffset: number;\n}): ConnectedPosition[] {\n const primary = buildPosition(options.side, options);\n const opposite = oppositeSide(options.side);\n const fallback = buildPosition(opposite, {\n align: options.align,\n alignOffset: options.alignOffset,\n sideOffset: options.sideOffset,\n });\n\n return [primary, fallback];\n}\n\nfunction buildPosition(\n side: FrHoverCardSide,\n options: {\n align: FrHoverCardAlignment;\n alignOffset: number;\n sideOffset: number;\n },\n): ConnectedPosition {\n if (side === 'top' || side === 'bottom') {\n const isBottom = side === 'bottom';\n const offsetY = isBottom ? options.sideOffset : -options.sideOffset;\n\n return {\n originX: horizontalOrigin(options.align),\n originY: isBottom ? 'bottom' : 'top',\n overlayX: horizontalOverlay(options.align),\n overlayY: isBottom ? 'top' : 'bottom',\n offsetX: options.alignOffset,\n offsetY,\n };\n }\n\n const isRight = side === 'right';\n const offsetX = isRight ? options.sideOffset : -options.sideOffset;\n\n return {\n originX: isRight ? 'end' : 'start',\n originY: verticalOrigin(options.align),\n overlayX: isRight ? 'start' : 'end',\n overlayY: verticalOverlay(options.align),\n offsetX,\n offsetY: options.alignOffset,\n };\n}\n\nfunction horizontalOrigin(align: FrHoverCardAlignment): 'center' | 'end' | 'start' {\n return align;\n}\n\nfunction horizontalOverlay(align: FrHoverCardAlignment): 'center' | 'end' | 'start' {\n return align;\n}\n\nfunction verticalOrigin(align: FrHoverCardAlignment): 'bottom' | 'center' | 'top' {\n if (align === 'center') {\n return 'center';\n }\n\n return align === 'end' ? 'bottom' : 'top';\n}\n\nfunction verticalOverlay(align: FrHoverCardAlignment): 'bottom' | 'center' | 'top' {\n if (align === 'center') {\n return 'center';\n }\n\n return align === 'end' ? 'bottom' : 'top';\n}\n\nfunction oppositeSide(side: FrHoverCardSide): FrHoverCardSide {\n if (side === 'top') {\n return 'bottom';\n }\n\n if (side === 'bottom') {\n return 'top';\n }\n\n if (side === 'left') {\n return 'right';\n }\n\n return 'left';\n}\n","import { InjectionToken } from '@angular/core';\n\nexport type FrHoverCardController = {\n close: () => void;\n closeWithDelay: () => void;\n enterInteractiveArea: () => void;\n isOpen: () => boolean;\n leaveInteractiveArea: () => void;\n openWithDelay: () => void;\n registerTrigger: (trigger: HTMLElement) => void;\n setContent: (content: unknown | null) => void;\n};\n\nexport const FR_HOVER_CARD_CONTROLLER = new InjectionToken<FrHoverCardController>('FrHoverCardController');\n","import { ConnectedPosition } from '@angular/cdk/overlay';\r\nimport { Directive, TemplateRef, booleanAttribute, inject, input } from '@angular/core';\r\n\r\nimport { buildHoverCardPositions } from './hover-card.position';\r\nimport { FR_HOVER_CARD_CONTROLLER } from './hover-card.tokens';\r\nimport { FrHoverCardAlignment, FrHoverCardSide } from './hover-card.types';\r\n\r\n/** Content slot for hover card. */\r\n@Directive({\r\n selector: 'ng-template[frHoverCardContent]',\r\n exportAs: 'frHoverCardContent',\r\n})\r\nexport class FrHoverCardContent {\r\n readonly templateRef = inject(TemplateRef<unknown>);\r\n\r\n readonly align = input<FrHoverCardAlignment>('center');\r\n readonly alignOffset = input(0);\r\n readonly debugVisible = input(false, { transform: booleanAttribute });\r\n readonly side = input<FrHoverCardSide>('bottom');\r\n readonly sideOffset = input(8);\r\n\r\n getPositions(): ConnectedPosition[] {\r\n return buildHoverCardPositions({\r\n align: this.align(),\r\n alignOffset: this.alignOffset(),\r\n side: this.side(),\r\n sideOffset: this.sideOffset(),\r\n });\r\n }\r\n}\r\n\r\n/** Panel slot for hover card. */\r\n@Directive({\r\n selector: '[frHoverCardPanel]',\r\n host: {\r\n class: 'frame-hover-card__content',\r\n '[attr.data-side]': 'content.side()',\r\n '(mouseenter)': 'handleMouseEnter()',\r\n '(mouseleave)': 'handleMouseLeave()',\r\n },\r\n})\r\nexport class FrHoverCardPanel {\r\n protected readonly content = inject(FrHoverCardContent);\r\n private readonly root = inject(FR_HOVER_CARD_CONTROLLER);\r\n\r\n protected handleMouseEnter(): void {\r\n this.root.enterInteractiveArea();\r\n }\r\n\r\n protected handleMouseLeave(): void {\r\n this.root.leaveInteractiveArea();\r\n }\r\n}\r\n","import {\r\n CdkConnectedOverlay,\r\n CdkOverlayOrigin,\r\n ConnectedOverlayPositionChange,\r\n ConnectedPosition,\r\n} from '@angular/cdk/overlay';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n afterNextRender,\r\n booleanAttribute,\r\n computed,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\n\r\nimport { FrHoverCardContent } from './hover-card.content';\r\nimport { buildHoverCardPositions } from './hover-card.position';\r\nimport { FR_HOVER_CARD_CONTROLLER } from './hover-card.tokens';\r\n\r\nconst DEFAULT_POSITIONS: ConnectedPosition[] = buildHoverCardPositions({\r\n align: 'center',\r\n alignOffset: 0,\r\n side: 'bottom',\r\n sideOffset: 8,\r\n});\r\n\r\n/** Root controller for hover card. */\r\n@Component({\r\n selector: 'frame-hover-card',\r\n exportAs: 'frHoverCard',\r\n imports: [CdkConnectedOverlay, CdkOverlayOrigin, NgTemplateOutlet],\r\n providers: [\r\n {\r\n provide: FR_HOVER_CARD_CONTROLLER,\r\n useExisting: FrHoverCardRoot,\r\n },\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'frame-hover-card',\r\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\r\n },\r\n template: `\r\n <span cdkOverlayOrigin #origin=\"cdkOverlayOrigin\" class=\"frame-hover-card__anchor\">\r\n <ng-content />\r\n </span>\r\n\r\n <ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayOrigin]=\"origin\"\r\n [cdkConnectedOverlayOpen]=\"isOpen()\"\r\n [cdkConnectedOverlayPositions]=\"positions()\"\r\n [cdkConnectedOverlayPanelClass]=\"overlayPanelClasses()\"\r\n [cdkConnectedOverlayPush]=\"true\"\r\n [cdkConnectedOverlayViewportMargin]=\"12\"\r\n (detach)=\"close()\"\r\n (positionChange)=\"handlePositionChange($event)\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"content()?.templateRef ?? null\" />\r\n </ng-template>\r\n `,\r\n})\r\nexport class FrHoverCardRoot {\r\n readonly openDelay = input(700);\r\n readonly closeDelay = input(300);\r\n readonly defaultOpen = input(false, { transform: booleanAttribute });\r\n readonly debugVisible = input(false, { transform: booleanAttribute });\r\n readonly openChange = output<boolean>();\r\n\r\n readonly isOpen = signal(false);\r\n readonly content = signal<FrHoverCardContent | null>(null);\r\n readonly overlaySide = signal('bottom');\r\n\r\n private openTimer: ReturnType<typeof setTimeout> | null = null;\r\n private closeTimer: ReturnType<typeof setTimeout> | null = null;\r\n private pointerInsideCount = 0;\r\n private triggerElement: HTMLElement | null = null;\r\n\r\n readonly positions = computed(() => this.content()?.getPositions() ?? DEFAULT_POSITIONS);\r\n\r\n constructor() {\r\n afterNextRender(() => {\r\n if (this.defaultOpen() || this.debugVisible()) {\r\n this.open();\r\n }\r\n });\r\n }\r\n\r\n registerTrigger(trigger: HTMLElement): void {\r\n this.triggerElement = trigger;\r\n }\r\n\r\n setContent(content: unknown | null): void {\r\n this.content.set(content instanceof FrHoverCardContent ? content : null);\r\n }\r\n\r\n enterInteractiveArea(): void {\r\n this.pointerInsideCount += 1;\r\n this.cancelClose();\r\n }\r\n\r\n leaveInteractiveArea(): void {\r\n this.pointerInsideCount = Math.max(0, this.pointerInsideCount - 1);\r\n\r\n if (this.pointerInsideCount === 0) {\r\n this.closeWithDelay();\r\n }\r\n }\r\n\r\n openWithDelay(): void {\r\n this.cancelClose();\r\n this.cancelOpen();\r\n\r\n const delay = Math.max(0, this.openDelay());\r\n\r\n if (delay === 0) {\r\n this.open();\r\n return;\r\n }\r\n\r\n this.openTimer = setTimeout(() => this.open(), delay);\r\n }\r\n\r\n closeWithDelay(): void {\r\n if (this.debugVisible()) {\r\n return;\r\n }\r\n\r\n this.cancelOpen();\r\n this.cancelClose();\r\n\r\n const delay = Math.max(0, this.closeDelay());\r\n\r\n if (delay === 0) {\r\n this.close();\r\n return;\r\n }\r\n\r\n this.closeTimer = setTimeout(() => this.close(), delay);\r\n }\r\n\r\n open(): void {\r\n if (!this.content()) {\r\n return;\r\n }\r\n\r\n if (!this.isOpen()) {\r\n this.isOpen.set(true);\r\n this.openChange.emit(true);\r\n queueMicrotask(() => this.syncCustomPropertiesToOverlay());\r\n }\r\n }\r\n\r\n close(): void {\r\n if (this.debugVisible()) {\r\n return;\r\n }\r\n\r\n this.cancelOpen();\r\n this.cancelClose();\r\n this.pointerInsideCount = 0;\r\n\r\n if (this.isOpen()) {\r\n this.isOpen.set(false);\r\n this.openChange.emit(false);\r\n }\r\n }\r\n\r\n handlePositionChange(event: ConnectedOverlayPositionChange): void {\r\n const pair = event.connectionPair;\r\n\r\n if (pair.overlayY === 'top') {\r\n this.overlaySide.set('bottom');\r\n return;\r\n }\r\n\r\n if (pair.overlayY === 'bottom') {\r\n this.overlaySide.set('top');\r\n return;\r\n }\r\n\r\n this.overlaySide.set(pair.overlayX === 'start' ? 'right' : 'left');\r\n }\r\n\r\n overlayPanelClasses(): string[] {\r\n return ['frame-hover-card-overlay', `frame-hover-card-overlay--${this.overlaySide()}`];\r\n }\r\n\r\n private cancelOpen(): void {\r\n if (this.openTimer) {\r\n clearTimeout(this.openTimer);\r\n this.openTimer = null;\r\n }\r\n }\r\n\r\n private cancelClose(): void {\r\n if (this.closeTimer) {\r\n clearTimeout(this.closeTimer);\r\n this.closeTimer = null;\r\n }\r\n }\r\n\r\n private syncCustomPropertiesToOverlay(): void {\r\n const triggerElement = this.triggerElement;\r\n const overlayPane = document.querySelector<HTMLElement>('.cdk-overlay-pane.frame-hover-card-overlay');\r\n const panel = overlayPane?.querySelector<HTMLElement>('.frame-hover-card__content');\r\n\r\n if (!triggerElement || !overlayPane || !panel) {\r\n return;\r\n }\r\n\r\n const sourceStyles = getComputedStyle(triggerElement);\r\n\r\n for (let index = 0; index < sourceStyles.length; index += 1) {\r\n const propertyName = sourceStyles.item(index);\r\n\r\n if (!propertyName.startsWith('--frame-hover-card-')) {\r\n continue;\r\n }\r\n\r\n const propertyValue = sourceStyles.getPropertyValue(propertyName);\r\n overlayPane.style.setProperty(propertyName, propertyValue);\r\n panel.style.setProperty(propertyName, propertyValue);\r\n }\r\n }\r\n}\r\n","import { Directive, DoCheck, ElementRef, inject, input } from '@angular/core';\r\n\r\nimport { FrHoverCardContent } from './hover-card.content';\r\nimport { FR_HOVER_CARD_CONTROLLER } from './hover-card.tokens';\r\n\r\n/** Trigger control for hover card. */\r\n@Directive({\r\n selector: '[frHoverCardTrigger]',\r\n host: {\r\n class: 'frame-hover-card__trigger',\r\n '[attr.aria-expanded]': 'root.isOpen()',\r\n '[attr.data-state]': 'root.isOpen() ? \"open\" : \"closed\"',\r\n '(mouseenter)': 'handleMouseEnter()',\r\n '(mouseleave)': 'handleMouseLeave()',\r\n '(focusin)': 'handleFocusIn()',\r\n '(focusout)': 'handleFocusOut()',\r\n '(keydown)': 'handleKeydown($event)',\r\n },\r\n})\r\nexport class FrHoverCardTrigger implements DoCheck {\r\n readonly content = input<FrHoverCardContent | null>(null, {\r\n alias: 'frHoverCardTrigger',\r\n });\r\n\r\n protected readonly root = inject(FR_HOVER_CARD_CONTROLLER);\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private lastContent: FrHoverCardContent | null = null;\r\n\r\n constructor() {\r\n this.root.registerTrigger(this.elementRef.nativeElement);\r\n }\r\n\r\n ngDoCheck(): void {\r\n const content = this.content();\r\n\r\n if (content && content !== this.lastContent) {\r\n this.root.setContent(content);\r\n }\r\n\r\n this.lastContent = content;\r\n }\r\n\r\n protected handleMouseEnter(): void {\r\n this.root.setContent(this.content());\r\n this.root.enterInteractiveArea();\r\n this.root.openWithDelay();\r\n }\r\n\r\n protected handleMouseLeave(): void {\r\n this.root.leaveInteractiveArea();\r\n }\r\n\r\n protected handleFocusIn(): void {\r\n this.root.setContent(this.content());\r\n this.root.openWithDelay();\r\n }\r\n\r\n protected handleFocusOut(): void {\r\n this.root.closeWithDelay();\r\n }\r\n\r\n protected handleKeydown(event: KeyboardEvent): void {\r\n if (event.key === 'Escape') {\r\n event.preventDefault();\r\n this.root.close();\r\n }\r\n }\r\n}\r\n","export const FR_HOVER_CARD_ALIGNMENTS = ['start', 'center', 'end'] as const;\nexport const FR_HOVER_CARD_SIDES = ['top', 'right', 'bottom', 'left'] as const;\n\nexport type FrHoverCardAlignment = (typeof FR_HOVER_CARD_ALIGNMENTS)[number];\nexport type FrHoverCardSide = (typeof FR_HOVER_CARD_SIDES)[number];\n","import { NgModule } from '@angular/core';\nimport {\n FrHoverCard,\n FrHoverCardContent,\n FrHoverCardPanel,\n FrHoverCardTrigger,\n} from './src/hover-card';\n\n@NgModule({\n imports: [\n FrHoverCard,\n FrHoverCardContent,\n FrHoverCardPanel,\n FrHoverCardTrigger,\n ],\n exports: [\n FrHoverCard,\n FrHoverCardContent,\n FrHoverCardPanel,\n FrHoverCardTrigger,\n ],\n})\nexport class FrHoverCardModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["FrHoverCard"],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ import { clampNumber } from '@frame-ui-ng/components/utils';
|
|
|
8
8
|
const FR_INPUT_OTP_PATTERN_DIGITS = /^[0-9]$/;
|
|
9
9
|
const FR_INPUT_OTP_PATTERN_DIGITS_AND_CHARS = /^[a-zA-Z0-9]$/;
|
|
10
10
|
const FR_INPUT_OTP_CONTROLLER = new InjectionToken('FrInputOtpController');
|
|
11
|
+
/** One-time-code input with grouped slots. */
|
|
11
12
|
class FrInputOtp extends FrControlValueAccessor {
|
|
12
13
|
nativeInput = viewChild('nativeInput', ...(ngDevMode ? [{ debugName: "nativeInput" }] : /* istanbul ignore next */ []));
|
|
13
14
|
maxLength = input(6, { ...(ngDevMode ? { debugName: "maxLength" } : /* istanbul ignore next */ {}), transform: numberAttribute });
|
|
@@ -110,6 +111,7 @@ class FrInputOtp extends FrControlValueAccessor {
|
|
|
110
111
|
replaceFrom(index, text) {
|
|
111
112
|
const value = this.value();
|
|
112
113
|
const start = clampNumber(index, 0, this.maxLength());
|
|
114
|
+
// The hidden input is the source of truth; visual slots are projections of this string.
|
|
113
115
|
const next = `${value.slice(0, start)}${text}${value.slice(start + text.length)}`;
|
|
114
116
|
return this.sanitize(next);
|
|
115
117
|
}
|
|
@@ -207,6 +209,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
207
209
|
`,
|
|
208
210
|
}]
|
|
209
211
|
}], propDecorators: { nativeInput: [{ type: i0.ViewChild, args: ['nativeInput', { isSignal: true }] }], maxLength: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxLength", required: false }] }], pattern: [{ type: i0.Input, args: [{ isSignal: true, alias: "pattern", required: false }] }], disabledInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalidInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], complete: [{ type: i0.Output, args: ["complete"] }] } });
|
|
212
|
+
/** Group slot for input otp. */
|
|
210
213
|
class FrInputOtpGroup {
|
|
211
214
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrInputOtpGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
212
215
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrInputOtpGroup, isStandalone: true, selector: "[frInputOtpGroup], frame-input-otp-group", host: { classAttribute: "frame-input-otp__group" }, ngImport: i0 });
|
|
@@ -220,6 +223,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
220
223
|
},
|
|
221
224
|
}]
|
|
222
225
|
}] });
|
|
226
|
+
/** Input slot for one OTP character. */
|
|
223
227
|
class FrInputOtpSlot {
|
|
224
228
|
root = inject(FR_INPUT_OTP_CONTROLLER);
|
|
225
229
|
index = input.required(...(ngDevMode ? [{ debugName: "index" }] : /* istanbul ignore next */ []));
|
|
@@ -256,6 +260,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
256
260
|
`,
|
|
257
261
|
}]
|
|
258
262
|
}], propDecorators: { index: [{ type: i0.Input, args: [{ isSignal: true, alias: "index", required: true }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }] } });
|
|
263
|
+
/** Separator slot for input otp. */
|
|
259
264
|
class FrInputOtpSeparator {
|
|
260
265
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrInputOtpSeparator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
261
266
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrInputOtpSeparator, isStandalone: true, selector: "[frInputOtpSeparator], frame-input-otp-separator", host: { attributes: { "role": "separator", "aria-hidden": "true" }, classAttribute: "frame-input-otp__separator" }, ngImport: i0 });
|