@vallift/ngl 22.0.33 → 22.0.35

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.
@@ -873,7 +873,8 @@ class OverlayService {
873
873
  this.renderer = this.rendererFactory.createRenderer(null, null);
874
874
  }
875
875
  basePanelClass = ['bg-white', 'shadow-2'];
876
- modalMaxHeightClass = 'max-h-[80vh]';
876
+ /** Default max height leaves ~1rem gap above and below the viewport. */
877
+ modalMaxHeight = 'calc(100dvh - 2rem)';
877
878
  openNearElement(component, triggerElement, options) {
878
879
  const { positionPreference = 'bottomLeft', disableClose = false, data, scrollStrategy = 'block', isMobileResponsive = false } = options ?? {};
879
880
  const isMobile = this.breakpointObserver.isMatched([Breakpoints.XSmall, Breakpoints.Small]);
@@ -967,7 +968,7 @@ class OverlayService {
967
968
  return dialogRef;
968
969
  }
969
970
  openModal(component, options) {
970
- const { disableClose = false, maxHeightClass, data, fitContent = false, panelClass } = options ?? {};
971
+ const { disableClose = false, maxHeight = this.modalMaxHeight, data, fitContent = false, panelClass, } = options ?? {};
971
972
  const positionStrategy = this.overlay
972
973
  .position()
973
974
  .global()
@@ -978,8 +979,8 @@ class OverlayService {
978
979
  : ['sm:w-4/5', 'md:w-3/5', 'lg:w-2/5'];
979
980
  const defaultPanelClass = [
980
981
  ...this.basePanelClass,
981
- maxHeightClass ?? this.modalMaxHeightClass,
982
982
  'rounded-3xl',
983
+ 'overflow-hidden',
983
984
  ...widthClasses,
984
985
  ];
985
986
  let dialogRef = this.dialog.open(component, {
@@ -987,15 +988,16 @@ class OverlayService {
987
988
  disableClose: disableClose,
988
989
  backdropClass: ['bg-black/20'],
989
990
  panelClass: panelClass ?? defaultPanelClass,
991
+ maxHeight,
990
992
  data: data
991
993
  });
992
- this.setOverlayMaxHeight(maxHeightClass ?? this.modalMaxHeightClass);
994
+ this.setOverlayMaxHeight(maxHeight);
993
995
  return dialogRef;
994
996
  }
995
- setOverlayMaxHeight(maxHeightClass) {
997
+ setOverlayMaxHeight(maxHeight) {
996
998
  const overlayElement = document.querySelector('.base-overlay');
997
999
  if (overlayElement) {
998
- this.renderer.addClass(overlayElement, maxHeightClass);
1000
+ this.renderer.setStyle(overlayElement, 'max-height', maxHeight);
999
1001
  }
1000
1002
  }
1001
1003
  openBackdrop(component, options) {
@@ -1279,11 +1281,11 @@ class NoDataComponent {
1279
1281
  message = input.required(/* @ts-ignore */
1280
1282
  ...(ngDevMode ? [{ debugName: "message" }] : /* istanbul ignore next */ []));
1281
1283
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NoDataComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1282
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: NoDataComponent, isStandalone: true, selector: "app-no-data", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<div class=\"inline-flex flex-col gap-3 items-center justify-center\">\n @if (icon() !== 'none') {\n\n <svg class=\"h-16 w-16 text-neutral-300\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\" id=\"mdi-inbox-outline\" viewBox=\"0 0 24 24\"><path d=\"M19 3H5A2 2 0 0 0 3 5V19A2 2 0 0 0 5 21H19A2 2 0 0 0 21 19V5A2 2 0 0 0 19 3M5 19V17H8.13A4.13 4.13 0 0 0 9.4 19M19 19H14.6A4.13 4.13 0 0 0 15.87 17H19M19 15H14V16A2 2 0 0 1 10 16V15H5V5H19Z\" /></svg>\n }\n <p class=\"text-body2 text-neutral-500\">{{ message() }}</p>\n</div>\n", styles: [""] });
1284
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: NoDataComponent, isStandalone: true, selector: "app-no-data", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<div class=\"inline-flex flex-col gap-3 items-center justify-center\">\n @if (icon() !== 'none') {\n\n <svg class=\"h-8 w-8 text-neutral-300\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\" id=\"mdi-inbox-outline\" viewBox=\"0 0 24 24\"><path d=\"M19 3H5A2 2 0 0 0 3 5V19A2 2 0 0 0 5 21H19A2 2 0 0 0 21 19V5A2 2 0 0 0 19 3M5 19V17H8.13A4.13 4.13 0 0 0 9.4 19M19 19H14.6A4.13 4.13 0 0 0 15.87 17H19M19 15H14V16A2 2 0 0 1 10 16V15H5V5H19Z\" /></svg>\n }\n <p class=\"text-body2 text-neutral-500\">{{ message() }}</p>\n</div>\n", styles: [""] });
1283
1285
  }
1284
1286
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NoDataComponent, decorators: [{
1285
1287
  type: Component,
1286
- args: [{ selector: 'app-no-data', standalone: true, imports: [], template: "<div class=\"inline-flex flex-col gap-3 items-center justify-center\">\n @if (icon() !== 'none') {\n\n <svg class=\"h-16 w-16 text-neutral-300\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\" id=\"mdi-inbox-outline\" viewBox=\"0 0 24 24\"><path d=\"M19 3H5A2 2 0 0 0 3 5V19A2 2 0 0 0 5 21H19A2 2 0 0 0 21 19V5A2 2 0 0 0 19 3M5 19V17H8.13A4.13 4.13 0 0 0 9.4 19M19 19H14.6A4.13 4.13 0 0 0 15.87 17H19M19 15H14V16A2 2 0 0 1 10 16V15H5V5H19Z\" /></svg>\n }\n <p class=\"text-body2 text-neutral-500\">{{ message() }}</p>\n</div>\n" }]
1288
+ args: [{ selector: 'app-no-data', standalone: true, imports: [], template: "<div class=\"inline-flex flex-col gap-3 items-center justify-center\">\n @if (icon() !== 'none') {\n\n <svg class=\"h-8 w-8 text-neutral-300\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\" id=\"mdi-inbox-outline\" viewBox=\"0 0 24 24\"><path d=\"M19 3H5A2 2 0 0 0 3 5V19A2 2 0 0 0 5 21H19A2 2 0 0 0 21 19V5A2 2 0 0 0 19 3M5 19V17H8.13A4.13 4.13 0 0 0 9.4 19M19 19H14.6A4.13 4.13 0 0 0 15.87 17H19M19 15H14V16A2 2 0 0 1 10 16V15H5V5H19Z\" /></svg>\n }\n <p class=\"text-body2 text-neutral-500\">{{ message() }}</p>\n</div>\n" }]
1287
1289
  }], propDecorators: { size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], message: [{ type: i0.Input, args: [{ isSignal: true, alias: "message", required: true }] }] } });
1288
1290
 
1289
1291
  class NoDataTableComponent {
@@ -3961,8 +3963,9 @@ class BaseFormControl {
3961
3963
  ...(ngDevMode ? [{ debugName: "invalid" }] : /* istanbul ignore next */ []));
3962
3964
  required = input(false, /* @ts-ignore */
3963
3965
  ...(ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []));
3964
- touched = model(false, /* @ts-ignore */
3966
+ touched = input(false, /* @ts-ignore */
3965
3967
  ...(ngDevMode ? [{ debugName: "touched" }] : /* istanbul ignore next */ []));
3968
+ touch = output();
3966
3969
  isFocused = model(false, /* @ts-ignore */
3967
3970
  ...(ngDevMode ? [{ debugName: "isFocused" }] : /* istanbul ignore next */ []));
3968
3971
  showRequiredIndicator = computed(() => this.required(), /* @ts-ignore */
@@ -3983,15 +3986,15 @@ class BaseFormControl {
3983
3986
  onBlur() {
3984
3987
  this.isFocused.set(false);
3985
3988
  if (!this.disabled()) {
3986
- this.touched.set(true);
3989
+ this.touch.emit();
3987
3990
  }
3988
3991
  }
3989
3992
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: BaseFormControl, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3990
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.1", type: BaseFormControl, isStandalone: true, inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, errors: { classPropertyName: "errors", publicName: "errors", 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 }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, isFocused: { classPropertyName: "isFocused", publicName: "isFocused", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", touched: "touchedChange", isFocused: "isFocusedChange" }, ngImport: i0 });
3993
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.1", type: BaseFormControl, isStandalone: true, inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, errors: { classPropertyName: "errors", publicName: "errors", 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 }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, isFocused: { classPropertyName: "isFocused", publicName: "isFocused", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", touch: "touch", isFocused: "isFocusedChange" }, ngImport: i0 });
3991
3994
  }
3992
3995
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: BaseFormControl, decorators: [{
3993
3996
  type: Directive
3994
- }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], errors: [{ type: i0.Input, args: [{ isSignal: true, alias: "errors", 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 }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }, { type: i0.Output, args: ["touchedChange"] }], isFocused: [{ type: i0.Input, args: [{ isSignal: true, alias: "isFocused", required: false }] }, { type: i0.Output, args: ["isFocusedChange"] }] } });
3997
+ }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], errors: [{ type: i0.Input, args: [{ isSignal: true, alias: "errors", 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 }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], touch: [{ type: i0.Output, args: ["touch"] }], isFocused: [{ type: i0.Input, args: [{ isSignal: true, alias: "isFocused", required: false }] }, { type: i0.Output, args: ["isFocusedChange"] }] } });
3995
3998
 
3996
3999
  class BaseSignalTextInputControl extends BaseFormControl {
3997
4000
  nglConfig = inject(NGL_CONFIG, { optional: true });
@@ -4048,7 +4051,7 @@ class SignalTextField extends BaseSignalTextInputControl {
4048
4051
  // Behavior
4049
4052
  showClearButton = input(false, /* @ts-ignore */
4050
4053
  ...(ngDevMode ? [{ debugName: "showClearButton" }] : /* istanbul ignore next */ []));
4051
- debounceValueChange = input(true, /* @ts-ignore */
4054
+ debounceValueChange = input(false, /* @ts-ignore */
4052
4055
  ...(ngDevMode ? [{ debugName: "debounceValueChange" }] : /* istanbul ignore next */ []));
4053
4056
  debounceMs = input(600, /* @ts-ignore */
4054
4057
  ...(ngDevMode ? [{ debugName: "debounceMs" }] : /* istanbul ignore next */ []));
@@ -5085,8 +5088,14 @@ class BaseOverlayComponent {
5085
5088
  actionsContainerDiv;
5086
5089
  title = input.required(/* @ts-ignore */
5087
5090
  ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
5091
+ description = input('', /* @ts-ignore */
5092
+ ...(ngDevMode ? [{ debugName: "description" }] : /* istanbul ignore next */ []));
5088
5093
  showTitle = input(true, /* @ts-ignore */
5089
5094
  ...(ngDevMode ? [{ debugName: "showTitle" }] : /* istanbul ignore next */ []));
5095
+ showHeaderBorder = input(true, /* @ts-ignore */
5096
+ ...(ngDevMode ? [{ debugName: "showHeaderBorder" }] : /* istanbul ignore next */ []));
5097
+ showActionsBorder = input(true, /* @ts-ignore */
5098
+ ...(ngDevMode ? [{ debugName: "showActionsBorder" }] : /* istanbul ignore next */ []));
5090
5099
  showBackButton = input(false, /* @ts-ignore */
5091
5100
  ...(ngDevMode ? [{ debugName: "showBackButton" }] : /* istanbul ignore next */ []));
5092
5101
  enableDefaultLayout = input(true, /* @ts-ignore */
@@ -5111,13 +5120,13 @@ class BaseOverlayComponent {
5111
5120
  this.dialogRef.close();
5112
5121
  }
5113
5122
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: BaseOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5114
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: BaseOverlayComponent, isStandalone: true, selector: "app-base-overlay", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, showTitle: { classPropertyName: "showTitle", publicName: "showTitle", isSignal: true, isRequired: false, transformFunction: null }, showBackButton: { classPropertyName: "showBackButton", publicName: "showBackButton", isSignal: true, isRequired: false, transformFunction: null }, enableDefaultLayout: { classPropertyName: "enableDefaultLayout", publicName: "enableDefaultLayout", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onBackClicked: "onBackClicked" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "actionsDiv", first: true, predicate: ["actions"], descendants: true }, { propertyName: "actionsContainerDiv", first: true, predicate: ["actionsContainer"], descendants: true }], ngImport: i0, template: "<div class=\"base-overlay flex flex-col rounded-3xl h-full overflow-hidden bg-white relative\">\n\n @if (enableDefaultLayout()) {\n @if (showTitle()) {\n <div class=\"flex justify-center items-center px-3 py-6 border-b border-neutral-200\">\n\n @if (showBackButton()) {\n <div class=\"absolute left-3 rounded-full p-3 cursor-pointer hover:bg-neutral-50 transition-all duration-500\"\n (click)=\"goBack()\">\n <svg class=\"w-[18px] h-[18px] text-neutral-600\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"\n fill=\"none\">\n <path d=\"M20 11V13H8.00003L13.5 18.5L12.08 19.92L4.16003 12L12.08 4.07996L13.5 5.49996L8.00003 11H20Z\"\n fill=\"currentColor\"/>\n </svg>\n </div>\n }\n\n <span class=\"text-body1\">{{ title() }}</span>\n <div class=\"absolute right-3 rounded-lg p-2 border border-neutral-300 cursor-pointer hover:bg-neutral-50\"\n (click)=\"onCloseClicked()\">\n <svg class=\"w-[18px] h-[18px]\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M19 6.41L17.59 5L12 10.59L6.41 5L5 6.41L10.59 12L5 17.59L6.41 19L12 13.41L17.59 19L19 17.59L13.41 12L19 6.41Z\"\n fill=\"currentColor\"/>\n </svg>\n </div>\n </div>\n }\n }\n\n <div class=\"flex-1 min-h-0 overflow-y-auto\" [ngClass]=\"enableDefaultLayout() ? 'px-5 py-4' : ''\">\n <ng-content select=\"[body]\">\n <ng-container #container></ng-container>\n </ng-content>\n </div>\n\n\n @if (enableDefaultLayout()) {\n <div #actionsContainer class=\"actions-container border-t border-neutral-200 px-4 py-4\">\n <div #actions class=\"w-full\">\n <ng-content select=\"[actions]\"></ng-content>\n </div>\n </div>\n }\n\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
5123
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: BaseOverlayComponent, isStandalone: true, selector: "app-base-overlay", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, showTitle: { classPropertyName: "showTitle", publicName: "showTitle", isSignal: true, isRequired: false, transformFunction: null }, showHeaderBorder: { classPropertyName: "showHeaderBorder", publicName: "showHeaderBorder", isSignal: true, isRequired: false, transformFunction: null }, showActionsBorder: { classPropertyName: "showActionsBorder", publicName: "showActionsBorder", isSignal: true, isRequired: false, transformFunction: null }, showBackButton: { classPropertyName: "showBackButton", publicName: "showBackButton", isSignal: true, isRequired: false, transformFunction: null }, enableDefaultLayout: { classPropertyName: "enableDefaultLayout", publicName: "enableDefaultLayout", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onBackClicked: "onBackClicked" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "actionsDiv", first: true, predicate: ["actions"], descendants: true }, { propertyName: "actionsContainerDiv", first: true, predicate: ["actionsContainer"], descendants: true }], ngImport: i0, template: "<div class=\"base-overlay relative flex max-h-full min-h-0 flex-col overflow-hidden rounded-3xl bg-white\">\n\n @if (enableDefaultLayout()) {\n @if (showTitle()) {\n <div\n class=\"flex shrink-0 items-start gap-2 px-5 py-4\"\n [class.border-b]=\"showHeaderBorder()\"\n [class.border-neutral-200]=\"showHeaderBorder()\">\n\n @if (showBackButton()) {\n <button\n type=\"button\"\n class=\"shrink-0 cursor-pointer rounded-full p-2 text-neutral-600 transition-colors hover:bg-neutral-50\"\n (click)=\"goBack()\"\n aria-label=\"Back\">\n <svg class=\"h-[18px] w-[18px]\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M20 11V13H8.00003L13.5 18.5L12.08 19.92L4.16003 12L12.08 4.07996L13.5 5.49996L8.00003 11H20Z\"\n fill=\"currentColor\"/>\n </svg>\n </button>\n }\n\n <div class=\"min-w-0 flex-1 pt-0.5\">\n <div class=\"text-h6 text-role-body\">{{ title() }}</div>\n @if (description()) {\n <p class=\"mt-1 text-caption text-role-caption\">{{ description() }}</p>\n }\n </div>\n\n <button\n type=\"button\"\n class=\"shrink-0 cursor-pointer rounded-lg p-2 text-neutral-600 transition-colors hover:bg-neutral-50\"\n (click)=\"onCloseClicked()\"\n aria-label=\"Close\">\n <svg class=\"h-[18px] w-[18px]\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M19 6.41L17.59 5L12 10.59L6.41 5L5 6.41L10.59 12L5 17.59L6.41 19L12 13.41L17.59 19L19 17.59L13.41 12L19 6.41Z\"\n fill=\"currentColor\"/>\n </svg>\n </button>\n </div>\n }\n }\n\n <div\n class=\"min-h-0 flex-1 overflow-y-auto overscroll-y-contain\"\n [ngClass]=\"enableDefaultLayout() ? 'px-5 py-4' : ''\">\n <ng-content select=\"[body]\">\n <ng-container #container></ng-container>\n </ng-content>\n </div>\n\n\n @if (enableDefaultLayout()) {\n <div\n #actionsContainer\n class=\"actions-container shrink-0 px-4 py-4\"\n [class.border-t]=\"showActionsBorder()\"\n [class.border-neutral-200]=\"showActionsBorder()\">\n <div #actions class=\"w-full\">\n <ng-content select=\"[actions]\"></ng-content>\n </div>\n </div>\n }\n\n</div>\n", styles: [":host{display:block;max-height:100%;min-height:0}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
5115
5124
  }
5116
5125
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: BaseOverlayComponent, decorators: [{
5117
5126
  type: Component,
5118
5127
  args: [{ selector: 'app-base-overlay', imports: [
5119
5128
  NgClass
5120
- ], standalone: true, template: "<div class=\"base-overlay flex flex-col rounded-3xl h-full overflow-hidden bg-white relative\">\n\n @if (enableDefaultLayout()) {\n @if (showTitle()) {\n <div class=\"flex justify-center items-center px-3 py-6 border-b border-neutral-200\">\n\n @if (showBackButton()) {\n <div class=\"absolute left-3 rounded-full p-3 cursor-pointer hover:bg-neutral-50 transition-all duration-500\"\n (click)=\"goBack()\">\n <svg class=\"w-[18px] h-[18px] text-neutral-600\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"\n fill=\"none\">\n <path d=\"M20 11V13H8.00003L13.5 18.5L12.08 19.92L4.16003 12L12.08 4.07996L13.5 5.49996L8.00003 11H20Z\"\n fill=\"currentColor\"/>\n </svg>\n </div>\n }\n\n <span class=\"text-body1\">{{ title() }}</span>\n <div class=\"absolute right-3 rounded-lg p-2 border border-neutral-300 cursor-pointer hover:bg-neutral-50\"\n (click)=\"onCloseClicked()\">\n <svg class=\"w-[18px] h-[18px]\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M19 6.41L17.59 5L12 10.59L6.41 5L5 6.41L10.59 12L5 17.59L6.41 19L12 13.41L17.59 19L19 17.59L13.41 12L19 6.41Z\"\n fill=\"currentColor\"/>\n </svg>\n </div>\n </div>\n }\n }\n\n <div class=\"flex-1 min-h-0 overflow-y-auto\" [ngClass]=\"enableDefaultLayout() ? 'px-5 py-4' : ''\">\n <ng-content select=\"[body]\">\n <ng-container #container></ng-container>\n </ng-content>\n </div>\n\n\n @if (enableDefaultLayout()) {\n <div #actionsContainer class=\"actions-container border-t border-neutral-200 px-4 py-4\">\n <div #actions class=\"w-full\">\n <ng-content select=\"[actions]\"></ng-content>\n </div>\n </div>\n }\n\n</div>\n" }]
5129
+ ], standalone: true, template: "<div class=\"base-overlay relative flex max-h-full min-h-0 flex-col overflow-hidden rounded-3xl bg-white\">\n\n @if (enableDefaultLayout()) {\n @if (showTitle()) {\n <div\n class=\"flex shrink-0 items-start gap-2 px-5 py-4\"\n [class.border-b]=\"showHeaderBorder()\"\n [class.border-neutral-200]=\"showHeaderBorder()\">\n\n @if (showBackButton()) {\n <button\n type=\"button\"\n class=\"shrink-0 cursor-pointer rounded-full p-2 text-neutral-600 transition-colors hover:bg-neutral-50\"\n (click)=\"goBack()\"\n aria-label=\"Back\">\n <svg class=\"h-[18px] w-[18px]\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M20 11V13H8.00003L13.5 18.5L12.08 19.92L4.16003 12L12.08 4.07996L13.5 5.49996L8.00003 11H20Z\"\n fill=\"currentColor\"/>\n </svg>\n </button>\n }\n\n <div class=\"min-w-0 flex-1 pt-0.5\">\n <div class=\"text-h6 text-role-body\">{{ title() }}</div>\n @if (description()) {\n <p class=\"mt-1 text-caption text-role-caption\">{{ description() }}</p>\n }\n </div>\n\n <button\n type=\"button\"\n class=\"shrink-0 cursor-pointer rounded-lg p-2 text-neutral-600 transition-colors hover:bg-neutral-50\"\n (click)=\"onCloseClicked()\"\n aria-label=\"Close\">\n <svg class=\"h-[18px] w-[18px]\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M19 6.41L17.59 5L12 10.59L6.41 5L5 6.41L10.59 12L5 17.59L6.41 19L12 13.41L17.59 19L19 17.59L13.41 12L19 6.41Z\"\n fill=\"currentColor\"/>\n </svg>\n </button>\n </div>\n }\n }\n\n <div\n class=\"min-h-0 flex-1 overflow-y-auto overscroll-y-contain\"\n [ngClass]=\"enableDefaultLayout() ? 'px-5 py-4' : ''\">\n <ng-content select=\"[body]\">\n <ng-container #container></ng-container>\n </ng-content>\n </div>\n\n\n @if (enableDefaultLayout()) {\n <div\n #actionsContainer\n class=\"actions-container shrink-0 px-4 py-4\"\n [class.border-t]=\"showActionsBorder()\"\n [class.border-neutral-200]=\"showActionsBorder()\">\n <div #actions class=\"w-full\">\n <ng-content select=\"[actions]\"></ng-content>\n </div>\n </div>\n }\n\n</div>\n", styles: [":host{display:block;max-height:100%;min-height:0}\n"] }]
5121
5130
  }], propDecorators: { container: [{
5122
5131
  type: ViewChild,
5123
5132
  args: ['container', { read: ViewContainerRef, static: true }]
@@ -5127,7 +5136,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImpor
5127
5136
  }], actionsContainerDiv: [{
5128
5137
  type: ViewChild,
5129
5138
  args: ['actionsContainer', { static: false }]
5130
- }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: true }] }], showTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "showTitle", required: false }] }], showBackButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showBackButton", required: false }] }], enableDefaultLayout: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableDefaultLayout", required: false }] }], onBackClicked: [{ type: i0.Output, args: ["onBackClicked"] }] } });
5139
+ }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: true }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }], showTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "showTitle", required: false }] }], showHeaderBorder: [{ type: i0.Input, args: [{ isSignal: true, alias: "showHeaderBorder", required: false }] }], showActionsBorder: [{ type: i0.Input, args: [{ isSignal: true, alias: "showActionsBorder", required: false }] }], showBackButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showBackButton", required: false }] }], enableDefaultLayout: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableDefaultLayout", required: false }] }], onBackClicked: [{ type: i0.Output, args: ["onBackClicked"] }] } });
5131
5140
 
5132
5141
  class OverlayWizardUtils {
5133
5142
  uiState = signal([], /* @ts-ignore */
@@ -8391,10 +8400,11 @@ class SignalNumberField extends BaseSignalTextInputControl {
8391
8400
  ...(ngDevMode ? [{ debugName: "hideSpinButtons" }] : /* istanbul ignore next */ []));
8392
8401
  showClearButton = input(false, /* @ts-ignore */
8393
8402
  ...(ngDevMode ? [{ debugName: "showClearButton" }] : /* istanbul ignore next */ []));
8394
- debounceValueChange = input(true, /* @ts-ignore */
8403
+ debounceValueChange = input(false, /* @ts-ignore */
8395
8404
  ...(ngDevMode ? [{ debugName: "debounceValueChange" }] : /* istanbul ignore next */ []));
8396
8405
  debounceMs = input(600, /* @ts-ignore */
8397
8406
  ...(ngDevMode ? [{ debugName: "debounceMs" }] : /* istanbul ignore next */ []));
8407
+ // Outputs
8398
8408
  valueChange = output();
8399
8409
  enter = output();
8400
8410
  clear = output();
@@ -9077,10 +9087,11 @@ class SignalPhoneNumberField extends BaseSignalTextInputControl {
9077
9087
  ...(ngDevMode ? [{ debugName: "autocomplete" }] : /* istanbul ignore next */ []));
9078
9088
  showClearButton = input(false, /* @ts-ignore */
9079
9089
  ...(ngDevMode ? [{ debugName: "showClearButton" }] : /* istanbul ignore next */ []));
9080
- debounceValueChange = input(true, /* @ts-ignore */
9090
+ debounceValueChange = input(false, /* @ts-ignore */
9081
9091
  ...(ngDevMode ? [{ debugName: "debounceValueChange" }] : /* istanbul ignore next */ []));
9082
9092
  debounceMs = input(600, /* @ts-ignore */
9083
9093
  ...(ngDevMode ? [{ debugName: "debounceMs" }] : /* istanbul ignore next */ []));
9094
+ // Outputs
9084
9095
  valueChange = output();
9085
9096
  enter = output();
9086
9097
  clear = output();
@@ -9381,7 +9392,7 @@ class SignalTextarea extends BaseSignalTextInputControl {
9381
9392
  // Behavior
9382
9393
  showClearButton = input(false, /* @ts-ignore */
9383
9394
  ...(ngDevMode ? [{ debugName: "showClearButton" }] : /* istanbul ignore next */ []));
9384
- debounceValueChange = input(true, /* @ts-ignore */
9395
+ debounceValueChange = input(false, /* @ts-ignore */
9385
9396
  ...(ngDevMode ? [{ debugName: "debounceValueChange" }] : /* istanbul ignore next */ []));
9386
9397
  debounceMs = input(600, /* @ts-ignore */
9387
9398
  ...(ngDevMode ? [{ debugName: "debounceMs" }] : /* istanbul ignore next */ []));
@@ -9745,6 +9756,7 @@ class SignalRadioGroup extends BaseFormControl {
9745
9756
  ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
9746
9757
  options = input([], /* @ts-ignore */
9747
9758
  ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
9759
+ valueChange = output();
9748
9760
  instanceId = ++nextGroupId;
9749
9761
  groupLabelId = computed(() => `signal-radio-group-label-${this.instanceId}`, /* @ts-ignore */
9750
9762
  ...(ngDevMode ? [{ debugName: "groupLabelId" }] : /* istanbul ignore next */ []));
@@ -9758,10 +9770,11 @@ class SignalRadioGroup extends BaseFormControl {
9758
9770
  ...(ngDevMode ? [{ debugName: "hasOptions" }] : /* istanbul ignore next */ []));
9759
9771
  showGroupError = this.showError;
9760
9772
  setValue(value) {
9761
- if (this.readonly()) {
9773
+ if (this.disabled() || this.readonly()) {
9762
9774
  return;
9763
9775
  }
9764
9776
  super.setValue(value);
9777
+ this.valueChange.emit(value);
9765
9778
  }
9766
9779
  markOptionFocus() {
9767
9780
  this.isFocused.set(true);
@@ -9777,16 +9790,16 @@ class SignalRadioGroup extends BaseFormControl {
9777
9790
  }
9778
9791
  this.isFocused.set(false);
9779
9792
  if (!this.disabled()) {
9780
- this.touched.set(true);
9793
+ this.touch.emit();
9781
9794
  }
9782
9795
  }
9783
9796
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: SignalRadioGroup, deps: null, target: i0.ɵɵFactoryTarget.Component });
9784
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: SignalRadioGroup, isStandalone: true, selector: "lib-signal-radio-group", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, groupName: { classPropertyName: "groupName", publicName: "groupName", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: SIGNAL_RADIO_GROUP, useExisting: SignalRadioGroup }], usesInheritance: true, ngImport: i0, template: "<lib-base-signal-input\n [label]=\"label()\"\n [showExternalLabel]=\"true\"\n [showRequired]=\"showRequiredIndicator()\"\n [showError]=\"showError()\"\n [errorMessage]=\"errorMessage()\"\n [disabled]=\"disabled()\"\n [hint]=\"hint()\"\n [inputId]=\"groupLabelId()\">\n\n <div\n input\n role=\"radiogroup\"\n [class]=\"orientationClasses()\"\n [attr.aria-labelledby]=\"label() ? groupLabelId() : null\"\n [attr.aria-invalid]=\"showError() || null\"\n (focusout)=\"onGroupFocusOut($event)\">\n @if (hasOptions()) {\n @for (option of options(); track option.value) {\n <lib-signal-radio\n [optionValue]=\"option.value\"\n [label]=\"option.label\"\n [hint]=\"option.hint ?? ''\"\n [size]=\"size()\"\n [disabled]=\"disabled() || !!option.disabled\" />\n }\n } @else {\n <ng-content />\n }\n </div>\n\n</lib-base-signal-input>\n", dependencies: [{ kind: "component", type: BaseSignalInput, selector: "lib-base-signal-input", inputs: ["label", "showExternalLabel", "showRequired", "showError", "errorMessage", "disabled", "hint", "inputId"] }, { kind: "component", type: SignalRadio, selector: "lib-signal-radio", inputs: ["groupName", "optionValue", "label", "hint", "id", "size"], outputs: ["valueChange"] }] });
9797
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: SignalRadioGroup, isStandalone: true, selector: "lib-signal-radio-group", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, groupName: { classPropertyName: "groupName", publicName: "groupName", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, providers: [{ provide: SIGNAL_RADIO_GROUP, useExisting: SignalRadioGroup }], usesInheritance: true, ngImport: i0, template: "<lib-base-signal-input\n [label]=\"label()\"\n [showExternalLabel]=\"true\"\n [showRequired]=\"showRequiredIndicator()\"\n [showError]=\"showError()\"\n [errorMessage]=\"errorMessage()\"\n [disabled]=\"disabled()\"\n [hint]=\"hint()\"\n [inputId]=\"groupLabelId()\">\n\n <div\n input\n role=\"radiogroup\"\n [class]=\"orientationClasses()\"\n [attr.aria-labelledby]=\"label() ? groupLabelId() : null\"\n [attr.aria-invalid]=\"showError() || null\"\n (focusout)=\"onGroupFocusOut($event)\">\n @if (hasOptions()) {\n @for (option of options(); track option.value) {\n <lib-signal-radio\n [optionValue]=\"option.value\"\n [label]=\"option.label\"\n [hint]=\"option.hint ?? ''\"\n [size]=\"size()\"\n [disabled]=\"disabled() || !!option.disabled\" />\n }\n } @else {\n <ng-content />\n }\n </div>\n\n</lib-base-signal-input>\n", dependencies: [{ kind: "component", type: BaseSignalInput, selector: "lib-base-signal-input", inputs: ["label", "showExternalLabel", "showRequired", "showError", "errorMessage", "disabled", "hint", "inputId"] }, { kind: "component", type: SignalRadio, selector: "lib-signal-radio", inputs: ["groupName", "optionValue", "label", "hint", "id", "size"], outputs: ["valueChange"] }] });
9785
9798
  }
9786
9799
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: SignalRadioGroup, decorators: [{
9787
9800
  type: Component,
9788
9801
  args: [{ selector: 'lib-signal-radio-group', imports: [BaseSignalInput, SignalRadio], providers: [{ provide: SIGNAL_RADIO_GROUP, useExisting: SignalRadioGroup }], template: "<lib-base-signal-input\n [label]=\"label()\"\n [showExternalLabel]=\"true\"\n [showRequired]=\"showRequiredIndicator()\"\n [showError]=\"showError()\"\n [errorMessage]=\"errorMessage()\"\n [disabled]=\"disabled()\"\n [hint]=\"hint()\"\n [inputId]=\"groupLabelId()\">\n\n <div\n input\n role=\"radiogroup\"\n [class]=\"orientationClasses()\"\n [attr.aria-labelledby]=\"label() ? groupLabelId() : null\"\n [attr.aria-invalid]=\"showError() || null\"\n (focusout)=\"onGroupFocusOut($event)\">\n @if (hasOptions()) {\n @for (option of options(); track option.value) {\n <lib-signal-radio\n [optionValue]=\"option.value\"\n [label]=\"option.label\"\n [hint]=\"option.hint ?? ''\"\n [size]=\"size()\"\n [disabled]=\"disabled() || !!option.disabled\" />\n }\n } @else {\n <ng-content />\n }\n </div>\n\n</lib-base-signal-input>\n" }]
9789
- }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], hint: [{ type: i0.Input, args: [{ isSignal: true, alias: "hint", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], groupName: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupName", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }] } });
9802
+ }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], hint: [{ type: i0.Input, args: [{ isSignal: true, alias: "hint", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], groupName: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupName", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] } });
9790
9803
 
9791
9804
  let nextSwitchId = 0;
9792
9805
  class SignalSwitch extends BaseFormControl {
@@ -10168,7 +10181,7 @@ class SignalDropdown extends BaseSignalTextInputControl {
10168
10181
  // Behavior
10169
10182
  showClearButton = input(false, /* @ts-ignore */
10170
10183
  ...(ngDevMode ? [{ debugName: "showClearButton" }] : /* istanbul ignore next */ []));
10171
- debounceValueChange = input(true, /* @ts-ignore */
10184
+ debounceValueChange = input(false, /* @ts-ignore */
10172
10185
  ...(ngDevMode ? [{ debugName: "debounceValueChange" }] : /* istanbul ignore next */ []));
10173
10186
  debounceMs = input(600, /* @ts-ignore */
10174
10187
  ...(ngDevMode ? [{ debugName: "debounceMs" }] : /* istanbul ignore next */ []));
@@ -10177,6 +10190,7 @@ class SignalDropdown extends BaseSignalTextInputControl {
10177
10190
  mobilePresentation = input('modal', /* @ts-ignore */
10178
10191
  ...(ngDevMode ? [{ debugName: "mobilePresentation" }] : /* istanbul ignore next */ []));
10179
10192
  // Outputs
10193
+ // Outputs
10180
10194
  valueChange = output();
10181
10195
  postfixIconClick = output();
10182
10196
  instanceId = ++nextDropdownId;
@@ -10409,10 +10423,7 @@ class SignalDropdown extends BaseSignalTextInputControl {
10409
10423
  ? this.overlayService.openBottomSheet(SignalDropdownPanelOverlayComponent, openOptions)
10410
10424
  : presentation === 'fullScreen'
10411
10425
  ? this.overlayService.openFullScreen(SignalDropdownPanelOverlayComponent, openOptions)
10412
- : this.overlayService.openModal(SignalDropdownPanelOverlayComponent, {
10413
- ...openOptions,
10414
- maxHeightClass: 'max-h-[80vh]',
10415
- });
10426
+ : this.overlayService.openModal(SignalDropdownPanelOverlayComponent, openOptions);
10416
10427
  this.mobileDialogRef = dialogRef;
10417
10428
  this.isOpen.set(true);
10418
10429
  this.mobileDialogSub?.unsubscribe();
@@ -10737,7 +10748,7 @@ class SignalMultiSelectDropdown extends BaseSignalTextInputControl {
10737
10748
  // Behavior
10738
10749
  showClearButton = input(false, /* @ts-ignore */
10739
10750
  ...(ngDevMode ? [{ debugName: "showClearButton" }] : /* istanbul ignore next */ []));
10740
- debounceValueChange = input(true, /* @ts-ignore */
10751
+ debounceValueChange = input(false, /* @ts-ignore */
10741
10752
  ...(ngDevMode ? [{ debugName: "debounceValueChange" }] : /* istanbul ignore next */ []));
10742
10753
  debounceMs = input(600, /* @ts-ignore */
10743
10754
  ...(ngDevMode ? [{ debugName: "debounceMs" }] : /* istanbul ignore next */ []));
@@ -10748,6 +10759,7 @@ class SignalMultiSelectDropdown extends BaseSignalTextInputControl {
10748
10759
  mobileOkLabel = input('OK', /* @ts-ignore */
10749
10760
  ...(ngDevMode ? [{ debugName: "mobileOkLabel" }] : /* istanbul ignore next */ []));
10750
10761
  // Outputs
10762
+ // Outputs
10751
10763
  valueChange = output();
10752
10764
  postfixIconClick = output();
10753
10765
  instanceId = ++nextMultiSelectDropdownId;
@@ -11013,10 +11025,7 @@ class SignalMultiSelectDropdown extends BaseSignalTextInputControl {
11013
11025
  ? this.overlayService.openBottomSheet(SignalMultiSelectDropdownPanelOverlayComponent, openOptions)
11014
11026
  : presentation === 'fullScreen'
11015
11027
  ? this.overlayService.openFullScreen(SignalMultiSelectDropdownPanelOverlayComponent, openOptions)
11016
- : this.overlayService.openModal(SignalMultiSelectDropdownPanelOverlayComponent, {
11017
- ...openOptions,
11018
- maxHeightClass: 'max-h-[80vh]',
11019
- });
11028
+ : this.overlayService.openModal(SignalMultiSelectDropdownPanelOverlayComponent, openOptions);
11020
11029
  this.mobileDialogRef = dialogRef;
11021
11030
  this.isOpen.set(true);
11022
11031
  this.mobileDialogSub?.unsubscribe();
@@ -11259,10 +11268,11 @@ class SignalDatePicker extends BaseFormControl {
11259
11268
  ...(ngDevMode ? [{ debugName: "disabledDays" }] : /* istanbul ignore next */ []));
11260
11269
  disabledDates = input([], /* @ts-ignore */
11261
11270
  ...(ngDevMode ? [{ debugName: "disabledDates" }] : /* istanbul ignore next */ []));
11262
- debounceValueChange = input(true, /* @ts-ignore */
11271
+ debounceValueChange = input(false, /* @ts-ignore */
11263
11272
  ...(ngDevMode ? [{ debugName: "debounceValueChange" }] : /* istanbul ignore next */ []));
11264
11273
  debounceMs = input(600, /* @ts-ignore */
11265
11274
  ...(ngDevMode ? [{ debugName: "debounceMs" }] : /* istanbul ignore next */ []));
11275
+ // Outputs
11266
11276
  valueChange = output();
11267
11277
  dateSelected = output();
11268
11278
  uiMode = signal('date', /* @ts-ignore */
@@ -11719,7 +11729,7 @@ class SignalDateField extends BaseSignalTextInputControl {
11719
11729
  ...(ngDevMode ? [undefined, { debugName: "fieldName" }] : /* istanbul ignore next */ []));
11720
11730
  autocomplete = input(/* @ts-ignore */
11721
11731
  ...(ngDevMode ? [undefined, { debugName: "autocomplete" }] : /* istanbul ignore next */ []));
11722
- debounceValueChange = input(true, /* @ts-ignore */
11732
+ debounceValueChange = input(false, /* @ts-ignore */
11723
11733
  ...(ngDevMode ? [{ debugName: "debounceValueChange" }] : /* istanbul ignore next */ []));
11724
11734
  debounceMs = input(600, /* @ts-ignore */
11725
11735
  ...(ngDevMode ? [{ debugName: "debounceMs" }] : /* istanbul ignore next */ []));
@@ -11741,6 +11751,7 @@ class SignalDateField extends BaseSignalTextInputControl {
11741
11751
  ...(ngDevMode ? [{ debugName: "disabledDays" }] : /* istanbul ignore next */ []));
11742
11752
  disabledDates = input([], /* @ts-ignore */
11743
11753
  ...(ngDevMode ? [{ debugName: "disabledDates" }] : /* istanbul ignore next */ []));
11754
+ // Outputs
11744
11755
  valueChange = output();
11745
11756
  dateSelected = output();
11746
11757
  clear = output();
@@ -12103,10 +12114,11 @@ class SignalDateRangePicker extends BaseFormControl {
12103
12114
  ...(ngDevMode ? [{ debugName: "disabledDays" }] : /* istanbul ignore next */ []));
12104
12115
  disabledDates = input([], /* @ts-ignore */
12105
12116
  ...(ngDevMode ? [{ debugName: "disabledDates" }] : /* istanbul ignore next */ []));
12106
- debounceValueChange = input(true, /* @ts-ignore */
12117
+ debounceValueChange = input(false, /* @ts-ignore */
12107
12118
  ...(ngDevMode ? [{ debugName: "debounceValueChange" }] : /* istanbul ignore next */ []));
12108
12119
  debounceMs = input(600, /* @ts-ignore */
12109
12120
  ...(ngDevMode ? [{ debugName: "debounceMs" }] : /* istanbul ignore next */ []));
12121
+ // Outputs
12110
12122
  valueChange = output();
12111
12123
  dateRangeSelected = output();
12112
12124
  uiMode = signal('date', /* @ts-ignore */
@@ -12610,7 +12622,7 @@ class SignalDateRangeField extends BaseSignalTextInputControl {
12610
12622
  ...(ngDevMode ? [undefined, { debugName: "fieldName" }] : /* istanbul ignore next */ []));
12611
12623
  autocomplete = input(/* @ts-ignore */
12612
12624
  ...(ngDevMode ? [undefined, { debugName: "autocomplete" }] : /* istanbul ignore next */ []));
12613
- debounceValueChange = input(true, /* @ts-ignore */
12625
+ debounceValueChange = input(false, /* @ts-ignore */
12614
12626
  ...(ngDevMode ? [{ debugName: "debounceValueChange" }] : /* istanbul ignore next */ []));
12615
12627
  debounceMs = input(600, /* @ts-ignore */
12616
12628
  ...(ngDevMode ? [{ debugName: "debounceMs" }] : /* istanbul ignore next */ []));
@@ -12632,6 +12644,7 @@ class SignalDateRangeField extends BaseSignalTextInputControl {
12632
12644
  ...(ngDevMode ? [{ debugName: "disabledDays" }] : /* istanbul ignore next */ []));
12633
12645
  disabledDates = input([], /* @ts-ignore */
12634
12646
  ...(ngDevMode ? [{ debugName: "disabledDates" }] : /* istanbul ignore next */ []));
12647
+ // Outputs
12635
12648
  valueChange = output();
12636
12649
  dateRangeSelected = output();
12637
12650
  clear = output();
@@ -13077,10 +13090,11 @@ class SignalTimePicker extends BaseFormControl {
13077
13090
  ...(ngDevMode ? [{ debugName: "timeFormat" }] : /* istanbul ignore next */ []));
13078
13091
  embedded = input(false, /* @ts-ignore */
13079
13092
  ...(ngDevMode ? [{ debugName: "embedded" }] : /* istanbul ignore next */ []));
13080
- debounceValueChange = input(true, /* @ts-ignore */
13093
+ debounceValueChange = input(false, /* @ts-ignore */
13081
13094
  ...(ngDevMode ? [{ debugName: "debounceValueChange" }] : /* istanbul ignore next */ []));
13082
13095
  debounceMs = input(600, /* @ts-ignore */
13083
13096
  ...(ngDevMode ? [{ debugName: "debounceMs" }] : /* istanbul ignore next */ []));
13097
+ // Outputs
13084
13098
  valueChange = output();
13085
13099
  timeSelected = output();
13086
13100
  is24HourFormat = signal(false, /* @ts-ignore */
@@ -13387,7 +13401,7 @@ class SignalTimeField extends BaseSignalTextInputControl {
13387
13401
  ...(ngDevMode ? [undefined, { debugName: "fieldName" }] : /* istanbul ignore next */ []));
13388
13402
  autocomplete = input(/* @ts-ignore */
13389
13403
  ...(ngDevMode ? [undefined, { debugName: "autocomplete" }] : /* istanbul ignore next */ []));
13390
- debounceValueChange = input(true, /* @ts-ignore */
13404
+ debounceValueChange = input(false, /* @ts-ignore */
13391
13405
  ...(ngDevMode ? [{ debugName: "debounceValueChange" }] : /* istanbul ignore next */ []));
13392
13406
  debounceMs = input(600, /* @ts-ignore */
13393
13407
  ...(ngDevMode ? [{ debugName: "debounceMs" }] : /* istanbul ignore next */ []));
@@ -13397,6 +13411,7 @@ class SignalTimeField extends BaseSignalTextInputControl {
13397
13411
  ...(ngDevMode ? [{ debugName: "mobilePresentation" }] : /* istanbul ignore next */ []));
13398
13412
  okLabel = input('OK', /* @ts-ignore */
13399
13413
  ...(ngDevMode ? [{ debugName: "okLabel" }] : /* istanbul ignore next */ []));
13414
+ // Outputs
13400
13415
  valueChange = output();
13401
13416
  timeSelected = output();
13402
13417
  clear = output();
@@ -13735,6 +13750,7 @@ class SignalOtpField extends BaseFormControl {
13735
13750
  ...(ngDevMode ? [{ debugName: "obscureChar" }] : /* istanbul ignore next */ []));
13736
13751
  id = input(/* @ts-ignore */
13737
13752
  ...(ngDevMode ? [undefined, { debugName: "id" }] : /* istanbul ignore next */ []));
13753
+ valueChange = output();
13738
13754
  completed = output();
13739
13755
  digitInputs;
13740
13756
  destroyRef = inject(DestroyRef);
@@ -13953,6 +13969,7 @@ class SignalOtpField extends BaseFormControl {
13953
13969
  commitDigits(digits) {
13954
13970
  const value = digitsToValue(digits);
13955
13971
  this.setValue(value);
13972
+ this.valueChange.emit(value);
13956
13973
  if (value.length === this.length() && digits.every((digit) => digit !== '')) {
13957
13974
  this.completed.emit(value);
13958
13975
  }
@@ -14028,12 +14045,12 @@ class SignalOtpField extends BaseFormControl {
14028
14045
  }
14029
14046
  }
14030
14047
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: SignalOtpField, deps: [], target: i0.ɵɵFactoryTarget.Component });
14031
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: SignalOtpField, isStandalone: true, selector: "lib-signal-otp-field", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, length: { classPropertyName: "length", publicName: "length", isSignal: true, isRequired: false, transformFunction: null }, maskMode: { classPropertyName: "maskMode", publicName: "maskMode", isSignal: true, isRequired: false, transformFunction: null }, maskDelayMs: { classPropertyName: "maskDelayMs", publicName: "maskDelayMs", isSignal: true, isRequired: false, transformFunction: null }, obscureChar: { classPropertyName: "obscureChar", publicName: "obscureChar", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { completed: "completed" }, viewQueries: [{ propertyName: "digitInputs", predicate: ["digitInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<lib-base-signal-input\n [label]=\"label()\"\n [showExternalLabel]=\"!!label()\"\n [showRequired]=\"showRequiredIndicator()\"\n [showError]=\"showError()\"\n [errorMessage]=\"errorMessage()\"\n [disabled]=\"disabled()\"\n [hint]=\"hint()\"\n [inputId]=\"inputId()\">\n\n <div\n input\n role=\"group\"\n class=\"flex flex-wrap gap-2\"\n [attr.aria-label]=\"label() || 'One-time password'\"\n [attr.aria-required]=\"showRequiredIndicator() || null\"\n [attr.aria-invalid]=\"showError() || null\">\n\n @for (index of digitIndices(); track index) {\n <div\n class=\"group\"\n [class]=\"cellClasses(index)\"\n (click)=\"onCellClick(index)\">\n @if (shouldShowOverlay(index)) {\n <span\n class=\"pointer-events-none absolute inset-0 flex items-center justify-center text-lg font-semibold text-role-body\"\n aria-hidden=\"true\">\n {{ displayChar(index) }}\n </span>\n }\n\n <input\n #digitInput\n class=\"relative z-10\"\n [class]=\"inputClasses(index)\"\n [type]=\"maskMode() === 'alwaysObscure' ? 'password' : 'text'\"\n inputmode=\"numeric\"\n pattern=\"[0-9]*\"\n maxlength=\"1\"\n autocomplete=\"one-time-code\"\n [id]=\"index === 0 ? inputId() : null\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [attr.aria-readonly]=\"readonly() || null\"\n [attr.aria-label]=\"'Digit ' + (index + 1) + ' of ' + length()\"\n (input)=\"onInput($event, index)\"\n (keydown)=\"onKeyDown($event, index)\"\n (paste)=\"onPaste($event, index)\"\n (focus)=\"onCellFocus(index)\"\n (blur)=\"onCellBlur()\" />\n </div>\n }\n </div>\n</lib-base-signal-input>\n", dependencies: [{ kind: "component", type: BaseSignalInput, selector: "lib-base-signal-input", inputs: ["label", "showExternalLabel", "showRequired", "showError", "errorMessage", "disabled", "hint", "inputId"] }] });
14048
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: SignalOtpField, isStandalone: true, selector: "lib-signal-otp-field", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, length: { classPropertyName: "length", publicName: "length", isSignal: true, isRequired: false, transformFunction: null }, maskMode: { classPropertyName: "maskMode", publicName: "maskMode", isSignal: true, isRequired: false, transformFunction: null }, maskDelayMs: { classPropertyName: "maskDelayMs", publicName: "maskDelayMs", isSignal: true, isRequired: false, transformFunction: null }, obscureChar: { classPropertyName: "obscureChar", publicName: "obscureChar", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", completed: "completed" }, viewQueries: [{ propertyName: "digitInputs", predicate: ["digitInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<lib-base-signal-input\n [label]=\"label()\"\n [showExternalLabel]=\"!!label()\"\n [showRequired]=\"showRequiredIndicator()\"\n [showError]=\"showError()\"\n [errorMessage]=\"errorMessage()\"\n [disabled]=\"disabled()\"\n [hint]=\"hint()\"\n [inputId]=\"inputId()\">\n\n <div\n input\n role=\"group\"\n class=\"flex flex-wrap gap-2\"\n [attr.aria-label]=\"label() || 'One-time password'\"\n [attr.aria-required]=\"showRequiredIndicator() || null\"\n [attr.aria-invalid]=\"showError() || null\">\n\n @for (index of digitIndices(); track index) {\n <div\n class=\"group\"\n [class]=\"cellClasses(index)\"\n (click)=\"onCellClick(index)\">\n @if (shouldShowOverlay(index)) {\n <span\n class=\"pointer-events-none absolute inset-0 flex items-center justify-center text-lg font-semibold text-role-body\"\n aria-hidden=\"true\">\n {{ displayChar(index) }}\n </span>\n }\n\n <input\n #digitInput\n class=\"relative z-10\"\n [class]=\"inputClasses(index)\"\n [type]=\"maskMode() === 'alwaysObscure' ? 'password' : 'text'\"\n inputmode=\"numeric\"\n pattern=\"[0-9]*\"\n maxlength=\"1\"\n autocomplete=\"one-time-code\"\n [id]=\"index === 0 ? inputId() : null\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [attr.aria-readonly]=\"readonly() || null\"\n [attr.aria-label]=\"'Digit ' + (index + 1) + ' of ' + length()\"\n (input)=\"onInput($event, index)\"\n (keydown)=\"onKeyDown($event, index)\"\n (paste)=\"onPaste($event, index)\"\n (focus)=\"onCellFocus(index)\"\n (blur)=\"onCellBlur()\" />\n </div>\n }\n </div>\n</lib-base-signal-input>\n", dependencies: [{ kind: "component", type: BaseSignalInput, selector: "lib-base-signal-input", inputs: ["label", "showExternalLabel", "showRequired", "showError", "errorMessage", "disabled", "hint", "inputId"] }] });
14032
14049
  }
14033
14050
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: SignalOtpField, decorators: [{
14034
14051
  type: Component,
14035
14052
  args: [{ selector: 'lib-signal-otp-field', imports: [BaseSignalInput], template: "<lib-base-signal-input\n [label]=\"label()\"\n [showExternalLabel]=\"!!label()\"\n [showRequired]=\"showRequiredIndicator()\"\n [showError]=\"showError()\"\n [errorMessage]=\"errorMessage()\"\n [disabled]=\"disabled()\"\n [hint]=\"hint()\"\n [inputId]=\"inputId()\">\n\n <div\n input\n role=\"group\"\n class=\"flex flex-wrap gap-2\"\n [attr.aria-label]=\"label() || 'One-time password'\"\n [attr.aria-required]=\"showRequiredIndicator() || null\"\n [attr.aria-invalid]=\"showError() || null\">\n\n @for (index of digitIndices(); track index) {\n <div\n class=\"group\"\n [class]=\"cellClasses(index)\"\n (click)=\"onCellClick(index)\">\n @if (shouldShowOverlay(index)) {\n <span\n class=\"pointer-events-none absolute inset-0 flex items-center justify-center text-lg font-semibold text-role-body\"\n aria-hidden=\"true\">\n {{ displayChar(index) }}\n </span>\n }\n\n <input\n #digitInput\n class=\"relative z-10\"\n [class]=\"inputClasses(index)\"\n [type]=\"maskMode() === 'alwaysObscure' ? 'password' : 'text'\"\n inputmode=\"numeric\"\n pattern=\"[0-9]*\"\n maxlength=\"1\"\n autocomplete=\"one-time-code\"\n [id]=\"index === 0 ? inputId() : null\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [attr.aria-readonly]=\"readonly() || null\"\n [attr.aria-label]=\"'Digit ' + (index + 1) + ' of ' + length()\"\n (input)=\"onInput($event, index)\"\n (keydown)=\"onKeyDown($event, index)\"\n (paste)=\"onPaste($event, index)\"\n (focus)=\"onCellFocus(index)\"\n (blur)=\"onCellBlur()\" />\n </div>\n }\n </div>\n</lib-base-signal-input>\n" }]
14036
- }], ctorParameters: () => [], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], hint: [{ type: i0.Input, args: [{ isSignal: true, alias: "hint", required: false }] }], length: [{ type: i0.Input, args: [{ isSignal: true, alias: "length", required: false }] }], maskMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "maskMode", required: false }] }], maskDelayMs: [{ type: i0.Input, args: [{ isSignal: true, alias: "maskDelayMs", required: false }] }], obscureChar: [{ type: i0.Input, args: [{ isSignal: true, alias: "obscureChar", required: false }] }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], completed: [{ type: i0.Output, args: ["completed"] }], digitInputs: [{
14053
+ }], ctorParameters: () => [], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], hint: [{ type: i0.Input, args: [{ isSignal: true, alias: "hint", required: false }] }], length: [{ type: i0.Input, args: [{ isSignal: true, alias: "length", required: false }] }], maskMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "maskMode", required: false }] }], maskDelayMs: [{ type: i0.Input, args: [{ isSignal: true, alias: "maskDelayMs", required: false }] }], obscureChar: [{ type: i0.Input, args: [{ isSignal: true, alias: "obscureChar", required: false }] }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], completed: [{ type: i0.Output, args: ["completed"] }], digitInputs: [{
14037
14054
  type: ViewChildren,
14038
14055
  args: ['digitInput']
14039
14056
  }] } });