@eagami/ui 5.70.0 → 5.71.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.
@@ -1,7 +1,11 @@
1
1
  import * as i0 from "@angular/core";
2
- import { ApplicationRef, CSP_NONCE, ChangeDetectionStrategy, Component, DOCUMENT, DestroyRef, Directive, ElementRef, EnvironmentInjector, HostAttributeToken, HostBinding, HostListener, Injectable, InjectionToken, Injector, PLATFORM_ID, Renderer2, RendererStyleFlags2, TemplateRef, ViewContainerRef, ViewEncapsulation, afterNextRender, afterRenderEffect, computed, contentChild, createComponent, effect, forwardRef, inject, input, linkedSignal, makeEnvironmentProviders, model, output, provideEnvironmentInitializer, signal, untracked, viewChild, viewChildren } from "@angular/core";
2
+ import { ApplicationRef, CSP_NONCE, ChangeDetectionStrategy, Component, DOCUMENT, DestroyRef, Directive, ElementRef, EnvironmentInjector, HostAttributeToken, HostBinding, HostListener, Injectable, InjectionToken, Injector, NgZone, PLATFORM_ID, Renderer2, RendererStyleFlags2, TemplateRef, ViewContainerRef, ViewEncapsulation, afterNextRender, afterRenderEffect, computed, contentChild, createComponent, effect, forwardRef, inject, input, linkedSignal, makeEnvironmentProviders, model, output, provideEnvironmentInitializer, signal, untracked, viewChild, viewChildren } from "@angular/core";
3
3
  import { NgClass, NgComponentOutlet, NgTemplateOutlet, isPlatformBrowser } from "@angular/common";
4
4
  import { FormResetEvent, FormSubmittedEvent, NG_VALUE_ACCESSOR, NgControl, TouchedChangeEvent } from "@angular/forms";
5
+ const EAGAMI_FORMS_CONFIG = new InjectionToken("EAGAMI_FORMS_CONFIG", {
6
+ providedIn: "root",
7
+ factory: () => ({})
8
+ });
5
9
  const EAGAMI_I18N_CONFIG = new InjectionToken("EAGAMI_I18N_CONFIG");
6
10
  const STYLE_TAG_ID = "eagami-palette";
7
11
  function applyPalette(palette, nonce) {
@@ -299,16 +303,23 @@ function provideEagamiUi(config = {}) {
299
303
  localeLoaders: config.localeLoaders,
300
304
  messages: config.messages
301
305
  };
302
- return makeEnvironmentProviders([{
303
- provide: EAGAMI_I18N_CONFIG,
304
- useValue: i18nConfig
305
- }, provideEnvironmentInitializer(() => {
306
- if (!config.palette) return;
307
- const palette = derivePalette(config.palette);
308
- const violations = validatePalette(palette);
309
- if (violations.length > 0) throw new Error(formatViolations(violations));
310
- applyPalette(palette, inject(CSP_NONCE, { optional: true }));
311
- })]);
306
+ return makeEnvironmentProviders([
307
+ {
308
+ provide: EAGAMI_I18N_CONFIG,
309
+ useValue: i18nConfig
310
+ },
311
+ {
312
+ provide: EAGAMI_FORMS_CONFIG,
313
+ useValue: config.forms ?? {}
314
+ },
315
+ provideEnvironmentInitializer(() => {
316
+ if (!config.palette) return;
317
+ const palette = derivePalette(config.palette);
318
+ const violations = validatePalette(palette);
319
+ if (violations.length > 0) throw new Error(formatViolations(violations));
320
+ applyPalette(palette, inject(CSP_NONCE, { optional: true }));
321
+ })
322
+ ]);
312
323
  }
313
324
  const LOCALE_DISPLAY = {
314
325
  en: {
@@ -5558,6 +5569,8 @@ function controlErrorStateFrom(control, config) {
5558
5569
  const injector = inject(Injector);
5559
5570
  const destroyRef = inject(DestroyRef);
5560
5571
  const host = inject(ElementRef, { optional: true });
5572
+ const formsConfig = inject(EAGAMI_FORMS_CONFIG);
5573
+ const showOnTouch = computed(() => (config.showErrorsOn?.() ?? formsConfig.showErrorsOn ?? "change") === "touch", ...ngDevMode ? [{ debugName: "showOnTouch" }] : /* istanbul ignore next */ []);
5561
5574
  const revision = signal(0, ...ngDevMode ? [{ debugName: "revision" }] : /* istanbul ignore next */ []);
5562
5575
  const editing = signal(false, ...ngDevMode ? [{ debugName: "editing" }] : /* istanbul ignore next */ []);
5563
5576
  const revealedBySubmit = signal(false, ...ngDevMode ? [{ debugName: "revealedBySubmit" }] : /* istanbul ignore next */ []);
@@ -5621,14 +5634,14 @@ function controlErrorStateFrom(control, config) {
5621
5634
  revision();
5622
5635
  const ctrl = control();
5623
5636
  if (!ctrl || !ctrl.invalid || !ctrl.touched || !ctrl.errors) return null;
5624
- if (ctrl.pristine && passedThrough()) return null;
5637
+ if (ctrl.pristine && passedThrough() && !showOnTouch()) return null;
5625
5638
  return resolveValidationMessage(ctrl.errors, config.errorMessages(), i18n.messages());
5626
5639
  }, ...ngDevMode ? [{ debugName: "validationError" }] : /* istanbul ignore next */ []);
5627
5640
  const autoError = linkedSignal({
5628
5641
  ...ngDevMode ? { debugName: "autoError" } : /* istanbul ignore next */ {},
5629
5642
  source: () => ({
5630
5643
  message: validationError(),
5631
- holding: revealPending() || editing() && !revealedBySubmit()
5644
+ holding: revealPending() || editing() && !revealedBySubmit() && !showOnTouch()
5632
5645
  }),
5633
5646
  computation: ({ message, holding }, previous) => previous?.value || !holding ? message : null
5634
5647
  });
@@ -6407,6 +6420,7 @@ var AutocompleteComponent = class AutocompleteComponent {
6407
6420
  hint = input(void 0, ...ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []);
6408
6421
  errorMsg = input(void 0, ...ngDevMode ? [{ debugName: "errorMsg" }] : /* istanbul ignore next */ []);
6409
6422
  errorMessages = input(void 0, ...ngDevMode ? [{ debugName: "errorMessages" }] : /* istanbul ignore next */ []);
6423
+ showErrorsOn = input(void 0, ...ngDevMode ? [{ debugName: "showErrorsOn" }] : /* istanbul ignore next */ []);
6410
6424
  minLength = input(0, ...ngDevMode ? [{ debugName: "minLength" }] : /* istanbul ignore next */ []);
6411
6425
  maxLength = input(void 0, ...ngDevMode ? [{ debugName: "maxLength" }] : /* istanbul ignore next */ []);
6412
6426
  maxResults = input(10, ...ngDevMode ? [{ debugName: "maxResults" }] : /* istanbul ignore next */ []);
@@ -6427,7 +6441,8 @@ var AutocompleteComponent = class AutocompleteComponent {
6427
6441
  isDisabled = computed(() => this.disabled() || this._formDisabled(), ...ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []);
6428
6442
  errorState = injectControlErrorState({
6429
6443
  errorMsg: this.errorMsg,
6430
- errorMessages: this.errorMessages
6444
+ errorMessages: this.errorMessages,
6445
+ showErrorsOn: this.showErrorsOn
6431
6446
  });
6432
6447
  errorText = this.errorState.error;
6433
6448
  hasError = this.errorState.hasError;
@@ -6655,6 +6670,13 @@ var AutocompleteComponent = class AutocompleteComponent {
6655
6670
  isRequired: false,
6656
6671
  transformFunction: null
6657
6672
  },
6673
+ showErrorsOn: {
6674
+ classPropertyName: "showErrorsOn",
6675
+ publicName: "showErrorsOn",
6676
+ isSignal: true,
6677
+ isRequired: false,
6678
+ transformFunction: null
6679
+ },
6658
6680
  minLength: {
6659
6681
  classPropertyName: "minLength",
6660
6682
  publicName: "minLength",
@@ -6923,6 +6945,14 @@ i0.ɵɵngDeclareClassMetadata({
6923
6945
  required: false
6924
6946
  }]
6925
6947
  }],
6948
+ showErrorsOn: [{
6949
+ type: i0.Input,
6950
+ args: [{
6951
+ isSignal: true,
6952
+ alias: "showErrorsOn",
6953
+ required: false
6954
+ }]
6955
+ }],
6926
6956
  minLength: [{
6927
6957
  type: i0.Input,
6928
6958
  args: [{
@@ -10891,7 +10921,17 @@ var ButtonComponent = class ButtonComponent {
10891
10921
  ...ngDevMode ? { debugName: "ariaDescribedby" } : /* istanbul ignore next */ {},
10892
10922
  alias: "aria-describedby"
10893
10923
  });
10924
+ ariaExpanded = input(void 0, {
10925
+ ...ngDevMode ? { debugName: "ariaExpanded" } : /* istanbul ignore next */ {},
10926
+ alias: "aria-expanded"
10927
+ });
10928
+ ariaControls = input(void 0, {
10929
+ ...ngDevMode ? { debugName: "ariaControls" } : /* istanbul ignore next */ {},
10930
+ alias: "aria-controls"
10931
+ });
10932
+ renderer = inject(Renderer2);
10894
10933
  buttonEl = viewChild("buttonEl", ...ngDevMode ? [{ debugName: "buttonEl" }] : /* istanbul ignore next */ []);
10934
+ ownedAria = /* @__PURE__ */ new Set();
10895
10935
  clicked = output();
10896
10936
  isDisabled = computed(() => this.disabled() || this.loading(), ...ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []);
10897
10937
  hostClasses = computed(() => buttonClasses({
@@ -10903,6 +10943,15 @@ var ButtonComponent = class ButtonComponent {
10903
10943
  loading: this.loading(),
10904
10944
  disabled: this.isDisabled()
10905
10945
  }), ...ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []);
10946
+ constructor() {
10947
+ effect(() => {
10948
+ const button = this.buttonEl()?.nativeElement;
10949
+ if (!button) return;
10950
+ const expanded = this.ariaExpanded();
10951
+ this.reflectAria(button, "aria-expanded", expanded === void 0 ? void 0 : String(expanded));
10952
+ this.reflectAria(button, "aria-controls", this.ariaControls() || void 0);
10953
+ });
10954
+ }
10906
10955
  handleClick(event) {
10907
10956
  if (this.isDisabled()) {
10908
10957
  event.preventDefault();
@@ -10913,6 +10962,12 @@ var ButtonComponent = class ButtonComponent {
10913
10962
  focus() {
10914
10963
  this.buttonEl()?.nativeElement.focus();
10915
10964
  }
10965
+ reflectAria(button, name, value) {
10966
+ if (value !== void 0) {
10967
+ this.renderer.setAttribute(button, name, value);
10968
+ this.ownedAria.add(name);
10969
+ } else if (this.ownedAria.delete(name)) this.renderer.removeAttribute(button, name);
10970
+ }
10916
10971
  static ɵfac = i0.ɵɵngDeclareFactory({
10917
10972
  minVersion: "12.0.0",
10918
10973
  version: "22.2.3",
@@ -11018,6 +11073,20 @@ var ButtonComponent = class ButtonComponent {
11018
11073
  isSignal: true,
11019
11074
  isRequired: false,
11020
11075
  transformFunction: null
11076
+ },
11077
+ ariaExpanded: {
11078
+ classPropertyName: "ariaExpanded",
11079
+ publicName: "aria-expanded",
11080
+ isSignal: true,
11081
+ isRequired: false,
11082
+ transformFunction: null
11083
+ },
11084
+ ariaControls: {
11085
+ classPropertyName: "ariaControls",
11086
+ publicName: "aria-controls",
11087
+ isSignal: true,
11088
+ isRequired: false,
11089
+ transformFunction: null
11021
11090
  }
11022
11091
  },
11023
11092
  outputs: { clicked: "clicked" },
@@ -11070,6 +11139,7 @@ i0.ɵɵngDeclareClassMetadata({
11070
11139
  styles: [":host{display:inline-flex}.ea-button{display:inline-flex;align-items:center;justify-content:center;gap:.5em;position:relative;min-height:var(--ea-button-min-height, 2.5em);padding:var(--ea-button-padding, .5em 1em);white-space:nowrap;-webkit-user-select:none;user-select:none;font-family:var(--font-family-sans);font-weight:var(--ea-button-font-weight, var(--font-weight-medium));letter-spacing:var(--letter-spacing-wide);text-decoration:none;line-height:var(--line-height-none);border-width:var(--border-width-thin);border-style:solid;border-radius:var(--ea-button-radius, var(--radius-md));transition:var(--transition-colors),var(--transition-shadow);cursor:pointer}.ea-button:focus-visible{outline:none;outline:var(--border-width-medium) solid var(--color-border-focus);outline-offset:2px}@media(forced-colors:active){.ea-button:focus-visible{outline:2px solid Highlight;outline-offset:2px}}.ea-button:has(.ea-button__icon):has(.ea-button__label:empty){padding:var(--ea-button-padding, .5em)}.ea-button--2xs{font-size:var(--ea-button-font-size, var(--font-size-2xs))}.ea-button--xs{font-size:var(--ea-button-font-size, var(--font-size-xs))}.ea-button--sm{font-size:var(--ea-button-font-size, var(--font-size-sm))}.ea-button--md{font-size:var(--ea-button-font-size, var(--font-size-md))}.ea-button--lg{font-size:var(--ea-button-font-size, var(--font-size-lg))}.ea-button--xl{font-size:var(--ea-button-font-size, var(--font-size-xl))}.ea-button--primary{background-color:var(--ea-button-background-color, var(--color-brand-default));border-color:var(--ea-button-border-color, var(--color-brand-default));color:var(--ea-button-color, var(--color-neutral-0))}.ea-button--primary:hover:not(.ea-button--disabled){background-color:var(--ea-button-background-color-hover, var(--ea-button-background-color, var(--color-brand-hover)));border-color:var(--ea-button-border-color-hover, var(--ea-button-border-color, var(--color-brand-hover)));color:var(--ea-button-color-hover, var(--ea-button-color, var(--color-neutral-0)))}.ea-button--primary:active:not(.ea-button--disabled){background-color:var(--ea-button-background-color-active, var(--ea-button-background-color, var(--color-brand-active)));border-color:var(--ea-button-border-color-active, var(--ea-button-border-color, var(--color-brand-active)));color:var(--ea-button-color-active, var(--ea-button-color, var(--color-neutral-0)))}.ea-button--secondary{background-color:var(--ea-button-background-color, transparent);border-color:var(--ea-button-border-color, var(--color-border-strong));color:var(--ea-button-color, var(--color-text-primary))}.ea-button--secondary:hover:not(.ea-button--disabled){background-color:var(--ea-button-background-color-hover, var(--ea-button-background-color, var(--color-state-hover)));border-color:var(--ea-button-border-color-hover, var(--ea-button-border-color, var(--color-neutral-500)));color:var(--ea-button-color-hover, var(--ea-button-color, var(--color-text-primary)))}.ea-button--secondary:active:not(.ea-button--disabled){background-color:var(--ea-button-background-color-active, var(--ea-button-background-color, var(--color-state-active)));border-color:var(--ea-button-border-color-active, var(--ea-button-border-color, var(--color-neutral-500)));color:var(--ea-button-color-active, var(--ea-button-color, var(--color-text-primary)))}.ea-button--ghost{background-color:var(--ea-button-background-color, transparent);border-color:var(--ea-button-border-color, transparent);color:var(--ea-button-color, var(--color-text-primary))}.ea-button--ghost:hover:not(.ea-button--disabled){background-color:var(--ea-button-background-color-hover, var(--ea-button-background-color, var(--color-state-hover)));border-color:var(--ea-button-border-color-hover, var(--ea-button-border-color, transparent));color:var(--ea-button-color-hover, var(--ea-button-color, var(--color-text-primary)))}.ea-button--ghost:active:not(.ea-button--disabled){background-color:var(--ea-button-background-color-active, var(--ea-button-background-color, var(--color-state-active)));border-color:var(--ea-button-border-color-active, var(--ea-button-border-color, transparent));color:var(--ea-button-color-active, var(--ea-button-color, var(--color-text-primary)))}.ea-button--danger{background-color:var(--ea-button-background-color, var(--color-error-default));border-color:var(--ea-button-border-color, var(--color-error-default));color:var(--ea-button-color, var(--color-neutral-0))}.ea-button--danger:hover:not(.ea-button--disabled){background-color:var(--ea-button-background-color-hover, var(--ea-button-background-color, var(--color-error-700)));border-color:var(--ea-button-border-color-hover, var(--ea-button-border-color, var(--color-error-700)));color:var(--ea-button-color-hover, var(--ea-button-color, var(--color-neutral-0)))}.ea-button--danger:active:not(.ea-button--disabled){background-color:var(--ea-button-background-color-active, var(--ea-button-background-color, var(--color-error-700)));border-color:var(--ea-button-border-color-active, var(--ea-button-border-color, var(--color-error-700)));color:var(--ea-button-color-active, var(--ea-button-color, var(--color-neutral-0)));filter:brightness(.9)}.ea-button--link{min-height:var(--ea-button-min-height, 0);padding:var(--ea-button-padding, 0);border-color:var(--ea-button-border-color, transparent);background-color:var(--ea-button-background-color, transparent);color:var(--ea-button-color, var(--color-text-link))}.ea-button--link:has(.ea-button__icon):has(.ea-button__label:empty){padding:var(--ea-button-padding, 0)}.ea-button--link:hover:not(.ea-button--disabled){border-color:var(--ea-button-border-color-hover, var(--ea-button-border-color, transparent));background-color:var(--ea-button-background-color-hover, var(--ea-button-background-color, transparent));color:var(--ea-button-color-hover, var(--ea-button-color, var(--color-text-link-hover)))}.ea-button--link:active:not(.ea-button--disabled){border-color:var(--ea-button-border-color-active, var(--ea-button-border-color, transparent));background-color:var(--ea-button-background-color-active, var(--ea-button-background-color, transparent));color:var(--ea-button-color-active, var(--ea-button-color, var(--color-text-link-hover)))}.ea-button--link:hover:not(.ea-button--disabled) .ea-button__label,.ea-button--link:focus-visible .ea-button__label{text-decoration:underline}.ea-button--full-width{width:100%}.ea-button--align-start{justify-content:flex-start}.ea-button--align-end{justify-content:flex-end}.ea-button--uppercase{text-transform:uppercase}.ea-button--disabled,.ea-button:disabled{opacity:.45;cursor:default;pointer-events:none}.ea-button--loading{cursor:wait;pointer-events:none}.ea-button__content{display:inline-flex;align-items:center;gap:.5em}.ea-button__content--hidden{visibility:hidden}.ea-button__icon{display:inline-flex;align-items:center;flex-shrink:0;font-size:var(--icon-inline-size)}.ea-button__label{display:inline-flex;align-items:center}.ea-button__label:empty{display:none}.ea-button__spinner{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}.ea-button__spinner svg{width:1.1em;height:1.1em;animation:ea-spin .75s linear infinite}@media(prefers-reduced-motion:reduce){.ea-button__spinner svg{animation-duration:2.5s}}:host(.ea-button--full-width){display:block;width:100%}@keyframes ea-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"]
11071
11140
  }]
11072
11141
  }],
11142
+ ctorParameters: () => [],
11073
11143
  propDecorators: {
11074
11144
  variant: [{
11075
11145
  type: i0.Input,
@@ -11175,6 +11245,22 @@ i0.ɵɵngDeclareClassMetadata({
11175
11245
  required: false
11176
11246
  }]
11177
11247
  }],
11248
+ ariaExpanded: [{
11249
+ type: i0.Input,
11250
+ args: [{
11251
+ isSignal: true,
11252
+ alias: "aria-expanded",
11253
+ required: false
11254
+ }]
11255
+ }],
11256
+ ariaControls: [{
11257
+ type: i0.Input,
11258
+ args: [{
11259
+ isSignal: true,
11260
+ alias: "aria-controls",
11261
+ required: false
11262
+ }]
11263
+ }],
11178
11264
  buttonEl: [{
11179
11265
  type: i0.ViewChild,
11180
11266
  args: ["buttonEl", { isSignal: true }]
@@ -11641,6 +11727,7 @@ var CheckboxComponent = class CheckboxComponent {
11641
11727
  hint = input(void 0, ...ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []);
11642
11728
  errorMsg = input(void 0, ...ngDevMode ? [{ debugName: "errorMsg" }] : /* istanbul ignore next */ []);
11643
11729
  errorMessages = input(void 0, ...ngDevMode ? [{ debugName: "errorMessages" }] : /* istanbul ignore next */ []);
11730
+ showErrorsOn = input(void 0, ...ngDevMode ? [{ debugName: "showErrorsOn" }] : /* istanbul ignore next */ []);
11644
11731
  size = input("md", ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
11645
11732
  truncate = input(false, ...ngDevMode ? [{ debugName: "truncate" }] : /* istanbul ignore next */ []);
11646
11733
  disabled = input(false, ...ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []);
@@ -11657,7 +11744,8 @@ var CheckboxComponent = class CheckboxComponent {
11657
11744
  isDisabled = computed(() => this.disabled() || this._formDisabled(), ...ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []);
11658
11745
  errorState = injectControlErrorState({
11659
11746
  errorMsg: this.errorMsg,
11660
- errorMessages: this.errorMessages
11747
+ errorMessages: this.errorMessages,
11748
+ showErrorsOn: this.showErrorsOn
11661
11749
  });
11662
11750
  errorText = this.errorState.error;
11663
11751
  hasError = this.errorState.hasError;
@@ -11754,6 +11842,13 @@ var CheckboxComponent = class CheckboxComponent {
11754
11842
  isRequired: false,
11755
11843
  transformFunction: null
11756
11844
  },
11845
+ showErrorsOn: {
11846
+ classPropertyName: "showErrorsOn",
11847
+ publicName: "showErrorsOn",
11848
+ isSignal: true,
11849
+ isRequired: false,
11850
+ transformFunction: null
11851
+ },
11757
11852
  size: {
11758
11853
  classPropertyName: "size",
11759
11854
  publicName: "size",
@@ -11926,6 +12021,14 @@ i0.ɵɵngDeclareClassMetadata({
11926
12021
  required: false
11927
12022
  }]
11928
12023
  }],
12024
+ showErrorsOn: [{
12025
+ type: i0.Input,
12026
+ args: [{
12027
+ isSignal: true,
12028
+ alias: "showErrorsOn",
12029
+ required: false
12030
+ }]
12031
+ }],
11929
12032
  size: [{
11930
12033
  type: i0.Input,
11931
12034
  args: [{
@@ -12086,6 +12189,164 @@ i0.ɵɵngDeclareClassMetadata({
12086
12189
  }]
12087
12190
  }]
12088
12191
  });
12192
+ const TYPE_MS = 45;
12193
+ const HOLD_MS = 2500;
12194
+ const ROTATE_MS = 6e3;
12195
+ function sameHints(a, b) {
12196
+ return a.length === b.length && a.every((hint, i) => hint === b[i]);
12197
+ }
12198
+ function injectTypedPlaceholder(hints) {
12199
+ const zone = inject(NgZone);
12200
+ const injector = inject(Injector);
12201
+ const list = computed(() => hints(), {
12202
+ ...ngDevMode ? { debugName: "list" } : /* istanbul ignore next */ {},
12203
+ equal: sameHints
12204
+ });
12205
+ const started = signal(false, ...ngDevMode ? [{ debugName: "started" }] : /* istanbul ignore next */ []);
12206
+ const reducedMotion = signal(false, ...ngDevMode ? [{ debugName: "reducedMotion" }] : /* istanbul ignore next */ []);
12207
+ const index = signal(0, ...ngDevMode ? [{ debugName: "index" }] : /* istanbul ignore next */ []);
12208
+ const typedLength = signal(0, ...ngDevMode ? [{ debugName: "typedLength" }] : /* istanbul ignore next */ []);
12209
+ const hint = computed(() => {
12210
+ const all = list();
12211
+ return all.length > 0 ? all[index() % all.length] : "";
12212
+ }, ...ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []);
12213
+ const text = computed(() => hint().slice(0, typedLength()), ...ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []);
12214
+ const typing = computed(() => typedLength() < hint().length, ...ngDevMode ? [{ debugName: "typing" }] : /* istanbul ignore next */ []);
12215
+ const animating = computed(() => started() && !reducedMotion() && list().length > 0, ...ngDevMode ? [{ debugName: "animating" }] : /* istanbul ignore next */ []);
12216
+ afterNextRender(() => started.set(true), { injector });
12217
+ effect((onCleanup) => {
12218
+ const all = list();
12219
+ if (!started() || all.length === 0) return;
12220
+ const motion = typeof window.matchMedia === "function" ? window.matchMedia("(prefers-reduced-motion: reduce)") : null;
12221
+ let timer;
12222
+ const schedule = (step, ms) => {
12223
+ timer = zone.runOutsideAngular(() => setTimeout(step, ms));
12224
+ };
12225
+ const advance = () => index.update((i) => (i + 1) % all.length);
12226
+ const rotate = () => {
12227
+ advance();
12228
+ schedule(rotate, ROTATE_MS);
12229
+ };
12230
+ const type = () => {
12231
+ typedLength.update((length) => length + 1);
12232
+ if (typedLength() < hint().length) {
12233
+ schedule(type, TYPE_MS);
12234
+ return;
12235
+ }
12236
+ schedule(() => {
12237
+ advance();
12238
+ typedLength.set(0);
12239
+ schedule(type, TYPE_MS);
12240
+ }, HOLD_MS);
12241
+ };
12242
+ const run = () => {
12243
+ clearTimeout(timer);
12244
+ const reduced = motion?.matches ?? false;
12245
+ reducedMotion.set(reduced);
12246
+ index.set(0);
12247
+ typedLength.set(0);
12248
+ if (reduced) schedule(rotate, ROTATE_MS);
12249
+ else type();
12250
+ };
12251
+ motion?.addEventListener("change", run);
12252
+ untracked(run);
12253
+ onCleanup(() => {
12254
+ clearTimeout(timer);
12255
+ motion?.removeEventListener("change", run);
12256
+ });
12257
+ });
12258
+ return {
12259
+ animating,
12260
+ hint,
12261
+ text,
12262
+ typing
12263
+ };
12264
+ }
12265
+ var TypedPlaceholderComponent = class TypedPlaceholderComponent {
12266
+ text = input.required(...ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []);
12267
+ typing = input.required(...ngDevMode ? [{ debugName: "typing" }] : /* istanbul ignore next */ []);
12268
+ static ɵfac = i0.ɵɵngDeclareFactory({
12269
+ minVersion: "12.0.0",
12270
+ version: "22.2.3",
12271
+ ngImport: i0,
12272
+ type: TypedPlaceholderComponent,
12273
+ deps: [],
12274
+ target: i0.ɵɵFactoryTarget.Component
12275
+ });
12276
+ static ɵcmp = i0.ɵɵngDeclareComponent({
12277
+ minVersion: "17.1.0",
12278
+ version: "22.2.3",
12279
+ type: TypedPlaceholderComponent,
12280
+ isStandalone: true,
12281
+ selector: "ea-typed-placeholder",
12282
+ inputs: {
12283
+ text: {
12284
+ classPropertyName: "text",
12285
+ publicName: "text",
12286
+ isSignal: true,
12287
+ isRequired: true,
12288
+ transformFunction: null
12289
+ },
12290
+ typing: {
12291
+ classPropertyName: "typing",
12292
+ publicName: "typing",
12293
+ isSignal: true,
12294
+ isRequired: true,
12295
+ transformFunction: null
12296
+ }
12297
+ },
12298
+ host: {
12299
+ attributes: {
12300
+ "aria-hidden": "true",
12301
+ "dir": "auto"
12302
+ },
12303
+ properties: { "class.ea-typed-placeholder--blinking": "!typing()" }
12304
+ },
12305
+ ngImport: i0,
12306
+ template: `{{ text() }}<span class="ea-typed-placeholder__cursor"></span>`,
12307
+ isInline: true,
12308
+ styles: [":host{opacity:1;font-style:italic;color:var(--color-text-tertiary);overflow:hidden;display:block;line-height:var(--line-height-normal);text-align:start;text-indent:0;text-transform:none;letter-spacing:normal;word-spacing:normal;font-family:var(--font-family-sans);pointer-events:none;-webkit-user-select:none;user-select:none}.ea-typed-placeholder__cursor{margin-inline-start:.0625em;border-inline-start:max(.0625em,var(--border-width-thin)) solid}:host(.ea-typed-placeholder--blinking) .ea-typed-placeholder__cursor{animation:ea-typed-placeholder-blink 1.06s step-end infinite}@keyframes ea-typed-placeholder-blink{50%{opacity:0}}\n"],
12309
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
12310
+ });
12311
+ };
12312
+ i0.ɵɵngDeclareClassMetadata({
12313
+ minVersion: "12.0.0",
12314
+ version: "22.2.3",
12315
+ ngImport: i0,
12316
+ type: TypedPlaceholderComponent,
12317
+ decorators: [{
12318
+ type: Component,
12319
+ args: [{
12320
+ selector: "ea-typed-placeholder",
12321
+ template: `{{ text() }}<span class="ea-typed-placeholder__cursor"></span>`,
12322
+ changeDetection: ChangeDetectionStrategy.OnPush,
12323
+ host: {
12324
+ "aria-hidden": "true",
12325
+ dir: "auto",
12326
+ "[class.ea-typed-placeholder--blinking]": "!typing()"
12327
+ },
12328
+ styles: [":host{opacity:1;font-style:italic;color:var(--color-text-tertiary);overflow:hidden;display:block;line-height:var(--line-height-normal);text-align:start;text-indent:0;text-transform:none;letter-spacing:normal;word-spacing:normal;font-family:var(--font-family-sans);pointer-events:none;-webkit-user-select:none;user-select:none}.ea-typed-placeholder__cursor{margin-inline-start:.0625em;border-inline-start:max(.0625em,var(--border-width-thin)) solid}:host(.ea-typed-placeholder--blinking) .ea-typed-placeholder__cursor{animation:ea-typed-placeholder-blink 1.06s step-end infinite}@keyframes ea-typed-placeholder-blink{50%{opacity:0}}\n"]
12329
+ }]
12330
+ }],
12331
+ propDecorators: {
12332
+ text: [{
12333
+ type: i0.Input,
12334
+ args: [{
12335
+ isSignal: true,
12336
+ alias: "text",
12337
+ required: true
12338
+ }]
12339
+ }],
12340
+ typing: [{
12341
+ type: i0.Input,
12342
+ args: [{
12343
+ isSignal: true,
12344
+ alias: "typing",
12345
+ required: true
12346
+ }]
12347
+ }]
12348
+ }
12349
+ });
12089
12350
  var EyeOffIconComponent = class EyeOffIconComponent extends IconComponentBase {
12090
12351
  static slug = "eye-off";
12091
12352
  static category = "feather";
@@ -12297,12 +12558,14 @@ var InputComponent = class InputComponent {
12297
12558
  });
12298
12559
  type = input("text", ...ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []);
12299
12560
  placeholder = input("", ...ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []);
12561
+ typedPlaceholder = input([], ...ngDevMode ? [{ debugName: "typedPlaceholder" }] : /* istanbul ignore next */ []);
12300
12562
  icon = input(void 0, ...ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []);
12301
12563
  keepIcon = input(true, ...ngDevMode ? [{ debugName: "keepIcon" }] : /* istanbul ignore next */ []);
12302
12564
  size = input("md", ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
12303
12565
  hint = input(void 0, ...ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []);
12304
12566
  errorMsg = input(void 0, ...ngDevMode ? [{ debugName: "errorMsg" }] : /* istanbul ignore next */ []);
12305
12567
  errorMessages = input(void 0, ...ngDevMode ? [{ debugName: "errorMessages" }] : /* istanbul ignore next */ []);
12568
+ showErrorsOn = input(void 0, ...ngDevMode ? [{ debugName: "showErrorsOn" }] : /* istanbul ignore next */ []);
12306
12569
  disabled = input(false, ...ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []);
12307
12570
  readonly = input(false, ...ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []);
12308
12571
  required = input(false, ...ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []);
@@ -12327,10 +12590,14 @@ var InputComponent = class InputComponent {
12327
12590
  onChange = () => {};
12328
12591
  onTouched = () => {};
12329
12592
  isDisabled = computed(() => this.disabled() || this._formDisabled(), ...ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []);
12593
+ typed = injectTypedPlaceholder(this.typedPlaceholder);
12594
+ typedPlaceholderShown = computed(() => this.typed.animating() && !this.value(), ...ngDevMode ? [{ debugName: "typedPlaceholderShown" }] : /* istanbul ignore next */ []);
12595
+ nativePlaceholder = computed(() => this.typedPlaceholder().length > 0 ? this.typed.hint() : this.placeholder(), ...ngDevMode ? [{ debugName: "nativePlaceholder" }] : /* istanbul ignore next */ []);
12330
12596
  effectiveType = computed(() => this.type() === "password" && this.passwordVisible() ? "text" : this.type(), ...ngDevMode ? [{ debugName: "effectiveType" }] : /* istanbul ignore next */ []);
12331
12597
  errorState = injectControlErrorState({
12332
12598
  errorMsg: this.errorMsg,
12333
- errorMessages: this.errorMessages
12599
+ errorMessages: this.errorMessages,
12600
+ showErrorsOn: this.showErrorsOn
12334
12601
  });
12335
12602
  errorText = this.errorState.error;
12336
12603
  hasError = this.errorState.hasError;
@@ -12534,6 +12801,13 @@ var InputComponent = class InputComponent {
12534
12801
  isRequired: false,
12535
12802
  transformFunction: null
12536
12803
  },
12804
+ typedPlaceholder: {
12805
+ classPropertyName: "typedPlaceholder",
12806
+ publicName: "typedPlaceholder",
12807
+ isSignal: true,
12808
+ isRequired: false,
12809
+ transformFunction: null
12810
+ },
12537
12811
  icon: {
12538
12812
  classPropertyName: "icon",
12539
12813
  publicName: "icon",
@@ -12576,6 +12850,13 @@ var InputComponent = class InputComponent {
12576
12850
  isRequired: false,
12577
12851
  transformFunction: null
12578
12852
  },
12853
+ showErrorsOn: {
12854
+ classPropertyName: "showErrorsOn",
12855
+ publicName: "showErrorsOn",
12856
+ isSignal: true,
12857
+ isRequired: false,
12858
+ transformFunction: null
12859
+ },
12579
12860
  disabled: {
12580
12861
  classPropertyName: "disabled",
12581
12862
  publicName: "disabled",
@@ -12707,8 +12988,8 @@ var InputComponent = class InputComponent {
12707
12988
  isSignal: true
12708
12989
  }],
12709
12990
  ngImport: i0,
12710
- template: "<div class=\"ea-input-field ea-input-field--{{ size() }}\">\n @if (label(); as labelText) {\n <ea-field-label\n [text]=\"labelText\"\n [icon]=\"labelIcon()\"\n [help]=\"labelHelp()\"\n [forId]=\"id()\"\n [required]=\"required()\"\n [optional]=\"optional()\" />\n }\n\n <div\n class=\"ea-input-wrapper\"\n [ngClass]=\"wrapperClasses()\"\n [style.max-width]=\"numberWidth()\">\n @if ((keepIcon() || !value()) && icon(); as leadingIcon) {\n <span\n class=\"ea-input-wrapper__icon\"\n aria-hidden=\"true\">\n <ng-container *ngComponentOutlet=\"leadingIcon\" />\n </span>\n }\n\n <span class=\"ea-input-wrapper__prefix\">\n <ng-content select=\"[slot=prefix]\" />\n </span>\n\n <input\n #inputEl\n class=\"ea-input\"\n dir=\"auto\"\n [id]=\"id()\"\n [type]=\"effectiveType()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [value]=\"value()\"\n [attr.autocomplete]=\"autocomplete() ?? null\"\n [attr.spellcheck]=\"spellcheck() ?? null\"\n [attr.list]=\"list() ?? null\"\n [attr.min]=\"type() === 'number' ? (min() ?? null) : null\"\n [attr.max]=\"type() === 'number' ? (max() ?? null) : null\"\n [attr.step]=\"type() === 'number' ? (step() ?? null) : null\"\n [attr.maxlength]=\"maxLength() ?? null\"\n [attr.minlength]=\"minLength() ?? null\"\n [attr.role]=\"role() ?? null\"\n [attr.aria-label]=\"label() ? null : (ariaLabel() ?? null)\"\n [attr.aria-expanded]=\"ariaExpanded() ?? null\"\n [attr.aria-controls]=\"ariaControls() ?? null\"\n [attr.aria-activedescendant]=\"ariaActivedescendant() ?? null\"\n [attr.aria-autocomplete]=\"ariaAutocomplete() ?? null\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"\n showError() ? id() + '-error' : showHint() ? id() + '-hint' : null\n \"\n (input)=\"handleInput($event)\"\n (keydown)=\"handleKeydown($event)\"\n (wheel)=\"handleWheel($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\" />\n\n <span class=\"ea-input-wrapper__suffix\">\n <ng-content select=\"[slot=suffix]\" />\n </span>\n\n @if (showClear()) {\n <button\n type=\"button\"\n class=\"ea-input-wrapper__clear\"\n [attr.aria-label]=\"i18n.messages().input.clear\"\n (mousedown)=\"onClearMousedown($event)\"\n (click)=\"clear()\">\n <ea-icon-x class=\"ea-input-wrapper__clear-icon\" />\n </button>\n }\n\n @if (type() === 'password' && showPasswordToggle()) {\n <button\n type=\"button\"\n class=\"ea-input-wrapper__password-toggle\"\n [attr.aria-label]=\"\n passwordVisible()\n ? i18n.messages().input.hidePassword\n : i18n.messages().input.showPassword\n \"\n [attr.aria-pressed]=\"passwordVisible()\"\n (click)=\"togglePasswordVisibility()\">\n @if (passwordVisible()) {\n <ea-icon-eye-off />\n } @else {\n <ea-icon-eye />\n }\n </button>\n }\n </div>\n\n <ea-field-messages\n [id]=\"id()\"\n [error]=\"errorText()\"\n [hint]=\"showHint() ? hint() : null\" />\n</div>\n",
12711
- styles: [".ea-input-field{display:flex;flex-direction:column;gap:.375em;color:var(--color-text-secondary);--ea-field-label-size: .875em;--ea-field-messages-size: .8125em}.ea-input-field--2xs{font-size:var(--font-size-2xs)}.ea-input-field--xs{font-size:var(--font-size-xs)}.ea-input-field--sm{font-size:var(--font-size-sm)}.ea-input-field--md{font-size:var(--font-size-md)}.ea-input-field--lg{font-size:var(--font-size-lg)}.ea-input-field--xl{font-size:var(--font-size-xl)}.ea-input-wrapper{display:flex;align-items:center;gap:.5em;min-height:2.5em;padding:0 .75em;background-color:var(--color-bg-base);border:var(--border-width-thin) solid var(--color-border-default);border-radius:var(--radius-md);color:var(--color-text-secondary);transition:var(--transition-colors),var(--transition-shadow);overflow:hidden}.ea-input-wrapper--focused{border-color:var(--ea-input-border-color-focus, var(--color-border-default));outline:none;box-shadow:var(--ea-input-shadow-focus, var(--shadow-focus-ring))}@media(forced-colors:active){.ea-input-wrapper--focused{outline:2px solid Highlight;outline-offset:2px}}.ea-input-wrapper--error{border-color:var(--color-error-default)}.ea-input-wrapper--error.ea-input-wrapper--focused{outline:none;box-shadow:var(--shadow-focus-ring-error)}@media(forced-colors:active){.ea-input-wrapper--error.ea-input-wrapper--focused{outline:2px solid Highlight;outline-offset:2px}}.ea-input-wrapper--disabled{background-color:var(--color-bg-muted);border-color:var(--color-border-default);cursor:default;opacity:.6}.ea-input-wrapper--disabled .ea-input{cursor:default}.ea-input-wrapper--readonly{background-color:var(--color-bg-subtle)}.ea-input-wrapper--readonly:has(:focus-visible){border-color:var(--color-border-focus);outline:none;box-shadow:none}@media(forced-colors:active){.ea-input-wrapper--readonly:has(:focus-visible){outline:2px solid Highlight;outline-offset:2px}}.ea-input-wrapper--readonly button{cursor:default}.ea-input-wrapper--readonly button:hover{background-color:transparent;color:var(--color-text-secondary)}.ea-input-wrapper__prefix,.ea-input-wrapper__suffix{display:flex;align-items:center;flex-shrink:0;color:inherit}.ea-input-wrapper__prefix:empty,.ea-input-wrapper__suffix:empty{display:none}.ea-input-wrapper__icon{display:inline-flex;align-items:center;flex-shrink:0;font-size:1em;color:var(--color-text-secondary)}.ea-input-wrapper__clear{position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--ea-icon-button-size, 1.75em);height:var(--ea-icon-button-size, 1.75em);padding:0;border:none;border-radius:var(--radius-sm);background:none;color:var(--color-text-secondary);cursor:pointer;transition:var(--transition-colors)}.ea-input-wrapper__clear>*{font-size:1.25em}.ea-input-wrapper__clear:after{content:\"\";position:absolute;top:50%;left:50%;width:max(100%,var(--ea-icon-button-target, 24px));height:max(100%,var(--ea-icon-button-target, 24px));transform:translate(-50%,-50%)}.ea-input-wrapper__clear:hover{background-color:var(--color-state-hover);color:var(--color-text-primary)}.ea-input-wrapper__clear:focus-visible{outline:none;outline:var(--border-width-medium) solid var(--color-border-focus);outline-offset:2px}@media(forced-colors:active){.ea-input-wrapper__clear:focus-visible{outline:2px solid Highlight;outline-offset:2px}}.ea-input-wrapper__clear:disabled{cursor:default;opacity:.5}.ea-input-wrapper__password-toggle{position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--ea-icon-button-size, 1.75em);height:var(--ea-icon-button-size, 1.75em);padding:0;border:none;border-radius:var(--radius-sm);background:none;color:var(--color-text-secondary);cursor:pointer;transition:var(--transition-colors)}.ea-input-wrapper__password-toggle>*{font-size:1.25em}.ea-input-wrapper__password-toggle:after{content:\"\";position:absolute;top:50%;left:50%;width:max(100%,var(--ea-icon-button-target, 24px));height:max(100%,var(--ea-icon-button-target, 24px));transform:translate(-50%,-50%)}.ea-input-wrapper__password-toggle:hover{background-color:var(--color-state-hover);color:var(--color-text-primary)}.ea-input-wrapper__password-toggle:focus-visible{outline:none;outline:var(--border-width-medium) solid var(--color-border-focus);outline-offset:2px}@media(forced-colors:active){.ea-input-wrapper__password-toggle:focus-visible{outline:2px solid Highlight;outline-offset:2px}}.ea-input-wrapper__password-toggle:disabled{cursor:default;opacity:.5}.ea-input-wrapper__password-toggle{color:var(--ea-input-toggle-color, var(--color-text-secondary))}.ea-input-wrapper__password-toggle ea-icon-eye,.ea-input-wrapper__password-toggle ea-icon-eye-off{width:1em;height:1em;pointer-events:none}.ea-input{flex:1;width:100%;min-width:0;padding:.5em 0;background:transparent;border:none;outline:none;color:var(--color-text-primary);font-family:var(--font-family-sans);line-height:var(--line-height-normal)}.ea-input::placeholder{opacity:1;font-style:italic;color:var(--color-text-tertiary)}.ea-input:-webkit-autofill,.ea-input:autofill{-webkit-text-fill-color:var(--color-text-primary);-webkit-box-shadow:0 0 0 1000px var(--color-bg-base) inset;transition:background-color 5000s ease-in-out 0s}.ea-input:disabled{cursor:default}.ea-input::-webkit-calendar-picker-indicator,.ea-input::-webkit-credentials-auto-fill-button,.ea-input::-webkit-contacts-auto-fill-button,.ea-input::-webkit-strong-password-auto-fill-button,.ea-input::-webkit-caps-lock-indicator{display:none!important;visibility:hidden;pointer-events:none;width:0;height:0}.ea-input[type=number]::-webkit-inner-spin-button,.ea-input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.ea-input[type=number]{-moz-appearance:textfield;appearance:textfield}.ea-input[type=search]::-webkit-search-decoration,.ea-input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}\n"],
12991
+ template: "<div class=\"ea-input-field ea-input-field--{{ size() }}\">\n @if (label(); as labelText) {\n <ea-field-label\n [text]=\"labelText\"\n [icon]=\"labelIcon()\"\n [help]=\"labelHelp()\"\n [forId]=\"id()\"\n [required]=\"required()\"\n [optional]=\"optional()\" />\n }\n\n <div\n class=\"ea-input-wrapper\"\n [ngClass]=\"wrapperClasses()\"\n [style.max-width]=\"numberWidth()\">\n @if ((keepIcon() || !value()) && icon(); as leadingIcon) {\n <span\n class=\"ea-input-wrapper__icon\"\n aria-hidden=\"true\">\n <ng-container *ngComponentOutlet=\"leadingIcon\" />\n </span>\n }\n\n <span class=\"ea-input-wrapper__prefix\">\n <ng-content select=\"[slot=prefix]\" />\n </span>\n\n <span class=\"ea-input-wrapper__control\">\n <input\n #inputEl\n class=\"ea-input\"\n dir=\"auto\"\n [class.ea-input--typed-placeholder]=\"typedPlaceholderShown()\"\n [id]=\"id()\"\n [type]=\"effectiveType()\"\n [placeholder]=\"nativePlaceholder()\"\n [disabled]=\"isDisabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [value]=\"value()\"\n [attr.autocomplete]=\"autocomplete() ?? null\"\n [attr.spellcheck]=\"spellcheck() ?? null\"\n [attr.list]=\"list() ?? null\"\n [attr.min]=\"type() === 'number' ? (min() ?? null) : null\"\n [attr.max]=\"type() === 'number' ? (max() ?? null) : null\"\n [attr.step]=\"type() === 'number' ? (step() ?? null) : null\"\n [attr.maxlength]=\"maxLength() ?? null\"\n [attr.minlength]=\"minLength() ?? null\"\n [attr.role]=\"role() ?? null\"\n [attr.aria-label]=\"label() ? null : (ariaLabel() ?? null)\"\n [attr.aria-expanded]=\"ariaExpanded() ?? null\"\n [attr.aria-controls]=\"ariaControls() ?? null\"\n [attr.aria-activedescendant]=\"ariaActivedescendant() ?? null\"\n [attr.aria-autocomplete]=\"ariaAutocomplete() ?? null\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"\n showError() ? id() + '-error' : showHint() ? id() + '-hint' : null\n \"\n (input)=\"handleInput($event)\"\n (keydown)=\"handleKeydown($event)\"\n (wheel)=\"handleWheel($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\" />\n\n @if (typedPlaceholderShown()) {\n <ea-typed-placeholder\n class=\"ea-input-wrapper__typed-placeholder\"\n [text]=\"typed.text()\"\n [typing]=\"typed.typing()\" />\n }\n </span>\n\n <span class=\"ea-input-wrapper__suffix\">\n <ng-content select=\"[slot=suffix]\" />\n </span>\n\n @if (showClear()) {\n <button\n type=\"button\"\n class=\"ea-input-wrapper__clear\"\n [attr.aria-label]=\"i18n.messages().input.clear\"\n (mousedown)=\"onClearMousedown($event)\"\n (click)=\"clear()\">\n <ea-icon-x class=\"ea-input-wrapper__clear-icon\" />\n </button>\n }\n\n @if (type() === 'password' && showPasswordToggle()) {\n <button\n type=\"button\"\n class=\"ea-input-wrapper__password-toggle\"\n [attr.aria-label]=\"\n passwordVisible()\n ? i18n.messages().input.hidePassword\n : i18n.messages().input.showPassword\n \"\n [attr.aria-pressed]=\"passwordVisible()\"\n (click)=\"togglePasswordVisibility()\">\n @if (passwordVisible()) {\n <ea-icon-eye-off />\n } @else {\n <ea-icon-eye />\n }\n </button>\n }\n </div>\n\n <ea-field-messages\n [id]=\"id()\"\n [error]=\"errorText()\"\n [hint]=\"showHint() ? hint() : null\" />\n</div>\n",
12992
+ styles: [".ea-input-field{display:flex;flex-direction:column;gap:.375em;color:var(--color-text-secondary);--ea-field-label-size: .875em;--ea-field-messages-size: .8125em}.ea-input-field--2xs{font-size:var(--font-size-2xs)}.ea-input-field--xs{font-size:var(--font-size-xs)}.ea-input-field--sm{font-size:var(--font-size-sm)}.ea-input-field--md{font-size:var(--font-size-md)}.ea-input-field--lg{font-size:var(--font-size-lg)}.ea-input-field--xl{font-size:var(--font-size-xl)}.ea-input-wrapper{display:flex;align-items:center;gap:.5em;min-height:2.5em;padding:0 .75em;background-color:var(--color-bg-base);border:var(--border-width-thin) solid var(--color-border-default);border-radius:var(--radius-md);color:var(--color-text-secondary);transition:var(--transition-colors),var(--transition-shadow);overflow:hidden}.ea-input-wrapper--focused{border-color:var(--ea-input-border-color-focus, var(--color-border-default));outline:none;box-shadow:var(--ea-input-shadow-focus, var(--shadow-focus-ring))}@media(forced-colors:active){.ea-input-wrapper--focused{outline:2px solid Highlight;outline-offset:2px}}.ea-input-wrapper--error{border-color:var(--color-error-default)}.ea-input-wrapper--error.ea-input-wrapper--focused{outline:none;box-shadow:var(--shadow-focus-ring-error)}@media(forced-colors:active){.ea-input-wrapper--error.ea-input-wrapper--focused{outline:2px solid Highlight;outline-offset:2px}}.ea-input-wrapper--disabled{background-color:var(--color-bg-muted);border-color:var(--color-border-default);cursor:default;opacity:.6}.ea-input-wrapper--disabled .ea-input{cursor:default}.ea-input-wrapper--readonly{background-color:var(--color-bg-subtle)}.ea-input-wrapper--readonly:has(:focus-visible){border-color:var(--color-border-focus);outline:none;box-shadow:none}@media(forced-colors:active){.ea-input-wrapper--readonly:has(:focus-visible){outline:2px solid Highlight;outline-offset:2px}}.ea-input-wrapper--readonly button{cursor:default}.ea-input-wrapper--readonly button:hover{background-color:transparent;color:var(--color-text-secondary)}.ea-input-wrapper__prefix,.ea-input-wrapper__suffix{display:flex;align-items:center;flex-shrink:0;color:inherit}.ea-input-wrapper__prefix:empty,.ea-input-wrapper__suffix:empty{display:none}.ea-input-wrapper__control{position:relative;display:flex;flex:1;min-width:0}.ea-input-wrapper__typed-placeholder{position:absolute;inset:0;padding:.5em 0;white-space:pre}.ea-input-wrapper__icon{display:inline-flex;align-items:center;flex-shrink:0;font-size:1em;color:var(--color-text-secondary)}.ea-input-wrapper__clear{position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--ea-icon-button-size, 1.75em);height:var(--ea-icon-button-size, 1.75em);padding:0;border:none;border-radius:var(--radius-sm);background:none;color:var(--color-text-secondary);cursor:pointer;transition:var(--transition-colors)}.ea-input-wrapper__clear>*{font-size:1.25em}.ea-input-wrapper__clear:after{content:\"\";position:absolute;top:50%;left:50%;width:max(100%,var(--ea-icon-button-target, 24px));height:max(100%,var(--ea-icon-button-target, 24px));transform:translate(-50%,-50%)}.ea-input-wrapper__clear:hover{background-color:var(--color-state-hover);color:var(--color-text-primary)}.ea-input-wrapper__clear:focus-visible{outline:none;outline:var(--border-width-medium) solid var(--color-border-focus);outline-offset:2px}@media(forced-colors:active){.ea-input-wrapper__clear:focus-visible{outline:2px solid Highlight;outline-offset:2px}}.ea-input-wrapper__clear:disabled{cursor:default;opacity:.5}.ea-input-wrapper__password-toggle{position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--ea-icon-button-size, 1.75em);height:var(--ea-icon-button-size, 1.75em);padding:0;border:none;border-radius:var(--radius-sm);background:none;color:var(--color-text-secondary);cursor:pointer;transition:var(--transition-colors)}.ea-input-wrapper__password-toggle>*{font-size:1.25em}.ea-input-wrapper__password-toggle:after{content:\"\";position:absolute;top:50%;left:50%;width:max(100%,var(--ea-icon-button-target, 24px));height:max(100%,var(--ea-icon-button-target, 24px));transform:translate(-50%,-50%)}.ea-input-wrapper__password-toggle:hover{background-color:var(--color-state-hover);color:var(--color-text-primary)}.ea-input-wrapper__password-toggle:focus-visible{outline:none;outline:var(--border-width-medium) solid var(--color-border-focus);outline-offset:2px}@media(forced-colors:active){.ea-input-wrapper__password-toggle:focus-visible{outline:2px solid Highlight;outline-offset:2px}}.ea-input-wrapper__password-toggle:disabled{cursor:default;opacity:.5}.ea-input-wrapper__password-toggle{color:var(--ea-input-toggle-color, var(--color-text-secondary))}.ea-input-wrapper__password-toggle ea-icon-eye,.ea-input-wrapper__password-toggle ea-icon-eye-off{width:1em;height:1em;pointer-events:none}.ea-input{flex:1;width:100%;min-width:0;padding:.5em 0;background:transparent;border:none;outline:none;color:var(--color-text-primary);font-family:var(--font-family-sans);line-height:var(--line-height-normal)}.ea-input::placeholder{opacity:1;font-style:italic;color:var(--color-text-tertiary)}.ea-input--typed-placeholder::placeholder{color:transparent}.ea-input:-webkit-autofill,.ea-input:autofill{-webkit-text-fill-color:var(--color-text-primary);-webkit-box-shadow:0 0 0 1000px var(--color-bg-base) inset;transition:background-color 5000s ease-in-out 0s}.ea-input:disabled{cursor:default}.ea-input::-webkit-calendar-picker-indicator,.ea-input::-webkit-credentials-auto-fill-button,.ea-input::-webkit-contacts-auto-fill-button,.ea-input::-webkit-strong-password-auto-fill-button,.ea-input::-webkit-caps-lock-indicator{display:none!important;visibility:hidden;pointer-events:none;width:0;height:0}.ea-input[type=number]::-webkit-inner-spin-button,.ea-input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.ea-input[type=number]{-moz-appearance:textfield;appearance:textfield}.ea-input[type=search]::-webkit-search-decoration,.ea-input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}\n"],
12712
12993
  dependencies: [
12713
12994
  {
12714
12995
  kind: "component",
@@ -12764,6 +13045,12 @@ var InputComponent = class InputComponent {
12764
13045
  ],
12765
13046
  exportAs: ["ngComponentOutlet"]
12766
13047
  },
13048
+ {
13049
+ kind: "component",
13050
+ type: TypedPlaceholderComponent,
13051
+ selector: "ea-typed-placeholder",
13052
+ inputs: ["text", "typing"]
13053
+ },
12767
13054
  {
12768
13055
  kind: "component",
12769
13056
  type: XIconComponent,
@@ -12790,6 +13077,7 @@ i0.ɵɵngDeclareClassMetadata({
12790
13077
  FieldMessagesComponent,
12791
13078
  NgClass,
12792
13079
  NgComponentOutlet,
13080
+ TypedPlaceholderComponent,
12793
13081
  XIconComponent
12794
13082
  ],
12795
13083
  providers: [{
@@ -12797,8 +13085,8 @@ i0.ɵɵngDeclareClassMetadata({
12797
13085
  useExisting: forwardRef(() => InputComponent),
12798
13086
  multi: true
12799
13087
  }],
12800
- template: "<div class=\"ea-input-field ea-input-field--{{ size() }}\">\n @if (label(); as labelText) {\n <ea-field-label\n [text]=\"labelText\"\n [icon]=\"labelIcon()\"\n [help]=\"labelHelp()\"\n [forId]=\"id()\"\n [required]=\"required()\"\n [optional]=\"optional()\" />\n }\n\n <div\n class=\"ea-input-wrapper\"\n [ngClass]=\"wrapperClasses()\"\n [style.max-width]=\"numberWidth()\">\n @if ((keepIcon() || !value()) && icon(); as leadingIcon) {\n <span\n class=\"ea-input-wrapper__icon\"\n aria-hidden=\"true\">\n <ng-container *ngComponentOutlet=\"leadingIcon\" />\n </span>\n }\n\n <span class=\"ea-input-wrapper__prefix\">\n <ng-content select=\"[slot=prefix]\" />\n </span>\n\n <input\n #inputEl\n class=\"ea-input\"\n dir=\"auto\"\n [id]=\"id()\"\n [type]=\"effectiveType()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [value]=\"value()\"\n [attr.autocomplete]=\"autocomplete() ?? null\"\n [attr.spellcheck]=\"spellcheck() ?? null\"\n [attr.list]=\"list() ?? null\"\n [attr.min]=\"type() === 'number' ? (min() ?? null) : null\"\n [attr.max]=\"type() === 'number' ? (max() ?? null) : null\"\n [attr.step]=\"type() === 'number' ? (step() ?? null) : null\"\n [attr.maxlength]=\"maxLength() ?? null\"\n [attr.minlength]=\"minLength() ?? null\"\n [attr.role]=\"role() ?? null\"\n [attr.aria-label]=\"label() ? null : (ariaLabel() ?? null)\"\n [attr.aria-expanded]=\"ariaExpanded() ?? null\"\n [attr.aria-controls]=\"ariaControls() ?? null\"\n [attr.aria-activedescendant]=\"ariaActivedescendant() ?? null\"\n [attr.aria-autocomplete]=\"ariaAutocomplete() ?? null\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"\n showError() ? id() + '-error' : showHint() ? id() + '-hint' : null\n \"\n (input)=\"handleInput($event)\"\n (keydown)=\"handleKeydown($event)\"\n (wheel)=\"handleWheel($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\" />\n\n <span class=\"ea-input-wrapper__suffix\">\n <ng-content select=\"[slot=suffix]\" />\n </span>\n\n @if (showClear()) {\n <button\n type=\"button\"\n class=\"ea-input-wrapper__clear\"\n [attr.aria-label]=\"i18n.messages().input.clear\"\n (mousedown)=\"onClearMousedown($event)\"\n (click)=\"clear()\">\n <ea-icon-x class=\"ea-input-wrapper__clear-icon\" />\n </button>\n }\n\n @if (type() === 'password' && showPasswordToggle()) {\n <button\n type=\"button\"\n class=\"ea-input-wrapper__password-toggle\"\n [attr.aria-label]=\"\n passwordVisible()\n ? i18n.messages().input.hidePassword\n : i18n.messages().input.showPassword\n \"\n [attr.aria-pressed]=\"passwordVisible()\"\n (click)=\"togglePasswordVisibility()\">\n @if (passwordVisible()) {\n <ea-icon-eye-off />\n } @else {\n <ea-icon-eye />\n }\n </button>\n }\n </div>\n\n <ea-field-messages\n [id]=\"id()\"\n [error]=\"errorText()\"\n [hint]=\"showHint() ? hint() : null\" />\n</div>\n",
12801
- styles: [".ea-input-field{display:flex;flex-direction:column;gap:.375em;color:var(--color-text-secondary);--ea-field-label-size: .875em;--ea-field-messages-size: .8125em}.ea-input-field--2xs{font-size:var(--font-size-2xs)}.ea-input-field--xs{font-size:var(--font-size-xs)}.ea-input-field--sm{font-size:var(--font-size-sm)}.ea-input-field--md{font-size:var(--font-size-md)}.ea-input-field--lg{font-size:var(--font-size-lg)}.ea-input-field--xl{font-size:var(--font-size-xl)}.ea-input-wrapper{display:flex;align-items:center;gap:.5em;min-height:2.5em;padding:0 .75em;background-color:var(--color-bg-base);border:var(--border-width-thin) solid var(--color-border-default);border-radius:var(--radius-md);color:var(--color-text-secondary);transition:var(--transition-colors),var(--transition-shadow);overflow:hidden}.ea-input-wrapper--focused{border-color:var(--ea-input-border-color-focus, var(--color-border-default));outline:none;box-shadow:var(--ea-input-shadow-focus, var(--shadow-focus-ring))}@media(forced-colors:active){.ea-input-wrapper--focused{outline:2px solid Highlight;outline-offset:2px}}.ea-input-wrapper--error{border-color:var(--color-error-default)}.ea-input-wrapper--error.ea-input-wrapper--focused{outline:none;box-shadow:var(--shadow-focus-ring-error)}@media(forced-colors:active){.ea-input-wrapper--error.ea-input-wrapper--focused{outline:2px solid Highlight;outline-offset:2px}}.ea-input-wrapper--disabled{background-color:var(--color-bg-muted);border-color:var(--color-border-default);cursor:default;opacity:.6}.ea-input-wrapper--disabled .ea-input{cursor:default}.ea-input-wrapper--readonly{background-color:var(--color-bg-subtle)}.ea-input-wrapper--readonly:has(:focus-visible){border-color:var(--color-border-focus);outline:none;box-shadow:none}@media(forced-colors:active){.ea-input-wrapper--readonly:has(:focus-visible){outline:2px solid Highlight;outline-offset:2px}}.ea-input-wrapper--readonly button{cursor:default}.ea-input-wrapper--readonly button:hover{background-color:transparent;color:var(--color-text-secondary)}.ea-input-wrapper__prefix,.ea-input-wrapper__suffix{display:flex;align-items:center;flex-shrink:0;color:inherit}.ea-input-wrapper__prefix:empty,.ea-input-wrapper__suffix:empty{display:none}.ea-input-wrapper__icon{display:inline-flex;align-items:center;flex-shrink:0;font-size:1em;color:var(--color-text-secondary)}.ea-input-wrapper__clear{position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--ea-icon-button-size, 1.75em);height:var(--ea-icon-button-size, 1.75em);padding:0;border:none;border-radius:var(--radius-sm);background:none;color:var(--color-text-secondary);cursor:pointer;transition:var(--transition-colors)}.ea-input-wrapper__clear>*{font-size:1.25em}.ea-input-wrapper__clear:after{content:\"\";position:absolute;top:50%;left:50%;width:max(100%,var(--ea-icon-button-target, 24px));height:max(100%,var(--ea-icon-button-target, 24px));transform:translate(-50%,-50%)}.ea-input-wrapper__clear:hover{background-color:var(--color-state-hover);color:var(--color-text-primary)}.ea-input-wrapper__clear:focus-visible{outline:none;outline:var(--border-width-medium) solid var(--color-border-focus);outline-offset:2px}@media(forced-colors:active){.ea-input-wrapper__clear:focus-visible{outline:2px solid Highlight;outline-offset:2px}}.ea-input-wrapper__clear:disabled{cursor:default;opacity:.5}.ea-input-wrapper__password-toggle{position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--ea-icon-button-size, 1.75em);height:var(--ea-icon-button-size, 1.75em);padding:0;border:none;border-radius:var(--radius-sm);background:none;color:var(--color-text-secondary);cursor:pointer;transition:var(--transition-colors)}.ea-input-wrapper__password-toggle>*{font-size:1.25em}.ea-input-wrapper__password-toggle:after{content:\"\";position:absolute;top:50%;left:50%;width:max(100%,var(--ea-icon-button-target, 24px));height:max(100%,var(--ea-icon-button-target, 24px));transform:translate(-50%,-50%)}.ea-input-wrapper__password-toggle:hover{background-color:var(--color-state-hover);color:var(--color-text-primary)}.ea-input-wrapper__password-toggle:focus-visible{outline:none;outline:var(--border-width-medium) solid var(--color-border-focus);outline-offset:2px}@media(forced-colors:active){.ea-input-wrapper__password-toggle:focus-visible{outline:2px solid Highlight;outline-offset:2px}}.ea-input-wrapper__password-toggle:disabled{cursor:default;opacity:.5}.ea-input-wrapper__password-toggle{color:var(--ea-input-toggle-color, var(--color-text-secondary))}.ea-input-wrapper__password-toggle ea-icon-eye,.ea-input-wrapper__password-toggle ea-icon-eye-off{width:1em;height:1em;pointer-events:none}.ea-input{flex:1;width:100%;min-width:0;padding:.5em 0;background:transparent;border:none;outline:none;color:var(--color-text-primary);font-family:var(--font-family-sans);line-height:var(--line-height-normal)}.ea-input::placeholder{opacity:1;font-style:italic;color:var(--color-text-tertiary)}.ea-input:-webkit-autofill,.ea-input:autofill{-webkit-text-fill-color:var(--color-text-primary);-webkit-box-shadow:0 0 0 1000px var(--color-bg-base) inset;transition:background-color 5000s ease-in-out 0s}.ea-input:disabled{cursor:default}.ea-input::-webkit-calendar-picker-indicator,.ea-input::-webkit-credentials-auto-fill-button,.ea-input::-webkit-contacts-auto-fill-button,.ea-input::-webkit-strong-password-auto-fill-button,.ea-input::-webkit-caps-lock-indicator{display:none!important;visibility:hidden;pointer-events:none;width:0;height:0}.ea-input[type=number]::-webkit-inner-spin-button,.ea-input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.ea-input[type=number]{-moz-appearance:textfield;appearance:textfield}.ea-input[type=search]::-webkit-search-decoration,.ea-input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}\n"]
13088
+ template: "<div class=\"ea-input-field ea-input-field--{{ size() }}\">\n @if (label(); as labelText) {\n <ea-field-label\n [text]=\"labelText\"\n [icon]=\"labelIcon()\"\n [help]=\"labelHelp()\"\n [forId]=\"id()\"\n [required]=\"required()\"\n [optional]=\"optional()\" />\n }\n\n <div\n class=\"ea-input-wrapper\"\n [ngClass]=\"wrapperClasses()\"\n [style.max-width]=\"numberWidth()\">\n @if ((keepIcon() || !value()) && icon(); as leadingIcon) {\n <span\n class=\"ea-input-wrapper__icon\"\n aria-hidden=\"true\">\n <ng-container *ngComponentOutlet=\"leadingIcon\" />\n </span>\n }\n\n <span class=\"ea-input-wrapper__prefix\">\n <ng-content select=\"[slot=prefix]\" />\n </span>\n\n <span class=\"ea-input-wrapper__control\">\n <input\n #inputEl\n class=\"ea-input\"\n dir=\"auto\"\n [class.ea-input--typed-placeholder]=\"typedPlaceholderShown()\"\n [id]=\"id()\"\n [type]=\"effectiveType()\"\n [placeholder]=\"nativePlaceholder()\"\n [disabled]=\"isDisabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [value]=\"value()\"\n [attr.autocomplete]=\"autocomplete() ?? null\"\n [attr.spellcheck]=\"spellcheck() ?? null\"\n [attr.list]=\"list() ?? null\"\n [attr.min]=\"type() === 'number' ? (min() ?? null) : null\"\n [attr.max]=\"type() === 'number' ? (max() ?? null) : null\"\n [attr.step]=\"type() === 'number' ? (step() ?? null) : null\"\n [attr.maxlength]=\"maxLength() ?? null\"\n [attr.minlength]=\"minLength() ?? null\"\n [attr.role]=\"role() ?? null\"\n [attr.aria-label]=\"label() ? null : (ariaLabel() ?? null)\"\n [attr.aria-expanded]=\"ariaExpanded() ?? null\"\n [attr.aria-controls]=\"ariaControls() ?? null\"\n [attr.aria-activedescendant]=\"ariaActivedescendant() ?? null\"\n [attr.aria-autocomplete]=\"ariaAutocomplete() ?? null\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"\n showError() ? id() + '-error' : showHint() ? id() + '-hint' : null\n \"\n (input)=\"handleInput($event)\"\n (keydown)=\"handleKeydown($event)\"\n (wheel)=\"handleWheel($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\" />\n\n @if (typedPlaceholderShown()) {\n <ea-typed-placeholder\n class=\"ea-input-wrapper__typed-placeholder\"\n [text]=\"typed.text()\"\n [typing]=\"typed.typing()\" />\n }\n </span>\n\n <span class=\"ea-input-wrapper__suffix\">\n <ng-content select=\"[slot=suffix]\" />\n </span>\n\n @if (showClear()) {\n <button\n type=\"button\"\n class=\"ea-input-wrapper__clear\"\n [attr.aria-label]=\"i18n.messages().input.clear\"\n (mousedown)=\"onClearMousedown($event)\"\n (click)=\"clear()\">\n <ea-icon-x class=\"ea-input-wrapper__clear-icon\" />\n </button>\n }\n\n @if (type() === 'password' && showPasswordToggle()) {\n <button\n type=\"button\"\n class=\"ea-input-wrapper__password-toggle\"\n [attr.aria-label]=\"\n passwordVisible()\n ? i18n.messages().input.hidePassword\n : i18n.messages().input.showPassword\n \"\n [attr.aria-pressed]=\"passwordVisible()\"\n (click)=\"togglePasswordVisibility()\">\n @if (passwordVisible()) {\n <ea-icon-eye-off />\n } @else {\n <ea-icon-eye />\n }\n </button>\n }\n </div>\n\n <ea-field-messages\n [id]=\"id()\"\n [error]=\"errorText()\"\n [hint]=\"showHint() ? hint() : null\" />\n</div>\n",
13089
+ styles: [".ea-input-field{display:flex;flex-direction:column;gap:.375em;color:var(--color-text-secondary);--ea-field-label-size: .875em;--ea-field-messages-size: .8125em}.ea-input-field--2xs{font-size:var(--font-size-2xs)}.ea-input-field--xs{font-size:var(--font-size-xs)}.ea-input-field--sm{font-size:var(--font-size-sm)}.ea-input-field--md{font-size:var(--font-size-md)}.ea-input-field--lg{font-size:var(--font-size-lg)}.ea-input-field--xl{font-size:var(--font-size-xl)}.ea-input-wrapper{display:flex;align-items:center;gap:.5em;min-height:2.5em;padding:0 .75em;background-color:var(--color-bg-base);border:var(--border-width-thin) solid var(--color-border-default);border-radius:var(--radius-md);color:var(--color-text-secondary);transition:var(--transition-colors),var(--transition-shadow);overflow:hidden}.ea-input-wrapper--focused{border-color:var(--ea-input-border-color-focus, var(--color-border-default));outline:none;box-shadow:var(--ea-input-shadow-focus, var(--shadow-focus-ring))}@media(forced-colors:active){.ea-input-wrapper--focused{outline:2px solid Highlight;outline-offset:2px}}.ea-input-wrapper--error{border-color:var(--color-error-default)}.ea-input-wrapper--error.ea-input-wrapper--focused{outline:none;box-shadow:var(--shadow-focus-ring-error)}@media(forced-colors:active){.ea-input-wrapper--error.ea-input-wrapper--focused{outline:2px solid Highlight;outline-offset:2px}}.ea-input-wrapper--disabled{background-color:var(--color-bg-muted);border-color:var(--color-border-default);cursor:default;opacity:.6}.ea-input-wrapper--disabled .ea-input{cursor:default}.ea-input-wrapper--readonly{background-color:var(--color-bg-subtle)}.ea-input-wrapper--readonly:has(:focus-visible){border-color:var(--color-border-focus);outline:none;box-shadow:none}@media(forced-colors:active){.ea-input-wrapper--readonly:has(:focus-visible){outline:2px solid Highlight;outline-offset:2px}}.ea-input-wrapper--readonly button{cursor:default}.ea-input-wrapper--readonly button:hover{background-color:transparent;color:var(--color-text-secondary)}.ea-input-wrapper__prefix,.ea-input-wrapper__suffix{display:flex;align-items:center;flex-shrink:0;color:inherit}.ea-input-wrapper__prefix:empty,.ea-input-wrapper__suffix:empty{display:none}.ea-input-wrapper__control{position:relative;display:flex;flex:1;min-width:0}.ea-input-wrapper__typed-placeholder{position:absolute;inset:0;padding:.5em 0;white-space:pre}.ea-input-wrapper__icon{display:inline-flex;align-items:center;flex-shrink:0;font-size:1em;color:var(--color-text-secondary)}.ea-input-wrapper__clear{position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--ea-icon-button-size, 1.75em);height:var(--ea-icon-button-size, 1.75em);padding:0;border:none;border-radius:var(--radius-sm);background:none;color:var(--color-text-secondary);cursor:pointer;transition:var(--transition-colors)}.ea-input-wrapper__clear>*{font-size:1.25em}.ea-input-wrapper__clear:after{content:\"\";position:absolute;top:50%;left:50%;width:max(100%,var(--ea-icon-button-target, 24px));height:max(100%,var(--ea-icon-button-target, 24px));transform:translate(-50%,-50%)}.ea-input-wrapper__clear:hover{background-color:var(--color-state-hover);color:var(--color-text-primary)}.ea-input-wrapper__clear:focus-visible{outline:none;outline:var(--border-width-medium) solid var(--color-border-focus);outline-offset:2px}@media(forced-colors:active){.ea-input-wrapper__clear:focus-visible{outline:2px solid Highlight;outline-offset:2px}}.ea-input-wrapper__clear:disabled{cursor:default;opacity:.5}.ea-input-wrapper__password-toggle{position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--ea-icon-button-size, 1.75em);height:var(--ea-icon-button-size, 1.75em);padding:0;border:none;border-radius:var(--radius-sm);background:none;color:var(--color-text-secondary);cursor:pointer;transition:var(--transition-colors)}.ea-input-wrapper__password-toggle>*{font-size:1.25em}.ea-input-wrapper__password-toggle:after{content:\"\";position:absolute;top:50%;left:50%;width:max(100%,var(--ea-icon-button-target, 24px));height:max(100%,var(--ea-icon-button-target, 24px));transform:translate(-50%,-50%)}.ea-input-wrapper__password-toggle:hover{background-color:var(--color-state-hover);color:var(--color-text-primary)}.ea-input-wrapper__password-toggle:focus-visible{outline:none;outline:var(--border-width-medium) solid var(--color-border-focus);outline-offset:2px}@media(forced-colors:active){.ea-input-wrapper__password-toggle:focus-visible{outline:2px solid Highlight;outline-offset:2px}}.ea-input-wrapper__password-toggle:disabled{cursor:default;opacity:.5}.ea-input-wrapper__password-toggle{color:var(--ea-input-toggle-color, var(--color-text-secondary))}.ea-input-wrapper__password-toggle ea-icon-eye,.ea-input-wrapper__password-toggle ea-icon-eye-off{width:1em;height:1em;pointer-events:none}.ea-input{flex:1;width:100%;min-width:0;padding:.5em 0;background:transparent;border:none;outline:none;color:var(--color-text-primary);font-family:var(--font-family-sans);line-height:var(--line-height-normal)}.ea-input::placeholder{opacity:1;font-style:italic;color:var(--color-text-tertiary)}.ea-input--typed-placeholder::placeholder{color:transparent}.ea-input:-webkit-autofill,.ea-input:autofill{-webkit-text-fill-color:var(--color-text-primary);-webkit-box-shadow:0 0 0 1000px var(--color-bg-base) inset;transition:background-color 5000s ease-in-out 0s}.ea-input:disabled{cursor:default}.ea-input::-webkit-calendar-picker-indicator,.ea-input::-webkit-credentials-auto-fill-button,.ea-input::-webkit-contacts-auto-fill-button,.ea-input::-webkit-strong-password-auto-fill-button,.ea-input::-webkit-caps-lock-indicator{display:none!important;visibility:hidden;pointer-events:none;width:0;height:0}.ea-input[type=number]::-webkit-inner-spin-button,.ea-input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.ea-input[type=number]{-moz-appearance:textfield;appearance:textfield}.ea-input[type=search]::-webkit-search-decoration,.ea-input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}\n"]
12802
13090
  }]
12803
13091
  }],
12804
13092
  ctorParameters: () => [],
@@ -12903,6 +13191,14 @@ i0.ɵɵngDeclareClassMetadata({
12903
13191
  required: false
12904
13192
  }]
12905
13193
  }],
13194
+ typedPlaceholder: [{
13195
+ type: i0.Input,
13196
+ args: [{
13197
+ isSignal: true,
13198
+ alias: "typedPlaceholder",
13199
+ required: false
13200
+ }]
13201
+ }],
12906
13202
  icon: [{
12907
13203
  type: i0.Input,
12908
13204
  args: [{
@@ -12951,6 +13247,14 @@ i0.ɵɵngDeclareClassMetadata({
12951
13247
  required: false
12952
13248
  }]
12953
13249
  }],
13250
+ showErrorsOn: [{
13251
+ type: i0.Input,
13252
+ args: [{
13253
+ isSignal: true,
13254
+ alias: "showErrorsOn",
13255
+ required: false
13256
+ }]
13257
+ }],
12954
13258
  disabled: [{
12955
13259
  type: i0.Input,
12956
13260
  args: [{
@@ -13383,12 +13687,14 @@ var CommandPaletteComponent = class CommandPaletteComponent {
13383
13687
  "aria-autocomplete",
13384
13688
  "type",
13385
13689
  "placeholder",
13690
+ "typedPlaceholder",
13386
13691
  "icon",
13387
13692
  "keepIcon",
13388
13693
  "size",
13389
13694
  "hint",
13390
13695
  "errorMsg",
13391
13696
  "errorMessages",
13697
+ "showErrorsOn",
13392
13698
  "disabled",
13393
13699
  "readonly",
13394
13700
  "required",
@@ -13616,6 +13922,7 @@ var ColorPickerComponent = class ColorPickerComponent {
13616
13922
  hint = input(void 0, ...ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []);
13617
13923
  errorMsg = input(void 0, ...ngDevMode ? [{ debugName: "errorMsg" }] : /* istanbul ignore next */ []);
13618
13924
  errorMessages = input(void 0, ...ngDevMode ? [{ debugName: "errorMessages" }] : /* istanbul ignore next */ []);
13925
+ showErrorsOn = input(void 0, ...ngDevMode ? [{ debugName: "showErrorsOn" }] : /* istanbul ignore next */ []);
13619
13926
  showAlpha = input(true, ...ngDevMode ? [{ debugName: "showAlpha" }] : /* istanbul ignore next */ []);
13620
13927
  clearable = input(true, ...ngDevMode ? [{ debugName: "clearable" }] : /* istanbul ignore next */ []);
13621
13928
  compact = input(false, ...ngDevMode ? [{ debugName: "compact" }] : /* istanbul ignore next */ []);
@@ -13650,7 +13957,8 @@ var ColorPickerComponent = class ColorPickerComponent {
13650
13957
  isDisabled = computed(() => this.disabled() || this._formDisabled(), ...ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []);
13651
13958
  errorState = injectControlErrorState({
13652
13959
  errorMsg: this.errorMsg,
13653
- errorMessages: this.errorMessages
13960
+ errorMessages: this.errorMessages,
13961
+ showErrorsOn: this.showErrorsOn
13654
13962
  });
13655
13963
  errorText = this.errorState.error;
13656
13964
  hasError = this.errorState.hasError;
@@ -14137,6 +14445,13 @@ var ColorPickerComponent = class ColorPickerComponent {
14137
14445
  isRequired: false,
14138
14446
  transformFunction: null
14139
14447
  },
14448
+ showErrorsOn: {
14449
+ classPropertyName: "showErrorsOn",
14450
+ publicName: "showErrorsOn",
14451
+ isSignal: true,
14452
+ isRequired: false,
14453
+ transformFunction: null
14454
+ },
14140
14455
  showAlpha: {
14141
14456
  classPropertyName: "showAlpha",
14142
14457
  publicName: "showAlpha",
@@ -14440,6 +14755,14 @@ i0.ɵɵngDeclareClassMetadata({
14440
14755
  required: false
14441
14756
  }]
14442
14757
  }],
14758
+ showErrorsOn: [{
14759
+ type: i0.Input,
14760
+ args: [{
14761
+ isSignal: true,
14762
+ alias: "showErrorsOn",
14763
+ required: false
14764
+ }]
14765
+ }],
14443
14766
  showAlpha: [{
14444
14767
  type: i0.Input,
14445
14768
  args: [{
@@ -16093,6 +16416,7 @@ var CodeInputComponent = class CodeInputComponent {
16093
16416
  hint = input(void 0, ...ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []);
16094
16417
  errorMsg = input(void 0, ...ngDevMode ? [{ debugName: "errorMsg" }] : /* istanbul ignore next */ []);
16095
16418
  errorMessages = input(void 0, ...ngDevMode ? [{ debugName: "errorMessages" }] : /* istanbul ignore next */ []);
16419
+ showErrorsOn = input(void 0, ...ngDevMode ? [{ debugName: "showErrorsOn" }] : /* istanbul ignore next */ []);
16096
16420
  disabled = input(false, ...ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []);
16097
16421
  readonly = input(false, ...ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []);
16098
16422
  required = input(false, ...ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []);
@@ -16107,7 +16431,8 @@ var CodeInputComponent = class CodeInputComponent {
16107
16431
  isDisabled = computed(() => this.disabled() || this._formDisabled(), ...ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []);
16108
16432
  errorState = injectControlErrorState({
16109
16433
  errorMsg: this.errorMsg,
16110
- errorMessages: this.errorMessages
16434
+ errorMessages: this.errorMessages,
16435
+ showErrorsOn: this.showErrorsOn
16111
16436
  });
16112
16437
  errorText = this.errorState.error;
16113
16438
  hasError = this.errorState.hasError;
@@ -16293,6 +16618,13 @@ var CodeInputComponent = class CodeInputComponent {
16293
16618
  isRequired: false,
16294
16619
  transformFunction: null
16295
16620
  },
16621
+ showErrorsOn: {
16622
+ classPropertyName: "showErrorsOn",
16623
+ publicName: "showErrorsOn",
16624
+ isSignal: true,
16625
+ isRequired: false,
16626
+ transformFunction: null
16627
+ },
16296
16628
  disabled: {
16297
16629
  classPropertyName: "disabled",
16298
16630
  publicName: "disabled",
@@ -16495,6 +16827,14 @@ i0.ɵɵngDeclareClassMetadata({
16495
16827
  required: false
16496
16828
  }]
16497
16829
  }],
16830
+ showErrorsOn: [{
16831
+ type: i0.Input,
16832
+ args: [{
16833
+ isSignal: true,
16834
+ alias: "showErrorsOn",
16835
+ required: false
16836
+ }]
16837
+ }],
16498
16838
  disabled: [{
16499
16839
  type: i0.Input,
16500
16840
  args: [{
@@ -16878,6 +17218,7 @@ var DatePickerComponent = class DatePickerComponent {
16878
17218
  hint = input(void 0, ...ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []);
16879
17219
  errorMsg = input(void 0, ...ngDevMode ? [{ debugName: "errorMsg" }] : /* istanbul ignore next */ []);
16880
17220
  errorMessages = input(void 0, ...ngDevMode ? [{ debugName: "errorMessages" }] : /* istanbul ignore next */ []);
17221
+ showErrorsOn = input(void 0, ...ngDevMode ? [{ debugName: "showErrorsOn" }] : /* istanbul ignore next */ []);
16881
17222
  minDate = input(null, ...ngDevMode ? [{ debugName: "minDate" }] : /* istanbul ignore next */ []);
16882
17223
  maxDate = input(null, ...ngDevMode ? [{ debugName: "maxDate" }] : /* istanbul ignore next */ []);
16883
17224
  disabledWeekdays = input([], ...ngDevMode ? [{ debugName: "disabledWeekdays" }] : /* istanbul ignore next */ []);
@@ -16900,7 +17241,8 @@ var DatePickerComponent = class DatePickerComponent {
16900
17241
  isDisabled = computed(() => this.disabled() || this._formDisabled(), ...ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []);
16901
17242
  errorState = injectControlErrorState({
16902
17243
  errorMsg: this.errorMsg,
16903
- errorMessages: this.errorMessages
17244
+ errorMessages: this.errorMessages,
17245
+ showErrorsOn: this.showErrorsOn
16904
17246
  });
16905
17247
  errorText = this.errorState.error;
16906
17248
  hasError = this.errorState.hasError;
@@ -17353,6 +17695,13 @@ var DatePickerComponent = class DatePickerComponent {
17353
17695
  isRequired: false,
17354
17696
  transformFunction: null
17355
17697
  },
17698
+ showErrorsOn: {
17699
+ classPropertyName: "showErrorsOn",
17700
+ publicName: "showErrorsOn",
17701
+ isSignal: true,
17702
+ isRequired: false,
17703
+ transformFunction: null
17704
+ },
17356
17705
  minDate: {
17357
17706
  classPropertyName: "minDate",
17358
17707
  publicName: "minDate",
@@ -17667,6 +18016,14 @@ i0.ɵɵngDeclareClassMetadata({
17667
18016
  required: false
17668
18017
  }]
17669
18018
  }],
18019
+ showErrorsOn: [{
18020
+ type: i0.Input,
18021
+ args: [{
18022
+ isSignal: true,
18023
+ alias: "showErrorsOn",
18024
+ required: false
18025
+ }]
18026
+ }],
17670
18027
  minDate: [{
17671
18028
  type: i0.Input,
17672
18029
  args: [{
@@ -18847,6 +19204,7 @@ var DropdownComponent = class DropdownComponent {
18847
19204
  hint = input(void 0, ...ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []);
18848
19205
  errorMsg = input(void 0, ...ngDevMode ? [{ debugName: "errorMsg" }] : /* istanbul ignore next */ []);
18849
19206
  errorMessages = input(void 0, ...ngDevMode ? [{ debugName: "errorMessages" }] : /* istanbul ignore next */ []);
19207
+ showErrorsOn = input(void 0, ...ngDevMode ? [{ debugName: "showErrorsOn" }] : /* istanbul ignore next */ []);
18850
19208
  id = input(uniqueId("ea-dropdown"), ...ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []);
18851
19209
  value = model("", ...ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []);
18852
19210
  changed = output();
@@ -18867,7 +19225,8 @@ var DropdownComponent = class DropdownComponent {
18867
19225
  isDisabled = computed(() => this.disabled() || this._formDisabled(), ...ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []);
18868
19226
  errorState = injectControlErrorState({
18869
19227
  errorMsg: this.errorMsg,
18870
- errorMessages: this.errorMessages
19228
+ errorMessages: this.errorMessages,
19229
+ showErrorsOn: this.showErrorsOn
18871
19230
  });
18872
19231
  errorText = this.errorState.error;
18873
19232
  hasError = this.errorState.hasError;
@@ -19188,6 +19547,13 @@ var DropdownComponent = class DropdownComponent {
19188
19547
  isRequired: false,
19189
19548
  transformFunction: null
19190
19549
  },
19550
+ showErrorsOn: {
19551
+ classPropertyName: "showErrorsOn",
19552
+ publicName: "showErrorsOn",
19553
+ isSignal: true,
19554
+ isRequired: false,
19555
+ transformFunction: null
19556
+ },
19191
19557
  id: {
19192
19558
  classPropertyName: "id",
19193
19559
  publicName: "id",
@@ -19476,6 +19842,14 @@ i0.ɵɵngDeclareClassMetadata({
19476
19842
  required: false
19477
19843
  }]
19478
19844
  }],
19845
+ showErrorsOn: [{
19846
+ type: i0.Input,
19847
+ args: [{
19848
+ isSignal: true,
19849
+ alias: "showErrorsOn",
19850
+ required: false
19851
+ }]
19852
+ }],
19479
19853
  id: [{
19480
19854
  type: i0.Input,
19481
19855
  args: [{
@@ -20257,6 +20631,7 @@ var FormFieldComponent = class FormFieldComponent {
20257
20631
  hint = input(void 0, ...ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []);
20258
20632
  errorMsg = input(void 0, ...ngDevMode ? [{ debugName: "errorMsg" }] : /* istanbul ignore next */ []);
20259
20633
  errorMessages = input(void 0, ...ngDevMode ? [{ debugName: "errorMessages" }] : /* istanbul ignore next */ []);
20634
+ showErrorsOn = input(void 0, ...ngDevMode ? [{ debugName: "showErrorsOn" }] : /* istanbul ignore next */ []);
20260
20635
  required = input(false, ...ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []);
20261
20636
  size = input("md", ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
20262
20637
  id = input(uniqueId("ea-form-field"), ...ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []);
@@ -20268,7 +20643,8 @@ var FormFieldComponent = class FormFieldComponent {
20268
20643
  boundControl = computed(() => this.rendered() ? this.ngControl()?.control ?? null : null, ...ngDevMode ? [{ debugName: "boundControl" }] : /* istanbul ignore next */ []);
20269
20644
  errorState = controlErrorStateFrom(this.boundControl, {
20270
20645
  errorMsg: this.errorMsg,
20271
- errorMessages: this.errorMessages
20646
+ errorMessages: this.errorMessages,
20647
+ showErrorsOn: this.showErrorsOn
20272
20648
  });
20273
20649
  errorText = this.errorState.error;
20274
20650
  hasError = this.errorState.hasError;
@@ -20362,6 +20738,13 @@ var FormFieldComponent = class FormFieldComponent {
20362
20738
  isRequired: false,
20363
20739
  transformFunction: null
20364
20740
  },
20741
+ showErrorsOn: {
20742
+ classPropertyName: "showErrorsOn",
20743
+ publicName: "showErrorsOn",
20744
+ isSignal: true,
20745
+ isRequired: false,
20746
+ transformFunction: null
20747
+ },
20365
20748
  required: {
20366
20749
  classPropertyName: "required",
20367
20750
  publicName: "required",
@@ -20495,6 +20878,14 @@ i0.ɵɵngDeclareClassMetadata({
20495
20878
  required: false
20496
20879
  }]
20497
20880
  }],
20881
+ showErrorsOn: [{
20882
+ type: i0.Input,
20883
+ args: [{
20884
+ isSignal: true,
20885
+ alias: "showErrorsOn",
20886
+ required: false
20887
+ }]
20888
+ }],
20498
20889
  required: [{
20499
20890
  type: i0.Input,
20500
20891
  args: [{
@@ -21264,6 +21655,7 @@ var FileUploaderComponent = class FileUploaderComponent {
21264
21655
  hint = input(void 0, ...ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []);
21265
21656
  errorMsg = input(void 0, ...ngDevMode ? [{ debugName: "errorMsg" }] : /* istanbul ignore next */ []);
21266
21657
  errorMessages = input(void 0, ...ngDevMode ? [{ debugName: "errorMessages" }] : /* istanbul ignore next */ []);
21658
+ showErrorsOn = input(void 0, ...ngDevMode ? [{ debugName: "showErrorsOn" }] : /* istanbul ignore next */ []);
21267
21659
  size = input("md", ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
21268
21660
  variant = input("dropzone", ...ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []);
21269
21661
  buttonLabel = input(void 0, ...ngDevMode ? [{ debugName: "buttonLabel" }] : /* istanbul ignore next */ []);
@@ -21294,7 +21686,8 @@ var FileUploaderComponent = class FileUploaderComponent {
21294
21686
  isDisabled = computed(() => this.disabled() || this._formDisabled(), ...ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []);
21295
21687
  errorState = injectControlErrorState({
21296
21688
  errorMsg: this.errorMsg,
21297
- errorMessages: this.errorMessages
21689
+ errorMessages: this.errorMessages,
21690
+ showErrorsOn: this.showErrorsOn
21298
21691
  });
21299
21692
  errorText = this.errorState.error;
21300
21693
  hasError = this.errorState.hasError;
@@ -21545,6 +21938,13 @@ var FileUploaderComponent = class FileUploaderComponent {
21545
21938
  isRequired: false,
21546
21939
  transformFunction: null
21547
21940
  },
21941
+ showErrorsOn: {
21942
+ classPropertyName: "showErrorsOn",
21943
+ publicName: "showErrorsOn",
21944
+ isSignal: true,
21945
+ isRequired: false,
21946
+ transformFunction: null
21947
+ },
21548
21948
  size: {
21549
21949
  classPropertyName: "size",
21550
21950
  publicName: "size",
@@ -21718,7 +22118,9 @@ var FileUploaderComponent = class FileUploaderComponent {
21718
22118
  "aria-label",
21719
22119
  "aria-current",
21720
22120
  "aria-labelledby",
21721
- "aria-describedby"
22121
+ "aria-describedby",
22122
+ "aria-expanded",
22123
+ "aria-controls"
21722
22124
  ],
21723
22125
  outputs: ["clicked"]
21724
22126
  },
@@ -21893,6 +22295,14 @@ i0.ɵɵngDeclareClassMetadata({
21893
22295
  required: false
21894
22296
  }]
21895
22297
  }],
22298
+ showErrorsOn: [{
22299
+ type: i0.Input,
22300
+ args: [{
22301
+ isSignal: true,
22302
+ alias: "showErrorsOn",
22303
+ required: false
22304
+ }]
22305
+ }],
21896
22306
  size: [{
21897
22307
  type: i0.Input,
21898
22308
  args: [{
@@ -23814,6 +24224,7 @@ var MultiSelectComponent = class MultiSelectComponent {
23814
24224
  hint = input(void 0, ...ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []);
23815
24225
  errorMsg = input(void 0, ...ngDevMode ? [{ debugName: "errorMsg" }] : /* istanbul ignore next */ []);
23816
24226
  errorMessages = input(void 0, ...ngDevMode ? [{ debugName: "errorMessages" }] : /* istanbul ignore next */ []);
24227
+ showErrorsOn = input(void 0, ...ngDevMode ? [{ debugName: "showErrorsOn" }] : /* istanbul ignore next */ []);
23817
24228
  searchable = input(true, ...ngDevMode ? [{ debugName: "searchable" }] : /* istanbul ignore next */ []);
23818
24229
  selectAll = input(true, ...ngDevMode ? [{ debugName: "selectAll" }] : /* istanbul ignore next */ []);
23819
24230
  allowCreate = input(false, ...ngDevMode ? [{ debugName: "allowCreate" }] : /* istanbul ignore next */ []);
@@ -23834,7 +24245,8 @@ var MultiSelectComponent = class MultiSelectComponent {
23834
24245
  isDisabled = computed(() => this.disabled() || this._formDisabled(), ...ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []);
23835
24246
  errorState = injectControlErrorState({
23836
24247
  errorMsg: this.errorMsg,
23837
- errorMessages: this.errorMessages
24248
+ errorMessages: this.errorMessages,
24249
+ showErrorsOn: this.showErrorsOn
23838
24250
  });
23839
24251
  errorText = this.errorState.error;
23840
24252
  hasError = this.errorState.hasError;
@@ -24239,6 +24651,13 @@ var MultiSelectComponent = class MultiSelectComponent {
24239
24651
  isRequired: false,
24240
24652
  transformFunction: null
24241
24653
  },
24654
+ showErrorsOn: {
24655
+ classPropertyName: "showErrorsOn",
24656
+ publicName: "showErrorsOn",
24657
+ isSignal: true,
24658
+ isRequired: false,
24659
+ transformFunction: null
24660
+ },
24242
24661
  searchable: {
24243
24662
  classPropertyName: "searchable",
24244
24663
  publicName: "searchable",
@@ -24371,6 +24790,7 @@ var MultiSelectComponent = class MultiSelectComponent {
24371
24790
  "hint",
24372
24791
  "errorMsg",
24373
24792
  "errorMessages",
24793
+ "showErrorsOn",
24374
24794
  "size",
24375
24795
  "truncate",
24376
24796
  "disabled",
@@ -24684,6 +25104,14 @@ i0.ɵɵngDeclareClassMetadata({
24684
25104
  required: false
24685
25105
  }]
24686
25106
  }],
25107
+ showErrorsOn: [{
25108
+ type: i0.Input,
25109
+ args: [{
25110
+ isSignal: true,
25111
+ alias: "showErrorsOn",
25112
+ required: false
25113
+ }]
25114
+ }],
24687
25115
  searchable: [{
24688
25116
  type: i0.Input,
24689
25117
  args: [{
@@ -24781,6 +25209,7 @@ var NumberInputComponent = class NumberInputComponent {
24781
25209
  hint = input(void 0, ...ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []);
24782
25210
  errorMsg = input(void 0, ...ngDevMode ? [{ debugName: "errorMsg" }] : /* istanbul ignore next */ []);
24783
25211
  errorMessages = input(void 0, ...ngDevMode ? [{ debugName: "errorMessages" }] : /* istanbul ignore next */ []);
25212
+ showErrorsOn = input(void 0, ...ngDevMode ? [{ debugName: "showErrorsOn" }] : /* istanbul ignore next */ []);
24784
25213
  disabled = input(false, ...ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []);
24785
25214
  readonly = input(false, ...ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []);
24786
25215
  required = input(false, ...ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []);
@@ -24811,7 +25240,8 @@ var NumberInputComponent = class NumberInputComponent {
24811
25240
  }, ...ngDevMode ? [{ debugName: "effectiveMin" }] : /* istanbul ignore next */ []);
24812
25241
  errorState = injectControlErrorState({
24813
25242
  errorMsg: this.errorMsg,
24814
- errorMessages: this.errorMessages
25243
+ errorMessages: this.errorMessages,
25244
+ showErrorsOn: this.showErrorsOn
24815
25245
  });
24816
25246
  errorText = this.errorState.error;
24817
25247
  hasError = this.errorState.hasError;
@@ -24974,6 +25404,13 @@ var NumberInputComponent = class NumberInputComponent {
24974
25404
  isRequired: false,
24975
25405
  transformFunction: null
24976
25406
  },
25407
+ showErrorsOn: {
25408
+ classPropertyName: "showErrorsOn",
25409
+ publicName: "showErrorsOn",
25410
+ isSignal: true,
25411
+ isRequired: false,
25412
+ transformFunction: null
25413
+ },
24977
25414
  disabled: {
24978
25415
  classPropertyName: "disabled",
24979
25416
  publicName: "disabled",
@@ -25210,6 +25647,14 @@ i0.ɵɵngDeclareClassMetadata({
25210
25647
  required: false
25211
25648
  }]
25212
25649
  }],
25650
+ showErrorsOn: [{
25651
+ type: i0.Input,
25652
+ args: [{
25653
+ isSignal: true,
25654
+ alias: "showErrorsOn",
25655
+ required: false
25656
+ }]
25657
+ }],
25213
25658
  disabled: [{
25214
25659
  type: i0.Input,
25215
25660
  args: [{
@@ -25526,7 +25971,9 @@ var PaginatorComponent = class PaginatorComponent {
25526
25971
  "aria-label",
25527
25972
  "aria-current",
25528
25973
  "aria-labelledby",
25529
- "aria-describedby"
25974
+ "aria-describedby",
25975
+ "aria-expanded",
25976
+ "aria-controls"
25530
25977
  ],
25531
25978
  outputs: ["clicked"]
25532
25979
  },
@@ -26382,6 +26829,7 @@ var RadioGroupComponent = class RadioGroupComponent {
26382
26829
  hint = input(void 0, ...ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []);
26383
26830
  errorMsg = input(void 0, ...ngDevMode ? [{ debugName: "errorMsg" }] : /* istanbul ignore next */ []);
26384
26831
  errorMessages = input(void 0, ...ngDevMode ? [{ debugName: "errorMessages" }] : /* istanbul ignore next */ []);
26832
+ showErrorsOn = input(void 0, ...ngDevMode ? [{ debugName: "showErrorsOn" }] : /* istanbul ignore next */ []);
26385
26833
  ariaLabel = input(void 0, {
26386
26834
  ...ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {},
26387
26835
  alias: "aria-label"
@@ -26396,7 +26844,8 @@ var RadioGroupComponent = class RadioGroupComponent {
26396
26844
  isDisabled = computed(() => this.disabled() || this._formDisabled(), ...ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []);
26397
26845
  errorState = injectControlErrorState({
26398
26846
  errorMsg: this.errorMsg,
26399
- errorMessages: this.errorMessages
26847
+ errorMessages: this.errorMessages,
26848
+ showErrorsOn: this.showErrorsOn
26400
26849
  });
26401
26850
  errorText = this.errorState.error;
26402
26851
  hasError = this.errorState.hasError;
@@ -26529,6 +26978,13 @@ var RadioGroupComponent = class RadioGroupComponent {
26529
26978
  isRequired: false,
26530
26979
  transformFunction: null
26531
26980
  },
26981
+ showErrorsOn: {
26982
+ classPropertyName: "showErrorsOn",
26983
+ publicName: "showErrorsOn",
26984
+ isSignal: true,
26985
+ isRequired: false,
26986
+ transformFunction: null
26987
+ },
26532
26988
  ariaLabel: {
26533
26989
  classPropertyName: "ariaLabel",
26534
26990
  publicName: "aria-label",
@@ -26716,6 +27172,14 @@ i0.ɵɵngDeclareClassMetadata({
26716
27172
  required: false
26717
27173
  }]
26718
27174
  }],
27175
+ showErrorsOn: [{
27176
+ type: i0.Input,
27177
+ args: [{
27178
+ isSignal: true,
27179
+ alias: "showErrorsOn",
27180
+ required: false
27181
+ }]
27182
+ }],
26719
27183
  ariaLabel: [{
26720
27184
  type: i0.Input,
26721
27185
  args: [{
@@ -26885,6 +27349,7 @@ var RangeSliderComponent = class RangeSliderComponent {
26885
27349
  hint = input(void 0, ...ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []);
26886
27350
  errorMsg = input(void 0, ...ngDevMode ? [{ debugName: "errorMsg" }] : /* istanbul ignore next */ []);
26887
27351
  errorMessages = input(void 0, ...ngDevMode ? [{ debugName: "errorMessages" }] : /* istanbul ignore next */ []);
27352
+ showErrorsOn = input(void 0, ...ngDevMode ? [{ debugName: "showErrorsOn" }] : /* istanbul ignore next */ []);
26888
27353
  min = input(0, ...ngDevMode ? [{ debugName: "min" }] : /* istanbul ignore next */ []);
26889
27354
  max = input(100, ...ngDevMode ? [{ debugName: "max" }] : /* istanbul ignore next */ []);
26890
27355
  step = input(1, ...ngDevMode ? [{ debugName: "step" }] : /* istanbul ignore next */ []);
@@ -26939,7 +27404,8 @@ var RangeSliderComponent = class RangeSliderComponent {
26939
27404
  }
26940
27405
  errorState = injectControlErrorState({
26941
27406
  errorMsg: this.errorMsg,
26942
- errorMessages: this.errorMessages
27407
+ errorMessages: this.errorMessages,
27408
+ showErrorsOn: this.showErrorsOn
26943
27409
  });
26944
27410
  errorText = this.errorState.error;
26945
27411
  hasError = this.errorState.hasError;
@@ -27126,6 +27592,13 @@ var RangeSliderComponent = class RangeSliderComponent {
27126
27592
  isRequired: false,
27127
27593
  transformFunction: null
27128
27594
  },
27595
+ showErrorsOn: {
27596
+ classPropertyName: "showErrorsOn",
27597
+ publicName: "showErrorsOn",
27598
+ isSignal: true,
27599
+ isRequired: false,
27600
+ transformFunction: null
27601
+ },
27129
27602
  min: {
27130
27603
  classPropertyName: "min",
27131
27604
  publicName: "min",
@@ -27373,6 +27846,14 @@ i0.ɵɵngDeclareClassMetadata({
27373
27846
  required: false
27374
27847
  }]
27375
27848
  }],
27849
+ showErrorsOn: [{
27850
+ type: i0.Input,
27851
+ args: [{
27852
+ isSignal: true,
27853
+ alias: "showErrorsOn",
27854
+ required: false
27855
+ }]
27856
+ }],
27376
27857
  min: [{
27377
27858
  type: i0.Input,
27378
27859
  args: [{
@@ -27691,6 +28172,7 @@ var RatingComponent = class RatingComponent {
27691
28172
  hint = input(void 0, ...ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []);
27692
28173
  errorMsg = input(void 0, ...ngDevMode ? [{ debugName: "errorMsg" }] : /* istanbul ignore next */ []);
27693
28174
  errorMessages = input(void 0, ...ngDevMode ? [{ debugName: "errorMessages" }] : /* istanbul ignore next */ []);
28175
+ showErrorsOn = input(void 0, ...ngDevMode ? [{ debugName: "showErrorsOn" }] : /* istanbul ignore next */ []);
27694
28176
  size = input("md", ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
27695
28177
  min = input(0, ...ngDevMode ? [{ debugName: "min" }] : /* istanbul ignore next */ []);
27696
28178
  max = input(5, ...ngDevMode ? [{ debugName: "max" }] : /* istanbul ignore next */ []);
@@ -27713,7 +28195,8 @@ var RatingComponent = class RatingComponent {
27713
28195
  isInteractive = computed(() => !this.isDisabled() && !this.readonly(), ...ngDevMode ? [{ debugName: "isInteractive" }] : /* istanbul ignore next */ []);
27714
28196
  errorState = injectControlErrorState({
27715
28197
  errorMsg: this.errorMsg,
27716
- errorMessages: this.errorMessages
28198
+ errorMessages: this.errorMessages,
28199
+ showErrorsOn: this.showErrorsOn
27717
28200
  });
27718
28201
  errorText = this.errorState.error;
27719
28202
  hasError = this.errorState.hasError;
@@ -27917,6 +28400,13 @@ var RatingComponent = class RatingComponent {
27917
28400
  isRequired: false,
27918
28401
  transformFunction: null
27919
28402
  },
28403
+ showErrorsOn: {
28404
+ classPropertyName: "showErrorsOn",
28405
+ publicName: "showErrorsOn",
28406
+ isSignal: true,
28407
+ isRequired: false,
28408
+ transformFunction: null
28409
+ },
27920
28410
  size: {
27921
28411
  classPropertyName: "size",
27922
28412
  publicName: "size",
@@ -28167,6 +28657,14 @@ i0.ɵɵngDeclareClassMetadata({
28167
28657
  required: false
28168
28658
  }]
28169
28659
  }],
28660
+ showErrorsOn: [{
28661
+ type: i0.Input,
28662
+ args: [{
28663
+ isSignal: true,
28664
+ alias: "showErrorsOn",
28665
+ required: false
28666
+ }]
28667
+ }],
28170
28668
  size: [{
28171
28669
  type: i0.Input,
28172
28670
  args: [{
@@ -28282,6 +28780,7 @@ var SegmentedComponent = class SegmentedComponent {
28282
28780
  hint = input(void 0, ...ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []);
28283
28781
  errorMsg = input(void 0, ...ngDevMode ? [{ debugName: "errorMsg" }] : /* istanbul ignore next */ []);
28284
28782
  errorMessages = input(void 0, ...ngDevMode ? [{ debugName: "errorMessages" }] : /* istanbul ignore next */ []);
28783
+ showErrorsOn = input(void 0, ...ngDevMode ? [{ debugName: "showErrorsOn" }] : /* istanbul ignore next */ []);
28285
28784
  size = input("md", ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
28286
28785
  disabled = input(false, ...ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []);
28287
28786
  required = input(false, ...ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []);
@@ -28303,7 +28802,8 @@ var SegmentedComponent = class SegmentedComponent {
28303
28802
  isDisabled = computed(() => this.disabled() || this._formDisabled(), ...ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []);
28304
28803
  errorState = injectControlErrorState({
28305
28804
  errorMsg: this.errorMsg,
28306
- errorMessages: this.errorMessages
28805
+ errorMessages: this.errorMessages,
28806
+ showErrorsOn: this.showErrorsOn
28307
28807
  });
28308
28808
  errorText = this.errorState.error;
28309
28809
  hasError = this.errorState.hasError;
@@ -28468,6 +28968,13 @@ var SegmentedComponent = class SegmentedComponent {
28468
28968
  isRequired: false,
28469
28969
  transformFunction: null
28470
28970
  },
28971
+ showErrorsOn: {
28972
+ classPropertyName: "showErrorsOn",
28973
+ publicName: "showErrorsOn",
28974
+ isSignal: true,
28975
+ isRequired: false,
28976
+ transformFunction: null
28977
+ },
28471
28978
  size: {
28472
28979
  classPropertyName: "size",
28473
28980
  publicName: "size",
@@ -28679,6 +29186,14 @@ i0.ɵɵngDeclareClassMetadata({
28679
29186
  required: false
28680
29187
  }]
28681
29188
  }],
29189
+ showErrorsOn: [{
29190
+ type: i0.Input,
29191
+ args: [{
29192
+ isSignal: true,
29193
+ alias: "showErrorsOn",
29194
+ required: false
29195
+ }]
29196
+ }],
28682
29197
  size: [{
28683
29198
  type: i0.Input,
28684
29199
  args: [{
@@ -28764,6 +29279,7 @@ var SliderComponent = class SliderComponent {
28764
29279
  hint = input(void 0, ...ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []);
28765
29280
  errorMsg = input(void 0, ...ngDevMode ? [{ debugName: "errorMsg" }] : /* istanbul ignore next */ []);
28766
29281
  errorMessages = input(void 0, ...ngDevMode ? [{ debugName: "errorMessages" }] : /* istanbul ignore next */ []);
29282
+ showErrorsOn = input(void 0, ...ngDevMode ? [{ debugName: "showErrorsOn" }] : /* istanbul ignore next */ []);
28767
29283
  hasError = input(false, ...ngDevMode ? [{ debugName: "hasError" }] : /* istanbul ignore next */ []);
28768
29284
  min = input(0, ...ngDevMode ? [{ debugName: "min" }] : /* istanbul ignore next */ []);
28769
29285
  max = input(100, ...ngDevMode ? [{ debugName: "max" }] : /* istanbul ignore next */ []);
@@ -28813,7 +29329,8 @@ var SliderComponent = class SliderComponent {
28813
29329
  }
28814
29330
  errorState = injectControlErrorState({
28815
29331
  errorMsg: this.errorMsg,
28816
- errorMessages: this.errorMessages
29332
+ errorMessages: this.errorMessages,
29333
+ showErrorsOn: this.showErrorsOn
28817
29334
  });
28818
29335
  errorText = this.errorState.error;
28819
29336
  errored = computed(() => this.hasError() || this.showError(), ...ngDevMode ? [{ debugName: "errored" }] : /* istanbul ignore next */ []);
@@ -29002,6 +29519,13 @@ var SliderComponent = class SliderComponent {
29002
29519
  isRequired: false,
29003
29520
  transformFunction: null
29004
29521
  },
29522
+ showErrorsOn: {
29523
+ classPropertyName: "showErrorsOn",
29524
+ publicName: "showErrorsOn",
29525
+ isSignal: true,
29526
+ isRequired: false,
29527
+ transformFunction: null
29528
+ },
29005
29529
  hasError: {
29006
29530
  classPropertyName: "hasError",
29007
29531
  publicName: "hasError",
@@ -29256,6 +29780,14 @@ i0.ɵɵngDeclareClassMetadata({
29256
29780
  required: false
29257
29781
  }]
29258
29782
  }],
29783
+ showErrorsOn: [{
29784
+ type: i0.Input,
29785
+ args: [{
29786
+ isSignal: true,
29787
+ alias: "showErrorsOn",
29788
+ required: false
29789
+ }]
29790
+ }],
29259
29791
  hasError: [{
29260
29792
  type: i0.Input,
29261
29793
  args: [{
@@ -30303,6 +30835,7 @@ var SwitchComponent = class SwitchComponent {
30303
30835
  hint = input(void 0, ...ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []);
30304
30836
  errorMsg = input(void 0, ...ngDevMode ? [{ debugName: "errorMsg" }] : /* istanbul ignore next */ []);
30305
30837
  errorMessages = input(void 0, ...ngDevMode ? [{ debugName: "errorMessages" }] : /* istanbul ignore next */ []);
30838
+ showErrorsOn = input(void 0, ...ngDevMode ? [{ debugName: "showErrorsOn" }] : /* istanbul ignore next */ []);
30306
30839
  size = input("md", ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
30307
30840
  variant = input("default", ...ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []);
30308
30841
  onIcon = input(void 0, ...ngDevMode ? [{ debugName: "onIcon" }] : /* istanbul ignore next */ []);
@@ -30322,7 +30855,8 @@ var SwitchComponent = class SwitchComponent {
30322
30855
  isDisabled = computed(() => this.disabled() || this._formDisabled(), ...ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []);
30323
30856
  errorState = injectControlErrorState({
30324
30857
  errorMsg: this.errorMsg,
30325
- errorMessages: this.errorMessages
30858
+ errorMessages: this.errorMessages,
30859
+ showErrorsOn: this.showErrorsOn
30326
30860
  });
30327
30861
  errorText = this.errorState.error;
30328
30862
  hasError = this.errorState.hasError;
@@ -30399,6 +30933,13 @@ var SwitchComponent = class SwitchComponent {
30399
30933
  isRequired: false,
30400
30934
  transformFunction: null
30401
30935
  },
30936
+ showErrorsOn: {
30937
+ classPropertyName: "showErrorsOn",
30938
+ publicName: "showErrorsOn",
30939
+ isSignal: true,
30940
+ isRequired: false,
30941
+ transformFunction: null
30942
+ },
30402
30943
  size: {
30403
30944
  classPropertyName: "size",
30404
30945
  publicName: "size",
@@ -30567,6 +31108,14 @@ i0.ɵɵngDeclareClassMetadata({
30567
31108
  required: false
30568
31109
  }]
30569
31110
  }],
31111
+ showErrorsOn: [{
31112
+ type: i0.Input,
31113
+ args: [{
31114
+ isSignal: true,
31115
+ alias: "showErrorsOn",
31116
+ required: false
31117
+ }]
31118
+ }],
30570
31119
  size: [{
30571
31120
  type: i0.Input,
30572
31121
  args: [{
@@ -30977,10 +31526,12 @@ var TextareaComponent = class TextareaComponent {
30977
31526
  alias: "aria-label"
30978
31527
  });
30979
31528
  placeholder = input("", ...ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []);
31529
+ typedPlaceholder = input([], ...ngDevMode ? [{ debugName: "typedPlaceholder" }] : /* istanbul ignore next */ []);
30980
31530
  size = input("md", ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
30981
31531
  hint = input(void 0, ...ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []);
30982
31532
  errorMsg = input(void 0, ...ngDevMode ? [{ debugName: "errorMsg" }] : /* istanbul ignore next */ []);
30983
31533
  errorMessages = input(void 0, ...ngDevMode ? [{ debugName: "errorMessages" }] : /* istanbul ignore next */ []);
31534
+ showErrorsOn = input(void 0, ...ngDevMode ? [{ debugName: "showErrorsOn" }] : /* istanbul ignore next */ []);
30984
31535
  disabled = input(false, ...ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []);
30985
31536
  readonly = input(false, ...ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []);
30986
31537
  required = input(false, ...ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []);
@@ -30998,9 +31549,13 @@ var TextareaComponent = class TextareaComponent {
30998
31549
  onChange = () => {};
30999
31550
  onTouched = () => {};
31000
31551
  isDisabled = computed(() => this.disabled() || this._formDisabled(), ...ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []);
31552
+ typed = injectTypedPlaceholder(this.typedPlaceholder);
31553
+ typedPlaceholderShown = computed(() => this.typed.animating() && !this.value(), ...ngDevMode ? [{ debugName: "typedPlaceholderShown" }] : /* istanbul ignore next */ []);
31554
+ nativePlaceholder = computed(() => this.typedPlaceholder().length > 0 ? this.typed.hint() : this.placeholder(), ...ngDevMode ? [{ debugName: "nativePlaceholder" }] : /* istanbul ignore next */ []);
31001
31555
  errorState = injectControlErrorState({
31002
31556
  errorMsg: this.errorMsg,
31003
- errorMessages: this.errorMessages
31557
+ errorMessages: this.errorMessages,
31558
+ showErrorsOn: this.showErrorsOn
31004
31559
  });
31005
31560
  errorText = this.errorState.error;
31006
31561
  hasError = this.errorState.hasError;
@@ -31130,6 +31685,13 @@ var TextareaComponent = class TextareaComponent {
31130
31685
  isRequired: false,
31131
31686
  transformFunction: null
31132
31687
  },
31688
+ typedPlaceholder: {
31689
+ classPropertyName: "typedPlaceholder",
31690
+ publicName: "typedPlaceholder",
31691
+ isSignal: true,
31692
+ isRequired: false,
31693
+ transformFunction: null
31694
+ },
31133
31695
  size: {
31134
31696
  classPropertyName: "size",
31135
31697
  publicName: "size",
@@ -31158,6 +31720,13 @@ var TextareaComponent = class TextareaComponent {
31158
31720
  isRequired: false,
31159
31721
  transformFunction: null
31160
31722
  },
31723
+ showErrorsOn: {
31724
+ classPropertyName: "showErrorsOn",
31725
+ publicName: "showErrorsOn",
31726
+ isSignal: true,
31727
+ isRequired: false,
31728
+ transformFunction: null
31729
+ },
31161
31730
  disabled: {
31162
31731
  classPropertyName: "disabled",
31163
31732
  publicName: "disabled",
@@ -31247,8 +31816,8 @@ var TextareaComponent = class TextareaComponent {
31247
31816
  isSignal: true
31248
31817
  }],
31249
31818
  ngImport: i0,
31250
- template: "<div class=\"ea-textarea-field ea-textarea-field--{{ size() }}\">\n @if (label(); as labelText) {\n <ea-field-label\n [text]=\"labelText\"\n [icon]=\"labelIcon()\"\n [help]=\"labelHelp()\"\n [forId]=\"id()\"\n [required]=\"required()\"\n [optional]=\"optional()\" />\n }\n\n <div\n class=\"ea-textarea-wrapper\"\n [ngClass]=\"wrapperClasses()\"\n [style.resize]=\"resize()\"\n [style.min-height]=\"minHeightStyle()\"\n [style.max-height.px]=\"maxHeight() ?? null\">\n <textarea\n #textareaEl\n class=\"ea-textarea\"\n dir=\"auto\"\n [id]=\"id()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [value]=\"value()\"\n [attr.maxlength]=\"maxlength() ?? null\"\n [attr.aria-label]=\"label() ? null : (ariaLabel() ?? null)\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"describedBy()\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"></textarea>\n </div>\n\n <ng-template #messages>\n <ea-field-messages\n [id]=\"id()\"\n [error]=\"errorText()\"\n [hint]=\"showHint() ? hint() : null\" />\n </ng-template>\n\n @if (showCount()) {\n <div class=\"ea-textarea-field__footer\">\n <ng-container [ngTemplateOutlet]=\"messages\" />\n <span\n class=\"ea-textarea-field__count\"\n [id]=\"id() + '-count'\">\n {{ countText() }}\n </span>\n </div>\n } @else {\n <ng-container [ngTemplateOutlet]=\"messages\" />\n }\n</div>\n",
31251
- styles: [".ea-textarea-field{display:flex;flex-direction:column;gap:.375em;color:var(--color-text-secondary);--ea-field-label-size: .875em;--ea-field-messages-size: .8125em}.ea-textarea-field--2xs{font-size:var(--font-size-2xs)}.ea-textarea-field--xs{font-size:var(--font-size-xs)}.ea-textarea-field--sm{font-size:var(--font-size-sm)}.ea-textarea-field--md{font-size:var(--font-size-md)}.ea-textarea-field--lg{font-size:var(--font-size-lg)}.ea-textarea-field--xl{font-size:var(--font-size-xl)}.ea-textarea-field__footer{display:flex;align-items:flex-start;gap:.75em}.ea-textarea-field__count{flex-shrink:0;margin-inline-start:auto;font-size:max(var(--ea-field-messages-size, var(--text-helper-size)),.6875rem);font-weight:var(--text-helper-weight);line-height:var(--text-helper-lh);font-variant-numeric:tabular-nums}.ea-textarea-wrapper{display:flex;min-width:12em;background-color:var(--color-bg-base);border:var(--border-width-thin) solid var(--color-border-default);border-radius:var(--radius-md);transition:var(--transition-colors),var(--transition-shadow);overflow:hidden}.ea-textarea-wrapper--focused{outline:var(--border-width-medium) solid var(--color-border-focus);outline-offset:2px}@media(forced-colors:active){.ea-textarea-wrapper--focused{outline:2px solid Highlight;outline-offset:2px}}.ea-textarea-wrapper--error{border-color:var(--color-error-default)}.ea-textarea-wrapper--error.ea-textarea-wrapper--focused{outline:none;box-shadow:var(--shadow-focus-ring-error)}@media(forced-colors:active){.ea-textarea-wrapper--error.ea-textarea-wrapper--focused{outline:2px solid Highlight;outline-offset:2px}}.ea-textarea-wrapper--disabled{background-color:var(--color-bg-muted);border-color:var(--color-border-default);cursor:default;opacity:.6}.ea-textarea-wrapper--disabled .ea-textarea{cursor:default}.ea-textarea-wrapper--readonly{background-color:var(--color-bg-subtle)}.ea-textarea-wrapper--readonly:has(:focus-visible){border-color:var(--color-border-focus);outline:none;box-shadow:none}@media(forced-colors:active){.ea-textarea-wrapper--readonly:has(:focus-visible){outline:2px solid Highlight;outline-offset:2px}}.ea-textarea-wrapper--readonly button{cursor:default}.ea-textarea-wrapper--readonly button:hover{background-color:transparent;color:var(--color-text-secondary)}.ea-textarea{flex:1;width:100%;min-width:0;padding:.75em;background:transparent;border:none;outline:none;resize:none;color:var(--color-text-primary);font-family:var(--font-family-sans);line-height:var(--line-height-normal)}.ea-textarea::placeholder{opacity:1;font-style:italic;color:var(--color-text-tertiary)}.ea-textarea:disabled{cursor:default}\n"],
31819
+ template: "<div class=\"ea-textarea-field ea-textarea-field--{{ size() }}\">\n @if (label(); as labelText) {\n <ea-field-label\n [text]=\"labelText\"\n [icon]=\"labelIcon()\"\n [help]=\"labelHelp()\"\n [forId]=\"id()\"\n [required]=\"required()\"\n [optional]=\"optional()\" />\n }\n\n <div\n class=\"ea-textarea-wrapper\"\n [ngClass]=\"wrapperClasses()\"\n [style.resize]=\"resize()\"\n [style.min-height]=\"minHeightStyle()\"\n [style.max-height.px]=\"maxHeight() ?? null\">\n <textarea\n #textareaEl\n class=\"ea-textarea\"\n dir=\"auto\"\n [class.ea-textarea--typed-placeholder]=\"typedPlaceholderShown()\"\n [id]=\"id()\"\n [placeholder]=\"nativePlaceholder()\"\n [disabled]=\"isDisabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [value]=\"value()\"\n [attr.maxlength]=\"maxlength() ?? null\"\n [attr.aria-label]=\"label() ? null : (ariaLabel() ?? null)\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"describedBy()\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"></textarea>\n\n @if (typedPlaceholderShown()) {\n <ea-typed-placeholder\n class=\"ea-textarea-wrapper__typed-placeholder\"\n [text]=\"typed.text()\"\n [typing]=\"typed.typing()\" />\n }\n </div>\n\n <ng-template #messages>\n <ea-field-messages\n [id]=\"id()\"\n [error]=\"errorText()\"\n [hint]=\"showHint() ? hint() : null\" />\n </ng-template>\n\n @if (showCount()) {\n <div class=\"ea-textarea-field__footer\">\n <ng-container [ngTemplateOutlet]=\"messages\" />\n <span\n class=\"ea-textarea-field__count\"\n [id]=\"id() + '-count'\">\n {{ countText() }}\n </span>\n </div>\n } @else {\n <ng-container [ngTemplateOutlet]=\"messages\" />\n }\n</div>\n",
31820
+ styles: [".ea-textarea-field{display:flex;flex-direction:column;gap:.375em;color:var(--color-text-secondary);--ea-field-label-size: .875em;--ea-field-messages-size: .8125em}.ea-textarea-field--2xs{font-size:var(--font-size-2xs)}.ea-textarea-field--xs{font-size:var(--font-size-xs)}.ea-textarea-field--sm{font-size:var(--font-size-sm)}.ea-textarea-field--md{font-size:var(--font-size-md)}.ea-textarea-field--lg{font-size:var(--font-size-lg)}.ea-textarea-field--xl{font-size:var(--font-size-xl)}.ea-textarea-field__footer{display:flex;align-items:flex-start;gap:.75em}.ea-textarea-field__count{flex-shrink:0;margin-inline-start:auto;font-size:max(var(--ea-field-messages-size, var(--text-helper-size)),.6875rem);font-weight:var(--text-helper-weight);line-height:var(--text-helper-lh);font-variant-numeric:tabular-nums}.ea-textarea-wrapper{position:relative;display:flex;min-width:12em;background-color:var(--color-bg-base);border:var(--border-width-thin) solid var(--color-border-default);border-radius:var(--radius-md);transition:var(--transition-colors),var(--transition-shadow);overflow:hidden}.ea-textarea-wrapper--focused{outline:var(--border-width-medium) solid var(--color-border-focus);outline-offset:2px}@media(forced-colors:active){.ea-textarea-wrapper--focused{outline:2px solid Highlight;outline-offset:2px}}.ea-textarea-wrapper--error{border-color:var(--color-error-default)}.ea-textarea-wrapper--error.ea-textarea-wrapper--focused{outline:none;box-shadow:var(--shadow-focus-ring-error)}@media(forced-colors:active){.ea-textarea-wrapper--error.ea-textarea-wrapper--focused{outline:2px solid Highlight;outline-offset:2px}}.ea-textarea-wrapper--disabled{background-color:var(--color-bg-muted);border-color:var(--color-border-default);cursor:default;opacity:.6}.ea-textarea-wrapper--disabled .ea-textarea{cursor:default}.ea-textarea-wrapper--readonly{background-color:var(--color-bg-subtle)}.ea-textarea-wrapper--readonly:has(:focus-visible){border-color:var(--color-border-focus);outline:none;box-shadow:none}@media(forced-colors:active){.ea-textarea-wrapper--readonly:has(:focus-visible){outline:2px solid Highlight;outline-offset:2px}}.ea-textarea-wrapper--readonly button{cursor:default}.ea-textarea-wrapper--readonly button:hover{background-color:transparent;color:var(--color-text-secondary)}.ea-textarea-wrapper__typed-placeholder{position:absolute;inset:0;padding:.75em;white-space:pre-wrap;overflow-wrap:break-word}.ea-textarea{flex:1;width:100%;min-width:0;padding:.75em;background:transparent;border:none;outline:none;resize:none;color:var(--color-text-primary);font-family:var(--font-family-sans);line-height:var(--line-height-normal)}.ea-textarea::placeholder{opacity:1;font-style:italic;color:var(--color-text-tertiary)}.ea-textarea--typed-placeholder::placeholder{color:transparent}.ea-textarea:disabled{cursor:default}\n"],
31252
31821
  dependencies: [
31253
31822
  {
31254
31823
  kind: "component",
@@ -31289,6 +31858,12 @@ var TextareaComponent = class TextareaComponent {
31289
31858
  "ngTemplateOutlet",
31290
31859
  "ngTemplateOutletInjector"
31291
31860
  ]
31861
+ },
31862
+ {
31863
+ kind: "component",
31864
+ type: TypedPlaceholderComponent,
31865
+ selector: "ea-typed-placeholder",
31866
+ inputs: ["text", "typing"]
31292
31867
  }
31293
31868
  ],
31294
31869
  changeDetection: i0.ChangeDetectionStrategy.OnPush
@@ -31307,7 +31882,8 @@ i0.ɵɵngDeclareClassMetadata({
31307
31882
  FieldLabelComponent,
31308
31883
  FieldMessagesComponent,
31309
31884
  NgClass,
31310
- NgTemplateOutlet
31885
+ NgTemplateOutlet,
31886
+ TypedPlaceholderComponent
31311
31887
  ],
31312
31888
  changeDetection: ChangeDetectionStrategy.OnPush,
31313
31889
  providers: [{
@@ -31315,8 +31891,8 @@ i0.ɵɵngDeclareClassMetadata({
31315
31891
  useExisting: forwardRef(() => TextareaComponent),
31316
31892
  multi: true
31317
31893
  }],
31318
- template: "<div class=\"ea-textarea-field ea-textarea-field--{{ size() }}\">\n @if (label(); as labelText) {\n <ea-field-label\n [text]=\"labelText\"\n [icon]=\"labelIcon()\"\n [help]=\"labelHelp()\"\n [forId]=\"id()\"\n [required]=\"required()\"\n [optional]=\"optional()\" />\n }\n\n <div\n class=\"ea-textarea-wrapper\"\n [ngClass]=\"wrapperClasses()\"\n [style.resize]=\"resize()\"\n [style.min-height]=\"minHeightStyle()\"\n [style.max-height.px]=\"maxHeight() ?? null\">\n <textarea\n #textareaEl\n class=\"ea-textarea\"\n dir=\"auto\"\n [id]=\"id()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [value]=\"value()\"\n [attr.maxlength]=\"maxlength() ?? null\"\n [attr.aria-label]=\"label() ? null : (ariaLabel() ?? null)\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"describedBy()\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"></textarea>\n </div>\n\n <ng-template #messages>\n <ea-field-messages\n [id]=\"id()\"\n [error]=\"errorText()\"\n [hint]=\"showHint() ? hint() : null\" />\n </ng-template>\n\n @if (showCount()) {\n <div class=\"ea-textarea-field__footer\">\n <ng-container [ngTemplateOutlet]=\"messages\" />\n <span\n class=\"ea-textarea-field__count\"\n [id]=\"id() + '-count'\">\n {{ countText() }}\n </span>\n </div>\n } @else {\n <ng-container [ngTemplateOutlet]=\"messages\" />\n }\n</div>\n",
31319
- styles: [".ea-textarea-field{display:flex;flex-direction:column;gap:.375em;color:var(--color-text-secondary);--ea-field-label-size: .875em;--ea-field-messages-size: .8125em}.ea-textarea-field--2xs{font-size:var(--font-size-2xs)}.ea-textarea-field--xs{font-size:var(--font-size-xs)}.ea-textarea-field--sm{font-size:var(--font-size-sm)}.ea-textarea-field--md{font-size:var(--font-size-md)}.ea-textarea-field--lg{font-size:var(--font-size-lg)}.ea-textarea-field--xl{font-size:var(--font-size-xl)}.ea-textarea-field__footer{display:flex;align-items:flex-start;gap:.75em}.ea-textarea-field__count{flex-shrink:0;margin-inline-start:auto;font-size:max(var(--ea-field-messages-size, var(--text-helper-size)),.6875rem);font-weight:var(--text-helper-weight);line-height:var(--text-helper-lh);font-variant-numeric:tabular-nums}.ea-textarea-wrapper{display:flex;min-width:12em;background-color:var(--color-bg-base);border:var(--border-width-thin) solid var(--color-border-default);border-radius:var(--radius-md);transition:var(--transition-colors),var(--transition-shadow);overflow:hidden}.ea-textarea-wrapper--focused{outline:var(--border-width-medium) solid var(--color-border-focus);outline-offset:2px}@media(forced-colors:active){.ea-textarea-wrapper--focused{outline:2px solid Highlight;outline-offset:2px}}.ea-textarea-wrapper--error{border-color:var(--color-error-default)}.ea-textarea-wrapper--error.ea-textarea-wrapper--focused{outline:none;box-shadow:var(--shadow-focus-ring-error)}@media(forced-colors:active){.ea-textarea-wrapper--error.ea-textarea-wrapper--focused{outline:2px solid Highlight;outline-offset:2px}}.ea-textarea-wrapper--disabled{background-color:var(--color-bg-muted);border-color:var(--color-border-default);cursor:default;opacity:.6}.ea-textarea-wrapper--disabled .ea-textarea{cursor:default}.ea-textarea-wrapper--readonly{background-color:var(--color-bg-subtle)}.ea-textarea-wrapper--readonly:has(:focus-visible){border-color:var(--color-border-focus);outline:none;box-shadow:none}@media(forced-colors:active){.ea-textarea-wrapper--readonly:has(:focus-visible){outline:2px solid Highlight;outline-offset:2px}}.ea-textarea-wrapper--readonly button{cursor:default}.ea-textarea-wrapper--readonly button:hover{background-color:transparent;color:var(--color-text-secondary)}.ea-textarea{flex:1;width:100%;min-width:0;padding:.75em;background:transparent;border:none;outline:none;resize:none;color:var(--color-text-primary);font-family:var(--font-family-sans);line-height:var(--line-height-normal)}.ea-textarea::placeholder{opacity:1;font-style:italic;color:var(--color-text-tertiary)}.ea-textarea:disabled{cursor:default}\n"]
31894
+ template: "<div class=\"ea-textarea-field ea-textarea-field--{{ size() }}\">\n @if (label(); as labelText) {\n <ea-field-label\n [text]=\"labelText\"\n [icon]=\"labelIcon()\"\n [help]=\"labelHelp()\"\n [forId]=\"id()\"\n [required]=\"required()\"\n [optional]=\"optional()\" />\n }\n\n <div\n class=\"ea-textarea-wrapper\"\n [ngClass]=\"wrapperClasses()\"\n [style.resize]=\"resize()\"\n [style.min-height]=\"minHeightStyle()\"\n [style.max-height.px]=\"maxHeight() ?? null\">\n <textarea\n #textareaEl\n class=\"ea-textarea\"\n dir=\"auto\"\n [class.ea-textarea--typed-placeholder]=\"typedPlaceholderShown()\"\n [id]=\"id()\"\n [placeholder]=\"nativePlaceholder()\"\n [disabled]=\"isDisabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [value]=\"value()\"\n [attr.maxlength]=\"maxlength() ?? null\"\n [attr.aria-label]=\"label() ? null : (ariaLabel() ?? null)\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"describedBy()\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"></textarea>\n\n @if (typedPlaceholderShown()) {\n <ea-typed-placeholder\n class=\"ea-textarea-wrapper__typed-placeholder\"\n [text]=\"typed.text()\"\n [typing]=\"typed.typing()\" />\n }\n </div>\n\n <ng-template #messages>\n <ea-field-messages\n [id]=\"id()\"\n [error]=\"errorText()\"\n [hint]=\"showHint() ? hint() : null\" />\n </ng-template>\n\n @if (showCount()) {\n <div class=\"ea-textarea-field__footer\">\n <ng-container [ngTemplateOutlet]=\"messages\" />\n <span\n class=\"ea-textarea-field__count\"\n [id]=\"id() + '-count'\">\n {{ countText() }}\n </span>\n </div>\n } @else {\n <ng-container [ngTemplateOutlet]=\"messages\" />\n }\n</div>\n",
31895
+ styles: [".ea-textarea-field{display:flex;flex-direction:column;gap:.375em;color:var(--color-text-secondary);--ea-field-label-size: .875em;--ea-field-messages-size: .8125em}.ea-textarea-field--2xs{font-size:var(--font-size-2xs)}.ea-textarea-field--xs{font-size:var(--font-size-xs)}.ea-textarea-field--sm{font-size:var(--font-size-sm)}.ea-textarea-field--md{font-size:var(--font-size-md)}.ea-textarea-field--lg{font-size:var(--font-size-lg)}.ea-textarea-field--xl{font-size:var(--font-size-xl)}.ea-textarea-field__footer{display:flex;align-items:flex-start;gap:.75em}.ea-textarea-field__count{flex-shrink:0;margin-inline-start:auto;font-size:max(var(--ea-field-messages-size, var(--text-helper-size)),.6875rem);font-weight:var(--text-helper-weight);line-height:var(--text-helper-lh);font-variant-numeric:tabular-nums}.ea-textarea-wrapper{position:relative;display:flex;min-width:12em;background-color:var(--color-bg-base);border:var(--border-width-thin) solid var(--color-border-default);border-radius:var(--radius-md);transition:var(--transition-colors),var(--transition-shadow);overflow:hidden}.ea-textarea-wrapper--focused{outline:var(--border-width-medium) solid var(--color-border-focus);outline-offset:2px}@media(forced-colors:active){.ea-textarea-wrapper--focused{outline:2px solid Highlight;outline-offset:2px}}.ea-textarea-wrapper--error{border-color:var(--color-error-default)}.ea-textarea-wrapper--error.ea-textarea-wrapper--focused{outline:none;box-shadow:var(--shadow-focus-ring-error)}@media(forced-colors:active){.ea-textarea-wrapper--error.ea-textarea-wrapper--focused{outline:2px solid Highlight;outline-offset:2px}}.ea-textarea-wrapper--disabled{background-color:var(--color-bg-muted);border-color:var(--color-border-default);cursor:default;opacity:.6}.ea-textarea-wrapper--disabled .ea-textarea{cursor:default}.ea-textarea-wrapper--readonly{background-color:var(--color-bg-subtle)}.ea-textarea-wrapper--readonly:has(:focus-visible){border-color:var(--color-border-focus);outline:none;box-shadow:none}@media(forced-colors:active){.ea-textarea-wrapper--readonly:has(:focus-visible){outline:2px solid Highlight;outline-offset:2px}}.ea-textarea-wrapper--readonly button{cursor:default}.ea-textarea-wrapper--readonly button:hover{background-color:transparent;color:var(--color-text-secondary)}.ea-textarea-wrapper__typed-placeholder{position:absolute;inset:0;padding:.75em;white-space:pre-wrap;overflow-wrap:break-word}.ea-textarea{flex:1;width:100%;min-width:0;padding:.75em;background:transparent;border:none;outline:none;resize:none;color:var(--color-text-primary);font-family:var(--font-family-sans);line-height:var(--line-height-normal)}.ea-textarea::placeholder{opacity:1;font-style:italic;color:var(--color-text-tertiary)}.ea-textarea--typed-placeholder::placeholder{color:transparent}.ea-textarea:disabled{cursor:default}\n"]
31320
31896
  }]
31321
31897
  }],
31322
31898
  propDecorators: {
@@ -31372,6 +31948,14 @@ i0.ɵɵngDeclareClassMetadata({
31372
31948
  required: false
31373
31949
  }]
31374
31950
  }],
31951
+ typedPlaceholder: [{
31952
+ type: i0.Input,
31953
+ args: [{
31954
+ isSignal: true,
31955
+ alias: "typedPlaceholder",
31956
+ required: false
31957
+ }]
31958
+ }],
31375
31959
  size: [{
31376
31960
  type: i0.Input,
31377
31961
  args: [{
@@ -31404,6 +31988,14 @@ i0.ɵɵngDeclareClassMetadata({
31404
31988
  required: false
31405
31989
  }]
31406
31990
  }],
31991
+ showErrorsOn: [{
31992
+ type: i0.Input,
31993
+ args: [{
31994
+ isSignal: true,
31995
+ alias: "showErrorsOn",
31996
+ required: false
31997
+ }]
31998
+ }],
31407
31999
  disabled: [{
31408
32000
  type: i0.Input,
31409
32001
  args: [{
@@ -31679,6 +32271,7 @@ var TimePickerComponent = class TimePickerComponent {
31679
32271
  hint = input(void 0, ...ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []);
31680
32272
  errorMsg = input(void 0, ...ngDevMode ? [{ debugName: "errorMsg" }] : /* istanbul ignore next */ []);
31681
32273
  errorMessages = input(void 0, ...ngDevMode ? [{ debugName: "errorMessages" }] : /* istanbul ignore next */ []);
32274
+ showErrorsOn = input(void 0, ...ngDevMode ? [{ debugName: "showErrorsOn" }] : /* istanbul ignore next */ []);
31682
32275
  format = input("24h", ...ngDevMode ? [{ debugName: "format" }] : /* istanbul ignore next */ []);
31683
32276
  includeSeconds = input(false, ...ngDevMode ? [{ debugName: "includeSeconds" }] : /* istanbul ignore next */ []);
31684
32277
  minuteStep = input(1, ...ngDevMode ? [{ debugName: "minuteStep" }] : /* istanbul ignore next */ []);
@@ -31699,7 +32292,8 @@ var TimePickerComponent = class TimePickerComponent {
31699
32292
  isDisabled = computed(() => this.disabled() || this._formDisabled(), ...ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []);
31700
32293
  errorState = injectControlErrorState({
31701
32294
  errorMsg: this.errorMsg,
31702
- errorMessages: this.errorMessages
32295
+ errorMessages: this.errorMessages,
32296
+ showErrorsOn: this.showErrorsOn
31703
32297
  });
31704
32298
  errorText = this.errorState.error;
31705
32299
  hasError = this.errorState.hasError;
@@ -32121,6 +32715,13 @@ var TimePickerComponent = class TimePickerComponent {
32121
32715
  isRequired: false,
32122
32716
  transformFunction: null
32123
32717
  },
32718
+ showErrorsOn: {
32719
+ classPropertyName: "showErrorsOn",
32720
+ publicName: "showErrorsOn",
32721
+ isSignal: true,
32722
+ isRequired: false,
32723
+ transformFunction: null
32724
+ },
32124
32725
  format: {
32125
32726
  classPropertyName: "format",
32126
32727
  publicName: "format",
@@ -32441,6 +33042,14 @@ i0.ɵɵngDeclareClassMetadata({
32441
33042
  required: false
32442
33043
  }]
32443
33044
  }],
33045
+ showErrorsOn: [{
33046
+ type: i0.Input,
33047
+ args: [{
33048
+ isSignal: true,
33049
+ alias: "showErrorsOn",
33050
+ required: false
33051
+ }]
33052
+ }],
32444
33053
  format: [{
32445
33054
  type: i0.Input,
32446
33055
  args: [{