@raintonic/formaui 0.9.0 → 0.9.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/raintonic-formaui-components-accordion.mjs +4 -4
- package/fesm2022/raintonic-formaui-components-accordion.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-alert.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-alert.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-autocomplete.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-autocomplete.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-avatar.mjs +3 -3
- package/fesm2022/raintonic-formaui-components-avatar.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-badge.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-badge.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-button-group.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-button-group.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-card.mjs +78 -8
- package/fesm2022/raintonic-formaui-components-card.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-checkbox.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-checkbox.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-chip.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-chip.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-data-table.mjs +80 -11
- package/fesm2022/raintonic-formaui-components-data-table.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-date-picker.mjs +4 -4
- package/fesm2022/raintonic-formaui-components-date-picker.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-divider.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-divider.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-drawer.mjs +37 -6
- package/fesm2022/raintonic-formaui-components-drawer.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-dropdown-menu.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-dropdown-menu.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-dual-tier-navigation.mjs +1 -1
- package/fesm2022/raintonic-formaui-components-dual-tier-navigation.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-empty-state.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-empty-state.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-file-upload.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-file-upload.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-form-field.mjs +21 -2
- package/fesm2022/raintonic-formaui-components-form-field.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-input.mjs +14 -0
- package/fesm2022/raintonic-formaui-components-input.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-list.mjs +4 -4
- package/fesm2022/raintonic-formaui-components-list.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-number-input.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-number-input.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-paginator.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-paginator.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-password-input.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-password-input.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-popover.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-popover.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-progressbar.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-progressbar.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-radio.mjs +4 -4
- package/fesm2022/raintonic-formaui-components-radio.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-select.mjs +15 -7
- package/fesm2022/raintonic-formaui-components-select.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-side-panel.mjs +40 -6
- package/fesm2022/raintonic-formaui-components-side-panel.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-sidebar-nav-menu.mjs +4 -4
- package/fesm2022/raintonic-formaui-components-sidebar-nav-menu.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-slider.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-slider.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-spinner.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-spinner.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-stepper.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-stepper.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-tab.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-tab.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-time-picker.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-time-picker.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-toggle-group.mjs +19 -8
- package/fesm2022/raintonic-formaui-components-toggle-group.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-toolbar.mjs +10 -4
- package/fesm2022/raintonic-formaui-components-toolbar.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-tooltip.mjs +102 -8
- package/fesm2022/raintonic-formaui-components-tooltip.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-topbar.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-topbar.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-tree-select.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-tree-select.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-tree-table.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-tree-table.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-tree.mjs +4 -4
- package/fesm2022/raintonic-formaui-components-tree.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-services-dialog.mjs +8 -4
- package/fesm2022/raintonic-formaui-services-dialog.mjs.map +1 -1
- package/fesm2022/raintonic-formaui.mjs +1 -1
- package/fesm2022/raintonic-formaui.mjs.map +1 -1
- package/llms-full.txt +72 -27
- package/package.json +1 -1
- package/styles/generated/_tokens.scss +9 -9
- package/styles/partials/components/_dialog.scss +24 -0
- package/styles/styles.css +24 -9
- package/types/raintonic-formaui-components-card.d.ts +46 -2
- package/types/raintonic-formaui-components-card.d.ts.map +1 -1
- package/types/raintonic-formaui-components-data-table.d.ts +50 -3
- package/types/raintonic-formaui-components-data-table.d.ts.map +1 -1
- package/types/raintonic-formaui-components-drawer.d.ts +20 -2
- package/types/raintonic-formaui-components-drawer.d.ts.map +1 -1
- package/types/raintonic-formaui-components-form-field.d.ts +10 -0
- package/types/raintonic-formaui-components-form-field.d.ts.map +1 -1
- package/types/raintonic-formaui-components-input.d.ts +9 -0
- package/types/raintonic-formaui-components-input.d.ts.map +1 -1
- package/types/raintonic-formaui-components-select.d.ts +8 -1
- package/types/raintonic-formaui-components-select.d.ts.map +1 -1
- package/types/raintonic-formaui-components-side-panel.d.ts +24 -2
- package/types/raintonic-formaui-components-side-panel.d.ts.map +1 -1
- package/types/raintonic-formaui-components-toggle-group.d.ts +1 -1
- package/types/raintonic-formaui-components-toggle-group.d.ts.map +1 -1
- package/types/raintonic-formaui-components-toolbar.d.ts +5 -1
- package/types/raintonic-formaui-components-toolbar.d.ts.map +1 -1
- package/types/raintonic-formaui-components-tooltip.d.ts +55 -4
- package/types/raintonic-formaui-components-tooltip.d.ts.map +1 -1
- package/types/raintonic-formaui-services-dialog.d.ts +12 -1
- package/types/raintonic-formaui-services-dialog.d.ts.map +1 -1
- package/types/raintonic-formaui.d.ts +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, Component, signal, computed, HostListener, ContentChild, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';
|
|
2
|
+
import { input, Component, Directive, signal, computed, HostListener, ContentChild, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* # FuiCardHeader Component
|
|
@@ -85,6 +85,68 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
|
|
|
85
85
|
}, template: "<ng-content></ng-content>\r\n" }]
|
|
86
86
|
}], propDecorators: { align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], paddingless: [{ type: i0.Input, args: [{ isSignal: true, alias: "paddingless", required: false }] }] } });
|
|
87
87
|
|
|
88
|
+
/**
|
|
89
|
+
* # FuiCardHeader Directive
|
|
90
|
+
*
|
|
91
|
+
* Marker directive for projecting a custom element into the card header region
|
|
92
|
+
* without using the {@link FuiCardHeaderComponent}. Apply it to any element to
|
|
93
|
+
* have `<fui-card>` treat it as header content.
|
|
94
|
+
*
|
|
95
|
+
* ## Usage
|
|
96
|
+
* ```html
|
|
97
|
+
* <fui-card>
|
|
98
|
+
* <div fuiCardHeader>My full-width header</div>
|
|
99
|
+
* <p>Content</p>
|
|
100
|
+
* </fui-card>
|
|
101
|
+
* ```
|
|
102
|
+
*/
|
|
103
|
+
class FuiCardHeaderDirective {
|
|
104
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: FuiCardHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
105
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: FuiCardHeaderDirective, isStandalone: true, selector: "[fuiCardHeader]", host: { classAttribute: "fui-card-header" }, ngImport: i0 });
|
|
106
|
+
}
|
|
107
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: FuiCardHeaderDirective, decorators: [{
|
|
108
|
+
type: Directive,
|
|
109
|
+
args: [{
|
|
110
|
+
selector: '[fuiCardHeader]',
|
|
111
|
+
standalone: true,
|
|
112
|
+
host: {
|
|
113
|
+
class: 'fui-card-header',
|
|
114
|
+
},
|
|
115
|
+
}]
|
|
116
|
+
}] });
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* # FuiCardActions Directive
|
|
120
|
+
*
|
|
121
|
+
* Marker directive for projecting a custom element into the card actions region
|
|
122
|
+
* without using the {@link FuiCardActionsComponent}. Apply it to any element to
|
|
123
|
+
* have `<fui-card>` treat it as actions content.
|
|
124
|
+
*
|
|
125
|
+
* ## Usage
|
|
126
|
+
* ```html
|
|
127
|
+
* <fui-card>
|
|
128
|
+
* <p>Content</p>
|
|
129
|
+
* <div fuiCardActions>
|
|
130
|
+
* <button fuiButton>OK</button>
|
|
131
|
+
* </div>
|
|
132
|
+
* </fui-card>
|
|
133
|
+
* ```
|
|
134
|
+
*/
|
|
135
|
+
class FuiCardActionsDirective {
|
|
136
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: FuiCardActionsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
137
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: FuiCardActionsDirective, isStandalone: true, selector: "[fuiCardActions]", host: { classAttribute: "fui-card-actions" }, ngImport: i0 });
|
|
138
|
+
}
|
|
139
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: FuiCardActionsDirective, decorators: [{
|
|
140
|
+
type: Directive,
|
|
141
|
+
args: [{
|
|
142
|
+
selector: '[fuiCardActions]',
|
|
143
|
+
standalone: true,
|
|
144
|
+
host: {
|
|
145
|
+
class: 'fui-card-actions',
|
|
146
|
+
},
|
|
147
|
+
}]
|
|
148
|
+
}] });
|
|
149
|
+
|
|
88
150
|
/**
|
|
89
151
|
* # FuiCard Component
|
|
90
152
|
*
|
|
@@ -183,6 +245,8 @@ class FuiCardComponent {
|
|
|
183
245
|
// Projected content queries and ARIA label linkage
|
|
184
246
|
headerCmp;
|
|
185
247
|
actionsCmp;
|
|
248
|
+
headerDir;
|
|
249
|
+
actionsDir;
|
|
186
250
|
headerId = '';
|
|
187
251
|
// Computed classes
|
|
188
252
|
computedClasses = computed(() => {
|
|
@@ -221,16 +285,16 @@ class FuiCardComponent {
|
|
|
221
285
|
ngAfterContentInit() {
|
|
222
286
|
this.headerId = this.headerCmp ? this.headerCmp.hostId : '';
|
|
223
287
|
}
|
|
224
|
-
// Check if header content is projected
|
|
288
|
+
// Check if header content is projected (component or attribute directive)
|
|
225
289
|
get hasHeader() {
|
|
226
|
-
return !!this.headerCmp;
|
|
290
|
+
return !!this.headerCmp || !!this.headerDir;
|
|
227
291
|
}
|
|
228
|
-
// Check if actions content is projected
|
|
292
|
+
// Check if actions content is projected (component or attribute directive)
|
|
229
293
|
get hasActions() {
|
|
230
|
-
return !!this.actionsCmp;
|
|
294
|
+
return !!this.actionsCmp || !!this.actionsDir;
|
|
231
295
|
}
|
|
232
296
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: FuiCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
233
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: FuiCardComponent, isStandalone: true, selector: "fui-card", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, padding: { classPropertyName: "padding", publicName: "padding", isSignal: true, isRequired: false, transformFunction: null }, clickable: { classPropertyName: "clickable", publicName: "clickable", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "keydown": "onKeyDown($event)", "click": "onClick($event)" }, properties: { "class": "computedClasses()", "attr.role": "clickable() ? \"button\" : \"region\"", "attr.tabindex": "clickable() && !disabled() ? \"0\" : null", "attr.aria-disabled": "disabled() ? \"true\" : null", "attr.aria-labelledby": "headerId" }, classAttribute: "fui-card" }, queries: [{ propertyName: "headerCmp", first: true, predicate: FuiCardHeaderComponent, descendants: true }, { propertyName: "actionsCmp", first: true, predicate: FuiCardActionsComponent, descendants: true }], ngImport: i0, template: "@if (hasHeader) {\r\n <div class=\"fui-card__header\">\r\n <ng-content select=\"fui-card-header, [rtCardHeader]\"></ng-content>\r\n </div>\r\n}\r\n\r\n<div class=\"fui-card__content\" [class.fui-card__content--no-padding]=\"padding() === 'none'\">\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n@if (hasActions) {\r\n <div class=\"fui-card__actions\">\r\n <ng-content select=\"fui-card-actions, [rtCardActions]\"></ng-content>\r\n </div>\r\n}\r\n", styles: [".fui-text-xs{font-size:var(--fui-text-sm);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal);letter-spacing:.24px}.fui-text-sm{font-size:var(--fui-text-base);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal);letter-spacing:.56px}.fui-text-md{font-size:var(--fui-text-md);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal)}.fui-text-lg{font-size:var(--fui-text-lg);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal)}.fui-text-xl{font-size:var(--fui-text-xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal)}.fui-display-xs{font-size:var(--fui-text-2xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-snug);letter-spacing:.48px}.fui-display-sm{font-size:var(--fui-text-3xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight)}.fui-display-md{font-size:var(--fui-text-4xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight)}.fui-display-lg{font-size:var(--fui-text-5xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight)}.fui-display-xl{font-size:var(--fui-text-6xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight);letter-spacing:-1.2px}.fui-display-2xl{font-size:var(--fui-text-7xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight);letter-spacing:-1.44px}.fui-code-01{font-family:var(--fui-font-mono);font-size:var(--fui-text-sm);line-height:var(--fui-leading-loose)}.fui-code-02{font-family:var(--fui-font-mono);font-size:var(--fui-text-base);line-height:var(--fui-leading-relaxed)}.fui-font-light{font-weight:var(--fui-weight-light)}.fui-font-regular{font-weight:var(--fui-weight-regular)}.fui-font-medium{font-weight:var(--fui-weight-medium)}.fui-font-semibold{font-weight:var(--fui-weight-semibold)}.fui-font-bold{font-weight:var(--fui-weight-bold)}@keyframes fui-skeleton-pulse{0%{opacity:1}50%{opacity:.4}to{opacity:1}}@keyframes fui-spin{to{transform:rotate(360deg)}}@keyframes fui-shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-2px)}20%,40%,60%,80%{transform:translate(2px)}}.fui-motion-fade-in{transition-property:opacity;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-out);transition-delay:0ms}.fui-motion-fade-out{transition-property:opacity;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-in);transition-delay:0ms}.fui-motion-slide-in-bottom{transition-property:transform;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:translateY(0)}.fui-motion-slide-in-bottom.fui-motion-entering{transform:translateY(1rem)}.fui-motion-slide-in-top{transition-property:transform;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:translateY(0)}.fui-motion-slide-in-top.fui-motion-entering{transform:translateY(-1rem)}.fui-motion-scale-in{transition-property:transform,opacity;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:scale(1);opacity:1}.fui-motion-scale-in.fui-motion-entering{transform:scale(.95);opacity:0}.fui-no-motion{transition:none!important;animation:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@keyframes fui-pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.05)}to{transform:scale(1);opacity:1}}@keyframes fui-slide-in{0%{transform:translate(120%)}to{transform:translate(0)}}.fui-slide-in{animation:fui-slide-in var(--fui-duration-base) var(--fui-ease-out)}@keyframes fui-popover-enter{0%{opacity:0;transform:translateY(-14px)}60%{opacity:1}to{opacity:1;transform:translateY(0)}}.fui-card{--fui-card-bg: var(--fui-bg-default);--fui-card-border-color: var(--fui-border-default);--fui-card-header-padding: var(--fui-spacing-7) var(--fui-spacing-9);--fui-card-actions-gap: var(--fui-spacing-4);contain:layout style;display:flex;flex-direction:column;position:relative;border-radius:var(--fui-card-border-radius);background-color:var(--fui-card-bg);box-shadow:var(--fui-shadow-xs);backdrop-filter:blur(8px);overflow:hidden;transition-property:box-shadow,transform,border-color;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-in-out);transition-delay:0ms}.fui-card--elevated{box-shadow:var(--fui-card-shadow);border:none}.fui-card--elevated.fui-card--hovered:not(.fui-card--disabled){box-shadow:var(--fui-card-shadow-hover)}.fui-card--outlined{border:1px solid var(--fui-border-default)}.fui-card--outlined.fui-card--hovered:not(.fui-card--disabled){border-color:var(--fui-border-strong)}.fui-card--flat{box-shadow:none;border:1px solid transparent}.fui-card--clickable{cursor:pointer;transition:transform var(--fui-duration-fast) var(--fui-ease-in-out),box-shadow var(--fui-duration-fast) var(--fui-ease-in-out)}.fui-card--clickable:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0000001a}.fui-card--clickable:focus-visible{outline:2px solid var(--fui-primary-10);transition-property:all;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-in-out);transition-delay:0ms}.fui-card--disabled{opacity:var(--fui-state-disabled-opacity);cursor:not-allowed}.fui-card--padding-none .fui-card__content{padding:0}.fui-card--padding-sm .fui-card__content{padding:var(--fui-spacing-6)}.fui-card--padding-md .fui-card__content{padding:var(--fui-spacing-7)}.fui-card--padding-lg .fui-card__content{padding:var(--fui-spacing-9)}.fui-card--padding-xl .fui-card__content{padding:var(--fui-spacing-11)}.fui-card__header{border-bottom:1px solid var(--fui-border-default);font-weight:var(--fui-weight-medium)}.fui-card__header:empty{display:none}.fui-card__content{flex:1;padding:var(--fui-card-padding)}.fui-card__content--no-padding{padding:0}.fui-card__content>:first-child{margin-top:0}.fui-card__content>:last-child{margin-bottom:0}.fui-card__actions{padding-bottom:0;display:flex;gap:var(--fui-spacing-4);align-items:center;justify-content:flex-end}.fui-card__actions:empty{display:none}.fui-card__actions--align-start{justify-content:flex-start}.fui-card__actions--align-center{justify-content:center}.fui-card__actions--align-end{justify-content:flex-end}.fui-card-header{padding:var(--fui-spacing-7) var(--fui-spacing-9);display:flex;flex-direction:column;gap:var(--fui-spacing-2)}.fui-card-header__title{color:var(--fui-text-primary);margin:0}.fui-card-header__subtitle{font-size:var(--fui-text-base);font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal);color:var(--fui-text-secondary);margin:0}.fui-card-header__content:empty{margin-top:0}.fui-card-actions{display:flex;gap:var(--fui-spacing-4);align-items:center}.fui-card-actions--align-start{justify-content:flex-start}.fui-card-actions--align-center{justify-content:center}.fui-card-actions--align-end{justify-content:flex-end}.fui-card-actions--paddingless{padding:0}.fui-card-actions .fui-button+.fui-button{margin-left:var(--fui-spacing-4)}@media(min-width:640px){.fui-card--padding-sm .fui-card__content{padding:var(--fui-spacing-2)}.fui-card--padding-md .fui-card__content{padding:var(--fui-spacing-6)}.fui-card--padding-lg .fui-card__content{padding:var(--fui-spacing-9)}.fui-card__actions{padding:0 var(--fui-spacing-6) var(--fui-spacing-6);gap:var(--fui-spacing-2);flex-wrap:wrap}}.fui-card--horizontal{flex-direction:row}.fui-card--horizontal .fui-card__content{flex:1}.fui-card--horizontal .fui-card__actions{flex-direction:column;padding:var(--fui-spacing-7)}.fui-card__image{width:100%;height:auto;border-radius:var(--fui-card-border-radius) var(--fui-card-border-radius) 0 0}.fui-card__image:only-child{border-radius:var(--fui-card-border-radius)}.fui-card__media{position:relative;overflow:hidden;border-radius:var(--fui-card-border-radius) var(--fui-card-border-radius) 0 0}.fui-card__media img,.fui-card__media video{width:100%;height:auto;display:block}.fui-card__media:last-child{border-radius:0 0 var(--fui-card-border-radius) var(--fui-card-border-radius)}.fui-card__media:only-child{border-radius:var(--fui-card-border-radius)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
297
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: FuiCardComponent, isStandalone: true, selector: "fui-card", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, padding: { classPropertyName: "padding", publicName: "padding", isSignal: true, isRequired: false, transformFunction: null }, clickable: { classPropertyName: "clickable", publicName: "clickable", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "keydown": "onKeyDown($event)", "click": "onClick($event)" }, properties: { "class": "computedClasses()", "attr.role": "clickable() ? \"button\" : \"region\"", "attr.tabindex": "clickable() && !disabled() ? \"0\" : null", "attr.aria-disabled": "disabled() ? \"true\" : null", "attr.aria-labelledby": "headerId" }, classAttribute: "fui-card" }, queries: [{ propertyName: "headerCmp", first: true, predicate: FuiCardHeaderComponent, descendants: true }, { propertyName: "actionsCmp", first: true, predicate: FuiCardActionsComponent, descendants: true }, { propertyName: "headerDir", first: true, predicate: FuiCardHeaderDirective, descendants: true }, { propertyName: "actionsDir", first: true, predicate: FuiCardActionsDirective, descendants: true }], ngImport: i0, template: "@if (hasHeader) {\r\n <div class=\"fui-card__header\">\r\n <ng-content select=\"fui-card-header, [fuiCardHeader]\"></ng-content>\r\n </div>\r\n}\r\n\r\n<div class=\"fui-card__content\" [class.fui-card__content--no-padding]=\"padding() === 'none'\">\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n@if (hasActions) {\r\n <div class=\"fui-card__actions\">\r\n <ng-content select=\"fui-card-actions, [fuiCardActions]\"></ng-content>\r\n </div>\r\n}\r\n", styles: [".fui-text-xs{font-size:var(--fui-text-sm);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal);letter-spacing:.24px}.fui-text-sm{font-size:var(--fui-text-base);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal);letter-spacing:.56px}.fui-text-md{font-size:var(--fui-text-md);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal)}.fui-text-lg{font-size:var(--fui-text-lg);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal)}.fui-text-xl{font-size:var(--fui-text-xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal)}.fui-display-xs{font-size:var(--fui-text-2xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-snug);letter-spacing:.48px}.fui-display-sm{font-size:var(--fui-text-3xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight)}.fui-display-md{font-size:var(--fui-text-4xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight)}.fui-display-lg{font-size:var(--fui-text-5xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight)}.fui-display-xl{font-size:var(--fui-text-6xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight);letter-spacing:-1.2px}.fui-display-2xl{font-size:var(--fui-text-7xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight);letter-spacing:-1.44px}.fui-code-01{font-family:var(--fui-font-mono);font-size:var(--fui-text-sm);line-height:var(--fui-leading-loose)}.fui-code-02{font-family:var(--fui-font-mono);font-size:var(--fui-text-base);line-height:var(--fui-leading-relaxed)}.fui-font-light{font-weight:var(--fui-weight-light)}.fui-font-regular{font-weight:var(--fui-weight-regular)}.fui-font-medium{font-weight:var(--fui-weight-medium)}.fui-font-semibold{font-weight:var(--fui-weight-semibold)}.fui-font-bold{font-weight:var(--fui-weight-bold)}@keyframes fui-skeleton-pulse{0%{opacity:1}50%{opacity:.4}to{opacity:1}}@keyframes fui-spin{to{transform:rotate(360deg)}}@keyframes fui-shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-2px)}20%,40%,60%,80%{transform:translate(2px)}}.fui-motion-fade-in{transition-property:opacity;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-out);transition-delay:0ms}.fui-motion-fade-out{transition-property:opacity;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-in);transition-delay:0ms}.fui-motion-slide-in-bottom{transition-property:transform;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:translateY(0)}.fui-motion-slide-in-bottom.fui-motion-entering{transform:translateY(1rem)}.fui-motion-slide-in-top{transition-property:transform;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:translateY(0)}.fui-motion-slide-in-top.fui-motion-entering{transform:translateY(-1rem)}.fui-motion-scale-in{transition-property:transform,opacity;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:scale(1);opacity:1}.fui-motion-scale-in.fui-motion-entering{transform:scale(.95);opacity:0}.fui-no-motion{transition:none!important;animation:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@keyframes fui-pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.05)}to{transform:scale(1);opacity:1}}@keyframes fui-slide-in{0%{transform:translate(120%)}to{transform:translate(0)}}.fui-slide-in{animation:fui-slide-in var(--fui-duration-base) var(--fui-ease-out)}@keyframes fui-popover-enter{0%{opacity:0;transform:translateY(-14px)}60%{opacity:1}to{opacity:1;transform:translateY(0)}}.fui-card{--fui-card-bg: var(--fui-bg-default);--fui-card-border-color: var(--fui-border-default);--fui-card-actions-gap: var(--fui-spacing-4);contain:layout style;display:flex;flex-direction:column;position:relative;border-radius:var(--fui-card-border-radius);background-color:var(--fui-card-bg);box-shadow:var(--fui-shadow-xs);backdrop-filter:blur(8px);overflow:hidden;transition-property:box-shadow,transform,border-color;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-in-out);transition-delay:0ms}.fui-card--elevated{box-shadow:var(--fui-card-shadow);border:none}.fui-card--elevated.fui-card--hovered:not(.fui-card--disabled){box-shadow:var(--fui-card-shadow-hover)}.fui-card--outlined{border:var(--fui-border-width-sm) solid var(--fui-border-default)}.fui-card--outlined.fui-card--hovered:not(.fui-card--disabled){border-color:var(--fui-border-strong)}.fui-card--flat{box-shadow:none;border:var(--fui-border-width-sm) solid transparent}.fui-card--clickable{cursor:pointer;transition:transform var(--fui-duration-fast) var(--fui-ease-in-out),box-shadow var(--fui-duration-fast) var(--fui-ease-in-out)}.fui-card--clickable:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0000001a}.fui-card--clickable:focus-visible{outline:2px solid var(--fui-primary-10);transition-property:all;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-in-out);transition-delay:0ms}.fui-card--disabled{opacity:var(--fui-state-disabled-opacity);cursor:not-allowed}.fui-card--padding-none{--fui-card-padding: 0}.fui-card--padding-sm{--fui-card-padding: var(--fui-spacing-6)}.fui-card--padding-md{--fui-card-padding: var(--fui-spacing-7)}.fui-card--padding-lg{--fui-card-padding: var(--fui-spacing-9)}.fui-card--padding-xl{--fui-card-padding: var(--fui-spacing-11)}.fui-card__header{border-bottom:var(--fui-border-width-sm) solid var(--fui-border-default);font-weight:var(--fui-weight-medium)}.fui-card__header:empty{display:none}.fui-card__content{flex:1;padding:var(--fui-card-padding)}.fui-card__content--no-padding{padding:0}.fui-card__content>:first-child{margin-top:0}.fui-card__content>:last-child{margin-bottom:0}.fui-card__actions{padding-bottom:0;display:flex;gap:var(--fui-spacing-4);align-items:center;justify-content:flex-end}.fui-card__actions:empty{display:none}.fui-card__actions--align-start{justify-content:flex-start}.fui-card__actions--align-center{justify-content:center}.fui-card__actions--align-end{justify-content:flex-end}.fui-card-header{padding-block:calc(var(--fui-card-padding) + var(--fui-spacing-2));padding-inline:var(--fui-card-padding);display:flex;flex-direction:column;gap:var(--fui-spacing-2)}.fui-card-header__title{color:var(--fui-text-primary);margin:0}.fui-card-header__subtitle{font-size:var(--fui-text-base);font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal);color:var(--fui-text-secondary);margin:0}.fui-card-header__content{flex:1;min-width:0;display:flex;justify-content:flex-end}.fui-card-header__content:empty{margin-top:0}.fui-card-actions{display:flex;gap:var(--fui-spacing-4);align-items:center}.fui-card-actions--align-start{justify-content:flex-start}.fui-card-actions--align-center{justify-content:center}.fui-card-actions--align-end{justify-content:flex-end}.fui-card-actions--paddingless{padding:0}.fui-card-actions .fui-button+.fui-button{margin-left:var(--fui-spacing-4)}@media(min-width:640px){.fui-card--padding-sm{--fui-card-padding: var(--fui-spacing-2)}.fui-card--padding-md{--fui-card-padding: var(--fui-spacing-6)}.fui-card--padding-lg{--fui-card-padding: var(--fui-spacing-9)}.fui-card__actions{padding:0 var(--fui-spacing-6) var(--fui-spacing-6);gap:var(--fui-spacing-2);flex-wrap:wrap}}.fui-card--horizontal{flex-direction:row}.fui-card--horizontal .fui-card__content{flex:1}.fui-card--horizontal .fui-card__actions{flex-direction:column;padding:var(--fui-spacing-7)}.fui-card__image{width:100%;height:auto;border-radius:var(--fui-card-border-radius) var(--fui-card-border-radius) 0 0}.fui-card__image:only-child{border-radius:var(--fui-card-border-radius)}.fui-card__media{position:relative;overflow:hidden;border-radius:var(--fui-card-border-radius) var(--fui-card-border-radius) 0 0}.fui-card__media img,.fui-card__media video{width:100%;height:auto;display:block}.fui-card__media:last-child{border-radius:0 0 var(--fui-card-border-radius) var(--fui-card-border-radius)}.fui-card__media:only-child{border-radius:var(--fui-card-border-radius)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
234
298
|
}
|
|
235
299
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: FuiCardComponent, decorators: [{
|
|
236
300
|
type: Component,
|
|
@@ -241,13 +305,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
|
|
|
241
305
|
'[attr.tabindex]': 'clickable() && !disabled() ? "0" : null',
|
|
242
306
|
'[attr.aria-disabled]': 'disabled() ? "true" : null',
|
|
243
307
|
'[attr.aria-labelledby]': 'headerId',
|
|
244
|
-
}, template: "@if (hasHeader) {\r\n <div class=\"fui-card__header\">\r\n <ng-content select=\"fui-card-header, [
|
|
308
|
+
}, template: "@if (hasHeader) {\r\n <div class=\"fui-card__header\">\r\n <ng-content select=\"fui-card-header, [fuiCardHeader]\"></ng-content>\r\n </div>\r\n}\r\n\r\n<div class=\"fui-card__content\" [class.fui-card__content--no-padding]=\"padding() === 'none'\">\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n@if (hasActions) {\r\n <div class=\"fui-card__actions\">\r\n <ng-content select=\"fui-card-actions, [fuiCardActions]\"></ng-content>\r\n </div>\r\n}\r\n", styles: [".fui-text-xs{font-size:var(--fui-text-sm);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal);letter-spacing:.24px}.fui-text-sm{font-size:var(--fui-text-base);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal);letter-spacing:.56px}.fui-text-md{font-size:var(--fui-text-md);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal)}.fui-text-lg{font-size:var(--fui-text-lg);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal)}.fui-text-xl{font-size:var(--fui-text-xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal)}.fui-display-xs{font-size:var(--fui-text-2xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-snug);letter-spacing:.48px}.fui-display-sm{font-size:var(--fui-text-3xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight)}.fui-display-md{font-size:var(--fui-text-4xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight)}.fui-display-lg{font-size:var(--fui-text-5xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight)}.fui-display-xl{font-size:var(--fui-text-6xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight);letter-spacing:-1.2px}.fui-display-2xl{font-size:var(--fui-text-7xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight);letter-spacing:-1.44px}.fui-code-01{font-family:var(--fui-font-mono);font-size:var(--fui-text-sm);line-height:var(--fui-leading-loose)}.fui-code-02{font-family:var(--fui-font-mono);font-size:var(--fui-text-base);line-height:var(--fui-leading-relaxed)}.fui-font-light{font-weight:var(--fui-weight-light)}.fui-font-regular{font-weight:var(--fui-weight-regular)}.fui-font-medium{font-weight:var(--fui-weight-medium)}.fui-font-semibold{font-weight:var(--fui-weight-semibold)}.fui-font-bold{font-weight:var(--fui-weight-bold)}@keyframes fui-skeleton-pulse{0%{opacity:1}50%{opacity:.4}to{opacity:1}}@keyframes fui-spin{to{transform:rotate(360deg)}}@keyframes fui-shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-2px)}20%,40%,60%,80%{transform:translate(2px)}}.fui-motion-fade-in{transition-property:opacity;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-out);transition-delay:0ms}.fui-motion-fade-out{transition-property:opacity;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-in);transition-delay:0ms}.fui-motion-slide-in-bottom{transition-property:transform;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:translateY(0)}.fui-motion-slide-in-bottom.fui-motion-entering{transform:translateY(1rem)}.fui-motion-slide-in-top{transition-property:transform;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:translateY(0)}.fui-motion-slide-in-top.fui-motion-entering{transform:translateY(-1rem)}.fui-motion-scale-in{transition-property:transform,opacity;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:scale(1);opacity:1}.fui-motion-scale-in.fui-motion-entering{transform:scale(.95);opacity:0}.fui-no-motion{transition:none!important;animation:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@keyframes fui-pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.05)}to{transform:scale(1);opacity:1}}@keyframes fui-slide-in{0%{transform:translate(120%)}to{transform:translate(0)}}.fui-slide-in{animation:fui-slide-in var(--fui-duration-base) var(--fui-ease-out)}@keyframes fui-popover-enter{0%{opacity:0;transform:translateY(-14px)}60%{opacity:1}to{opacity:1;transform:translateY(0)}}.fui-card{--fui-card-bg: var(--fui-bg-default);--fui-card-border-color: var(--fui-border-default);--fui-card-actions-gap: var(--fui-spacing-4);contain:layout style;display:flex;flex-direction:column;position:relative;border-radius:var(--fui-card-border-radius);background-color:var(--fui-card-bg);box-shadow:var(--fui-shadow-xs);backdrop-filter:blur(8px);overflow:hidden;transition-property:box-shadow,transform,border-color;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-in-out);transition-delay:0ms}.fui-card--elevated{box-shadow:var(--fui-card-shadow);border:none}.fui-card--elevated.fui-card--hovered:not(.fui-card--disabled){box-shadow:var(--fui-card-shadow-hover)}.fui-card--outlined{border:var(--fui-border-width-sm) solid var(--fui-border-default)}.fui-card--outlined.fui-card--hovered:not(.fui-card--disabled){border-color:var(--fui-border-strong)}.fui-card--flat{box-shadow:none;border:var(--fui-border-width-sm) solid transparent}.fui-card--clickable{cursor:pointer;transition:transform var(--fui-duration-fast) var(--fui-ease-in-out),box-shadow var(--fui-duration-fast) var(--fui-ease-in-out)}.fui-card--clickable:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0000001a}.fui-card--clickable:focus-visible{outline:2px solid var(--fui-primary-10);transition-property:all;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-in-out);transition-delay:0ms}.fui-card--disabled{opacity:var(--fui-state-disabled-opacity);cursor:not-allowed}.fui-card--padding-none{--fui-card-padding: 0}.fui-card--padding-sm{--fui-card-padding: var(--fui-spacing-6)}.fui-card--padding-md{--fui-card-padding: var(--fui-spacing-7)}.fui-card--padding-lg{--fui-card-padding: var(--fui-spacing-9)}.fui-card--padding-xl{--fui-card-padding: var(--fui-spacing-11)}.fui-card__header{border-bottom:var(--fui-border-width-sm) solid var(--fui-border-default);font-weight:var(--fui-weight-medium)}.fui-card__header:empty{display:none}.fui-card__content{flex:1;padding:var(--fui-card-padding)}.fui-card__content--no-padding{padding:0}.fui-card__content>:first-child{margin-top:0}.fui-card__content>:last-child{margin-bottom:0}.fui-card__actions{padding-bottom:0;display:flex;gap:var(--fui-spacing-4);align-items:center;justify-content:flex-end}.fui-card__actions:empty{display:none}.fui-card__actions--align-start{justify-content:flex-start}.fui-card__actions--align-center{justify-content:center}.fui-card__actions--align-end{justify-content:flex-end}.fui-card-header{padding-block:calc(var(--fui-card-padding) + var(--fui-spacing-2));padding-inline:var(--fui-card-padding);display:flex;flex-direction:column;gap:var(--fui-spacing-2)}.fui-card-header__title{color:var(--fui-text-primary);margin:0}.fui-card-header__subtitle{font-size:var(--fui-text-base);font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal);color:var(--fui-text-secondary);margin:0}.fui-card-header__content{flex:1;min-width:0;display:flex;justify-content:flex-end}.fui-card-header__content:empty{margin-top:0}.fui-card-actions{display:flex;gap:var(--fui-spacing-4);align-items:center}.fui-card-actions--align-start{justify-content:flex-start}.fui-card-actions--align-center{justify-content:center}.fui-card-actions--align-end{justify-content:flex-end}.fui-card-actions--paddingless{padding:0}.fui-card-actions .fui-button+.fui-button{margin-left:var(--fui-spacing-4)}@media(min-width:640px){.fui-card--padding-sm{--fui-card-padding: var(--fui-spacing-2)}.fui-card--padding-md{--fui-card-padding: var(--fui-spacing-6)}.fui-card--padding-lg{--fui-card-padding: var(--fui-spacing-9)}.fui-card__actions{padding:0 var(--fui-spacing-6) var(--fui-spacing-6);gap:var(--fui-spacing-2);flex-wrap:wrap}}.fui-card--horizontal{flex-direction:row}.fui-card--horizontal .fui-card__content{flex:1}.fui-card--horizontal .fui-card__actions{flex-direction:column;padding:var(--fui-spacing-7)}.fui-card__image{width:100%;height:auto;border-radius:var(--fui-card-border-radius) var(--fui-card-border-radius) 0 0}.fui-card__image:only-child{border-radius:var(--fui-card-border-radius)}.fui-card__media{position:relative;overflow:hidden;border-radius:var(--fui-card-border-radius) var(--fui-card-border-radius) 0 0}.fui-card__media img,.fui-card__media video{width:100%;height:auto;display:block}.fui-card__media:last-child{border-radius:0 0 var(--fui-card-border-radius) var(--fui-card-border-radius)}.fui-card__media:only-child{border-radius:var(--fui-card-border-radius)}\n"] }]
|
|
245
309
|
}], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], padding: [{ type: i0.Input, args: [{ isSignal: true, alias: "padding", required: false }] }], clickable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clickable", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], headerCmp: [{
|
|
246
310
|
type: ContentChild,
|
|
247
311
|
args: [FuiCardHeaderComponent]
|
|
248
312
|
}], actionsCmp: [{
|
|
249
313
|
type: ContentChild,
|
|
250
314
|
args: [FuiCardActionsComponent]
|
|
315
|
+
}], headerDir: [{
|
|
316
|
+
type: ContentChild,
|
|
317
|
+
args: [FuiCardHeaderDirective]
|
|
318
|
+
}], actionsDir: [{
|
|
319
|
+
type: ContentChild,
|
|
320
|
+
args: [FuiCardActionsDirective]
|
|
251
321
|
}], onMouseEnter: [{
|
|
252
322
|
type: HostListener,
|
|
253
323
|
args: ['mouseenter']
|
|
@@ -266,5 +336,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
|
|
|
266
336
|
* Generated bundle index. Do not edit.
|
|
267
337
|
*/
|
|
268
338
|
|
|
269
|
-
export { FuiCardActionsComponent, FuiCardComponent, FuiCardHeaderComponent };
|
|
339
|
+
export { FuiCardActionsComponent, FuiCardActionsDirective, FuiCardComponent, FuiCardHeaderComponent, FuiCardHeaderDirective };
|
|
270
340
|
//# sourceMappingURL=raintonic-formaui-components-card.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raintonic-formaui-components-card.mjs","sources":["../../../lib/components/card/card-header.component.ts","../../../lib/components/card/card-header.component.html","../../../lib/components/card/card-actions.component.ts","../../../lib/components/card/card-actions.component.html","../../../lib/components/card/card.component.ts","../../../lib/components/card/card.component.html","../../../lib/components/card/raintonic-formaui-components-card.ts"],"sourcesContent":["import { Component, input, InputSignal } from '@angular/core';\r\n\r\n/**\r\n * # FuiCardHeader Component\r\n *\r\n * Header section for cards with optional title, subtitle, and additional content.\r\n *\r\n * ## Usage\r\n * ```html\r\n * <fui-card-header title=\"Card Title\" subtitle=\"Optional subtitle\">\r\n * <button fuiButton variant=\"tertiary\">\r\n * <fui-icon name=\"dots-three\"></fui-icon>\r\n * </button>\r\n * </fui-card-header>\r\n * ```\r\n */\r\n@Component({\r\n selector: 'fui-card-header',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './card-header.component.html',\r\n host: {\r\n class: 'fui-card-header',\r\n },\r\n})\r\nexport class FuiCardHeaderComponent {\r\n /**\r\n * Unique id for linking with aria-labelledby from the card\r\n */\r\n readonly hostId = `fui-card-header-${Math.random().toString(36).slice(2)}`;\r\n\r\n /**\r\n * Main title text for the card header\r\n */\r\n readonly title: InputSignal<string | undefined> = input<string>();\r\n\r\n /**\r\n * Optional subtitle text for the card header\r\n */\r\n readonly subtitle: InputSignal<string | undefined> = input<string>();\r\n}\r\n","<div class=\"fui-flex fui-justify-between\">\r\n <div>\r\n @if (title()) {\r\n <div class=\"fui-card-header__title\" [attr.id]=\"hostId\">\r\n {{ title() }}\r\n </div>\r\n }\r\n @if (subtitle()) {\r\n <div class=\"fui-card-header__subtitle\">\r\n {{ subtitle() }}\r\n </div>\r\n }\r\n </div>\r\n<div class=\"fui-card-header__content\">\r\n <ng-content></ng-content>\r\n</div>\r\n</div>\r\n","import { Component, input, InputSignal } from '@angular/core';\r\n\r\n/**\r\n * # FuiCardActions Component\r\n *\r\n * Actions section for cards, typically containing buttons or other interactive elements.\r\n *\r\n * ## Usage\r\n * ```html\r\n * <fui-card-actions align=\"end\">\r\n * <button fuiButton variant=\"tertiary\">Cancel</button>\r\n * <button fuiButton variant=\"primary\" color=\"primary\">Save</button>\r\n * </fui-card-actions>\r\n * ```\r\n *\r\n * ### Paddingless Actions\r\n * ```html\r\n * <fui-card-actions align=\"start\" paddingless=\"true\">\r\n * <button fuiButton variant=\"tertiary\">\r\n * <fui-icon name=\"heart\"></fui-icon>\r\n * </button>\r\n * </fui-card-actions>\r\n * ```\r\n */\r\n@Component({\r\n selector: 'fui-card-actions',\r\n standalone: true,\r\n templateUrl: './card-actions.component.html',\r\n host: {\r\n class: 'fui-card-actions',\r\n '[class.fui-card-actions--align-start]': 'align() === \"start\"',\r\n '[class.fui-card-actions--align-center]': 'align() === \"center\"',\r\n '[class.fui-card-actions--align-end]': 'align() === \"end\"',\r\n '[class.fui-card-actions--paddingless]': 'paddingless()',\r\n },\r\n})\r\nexport class FuiCardActionsComponent {\r\n /**\r\n * Alignment of actions within the container\r\n * @default 'end'\r\n */\r\n readonly align: InputSignal<'start' | 'center' | 'end'> = input<'start' | 'center' | 'end'>('end');\r\n\r\n /**\r\n * Whether to remove padding from the actions container\r\n * @default false\r\n */\r\n readonly paddingless: InputSignal<boolean> = input(false);\r\n}\r\n","<ng-content></ng-content>\r\n","import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n ContentChild,\r\n HostListener,\r\n input,\r\n InputSignal,\r\n Signal,\r\n signal,\r\n ViewEncapsulation,\r\n WritableSignal,\r\n} from '@angular/core';\r\n\r\nimport { FuiCardHeaderComponent } from './card-header.component';\r\nimport { FuiCardActionsComponent } from './card-actions.component';\r\n\r\n/**\r\n * Available card variants following Carbon Design System patterns\r\n */\r\nexport type FuiCardVariant = 'elevated' | 'outlined' | 'flat';\r\n\r\n/**\r\n * Available padding options for card content\r\n */\r\nexport type FuiCardPadding = 'none' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\n/**\r\n * # FuiCard Component\r\n *\r\n * A flexible container component following Carbon Design System patterns.\r\n * Provides a structured layout with optional header, content, and actions sections.\r\n *\r\n * ## Features\r\n * - Multiple variants: elevated, outlined, flat\r\n * - Configurable padding: none, sm, md, lg, xl\r\n * - Structured content areas: header, content, actions\r\n * - Clickable state support with hover animations\r\n * - Disabled state support\r\n * - Full accessibility support\r\n * - Smooth motion transitions\r\n *\r\n * ## Usage\r\n *\r\n * ### Basic Card\r\n * ```html\r\n * <fui-card>\r\n * <p>Card content goes here</p>\r\n * </fui-card>\r\n * ```\r\n *\r\n * ### Card with Header and Actions\r\n * ```html\r\n * <fui-card variant=\"outlined\">\r\n * <fui-card-header title=\"Card Title\" subtitle=\"Optional subtitle\">\r\n * <button fuiButton variant=\"tertiary\" size=\"sm\" [iconOnly]=\"true\">\r\n * <fui-icon name=\"overflow-menu-vertical\"></fui-icon>\r\n * </button>\r\n * </fui-card-header>\r\n *\r\n * <p>Main card content</p>\r\n *\r\n * <fui-card-actions align=\"end\">\r\n * <button fuiButton variant=\"secondary\">Cancel</button>\r\n * <button fuiButton variant=\"primary\">Save</button>\r\n * </fui-card-actions>\r\n * </fui-card>\r\n * ```\r\n *\r\n * ### Clickable Card\r\n * ```html\r\n * <fui-card [clickable]=\"true\" (click)=\"handleCardClick()\">\r\n * <p>This entire card is clickable</p>\r\n * </fui-card>\r\n * ```\r\n *\r\n * @example\r\n * ```typescript\r\n * import { FuiCardComponent, FuiCardHeaderComponent, FuiCardActionsComponent } from '@raintonic/formaui/components/card';\r\n *\r\n * @Component({\r\n * standalone: true,\r\n * imports: [FuiCardComponent, FuiCardHeaderComponent, FuiCardActionsComponent],\r\n * template: `\r\n * <fui-card variant=\"elevated\" padding=\"lg\">\r\n * <fui-card-header title=\"User Profile\"></fui-card-header>\r\n * <div class=\"user-info\">\r\n * <p>User details here...</p>\r\n * </div>\r\n * <fui-card-actions>\r\n * <button fuiButton>Edit</button>\r\n * </fui-card-actions>\r\n * </fui-card>\r\n * `\r\n * })\r\n * export class UserCardComponent {}\r\n * ```\r\n */\r\n@Component({\r\n selector: 'fui-card',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './card.component.html',\r\n styleUrls: ['./card.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n class: 'fui-card',\r\n '[class]': 'computedClasses()',\r\n '[attr.role]': 'clickable() ? \"button\" : \"region\"',\r\n '[attr.tabindex]': 'clickable() && !disabled() ? \"0\" : null',\r\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\r\n '[attr.aria-labelledby]': 'headerId',\r\n },\r\n})\r\nexport class FuiCardComponent implements AfterContentInit {\r\n /**\r\n * Card variant that determines the visual style\r\n * @default 'outlined'\r\n */\r\n readonly variant: InputSignal<FuiCardVariant> = input<FuiCardVariant>('outlined');\r\n\r\n /**\r\n * Padding applied to card content\r\n * @default 'lg'\r\n */\r\n readonly padding: InputSignal<FuiCardPadding> = input<FuiCardPadding>('lg');\r\n\r\n /**\r\n * Whether the card is clickable (adds hover effects and cursor pointer)\r\n * @default false\r\n */\r\n readonly clickable: InputSignal<boolean> = input(false);\r\n\r\n /**\r\n * Whether the card is disabled\r\n * @default false\r\n */\r\n readonly disabled: InputSignal<boolean> = input(false);\r\n\r\n // Animation state\r\n readonly hovered: WritableSignal<boolean> = signal(false);\r\n readonly liftState: Signal<'idle' | 'lifted'> = computed(() =>\r\n this.clickable() && this.hovered() && !this.disabled() ? 'lifted' : 'idle',\r\n );\r\n\r\n // Projected content queries and ARIA label linkage\r\n @ContentChild(FuiCardHeaderComponent) headerCmp?: FuiCardHeaderComponent;\r\n @ContentChild(FuiCardActionsComponent) actionsCmp?: FuiCardActionsComponent;\r\n\r\n headerId = '';\r\n\r\n // Computed classes\r\n readonly computedClasses: Signal<string> = computed(() => {\r\n const classes: string[] = [`fui-card--${this.variant()}`, `fui-card--padding-${this.padding()}`];\r\n\r\n if (this.clickable()) {\r\n classes.push('fui-card--clickable');\r\n }\r\n\r\n if (this.disabled()) {\r\n classes.push('fui-card--disabled');\r\n }\r\n\r\n if (this.hovered()) {\r\n classes.push('fui-card--hovered');\r\n }\r\n\r\n return classes.join(' ');\r\n });\r\n\r\n @HostListener('mouseenter')\r\n onMouseEnter(): void {\r\n if (this.clickable() && !this.disabled()) {\r\n this.hovered.set(true);\r\n }\r\n }\r\n\r\n @HostListener('mouseleave')\r\n onMouseLeave(): void {\r\n this.hovered.set(false);\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown(event: KeyboardEvent): void {\r\n if (this.clickable() && !this.disabled() && (event.key === 'Enter' || event.key === ' ')) {\r\n event.preventDefault();\r\n (event.target as HTMLElement).click();\r\n }\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: MouseEvent): void {\r\n if (this.disabled()) {\r\n event.stopImmediatePropagation();\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.headerId = this.headerCmp ? this.headerCmp.hostId : '';\r\n }\r\n\r\n // Check if header content is projected\r\n get hasHeader(): boolean {\r\n return !!this.headerCmp;\r\n }\r\n\r\n // Check if actions content is projected\r\n get hasActions(): boolean {\r\n return !!this.actionsCmp;\r\n }\r\n}\r\n","@if (hasHeader) {\r\n <div class=\"fui-card__header\">\r\n <ng-content select=\"fui-card-header, [rtCardHeader]\"></ng-content>\r\n </div>\r\n}\r\n\r\n<div class=\"fui-card__content\" [class.fui-card__content--no-padding]=\"padding() === 'none'\">\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n@if (hasActions) {\r\n <div class=\"fui-card__actions\">\r\n <ng-content select=\"fui-card-actions, [rtCardActions]\"></ng-content>\r\n </div>\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"raintonic-formaui-components-card.mjs","sources":["../../../lib/components/card/card-header.component.ts","../../../lib/components/card/card-header.component.html","../../../lib/components/card/card-actions.component.ts","../../../lib/components/card/card-actions.component.html","../../../lib/components/card/card-header.directive.ts","../../../lib/components/card/card-actions.directive.ts","../../../lib/components/card/card.component.ts","../../../lib/components/card/card.component.html","../../../lib/components/card/raintonic-formaui-components-card.ts"],"sourcesContent":["import { Component, input, InputSignal } from '@angular/core';\r\n\r\n/**\r\n * # FuiCardHeader Component\r\n *\r\n * Header section for cards with optional title, subtitle, and additional content.\r\n *\r\n * ## Usage\r\n * ```html\r\n * <fui-card-header title=\"Card Title\" subtitle=\"Optional subtitle\">\r\n * <button fuiButton variant=\"tertiary\">\r\n * <fui-icon name=\"dots-three\"></fui-icon>\r\n * </button>\r\n * </fui-card-header>\r\n * ```\r\n */\r\n@Component({\r\n selector: 'fui-card-header',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './card-header.component.html',\r\n host: {\r\n class: 'fui-card-header',\r\n },\r\n})\r\nexport class FuiCardHeaderComponent {\r\n /**\r\n * Unique id for linking with aria-labelledby from the card\r\n */\r\n readonly hostId = `fui-card-header-${Math.random().toString(36).slice(2)}`;\r\n\r\n /**\r\n * Main title text for the card header\r\n */\r\n readonly title: InputSignal<string | undefined> = input<string>();\r\n\r\n /**\r\n * Optional subtitle text for the card header\r\n */\r\n readonly subtitle: InputSignal<string | undefined> = input<string>();\r\n}\r\n","<div class=\"fui-flex fui-justify-between\">\r\n <div>\r\n @if (title()) {\r\n <div class=\"fui-card-header__title\" [attr.id]=\"hostId\">\r\n {{ title() }}\r\n </div>\r\n }\r\n @if (subtitle()) {\r\n <div class=\"fui-card-header__subtitle\">\r\n {{ subtitle() }}\r\n </div>\r\n }\r\n </div>\r\n<div class=\"fui-card-header__content\">\r\n <ng-content></ng-content>\r\n</div>\r\n</div>\r\n","import { Component, input, InputSignal } from '@angular/core';\r\n\r\n/**\r\n * # FuiCardActions Component\r\n *\r\n * Actions section for cards, typically containing buttons or other interactive elements.\r\n *\r\n * ## Usage\r\n * ```html\r\n * <fui-card-actions align=\"end\">\r\n * <button fuiButton variant=\"tertiary\">Cancel</button>\r\n * <button fuiButton variant=\"primary\" color=\"primary\">Save</button>\r\n * </fui-card-actions>\r\n * ```\r\n *\r\n * ### Paddingless Actions\r\n * ```html\r\n * <fui-card-actions align=\"start\" paddingless=\"true\">\r\n * <button fuiButton variant=\"tertiary\">\r\n * <fui-icon name=\"heart\"></fui-icon>\r\n * </button>\r\n * </fui-card-actions>\r\n * ```\r\n */\r\n@Component({\r\n selector: 'fui-card-actions',\r\n standalone: true,\r\n templateUrl: './card-actions.component.html',\r\n host: {\r\n class: 'fui-card-actions',\r\n '[class.fui-card-actions--align-start]': 'align() === \"start\"',\r\n '[class.fui-card-actions--align-center]': 'align() === \"center\"',\r\n '[class.fui-card-actions--align-end]': 'align() === \"end\"',\r\n '[class.fui-card-actions--paddingless]': 'paddingless()',\r\n },\r\n})\r\nexport class FuiCardActionsComponent {\r\n /**\r\n * Alignment of actions within the container\r\n * @default 'end'\r\n */\r\n readonly align: InputSignal<'start' | 'center' | 'end'> = input<'start' | 'center' | 'end'>('end');\r\n\r\n /**\r\n * Whether to remove padding from the actions container\r\n * @default false\r\n */\r\n readonly paddingless: InputSignal<boolean> = input(false);\r\n}\r\n","<ng-content></ng-content>\r\n","import { Directive } from '@angular/core';\r\n\r\n/**\r\n * # FuiCardHeader Directive\r\n *\r\n * Marker directive for projecting a custom element into the card header region\r\n * without using the {@link FuiCardHeaderComponent}. Apply it to any element to\r\n * have `<fui-card>` treat it as header content.\r\n *\r\n * ## Usage\r\n * ```html\r\n * <fui-card>\r\n * <div fuiCardHeader>My full-width header</div>\r\n * <p>Content</p>\r\n * </fui-card>\r\n * ```\r\n */\r\n@Directive({\r\n selector: '[fuiCardHeader]',\r\n standalone: true,\r\n host: {\r\n class: 'fui-card-header',\r\n },\r\n})\r\nexport class FuiCardHeaderDirective {}\r\n","import { Directive } from '@angular/core';\r\n\r\n/**\r\n * # FuiCardActions Directive\r\n *\r\n * Marker directive for projecting a custom element into the card actions region\r\n * without using the {@link FuiCardActionsComponent}. Apply it to any element to\r\n * have `<fui-card>` treat it as actions content.\r\n *\r\n * ## Usage\r\n * ```html\r\n * <fui-card>\r\n * <p>Content</p>\r\n * <div fuiCardActions>\r\n * <button fuiButton>OK</button>\r\n * </div>\r\n * </fui-card>\r\n * ```\r\n */\r\n@Directive({\r\n selector: '[fuiCardActions]',\r\n standalone: true,\r\n host: {\r\n class: 'fui-card-actions',\r\n },\r\n})\r\nexport class FuiCardActionsDirective {}\r\n","import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n ContentChild,\r\n HostListener,\r\n input,\r\n InputSignal,\r\n Signal,\r\n signal,\r\n ViewEncapsulation,\r\n WritableSignal,\r\n} from '@angular/core';\r\n\r\nimport { FuiCardHeaderComponent } from './card-header.component';\r\nimport { FuiCardActionsComponent } from './card-actions.component';\r\nimport { FuiCardHeaderDirective } from './card-header.directive';\r\nimport { FuiCardActionsDirective } from './card-actions.directive';\r\n\r\n/**\r\n * Available card variants following Carbon Design System patterns\r\n */\r\nexport type FuiCardVariant = 'elevated' | 'outlined' | 'flat';\r\n\r\n/**\r\n * Available padding options for card content\r\n */\r\nexport type FuiCardPadding = 'none' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\n/**\r\n * # FuiCard Component\r\n *\r\n * A flexible container component following Carbon Design System patterns.\r\n * Provides a structured layout with optional header, content, and actions sections.\r\n *\r\n * ## Features\r\n * - Multiple variants: elevated, outlined, flat\r\n * - Configurable padding: none, sm, md, lg, xl\r\n * - Structured content areas: header, content, actions\r\n * - Clickable state support with hover animations\r\n * - Disabled state support\r\n * - Full accessibility support\r\n * - Smooth motion transitions\r\n *\r\n * ## Usage\r\n *\r\n * ### Basic Card\r\n * ```html\r\n * <fui-card>\r\n * <p>Card content goes here</p>\r\n * </fui-card>\r\n * ```\r\n *\r\n * ### Card with Header and Actions\r\n * ```html\r\n * <fui-card variant=\"outlined\">\r\n * <fui-card-header title=\"Card Title\" subtitle=\"Optional subtitle\">\r\n * <button fuiButton variant=\"tertiary\" size=\"sm\" [iconOnly]=\"true\">\r\n * <fui-icon name=\"overflow-menu-vertical\"></fui-icon>\r\n * </button>\r\n * </fui-card-header>\r\n *\r\n * <p>Main card content</p>\r\n *\r\n * <fui-card-actions align=\"end\">\r\n * <button fuiButton variant=\"secondary\">Cancel</button>\r\n * <button fuiButton variant=\"primary\">Save</button>\r\n * </fui-card-actions>\r\n * </fui-card>\r\n * ```\r\n *\r\n * ### Clickable Card\r\n * ```html\r\n * <fui-card [clickable]=\"true\" (click)=\"handleCardClick()\">\r\n * <p>This entire card is clickable</p>\r\n * </fui-card>\r\n * ```\r\n *\r\n * @example\r\n * ```typescript\r\n * import { FuiCardComponent, FuiCardHeaderComponent, FuiCardActionsComponent } from '@raintonic/formaui/components/card';\r\n *\r\n * @Component({\r\n * standalone: true,\r\n * imports: [FuiCardComponent, FuiCardHeaderComponent, FuiCardActionsComponent],\r\n * template: `\r\n * <fui-card variant=\"elevated\" padding=\"lg\">\r\n * <fui-card-header title=\"User Profile\"></fui-card-header>\r\n * <div class=\"user-info\">\r\n * <p>User details here...</p>\r\n * </div>\r\n * <fui-card-actions>\r\n * <button fuiButton>Edit</button>\r\n * </fui-card-actions>\r\n * </fui-card>\r\n * `\r\n * })\r\n * export class UserCardComponent {}\r\n * ```\r\n */\r\n@Component({\r\n selector: 'fui-card',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './card.component.html',\r\n styleUrls: ['./card.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n class: 'fui-card',\r\n '[class]': 'computedClasses()',\r\n '[attr.role]': 'clickable() ? \"button\" : \"region\"',\r\n '[attr.tabindex]': 'clickable() && !disabled() ? \"0\" : null',\r\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\r\n '[attr.aria-labelledby]': 'headerId',\r\n },\r\n})\r\nexport class FuiCardComponent implements AfterContentInit {\r\n /**\r\n * Card variant that determines the visual style\r\n * @default 'outlined'\r\n */\r\n readonly variant: InputSignal<FuiCardVariant> = input<FuiCardVariant>('outlined');\r\n\r\n /**\r\n * Padding applied to card content\r\n * @default 'lg'\r\n */\r\n readonly padding: InputSignal<FuiCardPadding> = input<FuiCardPadding>('lg');\r\n\r\n /**\r\n * Whether the card is clickable (adds hover effects and cursor pointer)\r\n * @default false\r\n */\r\n readonly clickable: InputSignal<boolean> = input(false);\r\n\r\n /**\r\n * Whether the card is disabled\r\n * @default false\r\n */\r\n readonly disabled: InputSignal<boolean> = input(false);\r\n\r\n // Animation state\r\n readonly hovered: WritableSignal<boolean> = signal(false);\r\n readonly liftState: Signal<'idle' | 'lifted'> = computed(() =>\r\n this.clickable() && this.hovered() && !this.disabled() ? 'lifted' : 'idle',\r\n );\r\n\r\n // Projected content queries and ARIA label linkage\r\n @ContentChild(FuiCardHeaderComponent) headerCmp?: FuiCardHeaderComponent;\r\n @ContentChild(FuiCardActionsComponent) actionsCmp?: FuiCardActionsComponent;\r\n @ContentChild(FuiCardHeaderDirective) headerDir?: FuiCardHeaderDirective;\r\n @ContentChild(FuiCardActionsDirective) actionsDir?: FuiCardActionsDirective;\r\n\r\n headerId = '';\r\n\r\n // Computed classes\r\n readonly computedClasses: Signal<string> = computed(() => {\r\n const classes: string[] = [`fui-card--${this.variant()}`, `fui-card--padding-${this.padding()}`];\r\n\r\n if (this.clickable()) {\r\n classes.push('fui-card--clickable');\r\n }\r\n\r\n if (this.disabled()) {\r\n classes.push('fui-card--disabled');\r\n }\r\n\r\n if (this.hovered()) {\r\n classes.push('fui-card--hovered');\r\n }\r\n\r\n return classes.join(' ');\r\n });\r\n\r\n @HostListener('mouseenter')\r\n onMouseEnter(): void {\r\n if (this.clickable() && !this.disabled()) {\r\n this.hovered.set(true);\r\n }\r\n }\r\n\r\n @HostListener('mouseleave')\r\n onMouseLeave(): void {\r\n this.hovered.set(false);\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown(event: KeyboardEvent): void {\r\n if (this.clickable() && !this.disabled() && (event.key === 'Enter' || event.key === ' ')) {\r\n event.preventDefault();\r\n (event.target as HTMLElement).click();\r\n }\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: MouseEvent): void {\r\n if (this.disabled()) {\r\n event.stopImmediatePropagation();\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.headerId = this.headerCmp ? this.headerCmp.hostId : '';\r\n }\r\n\r\n // Check if header content is projected (component or attribute directive)\r\n get hasHeader(): boolean {\r\n return !!this.headerCmp || !!this.headerDir;\r\n }\r\n\r\n // Check if actions content is projected (component or attribute directive)\r\n get hasActions(): boolean {\r\n return !!this.actionsCmp || !!this.actionsDir;\r\n }\r\n}\r\n","@if (hasHeader) {\r\n <div class=\"fui-card__header\">\r\n <ng-content select=\"fui-card-header, [fuiCardHeader]\"></ng-content>\r\n </div>\r\n}\r\n\r\n<div class=\"fui-card__content\" [class.fui-card__content--no-padding]=\"padding() === 'none'\">\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n@if (hasActions) {\r\n <div class=\"fui-card__actions\">\r\n <ng-content select=\"fui-card-actions, [fuiCardActions]\"></ng-content>\r\n </div>\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -263,7 +263,7 @@ class FuiCheckboxComponent {
|
|
|
263
263
|
useExisting: FuiCheckboxComponent,
|
|
264
264
|
multi: true,
|
|
265
265
|
},
|
|
266
|
-
], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true, isSignal: true }], ngImport: i0, template: "<label class=\"fui-checkbox__container\" [attr.for]=\"inputId\">\r\n <span class=\"fui-checkbox__frame\">\r\n <input\r\n #inputElement\r\n type=\"checkbox\"\r\n class=\"fui-checkbox__native-control\"\r\n [id]=\"inputId\"\r\n [name]=\"name()\"\r\n [value]=\"value()\"\r\n [checked]=\"checked()\"\r\n [disabled]=\"disabled()\"\r\n [required]=\"required()\"\r\n [attr.aria-checked]=\"indeterminate() ? 'mixed' : checked()\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n [attr.aria-labelledby]=\"ariaLabelledby()\"\r\n [attr.aria-describedby]=\"ariaDescribedby()\"\r\n [attr.aria-invalid]=\"errorState() ? 'true' : null\"\r\n [attr.aria-required]=\"required() ? 'true' : null\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n (change)=\"onInputChange($event)\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n />\r\n\r\n <span class=\"fui-checkbox__checkmark\">\r\n @if (checked() && !indeterminate()) {\r\n <svg\r\n class=\"fui-checkbox__checkmark-icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"3\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n aria-hidden=\"true\"\r\n >\r\n <polyline points=\"20 6 9 17 4 12\"></polyline>\r\n </svg>\r\n }\r\n\r\n @if (indeterminate()) {\r\n <svg\r\n class=\"fui-checkbox__indeterminate-icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"3\"\r\n stroke-linecap=\"round\"\r\n aria-hidden=\"true\"\r\n >\r\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line>\r\n </svg>\r\n }\r\n </span>\r\n\r\n @if (!disableRipple() && !disabled()) {\r\n <span class=\"fui-checkbox__ripple\"></span>\r\n }\r\n </span>\r\n\r\n <span class=\"fui-checkbox__label\">\r\n <ng-content></ng-content>\r\n </span>\r\n</label>\r\n", styles: ["@keyframes fui-skeleton-pulse{0%{opacity:1}50%{opacity:.4}to{opacity:1}}@keyframes fui-spin{to{transform:rotate(360deg)}}@keyframes fui-shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-2px)}20%,40%,60%,80%{transform:translate(2px)}}.fui-motion-fade-in{transition-property:opacity;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-out);transition-delay:0ms}.fui-motion-fade-out{transition-property:opacity;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-in);transition-delay:0ms}.fui-motion-slide-in-bottom{transition-property:transform;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:translateY(0)}.fui-motion-slide-in-bottom.fui-motion-entering{transform:translateY(1rem)}.fui-motion-slide-in-top{transition-property:transform;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:translateY(0)}.fui-motion-slide-in-top.fui-motion-entering{transform:translateY(-1rem)}.fui-motion-scale-in{transition-property:transform,opacity;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:scale(1);opacity:1}.fui-motion-scale-in.fui-motion-entering{transform:scale(.95);opacity:0}.fui-no-motion{transition:none!important;animation:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@keyframes fui-pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.05)}to{transform:scale(1);opacity:1}}@keyframes fui-slide-in{0%{transform:translate(120%)}to{transform:translate(0)}}.fui-slide-in{animation:fui-slide-in var(--fui-duration-base) var(--fui-ease-out)}@keyframes fui-popover-enter{0%{opacity:0;transform:translateY(-14px)}60%{opacity:1}to{opacity:1;transform:translateY(0)}}.fui-checkbox{--fui-checkbox-size: 1.125rem;--fui-checkbox-border-width: 1px;--fui-checkbox-border-radius: var(--fui-radius-xs);--fui-checkbox-active-bg: var(--fui-
|
|
266
|
+
], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true, isSignal: true }], ngImport: i0, template: "<label class=\"fui-checkbox__container\" [attr.for]=\"inputId\">\r\n <span class=\"fui-checkbox__frame\">\r\n <input\r\n #inputElement\r\n type=\"checkbox\"\r\n class=\"fui-checkbox__native-control\"\r\n [id]=\"inputId\"\r\n [name]=\"name()\"\r\n [value]=\"value()\"\r\n [checked]=\"checked()\"\r\n [disabled]=\"disabled()\"\r\n [required]=\"required()\"\r\n [attr.aria-checked]=\"indeterminate() ? 'mixed' : checked()\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n [attr.aria-labelledby]=\"ariaLabelledby()\"\r\n [attr.aria-describedby]=\"ariaDescribedby()\"\r\n [attr.aria-invalid]=\"errorState() ? 'true' : null\"\r\n [attr.aria-required]=\"required() ? 'true' : null\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n (change)=\"onInputChange($event)\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n />\r\n\r\n <span class=\"fui-checkbox__checkmark\">\r\n @if (checked() && !indeterminate()) {\r\n <svg\r\n class=\"fui-checkbox__checkmark-icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"3\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n aria-hidden=\"true\"\r\n >\r\n <polyline points=\"20 6 9 17 4 12\"></polyline>\r\n </svg>\r\n }\r\n\r\n @if (indeterminate()) {\r\n <svg\r\n class=\"fui-checkbox__indeterminate-icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"3\"\r\n stroke-linecap=\"round\"\r\n aria-hidden=\"true\"\r\n >\r\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line>\r\n </svg>\r\n }\r\n </span>\r\n\r\n @if (!disableRipple() && !disabled()) {\r\n <span class=\"fui-checkbox__ripple\"></span>\r\n }\r\n </span>\r\n\r\n <span class=\"fui-checkbox__label\">\r\n <ng-content></ng-content>\r\n </span>\r\n</label>\r\n", styles: ["@keyframes fui-skeleton-pulse{0%{opacity:1}50%{opacity:.4}to{opacity:1}}@keyframes fui-spin{to{transform:rotate(360deg)}}@keyframes fui-shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-2px)}20%,40%,60%,80%{transform:translate(2px)}}.fui-motion-fade-in{transition-property:opacity;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-out);transition-delay:0ms}.fui-motion-fade-out{transition-property:opacity;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-in);transition-delay:0ms}.fui-motion-slide-in-bottom{transition-property:transform;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:translateY(0)}.fui-motion-slide-in-bottom.fui-motion-entering{transform:translateY(1rem)}.fui-motion-slide-in-top{transition-property:transform;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:translateY(0)}.fui-motion-slide-in-top.fui-motion-entering{transform:translateY(-1rem)}.fui-motion-scale-in{transition-property:transform,opacity;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:scale(1);opacity:1}.fui-motion-scale-in.fui-motion-entering{transform:scale(.95);opacity:0}.fui-no-motion{transition:none!important;animation:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@keyframes fui-pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.05)}to{transform:scale(1);opacity:1}}@keyframes fui-slide-in{0%{transform:translate(120%)}to{transform:translate(0)}}.fui-slide-in{animation:fui-slide-in var(--fui-duration-base) var(--fui-ease-out)}@keyframes fui-popover-enter{0%{opacity:0;transform:translateY(-14px)}60%{opacity:1}to{opacity:1;transform:translateY(0)}}.fui-checkbox{--fui-checkbox-size: 1.125rem;--fui-checkbox-border-width: 1px;--fui-checkbox-border-radius: var(--fui-radius-xs);--fui-checkbox-active-bg: var(--fui-field-bg);--fui-checkbox-border-color: var(--fui-text-secondary);--fui-checkbox-checked-color: var(--fui-primary-bg);--fui-checkbox-hover-bg: var(--fui-primary-muted);--fui-checkbox-label-gap: var(--fui-spacing-4);--fui-checkbox-label-font-size: var(--fui-text-base);--fui-checkbox-ripple-size: 2.5rem;display:inline-flex;align-items:flex-start;position:relative;cursor:pointer;-webkit-user-select:none;user-select:none;vertical-align:middle}.fui-checkbox__container{display:inline-flex;align-items:center;cursor:inherit;gap:var(--fui-checkbox-label-gap);width:100%}.fui-checkbox__frame{position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--fui-checkbox-size);height:var(--fui-checkbox-size)}.fui-checkbox__native-control{position:absolute;width:100%;height:100%;margin:0;padding:0;opacity:0;cursor:inherit;z-index:1}.fui-checkbox__native-control:focus-visible+.fui-checkbox__checkmark{outline:2px solid var(--fui-primary-10)}.fui-checkbox__checkmark{display:flex;align-items:center;justify-content:center;width:var(--fui-checkbox-size);height:var(--fui-checkbox-size);border:var(--fui-checkbox-border-width) solid var(--fui-checkbox-border-color);border-radius:var(--fui-checkbox-border-radius);background-color:var(--fui-checkbox-active-bg);transition-property:background-color,border-color,transform;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-in-out);transition-delay:0ms}.fui-checkbox__checkmark:hover{background-color:var(--fui-checkbox-hover-bg);border-color:var(--fui-border-primary)}.fui-checkbox__indeterminate-icon,.fui-checkbox__checkmark-icon{width:calc(var(--fui-checkbox-size) * .75);height:calc(var(--fui-checkbox-size) * .75);color:var(--fui-checkbox-checked-color);opacity:1;transform:scale(1);transition-property:opacity,transform;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-out);transition-delay:0ms}@starting-style{.fui-checkbox__indeterminate-icon,.fui-checkbox__checkmark-icon{opacity:0;transform:scale(.5)}}.fui-checkbox__label{font-family:var(--fui-font-sans);font-size:var(--fui-text-base);font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal);color:var(--fui-text-primary);cursor:inherit}.fui-checkbox__ripple{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);border-radius:var(--fui-checkbox-border-radius);background-color:var(--fui-checkbox-checked-color);opacity:0;z-index:-1;pointer-events:none;transition:var(--fui-transition-bg)}.fui-checkbox:not(.fui-checkbox--disabled):hover .fui-checkbox__checkmark{background-color:var(--fui-checkbox-hover-bg);border-color:var(--fui-border-primary)}.fui-checkbox:not(.fui-checkbox--disabled):hover .fui-checkbox__ripple{opacity:.8}.fui-checkbox--focused:not(.fui-checkbox--disabled) .fui-checkbox__ripple{opacity:.08}.fui-checkbox--checked .fui-checkbox__checkmark,.fui-checkbox--indeterminate .fui-checkbox__checkmark{background-color:var(--fui-checkbox-hover-bg);border-color:var(--fui-checkbox-checked-color)}.fui-checkbox--disabled{cursor:not-allowed}.fui-checkbox--disabled .fui-checkbox__checkmark{border-color:var(--fui-border-default);background-color:var(--fui-bg-muted)}.fui-checkbox--disabled .fui-checkbox__checkmark-icon,.fui-checkbox--disabled .fui-checkbox__indeterminate-icon,.fui-checkbox--disabled .fui-checkbox__label{color:var(--fui-text-disabled)}.fui-checkbox--disabled .fui-checkbox__ripple{display:none}.fui-checkbox--readonly{cursor:default;pointer-events:none}.fui-checkbox--readonly .fui-checkbox__label{color:var(--fui-text-secondary)}.fui-checkbox--readonly .fui-checkbox__ripple{display:none}.fui-checkbox--error .fui-checkbox__checkmark{border-color:var(--fui-border-error)}.fui-checkbox--error.fui-checkbox--checked .fui-checkbox__checkmark,.fui-checkbox--error.fui-checkbox--indeterminate .fui-checkbox__checkmark{background-color:var(--fui-fill-error);border-color:var(--fui-border-error)}.fui-checkbox--error .fui-checkbox__label{color:var(--fui-text-error)}.fui-checkbox--label-before .fui-checkbox__container{flex-direction:row-reverse;justify-content:flex-end}@media(prefers-contrast:high){.fui-checkbox__checkmark{border-width:3px}.fui-checkbox__native-control:focus-visible+.fui-checkbox__checkmark{outline-width:3px}}@media(prefers-reduced-motion:reduce){.fui-checkbox__checkmark,.fui-checkbox__checkmark-icon,.fui-checkbox__indeterminate-icon,.fui-checkbox__ripple{transition:none}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
267
267
|
}
|
|
268
268
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: FuiCheckboxComponent, decorators: [{
|
|
269
269
|
type: Component,
|
|
@@ -284,7 +284,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
|
|
|
284
284
|
useExisting: FuiCheckboxComponent,
|
|
285
285
|
multi: true,
|
|
286
286
|
},
|
|
287
|
-
], template: "<label class=\"fui-checkbox__container\" [attr.for]=\"inputId\">\r\n <span class=\"fui-checkbox__frame\">\r\n <input\r\n #inputElement\r\n type=\"checkbox\"\r\n class=\"fui-checkbox__native-control\"\r\n [id]=\"inputId\"\r\n [name]=\"name()\"\r\n [value]=\"value()\"\r\n [checked]=\"checked()\"\r\n [disabled]=\"disabled()\"\r\n [required]=\"required()\"\r\n [attr.aria-checked]=\"indeterminate() ? 'mixed' : checked()\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n [attr.aria-labelledby]=\"ariaLabelledby()\"\r\n [attr.aria-describedby]=\"ariaDescribedby()\"\r\n [attr.aria-invalid]=\"errorState() ? 'true' : null\"\r\n [attr.aria-required]=\"required() ? 'true' : null\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n (change)=\"onInputChange($event)\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n />\r\n\r\n <span class=\"fui-checkbox__checkmark\">\r\n @if (checked() && !indeterminate()) {\r\n <svg\r\n class=\"fui-checkbox__checkmark-icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"3\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n aria-hidden=\"true\"\r\n >\r\n <polyline points=\"20 6 9 17 4 12\"></polyline>\r\n </svg>\r\n }\r\n\r\n @if (indeterminate()) {\r\n <svg\r\n class=\"fui-checkbox__indeterminate-icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"3\"\r\n stroke-linecap=\"round\"\r\n aria-hidden=\"true\"\r\n >\r\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line>\r\n </svg>\r\n }\r\n </span>\r\n\r\n @if (!disableRipple() && !disabled()) {\r\n <span class=\"fui-checkbox__ripple\"></span>\r\n }\r\n </span>\r\n\r\n <span class=\"fui-checkbox__label\">\r\n <ng-content></ng-content>\r\n </span>\r\n</label>\r\n", styles: ["@keyframes fui-skeleton-pulse{0%{opacity:1}50%{opacity:.4}to{opacity:1}}@keyframes fui-spin{to{transform:rotate(360deg)}}@keyframes fui-shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-2px)}20%,40%,60%,80%{transform:translate(2px)}}.fui-motion-fade-in{transition-property:opacity;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-out);transition-delay:0ms}.fui-motion-fade-out{transition-property:opacity;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-in);transition-delay:0ms}.fui-motion-slide-in-bottom{transition-property:transform;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:translateY(0)}.fui-motion-slide-in-bottom.fui-motion-entering{transform:translateY(1rem)}.fui-motion-slide-in-top{transition-property:transform;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:translateY(0)}.fui-motion-slide-in-top.fui-motion-entering{transform:translateY(-1rem)}.fui-motion-scale-in{transition-property:transform,opacity;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:scale(1);opacity:1}.fui-motion-scale-in.fui-motion-entering{transform:scale(.95);opacity:0}.fui-no-motion{transition:none!important;animation:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@keyframes fui-pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.05)}to{transform:scale(1);opacity:1}}@keyframes fui-slide-in{0%{transform:translate(120%)}to{transform:translate(0)}}.fui-slide-in{animation:fui-slide-in var(--fui-duration-base) var(--fui-ease-out)}@keyframes fui-popover-enter{0%{opacity:0;transform:translateY(-14px)}60%{opacity:1}to{opacity:1;transform:translateY(0)}}.fui-checkbox{--fui-checkbox-size: 1.125rem;--fui-checkbox-border-width: 1px;--fui-checkbox-border-radius: var(--fui-radius-xs);--fui-checkbox-active-bg: var(--fui-
|
|
287
|
+
], template: "<label class=\"fui-checkbox__container\" [attr.for]=\"inputId\">\r\n <span class=\"fui-checkbox__frame\">\r\n <input\r\n #inputElement\r\n type=\"checkbox\"\r\n class=\"fui-checkbox__native-control\"\r\n [id]=\"inputId\"\r\n [name]=\"name()\"\r\n [value]=\"value()\"\r\n [checked]=\"checked()\"\r\n [disabled]=\"disabled()\"\r\n [required]=\"required()\"\r\n [attr.aria-checked]=\"indeterminate() ? 'mixed' : checked()\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n [attr.aria-labelledby]=\"ariaLabelledby()\"\r\n [attr.aria-describedby]=\"ariaDescribedby()\"\r\n [attr.aria-invalid]=\"errorState() ? 'true' : null\"\r\n [attr.aria-required]=\"required() ? 'true' : null\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n (change)=\"onInputChange($event)\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n />\r\n\r\n <span class=\"fui-checkbox__checkmark\">\r\n @if (checked() && !indeterminate()) {\r\n <svg\r\n class=\"fui-checkbox__checkmark-icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"3\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n aria-hidden=\"true\"\r\n >\r\n <polyline points=\"20 6 9 17 4 12\"></polyline>\r\n </svg>\r\n }\r\n\r\n @if (indeterminate()) {\r\n <svg\r\n class=\"fui-checkbox__indeterminate-icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"3\"\r\n stroke-linecap=\"round\"\r\n aria-hidden=\"true\"\r\n >\r\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line>\r\n </svg>\r\n }\r\n </span>\r\n\r\n @if (!disableRipple() && !disabled()) {\r\n <span class=\"fui-checkbox__ripple\"></span>\r\n }\r\n </span>\r\n\r\n <span class=\"fui-checkbox__label\">\r\n <ng-content></ng-content>\r\n </span>\r\n</label>\r\n", styles: ["@keyframes fui-skeleton-pulse{0%{opacity:1}50%{opacity:.4}to{opacity:1}}@keyframes fui-spin{to{transform:rotate(360deg)}}@keyframes fui-shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-2px)}20%,40%,60%,80%{transform:translate(2px)}}.fui-motion-fade-in{transition-property:opacity;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-out);transition-delay:0ms}.fui-motion-fade-out{transition-property:opacity;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-in);transition-delay:0ms}.fui-motion-slide-in-bottom{transition-property:transform;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:translateY(0)}.fui-motion-slide-in-bottom.fui-motion-entering{transform:translateY(1rem)}.fui-motion-slide-in-top{transition-property:transform;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:translateY(0)}.fui-motion-slide-in-top.fui-motion-entering{transform:translateY(-1rem)}.fui-motion-scale-in{transition-property:transform,opacity;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:scale(1);opacity:1}.fui-motion-scale-in.fui-motion-entering{transform:scale(.95);opacity:0}.fui-no-motion{transition:none!important;animation:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@keyframes fui-pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.05)}to{transform:scale(1);opacity:1}}@keyframes fui-slide-in{0%{transform:translate(120%)}to{transform:translate(0)}}.fui-slide-in{animation:fui-slide-in var(--fui-duration-base) var(--fui-ease-out)}@keyframes fui-popover-enter{0%{opacity:0;transform:translateY(-14px)}60%{opacity:1}to{opacity:1;transform:translateY(0)}}.fui-checkbox{--fui-checkbox-size: 1.125rem;--fui-checkbox-border-width: 1px;--fui-checkbox-border-radius: var(--fui-radius-xs);--fui-checkbox-active-bg: var(--fui-field-bg);--fui-checkbox-border-color: var(--fui-text-secondary);--fui-checkbox-checked-color: var(--fui-primary-bg);--fui-checkbox-hover-bg: var(--fui-primary-muted);--fui-checkbox-label-gap: var(--fui-spacing-4);--fui-checkbox-label-font-size: var(--fui-text-base);--fui-checkbox-ripple-size: 2.5rem;display:inline-flex;align-items:flex-start;position:relative;cursor:pointer;-webkit-user-select:none;user-select:none;vertical-align:middle}.fui-checkbox__container{display:inline-flex;align-items:center;cursor:inherit;gap:var(--fui-checkbox-label-gap);width:100%}.fui-checkbox__frame{position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--fui-checkbox-size);height:var(--fui-checkbox-size)}.fui-checkbox__native-control{position:absolute;width:100%;height:100%;margin:0;padding:0;opacity:0;cursor:inherit;z-index:1}.fui-checkbox__native-control:focus-visible+.fui-checkbox__checkmark{outline:2px solid var(--fui-primary-10)}.fui-checkbox__checkmark{display:flex;align-items:center;justify-content:center;width:var(--fui-checkbox-size);height:var(--fui-checkbox-size);border:var(--fui-checkbox-border-width) solid var(--fui-checkbox-border-color);border-radius:var(--fui-checkbox-border-radius);background-color:var(--fui-checkbox-active-bg);transition-property:background-color,border-color,transform;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-in-out);transition-delay:0ms}.fui-checkbox__checkmark:hover{background-color:var(--fui-checkbox-hover-bg);border-color:var(--fui-border-primary)}.fui-checkbox__indeterminate-icon,.fui-checkbox__checkmark-icon{width:calc(var(--fui-checkbox-size) * .75);height:calc(var(--fui-checkbox-size) * .75);color:var(--fui-checkbox-checked-color);opacity:1;transform:scale(1);transition-property:opacity,transform;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-out);transition-delay:0ms}@starting-style{.fui-checkbox__indeterminate-icon,.fui-checkbox__checkmark-icon{opacity:0;transform:scale(.5)}}.fui-checkbox__label{font-family:var(--fui-font-sans);font-size:var(--fui-text-base);font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal);color:var(--fui-text-primary);cursor:inherit}.fui-checkbox__ripple{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);border-radius:var(--fui-checkbox-border-radius);background-color:var(--fui-checkbox-checked-color);opacity:0;z-index:-1;pointer-events:none;transition:var(--fui-transition-bg)}.fui-checkbox:not(.fui-checkbox--disabled):hover .fui-checkbox__checkmark{background-color:var(--fui-checkbox-hover-bg);border-color:var(--fui-border-primary)}.fui-checkbox:not(.fui-checkbox--disabled):hover .fui-checkbox__ripple{opacity:.8}.fui-checkbox--focused:not(.fui-checkbox--disabled) .fui-checkbox__ripple{opacity:.08}.fui-checkbox--checked .fui-checkbox__checkmark,.fui-checkbox--indeterminate .fui-checkbox__checkmark{background-color:var(--fui-checkbox-hover-bg);border-color:var(--fui-checkbox-checked-color)}.fui-checkbox--disabled{cursor:not-allowed}.fui-checkbox--disabled .fui-checkbox__checkmark{border-color:var(--fui-border-default);background-color:var(--fui-bg-muted)}.fui-checkbox--disabled .fui-checkbox__checkmark-icon,.fui-checkbox--disabled .fui-checkbox__indeterminate-icon,.fui-checkbox--disabled .fui-checkbox__label{color:var(--fui-text-disabled)}.fui-checkbox--disabled .fui-checkbox__ripple{display:none}.fui-checkbox--readonly{cursor:default;pointer-events:none}.fui-checkbox--readonly .fui-checkbox__label{color:var(--fui-text-secondary)}.fui-checkbox--readonly .fui-checkbox__ripple{display:none}.fui-checkbox--error .fui-checkbox__checkmark{border-color:var(--fui-border-error)}.fui-checkbox--error.fui-checkbox--checked .fui-checkbox__checkmark,.fui-checkbox--error.fui-checkbox--indeterminate .fui-checkbox__checkmark{background-color:var(--fui-fill-error);border-color:var(--fui-border-error)}.fui-checkbox--error .fui-checkbox__label{color:var(--fui-text-error)}.fui-checkbox--label-before .fui-checkbox__container{flex-direction:row-reverse;justify-content:flex-end}@media(prefers-contrast:high){.fui-checkbox__checkmark{border-width:3px}.fui-checkbox__native-control:focus-visible+.fui-checkbox__checkmark{outline-width:3px}}@media(prefers-reduced-motion:reduce){.fui-checkbox__checkmark,.fui-checkbox__checkmark-icon,.fui-checkbox__indeterminate-icon,.fui-checkbox__ripple{transition:none}}\n"] }]
|
|
288
288
|
}], ctorParameters: () => [], propDecorators: { readonlyInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], checkedInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "checked", required: false }] }], disabledInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], indeterminateInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "indeterminate", required: false }] }], requiredInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], labelPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelPosition", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], ariaLabelledby: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-labelledby", required: false }] }], ariaDescribedby: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-describedby", required: false }] }], disableRipple: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableRipple", required: false }] }], tabIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabIndex", required: false }] }], errorStateMatcher: [{ type: i0.Input, args: [{ isSignal: true, alias: "errorStateMatcher", required: false }] }], change: [{ type: i0.Output, args: ["change"] }], indeterminateChange: [{ type: i0.Output, args: ["indeterminateChange"] }], inputElement: [{ type: i0.ViewChild, args: ['inputElement', { isSignal: true }] }] } });
|
|
289
289
|
|
|
290
290
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raintonic-formaui-components-checkbox.mjs","sources":["../../../lib/components/checkbox/checkbox.component.ts","../../../lib/components/checkbox/checkbox.component.html","../../../lib/components/checkbox/raintonic-formaui-components-checkbox.ts"],"sourcesContent":["import {\r\n Component,\r\n ChangeDetectionStrategy,\r\n ViewEncapsulation,\r\n input,\r\n output,\r\n computed,\r\n signal,\r\n viewChild,\r\n ElementRef,\r\n OutputEmitterRef,\r\n Signal,\r\n WritableSignal,\r\n OnDestroy,\r\n DoCheck,\r\n inject,\r\n effect,\r\n booleanAttribute,\r\n} from '@angular/core';\r\n\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, NgControl, FormGroupDirective, NgForm } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { DefaultErrorStateMatcher, ErrorStateMatcher } from '@raintonic/formaui/core';\r\nimport { injectNgControl, updateErrorState, syncRequiredState, syncNgControlDisabled } from '@raintonic/formaui/cdk/form-field';\r\n\r\n/**\r\n * Checkbox label position\r\n */\r\nexport type FuiCheckboxLabelPosition = 'before' | 'after';\r\n\r\n/**\r\n * Checkbox change event interface (compatible with MatCheckboxChange)\r\n */\r\nexport interface FuiCheckboxChange {\r\n /** The source checkbox of the event. */\r\n source: FuiCheckboxComponent;\r\n /** The new `checked` value of the checkbox. */\r\n checked: boolean;\r\n}\r\n\r\n/**\r\n * # FuiCheckbox Component\r\n *\r\n * A checkbox component with full Angular Reactive Forms support.\r\n * Compatible with Angular Material's mat-checkbox interface.\r\n *\r\n * ## Features\r\n * - Full Reactive Forms integration (ControlValueAccessor)\r\n * - Indeterminate state support\r\n * - Label position configuration (before/after)\r\n * - Built-in validation and error display\r\n * - Disabled state\r\n * - Full accessibility support (ARIA)\r\n * - Compatible with mat-checkbox interface\r\n *\r\n * ## Usage\r\n *\r\n * ### Basic Checkbox\r\n * ```html\r\n * <fui-checkbox>Accept terms</fui-checkbox>\r\n * ```\r\n *\r\n * ### With Reactive Forms\r\n * ```html\r\n * <form [formGroup]=\"form\">\r\n * <fui-checkbox formControlName=\"acceptTerms\">\r\n * I accept the terms and conditions\r\n * </fui-checkbox>\r\n * </form>\r\n * ```\r\n *\r\n * ### Indeterminate State\r\n * ```html\r\n * <fui-checkbox [indeterminate]=\"true\">\r\n * Select all\r\n * </fui-checkbox>\r\n * ```\r\n *\r\n * ### Label Position\r\n * ```html\r\n * <fui-checkbox labelPosition=\"before\">\r\n * Label before checkbox\r\n * </fui-checkbox>\r\n * ```\r\n */\r\n@Component({\r\n selector: 'fui-checkbox',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './checkbox.component.html',\r\n styleUrls: ['./checkbox.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n class: 'fui-checkbox',\r\n '[class.fui-checkbox--checked]': 'checked()',\r\n '[class.fui-checkbox--disabled]': 'disabled() && !readonlyInput()',\r\n '[class.fui-checkbox--readonly]': 'readonlyInput()',\r\n '[class.fui-checkbox--indeterminate]': 'indeterminate()',\r\n '[class.fui-checkbox--label-before]': 'labelPosition() === \"before\"',\r\n '[class.fui-checkbox--focused]': 'focused()',\r\n '[class.fui-checkbox--error]': 'errorState()',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'null',\r\n },\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: FuiCheckboxComponent,\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class FuiCheckboxComponent implements ControlValueAccessor, DoCheck, OnDestroy {\r\n // Static properties\r\n static nextId = 0;\r\n readonly controlType = 'fui-checkbox';\r\n\r\n // Inputs using new signal-based API (mat-checkbox compatible)\r\n readonly readonlyInput = input<boolean, unknown>(false, {\r\n alias: 'readonly',\r\n transform: booleanAttribute,\r\n });\r\n readonly checkedInput = input<boolean, unknown>(false, {\r\n alias: 'checked',\r\n transform: booleanAttribute,\r\n });\r\n readonly disabledInput = input<boolean, unknown>(false, {\r\n alias: 'disabled',\r\n transform: booleanAttribute,\r\n });\r\n readonly indeterminateInput = input<boolean, unknown>(false, {\r\n alias: 'indeterminate',\r\n transform: booleanAttribute,\r\n });\r\n readonly requiredInput = input<boolean, unknown>(false, {\r\n alias: 'required',\r\n transform: booleanAttribute,\r\n });\r\n readonly labelPosition = input<FuiCheckboxLabelPosition>('after');\r\n readonly name = input<string | null>(null);\r\n readonly value = input('on');\r\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\r\n readonly ariaLabelledby = input<string | null>(null, { alias: 'aria-labelledby' });\r\n readonly ariaDescribedby = input<string | null>(null, { alias: 'aria-describedby' });\r\n readonly disableRipple = input<boolean, unknown>(false, { transform: booleanAttribute });\r\n readonly tabIndex = input(0);\r\n readonly errorStateMatcher = input<ErrorStateMatcher | null>(null);\r\n\r\n // Outputs (mat-checkbox compatible)\r\n readonly change: OutputEmitterRef<FuiCheckboxChange> = output<FuiCheckboxChange>();\r\n readonly indeterminateChange: OutputEmitterRef<boolean> = output<boolean>();\r\n\r\n // Internal state signals - single source of truth like mat-checkbox\r\n private readonly _checked: WritableSignal<boolean> = signal(false);\r\n private readonly _indeterminate: WritableSignal<boolean> = signal(false);\r\n private readonly _focused: WritableSignal<boolean> = signal(false);\r\n private readonly _disabled: WritableSignal<boolean> = signal(false);\r\n\r\n // Public signals - expose internal state as readonly\r\n readonly checked: Signal<boolean> = this._checked.asReadonly();\r\n readonly indeterminate: Signal<boolean> = this._indeterminate.asReadonly();\r\n readonly focused: Signal<boolean> = this._focused.asReadonly();\r\n\r\n // State changes subject for form field compatibility\r\n readonly stateChanges = new Subject<void>();\r\n private _uid = `fui-checkbox-${FuiCheckboxComponent.nextId++}`;\r\n readonly id = this._uid;\r\n readonly inputId = `${this._uid}-input`;\r\n\r\n // Error state\r\n private readonly _errorState: WritableSignal<boolean> = signal(false);\r\n readonly errorState = this._errorState.asReadonly();\r\n\r\n // Form control references\r\n private _parentForm = inject(NgForm, { optional: true });\r\n private _parentFormGroup = inject(FormGroupDirective, { optional: true });\r\n private _defaultErrorStateMatcher = inject(DefaultErrorStateMatcher);\r\n private readonly _ngControlRef = injectNgControl();\r\n\r\n get ngControl(): NgControl | null {\r\n return this._ngControlRef.ngControl;\r\n }\r\n\r\n // Required signal\r\n private readonly _required: WritableSignal<boolean> = signal(false);\r\n readonly required: Signal<boolean> = computed(() => this._required() || this.requiredInput());\r\n\r\n // NgControl disabled state\r\n private readonly _ngControlDisabled: WritableSignal<boolean> = signal(false);\r\n readonly disabled: Signal<boolean> = computed(\r\n () => this._disabled() || this.disabledInput() || this._ngControlDisabled(),\r\n );\r\n\r\n // ViewChild for input element\r\n readonly inputElement: Signal<ElementRef<HTMLInputElement> | undefined> =\r\n viewChild<ElementRef<HTMLInputElement>>('inputElement');\r\n\r\n // ControlValueAccessor callbacks\r\n private _onChange: (value: boolean) => void = () => {\r\n // Intentionally empty: will be replaced by Angular forms\r\n };\r\n private _onTouched: () => void = () => {\r\n // Intentionally empty: will be replaced by Angular forms\r\n };\r\n\r\n // Track if writeValue has been called by a form control\r\n private _formControlInitialized = false;\r\n\r\n constructor() {\r\n // Set valueAccessor after NgControl is resolved\r\n void Promise.resolve().then(() => {\r\n if (this._ngControlRef.ngControl) {\r\n this._ngControlRef.ngControl.valueAccessor = this;\r\n }\r\n });\r\n\r\n // Effect to sync checked input to internal state (like mat-checkbox @Input setter)\r\n // This allows [checked]=\"value\" to work, but form controls take precedence via writeValue\r\n effect(() => {\r\n const inputChecked = this.checkedInput();\r\n // Only apply input value if form control hasn't initialized with writeValue\r\n if (!this._formControlInitialized) {\r\n this._checked.set(inputChecked);\r\n }\r\n });\r\n\r\n // Effect to sync indeterminate input to internal state\r\n effect(() => {\r\n const inputIndeterminate = this.indeterminateInput();\r\n this._indeterminate.set(inputIndeterminate);\r\n });\r\n\r\n // Effect to emit state changes\r\n effect(() => {\r\n // Track all reactive inputs and internal signals\r\n this.checkedInput();\r\n this.disabledInput();\r\n this.indeterminateInput();\r\n this.requiredInput();\r\n this.labelPosition();\r\n this.name();\r\n this.value();\r\n this.errorStateMatcher();\r\n this._checked();\r\n this._indeterminate();\r\n this._focused();\r\n this._disabled();\r\n this._ngControlDisabled();\r\n this._required();\r\n this._errorState();\r\n\r\n // Emit state change\r\n this.stateChanges.next();\r\n });\r\n }\r\n\r\n ngDoCheck(): void {\r\n if (this.ngControl) {\r\n updateErrorState(\r\n this.ngControl,\r\n this._errorState,\r\n this.errorStateMatcher(),\r\n this._defaultErrorStateMatcher,\r\n this._parentForm,\r\n this._parentFormGroup,\r\n this.stateChanges,\r\n );\r\n syncRequiredState(this.ngControl, this._required, this.stateChanges);\r\n syncNgControlDisabled(this.ngControl, this._ngControlDisabled, this.stateChanges);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChanges.complete();\r\n }\r\n\r\n // ControlValueAccessor implementation\r\n writeValue(value: boolean): void {\r\n this._formControlInitialized = true;\r\n this._checked.set(value);\r\n this.stateChanges.next();\r\n }\r\n\r\n registerOnChange(fn: (value: boolean) => 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._disabled.set(isDisabled);\r\n this.stateChanges.next();\r\n }\r\n\r\n // Event handlers\r\n onInputChange(event: Event): void {\r\n event.stopPropagation();\r\n\r\n if (this.disabled()) {\r\n return;\r\n }\r\n\r\n // Read the new checked state from the native input element\r\n const target = event.target as HTMLInputElement;\r\n const newChecked = target.checked;\r\n\r\n // Update internal state\r\n this._checked.set(newChecked);\r\n\r\n // Clear indeterminate when checking/unchecking\r\n if (this._indeterminate()) {\r\n this._indeterminate.set(false);\r\n this.indeterminateChange.emit(false);\r\n }\r\n\r\n // Emit change events (this updates the form control)\r\n this._onChange(newChecked);\r\n this.change.emit({\r\n source: this,\r\n checked: newChecked,\r\n });\r\n this.stateChanges.next();\r\n }\r\n\r\n onFocus(): void {\r\n if (!this._focused()) {\r\n this._focused.set(true);\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n onBlur(): void {\r\n if (this._focused()) {\r\n this._focused.set(false);\r\n this._onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n // Public methods (mat-checkbox compatible)\r\n\r\n /** Toggles the `checked` state of the checkbox. */\r\n toggle(): void {\r\n if (!this.disabled()) {\r\n const newChecked = !this._checked();\r\n this._checked.set(newChecked);\r\n\r\n // Clear indeterminate when toggling\r\n if (this._indeterminate()) {\r\n this._indeterminate.set(false);\r\n this.indeterminateChange.emit(false);\r\n }\r\n\r\n this._onChange(newChecked);\r\n this.change.emit({\r\n source: this,\r\n checked: newChecked,\r\n });\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n /** Focuses the checkbox. */\r\n focus(): void {\r\n this.inputElement()?.nativeElement.focus();\r\n }\r\n\r\n /** Sets the indeterminate state programmatically. */\r\n setIndeterminate(value: boolean): void {\r\n if (this._indeterminate() !== value) {\r\n this._indeterminate.set(value);\r\n this.indeterminateChange.emit(value);\r\n this.stateChanges.next();\r\n }\r\n }\r\n}\r\n","<label class=\"fui-checkbox__container\" [attr.for]=\"inputId\">\r\n <span class=\"fui-checkbox__frame\">\r\n <input\r\n #inputElement\r\n type=\"checkbox\"\r\n class=\"fui-checkbox__native-control\"\r\n [id]=\"inputId\"\r\n [name]=\"name()\"\r\n [value]=\"value()\"\r\n [checked]=\"checked()\"\r\n [disabled]=\"disabled()\"\r\n [required]=\"required()\"\r\n [attr.aria-checked]=\"indeterminate() ? 'mixed' : checked()\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n [attr.aria-labelledby]=\"ariaLabelledby()\"\r\n [attr.aria-describedby]=\"ariaDescribedby()\"\r\n [attr.aria-invalid]=\"errorState() ? 'true' : null\"\r\n [attr.aria-required]=\"required() ? 'true' : null\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n (change)=\"onInputChange($event)\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n />\r\n\r\n <span class=\"fui-checkbox__checkmark\">\r\n @if (checked() && !indeterminate()) {\r\n <svg\r\n class=\"fui-checkbox__checkmark-icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"3\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n aria-hidden=\"true\"\r\n >\r\n <polyline points=\"20 6 9 17 4 12\"></polyline>\r\n </svg>\r\n }\r\n\r\n @if (indeterminate()) {\r\n <svg\r\n class=\"fui-checkbox__indeterminate-icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"3\"\r\n stroke-linecap=\"round\"\r\n aria-hidden=\"true\"\r\n >\r\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line>\r\n </svg>\r\n }\r\n </span>\r\n\r\n @if (!disableRipple() && !disabled()) {\r\n <span class=\"fui-checkbox__ripple\"></span>\r\n }\r\n </span>\r\n\r\n <span class=\"fui-checkbox__label\">\r\n <ng-content></ng-content>\r\n </span>\r\n</label>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"raintonic-formaui-components-checkbox.mjs","sources":["../../../lib/components/checkbox/checkbox.component.ts","../../../lib/components/checkbox/checkbox.component.html","../../../lib/components/checkbox/raintonic-formaui-components-checkbox.ts"],"sourcesContent":["import {\r\n Component,\r\n ChangeDetectionStrategy,\r\n ViewEncapsulation,\r\n input,\r\n output,\r\n computed,\r\n signal,\r\n viewChild,\r\n ElementRef,\r\n OutputEmitterRef,\r\n Signal,\r\n WritableSignal,\r\n OnDestroy,\r\n DoCheck,\r\n inject,\r\n effect,\r\n booleanAttribute,\r\n} from '@angular/core';\r\n\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, NgControl, FormGroupDirective, NgForm } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { DefaultErrorStateMatcher, ErrorStateMatcher } from '@raintonic/formaui/core';\r\nimport { injectNgControl, updateErrorState, syncRequiredState, syncNgControlDisabled } from '@raintonic/formaui/cdk/form-field';\r\n\r\n/**\r\n * Checkbox label position\r\n */\r\nexport type FuiCheckboxLabelPosition = 'before' | 'after';\r\n\r\n/**\r\n * Checkbox change event interface (compatible with MatCheckboxChange)\r\n */\r\nexport interface FuiCheckboxChange {\r\n /** The source checkbox of the event. */\r\n source: FuiCheckboxComponent;\r\n /** The new `checked` value of the checkbox. */\r\n checked: boolean;\r\n}\r\n\r\n/**\r\n * # FuiCheckbox Component\r\n *\r\n * A checkbox component with full Angular Reactive Forms support.\r\n * Compatible with Angular Material's mat-checkbox interface.\r\n *\r\n * ## Features\r\n * - Full Reactive Forms integration (ControlValueAccessor)\r\n * - Indeterminate state support\r\n * - Label position configuration (before/after)\r\n * - Built-in validation and error display\r\n * - Disabled state\r\n * - Full accessibility support (ARIA)\r\n * - Compatible with mat-checkbox interface\r\n *\r\n * ## Usage\r\n *\r\n * ### Basic Checkbox\r\n * ```html\r\n * <fui-checkbox>Accept terms</fui-checkbox>\r\n * ```\r\n *\r\n * ### With Reactive Forms\r\n * ```html\r\n * <form [formGroup]=\"form\">\r\n * <fui-checkbox formControlName=\"acceptTerms\">\r\n * I accept the terms and conditions\r\n * </fui-checkbox>\r\n * </form>\r\n * ```\r\n *\r\n * ### Indeterminate State\r\n * ```html\r\n * <fui-checkbox [indeterminate]=\"true\">\r\n * Select all\r\n * </fui-checkbox>\r\n * ```\r\n *\r\n * ### Label Position\r\n * ```html\r\n * <fui-checkbox labelPosition=\"before\">\r\n * Label before checkbox\r\n * </fui-checkbox>\r\n * ```\r\n */\r\n@Component({\r\n selector: 'fui-checkbox',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './checkbox.component.html',\r\n styleUrls: ['./checkbox.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n class: 'fui-checkbox',\r\n '[class.fui-checkbox--checked]': 'checked()',\r\n '[class.fui-checkbox--disabled]': 'disabled() && !readonlyInput()',\r\n '[class.fui-checkbox--readonly]': 'readonlyInput()',\r\n '[class.fui-checkbox--indeterminate]': 'indeterminate()',\r\n '[class.fui-checkbox--label-before]': 'labelPosition() === \"before\"',\r\n '[class.fui-checkbox--focused]': 'focused()',\r\n '[class.fui-checkbox--error]': 'errorState()',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'null',\r\n },\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: FuiCheckboxComponent,\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class FuiCheckboxComponent implements ControlValueAccessor, DoCheck, OnDestroy {\r\n // Static properties\r\n static nextId = 0;\r\n readonly controlType = 'fui-checkbox';\r\n\r\n // Inputs using new signal-based API (mat-checkbox compatible)\r\n readonly readonlyInput = input<boolean, unknown>(false, {\r\n alias: 'readonly',\r\n transform: booleanAttribute,\r\n });\r\n readonly checkedInput = input<boolean, unknown>(false, {\r\n alias: 'checked',\r\n transform: booleanAttribute,\r\n });\r\n readonly disabledInput = input<boolean, unknown>(false, {\r\n alias: 'disabled',\r\n transform: booleanAttribute,\r\n });\r\n readonly indeterminateInput = input<boolean, unknown>(false, {\r\n alias: 'indeterminate',\r\n transform: booleanAttribute,\r\n });\r\n readonly requiredInput = input<boolean, unknown>(false, {\r\n alias: 'required',\r\n transform: booleanAttribute,\r\n });\r\n readonly labelPosition = input<FuiCheckboxLabelPosition>('after');\r\n readonly name = input<string | null>(null);\r\n readonly value = input('on');\r\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\r\n readonly ariaLabelledby = input<string | null>(null, { alias: 'aria-labelledby' });\r\n readonly ariaDescribedby = input<string | null>(null, { alias: 'aria-describedby' });\r\n readonly disableRipple = input<boolean, unknown>(false, { transform: booleanAttribute });\r\n readonly tabIndex = input(0);\r\n readonly errorStateMatcher = input<ErrorStateMatcher | null>(null);\r\n\r\n // Outputs (mat-checkbox compatible)\r\n readonly change: OutputEmitterRef<FuiCheckboxChange> = output<FuiCheckboxChange>();\r\n readonly indeterminateChange: OutputEmitterRef<boolean> = output<boolean>();\r\n\r\n // Internal state signals - single source of truth like mat-checkbox\r\n private readonly _checked: WritableSignal<boolean> = signal(false);\r\n private readonly _indeterminate: WritableSignal<boolean> = signal(false);\r\n private readonly _focused: WritableSignal<boolean> = signal(false);\r\n private readonly _disabled: WritableSignal<boolean> = signal(false);\r\n\r\n // Public signals - expose internal state as readonly\r\n readonly checked: Signal<boolean> = this._checked.asReadonly();\r\n readonly indeterminate: Signal<boolean> = this._indeterminate.asReadonly();\r\n readonly focused: Signal<boolean> = this._focused.asReadonly();\r\n\r\n // State changes subject for form field compatibility\r\n readonly stateChanges = new Subject<void>();\r\n private _uid = `fui-checkbox-${FuiCheckboxComponent.nextId++}`;\r\n readonly id = this._uid;\r\n readonly inputId = `${this._uid}-input`;\r\n\r\n // Error state\r\n private readonly _errorState: WritableSignal<boolean> = signal(false);\r\n readonly errorState = this._errorState.asReadonly();\r\n\r\n // Form control references\r\n private _parentForm = inject(NgForm, { optional: true });\r\n private _parentFormGroup = inject(FormGroupDirective, { optional: true });\r\n private _defaultErrorStateMatcher = inject(DefaultErrorStateMatcher);\r\n private readonly _ngControlRef = injectNgControl();\r\n\r\n get ngControl(): NgControl | null {\r\n return this._ngControlRef.ngControl;\r\n }\r\n\r\n // Required signal\r\n private readonly _required: WritableSignal<boolean> = signal(false);\r\n readonly required: Signal<boolean> = computed(() => this._required() || this.requiredInput());\r\n\r\n // NgControl disabled state\r\n private readonly _ngControlDisabled: WritableSignal<boolean> = signal(false);\r\n readonly disabled: Signal<boolean> = computed(\r\n () => this._disabled() || this.disabledInput() || this._ngControlDisabled(),\r\n );\r\n\r\n // ViewChild for input element\r\n readonly inputElement: Signal<ElementRef<HTMLInputElement> | undefined> =\r\n viewChild<ElementRef<HTMLInputElement>>('inputElement');\r\n\r\n // ControlValueAccessor callbacks\r\n private _onChange: (value: boolean) => void = () => {\r\n // Intentionally empty: will be replaced by Angular forms\r\n };\r\n private _onTouched: () => void = () => {\r\n // Intentionally empty: will be replaced by Angular forms\r\n };\r\n\r\n // Track if writeValue has been called by a form control\r\n private _formControlInitialized = false;\r\n\r\n constructor() {\r\n // Set valueAccessor after NgControl is resolved\r\n void Promise.resolve().then(() => {\r\n if (this._ngControlRef.ngControl) {\r\n this._ngControlRef.ngControl.valueAccessor = this;\r\n }\r\n });\r\n\r\n // Effect to sync checked input to internal state (like mat-checkbox @Input setter)\r\n // This allows [checked]=\"value\" to work, but form controls take precedence via writeValue\r\n effect(() => {\r\n const inputChecked = this.checkedInput();\r\n // Only apply input value if form control hasn't initialized with writeValue\r\n if (!this._formControlInitialized) {\r\n this._checked.set(inputChecked);\r\n }\r\n });\r\n\r\n // Effect to sync indeterminate input to internal state\r\n effect(() => {\r\n const inputIndeterminate = this.indeterminateInput();\r\n this._indeterminate.set(inputIndeterminate);\r\n });\r\n\r\n // Effect to emit state changes\r\n effect(() => {\r\n // Track all reactive inputs and internal signals\r\n this.checkedInput();\r\n this.disabledInput();\r\n this.indeterminateInput();\r\n this.requiredInput();\r\n this.labelPosition();\r\n this.name();\r\n this.value();\r\n this.errorStateMatcher();\r\n this._checked();\r\n this._indeterminate();\r\n this._focused();\r\n this._disabled();\r\n this._ngControlDisabled();\r\n this._required();\r\n this._errorState();\r\n\r\n // Emit state change\r\n this.stateChanges.next();\r\n });\r\n }\r\n\r\n ngDoCheck(): void {\r\n if (this.ngControl) {\r\n updateErrorState(\r\n this.ngControl,\r\n this._errorState,\r\n this.errorStateMatcher(),\r\n this._defaultErrorStateMatcher,\r\n this._parentForm,\r\n this._parentFormGroup,\r\n this.stateChanges,\r\n );\r\n syncRequiredState(this.ngControl, this._required, this.stateChanges);\r\n syncNgControlDisabled(this.ngControl, this._ngControlDisabled, this.stateChanges);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChanges.complete();\r\n }\r\n\r\n // ControlValueAccessor implementation\r\n writeValue(value: boolean): void {\r\n this._formControlInitialized = true;\r\n this._checked.set(value);\r\n this.stateChanges.next();\r\n }\r\n\r\n registerOnChange(fn: (value: boolean) => 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._disabled.set(isDisabled);\r\n this.stateChanges.next();\r\n }\r\n\r\n // Event handlers\r\n onInputChange(event: Event): void {\r\n event.stopPropagation();\r\n\r\n if (this.disabled()) {\r\n return;\r\n }\r\n\r\n // Read the new checked state from the native input element\r\n const target = event.target as HTMLInputElement;\r\n const newChecked = target.checked;\r\n\r\n // Update internal state\r\n this._checked.set(newChecked);\r\n\r\n // Clear indeterminate when checking/unchecking\r\n if (this._indeterminate()) {\r\n this._indeterminate.set(false);\r\n this.indeterminateChange.emit(false);\r\n }\r\n\r\n // Emit change events (this updates the form control)\r\n this._onChange(newChecked);\r\n this.change.emit({\r\n source: this,\r\n checked: newChecked,\r\n });\r\n this.stateChanges.next();\r\n }\r\n\r\n onFocus(): void {\r\n if (!this._focused()) {\r\n this._focused.set(true);\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n onBlur(): void {\r\n if (this._focused()) {\r\n this._focused.set(false);\r\n this._onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n // Public methods (mat-checkbox compatible)\r\n\r\n /** Toggles the `checked` state of the checkbox. */\r\n toggle(): void {\r\n if (!this.disabled()) {\r\n const newChecked = !this._checked();\r\n this._checked.set(newChecked);\r\n\r\n // Clear indeterminate when toggling\r\n if (this._indeterminate()) {\r\n this._indeterminate.set(false);\r\n this.indeterminateChange.emit(false);\r\n }\r\n\r\n this._onChange(newChecked);\r\n this.change.emit({\r\n source: this,\r\n checked: newChecked,\r\n });\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n /** Focuses the checkbox. */\r\n focus(): void {\r\n this.inputElement()?.nativeElement.focus();\r\n }\r\n\r\n /** Sets the indeterminate state programmatically. */\r\n setIndeterminate(value: boolean): void {\r\n if (this._indeterminate() !== value) {\r\n this._indeterminate.set(value);\r\n this.indeterminateChange.emit(value);\r\n this.stateChanges.next();\r\n }\r\n }\r\n}\r\n","<label class=\"fui-checkbox__container\" [attr.for]=\"inputId\">\r\n <span class=\"fui-checkbox__frame\">\r\n <input\r\n #inputElement\r\n type=\"checkbox\"\r\n class=\"fui-checkbox__native-control\"\r\n [id]=\"inputId\"\r\n [name]=\"name()\"\r\n [value]=\"value()\"\r\n [checked]=\"checked()\"\r\n [disabled]=\"disabled()\"\r\n [required]=\"required()\"\r\n [attr.aria-checked]=\"indeterminate() ? 'mixed' : checked()\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n [attr.aria-labelledby]=\"ariaLabelledby()\"\r\n [attr.aria-describedby]=\"ariaDescribedby()\"\r\n [attr.aria-invalid]=\"errorState() ? 'true' : null\"\r\n [attr.aria-required]=\"required() ? 'true' : null\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n (change)=\"onInputChange($event)\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n />\r\n\r\n <span class=\"fui-checkbox__checkmark\">\r\n @if (checked() && !indeterminate()) {\r\n <svg\r\n class=\"fui-checkbox__checkmark-icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"3\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n aria-hidden=\"true\"\r\n >\r\n <polyline points=\"20 6 9 17 4 12\"></polyline>\r\n </svg>\r\n }\r\n\r\n @if (indeterminate()) {\r\n <svg\r\n class=\"fui-checkbox__indeterminate-icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"3\"\r\n stroke-linecap=\"round\"\r\n aria-hidden=\"true\"\r\n >\r\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line>\r\n </svg>\r\n }\r\n </span>\r\n\r\n @if (!disableRipple() && !disabled()) {\r\n <span class=\"fui-checkbox__ripple\"></span>\r\n }\r\n </span>\r\n\r\n <span class=\"fui-checkbox__label\">\r\n <ng-content></ng-content>\r\n </span>\r\n</label>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAwCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CG;MA6BU,oBAAoB,CAAA;;AAE/B,IAAA,OAAO,MAAM,GAAG,CAAC;IACR,WAAW,GAAG,cAAc;;AAG5B,IAAA,aAAa,GAAG,KAAK,CAAmB,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,eAAA,EAAA,8BAAA,EAAA,CAAA,EACpD,KAAK,EAAE,UAAU;QACjB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AACO,IAAA,YAAY,GAAG,KAAK,CAAmB,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,cAAA,EAAA,8BAAA,EAAA,CAAA,EACnD,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AACO,IAAA,aAAa,GAAG,KAAK,CAAmB,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,eAAA,EAAA,8BAAA,EAAA,CAAA,EACpD,KAAK,EAAE,UAAU;QACjB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AACO,IAAA,kBAAkB,GAAG,KAAK,CAAmB,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,8BAAA,EAAA,CAAA,EACzD,KAAK,EAAE,eAAe;QACtB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AACO,IAAA,aAAa,GAAG,KAAK,CAAmB,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,eAAA,EAAA,8BAAA,EAAA,CAAA,EACpD,KAAK,EAAE,UAAU;QACjB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AACO,IAAA,aAAa,GAAG,KAAK,CAA2B,OAAO,oFAAC;AACxD,IAAA,IAAI,GAAG,KAAK,CAAgB,IAAI,2EAAC;AACjC,IAAA,KAAK,GAAG,KAAK,CAAC,IAAI,4EAAC;IACnB,SAAS,GAAG,KAAK,CAAgB,IAAI,iFAAI,KAAK,EAAE,YAAY,EAAA,CAAG;IAC/D,cAAc,GAAG,KAAK,CAAgB,IAAI,sFAAI,KAAK,EAAE,iBAAiB,EAAA,CAAG;IACzE,eAAe,GAAG,KAAK,CAAgB,IAAI,uFAAI,KAAK,EAAE,kBAAkB,EAAA,CAAG;IAC3E,aAAa,GAAG,KAAK,CAAmB,KAAK,qFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC/E,IAAA,QAAQ,GAAG,KAAK,CAAC,CAAC,+EAAC;AACnB,IAAA,iBAAiB,GAAG,KAAK,CAA2B,IAAI,wFAAC;;IAGzD,MAAM,GAAwC,MAAM,EAAqB;IACzE,mBAAmB,GAA8B,MAAM,EAAW;;AAG1D,IAAA,QAAQ,GAA4B,MAAM,CAAC,KAAK,+EAAC;AACjD,IAAA,cAAc,GAA4B,MAAM,CAAC,KAAK,qFAAC;AACvD,IAAA,QAAQ,GAA4B,MAAM,CAAC,KAAK,+EAAC;AACjD,IAAA,SAAS,GAA4B,MAAM,CAAC,KAAK,gFAAC;;AAG1D,IAAA,OAAO,GAAoB,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;AACrD,IAAA,aAAa,GAAoB,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;AACjE,IAAA,OAAO,GAAoB,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;;AAGrD,IAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;AACnC,IAAA,IAAI,GAAG,CAAA,aAAA,EAAgB,oBAAoB,CAAC,MAAM,EAAE,EAAE;AACrD,IAAA,EAAE,GAAG,IAAI,CAAC,IAAI;AACd,IAAA,OAAO,GAAG,CAAA,EAAG,IAAI,CAAC,IAAI,QAAQ;;AAGtB,IAAA,WAAW,GAA4B,MAAM,CAAC,KAAK,kFAAC;AAC5D,IAAA,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;;IAG3C,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAChD,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACjE,IAAA,yBAAyB,GAAG,MAAM,CAAC,wBAAwB,CAAC;IACnD,aAAa,GAAG,eAAe,EAAE;AAElD,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS;IACrC;;AAGiB,IAAA,SAAS,GAA4B,MAAM,CAAC,KAAK,gFAAC;AAC1D,IAAA,QAAQ,GAAoB,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,+EAAC;;AAG5E,IAAA,kBAAkB,GAA4B,MAAM,CAAC,KAAK,yFAAC;IACnE,QAAQ,GAAoB,QAAQ,CAC3C,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAC5E;;AAGQ,IAAA,YAAY,GACnB,SAAS,CAA+B,cAAc,mFAAC;;IAGjD,SAAS,GAA6B,MAAK;;AAEnD,IAAA,CAAC;IACO,UAAU,GAAe,MAAK;;AAEtC,IAAA,CAAC;;IAGO,uBAAuB,GAAG,KAAK;AAEvC,IAAA,WAAA,GAAA;;QAEE,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;AAC/B,YAAA,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;gBAChC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;YACnD;AACF,QAAA,CAAC,CAAC;;;QAIF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;;AAExC,YAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;AACjC,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC;YACjC;AACF,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,EAAE;AACpD,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,kBAAkB,CAAC;AAC7C,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;;YAEV,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,WAAW,EAAE;;AAGlB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AAC1B,QAAA,CAAC,CAAC;IACJ;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,gBAAgB,CACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,iBAAiB,EAAE,EACxB,IAAI,CAAC,yBAAyB,EAC9B,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,YAAY,CAClB;AACD,YAAA,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;AACpE,YAAA,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,YAAY,CAAC;QACnF;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;IAC9B;;AAGA,IAAA,UAAU,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI;AACnC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;AAEA,IAAA,gBAAgB,CAAC,EAA4B,EAAA;AAC3C,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;AAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;;AAGA,IAAA,aAAa,CAAC,KAAY,EAAA;QACxB,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB;QACF;;AAGA,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B;AAC/C,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO;;AAGjC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;;AAG7B,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AACzB,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9B,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;QACtC;;AAGA,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;AAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,OAAO,EAAE,UAAU;AACpB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC1B;IACF;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;YACxB,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC1B;IACF;;;IAKA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE;AACnC,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;;AAG7B,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AACzB,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9B,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;YACtC;AAEA,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;AAC1B,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,OAAO,EAAE,UAAU;AACpB,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC1B;IACF;;IAGA,KAAK,GAAA;QACH,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE;IAC5C;;AAGA,IAAA,gBAAgB,CAAC,KAAc,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,KAAK,KAAK,EAAE;AACnC,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9B,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;AACpC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC1B;IACF;uGAxQW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,8BAAA,EAAA,gCAAA,EAAA,8BAAA,EAAA,iBAAA,EAAA,mCAAA,EAAA,iBAAA,EAAA,kCAAA,EAAA,gCAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,2BAAA,EAAA,cAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EARpB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,oBAAoB;AACjC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/GH,siEAgEA,EAAA,MAAA,EAAA,CAAA,mgNAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FDiDa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBA5BhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,OAAA,EACP,EAAE,EAAA,eAAA,EAGM,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,KAAK,EAAE,cAAc;AACrB,wBAAA,+BAA+B,EAAE,WAAW;AAC5C,wBAAA,gCAAgC,EAAE,gCAAgC;AAClE,wBAAA,gCAAgC,EAAE,iBAAiB;AACnD,wBAAA,qCAAqC,EAAE,iBAAiB;AACxD,wBAAA,oCAAoC,EAAE,8BAA8B;AACpE,wBAAA,+BAA+B,EAAE,WAAW;AAC5C,wBAAA,6BAA6B,EAAE,cAAc;AAC7C,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,iBAAiB,EAAE,MAAM;qBAC1B,EAAA,SAAA,EACU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAA,oBAAsB;AACjC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,siEAAA,EAAA,MAAA,EAAA,CAAA,mgNAAA,CAAA,EAAA;wnDAqFyC,cAAc,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEpM1D;;AAEG;;;;"}
|