@ngrdt/gov 0.0.83 → 0.0.85

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, Injector, signal, input, linkedSignal, viewChild, effect, afterNextRender, untracked, Component, forwardRef, ViewEncapsulation, InjectionToken, Renderer2, computed, ChangeDetectionStrategy, Injectable, importProvidersFrom, CUSTOM_ELEMENTS_SCHEMA, Directive, ViewContainerRef, viewChildren, booleanAttribute } from '@angular/core';
2
+ import { inject, Injector, signal, input, linkedSignal, viewChild, effect, afterNextRender, untracked, HostBinding, Component, forwardRef, Injectable, ViewEncapsulation, InjectionToken, Renderer2, computed, ChangeDetectionStrategy, importProvidersFrom, LOCALE_ID, booleanAttribute, numberAttribute, CUSTOM_ELEMENTS_SCHEMA, Directive, ViewContainerRef, viewChildren } from '@angular/core';
3
+ import { provideDateFnsAdapter } from '@angular/material-date-fns-adapter';
4
+ import { MAT_DATE_LOCALE, DateAdapter } from '@angular/material/core';
5
+ import * as i1$2 from '@angular/material/datepicker';
6
+ import { MatDatepickerIntl, MatDatepickerModule } from '@angular/material/datepicker';
3
7
  import * as i1 from '@gov-design-system-ce/angular';
4
8
  import { GovButton, GovDesignSystemModule } from '@gov-design-system-ce/angular';
5
9
  import { RdtButtonBase, RDT_BUTTON_BASE_PROVIDER } from '@ngrdt/button';
@@ -9,14 +13,18 @@ import { RdtSpinnerComponent, RDT_SPINNER_BASE_PROVIDER } from '@ngrdt/loading';
9
13
  import * as i1$1 from '@angular/common';
10
14
  import { NgTemplateOutlet, CommonModule } from '@angular/common';
11
15
  import { RouterLink } from '@angular/router';
12
- import * as i1$2 from '@angular/forms';
13
- import { NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';
16
+ import * as i1$3 from '@angular/forms';
17
+ import { NG_VALUE_ACCESSOR, ReactiveFormsModule, FormsModule } from '@angular/forms';
18
+ import { RdtTranslateService, RdtAutoFocusOnInitDirective, RdtTranslatePipe } from '@ngrdt/core';
14
19
  import { ReplaySubject, Subject, take, fromEvent, filter, throttleTime, animationFrameScheduler, map } from 'rxjs';
15
20
  import { Overlay } from '@angular/cdk/overlay';
16
21
  import { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';
17
22
  import { CdkDrag } from '@angular/cdk/drag-drop';
18
- import { RdtTranslateService, RdtAutoFocusOnInitDirective, RdtTranslatePipe } from '@ngrdt/core';
19
23
  import { defineCustomElements } from '@gov-design-system-ce/components/loader';
24
+ import * as i2 from '@angular/material/input';
25
+ import { MatInputModule } from '@angular/material/input';
26
+ import { MatTimepickerModule } from '@angular/material/timepicker';
27
+ import { isValid, format } from 'date-fns';
20
28
  import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
21
29
  import { TAB, ENTER } from '@angular/cdk/keycodes';
22
30
 
@@ -47,6 +55,9 @@ class RdtGovButtonComponent extends RdtButtonBase {
47
55
  expanded = linkedSignal(() => this.expandedInput());
48
56
  iconStart = linkedSignal(() => this.iconStartInput());
49
57
  govButton = viewChild(GovButton);
58
+ get hostWidth() {
59
+ return this.expanded() ? null : 'fit-content';
60
+ }
50
61
  buttonEffect = effect(async () => {
51
62
  const govButton = this.govButton();
52
63
  if (govButton) {
@@ -77,7 +88,7 @@ class RdtGovButtonComponent extends RdtButtonBase {
77
88
  });
78
89
  }
79
90
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
80
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: RdtGovButtonComponent, isStandalone: true, selector: "rdt-gov-button", inputs: { appearanceInput: { classPropertyName: "appearanceInput", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, colorInput: { classPropertyName: "colorInput", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, iconStartInput: { classPropertyName: "iconStartInput", publicName: "iconStart", isSignal: true, isRequired: false, transformFunction: null }, expandedInput: { classPropertyName: "expandedInput", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
91
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: RdtGovButtonComponent, isStandalone: true, selector: "rdt-gov-button", inputs: { appearanceInput: { classPropertyName: "appearanceInput", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, colorInput: { classPropertyName: "colorInput", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, iconStartInput: { classPropertyName: "iconStartInput", publicName: "iconStart", isSignal: true, isRequired: false, transformFunction: null }, expandedInput: { classPropertyName: "expandedInput", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.width": "this.hostWidth" } }, providers: [
81
92
  {
82
93
  provide: RdtButtonBase,
83
94
  useExisting: RdtGovButtonComponent,
@@ -97,7 +108,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
97
108
  useExisting: RdtGovButtonComponent,
98
109
  },
99
110
  ], template: "<ng-template #buttonContent>\n <gov-button\n [class.pointer-events-none]=\"!!ngHref()\"\n [color]=\"color()\"\n [type]=\"appearance()\"\n [nativeType]=\"type()\"\n [size]=\"size()\"\n [name]=\"id()\"\n [disabled]=\"disabled()\"\n [loading]=\"loading()\"\n [identifier]=\"id()\"\n [href]=\"href()\"\n [download]=\"download()\"\n [target]=\"target()\"\n [expanded]=\"expanded()\"\n (gov-click)=\"onClicked($any($event.detail).originalEvent)\"\n (gov-focus)=\"onFocus()\"\n (gov-blur)=\"onBlur()\"\n >\n @let lI = iconStart(); @let rI = icon(); @if (lI) {\n <span slot=\"icon-start\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: lI }\"></ng-container\n ></span>\n }\n\n {{ label() }}\n\n @if (rI) {\n <span slot=\"icon-end\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: rI }\"></ng-container\n ></span>\n }\n </gov-button>\n</ng-template>\n\n@let ngHrefValue = ngHref(); @if (ngHrefValue) {\n<a\n [routerLink]=\"ngHrefValue\"\n [state]=\"stateParams() ?? undefined\"\n [queryParams]=\"queryParams() ?? undefined\"\n [target]=\"target()\"\n [replaceUrl]=\"replaceUrl()\"\n [class.disabled-link]=\"disabled()\"\n>\n <ng-container *ngTemplateOutlet=\"buttonContent\" />\n</a>\n} @else {\n<ng-container *ngTemplateOutlet=\"buttonContent\" />\n}\n" }]
100
- }], ctorParameters: () => [] });
111
+ }], ctorParameters: () => [], propDecorators: { hostWidth: [{
112
+ type: HostBinding,
113
+ args: ['style.width']
114
+ }] } });
101
115
 
102
116
  class RdtGovCheckboxComponent extends RdtCheckboxComponent {
103
117
  labelPosition = linkedSignal(() => this.labelPositionInput());
@@ -123,7 +137,7 @@ class RdtGovCheckboxComponent extends RdtCheckboxComponent {
123
137
  useExisting: forwardRef(() => RdtGovCheckboxComponent),
124
138
  multi: true,
125
139
  },
126
- ], usesInheritance: true, ngImport: i0, template: "@let lPos = labelPosition();\n<div [class.center]=\"lPos !== 'top'\">\n @if(lPos === 'top' && label().length>0){\n <gov-form-label\n slot=\"left\"\n size=\"m\"\n [class.warning-color-gov-label]=\"hasError\"\n >{{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n >\n } @if(lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label spaced\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n }\n <gov-form-checkbox\n class=\"rdt-gov-checkbox\"\n [size]=\"size()\"\n [value]=\"value()\"\n [ariaLabel]=\"lPos === 'left' ? label() : ''\"\n [required]=\"required()\"\n [checked]=\"checkedState()\"\n [invalid]=\"invalid()\"\n [disabled]=\"disabled()\"\n [identifier]=\"id()\"\n [noLabel]=\"true\"\n (gov-change)=\"checkedChange.emit(checkedState())\"\n ></gov-form-checkbox>\n @if(lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @let hasError = visibleErrors() | rdtFormError; @if(hasError){\n <gov-form-message slot=\"bottom\" color=\"error\">{{\n hasError\n }}</gov-form-message>\n }\n</div>\n", styles: ["gov-form-checkbox{min-height:0px!important;padding:0!important}.center{display:flex;align-items:center}.spaced{margin-right:var(--spacing-xs-nudge)}\n"], dependencies: [{ kind: "ngmodule", type: GovDesignSystemModule }, { kind: "component", type: i1.GovFormCheckbox, selector: "gov-form-checkbox", inputs: ["checked", "disabled", "identifier", "indeterminate", "invalid", "name", "noLabel", "required", "size", "value"] }, { kind: "component", type: i1.GovFormLabel, selector: "gov-form-label", inputs: ["identifier", "legend", "required", "size"] }, { kind: "component", type: i1.GovFormMessage, selector: "gov-form-message", inputs: ["color", "size"] }, { kind: "directive", type: i1.BooleanValueAccessor, selector: "gov-form-checkbox,gov-form-switch" }, { kind: "pipe", type: RdtFormErrorPipe, name: "rdtFormError" }] });
140
+ ], usesInheritance: true, ngImport: i0, template: "@let lPos = labelPosition();\n<div [class.center]=\"lPos !== 'top'\">\n @if(lPos === 'top' && label().length>0){\n <gov-form-label\n slot=\"left\"\n size=\"m\"\n [class.warning-color-gov-label]=\"hasError\"\n >{{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n >\n } @if(lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label spaced\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n }\n <gov-form-checkbox\n class=\"rdt-gov-checkbox\"\n [size]=\"size()\"\n [value]=\"value()\"\n [ariaLabel]=\"lPos === 'left' ? label() : ''\"\n [required]=\"required()\"\n [checked]=\"checkedState()\"\n [invalid]=\"invalid()\"\n [disabled]=\"disabled()\"\n [identifier]=\"id()\"\n [noLabel]=\"true\"\n (gov-change)=\"checkedChange.emit(checkedState())\"\n ></gov-form-checkbox>\n @if(lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @let hasError = visibleErrors() | rdtFormError; @if(hasError){\n <gov-form-message slot=\"bottom\" color=\"error\" [attr.size]=\"size()\">\n <gov-icon\n type=\"components\"\n name=\"exclamation-triangle-fill\"\n slot=\"validation-icon\"\n ></gov-icon>\n {{ hasError }}\n </gov-form-message>\n }\n</div>\n", styles: ["gov-form-checkbox{min-height:0px!important;padding:0!important}.center{display:flex;align-items:center}.spaced{margin-right:var(--spacing-xs-nudge)}\n"], dependencies: [{ kind: "ngmodule", type: GovDesignSystemModule }, { kind: "component", type: i1.GovFormCheckbox, selector: "gov-form-checkbox", inputs: ["checked", "disabled", "identifier", "indeterminate", "invalid", "name", "noLabel", "required", "size", "value"] }, { kind: "component", type: i1.GovFormLabel, selector: "gov-form-label", inputs: ["identifier", "legend", "required", "size"] }, { kind: "component", type: i1.GovFormMessage, selector: "gov-form-message", inputs: ["color", "size"] }, { kind: "component", type: i1.GovIcon, selector: "gov-icon", inputs: ["color", "name", "size", "type"] }, { kind: "directive", type: i1.BooleanValueAccessor, selector: "gov-form-checkbox,gov-form-switch" }, { kind: "pipe", type: RdtFormErrorPipe, name: "rdtFormError" }] });
127
141
  }
128
142
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovCheckboxComponent, decorators: [{
129
143
  type: Component,
@@ -133,9 +147,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
133
147
  useExisting: forwardRef(() => RdtGovCheckboxComponent),
134
148
  multi: true,
135
149
  },
136
- ], template: "@let lPos = labelPosition();\n<div [class.center]=\"lPos !== 'top'\">\n @if(lPos === 'top' && label().length>0){\n <gov-form-label\n slot=\"left\"\n size=\"m\"\n [class.warning-color-gov-label]=\"hasError\"\n >{{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n >\n } @if(lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label spaced\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n }\n <gov-form-checkbox\n class=\"rdt-gov-checkbox\"\n [size]=\"size()\"\n [value]=\"value()\"\n [ariaLabel]=\"lPos === 'left' ? label() : ''\"\n [required]=\"required()\"\n [checked]=\"checkedState()\"\n [invalid]=\"invalid()\"\n [disabled]=\"disabled()\"\n [identifier]=\"id()\"\n [noLabel]=\"true\"\n (gov-change)=\"checkedChange.emit(checkedState())\"\n ></gov-form-checkbox>\n @if(lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @let hasError = visibleErrors() | rdtFormError; @if(hasError){\n <gov-form-message slot=\"bottom\" color=\"error\">{{\n hasError\n }}</gov-form-message>\n }\n</div>\n", styles: ["gov-form-checkbox{min-height:0px!important;padding:0!important}.center{display:flex;align-items:center}.spaced{margin-right:var(--spacing-xs-nudge)}\n"] }]
150
+ ], template: "@let lPos = labelPosition();\n<div [class.center]=\"lPos !== 'top'\">\n @if(lPos === 'top' && label().length>0){\n <gov-form-label\n slot=\"left\"\n size=\"m\"\n [class.warning-color-gov-label]=\"hasError\"\n >{{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n >\n } @if(lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label spaced\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n }\n <gov-form-checkbox\n class=\"rdt-gov-checkbox\"\n [size]=\"size()\"\n [value]=\"value()\"\n [ariaLabel]=\"lPos === 'left' ? label() : ''\"\n [required]=\"required()\"\n [checked]=\"checkedState()\"\n [invalid]=\"invalid()\"\n [disabled]=\"disabled()\"\n [identifier]=\"id()\"\n [noLabel]=\"true\"\n (gov-change)=\"checkedChange.emit(checkedState())\"\n ></gov-form-checkbox>\n @if(lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @let hasError = visibleErrors() | rdtFormError; @if(hasError){\n <gov-form-message slot=\"bottom\" color=\"error\" [attr.size]=\"size()\">\n <gov-icon\n type=\"components\"\n name=\"exclamation-triangle-fill\"\n slot=\"validation-icon\"\n ></gov-icon>\n {{ hasError }}\n </gov-form-message>\n }\n</div>\n", styles: ["gov-form-checkbox{min-height:0px!important;padding:0!important}.center{display:flex;align-items:center}.spaced{margin-right:var(--spacing-xs-nudge)}\n"] }]
137
151
  }] });
138
152
 
153
+ class RdtDatepickerIntl extends MatDatepickerIntl {
154
+ translateService = inject(RdtTranslateService);
155
+ constructor() {
156
+ super();
157
+ this.setLabels();
158
+ }
159
+ setLabelsEffect = effect(() => {
160
+ this.setLabels();
161
+ });
162
+ setLabels() {
163
+ this.calendarLabel = this.translateService.instant('RDT_GOV_DATE_CALENDAR_LABEL');
164
+ this.openCalendarLabel = this.translateService.instant('RDT_GOV_DATE_OPEN_CALENDAR');
165
+ this.prevMonthLabel = this.translateService.instant('RDT_GOV_DATE_PREV_MONTH');
166
+ this.nextMonthLabel = this.translateService.instant('RDT_GOV_DATE_NEXT_MONTH');
167
+ this.prevYearLabel = this.translateService.instant('RDT_GOV_DATE_PREV_YEAR');
168
+ this.nextYearLabel = this.translateService.instant('RDT_GOV_DATE_NEXT_YEAR');
169
+ }
170
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtDatepickerIntl, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
171
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtDatepickerIntl });
172
+ }
173
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtDatepickerIntl, decorators: [{
174
+ type: Injectable
175
+ }], ctorParameters: () => [] });
176
+
139
177
  class RdtGovDialogContentComponent {
140
178
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovDialogContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
141
179
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: RdtGovDialogContentComponent, isStandalone: true, selector: "rdt-gov-dialog-content", ngImport: i0, template: "<div class=\"gov-dialog__content\">\n <ng-content></ng-content>\n</div>\n" });
@@ -602,6 +640,10 @@ function provideNgrdtGov(options = {}) {
602
640
  provide: RDT_SPINNER_BASE_PROVIDER,
603
641
  useValue: RdtGovSpinnerComponent,
604
642
  },
643
+ { provide: MAT_DATE_LOCALE, useValue: 'cs-CZ' },
644
+ { provide: LOCALE_ID, useValue: 'cs-CZ' },
645
+ { provide: MatDatepickerIntl, useClass: RdtDatepickerIntl },
646
+ provideDateFnsAdapter(),
605
647
  ];
606
648
  }
607
649
 
@@ -613,179 +655,237 @@ function initRdtGov(config = {}) {
613
655
  defineCustomElements(window);
614
656
  }
615
657
 
616
- function forceFocus(input) {
617
- let cnt = 0;
618
- const maxCnt = 10;
619
- const int = setInterval(() => {
620
- input.focus({ preventScroll: true });
621
- if (cnt === maxCnt || input.matches(':focus')) {
622
- clearInterval(int);
623
- }
624
- cnt++;
625
- }, 5);
626
- }
627
-
628
- const RDT_DATE_MIN_YEAR = 1900;
629
658
  class RdtGovDateComponent extends RdtDateComponent {
630
- govInput = viewChild('govInput');
659
+ translateService = inject(RdtTranslateService);
660
+ dateAdapter = inject(DateAdapter);
661
+ dateInput = viewChild('dateInput');
662
+ timeInput = viewChild('timeInput');
631
663
  size = input('s');
632
- mode = input('date');
633
- outputMode = input('date');
634
664
  labelPositionInput = input('top', {
635
665
  alias: 'labelPosition',
636
666
  });
637
667
  labelPosition = linkedSignal(() => this.labelPositionInput());
638
- inputElement = signal(null);
639
- hasErrors = false;
668
+ showSeconds = input(false, { transform: booleanAttribute });
669
+ stepInput = input(undefined, {
670
+ alias: 'step',
671
+ transform: numberAttribute,
672
+ });
673
+ step = linkedSignal(() => {
674
+ return this.stepInput() ?? (this.showSeconds() ? 1 : undefined);
675
+ });
676
+ dateInputFocused = false;
677
+ // Current value of physical date input field
678
+ dateInputValue = signal(null);
679
+ // Current value of physical time input field
680
+ timeInputValue = signal('');
681
+ internalTimeFormat = computed(() => this.showSeconds() ? 'HH:mm:ss' : 'HH:mm');
682
+ defaultTime = computed(() => this.showSeconds() ? '00:00:00' : '00:00');
683
+ localeUsed = computed(() => this.translateService.currentFormat().dateFnsLocale);
684
+ hasDate = computed(() => this.type() !== 'time');
685
+ hasTime = computed(() => this.type() !== 'date');
686
+ internalTimeValue = computed(() => {
687
+ const value = this.internalValue();
688
+ if (!value) {
689
+ return '';
690
+ }
691
+ const time = this.formatTime(value);
692
+ // This condition prevents adding zeros for seconds while typing
693
+ // E.g. 12:34 won't get changed to 12:34:00 automatically and it's valid value
694
+ if (this.timeInputValue() !== time &&
695
+ this.isValidTime(this.timeInputValue()) &&
696
+ time.startsWith(this.timeInputValue())) {
697
+ return this.timeInputValue();
698
+ }
699
+ return time;
700
+ });
640
701
  isEmpty(value) {
641
702
  return value === null;
642
703
  }
643
- onDateInput(dateInput) {
644
- if (dateInput) {
645
- const parsed = new Date(this.parseValue(dateInput));
646
- if (parsed.getFullYear() >= RDT_DATE_MIN_YEAR || !this.focused()) {
647
- this.onInternalValueChange(this.parseValue(dateInput));
648
- }
704
+ // Update DateAdapter locale when current locale changes
705
+ dateFnsLocaleEffect = effect(() => {
706
+ this.dateAdapter.setLocale(this.localeUsed());
707
+ });
708
+ toExternalValue(internalValue) {
709
+ if (!internalValue) {
710
+ return null;
711
+ }
712
+ return this.dateAdapter.format(internalValue, this.formControlFormat());
713
+ }
714
+ toInternalValue(externalValue) {
715
+ if (!externalValue) {
716
+ return null;
717
+ }
718
+ const parsed = this.dateAdapter.parse(externalValue, this.formControlFormat());
719
+ if (!isValid(parsed)) {
720
+ console.error(`Date field labeled "${this.label()}" was set invalid value "${externalValue}". Expected FormControl format: "${this.formControlFormat()}"`);
721
+ return null;
722
+ }
723
+ return parsed;
724
+ }
725
+ /**
726
+ * Prevents unnecessary change emissions on FormControl
727
+ * @returns True if both Date objects represent the same point in time
728
+ */
729
+ areInternalValuesEqual(value1, value2) {
730
+ if (value1 === null && value2 === null) {
731
+ return true;
732
+ }
733
+ if (value1 === null || value2 === null) {
734
+ return false;
735
+ }
736
+ return value1.getTime() === value2.getTime();
737
+ }
738
+ writeValue(value) {
739
+ super.writeValue(value);
740
+ const internalValue = this.toInternalValue(value);
741
+ // Update physical input fields when FormControl value changes
742
+ // Necessary before user interaction
743
+ if (internalValue) {
744
+ this.dateInputValue.set(internalValue);
745
+ this.timeInputValue.set(this.formatTime(internalValue));
649
746
  }
650
747
  else {
651
- this.onInternalValueChange(dateInput);
748
+ this.dateInputValue.set(null);
749
+ this.timeInputValue.set('');
652
750
  }
653
751
  }
654
- setValueFromEvent(event) {
655
- const value = event.detail.value;
656
- if (value) {
657
- const parsed = this.parseValue(value);
658
- this.onInternalValueChange(parsed);
752
+ onDateInput(event) {
753
+ const dateValue = event.value;
754
+ if (!dateValue) {
755
+ // Clear FormControl value when date is invalid
756
+ // Keep internal state
757
+ this.dateInputValue.set(null);
758
+ this.onChange(null);
659
759
  }
660
760
  else {
661
- this.onInternalValueChange(null);
761
+ this.dateInputValue.set(dateValue);
762
+ this.onDateChange(dateValue);
662
763
  }
663
764
  }
664
- toInternalValue(value) {
665
- if (value === null) {
666
- return null;
765
+ onTimeChange(event) {
766
+ const value = event.target.value;
767
+ let internalValue = this.internalValue();
768
+ if (!this.hasDate()) {
769
+ internalValue ??= this.emptyTimeDate;
770
+ }
771
+ const dateOk = internalValue && (this.dateInputValue() || !this.hasDate());
772
+ if (this.isValidTime(value) && internalValue && dateOk) {
773
+ const newDate = this.populateTime(new Date(internalValue), value);
774
+ this.onInternalValueChange(newDate);
667
775
  }
668
- switch (untracked(this.mode)) {
669
- case 'date':
670
- return this.toInternalDate(value);
671
- case 'datetime':
672
- return this.toInternalDateTime(value);
673
- case 'time':
674
- return this.toInternalTime(value);
675
- default:
676
- return value;
776
+ this.timeInputValue.set(value);
777
+ }
778
+ onDateChange(date) {
779
+ const value = date ?? null;
780
+ const internalValueOld = this.internalValue();
781
+ const timeInputValue = this.timeInputValue();
782
+ // If both newly selected date and time input are valid, combine them
783
+ if (value && timeInputValue) {
784
+ this.populateTime(value, timeInputValue);
785
+ }
786
+ // Set internal value
787
+ this.onInternalValueChange(value);
788
+ // In case date input is focused, revert internal value
789
+ // to original value before Date change event
790
+ // while keeping external value and FormControl value updated
791
+ // This prevents unexpected changes to date and time inputs while typing
792
+ // New internal value will be set on date input blur
793
+ if (this.dateInputFocused) {
794
+ this.internalValue.set(internalValueOld);
677
795
  }
678
796
  }
679
- toExternalValue(internalValue) {
680
- if (internalValue === null) {
797
+ onDateInputFocus() {
798
+ this.dateInputFocused = true;
799
+ this.onFocus();
800
+ }
801
+ onDateInputBlur() {
802
+ this.dateInputFocused = false;
803
+ // Set internal value to the combined date and time from inputs
804
+ // In case date and/or time input is invalid, internal value will not change
805
+ const dateTimeFromInputs = this.getDateTimeFromInputs();
806
+ if (dateTimeFromInputs) {
807
+ this.onInternalValueChange(dateTimeFromInputs);
808
+ }
809
+ this.onBlur();
810
+ }
811
+ /**
812
+ * Returns Date object constructed from current date and time input values
813
+ * or null if either input is invalid
814
+ */
815
+ getDateTimeFromInputs() {
816
+ const dateInputValue = this.dateInputValue();
817
+ const timeInputValue = this.timeInputValue();
818
+ if (!timeInputValue || !dateInputValue) {
681
819
  return null;
682
820
  }
683
- switch (untracked(this.outputMode)) {
684
- case 'date':
685
- return this.toInternalDate(internalValue);
686
- case 'datetime':
687
- return this.toExternalDateTime(internalValue);
688
- case 'time':
689
- return this.toExternalTime(internalValue);
690
- default:
691
- return internalValue;
821
+ else {
822
+ const newInternal = new Date(dateInputValue);
823
+ this.populateTime(newInternal, timeInputValue);
824
+ return newInternal;
692
825
  }
693
826
  }
694
- toExternalDateTime(internalValue) {
695
- const s = internalValue.split('T');
696
- const date = this.toInternalDate(s[0]);
697
- const time = s[1] ? this.toExternalTime(s[1]) : '00:00:00';
698
- return `${date}T${time}`;
699
- }
700
- toExternalTime(internalValue) {
701
- const s = internalValue.split(':');
702
- return `${s[0]}:${s[1]}:00`;
827
+ onTimeInputFocus() {
828
+ this.onFocus();
703
829
  }
704
- toInternalDate(value) {
705
- if (value === '') {
706
- return '0000-00-00';
830
+ onTimeInputBlur() {
831
+ const timeInputEl = this.timeInput()?.nativeElement;
832
+ if (!timeInputEl) {
833
+ return;
707
834
  }
708
- if (value.includes('T')) {
709
- return value.split('T')[0];
835
+ const value = timeInputEl?.value ?? '';
836
+ // Emit null value to FormControl in case time is blurred while invalid (empty slots), ,
837
+ // Keep internal state intacted to prevent unexpected changes to input fields
838
+ if (!value) {
839
+ this.onChange(null);
710
840
  }
711
- return value;
712
- }
713
- toInternalDateTime(value) {
714
- const s = value.includes('T') ? value.split('T') : value.split(' ');
715
- const date = this.toInternalDate(s[0]);
716
- const time = s[1] ? this.toInternalTime(s[1]) : '00:00';
717
- if (date && time) {
718
- return `${date}T${time}`;
841
+ this.onBlur();
842
+ }
843
+ /**
844
+ * Helper function to format a Date object to a time string
845
+ */
846
+ formatTime(date) {
847
+ if (this.type() === 'date') {
848
+ return this.defaultTime();
719
849
  }
720
- else if (date) {
721
- return `${date}T00:00`;
850
+ try {
851
+ const locale = this.localeUsed();
852
+ const timeFormat = this.internalTimeFormat();
853
+ return format(date, timeFormat, { locale });
722
854
  }
723
- else {
724
- return `0000-00-00T${time}`;
855
+ catch (e) {
856
+ console.log('Error formatting date: ', date, 'target format: ', this.internalTimeFormat());
857
+ console.error(e);
858
+ return this.defaultTime();
725
859
  }
726
860
  }
727
- toInternalTime(value) {
728
- const s = value.split(':');
729
- return `${s[0]}:${s[1]}`;
730
- }
731
- parseValue(value) {
732
- switch (untracked(this.mode)) {
733
- case 'date':
734
- return this.parseDate(value);
735
- case 'datetime':
736
- return this.parseDateTime(value);
737
- case 'time':
738
- return this.parseTime(value);
739
- default:
740
- return value;
861
+ /**
862
+ * Helper function to populate a Date object with time from a string
863
+ * in the format HH:mm or HH:mm:ss
864
+ */
865
+ populateTime(date, timeString) {
866
+ const timeParts = timeString.split(':').map((part) => parseInt(part, 10));
867
+ date.setHours(timeParts[0] || 0, timeParts[1] || 0, timeParts[2] || 0, 0);
868
+ return date;
869
+ }
870
+ isValidTime(value) {
871
+ if (!value) {
872
+ return false;
741
873
  }
874
+ return /^(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d{1,3})?)?$/.test(value);
742
875
  }
743
- parseTime(value) {
744
- return `${value}:00`;
745
- }
746
- parseDate(value) {
747
- return value;
748
- }
749
- parseDateTime(value) {
750
- const s = value.split('T');
751
- const date = this.parseDate(s[0]);
752
- const time = this.parseTime(s[1]);
753
- return `${date}T${time}`;
754
- }
755
- inputElementEffect = effect(async () => {
756
- const govInput = this.govInput()?.nativeElement;
757
- if (govInput) {
758
- const input = await govInput.getRef();
759
- this.inputElement.set(input);
760
- }
761
- });
762
- errorFixEffect = effect(() => {
763
- const inputElement = this.inputElement();
764
- const visibleErrors = this.visibleErrors();
765
- const hadErrors = this.hasErrors;
766
- this.hasErrors = !!visibleErrors;
767
- if (hadErrors !== this.hasErrors) {
768
- const isActive = document.activeElement === inputElement;
769
- if (isActive && inputElement) {
770
- forceFocus(inputElement);
771
- }
772
- }
773
- });
774
876
  async focus() {
775
- const govInput = await this.govInput()?.nativeElement;
776
- const el = await govInput?.getRef();
777
- forceFocus(el);
877
+ this.dateInput()?.nativeElement.focus();
778
878
  }
779
879
  canFocus() {
780
880
  return new Promise((resolve) => {
781
881
  setTimeout(() => {
782
- const elRef = this.govInput();
882
+ const elRef = this.dateInput();
783
883
  resolve(!!elRef?.nativeElement);
784
884
  }, 1);
785
885
  });
786
886
  }
787
887
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovDateComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
788
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: RdtGovDateComponent, isStandalone: true, selector: "rdt-gov-date", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, outputMode: { classPropertyName: "outputMode", publicName: "outputMode", isSignal: true, isRequired: false, transformFunction: null }, labelPositionInput: { classPropertyName: "labelPositionInput", publicName: "labelPosition", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
888
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: RdtGovDateComponent, isStandalone: true, selector: "rdt-gov-date", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, labelPositionInput: { classPropertyName: "labelPositionInput", publicName: "labelPosition", isSignal: true, isRequired: false, transformFunction: null }, showSeconds: { classPropertyName: "showSeconds", publicName: "showSeconds", isSignal: true, isRequired: false, transformFunction: null }, stepInput: { classPropertyName: "stepInput", publicName: "step", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
789
889
  {
790
890
  provide: NG_VALUE_ACCESSOR,
791
891
  useExisting: RdtGovDateComponent,
@@ -799,11 +899,20 @@ class RdtGovDateComponent extends RdtDateComponent {
799
899
  provide: RdtDateComponent,
800
900
  useExisting: RdtGovDateComponent,
801
901
  },
802
- ], viewQueries: [{ propertyName: "govInput", first: true, predicate: ["govInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@let lPos = labelPosition(); @if(lPos === 'top'){\n<gov-form-label slot=\"left\" size=\"m\" [class.warning-color-gov-label]=\"hasErrors\"\n >{{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n>\n} @switch (mode()) { @case ('date') {\n<gov-form-input\n #govInput\n input-type=\"date\"\n [value]=\"internalValue()\"\n [size]=\"size()\"\n [attr.invalid]=\"invalid() && touched()\"\n [attr.readonly]=\"readonlyInput() ? true : null\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [name]=\"id()\"\n [identifier]=\"id()\"\n (gov-focus)=\"onFocus()\"\n (gov-blur)=\"onBlur()\"\n (gov-input)=\"onDateInput($event.detail.value)\"\n>\n @if(lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if(lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n }\n</gov-form-input>\n} @case ('time') {\n<gov-form-input\n #govInput\n input-type=\"time\"\n [value]=\"internalValue()\"\n [size]=\"size()\"\n [attr.invalid]=\"invalid() && touched()\"\n [attr.readonly]=\"readonlyInput() ? true : null\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [name]=\"id()\"\n [identifier]=\"id()\"\n (gov-focus)=\"onFocus()\"\n (gov-blur)=\"onBlur()\"\n (gov-input)=\"onInternalValueChange($event.detail.value)\"\n>\n @if(lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if(lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n }\n</gov-form-input>\n} @default {\n<gov-form-input\n #govInput\n input-type=\"datetime-local\"\n [value]=\"internalValue()\"\n [size]=\"size()\"\n [attr.invalid]=\"invalid() && touched()\"\n [attr.readonly]=\"readonlyInput() ? true : null\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [name]=\"id()\"\n [identifier]=\"id()\"\n (gov-focus)=\"onFocus()\"\n (gov-blur)=\"onBlur()\"\n (gov-input)=\"setValueFromEvent($event)\"\n>\n @if(lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if(lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n }\n</gov-form-input>\n} } @let hasError = visibleErrors() | rdtFormError; @if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\">{{ hasError }}</gov-form-message>\n}\n", styles: [".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}\n"], dependencies: [{ kind: "pipe", type: RdtFormErrorPipe, name: "rdtFormError" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
902
+ provideDateFnsAdapter(),
903
+ { provide: MatDatepickerIntl, useClass: RdtDatepickerIntl },
904
+ ], viewQueries: [{ propertyName: "dateInput", first: true, predicate: ["dateInput"], descendants: true, isSignal: true }, { propertyName: "timeInput", first: true, predicate: ["timeInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@let lPos = labelPosition();\n<div class=\"rdt-date-wrapper\" [class]=\"lPos\">\n @if(lPos) {\n <p\n class=\"gov-form-label__label s_label\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n }\n <div class=\"rdt-date-field-wrapper gov-form-input\" [attr.size]=\"size()\">\n @if(type() === 'date' || type() === 'datetime-local'){\n <div class=\"rdt-date-field-position date\">\n <input\n class=\"rdt-date-field\"\n #dateInput\n matInput\n [attr.invalid]=\"invalid() && touched()\"\n [attr.readonly]=\"readonlyInput() ? true : null\"\n [attr.size]=\"size()\"\n [name]=\"name()\"\n [value]=\"internalValue()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [matDatepicker]=\"picker\"\n (focus)=\"onDateInputFocus()\"\n (blur)=\"onDateInputBlur()\"\n (dateInput)=\"onDateInput($event)\"\n (dateChange)=\"onDateInput($event)\"\n />\n <div class=\"gov-form-input__icons\">\n <gov-icon\n class=\"validation-icon gov-icon\"\n name=\"exclamation-lg\"\n type=\"components\"\n [attr.size]=\"size()\"\n >\n </gov-icon>\n </div>\n <mat-datepicker-toggle\n [attr.size]=\"size()\"\n matIconSuffix\n [for]=\"picker\"\n [disableRipple]=\"true\"\n >\n <!-- <mat-icon matDatepickerToggleIcon>keyboard_arrow_down</mat-icon> //moznost vlastni ikonky-->\n </mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </div>\n } @if(type() === 'datetime-local' || type() === 'time'){\n <div class=\"rdt-date-field-position time\">\n <input\n class=\"rdt-date-field\"\n type=\"time\"\n #timeInput\n (input)=\"onTimeChange($event)\"\n matInput\n [attr.invalid]=\"invalid() && touched()\"\n [step]=\"step()\"\n [attr.readonly]=\"readonlyInput() ? true : undefined\"\n [attr.size]=\"size()\"\n [name]=\"name()\"\n [value]=\"internalTimeValue()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n (focus)=\"onTimeInputFocus()\"\n (blur)=\"onTimeInputBlur()\"\n />\n <div class=\"gov-form-input__icons\">\n <gov-icon\n class=\"validation-icon gov-icon\"\n name=\"exclamation-lg\"\n type=\"components\"\n [attr.size]=\"size()\"\n >\n </gov-icon>\n </div>\n </div>\n }\n </div>\n</div>\n@let hasError = visibleErrors() | rdtFormError; @if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\" [attr.size]=\"size()\">\n <gov-icon\n type=\"components\"\n name=\"exclamation-triangle-fill\"\n slot=\"validation-icon\"\n ></gov-icon>\n {{ hasError }}\n</gov-form-message>\n}\n", styles: [".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}\n", ".rdt-date-wrapper mat-datepicker-toggle,.rdt-date-wrapper mat-timepicker-toggle{position:absolute}.rdt-date-wrapper.right{display:flex;align-items:center;flex-direction:row-reverse;gap:var(--gap, var(--spacing-s))}.rdt-date-wrapper.left{display:flex;align-items:center;flex-direction:row;gap:var(--gap, var(--spacing-s))}.rdt-date-wrapper.top{display:flex;flex-direction:column;gap:var(--gap, var(--spacing-xs))}.rdt-date-wrapper .gov-form-input__icons{display:var(--exclamation-mark-display, none)}.rdt-date-wrapper mat-datepicker-toggle,.rdt-date-wrapper mat-timepicker-toggle{--mat-icon-button-touch-target-size: calc( var(--padding-horizontal) + var(--icon-size) + var(--gap) );--mat-icon-button-state-layer-size: var( --mat-icon-button-touch-target-size );right:calc(var(--exclamation-mark-width, 0px) + var(--exclamation-mark-offset, 0px))}.rdt-date-wrapper mat-datepicker-toggle button,.rdt-date-wrapper mat-timepicker-toggle button{display:flex;justify-content:center;align-items:center;height:var(--mat-icon-button-state-layer-size)}.rdt-date-wrapper mat-datepicker-toggle button svg,.rdt-date-wrapper mat-timepicker-toggle button svg{width:var(--icon-size);height:var(--icon-size)}.rdt-date-wrapper mat-datepicker-toggle[size=xl],.rdt-date-wrapper mat-timepicker-toggle[size=xl]{--padding-horizontal: var(--spacing-m-nudge);--icon-size: var(--icon-size-xl);--gap: var(--spacing-m)}.rdt-date-wrapper mat-datepicker-toggle[size=l],.rdt-date-wrapper mat-timepicker-toggle[size=l]{--padding-horizontal: var(--spacing-s-nudge);--icon-size: var(--icon-size-l);--gap: var(--spacing-m)}.rdt-date-wrapper mat-datepicker-toggle[size=m],.rdt-date-wrapper mat-timepicker-toggle[size=m]{--padding-horizontal: var(--spacing-s-nudge);--icon-size: var(--icon-size-m);--gap: var(--spacing-s)}.rdt-date-wrapper mat-datepicker-toggle[size=s],.rdt-date-wrapper mat-timepicker-toggle[size=s]{--padding-horizontal: var(--spacing-xs-nudge);--icon-size: var(--icon-size-s);--gap: var(--spacing-s)}.rdt-date-wrapper mat-datepicker-toggle[size=xs],.rdt-date-wrapper mat-timepicker-toggle[size=xs]{--padding-horizontal: var(--spacing-xs-nudge);--icon-size: var(--icon-size-xs);--gap: var(--spacing-xs)}.rdt-date-field{background-color:transparent;border:none;border-radius:var(--border-radius, var(--corner-radius-s));color:var(--form-value-color, var(--text-primary));font-family:var(--font-family-primary, var(--font-family));width:100%;line-height:150%;font-weight:400}.rdt-date-field-position{width:100%;position:relative;display:flex;align-items:center}.rdt-date-field-wrapper{width:100%;flex:1;border-radius:var(--border-radius, var(--corner-radius-s));border:var(--border-width, .0625rem) solid var(--form-border-color, var(--border-subtle));background-color:var(--form-bg-color, var(--background-block-primary));display:flex;align-items:center;gap:0!important}.rdt-date-field-wrapper:focus-within{border-radius:var(--outline-border-radius, var(--corner-radius-xs-nudge));outline:var(--outline-width, .125rem) solid var(--status-focus);outline-offset:var(--outline-offset, .125rem)}.rdt-date-field-wrapper:hover{background-color:var(--form-hover-color, var(--button-outlined-primary-hover))!important}.rdt-date-field-wrapper>*:after{content:\"\";display:block;position:absolute;width:var(--border-width, .0625rem);height:calc(100% + var(--border-width, .0625rem) * 2);left:calc(100% + var(--border-width, .0625rem) / 2);top:calc(-1 * var(--border-width, .0625rem));background-color:var(--border-subtle)}.rdt-date-field-wrapper>*:last-child:after{display:none}.rdt-date-field-wrapper[size=xl] .time{gap:var(--spacing-m)}.rdt-date-field-wrapper[size=xl] .time input{padding-right:var(--padding-horizontal, var(--spacing-m-nudge))!important}.rdt-date-field-wrapper[size=l] .time{gap:var(--spacing-s-nudge)}.rdt-date-field-wrapper[size=l] .time input{padding-right:var(--padding-horizontal, var(--spacing-m))!important}.rdt-date-field-wrapper[size=m] .time{gap:var(--spacing-s)}.rdt-date-field-wrapper[size=m] .time input{padding-right:var(--padding-horizontal, var(--spacing-s-nudge))!important}.rdt-date-field-wrapper[size=s] .time{gap:var(--spacing-xs-nudge)}.rdt-date-field-wrapper[size=s] .time input{padding-right:var(--padding-horizontal, var(--spacing-s))!important;--mat-icon-button-icon-size: 10px}.rdt-date-field-wrapper[size=xs] .time{gap:var(--spacing-xs)}.rdt-date-field-wrapper[size=xs] .time input{padding-right:var(--padding-horizontal, var(--spacing-xs-nudge))!important;--mat-icon-button-icon-size: 10px}.rdt-date-field:focus{outline:none}rdt-gov-date,mat-datepicker-content{--mat-icon-button-icon-size: 24px;--mat-button-text-label-text-font: var(--font-family);--mat-button-text-label-text-size: var(--font-size-body-s);--mat-button-text-label-text-weight: 600;--mat-button-text-label-text-color: var(--text-secondary);--mat-datepicker-calendar-body-label-text-size: var(--font-size-body-s);--mat-datepicker-calendar-body-label-text-weight: 600;--mat-datepicker-calendar-body-label-text-color: var(--text-primary);--mat-datepicker-calendar-text-size: var(--font-size-body-m);--mat-datepicker-calendar-text-font: var(--font-family);--mat-datepicker-calendar-container-background-color: var( --background-neutral-subtle );--mat-datepicker-calendar-container-text-color: var(--text-primary);--mat-datepicker-calendar-container-shape: 8px;--mat-datepicker-calendar-date-text-color: var(--text-primary);--mat-datepicker-calendar-date-selected-state-text-color: var( --color-neutral-0 );--mat-datepicker-calendar-date-today-selected-state-outline-color: var( --color-primary-400 );--mat-datepicker-calendar-container-elevation-shadow: 0px 0px 0px 1px var(--border-subtle);--mat-datepicker-calendar-date-today-outline-color: var( --button-solid-primary );--mat-datepicker-calendar-date-selected-state-background-color: var( --button-solid-primary );--mat-datepicker-calendar-period-button-icon-color: var(--text-primary);--mat-datepicker-calendar-date-hover-state-background-color: var( --background-neutral-subtlest );--mat-datepicker-calendar-header-text-color: var(--text-secondary);--mat-datepicker-calendar-header-text-size: var(--font-size-body-m);--mat-datepicker-calendar-header-text-weight: 600;--mat-tooltip-container-color: var(--color-neutral-950);--mat-tooltip-supporting-text-color: var(--color-neutral-0);--mat-tooltip-container-shape: 8px;--mat-button-text-container-shape: 8px;--mat-sys-on-surface-variant: var(--text-secondary);--mat-sys-primary: var(--button-solid-primary-hover);--mat-sys-dragged-state-layer-opacity: .16;--mat-sys-focus-state-layer-opacity: .12;--mat-sys-hover-state-layer-opacity: .08;--mat-sys-pressed-state-layer-opacity: .12;--mat-timepicker-container-background-color: var(--background-neutral-subtle);--mat-timepicker-container-shape: 8px;--mat-timepicker-container-elevation-shadow: 0px 0px 0px 1px var(--border-subtle);--mat-option-selected-state-layer-color: var(--button-solid-primary-hover);--mat-option-selected-state-label-text-color: var(--color-neutral-0);--mat-datepicker-toggle-active-state-icon-color: var( --mat-datepicker-toggle-icon-color )}rdt-gov-date.ng-invalid.ng-touched,mat-datepicker-content.ng-invalid.ng-touched{--border-subtle: var(--status-error);--mat-datepicker-toggle-icon-color: var(--status-error);--form-value-color: var(--form-state-value-color, var(--text-status-error));--exclamation-mark-display: flex}rdt-gov-date.ng-invalid.ng-touched input::-webkit-calendar-picker-indicator,mat-datepicker-content.ng-invalid.ng-touched input::-webkit-calendar-picker-indicator{filter:brightness(0) saturate(100%) invert(22%) sepia(89%) saturate(1847%) hue-rotate(345deg) brightness(98%) contrast(97%);cursor:pointer}rdt-gov-date.ng-invalid.ng-touched [size=xl],mat-datepicker-content.ng-invalid.ng-touched [size=xl]{--exclamation-mark-width: var(--icon-size-xl);--exclamation-mark-offset: var(--spacing-m-nudge)}rdt-gov-date.ng-invalid.ng-touched [size=l],mat-datepicker-content.ng-invalid.ng-touched [size=l]{--exclamation-mark-width: var(--icon-size-l);--exclamation-mark-offset: var(--spacing-m)}rdt-gov-date.ng-invalid.ng-touched [size=m],mat-datepicker-content.ng-invalid.ng-touched [size=m]{--exclamation-mark-width: var(--icon-size-m);--exclamation-mark-offset: var(--spacing-s-nudge)}rdt-gov-date.ng-invalid.ng-touched [size=s],mat-datepicker-content.ng-invalid.ng-touched [size=s]{--exclamation-mark-width: var(--icon-size-s);--exclamation-mark-offset: var(--spacing-s)}rdt-gov-date.ng-invalid.ng-touched [size=xs],mat-datepicker-content.ng-invalid.ng-touched [size=xs]{--exclamation-mark-width: var(--icon-size-xs);--exclamation-mark-offset: var(--spacing-xs-nudge)}rdt-gov-date.ng-invalid.ng-touched .time input,mat-datepicker-content.ng-invalid.ng-touched .time input{padding-right:0!important}\n"], dependencies: [{ kind: "pipe", type: RdtFormErrorPipe, name: "rdtFormError" }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i1$2.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i1$2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i1$2.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "ngmodule", type: MatTimepickerModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
803
905
  }
804
906
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovDateComponent, decorators: [{
805
907
  type: Component,
806
- args: [{ selector: 'rdt-gov-date', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [RdtFormErrorPipe], providers: [
908
+ args: [{ selector: 'rdt-gov-date', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [
909
+ RdtFormErrorPipe,
910
+ MatDatepickerModule,
911
+ MatTimepickerModule,
912
+ MatInputModule,
913
+ ReactiveFormsModule,
914
+ FormsModule,
915
+ ], providers: [
807
916
  {
808
917
  provide: NG_VALUE_ACCESSOR,
809
918
  useExisting: RdtGovDateComponent,
@@ -817,9 +926,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
817
926
  provide: RdtDateComponent,
818
927
  useExisting: RdtGovDateComponent,
819
928
  },
820
- ], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "@let lPos = labelPosition(); @if(lPos === 'top'){\n<gov-form-label slot=\"left\" size=\"m\" [class.warning-color-gov-label]=\"hasErrors\"\n >{{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n>\n} @switch (mode()) { @case ('date') {\n<gov-form-input\n #govInput\n input-type=\"date\"\n [value]=\"internalValue()\"\n [size]=\"size()\"\n [attr.invalid]=\"invalid() && touched()\"\n [attr.readonly]=\"readonlyInput() ? true : null\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [name]=\"id()\"\n [identifier]=\"id()\"\n (gov-focus)=\"onFocus()\"\n (gov-blur)=\"onBlur()\"\n (gov-input)=\"onDateInput($event.detail.value)\"\n>\n @if(lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if(lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n }\n</gov-form-input>\n} @case ('time') {\n<gov-form-input\n #govInput\n input-type=\"time\"\n [value]=\"internalValue()\"\n [size]=\"size()\"\n [attr.invalid]=\"invalid() && touched()\"\n [attr.readonly]=\"readonlyInput() ? true : null\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [name]=\"id()\"\n [identifier]=\"id()\"\n (gov-focus)=\"onFocus()\"\n (gov-blur)=\"onBlur()\"\n (gov-input)=\"onInternalValueChange($event.detail.value)\"\n>\n @if(lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if(lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n }\n</gov-form-input>\n} @default {\n<gov-form-input\n #govInput\n input-type=\"datetime-local\"\n [value]=\"internalValue()\"\n [size]=\"size()\"\n [attr.invalid]=\"invalid() && touched()\"\n [attr.readonly]=\"readonlyInput() ? true : null\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [name]=\"id()\"\n [identifier]=\"id()\"\n (gov-focus)=\"onFocus()\"\n (gov-blur)=\"onBlur()\"\n (gov-input)=\"setValueFromEvent($event)\"\n>\n @if(lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if(lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n }\n</gov-form-input>\n} } @let hasError = visibleErrors() | rdtFormError; @if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\">{{ hasError }}</gov-form-message>\n}\n", styles: [".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}\n"] }]
929
+ provideDateFnsAdapter(),
930
+ { provide: MatDatepickerIntl, useClass: RdtDatepickerIntl },
931
+ ], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "@let lPos = labelPosition();\n<div class=\"rdt-date-wrapper\" [class]=\"lPos\">\n @if(lPos) {\n <p\n class=\"gov-form-label__label s_label\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n }\n <div class=\"rdt-date-field-wrapper gov-form-input\" [attr.size]=\"size()\">\n @if(type() === 'date' || type() === 'datetime-local'){\n <div class=\"rdt-date-field-position date\">\n <input\n class=\"rdt-date-field\"\n #dateInput\n matInput\n [attr.invalid]=\"invalid() && touched()\"\n [attr.readonly]=\"readonlyInput() ? true : null\"\n [attr.size]=\"size()\"\n [name]=\"name()\"\n [value]=\"internalValue()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [matDatepicker]=\"picker\"\n (focus)=\"onDateInputFocus()\"\n (blur)=\"onDateInputBlur()\"\n (dateInput)=\"onDateInput($event)\"\n (dateChange)=\"onDateInput($event)\"\n />\n <div class=\"gov-form-input__icons\">\n <gov-icon\n class=\"validation-icon gov-icon\"\n name=\"exclamation-lg\"\n type=\"components\"\n [attr.size]=\"size()\"\n >\n </gov-icon>\n </div>\n <mat-datepicker-toggle\n [attr.size]=\"size()\"\n matIconSuffix\n [for]=\"picker\"\n [disableRipple]=\"true\"\n >\n <!-- <mat-icon matDatepickerToggleIcon>keyboard_arrow_down</mat-icon> //moznost vlastni ikonky-->\n </mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </div>\n } @if(type() === 'datetime-local' || type() === 'time'){\n <div class=\"rdt-date-field-position time\">\n <input\n class=\"rdt-date-field\"\n type=\"time\"\n #timeInput\n (input)=\"onTimeChange($event)\"\n matInput\n [attr.invalid]=\"invalid() && touched()\"\n [step]=\"step()\"\n [attr.readonly]=\"readonlyInput() ? true : undefined\"\n [attr.size]=\"size()\"\n [name]=\"name()\"\n [value]=\"internalTimeValue()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n (focus)=\"onTimeInputFocus()\"\n (blur)=\"onTimeInputBlur()\"\n />\n <div class=\"gov-form-input__icons\">\n <gov-icon\n class=\"validation-icon gov-icon\"\n name=\"exclamation-lg\"\n type=\"components\"\n [attr.size]=\"size()\"\n >\n </gov-icon>\n </div>\n </div>\n }\n </div>\n</div>\n@let hasError = visibleErrors() | rdtFormError; @if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\" [attr.size]=\"size()\">\n <gov-icon\n type=\"components\"\n name=\"exclamation-triangle-fill\"\n slot=\"validation-icon\"\n ></gov-icon>\n {{ hasError }}\n</gov-form-message>\n}\n", styles: [".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}\n", ".rdt-date-wrapper mat-datepicker-toggle,.rdt-date-wrapper mat-timepicker-toggle{position:absolute}.rdt-date-wrapper.right{display:flex;align-items:center;flex-direction:row-reverse;gap:var(--gap, var(--spacing-s))}.rdt-date-wrapper.left{display:flex;align-items:center;flex-direction:row;gap:var(--gap, var(--spacing-s))}.rdt-date-wrapper.top{display:flex;flex-direction:column;gap:var(--gap, var(--spacing-xs))}.rdt-date-wrapper .gov-form-input__icons{display:var(--exclamation-mark-display, none)}.rdt-date-wrapper mat-datepicker-toggle,.rdt-date-wrapper mat-timepicker-toggle{--mat-icon-button-touch-target-size: calc( var(--padding-horizontal) + var(--icon-size) + var(--gap) );--mat-icon-button-state-layer-size: var( --mat-icon-button-touch-target-size );right:calc(var(--exclamation-mark-width, 0px) + var(--exclamation-mark-offset, 0px))}.rdt-date-wrapper mat-datepicker-toggle button,.rdt-date-wrapper mat-timepicker-toggle button{display:flex;justify-content:center;align-items:center;height:var(--mat-icon-button-state-layer-size)}.rdt-date-wrapper mat-datepicker-toggle button svg,.rdt-date-wrapper mat-timepicker-toggle button svg{width:var(--icon-size);height:var(--icon-size)}.rdt-date-wrapper mat-datepicker-toggle[size=xl],.rdt-date-wrapper mat-timepicker-toggle[size=xl]{--padding-horizontal: var(--spacing-m-nudge);--icon-size: var(--icon-size-xl);--gap: var(--spacing-m)}.rdt-date-wrapper mat-datepicker-toggle[size=l],.rdt-date-wrapper mat-timepicker-toggle[size=l]{--padding-horizontal: var(--spacing-s-nudge);--icon-size: var(--icon-size-l);--gap: var(--spacing-m)}.rdt-date-wrapper mat-datepicker-toggle[size=m],.rdt-date-wrapper mat-timepicker-toggle[size=m]{--padding-horizontal: var(--spacing-s-nudge);--icon-size: var(--icon-size-m);--gap: var(--spacing-s)}.rdt-date-wrapper mat-datepicker-toggle[size=s],.rdt-date-wrapper mat-timepicker-toggle[size=s]{--padding-horizontal: var(--spacing-xs-nudge);--icon-size: var(--icon-size-s);--gap: var(--spacing-s)}.rdt-date-wrapper mat-datepicker-toggle[size=xs],.rdt-date-wrapper mat-timepicker-toggle[size=xs]{--padding-horizontal: var(--spacing-xs-nudge);--icon-size: var(--icon-size-xs);--gap: var(--spacing-xs)}.rdt-date-field{background-color:transparent;border:none;border-radius:var(--border-radius, var(--corner-radius-s));color:var(--form-value-color, var(--text-primary));font-family:var(--font-family-primary, var(--font-family));width:100%;line-height:150%;font-weight:400}.rdt-date-field-position{width:100%;position:relative;display:flex;align-items:center}.rdt-date-field-wrapper{width:100%;flex:1;border-radius:var(--border-radius, var(--corner-radius-s));border:var(--border-width, .0625rem) solid var(--form-border-color, var(--border-subtle));background-color:var(--form-bg-color, var(--background-block-primary));display:flex;align-items:center;gap:0!important}.rdt-date-field-wrapper:focus-within{border-radius:var(--outline-border-radius, var(--corner-radius-xs-nudge));outline:var(--outline-width, .125rem) solid var(--status-focus);outline-offset:var(--outline-offset, .125rem)}.rdt-date-field-wrapper:hover{background-color:var(--form-hover-color, var(--button-outlined-primary-hover))!important}.rdt-date-field-wrapper>*:after{content:\"\";display:block;position:absolute;width:var(--border-width, .0625rem);height:calc(100% + var(--border-width, .0625rem) * 2);left:calc(100% + var(--border-width, .0625rem) / 2);top:calc(-1 * var(--border-width, .0625rem));background-color:var(--border-subtle)}.rdt-date-field-wrapper>*:last-child:after{display:none}.rdt-date-field-wrapper[size=xl] .time{gap:var(--spacing-m)}.rdt-date-field-wrapper[size=xl] .time input{padding-right:var(--padding-horizontal, var(--spacing-m-nudge))!important}.rdt-date-field-wrapper[size=l] .time{gap:var(--spacing-s-nudge)}.rdt-date-field-wrapper[size=l] .time input{padding-right:var(--padding-horizontal, var(--spacing-m))!important}.rdt-date-field-wrapper[size=m] .time{gap:var(--spacing-s)}.rdt-date-field-wrapper[size=m] .time input{padding-right:var(--padding-horizontal, var(--spacing-s-nudge))!important}.rdt-date-field-wrapper[size=s] .time{gap:var(--spacing-xs-nudge)}.rdt-date-field-wrapper[size=s] .time input{padding-right:var(--padding-horizontal, var(--spacing-s))!important;--mat-icon-button-icon-size: 10px}.rdt-date-field-wrapper[size=xs] .time{gap:var(--spacing-xs)}.rdt-date-field-wrapper[size=xs] .time input{padding-right:var(--padding-horizontal, var(--spacing-xs-nudge))!important;--mat-icon-button-icon-size: 10px}.rdt-date-field:focus{outline:none}rdt-gov-date,mat-datepicker-content{--mat-icon-button-icon-size: 24px;--mat-button-text-label-text-font: var(--font-family);--mat-button-text-label-text-size: var(--font-size-body-s);--mat-button-text-label-text-weight: 600;--mat-button-text-label-text-color: var(--text-secondary);--mat-datepicker-calendar-body-label-text-size: var(--font-size-body-s);--mat-datepicker-calendar-body-label-text-weight: 600;--mat-datepicker-calendar-body-label-text-color: var(--text-primary);--mat-datepicker-calendar-text-size: var(--font-size-body-m);--mat-datepicker-calendar-text-font: var(--font-family);--mat-datepicker-calendar-container-background-color: var( --background-neutral-subtle );--mat-datepicker-calendar-container-text-color: var(--text-primary);--mat-datepicker-calendar-container-shape: 8px;--mat-datepicker-calendar-date-text-color: var(--text-primary);--mat-datepicker-calendar-date-selected-state-text-color: var( --color-neutral-0 );--mat-datepicker-calendar-date-today-selected-state-outline-color: var( --color-primary-400 );--mat-datepicker-calendar-container-elevation-shadow: 0px 0px 0px 1px var(--border-subtle);--mat-datepicker-calendar-date-today-outline-color: var( --button-solid-primary );--mat-datepicker-calendar-date-selected-state-background-color: var( --button-solid-primary );--mat-datepicker-calendar-period-button-icon-color: var(--text-primary);--mat-datepicker-calendar-date-hover-state-background-color: var( --background-neutral-subtlest );--mat-datepicker-calendar-header-text-color: var(--text-secondary);--mat-datepicker-calendar-header-text-size: var(--font-size-body-m);--mat-datepicker-calendar-header-text-weight: 600;--mat-tooltip-container-color: var(--color-neutral-950);--mat-tooltip-supporting-text-color: var(--color-neutral-0);--mat-tooltip-container-shape: 8px;--mat-button-text-container-shape: 8px;--mat-sys-on-surface-variant: var(--text-secondary);--mat-sys-primary: var(--button-solid-primary-hover);--mat-sys-dragged-state-layer-opacity: .16;--mat-sys-focus-state-layer-opacity: .12;--mat-sys-hover-state-layer-opacity: .08;--mat-sys-pressed-state-layer-opacity: .12;--mat-timepicker-container-background-color: var(--background-neutral-subtle);--mat-timepicker-container-shape: 8px;--mat-timepicker-container-elevation-shadow: 0px 0px 0px 1px var(--border-subtle);--mat-option-selected-state-layer-color: var(--button-solid-primary-hover);--mat-option-selected-state-label-text-color: var(--color-neutral-0);--mat-datepicker-toggle-active-state-icon-color: var( --mat-datepicker-toggle-icon-color )}rdt-gov-date.ng-invalid.ng-touched,mat-datepicker-content.ng-invalid.ng-touched{--border-subtle: var(--status-error);--mat-datepicker-toggle-icon-color: var(--status-error);--form-value-color: var(--form-state-value-color, var(--text-status-error));--exclamation-mark-display: flex}rdt-gov-date.ng-invalid.ng-touched input::-webkit-calendar-picker-indicator,mat-datepicker-content.ng-invalid.ng-touched input::-webkit-calendar-picker-indicator{filter:brightness(0) saturate(100%) invert(22%) sepia(89%) saturate(1847%) hue-rotate(345deg) brightness(98%) contrast(97%);cursor:pointer}rdt-gov-date.ng-invalid.ng-touched [size=xl],mat-datepicker-content.ng-invalid.ng-touched [size=xl]{--exclamation-mark-width: var(--icon-size-xl);--exclamation-mark-offset: var(--spacing-m-nudge)}rdt-gov-date.ng-invalid.ng-touched [size=l],mat-datepicker-content.ng-invalid.ng-touched [size=l]{--exclamation-mark-width: var(--icon-size-l);--exclamation-mark-offset: var(--spacing-m)}rdt-gov-date.ng-invalid.ng-touched [size=m],mat-datepicker-content.ng-invalid.ng-touched [size=m]{--exclamation-mark-width: var(--icon-size-m);--exclamation-mark-offset: var(--spacing-s-nudge)}rdt-gov-date.ng-invalid.ng-touched [size=s],mat-datepicker-content.ng-invalid.ng-touched [size=s]{--exclamation-mark-width: var(--icon-size-s);--exclamation-mark-offset: var(--spacing-s)}rdt-gov-date.ng-invalid.ng-touched [size=xs],mat-datepicker-content.ng-invalid.ng-touched [size=xs]{--exclamation-mark-width: var(--icon-size-xs);--exclamation-mark-offset: var(--spacing-xs-nudge)}rdt-gov-date.ng-invalid.ng-touched .time input,mat-datepicker-content.ng-invalid.ng-touched .time input{padding-right:0!important}\n"] }]
821
932
  }] });
822
933
 
934
+ function forceFocus(input) {
935
+ let cnt = 0;
936
+ const maxCnt = 10;
937
+ const int = setInterval(() => {
938
+ input.focus({ preventScroll: true });
939
+ if (cnt === maxCnt || input.matches(':focus')) {
940
+ clearInterval(int);
941
+ }
942
+ cnt++;
943
+ }, 5);
944
+ }
945
+
823
946
  class RdtGovNumberInputComponent extends RdtNumericInputComponent {
824
947
  renderer = inject(Renderer2);
825
948
  govInput = viewChild('govInput');
@@ -905,7 +1028,7 @@ class RdtGovNumberInputComponent extends RdtNumericInputComponent {
905
1028
  provide: RdtBaseFormInputComponent,
906
1029
  useExisting: RdtGovNumberInputComponent,
907
1030
  },
908
- ], viewQueries: [{ propertyName: "govInput", first: true, predicate: ["govInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@let lPos = labelPosition(); @if(lPos === 'top'){\n<gov-form-label slot=\"left\" size=\"m\" [class.warning-color-gov-label]=\"hasError\"\n >{{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n>\n}\n<gov-form-input\n #govInput\n input-type=\"number\"\n [size]=\"size()\"\n [value]=\"internalValue()\"\n [placeholder]=\"placeholder()\"\n [autocomplete]=\"autocomplete()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [invalid]=\"invalid() && touched()\"\n [attr.invalid]=\"invalid() && touched()\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n [attr.disabled]=\"disabled()\"\n [name]=\"id()\"\n [identifier]=\"id()\"\n (gov-input)=\"onInput($event.detail.value)\"\n (gov-focus)=\"onFocus()\"\n (gov-blur)=\"onBlur()\"\n>\n @let lI = iconStart(); @let rI = icon(); @if(lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if(lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if (lI) {\n <span slot=\"icon-start\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: lI }\"></ng-container>\n </span>\n } @if (rI) {\n <span slot=\"icon-end\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: rI }\"></ng-container>\n </span>\n }\n</gov-form-input>\n@let hasError = visibleErrors() | rdtFormError; @if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\">{{ hasError }}</gov-form-message>\n}\n", styles: [".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}\n"], dependencies: [{ kind: "pipe", type: RdtFormErrorPipe, name: "rdtFormError" }, { kind: "directive", type: RdtIconOutletDirective, selector: "[rdtIconOutlet]", exportAs: ["rdtIconOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1031
+ ], viewQueries: [{ propertyName: "govInput", first: true, predicate: ["govInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@let lPos = labelPosition(); @if(lPos === 'top'){\n<gov-form-label slot=\"left\" size=\"m\" [class.warning-color-gov-label]=\"hasError\"\n >{{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n>\n}\n<gov-form-input\n #govInput\n input-type=\"number\"\n [size]=\"size()\"\n [value]=\"internalValue()\"\n [placeholder]=\"placeholder()\"\n [autocomplete]=\"autocomplete()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [invalid]=\"invalid() && touched()\"\n [attr.invalid]=\"invalid() && touched()\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n [attr.disabled]=\"disabled()\"\n [name]=\"id()\"\n [identifier]=\"id()\"\n (gov-input)=\"onInput($event.detail.value)\"\n (gov-focus)=\"onFocus()\"\n (gov-blur)=\"onBlur()\"\n>\n @let lI = iconStart(); @let rI = icon(); @if(lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if(lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if (lI) {\n <span slot=\"icon-start\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: lI }\"></ng-container>\n </span>\n } @if (rI) {\n <span slot=\"icon-end\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: rI }\"></ng-container>\n </span>\n }\n</gov-form-input>\n@let hasError = visibleErrors() | rdtFormError; @if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\" [attr.size]=\"size()\">\n <gov-icon\n type=\"components\"\n name=\"exclamation-triangle-fill\"\n slot=\"validation-icon\"\n ></gov-icon>\n {{ hasError }}\n</gov-form-message>\n}\n", styles: [".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}\n"], dependencies: [{ kind: "pipe", type: RdtFormErrorPipe, name: "rdtFormError" }, { kind: "directive", type: RdtIconOutletDirective, selector: "[rdtIconOutlet]", exportAs: ["rdtIconOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
909
1032
  }
910
1033
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovNumberInputComponent, decorators: [{
911
1034
  type: Component,
@@ -919,7 +1042,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
919
1042
  provide: RdtBaseFormInputComponent,
920
1043
  useExisting: RdtGovNumberInputComponent,
921
1044
  },
922
- ], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "@let lPos = labelPosition(); @if(lPos === 'top'){\n<gov-form-label slot=\"left\" size=\"m\" [class.warning-color-gov-label]=\"hasError\"\n >{{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n>\n}\n<gov-form-input\n #govInput\n input-type=\"number\"\n [size]=\"size()\"\n [value]=\"internalValue()\"\n [placeholder]=\"placeholder()\"\n [autocomplete]=\"autocomplete()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [invalid]=\"invalid() && touched()\"\n [attr.invalid]=\"invalid() && touched()\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n [attr.disabled]=\"disabled()\"\n [name]=\"id()\"\n [identifier]=\"id()\"\n (gov-input)=\"onInput($event.detail.value)\"\n (gov-focus)=\"onFocus()\"\n (gov-blur)=\"onBlur()\"\n>\n @let lI = iconStart(); @let rI = icon(); @if(lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if(lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if (lI) {\n <span slot=\"icon-start\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: lI }\"></ng-container>\n </span>\n } @if (rI) {\n <span slot=\"icon-end\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: rI }\"></ng-container>\n </span>\n }\n</gov-form-input>\n@let hasError = visibleErrors() | rdtFormError; @if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\">{{ hasError }}</gov-form-message>\n}\n", styles: [".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}\n"] }]
1045
+ ], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "@let lPos = labelPosition(); @if(lPos === 'top'){\n<gov-form-label slot=\"left\" size=\"m\" [class.warning-color-gov-label]=\"hasError\"\n >{{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n>\n}\n<gov-form-input\n #govInput\n input-type=\"number\"\n [size]=\"size()\"\n [value]=\"internalValue()\"\n [placeholder]=\"placeholder()\"\n [autocomplete]=\"autocomplete()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [invalid]=\"invalid() && touched()\"\n [attr.invalid]=\"invalid() && touched()\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n [attr.disabled]=\"disabled()\"\n [name]=\"id()\"\n [identifier]=\"id()\"\n (gov-input)=\"onInput($event.detail.value)\"\n (gov-focus)=\"onFocus()\"\n (gov-blur)=\"onBlur()\"\n>\n @let lI = iconStart(); @let rI = icon(); @if(lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if(lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if (lI) {\n <span slot=\"icon-start\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: lI }\"></ng-container>\n </span>\n } @if (rI) {\n <span slot=\"icon-end\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: rI }\"></ng-container>\n </span>\n }\n</gov-form-input>\n@let hasError = visibleErrors() | rdtFormError; @if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\" [attr.size]=\"size()\">\n <gov-icon\n type=\"components\"\n name=\"exclamation-triangle-fill\"\n slot=\"validation-icon\"\n ></gov-icon>\n {{ hasError }}\n</gov-form-message>\n}\n", styles: [".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}\n"] }]
923
1046
  }] });
924
1047
 
925
1048
  class RdtGovSelectOfflineProviderDirective extends RdtSelectOfflineDatasourceProviderDirective {
@@ -1212,7 +1335,7 @@ class RdtGovSelectComponent extends RdtBaseSelectCommonComponent {
1212
1335
  provide: RdtBaseFormInputComponent,
1213
1336
  useExisting: RdtGovSelectComponent,
1214
1337
  },
1215
- ], viewQueries: [{ propertyName: "scrollContainer", first: true, predicate: ["scrollContainer"], descendants: true, isSignal: true }, { propertyName: "selectButton", first: true, predicate: ["selectButton"], descendants: true, isSignal: true }, { propertyName: "overlayTemplate", first: true, predicate: ["overlayContainer"], descendants: true, isSignal: true }, { propertyName: "optionEls", predicate: (RdtSelectOptionDirective), descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@let sel = selectedLabel(); @let lPos = labelPosition(); @let hasError =\nhideErrors() ? '' : visibleErrors() | rdtFormError; @if(lPos === 'top'){\n<gov-form-label slot=\"left\" [class.warning-color-gov-label]=\"hasError\" size=\"s\"\n >{{ label() }}\n @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n>\n}\n<div\n class=\"gov-form-select gov-form-input\"\n [class.has-clear]=\"showClear() && !!sel\"\n [attr.size]=\"size()\"\n [attr.invalid]=\"invalid() && touched()\"\n [attr.disabled]=\"disabled()\"\n>\n @if (lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }}\n @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n }\n <div class=\"element\">\n <button\n #selectButton\n [attr.size]=\"size()\"\n (click)=\"openOverlay()\"\n (keydown)=\"handleButtonKeydown($event)\"\n [disabled]=\"disabled()\"\n class=\"select\"\n type=\"button\"\n (blur)=\"handleButtonBlur()\"\n (focus)=\"onFocus()\"\n >\n <div class=\"scroll-content\" [class.warning-color-text]=\"hasError\">\n @if (sel) {\n {{ sel }}\n } @else if (!disabled() && !readonlyInput()) {\n {{ placeholder() || '&nbsp;' }}\n }\n </div>\n @if (showClear() && sel) {\n <gov-button\n class=\"clear-button\"\n iconStart=\"basic/x\"\n (click)=\"onClearClick($event)\"\n propagate=\"false\"\n buttonType=\"base\"\n color=\"error\"\n [rdtDisabled]=\"disabled()\"\n ></gov-button>\n } @if (loading()) {\n <rdt-spinner />\n } @else { @if(hasError){\n <gov-icon\n name=\"exclamation-lg\"\n class=\"icon-warning\"\n [ngClass]=\"'icon-' + size()\"\n ></gov-icon>\n }\n <gov-icon\n name=\"chevron-down\"\n class=\"icon-arrow\"\n [class.warning-color-icon]=\"hasError\"\n ></gov-icon>\n }\n </button>\n </div>\n @if (lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }}\n @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n }\n</div>\n<ng-template #overlayContainer>\n <div class=\"rdt-gov-select-container\" [attr.data-size]=\"size()\">\n @if (showSearch()) {\n <div class=\"search-container\" [class.loading]=\"loading()\">\n <input\n class=\"gov-form-input\"\n size=\"s\"\n type=\"search\"\n rdtAutofocusOnInit\n [formControl]=\"inputCtrl\"\n (keydown)=\"handleInputKeydown($event)\"\n [placeholder]=\"'RDT_SELECT_ENTER_SEARCH' | rdtTranslate\"\n />\n @if (loading()) {\n <rdt-spinner />\n }\n </div>\n }\n <ul role=\"listbox\" aria-hidden=\"false\" #scrollContainer>\n @for (option of visibleOptions(); track option.id) {\n <li role=\"option\" [attr.aria-selected]=\"option.selected\">\n <button\n tabindex=\"-1\"\n [rdtSelectOption]=\"option.id\"\n (click)=\"selectOption(option.id)\"\n class=\"option\"\n type=\"button\"\n >\n <gov-icon\n name=\"check-lg\"\n [class.invisible]=\"!option.selected\"\n class=\"mr-1 w-4 picked\"\n />\n {{ $any(option.label) | rdtTranslate }}\n </button>\n </li>\n } @empty { @if (loading()) {\n <li class=\"pointer-events-none\">\n <div class=\"option\">\n {{ 'RDT_GOV_SELECT_LOADING_VALUES' | rdtTranslate }}\n </div>\n </li>\n } @else if (store.query()) {\n <li class=\"pointer-events-none\">\n <div class=\"option\">\n {{ 'RDT_GOV_SELECT_NO_VALUES_FOUND' | rdtTranslate }}\n </div>\n </li>\n } @else if (!store.datasource()?.queryRequired) {\n <li class=\"pointer-events-none\">\n <div class=\"option\">\n {{ 'RDT_GOV_SELECT_NO_VALUES_AVAILABLE' | rdtTranslate }}\n </div>\n </li>\n } }\n </ul>\n </div>\n</ng-template>\n@if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\">{{ hasError }}</gov-form-message>\n}\n", styles: [".rdt-option-selected{background:var(--gov-autocomplete-item-hover, var(--color-neutral-600))!important;--text-primary: var(--color-primary-50) !important}.icon-warning{width:var(--icon-size)!important;height:var(--icon-size)!important}.icon-xs{--icon-size: 12px}.icon-s{--icon-size: 14px}.icon-m{--icon-size: 16px}.icon-l{--icon-size: 18px}.icon-xl{--icon-size: 20px}rdt-gov-select{display:inline-block;width:100%;max-width:100%}rdt-gov-select .gov-form-select{width:100%}rdt-gov-select .gov-form-select.has-clear .select{padding-right:calc(1.5rem + var(--spacing-s))!important}rdt-gov-select .gov-form-input{border:none!important;background-color:transparent!important}rdt-gov-select .select{display:flex}rdt-gov-select .select rdt-spinner{position:absolute;right:.5rem;width:1rem;height:1rem}rdt-gov-select [size=xs].gov-form-select .select{min-height:var(--height-component-xs);font-size:var(--font-size-body-xs)}rdt-gov-select [size=xs].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=s].gov-form-select .select{min-height:var(--height-component-s);font-size:var(--font-size-body-s)}rdt-gov-select [size=s].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=m].gov-form-select .select{min-height:var(--height-component-m);font-size:var(--font-size-body-m)}rdt-gov-select [size=m].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=l].gov-form-select .select{min-height:var(--height-component-l);font-size:var(--font-size-body-l)}rdt-gov-select [size=l].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=xl].gov-form-select .select{min-height:var(--height-component-xl);font-size:var(--font-size-body-xl)}rdt-gov-select [size=xl].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=xs].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-xs) var(--spacing-xs-nudge)}rdt-gov-select [size=s].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-s) var(--spacing-s)}rdt-gov-select [size=m].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-m) var(--spacing-s-nudge)}rdt-gov-select [size=l].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-l) var(--spacing-m)}rdt-gov-select [size=xl].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-xl) var(--spacing-m-nudge)}rdt-gov-select .gov-form-select .select{position:relative;border:none;width:100%;border-radius:var(--corner-radius-s);background-color:var(--background-block-primary);font-family:var(--font-family);text-align:left}rdt-gov-select [invalid=true].gov-form-input .select{border-color:var(--background-status-error);color:var(--background-status-error)}rdt-gov-select .icon-arrow{color:var(--text-primary);position:absolute;top:50%;display:flex;justify-content:center;transform:translateY(-50%);pointer-events:none;right:.75rem;width:.75rem;height:.75rem}rdt-gov-select .icon-warning{color:var(--icon-error);position:absolute;top:50%;display:flex;justify-content:center;transform:translateY(-50%);pointer-events:none;right:1.85rem;width:.75rem;height:.75rem}rdt-gov-select .scroll-content{display:flex;align-items:center;color:var(--text-primary);width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}rdt-gov-select .clear-button{display:flex;position:absolute;right:2rem;top:50%;transform:translateY(-50%)}rdt-gov-select .clear-button button{padding:0!important;min-height:auto!important;--icon-size-xs: 1rem}rdt-gov-select .clear-button gov-icon[slot=left-icon]{left:0!important;position:inherit!important;top:0!important;display:inline!important;transform:none!important}rdt-gov-select .element{max-width:100%}.rdt-gov-select-container{width:100%;margin-top:.5rem;margin-bottom:.5rem;overflow:hidden;border:1px solid var(--color-neutral-600);border-radius:0;background-color:var(--background-block-primary)}.rdt-gov-select-container ul{padding-left:0;margin-top:0;margin-bottom:0;list-style:none;max-height:14.0625rem;overflow-x:hidden;overflow-y:auto;overscroll-behavior:none}.rdt-gov-select-container ul .option{font-family:var(--font-family);color:var(--text-primary);border:none;display:flex;align-items:center;padding:.75rem .5rem;width:100%;margin:0;background:none;text-align:left}.rdt-gov-select-container ul .option gov-icon{padding-right:var(--spacing-s)}.rdt-gov-select-container ul .option gov-icon.invisible{display:none}.rdt-gov-select-container ul .option:hover{--text-primary: var(--color-primary-50);background:var(--color-neutral-600)}.rdt-gov-select-container li{margin-bottom:0}.rdt-gov-select-container .picked{color:var(--text-primary)}.rdt-gov-select-container .search-spinner{--spinner-size: 1.2rem;position:absolute;right:1rem;top:100%;transform:translateY(calc(var(--spinner-size) / -2))}.rdt-gov-select-container .search-spinner .sis-icon-32-fix{height:var(--spinner-size)}.rdt-gov-select-container .search-container{width:100%;position:relative}.rdt-gov-select-container .search-container input{font-family:var(--font-family);border-radius:0;border-top:1px;border-left:1px;border-right:1px;padding:.75rem .5rem;width:100%;background-color:var(--background-block-primary);color:var(--text-primary)}.rdt-gov-select-container .search-container input:focus-visible{outline:var(.125rem) solid var(--status-focus);outline-offset:0}.rdt-gov-select-container .search-container.loading input::-webkit-search-cancel-button{position:relative;right:1rem}[data-size=xs].rdt-gov-select-container ul li button{font-size:var(--font-size-body-xs)!important;line-height:var(--height-line-xs);padding:var(--spacing-multiline-vertical-padding-xs)}[data-size=xs].rdt-gov-select-container input{font-size:var(--font-size-body-xs)!important;padding:var(--spacing-multiline-vertical-padding-xs)}[data-size=s].rdt-gov-select-container ul li button{font-size:var(--font-size-body-s)!important;line-height:var(--height-line-s);padding:var(--spacing-multiline-vertical-padding-s)}[data-size=s].rdt-gov-select-container input{font-size:var(--font-size-body-s)!important;padding:var(--spacing-multiline-vertical-padding-s)}[data-size=m].rdt-gov-select-container ul li button{font-size:var(--font-size-body-m)!important;line-height:var(--height-line-m);padding:var(--spacing-multiline-vertical-padding-m)}[data-size=m].rdt-gov-select-container input{font-size:var(--font-size-body-m)!important;padding:var(--spacing-multiline-vertical-padding-m)}[data-size=l].rdt-gov-select-container ul li button{font-size:var(--font-size-body-l)!important;line-height:var(--height-line-l);padding:var(--spacing-multiline-vertical-padding-l)}[data-size=l].rdt-gov-select-container input{font-size:var(--font-size-body-l)!important;padding:var(--spacing-multiline-vertical-padding-l)}[data-size=xl].rdt-gov-select-container ul li button{font-size:var(--font-size-body-xl)!important;line-height:var(--height-line-xl);padding:var(--spacing-multiline-vertical-padding-xl)}[data-size=xl].rdt-gov-select-container input{font-size:var(--font-size-body-xl)!important;padding:var(--spacing-multiline-vertical-padding-xl)}.rdt-gov-select-overlay-panel-top .rdt-gov-select-container{display:flex;flex-direction:column-reverse}\n", ".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}\n"], dependencies: [{ kind: "directive", type: RdtSelectOptionDirective, selector: "[rdtSelectOption]", inputs: ["rdtSelectOption"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: RdtAutoFocusOnInitDirective, selector: "[rdtAutofocusOnInit]" }, { kind: "ngmodule", type: GovDesignSystemModule }, { kind: "component", type: i1.GovButton, selector: "gov-button", inputs: ["color", "disabled", "download", "expanded", "expandedMobile", "focusable", "href", "hreflang", "identifier", "loading", "name", "nativeType", "referrerpolicy", "rel", "size", "target", "type"] }, { kind: "component", type: i1.GovFormLabel, selector: "gov-form-label", inputs: ["identifier", "legend", "required", "size"] }, { kind: "component", type: i1.GovFormMessage, selector: "gov-form-message", inputs: ["color", "size"] }, { kind: "component", type: i1.GovIcon, selector: "gov-icon", inputs: ["color", "name", "size", "type"] }, { kind: "pipe", type: RdtFormErrorPipe, name: "rdtFormError" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: RdtTranslatePipe, name: "rdtTranslate" }], encapsulation: i0.ViewEncapsulation.None });
1338
+ ], viewQueries: [{ propertyName: "scrollContainer", first: true, predicate: ["scrollContainer"], descendants: true, isSignal: true }, { propertyName: "selectButton", first: true, predicate: ["selectButton"], descendants: true, isSignal: true }, { propertyName: "overlayTemplate", first: true, predicate: ["overlayContainer"], descendants: true, isSignal: true }, { propertyName: "optionEls", predicate: (RdtSelectOptionDirective), descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@let sel = selectedLabel(); @let lPos = labelPosition(); @let hasError =\nhideErrors() ? '' : visibleErrors() | rdtFormError; @if(lPos === 'top'){\n<gov-form-label slot=\"left\" [class.warning-color-gov-label]=\"hasError\" size=\"s\"\n >{{ label() }}\n @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n>\n}\n<div\n class=\"gov-form-select gov-form-input\"\n [class.has-clear]=\"showClear() && !!sel\"\n [attr.size]=\"size()\"\n [attr.invalid]=\"invalid() && touched()\"\n [attr.disabled]=\"disabled()\"\n>\n @if (lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }}\n @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n }\n <div class=\"element\">\n <button\n #selectButton\n [attr.size]=\"size()\"\n (click)=\"openOverlay()\"\n (keydown)=\"handleButtonKeydown($event)\"\n [disabled]=\"disabled()\"\n class=\"select\"\n type=\"button\"\n (blur)=\"handleButtonBlur()\"\n (focus)=\"onFocus()\"\n >\n <div class=\"scroll-content\" [class.warning-color-text]=\"hasError\">\n @if (sel) {\n {{ sel }}\n } @else if (!disabled() && !readonlyInput()) {\n {{ placeholder() || '&nbsp;' }}\n }\n </div>\n @if (showClear() && sel) {\n <gov-button\n class=\"clear-button\"\n iconStart=\"basic/x\"\n (click)=\"onClearClick($event)\"\n propagate=\"false\"\n buttonType=\"base\"\n color=\"error\"\n [rdtDisabled]=\"disabled()\"\n ></gov-button>\n } @if (loading()) {\n <rdt-spinner />\n } @else { @if(hasError){\n <gov-icon\n name=\"exclamation-lg\"\n class=\"icon-warning\"\n [ngClass]=\"'icon-' + size()\"\n ></gov-icon>\n }\n <gov-icon\n name=\"chevron-down\"\n class=\"icon-arrow\"\n [class.warning-color-icon]=\"hasError\"\n ></gov-icon>\n }\n </button>\n </div>\n @if (lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }}\n @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n }\n</div>\n<ng-template #overlayContainer>\n <div class=\"rdt-gov-select-container\" [attr.data-size]=\"size()\">\n @if (showSearch()) {\n <div class=\"search-container\" [class.loading]=\"loading()\">\n <input\n class=\"gov-form-input\"\n size=\"s\"\n type=\"search\"\n rdtAutofocusOnInit\n [formControl]=\"inputCtrl\"\n (keydown)=\"handleInputKeydown($event)\"\n [placeholder]=\"'RDT_SELECT_ENTER_SEARCH' | rdtTranslate\"\n />\n @if (loading()) {\n <rdt-spinner />\n }\n </div>\n }\n <ul role=\"listbox\" aria-hidden=\"false\" #scrollContainer>\n @for (option of visibleOptions(); track option.id) {\n <li role=\"option\" [attr.aria-selected]=\"option.selected\">\n <button\n tabindex=\"-1\"\n [rdtSelectOption]=\"option.id\"\n (click)=\"selectOption(option.id)\"\n class=\"option\"\n type=\"button\"\n >\n <gov-icon\n name=\"check-lg\"\n [class.invisible]=\"!option.selected\"\n class=\"mr-1 w-4 picked\"\n />\n {{ $any(option.label) | rdtTranslate }}\n </button>\n </li>\n } @empty { @if (loading()) {\n <li class=\"pointer-events-none\">\n <div class=\"option\">\n {{ 'RDT_GOV_SELECT_LOADING_VALUES' | rdtTranslate }}\n </div>\n </li>\n } @else if (store.query()) {\n <li class=\"pointer-events-none\">\n <div class=\"option\">\n {{ 'RDT_GOV_SELECT_NO_VALUES_FOUND' | rdtTranslate }}\n </div>\n </li>\n } @else if (!store.datasource()?.queryRequired) {\n <li class=\"pointer-events-none\">\n <div class=\"option\">\n {{ 'RDT_GOV_SELECT_NO_VALUES_AVAILABLE' | rdtTranslate }}\n </div>\n </li>\n } }\n </ul>\n </div>\n</ng-template>\n@if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\" [attr.size]=\"size()\">\n <gov-icon\n type=\"components\"\n name=\"exclamation-triangle-fill\"\n slot=\"validation-icon\"\n ></gov-icon>\n {{ hasError }}\n</gov-form-message>\n}\n", styles: [".rdt-option-selected{background:var(--gov-autocomplete-item-hover, var(--color-neutral-600))!important;--text-primary: var(--color-primary-50) !important}.icon-warning{width:var(--icon-size)!important;height:var(--icon-size)!important}.icon-xs{--icon-size: 12px}.icon-s{--icon-size: 14px}.icon-m{--icon-size: 16px}.icon-l{--icon-size: 18px}.icon-xl{--icon-size: 20px}rdt-gov-select{display:inline-block;width:100%;max-width:100%}rdt-gov-select .gov-form-select{width:100%}rdt-gov-select .gov-form-select.has-clear .select{padding-right:calc(1.5rem + var(--spacing-s))!important}rdt-gov-select .gov-form-input{border:none!important;background-color:transparent!important}rdt-gov-select .select{display:flex}rdt-gov-select .select rdt-spinner{position:absolute;right:.5rem;width:1rem;height:1rem}rdt-gov-select [size=xs].gov-form-select .select{min-height:var(--height-component-xs);font-size:var(--font-size-body-xs)}rdt-gov-select [size=xs].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=s].gov-form-select .select{min-height:var(--height-component-s);font-size:var(--font-size-body-s)}rdt-gov-select [size=s].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=m].gov-form-select .select{min-height:var(--height-component-m);font-size:var(--font-size-body-m)}rdt-gov-select [size=m].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=l].gov-form-select .select{min-height:var(--height-component-l);font-size:var(--font-size-body-l)}rdt-gov-select [size=l].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=xl].gov-form-select .select{min-height:var(--height-component-xl);font-size:var(--font-size-body-xl)}rdt-gov-select [size=xl].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=xs].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-xs) var(--spacing-xs-nudge)}rdt-gov-select [size=s].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-s) var(--spacing-s)}rdt-gov-select [size=m].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-m) var(--spacing-s-nudge)}rdt-gov-select [size=l].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-l) var(--spacing-m)}rdt-gov-select [size=xl].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-xl) var(--spacing-m-nudge)}rdt-gov-select .gov-form-select .select{position:relative;border:none;width:100%;border-radius:var(--corner-radius-s);background-color:var(--background-block-primary);font-family:var(--font-family);text-align:left}rdt-gov-select [invalid=true].gov-form-input .select{border-color:var(--background-status-error);color:var(--background-status-error)}rdt-gov-select .icon-arrow{color:var(--text-primary);position:absolute;top:50%;display:flex;justify-content:center;transform:translateY(-50%);pointer-events:none;right:.75rem;width:.75rem;height:.75rem}rdt-gov-select .icon-warning{color:var(--icon-error);position:absolute;top:50%;display:flex;justify-content:center;transform:translateY(-50%);pointer-events:none;right:1.85rem;width:.75rem;height:.75rem}rdt-gov-select .scroll-content{display:flex;align-items:center;color:var(--text-primary);width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}rdt-gov-select .clear-button{display:flex;position:absolute;right:2rem;top:50%;transform:translateY(-50%)}rdt-gov-select .clear-button button{padding:0!important;min-height:auto!important;--icon-size-xs: 1rem}rdt-gov-select .clear-button gov-icon[slot=left-icon]{left:0!important;position:inherit!important;top:0!important;display:inline!important;transform:none!important}rdt-gov-select .element{max-width:100%}.rdt-gov-select-container{width:100%;margin-top:.5rem;margin-bottom:.5rem;overflow:hidden;border:1px solid var(--color-neutral-600);border-radius:0;background-color:var(--background-block-primary)}.rdt-gov-select-container ul{padding-left:0;margin-top:0;margin-bottom:0;list-style:none;max-height:14.0625rem;overflow-x:hidden;overflow-y:auto;overscroll-behavior:none}.rdt-gov-select-container ul .option{font-family:var(--font-family);color:var(--text-primary);border:none;display:flex;align-items:center;padding:.75rem .5rem;width:100%;margin:0;background:none;text-align:left}.rdt-gov-select-container ul .option gov-icon{padding-right:var(--spacing-s)}.rdt-gov-select-container ul .option gov-icon.invisible{display:none}.rdt-gov-select-container ul .option:hover{--text-primary: var(--color-primary-50);background:var(--color-neutral-600)}.rdt-gov-select-container li{margin-bottom:0}.rdt-gov-select-container .picked{color:var(--text-primary)}.rdt-gov-select-container .search-spinner{--spinner-size: 1.2rem;position:absolute;right:1rem;top:100%;transform:translateY(calc(var(--spinner-size) / -2))}.rdt-gov-select-container .search-spinner .sis-icon-32-fix{height:var(--spinner-size)}.rdt-gov-select-container .search-container{width:100%;position:relative}.rdt-gov-select-container .search-container input{font-family:var(--font-family);border-radius:0;border-top:1px;border-left:1px;border-right:1px;padding:.75rem .5rem;width:100%;background-color:var(--background-block-primary);color:var(--text-primary)}.rdt-gov-select-container .search-container input:focus-visible{outline:var(.125rem) solid var(--status-focus);outline-offset:0}.rdt-gov-select-container .search-container.loading input::-webkit-search-cancel-button{position:relative;right:1rem}[data-size=xs].rdt-gov-select-container ul li button{font-size:var(--font-size-body-xs)!important;line-height:var(--height-line-xs);padding:var(--spacing-multiline-vertical-padding-xs)}[data-size=xs].rdt-gov-select-container input{font-size:var(--font-size-body-xs)!important;padding:var(--spacing-multiline-vertical-padding-xs)}[data-size=s].rdt-gov-select-container ul li button{font-size:var(--font-size-body-s)!important;line-height:var(--height-line-s);padding:var(--spacing-multiline-vertical-padding-s)}[data-size=s].rdt-gov-select-container input{font-size:var(--font-size-body-s)!important;padding:var(--spacing-multiline-vertical-padding-s)}[data-size=m].rdt-gov-select-container ul li button{font-size:var(--font-size-body-m)!important;line-height:var(--height-line-m);padding:var(--spacing-multiline-vertical-padding-m)}[data-size=m].rdt-gov-select-container input{font-size:var(--font-size-body-m)!important;padding:var(--spacing-multiline-vertical-padding-m)}[data-size=l].rdt-gov-select-container ul li button{font-size:var(--font-size-body-l)!important;line-height:var(--height-line-l);padding:var(--spacing-multiline-vertical-padding-l)}[data-size=l].rdt-gov-select-container input{font-size:var(--font-size-body-l)!important;padding:var(--spacing-multiline-vertical-padding-l)}[data-size=xl].rdt-gov-select-container ul li button{font-size:var(--font-size-body-xl)!important;line-height:var(--height-line-xl);padding:var(--spacing-multiline-vertical-padding-xl)}[data-size=xl].rdt-gov-select-container input{font-size:var(--font-size-body-xl)!important;padding:var(--spacing-multiline-vertical-padding-xl)}.rdt-gov-select-overlay-panel-top .rdt-gov-select-container{display:flex;flex-direction:column-reverse}\n", ".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}\n"], dependencies: [{ kind: "directive", type: RdtSelectOptionDirective, selector: "[rdtSelectOption]", inputs: ["rdtSelectOption"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: RdtAutoFocusOnInitDirective, selector: "[rdtAutofocusOnInit]" }, { kind: "ngmodule", type: GovDesignSystemModule }, { kind: "component", type: i1.GovButton, selector: "gov-button", inputs: ["color", "disabled", "download", "expanded", "expandedMobile", "focusable", "href", "hreflang", "identifier", "loading", "name", "nativeType", "referrerpolicy", "rel", "size", "target", "type"] }, { kind: "component", type: i1.GovFormLabel, selector: "gov-form-label", inputs: ["identifier", "legend", "required", "size"] }, { kind: "component", type: i1.GovFormMessage, selector: "gov-form-message", inputs: ["color", "size"] }, { kind: "component", type: i1.GovIcon, selector: "gov-icon", inputs: ["color", "name", "size", "type"] }, { kind: "pipe", type: RdtFormErrorPipe, name: "rdtFormError" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: RdtTranslatePipe, name: "rdtTranslate" }], encapsulation: i0.ViewEncapsulation.None });
1216
1339
  }
1217
1340
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovSelectComponent, decorators: [{
1218
1341
  type: Component,
@@ -1243,7 +1366,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
1243
1366
  provide: RdtBaseFormInputComponent,
1244
1367
  useExisting: RdtGovSelectComponent,
1245
1368
  },
1246
- ], schemas: [CUSTOM_ELEMENTS_SCHEMA], encapsulation: ViewEncapsulation.None, template: "@let sel = selectedLabel(); @let lPos = labelPosition(); @let hasError =\nhideErrors() ? '' : visibleErrors() | rdtFormError; @if(lPos === 'top'){\n<gov-form-label slot=\"left\" [class.warning-color-gov-label]=\"hasError\" size=\"s\"\n >{{ label() }}\n @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n>\n}\n<div\n class=\"gov-form-select gov-form-input\"\n [class.has-clear]=\"showClear() && !!sel\"\n [attr.size]=\"size()\"\n [attr.invalid]=\"invalid() && touched()\"\n [attr.disabled]=\"disabled()\"\n>\n @if (lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }}\n @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n }\n <div class=\"element\">\n <button\n #selectButton\n [attr.size]=\"size()\"\n (click)=\"openOverlay()\"\n (keydown)=\"handleButtonKeydown($event)\"\n [disabled]=\"disabled()\"\n class=\"select\"\n type=\"button\"\n (blur)=\"handleButtonBlur()\"\n (focus)=\"onFocus()\"\n >\n <div class=\"scroll-content\" [class.warning-color-text]=\"hasError\">\n @if (sel) {\n {{ sel }}\n } @else if (!disabled() && !readonlyInput()) {\n {{ placeholder() || '&nbsp;' }}\n }\n </div>\n @if (showClear() && sel) {\n <gov-button\n class=\"clear-button\"\n iconStart=\"basic/x\"\n (click)=\"onClearClick($event)\"\n propagate=\"false\"\n buttonType=\"base\"\n color=\"error\"\n [rdtDisabled]=\"disabled()\"\n ></gov-button>\n } @if (loading()) {\n <rdt-spinner />\n } @else { @if(hasError){\n <gov-icon\n name=\"exclamation-lg\"\n class=\"icon-warning\"\n [ngClass]=\"'icon-' + size()\"\n ></gov-icon>\n }\n <gov-icon\n name=\"chevron-down\"\n class=\"icon-arrow\"\n [class.warning-color-icon]=\"hasError\"\n ></gov-icon>\n }\n </button>\n </div>\n @if (lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }}\n @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n }\n</div>\n<ng-template #overlayContainer>\n <div class=\"rdt-gov-select-container\" [attr.data-size]=\"size()\">\n @if (showSearch()) {\n <div class=\"search-container\" [class.loading]=\"loading()\">\n <input\n class=\"gov-form-input\"\n size=\"s\"\n type=\"search\"\n rdtAutofocusOnInit\n [formControl]=\"inputCtrl\"\n (keydown)=\"handleInputKeydown($event)\"\n [placeholder]=\"'RDT_SELECT_ENTER_SEARCH' | rdtTranslate\"\n />\n @if (loading()) {\n <rdt-spinner />\n }\n </div>\n }\n <ul role=\"listbox\" aria-hidden=\"false\" #scrollContainer>\n @for (option of visibleOptions(); track option.id) {\n <li role=\"option\" [attr.aria-selected]=\"option.selected\">\n <button\n tabindex=\"-1\"\n [rdtSelectOption]=\"option.id\"\n (click)=\"selectOption(option.id)\"\n class=\"option\"\n type=\"button\"\n >\n <gov-icon\n name=\"check-lg\"\n [class.invisible]=\"!option.selected\"\n class=\"mr-1 w-4 picked\"\n />\n {{ $any(option.label) | rdtTranslate }}\n </button>\n </li>\n } @empty { @if (loading()) {\n <li class=\"pointer-events-none\">\n <div class=\"option\">\n {{ 'RDT_GOV_SELECT_LOADING_VALUES' | rdtTranslate }}\n </div>\n </li>\n } @else if (store.query()) {\n <li class=\"pointer-events-none\">\n <div class=\"option\">\n {{ 'RDT_GOV_SELECT_NO_VALUES_FOUND' | rdtTranslate }}\n </div>\n </li>\n } @else if (!store.datasource()?.queryRequired) {\n <li class=\"pointer-events-none\">\n <div class=\"option\">\n {{ 'RDT_GOV_SELECT_NO_VALUES_AVAILABLE' | rdtTranslate }}\n </div>\n </li>\n } }\n </ul>\n </div>\n</ng-template>\n@if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\">{{ hasError }}</gov-form-message>\n}\n", styles: [".rdt-option-selected{background:var(--gov-autocomplete-item-hover, var(--color-neutral-600))!important;--text-primary: var(--color-primary-50) !important}.icon-warning{width:var(--icon-size)!important;height:var(--icon-size)!important}.icon-xs{--icon-size: 12px}.icon-s{--icon-size: 14px}.icon-m{--icon-size: 16px}.icon-l{--icon-size: 18px}.icon-xl{--icon-size: 20px}rdt-gov-select{display:inline-block;width:100%;max-width:100%}rdt-gov-select .gov-form-select{width:100%}rdt-gov-select .gov-form-select.has-clear .select{padding-right:calc(1.5rem + var(--spacing-s))!important}rdt-gov-select .gov-form-input{border:none!important;background-color:transparent!important}rdt-gov-select .select{display:flex}rdt-gov-select .select rdt-spinner{position:absolute;right:.5rem;width:1rem;height:1rem}rdt-gov-select [size=xs].gov-form-select .select{min-height:var(--height-component-xs);font-size:var(--font-size-body-xs)}rdt-gov-select [size=xs].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=s].gov-form-select .select{min-height:var(--height-component-s);font-size:var(--font-size-body-s)}rdt-gov-select [size=s].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=m].gov-form-select .select{min-height:var(--height-component-m);font-size:var(--font-size-body-m)}rdt-gov-select [size=m].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=l].gov-form-select .select{min-height:var(--height-component-l);font-size:var(--font-size-body-l)}rdt-gov-select [size=l].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=xl].gov-form-select .select{min-height:var(--height-component-xl);font-size:var(--font-size-body-xl)}rdt-gov-select [size=xl].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=xs].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-xs) var(--spacing-xs-nudge)}rdt-gov-select [size=s].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-s) var(--spacing-s)}rdt-gov-select [size=m].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-m) var(--spacing-s-nudge)}rdt-gov-select [size=l].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-l) var(--spacing-m)}rdt-gov-select [size=xl].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-xl) var(--spacing-m-nudge)}rdt-gov-select .gov-form-select .select{position:relative;border:none;width:100%;border-radius:var(--corner-radius-s);background-color:var(--background-block-primary);font-family:var(--font-family);text-align:left}rdt-gov-select [invalid=true].gov-form-input .select{border-color:var(--background-status-error);color:var(--background-status-error)}rdt-gov-select .icon-arrow{color:var(--text-primary);position:absolute;top:50%;display:flex;justify-content:center;transform:translateY(-50%);pointer-events:none;right:.75rem;width:.75rem;height:.75rem}rdt-gov-select .icon-warning{color:var(--icon-error);position:absolute;top:50%;display:flex;justify-content:center;transform:translateY(-50%);pointer-events:none;right:1.85rem;width:.75rem;height:.75rem}rdt-gov-select .scroll-content{display:flex;align-items:center;color:var(--text-primary);width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}rdt-gov-select .clear-button{display:flex;position:absolute;right:2rem;top:50%;transform:translateY(-50%)}rdt-gov-select .clear-button button{padding:0!important;min-height:auto!important;--icon-size-xs: 1rem}rdt-gov-select .clear-button gov-icon[slot=left-icon]{left:0!important;position:inherit!important;top:0!important;display:inline!important;transform:none!important}rdt-gov-select .element{max-width:100%}.rdt-gov-select-container{width:100%;margin-top:.5rem;margin-bottom:.5rem;overflow:hidden;border:1px solid var(--color-neutral-600);border-radius:0;background-color:var(--background-block-primary)}.rdt-gov-select-container ul{padding-left:0;margin-top:0;margin-bottom:0;list-style:none;max-height:14.0625rem;overflow-x:hidden;overflow-y:auto;overscroll-behavior:none}.rdt-gov-select-container ul .option{font-family:var(--font-family);color:var(--text-primary);border:none;display:flex;align-items:center;padding:.75rem .5rem;width:100%;margin:0;background:none;text-align:left}.rdt-gov-select-container ul .option gov-icon{padding-right:var(--spacing-s)}.rdt-gov-select-container ul .option gov-icon.invisible{display:none}.rdt-gov-select-container ul .option:hover{--text-primary: var(--color-primary-50);background:var(--color-neutral-600)}.rdt-gov-select-container li{margin-bottom:0}.rdt-gov-select-container .picked{color:var(--text-primary)}.rdt-gov-select-container .search-spinner{--spinner-size: 1.2rem;position:absolute;right:1rem;top:100%;transform:translateY(calc(var(--spinner-size) / -2))}.rdt-gov-select-container .search-spinner .sis-icon-32-fix{height:var(--spinner-size)}.rdt-gov-select-container .search-container{width:100%;position:relative}.rdt-gov-select-container .search-container input{font-family:var(--font-family);border-radius:0;border-top:1px;border-left:1px;border-right:1px;padding:.75rem .5rem;width:100%;background-color:var(--background-block-primary);color:var(--text-primary)}.rdt-gov-select-container .search-container input:focus-visible{outline:var(.125rem) solid var(--status-focus);outline-offset:0}.rdt-gov-select-container .search-container.loading input::-webkit-search-cancel-button{position:relative;right:1rem}[data-size=xs].rdt-gov-select-container ul li button{font-size:var(--font-size-body-xs)!important;line-height:var(--height-line-xs);padding:var(--spacing-multiline-vertical-padding-xs)}[data-size=xs].rdt-gov-select-container input{font-size:var(--font-size-body-xs)!important;padding:var(--spacing-multiline-vertical-padding-xs)}[data-size=s].rdt-gov-select-container ul li button{font-size:var(--font-size-body-s)!important;line-height:var(--height-line-s);padding:var(--spacing-multiline-vertical-padding-s)}[data-size=s].rdt-gov-select-container input{font-size:var(--font-size-body-s)!important;padding:var(--spacing-multiline-vertical-padding-s)}[data-size=m].rdt-gov-select-container ul li button{font-size:var(--font-size-body-m)!important;line-height:var(--height-line-m);padding:var(--spacing-multiline-vertical-padding-m)}[data-size=m].rdt-gov-select-container input{font-size:var(--font-size-body-m)!important;padding:var(--spacing-multiline-vertical-padding-m)}[data-size=l].rdt-gov-select-container ul li button{font-size:var(--font-size-body-l)!important;line-height:var(--height-line-l);padding:var(--spacing-multiline-vertical-padding-l)}[data-size=l].rdt-gov-select-container input{font-size:var(--font-size-body-l)!important;padding:var(--spacing-multiline-vertical-padding-l)}[data-size=xl].rdt-gov-select-container ul li button{font-size:var(--font-size-body-xl)!important;line-height:var(--height-line-xl);padding:var(--spacing-multiline-vertical-padding-xl)}[data-size=xl].rdt-gov-select-container input{font-size:var(--font-size-body-xl)!important;padding:var(--spacing-multiline-vertical-padding-xl)}.rdt-gov-select-overlay-panel-top .rdt-gov-select-container{display:flex;flex-direction:column-reverse}\n", ".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}\n"] }]
1369
+ ], schemas: [CUSTOM_ELEMENTS_SCHEMA], encapsulation: ViewEncapsulation.None, template: "@let sel = selectedLabel(); @let lPos = labelPosition(); @let hasError =\nhideErrors() ? '' : visibleErrors() | rdtFormError; @if(lPos === 'top'){\n<gov-form-label slot=\"left\" [class.warning-color-gov-label]=\"hasError\" size=\"s\"\n >{{ label() }}\n @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n>\n}\n<div\n class=\"gov-form-select gov-form-input\"\n [class.has-clear]=\"showClear() && !!sel\"\n [attr.size]=\"size()\"\n [attr.invalid]=\"invalid() && touched()\"\n [attr.disabled]=\"disabled()\"\n>\n @if (lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }}\n @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n }\n <div class=\"element\">\n <button\n #selectButton\n [attr.size]=\"size()\"\n (click)=\"openOverlay()\"\n (keydown)=\"handleButtonKeydown($event)\"\n [disabled]=\"disabled()\"\n class=\"select\"\n type=\"button\"\n (blur)=\"handleButtonBlur()\"\n (focus)=\"onFocus()\"\n >\n <div class=\"scroll-content\" [class.warning-color-text]=\"hasError\">\n @if (sel) {\n {{ sel }}\n } @else if (!disabled() && !readonlyInput()) {\n {{ placeholder() || '&nbsp;' }}\n }\n </div>\n @if (showClear() && sel) {\n <gov-button\n class=\"clear-button\"\n iconStart=\"basic/x\"\n (click)=\"onClearClick($event)\"\n propagate=\"false\"\n buttonType=\"base\"\n color=\"error\"\n [rdtDisabled]=\"disabled()\"\n ></gov-button>\n } @if (loading()) {\n <rdt-spinner />\n } @else { @if(hasError){\n <gov-icon\n name=\"exclamation-lg\"\n class=\"icon-warning\"\n [ngClass]=\"'icon-' + size()\"\n ></gov-icon>\n }\n <gov-icon\n name=\"chevron-down\"\n class=\"icon-arrow\"\n [class.warning-color-icon]=\"hasError\"\n ></gov-icon>\n }\n </button>\n </div>\n @if (lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }}\n @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n }\n</div>\n<ng-template #overlayContainer>\n <div class=\"rdt-gov-select-container\" [attr.data-size]=\"size()\">\n @if (showSearch()) {\n <div class=\"search-container\" [class.loading]=\"loading()\">\n <input\n class=\"gov-form-input\"\n size=\"s\"\n type=\"search\"\n rdtAutofocusOnInit\n [formControl]=\"inputCtrl\"\n (keydown)=\"handleInputKeydown($event)\"\n [placeholder]=\"'RDT_SELECT_ENTER_SEARCH' | rdtTranslate\"\n />\n @if (loading()) {\n <rdt-spinner />\n }\n </div>\n }\n <ul role=\"listbox\" aria-hidden=\"false\" #scrollContainer>\n @for (option of visibleOptions(); track option.id) {\n <li role=\"option\" [attr.aria-selected]=\"option.selected\">\n <button\n tabindex=\"-1\"\n [rdtSelectOption]=\"option.id\"\n (click)=\"selectOption(option.id)\"\n class=\"option\"\n type=\"button\"\n >\n <gov-icon\n name=\"check-lg\"\n [class.invisible]=\"!option.selected\"\n class=\"mr-1 w-4 picked\"\n />\n {{ $any(option.label) | rdtTranslate }}\n </button>\n </li>\n } @empty { @if (loading()) {\n <li class=\"pointer-events-none\">\n <div class=\"option\">\n {{ 'RDT_GOV_SELECT_LOADING_VALUES' | rdtTranslate }}\n </div>\n </li>\n } @else if (store.query()) {\n <li class=\"pointer-events-none\">\n <div class=\"option\">\n {{ 'RDT_GOV_SELECT_NO_VALUES_FOUND' | rdtTranslate }}\n </div>\n </li>\n } @else if (!store.datasource()?.queryRequired) {\n <li class=\"pointer-events-none\">\n <div class=\"option\">\n {{ 'RDT_GOV_SELECT_NO_VALUES_AVAILABLE' | rdtTranslate }}\n </div>\n </li>\n } }\n </ul>\n </div>\n</ng-template>\n@if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\" [attr.size]=\"size()\">\n <gov-icon\n type=\"components\"\n name=\"exclamation-triangle-fill\"\n slot=\"validation-icon\"\n ></gov-icon>\n {{ hasError }}\n</gov-form-message>\n}\n", styles: [".rdt-option-selected{background:var(--gov-autocomplete-item-hover, var(--color-neutral-600))!important;--text-primary: var(--color-primary-50) !important}.icon-warning{width:var(--icon-size)!important;height:var(--icon-size)!important}.icon-xs{--icon-size: 12px}.icon-s{--icon-size: 14px}.icon-m{--icon-size: 16px}.icon-l{--icon-size: 18px}.icon-xl{--icon-size: 20px}rdt-gov-select{display:inline-block;width:100%;max-width:100%}rdt-gov-select .gov-form-select{width:100%}rdt-gov-select .gov-form-select.has-clear .select{padding-right:calc(1.5rem + var(--spacing-s))!important}rdt-gov-select .gov-form-input{border:none!important;background-color:transparent!important}rdt-gov-select .select{display:flex}rdt-gov-select .select rdt-spinner{position:absolute;right:.5rem;width:1rem;height:1rem}rdt-gov-select [size=xs].gov-form-select .select{min-height:var(--height-component-xs);font-size:var(--font-size-body-xs)}rdt-gov-select [size=xs].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=s].gov-form-select .select{min-height:var(--height-component-s);font-size:var(--font-size-body-s)}rdt-gov-select [size=s].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=m].gov-form-select .select{min-height:var(--height-component-m);font-size:var(--font-size-body-m)}rdt-gov-select [size=m].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=l].gov-form-select .select{min-height:var(--height-component-l);font-size:var(--font-size-body-l)}rdt-gov-select [size=l].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=xl].gov-form-select .select{min-height:var(--height-component-xl);font-size:var(--font-size-body-xl)}rdt-gov-select [size=xl].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=xs].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-xs) var(--spacing-xs-nudge)}rdt-gov-select [size=s].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-s) var(--spacing-s)}rdt-gov-select [size=m].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-m) var(--spacing-s-nudge)}rdt-gov-select [size=l].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-l) var(--spacing-m)}rdt-gov-select [size=xl].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-xl) var(--spacing-m-nudge)}rdt-gov-select .gov-form-select .select{position:relative;border:none;width:100%;border-radius:var(--corner-radius-s);background-color:var(--background-block-primary);font-family:var(--font-family);text-align:left}rdt-gov-select [invalid=true].gov-form-input .select{border-color:var(--background-status-error);color:var(--background-status-error)}rdt-gov-select .icon-arrow{color:var(--text-primary);position:absolute;top:50%;display:flex;justify-content:center;transform:translateY(-50%);pointer-events:none;right:.75rem;width:.75rem;height:.75rem}rdt-gov-select .icon-warning{color:var(--icon-error);position:absolute;top:50%;display:flex;justify-content:center;transform:translateY(-50%);pointer-events:none;right:1.85rem;width:.75rem;height:.75rem}rdt-gov-select .scroll-content{display:flex;align-items:center;color:var(--text-primary);width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}rdt-gov-select .clear-button{display:flex;position:absolute;right:2rem;top:50%;transform:translateY(-50%)}rdt-gov-select .clear-button button{padding:0!important;min-height:auto!important;--icon-size-xs: 1rem}rdt-gov-select .clear-button gov-icon[slot=left-icon]{left:0!important;position:inherit!important;top:0!important;display:inline!important;transform:none!important}rdt-gov-select .element{max-width:100%}.rdt-gov-select-container{width:100%;margin-top:.5rem;margin-bottom:.5rem;overflow:hidden;border:1px solid var(--color-neutral-600);border-radius:0;background-color:var(--background-block-primary)}.rdt-gov-select-container ul{padding-left:0;margin-top:0;margin-bottom:0;list-style:none;max-height:14.0625rem;overflow-x:hidden;overflow-y:auto;overscroll-behavior:none}.rdt-gov-select-container ul .option{font-family:var(--font-family);color:var(--text-primary);border:none;display:flex;align-items:center;padding:.75rem .5rem;width:100%;margin:0;background:none;text-align:left}.rdt-gov-select-container ul .option gov-icon{padding-right:var(--spacing-s)}.rdt-gov-select-container ul .option gov-icon.invisible{display:none}.rdt-gov-select-container ul .option:hover{--text-primary: var(--color-primary-50);background:var(--color-neutral-600)}.rdt-gov-select-container li{margin-bottom:0}.rdt-gov-select-container .picked{color:var(--text-primary)}.rdt-gov-select-container .search-spinner{--spinner-size: 1.2rem;position:absolute;right:1rem;top:100%;transform:translateY(calc(var(--spinner-size) / -2))}.rdt-gov-select-container .search-spinner .sis-icon-32-fix{height:var(--spinner-size)}.rdt-gov-select-container .search-container{width:100%;position:relative}.rdt-gov-select-container .search-container input{font-family:var(--font-family);border-radius:0;border-top:1px;border-left:1px;border-right:1px;padding:.75rem .5rem;width:100%;background-color:var(--background-block-primary);color:var(--text-primary)}.rdt-gov-select-container .search-container input:focus-visible{outline:var(.125rem) solid var(--status-focus);outline-offset:0}.rdt-gov-select-container .search-container.loading input::-webkit-search-cancel-button{position:relative;right:1rem}[data-size=xs].rdt-gov-select-container ul li button{font-size:var(--font-size-body-xs)!important;line-height:var(--height-line-xs);padding:var(--spacing-multiline-vertical-padding-xs)}[data-size=xs].rdt-gov-select-container input{font-size:var(--font-size-body-xs)!important;padding:var(--spacing-multiline-vertical-padding-xs)}[data-size=s].rdt-gov-select-container ul li button{font-size:var(--font-size-body-s)!important;line-height:var(--height-line-s);padding:var(--spacing-multiline-vertical-padding-s)}[data-size=s].rdt-gov-select-container input{font-size:var(--font-size-body-s)!important;padding:var(--spacing-multiline-vertical-padding-s)}[data-size=m].rdt-gov-select-container ul li button{font-size:var(--font-size-body-m)!important;line-height:var(--height-line-m);padding:var(--spacing-multiline-vertical-padding-m)}[data-size=m].rdt-gov-select-container input{font-size:var(--font-size-body-m)!important;padding:var(--spacing-multiline-vertical-padding-m)}[data-size=l].rdt-gov-select-container ul li button{font-size:var(--font-size-body-l)!important;line-height:var(--height-line-l);padding:var(--spacing-multiline-vertical-padding-l)}[data-size=l].rdt-gov-select-container input{font-size:var(--font-size-body-l)!important;padding:var(--spacing-multiline-vertical-padding-l)}[data-size=xl].rdt-gov-select-container ul li button{font-size:var(--font-size-body-xl)!important;line-height:var(--height-line-xl);padding:var(--spacing-multiline-vertical-padding-xl)}[data-size=xl].rdt-gov-select-container input{font-size:var(--font-size-body-xl)!important;padding:var(--spacing-multiline-vertical-padding-xl)}.rdt-gov-select-overlay-panel-top .rdt-gov-select-container{display:flex;flex-direction:column-reverse}\n", ".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}\n"] }]
1247
1370
  }] });
1248
1371
 
1249
1372
  class RdtGovTextInputComponent extends RdtTextInputComponent {
@@ -1317,7 +1440,7 @@ class RdtGovTextInputComponent extends RdtTextInputComponent {
1317
1440
  provide: RdtBaseFormInputComponent,
1318
1441
  useExisting: RdtGovTextInputComponent,
1319
1442
  },
1320
- ], viewQueries: [{ propertyName: "govInput", first: true, predicate: ["govInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@let lPos = labelPosition(); @if(lPos === 'top'){\n<gov-form-label slot=\"left\" size=\"m\" [class.warning-color-gov-label]=\"hasError\"\n >{{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n>\n}\n<gov-form-input\n #govInput\n [inputType]=\"type()\"\n [size]=\"size()\"\n [value]=\"internalValue()\"\n [placeholder]=\"placeholder()\"\n [autocomplete]=\"autocomplete()\"\n [minlength]=\"minlength()\"\n [maxlength]=\"maxlength()\"\n [invalid]=\"invalid() && touched()\"\n [attr.invalid]=\"invalid() && touched()\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n [attr.disabled]=\"disabled()\"\n [name]=\"id()\"\n [identifier]=\"id()\"\n (gov-input)=\"onInternalValueChange($event.detail.value)\"\n (gov-focus)=\"onFocus()\"\n (gov-blur)=\"onBlur()\"\n>\n @let lI = iconStart(); @let rI = icon(); @if(lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if(lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if (lI) {\n <span slot=\"icon-start\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: lI }\"></ng-container>\n </span>\n } @if (rI) {\n <span slot=\"icon-end\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: rI }\"></ng-container>\n </span>\n }\n</gov-form-input>\n@let hasError = visibleErrors() | rdtFormError; @if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\">{{ hasError }}</gov-form-message>\n}\n", styles: [".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}\n"], dependencies: [{ kind: "pipe", type: RdtFormErrorPipe, name: "rdtFormError" }, { kind: "directive", type: RdtIconOutletDirective, selector: "[rdtIconOutlet]", exportAs: ["rdtIconOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1443
+ ], viewQueries: [{ propertyName: "govInput", first: true, predicate: ["govInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@let lPos = labelPosition(); @if(lPos === 'top'){\n<gov-form-label slot=\"left\" size=\"m\" [class.warning-color-gov-label]=\"hasError\"\n >{{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n>\n}\n<gov-form-input\n #govInput\n [inputType]=\"type()\"\n [size]=\"size()\"\n [value]=\"internalValue()\"\n [placeholder]=\"placeholder()\"\n [autocomplete]=\"autocomplete()\"\n [minlength]=\"minlength()\"\n [maxlength]=\"maxlength()\"\n [invalid]=\"invalid() && touched()\"\n [attr.invalid]=\"invalid() && touched()\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n [attr.disabled]=\"disabled()\"\n [name]=\"id()\"\n [identifier]=\"id()\"\n (gov-input)=\"onInternalValueChange($event.detail.value)\"\n (gov-focus)=\"onFocus()\"\n (gov-blur)=\"onBlur()\"\n>\n @let lI = iconStart(); @let rI = icon(); @if(lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if(lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if (lI) {\n <span slot=\"icon-start\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: lI }\"></ng-container>\n </span>\n } @if (rI) {\n <span slot=\"icon-end\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: rI }\"></ng-container>\n </span>\n }\n</gov-form-input>\n@let hasError = visibleErrors() | rdtFormError; @if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\" [attr.size]=\"size()\">\n <gov-icon\n type=\"components\"\n name=\"exclamation-triangle-fill\"\n slot=\"validation-icon\"\n ></gov-icon>\n {{ hasError }}\n</gov-form-message>\n}\n", styles: [".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}\n"], dependencies: [{ kind: "pipe", type: RdtFormErrorPipe, name: "rdtFormError" }, { kind: "directive", type: RdtIconOutletDirective, selector: "[rdtIconOutlet]", exportAs: ["rdtIconOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1321
1444
  }
1322
1445
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovTextInputComponent, decorators: [{
1323
1446
  type: Component,
@@ -1331,7 +1454,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
1331
1454
  provide: RdtBaseFormInputComponent,
1332
1455
  useExisting: RdtGovTextInputComponent,
1333
1456
  },
1334
- ], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "@let lPos = labelPosition(); @if(lPos === 'top'){\n<gov-form-label slot=\"left\" size=\"m\" [class.warning-color-gov-label]=\"hasError\"\n >{{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n>\n}\n<gov-form-input\n #govInput\n [inputType]=\"type()\"\n [size]=\"size()\"\n [value]=\"internalValue()\"\n [placeholder]=\"placeholder()\"\n [autocomplete]=\"autocomplete()\"\n [minlength]=\"minlength()\"\n [maxlength]=\"maxlength()\"\n [invalid]=\"invalid() && touched()\"\n [attr.invalid]=\"invalid() && touched()\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n [attr.disabled]=\"disabled()\"\n [name]=\"id()\"\n [identifier]=\"id()\"\n (gov-input)=\"onInternalValueChange($event.detail.value)\"\n (gov-focus)=\"onFocus()\"\n (gov-blur)=\"onBlur()\"\n>\n @let lI = iconStart(); @let rI = icon(); @if(lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if(lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if (lI) {\n <span slot=\"icon-start\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: lI }\"></ng-container>\n </span>\n } @if (rI) {\n <span slot=\"icon-end\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: rI }\"></ng-container>\n </span>\n }\n</gov-form-input>\n@let hasError = visibleErrors() | rdtFormError; @if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\">{{ hasError }}</gov-form-message>\n}\n", styles: [".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}\n"] }]
1457
+ ], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "@let lPos = labelPosition(); @if(lPos === 'top'){\n<gov-form-label slot=\"left\" size=\"m\" [class.warning-color-gov-label]=\"hasError\"\n >{{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n>\n}\n<gov-form-input\n #govInput\n [inputType]=\"type()\"\n [size]=\"size()\"\n [value]=\"internalValue()\"\n [placeholder]=\"placeholder()\"\n [autocomplete]=\"autocomplete()\"\n [minlength]=\"minlength()\"\n [maxlength]=\"maxlength()\"\n [invalid]=\"invalid() && touched()\"\n [attr.invalid]=\"invalid() && touched()\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n [attr.disabled]=\"disabled()\"\n [name]=\"id()\"\n [identifier]=\"id()\"\n (gov-input)=\"onInternalValueChange($event.detail.value)\"\n (gov-focus)=\"onFocus()\"\n (gov-blur)=\"onBlur()\"\n>\n @let lI = iconStart(); @let rI = icon(); @if(lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if(lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if (lI) {\n <span slot=\"icon-start\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: lI }\"></ng-container>\n </span>\n } @if (rI) {\n <span slot=\"icon-end\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: rI }\"></ng-container>\n </span>\n }\n</gov-form-input>\n@let hasError = visibleErrors() | rdtFormError; @if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\" [attr.size]=\"size()\">\n <gov-icon\n type=\"components\"\n name=\"exclamation-triangle-fill\"\n slot=\"validation-icon\"\n ></gov-icon>\n {{ hasError }}\n</gov-form-message>\n}\n", styles: [".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}\n"] }]
1335
1458
  }] });
1336
1459
 
1337
1460
  class RdtGovThemeService {
@@ -1369,5 +1492,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
1369
1492
  * Generated bundle index. Do not edit.
1370
1493
  */
1371
1494
 
1372
- export { DEFAULT_GOV_BUTTON_COLOR, DEFAULT_GOV_BUTTON_SIZE, DEFAULT_GOV_BUTTON_TYPE, RDT_ALERT_DIALOG_PROVIDER, RDT_BASE_DIALOG_PROVIDER, RDT_BASE_NOTIFICATION_PROVIDER, RDT_CONFIRM_DIALOG_PROVIDER, RDT_DATE_MIN_YEAR, RdtGovBaseDialog, RdtGovButtonComponent, RdtGovCheckboxComponent, RdtGovDateComponent, RdtGovDialogContentComponent, RdtGovDialogFooterComponent, RdtGovDialogHeaderComponent, RdtGovDialogLoadingComponent, RdtGovDialogService, RdtGovIconComponent, RdtGovNotificationService, RdtGovNumberInputComponent, RdtGovSelectComponent, RdtGovSelectOfflineProviderDirective, RdtGovSpinnerComponent, RdtGovTextInputComponent, RdtGovThemeService, forceFocus, initRdtGov, provideNgrdtGov };
1495
+ export { DEFAULT_GOV_BUTTON_COLOR, DEFAULT_GOV_BUTTON_SIZE, DEFAULT_GOV_BUTTON_TYPE, RDT_ALERT_DIALOG_PROVIDER, RDT_BASE_DIALOG_PROVIDER, RDT_BASE_NOTIFICATION_PROVIDER, RDT_CONFIRM_DIALOG_PROVIDER, RdtGovBaseDialog, RdtGovButtonComponent, RdtGovCheckboxComponent, RdtGovDateComponent, RdtGovDialogContentComponent, RdtGovDialogFooterComponent, RdtGovDialogHeaderComponent, RdtGovDialogLoadingComponent, RdtGovDialogService, RdtGovIconComponent, RdtGovNotificationService, RdtGovNumberInputComponent, RdtGovSelectComponent, RdtGovSelectOfflineProviderDirective, RdtGovSpinnerComponent, RdtGovTextInputComponent, RdtGovThemeService, forceFocus, initRdtGov, provideNgrdtGov };
1373
1496
  //# sourceMappingURL=ngrdt-gov.mjs.map