@frame-ui-ng/components 0.5.0-beta.0 → 0.6.0-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.
Files changed (106) hide show
  1. package/accordion/src/styles/_vars.css +2 -5
  2. package/accordion/src/styles/accordion.css +44 -30
  3. package/breadcrumb/src/styles/breadcrumb.css +12 -2
  4. package/button/src/styles/button.css +20 -66
  5. package/button-group/src/styles/button-group.css +0 -38
  6. package/calendar/src/styles/_vars.css +4 -0
  7. package/calendar/src/styles/calendar.css +26 -18
  8. package/carousel/src/styles/carousel.css +103 -89
  9. package/checkbox/src/styles/checkbox.css +14 -5
  10. package/collapsible/src/styles/_vars.css +1 -0
  11. package/collapsible/src/styles/collapsible.css +15 -11
  12. package/combobox/src/styles/combobox.css +11 -2
  13. package/confirm-popover/src/styles/confirm-popover.css +0 -1
  14. package/date-picker/src/styles/date-picker.css +15 -10
  15. package/dropdown-menu/src/styles/dropdown-menu-item.css +6 -2
  16. package/fesm2022/frame-ui-ng-components-accordion.mjs +201 -147
  17. package/fesm2022/frame-ui-ng-components-accordion.mjs.map +1 -1
  18. package/fesm2022/frame-ui-ng-components-alert.mjs +2 -2
  19. package/fesm2022/frame-ui-ng-components-alert.mjs.map +1 -1
  20. package/fesm2022/frame-ui-ng-components-breadcrumb.mjs +10 -2
  21. package/fesm2022/frame-ui-ng-components-breadcrumb.mjs.map +1 -1
  22. package/fesm2022/frame-ui-ng-components-button-group.mjs +2 -2
  23. package/fesm2022/frame-ui-ng-components-button-group.mjs.map +1 -1
  24. package/fesm2022/frame-ui-ng-components-button.mjs +2 -2
  25. package/fesm2022/frame-ui-ng-components-button.mjs.map +1 -1
  26. package/fesm2022/frame-ui-ng-components-calendar.mjs +202 -50
  27. package/fesm2022/frame-ui-ng-components-calendar.mjs.map +1 -1
  28. package/fesm2022/frame-ui-ng-components-card.mjs +2 -2
  29. package/fesm2022/frame-ui-ng-components-card.mjs.map +1 -1
  30. package/fesm2022/frame-ui-ng-components-carousel.mjs +2 -2
  31. package/fesm2022/frame-ui-ng-components-carousel.mjs.map +1 -1
  32. package/fesm2022/frame-ui-ng-components-collapsible.mjs +80 -22
  33. package/fesm2022/frame-ui-ng-components-collapsible.mjs.map +1 -1
  34. package/fesm2022/frame-ui-ng-components-combobox.mjs +61 -6
  35. package/fesm2022/frame-ui-ng-components-combobox.mjs.map +1 -1
  36. package/fesm2022/frame-ui-ng-components-command.mjs +2 -2
  37. package/fesm2022/frame-ui-ng-components-command.mjs.map +1 -1
  38. package/fesm2022/frame-ui-ng-components-confirm-popover.mjs +6 -6
  39. package/fesm2022/frame-ui-ng-components-confirm-popover.mjs.map +1 -1
  40. package/fesm2022/frame-ui-ng-components-date-picker.mjs +75 -37
  41. package/fesm2022/frame-ui-ng-components-date-picker.mjs.map +1 -1
  42. package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs +2 -2
  43. package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs.map +1 -1
  44. package/fesm2022/frame-ui-ng-components-empty.mjs +2 -2
  45. package/fesm2022/frame-ui-ng-components-empty.mjs.map +1 -1
  46. package/fesm2022/frame-ui-ng-components-hover-card.mjs +2 -2
  47. package/fesm2022/frame-ui-ng-components-hover-card.mjs.map +1 -1
  48. package/fesm2022/frame-ui-ng-components-input-otp.mjs +2 -2
  49. package/fesm2022/frame-ui-ng-components-input-otp.mjs.map +1 -1
  50. package/fesm2022/frame-ui-ng-components-input.mjs +2 -2
  51. package/fesm2022/frame-ui-ng-components-input.mjs.map +1 -1
  52. package/fesm2022/frame-ui-ng-components-item.mjs +2 -2
  53. package/fesm2022/frame-ui-ng-components-item.mjs.map +1 -1
  54. package/fesm2022/frame-ui-ng-components-menubar.mjs +2 -2
  55. package/fesm2022/frame-ui-ng-components-menubar.mjs.map +1 -1
  56. package/fesm2022/frame-ui-ng-components-modal.mjs +10 -4
  57. package/fesm2022/frame-ui-ng-components-modal.mjs.map +1 -1
  58. package/fesm2022/frame-ui-ng-components-navigation-menu.mjs +4 -4
  59. package/fesm2022/frame-ui-ng-components-navigation-menu.mjs.map +1 -1
  60. package/fesm2022/frame-ui-ng-components-pagination.mjs +20 -4
  61. package/fesm2022/frame-ui-ng-components-pagination.mjs.map +1 -1
  62. package/fesm2022/frame-ui-ng-components-popover.mjs +2 -2
  63. package/fesm2022/frame-ui-ng-components-popover.mjs.map +1 -1
  64. package/fesm2022/frame-ui-ng-components-radio-group.mjs +2 -2
  65. package/fesm2022/frame-ui-ng-components-radio-group.mjs.map +1 -1
  66. package/fesm2022/frame-ui-ng-components-resizable.mjs +2 -2
  67. package/fesm2022/frame-ui-ng-components-resizable.mjs.map +1 -1
  68. package/fesm2022/frame-ui-ng-components-sheet.mjs +90 -65
  69. package/fesm2022/frame-ui-ng-components-sheet.mjs.map +1 -1
  70. package/fesm2022/frame-ui-ng-components-table.mjs +6 -5
  71. package/fesm2022/frame-ui-ng-components-table.mjs.map +1 -1
  72. package/fesm2022/frame-ui-ng-components-tabs.mjs +2 -2
  73. package/fesm2022/frame-ui-ng-components-tabs.mjs.map +1 -1
  74. package/fesm2022/frame-ui-ng-components-toast.mjs +6 -6
  75. package/fesm2022/frame-ui-ng-components-toast.mjs.map +1 -1
  76. package/fesm2022/frame-ui-ng-components-tooltip.mjs +6 -6
  77. package/fesm2022/frame-ui-ng-components-tooltip.mjs.map +1 -1
  78. package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs +4 -4
  79. package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs.map +1 -1
  80. package/fesm2022/frame-ui-ng-components.mjs +850 -420
  81. package/fesm2022/frame-ui-ng-components.mjs.map +1 -1
  82. package/input/src/styles/input-group.css +0 -7
  83. package/input/src/styles/input.css +0 -23
  84. package/modal/src/styles/modal.css +5 -19
  85. package/package.json +6 -6
  86. package/pagination/src/styles/pagination.css +6 -2
  87. package/popover/src/styles/popover.css +3 -3
  88. package/select/src/styles/select-item.css +67 -68
  89. package/sheet/src/styles/sheet.css +32 -19
  90. package/src/styles/components.css +2 -2
  91. package/src/styles/corner-handles.css +217 -0
  92. package/styles/components.css +2 -2
  93. package/styles/corner-handles.css +217 -0
  94. package/styles.css +2 -2
  95. package/toggle/src/styles/toggle.css +6 -1
  96. package/tooltip/src/styles/_vars.css +1 -1
  97. package/tooltip/src/styles/tooltip.css +13 -14
  98. package/types/frame-ui-ng-components-accordion.d.ts +69 -61
  99. package/types/frame-ui-ng-components-calendar.d.ts +7 -7
  100. package/types/frame-ui-ng-components-collapsible.d.ts +12 -4
  101. package/types/frame-ui-ng-components-combobox.d.ts +8 -0
  102. package/types/frame-ui-ng-components-date-picker.d.ts +2 -4
  103. package/types/frame-ui-ng-components-sheet.d.ts +6 -2
  104. package/types/frame-ui-ng-components.d.ts +172 -135
  105. package/src/styles/blueprint.css +0 -707
  106. package/styles/blueprint.css +0 -707
@@ -1,181 +1,233 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, ElementRef, Directive, input, booleanAttribute, computed, output, linkedSignal, NgModule } from '@angular/core';
2
+ import { inject, TemplateRef, Directive, InjectionToken, DestroyRef, signal, contentChild, viewChild, input, booleanAttribute, computed, effect, Component, output, NgModule } from '@angular/core';
3
+ import { NgTemplateOutlet } from '@angular/common';
4
+ import * as i1 from '@angular/cdk/accordion';
5
+ import { CdkAccordionItem, CdkAccordion } from '@angular/cdk/accordion';
6
+
7
+ /** Content template for accordion items. */
8
+ class FrAccordionContent {
9
+ templateRef = inject((TemplateRef));
10
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrAccordionContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
11
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrAccordionContent, isStandalone: true, selector: "ng-template[frameAccordionContent]", ngImport: i0 });
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrAccordionContent, decorators: [{
14
+ type: Directive,
15
+ args: [{
16
+ selector: 'ng-template[frameAccordionContent]',
17
+ standalone: true,
18
+ }]
19
+ }] });
3
20
 
4
21
  const ACCORDION_ROOT = new InjectionToken('FrAccordion');
5
22
  const ACCORDION_ITEM = new InjectionToken('FrAccordionItem');
6
23
 
7
- /** Content slot for accordion. */
8
- class FrAccordionContent {
9
- host = inject(ElementRef);
10
- item = inject(ACCORDION_ITEM);
11
- initialized = false;
12
- lastOpen = false;
13
- rafIds = [];
14
- ngAfterViewInit() {
15
- this.lastOpen = this.item.open();
16
- this.applyStaticState(this.lastOpen);
17
- this.initialized = true;
24
+ /** Accordion item powered by Angular CDK accordion item state. */
25
+ class FrAccordionItem {
26
+ root = inject(ACCORDION_ROOT);
27
+ cdkItem = inject(CdkAccordionItem, { self: true });
28
+ destroyRef = inject(DestroyRef);
29
+ expanded = signal(false, ...(ngDevMode ? [{ debugName: "expanded" }] : /* istanbul ignore next */ []));
30
+ frameId = null;
31
+ syncingDefaultState = false;
32
+ content = contentChild(FrAccordionContent, ...(ngDevMode ? [{ debugName: "content" }] : /* istanbul ignore next */ []));
33
+ contentPanel = viewChild('contentPanel', ...(ngDevMode ? [{ debugName: "contentPanel" }] : /* istanbul ignore next */ []));
34
+ value = input.required(...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
35
+ disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
36
+ open = computed(() => this.expanded(), ...(ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []));
37
+ contentHeight = signal('0px', ...(ngDevMode ? [{ debugName: "contentHeight" }] : /* istanbul ignore next */ []));
38
+ triggerId = computed(() => `frame-accordion-trigger-${this.cdkItem.id}`, ...(ngDevMode ? [{ debugName: "triggerId" }] : /* istanbul ignore next */ []));
39
+ contentId = computed(() => `frame-accordion-content-${this.cdkItem.id}`, ...(ngDevMode ? [{ debugName: "contentId" }] : /* istanbul ignore next */ []));
40
+ constructor() {
41
+ const expandedSubscription = this.cdkItem.expandedChange.subscribe((expanded) => {
42
+ this.setExpanded(expanded, !this.syncingDefaultState);
43
+ if (!this.syncingDefaultState) {
44
+ this.root.itemExpansionChanged(this.value(), expanded);
45
+ }
46
+ });
47
+ this.destroyRef.onDestroy(() => {
48
+ expandedSubscription.unsubscribe();
49
+ this.cancelFrame();
50
+ });
51
+ effect(() => {
52
+ this.cdkItem.disabled = this.disabled();
53
+ });
54
+ effect(() => {
55
+ this.syncingDefaultState = true;
56
+ const shouldBeExpanded = this.root.isDefaultItemOpen(this.value());
57
+ if (this.cdkItem.expanded !== shouldBeExpanded) {
58
+ this.cdkItem.expanded = shouldBeExpanded;
59
+ this.setExpanded(shouldBeExpanded, false);
60
+ }
61
+ this.syncingDefaultState = false;
62
+ });
18
63
  }
19
- ngDoCheck() {
20
- const open = this.item.open();
21
- if (!this.initialized || open === this.lastOpen) {
64
+ toggle() {
65
+ if (this.disabled()) {
22
66
  return;
23
67
  }
24
- this.cancelAnimationFrame();
25
- this.lastOpen = open;
26
- this.animate(open);
27
- }
28
- ngOnDestroy() {
29
- this.cancelAnimationFrame();
68
+ if (this.open() && this.root.type() === 'single' && !this.root.collapsible()) {
69
+ return;
70
+ }
71
+ this.root.syncCdkMode();
72
+ this.cdkItem.toggle();
30
73
  }
31
- onTransitionEnd(event) {
32
- if (event.target !== this.host.nativeElement || event.propertyName !== 'height') {
74
+ onContentTransitionEnd(event) {
75
+ if (event.target !== this.contentPanel()?.nativeElement || event.propertyName !== 'height') {
33
76
  return;
34
77
  }
35
- if (!this.item.open()) {
36
- this.host.nativeElement.style.visibility = 'hidden';
78
+ if (this.open()) {
79
+ this.contentHeight.set('auto');
37
80
  return;
38
81
  }
39
- this.host.nativeElement.style.height = 'auto';
40
82
  }
41
- animate(open) {
42
- const element = this.host.nativeElement;
43
- const currentHeight = element.getBoundingClientRect().height;
44
- const contentHeight = this.measureContentHeight();
45
- if (open) {
46
- element.style.visibility = 'visible';
47
- element.style.height = `${currentHeight}px`;
48
- if (currentHeight === 0) {
49
- element.style.opacity = '0';
50
- }
51
- void element.offsetHeight;
52
- this.requestAnimationFrame(() => {
53
- element.style.height = `${contentHeight}px`;
54
- element.style.opacity = '1';
55
- });
83
+ setExpanded(expanded, animate) {
84
+ this.expanded.set(expanded);
85
+ if (expanded) {
86
+ this.openContent(animate);
56
87
  return;
57
88
  }
58
- element.style.height = `${currentHeight || contentHeight}px`;
59
- element.style.opacity = '1';
60
- void element.offsetHeight;
61
- this.requestAnimationFrame(() => {
62
- element.style.height = '0px';
63
- element.style.opacity = '0';
64
- });
65
- }
66
- applyStaticState(open) {
67
- const element = this.host.nativeElement;
68
- element.style.height = open ? 'auto' : '0px';
69
- element.style.opacity = open ? '1' : '0';
70
- element.style.visibility = open ? 'visible' : 'hidden';
71
- }
72
- measureContentHeight() {
73
- return this.host.nativeElement.scrollHeight;
89
+ this.closeContent(animate);
74
90
  }
75
- cancelAnimationFrame() {
76
- for (const rafId of this.rafIds) {
77
- cancelAnimationFrame(rafId);
91
+ openContent(animate) {
92
+ this.cancelFrame();
93
+ if (!animate) {
94
+ this.contentHeight.set('auto');
95
+ return;
78
96
  }
79
- this.rafIds = [];
97
+ this.contentHeight.set('0px');
98
+ this.scheduleFrame(() => {
99
+ const panel = this.contentPanel()?.nativeElement;
100
+ if (!panel || !this.open()) {
101
+ return;
102
+ }
103
+ this.contentHeight.set(`${panel.scrollHeight}px`);
104
+ });
80
105
  }
81
- requestAnimationFrame(callback) {
82
- const rafId = requestAnimationFrame((time) => {
83
- this.rafIds = this.rafIds.filter((id) => id !== rafId);
84
- callback(time);
106
+ closeContent(animate) {
107
+ this.cancelFrame();
108
+ const panel = this.contentPanel()?.nativeElement;
109
+ if (!animate || !panel) {
110
+ this.contentHeight.set('0px');
111
+ return;
112
+ }
113
+ this.contentHeight.set(`${panel.getBoundingClientRect().height}px`);
114
+ this.scheduleFrame(() => {
115
+ if (this.open()) {
116
+ return;
117
+ }
118
+ this.contentHeight.set('0px');
85
119
  });
86
- this.rafIds.push(rafId);
87
120
  }
88
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrAccordionContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
89
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrAccordionContent, isStandalone: true, selector: "[frAccordionContent]", host: { attributes: { "role": "region" }, listeners: { "transitionend": "onTransitionEnd($event)" }, properties: { "attr.aria-hidden": "item.open() ? \"false\" : \"true\"", "attr.aria-labelledby": "item.triggerId()", "attr.data-state": "item.open() ? \"open\" : \"closed\"", "attr.id": "item.contentId()" }, classAttribute: "frame-accordion__content" }, ngImport: i0 });
90
- }
91
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrAccordionContent, decorators: [{
92
- type: Directive,
93
- args: [{
94
- selector: '[frAccordionContent]',
95
- standalone: true,
96
- host: {
97
- class: 'frame-accordion__content',
98
- '[attr.aria-hidden]': 'item.open() ? "false" : "true"',
99
- '[attr.aria-labelledby]': 'item.triggerId()',
100
- '[attr.data-state]': 'item.open() ? "open" : "closed"',
101
- '[attr.id]': 'item.contentId()',
102
- '(transitionend)': 'onTransitionEnd($event)',
103
- 'role': 'region',
104
- },
105
- }]
106
- }] });
107
-
108
- let accordionItemId = 0;
109
- /** Item slot for accordion. */
110
- class FrAccordionItem {
111
- root = inject(ACCORDION_ROOT);
112
- itemId = ++accordionItemId;
113
- value = input.required(...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
114
- disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
115
- open = computed(() => this.root.isItemOpen(this.value()), ...(ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []));
116
- triggerId = computed(() => `frame-accordion-trigger-${this.itemId}`, ...(ngDevMode ? [{ debugName: "triggerId" }] : /* istanbul ignore next */ []));
117
- contentId = computed(() => `frame-accordion-content-${this.itemId}`, ...(ngDevMode ? [{ debugName: "contentId" }] : /* istanbul ignore next */ []));
118
- toggle() {
119
- if (this.disabled()) {
121
+ scheduleFrame(callback) {
122
+ if (typeof globalThis.requestAnimationFrame === 'function') {
123
+ this.frameId = globalThis.requestAnimationFrame(callback);
120
124
  return;
121
125
  }
122
- this.root.toggleItem(this.value());
126
+ callback();
123
127
  }
124
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrAccordionItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
125
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrAccordionItem, isStandalone: true, selector: "[frAccordionItem]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-disabled": "disabled() ? \"\" : null", "attr.data-state": "open() ? \"open\" : \"closed\"" }, classAttribute: "frame-accordion__item" }, providers: [{ provide: ACCORDION_ITEM, useExisting: FrAccordionItem }], exportAs: ["frAccordionItem"], ngImport: i0 });
128
+ cancelFrame() {
129
+ if (this.frameId == null || typeof globalThis.cancelAnimationFrame !== 'function') {
130
+ this.frameId = null;
131
+ return;
132
+ }
133
+ globalThis.cancelAnimationFrame(this.frameId);
134
+ this.frameId = null;
135
+ }
136
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrAccordionItem, deps: [], target: i0.ɵɵFactoryTarget.Component });
137
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.16", type: FrAccordionItem, isStandalone: true, selector: "frame-accordion-item", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-disabled": "disabled() ? \"\" : null", "attr.data-state": "open() ? \"open\" : \"closed\"" }, classAttribute: "frame-accordion__item" }, providers: [{ provide: ACCORDION_ITEM, useExisting: FrAccordionItem }], queries: [{ propertyName: "content", first: true, predicate: FrAccordionContent, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "contentPanel", first: true, predicate: ["contentPanel"], descendants: true, isSignal: true }], exportAs: ["frameAccordionItem"], hostDirectives: [{ directive: i1.CdkAccordionItem }], ngImport: i0, template: `
138
+ <ng-content select="button[frameAccordionTrigger]" />
139
+
140
+ <div
141
+ #contentPanel
142
+ class="frame-accordion__content"
143
+ [attr.aria-hidden]="open() ? null : 'true'"
144
+ [attr.aria-labelledby]="triggerId()"
145
+ [attr.id]="contentId()"
146
+ [attr.data-state]="open() ? 'open' : 'closed'"
147
+ [style.height]="contentHeight()"
148
+ (transitionend)="onContentTransitionEnd($event)"
149
+ role="region"
150
+ >
151
+ <div class="frame-accordion__content-inner">
152
+ <ng-container [ngTemplateOutlet]="content()?.templateRef ?? null" />
153
+ </div>
154
+ </div>
155
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
126
156
  }
127
157
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrAccordionItem, decorators: [{
128
- type: Directive,
158
+ type: Component,
129
159
  args: [{
130
- selector: '[frAccordionItem]',
131
- exportAs: 'frAccordionItem',
160
+ selector: 'frame-accordion-item',
161
+ exportAs: 'frameAccordionItem',
132
162
  standalone: true,
163
+ imports: [NgTemplateOutlet],
164
+ hostDirectives: [CdkAccordionItem],
133
165
  providers: [{ provide: ACCORDION_ITEM, useExisting: FrAccordionItem }],
134
166
  host: {
135
167
  class: 'frame-accordion__item',
136
168
  '[attr.data-disabled]': 'disabled() ? "" : null',
137
169
  '[attr.data-state]': 'open() ? "open" : "closed"',
138
170
  },
171
+ template: `
172
+ <ng-content select="button[frameAccordionTrigger]" />
173
+
174
+ <div
175
+ #contentPanel
176
+ class="frame-accordion__content"
177
+ [attr.aria-hidden]="open() ? null : 'true'"
178
+ [attr.aria-labelledby]="triggerId()"
179
+ [attr.id]="contentId()"
180
+ [attr.data-state]="open() ? 'open' : 'closed'"
181
+ [style.height]="contentHeight()"
182
+ (transitionend)="onContentTransitionEnd($event)"
183
+ role="region"
184
+ >
185
+ <div class="frame-accordion__content-inner">
186
+ <ng-container [ngTemplateOutlet]="content()?.templateRef ?? null" />
187
+ </div>
188
+ </div>
189
+ `,
139
190
  }]
140
- }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
191
+ }], ctorParameters: () => [], propDecorators: { content: [{ type: i0.ContentChild, args: [i0.forwardRef(() => FrAccordionContent), { isSignal: true }] }], contentPanel: [{ type: i0.ViewChild, args: ['contentPanel', { isSignal: true }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
141
192
 
142
- /** Accordion component primitive. */
193
+ /** Accordion root powered by Angular CDK accordion state management. */
143
194
  class FrAccordion {
195
+ cdkAccordion = inject(CdkAccordion, { self: true });
144
196
  type = input('single', ...(ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []));
145
- border = input(true, { ...(ngDevMode ? { debugName: "border" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
197
+ border = input(false, { ...(ngDevMode ? { debugName: "border" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
146
198
  collapsible = input(false, { ...(ngDevMode ? { debugName: "collapsible" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
147
199
  defaultValue = input(null, ...(ngDevMode ? [{ debugName: "defaultValue" }] : /* istanbul ignore next */ []));
148
200
  valueChange = output();
149
- openItems = linkedSignal(() => this.normalizeValues(this.defaultValue(), this.type()), ...(ngDevMode ? [{ debugName: "openItems" }] : /* istanbul ignore next */ []));
150
- isItemOpen(value) {
151
- return this.openItems().includes(value);
201
+ defaultOpenValues = computed(() => this.normalizeValues(this.defaultValue(), this.type()), ...(ngDevMode ? [{ debugName: "defaultOpenValues" }] : /* istanbul ignore next */ []));
202
+ currentOpenValues = signal([], ...(ngDevMode ? [{ debugName: "currentOpenValues" }] : /* istanbul ignore next */ []));
203
+ openValues = computed(() => new Set(this.currentOpenValues()), ...(ngDevMode ? [{ debugName: "openValues" }] : /* istanbul ignore next */ []));
204
+ constructor() {
205
+ effect(() => {
206
+ this.cdkAccordion.multi = this.type() === 'multiple';
207
+ this.currentOpenValues.set(this.defaultOpenValues());
208
+ });
152
209
  }
153
- toggleItem(value) {
154
- const current = this.openItems();
155
- const isOpen = current.includes(value);
156
- if (this.type() === 'multiple') {
157
- const next = isOpen
158
- ? current.filter((item) => item !== value)
159
- : [...current, value];
160
- this.commit(next);
161
- return;
162
- }
163
- if (isOpen) {
164
- if (!this.collapsible()) {
165
- return;
166
- }
167
- this.commit([]);
168
- return;
169
- }
170
- this.commit([value]);
210
+ isDefaultItemOpen(value) {
211
+ return this.currentOpenValues().includes(value);
171
212
  }
172
- commit(next) {
173
- this.openItems.set(next);
174
- if (this.type() === 'multiple') {
175
- this.valueChange.emit(next);
176
- return;
177
- }
178
- this.valueChange.emit(next[0] ?? null);
213
+ itemExpansionChanged(value, expanded) {
214
+ const current = this.openValues();
215
+ const next = expanded
216
+ ? this.type() === 'multiple'
217
+ ? [...new Set([...current, value])]
218
+ : [value]
219
+ : [...current].filter((item) => item !== value);
220
+ this.currentOpenValues.set(next);
221
+ this.valueChange.emit(this.type() === 'multiple' ? next : (next[0] ?? null));
222
+ }
223
+ openAll() {
224
+ this.cdkAccordion.openAll();
225
+ }
226
+ closeAll() {
227
+ this.cdkAccordion.closeAll();
228
+ }
229
+ syncCdkMode() {
230
+ this.cdkAccordion.multi = this.type() === 'multiple';
179
231
  }
180
232
  normalizeValues(value, type) {
181
233
  if (Array.isArray(value)) {
@@ -186,34 +238,36 @@ class FrAccordion {
186
238
  }
187
239
  return [value];
188
240
  }
189
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrAccordion, deps: [], target: i0.ɵɵFactoryTarget.Directive });
190
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrAccordion, isStandalone: true, selector: "[frAccordion]", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, border: { classPropertyName: "border", publicName: "border", isSignal: true, isRequired: false, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null }, defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, host: { properties: { "attr.data-border": "border() ? \"true\" : \"false\"", "attr.data-type": "type()" }, classAttribute: "frame-accordion" }, providers: [{ provide: ACCORDION_ROOT, useExisting: FrAccordion }], exportAs: ["frAccordion"], ngImport: i0 });
241
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrAccordion, deps: [], target: i0.ɵɵFactoryTarget.Component });
242
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.16", type: FrAccordion, isStandalone: true, selector: "frame-accordion", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, border: { classPropertyName: "border", publicName: "border", isSignal: true, isRequired: false, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null }, defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, host: { properties: { "attr.data-border": "border() ? \"true\" : \"false\"", "attr.data-type": "type()" }, classAttribute: "frame-accordion" }, providers: [{ provide: ACCORDION_ROOT, useExisting: FrAccordion }], exportAs: ["frameAccordion"], hostDirectives: [{ directive: i1.CdkAccordion }], ngImport: i0, template: `<ng-content />`, isInline: true });
191
243
  }
192
244
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrAccordion, decorators: [{
193
- type: Directive,
245
+ type: Component,
194
246
  args: [{
195
- selector: '[frAccordion]',
196
- exportAs: 'frAccordion',
247
+ selector: 'frame-accordion',
248
+ exportAs: 'frameAccordion',
197
249
  standalone: true,
250
+ hostDirectives: [CdkAccordion],
198
251
  providers: [{ provide: ACCORDION_ROOT, useExisting: FrAccordion }],
199
252
  host: {
200
253
  class: 'frame-accordion',
201
254
  '[attr.data-border]': 'border() ? "true" : "false"',
202
255
  '[attr.data-type]': 'type()',
203
256
  },
257
+ template: `<ng-content />`,
204
258
  }]
205
- }], propDecorators: { type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], border: [{ type: i0.Input, args: [{ isSignal: true, alias: "border", required: false }] }], collapsible: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsible", required: false }] }], defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] } });
259
+ }], ctorParameters: () => [], propDecorators: { type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], border: [{ type: i0.Input, args: [{ isSignal: true, alias: "border", required: false }] }], collapsible: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsible", required: false }] }], defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] } });
206
260
 
207
- /** Trigger control for accordion. */
261
+ /** Trigger control for accordion items. */
208
262
  class FrAccordionTrigger {
209
263
  item = inject(ACCORDION_ITEM);
210
264
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrAccordionTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
211
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrAccordionTrigger, isStandalone: true, selector: "button[frAccordionTrigger]", host: { attributes: { "type": "button" }, listeners: { "click": "item.toggle()" }, properties: { "attr.aria-controls": "item.contentId()", "attr.aria-expanded": "item.open() ? \"true\" : \"false\"", "attr.data-disabled": "item.disabled() ? \"\" : null", "attr.data-state": "item.open() ? \"open\" : \"closed\"", "attr.disabled": "item.disabled() ? \"\" : null", "attr.id": "item.triggerId()" }, classAttribute: "frame-accordion__trigger" }, ngImport: i0 });
265
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrAccordionTrigger, isStandalone: true, selector: "button[frameAccordionTrigger]", host: { attributes: { "type": "button" }, listeners: { "click": "item.toggle()" }, properties: { "attr.aria-controls": "item.contentId()", "attr.aria-expanded": "item.open() ? \"true\" : \"false\"", "attr.data-disabled": "item.disabled() ? \"\" : null", "attr.data-state": "item.open() ? \"open\" : \"closed\"", "attr.disabled": "item.disabled() ? \"\" : null", "attr.id": "item.triggerId()" }, classAttribute: "frame-accordion__trigger" }, ngImport: i0 });
212
266
  }
213
267
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrAccordionTrigger, decorators: [{
214
268
  type: Directive,
215
269
  args: [{
216
- selector: 'button[frAccordionTrigger]',
270
+ selector: 'button[frameAccordionTrigger]',
217
271
  standalone: true,
218
272
  host: {
219
273
  class: 'frame-accordion__trigger',
@@ -228,15 +282,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
228
282
  },
229
283
  }]
230
284
  }] });
231
- /** Icon slot for accordion. */
285
+ /** Optional icon slot for accordion triggers. */
232
286
  class FrAccordionIcon {
233
287
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrAccordionIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
234
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrAccordionIcon, isStandalone: true, selector: "[frAccordionIcon]", host: { attributes: { "aria-hidden": "true" }, classAttribute: "frame-accordion__icon" }, ngImport: i0 });
288
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrAccordionIcon, isStandalone: true, selector: "[frameAccordionIcon]", host: { attributes: { "aria-hidden": "true" }, classAttribute: "frame-accordion__icon" }, ngImport: i0 });
235
289
  }
236
290
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrAccordionIcon, decorators: [{
237
291
  type: Directive,
238
292
  args: [{
239
- selector: '[frAccordionIcon]',
293
+ selector: '[frameAccordionIcon]',
240
294
  standalone: true,
241
295
  host: {
242
296
  class: 'frame-accordion__icon',
@@ -1 +1 @@
1
- {"version":3,"file":"frame-ui-ng-components-accordion.mjs","sources":["../../../projects/components/accordion/src/accordion.tokens.ts","../../../projects/components/accordion/src/accordion.content.ts","../../../projects/components/accordion/src/accordion.item.ts","../../../projects/components/accordion/src/accordion.root.ts","../../../projects/components/accordion/src/accordion.trigger.ts","../../../projects/components/accordion/src/accordion.types.ts","../../../projects/components/accordion/accordion.module.ts","../../../projects/components/accordion/frame-ui-ng-components-accordion.ts"],"sourcesContent":["import { InjectionToken, Signal } from '@angular/core';\n\nexport interface FrAccordionRootContext {\n isItemOpen(value: string): boolean;\n toggleItem(value: string): void;\n}\n\nexport interface FrAccordionItemContext {\n readonly contentId: Signal<string>;\n readonly disabled: Signal<boolean>;\n readonly open: Signal<boolean>;\n readonly triggerId: Signal<string>;\n toggle(): void;\n}\n\nexport const ACCORDION_ROOT = new InjectionToken<FrAccordionRootContext>('FrAccordion');\nexport const ACCORDION_ITEM = new InjectionToken<FrAccordionItemContext>('FrAccordionItem');\n","import { AfterViewInit, Directive, DoCheck, ElementRef, OnDestroy, inject } from '@angular/core';\r\n\r\nimport { ACCORDION_ITEM } from './accordion.tokens';\r\n\r\n/** Content slot for accordion. */\r\n@Directive({\r\n selector: '[frAccordionContent]',\r\n standalone: true,\r\n host: {\r\n class: 'frame-accordion__content',\r\n '[attr.aria-hidden]': 'item.open() ? \"false\" : \"true\"',\r\n '[attr.aria-labelledby]': 'item.triggerId()',\r\n '[attr.data-state]': 'item.open() ? \"open\" : \"closed\"',\r\n '[attr.id]': 'item.contentId()',\r\n '(transitionend)': 'onTransitionEnd($event)',\r\n 'role': 'region',\r\n },\r\n})\r\nexport class FrAccordionContent implements AfterViewInit, DoCheck, OnDestroy {\r\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\r\n protected readonly item = inject(ACCORDION_ITEM);\r\n private initialized = false;\r\n private lastOpen = false;\r\n private rafIds: number[] = [];\r\n\r\n ngAfterViewInit(): void {\r\n this.lastOpen = this.item.open();\r\n this.applyStaticState(this.lastOpen);\r\n this.initialized = true;\r\n }\r\n\r\n ngDoCheck(): void {\r\n const open = this.item.open();\r\n\r\n if (!this.initialized || open === this.lastOpen) {\r\n return;\r\n }\r\n\r\n this.cancelAnimationFrame();\r\n this.lastOpen = open;\r\n this.animate(open);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.cancelAnimationFrame();\r\n }\r\n\r\n onTransitionEnd(event: TransitionEvent): void {\r\n if (event.target !== this.host.nativeElement || event.propertyName !== 'height') {\r\n return;\r\n }\r\n\r\n if (!this.item.open()) {\r\n this.host.nativeElement.style.visibility = 'hidden';\r\n return;\r\n }\r\n\r\n this.host.nativeElement.style.height = 'auto';\r\n }\r\n\r\n private animate(open: boolean): void {\r\n const element = this.host.nativeElement;\r\n const currentHeight = element.getBoundingClientRect().height;\r\n const contentHeight = this.measureContentHeight();\r\n\r\n if (open) {\r\n element.style.visibility = 'visible';\r\n element.style.height = `${currentHeight}px`;\r\n\r\n if (currentHeight === 0) {\r\n element.style.opacity = '0';\r\n }\r\n\r\n void element.offsetHeight;\r\n\r\n this.requestAnimationFrame(() => {\r\n element.style.height = `${contentHeight}px`;\r\n element.style.opacity = '1';\r\n });\r\n return;\r\n }\r\n\r\n element.style.height = `${currentHeight || contentHeight}px`;\r\n element.style.opacity = '1';\r\n void element.offsetHeight;\r\n\r\n this.requestAnimationFrame(() => {\r\n element.style.height = '0px';\r\n element.style.opacity = '0';\r\n });\r\n }\r\n\r\n private applyStaticState(open: boolean): void {\r\n const element = this.host.nativeElement;\r\n\r\n element.style.height = open ? 'auto' : '0px';\r\n element.style.opacity = open ? '1' : '0';\r\n element.style.visibility = open ? 'visible' : 'hidden';\r\n }\r\n\r\n private measureContentHeight(): number {\r\n return this.host.nativeElement.scrollHeight;\r\n }\r\n\r\n private cancelAnimationFrame(): void {\r\n for (const rafId of this.rafIds) {\r\n cancelAnimationFrame(rafId);\r\n }\r\n\r\n this.rafIds = [];\r\n }\r\n\r\n private requestAnimationFrame(callback: FrameRequestCallback): void {\r\n const rafId = requestAnimationFrame((time) => {\r\n this.rafIds = this.rafIds.filter((id) => id !== rafId);\r\n callback(time);\r\n });\r\n\r\n this.rafIds.push(rafId);\r\n }\r\n}\r\n","import {\r\n Directive,\r\n booleanAttribute,\r\n computed,\r\n inject,\r\n input,\r\n} from '@angular/core';\r\n\r\nimport { ACCORDION_ITEM, ACCORDION_ROOT } from './accordion.tokens';\r\n\r\nlet accordionItemId = 0;\r\n\r\n/** Item slot for accordion. */\r\n@Directive({\r\n selector: '[frAccordionItem]',\r\n exportAs: 'frAccordionItem',\r\n standalone: true,\r\n providers: [{ provide: ACCORDION_ITEM, useExisting: FrAccordionItem }],\r\n host: {\r\n class: 'frame-accordion__item',\r\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\r\n '[attr.data-state]': 'open() ? \"open\" : \"closed\"',\r\n },\r\n})\r\nexport class FrAccordionItem {\r\n private readonly root = inject(ACCORDION_ROOT);\r\n private readonly itemId = ++accordionItemId;\r\n\r\n readonly value = input.required<string>();\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n readonly open = computed(() => this.root.isItemOpen(this.value()));\r\n readonly triggerId = computed(() => `frame-accordion-trigger-${this.itemId}`);\r\n readonly contentId = computed(() => `frame-accordion-content-${this.itemId}`);\r\n\r\n toggle(): void {\r\n if (this.disabled()) {\r\n return;\r\n }\r\n\r\n this.root.toggleItem(this.value());\r\n }\r\n}\r\n","import {\r\n Directive,\r\n booleanAttribute,\r\n input,\r\n linkedSignal,\r\n output,\r\n} from '@angular/core';\r\n\r\nimport { ACCORDION_ROOT } from './accordion.tokens';\r\nimport { FrAccordionType } from './accordion.types';\r\n\r\n/** Accordion component primitive. */\r\n@Directive({\r\n selector: '[frAccordion]',\r\n exportAs: 'frAccordion',\r\n standalone: true,\r\n providers: [{ provide: ACCORDION_ROOT, useExisting: FrAccordion }],\r\n host: {\r\n class: 'frame-accordion',\r\n '[attr.data-border]': 'border() ? \"true\" : \"false\"',\r\n '[attr.data-type]': 'type()',\r\n },\r\n})\r\nexport class FrAccordion {\r\n readonly type = input<FrAccordionType>('single');\r\n readonly border = input(true, { transform: booleanAttribute });\r\n readonly collapsible = input(false, { transform: booleanAttribute });\r\n readonly defaultValue = input<string | readonly string[] | null>(null);\r\n readonly valueChange = output<string | string[] | null>();\r\n\r\n private readonly openItems = linkedSignal(() => this.normalizeValues(this.defaultValue(), this.type()));\r\n\r\n isItemOpen(value: string): boolean {\r\n return this.openItems().includes(value);\r\n }\r\n\r\n toggleItem(value: string): void {\r\n const current = this.openItems();\r\n const isOpen = current.includes(value);\r\n\r\n if (this.type() === 'multiple') {\r\n const next = isOpen\r\n ? current.filter((item) => item !== value)\r\n : [...current, value];\r\n this.commit(next);\r\n return;\r\n }\r\n\r\n if (isOpen) {\r\n if (!this.collapsible()) {\r\n return;\r\n }\r\n\r\n this.commit([]);\r\n return;\r\n }\r\n\r\n this.commit([value]);\r\n }\r\n\r\n private commit(next: string[]): void {\r\n this.openItems.set(next);\r\n\r\n if (this.type() === 'multiple') {\r\n this.valueChange.emit(next);\r\n return;\r\n }\r\n\r\n this.valueChange.emit(next[0] ?? null);\r\n }\r\n\r\n private normalizeValues(\r\n value: string | readonly string[] | null,\r\n type: FrAccordionType,\r\n ): string[] {\r\n if (Array.isArray(value)) {\r\n return type === 'multiple' ? [...value] : value.length ? [value[0]] : [];\r\n }\r\n\r\n if (value == null || value === '') {\r\n return [];\r\n }\r\n\r\n return [value as string];\r\n }\r\n}\r\n","import { Directive, inject } from '@angular/core';\r\n\r\nimport { ACCORDION_ITEM } from './accordion.tokens';\r\n\r\n/** Trigger control for accordion. */\r\n@Directive({\r\n selector: 'button[frAccordionTrigger]',\r\n standalone: true,\r\n host: {\r\n class: 'frame-accordion__trigger',\r\n '[attr.aria-controls]': 'item.contentId()',\r\n '[attr.aria-expanded]': 'item.open() ? \"true\" : \"false\"',\r\n '[attr.data-disabled]': 'item.disabled() ? \"\" : null',\r\n '[attr.data-state]': 'item.open() ? \"open\" : \"closed\"',\r\n '[attr.disabled]': 'item.disabled() ? \"\" : null',\r\n '[attr.id]': 'item.triggerId()',\r\n 'type': 'button',\r\n '(click)': 'item.toggle()',\r\n },\r\n})\r\nexport class FrAccordionTrigger {\r\n protected readonly item = inject(ACCORDION_ITEM);\r\n}\r\n\r\n/** Icon slot for accordion. */\r\n@Directive({\r\n selector: '[frAccordionIcon]',\r\n standalone: true,\r\n host: {\r\n class: 'frame-accordion__icon',\r\n 'aria-hidden': 'true',\r\n },\r\n})\r\nexport class FrAccordionIcon {}\r\n","export const FR_ACCORDION_TYPES = ['single', 'multiple'] as const;\n\nexport type FrAccordionType = (typeof FR_ACCORDION_TYPES)[number];\n","import { NgModule } from '@angular/core';\nimport {\n FrAccordion,\n FrAccordionContent,\n FrAccordionIcon,\n FrAccordionItem,\n FrAccordionTrigger,\n} from './src/accordion';\n\n@NgModule({\n imports: [\n FrAccordion,\n FrAccordionContent,\n FrAccordionIcon,\n FrAccordionItem,\n FrAccordionTrigger,\n ],\n exports: [\n FrAccordion,\n FrAccordionContent,\n FrAccordionIcon,\n FrAccordionItem,\n FrAccordionTrigger,\n ],\n})\nexport class FrAccordionModule {}\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-accordion.mjs","sources":["../../../projects/components/accordion/src/accordion.content.ts","../../../projects/components/accordion/src/accordion.tokens.ts","../../../projects/components/accordion/src/accordion.item.ts","../../../projects/components/accordion/src/accordion.root.ts","../../../projects/components/accordion/src/accordion.trigger.ts","../../../projects/components/accordion/src/accordion.types.ts","../../../projects/components/accordion/accordion.module.ts","../../../projects/components/accordion/frame-ui-ng-components-accordion.ts"],"sourcesContent":["import { Directive, TemplateRef, inject } from '@angular/core';\r\n\r\n/** Content template for accordion items. */\r\n@Directive({\r\n selector: 'ng-template[frameAccordionContent]',\r\n standalone: true,\r\n})\r\nexport class FrAccordionContent {\r\n readonly templateRef = inject(TemplateRef<unknown>);\r\n}\r\n","import { InjectionToken, Signal } from '@angular/core';\r\n\r\nimport { FrAccordionType } from './accordion.types';\r\n\r\nexport interface FrAccordionRootContext {\r\n readonly collapsible: Signal<boolean>;\r\n readonly type: Signal<FrAccordionType>;\r\n isDefaultItemOpen(value: string): boolean;\r\n itemExpansionChanged(value: string, expanded: boolean): void;\r\n syncCdkMode(): void;\r\n}\r\n\r\nexport interface FrAccordionItemContext {\r\n readonly contentId: Signal<string>;\r\n readonly disabled: Signal<boolean>;\r\n readonly open: Signal<boolean>;\r\n readonly triggerId: Signal<string>;\r\n toggle(): void;\r\n}\r\n\r\nexport const ACCORDION_ROOT = new InjectionToken<FrAccordionRootContext>('FrAccordion');\r\nexport const ACCORDION_ITEM = new InjectionToken<FrAccordionItemContext>('FrAccordionItem');\r\n","import {\r\n Component,\r\n DestroyRef,\r\n ElementRef,\r\n booleanAttribute,\r\n computed,\r\n contentChild,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { CdkAccordionItem } from '@angular/cdk/accordion';\r\n\r\nimport { ACCORDION_ITEM, ACCORDION_ROOT } from './accordion.tokens';\r\nimport { FrAccordionContent } from './accordion.content';\r\n\r\n/** Accordion item powered by Angular CDK accordion item state. */\r\n@Component({\r\n selector: 'frame-accordion-item',\r\n exportAs: 'frameAccordionItem',\r\n standalone: true,\r\n imports: [NgTemplateOutlet],\r\n hostDirectives: [CdkAccordionItem],\r\n providers: [{ provide: ACCORDION_ITEM, useExisting: FrAccordionItem }],\r\n host: {\r\n class: 'frame-accordion__item',\r\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\r\n '[attr.data-state]': 'open() ? \"open\" : \"closed\"',\r\n },\r\n template: `\r\n <ng-content select=\"button[frameAccordionTrigger]\" />\r\n\r\n <div\r\n #contentPanel\r\n class=\"frame-accordion__content\"\r\n [attr.aria-hidden]=\"open() ? null : 'true'\"\r\n [attr.aria-labelledby]=\"triggerId()\"\r\n [attr.id]=\"contentId()\"\r\n [attr.data-state]=\"open() ? 'open' : 'closed'\"\r\n [style.height]=\"contentHeight()\"\r\n (transitionend)=\"onContentTransitionEnd($event)\"\r\n role=\"region\"\r\n >\r\n <div class=\"frame-accordion__content-inner\">\r\n <ng-container [ngTemplateOutlet]=\"content()?.templateRef ?? null\" />\r\n </div>\r\n </div>\r\n `,\r\n})\r\nexport class FrAccordionItem {\r\n private readonly root = inject(ACCORDION_ROOT);\r\n private readonly cdkItem = inject(CdkAccordionItem, { self: true });\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly expanded = signal(false);\r\n private frameId: number | null = null;\r\n private syncingDefaultState = false;\r\n\r\n readonly content = contentChild(FrAccordionContent);\r\n readonly contentPanel = viewChild<ElementRef<HTMLElement>>('contentPanel');\r\n readonly value = input.required<string>();\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n readonly open = computed(() => this.expanded());\r\n readonly contentHeight = signal('0px');\r\n readonly triggerId = computed(() => `frame-accordion-trigger-${this.cdkItem.id}`);\r\n readonly contentId = computed(() => `frame-accordion-content-${this.cdkItem.id}`);\r\n\r\n constructor() {\r\n const expandedSubscription = this.cdkItem.expandedChange.subscribe((expanded) => {\r\n this.setExpanded(expanded, !this.syncingDefaultState);\r\n\r\n if (!this.syncingDefaultState) {\r\n this.root.itemExpansionChanged(this.value(), expanded);\r\n }\r\n });\r\n\r\n this.destroyRef.onDestroy(() => {\r\n expandedSubscription.unsubscribe();\r\n this.cancelFrame();\r\n });\r\n\r\n effect(() => {\r\n this.cdkItem.disabled = this.disabled();\r\n });\r\n\r\n effect(() => {\r\n this.syncingDefaultState = true;\r\n const shouldBeExpanded = this.root.isDefaultItemOpen(this.value());\r\n\r\n if (this.cdkItem.expanded !== shouldBeExpanded) {\r\n this.cdkItem.expanded = shouldBeExpanded;\r\n this.setExpanded(shouldBeExpanded, false);\r\n }\r\n\r\n this.syncingDefaultState = false;\r\n });\r\n }\r\n\r\n toggle(): void {\r\n if (this.disabled()) {\r\n return;\r\n }\r\n\r\n if (this.open() && this.root.type() === 'single' && !this.root.collapsible()) {\r\n return;\r\n }\r\n\r\n this.root.syncCdkMode();\r\n this.cdkItem.toggle();\r\n }\r\n\r\n onContentTransitionEnd(event: TransitionEvent): void {\r\n if (event.target !== this.contentPanel()?.nativeElement || event.propertyName !== 'height') {\r\n return;\r\n }\r\n\r\n if (this.open()) {\r\n this.contentHeight.set('auto');\r\n return;\r\n }\r\n }\r\n\r\n private setExpanded(expanded: boolean, animate: boolean): void {\r\n this.expanded.set(expanded);\r\n\r\n if (expanded) {\r\n this.openContent(animate);\r\n return;\r\n }\r\n\r\n this.closeContent(animate);\r\n }\r\n\r\n private openContent(animate: boolean): void {\r\n this.cancelFrame();\r\n\r\n if (!animate) {\r\n this.contentHeight.set('auto');\r\n return;\r\n }\r\n\r\n this.contentHeight.set('0px');\r\n this.scheduleFrame(() => {\r\n const panel = this.contentPanel()?.nativeElement;\r\n\r\n if (!panel || !this.open()) {\r\n return;\r\n }\r\n\r\n this.contentHeight.set(`${panel.scrollHeight}px`);\r\n });\r\n }\r\n\r\n private closeContent(animate: boolean): void {\r\n this.cancelFrame();\r\n const panel = this.contentPanel()?.nativeElement;\r\n\r\n if (!animate || !panel) {\r\n this.contentHeight.set('0px');\r\n return;\r\n }\r\n\r\n this.contentHeight.set(`${panel.getBoundingClientRect().height}px`);\r\n this.scheduleFrame(() => {\r\n if (this.open()) {\r\n return;\r\n }\r\n\r\n this.contentHeight.set('0px');\r\n });\r\n }\r\n\r\n private scheduleFrame(callback: () => void): void {\r\n if (typeof globalThis.requestAnimationFrame === 'function') {\r\n this.frameId = globalThis.requestAnimationFrame(callback);\r\n return;\r\n }\r\n\r\n callback();\r\n }\r\n\r\n private cancelFrame(): void {\r\n if (this.frameId == null || typeof globalThis.cancelAnimationFrame !== 'function') {\r\n this.frameId = null;\r\n return;\r\n }\r\n\r\n globalThis.cancelAnimationFrame(this.frameId);\r\n this.frameId = null;\r\n }\r\n}\r\n","import {\r\n Component,\r\n booleanAttribute,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { CdkAccordion } from '@angular/cdk/accordion';\r\n\r\nimport { ACCORDION_ROOT } from './accordion.tokens';\r\nimport { FrAccordionType } from './accordion.types';\r\n\r\n/** Accordion root powered by Angular CDK accordion state management. */\r\n@Component({\r\n selector: 'frame-accordion',\r\n exportAs: 'frameAccordion',\r\n standalone: true,\r\n hostDirectives: [CdkAccordion],\r\n providers: [{ provide: ACCORDION_ROOT, useExisting: FrAccordion }],\r\n host: {\r\n class: 'frame-accordion',\r\n '[attr.data-border]': 'border() ? \"true\" : \"false\"',\r\n '[attr.data-type]': 'type()',\r\n },\r\n template: `<ng-content />`,\r\n})\r\nexport class FrAccordion {\r\n private readonly cdkAccordion = inject(CdkAccordion, { self: true });\r\n\r\n readonly type = input<FrAccordionType>('single');\r\n readonly border = input(false, { transform: booleanAttribute });\r\n readonly collapsible = input(false, { transform: booleanAttribute });\r\n readonly defaultValue = input<string | readonly string[] | null>(null);\r\n readonly valueChange = output<string | string[] | null>();\r\n\r\n private readonly defaultOpenValues = computed(() =>\r\n this.normalizeValues(this.defaultValue(), this.type()),\r\n );\r\n private readonly currentOpenValues = signal<string[]>([]);\r\n private readonly openValues = computed(() => new Set(this.currentOpenValues()));\r\n\r\n constructor() {\r\n effect(() => {\r\n this.cdkAccordion.multi = this.type() === 'multiple';\r\n this.currentOpenValues.set(this.defaultOpenValues());\r\n });\r\n }\r\n\r\n isDefaultItemOpen(value: string): boolean {\r\n return this.currentOpenValues().includes(value);\r\n }\r\n\r\n itemExpansionChanged(value: string, expanded: boolean): void {\r\n const current = this.openValues();\r\n const next = expanded\r\n ? this.type() === 'multiple'\r\n ? [...new Set([...current, value])]\r\n : [value]\r\n : [...current].filter((item) => item !== value);\r\n\r\n this.currentOpenValues.set(next);\r\n this.valueChange.emit(this.type() === 'multiple' ? next : (next[0] ?? null));\r\n }\r\n\r\n openAll(): void {\r\n this.cdkAccordion.openAll();\r\n }\r\n\r\n closeAll(): void {\r\n this.cdkAccordion.closeAll();\r\n }\r\n\r\n syncCdkMode(): void {\r\n this.cdkAccordion.multi = this.type() === 'multiple';\r\n }\r\n\r\n private normalizeValues(\r\n value: string | readonly string[] | null,\r\n type: FrAccordionType,\r\n ): string[] {\r\n if (Array.isArray(value)) {\r\n return type === 'multiple' ? [...value] : value.length ? [value[0]] : [];\r\n }\r\n\r\n if (value == null || value === '') {\r\n return [];\r\n }\r\n\r\n return [value as string];\r\n }\r\n}\r\n","import { Directive, inject } from '@angular/core';\r\n\r\nimport { ACCORDION_ITEM } from './accordion.tokens';\r\n\r\n/** Trigger control for accordion items. */\r\n@Directive({\r\n selector: 'button[frameAccordionTrigger]',\r\n standalone: true,\r\n host: {\r\n class: 'frame-accordion__trigger',\r\n '[attr.aria-controls]': 'item.contentId()',\r\n '[attr.aria-expanded]': 'item.open() ? \"true\" : \"false\"',\r\n '[attr.data-disabled]': 'item.disabled() ? \"\" : null',\r\n '[attr.data-state]': 'item.open() ? \"open\" : \"closed\"',\r\n '[attr.disabled]': 'item.disabled() ? \"\" : null',\r\n '[attr.id]': 'item.triggerId()',\r\n 'type': 'button',\r\n '(click)': 'item.toggle()',\r\n },\r\n})\r\nexport class FrAccordionTrigger {\r\n protected readonly item = inject(ACCORDION_ITEM);\r\n}\r\n\r\n/** Optional icon slot for accordion triggers. */\r\n@Directive({\r\n selector: '[frameAccordionIcon]',\r\n standalone: true,\r\n host: {\r\n class: 'frame-accordion__icon',\r\n 'aria-hidden': 'true',\r\n },\r\n})\r\nexport class FrAccordionIcon {}\r\n","export const FR_ACCORDION_TYPES = ['single', 'multiple'] as const;\n\nexport type FrAccordionType = (typeof FR_ACCORDION_TYPES)[number];\n","import { NgModule } from '@angular/core';\r\n\r\nimport {\r\n FrAccordion,\r\n FrAccordionContent,\r\n FrAccordionIcon,\r\n FrAccordionItem,\r\n FrAccordionTrigger,\r\n} from './src/accordion';\r\n\r\n@NgModule({\r\n imports: [\r\n FrAccordion,\r\n FrAccordionContent,\r\n FrAccordionIcon,\r\n FrAccordionItem,\r\n FrAccordionTrigger,\r\n ],\r\n exports: [\r\n FrAccordion,\r\n FrAccordionContent,\r\n FrAccordionIcon,\r\n FrAccordionItem,\r\n FrAccordionTrigger,\r\n ],\r\n})\r\nexport class FrAccordionModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -12,14 +12,14 @@ const FR_ALERT_VARIANTS = [
12
12
  class FrAlert {
13
13
  variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
14
14
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrAlert, deps: [], target: i0.ɵɵFactoryTarget.Directive });
15
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrAlert, isStandalone: true, selector: "[frAlert]", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "alert" }, properties: { "attr.data-variant": "variant()" }, classAttribute: "frame-alert" }, ngImport: i0 });
15
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrAlert, isStandalone: true, selector: "[frAlert]", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "alert" }, properties: { "attr.data-variant": "variant()" }, classAttribute: "frame-alert frame-corner-handles" }, ngImport: i0 });
16
16
  }
17
17
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrAlert, decorators: [{
18
18
  type: Directive,
19
19
  args: [{
20
20
  selector: '[frAlert]',
21
21
  host: {
22
- class: 'frame-alert',
22
+ class: 'frame-alert frame-corner-handles',
23
23
  '[attr.data-variant]': 'variant()',
24
24
  'role': 'alert',
25
25
  },
@@ -1 +1 @@
1
- {"version":3,"file":"frame-ui-ng-components-alert.mjs","sources":["../../../projects/components/alert/src/alert.ts","../../../projects/components/alert/alert.module.ts","../../../projects/components/alert/frame-ui-ng-components-alert.ts"],"sourcesContent":["import { Directive, input } from '@angular/core';\r\n\r\nexport const FR_ALERT_VARIANTS = [\r\n 'default',\r\n 'destructive',\r\n 'success',\r\n 'danger',\r\n 'info',\r\n] as const;\r\n\r\nexport type FrAlertVariant = (typeof FR_ALERT_VARIANTS)[number];\r\n\r\n/** Alert component primitive. */\r\n@Directive({\r\n selector: '[frAlert]',\r\n host: {\r\n class: 'frame-alert',\r\n '[attr.data-variant]': 'variant()',\r\n 'role': 'alert',\r\n },\r\n})\r\nexport class FrAlert {\r\n readonly variant = input<FrAlertVariant>('default');\r\n}\r\n\r\n/** Icon slot for alert. */\r\n@Directive({\r\n selector: '[frAlertIcon]',\r\n host: {\r\n class: 'frame-alert__icon',\r\n 'aria-hidden': 'true',\r\n },\r\n})\r\nexport class FrAlertIcon {}\r\n\r\n/** Title slot for alert. */\r\n@Directive({\r\n selector: '[frAlertTitle]',\r\n host: {\r\n class: 'frame-alert__title',\r\n },\r\n})\r\nexport class FrAlertTitle {}\r\n\r\n/** Description slot for alert. */\r\n@Directive({\r\n selector: '[frAlertDescription]',\r\n host: {\r\n class: 'frame-alert__description',\r\n },\r\n})\r\nexport class FrAlertDescription {}\r\n","import { NgModule } from '@angular/core';\nimport {\n FrAlert,\n FrAlertDescription,\n FrAlertIcon,\n FrAlertTitle,\n} from './src/alert';\n\n@NgModule({\n imports: [\n FrAlert,\n FrAlertDescription,\n FrAlertIcon,\n FrAlertTitle,\n ],\n exports: [\n FrAlert,\n FrAlertDescription,\n FrAlertIcon,\n FrAlertTitle,\n ],\n})\nexport class FrAlertModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AAEO,MAAM,iBAAiB,GAAG;IAC/B,SAAS;IACT,aAAa;IACb,SAAS;IACT,QAAQ;IACR,MAAM;;AAKR;MASa,OAAO,CAAA;AACT,IAAA,OAAO,GAAG,KAAK,CAAiB,SAAS,8EAAC;wGADxC,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,EAAA,cAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAP,OAAO,EAAA,UAAA,EAAA,CAAA;kBARnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,aAAa;AACpB,wBAAA,qBAAqB,EAAE,WAAW;AAClC,wBAAA,MAAM,EAAE,OAAO;AAChB,qBAAA;AACF,iBAAA;;AAKD;MAQa,WAAW,CAAA;wGAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAPvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,mBAAmB;AAC1B,wBAAA,aAAa,EAAE,MAAM;AACtB,qBAAA;AACF,iBAAA;;AAGD;MAOa,YAAY,CAAA;wGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBANxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,oBAAoB;AAC5B,qBAAA;AACF,iBAAA;;AAGD;MAOa,kBAAkB,CAAA;wGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,0BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,0BAA0B;AAClC,qBAAA;AACF,iBAAA;;;MC5BY,aAAa,CAAA;wGAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAZtB,OAAO;YACP,kBAAkB;YAClB,WAAW;AACX,YAAA,YAAY,aAGZ,OAAO;YACP,kBAAkB;YAClB,WAAW;YACX,YAAY,CAAA,EAAA,CAAA;yGAGH,aAAa,EAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAdzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,OAAO;wBACP,kBAAkB;wBAClB,WAAW;wBACX,YAAY;AACb,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,OAAO;wBACP,kBAAkB;wBAClB,WAAW;wBACX,YAAY;AACb,qBAAA;AACF,iBAAA;;;ACrBD;;AAEG;;;;"}
1
+ {"version":3,"file":"frame-ui-ng-components-alert.mjs","sources":["../../../projects/components/alert/src/alert.ts","../../../projects/components/alert/alert.module.ts","../../../projects/components/alert/frame-ui-ng-components-alert.ts"],"sourcesContent":["import { Directive, input } from '@angular/core';\r\n\r\nexport const FR_ALERT_VARIANTS = [\r\n 'default',\r\n 'destructive',\r\n 'success',\r\n 'danger',\r\n 'info',\r\n] as const;\r\n\r\nexport type FrAlertVariant = (typeof FR_ALERT_VARIANTS)[number];\r\n\r\n/** Alert component primitive. */\r\n@Directive({\r\n selector: '[frAlert]',\r\n host: {\r\n class: 'frame-alert frame-corner-handles',\r\n '[attr.data-variant]': 'variant()',\r\n 'role': 'alert',\r\n },\r\n})\r\nexport class FrAlert {\r\n readonly variant = input<FrAlertVariant>('default');\r\n}\r\n\r\n/** Icon slot for alert. */\r\n@Directive({\r\n selector: '[frAlertIcon]',\r\n host: {\r\n class: 'frame-alert__icon',\r\n 'aria-hidden': 'true',\r\n },\r\n})\r\nexport class FrAlertIcon {}\r\n\r\n/** Title slot for alert. */\r\n@Directive({\r\n selector: '[frAlertTitle]',\r\n host: {\r\n class: 'frame-alert__title',\r\n },\r\n})\r\nexport class FrAlertTitle {}\r\n\r\n/** Description slot for alert. */\r\n@Directive({\r\n selector: '[frAlertDescription]',\r\n host: {\r\n class: 'frame-alert__description',\r\n },\r\n})\r\nexport class FrAlertDescription {}\r\n","import { NgModule } from '@angular/core';\nimport {\n FrAlert,\n FrAlertDescription,\n FrAlertIcon,\n FrAlertTitle,\n} from './src/alert';\n\n@NgModule({\n imports: [\n FrAlert,\n FrAlertDescription,\n FrAlertIcon,\n FrAlertTitle,\n ],\n exports: [\n FrAlert,\n FrAlertDescription,\n FrAlertIcon,\n FrAlertTitle,\n ],\n})\nexport class FrAlertModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}