@flusys/ng-ui 8.1.5 → 9.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { signal, Service, makeEnvironmentProviders, provideAppInitializer, inject, PLATFORM_ID, input, booleanAttribute, computed, Component, output, contentChild, viewChild, effect, DestroyRef, ElementRef, Directive, numberAttribute, afterNextRender, TemplateRef, contentChildren, untracked, forwardRef, model, viewChildren, Renderer2, InjectionToken, Injector, SecurityContext } from '@angular/core';
2
+ import { signal, Service, makeEnvironmentProviders, provideAppInitializer, inject, PLATFORM_ID, input, booleanAttribute, computed, Component, ElementRef, DestroyRef, output, contentChild, viewChild, effect, ViewContainerRef, untracked, Directive, numberAttribute, afterNextRender, TemplateRef, contentChildren, forwardRef, model, viewChildren, Renderer2, InjectionToken, Injector, SecurityContext } from '@angular/core';
3
3
  import { isPlatformBrowser, DOCUMENT, NgTemplateOutlet, NgComponentOutlet } from '@angular/common';
4
4
  import * as lucideNamespace from '@lucide/angular';
5
5
  import { isLucideIconComponent, LucideDynamicIcon, provideLucideIcons } from '@lucide/angular';
@@ -1014,6 +1014,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
1014
1014
  `, styles: [":host ::ng-deep svg[lucideIcon]{display:block}\n"] }]
1015
1015
  }], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], spin: [{ type: i0.Input, args: [{ isSignal: true, alias: "spin", required: false }] }], fill: [{ type: i0.Input, args: [{ isSignal: true, alias: "fill", required: false }] }], severity: [{ type: i0.Input, args: [{ isSignal: true, alias: "severity", required: false }] }] } });
1016
1016
 
1017
+ const BLOCKED_EVENTS = ['click', 'auxclick'];
1018
+ // Host-level listeners (routerLink, (click), row handlers) fire even when the inner control is
1019
+ // disabled, so swallow the click in the capture phase before any of them run. `auxclick` covers
1020
+ // middle-click, which would otherwise open a disabled link's href in a new tab.
1021
+ function blockClicksWhileDisabled(isDisabled) {
1022
+ const host = inject(ElementRef).nativeElement;
1023
+ const listener = (e) => {
1024
+ if (!isDisabled())
1025
+ return;
1026
+ e.preventDefault();
1027
+ e.stopImmediatePropagation();
1028
+ };
1029
+ for (const type of BLOCKED_EVENTS)
1030
+ host.addEventListener(type, listener, true);
1031
+ inject(DestroyRef).onDestroy(() => {
1032
+ for (const type of BLOCKED_EVENTS)
1033
+ host.removeEventListener(type, listener, true);
1034
+ });
1035
+ }
1036
+
1017
1037
  class ButtonComponent {
1018
1038
  label = input('', /* @ts-ignore */
1019
1039
  ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
@@ -1064,6 +1084,9 @@ class ButtonComponent {
1064
1084
  ...(ngDevMode ? [{ debugName: "loadingIconTemplate" }] : /* istanbul ignore next */ []));
1065
1085
  isDisabled = computed(() => this.disabled() || this.loading(), /* @ts-ignore */
1066
1086
  ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
1087
+ constructor() {
1088
+ blockClicksWhileDisabled(this.isDisabled);
1089
+ }
1067
1090
  hostClass = computed(() => computeButtonClasses({
1068
1091
  severity: this.severity(),
1069
1092
  text: this.text() || this.variant() === 'text',
@@ -1117,7 +1140,7 @@ class ButtonComponent {
1117
1140
  }
1118
1141
  }
1119
1142
  @if (label()) {
1120
- <span class="leading-none">{{ label() }}</span>
1143
+ <span>{{ label() }}</span>
1121
1144
  }
1122
1145
  <ng-content />
1123
1146
  @if (loading()) {
@@ -1195,7 +1218,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
1195
1218
  }
1196
1219
  }
1197
1220
  @if (label()) {
1198
- <span class="leading-none">{{ label() }}</span>
1221
+ <span>{{ label() }}</span>
1199
1222
  }
1200
1223
  <ng-content />
1201
1224
  @if (loading()) {
@@ -1234,7 +1257,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
1234
1257
  class: 'relative',
1235
1258
  },
1236
1259
  }]
1237
- }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], iconPos: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconPos", required: false }] }], severity: [{ type: i0.Input, args: [{ isSignal: true, alias: "severity", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], loadingIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "loadingIcon", required: false }] }], text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }], link: [{ type: i0.Input, args: [{ isSignal: true, alias: "link", required: false }] }], outlined: [{ type: i0.Input, args: [{ isSignal: true, alias: "outlined", required: false }] }], plain: [{ type: i0.Input, args: [{ isSignal: true, alias: "plain", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], raised: [{ type: i0.Input, args: [{ isSignal: true, alias: "raised", required: false }] }], rounded: [{ type: i0.Input, args: [{ isSignal: true, alias: "rounded", required: false }] }], fluid: [{ type: i0.Input, args: [{ isSignal: true, alias: "fluid", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], autofocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "autofocus", required: false }] }], tabindex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabindex", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], badge: [{ type: i0.Input, args: [{ isSignal: true, alias: "badge", required: false }] }], badgeSeverity: [{ type: i0.Input, args: [{ isSignal: true, alias: "badgeSeverity", required: false }] }], badgeClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "badgeClass", required: false }] }], onClick: [{ type: i0.Output, args: ["onClick"] }], onFocus: [{ type: i0.Output, args: ["onFocus"] }], onBlur: [{ type: i0.Output, args: ["onBlur"] }], iconTemplate: [{ type: i0.ContentChild, args: ['icon', { isSignal: true }] }], loadingIconTemplate: [{ type: i0.ContentChild, args: ['loadingicon', { isSignal: true }] }] } });
1260
+ }], ctorParameters: () => [], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], iconPos: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconPos", required: false }] }], severity: [{ type: i0.Input, args: [{ isSignal: true, alias: "severity", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], loadingIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "loadingIcon", required: false }] }], text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }], link: [{ type: i0.Input, args: [{ isSignal: true, alias: "link", required: false }] }], outlined: [{ type: i0.Input, args: [{ isSignal: true, alias: "outlined", required: false }] }], plain: [{ type: i0.Input, args: [{ isSignal: true, alias: "plain", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], raised: [{ type: i0.Input, args: [{ isSignal: true, alias: "raised", required: false }] }], rounded: [{ type: i0.Input, args: [{ isSignal: true, alias: "rounded", required: false }] }], fluid: [{ type: i0.Input, args: [{ isSignal: true, alias: "fluid", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], autofocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "autofocus", required: false }] }], tabindex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabindex", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], badge: [{ type: i0.Input, args: [{ isSignal: true, alias: "badge", required: false }] }], badgeSeverity: [{ type: i0.Input, args: [{ isSignal: true, alias: "badgeSeverity", required: false }] }], badgeClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "badgeClass", required: false }] }], onClick: [{ type: i0.Output, args: ["onClick"] }], onFocus: [{ type: i0.Output, args: ["onFocus"] }], onBlur: [{ type: i0.Output, args: ["onBlur"] }], iconTemplate: [{ type: i0.ContentChild, args: ['icon', { isSignal: true }] }], loadingIconTemplate: [{ type: i0.ContentChild, args: ['loadingicon', { isSignal: true }] }] } });
1238
1261
  function computeButtonClasses(opts) {
1239
1262
  const { severity: sev, text: isText, link: isLink, outlined: isOutlined, plain: isPlain = false, rounded: isRounded, raised, fluid: isFluid, size: sz, iconPos = 'left', iconOnly, styleClass = '', } = opts;
1240
1263
  const isVertical = iconPos === 'top' || iconPos === 'bottom';
@@ -1867,7 +1890,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
1867
1890
  class FButtonDirective {
1868
1891
  _el = inject((ElementRef));
1869
1892
  _doc = inject(DOCUMENT);
1893
+ _vcr = inject(ViewContainerRef);
1870
1894
  _appliedContentNodes = [];
1895
+ _iconRefs = [];
1871
1896
  severity = input('primary', /* @ts-ignore */
1872
1897
  ...(ngDevMode ? [{ debugName: "severity" }] : /* istanbul ignore next */ []));
1873
1898
  text = input(false, { ...(ngDevMode ? { debugName: "text" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
@@ -1908,32 +1933,53 @@ class FButtonDirective {
1908
1933
  }), /* @ts-ignore */
1909
1934
  ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
1910
1935
  constructor() {
1936
+ blockClicksWhileDisabled(() => this.disabled() || this.loading());
1937
+ // The native `disabled` attribute does nothing on <a> and other non-form hosts, so drop them
1938
+ // out of the tab order while disabled and restore whatever tabindex the consumer set.
1939
+ const el = this._el.nativeElement;
1940
+ if (!(el instanceof HTMLButtonElement || el instanceof HTMLInputElement)) {
1941
+ const originalTabindex = el.getAttribute('tabindex');
1942
+ effect(() => {
1943
+ if (this.disabled() || this.loading())
1944
+ el.setAttribute('tabindex', '-1');
1945
+ else if (originalTabindex === null)
1946
+ el.removeAttribute('tabindex');
1947
+ else
1948
+ el.setAttribute('tabindex', originalTabindex);
1949
+ });
1950
+ }
1911
1951
  effect(() => {
1912
1952
  const el = this._el.nativeElement;
1913
1953
  const loading = this.loading();
1914
- const iconClass = loading ? this.loadingIcon() || 'loader-circle' : this.icon();
1954
+ const iconName = loading ? this.loadingIcon() || 'loader-circle' : this.icon();
1915
1955
  const label = this.label();
1916
1956
  const pos = this.iconPos();
1917
1957
  for (const n of this._appliedContentNodes)
1918
1958
  n.remove();
1959
+ for (const ref of this._iconRefs)
1960
+ ref.destroy();
1919
1961
  this._appliedContentNodes = [];
1962
+ this._iconRefs = [];
1920
1963
  const nodes = [];
1921
- if (iconClass && (pos === 'left' || pos === 'top')) {
1922
- const i = this._doc.createElement('i');
1923
- i.className = `${iconClass} shrink-0${loading ? ' animate-spin' : ''}`;
1924
- nodes.push(i);
1925
- }
1964
+ const createIcon = () => untracked(() => {
1965
+ const ref = this._vcr.createComponent(UiIconComponent);
1966
+ ref.setInput('name', iconName);
1967
+ ref.setInput('spin', loading);
1968
+ ref.changeDetectorRef.detectChanges();
1969
+ const node = ref.location.nativeElement;
1970
+ node.classList.add('shrink-0');
1971
+ this._iconRefs.push(ref);
1972
+ return node;
1973
+ });
1974
+ if (iconName && (pos === 'left' || pos === 'top'))
1975
+ nodes.push(createIcon());
1926
1976
  if (label) {
1927
1977
  const span = this._doc.createElement('span');
1928
- span.className = 'leading-none';
1929
1978
  span.textContent = label;
1930
1979
  nodes.push(span);
1931
1980
  }
1932
- if (iconClass && (pos === 'right' || pos === 'bottom')) {
1933
- const i = this._doc.createElement('i');
1934
- i.className = `${iconClass} shrink-0${loading ? ' animate-spin' : ''}`;
1935
- nodes.push(i);
1936
- }
1981
+ if (iconName && (pos === 'right' || pos === 'bottom'))
1982
+ nodes.push(createIcon());
1937
1983
  nodes.reverse().forEach(n => el.insertBefore(n, el.firstChild));
1938
1984
  this._appliedContentNodes = nodes;
1939
1985
  });
@@ -1947,7 +1993,7 @@ class FButtonDirective {
1947
1993
  });
1948
1994
  }
1949
1995
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: FButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1950
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.5", type: FButtonDirective, isStandalone: true, selector: "[fButton]", inputs: { severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, outlined: { classPropertyName: "outlined", publicName: "outlined", isSignal: true, isRequired: false, transformFunction: null }, link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null }, raised: { classPropertyName: "raised", publicName: "raised", isSignal: true, isRequired: false, transformFunction: null }, fluid: { classPropertyName: "fluid", publicName: "fluid", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, loadingIcon: { classPropertyName: "loadingIcon", publicName: "loadingIcon", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconPos: { classPropertyName: "iconPos", publicName: "iconPos", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, plain: { classPropertyName: "plain", publicName: "plain", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClass()", "attr.disabled": "disabled() || loading() ? '' : null", "attr.aria-disabled": "disabled() ? 'true' : null", "attr.aria-busy": "loading() ? 'true' : null" } }, ngImport: i0 });
1996
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.5", type: FButtonDirective, isStandalone: true, selector: "[fButton]", inputs: { severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, outlined: { classPropertyName: "outlined", publicName: "outlined", isSignal: true, isRequired: false, transformFunction: null }, link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null }, raised: { classPropertyName: "raised", publicName: "raised", isSignal: true, isRequired: false, transformFunction: null }, fluid: { classPropertyName: "fluid", publicName: "fluid", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, loadingIcon: { classPropertyName: "loadingIcon", publicName: "loadingIcon", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconPos: { classPropertyName: "iconPos", publicName: "iconPos", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, plain: { classPropertyName: "plain", publicName: "plain", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClass()", "attr.disabled": "disabled() || loading() ? '' : null", "attr.aria-disabled": "disabled() || loading() ? 'true' : null", "attr.aria-busy": "loading() ? 'true' : null" } }, ngImport: i0 });
1951
1997
  }
1952
1998
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: FButtonDirective, decorators: [{
1953
1999
  type: Directive,
@@ -1956,7 +2002,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
1956
2002
  host: {
1957
2003
  '[class]': 'hostClass()',
1958
2004
  '[attr.disabled]': "disabled() || loading() ? '' : null",
1959
- '[attr.aria-disabled]': "disabled() ? 'true' : null",
2005
+ '[attr.aria-disabled]': "disabled() || loading() ? 'true' : null",
1960
2006
  '[attr.aria-busy]': 'loading() ? \'true\' : null',
1961
2007
  },
1962
2008
  }]
@@ -2318,6 +2364,7 @@ class ChipComponent {
2318
2364
  ...(ngDevMode ? [{ debugName: "_imageLoadFailed" }] : /* istanbul ignore next */ []));
2319
2365
  imageLoadFailed = this._imageLoadFailed.asReadonly();
2320
2366
  constructor() {
2367
+ blockClicksWhileDisabled(this.disabled);
2321
2368
  effect(() => {
2322
2369
  this.image();
2323
2370
  this._imageLoadFailed.set(false);
@@ -2617,8 +2664,8 @@ class MessageComponent {
2617
2664
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: MessageComponent, isStandalone: true, selector: "f-message", inputs: { severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null }, life: { classPropertyName: "life", publicName: "life", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onClose: "onClose" }, host: { properties: { "style.display": "visible() ? null : 'none'" }, classAttribute: "block" }, ngImport: i0, template: `
2618
2665
  <div [class]="classes()" role="alert">
2619
2666
  <ui-icon [name]="iconName()" [class]="'mt-0.5 shrink-0 ' + iconColor()"></ui-icon>
2620
- <div class="flex-1 min-w-0">
2621
- @if (text()) { <span class="text-sm leading-snug" [innerHTML]="text()"></span> }
2667
+ <div class="flex-1 min-w-0 text-sm leading-snug">
2668
+ @if (text()) { <span [innerHTML]="text()"></span> }
2622
2669
  <ng-content />
2623
2670
  </div>
2624
2671
  @if (closable()) {
@@ -2646,8 +2693,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
2646
2693
  template: `
2647
2694
  <div [class]="classes()" role="alert">
2648
2695
  <ui-icon [name]="iconName()" [class]="'mt-0.5 shrink-0 ' + iconColor()"></ui-icon>
2649
- <div class="flex-1 min-w-0">
2650
- @if (text()) { <span class="text-sm leading-snug" [innerHTML]="text()"></span> }
2696
+ <div class="flex-1 min-w-0 text-sm leading-snug">
2697
+ @if (text()) { <span [innerHTML]="text()"></span> }
2651
2698
  <ng-content />
2652
2699
  </div>
2653
2700
  @if (closable()) {
@@ -3432,6 +3479,7 @@ function attachOverlayPosition(anchor, panel, options = {}) {
3432
3479
  class SelectComponent {
3433
3480
  _el = inject(ElementRef);
3434
3481
  constructor() {
3482
+ blockClicksWhileDisabled(this.isDisabled);
3435
3483
  afterNextRender(() => {
3436
3484
  if (!this.autofocus())
3437
3485
  return;
@@ -3466,6 +3514,10 @@ class SelectComponent {
3466
3514
  placeholder = input('Select', /* @ts-ignore */
3467
3515
  ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
3468
3516
  disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
3517
+ _formDisabled = signal(false, /* @ts-ignore */
3518
+ ...(ngDevMode ? [{ debugName: "_formDisabled" }] : /* istanbul ignore next */ []));
3519
+ isDisabled = computed(() => this.disabled() || this._formDisabled(), /* @ts-ignore */
3520
+ ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
3469
3521
  filter = input(false, { ...(ngDevMode ? { debugName: "filter" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
3470
3522
  filterBy = input('', /* @ts-ignore */
3471
3523
  ...(ngDevMode ? [{ debugName: "filterBy" }] : /* istanbul ignore next */ []));
@@ -3761,7 +3813,7 @@ class SelectComponent {
3761
3813
  : showInvalid
3762
3814
  ? 'border-red-400 hover:border-red-300'
3763
3815
  : 'border-(--f-form-field-border-color) hover:border-(--f-form-field-hover-border-color)';
3764
- const disabledClass = this.disabled()
3816
+ const disabledClass = this.isDisabled()
3765
3817
  ? 'opacity-60 cursor-not-allowed'
3766
3818
  : this.readonly()
3767
3819
  ? 'cursor-default'
@@ -3814,7 +3866,7 @@ class SelectComponent {
3814
3866
  this.onClear.emit();
3815
3867
  }
3816
3868
  toggleOpen() {
3817
- if (this.disabled() || this.loading() || this.readonly())
3869
+ if (this.isDisabled() || this.loading() || this.readonly())
3818
3870
  return;
3819
3871
  if (this.open())
3820
3872
  this.closeList();
@@ -3886,7 +3938,7 @@ class SelectComponent {
3886
3938
  this._focusedOptionIndex.set(opts.indexOf(match));
3887
3939
  }
3888
3940
  onTriggerKeyDown(event) {
3889
- if (this.disabled() || this.loading())
3941
+ if (this.isDisabled() || this.loading())
3890
3942
  return;
3891
3943
  switch (event.key) {
3892
3944
  case 'ArrowDown':
@@ -3960,7 +4012,7 @@ class SelectComponent {
3960
4012
  registerOnTouched(fn) {
3961
4013
  this._onTouched = fn;
3962
4014
  }
3963
- setDisabledState() { }
4015
+ setDisabledState(isDisabled) { this._formDisabled.set(isDisabled); }
3964
4016
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: SelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3965
4017
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: SelectComponent, isStandalone: true, selector: "f-select", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, optionLabel: { classPropertyName: "optionLabel", publicName: "optionLabel", isSignal: true, isRequired: false, transformFunction: null }, optionValue: { classPropertyName: "optionValue", publicName: "optionValue", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: false, transformFunction: null }, filterBy: { classPropertyName: "filterBy", publicName: "filterBy", isSignal: true, isRequired: false, transformFunction: null }, filterMatchMode: { classPropertyName: "filterMatchMode", publicName: "filterMatchMode", isSignal: true, isRequired: false, transformFunction: null }, filterLocale: { classPropertyName: "filterLocale", publicName: "filterLocale", isSignal: true, isRequired: false, transformFunction: null }, filterPlaceholder: { classPropertyName: "filterPlaceholder", publicName: "filterPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, resetFilterOnHide: { classPropertyName: "resetFilterOnHide", publicName: "resetFilterOnHide", isSignal: true, isRequired: false, transformFunction: null }, autofocusFilter: { classPropertyName: "autofocusFilter", publicName: "autofocusFilter", isSignal: true, isRequired: false, transformFunction: null }, emptyMessage: { classPropertyName: "emptyMessage", publicName: "emptyMessage", isSignal: true, isRequired: false, transformFunction: null }, emptyFilterMessage: { classPropertyName: "emptyFilterMessage", publicName: "emptyFilterMessage", isSignal: true, isRequired: false, transformFunction: null }, showClear: { classPropertyName: "showClear", publicName: "showClear", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, loadingIcon: { classPropertyName: "loadingIcon", publicName: "loadingIcon", isSignal: true, isRequired: false, transformFunction: null }, dropdownIcon: { classPropertyName: "dropdownIcon", publicName: "dropdownIcon", isSignal: true, isRequired: false, transformFunction: null }, clearIcon: { classPropertyName: "clearIcon", publicName: "clearIcon", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null }, editable: { classPropertyName: "editable", publicName: "editable", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, autofocus: { classPropertyName: "autofocus", publicName: "autofocus", isSignal: true, isRequired: false, transformFunction: null }, checkmark: { classPropertyName: "checkmark", publicName: "checkmark", isSignal: true, isRequired: false, transformFunction: null }, group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: false, transformFunction: null }, optionGroupLabel: { classPropertyName: "optionGroupLabel", publicName: "optionGroupLabel", isSignal: true, isRequired: false, transformFunction: null }, optionGroupChildren: { classPropertyName: "optionGroupChildren", publicName: "optionGroupChildren", isSignal: true, isRequired: false, transformFunction: null }, virtualScroll: { classPropertyName: "virtualScroll", publicName: "virtualScroll", isSignal: true, isRequired: false, transformFunction: null }, virtualScrollItemSize: { classPropertyName: "virtualScrollItemSize", publicName: "virtualScrollItemSize", isSignal: true, isRequired: false, transformFunction: null }, lazy: { classPropertyName: "lazy", publicName: "lazy", isSignal: true, isRequired: false, transformFunction: null }, selectedObject: { classPropertyName: "selectedObject", publicName: "selectedObject", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onFilter: "onFilter", onChange: "onChange", onShow: "onShow", onHide: "onHide", onBlur: "onBlur", onFocus: "onFocus", onClear: "onClear", onLazyLoad: "onLazyLoad" }, host: { listeners: { "document:click": "onDocumentClick($event)" }, properties: { "class": "hostClass()", "style": "style()" } }, providers: [
3966
4018
  {
@@ -3975,7 +4027,7 @@ class SelectComponent {
3975
4027
  type="button"
3976
4028
  data-select-trigger
3977
4029
  [id]="editable() ? null : inputId()"
3978
- [disabled]="disabled() || loading()"
4030
+ [disabled]="isDisabled() || loading()"
3979
4031
  (click)="toggleOpen()"
3980
4032
  (keydown)="onTriggerKeyDown($event)"
3981
4033
  (focus)="onFocus.emit($event)"
@@ -4017,7 +4069,7 @@ class SelectComponent {
4017
4069
  >
4018
4070
  }
4019
4071
  <span class="flex items-center gap-1 shrink-0">
4020
- @if (showClear() && value() != null && !disabled() && !readonly()) {
4072
+ @if (showClear() && value() != null && !isDisabled() && !readonly()) {
4021
4073
  <ui-icon
4022
4074
  [name]="clearIcon()"
4023
4075
  class="text-xs text-(--f-form-field-placeholder-color) hover:text-(--f-text-color) shrink-0"
@@ -4228,7 +4280,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
4228
4280
  type="button"
4229
4281
  data-select-trigger
4230
4282
  [id]="editable() ? null : inputId()"
4231
- [disabled]="disabled() || loading()"
4283
+ [disabled]="isDisabled() || loading()"
4232
4284
  (click)="toggleOpen()"
4233
4285
  (keydown)="onTriggerKeyDown($event)"
4234
4286
  (focus)="onFocus.emit($event)"
@@ -4270,7 +4322,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
4270
4322
  >
4271
4323
  }
4272
4324
  <span class="flex items-center gap-1 shrink-0">
4273
- @if (showClear() && value() != null && !disabled() && !readonly()) {
4325
+ @if (showClear() && value() != null && !isDisabled() && !readonly()) {
4274
4326
  <ui-icon
4275
4327
  [name]="clearIcon()"
4276
4328
  class="text-xs text-(--f-form-field-placeholder-color) hover:text-(--f-text-color) shrink-0"
@@ -4462,6 +4514,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
4462
4514
  class MultiSelectComponent {
4463
4515
  _el = inject(ElementRef);
4464
4516
  constructor() {
4517
+ blockClicksWhileDisabled(this.isDisabled);
4465
4518
  afterNextRender(() => {
4466
4519
  if (!this.autofocus())
4467
4520
  return;
@@ -4505,7 +4558,7 @@ class MultiSelectComponent {
4505
4558
  panelStyle = computed(() => this.appendTo() === 'body' ? overlayPlacementStyle(this._placement()) : {}, /* @ts-ignore */
4506
4559
  ...(ngDevMode ? [{ debugName: "panelStyle" }] : /* istanbul ignore next */ []));
4507
4560
  triggerClass = computed(() => {
4508
- const base = 'w-full min-h-[34px] flex items-center gap-2 f-field-compact text-sm border bg-(--f-form-field-background) focus:outline-none focus-visible:ring-focus transition-all duration-[var(--f-transition-duration)]';
4561
+ const base = 'w-full flex items-center gap-2 f-field-compact text-sm border bg-(--f-form-field-background) focus:outline-none focus-visible:ring-focus transition-all duration-[var(--f-transition-duration)]';
4509
4562
  const showInvalid = this.invalid() && this.touched();
4510
4563
  const stateClass = this.open()
4511
4564
  ? showInvalid
@@ -4514,7 +4567,7 @@ class MultiSelectComponent {
4514
4567
  : showInvalid
4515
4568
  ? 'border-red-400 hover:border-red-300'
4516
4569
  : 'border-(--f-form-field-border-color) hover:border-(--f-form-field-hover-border-color)';
4517
- const disabledClass = this.disabled()
4570
+ const disabledClass = this.isDisabled()
4518
4571
  ? 'opacity-60 cursor-not-allowed'
4519
4572
  : this.readonly()
4520
4573
  ? 'cursor-default'
@@ -4531,6 +4584,10 @@ class MultiSelectComponent {
4531
4584
  placeholder = input('Select', /* @ts-ignore */
4532
4585
  ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
4533
4586
  disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
4587
+ _formDisabled = signal(false, /* @ts-ignore */
4588
+ ...(ngDevMode ? [{ debugName: "_formDisabled" }] : /* istanbul ignore next */ []));
4589
+ isDisabled = computed(() => this.disabled() || this._formDisabled(), /* @ts-ignore */
4590
+ ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
4534
4591
  filter = input(false, { ...(ngDevMode ? { debugName: "filter" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
4535
4592
  filterBy = input('', /* @ts-ignore */
4536
4593
  ...(ngDevMode ? [{ debugName: "filterBy" }] : /* istanbul ignore next */ []));
@@ -4817,7 +4874,7 @@ class MultiSelectComponent {
4817
4874
  commaLabel = computed(() => this.selectedLabels().join(', '), /* @ts-ignore */
4818
4875
  ...(ngDevMode ? [{ debugName: "commaLabel" }] : /* istanbul ignore next */ []));
4819
4876
  toggleOpen() {
4820
- if (this.disabled() || this.loading() || this.readonly())
4877
+ if (this.isDisabled() || this.loading() || this.readonly())
4821
4878
  return;
4822
4879
  if (this.open())
4823
4880
  this.closeList();
@@ -4929,7 +4986,7 @@ class MultiSelectComponent {
4929
4986
  this._focusedOptionIndex.set(opts.indexOf(match));
4930
4987
  }
4931
4988
  onTriggerKeyDown(event) {
4932
- if (this.disabled() || this.loading())
4989
+ if (this.isDisabled() || this.loading())
4933
4990
  return;
4934
4991
  switch (event.key) {
4935
4992
  case 'ArrowDown':
@@ -5003,7 +5060,7 @@ class MultiSelectComponent {
5003
5060
  registerOnTouched(fn) {
5004
5061
  this._onTouched = fn;
5005
5062
  }
5006
- setDisabledState() { }
5063
+ setDisabledState(isDisabled) { this._formDisabled.set(isDisabled); }
5007
5064
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: MultiSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5008
5065
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: MultiSelectComponent, isStandalone: true, selector: "f-multiselect", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, optionLabel: { classPropertyName: "optionLabel", publicName: "optionLabel", isSignal: true, isRequired: false, transformFunction: null }, optionValue: { classPropertyName: "optionValue", publicName: "optionValue", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: false, transformFunction: null }, filterBy: { classPropertyName: "filterBy", publicName: "filterBy", isSignal: true, isRequired: false, transformFunction: null }, filterMatchMode: { classPropertyName: "filterMatchMode", publicName: "filterMatchMode", isSignal: true, isRequired: false, transformFunction: null }, filterLocale: { classPropertyName: "filterLocale", publicName: "filterLocale", isSignal: true, isRequired: false, transformFunction: null }, filterPlaceholder: { classPropertyName: "filterPlaceholder", publicName: "filterPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, resetFilterOnHide: { classPropertyName: "resetFilterOnHide", publicName: "resetFilterOnHide", isSignal: true, isRequired: false, transformFunction: null }, autofocusFilter: { classPropertyName: "autofocusFilter", publicName: "autofocusFilter", isSignal: true, isRequired: false, transformFunction: null }, emptyMessage: { classPropertyName: "emptyMessage", publicName: "emptyMessage", isSignal: true, isRequired: false, transformFunction: null }, emptyFilterMessage: { classPropertyName: "emptyFilterMessage", publicName: "emptyFilterMessage", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, showClear: { classPropertyName: "showClear", publicName: "showClear", isSignal: true, isRequired: false, transformFunction: null }, optionDisabled: { classPropertyName: "optionDisabled", publicName: "optionDisabled", isSignal: true, isRequired: false, transformFunction: null }, display: { classPropertyName: "display", publicName: "display", isSignal: true, isRequired: false, transformFunction: null }, maxSelectedLabels: { classPropertyName: "maxSelectedLabels", publicName: "maxSelectedLabels", isSignal: true, isRequired: false, transformFunction: null }, selectionLimit: { classPropertyName: "selectionLimit", publicName: "selectionLimit", isSignal: true, isRequired: false, transformFunction: null }, showToggleAll: { classPropertyName: "showToggleAll", publicName: "showToggleAll", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, autofocus: { classPropertyName: "autofocus", publicName: "autofocus", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, loadingIcon: { classPropertyName: "loadingIcon", publicName: "loadingIcon", isSignal: true, isRequired: false, transformFunction: null }, dropdownIcon: { classPropertyName: "dropdownIcon", publicName: "dropdownIcon", isSignal: true, isRequired: false, transformFunction: null }, clearIcon: { classPropertyName: "clearIcon", publicName: "clearIcon", isSignal: true, isRequired: false, transformFunction: null }, group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: false, transformFunction: null }, optionGroupLabel: { classPropertyName: "optionGroupLabel", publicName: "optionGroupLabel", isSignal: true, isRequired: false, transformFunction: null }, optionGroupChildren: { classPropertyName: "optionGroupChildren", publicName: "optionGroupChildren", isSignal: true, isRequired: false, transformFunction: null }, virtualScroll: { classPropertyName: "virtualScroll", publicName: "virtualScroll", isSignal: true, isRequired: false, transformFunction: null }, virtualScrollItemSize: { classPropertyName: "virtualScrollItemSize", publicName: "virtualScrollItemSize", isSignal: true, isRequired: false, transformFunction: null }, lazy: { classPropertyName: "lazy", publicName: "lazy", isSignal: true, isRequired: false, transformFunction: null }, selectedObjects: { classPropertyName: "selectedObjects", publicName: "selectedObjects", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onBlur: "onBlur", onFocus: "onFocus", onChange: "onChange", onFilter: "onFilter", onShow: "onShow", onHide: "onHide", onClear: "onClear", onLazyLoad: "onLazyLoad", onSelectAllChange: "onSelectAllChange" }, host: { listeners: { "document:click": "onDocumentClick($event)" }, properties: { "class": "hostClass()", "style": "style()" } }, providers: [
5009
5066
  {
@@ -5017,7 +5074,7 @@ class MultiSelectComponent {
5017
5074
  #trigger
5018
5075
  tabindex="0"
5019
5076
  [id]="inputId()"
5020
- [attr.aria-disabled]="disabled() || loading() ? true : null"
5077
+ [attr.aria-disabled]="isDisabled() || loading() ? true : null"
5021
5078
  (click)="toggleOpen()"
5022
5079
  (keydown)="onTriggerKeyDown($event)"
5023
5080
  (focus)="onFocus.emit($event)"
@@ -5055,7 +5112,7 @@ class MultiSelectComponent {
5055
5112
  } @else {
5056
5113
  {{ getOptionLabel(opt) }}
5057
5114
  }
5058
- @if (!disabled() && !readonly()) {
5115
+ @if (!isDisabled() && !readonly()) {
5059
5116
  <button
5060
5117
  type="button"
5061
5118
  aria-label="Remove"
@@ -5075,7 +5132,7 @@ class MultiSelectComponent {
5075
5132
  }}</span>
5076
5133
  }
5077
5134
  <span class="flex items-center gap-1 shrink-0 ml-auto">
5078
- @if (showClear() && values().length && !disabled() && !readonly()) {
5135
+ @if (showClear() && values().length && !isDisabled() && !readonly()) {
5079
5136
  <ui-icon
5080
5137
  [name]="clearIcon()"
5081
5138
  class="text-xs text-(--f-form-field-placeholder-color) hover:text-(--f-text-color) shrink-0"
@@ -5320,7 +5377,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
5320
5377
  #trigger
5321
5378
  tabindex="0"
5322
5379
  [id]="inputId()"
5323
- [attr.aria-disabled]="disabled() || loading() ? true : null"
5380
+ [attr.aria-disabled]="isDisabled() || loading() ? true : null"
5324
5381
  (click)="toggleOpen()"
5325
5382
  (keydown)="onTriggerKeyDown($event)"
5326
5383
  (focus)="onFocus.emit($event)"
@@ -5358,7 +5415,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
5358
5415
  } @else {
5359
5416
  {{ getOptionLabel(opt) }}
5360
5417
  }
5361
- @if (!disabled() && !readonly()) {
5418
+ @if (!isDisabled() && !readonly()) {
5362
5419
  <button
5363
5420
  type="button"
5364
5421
  aria-label="Remove"
@@ -5378,7 +5435,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
5378
5435
  }}</span>
5379
5436
  }
5380
5437
  <span class="flex items-center gap-1 shrink-0 ml-auto">
5381
- @if (showClear() && values().length && !disabled() && !readonly()) {
5438
+ @if (showClear() && values().length && !isDisabled() && !readonly()) {
5382
5439
  <ui-icon
5383
5440
  [name]="clearIcon()"
5384
5441
  class="text-xs text-(--f-form-field-placeholder-color) hover:text-(--f-text-color) shrink-0"
@@ -5607,6 +5664,13 @@ class CheckboxComponent {
5607
5664
  ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
5608
5665
  binary = input(true, { ...(ngDevMode ? { debugName: "binary" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
5609
5666
  disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
5667
+ _formDisabled = signal(false, /* @ts-ignore */
5668
+ ...(ngDevMode ? [{ debugName: "_formDisabled" }] : /* istanbul ignore next */ []));
5669
+ isDisabled = computed(() => this.disabled() || this._formDisabled(), /* @ts-ignore */
5670
+ ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
5671
+ constructor() {
5672
+ blockClicksWhileDisabled(this.isDisabled);
5673
+ }
5610
5674
  readonly = input(false, { ...(ngDevMode ? { debugName: "readonly" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
5611
5675
  inputId = input('', /* @ts-ignore */
5612
5676
  ...(ngDevMode ? [{ debugName: "inputId" }] : /* istanbul ignore next */ []));
@@ -5668,17 +5732,17 @@ class CheckboxComponent {
5668
5732
  writeValue(val) { this.checked.set(!!val); }
5669
5733
  registerOnChange(fn) { this._onChange = fn; }
5670
5734
  registerOnTouched(fn) { this._onTouched = fn; }
5671
- setDisabledState() { }
5735
+ setDisabledState(isDisabled) { this._formDisabled.set(isDisabled); }
5672
5736
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: CheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5673
5737
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: CheckboxComponent, isStandalone: true, selector: "f-checkbox", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, binary: { classPropertyName: "binary", publicName: "binary", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, indeterminate: { classPropertyName: "indeterminate", publicName: "indeterminate", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onChangeEvent: "onChange", onBlur: "onBlur", touch: "touch", checked: "checkedChange" }, host: { properties: { "class": "hostClass()", "style": "style()" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => CheckboxComponent), multi: true }], ngImport: i0, template: `
5674
- <label class="inline-flex items-center gap-2 cursor-pointer select-none" [class.opacity-60]="disabled()" [class.pointer-events-none]="disabled()">
5738
+ <label class="inline-flex items-center gap-2 cursor-pointer select-none" [class.opacity-60]="isDisabled()" [class.pointer-events-none]="isDisabled()">
5675
5739
  <div class="relative shrink-0">
5676
5740
  <input
5677
5741
  type="checkbox"
5678
5742
  class="sr-only peer"
5679
5743
  [id]="inputId()"
5680
5744
  [checked]="checked()"
5681
- [disabled]="disabled()"
5745
+ [disabled]="isDisabled()"
5682
5746
  [indeterminate]="indeterminate()"
5683
5747
  [attr.aria-checked]="indeterminate() ? 'mixed' : checked()"
5684
5748
  [attr.aria-readonly]="readonly() || null"
@@ -5708,14 +5772,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
5708
5772
  providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => CheckboxComponent), multi: true }],
5709
5773
  host: { '[class]': 'hostClass()', '[style]': 'style()' },
5710
5774
  template: `
5711
- <label class="inline-flex items-center gap-2 cursor-pointer select-none" [class.opacity-60]="disabled()" [class.pointer-events-none]="disabled()">
5775
+ <label class="inline-flex items-center gap-2 cursor-pointer select-none" [class.opacity-60]="isDisabled()" [class.pointer-events-none]="isDisabled()">
5712
5776
  <div class="relative shrink-0">
5713
5777
  <input
5714
5778
  type="checkbox"
5715
5779
  class="sr-only peer"
5716
5780
  [id]="inputId()"
5717
5781
  [checked]="checked()"
5718
- [disabled]="disabled()"
5782
+ [disabled]="isDisabled()"
5719
5783
  [indeterminate]="indeterminate()"
5720
5784
  [attr.aria-checked]="indeterminate() ? 'mixed' : checked()"
5721
5785
  [attr.aria-readonly]="readonly() || null"
@@ -5737,7 +5801,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
5737
5801
  </label>
5738
5802
  `,
5739
5803
  }]
5740
- }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], binary: [{ type: i0.Input, args: [{ isSignal: true, alias: "binary", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], indeterminate: [{ type: i0.Input, args: [{ isSignal: true, alias: "indeterminate", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], onChangeEvent: [{ type: i0.Output, args: ["onChange"] }], onBlur: [{ type: i0.Output, args: ["onBlur"] }], touch: [{ type: i0.Output, args: ["touch"] }], checked: [{ type: i0.Input, args: [{ isSignal: true, alias: "checked", required: false }] }, { type: i0.Output, args: ["checkedChange"] }] } });
5804
+ }], ctorParameters: () => [], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], binary: [{ type: i0.Input, args: [{ isSignal: true, alias: "binary", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], indeterminate: [{ type: i0.Input, args: [{ isSignal: true, alias: "indeterminate", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], onChangeEvent: [{ type: i0.Output, args: ["onChange"] }], onBlur: [{ type: i0.Output, args: ["onBlur"] }], touch: [{ type: i0.Output, args: ["touch"] }], checked: [{ type: i0.Input, args: [{ isSignal: true, alias: "checked", required: false }] }, { type: i0.Output, args: ["checkedChange"] }] } });
5741
5805
 
5742
5806
  class ToggleSwitchComponent {
5743
5807
  disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
@@ -5765,6 +5829,9 @@ class ToggleSwitchComponent {
5765
5829
  ...(ngDevMode ? [{ debugName: "_formDisabled" }] : /* istanbul ignore next */ []));
5766
5830
  isDisabled = computed(() => this.disabled() || this._formDisabled(), /* @ts-ignore */
5767
5831
  ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
5832
+ constructor() {
5833
+ blockClicksWhileDisabled(this.isDisabled);
5834
+ }
5768
5835
  _onChange = () => { };
5769
5836
  _onTouched = () => { };
5770
5837
  hostClass = computed(() => `inline-block ${this.styleClass()}`, /* @ts-ignore */
@@ -5837,7 +5904,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
5837
5904
  </button>
5838
5905
  `,
5839
5906
  }]
5840
- }], propDecorators: { disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], trueValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "trueValue", required: false }] }], falseValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "falseValue", required: false }] }], inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], tabindex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabindex", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }] } });
5907
+ }], ctorParameters: () => [], propDecorators: { disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], trueValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "trueValue", required: false }] }], falseValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "falseValue", required: false }] }], inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], tabindex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabindex", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }] } });
5841
5908
 
5842
5909
  class ToggleButtonComponent {
5843
5910
  onLabel = input('Yes', /* @ts-ignore */
@@ -5855,6 +5922,13 @@ class ToggleButtonComponent {
5855
5922
  size = input(null, /* @ts-ignore */
5856
5923
  ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
5857
5924
  disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
5925
+ _formDisabled = signal(false, /* @ts-ignore */
5926
+ ...(ngDevMode ? [{ debugName: "_formDisabled" }] : /* istanbul ignore next */ []));
5927
+ isDisabled = computed(() => this.disabled() || this._formDisabled(), /* @ts-ignore */
5928
+ ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
5929
+ constructor() {
5930
+ blockClicksWhileDisabled(this.isDisabled);
5931
+ }
5858
5932
  readonly = input(false, { ...(ngDevMode ? { debugName: "readonly" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
5859
5933
  invalid = input(false, { ...(ngDevMode ? { debugName: "invalid" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
5860
5934
  ariaLabel = input('', /* @ts-ignore */
@@ -5881,7 +5955,7 @@ class ToggleButtonComponent {
5881
5955
  }, /* @ts-ignore */
5882
5956
  ...(ngDevMode ? [{ debugName: "buttonClass" }] : /* istanbul ignore next */ []));
5883
5957
  toggle() {
5884
- if (this.disabled() || this.readonly())
5958
+ if (this.isDisabled() || this.readonly())
5885
5959
  return;
5886
5960
  const v = !this.checked();
5887
5961
  this._checked.set(v);
@@ -5891,17 +5965,17 @@ class ToggleButtonComponent {
5891
5965
  writeValue(v) { this._checked.set(!!v); }
5892
5966
  registerOnChange(fn) { this._onChange = fn; }
5893
5967
  registerOnTouched(fn) { this._onTouched = fn; }
5894
- setDisabledState() { }
5968
+ setDisabledState(isDisabled) { this._formDisabled.set(isDisabled); }
5895
5969
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: ToggleButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5896
5970
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: ToggleButtonComponent, isStandalone: true, selector: "f-togglebutton", inputs: { onLabel: { classPropertyName: "onLabel", publicName: "onLabel", isSignal: true, isRequired: false, transformFunction: null }, offLabel: { classPropertyName: "offLabel", publicName: "offLabel", isSignal: true, isRequired: false, transformFunction: null }, onIcon: { classPropertyName: "onIcon", publicName: "onIcon", isSignal: true, isRequired: false, transformFunction: null }, offIcon: { classPropertyName: "offIcon", publicName: "offIcon", isSignal: true, isRequired: false, transformFunction: null }, iconPos: { classPropertyName: "iconPos", publicName: "iconPos", isSignal: true, isRequired: false, transformFunction: null }, severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, tabindex: { classPropertyName: "tabindex", publicName: "tabindex", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClass()", "style": "style()" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ToggleButtonComponent), multi: true }], ngImport: i0, template: `
5897
5971
  <button
5898
5972
  type="button"
5899
5973
  [class]="buttonClass()"
5900
- [disabled]="disabled()"
5974
+ [disabled]="isDisabled()"
5901
5975
  [attr.aria-pressed]="checked()"
5902
5976
  [attr.aria-readonly]="readonly() || null"
5903
5977
  [attr.aria-label]="ariaLabel() || null"
5904
- [attr.tabindex]="disabled() ? -1 : tabindex()"
5978
+ [attr.tabindex]="isDisabled() ? -1 : tabindex()"
5905
5979
  role="switch"
5906
5980
  (click)="toggle()"
5907
5981
  >
@@ -5909,7 +5983,7 @@ class ToggleButtonComponent {
5909
5983
  @if (checked() && onIcon()) { <ui-icon [name]="onIcon()" class="text-sm"></ui-icon> }
5910
5984
  @if (!checked() && offIcon()) { <ui-icon [name]="offIcon()" class="text-sm"></ui-icon> }
5911
5985
  }
5912
- <span class="leading-none">{{ checked() ? onLabel() : offLabel() }}</span>
5986
+ <span>{{ checked() ? onLabel() : offLabel() }}</span>
5913
5987
  @if (iconPos() === 'right') {
5914
5988
  @if (checked() && onIcon()) { <ui-icon [name]="onIcon()" class="text-sm"></ui-icon> }
5915
5989
  @if (!checked() && offIcon()) { <ui-icon [name]="offIcon()" class="text-sm"></ui-icon> }
@@ -5928,11 +6002,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
5928
6002
  <button
5929
6003
  type="button"
5930
6004
  [class]="buttonClass()"
5931
- [disabled]="disabled()"
6005
+ [disabled]="isDisabled()"
5932
6006
  [attr.aria-pressed]="checked()"
5933
6007
  [attr.aria-readonly]="readonly() || null"
5934
6008
  [attr.aria-label]="ariaLabel() || null"
5935
- [attr.tabindex]="disabled() ? -1 : tabindex()"
6009
+ [attr.tabindex]="isDisabled() ? -1 : tabindex()"
5936
6010
  role="switch"
5937
6011
  (click)="toggle()"
5938
6012
  >
@@ -5940,7 +6014,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
5940
6014
  @if (checked() && onIcon()) { <ui-icon [name]="onIcon()" class="text-sm"></ui-icon> }
5941
6015
  @if (!checked() && offIcon()) { <ui-icon [name]="offIcon()" class="text-sm"></ui-icon> }
5942
6016
  }
5943
- <span class="leading-none">{{ checked() ? onLabel() : offLabel() }}</span>
6017
+ <span>{{ checked() ? onLabel() : offLabel() }}</span>
5944
6018
  @if (iconPos() === 'right') {
5945
6019
  @if (checked() && onIcon()) { <ui-icon [name]="onIcon()" class="text-sm"></ui-icon> }
5946
6020
  @if (!checked() && offIcon()) { <ui-icon [name]="offIcon()" class="text-sm"></ui-icon> }
@@ -5948,7 +6022,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
5948
6022
  </button>
5949
6023
  `,
5950
6024
  }]
5951
- }], propDecorators: { onLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "onLabel", required: false }] }], offLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "offLabel", required: false }] }], onIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "onIcon", required: false }] }], offIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "offIcon", required: false }] }], iconPos: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconPos", required: false }] }], severity: [{ type: i0.Input, args: [{ isSignal: true, alias: "severity", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], tabindex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabindex", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }] } });
6025
+ }], ctorParameters: () => [], propDecorators: { onLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "onLabel", required: false }] }], offLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "offLabel", required: false }] }], onIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "onIcon", required: false }] }], offIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "offIcon", required: false }] }], iconPos: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconPos", required: false }] }], severity: [{ type: i0.Input, args: [{ isSignal: true, alias: "severity", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], tabindex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabindex", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }] } });
5952
6026
 
5953
6027
  class SelectButtonComponent {
5954
6028
  options = input([], /* @ts-ignore */
@@ -5961,6 +6035,13 @@ class SelectButtonComponent {
5961
6035
  ...(ngDevMode ? [{ debugName: "optionDisabled" }] : /* istanbul ignore next */ []));
5962
6036
  multiple = input(false, { ...(ngDevMode ? { debugName: "multiple" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
5963
6037
  disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
6038
+ _formDisabled = signal(false, /* @ts-ignore */
6039
+ ...(ngDevMode ? [{ debugName: "_formDisabled" }] : /* istanbul ignore next */ []));
6040
+ isDisabled = computed(() => this.disabled() || this._formDisabled(), /* @ts-ignore */
6041
+ ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
6042
+ constructor() {
6043
+ blockClicksWhileDisabled(this.isDisabled);
6044
+ }
5964
6045
  invalid = input(false, { ...(ngDevMode ? { debugName: "invalid" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
5965
6046
  allowEmpty = input(true, { ...(ngDevMode ? { debugName: "allowEmpty" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
5966
6047
  size = input('', /* @ts-ignore */
@@ -6002,7 +6083,7 @@ class SelectButtonComponent {
6002
6083
  return this.multiple() ? this._values().includes(v) : this._value() === v;
6003
6084
  }
6004
6085
  select(opt, event) {
6005
- if (this.disabled() || this.getOptionDisabled(opt))
6086
+ if (this.isDisabled() || this.getOptionDisabled(opt))
6006
6087
  return;
6007
6088
  const v = this.getOptionValue(opt);
6008
6089
  if (this.multiple()) {
@@ -6052,7 +6133,7 @@ class SelectButtonComponent {
6052
6133
  }
6053
6134
  registerOnChange(fn) { this._onChange = fn; }
6054
6135
  registerOnTouched(fn) { this._onTouched = fn; }
6055
- setDisabledState() { }
6136
+ setDisabledState(isDisabled) { this._formDisabled.set(isDisabled); }
6056
6137
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: SelectButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6057
6138
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: SelectButtonComponent, isStandalone: true, selector: "f-selectbutton", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, optionLabel: { classPropertyName: "optionLabel", publicName: "optionLabel", isSignal: true, isRequired: false, transformFunction: null }, optionValue: { classPropertyName: "optionValue", publicName: "optionValue", isSignal: true, isRequired: false, transformFunction: null }, optionDisabled: { classPropertyName: "optionDisabled", publicName: "optionDisabled", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, allowEmpty: { classPropertyName: "allowEmpty", publicName: "allowEmpty", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onChange: "onChange" }, host: { properties: { "class": "hostClass()", "style": "style()" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SelectButtonComponent), multi: true }], ngImport: i0, template: `
6058
6139
  <div
@@ -6068,15 +6149,15 @@ class SelectButtonComponent {
6068
6149
  role="button"
6069
6150
  class="f-selectbutton-item"
6070
6151
  [class.f-selectbutton-item-checked]="isSelected(opt)"
6071
- [disabled]="disabled() || getOptionDisabled(opt)"
6152
+ [disabled]="isDisabled() || getOptionDisabled(opt)"
6072
6153
  [attr.aria-pressed]="isSelected(opt)"
6073
- [attr.aria-disabled]="disabled() || getOptionDisabled(opt) || null"
6154
+ [attr.aria-disabled]="isDisabled() || getOptionDisabled(opt) || null"
6074
6155
  (click)="select(opt, $event)"
6075
6156
  (keydown)="onKeydown($event)"
6076
6157
  >{{ getOptionLabel(opt) }}</button>
6077
6158
  }
6078
6159
  </div>
6079
- `, isInline: true, styles: [".f-selectbutton{display:inline-flex;align-items:stretch;background:var(--f-selectbutton-background);border:1px solid var(--f-selectbutton-border-color);border-radius:var(--f-border-radius-md);padding:var(--f-selectbutton-padding);overflow:hidden}.f-selectbutton-invalid{border-color:var(--f-red-500)}.f-selectbutton-item{border:0;border-inline-start:1px solid var(--f-selectbutton-divider-color);border-radius:var(--f-selectbutton-item-border-radius);background:transparent;color:var(--f-selectbutton-item-color);font-weight:var(--f-selectbutton-font-weight);font-size:.875rem;padding:.45rem .875rem;cursor:pointer;transition:background-color var(--f-transition-duration),color var(--f-transition-duration),box-shadow var(--f-transition-duration)}.f-selectbutton-item:first-child{border-inline-start:0}.f-selectbutton-item:not(.f-selectbutton-item-checked):hover:not(:disabled){color:var(--f-text-color);background:var(--f-selectbutton-item-hover-background)}.f-selectbutton-item:focus-visible{outline-width:var(--f-focus-ring-width);outline-style:var(--f-focus-ring-style);outline-offset:var(--f-focus-ring-offset);outline-color:var(--f-focus-ring-color)}.f-selectbutton-item-checked{background:var(--f-selectbutton-checked-background);color:var(--f-selectbutton-checked-color);box-shadow:var(--f-selectbutton-checked-shadow)}.f-selectbutton-item:disabled{opacity:.6;cursor:default}.f-selectbutton-sm .f-selectbutton-item{font-size:.8125rem;padding:.3rem .7rem}.f-selectbutton-lg .f-selectbutton-item{font-size:.9375rem;padding:.6rem 1.05rem}\n"] });
6160
+ `, isInline: true, styles: [".f-selectbutton{display:inline-flex;align-items:stretch;background:var(--f-selectbutton-background);border:1px solid var(--f-selectbutton-border-color);border-radius:var(--f-border-radius-md);padding:var(--f-selectbutton-padding);overflow:hidden}.f-selectbutton-invalid{border-color:var(--f-red-500)}.f-selectbutton-item{border:0;border-inline-start:1px solid var(--f-selectbutton-divider-color);border-radius:var(--f-selectbutton-item-border-radius);background:transparent;color:var(--f-selectbutton-item-color);font-weight:var(--f-selectbutton-font-weight);font-size:.875rem;line-height:1.25rem;padding:max(0px,calc(var(--f-field-padding-y) - var(--f-selectbutton-padding))) .875rem;cursor:pointer;transition:background-color var(--f-transition-duration),color var(--f-transition-duration),box-shadow var(--f-transition-duration)}.f-selectbutton-item:first-child{border-inline-start:0}.f-selectbutton-item:not(.f-selectbutton-item-checked):hover:not(:disabled){color:var(--f-text-color);background:var(--f-selectbutton-item-hover-background)}.f-selectbutton-item:focus-visible{outline-width:var(--f-focus-ring-width);outline-style:var(--f-focus-ring-style);outline-offset:var(--f-focus-ring-offset);outline-color:var(--f-focus-ring-color)}.f-selectbutton-item-checked{background:var(--f-selectbutton-checked-background);color:var(--f-selectbutton-checked-color);box-shadow:var(--f-selectbutton-checked-shadow)}.f-selectbutton-item:disabled{opacity:.6;cursor:default}.f-selectbutton-sm .f-selectbutton-item{font-size:.75rem;line-height:1rem;padding:max(0px,calc(var(--f-field-padding-y) - .125rem - var(--f-selectbutton-padding))) .7rem}.f-selectbutton-lg .f-selectbutton-item{font-size:1rem;line-height:1.5rem;padding:max(0px,calc(var(--f-field-padding-y) + .25rem - var(--f-selectbutton-padding))) 1.05rem}\n"] });
6080
6161
  }
6081
6162
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: SelectButtonComponent, decorators: [{
6082
6163
  type: Component,
@@ -6094,21 +6175,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
6094
6175
  role="button"
6095
6176
  class="f-selectbutton-item"
6096
6177
  [class.f-selectbutton-item-checked]="isSelected(opt)"
6097
- [disabled]="disabled() || getOptionDisabled(opt)"
6178
+ [disabled]="isDisabled() || getOptionDisabled(opt)"
6098
6179
  [attr.aria-pressed]="isSelected(opt)"
6099
- [attr.aria-disabled]="disabled() || getOptionDisabled(opt) || null"
6180
+ [attr.aria-disabled]="isDisabled() || getOptionDisabled(opt) || null"
6100
6181
  (click)="select(opt, $event)"
6101
6182
  (keydown)="onKeydown($event)"
6102
6183
  >{{ getOptionLabel(opt) }}</button>
6103
6184
  }
6104
6185
  </div>
6105
- `, styles: [".f-selectbutton{display:inline-flex;align-items:stretch;background:var(--f-selectbutton-background);border:1px solid var(--f-selectbutton-border-color);border-radius:var(--f-border-radius-md);padding:var(--f-selectbutton-padding);overflow:hidden}.f-selectbutton-invalid{border-color:var(--f-red-500)}.f-selectbutton-item{border:0;border-inline-start:1px solid var(--f-selectbutton-divider-color);border-radius:var(--f-selectbutton-item-border-radius);background:transparent;color:var(--f-selectbutton-item-color);font-weight:var(--f-selectbutton-font-weight);font-size:.875rem;padding:.45rem .875rem;cursor:pointer;transition:background-color var(--f-transition-duration),color var(--f-transition-duration),box-shadow var(--f-transition-duration)}.f-selectbutton-item:first-child{border-inline-start:0}.f-selectbutton-item:not(.f-selectbutton-item-checked):hover:not(:disabled){color:var(--f-text-color);background:var(--f-selectbutton-item-hover-background)}.f-selectbutton-item:focus-visible{outline-width:var(--f-focus-ring-width);outline-style:var(--f-focus-ring-style);outline-offset:var(--f-focus-ring-offset);outline-color:var(--f-focus-ring-color)}.f-selectbutton-item-checked{background:var(--f-selectbutton-checked-background);color:var(--f-selectbutton-checked-color);box-shadow:var(--f-selectbutton-checked-shadow)}.f-selectbutton-item:disabled{opacity:.6;cursor:default}.f-selectbutton-sm .f-selectbutton-item{font-size:.8125rem;padding:.3rem .7rem}.f-selectbutton-lg .f-selectbutton-item{font-size:.9375rem;padding:.6rem 1.05rem}\n"] }]
6106
- }], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], optionLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionLabel", required: false }] }], optionValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionValue", required: false }] }], optionDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionDisabled", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], allowEmpty: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowEmpty", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], onChange: [{ type: i0.Output, args: ["onChange"] }] } });
6186
+ `, styles: [".f-selectbutton{display:inline-flex;align-items:stretch;background:var(--f-selectbutton-background);border:1px solid var(--f-selectbutton-border-color);border-radius:var(--f-border-radius-md);padding:var(--f-selectbutton-padding);overflow:hidden}.f-selectbutton-invalid{border-color:var(--f-red-500)}.f-selectbutton-item{border:0;border-inline-start:1px solid var(--f-selectbutton-divider-color);border-radius:var(--f-selectbutton-item-border-radius);background:transparent;color:var(--f-selectbutton-item-color);font-weight:var(--f-selectbutton-font-weight);font-size:.875rem;line-height:1.25rem;padding:max(0px,calc(var(--f-field-padding-y) - var(--f-selectbutton-padding))) .875rem;cursor:pointer;transition:background-color var(--f-transition-duration),color var(--f-transition-duration),box-shadow var(--f-transition-duration)}.f-selectbutton-item:first-child{border-inline-start:0}.f-selectbutton-item:not(.f-selectbutton-item-checked):hover:not(:disabled){color:var(--f-text-color);background:var(--f-selectbutton-item-hover-background)}.f-selectbutton-item:focus-visible{outline-width:var(--f-focus-ring-width);outline-style:var(--f-focus-ring-style);outline-offset:var(--f-focus-ring-offset);outline-color:var(--f-focus-ring-color)}.f-selectbutton-item-checked{background:var(--f-selectbutton-checked-background);color:var(--f-selectbutton-checked-color);box-shadow:var(--f-selectbutton-checked-shadow)}.f-selectbutton-item:disabled{opacity:.6;cursor:default}.f-selectbutton-sm .f-selectbutton-item{font-size:.75rem;line-height:1rem;padding:max(0px,calc(var(--f-field-padding-y) - .125rem - var(--f-selectbutton-padding))) .7rem}.f-selectbutton-lg .f-selectbutton-item{font-size:1rem;line-height:1.5rem;padding:max(0px,calc(var(--f-field-padding-y) + .25rem - var(--f-selectbutton-padding))) 1.05rem}\n"] }]
6187
+ }], ctorParameters: () => [], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], optionLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionLabel", required: false }] }], optionValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionValue", required: false }] }], optionDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionDisabled", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], allowEmpty: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowEmpty", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], onChange: [{ type: i0.Output, args: ["onChange"] }] } });
6107
6188
 
6108
6189
  class PasswordComponent {
6109
6190
  toggleMask = input(true, { ...(ngDevMode ? { debugName: "toggleMask" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
6110
6191
  feedback = input(false, { ...(ngDevMode ? { debugName: "feedback" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
6111
6192
  disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
6193
+ _formDisabled = signal(false, /* @ts-ignore */
6194
+ ...(ngDevMode ? [{ debugName: "_formDisabled" }] : /* istanbul ignore next */ []));
6195
+ isDisabled = computed(() => this.disabled() || this._formDisabled(), /* @ts-ignore */
6196
+ ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
6197
+ constructor() {
6198
+ blockClicksWhileDisabled(this.isDisabled);
6199
+ }
6112
6200
  placeholder = input('', /* @ts-ignore */
6113
6201
  ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
6114
6202
  inputId = input('', /* @ts-ignore */
@@ -6189,16 +6277,13 @@ class PasswordComponent {
6189
6277
  ? 'border-transparent'
6190
6278
  : 'border-(--f-form-field-border-color)';
6191
6279
  const variantClass = variant === 'filled' ? 'bg-(--f-form-field-filled-background)' : 'bg-(--f-form-field-background)';
6192
- const paddingY = size === 'small' ? 'py-1.5' : size === 'large' ? 'py-3' : 'py-2';
6280
+ const shape = size === 'small' ? 'f-field-sm' : size === 'large' ? 'f-field-lg' : 'f-field';
6193
6281
  const textSize = size === 'small' ? 'text-xs' : size === 'large' ? 'text-base' : 'text-sm';
6194
- const paddingLeft = size === 'small' ? 'pl-2.5' : size === 'large' ? 'pl-4' : 'pl-3';
6195
- const paddingRight = this.toggleMask()
6196
- ? (size === 'small' ? 'pr-8' : size === 'large' ? 'pr-11' : 'pr-10')
6197
- : (size === 'small' ? 'pr-2.5' : size === 'large' ? 'pr-4' : 'pr-3');
6282
+ const maskPadding = this.toggleMask() ? 'pr-[calc(var(--f-field-padding-x)+1.75rem)]!' : '';
6198
6283
  return [
6199
- 'block f-field-shape border',
6284
+ 'block border',
6200
6285
  this.fluid() ? 'w-full' : 'w-auto',
6201
- paddingLeft, paddingRight, paddingY, textSize,
6286
+ shape, maskPadding, textSize,
6202
6287
  variantClass,
6203
6288
  'text-(--f-form-field-color) placeholder:text-(--f-form-field-placeholder-color)',
6204
6289
  'focus:outline-none focus-visible:ring-focus',
@@ -6229,7 +6314,7 @@ class PasswordComponent {
6229
6314
  writeValue(v) { this._value.set(v ?? ''); }
6230
6315
  registerOnChange(fn) { this._onChange = fn; }
6231
6316
  registerOnTouched(fn) { this._onTouched = fn; }
6232
- setDisabledState() { }
6317
+ setDisabledState(isDisabled) { this._formDisabled.set(isDisabled); }
6233
6318
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: PasswordComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6234
6319
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: PasswordComponent, isStandalone: true, selector: "f-password", inputs: { toggleMask: { classPropertyName: "toggleMask", publicName: "toggleMask", isSignal: true, isRequired: false, transformFunction: null }, feedback: { classPropertyName: "feedback", publicName: "feedback", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, inputStyleClass: { classPropertyName: "inputStyleClass", publicName: "inputStyleClass", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedby: { classPropertyName: "ariaDescribedby", publicName: "ariaDescribedby", isSignal: true, isRequired: false, transformFunction: null }, autocomplete: { classPropertyName: "autocomplete", publicName: "autocomplete", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, fluid: { classPropertyName: "fluid", publicName: "fluid", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null }, promptLabel: { classPropertyName: "promptLabel", publicName: "promptLabel", isSignal: true, isRequired: false, transformFunction: null }, weakLabel: { classPropertyName: "weakLabel", publicName: "weakLabel", isSignal: true, isRequired: false, transformFunction: null }, mediumLabel: { classPropertyName: "mediumLabel", publicName: "mediumLabel", isSignal: true, isRequired: false, transformFunction: null }, strongLabel: { classPropertyName: "strongLabel", publicName: "strongLabel", isSignal: true, isRequired: false, transformFunction: null }, mediumRegex: { classPropertyName: "mediumRegex", publicName: "mediumRegex", isSignal: true, isRequired: false, transformFunction: null }, strongRegex: { classPropertyName: "strongRegex", publicName: "strongRegex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onBlur: "onBlur", onFocus: "onFocus" }, host: { properties: { "class": "hostClass()", "style": "style()" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => PasswordComponent), multi: true }], ngImport: i0, template: `
6235
6320
  <div class="relative">
@@ -6239,7 +6324,7 @@ class PasswordComponent {
6239
6324
  [id]="inputId()"
6240
6325
  [placeholder]="placeholder()"
6241
6326
  [value]="value()"
6242
- [disabled]="disabled()"
6327
+ [disabled]="isDisabled()"
6243
6328
  [attr.aria-invalid]="invalid() && touched() ? 'true' : null"
6244
6329
  [attr.aria-describedby]="ariaDescribedby() || null"
6245
6330
  [attr.autocomplete]="autocomplete() || null"
@@ -6250,7 +6335,7 @@ class PasswordComponent {
6250
6335
  @if (toggleMask()) {
6251
6336
  <button
6252
6337
  type="button"
6253
- class="inline-flex items-center absolute right-3 top-1/2 -translate-y-1/2 text-(--f-form-field-placeholder-color) hover:text-(--f-text-hover-color) cursor-pointer focus:outline-none focus-visible:ring-focus rounded-sm"
6338
+ class="inline-flex items-center absolute right-(--f-field-padding-x) top-1/2 -translate-y-1/2 text-(--f-form-field-placeholder-color) hover:text-(--f-text-hover-color) cursor-pointer focus:outline-none focus-visible:ring-focus rounded-sm"
6254
6339
  [attr.aria-label]="show() ? 'Hide password' : 'Show password'"
6255
6340
  [attr.aria-pressed]="show()"
6256
6341
  (click)="toggleShow()"
@@ -6286,7 +6371,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
6286
6371
  [id]="inputId()"
6287
6372
  [placeholder]="placeholder()"
6288
6373
  [value]="value()"
6289
- [disabled]="disabled()"
6374
+ [disabled]="isDisabled()"
6290
6375
  [attr.aria-invalid]="invalid() && touched() ? 'true' : null"
6291
6376
  [attr.aria-describedby]="ariaDescribedby() || null"
6292
6377
  [attr.autocomplete]="autocomplete() || null"
@@ -6297,7 +6382,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
6297
6382
  @if (toggleMask()) {
6298
6383
  <button
6299
6384
  type="button"
6300
- class="inline-flex items-center absolute right-3 top-1/2 -translate-y-1/2 text-(--f-form-field-placeholder-color) hover:text-(--f-text-hover-color) cursor-pointer focus:outline-none focus-visible:ring-focus rounded-sm"
6385
+ class="inline-flex items-center absolute right-(--f-field-padding-x) top-1/2 -translate-y-1/2 text-(--f-form-field-placeholder-color) hover:text-(--f-text-hover-color) cursor-pointer focus:outline-none focus-visible:ring-focus rounded-sm"
6301
6386
  [attr.aria-label]="show() ? 'Hide password' : 'Show password'"
6302
6387
  [attr.aria-pressed]="show()"
6303
6388
  (click)="toggleShow()"
@@ -6318,7 +6403,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
6318
6403
  }
6319
6404
  `,
6320
6405
  }]
6321
- }], propDecorators: { toggleMask: [{ type: i0.Input, args: [{ isSignal: true, alias: "toggleMask", required: false }] }], feedback: [{ type: i0.Input, args: [{ isSignal: true, alias: "feedback", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], inputStyleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputStyleClass", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], ariaDescribedby: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaDescribedby", required: false }] }], autocomplete: [{ type: i0.Input, args: [{ isSignal: true, alias: "autocomplete", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], fluid: [{ type: i0.Input, args: [{ isSignal: true, alias: "fluid", required: false }] }], appendTo: [{ type: i0.Input, args: [{ isSignal: true, alias: "appendTo", required: false }] }], promptLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "promptLabel", required: false }] }], weakLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "weakLabel", required: false }] }], mediumLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "mediumLabel", required: false }] }], strongLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "strongLabel", required: false }] }], mediumRegex: [{ type: i0.Input, args: [{ isSignal: true, alias: "mediumRegex", required: false }] }], strongRegex: [{ type: i0.Input, args: [{ isSignal: true, alias: "strongRegex", required: false }] }], onBlur: [{ type: i0.Output, args: ["onBlur"] }], onFocus: [{ type: i0.Output, args: ["onFocus"] }] } });
6406
+ }], ctorParameters: () => [], propDecorators: { toggleMask: [{ type: i0.Input, args: [{ isSignal: true, alias: "toggleMask", required: false }] }], feedback: [{ type: i0.Input, args: [{ isSignal: true, alias: "feedback", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], inputStyleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputStyleClass", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], ariaDescribedby: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaDescribedby", required: false }] }], autocomplete: [{ type: i0.Input, args: [{ isSignal: true, alias: "autocomplete", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], fluid: [{ type: i0.Input, args: [{ isSignal: true, alias: "fluid", required: false }] }], appendTo: [{ type: i0.Input, args: [{ isSignal: true, alias: "appendTo", required: false }] }], promptLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "promptLabel", required: false }] }], weakLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "weakLabel", required: false }] }], mediumLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "mediumLabel", required: false }] }], strongLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "strongLabel", required: false }] }], mediumRegex: [{ type: i0.Input, args: [{ isSignal: true, alias: "mediumRegex", required: false }] }], strongRegex: [{ type: i0.Input, args: [{ isSignal: true, alias: "strongRegex", required: false }] }], onBlur: [{ type: i0.Output, args: ["onBlur"] }], onFocus: [{ type: i0.Output, args: ["onFocus"] }] } });
6322
6407
 
6323
6408
  class InputNumberComponent {
6324
6409
  mode = input('decimal', /* @ts-ignore */
@@ -6383,6 +6468,9 @@ class InputNumberComponent {
6383
6468
  ...(ngDevMode ? [{ debugName: "_formDisabled" }] : /* istanbul ignore next */ []));
6384
6469
  isDisabled = computed(() => this.disabled() || this._formDisabled(), /* @ts-ignore */
6385
6470
  ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
6471
+ constructor() {
6472
+ blockClicksWhileDisabled(this.isDisabled);
6473
+ }
6386
6474
  numberFormat = computed(() => {
6387
6475
  const options = {
6388
6476
  style: this.mode(),
@@ -6696,7 +6784,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
6696
6784
  </div>
6697
6785
  `,
6698
6786
  }]
6699
- }], propDecorators: { mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], currency: [{ type: i0.Input, args: [{ isSignal: true, alias: "currency", required: false }] }], currencyDisplay: [{ type: i0.Input, args: [{ isSignal: true, alias: "currencyDisplay", required: false }] }], locale: [{ type: i0.Input, args: [{ isSignal: true, alias: "locale", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], step: [{ type: i0.Input, args: [{ isSignal: true, alias: "step", required: false }] }], showButtons: [{ type: i0.Input, args: [{ isSignal: true, alias: "showButtons", required: false }] }], buttonLayout: [{ type: i0.Input, args: [{ isSignal: true, alias: "buttonLayout", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], prefix: [{ type: i0.Input, args: [{ isSignal: true, alias: "prefix", required: false }] }], suffix: [{ type: i0.Input, args: [{ isSignal: true, alias: "suffix", required: false }] }], useGrouping: [{ type: i0.Input, args: [{ isSignal: true, alias: "useGrouping", required: false }] }], minFractionDigits: [{ type: i0.Input, args: [{ isSignal: true, alias: "minFractionDigits", required: false }] }], maxFractionDigits: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxFractionDigits", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], ariaDescribedBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaDescribedBy", required: false }] }], inputStyleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputStyleClass", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], onInputEvent: [{ type: i0.Output, args: ["onInput"] }], onFocus: [{ type: i0.Output, args: ["onFocus"] }], onBlur: [{ type: i0.Output, args: ["onBlur"] }], onKeyDown: [{ type: i0.Output, args: ["onKeyDown"] }] } });
6787
+ }], ctorParameters: () => [], propDecorators: { mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], currency: [{ type: i0.Input, args: [{ isSignal: true, alias: "currency", required: false }] }], currencyDisplay: [{ type: i0.Input, args: [{ isSignal: true, alias: "currencyDisplay", required: false }] }], locale: [{ type: i0.Input, args: [{ isSignal: true, alias: "locale", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], step: [{ type: i0.Input, args: [{ isSignal: true, alias: "step", required: false }] }], showButtons: [{ type: i0.Input, args: [{ isSignal: true, alias: "showButtons", required: false }] }], buttonLayout: [{ type: i0.Input, args: [{ isSignal: true, alias: "buttonLayout", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], prefix: [{ type: i0.Input, args: [{ isSignal: true, alias: "prefix", required: false }] }], suffix: [{ type: i0.Input, args: [{ isSignal: true, alias: "suffix", required: false }] }], useGrouping: [{ type: i0.Input, args: [{ isSignal: true, alias: "useGrouping", required: false }] }], minFractionDigits: [{ type: i0.Input, args: [{ isSignal: true, alias: "minFractionDigits", required: false }] }], maxFractionDigits: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxFractionDigits", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], ariaDescribedBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaDescribedBy", required: false }] }], inputStyleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputStyleClass", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], onInputEvent: [{ type: i0.Output, args: ["onInput"] }], onFocus: [{ type: i0.Output, args: ["onFocus"] }], onBlur: [{ type: i0.Output, args: ["onBlur"] }], onKeyDown: [{ type: i0.Output, args: ["onKeyDown"] }] } });
6700
6788
 
6701
6789
  class RadioButtonComponent {
6702
6790
  name = input('', /* @ts-ignore */
@@ -6706,6 +6794,13 @@ class RadioButtonComponent {
6706
6794
  label = input('', /* @ts-ignore */
6707
6795
  ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
6708
6796
  disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
6797
+ _formDisabled = signal(false, /* @ts-ignore */
6798
+ ...(ngDevMode ? [{ debugName: "_formDisabled" }] : /* istanbul ignore next */ []));
6799
+ isDisabled = computed(() => this.disabled() || this._formDisabled(), /* @ts-ignore */
6800
+ ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
6801
+ constructor() {
6802
+ blockClicksWhileDisabled(this.isDisabled);
6803
+ }
6709
6804
  readonly = input(false, { ...(ngDevMode ? { debugName: "readonly" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
6710
6805
  inputId = input('', /* @ts-ignore */
6711
6806
  ...(ngDevMode ? [{ debugName: "inputId" }] : /* istanbul ignore next */ []));
@@ -6762,10 +6857,10 @@ class RadioButtonComponent {
6762
6857
  writeValue(v) { this._modelValue.set(v); }
6763
6858
  registerOnChange(fn) { this._onChange = fn; }
6764
6859
  registerOnTouched(fn) { this._onTouched = fn; }
6765
- setDisabledState() { }
6860
+ setDisabledState(isDisabled) { this._formDisabled.set(isDisabled); }
6766
6861
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: RadioButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6767
6862
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: RadioButtonComponent, isStandalone: true, selector: "f-radiobutton", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onClick: "onClick", onBlur: "onBlur" }, host: { properties: { "class": "hostClass()", "style": "style()" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => RadioButtonComponent), multi: true }], ngImport: i0, template: `
6768
- <label class="inline-flex items-center gap-2 cursor-pointer select-none" [class.opacity-60]="disabled()" [class.pointer-events-none]="disabled()">
6863
+ <label class="inline-flex items-center gap-2 cursor-pointer select-none" [class.opacity-60]="isDisabled()" [class.pointer-events-none]="isDisabled()">
6769
6864
  <div class="relative">
6770
6865
  <input type="radio"
6771
6866
  class="sr-only peer"
@@ -6773,7 +6868,7 @@ class RadioButtonComponent {
6773
6868
  [name]="name()"
6774
6869
  [value]="value()"
6775
6870
  [checked]="isChecked()"
6776
- [disabled]="disabled()"
6871
+ [disabled]="isDisabled()"
6777
6872
  [attr.aria-checked]="isChecked()"
6778
6873
  [attr.aria-readonly]="readonly() || null"
6779
6874
  (click)="onInputClick($event)"
@@ -6797,7 +6892,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
6797
6892
  providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => RadioButtonComponent), multi: true }],
6798
6893
  host: { '[class]': 'hostClass()', '[style]': 'style()' },
6799
6894
  template: `
6800
- <label class="inline-flex items-center gap-2 cursor-pointer select-none" [class.opacity-60]="disabled()" [class.pointer-events-none]="disabled()">
6895
+ <label class="inline-flex items-center gap-2 cursor-pointer select-none" [class.opacity-60]="isDisabled()" [class.pointer-events-none]="isDisabled()">
6801
6896
  <div class="relative">
6802
6897
  <input type="radio"
6803
6898
  class="sr-only peer"
@@ -6805,7 +6900,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
6805
6900
  [name]="name()"
6806
6901
  [value]="value()"
6807
6902
  [checked]="isChecked()"
6808
- [disabled]="disabled()"
6903
+ [disabled]="isDisabled()"
6809
6904
  [attr.aria-checked]="isChecked()"
6810
6905
  [attr.aria-readonly]="readonly() || null"
6811
6906
  (click)="onInputClick($event)"
@@ -6822,13 +6917,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
6822
6917
  </label>
6823
6918
  `,
6824
6919
  }]
6825
- }], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], onClick: [{ type: i0.Output, args: ["onClick"] }], onBlur: [{ type: i0.Output, args: ["onBlur"] }] } });
6920
+ }], ctorParameters: () => [], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], onClick: [{ type: i0.Output, args: ["onClick"] }], onBlur: [{ type: i0.Output, args: ["onBlur"] }] } });
6826
6921
 
6827
6922
  class RatingComponent {
6828
6923
  stars = input(5, { ...(ngDevMode ? { debugName: "stars" } : /* istanbul ignore next */ {}), transform: numberAttribute });
6829
6924
  cancel = input(true, { ...(ngDevMode ? { debugName: "cancel" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
6830
6925
  readonly = input(false, { ...(ngDevMode ? { debugName: "readonly" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
6831
6926
  disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
6927
+ _formDisabled = signal(false, /* @ts-ignore */
6928
+ ...(ngDevMode ? [{ debugName: "_formDisabled" }] : /* istanbul ignore next */ []));
6929
+ isDisabled = computed(() => this.disabled() || this._formDisabled(), /* @ts-ignore */
6930
+ ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
6931
+ constructor() {
6932
+ blockClicksWhileDisabled(this.isDisabled);
6933
+ }
6832
6934
  invalid = input(false, { ...(ngDevMode ? { debugName: "invalid" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
6833
6935
  iconOn = input('star-fill', /* @ts-ignore */
6834
6936
  ...(ngDevMode ? [{ debugName: "iconOn" }] : /* istanbul ignore next */ []));
@@ -6855,12 +6957,12 @@ class RatingComponent {
6855
6957
  _onChange = () => { };
6856
6958
  _onTouched = () => { };
6857
6959
  onHover(v) {
6858
- if (this.readonly() || this.disabled())
6960
+ if (this.readonly() || this.isDisabled())
6859
6961
  return;
6860
6962
  this._hovered.set(v);
6861
6963
  }
6862
6964
  applyValue(v) {
6863
- if (this.readonly() || this.disabled())
6965
+ if (this.readonly() || this.isDisabled())
6864
6966
  return;
6865
6967
  const clamped = Math.min(this.stars(), Math.max(0, v));
6866
6968
  this._value.set(clamped);
@@ -6869,12 +6971,12 @@ class RatingComponent {
6869
6971
  this.onRate.emit({ value: clamped });
6870
6972
  }
6871
6973
  setValue(v) {
6872
- if (this.readonly() || this.disabled())
6974
+ if (this.readonly() || this.isDisabled())
6873
6975
  return;
6874
6976
  this.applyValue(this.cancel() && v === this.value() ? 0 : v);
6875
6977
  }
6876
6978
  onKeydown(e) {
6877
- if (this.readonly() || this.disabled())
6979
+ if (this.readonly() || this.isDisabled())
6878
6980
  return;
6879
6981
  switch (e.key) {
6880
6982
  case 'ArrowRight':
@@ -6900,20 +7002,20 @@ class RatingComponent {
6900
7002
  writeValue(v) { this._value.set(v ?? 0); }
6901
7003
  registerOnChange(fn) { this._onChange = fn; }
6902
7004
  registerOnTouched(fn) { this._onTouched = fn; }
6903
- setDisabledState() { }
7005
+ setDisabledState(isDisabled) { this._formDisabled.set(isDisabled); }
6904
7006
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: RatingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6905
7007
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: RatingComponent, isStandalone: true, selector: "f-rating", inputs: { stars: { classPropertyName: "stars", publicName: "stars", isSignal: true, isRequired: false, transformFunction: null }, cancel: { classPropertyName: "cancel", publicName: "cancel", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, iconOn: { classPropertyName: "iconOn", publicName: "iconOn", isSignal: true, isRequired: false, transformFunction: null }, iconOff: { classPropertyName: "iconOff", publicName: "iconOff", isSignal: true, isRequired: false, transformFunction: null }, cancelIcon: { classPropertyName: "cancelIcon", publicName: "cancelIcon", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onRate: "onRate", onBlur: "onBlur" }, host: { properties: { "class": "hostClass()", "style": "style()" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => RatingComponent), multi: true }], ngImport: i0, template: `
6906
7008
  <div
6907
7009
  class="inline-flex items-center gap-1"
6908
7010
  role="radiogroup"
6909
7011
  [class.pointer-events-none]="readonly()"
6910
- [class.opacity-60]="disabled()"
6911
- [attr.aria-disabled]="disabled() || null"
7012
+ [class.opacity-60]="isDisabled()"
7013
+ [attr.aria-disabled]="isDisabled() || null"
6912
7014
  [attr.aria-readonly]="readonly() || null"
6913
7015
  (keydown)="onKeydown($event)"
6914
7016
  >
6915
7017
  @if (cancel()) {
6916
- <button type="button" class="text-(--f-text-muted-color) hover:text-red-500 cursor-pointer disabled:cursor-default disabled:pointer-events-none disabled:opacity-50" [disabled]="disabled()" [attr.aria-label]="'Clear rating'" (click)="applyValue(0)">
7018
+ <button type="button" class="text-(--f-text-muted-color) hover:text-red-500 cursor-pointer disabled:cursor-default disabled:pointer-events-none disabled:opacity-50" [disabled]="isDisabled()" [attr.aria-label]="'Clear rating'" (click)="applyValue(0)">
6917
7019
  <ui-icon [name]="cancelIcon()"></ui-icon>
6918
7020
  </button>
6919
7021
  }
@@ -6925,7 +7027,7 @@ class RatingComponent {
6925
7027
  [class.text-yellow-400]="star <= (hovered() || value())"
6926
7028
  [class.text-(--f-content-border-color)]="star > (hovered() || value())"
6927
7029
  [class.drop-shadow-sm]="star <= (hovered() || value())"
6928
- [disabled]="disabled()"
7030
+ [disabled]="isDisabled()"
6929
7031
  [attr.aria-checked]="star <= value()"
6930
7032
  [attr.aria-label]="'Rate as ' + star"
6931
7033
  [attr.aria-invalid]="invalid() ? 'true' : null"
@@ -6949,13 +7051,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
6949
7051
  class="inline-flex items-center gap-1"
6950
7052
  role="radiogroup"
6951
7053
  [class.pointer-events-none]="readonly()"
6952
- [class.opacity-60]="disabled()"
6953
- [attr.aria-disabled]="disabled() || null"
7054
+ [class.opacity-60]="isDisabled()"
7055
+ [attr.aria-disabled]="isDisabled() || null"
6954
7056
  [attr.aria-readonly]="readonly() || null"
6955
7057
  (keydown)="onKeydown($event)"
6956
7058
  >
6957
7059
  @if (cancel()) {
6958
- <button type="button" class="text-(--f-text-muted-color) hover:text-red-500 cursor-pointer disabled:cursor-default disabled:pointer-events-none disabled:opacity-50" [disabled]="disabled()" [attr.aria-label]="'Clear rating'" (click)="applyValue(0)">
7060
+ <button type="button" class="text-(--f-text-muted-color) hover:text-red-500 cursor-pointer disabled:cursor-default disabled:pointer-events-none disabled:opacity-50" [disabled]="isDisabled()" [attr.aria-label]="'Clear rating'" (click)="applyValue(0)">
6959
7061
  <ui-icon [name]="cancelIcon()"></ui-icon>
6960
7062
  </button>
6961
7063
  }
@@ -6967,7 +7069,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
6967
7069
  [class.text-yellow-400]="star <= (hovered() || value())"
6968
7070
  [class.text-(--f-content-border-color)]="star > (hovered() || value())"
6969
7071
  [class.drop-shadow-sm]="star <= (hovered() || value())"
6970
- [disabled]="disabled()"
7072
+ [disabled]="isDisabled()"
6971
7073
  [attr.aria-checked]="star <= value()"
6972
7074
  [attr.aria-label]="'Rate as ' + star"
6973
7075
  [attr.aria-invalid]="invalid() ? 'true' : null"
@@ -6979,7 +7081,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
6979
7081
  </div>
6980
7082
  `,
6981
7083
  }]
6982
- }], propDecorators: { stars: [{ type: i0.Input, args: [{ isSignal: true, alias: "stars", required: false }] }], cancel: [{ type: i0.Input, args: [{ isSignal: true, alias: "cancel", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], iconOn: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconOn", required: false }] }], iconOff: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconOff", required: false }] }], cancelIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "cancelIcon", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], onRate: [{ type: i0.Output, args: ["onRate"] }], onBlur: [{ type: i0.Output, args: ["onBlur"] }] } });
7084
+ }], ctorParameters: () => [], propDecorators: { stars: [{ type: i0.Input, args: [{ isSignal: true, alias: "stars", required: false }] }], cancel: [{ type: i0.Input, args: [{ isSignal: true, alias: "cancel", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], iconOn: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconOn", required: false }] }], iconOff: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconOff", required: false }] }], cancelIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "cancelIcon", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], onRate: [{ type: i0.Output, args: ["onRate"] }], onBlur: [{ type: i0.Output, args: ["onBlur"] }] } });
6983
7085
 
6984
7086
  class InputIconComponent {
6985
7087
  _iconField = inject(IconFieldComponent, { optional: true });
@@ -7391,6 +7493,10 @@ class DatePickerComponent {
7391
7493
  dateFormat = input('mm/dd/yy', /* @ts-ignore */
7392
7494
  ...(ngDevMode ? [{ debugName: "dateFormat" }] : /* istanbul ignore next */ []));
7393
7495
  disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
7496
+ _formDisabled = signal(false, /* @ts-ignore */
7497
+ ...(ngDevMode ? [{ debugName: "_formDisabled" }] : /* istanbul ignore next */ []));
7498
+ isDisabled = computed(() => this.disabled() || this._formDisabled(), /* @ts-ignore */
7499
+ ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
7394
7500
  readonly = input(false, { ...(ngDevMode ? { debugName: "readonly" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
7395
7501
  readonlyInput = input(true, { ...(ngDevMode ? { debugName: "readonlyInput" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
7396
7502
  showTime = input(false, { ...(ngDevMode ? { debugName: "showTime" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
@@ -7588,7 +7694,7 @@ class DatePickerComponent {
7588
7694
  : showInvalid
7589
7695
  ? 'border-red-400 hover:border-red-300'
7590
7696
  : 'border-(--f-form-field-border-color) hover:border-(--f-form-field-hover-border-color)';
7591
- const disabledClass = this.disabled()
7697
+ const disabledClass = this.isDisabled()
7592
7698
  ? 'opacity-60 cursor-not-allowed'
7593
7699
  : '';
7594
7700
  return `flex items-center border f-field-shape overflow-hidden bg-(--f-form-field-background) focus-within:ring-focus transition-all duration-[var(--f-transition-duration)] ${stateClass} ${disabledClass}`;
@@ -7622,6 +7728,7 @@ class DatePickerComponent {
7622
7728
  }, /* @ts-ignore */
7623
7729
  ...(ngDevMode ? [{ debugName: "nextAriaLabel" }] : /* istanbul ignore next */ []));
7624
7730
  constructor() {
7731
+ blockClicksWhileDisabled(this.isDisabled);
7625
7732
  effect(() => {
7626
7733
  const isOpen = this.open();
7627
7734
  if (isOpen === this._wasOpen)
@@ -7819,7 +7926,7 @@ class DatePickerComponent {
7819
7926
  }
7820
7927
  }
7821
7928
  onInputKeyDown(event) {
7822
- if (this.disabled() || this.readonly())
7929
+ if (this.isDisabled() || this.readonly())
7823
7930
  return;
7824
7931
  switch (event.key) {
7825
7932
  case 'ArrowDown':
@@ -7837,7 +7944,7 @@ class DatePickerComponent {
7837
7944
  }
7838
7945
  }
7839
7946
  onInputChange(text) {
7840
- if (this.readonlyInput() || this.disabled() || this.readonly())
7947
+ if (this.readonlyInput() || this.isDisabled() || this.readonly())
7841
7948
  return;
7842
7949
  if (!text) {
7843
7950
  this.commitValue(null);
@@ -7848,7 +7955,7 @@ class DatePickerComponent {
7848
7955
  this.selectDate(parsed);
7849
7956
  }
7850
7957
  toggleCalendar(event) {
7851
- if (this.disabled() || this.readonly())
7958
+ if (this.isDisabled() || this.readonly())
7852
7959
  return;
7853
7960
  if (this.appendTo() === 'body')
7854
7961
  this.popoverRef()?.toggle(event);
@@ -8118,7 +8225,7 @@ class DatePickerComponent {
8118
8225
  registerOnTouched(fn) {
8119
8226
  this._onTouched = fn;
8120
8227
  }
8121
- setDisabledState() { }
8228
+ setDisabledState(isDisabled) { this._formDisabled.set(isDisabled); }
8122
8229
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8123
8230
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: DatePickerComponent, isStandalone: true, selector: "f-datepicker", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, dateFormat: { classPropertyName: "dateFormat", publicName: "dateFormat", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, readonlyInput: { classPropertyName: "readonlyInput", publicName: "readonlyInput", isSignal: true, isRequired: false, transformFunction: null }, showTime: { classPropertyName: "showTime", publicName: "showTime", isSignal: true, isRequired: false, transformFunction: null }, timeOnly: { classPropertyName: "timeOnly", publicName: "timeOnly", isSignal: true, isRequired: false, transformFunction: null }, hourFormat: { classPropertyName: "hourFormat", publicName: "hourFormat", isSignal: true, isRequired: false, transformFunction: null }, showSeconds: { classPropertyName: "showSeconds", publicName: "showSeconds", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, minDate: { classPropertyName: "minDate", publicName: "minDate", isSignal: true, isRequired: false, transformFunction: null }, maxDate: { classPropertyName: "maxDate", publicName: "maxDate", isSignal: true, isRequired: false, transformFunction: null }, disabledDates: { classPropertyName: "disabledDates", publicName: "disabledDates", isSignal: true, isRequired: false, transformFunction: null }, disabledDays: { classPropertyName: "disabledDays", publicName: "disabledDays", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, showClear: { classPropertyName: "showClear", publicName: "showClear", isSignal: true, isRequired: false, transformFunction: null }, inputStyleClass: { classPropertyName: "inputStyleClass", publicName: "inputStyleClass", isSignal: true, isRequired: false, transformFunction: null }, showIcon: { classPropertyName: "showIcon", publicName: "showIcon", isSignal: true, isRequired: false, transformFunction: null }, iconDisplay: { classPropertyName: "iconDisplay", publicName: "iconDisplay", isSignal: true, isRequired: false, transformFunction: null }, showButtonBar: { classPropertyName: "showButtonBar", publicName: "showButtonBar", isSignal: true, isRequired: false, transformFunction: null }, inline: { classPropertyName: "inline", publicName: "inline", isSignal: true, isRequired: false, transformFunction: null }, numberOfMonths: { classPropertyName: "numberOfMonths", publicName: "numberOfMonths", isSignal: true, isRequired: false, transformFunction: null }, view: { classPropertyName: "view", publicName: "view", isSignal: true, isRequired: false, transformFunction: null }, showOtherMonths: { classPropertyName: "showOtherMonths", publicName: "showOtherMonths", isSignal: true, isRequired: false, transformFunction: null }, selectOtherMonths: { classPropertyName: "selectOtherMonths", publicName: "selectOtherMonths", isSignal: true, isRequired: false, transformFunction: null }, firstDayOfWeek: { classPropertyName: "firstDayOfWeek", publicName: "firstDayOfWeek", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onBlur: "onBlur", onSelect: "onSelect", onShow: "onShow", onHide: "onHide", onClearClick: "onClearClick", onTodayClick: "onTodayClick", onMonthChange: "onMonthChange", onYearChange: "onYearChange" }, host: { listeners: { "document:click": "onDocumentClick($event)" }, properties: { "class": "hostClass()", "style": "style()" } }, providers: [
8124
8231
  {
@@ -8147,7 +8254,7 @@ class DatePickerComponent {
8147
8254
  [class]="inputClass()"
8148
8255
  [id]="inputId()"
8149
8256
  [readOnly]="readonlyInput()"
8150
- [disabled]="disabled()"
8257
+ [disabled]="isDisabled()"
8151
8258
  [value]="displayValue()"
8152
8259
  [placeholder]="placeholder()"
8153
8260
  [attr.aria-invalid]="invalid() ? true : null"
@@ -8156,7 +8263,7 @@ class DatePickerComponent {
8156
8263
  (keydown)="onInputKeyDown($event)"
8157
8264
  (change)="onInputChange($any($event.target).value)"
8158
8265
  />
8159
- @if (showClear() && hasValue() && !disabled() && !readonly()) {
8266
+ @if (showClear() && hasValue() && !isDisabled() && !readonly()) {
8160
8267
  <button
8161
8268
  type="button"
8162
8269
  class="inline-flex items-center justify-center px-1 text-(--f-form-field-placeholder-color) hover:text-(--f-text-color) cursor-pointer"
@@ -8538,7 +8645,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
8538
8645
  [class]="inputClass()"
8539
8646
  [id]="inputId()"
8540
8647
  [readOnly]="readonlyInput()"
8541
- [disabled]="disabled()"
8648
+ [disabled]="isDisabled()"
8542
8649
  [value]="displayValue()"
8543
8650
  [placeholder]="placeholder()"
8544
8651
  [attr.aria-invalid]="invalid() ? true : null"
@@ -8547,7 +8654,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
8547
8654
  (keydown)="onInputKeyDown($event)"
8548
8655
  (change)="onInputChange($any($event.target).value)"
8549
8656
  />
8550
- @if (showClear() && hasValue() && !disabled() && !readonly()) {
8657
+ @if (showClear() && hasValue() && !isDisabled() && !readonly()) {
8551
8658
  <button
8552
8659
  type="button"
8553
8660
  class="inline-flex items-center justify-center px-1 text-(--f-form-field-placeholder-color) hover:text-(--f-text-color) cursor-pointer"
@@ -8905,6 +9012,9 @@ class FileUploadComponent {
8905
9012
  fileLimit = input(null, /* @ts-ignore */
8906
9013
  ...(ngDevMode ? [{ debugName: "fileLimit" }] : /* istanbul ignore next */ []));
8907
9014
  disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
9015
+ constructor() {
9016
+ blockClicksWhileDisabled(this.disabled);
9017
+ }
8908
9018
  url = input('', /* @ts-ignore */
8909
9019
  ...(ngDevMode ? [{ debugName: "url" }] : /* istanbul ignore next */ []));
8910
9020
  headers = input(null, /* @ts-ignore */
@@ -8918,6 +9028,27 @@ class FileUploadComponent {
8918
9028
  ...(ngDevMode ? [{ debugName: "uploadLabel" }] : /* istanbul ignore next */ []));
8919
9029
  cancelLabel = input('Cancel', /* @ts-ignore */
8920
9030
  ...(ngDevMode ? [{ debugName: "cancelLabel" }] : /* istanbul ignore next */ []));
9031
+ removeLabel = input('Remove', /* @ts-ignore */
9032
+ ...(ngDevMode ? [{ debugName: "removeLabel" }] : /* istanbul ignore next */ []));
9033
+ dragDropLabel = input('Drag & drop files here', /* @ts-ignore */
9034
+ ...(ngDevMode ? [{ debugName: "dragDropLabel" }] : /* istanbul ignore next */ []));
9035
+ dragDropHintLabel = input('or use the choose button above', /* @ts-ignore */
9036
+ ...(ngDevMode ? [{ debugName: "dragDropHintLabel" }] : /* istanbul ignore next */ []));
9037
+ contentRef = contentChild('content', /* @ts-ignore */
9038
+ ...(ngDevMode ? [{ debugName: "contentRef" }] : /* istanbul ignore next */ []));
9039
+ fTemplates = contentChildren(FTemplateDirective, /* @ts-ignore */
9040
+ ...(ngDevMode ? [{ debugName: "fTemplates" }] : /* istanbul ignore next */ []));
9041
+ contentTpl = computed(() => this.contentRef() ?? this.fTemplates().find(t => t.fTemplate() === 'content')?.templateRef ?? null, /* @ts-ignore */
9042
+ ...(ngDevMode ? [{ debugName: "contentTpl" }] : /* istanbul ignore next */ []));
9043
+ contentContext = computed(() => ({
9044
+ $implicit: this.files(),
9045
+ files: this.files(),
9046
+ items: this.items(),
9047
+ disabled: this.disabled(),
9048
+ removeFile: (file) => this.removeFile(file),
9049
+ clear: () => this.clear(),
9050
+ }), /* @ts-ignore */
9051
+ ...(ngDevMode ? [{ debugName: "contentContext" }] : /* istanbul ignore next */ []));
8921
9052
  chooseIcon = input('upload', /* @ts-ignore */
8922
9053
  ...(ngDevMode ? [{ debugName: "chooseIcon" }] : /* istanbul ignore next */ []));
8923
9054
  uploadIcon = input('upload', /* @ts-ignore */
@@ -9149,7 +9280,7 @@ class FileUploadComponent {
9149
9280
  this.revokeItemUrls(this._items());
9150
9281
  }
9151
9282
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: FileUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9152
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: FileUploadComponent, isStandalone: true, selector: "f-fileupload", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, accept: { classPropertyName: "accept", publicName: "accept", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, auto: { classPropertyName: "auto", publicName: "auto", isSignal: true, isRequired: false, transformFunction: null }, maxFileSize: { classPropertyName: "maxFileSize", publicName: "maxFileSize", isSignal: true, isRequired: false, transformFunction: null }, fileLimit: { classPropertyName: "fileLimit", publicName: "fileLimit", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, url: { classPropertyName: "url", publicName: "url", isSignal: true, isRequired: false, transformFunction: null }, headers: { classPropertyName: "headers", publicName: "headers", isSignal: true, isRequired: false, transformFunction: null }, customUpload: { classPropertyName: "customUpload", publicName: "customUpload", isSignal: true, isRequired: false, transformFunction: null }, showUploadButton: { classPropertyName: "showUploadButton", publicName: "showUploadButton", isSignal: true, isRequired: false, transformFunction: null }, showCancelButton: { classPropertyName: "showCancelButton", publicName: "showCancelButton", isSignal: true, isRequired: false, transformFunction: null }, chooseLabel: { classPropertyName: "chooseLabel", publicName: "chooseLabel", isSignal: true, isRequired: false, transformFunction: null }, uploadLabel: { classPropertyName: "uploadLabel", publicName: "uploadLabel", isSignal: true, isRequired: false, transformFunction: null }, cancelLabel: { classPropertyName: "cancelLabel", publicName: "cancelLabel", isSignal: true, isRequired: false, transformFunction: null }, chooseIcon: { classPropertyName: "chooseIcon", publicName: "chooseIcon", isSignal: true, isRequired: false, transformFunction: null }, uploadIcon: { classPropertyName: "uploadIcon", publicName: "uploadIcon", isSignal: true, isRequired: false, transformFunction: null }, cancelIcon: { classPropertyName: "cancelIcon", publicName: "cancelIcon", isSignal: true, isRequired: false, transformFunction: null }, previewWidth: { classPropertyName: "previewWidth", publicName: "previewWidth", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSelect: "onSelect", onRemove: "onRemove", onClear: "onClear", onError: "onError", onUpload: "onUpload", onProgress: "onProgress", uploadHandler: "uploadHandler" }, host: { properties: { "class": "hostClass()", "style": "style()" } }, ngImport: i0, template: `
9283
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: FileUploadComponent, isStandalone: true, selector: "f-fileupload", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, accept: { classPropertyName: "accept", publicName: "accept", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, auto: { classPropertyName: "auto", publicName: "auto", isSignal: true, isRequired: false, transformFunction: null }, maxFileSize: { classPropertyName: "maxFileSize", publicName: "maxFileSize", isSignal: true, isRequired: false, transformFunction: null }, fileLimit: { classPropertyName: "fileLimit", publicName: "fileLimit", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, url: { classPropertyName: "url", publicName: "url", isSignal: true, isRequired: false, transformFunction: null }, headers: { classPropertyName: "headers", publicName: "headers", isSignal: true, isRequired: false, transformFunction: null }, customUpload: { classPropertyName: "customUpload", publicName: "customUpload", isSignal: true, isRequired: false, transformFunction: null }, showUploadButton: { classPropertyName: "showUploadButton", publicName: "showUploadButton", isSignal: true, isRequired: false, transformFunction: null }, showCancelButton: { classPropertyName: "showCancelButton", publicName: "showCancelButton", isSignal: true, isRequired: false, transformFunction: null }, chooseLabel: { classPropertyName: "chooseLabel", publicName: "chooseLabel", isSignal: true, isRequired: false, transformFunction: null }, uploadLabel: { classPropertyName: "uploadLabel", publicName: "uploadLabel", isSignal: true, isRequired: false, transformFunction: null }, cancelLabel: { classPropertyName: "cancelLabel", publicName: "cancelLabel", isSignal: true, isRequired: false, transformFunction: null }, removeLabel: { classPropertyName: "removeLabel", publicName: "removeLabel", isSignal: true, isRequired: false, transformFunction: null }, dragDropLabel: { classPropertyName: "dragDropLabel", publicName: "dragDropLabel", isSignal: true, isRequired: false, transformFunction: null }, dragDropHintLabel: { classPropertyName: "dragDropHintLabel", publicName: "dragDropHintLabel", isSignal: true, isRequired: false, transformFunction: null }, chooseIcon: { classPropertyName: "chooseIcon", publicName: "chooseIcon", isSignal: true, isRequired: false, transformFunction: null }, uploadIcon: { classPropertyName: "uploadIcon", publicName: "uploadIcon", isSignal: true, isRequired: false, transformFunction: null }, cancelIcon: { classPropertyName: "cancelIcon", publicName: "cancelIcon", isSignal: true, isRequired: false, transformFunction: null }, previewWidth: { classPropertyName: "previewWidth", publicName: "previewWidth", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSelect: "onSelect", onRemove: "onRemove", onClear: "onClear", onError: "onError", onUpload: "onUpload", onProgress: "onProgress", uploadHandler: "uploadHandler" }, host: { properties: { "class": "hostClass()", "style": "style()" } }, queries: [{ propertyName: "contentRef", first: true, predicate: ["content"], descendants: true, isSignal: true }, { propertyName: "fTemplates", predicate: FTemplateDirective, isSignal: true }], ngImport: i0, template: `
9153
9284
  @if (mode() === 'advanced') {
9154
9285
  <div class="flex flex-wrap items-center gap-2 mb-3">
9155
9286
  <f-button
@@ -9185,64 +9316,77 @@ class FileUploadComponent {
9185
9316
  />
9186
9317
  </div>
9187
9318
 
9188
- <div
9189
- class="border-2 border-dashed rounded-lg p-8 text-center transition-colors"
9190
- [class]="isDragging() ? 'border-primary bg-primary/5' : 'border-(--f-content-border-color) hover:border-primary/60 hover:bg-(--f-content-hover-background)'"
9191
- [class.opacity-50]="disabled()"
9192
- [class.pointer-events-none]="disabled()"
9193
- [attr.aria-disabled]="disabled() ? 'true' : null"
9194
- (dragover)="onDragOver($event)"
9195
- (dragleave)="onDragLeave()"
9196
- (drop)="onDrop($event)"
9197
- >
9198
- <div class="flex flex-col items-center gap-2">
9199
- <div class="w-12 h-12 rounded-full bg-primary/10 flex items-center justify-center">
9200
- <ui-icon [name]="chooseIcon()" class="text-primary text-xl"></ui-icon>
9201
- </div>
9202
- <div>
9203
- <p class="text-sm font-medium text-(--f-text-color)">Drag &amp; drop files here</p>
9204
- <p class="text-xs text-(--f-text-muted-color) mt-0.5">or use the choose button above</p>
9319
+ @if (contentTpl(); as tpl) {
9320
+ <div
9321
+ [class.opacity-50]="disabled()"
9322
+ [attr.aria-disabled]="disabled() ? 'true' : null"
9323
+ (dragover)="onDragOver($event)"
9324
+ (dragleave)="onDragLeave()"
9325
+ (drop)="onDrop($event)"
9326
+ >
9327
+ <ng-container [ngTemplateOutlet]="tpl" [ngTemplateOutletContext]="contentContext()" />
9328
+ </div>
9329
+ } @else {
9330
+ <div
9331
+ class="border-2 border-dashed rounded-lg p-8 text-center transition-colors"
9332
+ [class]="isDragging() ? 'border-primary bg-primary/5' : 'border-(--f-content-border-color) hover:border-primary/60 hover:bg-(--f-content-hover-background)'"
9333
+ [class.opacity-50]="disabled()"
9334
+ [class.pointer-events-none]="disabled()"
9335
+ [attr.aria-disabled]="disabled() ? 'true' : null"
9336
+ (dragover)="onDragOver($event)"
9337
+ (dragleave)="onDragLeave()"
9338
+ (drop)="onDrop($event)"
9339
+ >
9340
+ <div class="flex flex-col items-center gap-2">
9341
+ <div class="w-12 h-12 rounded-full bg-primary/10 flex items-center justify-center">
9342
+ <ui-icon [name]="chooseIcon()" class="text-primary text-xl"></ui-icon>
9343
+ </div>
9344
+ <div>
9345
+ <p class="text-sm font-medium text-(--f-text-color)">{{ dragDropLabel() }}</p>
9346
+ <p class="text-xs text-(--f-text-muted-color) mt-0.5">{{ dragDropHintLabel() }}</p>
9347
+ </div>
9205
9348
  </div>
9206
9349
  </div>
9207
- </div>
9208
9350
 
9209
- @if (items().length) {
9210
- <div class="mt-5 space-y-1.5 text-left">
9211
- @for (item of items(); track item.file) {
9212
- <div class="flex items-center gap-3 py-2 px-3 bg-(--f-content-hover-background) border border-(--f-content-border-color) rounded-lg">
9213
- @if (item.objectUrl) {
9214
- <img [src]="item.objectUrl" [alt]="item.file.name" [style.width.px]="previewWidth()" [style.height.px]="previewWidth()" class="rounded-md object-cover shrink-0" />
9215
- } @else {
9216
- <ui-icon name="file" class="text-(--f-text-muted-color) shrink-0 text-lg"></ui-icon>
9217
- }
9218
- <div class="flex-1 min-w-0">
9219
- <div class="flex items-center gap-2">
9220
- <span class="flex-1 truncate text-sm text-(--f-text-color)">{{ item.file.name }}</span>
9221
- <span class="text-xs text-(--f-text-muted-color) shrink-0">{{ formatSize(item.file.size) }}</span>
9351
+ @if (items().length) {
9352
+ <div class="mt-5 space-y-1.5 text-left">
9353
+ @for (item of items(); track item.file) {
9354
+ <div class="flex items-center gap-3 py-2 px-3 bg-(--f-content-hover-background) border border-(--f-content-border-color) rounded-lg">
9355
+ @if (item.objectUrl) {
9356
+ <img [src]="item.objectUrl" [alt]="item.file.name" [style.width.px]="previewWidth()" [style.height.px]="previewWidth()" class="rounded-md object-cover shrink-0" />
9357
+ } @else {
9358
+ <ui-icon name="file" class="text-(--f-text-muted-color) shrink-0 text-lg"></ui-icon>
9359
+ }
9360
+ <div class="flex-1 min-w-0">
9361
+ <div class="flex items-center gap-2">
9362
+ <span class="flex-1 truncate text-sm text-(--f-text-color)">{{ item.file.name }}</span>
9363
+ <span class="text-xs text-(--f-text-muted-color) shrink-0">{{ formatSize(item.file.size) }}</span>
9364
+ </div>
9365
+ @if (item.status === 'uploading' || item.status === 'done') {
9366
+ <f-progressbar
9367
+ [value]="item.progress"
9368
+ [showValue]="false"
9369
+ [severity]="item.status === 'done' ? 'success' : null"
9370
+ styleClass="mt-1"
9371
+ ></f-progressbar>
9372
+ }
9222
9373
  </div>
9223
- @if (item.status === 'uploading' || item.status === 'done') {
9224
- <f-progressbar
9225
- [value]="item.progress"
9226
- [showValue]="false"
9227
- [severity]="item.status === 'done' ? 'success' : null"
9228
- styleClass="mt-1"
9229
- ></f-progressbar>
9374
+ @if (item.status === 'done') {
9375
+ <ui-icon name="check-circle" class="text-green-500 shrink-0 text-sm"></ui-icon>
9376
+ } @else if (item.status === 'error') {
9377
+ <ui-icon name="exclamation-circle" class="text-red-500 shrink-0 text-sm"></ui-icon>
9230
9378
  }
9379
+ <button type="button"
9380
+ class="inline-flex items-center justify-center text-(--f-text-muted-color) hover:text-red-500 transition-colors shrink-0 cursor-pointer disabled:opacity-50 disabled:pointer-events-none"
9381
+ [disabled]="disabled() || item.status === 'uploading'"
9382
+ [attr.aria-label]="removeLabel()"
9383
+ (click)="removeFile(item.file)">
9384
+ <ui-icon name="times" class="text-xs"></ui-icon>
9385
+ </button>
9231
9386
  </div>
9232
- @if (item.status === 'done') {
9233
- <ui-icon name="check-circle" class="text-green-500 shrink-0 text-sm"></ui-icon>
9234
- } @else if (item.status === 'error') {
9235
- <ui-icon name="exclamation-circle" class="text-red-500 shrink-0 text-sm"></ui-icon>
9236
- }
9237
- <button type="button"
9238
- class="inline-flex items-center justify-center text-(--f-text-muted-color) hover:text-red-500 transition-colors shrink-0 cursor-pointer disabled:opacity-50 disabled:pointer-events-none"
9239
- [disabled]="item.status === 'uploading'"
9240
- (click)="removeFile(item.file)">
9241
- <ui-icon name="times" class="text-xs"></ui-icon>
9242
- </button>
9243
- </div>
9244
- }
9245
- </div>
9387
+ }
9388
+ </div>
9389
+ }
9246
9390
  }
9247
9391
  } @else {
9248
9392
  <div class="flex items-center gap-3">
@@ -9264,13 +9408,13 @@ class FileUploadComponent {
9264
9408
  }
9265
9409
  </div>
9266
9410
  }
9267
- `, isInline: true, dependencies: [{ kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill", "severity"] }, { kind: "component", type: ButtonComponent, selector: "f-button", inputs: ["label", "icon", "iconPos", "severity", "type", "disabled", "loading", "loadingIcon", "text", "link", "outlined", "plain", "variant", "raised", "rounded", "fluid", "size", "ariaLabel", "autofocus", "tabindex", "styleClass", "style", "badge", "badgeSeverity", "badgeClass"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: ProgressbarComponent, selector: "f-progressbar", inputs: ["value", "mode", "showValue", "unit", "severity", "color", "styleClass"] }] });
9411
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill", "severity"] }, { kind: "component", type: ButtonComponent, selector: "f-button", inputs: ["label", "icon", "iconPos", "severity", "type", "disabled", "loading", "loadingIcon", "text", "link", "outlined", "plain", "variant", "raised", "rounded", "fluid", "size", "ariaLabel", "autofocus", "tabindex", "styleClass", "style", "badge", "badgeSeverity", "badgeClass"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: ProgressbarComponent, selector: "f-progressbar", inputs: ["value", "mode", "showValue", "unit", "severity", "color", "styleClass"] }] });
9268
9412
  }
9269
9413
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: FileUploadComponent, decorators: [{
9270
9414
  type: Component,
9271
9415
  args: [{
9272
9416
  selector: 'f-fileupload',
9273
- imports: [UiIconComponent, ButtonComponent, ProgressbarComponent],
9417
+ imports: [NgTemplateOutlet, UiIconComponent, ButtonComponent, ProgressbarComponent],
9274
9418
  host: { '[class]': 'hostClass()', '[style]': 'style()' },
9275
9419
  template: `
9276
9420
  @if (mode() === 'advanced') {
@@ -9308,64 +9452,77 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
9308
9452
  />
9309
9453
  </div>
9310
9454
 
9311
- <div
9312
- class="border-2 border-dashed rounded-lg p-8 text-center transition-colors"
9313
- [class]="isDragging() ? 'border-primary bg-primary/5' : 'border-(--f-content-border-color) hover:border-primary/60 hover:bg-(--f-content-hover-background)'"
9314
- [class.opacity-50]="disabled()"
9315
- [class.pointer-events-none]="disabled()"
9316
- [attr.aria-disabled]="disabled() ? 'true' : null"
9317
- (dragover)="onDragOver($event)"
9318
- (dragleave)="onDragLeave()"
9319
- (drop)="onDrop($event)"
9320
- >
9321
- <div class="flex flex-col items-center gap-2">
9322
- <div class="w-12 h-12 rounded-full bg-primary/10 flex items-center justify-center">
9323
- <ui-icon [name]="chooseIcon()" class="text-primary text-xl"></ui-icon>
9324
- </div>
9325
- <div>
9326
- <p class="text-sm font-medium text-(--f-text-color)">Drag &amp; drop files here</p>
9327
- <p class="text-xs text-(--f-text-muted-color) mt-0.5">or use the choose button above</p>
9455
+ @if (contentTpl(); as tpl) {
9456
+ <div
9457
+ [class.opacity-50]="disabled()"
9458
+ [attr.aria-disabled]="disabled() ? 'true' : null"
9459
+ (dragover)="onDragOver($event)"
9460
+ (dragleave)="onDragLeave()"
9461
+ (drop)="onDrop($event)"
9462
+ >
9463
+ <ng-container [ngTemplateOutlet]="tpl" [ngTemplateOutletContext]="contentContext()" />
9464
+ </div>
9465
+ } @else {
9466
+ <div
9467
+ class="border-2 border-dashed rounded-lg p-8 text-center transition-colors"
9468
+ [class]="isDragging() ? 'border-primary bg-primary/5' : 'border-(--f-content-border-color) hover:border-primary/60 hover:bg-(--f-content-hover-background)'"
9469
+ [class.opacity-50]="disabled()"
9470
+ [class.pointer-events-none]="disabled()"
9471
+ [attr.aria-disabled]="disabled() ? 'true' : null"
9472
+ (dragover)="onDragOver($event)"
9473
+ (dragleave)="onDragLeave()"
9474
+ (drop)="onDrop($event)"
9475
+ >
9476
+ <div class="flex flex-col items-center gap-2">
9477
+ <div class="w-12 h-12 rounded-full bg-primary/10 flex items-center justify-center">
9478
+ <ui-icon [name]="chooseIcon()" class="text-primary text-xl"></ui-icon>
9479
+ </div>
9480
+ <div>
9481
+ <p class="text-sm font-medium text-(--f-text-color)">{{ dragDropLabel() }}</p>
9482
+ <p class="text-xs text-(--f-text-muted-color) mt-0.5">{{ dragDropHintLabel() }}</p>
9483
+ </div>
9328
9484
  </div>
9329
9485
  </div>
9330
- </div>
9331
9486
 
9332
- @if (items().length) {
9333
- <div class="mt-5 space-y-1.5 text-left">
9334
- @for (item of items(); track item.file) {
9335
- <div class="flex items-center gap-3 py-2 px-3 bg-(--f-content-hover-background) border border-(--f-content-border-color) rounded-lg">
9336
- @if (item.objectUrl) {
9337
- <img [src]="item.objectUrl" [alt]="item.file.name" [style.width.px]="previewWidth()" [style.height.px]="previewWidth()" class="rounded-md object-cover shrink-0" />
9338
- } @else {
9339
- <ui-icon name="file" class="text-(--f-text-muted-color) shrink-0 text-lg"></ui-icon>
9340
- }
9341
- <div class="flex-1 min-w-0">
9342
- <div class="flex items-center gap-2">
9343
- <span class="flex-1 truncate text-sm text-(--f-text-color)">{{ item.file.name }}</span>
9344
- <span class="text-xs text-(--f-text-muted-color) shrink-0">{{ formatSize(item.file.size) }}</span>
9487
+ @if (items().length) {
9488
+ <div class="mt-5 space-y-1.5 text-left">
9489
+ @for (item of items(); track item.file) {
9490
+ <div class="flex items-center gap-3 py-2 px-3 bg-(--f-content-hover-background) border border-(--f-content-border-color) rounded-lg">
9491
+ @if (item.objectUrl) {
9492
+ <img [src]="item.objectUrl" [alt]="item.file.name" [style.width.px]="previewWidth()" [style.height.px]="previewWidth()" class="rounded-md object-cover shrink-0" />
9493
+ } @else {
9494
+ <ui-icon name="file" class="text-(--f-text-muted-color) shrink-0 text-lg"></ui-icon>
9495
+ }
9496
+ <div class="flex-1 min-w-0">
9497
+ <div class="flex items-center gap-2">
9498
+ <span class="flex-1 truncate text-sm text-(--f-text-color)">{{ item.file.name }}</span>
9499
+ <span class="text-xs text-(--f-text-muted-color) shrink-0">{{ formatSize(item.file.size) }}</span>
9500
+ </div>
9501
+ @if (item.status === 'uploading' || item.status === 'done') {
9502
+ <f-progressbar
9503
+ [value]="item.progress"
9504
+ [showValue]="false"
9505
+ [severity]="item.status === 'done' ? 'success' : null"
9506
+ styleClass="mt-1"
9507
+ ></f-progressbar>
9508
+ }
9345
9509
  </div>
9346
- @if (item.status === 'uploading' || item.status === 'done') {
9347
- <f-progressbar
9348
- [value]="item.progress"
9349
- [showValue]="false"
9350
- [severity]="item.status === 'done' ? 'success' : null"
9351
- styleClass="mt-1"
9352
- ></f-progressbar>
9510
+ @if (item.status === 'done') {
9511
+ <ui-icon name="check-circle" class="text-green-500 shrink-0 text-sm"></ui-icon>
9512
+ } @else if (item.status === 'error') {
9513
+ <ui-icon name="exclamation-circle" class="text-red-500 shrink-0 text-sm"></ui-icon>
9353
9514
  }
9515
+ <button type="button"
9516
+ class="inline-flex items-center justify-center text-(--f-text-muted-color) hover:text-red-500 transition-colors shrink-0 cursor-pointer disabled:opacity-50 disabled:pointer-events-none"
9517
+ [disabled]="disabled() || item.status === 'uploading'"
9518
+ [attr.aria-label]="removeLabel()"
9519
+ (click)="removeFile(item.file)">
9520
+ <ui-icon name="times" class="text-xs"></ui-icon>
9521
+ </button>
9354
9522
  </div>
9355
- @if (item.status === 'done') {
9356
- <ui-icon name="check-circle" class="text-green-500 shrink-0 text-sm"></ui-icon>
9357
- } @else if (item.status === 'error') {
9358
- <ui-icon name="exclamation-circle" class="text-red-500 shrink-0 text-sm"></ui-icon>
9359
- }
9360
- <button type="button"
9361
- class="inline-flex items-center justify-center text-(--f-text-muted-color) hover:text-red-500 transition-colors shrink-0 cursor-pointer disabled:opacity-50 disabled:pointer-events-none"
9362
- [disabled]="item.status === 'uploading'"
9363
- (click)="removeFile(item.file)">
9364
- <ui-icon name="times" class="text-xs"></ui-icon>
9365
- </button>
9366
- </div>
9367
- }
9368
- </div>
9523
+ }
9524
+ </div>
9525
+ }
9369
9526
  }
9370
9527
  } @else {
9371
9528
  <div class="flex items-center gap-3">
@@ -9389,7 +9546,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
9389
9546
  }
9390
9547
  `,
9391
9548
  }]
9392
- }], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], accept: [{ type: i0.Input, args: [{ isSignal: true, alias: "accept", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], auto: [{ type: i0.Input, args: [{ isSignal: true, alias: "auto", required: false }] }], maxFileSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxFileSize", required: false }] }], fileLimit: [{ type: i0.Input, args: [{ isSignal: true, alias: "fileLimit", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], url: [{ type: i0.Input, args: [{ isSignal: true, alias: "url", required: false }] }], headers: [{ type: i0.Input, args: [{ isSignal: true, alias: "headers", required: false }] }], customUpload: [{ type: i0.Input, args: [{ isSignal: true, alias: "customUpload", required: false }] }], showUploadButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showUploadButton", required: false }] }], showCancelButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCancelButton", required: false }] }], chooseLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "chooseLabel", required: false }] }], uploadLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "uploadLabel", required: false }] }], cancelLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "cancelLabel", required: false }] }], chooseIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "chooseIcon", required: false }] }], uploadIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "uploadIcon", required: false }] }], cancelIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "cancelIcon", required: false }] }], previewWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "previewWidth", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], onSelect: [{ type: i0.Output, args: ["onSelect"] }], onRemove: [{ type: i0.Output, args: ["onRemove"] }], onClear: [{ type: i0.Output, args: ["onClear"] }], onError: [{ type: i0.Output, args: ["onError"] }], onUpload: [{ type: i0.Output, args: ["onUpload"] }], onProgress: [{ type: i0.Output, args: ["onProgress"] }], uploadHandler: [{ type: i0.Output, args: ["uploadHandler"] }] } });
9549
+ }], ctorParameters: () => [], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], accept: [{ type: i0.Input, args: [{ isSignal: true, alias: "accept", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], auto: [{ type: i0.Input, args: [{ isSignal: true, alias: "auto", required: false }] }], maxFileSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxFileSize", required: false }] }], fileLimit: [{ type: i0.Input, args: [{ isSignal: true, alias: "fileLimit", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], url: [{ type: i0.Input, args: [{ isSignal: true, alias: "url", required: false }] }], headers: [{ type: i0.Input, args: [{ isSignal: true, alias: "headers", required: false }] }], customUpload: [{ type: i0.Input, args: [{ isSignal: true, alias: "customUpload", required: false }] }], showUploadButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showUploadButton", required: false }] }], showCancelButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCancelButton", required: false }] }], chooseLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "chooseLabel", required: false }] }], uploadLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "uploadLabel", required: false }] }], cancelLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "cancelLabel", required: false }] }], removeLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "removeLabel", required: false }] }], dragDropLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "dragDropLabel", required: false }] }], dragDropHintLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "dragDropHintLabel", required: false }] }], contentRef: [{ type: i0.ContentChild, args: ['content', { isSignal: true }] }], fTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => FTemplateDirective), { isSignal: true }] }], chooseIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "chooseIcon", required: false }] }], uploadIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "uploadIcon", required: false }] }], cancelIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "cancelIcon", required: false }] }], previewWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "previewWidth", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], onSelect: [{ type: i0.Output, args: ["onSelect"] }], onRemove: [{ type: i0.Output, args: ["onRemove"] }], onClear: [{ type: i0.Output, args: ["onClear"] }], onError: [{ type: i0.Output, args: ["onError"] }], onUpload: [{ type: i0.Output, args: ["onUpload"] }], onProgress: [{ type: i0.Output, args: ["onProgress"] }], uploadHandler: [{ type: i0.Output, args: ["uploadHandler"] }] } });
9393
9550
 
9394
9551
  const CLOSE_ANIMATION_MS$1 = 180;
9395
9552
  const FOCUSABLE_SELECTOR$2 = 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])';
@@ -10504,6 +10661,9 @@ class TabComponent {
10504
10661
  isActive = computed(() => this.ctx.active() === this.value(), /* @ts-ignore */
10505
10662
  ...(ngDevMode ? [{ debugName: "isActive" }] : /* istanbul ignore next */ []));
10506
10663
  onClose = output();
10664
+ constructor() {
10665
+ blockClicksWhileDisabled(this.disabled);
10666
+ }
10507
10667
  triggerId = computed(() => `f-tab-trigger-${this.value()}`, /* @ts-ignore */
10508
10668
  ...(ngDevMode ? [{ debugName: "triggerId" }] : /* istanbul ignore next */ []));
10509
10669
  panelId = computed(() => `f-tab-panel-${this.value()}`, /* @ts-ignore */
@@ -10595,7 +10755,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
10595
10755
  }
10596
10756
  `,
10597
10757
  }]
10598
- }], propDecorators: { buttonRef: [{ type: i0.ViewChild, args: ['btn', { isSignal: true }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], closable: [{ type: i0.Input, args: [{ isSignal: true, alias: "closable", required: false }] }], onClose: [{ type: i0.Output, args: ["onClose"] }] } });
10758
+ }], ctorParameters: () => [], propDecorators: { buttonRef: [{ type: i0.ViewChild, args: ['btn', { isSignal: true }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], closable: [{ type: i0.Input, args: [{ isSignal: true, alias: "closable", required: false }] }], onClose: [{ type: i0.Output, args: ["onClose"] }] } });
10599
10759
  // ─── TabList — wraps tab buttons, with optional scroll navigators ────────────
10600
10760
  class TabListComponent {
10601
10761
  ctx = inject(TabsContext);
@@ -10855,6 +11015,9 @@ class AccordionHeaderComponent {
10855
11015
  ...(ngDevMode ? [{ debugName: "buttonRef" }] : /* istanbul ignore next */ []));
10856
11016
  disabled = computed(() => this.panelCtx.disabled(), /* @ts-ignore */
10857
11017
  ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
11018
+ constructor() {
11019
+ blockClicksWhileDisabled(this.disabled);
11020
+ }
10858
11021
  headerId = computed(() => `${this.accordionCtx?.id ?? 'f-accordion'}-header-${this.panelCtx.value()}`, /* @ts-ignore */
10859
11022
  ...(ngDevMode ? [{ debugName: "headerId" }] : /* istanbul ignore next */ []));
10860
11023
  contentId = computed(() => `${this.accordionCtx?.id ?? 'f-accordion'}-content-${this.panelCtx.value()}`, /* @ts-ignore */
@@ -10911,7 +11074,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
10911
11074
  </button>
10912
11075
  `,
10913
11076
  }]
10914
- }], propDecorators: { buttonRef: [{ type: i0.ViewChild, args: ['btn', { isSignal: true }] }] } });
11077
+ }], ctorParameters: () => [], propDecorators: { buttonRef: [{ type: i0.ViewChild, args: ['btn', { isSignal: true }] }] } });
10915
11078
  // ─── Accordion root — provides context ────────────────────────────────────────
10916
11079
  class AccordionComponent {
10917
11080
  multiple = input(false, { ...(ngDevMode ? { debugName: "multiple" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
@@ -14425,8 +14588,10 @@ class AutoCompleteComponent {
14425
14588
  ...(ngDevMode ? [{ debugName: "anchorRef" }] : /* istanbul ignore next */ []));
14426
14589
  panelRef = viewChild('panel', /* @ts-ignore */
14427
14590
  ...(ngDevMode ? [{ debugName: "panelRef" }] : /* istanbul ignore next */ []));
14591
+ singleInputRef = viewChild('singleInputEl', /* @ts-ignore */
14592
+ ...(ngDevMode ? [{ debugName: "singleInputRef" }] : /* istanbul ignore next */ []));
14428
14593
  _placement = overlayPosition({
14429
- active: () => this.open() && this.appendTo() === 'body',
14594
+ active: () => this.panelVisible() && this.appendTo() === 'body',
14430
14595
  anchor: () => this.anchorRef()?.nativeElement,
14431
14596
  panel: () => this.panelRef()?.nativeElement,
14432
14597
  options: () => ({ matchAnchorWidth: true }),
@@ -14452,11 +14617,22 @@ class AutoCompleteComponent {
14452
14617
  ...(ngDevMode ? [{ debugName: "field" }] : /* istanbul ignore next */ []));
14453
14618
  placeholder = input('', /* @ts-ignore */
14454
14619
  ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
14620
+ ariaLabel = input('', /* @ts-ignore */
14621
+ ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
14455
14622
  disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
14623
+ _formDisabled = signal(false, /* @ts-ignore */
14624
+ ...(ngDevMode ? [{ debugName: "_formDisabled" }] : /* istanbul ignore next */ []));
14625
+ isDisabled = computed(() => this.disabled() || this._formDisabled(), /* @ts-ignore */
14626
+ ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
14627
+ constructor() {
14628
+ blockClicksWhileDisabled(this.isDisabled);
14629
+ }
14456
14630
  dropdown = input(false, { ...(ngDevMode ? { debugName: "dropdown" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
14457
14631
  forceSelection = input(false, { ...(ngDevMode ? { debugName: "forceSelection" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
14458
14632
  multiple = input(false, { ...(ngDevMode ? { debugName: "multiple" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
14459
14633
  completeOnFocus = input(false, { ...(ngDevMode ? { debugName: "completeOnFocus" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
14634
+ freeText = input(false, { ...(ngDevMode ? { debugName: "freeText" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
14635
+ filterLocally = input(false, { ...(ngDevMode ? { debugName: "filterLocally" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
14460
14636
  delay = input(300, { ...(ngDevMode ? { debugName: "delay" } : /* istanbul ignore next */ {}), transform: numberAttribute });
14461
14637
  minLength = input(1, { ...(ngDevMode ? { debugName: "minLength" } : /* istanbul ignore next */ {}), transform: numberAttribute });
14462
14638
  invalid = input(false, { ...(ngDevMode ? { debugName: "invalid" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
@@ -14507,6 +14683,8 @@ class AutoCompleteComponent {
14507
14683
  selectedItems = this._selectedItems.asReadonly();
14508
14684
  _value = signal(null, /* @ts-ignore */
14509
14685
  ...(ngDevMode ? [{ debugName: "_value" }] : /* istanbul ignore next */ []));
14686
+ _filterQuery = signal('', /* @ts-ignore */
14687
+ ...(ngDevMode ? [{ debugName: "_filterQuery" }] : /* istanbul ignore next */ []));
14510
14688
  _onChange = () => { };
14511
14689
  _onTouched = () => { };
14512
14690
  _debounce;
@@ -14555,7 +14733,22 @@ class AutoCompleteComponent {
14555
14733
  this.fTemplates().find((t) => t.fTemplate() === 'loader')?.templateRef ??
14556
14734
  null, /* @ts-ignore */
14557
14735
  ...(ngDevMode ? [{ debugName: "loaderTpl" }] : /* istanbul ignore next */ []));
14558
- filteredSuggestions = computed(() => this.suggestions(), /* @ts-ignore */
14736
+ filteredSuggestions = computed(() => {
14737
+ const list = (this.suggestions() ?? []);
14738
+ const q = this._filterQuery().trim().toLowerCase();
14739
+ if (!this.filterLocally() || !q)
14740
+ return list;
14741
+ const matches = (item) => this.getLabel(item).toLowerCase().includes(q);
14742
+ if (!this.group())
14743
+ return list.filter(matches);
14744
+ const key = this.optionGroupChildren();
14745
+ return list
14746
+ .map((g) => ({
14747
+ ...g,
14748
+ [key]: (g[key] ?? []).filter(matches),
14749
+ }))
14750
+ .filter((g) => g[key].length > 0);
14751
+ }, /* @ts-ignore */
14559
14752
  ...(ngDevMode ? [{ debugName: "filteredSuggestions" }] : /* istanbul ignore next */ []));
14560
14753
  flatSuggestions = computed(() => {
14561
14754
  const list = this.filteredSuggestions();
@@ -14590,6 +14783,11 @@ class AutoCompleteComponent {
14590
14783
  return rows;
14591
14784
  }, /* @ts-ignore */
14592
14785
  ...(ngDevMode ? [{ debugName: "rows" }] : /* istanbul ignore next */ []));
14786
+ panelVisible = computed(() => this.open() &&
14787
+ !(this.freeText() &&
14788
+ !this.loading() &&
14789
+ this.flatSuggestions().length === 0), /* @ts-ignore */
14790
+ ...(ngDevMode ? [{ debugName: "panelVisible" }] : /* istanbul ignore next */ []));
14593
14791
  inputClass = computed(() => {
14594
14792
  const focused = this.open();
14595
14793
  const base = 'border bg-(--f-form-field-background) text-(--f-form-field-color) placeholder:text-(--f-form-field-placeholder-color)';
@@ -14604,6 +14802,15 @@ class AutoCompleteComponent {
14604
14802
  ...(ngDevMode ? [{ debugName: "inputClass" }] : /* istanbul ignore next */ []));
14605
14803
  onDropdownButtonClick(e) {
14606
14804
  this.onDropdownClick.emit(e);
14805
+ const wasOpen = this.panelVisible();
14806
+ const inputEl = this.singleInputRef()?.nativeElement;
14807
+ if (inputEl && document.activeElement !== inputEl)
14808
+ inputEl.focus();
14809
+ if (wasOpen) {
14810
+ this._open.set(false);
14811
+ return;
14812
+ }
14813
+ this._filterQuery.set('');
14607
14814
  this.completeMethod.emit({ originalEvent: e, query: this.query });
14608
14815
  this.openPanel();
14609
14816
  this._activeIndex.set(-1);
@@ -14624,6 +14831,12 @@ class AutoCompleteComponent {
14624
14831
  }
14625
14832
  onQueryChange(q) {
14626
14833
  this.query = q;
14834
+ this._filterQuery.set(q);
14835
+ if (this.freeText() && !this.multiple()) {
14836
+ this._value.set(q);
14837
+ this._onChange(q);
14838
+ this.onChange.emit(q);
14839
+ }
14627
14840
  clearTimeout(this._debounce);
14628
14841
  if (q.length < this.minLength()) {
14629
14842
  this._open.set(false);
@@ -14637,6 +14850,7 @@ class AutoCompleteComponent {
14637
14850
  }
14638
14851
  _handleFocus() {
14639
14852
  this.focusEvent.emit();
14853
+ this._filterQuery.set('');
14640
14854
  if (this.completeOnFocus() && this.query.length >= this.minLength()) {
14641
14855
  this.completeMethod.emit({
14642
14856
  originalEvent: new Event('focus'),
@@ -14727,8 +14941,9 @@ class AutoCompleteComponent {
14727
14941
  }
14728
14942
  else {
14729
14943
  this.query = '';
14730
- this._value.set(null);
14731
- this._onChange(null);
14944
+ const empty = this.freeText() ? '' : null;
14945
+ this._value.set(empty);
14946
+ this._onChange(empty);
14732
14947
  }
14733
14948
  this.onClear.emit();
14734
14949
  }
@@ -14747,25 +14962,25 @@ class AutoCompleteComponent {
14747
14962
  registerOnTouched(fn) {
14748
14963
  this._onTouched = fn;
14749
14964
  }
14750
- setDisabledState() { }
14965
+ setDisabledState(isDisabled) { this._formDisabled.set(isDisabled); }
14751
14966
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: AutoCompleteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14752
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: AutoCompleteComponent, isStandalone: true, selector: "f-autocomplete", inputs: { suggestions: { classPropertyName: "suggestions", publicName: "suggestions", isSignal: true, isRequired: false, transformFunction: null }, field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, dropdown: { classPropertyName: "dropdown", publicName: "dropdown", isSignal: true, isRequired: false, transformFunction: null }, forceSelection: { classPropertyName: "forceSelection", publicName: "forceSelection", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, completeOnFocus: { classPropertyName: "completeOnFocus", publicName: "completeOnFocus", isSignal: true, isRequired: false, transformFunction: null }, delay: { classPropertyName: "delay", publicName: "delay", isSignal: true, isRequired: false, transformFunction: null }, minLength: { classPropertyName: "minLength", publicName: "minLength", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, showClear: { classPropertyName: "showClear", publicName: "showClear", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, loadingIcon: { classPropertyName: "loadingIcon", publicName: "loadingIcon", isSignal: true, isRequired: false, transformFunction: null }, emptyMessage: { classPropertyName: "emptyMessage", publicName: "emptyMessage", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null }, virtualScroll: { classPropertyName: "virtualScroll", publicName: "virtualScroll", isSignal: true, isRequired: false, transformFunction: null }, virtualScrollItemSize: { classPropertyName: "virtualScrollItemSize", publicName: "virtualScrollItemSize", isSignal: true, isRequired: false, transformFunction: null }, scrollHeight: { classPropertyName: "scrollHeight", publicName: "scrollHeight", isSignal: true, isRequired: false, transformFunction: null }, lazy: { classPropertyName: "lazy", publicName: "lazy", isSignal: true, isRequired: false, transformFunction: null }, group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: false, transformFunction: null }, optionGroupLabel: { classPropertyName: "optionGroupLabel", publicName: "optionGroupLabel", isSignal: true, isRequired: false, transformFunction: null }, optionGroupChildren: { classPropertyName: "optionGroupChildren", publicName: "optionGroupChildren", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { completeMethod: "completeMethod", onSelect: "onSelect", onUnselect: "onUnselect", onDropdownClick: "onDropdownClick", onClear: "onClear", focusEvent: "focusEvent", blurEvent: "blurEvent", onChange: "onChange", onLazyLoad: "onLazyLoad" }, host: { listeners: { "document:click": "onDocumentClick($event)" }, properties: { "class": "hostClass()", "style": "style()" } }, providers: [
14967
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: AutoCompleteComponent, isStandalone: true, selector: "f-autocomplete", inputs: { suggestions: { classPropertyName: "suggestions", publicName: "suggestions", isSignal: true, isRequired: false, transformFunction: null }, field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, dropdown: { classPropertyName: "dropdown", publicName: "dropdown", isSignal: true, isRequired: false, transformFunction: null }, forceSelection: { classPropertyName: "forceSelection", publicName: "forceSelection", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, completeOnFocus: { classPropertyName: "completeOnFocus", publicName: "completeOnFocus", isSignal: true, isRequired: false, transformFunction: null }, freeText: { classPropertyName: "freeText", publicName: "freeText", isSignal: true, isRequired: false, transformFunction: null }, filterLocally: { classPropertyName: "filterLocally", publicName: "filterLocally", isSignal: true, isRequired: false, transformFunction: null }, delay: { classPropertyName: "delay", publicName: "delay", isSignal: true, isRequired: false, transformFunction: null }, minLength: { classPropertyName: "minLength", publicName: "minLength", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, showClear: { classPropertyName: "showClear", publicName: "showClear", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, loadingIcon: { classPropertyName: "loadingIcon", publicName: "loadingIcon", isSignal: true, isRequired: false, transformFunction: null }, emptyMessage: { classPropertyName: "emptyMessage", publicName: "emptyMessage", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null }, virtualScroll: { classPropertyName: "virtualScroll", publicName: "virtualScroll", isSignal: true, isRequired: false, transformFunction: null }, virtualScrollItemSize: { classPropertyName: "virtualScrollItemSize", publicName: "virtualScrollItemSize", isSignal: true, isRequired: false, transformFunction: null }, scrollHeight: { classPropertyName: "scrollHeight", publicName: "scrollHeight", isSignal: true, isRequired: false, transformFunction: null }, lazy: { classPropertyName: "lazy", publicName: "lazy", isSignal: true, isRequired: false, transformFunction: null }, group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: false, transformFunction: null }, optionGroupLabel: { classPropertyName: "optionGroupLabel", publicName: "optionGroupLabel", isSignal: true, isRequired: false, transformFunction: null }, optionGroupChildren: { classPropertyName: "optionGroupChildren", publicName: "optionGroupChildren", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { completeMethod: "completeMethod", onSelect: "onSelect", onUnselect: "onUnselect", onDropdownClick: "onDropdownClick", onClear: "onClear", focusEvent: "focusEvent", blurEvent: "blurEvent", onChange: "onChange", onLazyLoad: "onLazyLoad" }, host: { listeners: { "document:click": "onDocumentClick($event)" }, properties: { "class": "hostClass()", "style": "style()" } }, providers: [
14753
14968
  {
14754
14969
  provide: NG_VALUE_ACCESSOR,
14755
14970
  useExisting: forwardRef(() => AutoCompleteComponent),
14756
14971
  multi: true,
14757
14972
  },
14758
- ], queries: [{ propertyName: "itemRef", first: true, predicate: ["item"], descendants: true, isSignal: true }, { propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }, { propertyName: "headerRef", first: true, predicate: ["header"], descendants: true, isSignal: true }, { propertyName: "footerRef", first: true, predicate: ["footer"], descendants: true, isSignal: true }, { propertyName: "emptyRef", first: true, predicate: ["empty"], descendants: true, isSignal: true }, { propertyName: "selectedItemRef", first: true, predicate: ["selectedItem"], descendants: true, isSignal: true }, { propertyName: "loaderRef", first: true, predicate: ["loader"], descendants: true, isSignal: true }, { propertyName: "fTemplates", predicate: FTemplateDirective, isSignal: true }], viewQueries: [{ propertyName: "anchorRef", first: true, predicate: ["anchor"], descendants: true, isSignal: true }, { propertyName: "panelRef", first: true, predicate: ["panel"], descendants: true, isSignal: true }], ngImport: i0, template: `
14973
+ ], queries: [{ propertyName: "itemRef", first: true, predicate: ["item"], descendants: true, isSignal: true }, { propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }, { propertyName: "headerRef", first: true, predicate: ["header"], descendants: true, isSignal: true }, { propertyName: "footerRef", first: true, predicate: ["footer"], descendants: true, isSignal: true }, { propertyName: "emptyRef", first: true, predicate: ["empty"], descendants: true, isSignal: true }, { propertyName: "selectedItemRef", first: true, predicate: ["selectedItem"], descendants: true, isSignal: true }, { propertyName: "loaderRef", first: true, predicate: ["loader"], descendants: true, isSignal: true }, { propertyName: "fTemplates", predicate: FTemplateDirective, isSignal: true }], viewQueries: [{ propertyName: "anchorRef", first: true, predicate: ["anchor"], descendants: true, isSignal: true }, { propertyName: "panelRef", first: true, predicate: ["panel"], descendants: true, isSignal: true }, { propertyName: "singleInputRef", first: true, predicate: ["singleInputEl"], descendants: true, isSignal: true }], ngImport: i0, template: `
14759
14974
  <div
14760
14975
  #anchor
14761
14976
  class="relative w-full"
14762
- [class.opacity-60]="disabled()"
14763
- [class.pointer-events-none]="disabled()"
14977
+ [class.opacity-60]="isDisabled()"
14978
+ [class.pointer-events-none]="isDisabled()"
14764
14979
  >
14765
14980
  @if (multiple()) {
14766
14981
  <div class="relative">
14767
14982
  <div
14768
- class="min-h-[2.375rem] flex flex-wrap items-center gap-1.5 f-field-compact border bg-(--f-form-field-background) focus-within:ring-focus transition-all duration-[var(--f-transition-duration)] cursor-text"
14983
+ class="flex flex-wrap items-center gap-1.5 f-field-compact text-sm border bg-(--f-form-field-background) focus-within:ring-focus transition-all duration-[var(--f-transition-duration)] cursor-text"
14769
14984
  [class]="wrapperClass()"
14770
14985
  [class.pr-7]="showClear() || loading()"
14771
14986
  (click)="inputEl.focus()"
@@ -14797,6 +15012,7 @@ class AutoCompleteComponent {
14797
15012
  type="text"
14798
15013
  class="flex-1 min-w-[6rem] text-sm bg-transparent focus:outline-none text-(--f-form-field-color) placeholder:text-(--f-form-field-placeholder-color)"
14799
15014
  [placeholder]="selectedItems().length === 0 ? placeholder() : ''"
15015
+ [attr.aria-label]="ariaLabel() || null"
14800
15016
  [(ngModel)]="query"
14801
15017
  (ngModelChange)="onQueryChange($event)"
14802
15018
  (keydown)="onKeyDown($event)"
@@ -14805,7 +15021,7 @@ class AutoCompleteComponent {
14805
15021
  role="combobox"
14806
15022
  aria-autocomplete="list"
14807
15023
  aria-haspopup="listbox"
14808
- [attr.aria-expanded]="open()"
15024
+ [attr.aria-expanded]="panelVisible()"
14809
15025
  [attr.aria-controls]="listboxId"
14810
15026
  [attr.aria-activedescendant]="
14811
15027
  activeIndex() >= 0 ? listboxId + '-' + activeIndex() : null
@@ -14819,7 +15035,7 @@ class AutoCompleteComponent {
14819
15035
  [spin]="true"
14820
15036
  class="text-xs text-(--f-form-field-placeholder-color)"
14821
15037
  ></ui-icon>
14822
- } @else if (showClear() && selectedItems().length && !disabled()) {
15038
+ } @else if (showClear() && selectedItems().length && !isDisabled()) {
14823
15039
  <ui-icon
14824
15040
  name="x"
14825
15041
  class="text-xs text-(--f-form-field-placeholder-color) hover:text-(--f-text-color) cursor-pointer"
@@ -14831,10 +15047,14 @@ class AutoCompleteComponent {
14831
15047
  } @else {
14832
15048
  <div class="relative">
14833
15049
  <input
15050
+ #singleInputEl
14834
15051
  type="text"
14835
- class="w-full f-field text-sm border bg-(--f-form-field-background) focus:outline-none focus-visible:ring-focus transition-all duration-[var(--f-transition-duration)]"
15052
+ class="w-full f-field text-sm border bg-(--f-form-field-background) focus:outline-none focus-visible:ring-focus transition-all duration-[var(--f-transition-duration)] truncate"
14836
15053
  [class]="inputClass()"
15054
+ [class.pr-8!]="dropdown() || showClear() || loading()"
15055
+ [class.pr-12!]="dropdown() && showClear() && !!query"
14837
15056
  [placeholder]="placeholder()"
15057
+ [attr.aria-label]="ariaLabel() || null"
14838
15058
  [(ngModel)]="query"
14839
15059
  (ngModelChange)="onQueryChange($event)"
14840
15060
  (keydown)="onKeyDown($event)"
@@ -14843,7 +15063,7 @@ class AutoCompleteComponent {
14843
15063
  role="combobox"
14844
15064
  aria-autocomplete="list"
14845
15065
  aria-haspopup="listbox"
14846
- [attr.aria-expanded]="open()"
15066
+ [attr.aria-expanded]="panelVisible()"
14847
15067
  [attr.aria-controls]="listboxId"
14848
15068
  [attr.aria-activedescendant]="
14849
15069
  activeIndex() >= 0 ? listboxId + '-' + activeIndex() : null
@@ -14859,7 +15079,7 @@ class AutoCompleteComponent {
14859
15079
  class="text-xs text-(--f-form-field-placeholder-color)"
14860
15080
  ></ui-icon>
14861
15081
  } @else {
14862
- @if (showClear() && query && !disabled()) {
15082
+ @if (showClear() && query && !isDisabled()) {
14863
15083
  <ui-icon
14864
15084
  name="x"
14865
15085
  class="text-xs text-(--f-form-field-placeholder-color) hover:text-(--f-text-color) cursor-pointer"
@@ -14869,10 +15089,17 @@ class AutoCompleteComponent {
14869
15089
  @if (dropdown()) {
14870
15090
  <button
14871
15091
  type="button"
14872
- class="inline-flex items-center text-(--f-text-muted-color) hover:text-(--f-text-hover-color)"
15092
+ tabindex="-1"
15093
+ aria-hidden="true"
15094
+ class="inline-flex items-center justify-center p-0 border-0 bg-transparent cursor-pointer focus:outline-none text-(--f-form-field-placeholder-color) hover:text-(--f-text-color)"
15095
+ (mousedown)="$event.preventDefault()"
14873
15096
  (click)="onDropdownButtonClick($event)"
14874
15097
  >
14875
- <ui-icon name="chevron-down" class="text-xs"></ui-icon>
15098
+ <ui-icon
15099
+ name="chevron-down"
15100
+ class="text-xs transition-transform duration-[var(--f-transition-duration)]"
15101
+ [class.rotate-180]="panelVisible()"
15102
+ ></ui-icon>
14876
15103
  </button>
14877
15104
  }
14878
15105
  }
@@ -14880,7 +15107,7 @@ class AutoCompleteComponent {
14880
15107
  </div>
14881
15108
  }
14882
15109
 
14883
- @if (open()) {
15110
+ @if (panelVisible()) {
14884
15111
  <div #panel [class]="panelClass()" [style]="panelStyle()">
14885
15112
  @if (headerTpl()) {
14886
15113
  <div class="p-2 border-b border-(--f-content-border-color)">
@@ -15027,13 +15254,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
15027
15254
  <div
15028
15255
  #anchor
15029
15256
  class="relative w-full"
15030
- [class.opacity-60]="disabled()"
15031
- [class.pointer-events-none]="disabled()"
15257
+ [class.opacity-60]="isDisabled()"
15258
+ [class.pointer-events-none]="isDisabled()"
15032
15259
  >
15033
15260
  @if (multiple()) {
15034
15261
  <div class="relative">
15035
15262
  <div
15036
- class="min-h-[2.375rem] flex flex-wrap items-center gap-1.5 f-field-compact border bg-(--f-form-field-background) focus-within:ring-focus transition-all duration-[var(--f-transition-duration)] cursor-text"
15263
+ class="flex flex-wrap items-center gap-1.5 f-field-compact text-sm border bg-(--f-form-field-background) focus-within:ring-focus transition-all duration-[var(--f-transition-duration)] cursor-text"
15037
15264
  [class]="wrapperClass()"
15038
15265
  [class.pr-7]="showClear() || loading()"
15039
15266
  (click)="inputEl.focus()"
@@ -15065,6 +15292,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
15065
15292
  type="text"
15066
15293
  class="flex-1 min-w-[6rem] text-sm bg-transparent focus:outline-none text-(--f-form-field-color) placeholder:text-(--f-form-field-placeholder-color)"
15067
15294
  [placeholder]="selectedItems().length === 0 ? placeholder() : ''"
15295
+ [attr.aria-label]="ariaLabel() || null"
15068
15296
  [(ngModel)]="query"
15069
15297
  (ngModelChange)="onQueryChange($event)"
15070
15298
  (keydown)="onKeyDown($event)"
@@ -15073,7 +15301,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
15073
15301
  role="combobox"
15074
15302
  aria-autocomplete="list"
15075
15303
  aria-haspopup="listbox"
15076
- [attr.aria-expanded]="open()"
15304
+ [attr.aria-expanded]="panelVisible()"
15077
15305
  [attr.aria-controls]="listboxId"
15078
15306
  [attr.aria-activedescendant]="
15079
15307
  activeIndex() >= 0 ? listboxId + '-' + activeIndex() : null
@@ -15087,7 +15315,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
15087
15315
  [spin]="true"
15088
15316
  class="text-xs text-(--f-form-field-placeholder-color)"
15089
15317
  ></ui-icon>
15090
- } @else if (showClear() && selectedItems().length && !disabled()) {
15318
+ } @else if (showClear() && selectedItems().length && !isDisabled()) {
15091
15319
  <ui-icon
15092
15320
  name="x"
15093
15321
  class="text-xs text-(--f-form-field-placeholder-color) hover:text-(--f-text-color) cursor-pointer"
@@ -15099,10 +15327,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
15099
15327
  } @else {
15100
15328
  <div class="relative">
15101
15329
  <input
15330
+ #singleInputEl
15102
15331
  type="text"
15103
- class="w-full f-field text-sm border bg-(--f-form-field-background) focus:outline-none focus-visible:ring-focus transition-all duration-[var(--f-transition-duration)]"
15332
+ class="w-full f-field text-sm border bg-(--f-form-field-background) focus:outline-none focus-visible:ring-focus transition-all duration-[var(--f-transition-duration)] truncate"
15104
15333
  [class]="inputClass()"
15334
+ [class.pr-8!]="dropdown() || showClear() || loading()"
15335
+ [class.pr-12!]="dropdown() && showClear() && !!query"
15105
15336
  [placeholder]="placeholder()"
15337
+ [attr.aria-label]="ariaLabel() || null"
15106
15338
  [(ngModel)]="query"
15107
15339
  (ngModelChange)="onQueryChange($event)"
15108
15340
  (keydown)="onKeyDown($event)"
@@ -15111,7 +15343,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
15111
15343
  role="combobox"
15112
15344
  aria-autocomplete="list"
15113
15345
  aria-haspopup="listbox"
15114
- [attr.aria-expanded]="open()"
15346
+ [attr.aria-expanded]="panelVisible()"
15115
15347
  [attr.aria-controls]="listboxId"
15116
15348
  [attr.aria-activedescendant]="
15117
15349
  activeIndex() >= 0 ? listboxId + '-' + activeIndex() : null
@@ -15127,7 +15359,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
15127
15359
  class="text-xs text-(--f-form-field-placeholder-color)"
15128
15360
  ></ui-icon>
15129
15361
  } @else {
15130
- @if (showClear() && query && !disabled()) {
15362
+ @if (showClear() && query && !isDisabled()) {
15131
15363
  <ui-icon
15132
15364
  name="x"
15133
15365
  class="text-xs text-(--f-form-field-placeholder-color) hover:text-(--f-text-color) cursor-pointer"
@@ -15137,10 +15369,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
15137
15369
  @if (dropdown()) {
15138
15370
  <button
15139
15371
  type="button"
15140
- class="inline-flex items-center text-(--f-text-muted-color) hover:text-(--f-text-hover-color)"
15372
+ tabindex="-1"
15373
+ aria-hidden="true"
15374
+ class="inline-flex items-center justify-center p-0 border-0 bg-transparent cursor-pointer focus:outline-none text-(--f-form-field-placeholder-color) hover:text-(--f-text-color)"
15375
+ (mousedown)="$event.preventDefault()"
15141
15376
  (click)="onDropdownButtonClick($event)"
15142
15377
  >
15143
- <ui-icon name="chevron-down" class="text-xs"></ui-icon>
15378
+ <ui-icon
15379
+ name="chevron-down"
15380
+ class="text-xs transition-transform duration-[var(--f-transition-duration)]"
15381
+ [class.rotate-180]="panelVisible()"
15382
+ ></ui-icon>
15144
15383
  </button>
15145
15384
  }
15146
15385
  }
@@ -15148,7 +15387,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
15148
15387
  </div>
15149
15388
  }
15150
15389
 
15151
- @if (open()) {
15390
+ @if (panelVisible()) {
15152
15391
  <div #panel [class]="panelClass()" [style]="panelStyle()">
15153
15392
  @if (headerTpl()) {
15154
15393
  <div class="p-2 border-b border-(--f-content-border-color)">
@@ -15274,7 +15513,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
15274
15513
  </div>
15275
15514
  `,
15276
15515
  }]
15277
- }], propDecorators: { anchorRef: [{ type: i0.ViewChild, args: ['anchor', { isSignal: true }] }], panelRef: [{ type: i0.ViewChild, args: ['panel', { isSignal: true }] }], suggestions: [{ type: i0.Input, args: [{ isSignal: true, alias: "suggestions", required: false }] }], field: [{ type: i0.Input, args: [{ isSignal: true, alias: "field", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], dropdown: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropdown", required: false }] }], forceSelection: [{ type: i0.Input, args: [{ isSignal: true, alias: "forceSelection", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], completeOnFocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "completeOnFocus", required: false }] }], delay: [{ type: i0.Input, args: [{ isSignal: true, alias: "delay", required: false }] }], minLength: [{ type: i0.Input, args: [{ isSignal: true, alias: "minLength", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], showClear: [{ type: i0.Input, args: [{ isSignal: true, alias: "showClear", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], loadingIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "loadingIcon", required: false }] }], emptyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyMessage", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], appendTo: [{ type: i0.Input, args: [{ isSignal: true, alias: "appendTo", required: false }] }], virtualScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScroll", required: false }] }], virtualScrollItemSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScrollItemSize", required: false }] }], scrollHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollHeight", required: false }] }], lazy: [{ type: i0.Input, args: [{ isSignal: true, alias: "lazy", required: false }] }], group: [{ type: i0.Input, args: [{ isSignal: true, alias: "group", required: false }] }], optionGroupLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionGroupLabel", required: false }] }], optionGroupChildren: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionGroupChildren", required: false }] }], completeMethod: [{ type: i0.Output, args: ["completeMethod"] }], onSelect: [{ type: i0.Output, args: ["onSelect"] }], onUnselect: [{ type: i0.Output, args: ["onUnselect"] }], onDropdownClick: [{ type: i0.Output, args: ["onDropdownClick"] }], onClear: [{ type: i0.Output, args: ["onClear"] }], focusEvent: [{ type: i0.Output, args: ["focusEvent"] }], blurEvent: [{ type: i0.Output, args: ["blurEvent"] }], onChange: [{ type: i0.Output, args: ["onChange"] }], onLazyLoad: [{ type: i0.Output, args: ["onLazyLoad"] }], itemRef: [{ type: i0.ContentChild, args: ['item', { isSignal: true }] }], groupRef: [{ type: i0.ContentChild, args: ['group', { isSignal: true }] }], headerRef: [{ type: i0.ContentChild, args: ['header', { isSignal: true }] }], footerRef: [{ type: i0.ContentChild, args: ['footer', { isSignal: true }] }], emptyRef: [{ type: i0.ContentChild, args: ['empty', { isSignal: true }] }], selectedItemRef: [{ type: i0.ContentChild, args: ['selectedItem', { isSignal: true }] }], loaderRef: [{ type: i0.ContentChild, args: ['loader', { isSignal: true }] }], fTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => FTemplateDirective), { isSignal: true }] }] } });
15516
+ }], ctorParameters: () => [], propDecorators: { anchorRef: [{ type: i0.ViewChild, args: ['anchor', { isSignal: true }] }], panelRef: [{ type: i0.ViewChild, args: ['panel', { isSignal: true }] }], singleInputRef: [{ type: i0.ViewChild, args: ['singleInputEl', { isSignal: true }] }], suggestions: [{ type: i0.Input, args: [{ isSignal: true, alias: "suggestions", required: false }] }], field: [{ type: i0.Input, args: [{ isSignal: true, alias: "field", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], dropdown: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropdown", required: false }] }], forceSelection: [{ type: i0.Input, args: [{ isSignal: true, alias: "forceSelection", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], completeOnFocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "completeOnFocus", required: false }] }], freeText: [{ type: i0.Input, args: [{ isSignal: true, alias: "freeText", required: false }] }], filterLocally: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterLocally", required: false }] }], delay: [{ type: i0.Input, args: [{ isSignal: true, alias: "delay", required: false }] }], minLength: [{ type: i0.Input, args: [{ isSignal: true, alias: "minLength", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], showClear: [{ type: i0.Input, args: [{ isSignal: true, alias: "showClear", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], loadingIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "loadingIcon", required: false }] }], emptyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyMessage", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], appendTo: [{ type: i0.Input, args: [{ isSignal: true, alias: "appendTo", required: false }] }], virtualScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScroll", required: false }] }], virtualScrollItemSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScrollItemSize", required: false }] }], scrollHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollHeight", required: false }] }], lazy: [{ type: i0.Input, args: [{ isSignal: true, alias: "lazy", required: false }] }], group: [{ type: i0.Input, args: [{ isSignal: true, alias: "group", required: false }] }], optionGroupLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionGroupLabel", required: false }] }], optionGroupChildren: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionGroupChildren", required: false }] }], completeMethod: [{ type: i0.Output, args: ["completeMethod"] }], onSelect: [{ type: i0.Output, args: ["onSelect"] }], onUnselect: [{ type: i0.Output, args: ["onUnselect"] }], onDropdownClick: [{ type: i0.Output, args: ["onDropdownClick"] }], onClear: [{ type: i0.Output, args: ["onClear"] }], focusEvent: [{ type: i0.Output, args: ["focusEvent"] }], blurEvent: [{ type: i0.Output, args: ["blurEvent"] }], onChange: [{ type: i0.Output, args: ["onChange"] }], onLazyLoad: [{ type: i0.Output, args: ["onLazyLoad"] }], itemRef: [{ type: i0.ContentChild, args: ['item', { isSignal: true }] }], groupRef: [{ type: i0.ContentChild, args: ['group', { isSignal: true }] }], headerRef: [{ type: i0.ContentChild, args: ['header', { isSignal: true }] }], footerRef: [{ type: i0.ContentChild, args: ['footer', { isSignal: true }] }], emptyRef: [{ type: i0.ContentChild, args: ['empty', { isSignal: true }] }], selectedItemRef: [{ type: i0.ContentChild, args: ['selectedItem', { isSignal: true }] }], loaderRef: [{ type: i0.ContentChild, args: ['loader', { isSignal: true }] }], fTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => FTemplateDirective), { isSignal: true }] }] } });
15278
15517
 
15279
15518
  function hexToRgb(hex) {
15280
15519
  const clean = hex.replace('#', '');
@@ -15355,6 +15594,10 @@ class ColorPickerComponent {
15355
15594
  ...(ngDevMode ? [{ debugName: "format" }] : /* istanbul ignore next */ []));
15356
15595
  inline = input(false, { ...(ngDevMode ? { debugName: "inline" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
15357
15596
  disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
15597
+ _formDisabled = signal(false, /* @ts-ignore */
15598
+ ...(ngDevMode ? [{ debugName: "_formDisabled" }] : /* istanbul ignore next */ []));
15599
+ isDisabled = computed(() => this.disabled() || this._formDisabled(), /* @ts-ignore */
15600
+ ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
15358
15601
  invalid = input(false, { ...(ngDevMode ? { debugName: "invalid" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
15359
15602
  appendTo = input('self', /* @ts-ignore */
15360
15603
  ...(ngDevMode ? [{ debugName: "appendTo" }] : /* istanbul ignore next */ []));
@@ -15384,6 +15627,7 @@ class ColorPickerComponent {
15384
15627
  _onTouched = () => { };
15385
15628
  _wasOpen = false;
15386
15629
  constructor() {
15630
+ blockClicksWhileDisabled(this.isDisabled);
15387
15631
  effect(() => {
15388
15632
  const nowOpen = this.open();
15389
15633
  if (nowOpen !== this._wasOpen) {
@@ -15396,7 +15640,7 @@ class ColorPickerComponent {
15396
15640
  });
15397
15641
  }
15398
15642
  togglePanel(event) {
15399
- if (this.disabled())
15643
+ if (this.isDisabled())
15400
15644
  return;
15401
15645
  if (this.appendTo() === 'body') {
15402
15646
  this.popoverRef()?.toggle(event);
@@ -15438,7 +15682,7 @@ class ColorPickerComponent {
15438
15682
  writeValue(val) { this._value.set(val ? parseColor(String(val)) : '#000000'); }
15439
15683
  registerOnChange(fn) { this._onChange = fn; }
15440
15684
  registerOnTouched(fn) { this._onTouched = fn; }
15441
- setDisabledState() { }
15685
+ setDisabledState(isDisabled) { this._formDisabled.set(isDisabled); }
15442
15686
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: ColorPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
15443
15687
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: ColorPickerComponent, isStandalone: true, selector: "f-colorpicker", inputs: { format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, inline: { classPropertyName: "inline", publicName: "inline", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onChange: "onChange", onShow: "onShow", onHide: "onHide" }, host: { listeners: { "document:click": "onDocumentClick($event)" }, properties: { "class": "hostClass()", "style": "style()" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ColorPickerComponent), multi: true }], viewQueries: [{ propertyName: "popoverRef", first: true, predicate: ["pop"], descendants: true, isSignal: true }], ngImport: i0, template: `
15444
15688
  @if (inline()) {
@@ -15448,7 +15692,7 @@ class ColorPickerComponent {
15448
15692
  type="button"
15449
15693
  class="w-8 h-8 rounded-lg border-2 border-(--f-content-border-color) shadow-sm hover:border-(--f-form-field-hover-border-color) transition-all cursor-pointer overflow-hidden focus:outline-none focus-visible:ring-focus disabled:opacity-60 disabled:cursor-not-allowed"
15450
15694
  [style.background-color]="value()"
15451
- [disabled]="disabled()"
15695
+ [disabled]="isDisabled()"
15452
15696
  (click)="togglePanel($event)"
15453
15697
  (keydown)="onTriggerKeydown($event)"
15454
15698
  [attr.aria-label]="ariaLabel()"
@@ -15534,7 +15778,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
15534
15778
  type="button"
15535
15779
  class="w-8 h-8 rounded-lg border-2 border-(--f-content-border-color) shadow-sm hover:border-(--f-form-field-hover-border-color) transition-all cursor-pointer overflow-hidden focus:outline-none focus-visible:ring-focus disabled:opacity-60 disabled:cursor-not-allowed"
15536
15780
  [style.background-color]="value()"
15537
- [disabled]="disabled()"
15781
+ [disabled]="isDisabled()"
15538
15782
  (click)="togglePanel($event)"
15539
15783
  (keydown)="onTriggerKeydown($event)"
15540
15784
  [attr.aria-label]="ariaLabel()"
@@ -15621,6 +15865,13 @@ class ListboxComponent {
15621
15865
  filterPlaceholder = input('Search...', /* @ts-ignore */
15622
15866
  ...(ngDevMode ? [{ debugName: "filterPlaceholder" }] : /* istanbul ignore next */ []));
15623
15867
  disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
15868
+ _formDisabled = signal(false, /* @ts-ignore */
15869
+ ...(ngDevMode ? [{ debugName: "_formDisabled" }] : /* istanbul ignore next */ []));
15870
+ isDisabled = computed(() => this.disabled() || this._formDisabled(), /* @ts-ignore */
15871
+ ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
15872
+ constructor() {
15873
+ blockClicksWhileDisabled(this.isDisabled);
15874
+ }
15624
15875
  listStyle = input(null, /* @ts-ignore */
15625
15876
  ...(ngDevMode ? [{ debugName: "listStyle" }] : /* istanbul ignore next */ []));
15626
15877
  metaKeySelection = input(false, { ...(ngDevMode ? { debugName: "metaKeySelection" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
@@ -15807,7 +16058,7 @@ class ListboxComponent {
15807
16058
  ...(ngDevMode ? [{ debugName: "allFilteredSelected" }] : /* istanbul ignore next */ []));
15808
16059
  toggleSelectAll(e) {
15809
16060
  e.stopPropagation();
15810
- if (this.disabled())
16061
+ if (this.isDisabled())
15811
16062
  return;
15812
16063
  const selectable = this.filteredOptions().filter(o => !this.isOptionDisabled(o));
15813
16064
  const selectableValues = selectable.map(o => this.getOptionValue(o));
@@ -15822,7 +16073,7 @@ class ListboxComponent {
15822
16073
  this.onSelectAllChange.emit(selectingAll);
15823
16074
  }
15824
16075
  onOptionClick(e, opt) {
15825
- if (this.disabled() || this.isOptionDisabled(opt))
16076
+ if (this.isDisabled() || this.isOptionDisabled(opt))
15826
16077
  return;
15827
16078
  const v = this.getOptionValue(opt);
15828
16079
  let newVal;
@@ -15853,7 +16104,7 @@ class ListboxComponent {
15853
16104
  this._focusedOptionIndex.set(next);
15854
16105
  }
15855
16106
  onKeyDown(event) {
15856
- if (this.disabled())
16107
+ if (this.isDisabled())
15857
16108
  return;
15858
16109
  switch (event.key) {
15859
16110
  case 'ArrowDown':
@@ -15885,13 +16136,13 @@ class ListboxComponent {
15885
16136
  writeValue(val) { this._value.set(val ?? (this.multiple() ? [] : null)); }
15886
16137
  registerOnChange(fn) { this._onChange = fn; }
15887
16138
  registerOnTouched(fn) { this._onTouched = fn; }
15888
- setDisabledState() { }
16139
+ setDisabledState(isDisabled) { this._formDisabled.set(isDisabled); }
15889
16140
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: ListboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
15890
16141
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: ListboxComponent, isStandalone: true, selector: "f-listbox", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, optionLabel: { classPropertyName: "optionLabel", publicName: "optionLabel", isSignal: true, isRequired: false, transformFunction: null }, optionValue: { classPropertyName: "optionValue", publicName: "optionValue", isSignal: true, isRequired: false, transformFunction: null }, optionDisabled: { classPropertyName: "optionDisabled", publicName: "optionDisabled", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: false, transformFunction: null }, filterBy: { classPropertyName: "filterBy", publicName: "filterBy", isSignal: true, isRequired: false, transformFunction: null }, filterMatchMode: { classPropertyName: "filterMatchMode", publicName: "filterMatchMode", isSignal: true, isRequired: false, transformFunction: null }, filterPlaceholder: { classPropertyName: "filterPlaceholder", publicName: "filterPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, listStyle: { classPropertyName: "listStyle", publicName: "listStyle", isSignal: true, isRequired: false, transformFunction: null }, metaKeySelection: { classPropertyName: "metaKeySelection", publicName: "metaKeySelection", isSignal: true, isRequired: false, transformFunction: null }, emptyMessage: { classPropertyName: "emptyMessage", publicName: "emptyMessage", isSignal: true, isRequired: false, transformFunction: null }, emptyFilterMessage: { classPropertyName: "emptyFilterMessage", publicName: "emptyFilterMessage", isSignal: true, isRequired: false, transformFunction: null }, selectAll: { classPropertyName: "selectAll", publicName: "selectAll", isSignal: true, isRequired: false, transformFunction: null }, group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: false, transformFunction: null }, optionGroupLabel: { classPropertyName: "optionGroupLabel", publicName: "optionGroupLabel", isSignal: true, isRequired: false, transformFunction: null }, optionGroupChildren: { classPropertyName: "optionGroupChildren", publicName: "optionGroupChildren", isSignal: true, isRequired: false, transformFunction: null }, virtualScroll: { classPropertyName: "virtualScroll", publicName: "virtualScroll", isSignal: true, isRequired: false, transformFunction: null }, virtualScrollItemSize: { classPropertyName: "virtualScrollItemSize", publicName: "virtualScrollItemSize", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onChange: "onChange", onSelectAllChange: "onSelectAllChange" }, host: { classAttribute: "block" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ListboxComponent), multi: true }], queries: [{ propertyName: "itemRef", first: true, predicate: ["item"], descendants: true, isSignal: true }, { propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }, { propertyName: "headerRef", first: true, predicate: ["header"], descendants: true, isSignal: true }, { propertyName: "footerRef", first: true, predicate: ["footer"], descendants: true, isSignal: true }, { propertyName: "emptyRef", first: true, predicate: ["empty"], descendants: true, isSignal: true }, { propertyName: "emptyFilterRef", first: true, predicate: ["emptyfilter"], descendants: true, isSignal: true }, { propertyName: "filterRef", first: true, predicate: ["filter"], descendants: true, isSignal: true }, { propertyName: "fTemplates", predicate: FTemplateDirective, isSignal: true }], ngImport: i0, template: `
15891
16142
  <div
15892
16143
  class="w-full border border-(--f-content-border-color) rounded-lg bg-(--f-content-background) overflow-hidden shadow-sm"
15893
- [class.opacity-60]="disabled()"
15894
- [class.pointer-events-none]="disabled()"
16144
+ [class.opacity-60]="isDisabled()"
16145
+ [class.pointer-events-none]="isDisabled()"
15895
16146
  >
15896
16147
  @if (headerTpl()) {
15897
16148
  <div class="border-b border-(--f-content-border-color)">
@@ -16035,8 +16286,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
16035
16286
  template: `
16036
16287
  <div
16037
16288
  class="w-full border border-(--f-content-border-color) rounded-lg bg-(--f-content-background) overflow-hidden shadow-sm"
16038
- [class.opacity-60]="disabled()"
16039
- [class.pointer-events-none]="disabled()"
16289
+ [class.opacity-60]="isDisabled()"
16290
+ [class.pointer-events-none]="isDisabled()"
16040
16291
  >
16041
16292
  @if (headerTpl()) {
16042
16293
  <div class="border-b border-(--f-content-border-color)">
@@ -16170,7 +16421,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
16170
16421
  </ng-template>
16171
16422
  `,
16172
16423
  }]
16173
- }], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], optionLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionLabel", required: false }] }], optionValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionValue", required: false }] }], optionDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionDisabled", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: false }] }], filterBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterBy", required: false }] }], filterMatchMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterMatchMode", required: false }] }], filterPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterPlaceholder", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], listStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "listStyle", required: false }] }], metaKeySelection: [{ type: i0.Input, args: [{ isSignal: true, alias: "metaKeySelection", required: false }] }], emptyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyMessage", required: false }] }], emptyFilterMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyFilterMessage", required: false }] }], selectAll: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectAll", required: false }] }], group: [{ type: i0.Input, args: [{ isSignal: true, alias: "group", required: false }] }], optionGroupLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionGroupLabel", required: false }] }], optionGroupChildren: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionGroupChildren", required: false }] }], virtualScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScroll", required: false }] }], virtualScrollItemSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScrollItemSize", required: false }] }], inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], onChange: [{ type: i0.Output, args: ["onChange"] }], onSelectAllChange: [{ type: i0.Output, args: ["onSelectAllChange"] }], itemRef: [{ type: i0.ContentChild, args: ['item', { isSignal: true }] }], groupRef: [{ type: i0.ContentChild, args: ['group', { isSignal: true }] }], headerRef: [{ type: i0.ContentChild, args: ['header', { isSignal: true }] }], footerRef: [{ type: i0.ContentChild, args: ['footer', { isSignal: true }] }], emptyRef: [{ type: i0.ContentChild, args: ['empty', { isSignal: true }] }], emptyFilterRef: [{ type: i0.ContentChild, args: ['emptyfilter', { isSignal: true }] }], filterRef: [{ type: i0.ContentChild, args: ['filter', { isSignal: true }] }], fTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => FTemplateDirective), { isSignal: true }] }] } });
16424
+ }], ctorParameters: () => [], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], optionLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionLabel", required: false }] }], optionValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionValue", required: false }] }], optionDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionDisabled", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: false }] }], filterBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterBy", required: false }] }], filterMatchMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterMatchMode", required: false }] }], filterPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterPlaceholder", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], listStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "listStyle", required: false }] }], metaKeySelection: [{ type: i0.Input, args: [{ isSignal: true, alias: "metaKeySelection", required: false }] }], emptyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyMessage", required: false }] }], emptyFilterMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyFilterMessage", required: false }] }], selectAll: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectAll", required: false }] }], group: [{ type: i0.Input, args: [{ isSignal: true, alias: "group", required: false }] }], optionGroupLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionGroupLabel", required: false }] }], optionGroupChildren: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionGroupChildren", required: false }] }], virtualScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScroll", required: false }] }], virtualScrollItemSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScrollItemSize", required: false }] }], inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], onChange: [{ type: i0.Output, args: ["onChange"] }], onSelectAllChange: [{ type: i0.Output, args: ["onSelectAllChange"] }], itemRef: [{ type: i0.ContentChild, args: ['item', { isSignal: true }] }], groupRef: [{ type: i0.ContentChild, args: ['group', { isSignal: true }] }], headerRef: [{ type: i0.ContentChild, args: ['header', { isSignal: true }] }], footerRef: [{ type: i0.ContentChild, args: ['footer', { isSignal: true }] }], emptyRef: [{ type: i0.ContentChild, args: ['empty', { isSignal: true }] }], emptyFilterRef: [{ type: i0.ContentChild, args: ['emptyfilter', { isSignal: true }] }], filterRef: [{ type: i0.ContentChild, args: ['filter', { isSignal: true }] }], fTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => FTemplateDirective), { isSignal: true }] }] } });
16174
16425
 
16175
16426
  class SplitButtonComponent {
16176
16427
  _el = inject(ElementRef);
@@ -16215,6 +16466,9 @@ class SplitButtonComponent {
16215
16466
  onDropdownClick = output();
16216
16467
  onShow = output();
16217
16468
  onHide = output();
16469
+ constructor() {
16470
+ blockClicksWhileDisabled(this.disabled);
16471
+ }
16218
16472
  _open = signal(false, /* @ts-ignore */
16219
16473
  ...(ngDevMode ? [{ debugName: "_open" }] : /* istanbul ignore next */ []));
16220
16474
  open = this._open.asReadonly();
@@ -16510,7 +16764,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
16510
16764
  </div>
16511
16765
  `,
16512
16766
  }]
16513
- }], propDecorators: { _group: [{ type: i0.ViewChild, args: ['group', { isSignal: true }] }], _dropdownBtn: [{ type: i0.ViewChild, args: ['dropdownButton', { isSignal: true }] }], _menuPanel: [{ type: i0.ViewChild, args: ['menuPanel', { isSignal: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], model: [{ type: i0.Input, args: [{ isSignal: true, alias: "model", required: false }] }], severity: [{ type: i0.Input, args: [{ isSignal: true, alias: "severity", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], raised: [{ type: i0.Input, args: [{ isSignal: true, alias: "raised", required: false }] }], rounded: [{ type: i0.Input, args: [{ isSignal: true, alias: "rounded", required: false }] }], outlined: [{ type: i0.Input, args: [{ isSignal: true, alias: "outlined", required: false }] }], text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }], iconPos: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconPos", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], menuStyleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "menuStyleClass", required: false }] }], appendTo: [{ type: i0.Input, args: [{ isSignal: true, alias: "appendTo", required: false }] }], dropdownIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropdownIcon", required: false }] }], expandAriaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandAriaLabel", required: false }] }], onClick: [{ type: i0.Output, args: ["onClick"] }], onDropdownClick: [{ type: i0.Output, args: ["onDropdownClick"] }], onShow: [{ type: i0.Output, args: ["onShow"] }], onHide: [{ type: i0.Output, args: ["onHide"] }] } });
16767
+ }], ctorParameters: () => [], propDecorators: { _group: [{ type: i0.ViewChild, args: ['group', { isSignal: true }] }], _dropdownBtn: [{ type: i0.ViewChild, args: ['dropdownButton', { isSignal: true }] }], _menuPanel: [{ type: i0.ViewChild, args: ['menuPanel', { isSignal: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], model: [{ type: i0.Input, args: [{ isSignal: true, alias: "model", required: false }] }], severity: [{ type: i0.Input, args: [{ isSignal: true, alias: "severity", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], raised: [{ type: i0.Input, args: [{ isSignal: true, alias: "raised", required: false }] }], rounded: [{ type: i0.Input, args: [{ isSignal: true, alias: "rounded", required: false }] }], outlined: [{ type: i0.Input, args: [{ isSignal: true, alias: "outlined", required: false }] }], text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }], iconPos: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconPos", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], menuStyleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "menuStyleClass", required: false }] }], appendTo: [{ type: i0.Input, args: [{ isSignal: true, alias: "appendTo", required: false }] }], dropdownIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropdownIcon", required: false }] }], expandAriaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandAriaLabel", required: false }] }], onClick: [{ type: i0.Output, args: ["onClick"] }], onDropdownClick: [{ type: i0.Output, args: ["onDropdownClick"] }], onShow: [{ type: i0.Output, args: ["onShow"] }], onHide: [{ type: i0.Output, args: ["onHide"] }] } });
16514
16768
 
16515
16769
  let _uidCounter$2 = 0;
16516
16770
  function assignKey$2(node) {
@@ -16525,7 +16779,16 @@ class TreeSelectComponent {
16525
16779
  ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
16526
16780
  placeholder = input('Select', /* @ts-ignore */
16527
16781
  ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
16782
+ inputId = input('', /* @ts-ignore */
16783
+ ...(ngDevMode ? [{ debugName: "inputId" }] : /* istanbul ignore next */ []));
16528
16784
  disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
16785
+ _formDisabled = signal(false, /* @ts-ignore */
16786
+ ...(ngDevMode ? [{ debugName: "_formDisabled" }] : /* istanbul ignore next */ []));
16787
+ isDisabled = computed(() => this.disabled() || this._formDisabled(), /* @ts-ignore */
16788
+ ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
16789
+ constructor() {
16790
+ blockClicksWhileDisabled(this.isDisabled);
16791
+ }
16529
16792
  filter = input(false, { ...(ngDevMode ? { debugName: "filter" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
16530
16793
  filterBy = input('label', /* @ts-ignore */
16531
16794
  ...(ngDevMode ? [{ debugName: "filterBy" }] : /* istanbul ignore next */ []));
@@ -16612,7 +16875,7 @@ class TreeSelectComponent {
16612
16875
  null, /* @ts-ignore */
16613
16876
  ...(ngDevMode ? [{ debugName: "emptyTpl" }] : /* istanbul ignore next */ []));
16614
16877
  triggerClass = computed(() => {
16615
- const base = 'w-full min-h-[34px] flex items-center gap-2 f-field-compact text-sm border bg-(--f-form-field-background) focus:outline-none focus-visible:ring-focus transition-all duration-[var(--f-transition-duration)]';
16878
+ const base = 'w-full flex items-center gap-2 f-field-compact text-sm border bg-(--f-form-field-background) focus:outline-none focus-visible:ring-focus transition-all duration-[var(--f-transition-duration)]';
16616
16879
  const showInvalid = this.invalid() && this.touched();
16617
16880
  const stateClass = this.open()
16618
16881
  ? showInvalid
@@ -16621,7 +16884,7 @@ class TreeSelectComponent {
16621
16884
  : showInvalid
16622
16885
  ? 'border-red-400'
16623
16886
  : 'border-(--f-form-field-border-color) hover:border-(--f-form-field-hover-border-color)';
16624
- const disabledClass = this.disabled()
16887
+ const disabledClass = this.isDisabled()
16625
16888
  ? 'opacity-60 cursor-not-allowed'
16626
16889
  : 'cursor-pointer';
16627
16890
  return `${base} ${stateClass} ${disabledClass}`;
@@ -16694,7 +16957,7 @@ class TreeSelectComponent {
16694
16957
  this._filterText.set(v);
16695
16958
  }
16696
16959
  toggleOpen() {
16697
- if (this.disabled())
16960
+ if (this.isDisabled())
16698
16961
  return;
16699
16962
  this._open.update((v) => !v);
16700
16963
  if (!this.open()) {
@@ -16703,7 +16966,7 @@ class TreeSelectComponent {
16703
16966
  }
16704
16967
  }
16705
16968
  onTriggerKeyDown(e) {
16706
- if (this.disabled())
16969
+ if (this.isDisabled())
16707
16970
  return;
16708
16971
  if (e.key === 'Enter' || e.key === ' ') {
16709
16972
  e.preventDefault();
@@ -16747,6 +17010,11 @@ class TreeSelectComponent {
16747
17010
  }
16748
17011
  onNodeClick(e, row) {
16749
17012
  e.stopPropagation();
17013
+ if (row.node.selectable === false) {
17014
+ if (!row.leaf)
17015
+ this.toggleExpand(e, row.key);
17016
+ return;
17017
+ }
16750
17018
  if (this.selectionMode() === 'checkbox') {
16751
17019
  this.toggleCheckbox(row.key);
16752
17020
  }
@@ -16853,9 +17121,9 @@ class TreeSelectComponent {
16853
17121
  registerOnTouched(fn) {
16854
17122
  this._onTouched = fn;
16855
17123
  }
16856
- setDisabledState() { }
17124
+ setDisabledState(isDisabled) { this._formDisabled.set(isDisabled); }
16857
17125
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: TreeSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
16858
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: TreeSelectComponent, isStandalone: true, selector: "f-treeselect", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: false, transformFunction: null }, filterBy: { classPropertyName: "filterBy", publicName: "filterBy", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, display: { classPropertyName: "display", publicName: "display", isSignal: true, isRequired: false, transformFunction: null }, propagateSelectionDown: { classPropertyName: "propagateSelectionDown", publicName: "propagateSelectionDown", isSignal: true, isRequired: false, transformFunction: null }, propagateSelectionUp: { classPropertyName: "propagateSelectionUp", publicName: "propagateSelectionUp", isSignal: true, isRequired: false, transformFunction: null }, showClear: { classPropertyName: "showClear", publicName: "showClear", isSignal: true, isRequired: false, transformFunction: null }, virtualScroll: { classPropertyName: "virtualScroll", publicName: "virtualScroll", isSignal: true, isRequired: false, transformFunction: null }, virtualScrollItemSize: { classPropertyName: "virtualScrollItemSize", publicName: "virtualScrollItemSize", isSignal: true, isRequired: false, transformFunction: null }, emptyMessage: { classPropertyName: "emptyMessage", publicName: "emptyMessage", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "document:click": "onDocumentClick($event)" }, properties: { "class": "hostClass()", "style": "style()" } }, providers: [
17126
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: TreeSelectComponent, isStandalone: true, selector: "f-treeselect", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: false, transformFunction: null }, filterBy: { classPropertyName: "filterBy", publicName: "filterBy", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, display: { classPropertyName: "display", publicName: "display", isSignal: true, isRequired: false, transformFunction: null }, propagateSelectionDown: { classPropertyName: "propagateSelectionDown", publicName: "propagateSelectionDown", isSignal: true, isRequired: false, transformFunction: null }, propagateSelectionUp: { classPropertyName: "propagateSelectionUp", publicName: "propagateSelectionUp", isSignal: true, isRequired: false, transformFunction: null }, showClear: { classPropertyName: "showClear", publicName: "showClear", isSignal: true, isRequired: false, transformFunction: null }, virtualScroll: { classPropertyName: "virtualScroll", publicName: "virtualScroll", isSignal: true, isRequired: false, transformFunction: null }, virtualScrollItemSize: { classPropertyName: "virtualScrollItemSize", publicName: "virtualScrollItemSize", isSignal: true, isRequired: false, transformFunction: null }, emptyMessage: { classPropertyName: "emptyMessage", publicName: "emptyMessage", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "document:click": "onDocumentClick($event)" }, properties: { "class": "hostClass()", "style": "style()" } }, providers: [
16859
17127
  {
16860
17128
  provide: NG_VALUE_ACCESSOR,
16861
17129
  useExisting: forwardRef(() => TreeSelectComponent),
@@ -16866,10 +17134,11 @@ class TreeSelectComponent {
16866
17134
  <div
16867
17135
  #trigger
16868
17136
  role="combobox"
17137
+ [attr.id]="inputId() || null"
16869
17138
  aria-haspopup="tree"
16870
17139
  [attr.aria-expanded]="open()"
16871
- [attr.aria-disabled]="disabled() || null"
16872
- [attr.tabindex]="disabled() ? -1 : 0"
17140
+ [attr.aria-disabled]="isDisabled() || null"
17141
+ [attr.tabindex]="isDisabled() ? -1 : 0"
16873
17142
  [class]="triggerClass()"
16874
17143
  (click)="toggleOpen()"
16875
17144
  (keydown)="onTriggerKeyDown($event)"
@@ -16925,7 +17194,7 @@ class TreeSelectComponent {
16925
17194
  }}</span>
16926
17195
  }
16927
17196
  <span class="ml-auto flex items-center gap-1 shrink-0">
16928
- @if (showClear() && selectedKeys().size && !disabled()) {
17197
+ @if (showClear() && selectedKeys().size && !isDisabled()) {
16929
17198
  <ui-icon
16930
17199
  name="x"
16931
17200
  class="text-xs text-(--f-form-field-placeholder-color) hover:text-(--f-text-color) shrink-0"
@@ -17030,7 +17299,7 @@ class TreeSelectComponent {
17030
17299
  role="treeitem"
17031
17300
  [attr.aria-level]="row.level + 1"
17032
17301
  [attr.aria-expanded]="row.leaf ? null : isExpanded(row.key)"
17033
- [attr.aria-selected]="isSelected(row.key)"
17302
+ [attr.aria-selected]="row.node.selectable === false ? null : isSelected(row.key)"
17034
17303
  (click)="onNodeClick($event, row)"
17035
17304
  >
17036
17305
  @if (!row.leaf) {
@@ -17049,7 +17318,7 @@ class TreeSelectComponent {
17049
17318
  <span class="inline-block w-5 h-5 shrink-0"></span>
17050
17319
  }
17051
17320
 
17052
- @if (selectionMode() === 'checkbox') {
17321
+ @if (selectionMode() === 'checkbox' && row.node.selectable !== false) {
17053
17322
  <div
17054
17323
  class="w-4 h-4 rounded-sm border flex items-center justify-center shrink-0 transition-colors"
17055
17324
  [class]="
@@ -17080,7 +17349,7 @@ class TreeSelectComponent {
17080
17349
  class="text-xs text-(--f-text-muted-color) shrink-0"
17081
17350
  ></ui-icon>
17082
17351
  }
17083
- <span class="flex-1 truncate">{{ row.node.label }}</span>
17352
+ <span class="flex-1 truncate" [class.font-medium]="row.node.selectable === false">{{ row.node.label }}</span>
17084
17353
  </div>
17085
17354
  </ng-template>
17086
17355
  `, isInline: true, dependencies: [{ kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill", "severity"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ScrollerComponent, selector: "f-scroller", inputs: ["items", "itemSize", "scrollHeight", "scrollWidth", "orientation", "lazy", "loading", "trackBy", "styleClass", "style"], outputs: ["onLazyLoad", "onScrollIndexChange"] }] });
@@ -17107,10 +17376,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
17107
17376
  <div
17108
17377
  #trigger
17109
17378
  role="combobox"
17379
+ [attr.id]="inputId() || null"
17110
17380
  aria-haspopup="tree"
17111
17381
  [attr.aria-expanded]="open()"
17112
- [attr.aria-disabled]="disabled() || null"
17113
- [attr.tabindex]="disabled() ? -1 : 0"
17382
+ [attr.aria-disabled]="isDisabled() || null"
17383
+ [attr.tabindex]="isDisabled() ? -1 : 0"
17114
17384
  [class]="triggerClass()"
17115
17385
  (click)="toggleOpen()"
17116
17386
  (keydown)="onTriggerKeyDown($event)"
@@ -17166,7 +17436,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
17166
17436
  }}</span>
17167
17437
  }
17168
17438
  <span class="ml-auto flex items-center gap-1 shrink-0">
17169
- @if (showClear() && selectedKeys().size && !disabled()) {
17439
+ @if (showClear() && selectedKeys().size && !isDisabled()) {
17170
17440
  <ui-icon
17171
17441
  name="x"
17172
17442
  class="text-xs text-(--f-form-field-placeholder-color) hover:text-(--f-text-color) shrink-0"
@@ -17271,7 +17541,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
17271
17541
  role="treeitem"
17272
17542
  [attr.aria-level]="row.level + 1"
17273
17543
  [attr.aria-expanded]="row.leaf ? null : isExpanded(row.key)"
17274
- [attr.aria-selected]="isSelected(row.key)"
17544
+ [attr.aria-selected]="row.node.selectable === false ? null : isSelected(row.key)"
17275
17545
  (click)="onNodeClick($event, row)"
17276
17546
  >
17277
17547
  @if (!row.leaf) {
@@ -17290,7 +17560,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
17290
17560
  <span class="inline-block w-5 h-5 shrink-0"></span>
17291
17561
  }
17292
17562
 
17293
- @if (selectionMode() === 'checkbox') {
17563
+ @if (selectionMode() === 'checkbox' && row.node.selectable !== false) {
17294
17564
  <div
17295
17565
  class="w-4 h-4 rounded-sm border flex items-center justify-center shrink-0 transition-colors"
17296
17566
  [class]="
@@ -17321,12 +17591,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
17321
17591
  class="text-xs text-(--f-text-muted-color) shrink-0"
17322
17592
  ></ui-icon>
17323
17593
  }
17324
- <span class="flex-1 truncate">{{ row.node.label }}</span>
17594
+ <span class="flex-1 truncate" [class.font-medium]="row.node.selectable === false">{{ row.node.label }}</span>
17325
17595
  </div>
17326
17596
  </ng-template>
17327
17597
  `,
17328
17598
  }]
17329
- }], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: false }] }], filterBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterBy", required: false }] }], selectionMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionMode", required: false }] }], display: [{ type: i0.Input, args: [{ isSignal: true, alias: "display", required: false }] }], propagateSelectionDown: [{ type: i0.Input, args: [{ isSignal: true, alias: "propagateSelectionDown", required: false }] }], propagateSelectionUp: [{ type: i0.Input, args: [{ isSignal: true, alias: "propagateSelectionUp", required: false }] }], showClear: [{ type: i0.Input, args: [{ isSignal: true, alias: "showClear", required: false }] }], virtualScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScroll", required: false }] }], virtualScrollItemSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScrollItemSize", required: false }] }], emptyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyMessage", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], appendTo: [{ type: i0.Input, args: [{ isSignal: true, alias: "appendTo", required: false }] }], triggerRef: [{ type: i0.ViewChild, args: ['trigger', { isSignal: true }] }], panelRef: [{ type: i0.ViewChild, args: ['panel', { isSignal: true }] }], valueRef: [{ type: i0.ContentChild, args: ['value', { isSignal: true }] }], headerRef: [{ type: i0.ContentChild, args: ['header', { isSignal: true }] }], footerRef: [{ type: i0.ContentChild, args: ['footer', { isSignal: true }] }], emptyRef: [{ type: i0.ContentChild, args: ['empty', { isSignal: true }] }], fTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => FTemplateDirective), { isSignal: true }] }] } });
17599
+ }], ctorParameters: () => [], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: false }] }], filterBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterBy", required: false }] }], selectionMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionMode", required: false }] }], display: [{ type: i0.Input, args: [{ isSignal: true, alias: "display", required: false }] }], propagateSelectionDown: [{ type: i0.Input, args: [{ isSignal: true, alias: "propagateSelectionDown", required: false }] }], propagateSelectionUp: [{ type: i0.Input, args: [{ isSignal: true, alias: "propagateSelectionUp", required: false }] }], showClear: [{ type: i0.Input, args: [{ isSignal: true, alias: "showClear", required: false }] }], virtualScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScroll", required: false }] }], virtualScrollItemSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScrollItemSize", required: false }] }], emptyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyMessage", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], appendTo: [{ type: i0.Input, args: [{ isSignal: true, alias: "appendTo", required: false }] }], triggerRef: [{ type: i0.ViewChild, args: ['trigger', { isSignal: true }] }], panelRef: [{ type: i0.ViewChild, args: ['panel', { isSignal: true }] }], valueRef: [{ type: i0.ContentChild, args: ['value', { isSignal: true }] }], headerRef: [{ type: i0.ContentChild, args: ['header', { isSignal: true }] }], footerRef: [{ type: i0.ContentChild, args: ['footer', { isSignal: true }] }], emptyRef: [{ type: i0.ContentChild, args: ['empty', { isSignal: true }] }], fTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => FTemplateDirective), { isSignal: true }] }] } });
17330
17600
 
17331
17601
  class OverlayBadgeComponent {
17332
17602
  value = input('', /* @ts-ignore */
@@ -18022,8 +18292,10 @@ class MenuComponent {
18022
18292
  }
18023
18293
  }
18024
18294
  onItemClick(e, item) {
18025
- if (item.disabled)
18295
+ if (item.disabled) {
18296
+ e.preventDefault();
18026
18297
  return;
18298
+ }
18027
18299
  item.command?.({ originalEvent: e, item });
18028
18300
  if (this.popup())
18029
18301
  this.hide();
@@ -18106,7 +18378,7 @@ class MenuComponent {
18106
18378
  [attr.aria-disabled]="item.disabled ? true : null"
18107
18379
  [attr.data-p-disabled]="item.disabled ? true : null"
18108
18380
  [class]="itemClass"
18109
- [routerLink]="item.routerLink"
18381
+ [routerLink]="item.disabled ? null : item.routerLink"
18110
18382
  [queryParams]="item.queryParams"
18111
18383
  (click)="onItemClick($event, item)"
18112
18384
  >
@@ -18119,7 +18391,7 @@ class MenuComponent {
18119
18391
  [attr.aria-disabled]="item.disabled ? true : null"
18120
18392
  [attr.data-p-disabled]="item.disabled ? true : null"
18121
18393
  [class]="itemClass"
18122
- [href]="item.url"
18394
+ [attr.href]="item.disabled ? null : item.url"
18123
18395
  [target]="item.target ?? null"
18124
18396
  (click)="onItemClick($event, item)"
18125
18397
  >
@@ -18222,7 +18494,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
18222
18494
  [attr.aria-disabled]="item.disabled ? true : null"
18223
18495
  [attr.data-p-disabled]="item.disabled ? true : null"
18224
18496
  [class]="itemClass"
18225
- [routerLink]="item.routerLink"
18497
+ [routerLink]="item.disabled ? null : item.routerLink"
18226
18498
  [queryParams]="item.queryParams"
18227
18499
  (click)="onItemClick($event, item)"
18228
18500
  >
@@ -18235,7 +18507,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
18235
18507
  [attr.aria-disabled]="item.disabled ? true : null"
18236
18508
  [attr.data-p-disabled]="item.disabled ? true : null"
18237
18509
  [class]="itemClass"
18238
- [href]="item.url"
18510
+ [attr.href]="item.disabled ? null : item.url"
18239
18511
  [target]="item.target ?? null"
18240
18512
  (click)="onItemClick($event, item)"
18241
18513
  >
@@ -18393,8 +18665,10 @@ class MenubarComponent {
18393
18665
  }, 150);
18394
18666
  }
18395
18667
  onItemClick(e, item, level) {
18396
- if (item.disabled)
18668
+ if (item.disabled) {
18669
+ e.preventDefault();
18397
18670
  return;
18671
+ }
18398
18672
  if (item.items?.length) {
18399
18673
  e.preventDefault();
18400
18674
  this._dirty = true;
@@ -18563,7 +18837,7 @@ class MenubarComponent {
18563
18837
  [attr.aria-haspopup]="item.items?.length ? 'menu' : null"
18564
18838
  [attr.aria-expanded]="item.items?.length ? isItemActive(item, level) : null"
18565
18839
  [class]="itemClass"
18566
- [routerLink]="item.routerLink"
18840
+ [routerLink]="item.disabled ? null : item.routerLink"
18567
18841
  [queryParams]="item.queryParams"
18568
18842
  (click)="onItemClick($event, item, level)"
18569
18843
  >
@@ -18578,7 +18852,7 @@ class MenubarComponent {
18578
18852
  [attr.aria-haspopup]="item.items?.length ? 'menu' : null"
18579
18853
  [attr.aria-expanded]="item.items?.length ? isItemActive(item, level) : null"
18580
18854
  [class]="itemClass"
18581
- [href]="item.url"
18855
+ [attr.href]="item.disabled ? null : item.url"
18582
18856
  [target]="item.target ?? null"
18583
18857
  (click)="onItemClick($event, item, level)"
18584
18858
  >
@@ -18653,7 +18927,7 @@ class MenubarComponent {
18653
18927
  [attr.aria-haspopup]="item.items?.length ? 'menu' : null"
18654
18928
  [attr.aria-expanded]="item.items?.length ? isItemActive(item, 0) : null"
18655
18929
  [class]="rootClass"
18656
- [routerLink]="item.routerLink"
18930
+ [routerLink]="item.disabled ? null : item.routerLink"
18657
18931
  [queryParams]="item.queryParams"
18658
18932
  (click)="onItemClick($event, item, 0)"
18659
18933
  >
@@ -18668,7 +18942,7 @@ class MenubarComponent {
18668
18942
  [attr.aria-haspopup]="item.items?.length ? 'menu' : null"
18669
18943
  [attr.aria-expanded]="item.items?.length ? isItemActive(item, 0) : null"
18670
18944
  [class]="rootClass"
18671
- [href]="item.url"
18945
+ [attr.href]="item.disabled ? null : item.url"
18672
18946
  [target]="item.target ?? null"
18673
18947
  (click)="onItemClick($event, item, 0)"
18674
18948
  >
@@ -18755,7 +19029,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
18755
19029
  [attr.aria-haspopup]="item.items?.length ? 'menu' : null"
18756
19030
  [attr.aria-expanded]="item.items?.length ? isItemActive(item, level) : null"
18757
19031
  [class]="itemClass"
18758
- [routerLink]="item.routerLink"
19032
+ [routerLink]="item.disabled ? null : item.routerLink"
18759
19033
  [queryParams]="item.queryParams"
18760
19034
  (click)="onItemClick($event, item, level)"
18761
19035
  >
@@ -18770,7 +19044,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
18770
19044
  [attr.aria-haspopup]="item.items?.length ? 'menu' : null"
18771
19045
  [attr.aria-expanded]="item.items?.length ? isItemActive(item, level) : null"
18772
19046
  [class]="itemClass"
18773
- [href]="item.url"
19047
+ [attr.href]="item.disabled ? null : item.url"
18774
19048
  [target]="item.target ?? null"
18775
19049
  (click)="onItemClick($event, item, level)"
18776
19050
  >
@@ -18845,7 +19119,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
18845
19119
  [attr.aria-haspopup]="item.items?.length ? 'menu' : null"
18846
19120
  [attr.aria-expanded]="item.items?.length ? isItemActive(item, 0) : null"
18847
19121
  [class]="rootClass"
18848
- [routerLink]="item.routerLink"
19122
+ [routerLink]="item.disabled ? null : item.routerLink"
18849
19123
  [queryParams]="item.queryParams"
18850
19124
  (click)="onItemClick($event, item, 0)"
18851
19125
  >
@@ -18860,7 +19134,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
18860
19134
  [attr.aria-haspopup]="item.items?.length ? 'menu' : null"
18861
19135
  [attr.aria-expanded]="item.items?.length ? isItemActive(item, 0) : null"
18862
19136
  [class]="rootClass"
18863
- [href]="item.url"
19137
+ [attr.href]="item.disabled ? null : item.url"
18864
19138
  [target]="item.target ?? null"
18865
19139
  (click)="onItemClick($event, item, 0)"
18866
19140
  >
@@ -19002,8 +19276,10 @@ class TieredMenuComponent {
19002
19276
  }
19003
19277
  }
19004
19278
  onItemClick(e, item, level) {
19005
- if (item.disabled)
19279
+ if (item.disabled) {
19280
+ e.preventDefault();
19006
19281
  return;
19282
+ }
19007
19283
  if (item.items?.length) {
19008
19284
  e.preventDefault();
19009
19285
  const path = this._activeItemPath();
@@ -19125,7 +19401,7 @@ class TieredMenuComponent {
19125
19401
  [attr.aria-haspopup]="item.items?.length ? 'menu' : null"
19126
19402
  [attr.aria-expanded]="item.items?.length ? isItemActive(item, level) : null"
19127
19403
  [class]="itemClass"
19128
- [routerLink]="item.routerLink"
19404
+ [routerLink]="item.disabled ? null : item.routerLink"
19129
19405
  [queryParams]="item.queryParams"
19130
19406
  (click)="onItemClick($event, item, level)"
19131
19407
  (keydown.arrowRight)="onArrowRight($event, item, level)"
@@ -19142,7 +19418,7 @@ class TieredMenuComponent {
19142
19418
  [attr.aria-haspopup]="item.items?.length ? 'menu' : null"
19143
19419
  [attr.aria-expanded]="item.items?.length ? isItemActive(item, level) : null"
19144
19420
  [class]="itemClass"
19145
- [href]="item.url"
19421
+ [attr.href]="item.disabled ? null : item.url"
19146
19422
  [target]="item.target ?? null"
19147
19423
  (click)="onItemClick($event, item, level)"
19148
19424
  (keydown.arrowRight)="onArrowRight($event, item, level)"
@@ -19252,7 +19528,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
19252
19528
  [attr.aria-haspopup]="item.items?.length ? 'menu' : null"
19253
19529
  [attr.aria-expanded]="item.items?.length ? isItemActive(item, level) : null"
19254
19530
  [class]="itemClass"
19255
- [routerLink]="item.routerLink"
19531
+ [routerLink]="item.disabled ? null : item.routerLink"
19256
19532
  [queryParams]="item.queryParams"
19257
19533
  (click)="onItemClick($event, item, level)"
19258
19534
  (keydown.arrowRight)="onArrowRight($event, item, level)"
@@ -19269,7 +19545,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
19269
19545
  [attr.aria-haspopup]="item.items?.length ? 'menu' : null"
19270
19546
  [attr.aria-expanded]="item.items?.length ? isItemActive(item, level) : null"
19271
19547
  [class]="itemClass"
19272
- [href]="item.url"
19548
+ [attr.href]="item.disabled ? null : item.url"
19273
19549
  [target]="item.target ?? null"
19274
19550
  (click)="onItemClick($event, item, level)"
19275
19551
  (keydown.arrowRight)="onArrowRight($event, item, level)"
@@ -19412,8 +19688,10 @@ class ContextMenuComponent {
19412
19688
  this._activeItemPath.set(path);
19413
19689
  }
19414
19690
  onItemClick(e, item, level) {
19415
- if (item.disabled)
19691
+ if (item.disabled) {
19692
+ e.preventDefault();
19416
19693
  return;
19694
+ }
19417
19695
  if (item.items?.length) {
19418
19696
  e.preventDefault();
19419
19697
  const path = this._activeItemPath();
@@ -19538,7 +19816,7 @@ class ContextMenuComponent {
19538
19816
  [attr.data-level]="level"
19539
19817
  [attr.aria-haspopup]="item.items?.length ? 'menu' : null"
19540
19818
  [attr.aria-expanded]="item.items?.length ? isItemActive(item, level) : null"
19541
- [routerLink]="item.routerLink"
19819
+ [routerLink]="item.disabled ? null : item.routerLink"
19542
19820
  [queryParams]="item.queryParams"
19543
19821
  (click)="onItemClick($event, item, level)"
19544
19822
  >
@@ -19551,7 +19829,7 @@ class ContextMenuComponent {
19551
19829
  [attr.data-level]="level"
19552
19830
  [attr.aria-haspopup]="item.items?.length ? 'menu' : null"
19553
19831
  [attr.aria-expanded]="item.items?.length ? isItemActive(item, level) : null"
19554
- [href]="item.url"
19832
+ [attr.href]="item.disabled ? null : item.url"
19555
19833
  [target]="item.target ?? null"
19556
19834
  (click)="onItemClick($event, item, level)"
19557
19835
  >
@@ -19638,7 +19916,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
19638
19916
  [attr.data-level]="level"
19639
19917
  [attr.aria-haspopup]="item.items?.length ? 'menu' : null"
19640
19918
  [attr.aria-expanded]="item.items?.length ? isItemActive(item, level) : null"
19641
- [routerLink]="item.routerLink"
19919
+ [routerLink]="item.disabled ? null : item.routerLink"
19642
19920
  [queryParams]="item.queryParams"
19643
19921
  (click)="onItemClick($event, item, level)"
19644
19922
  >
@@ -19651,7 +19929,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
19651
19929
  [attr.data-level]="level"
19652
19930
  [attr.aria-haspopup]="item.items?.length ? 'menu' : null"
19653
19931
  [attr.aria-expanded]="item.items?.length ? isItemActive(item, level) : null"
19654
- [href]="item.url"
19932
+ [attr.href]="item.disabled ? null : item.url"
19655
19933
  [target]="item.target ?? null"
19656
19934
  (click)="onItemClick($event, item, level)"
19657
19935
  >
@@ -19780,8 +20058,10 @@ class MegaMenuComponent {
19780
20058
  }
19781
20059
  }
19782
20060
  onRootClick(e, item) {
19783
- if (item.disabled)
20061
+ if (item.disabled) {
20062
+ e.preventDefault();
19784
20063
  return;
20064
+ }
19785
20065
  if (item.items?.length) {
19786
20066
  const opening = this.activeItem() !== item;
19787
20067
  this._activeItem.set(opening ? item : null);
@@ -19795,15 +20075,19 @@ class MegaMenuComponent {
19795
20075
  this._dirty = false;
19796
20076
  }
19797
20077
  onLeafClick(e, item) {
19798
- if (item.disabled)
20078
+ if (item.disabled) {
20079
+ e.preventDefault();
19799
20080
  return;
20081
+ }
19800
20082
  item.command?.({ originalEvent: e, item });
19801
20083
  this._activeItem.set(null);
19802
20084
  this._dirty = false;
19803
20085
  }
19804
20086
  onMobileItemClick(e, item) {
19805
- if (item.disabled)
20087
+ if (item.disabled) {
20088
+ e.preventDefault();
19806
20089
  return;
20090
+ }
19807
20091
  if (item.items?.length) {
19808
20092
  this._mobileExpanded.update(s => {
19809
20093
  const next = new Set(s);
@@ -19991,11 +20275,11 @@ class MegaMenuComponent {
19991
20275
  @if (item.visible !== false) {
19992
20276
  <li class="relative" role="none" (mouseenter)="onRootEnter(item)">
19993
20277
  @if (item.routerLink) {
19994
- <a role="menuitem" [class]="rootItemClass(item)" [routerLink]="item.routerLink" [queryParams]="item.queryParams" (click)="onRootClick($event, item)">
20278
+ <a role="menuitem" [class]="rootItemClass(item)" [routerLink]="item.disabled ? null : item.routerLink" [queryParams]="item.queryParams" (click)="onRootClick($event, item)">
19995
20279
  <ng-container [ngTemplateOutlet]="contentTpl" [ngTemplateOutletContext]="{ $implicit: item, root: true }" />
19996
20280
  </a>
19997
20281
  } @else if (item.url) {
19998
- <a role="menuitem" [class]="rootItemClass(item)" [href]="item.url" [target]="item.target ?? null" (click)="onRootClick($event, item)">
20282
+ <a role="menuitem" [class]="rootItemClass(item)" [attr.href]="item.disabled ? null : item.url" [target]="item.target ?? null" (click)="onRootClick($event, item)">
19999
20283
  <ng-container [ngTemplateOutlet]="contentTpl" [ngTemplateOutletContext]="{ $implicit: item, root: true }" />
20000
20284
  </a>
20001
20285
  } @else {
@@ -20024,11 +20308,11 @@ class MegaMenuComponent {
20024
20308
  @let linkClass = leafItemClass(link);
20025
20309
  <li [class]="link.styleClass ?? null" [style]="link.style ?? null">
20026
20310
  @if (link.routerLink) {
20027
- <a role="menuitem" [class]="linkClass" [routerLink]="link.routerLink" [queryParams]="link.queryParams" (click)="onLeafClick($event, link)">
20311
+ <a role="menuitem" [class]="linkClass" [routerLink]="link.disabled ? null : link.routerLink" [queryParams]="link.queryParams" (click)="onLeafClick($event, link)">
20028
20312
  <ng-container [ngTemplateOutlet]="contentTpl" [ngTemplateOutletContext]="{ $implicit: link, root: false }" />
20029
20313
  </a>
20030
20314
  } @else if (link.url) {
20031
- <a role="menuitem" [class]="linkClass" [href]="link.url" [target]="link.target ?? null" (click)="onLeafClick($event, link)">
20315
+ <a role="menuitem" [class]="linkClass" [attr.href]="link.disabled ? null : link.url" [target]="link.target ?? null" (click)="onLeafClick($event, link)">
20032
20316
  <ng-container [ngTemplateOutlet]="contentTpl" [ngTemplateOutletContext]="{ $implicit: link, root: false }" />
20033
20317
  </a>
20034
20318
  } @else {
@@ -20078,11 +20362,11 @@ class MegaMenuComponent {
20078
20362
  @let mClass = leafItemClass(item);
20079
20363
  <li [class]="item.styleClass ?? null" [style]="item.style ?? null">
20080
20364
  @if (item.routerLink) {
20081
- <a role="menuitem" [class]="mClass" [routerLink]="item.routerLink" [queryParams]="item.queryParams" (click)="onMobileItemClick($event, item)">
20365
+ <a role="menuitem" [class]="mClass" [routerLink]="item.disabled ? null : item.routerLink" [queryParams]="item.queryParams" (click)="onMobileItemClick($event, item)">
20082
20366
  <ng-container [ngTemplateOutlet]="mobileContentTpl" [ngTemplateOutletContext]="{ $implicit: item }" />
20083
20367
  </a>
20084
20368
  } @else if (item.url) {
20085
- <a role="menuitem" [class]="mClass" [href]="item.url" [target]="item.target ?? null" (click)="onMobileItemClick($event, item)">
20369
+ <a role="menuitem" [class]="mClass" [attr.href]="item.disabled ? null : item.url" [target]="item.target ?? null" (click)="onMobileItemClick($event, item)">
20086
20370
  <ng-container [ngTemplateOutlet]="mobileContentTpl" [ngTemplateOutletContext]="{ $implicit: item }" />
20087
20371
  </a>
20088
20372
  } @else {
@@ -20148,11 +20432,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
20148
20432
  @if (item.visible !== false) {
20149
20433
  <li class="relative" role="none" (mouseenter)="onRootEnter(item)">
20150
20434
  @if (item.routerLink) {
20151
- <a role="menuitem" [class]="rootItemClass(item)" [routerLink]="item.routerLink" [queryParams]="item.queryParams" (click)="onRootClick($event, item)">
20435
+ <a role="menuitem" [class]="rootItemClass(item)" [routerLink]="item.disabled ? null : item.routerLink" [queryParams]="item.queryParams" (click)="onRootClick($event, item)">
20152
20436
  <ng-container [ngTemplateOutlet]="contentTpl" [ngTemplateOutletContext]="{ $implicit: item, root: true }" />
20153
20437
  </a>
20154
20438
  } @else if (item.url) {
20155
- <a role="menuitem" [class]="rootItemClass(item)" [href]="item.url" [target]="item.target ?? null" (click)="onRootClick($event, item)">
20439
+ <a role="menuitem" [class]="rootItemClass(item)" [attr.href]="item.disabled ? null : item.url" [target]="item.target ?? null" (click)="onRootClick($event, item)">
20156
20440
  <ng-container [ngTemplateOutlet]="contentTpl" [ngTemplateOutletContext]="{ $implicit: item, root: true }" />
20157
20441
  </a>
20158
20442
  } @else {
@@ -20181,11 +20465,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
20181
20465
  @let linkClass = leafItemClass(link);
20182
20466
  <li [class]="link.styleClass ?? null" [style]="link.style ?? null">
20183
20467
  @if (link.routerLink) {
20184
- <a role="menuitem" [class]="linkClass" [routerLink]="link.routerLink" [queryParams]="link.queryParams" (click)="onLeafClick($event, link)">
20468
+ <a role="menuitem" [class]="linkClass" [routerLink]="link.disabled ? null : link.routerLink" [queryParams]="link.queryParams" (click)="onLeafClick($event, link)">
20185
20469
  <ng-container [ngTemplateOutlet]="contentTpl" [ngTemplateOutletContext]="{ $implicit: link, root: false }" />
20186
20470
  </a>
20187
20471
  } @else if (link.url) {
20188
- <a role="menuitem" [class]="linkClass" [href]="link.url" [target]="link.target ?? null" (click)="onLeafClick($event, link)">
20472
+ <a role="menuitem" [class]="linkClass" [attr.href]="link.disabled ? null : link.url" [target]="link.target ?? null" (click)="onLeafClick($event, link)">
20189
20473
  <ng-container [ngTemplateOutlet]="contentTpl" [ngTemplateOutletContext]="{ $implicit: link, root: false }" />
20190
20474
  </a>
20191
20475
  } @else {
@@ -20235,11 +20519,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
20235
20519
  @let mClass = leafItemClass(item);
20236
20520
  <li [class]="item.styleClass ?? null" [style]="item.style ?? null">
20237
20521
  @if (item.routerLink) {
20238
- <a role="menuitem" [class]="mClass" [routerLink]="item.routerLink" [queryParams]="item.queryParams" (click)="onMobileItemClick($event, item)">
20522
+ <a role="menuitem" [class]="mClass" [routerLink]="item.disabled ? null : item.routerLink" [queryParams]="item.queryParams" (click)="onMobileItemClick($event, item)">
20239
20523
  <ng-container [ngTemplateOutlet]="mobileContentTpl" [ngTemplateOutletContext]="{ $implicit: item }" />
20240
20524
  </a>
20241
20525
  } @else if (item.url) {
20242
- <a role="menuitem" [class]="mClass" [href]="item.url" [target]="item.target ?? null" (click)="onMobileItemClick($event, item)">
20526
+ <a role="menuitem" [class]="mClass" [attr.href]="item.disabled ? null : item.url" [target]="item.target ?? null" (click)="onMobileItemClick($event, item)">
20243
20527
  <ng-container [ngTemplateOutlet]="mobileContentTpl" [ngTemplateOutletContext]="{ $implicit: item }" />
20244
20528
  </a>
20245
20529
  } @else {
@@ -20305,8 +20589,10 @@ class PanelMenuComponent {
20305
20589
  : 'w-full flex items-center gap-2.5 px-3 py-2.5 text-sm text-left rounded-md transition-colors text-(--f-text-color) hover:bg-(--f-content-hover-background) cursor-pointer focus:outline-none focus-visible:ring-focus';
20306
20590
  }
20307
20591
  onItemClick(e, item, level) {
20308
- if (item.disabled)
20592
+ if (item.disabled) {
20593
+ e.preventDefault();
20309
20594
  return;
20595
+ }
20310
20596
  if (item.items?.length) {
20311
20597
  this.expanded.update(s => {
20312
20598
  const next = new Set(s);
@@ -20401,7 +20687,7 @@ class PanelMenuComponent {
20401
20687
  [attr.aria-level]="level + 1"
20402
20688
  [attr.aria-expanded]="item.items?.length ? isExpanded(item) : null"
20403
20689
  [attr.aria-disabled]="item.disabled || null"
20404
- [routerLink]="item.routerLink"
20690
+ [routerLink]="item.disabled ? null : item.routerLink"
20405
20691
  [queryParams]="item.queryParams"
20406
20692
  (click)="onItemClick($event, item, level)"
20407
20693
  >
@@ -20414,7 +20700,7 @@ class PanelMenuComponent {
20414
20700
  [attr.aria-level]="level + 1"
20415
20701
  [attr.aria-expanded]="item.items?.length ? isExpanded(item) : null"
20416
20702
  [attr.aria-disabled]="item.disabled || null"
20417
- [href]="item.url"
20703
+ [attr.href]="item.disabled ? null : item.url"
20418
20704
  [target]="item.target ?? null"
20419
20705
  (click)="onItemClick($event, item, level)"
20420
20706
  >
@@ -20481,7 +20767,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
20481
20767
  [attr.aria-level]="level + 1"
20482
20768
  [attr.aria-expanded]="item.items?.length ? isExpanded(item) : null"
20483
20769
  [attr.aria-disabled]="item.disabled || null"
20484
- [routerLink]="item.routerLink"
20770
+ [routerLink]="item.disabled ? null : item.routerLink"
20485
20771
  [queryParams]="item.queryParams"
20486
20772
  (click)="onItemClick($event, item, level)"
20487
20773
  >
@@ -20494,7 +20780,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
20494
20780
  [attr.aria-level]="level + 1"
20495
20781
  [attr.aria-expanded]="item.items?.length ? isExpanded(item) : null"
20496
20782
  [attr.aria-disabled]="item.disabled || null"
20497
- [href]="item.url"
20783
+ [attr.href]="item.disabled ? null : item.url"
20498
20784
  [target]="item.target ?? null"
20499
20785
  (click)="onItemClick($event, item, level)"
20500
20786
  >
@@ -20580,11 +20866,11 @@ class BreadcrumbComponent {
20580
20866
  @if (itemTpl()) {
20581
20867
  <ng-container [ngTemplateOutlet]="itemTpl()" [ngTemplateOutletContext]="{ $implicit: home() }" />
20582
20868
  } @else if (home()!.routerLink) {
20583
- <a [class]="homeClass()" [attr.aria-disabled]="home()!.disabled ? true : null" [attr.tabindex]="home()!.disabled ? -1 : null" [routerLink]="home()!.routerLink" [queryParams]="home()!.queryParams" (click)="onItemClick($event, home()!)">
20869
+ <a [class]="homeClass()" [attr.aria-disabled]="home()!.disabled ? true : null" [attr.tabindex]="home()!.disabled ? -1 : null" [routerLink]="home()!.disabled ? null : home()!.routerLink" [queryParams]="home()!.queryParams" (click)="onItemClick($event, home()!)">
20584
20870
  <ui-icon [name]="home()!.icon || 'home'" class="text-xs"></ui-icon>
20585
20871
  </a>
20586
20872
  } @else if (home()!.url) {
20587
- <a [class]="homeClass()" [attr.aria-disabled]="home()!.disabled ? true : null" [attr.tabindex]="home()!.disabled ? -1 : null" [href]="home()!.url" [target]="home()!.target ?? null" (click)="onItemClick($event, home()!)">
20873
+ <a [class]="homeClass()" [attr.aria-disabled]="home()!.disabled ? true : null" [attr.tabindex]="home()!.disabled ? -1 : null" [attr.href]="home()!.disabled ? null : home()!.url" [target]="home()!.target ?? null" (click)="onItemClick($event, home()!)">
20588
20874
  <ui-icon [name]="home()!.icon || 'home'" class="text-xs"></ui-icon>
20589
20875
  </a>
20590
20876
  } @else {
@@ -20606,12 +20892,12 @@ class BreadcrumbComponent {
20606
20892
  @if (itemTpl()) {
20607
20893
  <ng-container [ngTemplateOutlet]="itemTpl()" [ngTemplateOutletContext]="{ $implicit: item }" />
20608
20894
  } @else if (item.routerLink) {
20609
- <a [class]="itemLinkClass(item, $last)" [attr.aria-current]="$last ? 'page' : null" [attr.aria-disabled]="item.disabled ? true : null" [attr.tabindex]="item.disabled ? -1 : null" [routerLink]="item.routerLink" [queryParams]="item.queryParams" (click)="onItemClick($event, item)">
20895
+ <a [class]="itemLinkClass(item, $last)" [attr.aria-current]="$last ? 'page' : null" [attr.aria-disabled]="item.disabled ? true : null" [attr.tabindex]="item.disabled ? -1 : null" [routerLink]="item.disabled ? null : item.routerLink" [queryParams]="item.queryParams" (click)="onItemClick($event, item)">
20610
20896
  @if (item.icon) { <ui-icon [name]="item.icon" class="text-xs"></ui-icon> }
20611
20897
  {{ item.label }}
20612
20898
  </a>
20613
20899
  } @else if (item.url) {
20614
- <a [class]="itemLinkClass(item, $last)" [attr.aria-current]="$last ? 'page' : null" [attr.aria-disabled]="item.disabled ? true : null" [attr.tabindex]="item.disabled ? -1 : null" [href]="item.url" [target]="item.target ?? null" (click)="onItemClick($event, item)">
20900
+ <a [class]="itemLinkClass(item, $last)" [attr.aria-current]="$last ? 'page' : null" [attr.aria-disabled]="item.disabled ? true : null" [attr.tabindex]="item.disabled ? -1 : null" [attr.href]="item.disabled ? null : item.url" [target]="item.target ?? null" (click)="onItemClick($event, item)">
20615
20901
  @if (item.icon) { <ui-icon [name]="item.icon" class="text-xs"></ui-icon> }
20616
20902
  {{ item.label }}
20617
20903
  </a>
@@ -20648,11 +20934,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
20648
20934
  @if (itemTpl()) {
20649
20935
  <ng-container [ngTemplateOutlet]="itemTpl()" [ngTemplateOutletContext]="{ $implicit: home() }" />
20650
20936
  } @else if (home()!.routerLink) {
20651
- <a [class]="homeClass()" [attr.aria-disabled]="home()!.disabled ? true : null" [attr.tabindex]="home()!.disabled ? -1 : null" [routerLink]="home()!.routerLink" [queryParams]="home()!.queryParams" (click)="onItemClick($event, home()!)">
20937
+ <a [class]="homeClass()" [attr.aria-disabled]="home()!.disabled ? true : null" [attr.tabindex]="home()!.disabled ? -1 : null" [routerLink]="home()!.disabled ? null : home()!.routerLink" [queryParams]="home()!.queryParams" (click)="onItemClick($event, home()!)">
20652
20938
  <ui-icon [name]="home()!.icon || 'home'" class="text-xs"></ui-icon>
20653
20939
  </a>
20654
20940
  } @else if (home()!.url) {
20655
- <a [class]="homeClass()" [attr.aria-disabled]="home()!.disabled ? true : null" [attr.tabindex]="home()!.disabled ? -1 : null" [href]="home()!.url" [target]="home()!.target ?? null" (click)="onItemClick($event, home()!)">
20941
+ <a [class]="homeClass()" [attr.aria-disabled]="home()!.disabled ? true : null" [attr.tabindex]="home()!.disabled ? -1 : null" [attr.href]="home()!.disabled ? null : home()!.url" [target]="home()!.target ?? null" (click)="onItemClick($event, home()!)">
20656
20942
  <ui-icon [name]="home()!.icon || 'home'" class="text-xs"></ui-icon>
20657
20943
  </a>
20658
20944
  } @else {
@@ -20674,12 +20960,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
20674
20960
  @if (itemTpl()) {
20675
20961
  <ng-container [ngTemplateOutlet]="itemTpl()" [ngTemplateOutletContext]="{ $implicit: item }" />
20676
20962
  } @else if (item.routerLink) {
20677
- <a [class]="itemLinkClass(item, $last)" [attr.aria-current]="$last ? 'page' : null" [attr.aria-disabled]="item.disabled ? true : null" [attr.tabindex]="item.disabled ? -1 : null" [routerLink]="item.routerLink" [queryParams]="item.queryParams" (click)="onItemClick($event, item)">
20963
+ <a [class]="itemLinkClass(item, $last)" [attr.aria-current]="$last ? 'page' : null" [attr.aria-disabled]="item.disabled ? true : null" [attr.tabindex]="item.disabled ? -1 : null" [routerLink]="item.disabled ? null : item.routerLink" [queryParams]="item.queryParams" (click)="onItemClick($event, item)">
20678
20964
  @if (item.icon) { <ui-icon [name]="item.icon" class="text-xs"></ui-icon> }
20679
20965
  {{ item.label }}
20680
20966
  </a>
20681
20967
  } @else if (item.url) {
20682
- <a [class]="itemLinkClass(item, $last)" [attr.aria-current]="$last ? 'page' : null" [attr.aria-disabled]="item.disabled ? true : null" [attr.tabindex]="item.disabled ? -1 : null" [href]="item.url" [target]="item.target ?? null" (click)="onItemClick($event, item)">
20968
+ <a [class]="itemLinkClass(item, $last)" [attr.aria-current]="$last ? 'page' : null" [attr.aria-disabled]="item.disabled ? true : null" [attr.tabindex]="item.disabled ? -1 : null" [attr.href]="item.disabled ? null : item.url" [target]="item.target ?? null" (click)="onItemClick($event, item)">
20683
20969
  @if (item.icon) { <ui-icon [name]="item.icon" class="text-xs"></ui-icon> }
20684
20970
  {{ item.label }}
20685
20971
  </a>
@@ -20749,6 +21035,9 @@ class SpeedDialComponent {
20749
21035
  onShow = output();
20750
21036
  onHide = output();
20751
21037
  onVisibleChange = output();
21038
+ constructor() {
21039
+ blockClicksWhileDisabled(this.disabled);
21040
+ }
20752
21041
  _el = inject(ElementRef);
20753
21042
  _overlayStack = inject(OverlayStackService);
20754
21043
  _toggleBtn = viewChild('toggleButton', /* @ts-ignore */
@@ -20965,7 +21254,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
20965
21254
  }
20966
21255
  `,
20967
21256
  }]
20968
- }], propDecorators: { model: [{ type: i0.Input, args: [{ isSignal: true, alias: "model", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], showIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "showIcon", required: false }] }], hideIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideIcon", required: false }] }], direction: [{ type: i0.Input, args: [{ isSignal: true, alias: "direction", required: false }] }], rotateAnimation: [{ type: i0.Input, args: [{ isSignal: true, alias: "rotateAnimation", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], radius: [{ type: i0.Input, args: [{ isSignal: true, alias: "radius", required: false }] }], transitionDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "transitionDelay", required: false }] }], mask: [{ type: i0.Input, args: [{ isSignal: true, alias: "mask", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], hideOnClickOutside: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideOnClickOutside", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], visible: [{ type: i0.Input, args: [{ isSignal: true, alias: "visible", required: false }] }, { type: i0.Output, args: ["visibleChange"] }], onClick: [{ type: i0.Output, args: ["onClick"] }], onShow: [{ type: i0.Output, args: ["onShow"] }], onHide: [{ type: i0.Output, args: ["onHide"] }], onVisibleChange: [{ type: i0.Output, args: ["onVisibleChange"] }], _toggleBtn: [{ type: i0.ViewChild, args: ['toggleButton', { isSignal: true }] }] } });
21257
+ }], ctorParameters: () => [], propDecorators: { model: [{ type: i0.Input, args: [{ isSignal: true, alias: "model", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], showIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "showIcon", required: false }] }], hideIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideIcon", required: false }] }], direction: [{ type: i0.Input, args: [{ isSignal: true, alias: "direction", required: false }] }], rotateAnimation: [{ type: i0.Input, args: [{ isSignal: true, alias: "rotateAnimation", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], radius: [{ type: i0.Input, args: [{ isSignal: true, alias: "radius", required: false }] }], transitionDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "transitionDelay", required: false }] }], mask: [{ type: i0.Input, args: [{ isSignal: true, alias: "mask", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], hideOnClickOutside: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideOnClickOutside", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], visible: [{ type: i0.Input, args: [{ isSignal: true, alias: "visible", required: false }] }, { type: i0.Output, args: ["visibleChange"] }], onClick: [{ type: i0.Output, args: ["onClick"] }], onShow: [{ type: i0.Output, args: ["onShow"] }], onHide: [{ type: i0.Output, args: ["onHide"] }], onVisibleChange: [{ type: i0.Output, args: ["onVisibleChange"] }], _toggleBtn: [{ type: i0.ViewChild, args: ['toggleButton', { isSignal: true }] }] } });
20969
21258
 
20970
21259
  class DockComponent {
20971
21260
  model = input([], /* @ts-ignore */
@@ -21273,6 +21562,13 @@ class InputOtpComponent {
21273
21562
  ...(ngDevMode ? [{ debugName: "length" }] : /* istanbul ignore next */ []));
21274
21563
  mask = input(false, { ...(ngDevMode ? { debugName: "mask" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
21275
21564
  disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
21565
+ _formDisabled = signal(false, /* @ts-ignore */
21566
+ ...(ngDevMode ? [{ debugName: "_formDisabled" }] : /* istanbul ignore next */ []));
21567
+ isDisabled = computed(() => this.disabled() || this._formDisabled(), /* @ts-ignore */
21568
+ ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
21569
+ constructor() {
21570
+ blockClicksWhileDisabled(this.isDisabled);
21571
+ }
21276
21572
  readonly = input(false, { ...(ngDevMode ? { debugName: "readonly" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
21277
21573
  integerOnly = input(true, { ...(ngDevMode ? { debugName: "integerOnly" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
21278
21574
  invalid = input(false, { ...(ngDevMode ? { debugName: "invalid" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
@@ -21368,7 +21664,7 @@ class InputOtpComponent {
21368
21664
  }
21369
21665
  }
21370
21666
  onPaste(e) {
21371
- if (this.readonly() || this.disabled())
21667
+ if (this.readonly() || this.isDisabled())
21372
21668
  return;
21373
21669
  e.preventDefault();
21374
21670
  let text = e.clipboardData?.getData('text') ?? '';
@@ -21399,7 +21695,7 @@ class InputOtpComponent {
21399
21695
  }
21400
21696
  registerOnChange(fn) { this._onChange = fn; }
21401
21697
  registerOnTouched(fn) { this._onTouched = fn; }
21402
- setDisabledState() { }
21698
+ setDisabledState(isDisabled) { this._formDisabled.set(isDisabled); }
21403
21699
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: InputOtpComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21404
21700
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: InputOtpComponent, isStandalone: true, selector: "f-inputotp", inputs: { length: { classPropertyName: "length", publicName: "length", isSignal: true, isRequired: false, transformFunction: null }, mask: { classPropertyName: "mask", publicName: "mask", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, integerOnly: { classPropertyName: "integerOnly", publicName: "integerOnly", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onChangeEvent: "onChange", onFocus: "onFocus", onBlur: "onBlur" }, host: { classAttribute: "inline-block" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => InputOtpComponent), multi: true }], queries: [{ propertyName: "cellTemplate", first: true, predicate: ["cell"], descendants: true, isSignal: true }], viewQueries: [{ propertyName: "cells", predicate: ["cell"], descendants: true, isSignal: true }], ngImport: i0, template: `
21405
21701
  <div [class]="groupClass()">
@@ -21417,7 +21713,7 @@ class InputOtpComponent {
21417
21713
  [class]="cellClass()"
21418
21714
  [value]="digits()[i] || ''"
21419
21715
  [type]="mask() ? 'password' : 'text'"
21420
- [disabled]="disabled()"
21716
+ [disabled]="isDisabled()"
21421
21717
  [readOnly]="readonly()"
21422
21718
  (input)="onDigitInput($event, i)"
21423
21719
  (keydown)="onKeydown($event, i)"
@@ -21453,7 +21749,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
21453
21749
  [class]="cellClass()"
21454
21750
  [value]="digits()[i] || ''"
21455
21751
  [type]="mask() ? 'password' : 'text'"
21456
- [disabled]="disabled()"
21752
+ [disabled]="isDisabled()"
21457
21753
  [readOnly]="readonly()"
21458
21754
  (input)="onDigitInput($event, i)"
21459
21755
  (keydown)="onKeydown($event, i)"
@@ -21466,7 +21762,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
21466
21762
  </div>
21467
21763
  `,
21468
21764
  }]
21469
- }], propDecorators: { length: [{ type: i0.Input, args: [{ isSignal: true, alias: "length", required: false }] }], mask: [{ type: i0.Input, args: [{ isSignal: true, alias: "mask", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], integerOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "integerOnly", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], onChangeEvent: [{ type: i0.Output, args: ["onChange"] }], onFocus: [{ type: i0.Output, args: ["onFocus"] }], onBlur: [{ type: i0.Output, args: ["onBlur"] }], cellTemplate: [{ type: i0.ContentChild, args: ['cell', { isSignal: true }] }], cells: [{ type: i0.ViewChildren, args: ['cell', { isSignal: true }] }] } });
21765
+ }], ctorParameters: () => [], propDecorators: { length: [{ type: i0.Input, args: [{ isSignal: true, alias: "length", required: false }] }], mask: [{ type: i0.Input, args: [{ isSignal: true, alias: "mask", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], integerOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "integerOnly", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], onChangeEvent: [{ type: i0.Output, args: ["onChange"] }], onFocus: [{ type: i0.Output, args: ["onFocus"] }], onBlur: [{ type: i0.Output, args: ["onBlur"] }], cellTemplate: [{ type: i0.ContentChild, args: ['cell', { isSignal: true }] }], cells: [{ type: i0.ViewChildren, args: ['cell', { isSignal: true }] }] } });
21470
21766
 
21471
21767
  class SliderComponent {
21472
21768
  _track = viewChild('track', /* @ts-ignore */
@@ -21476,6 +21772,13 @@ class SliderComponent {
21476
21772
  step = input(1, { ...(ngDevMode ? { debugName: "step" } : /* istanbul ignore next */ {}), transform: numberAttribute });
21477
21773
  range = input(false, { ...(ngDevMode ? { debugName: "range" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
21478
21774
  disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
21775
+ _formDisabled = signal(false, /* @ts-ignore */
21776
+ ...(ngDevMode ? [{ debugName: "_formDisabled" }] : /* istanbul ignore next */ []));
21777
+ isDisabled = computed(() => this.disabled() || this._formDisabled(), /* @ts-ignore */
21778
+ ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
21779
+ constructor() {
21780
+ blockClicksWhileDisabled(this.isDisabled);
21781
+ }
21479
21782
  orientation = input('horizontal', /* @ts-ignore */
21480
21783
  ...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
21481
21784
  styleClass = input('', /* @ts-ignore */
@@ -21508,7 +21811,7 @@ class SliderComponent {
21508
21811
  ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
21509
21812
  trackClass = computed(() => {
21510
21813
  const dims = this.orientation() === 'vertical' ? 'relative w-1.5 h-full' : 'relative h-1.5 w-full';
21511
- const state = this.disabled() ? 'opacity-60 pointer-events-none' : 'cursor-pointer';
21814
+ const state = this.isDisabled() ? 'opacity-60 pointer-events-none' : 'cursor-pointer';
21512
21815
  return `${dims} rounded-full bg-(--f-content-hover-background) ${state}`;
21513
21816
  }, /* @ts-ignore */
21514
21817
  ...(ngDevMode ? [{ debugName: "trackClass" }] : /* istanbul ignore next */ []));
@@ -21534,7 +21837,7 @@ class SliderComponent {
21534
21837
  return Math.min(this.max(), Math.max(this.min(), stepped));
21535
21838
  }
21536
21839
  onTrackDown(e) {
21537
- if (this.disabled())
21840
+ if (this.isDisabled())
21538
21841
  return;
21539
21842
  const value = this.fromPointer(e.clientX, e.clientY);
21540
21843
  if (this.range()) {
@@ -21549,19 +21852,19 @@ class SliderComponent {
21549
21852
  }
21550
21853
  onHandleDown(e, idx) {
21551
21854
  e.stopPropagation();
21552
- if (this.disabled())
21855
+ if (this.isDisabled())
21553
21856
  return;
21554
21857
  e.currentTarget.focus();
21555
21858
  this.startDrag(idx);
21556
21859
  }
21557
21860
  onHandleTouchStart(e, idx) {
21558
21861
  e.stopPropagation();
21559
- if (this.disabled())
21862
+ if (this.isDisabled())
21560
21863
  return;
21561
21864
  this.startTouchDrag(idx);
21562
21865
  }
21563
21866
  onKeydown(e, idx) {
21564
- if (this.disabled())
21867
+ if (this.isDisabled())
21565
21868
  return;
21566
21869
  const step = this.step();
21567
21870
  const current = idx === 0 ? this.start() : this.end();
@@ -21640,7 +21943,7 @@ class SliderComponent {
21640
21943
  }
21641
21944
  registerOnChange(fn) { this._onChange = fn; }
21642
21945
  registerOnTouched(fn) { this._onTouched = fn; }
21643
- setDisabledState() { }
21946
+ setDisabledState(isDisabled) { this._formDisabled.set(isDisabled); }
21644
21947
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: SliderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21645
21948
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: SliderComponent, isStandalone: true, selector: "f-slider", inputs: { min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, range: { classPropertyName: "range", publicName: "range", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onChangeEvent: "onChange", onSlideEnd: "onSlideEnd" }, host: { properties: { "class": "hostClass()", "style": "style()" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SliderComponent), multi: true }], viewQueries: [{ propertyName: "_track", first: true, predicate: ["track"], descendants: true, isSignal: true }], ngImport: i0, template: `
21646
21949
  <div
@@ -21660,7 +21963,7 @@ class SliderComponent {
21660
21963
  [attr.aria-valuemax]="max()"
21661
21964
  [attr.aria-valuenow]="start()"
21662
21965
  [attr.aria-orientation]="orientation()"
21663
- [attr.aria-disabled]="disabled() || null"
21966
+ [attr.aria-disabled]="isDisabled() || null"
21664
21967
  [style.left.%]="orientation() === 'horizontal' ? startPercent() : null"
21665
21968
  [style.bottom.%]="orientation() === 'vertical' ? startPercent() : null"
21666
21969
  (mousedown)="onHandleDown($event, 0)"
@@ -21676,7 +21979,7 @@ class SliderComponent {
21676
21979
  [attr.aria-valuemax]="max()"
21677
21980
  [attr.aria-valuenow]="end()"
21678
21981
  [attr.aria-orientation]="orientation()"
21679
- [attr.aria-disabled]="disabled() || null"
21982
+ [attr.aria-disabled]="isDisabled() || null"
21680
21983
  [style.left.%]="orientation() === 'horizontal' ? endPercent() : null"
21681
21984
  [style.bottom.%]="orientation() === 'vertical' ? endPercent() : null"
21682
21985
  (mousedown)="onHandleDown($event, 1)"
@@ -21710,7 +22013,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
21710
22013
  [attr.aria-valuemax]="max()"
21711
22014
  [attr.aria-valuenow]="start()"
21712
22015
  [attr.aria-orientation]="orientation()"
21713
- [attr.aria-disabled]="disabled() || null"
22016
+ [attr.aria-disabled]="isDisabled() || null"
21714
22017
  [style.left.%]="orientation() === 'horizontal' ? startPercent() : null"
21715
22018
  [style.bottom.%]="orientation() === 'vertical' ? startPercent() : null"
21716
22019
  (mousedown)="onHandleDown($event, 0)"
@@ -21726,7 +22029,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
21726
22029
  [attr.aria-valuemax]="max()"
21727
22030
  [attr.aria-valuenow]="end()"
21728
22031
  [attr.aria-orientation]="orientation()"
21729
- [attr.aria-disabled]="disabled() || null"
22032
+ [attr.aria-disabled]="isDisabled() || null"
21730
22033
  [style.left.%]="orientation() === 'horizontal' ? endPercent() : null"
21731
22034
  [style.bottom.%]="orientation() === 'vertical' ? endPercent() : null"
21732
22035
  (mousedown)="onHandleDown($event, 1)"
@@ -21736,7 +22039,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
21736
22039
  </div>
21737
22040
  `,
21738
22041
  }]
21739
- }], propDecorators: { _track: [{ type: i0.ViewChild, args: ['track', { isSignal: true }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], step: [{ type: i0.Input, args: [{ isSignal: true, alias: "step", required: false }] }], range: [{ type: i0.Input, args: [{ isSignal: true, alias: "range", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], onChangeEvent: [{ type: i0.Output, args: ["onChange"] }], onSlideEnd: [{ type: i0.Output, args: ["onSlideEnd"] }] } });
22042
+ }], ctorParameters: () => [], propDecorators: { _track: [{ type: i0.ViewChild, args: ['track', { isSignal: true }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], step: [{ type: i0.Input, args: [{ isSignal: true, alias: "step", required: false }] }], range: [{ type: i0.Input, args: [{ isSignal: true, alias: "range", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], onChangeEvent: [{ type: i0.Output, args: ["onChange"] }], onSlideEnd: [{ type: i0.Output, args: ["onSlideEnd"] }] } });
21740
22043
 
21741
22044
  class KnobComponent {
21742
22045
  _el = inject((ElementRef));
@@ -21752,6 +22055,13 @@ class KnobComponent {
21752
22055
  ...(ngDevMode ? [{ debugName: "strokeWidth" }] : /* istanbul ignore next */ []));
21753
22056
  showValue = input(true, { ...(ngDevMode ? { debugName: "showValue" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
21754
22057
  disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
22058
+ _formDisabled = signal(false, /* @ts-ignore */
22059
+ ...(ngDevMode ? [{ debugName: "_formDisabled" }] : /* istanbul ignore next */ []));
22060
+ isDisabled = computed(() => this.disabled() || this._formDisabled(), /* @ts-ignore */
22061
+ ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
22062
+ constructor() {
22063
+ blockClicksWhileDisabled(this.isDisabled);
22064
+ }
21755
22065
  readonly = input(false, { ...(ngDevMode ? { debugName: "readonly" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
21756
22066
  valueColor = input('var(--color-primary)', /* @ts-ignore */
21757
22067
  ...(ngDevMode ? [{ debugName: "valueColor" }] : /* istanbul ignore next */ []));
@@ -21786,7 +22096,7 @@ class KnobComponent {
21786
22096
  displayValue = computed(() => this.valueTemplate().replace('{value}', String(this.value())), /* @ts-ignore */
21787
22097
  ...(ngDevMode ? [{ debugName: "displayValue" }] : /* istanbul ignore next */ []));
21788
22098
  onKeydown(e) {
21789
- if (this.disabled() || this.readonly())
22099
+ if (this.isDisabled() || this.readonly())
21790
22100
  return;
21791
22101
  const step = this.step();
21792
22102
  const current = this.value();
@@ -21810,7 +22120,7 @@ class KnobComponent {
21810
22120
  this._onTouched();
21811
22121
  }
21812
22122
  onDown(e) {
21813
- if (this.disabled() || this.readonly())
22123
+ if (this.isDisabled() || this.readonly())
21814
22124
  return;
21815
22125
  this.updateFromEvent(e);
21816
22126
  const onMove = (ev) => this.updateFromEvent(ev);
@@ -21842,7 +22152,7 @@ class KnobComponent {
21842
22152
  writeValue(v) { this._value.set(v ?? this.min()); }
21843
22153
  registerOnChange(fn) { this._onChange = fn; }
21844
22154
  registerOnTouched(fn) { this._onTouched = fn; }
21845
- setDisabledState() { }
22155
+ setDisabledState(isDisabled) { this._formDisabled.set(isDisabled); }
21846
22156
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: KnobComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21847
22157
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: KnobComponent, isStandalone: true, selector: "f-knob", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, strokeWidth: { classPropertyName: "strokeWidth", publicName: "strokeWidth", isSignal: true, isRequired: false, transformFunction: null }, showValue: { classPropertyName: "showValue", publicName: "showValue", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, valueColor: { classPropertyName: "valueColor", publicName: "valueColor", isSignal: true, isRequired: false, transformFunction: null }, rangeColor: { classPropertyName: "rangeColor", publicName: "rangeColor", isSignal: true, isRequired: false, transformFunction: null }, textColor: { classPropertyName: "textColor", publicName: "textColor", isSignal: true, isRequired: false, transformFunction: null }, valueTemplate: { classPropertyName: "valueTemplate", publicName: "valueTemplate", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClass()", "style": "style()" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => KnobComponent), multi: true }], ngImport: i0, template: `
21848
22158
  <svg
@@ -21850,9 +22160,9 @@ class KnobComponent {
21850
22160
  [attr.height]="size()"
21851
22161
  [attr.viewBox]="'0 0 ' + size() + ' ' + size()"
21852
22162
  class="select-none focus:outline-none focus-visible:ring-focus rounded-full"
21853
- [class.cursor-pointer]="!disabled() && !readonly()"
21854
- [class.opacity-60]="disabled()"
21855
- [attr.tabindex]="disabled() ? null : 0"
22163
+ [class.cursor-pointer]="!isDisabled() && !readonly()"
22164
+ [class.opacity-60]="isDisabled()"
22165
+ [attr.tabindex]="isDisabled() ? null : 0"
21856
22166
  role="slider"
21857
22167
  [attr.aria-valuemin]="min()"
21858
22168
  [attr.aria-valuemax]="max()"
@@ -21860,7 +22170,7 @@ class KnobComponent {
21860
22170
  [attr.aria-valuetext]="displayValue()"
21861
22171
  [attr.aria-label]="ariaLabel() || null"
21862
22172
  [attr.aria-readonly]="readonly() ? 'true' : null"
21863
- [attr.aria-disabled]="disabled() ? 'true' : null"
22173
+ [attr.aria-disabled]="isDisabled() ? 'true' : null"
21864
22174
  (mousedown)="onDown($event)"
21865
22175
  (keydown)="onKeydown($event)"
21866
22176
  >
@@ -21898,9 +22208,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
21898
22208
  [attr.height]="size()"
21899
22209
  [attr.viewBox]="'0 0 ' + size() + ' ' + size()"
21900
22210
  class="select-none focus:outline-none focus-visible:ring-focus rounded-full"
21901
- [class.cursor-pointer]="!disabled() && !readonly()"
21902
- [class.opacity-60]="disabled()"
21903
- [attr.tabindex]="disabled() ? null : 0"
22211
+ [class.cursor-pointer]="!isDisabled() && !readonly()"
22212
+ [class.opacity-60]="isDisabled()"
22213
+ [attr.tabindex]="isDisabled() ? null : 0"
21904
22214
  role="slider"
21905
22215
  [attr.aria-valuemin]="min()"
21906
22216
  [attr.aria-valuemax]="max()"
@@ -21908,7 +22218,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
21908
22218
  [attr.aria-valuetext]="displayValue()"
21909
22219
  [attr.aria-label]="ariaLabel() || null"
21910
22220
  [attr.aria-readonly]="readonly() ? 'true' : null"
21911
- [attr.aria-disabled]="disabled() ? 'true' : null"
22221
+ [attr.aria-disabled]="isDisabled() ? 'true' : null"
21912
22222
  (mousedown)="onDown($event)"
21913
22223
  (keydown)="onKeydown($event)"
21914
22224
  >
@@ -21934,7 +22244,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
21934
22244
  </svg>
21935
22245
  `,
21936
22246
  }]
21937
- }], propDecorators: { size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], step: [{ type: i0.Input, args: [{ isSignal: true, alias: "step", required: false }] }], strokeWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "strokeWidth", required: false }] }], showValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "showValue", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], valueColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueColor", required: false }] }], rangeColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "rangeColor", required: false }] }], textColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "textColor", required: false }] }], valueTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueTemplate", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }] } });
22247
+ }], ctorParameters: () => [], propDecorators: { size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], step: [{ type: i0.Input, args: [{ isSignal: true, alias: "step", required: false }] }], strokeWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "strokeWidth", required: false }] }], showValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "showValue", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], valueColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueColor", required: false }] }], rangeColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "rangeColor", required: false }] }], textColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "textColor", required: false }] }], valueTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueTemplate", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }] } });
21938
22248
 
21939
22249
  class CascadeSelectComponent {
21940
22250
  _el = inject(ElementRef);
@@ -21951,6 +22261,13 @@ class CascadeSelectComponent {
21951
22261
  placeholder = input('Select', /* @ts-ignore */
21952
22262
  ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
21953
22263
  disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
22264
+ _formDisabled = signal(false, /* @ts-ignore */
22265
+ ...(ngDevMode ? [{ debugName: "_formDisabled" }] : /* istanbul ignore next */ []));
22266
+ isDisabled = computed(() => this.disabled() || this._formDisabled(), /* @ts-ignore */
22267
+ ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
22268
+ constructor() {
22269
+ blockClicksWhileDisabled(this.isDisabled);
22270
+ }
21954
22271
  invalid = input(false, { ...(ngDevMode ? { debugName: "invalid" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
21955
22272
  touched = input(true, /* @ts-ignore */
21956
22273
  ...(ngDevMode ? [{ debugName: "touched" }] : /* istanbul ignore next */ []));
@@ -22031,7 +22348,7 @@ class CascadeSelectComponent {
22031
22348
  null, /* @ts-ignore */
22032
22349
  ...(ngDevMode ? [{ debugName: "emptyTpl" }] : /* istanbul ignore next */ []));
22033
22350
  triggerClass = computed(() => {
22034
- const base = 'w-full min-h-[34px] flex items-center gap-2 f-field-compact text-sm border bg-(--f-form-field-background) focus:outline-none focus-visible:ring-focus transition-all duration-[var(--f-transition-duration)]';
22351
+ const base = 'w-full flex items-center gap-2 f-field-compact text-sm border bg-(--f-form-field-background) focus:outline-none focus-visible:ring-focus transition-all duration-[var(--f-transition-duration)]';
22035
22352
  const showInvalid = this.invalid() && this.touched();
22036
22353
  const stateClass = this.open()
22037
22354
  ? showInvalid
@@ -22040,7 +22357,7 @@ class CascadeSelectComponent {
22040
22357
  : showInvalid
22041
22358
  ? 'border-red-400'
22042
22359
  : 'border-(--f-form-field-border-color) hover:border-(--f-form-field-hover-border-color)';
22043
- const disabledClass = this.disabled() || this.loading()
22360
+ const disabledClass = this.isDisabled() || this.loading()
22044
22361
  ? 'opacity-60 cursor-not-allowed'
22045
22362
  : 'cursor-pointer';
22046
22363
  return `${base} ${stateClass} ${disabledClass}`;
@@ -22076,7 +22393,7 @@ class CascadeSelectComponent {
22076
22393
  return path.length > 0 && path[path.length - 1] === opt;
22077
22394
  }
22078
22395
  toggleOpen() {
22079
- if (this.disabled() || this.loading())
22396
+ if (this.isDisabled() || this.loading())
22080
22397
  return;
22081
22398
  this.open() ? this.closePanel() : this.openPanel();
22082
22399
  }
@@ -22120,7 +22437,7 @@ class CascadeSelectComponent {
22120
22437
  this.closePanel();
22121
22438
  }
22122
22439
  onKeyDown(e) {
22123
- if (this.disabled() || this.loading())
22440
+ if (this.isDisabled() || this.loading())
22124
22441
  return;
22125
22442
  switch (e.key) {
22126
22443
  case 'ArrowDown':
@@ -22238,7 +22555,7 @@ class CascadeSelectComponent {
22238
22555
  registerOnTouched(fn) {
22239
22556
  this._onTouched = fn;
22240
22557
  }
22241
- setDisabledState() { }
22558
+ setDisabledState(isDisabled) { this._formDisabled.set(isDisabled); }
22242
22559
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: CascadeSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
22243
22560
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: CascadeSelectComponent, isStandalone: true, selector: "f-cascadeselect", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, optionLabel: { classPropertyName: "optionLabel", publicName: "optionLabel", isSignal: true, isRequired: false, transformFunction: null }, optionValue: { classPropertyName: "optionValue", publicName: "optionValue", isSignal: true, isRequired: false, transformFunction: null }, optionChildren: { classPropertyName: "optionChildren", publicName: "optionChildren", isSignal: true, isRequired: false, transformFunction: null }, optionGroupChildren: { classPropertyName: "optionGroupChildren", publicName: "optionGroupChildren", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, showClear: { classPropertyName: "showClear", publicName: "showClear", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, dropdownIcon: { classPropertyName: "dropdownIcon", publicName: "dropdownIcon", isSignal: true, isRequired: false, transformFunction: null }, emptyMessage: { classPropertyName: "emptyMessage", publicName: "emptyMessage", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "document:click": "onDocumentClick($event)" }, properties: { "class": "hostClass()", "style": "style()" } }, providers: [
22244
22561
  {
@@ -22254,9 +22571,9 @@ class CascadeSelectComponent {
22254
22571
  role="combobox"
22255
22572
  aria-haspopup="tree"
22256
22573
  [attr.aria-expanded]="open()"
22257
- [attr.aria-disabled]="disabled() || null"
22574
+ [attr.aria-disabled]="isDisabled() || null"
22258
22575
  [class]="triggerClass()"
22259
- [disabled]="disabled() || loading()"
22576
+ [disabled]="isDisabled() || loading()"
22260
22577
  (click)="toggleOpen()"
22261
22578
  (keydown)="onKeyDown($event)"
22262
22579
  >
@@ -22284,7 +22601,7 @@ class CascadeSelectComponent {
22284
22601
  }
22285
22602
  <span class="flex items-center gap-1 shrink-0">
22286
22603
  @if (
22287
- showClear() && selectedPath().length && !disabled() && !loading()
22604
+ showClear() && selectedPath().length && !isDisabled() && !loading()
22288
22605
  ) {
22289
22606
  <ui-icon
22290
22607
  name="x"
@@ -22421,9 +22738,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
22421
22738
  role="combobox"
22422
22739
  aria-haspopup="tree"
22423
22740
  [attr.aria-expanded]="open()"
22424
- [attr.aria-disabled]="disabled() || null"
22741
+ [attr.aria-disabled]="isDisabled() || null"
22425
22742
  [class]="triggerClass()"
22426
- [disabled]="disabled() || loading()"
22743
+ [disabled]="isDisabled() || loading()"
22427
22744
  (click)="toggleOpen()"
22428
22745
  (keydown)="onKeyDown($event)"
22429
22746
  >
@@ -22451,7 +22768,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
22451
22768
  }
22452
22769
  <span class="flex items-center gap-1 shrink-0">
22453
22770
  @if (
22454
- showClear() && selectedPath().length && !disabled() && !loading()
22771
+ showClear() && selectedPath().length && !isDisabled() && !loading()
22455
22772
  ) {
22456
22773
  <ui-icon
22457
22774
  name="x"
@@ -22563,7 +22880,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
22563
22880
  </div>
22564
22881
  `,
22565
22882
  }]
22566
- }], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], optionLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionLabel", required: false }] }], optionValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionValue", required: false }] }], optionChildren: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionChildren", required: false }] }], optionGroupChildren: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionGroupChildren", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], showClear: [{ type: i0.Input, args: [{ isSignal: true, alias: "showClear", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], dropdownIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropdownIcon", required: false }] }], emptyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyMessage", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], appendTo: [{ type: i0.Input, args: [{ isSignal: true, alias: "appendTo", required: false }] }], triggerRef: [{ type: i0.ViewChild, args: ['trigger', { isSignal: true }] }], panelRef: [{ type: i0.ViewChild, args: ['panel', { isSignal: true }] }], valueRef: [{ type: i0.ContentChild, args: ['value', { isSignal: true }] }], optionRef: [{ type: i0.ContentChild, args: ['option', { isSignal: true }] }], groupRef: [{ type: i0.ContentChild, args: ['group', { isSignal: true }] }], emptyRef: [{ type: i0.ContentChild, args: ['empty', { isSignal: true }] }], fTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => FTemplateDirective), { isSignal: true }] }] } });
22883
+ }], ctorParameters: () => [], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], optionLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionLabel", required: false }] }], optionValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionValue", required: false }] }], optionChildren: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionChildren", required: false }] }], optionGroupChildren: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionGroupChildren", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], showClear: [{ type: i0.Input, args: [{ isSignal: true, alias: "showClear", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], dropdownIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropdownIcon", required: false }] }], emptyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyMessage", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], appendTo: [{ type: i0.Input, args: [{ isSignal: true, alias: "appendTo", required: false }] }], triggerRef: [{ type: i0.ViewChild, args: ['trigger', { isSignal: true }] }], panelRef: [{ type: i0.ViewChild, args: ['panel', { isSignal: true }] }], valueRef: [{ type: i0.ContentChild, args: ['value', { isSignal: true }] }], optionRef: [{ type: i0.ContentChild, args: ['option', { isSignal: true }] }], groupRef: [{ type: i0.ContentChild, args: ['group', { isSignal: true }] }], emptyRef: [{ type: i0.ContentChild, args: ['empty', { isSignal: true }] }], fTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => FTemplateDirective), { isSignal: true }] }] } });
22567
22884
 
22568
22885
  const PRESETS = {
22569
22886
  pint: /\d/,
@@ -23060,6 +23377,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
23060
23377
 
23061
23378
  class InplaceComponent {
23062
23379
  disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
23380
+ constructor() {
23381
+ blockClicksWhileDisabled(this.disabled);
23382
+ }
23063
23383
  closable = input(true, { ...(ngDevMode ? { debugName: "closable" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
23064
23384
  active = model(false, /* @ts-ignore */
23065
23385
  ...(ngDevMode ? [{ debugName: "active" }] : /* istanbul ignore next */ []));
@@ -23154,7 +23474,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
23154
23474
  }
23155
23475
  `,
23156
23476
  }]
23157
- }], propDecorators: { disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], closable: [{ type: i0.Input, args: [{ isSignal: true, alias: "closable", required: false }] }], active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }, { type: i0.Output, args: ["activeChange"] }], onActivate: [{ type: i0.Output, args: ["onActivate"] }], onDeactivate: [{ type: i0.Output, args: ["onDeactivate"] }] } });
23477
+ }], ctorParameters: () => [], propDecorators: { disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], closable: [{ type: i0.Input, args: [{ isSignal: true, alias: "closable", required: false }] }], active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }, { type: i0.Output, args: ["activeChange"] }], onActivate: [{ type: i0.Output, args: ["onActivate"] }], onDeactivate: [{ type: i0.Output, args: ["onDeactivate"] }] } });
23158
23478
 
23159
23479
  let _uidCounter$1 = 0;
23160
23480
  function assignKey$1(node) {
@@ -23174,6 +23494,9 @@ class TreeComponent {
23174
23494
  emptyMessage = input('No records found', /* @ts-ignore */
23175
23495
  ...(ngDevMode ? [{ debugName: "emptyMessage" }] : /* istanbul ignore next */ []));
23176
23496
  disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
23497
+ constructor() {
23498
+ blockClicksWhileDisabled(this.disabled);
23499
+ }
23177
23500
  styleClass = input('', /* @ts-ignore */
23178
23501
  ...(ngDevMode ? [{ debugName: "styleClass" }] : /* istanbul ignore next */ []));
23179
23502
  style = input(null, /* @ts-ignore */
@@ -23837,7 +24160,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
23837
24160
  </ng-template>
23838
24161
  `,
23839
24162
  }]
23840
- }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], selectionMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionMode", required: false }] }], filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: false }] }], filterBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterBy", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], emptyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyMessage", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], propagateSelectionUp: [{ type: i0.Input, args: [{ isSignal: true, alias: "propagateSelectionUp", required: false }] }], propagateSelectionDown: [{ type: i0.Input, args: [{ isSignal: true, alias: "propagateSelectionDown", required: false }] }], lazy: [{ type: i0.Input, args: [{ isSignal: true, alias: "lazy", required: false }] }], virtualScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScroll", required: false }] }], virtualScrollItemSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScrollItemSize", required: false }] }], dragdropScope: [{ type: i0.Input, args: [{ isSignal: true, alias: "dragdropScope", required: false }] }], selectionChange: [{ type: i0.Output, args: ["selectionChange"] }], nodeSelect: [{ type: i0.Output, args: ["nodeSelect"] }], nodeUnselect: [{ type: i0.Output, args: ["nodeUnselect"] }], nodeExpand: [{ type: i0.Output, args: ["nodeExpand"] }], nodeCollapse: [{ type: i0.Output, args: ["nodeCollapse"] }], nodeContextMenu: [{ type: i0.Output, args: ["nodeContextMenu"] }], nodeDrop: [{ type: i0.Output, args: ["nodeDrop"] }], onFilter: [{ type: i0.Output, args: ["onFilter"] }], headerRef: [{ type: i0.ContentChild, args: ['header', { isSignal: true }] }], footerRef: [{ type: i0.ContentChild, args: ['footer', { isSignal: true }] }], emptyRef: [{ type: i0.ContentChild, args: ['empty', { isSignal: true }] }], fTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => FTemplateDirective), { isSignal: true }] }] } });
24163
+ }], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], selectionMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionMode", required: false }] }], filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: false }] }], filterBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterBy", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], emptyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyMessage", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], propagateSelectionUp: [{ type: i0.Input, args: [{ isSignal: true, alias: "propagateSelectionUp", required: false }] }], propagateSelectionDown: [{ type: i0.Input, args: [{ isSignal: true, alias: "propagateSelectionDown", required: false }] }], lazy: [{ type: i0.Input, args: [{ isSignal: true, alias: "lazy", required: false }] }], virtualScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScroll", required: false }] }], virtualScrollItemSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScrollItemSize", required: false }] }], dragdropScope: [{ type: i0.Input, args: [{ isSignal: true, alias: "dragdropScope", required: false }] }], selectionChange: [{ type: i0.Output, args: ["selectionChange"] }], nodeSelect: [{ type: i0.Output, args: ["nodeSelect"] }], nodeUnselect: [{ type: i0.Output, args: ["nodeUnselect"] }], nodeExpand: [{ type: i0.Output, args: ["nodeExpand"] }], nodeCollapse: [{ type: i0.Output, args: ["nodeCollapse"] }], nodeContextMenu: [{ type: i0.Output, args: ["nodeContextMenu"] }], nodeDrop: [{ type: i0.Output, args: ["nodeDrop"] }], onFilter: [{ type: i0.Output, args: ["onFilter"] }], headerRef: [{ type: i0.ContentChild, args: ['header', { isSignal: true }] }], footerRef: [{ type: i0.ContentChild, args: ['footer', { isSignal: true }] }], emptyRef: [{ type: i0.ContentChild, args: ['empty', { isSignal: true }] }], fTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => FTemplateDirective), { isSignal: true }] }] } });
23841
24164
 
23842
24165
  class TimelineComponent {
23843
24166
  value = input([], /* @ts-ignore */
@@ -24861,6 +25184,9 @@ class OrganizationChartComponent {
24861
25184
  ...(ngDevMode ? [{ debugName: "selectionMode" }] : /* istanbul ignore next */ []));
24862
25185
  collapsible = input(false, { ...(ngDevMode ? { debugName: "collapsible" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
24863
25186
  disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
25187
+ constructor() {
25188
+ blockClicksWhileDisabled(this.disabled);
25189
+ }
24864
25190
  loading = input(false, { ...(ngDevMode ? { debugName: "loading" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
24865
25191
  emptyMessage = input('No data', /* @ts-ignore */
24866
25192
  ...(ngDevMode ? [{ debugName: "emptyMessage" }] : /* istanbul ignore next */ []));
@@ -25089,7 +25415,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
25089
25415
  }
25090
25416
  </div>
25091
25417
  `, styles: [".f-orgchart-node{position:relative}.f-orgchart-children{display:flex;justify-content:center;position:relative;padding-top:1.5rem}.f-orgchart-children:before{content:\"\";position:absolute;top:0;left:50%;width:1px;height:1.5rem;background:var(--f-content-border-color)}.f-orgchart-child{position:relative;padding:0 1rem}.f-orgchart-child:before{content:\"\";position:absolute;top:0;left:0;right:0;height:1px;background:var(--f-content-border-color)}.f-orgchart-child:first-child:before{left:50%}.f-orgchart-child:last-child:before{right:50%}.f-orgchart-child:after{content:\"\";position:absolute;top:0;left:50%;width:1px;height:1rem;background:var(--f-content-border-color)}\n"] }]
25092
- }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], selectionMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionMode", required: false }] }], collapsible: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsible", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], emptyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyMessage", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], selectionChange: [{ type: i0.Output, args: ["selectionChange"] }], nodeSelect: [{ type: i0.Output, args: ["nodeSelect"] }], nodeUnselect: [{ type: i0.Output, args: ["nodeUnselect"] }], nodeExpand: [{ type: i0.Output, args: ["nodeExpand"] }], nodeCollapse: [{ type: i0.Output, args: ["nodeCollapse"] }], contentTpl: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }], togglerIconRef: [{ type: i0.ContentChild, args: ['togglericon', { isSignal: true }] }], fTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => FTemplateDirective), { isSignal: true }] }] } });
25418
+ }], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], selectionMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionMode", required: false }] }], collapsible: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsible", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], emptyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyMessage", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], selectionChange: [{ type: i0.Output, args: ["selectionChange"] }], nodeSelect: [{ type: i0.Output, args: ["nodeSelect"] }], nodeUnselect: [{ type: i0.Output, args: ["nodeUnselect"] }], nodeExpand: [{ type: i0.Output, args: ["nodeExpand"] }], nodeCollapse: [{ type: i0.Output, args: ["nodeCollapse"] }], contentTpl: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }], togglerIconRef: [{ type: i0.ContentChild, args: ['togglericon', { isSignal: true }] }], fTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => FTemplateDirective), { isSignal: true }] }] } });
25093
25419
 
25094
25420
  class PickListComponent {
25095
25421
  source = model([], /* @ts-ignore */
@@ -25111,6 +25437,9 @@ class PickListComponent {
25111
25437
  stripedRows = input(false, { ...(ngDevMode ? { debugName: "stripedRows" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
25112
25438
  responsive = input(false, { ...(ngDevMode ? { debugName: "responsive" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
25113
25439
  disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
25440
+ constructor() {
25441
+ blockClicksWhileDisabled(this.disabled);
25442
+ }
25114
25443
  sourceEmptyMessage = input('No records found', /* @ts-ignore */
25115
25444
  ...(ngDevMode ? [{ debugName: "sourceEmptyMessage" }] : /* istanbul ignore next */ []));
25116
25445
  targetEmptyMessage = input('No records found', /* @ts-ignore */
@@ -25621,7 +25950,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
25621
25950
  </div>
25622
25951
  `,
25623
25952
  }]
25624
- }], propDecorators: { source: [{ type: i0.Input, args: [{ isSignal: true, alias: "source", required: false }] }, { type: i0.Output, args: ["sourceChange"] }], target: [{ type: i0.Input, args: [{ isSignal: true, alias: "target", required: false }] }, { type: i0.Output, args: ["targetChange"] }], sourceHeader: [{ type: i0.Input, args: [{ isSignal: true, alias: "sourceHeader", required: false }] }], targetHeader: [{ type: i0.Input, args: [{ isSignal: true, alias: "targetHeader", required: false }] }], filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: false }] }], filterBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterBy", required: false }] }], sourceFilterPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "sourceFilterPlaceholder", required: false }] }], targetFilterPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "targetFilterPlaceholder", required: false }] }], dragdrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "dragdrop", required: false }] }], stripedRows: [{ type: i0.Input, args: [{ isSignal: true, alias: "stripedRows", required: false }] }], responsive: [{ type: i0.Input, args: [{ isSignal: true, alias: "responsive", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], sourceEmptyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "sourceEmptyMessage", required: false }] }], targetEmptyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "targetEmptyMessage", required: false }] }], emptyFilterMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyFilterMessage", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], itemTpl: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }], sourceHeaderRef: [{ type: i0.ContentChild, args: ['sourceHeader', { isSignal: true }] }], targetHeaderRef: [{ type: i0.ContentChild, args: ['targetHeader', { isSignal: true }] }], fTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => FTemplateDirective), { isSignal: true }] }], onMoveToTarget: [{ type: i0.Output, args: ["onMoveToTarget"] }], onMoveToSource: [{ type: i0.Output, args: ["onMoveToSource"] }], onSourceReorder: [{ type: i0.Output, args: ["onSourceReorder"] }], onTargetReorder: [{ type: i0.Output, args: ["onTargetReorder"] }] } });
25953
+ }], ctorParameters: () => [], propDecorators: { source: [{ type: i0.Input, args: [{ isSignal: true, alias: "source", required: false }] }, { type: i0.Output, args: ["sourceChange"] }], target: [{ type: i0.Input, args: [{ isSignal: true, alias: "target", required: false }] }, { type: i0.Output, args: ["targetChange"] }], sourceHeader: [{ type: i0.Input, args: [{ isSignal: true, alias: "sourceHeader", required: false }] }], targetHeader: [{ type: i0.Input, args: [{ isSignal: true, alias: "targetHeader", required: false }] }], filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: false }] }], filterBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterBy", required: false }] }], sourceFilterPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "sourceFilterPlaceholder", required: false }] }], targetFilterPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "targetFilterPlaceholder", required: false }] }], dragdrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "dragdrop", required: false }] }], stripedRows: [{ type: i0.Input, args: [{ isSignal: true, alias: "stripedRows", required: false }] }], responsive: [{ type: i0.Input, args: [{ isSignal: true, alias: "responsive", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], sourceEmptyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "sourceEmptyMessage", required: false }] }], targetEmptyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "targetEmptyMessage", required: false }] }], emptyFilterMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyFilterMessage", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], itemTpl: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }], sourceHeaderRef: [{ type: i0.ContentChild, args: ['sourceHeader', { isSignal: true }] }], targetHeaderRef: [{ type: i0.ContentChild, args: ['targetHeader', { isSignal: true }] }], fTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => FTemplateDirective), { isSignal: true }] }], onMoveToTarget: [{ type: i0.Output, args: ["onMoveToTarget"] }], onMoveToSource: [{ type: i0.Output, args: ["onMoveToSource"] }], onSourceReorder: [{ type: i0.Output, args: ["onSourceReorder"] }], onTargetReorder: [{ type: i0.Output, args: ["onTargetReorder"] }] } });
25625
25954
 
25626
25955
  class OrderListComponent {
25627
25956
  value = model([], /* @ts-ignore */
@@ -25638,6 +25967,9 @@ class OrderListComponent {
25638
25967
  stripedRows = input(false, { ...(ngDevMode ? { debugName: "stripedRows" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
25639
25968
  responsive = input(false, { ...(ngDevMode ? { debugName: "responsive" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
25640
25969
  disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
25970
+ constructor() {
25971
+ blockClicksWhileDisabled(this.disabled);
25972
+ }
25641
25973
  loading = input(false, { ...(ngDevMode ? { debugName: "loading" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
25642
25974
  emptyMessage = input('No records found', /* @ts-ignore */
25643
25975
  ...(ngDevMode ? [{ debugName: "emptyMessage" }] : /* istanbul ignore next */ []));
@@ -26037,7 +26369,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
26037
26369
  </div>
26038
26370
  `,
26039
26371
  }]
26040
- }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], header: [{ type: i0.Input, args: [{ isSignal: true, alias: "header", required: false }] }], filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: false }] }], filterBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterBy", required: false }] }], filterPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterPlaceholder", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], dragdrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "dragdrop", required: false }] }], stripedRows: [{ type: i0.Input, args: [{ isSignal: true, alias: "stripedRows", required: false }] }], responsive: [{ type: i0.Input, args: [{ isSignal: true, alias: "responsive", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], emptyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyMessage", required: false }] }], emptyFilterMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyFilterMessage", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], itemTpl: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }], headerRef: [{ type: i0.ContentChild, args: ['header', { isSignal: true }] }], emptyRef: [{ type: i0.ContentChild, args: ['empty', { isSignal: true }] }], fTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => FTemplateDirective), { isSignal: true }] }], selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }, { type: i0.Output, args: ["selectedChange"] }], onReorder: [{ type: i0.Output, args: ["onReorder"] }], onSelectionChange: [{ type: i0.Output, args: ["onSelectionChange"] }] } });
26372
+ }], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], header: [{ type: i0.Input, args: [{ isSignal: true, alias: "header", required: false }] }], filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: false }] }], filterBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterBy", required: false }] }], filterPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterPlaceholder", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], dragdrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "dragdrop", required: false }] }], stripedRows: [{ type: i0.Input, args: [{ isSignal: true, alias: "stripedRows", required: false }] }], responsive: [{ type: i0.Input, args: [{ isSignal: true, alias: "responsive", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], emptyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyMessage", required: false }] }], emptyFilterMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyFilterMessage", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], itemTpl: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }], headerRef: [{ type: i0.ContentChild, args: ['header', { isSignal: true }] }], emptyRef: [{ type: i0.ContentChild, args: ['empty', { isSignal: true }] }], fTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => FTemplateDirective), { isSignal: true }] }], selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }, { type: i0.Output, args: ["selectedChange"] }], onReorder: [{ type: i0.Output, args: ["onReorder"] }], onSelectionChange: [{ type: i0.Output, args: ["onSelectionChange"] }] } });
26041
26373
 
26042
26374
  class GalleriaComponent {
26043
26375
  value = input([], /* @ts-ignore */