@eagami/ui 5.10.0 → 5.10.1
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/README.md +1 -1
- package/fesm2022/eagami-ui.mjs +25 -24
- package/fesm2022/eagami-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/types/eagami-ui.d.ts +1 -0
package/README.md
CHANGED
|
@@ -74,7 +74,7 @@ Full API and live demos at [eagami.com/ui/components](https://eagami.com/ui/comp
|
|
|
74
74
|
|
|
75
75
|
## Icons
|
|
76
76
|
|
|
77
|
-
Standalone Angular components (`<ea-icon-*>`) that inherit their color and scale with `font-size`, so they render at any size. The library ships the
|
|
77
|
+
Standalone Angular components (`<ea-icon-*>`) that inherit their color and scale with `font-size`, so they render at any size. The library ships the [Feather Icons](https://feathericons.com/) set (286 icons at their canonical slugs) by [Cole Bemis](https://github.com/colebemis), used under the [MIT License](https://github.com/feathericons/feather/blob/master/LICENSE), plus additional line icons from [Lucide](https://lucide.dev/) (ISC License), a set of original Eagami UI additions (basic shapes, household objects, the Eagami brand mark), and a coloured brand-icon set for nominative use that includes marks from [Simple Icons](https://simpleicons.org/) (CC0).
|
|
78
78
|
|
|
79
79
|
Each icon component exposes `static readonly` metadata so consumers can build catalogues, search indices, or doc tables without importing every icon:
|
|
80
80
|
|
package/fesm2022/eagami-ui.mjs
CHANGED
|
@@ -3660,7 +3660,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImpo
|
|
|
3660
3660
|
args: [{ providedIn: 'root' }]
|
|
3661
3661
|
}], ctorParameters: () => [] });
|
|
3662
3662
|
|
|
3663
|
-
// Excludes U+202F and U+00A0 so the substitution is idempotent
|
|
3663
|
+
// Excludes U+202F and U+00A0 so the substitution is idempotent
|
|
3664
3664
|
const SPACE_BEFORE_HIGH_PUNCT = / ([!?:;»])/g;
|
|
3665
3665
|
const SPACE_AFTER_OPEN_GUILLEMET = /(«) /g;
|
|
3666
3666
|
/**
|
|
@@ -4211,7 +4211,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImpo
|
|
|
4211
4211
|
*/
|
|
4212
4212
|
function controlErrorStateFrom(control, config) {
|
|
4213
4213
|
const i18n = inject(EagamiI18nService);
|
|
4214
|
-
// Bumped on every status/touched change so the computed re-reads the control
|
|
4214
|
+
// Bumped on every status/touched change so the computed re-reads the control
|
|
4215
4215
|
const revision = signal(0, ...(ngDevMode ? [{ debugName: "revision" }] : /* istanbul ignore next */ []));
|
|
4216
4216
|
effect(onCleanup => {
|
|
4217
4217
|
const ctrl = control();
|
|
@@ -4570,7 +4570,7 @@ class PopoverComponent {
|
|
|
4570
4570
|
this.stable.set(false);
|
|
4571
4571
|
return;
|
|
4572
4572
|
}
|
|
4573
|
-
// Re-read inputs so signal subscriptions stay current after a re-open
|
|
4573
|
+
// Re-read inputs so signal subscriptions stay current after a re-open
|
|
4574
4574
|
this.placement();
|
|
4575
4575
|
this.offset();
|
|
4576
4576
|
this.flip();
|
|
@@ -6672,7 +6672,7 @@ class CheckboxComponent {
|
|
|
6672
6672
|
useExisting: forwardRef(() => CheckboxComponent),
|
|
6673
6673
|
multi: true,
|
|
6674
6674
|
},
|
|
6675
|
-
], ngImport: i0, template: "<div class=\"ea-checkbox-field\">\n <label\n class=\"ea-checkbox\"\n [ngClass]=\"hostClasses()\"\n [for]=\"id()\">\n <input\n #inputEl\n type=\"checkbox\"\n class=\"ea-checkbox__input\"\n [id]=\"id()\"\n [checked]=\"checked()\"\n [disabled]=\"isDisabled()\"\n [required]=\"required()\"\n [indeterminate]=\"indeterminate()\"\n [attr.aria-checked]=\"indeterminate() ? 'mixed' : checked()\"\n [attr.aria-label]=\"!label() ? (ariaLabel() ?? null) : null\"\n [attr.aria-required]=\"required() || null\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"\n showError() ? id() + '-error' : showHint() ? id() + '-hint' : null\n \"\n (change)=\"handleChange()\" />\n\n <span\n class=\"ea-checkbox__box\"\n aria-hidden=\"true\">\n @if (indeterminate()) {\n <svg\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M4 8h8\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\" />\n </svg>\n } @else if (checked()) {\n <svg\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.5 8.5L6.5 11.5L12.5 4.5\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n }\n </span>\n\n @if (label()) {\n <span\n class=\"ea-checkbox__label\"\n [class.ea-checkbox__label--required]=\"required()\">\n {{ label() }}\n @if (count() !== undefined && count() !== null) {\n <span class=\"ea-checkbox__count\">{{ count() }}</span>\n }\n </span>\n }\n </label>\n\n <ea-field-messages\n [id]=\"id()\"\n [error]=\"errorText()\"\n [hint]=\"showHint() ? hint() : null\" />\n</div>\n", styles: [":host{display:inline-flex;vertical-align:middle;line-height:1}.ea-checkbox-field{display:inline-flex;flex-direction:column;gap:var(--space-1-5)}.ea-checkbox{display:inline-flex;align-items:center;gap:.5em;cursor:pointer;-webkit-user-select:none;user-select:none;font-family:var(--font-family-sans);color:var(--color-text-primary)}.ea-checkbox--xs{font-size:var(--font-size-xs)}.ea-checkbox--sm{font-size:var(--font-size-sm)}.ea-checkbox--md{font-size:var(--font-size-md)}.ea-checkbox--lg{font-size:var(--font-size-lg)}.ea-checkbox--xl{font-size:var(--font-size-xl)}.ea-checkbox--disabled{opacity:.45;cursor:not-allowed}.ea-checkbox--checked .ea-checkbox__box,.ea-checkbox--indeterminate .ea-checkbox__box{background-color:var(--color-brand-default);border-color:var(--color-brand-default);color:var(--color-text-inverse)}@media(forced-colors:active){.ea-checkbox--checked .ea-checkbox__box,.ea-checkbox--indeterminate .ea-checkbox__box{background-color:Highlight;border-color:Highlight;color:HighlightText}}.ea-checkbox:hover:not(.ea-checkbox--disabled) .ea-checkbox__box{border-color:var(--color-brand-default)}.ea-checkbox__input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.ea-checkbox__input:focus-visible+.ea-checkbox__box{box-shadow:var(--shadow-focus-ring)}@media(forced-colors:active){.ea-checkbox__input:focus-visible+.ea-checkbox__box{outline:2px solid Highlight;outline-offset:2px}}.ea-checkbox__box{position:relative;display:flex;align-items:center;justify-content:center;flex-shrink:0;box-sizing:border-box;width:1.25em;height:1.25em;border:var(--border-width-thin) solid var(--color-border-strong);border-radius:var(--radius-sm);background-color:var(--color-bg-base);transition:var(--transition-colors),var(--transition-shadow)}.ea-checkbox__box svg{position:absolute;width:65%;height:65%}.ea-checkbox__label{font-weight:var(--font-weight-regular)}.ea-checkbox__label--required:after{content:\" *\";color:var(--color-error-default)}.ea-checkbox__count{margin-inline-start:.25em;color:var(--color-text-tertiary)}.ea-checkbox--error .ea-checkbox__box{border-color:var(--color-error-default)}\n"], dependencies: [{ kind: "component", type: FieldMessagesComponent, selector: "ea-field-messages", inputs: ["id", "error", "hint"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
6675
|
+
], ngImport: i0, template: "<div class=\"ea-checkbox-field\">\n <label\n class=\"ea-checkbox\"\n [ngClass]=\"hostClasses()\"\n [for]=\"id()\">\n <input\n #inputEl\n type=\"checkbox\"\n class=\"ea-checkbox__input\"\n [id]=\"id()\"\n [checked]=\"checked()\"\n [disabled]=\"isDisabled()\"\n [required]=\"required()\"\n [indeterminate]=\"indeterminate()\"\n [attr.aria-checked]=\"indeterminate() ? 'mixed' : checked()\"\n [attr.aria-label]=\"!label() ? (ariaLabel() ?? null) : null\"\n [attr.aria-required]=\"required() || null\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"\n showError() ? id() + '-error' : showHint() ? id() + '-hint' : null\n \"\n (change)=\"handleChange()\" />\n\n <span\n class=\"ea-checkbox__box\"\n aria-hidden=\"true\">\n @if (indeterminate()) {\n <svg\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M4 8h8\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\" />\n </svg>\n } @else if (checked()) {\n <svg\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.5 8.5L6.5 11.5L12.5 4.5\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n }\n </span>\n\n @if (label()) {\n <span\n class=\"ea-checkbox__label\"\n [class.ea-checkbox__label--required]=\"required()\">\n {{ label() }}\n @if (count() !== undefined && count() !== null) {\n <span class=\"ea-checkbox__count\">{{ count() }}</span>\n }\n </span>\n }\n </label>\n\n <ea-field-messages\n [id]=\"id()\"\n [error]=\"errorText()\"\n [hint]=\"showHint() ? hint() : null\" />\n</div>\n", styles: [":host{display:inline-flex;vertical-align:middle;line-height:1}.ea-checkbox-field{display:inline-flex;flex-direction:column;gap:var(--space-1-5)}.ea-checkbox{display:inline-flex;align-items:center;gap:.5em;cursor:pointer;-webkit-user-select:none;user-select:none;font-family:var(--font-family-sans);color:var(--color-text-primary)}.ea-checkbox--xs{font-size:var(--font-size-xs)}.ea-checkbox--sm{font-size:var(--font-size-sm)}.ea-checkbox--md{font-size:var(--font-size-md)}.ea-checkbox--lg{font-size:var(--font-size-lg)}.ea-checkbox--xl{font-size:var(--font-size-xl)}.ea-checkbox--disabled{opacity:.45;cursor:not-allowed}.ea-checkbox--checked .ea-checkbox__box,.ea-checkbox--indeterminate .ea-checkbox__box{background-color:var(--color-brand-default);border-color:var(--color-brand-default);color:var(--color-text-inverse)}@media(forced-colors:active){.ea-checkbox--checked .ea-checkbox__box,.ea-checkbox--indeterminate .ea-checkbox__box{background-color:Highlight;border-color:Highlight;color:HighlightText}}.ea-checkbox:hover:not(.ea-checkbox--disabled) .ea-checkbox__box{border-color:var(--color-brand-default)}.ea-checkbox__input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.ea-checkbox__input:focus-visible+.ea-checkbox__box{box-shadow:var(--shadow-focus-ring)}@media(forced-colors:active){.ea-checkbox__input:focus-visible+.ea-checkbox__box{outline:2px solid Highlight;outline-offset:2px}}.ea-checkbox__box{position:relative;display:flex;align-items:center;justify-content:center;flex-shrink:0;box-sizing:border-box;width:1.25em;height:1.25em;border:var(--border-width-thin) solid var(--color-border-strong);border-radius:var(--radius-sm);background-color:var(--color-bg-base);transition:var(--transition-colors),var(--transition-shadow)}.ea-checkbox__box svg{position:absolute;width:65%;height:65%}.ea-checkbox__label{font-weight:var(--font-weight-regular);color:var(--ea-checkbox-label-color, inherit);transition:color var(--duration-fast) var(--ease-out)}.ea-checkbox__label--required:after{content:\" *\";color:var(--color-error-default)}.ea-checkbox__count{margin-inline-start:.25em;color:var(--ea-checkbox-count-color, var(--color-text-tertiary));transition:color var(--duration-fast) var(--ease-out)}.ea-checkbox--error .ea-checkbox__box{border-color:var(--color-error-default)}\n"], dependencies: [{ kind: "component", type: FieldMessagesComponent, selector: "ea-field-messages", inputs: ["id", "error", "hint"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
6676
6676
|
}
|
|
6677
6677
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: CheckboxComponent, decorators: [{
|
|
6678
6678
|
type: Component,
|
|
@@ -6682,7 +6682,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImpo
|
|
|
6682
6682
|
useExisting: forwardRef(() => CheckboxComponent),
|
|
6683
6683
|
multi: true,
|
|
6684
6684
|
},
|
|
6685
|
-
], template: "<div class=\"ea-checkbox-field\">\n <label\n class=\"ea-checkbox\"\n [ngClass]=\"hostClasses()\"\n [for]=\"id()\">\n <input\n #inputEl\n type=\"checkbox\"\n class=\"ea-checkbox__input\"\n [id]=\"id()\"\n [checked]=\"checked()\"\n [disabled]=\"isDisabled()\"\n [required]=\"required()\"\n [indeterminate]=\"indeterminate()\"\n [attr.aria-checked]=\"indeterminate() ? 'mixed' : checked()\"\n [attr.aria-label]=\"!label() ? (ariaLabel() ?? null) : null\"\n [attr.aria-required]=\"required() || null\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"\n showError() ? id() + '-error' : showHint() ? id() + '-hint' : null\n \"\n (change)=\"handleChange()\" />\n\n <span\n class=\"ea-checkbox__box\"\n aria-hidden=\"true\">\n @if (indeterminate()) {\n <svg\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M4 8h8\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\" />\n </svg>\n } @else if (checked()) {\n <svg\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.5 8.5L6.5 11.5L12.5 4.5\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n }\n </span>\n\n @if (label()) {\n <span\n class=\"ea-checkbox__label\"\n [class.ea-checkbox__label--required]=\"required()\">\n {{ label() }}\n @if (count() !== undefined && count() !== null) {\n <span class=\"ea-checkbox__count\">{{ count() }}</span>\n }\n </span>\n }\n </label>\n\n <ea-field-messages\n [id]=\"id()\"\n [error]=\"errorText()\"\n [hint]=\"showHint() ? hint() : null\" />\n</div>\n", styles: [":host{display:inline-flex;vertical-align:middle;line-height:1}.ea-checkbox-field{display:inline-flex;flex-direction:column;gap:var(--space-1-5)}.ea-checkbox{display:inline-flex;align-items:center;gap:.5em;cursor:pointer;-webkit-user-select:none;user-select:none;font-family:var(--font-family-sans);color:var(--color-text-primary)}.ea-checkbox--xs{font-size:var(--font-size-xs)}.ea-checkbox--sm{font-size:var(--font-size-sm)}.ea-checkbox--md{font-size:var(--font-size-md)}.ea-checkbox--lg{font-size:var(--font-size-lg)}.ea-checkbox--xl{font-size:var(--font-size-xl)}.ea-checkbox--disabled{opacity:.45;cursor:not-allowed}.ea-checkbox--checked .ea-checkbox__box,.ea-checkbox--indeterminate .ea-checkbox__box{background-color:var(--color-brand-default);border-color:var(--color-brand-default);color:var(--color-text-inverse)}@media(forced-colors:active){.ea-checkbox--checked .ea-checkbox__box,.ea-checkbox--indeterminate .ea-checkbox__box{background-color:Highlight;border-color:Highlight;color:HighlightText}}.ea-checkbox:hover:not(.ea-checkbox--disabled) .ea-checkbox__box{border-color:var(--color-brand-default)}.ea-checkbox__input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.ea-checkbox__input:focus-visible+.ea-checkbox__box{box-shadow:var(--shadow-focus-ring)}@media(forced-colors:active){.ea-checkbox__input:focus-visible+.ea-checkbox__box{outline:2px solid Highlight;outline-offset:2px}}.ea-checkbox__box{position:relative;display:flex;align-items:center;justify-content:center;flex-shrink:0;box-sizing:border-box;width:1.25em;height:1.25em;border:var(--border-width-thin) solid var(--color-border-strong);border-radius:var(--radius-sm);background-color:var(--color-bg-base);transition:var(--transition-colors),var(--transition-shadow)}.ea-checkbox__box svg{position:absolute;width:65%;height:65%}.ea-checkbox__label{font-weight:var(--font-weight-regular)}.ea-checkbox__label--required:after{content:\" *\";color:var(--color-error-default)}.ea-checkbox__count{margin-inline-start:.25em;color:var(--color-text-tertiary)}.ea-checkbox--error .ea-checkbox__box{border-color:var(--color-error-default)}\n"] }]
|
|
6685
|
+
], template: "<div class=\"ea-checkbox-field\">\n <label\n class=\"ea-checkbox\"\n [ngClass]=\"hostClasses()\"\n [for]=\"id()\">\n <input\n #inputEl\n type=\"checkbox\"\n class=\"ea-checkbox__input\"\n [id]=\"id()\"\n [checked]=\"checked()\"\n [disabled]=\"isDisabled()\"\n [required]=\"required()\"\n [indeterminate]=\"indeterminate()\"\n [attr.aria-checked]=\"indeterminate() ? 'mixed' : checked()\"\n [attr.aria-label]=\"!label() ? (ariaLabel() ?? null) : null\"\n [attr.aria-required]=\"required() || null\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"\n showError() ? id() + '-error' : showHint() ? id() + '-hint' : null\n \"\n (change)=\"handleChange()\" />\n\n <span\n class=\"ea-checkbox__box\"\n aria-hidden=\"true\">\n @if (indeterminate()) {\n <svg\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M4 8h8\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\" />\n </svg>\n } @else if (checked()) {\n <svg\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.5 8.5L6.5 11.5L12.5 4.5\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n }\n </span>\n\n @if (label()) {\n <span\n class=\"ea-checkbox__label\"\n [class.ea-checkbox__label--required]=\"required()\">\n {{ label() }}\n @if (count() !== undefined && count() !== null) {\n <span class=\"ea-checkbox__count\">{{ count() }}</span>\n }\n </span>\n }\n </label>\n\n <ea-field-messages\n [id]=\"id()\"\n [error]=\"errorText()\"\n [hint]=\"showHint() ? hint() : null\" />\n</div>\n", styles: [":host{display:inline-flex;vertical-align:middle;line-height:1}.ea-checkbox-field{display:inline-flex;flex-direction:column;gap:var(--space-1-5)}.ea-checkbox{display:inline-flex;align-items:center;gap:.5em;cursor:pointer;-webkit-user-select:none;user-select:none;font-family:var(--font-family-sans);color:var(--color-text-primary)}.ea-checkbox--xs{font-size:var(--font-size-xs)}.ea-checkbox--sm{font-size:var(--font-size-sm)}.ea-checkbox--md{font-size:var(--font-size-md)}.ea-checkbox--lg{font-size:var(--font-size-lg)}.ea-checkbox--xl{font-size:var(--font-size-xl)}.ea-checkbox--disabled{opacity:.45;cursor:not-allowed}.ea-checkbox--checked .ea-checkbox__box,.ea-checkbox--indeterminate .ea-checkbox__box{background-color:var(--color-brand-default);border-color:var(--color-brand-default);color:var(--color-text-inverse)}@media(forced-colors:active){.ea-checkbox--checked .ea-checkbox__box,.ea-checkbox--indeterminate .ea-checkbox__box{background-color:Highlight;border-color:Highlight;color:HighlightText}}.ea-checkbox:hover:not(.ea-checkbox--disabled) .ea-checkbox__box{border-color:var(--color-brand-default)}.ea-checkbox__input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.ea-checkbox__input:focus-visible+.ea-checkbox__box{box-shadow:var(--shadow-focus-ring)}@media(forced-colors:active){.ea-checkbox__input:focus-visible+.ea-checkbox__box{outline:2px solid Highlight;outline-offset:2px}}.ea-checkbox__box{position:relative;display:flex;align-items:center;justify-content:center;flex-shrink:0;box-sizing:border-box;width:1.25em;height:1.25em;border:var(--border-width-thin) solid var(--color-border-strong);border-radius:var(--radius-sm);background-color:var(--color-bg-base);transition:var(--transition-colors),var(--transition-shadow)}.ea-checkbox__box svg{position:absolute;width:65%;height:65%}.ea-checkbox__label{font-weight:var(--font-weight-regular);color:var(--ea-checkbox-label-color, inherit);transition:color var(--duration-fast) var(--ease-out)}.ea-checkbox__label--required:after{content:\" *\";color:var(--color-error-default)}.ea-checkbox__count{margin-inline-start:.25em;color:var(--ea-checkbox-count-color, var(--color-text-tertiary));transition:color var(--duration-fast) var(--ease-out)}.ea-checkbox--error .ea-checkbox__box{border-color:var(--color-error-default)}\n"] }]
|
|
6686
6686
|
}], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], count: [{ type: i0.Input, args: [{ isSignal: true, alias: "count", required: false }] }], hint: [{ type: i0.Input, args: [{ isSignal: true, alias: "hint", required: false }] }], errorMsg: [{ type: i0.Input, args: [{ isSignal: true, alias: "errorMsg", required: false }] }], errorMessages: [{ type: i0.Input, args: [{ isSignal: true, alias: "errorMessages", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], indeterminate: [{ type: i0.Input, args: [{ isSignal: true, alias: "indeterminate", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], checked: [{ type: i0.Input, args: [{ isSignal: true, alias: "checked", required: false }] }, { type: i0.Output, args: ["checkedChange"] }], changed: [{ type: i0.Output, args: ["changed"] }] } });
|
|
6687
6687
|
|
|
6688
6688
|
class SearchIconComponent extends IconComponentBase {
|
|
@@ -7520,7 +7520,7 @@ class ColorPickerComponent {
|
|
|
7520
7520
|
}
|
|
7521
7521
|
}
|
|
7522
7522
|
onHexBlur() {
|
|
7523
|
-
// Reset the partial text to the canonical hex of the current color
|
|
7523
|
+
// Reset the partial text to the canonical hex of the current color
|
|
7524
7524
|
this.hexInputValue.set(this.hexDisplay());
|
|
7525
7525
|
this.onTouched();
|
|
7526
7526
|
}
|
|
@@ -7629,7 +7629,7 @@ class ColorPickerComponent {
|
|
|
7629
7629
|
}
|
|
7630
7630
|
applyRgba(r, g, b, a, commit, refreshHex = true) {
|
|
7631
7631
|
const hsv = rgbToHsv(r, g, b);
|
|
7632
|
-
// Preserve current hue when the new color is achromatic (sat = 0)
|
|
7632
|
+
// Preserve current hue when the new color is achromatic (sat = 0)
|
|
7633
7633
|
this.hue.set(hsv.s === 0 ? this.hue() : hsv.h);
|
|
7634
7634
|
this.sat.set(hsv.s);
|
|
7635
7635
|
this.val.set(hsv.v);
|
|
@@ -8123,7 +8123,7 @@ class DataTableComponent {
|
|
|
8123
8123
|
// Roving-tabindex active cell for grid navigation. Row 0 is the header row;
|
|
8124
8124
|
// body rows are 1..N. Only meaningful while `navigable` is true.
|
|
8125
8125
|
activeCell = signal({ row: 0, col: 0 }, ...(ngDevMode ? [{ debugName: "activeCell" }] : /* istanbul ignore next */ []));
|
|
8126
|
-
// Rows skipped per PageUp/PageDown within the grid body
|
|
8126
|
+
// Rows skipped per PageUp/PageDown within the grid body
|
|
8127
8127
|
static PAGE_JUMP = 10;
|
|
8128
8128
|
columns = input.required(...(ngDevMode ? [{ debugName: "columns" }] : /* istanbul ignore next */ []));
|
|
8129
8129
|
data = input.required(...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
|
|
@@ -8496,7 +8496,7 @@ class CodeInputComponent {
|
|
|
8496
8496
|
const index = Math.min(val.length, this.length() - 1);
|
|
8497
8497
|
this.focusDigit(index);
|
|
8498
8498
|
}
|
|
8499
|
-
// Removes disallowed characters: whitespace in free mode, non-digits otherwise
|
|
8499
|
+
// Removes disallowed characters: whitespace in free mode, non-digits otherwise
|
|
8500
8500
|
sanitize(text) {
|
|
8501
8501
|
return this.allowAllChars() ? text.replace(/\s/g, '') : text.replace(/[^0-9]/g, '');
|
|
8502
8502
|
}
|
|
@@ -9274,7 +9274,7 @@ class DrawerComponent {
|
|
|
9274
9274
|
const drawerRef = this.drawerEl()?.nativeElement;
|
|
9275
9275
|
const open = this.open();
|
|
9276
9276
|
const mode = this.mode();
|
|
9277
|
-
// Re-run the push measurement if size, position, or target change while open
|
|
9277
|
+
// Re-run the push measurement if size, position, or target change while open
|
|
9278
9278
|
this.size();
|
|
9279
9279
|
this.position();
|
|
9280
9280
|
this.pushTarget();
|
|
@@ -9283,7 +9283,7 @@ class DrawerComponent {
|
|
|
9283
9283
|
if (!drawerRef || !this.isBrowser) {
|
|
9284
9284
|
return;
|
|
9285
9285
|
}
|
|
9286
|
-
// Push mode stays non-modal so the page behind it remains interactive
|
|
9286
|
+
// Push mode stays non-modal so the page behind it remains interactive
|
|
9287
9287
|
const wantModal = mode !== 'push';
|
|
9288
9288
|
if (open) {
|
|
9289
9289
|
if (!drawerRef.open) {
|
|
@@ -9293,7 +9293,7 @@ class DrawerComponent {
|
|
|
9293
9293
|
this.opened.emit();
|
|
9294
9294
|
}
|
|
9295
9295
|
else if (this.isLeaving) {
|
|
9296
|
-
// Reopened mid-exit: cancel the pending close and slide back in
|
|
9296
|
+
// Reopened mid-exit: cancel the pending close and slide back in
|
|
9297
9297
|
this.enter(true);
|
|
9298
9298
|
}
|
|
9299
9299
|
else if (this.shownAsModal !== wantModal) {
|
|
@@ -9409,7 +9409,7 @@ class DrawerComponent {
|
|
|
9409
9409
|
}
|
|
9410
9410
|
}
|
|
9411
9411
|
finishClose(dialog) {
|
|
9412
|
-
// A reopen during the exit animation supersedes the close
|
|
9412
|
+
// A reopen during the exit animation supersedes the close
|
|
9413
9413
|
if (this.open()) {
|
|
9414
9414
|
return;
|
|
9415
9415
|
}
|
|
@@ -9432,7 +9432,7 @@ class DrawerComponent {
|
|
|
9432
9432
|
this.open.set(false);
|
|
9433
9433
|
this.closed.emit();
|
|
9434
9434
|
}
|
|
9435
|
-
// Non-modal push drawers do not emit `cancel`, so Escape is handled here
|
|
9435
|
+
// Non-modal push drawers do not emit `cancel`, so Escape is handled here
|
|
9436
9436
|
handleKeydown(event) {
|
|
9437
9437
|
if (this.mode() === 'push' && this.closeOnEscape() && event.key === 'Escape') {
|
|
9438
9438
|
this.handleClose();
|
|
@@ -9484,7 +9484,7 @@ class DrawerComponent {
|
|
|
9484
9484
|
const ease = animation === 'linear' ? 'var(--ease-linear)' : 'var(--ease-out)';
|
|
9485
9485
|
target.style.transition = `padding var(--duration-slower) ${ease}`;
|
|
9486
9486
|
}
|
|
9487
|
-
// Clear every side first so a position change never stacks two offsets
|
|
9487
|
+
// Clear every side first so a position change never stacks two offsets
|
|
9488
9488
|
this.clearPushProperties(target);
|
|
9489
9489
|
target.style.setProperty(PUSH_PROPERTY[position], `${size}px`);
|
|
9490
9490
|
this.pushedTarget = target;
|
|
@@ -9546,7 +9546,7 @@ class DrawerComponent {
|
|
|
9546
9546
|
this.documentPointerListener = null;
|
|
9547
9547
|
}
|
|
9548
9548
|
}
|
|
9549
|
-
// Removes the push styles immediately, for teardown where no animation is wanted
|
|
9549
|
+
// Removes the push styles immediately, for teardown where no animation is wanted
|
|
9550
9550
|
teardownPush() {
|
|
9551
9551
|
if (this.pushRaf !== null) {
|
|
9552
9552
|
cancelAnimationFrame(this.pushRaf);
|
|
@@ -9586,7 +9586,7 @@ class DrawerComponent {
|
|
|
9586
9586
|
// keep the drawer open; otherwise mirror the close back into the model.
|
|
9587
9587
|
onDialogClose() {
|
|
9588
9588
|
const drawerRef = this.drawerEl()?.nativeElement;
|
|
9589
|
-
// Ignore the stale close event fired while reopening to switch modality
|
|
9589
|
+
// Ignore the stale close event fired while reopening to switch modality
|
|
9590
9590
|
if (this.reopening || !this.open() || drawerRef?.open) {
|
|
9591
9591
|
return;
|
|
9592
9592
|
}
|
|
@@ -10285,7 +10285,7 @@ class EagamiWordmarkComponent {
|
|
|
10285
10285
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: EagamiWordmarkComponent, decorators: [{
|
|
10286
10286
|
type: Component,
|
|
10287
10287
|
args: [{ selector: 'ea-eagami-wordmark', imports: [EagamiIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
10288
|
-
// The wordmark is a fixed brand lockup; it never mirrors with UI direction
|
|
10288
|
+
// The wordmark is a fixed brand lockup; it never mirrors with UI direction
|
|
10289
10289
|
dir: 'ltr',
|
|
10290
10290
|
'[style.--_size]': 'resolvedSize()',
|
|
10291
10291
|
}, template: "<a\n class=\"ea-eagami-wordmark\"\n [class.ea-eagami-wordmark--inline]=\"layout() === 'inline'\"\n href=\"https://eagami.com\"\n target=\"_blank\"\n rel=\"noopener\"\n [attr.aria-label]=\"ariaLabel()\">\n <ea-icon-eagami\n class=\"ea-eagami-wordmark__logo\"\n aria-hidden=\"true\" />\n\n <span class=\"ea-eagami-wordmark__text\">\n @if (showOverline()) {\n <span class=\"ea-eagami-wordmark__overline\">\n {{ i18n.messages().wordmark.overline }}\n </span>\n }\n <span class=\"ea-eagami-wordmark__brand\">{{ brandText() }}</span>\n @if (showTagline()) {\n @if (layout() === 'inline') {\n <span\n class=\"ea-eagami-wordmark__separator\"\n aria-hidden=\"true\">\n \u2014\n </span>\n }\n <span class=\"ea-eagami-wordmark__tagline\">\n {{ i18n.messages().wordmark.tagline }}\n </span>\n }\n </span>\n</a>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Syne:wght@400;500&display=swap\";:host{display:inline-block;line-height:var(--line-height-none)}.ea-eagami-wordmark{display:inline-flex;align-items:center;border-radius:var(--radius-sm);color:var(--color-text-primary);text-decoration:none;transition:var(--transition-opacity)}.ea-eagami-wordmark:hover{opacity:.75}.ea-eagami-wordmark:focus-visible{outline:none;box-shadow:var(--shadow-focus-ring)}@media(forced-colors:active){.ea-eagami-wordmark:focus-visible{outline:2px solid Highlight;outline-offset:2px}}.ea-eagami-wordmark__logo{flex-shrink:0;font-size:calc(var(--_size) * 1px);forced-color-adjust:none}.ea-eagami-wordmark__text{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;line-height:var(--line-height-tight)}.ea-eagami-wordmark__overline,.ea-eagami-wordmark__brand,.ea-eagami-wordmark__tagline{white-space:nowrap;text-transform:lowercase}.ea-eagami-wordmark__overline,.ea-eagami-wordmark__separator,.ea-eagami-wordmark__tagline{font-size:calc(var(--_size) * .2px);font-weight:var(--font-weight-regular);letter-spacing:var(--letter-spacing-wide);font-family:var(--font-family-sans);color:var(--color-text-secondary)}.ea-eagami-wordmark__overline{color:var(--ea-eagami-wordmark-overline-color, var(--color-text-secondary))}.ea-eagami-wordmark__brand{font-size:calc(var(--_size) * .5px);font-weight:var(--font-weight-medium);letter-spacing:var(--letter-spacing-wide);font-family:var(--font-family-brand)}.ea-eagami-wordmark--inline .ea-eagami-wordmark__text{flex-direction:row;align-items:baseline;gap:calc(var(--_size) * .2px)}.ea-eagami-wordmark--inline .ea-eagami-wordmark__overline,.ea-eagami-wordmark--inline .ea-eagami-wordmark__separator,.ea-eagami-wordmark--inline .ea-eagami-wordmark__tagline{font-size:calc(var(--_size) * .5px)}\n"] }]
|
|
@@ -11134,7 +11134,7 @@ class FileUploaderComponent {
|
|
|
11134
11134
|
if (files.length) {
|
|
11135
11135
|
this.acceptFiles(files);
|
|
11136
11136
|
}
|
|
11137
|
-
// Reset so re-picking the same file re-triggers the input
|
|
11137
|
+
// Reset so re-picking the same file re-triggers the input
|
|
11138
11138
|
inputEl.value = '';
|
|
11139
11139
|
}
|
|
11140
11140
|
onDragOver(event) {
|
|
@@ -11603,7 +11603,7 @@ class InputComponent {
|
|
|
11603
11603
|
const el = event.target;
|
|
11604
11604
|
let value = el.value;
|
|
11605
11605
|
const maxLen = this.maxLength();
|
|
11606
|
-
// Native maxlength is ignored on number inputs, so enforce it here
|
|
11606
|
+
// Native maxlength is ignored on number inputs, so enforce it here
|
|
11607
11607
|
if (this.type() === 'number' && maxLen != null && value.length > maxLen) {
|
|
11608
11608
|
value = value.slice(0, maxLen);
|
|
11609
11609
|
el.value = value;
|
|
@@ -12256,7 +12256,7 @@ class MultiSelectComponent {
|
|
|
12256
12256
|
this.triggerEl()?.nativeElement.focus();
|
|
12257
12257
|
}
|
|
12258
12258
|
else if (event.key === 'Backspace' && this.hasValue() && !this.isOpen()) {
|
|
12259
|
-
// Quick-remove the last chip when the trigger is focused and no popover
|
|
12259
|
+
// Quick-remove the last chip when the trigger is focused and no popover
|
|
12260
12260
|
event.preventDefault();
|
|
12261
12261
|
this.commit(this.value().slice(0, -1));
|
|
12262
12262
|
}
|
|
@@ -14097,7 +14097,7 @@ class StepperComponent {
|
|
|
14097
14097
|
if (nextIndex >= 0 && nextIndex !== this.activeStep()) {
|
|
14098
14098
|
this.selectStep(nextIndex);
|
|
14099
14099
|
const buttons = event.currentTarget.querySelectorAll('.ea-stepper__button:not([disabled])');
|
|
14100
|
-
// Match the focused button to the new index (visit order matches DOM order)
|
|
14100
|
+
// Match the focused button to the new index (visit order matches DOM order)
|
|
14101
14101
|
const reachableIndices = this.registeredSteps()
|
|
14102
14102
|
.map((_, i) => i)
|
|
14103
14103
|
.filter(i => this.canNavigateTo(i));
|
|
@@ -14856,7 +14856,7 @@ class TimePickerComponent {
|
|
|
14856
14856
|
else if (event.key === 'PageUp') {
|
|
14857
14857
|
event.preventDefault();
|
|
14858
14858
|
this.flushBuffer();
|
|
14859
|
-
// Coarse step: 5× the configured step (or 10 for hours)
|
|
14859
|
+
// Coarse step: 5× the configured step (or 10 for hours)
|
|
14860
14860
|
const coarse = unit === 'hours' ? 10 : 5;
|
|
14861
14861
|
for (let i = 0; i < coarse; i++) {
|
|
14862
14862
|
this.step(unit, 1);
|
|
@@ -14893,7 +14893,7 @@ class TimePickerComponent {
|
|
|
14893
14893
|
/** Select-all on focus so the first keystroke replaces the current value. */
|
|
14894
14894
|
onSpinnerFocus(event) {
|
|
14895
14895
|
const el = event.currentTarget;
|
|
14896
|
-
// afterNextRender-ish: wait one tick so iOS / Safari accept the select()
|
|
14896
|
+
// afterNextRender-ish: wait one tick so iOS / Safari accept the select()
|
|
14897
14897
|
queueMicrotask(() => el.select());
|
|
14898
14898
|
}
|
|
14899
14899
|
/**
|
|
@@ -24810,6 +24810,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImpo
|
|
|
24810
24810
|
class FramerIconComponent extends IconComponentBase {
|
|
24811
24811
|
static slug = 'framer';
|
|
24812
24812
|
static category = 'feather';
|
|
24813
|
+
static isBrand = true;
|
|
24813
24814
|
static tags = [
|
|
24814
24815
|
'framer',
|
|
24815
24816
|
'design',
|