@vallift/ngl 22.0.34 → 22.0.36

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.
@@ -26,6 +26,10 @@ const DEFAULT_NGL_INPUT_CONFIG = {
26
26
  const DEFAULT_NGL_BUTTON_CONFIG = {
27
27
  size: 'md',
28
28
  };
29
+ const DEFAULT_NGL_OVERLAY_CONFIG = {
30
+ showHeaderBorder: true,
31
+ showActionsBorder: true,
32
+ };
29
33
  const DEFAULT_NGL_LIST_RESPONSE = {
30
34
  data: 'data',
31
35
  totalCount: 'totalCount',
@@ -873,7 +877,8 @@ class OverlayService {
873
877
  this.renderer = this.rendererFactory.createRenderer(null, null);
874
878
  }
875
879
  basePanelClass = ['bg-white', 'shadow-2'];
876
- modalMaxHeightClass = 'max-h-[80vh]';
880
+ /** Default max height leaves ~1rem gap above and below the viewport. */
881
+ modalMaxHeight = 'calc(100dvh - 2rem)';
877
882
  openNearElement(component, triggerElement, options) {
878
883
  const { positionPreference = 'bottomLeft', disableClose = false, data, scrollStrategy = 'block', isMobileResponsive = false } = options ?? {};
879
884
  const isMobile = this.breakpointObserver.isMatched([Breakpoints.XSmall, Breakpoints.Small]);
@@ -967,7 +972,7 @@ class OverlayService {
967
972
  return dialogRef;
968
973
  }
969
974
  openModal(component, options) {
970
- const { disableClose = false, maxHeightClass, data, fitContent = false, panelClass } = options ?? {};
975
+ const { disableClose = false, maxHeight = this.modalMaxHeight, data, fitContent = false, panelClass, } = options ?? {};
971
976
  const positionStrategy = this.overlay
972
977
  .position()
973
978
  .global()
@@ -978,8 +983,8 @@ class OverlayService {
978
983
  : ['sm:w-4/5', 'md:w-3/5', 'lg:w-2/5'];
979
984
  const defaultPanelClass = [
980
985
  ...this.basePanelClass,
981
- maxHeightClass ?? this.modalMaxHeightClass,
982
986
  'rounded-3xl',
987
+ 'overflow-hidden',
983
988
  ...widthClasses,
984
989
  ];
985
990
  let dialogRef = this.dialog.open(component, {
@@ -987,15 +992,16 @@ class OverlayService {
987
992
  disableClose: disableClose,
988
993
  backdropClass: ['bg-black/20'],
989
994
  panelClass: panelClass ?? defaultPanelClass,
995
+ maxHeight,
990
996
  data: data
991
997
  });
992
- this.setOverlayMaxHeight(maxHeightClass ?? this.modalMaxHeightClass);
998
+ this.setOverlayMaxHeight(maxHeight);
993
999
  return dialogRef;
994
1000
  }
995
- setOverlayMaxHeight(maxHeightClass) {
1001
+ setOverlayMaxHeight(maxHeight) {
996
1002
  const overlayElement = document.querySelector('.base-overlay');
997
1003
  if (overlayElement) {
998
- this.renderer.addClass(overlayElement, maxHeightClass);
1004
+ this.renderer.setStyle(overlayElement, 'max-height', maxHeight);
999
1005
  }
1000
1006
  }
1001
1007
  openBackdrop(component, options) {
@@ -3961,8 +3967,9 @@ class BaseFormControl {
3961
3967
  ...(ngDevMode ? [{ debugName: "invalid" }] : /* istanbul ignore next */ []));
3962
3968
  required = input(false, /* @ts-ignore */
3963
3969
  ...(ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []));
3964
- touched = model(false, /* @ts-ignore */
3970
+ touched = input(false, /* @ts-ignore */
3965
3971
  ...(ngDevMode ? [{ debugName: "touched" }] : /* istanbul ignore next */ []));
3972
+ touch = output();
3966
3973
  isFocused = model(false, /* @ts-ignore */
3967
3974
  ...(ngDevMode ? [{ debugName: "isFocused" }] : /* istanbul ignore next */ []));
3968
3975
  showRequiredIndicator = computed(() => this.required(), /* @ts-ignore */
@@ -3983,15 +3990,15 @@ class BaseFormControl {
3983
3990
  onBlur() {
3984
3991
  this.isFocused.set(false);
3985
3992
  if (!this.disabled()) {
3986
- this.touched.set(true);
3993
+ this.touch.emit();
3987
3994
  }
3988
3995
  }
3989
3996
  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 });
3997
+ 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
3998
  }
3992
3999
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: BaseFormControl, decorators: [{
3993
4000
  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"] }] } });
4001
+ }], 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
4002
 
3996
4003
  class BaseSignalTextInputControl extends BaseFormControl {
3997
4004
  nglConfig = inject(NGL_CONFIG, { optional: true });
@@ -4048,7 +4055,7 @@ class SignalTextField extends BaseSignalTextInputControl {
4048
4055
  // Behavior
4049
4056
  showClearButton = input(false, /* @ts-ignore */
4050
4057
  ...(ngDevMode ? [{ debugName: "showClearButton" }] : /* istanbul ignore next */ []));
4051
- debounceValueChange = input(true, /* @ts-ignore */
4058
+ debounceValueChange = input(false, /* @ts-ignore */
4052
4059
  ...(ngDevMode ? [{ debugName: "debounceValueChange" }] : /* istanbul ignore next */ []));
4053
4060
  debounceMs = input(600, /* @ts-ignore */
4054
4061
  ...(ngDevMode ? [{ debugName: "debounceMs" }] : /* istanbul ignore next */ []));
@@ -5080,13 +5087,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImpor
5080
5087
  }], propDecorators: { placeholderImage: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholderImage", required: false }] }], imageUrl: [{ type: i0.Input, args: [{ isSignal: true, alias: "imageUrl", required: false }] }] } });
5081
5088
 
5082
5089
  class BaseOverlayComponent {
5090
+ nglConfig = inject(NGL_CONFIG, { optional: true });
5083
5091
  container;
5084
5092
  actionsDiv;
5085
5093
  actionsContainerDiv;
5086
5094
  title = input.required(/* @ts-ignore */
5087
5095
  ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
5096
+ description = input('', /* @ts-ignore */
5097
+ ...(ngDevMode ? [{ debugName: "description" }] : /* istanbul ignore next */ []));
5088
5098
  showTitle = input(true, /* @ts-ignore */
5089
5099
  ...(ngDevMode ? [{ debugName: "showTitle" }] : /* istanbul ignore next */ []));
5100
+ showHeaderBorder = input(this.nglConfig?.overlay?.showHeaderBorder ?? DEFAULT_NGL_OVERLAY_CONFIG.showHeaderBorder, /* @ts-ignore */
5101
+ ...(ngDevMode ? [{ debugName: "showHeaderBorder" }] : /* istanbul ignore next */ []));
5102
+ showActionsBorder = input(this.nglConfig?.overlay?.showActionsBorder ?? DEFAULT_NGL_OVERLAY_CONFIG.showActionsBorder, /* @ts-ignore */
5103
+ ...(ngDevMode ? [{ debugName: "showActionsBorder" }] : /* istanbul ignore next */ []));
5090
5104
  showBackButton = input(false, /* @ts-ignore */
5091
5105
  ...(ngDevMode ? [{ debugName: "showBackButton" }] : /* istanbul ignore next */ []));
5092
5106
  enableDefaultLayout = input(true, /* @ts-ignore */
@@ -5111,13 +5125,13 @@ class BaseOverlayComponent {
5111
5125
  this.dialogRef.close();
5112
5126
  }
5113
5127
  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"] }] });
5128
+ 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
5129
  }
5116
5130
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: BaseOverlayComponent, decorators: [{
5117
5131
  type: Component,
5118
5132
  args: [{ selector: 'app-base-overlay', imports: [
5119
5133
  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" }]
5134
+ ], 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
5135
  }], propDecorators: { container: [{
5122
5136
  type: ViewChild,
5123
5137
  args: ['container', { read: ViewContainerRef, static: true }]
@@ -5127,7 +5141,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImpor
5127
5141
  }], actionsContainerDiv: [{
5128
5142
  type: ViewChild,
5129
5143
  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"] }] } });
5144
+ }], 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
5145
 
5132
5146
  class OverlayWizardUtils {
5133
5147
  uiState = signal([], /* @ts-ignore */
@@ -8391,10 +8405,11 @@ class SignalNumberField extends BaseSignalTextInputControl {
8391
8405
  ...(ngDevMode ? [{ debugName: "hideSpinButtons" }] : /* istanbul ignore next */ []));
8392
8406
  showClearButton = input(false, /* @ts-ignore */
8393
8407
  ...(ngDevMode ? [{ debugName: "showClearButton" }] : /* istanbul ignore next */ []));
8394
- debounceValueChange = input(true, /* @ts-ignore */
8408
+ debounceValueChange = input(false, /* @ts-ignore */
8395
8409
  ...(ngDevMode ? [{ debugName: "debounceValueChange" }] : /* istanbul ignore next */ []));
8396
8410
  debounceMs = input(600, /* @ts-ignore */
8397
8411
  ...(ngDevMode ? [{ debugName: "debounceMs" }] : /* istanbul ignore next */ []));
8412
+ // Outputs
8398
8413
  valueChange = output();
8399
8414
  enter = output();
8400
8415
  clear = output();
@@ -9077,10 +9092,11 @@ class SignalPhoneNumberField extends BaseSignalTextInputControl {
9077
9092
  ...(ngDevMode ? [{ debugName: "autocomplete" }] : /* istanbul ignore next */ []));
9078
9093
  showClearButton = input(false, /* @ts-ignore */
9079
9094
  ...(ngDevMode ? [{ debugName: "showClearButton" }] : /* istanbul ignore next */ []));
9080
- debounceValueChange = input(true, /* @ts-ignore */
9095
+ debounceValueChange = input(false, /* @ts-ignore */
9081
9096
  ...(ngDevMode ? [{ debugName: "debounceValueChange" }] : /* istanbul ignore next */ []));
9082
9097
  debounceMs = input(600, /* @ts-ignore */
9083
9098
  ...(ngDevMode ? [{ debugName: "debounceMs" }] : /* istanbul ignore next */ []));
9099
+ // Outputs
9084
9100
  valueChange = output();
9085
9101
  enter = output();
9086
9102
  clear = output();
@@ -9381,7 +9397,7 @@ class SignalTextarea extends BaseSignalTextInputControl {
9381
9397
  // Behavior
9382
9398
  showClearButton = input(false, /* @ts-ignore */
9383
9399
  ...(ngDevMode ? [{ debugName: "showClearButton" }] : /* istanbul ignore next */ []));
9384
- debounceValueChange = input(true, /* @ts-ignore */
9400
+ debounceValueChange = input(false, /* @ts-ignore */
9385
9401
  ...(ngDevMode ? [{ debugName: "debounceValueChange" }] : /* istanbul ignore next */ []));
9386
9402
  debounceMs = input(600, /* @ts-ignore */
9387
9403
  ...(ngDevMode ? [{ debugName: "debounceMs" }] : /* istanbul ignore next */ []));
@@ -9745,6 +9761,7 @@ class SignalRadioGroup extends BaseFormControl {
9745
9761
  ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
9746
9762
  options = input([], /* @ts-ignore */
9747
9763
  ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
9764
+ valueChange = output();
9748
9765
  instanceId = ++nextGroupId;
9749
9766
  groupLabelId = computed(() => `signal-radio-group-label-${this.instanceId}`, /* @ts-ignore */
9750
9767
  ...(ngDevMode ? [{ debugName: "groupLabelId" }] : /* istanbul ignore next */ []));
@@ -9758,10 +9775,11 @@ class SignalRadioGroup extends BaseFormControl {
9758
9775
  ...(ngDevMode ? [{ debugName: "hasOptions" }] : /* istanbul ignore next */ []));
9759
9776
  showGroupError = this.showError;
9760
9777
  setValue(value) {
9761
- if (this.readonly()) {
9778
+ if (this.disabled() || this.readonly()) {
9762
9779
  return;
9763
9780
  }
9764
9781
  super.setValue(value);
9782
+ this.valueChange.emit(value);
9765
9783
  }
9766
9784
  markOptionFocus() {
9767
9785
  this.isFocused.set(true);
@@ -9777,16 +9795,16 @@ class SignalRadioGroup extends BaseFormControl {
9777
9795
  }
9778
9796
  this.isFocused.set(false);
9779
9797
  if (!this.disabled()) {
9780
- this.touched.set(true);
9798
+ this.touch.emit();
9781
9799
  }
9782
9800
  }
9783
9801
  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"] }] });
9802
+ 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
9803
  }
9786
9804
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: SignalRadioGroup, decorators: [{
9787
9805
  type: Component,
9788
9806
  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 }] }] } });
9807
+ }], 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
9808
 
9791
9809
  let nextSwitchId = 0;
9792
9810
  class SignalSwitch extends BaseFormControl {
@@ -10168,7 +10186,7 @@ class SignalDropdown extends BaseSignalTextInputControl {
10168
10186
  // Behavior
10169
10187
  showClearButton = input(false, /* @ts-ignore */
10170
10188
  ...(ngDevMode ? [{ debugName: "showClearButton" }] : /* istanbul ignore next */ []));
10171
- debounceValueChange = input(true, /* @ts-ignore */
10189
+ debounceValueChange = input(false, /* @ts-ignore */
10172
10190
  ...(ngDevMode ? [{ debugName: "debounceValueChange" }] : /* istanbul ignore next */ []));
10173
10191
  debounceMs = input(600, /* @ts-ignore */
10174
10192
  ...(ngDevMode ? [{ debugName: "debounceMs" }] : /* istanbul ignore next */ []));
@@ -10177,6 +10195,7 @@ class SignalDropdown extends BaseSignalTextInputControl {
10177
10195
  mobilePresentation = input('modal', /* @ts-ignore */
10178
10196
  ...(ngDevMode ? [{ debugName: "mobilePresentation" }] : /* istanbul ignore next */ []));
10179
10197
  // Outputs
10198
+ // Outputs
10180
10199
  valueChange = output();
10181
10200
  postfixIconClick = output();
10182
10201
  instanceId = ++nextDropdownId;
@@ -10409,10 +10428,7 @@ class SignalDropdown extends BaseSignalTextInputControl {
10409
10428
  ? this.overlayService.openBottomSheet(SignalDropdownPanelOverlayComponent, openOptions)
10410
10429
  : presentation === 'fullScreen'
10411
10430
  ? this.overlayService.openFullScreen(SignalDropdownPanelOverlayComponent, openOptions)
10412
- : this.overlayService.openModal(SignalDropdownPanelOverlayComponent, {
10413
- ...openOptions,
10414
- maxHeightClass: 'max-h-[80vh]',
10415
- });
10431
+ : this.overlayService.openModal(SignalDropdownPanelOverlayComponent, openOptions);
10416
10432
  this.mobileDialogRef = dialogRef;
10417
10433
  this.isOpen.set(true);
10418
10434
  this.mobileDialogSub?.unsubscribe();
@@ -10737,7 +10753,7 @@ class SignalMultiSelectDropdown extends BaseSignalTextInputControl {
10737
10753
  // Behavior
10738
10754
  showClearButton = input(false, /* @ts-ignore */
10739
10755
  ...(ngDevMode ? [{ debugName: "showClearButton" }] : /* istanbul ignore next */ []));
10740
- debounceValueChange = input(true, /* @ts-ignore */
10756
+ debounceValueChange = input(false, /* @ts-ignore */
10741
10757
  ...(ngDevMode ? [{ debugName: "debounceValueChange" }] : /* istanbul ignore next */ []));
10742
10758
  debounceMs = input(600, /* @ts-ignore */
10743
10759
  ...(ngDevMode ? [{ debugName: "debounceMs" }] : /* istanbul ignore next */ []));
@@ -10748,6 +10764,7 @@ class SignalMultiSelectDropdown extends BaseSignalTextInputControl {
10748
10764
  mobileOkLabel = input('OK', /* @ts-ignore */
10749
10765
  ...(ngDevMode ? [{ debugName: "mobileOkLabel" }] : /* istanbul ignore next */ []));
10750
10766
  // Outputs
10767
+ // Outputs
10751
10768
  valueChange = output();
10752
10769
  postfixIconClick = output();
10753
10770
  instanceId = ++nextMultiSelectDropdownId;
@@ -11013,10 +11030,7 @@ class SignalMultiSelectDropdown extends BaseSignalTextInputControl {
11013
11030
  ? this.overlayService.openBottomSheet(SignalMultiSelectDropdownPanelOverlayComponent, openOptions)
11014
11031
  : presentation === 'fullScreen'
11015
11032
  ? this.overlayService.openFullScreen(SignalMultiSelectDropdownPanelOverlayComponent, openOptions)
11016
- : this.overlayService.openModal(SignalMultiSelectDropdownPanelOverlayComponent, {
11017
- ...openOptions,
11018
- maxHeightClass: 'max-h-[80vh]',
11019
- });
11033
+ : this.overlayService.openModal(SignalMultiSelectDropdownPanelOverlayComponent, openOptions);
11020
11034
  this.mobileDialogRef = dialogRef;
11021
11035
  this.isOpen.set(true);
11022
11036
  this.mobileDialogSub?.unsubscribe();
@@ -11259,10 +11273,11 @@ class SignalDatePicker extends BaseFormControl {
11259
11273
  ...(ngDevMode ? [{ debugName: "disabledDays" }] : /* istanbul ignore next */ []));
11260
11274
  disabledDates = input([], /* @ts-ignore */
11261
11275
  ...(ngDevMode ? [{ debugName: "disabledDates" }] : /* istanbul ignore next */ []));
11262
- debounceValueChange = input(true, /* @ts-ignore */
11276
+ debounceValueChange = input(false, /* @ts-ignore */
11263
11277
  ...(ngDevMode ? [{ debugName: "debounceValueChange" }] : /* istanbul ignore next */ []));
11264
11278
  debounceMs = input(600, /* @ts-ignore */
11265
11279
  ...(ngDevMode ? [{ debugName: "debounceMs" }] : /* istanbul ignore next */ []));
11280
+ // Outputs
11266
11281
  valueChange = output();
11267
11282
  dateSelected = output();
11268
11283
  uiMode = signal('date', /* @ts-ignore */
@@ -11719,7 +11734,7 @@ class SignalDateField extends BaseSignalTextInputControl {
11719
11734
  ...(ngDevMode ? [undefined, { debugName: "fieldName" }] : /* istanbul ignore next */ []));
11720
11735
  autocomplete = input(/* @ts-ignore */
11721
11736
  ...(ngDevMode ? [undefined, { debugName: "autocomplete" }] : /* istanbul ignore next */ []));
11722
- debounceValueChange = input(true, /* @ts-ignore */
11737
+ debounceValueChange = input(false, /* @ts-ignore */
11723
11738
  ...(ngDevMode ? [{ debugName: "debounceValueChange" }] : /* istanbul ignore next */ []));
11724
11739
  debounceMs = input(600, /* @ts-ignore */
11725
11740
  ...(ngDevMode ? [{ debugName: "debounceMs" }] : /* istanbul ignore next */ []));
@@ -11741,6 +11756,7 @@ class SignalDateField extends BaseSignalTextInputControl {
11741
11756
  ...(ngDevMode ? [{ debugName: "disabledDays" }] : /* istanbul ignore next */ []));
11742
11757
  disabledDates = input([], /* @ts-ignore */
11743
11758
  ...(ngDevMode ? [{ debugName: "disabledDates" }] : /* istanbul ignore next */ []));
11759
+ // Outputs
11744
11760
  valueChange = output();
11745
11761
  dateSelected = output();
11746
11762
  clear = output();
@@ -12103,10 +12119,11 @@ class SignalDateRangePicker extends BaseFormControl {
12103
12119
  ...(ngDevMode ? [{ debugName: "disabledDays" }] : /* istanbul ignore next */ []));
12104
12120
  disabledDates = input([], /* @ts-ignore */
12105
12121
  ...(ngDevMode ? [{ debugName: "disabledDates" }] : /* istanbul ignore next */ []));
12106
- debounceValueChange = input(true, /* @ts-ignore */
12122
+ debounceValueChange = input(false, /* @ts-ignore */
12107
12123
  ...(ngDevMode ? [{ debugName: "debounceValueChange" }] : /* istanbul ignore next */ []));
12108
12124
  debounceMs = input(600, /* @ts-ignore */
12109
12125
  ...(ngDevMode ? [{ debugName: "debounceMs" }] : /* istanbul ignore next */ []));
12126
+ // Outputs
12110
12127
  valueChange = output();
12111
12128
  dateRangeSelected = output();
12112
12129
  uiMode = signal('date', /* @ts-ignore */
@@ -12610,7 +12627,7 @@ class SignalDateRangeField extends BaseSignalTextInputControl {
12610
12627
  ...(ngDevMode ? [undefined, { debugName: "fieldName" }] : /* istanbul ignore next */ []));
12611
12628
  autocomplete = input(/* @ts-ignore */
12612
12629
  ...(ngDevMode ? [undefined, { debugName: "autocomplete" }] : /* istanbul ignore next */ []));
12613
- debounceValueChange = input(true, /* @ts-ignore */
12630
+ debounceValueChange = input(false, /* @ts-ignore */
12614
12631
  ...(ngDevMode ? [{ debugName: "debounceValueChange" }] : /* istanbul ignore next */ []));
12615
12632
  debounceMs = input(600, /* @ts-ignore */
12616
12633
  ...(ngDevMode ? [{ debugName: "debounceMs" }] : /* istanbul ignore next */ []));
@@ -12632,6 +12649,7 @@ class SignalDateRangeField extends BaseSignalTextInputControl {
12632
12649
  ...(ngDevMode ? [{ debugName: "disabledDays" }] : /* istanbul ignore next */ []));
12633
12650
  disabledDates = input([], /* @ts-ignore */
12634
12651
  ...(ngDevMode ? [{ debugName: "disabledDates" }] : /* istanbul ignore next */ []));
12652
+ // Outputs
12635
12653
  valueChange = output();
12636
12654
  dateRangeSelected = output();
12637
12655
  clear = output();
@@ -13077,10 +13095,11 @@ class SignalTimePicker extends BaseFormControl {
13077
13095
  ...(ngDevMode ? [{ debugName: "timeFormat" }] : /* istanbul ignore next */ []));
13078
13096
  embedded = input(false, /* @ts-ignore */
13079
13097
  ...(ngDevMode ? [{ debugName: "embedded" }] : /* istanbul ignore next */ []));
13080
- debounceValueChange = input(true, /* @ts-ignore */
13098
+ debounceValueChange = input(false, /* @ts-ignore */
13081
13099
  ...(ngDevMode ? [{ debugName: "debounceValueChange" }] : /* istanbul ignore next */ []));
13082
13100
  debounceMs = input(600, /* @ts-ignore */
13083
13101
  ...(ngDevMode ? [{ debugName: "debounceMs" }] : /* istanbul ignore next */ []));
13102
+ // Outputs
13084
13103
  valueChange = output();
13085
13104
  timeSelected = output();
13086
13105
  is24HourFormat = signal(false, /* @ts-ignore */
@@ -13387,7 +13406,7 @@ class SignalTimeField extends BaseSignalTextInputControl {
13387
13406
  ...(ngDevMode ? [undefined, { debugName: "fieldName" }] : /* istanbul ignore next */ []));
13388
13407
  autocomplete = input(/* @ts-ignore */
13389
13408
  ...(ngDevMode ? [undefined, { debugName: "autocomplete" }] : /* istanbul ignore next */ []));
13390
- debounceValueChange = input(true, /* @ts-ignore */
13409
+ debounceValueChange = input(false, /* @ts-ignore */
13391
13410
  ...(ngDevMode ? [{ debugName: "debounceValueChange" }] : /* istanbul ignore next */ []));
13392
13411
  debounceMs = input(600, /* @ts-ignore */
13393
13412
  ...(ngDevMode ? [{ debugName: "debounceMs" }] : /* istanbul ignore next */ []));
@@ -13397,6 +13416,7 @@ class SignalTimeField extends BaseSignalTextInputControl {
13397
13416
  ...(ngDevMode ? [{ debugName: "mobilePresentation" }] : /* istanbul ignore next */ []));
13398
13417
  okLabel = input('OK', /* @ts-ignore */
13399
13418
  ...(ngDevMode ? [{ debugName: "okLabel" }] : /* istanbul ignore next */ []));
13419
+ // Outputs
13400
13420
  valueChange = output();
13401
13421
  timeSelected = output();
13402
13422
  clear = output();
@@ -13735,6 +13755,7 @@ class SignalOtpField extends BaseFormControl {
13735
13755
  ...(ngDevMode ? [{ debugName: "obscureChar" }] : /* istanbul ignore next */ []));
13736
13756
  id = input(/* @ts-ignore */
13737
13757
  ...(ngDevMode ? [undefined, { debugName: "id" }] : /* istanbul ignore next */ []));
13758
+ valueChange = output();
13738
13759
  completed = output();
13739
13760
  digitInputs;
13740
13761
  destroyRef = inject(DestroyRef);
@@ -13953,6 +13974,7 @@ class SignalOtpField extends BaseFormControl {
13953
13974
  commitDigits(digits) {
13954
13975
  const value = digitsToValue(digits);
13955
13976
  this.setValue(value);
13977
+ this.valueChange.emit(value);
13956
13978
  if (value.length === this.length() && digits.every((digit) => digit !== '')) {
13957
13979
  this.completed.emit(value);
13958
13980
  }
@@ -14028,12 +14050,12 @@ class SignalOtpField extends BaseFormControl {
14028
14050
  }
14029
14051
  }
14030
14052
  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"] }] });
14053
+ 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
14054
  }
14033
14055
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: SignalOtpField, decorators: [{
14034
14056
  type: Component,
14035
14057
  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: [{
14058
+ }], 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
14059
  type: ViewChildren,
14038
14060
  args: ['digitInput']
14039
14061
  }] } });
@@ -15412,6 +15434,7 @@ function provideNglConfig(config) {
15412
15434
  ...config,
15413
15435
  input: { ...DEFAULT_NGL_INPUT_CONFIG, ...config.input },
15414
15436
  button: { ...DEFAULT_NGL_BUTTON_CONFIG, ...config.button },
15437
+ overlay: { ...DEFAULT_NGL_OVERLAY_CONFIG, ...config.overlay },
15415
15438
  listResponse: { ...DEFAULT_NGL_LIST_RESPONSE, ...config.listResponse },
15416
15439
  };
15417
15440
  const providers = [
@@ -15505,5 +15528,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImpor
15505
15528
  * Generated bundle index. Do not edit.
15506
15529
  */
15507
15530
 
15508
- export { AlertDialogComponent, AppErrorComponent, AppSvgIconComponent, BaseApiService, BaseControlValueAccessor, BaseControlValueAccessorV2, BaseControlValueAccessorV3, BaseInputComponent, BaseOverlayComponent, BaseSignalInput, BaseTableComponent, BreadcrumbComponent, ButtonComponent, CheckboxComponent, ClickOutsideDirective, CloseButtonComponent, ColorConverterService, ColorFormats, ColorPickerComponent, ColorPickerDirective, ContextMenuButtonComponent, ContextMenuIconComponent, DEFAULT_NGL_BUTTON_CONFIG, DEFAULT_NGL_INPUT_CONFIG, DEFAULT_NGL_LIST_RESPONSE, DEFAULT_PHONE_COUNTRIES, DataTableComponent, DateInputComponent, DatePickerComponent, DatePickerOverlayComponent, DateRangePickerComponent, DateUtils, DropdownComponent, DynamicRendererComponent, EnvBannerComponent, FORM_ERRORS, FileUploaderComponent, FormValidationUtils, HumanizeFormMessagesPipe, InfiniteScrollDirective, InfiniteScrollModule, InputDateFormat, InvalidControlScrollContainerDirective, InvalidControlScrollDirective, InvalidTokenError, ListviewComponent, LoaderComponent, LoaderService, MultiSelectDropdownAppearance, MultiSelectDropdownComponent, MultiSelectionFieldComponent, NGL_CONFIG, NetworkImageComponent, NglService, NoDataComponent, NoDataTableComponent, NumberInputComponent, OpenFloatingMenuDirective, OverlayContextMenuComponent, OverlayService, OverlayWizardUtils, PaginationComponent, PaginationState, PhoneNumberInputComponent, RadioButtonComponent, RequestState, ResizableColumnDirective, ResponsiveHelperComponent, SIGNAL_FORM_ERRORS, SharedConstants, ShimmerComponent, SignalButton, SignalCheckbox, SignalColorField, SignalDataTableComponent, SignalDateField, SignalDatePicker, SignalDateRangeField, SignalDateRangePicker, SignalDropdown, SignalError, SignalFormDirective, SignalFormValidators, SignalMultiSelectDropdown, SignalNumberField, SignalOtpField, SignalPhoneNumberField, SignalRadio, SignalRadioGroup, SignalRangeSlider, SignalRating, SignalSlider, SignalSwitch, SignalTextField, SignalTextarea, SignalTimeField, SignalTimePicker, SingleItemPickerInputComponent, SingleSelectionFieldComponent, SortableTableDirective, SpinnerComponent, State, StatusBadgeComponent, SvgUrlIconComponent, SwitchComponent, TableCustomComponent, TableResizableColumnsDirective, TemplateResolverArrayUtil, TemplateResolverFormat, TextAreaInputComponent, TextInputComponent, ThemeService, TimePickerComponent, ToastComponent, ToastService, ToasterComponent, TooltipDirective, UnsavedAwareDirective, arrayToCSV, arrayToSeparator, arrayToSpaceSeparator, deepEqual, defaultErrors, defaultSignalFormErrors, getDynamicTypeStructure, getSignalButtonClasses, getSignalButtonIconClasses, getSignalButtonSpinnerBorderClass, getSignalFieldErrorMessage, getSignalValidationErrorMessage, isDynamicType, isValid, jsonEqual, jwtDecode, mmddyyyyDateValidatorAsync, onlyFutureDateValidator, onlyPastDateValidator, openLink, phoneNumbers, phoneNumbersAll, printInvalidFields, provideNglConfig, resolveTemplateWithObject, toSentenceCase, validateSignalForm };
15531
+ export { AlertDialogComponent, AppErrorComponent, AppSvgIconComponent, BaseApiService, BaseControlValueAccessor, BaseControlValueAccessorV2, BaseControlValueAccessorV3, BaseInputComponent, BaseOverlayComponent, BaseSignalInput, BaseTableComponent, BreadcrumbComponent, ButtonComponent, CheckboxComponent, ClickOutsideDirective, CloseButtonComponent, ColorConverterService, ColorFormats, ColorPickerComponent, ColorPickerDirective, ContextMenuButtonComponent, ContextMenuIconComponent, DEFAULT_NGL_BUTTON_CONFIG, DEFAULT_NGL_INPUT_CONFIG, DEFAULT_NGL_LIST_RESPONSE, DEFAULT_NGL_OVERLAY_CONFIG, DEFAULT_PHONE_COUNTRIES, DataTableComponent, DateInputComponent, DatePickerComponent, DatePickerOverlayComponent, DateRangePickerComponent, DateUtils, DropdownComponent, DynamicRendererComponent, EnvBannerComponent, FORM_ERRORS, FileUploaderComponent, FormValidationUtils, HumanizeFormMessagesPipe, InfiniteScrollDirective, InfiniteScrollModule, InputDateFormat, InvalidControlScrollContainerDirective, InvalidControlScrollDirective, InvalidTokenError, ListviewComponent, LoaderComponent, LoaderService, MultiSelectDropdownAppearance, MultiSelectDropdownComponent, MultiSelectionFieldComponent, NGL_CONFIG, NetworkImageComponent, NglService, NoDataComponent, NoDataTableComponent, NumberInputComponent, OpenFloatingMenuDirective, OverlayContextMenuComponent, OverlayService, OverlayWizardUtils, PaginationComponent, PaginationState, PhoneNumberInputComponent, RadioButtonComponent, RequestState, ResizableColumnDirective, ResponsiveHelperComponent, SIGNAL_FORM_ERRORS, SharedConstants, ShimmerComponent, SignalButton, SignalCheckbox, SignalColorField, SignalDataTableComponent, SignalDateField, SignalDatePicker, SignalDateRangeField, SignalDateRangePicker, SignalDropdown, SignalError, SignalFormDirective, SignalFormValidators, SignalMultiSelectDropdown, SignalNumberField, SignalOtpField, SignalPhoneNumberField, SignalRadio, SignalRadioGroup, SignalRangeSlider, SignalRating, SignalSlider, SignalSwitch, SignalTextField, SignalTextarea, SignalTimeField, SignalTimePicker, SingleItemPickerInputComponent, SingleSelectionFieldComponent, SortableTableDirective, SpinnerComponent, State, StatusBadgeComponent, SvgUrlIconComponent, SwitchComponent, TableCustomComponent, TableResizableColumnsDirective, TemplateResolverArrayUtil, TemplateResolverFormat, TextAreaInputComponent, TextInputComponent, ThemeService, TimePickerComponent, ToastComponent, ToastService, ToasterComponent, TooltipDirective, UnsavedAwareDirective, arrayToCSV, arrayToSeparator, arrayToSpaceSeparator, deepEqual, defaultErrors, defaultSignalFormErrors, getDynamicTypeStructure, getSignalButtonClasses, getSignalButtonIconClasses, getSignalButtonSpinnerBorderClass, getSignalFieldErrorMessage, getSignalValidationErrorMessage, isDynamicType, isValid, jsonEqual, jwtDecode, mmddyyyyDateValidatorAsync, onlyFutureDateValidator, onlyPastDateValidator, openLink, phoneNumbers, phoneNumbersAll, printInvalidFields, provideNglConfig, resolveTemplateWithObject, toSentenceCase, validateSignalForm };
15509
15532
  //# sourceMappingURL=vallift-ngl.mjs.map