@ngrdt/gov 0.0.89 → 0.0.91

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,31 +1,31 @@
1
1
  import * as i0 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';
2
+ import { inject, Injector, signal, input, linkedSignal, viewChild, effect, afterNextRender, untracked, HostBinding, Component, forwardRef, Injectable, ViewEncapsulation, InjectionToken, Renderer2, computed, ChangeDetectionStrategy, CUSTOM_ELEMENTS_SCHEMA, Directive, ViewContainerRef, viewChildren, booleanAttribute, importProvidersFrom, LOCALE_ID, numberAttribute } from '@angular/core';
3
3
  import { provideDateFnsAdapter } from '@angular/material-date-fns-adapter';
4
4
  import { MAT_DATE_LOCALE, DateAdapter } from '@angular/material/core';
5
- import * as i1$2 from '@angular/material/datepicker';
5
+ import * as i1$3 from '@angular/material/datepicker';
6
6
  import { MatDatepickerIntl, MatDatepickerModule } from '@angular/material/datepicker';
7
7
  import * as i1 from '@gov-design-system-ce/angular';
8
8
  import { GovButton, GovDesignSystemModule, GovFormCheckbox } from '@gov-design-system-ce/angular';
9
9
  import { RdtButtonBase, RDT_BUTTON_BASE_PROVIDER } from '@ngrdt/button';
10
- import { RdtCheckboxComponent, RdtFormErrorPipe, RDT_CHECKBOX_BASE_PROVIDER, RdtDateComponent, RdtBaseFormInputComponent, RdtNumericInputComponent, RdtSelectOfflineDatasourceProviderDirective, RdtBaseSelectCommonComponent, RdtSelectOptionDirective, RdtSelectStore, RdtSingleSelectComponent, RdtTextInputComponent } from '@ngrdt/forms';
10
+ import { RdtTranslateService, RdtAutoFocusOnInitDirective, RdtTranslatePipe, RDT_NOTIFICATION_SERVICE_PROVIDER } from '@ngrdt/core';
11
+ import { RdtCheckboxComponent, RdtFormErrorPipe, RdtNumericInputComponent, RdtBaseFormInputComponent, RdtSelectOfflineDatasourceProviderDirective, RdtBaseSelectCommonComponent, RdtSelectOptionDirective, RdtSelectStore, RdtSingleSelectComponent, RDT_CHECKBOX_BASE_PROVIDER, RDT_NUMERIC_INPUT_BASE_PROVIDER, RDT_SELECT_BASE_PROVIDER, defaultRdtFormErrorCodes, RDT_FORM_ERROR_CODES_PROVIDER, RdtDateComponent, RdtTextInputComponent } from '@ngrdt/forms';
11
12
  import { RdtIconOutletDirective, RdtIcon, RdtIconComponent, RDT_ICON_BASE_PROVIDER, RDT_ICON_REGISTRY_PROVIDER } from '@ngrdt/icon';
12
13
  import { RdtSpinnerComponent, RDT_SPINNER_BASE_PROVIDER } from '@ngrdt/loading';
13
14
  import * as i1$1 from '@angular/common';
14
15
  import { NgTemplateOutlet, CommonModule } from '@angular/common';
15
16
  import { RouterLink } from '@angular/router';
16
- import * as i1$3 from '@angular/forms';
17
+ import * as i1$2 from '@angular/forms';
17
18
  import { NG_VALUE_ACCESSOR, ReactiveFormsModule, FormsModule } from '@angular/forms';
18
- import { RdtTranslateService, RdtAutoFocusOnInitDirective, RdtTranslatePipe } from '@ngrdt/core';
19
19
  import { ReplaySubject, Subject, take, fromEvent, filter, throttleTime, animationFrameScheduler, map } from 'rxjs';
20
20
  import { Overlay } from '@angular/cdk/overlay';
21
21
  import { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';
22
22
  import { CdkDrag } from '@angular/cdk/drag-drop';
23
+ import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
24
+ import { TAB, ENTER } from '@angular/cdk/keycodes';
23
25
  import { defineCustomElements } from '@gov-design-system-ce/components/loader';
24
26
  import * as i2 from '@angular/material/input';
25
27
  import { MatInputModule } from '@angular/material/input';
26
28
  import { isValid, format } from 'date-fns';
27
- import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
28
- import { TAB, ENTER } from '@angular/cdk/keycodes';
29
29
 
30
30
  const DEFAULT_GOV_BUTTON_COLOR = 'primary';
31
31
  const DEFAULT_GOV_BUTTON_TYPE = 'outlined';
@@ -507,82 +507,108 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
507
507
  }] });
508
508
 
509
509
  class RdtGovIconComponent extends RdtIconComponent {
510
- parsedName = computed(() => {
510
+ size = input('m');
511
+ color = input('primary');
512
+ parsed = computed(() => {
511
513
  const value = this.name() || '';
512
514
  const [type, name] = value.split('/');
513
515
  return { type: type || '', name: name || '' };
514
516
  });
517
+ isBootstrapIcon = computed(() => {
518
+ return this.parsed().type === 'bs';
519
+ });
515
520
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovIconComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
516
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: RdtGovIconComponent, isStandalone: true, selector: "rdt-gov-icon", usesInheritance: true, ngImport: i0, template: "@let p = parsedName(); @if (p.name) {\n<gov-icon class=\"rdt-gov-icon\" [type]=\"p.type\" [name]=\"p.name\"></gov-icon>\n} @else {\n<i class=\"bi\" [class]=\"'bi-' + p.type\"></i>\n}\n", styles: [":host{display:flex;align-items:center;justify-content:center}.rdt-gov-icon{width:16px;height:16px;font-size:10px;display:flex;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "ngmodule", type: GovDesignSystemModule }, { kind: "component", type: i1.GovIcon, selector: "gov-icon", inputs: ["color", "name", "size", "type"] }, { kind: "ngmodule", type: CommonModule }] });
521
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: RdtGovIconComponent, isStandalone: true, selector: "rdt-gov-icon", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "@let p = parsed(); @if (p.name) { @if (isBootstrapIcon()) {\n<div class=\"bi-wrapper\" [attr.color]=\"color()\" [attr.size]=\"size()\">\n <i class=\"bi bi-{{ p.name }}\"></i>\n</div>\n} @else {\n<gov-icon\n [color]=\"color()\"\n [size]=\"size()\"\n [type]=\"p.type\"\n [name]=\"p.name\"\n></gov-icon>\n} }\n", styles: [":host{display:flex;align-items:center;justify-content:center}.bi-wrapper{display:flex;align-items:center;justify-content:center}.bi-wrapper[size=xs]{width:var(--size-xs, var(--icon-size-xs));height:var(--size-xs, var(--icon-size-xs))}.bi-wrapper[size=xs] .bi{font-size:var(--size-xs, var(--icon-size-xs))}.bi-wrapper[size=s]{width:var(--size-s, var(--icon-size-s));height:var(--size-s, var(--icon-size-s))}.bi-wrapper[size=s] .bi{font-size:var(--size-s, var(--icon-size-s))}.bi-wrapper[size=m]{width:var(--size-m, var(--icon-size-m));height:var(--size-m, var(--icon-size-m))}.bi-wrapper[size=m] .bi{font-size:var(--size-m, var(--icon-size-m))}.bi-wrapper[size=l]{width:var(--size-l, var(--icon-size-l));height:var(--size-l, var(--icon-size-l))}.bi-wrapper[size=l] .bi{font-size:var(--size-l, var(--icon-size-l))}.bi-wrapper[size=xl]{width:var(--size-xl, var(--icon-size-xl));height:var(--size-xl, var(--icon-size-xl))}.bi-wrapper[size=xl] .bi{font-size:var(--size-xl, var(--icon-size-xl))}.bi-wrapper[size=\"2xl\"]{width:var(--size-2xl, var(--icon-size-2xl));height:var(--size-2xl, var(--icon-size-2xl))}.bi-wrapper[size=\"2xl\"] .bi{font-size:var(--size-2xl, var(--icon-size-2xl))}.bi-wrapper[size=\"3xl\"]{width:var(--size-3xl, var(--icon-size-3xl));height:var(--size-3xl, var(--icon-size-3xl))}.bi-wrapper[size=\"3xl\"] .bi{font-size:var(--size-3xl, var(--icon-size-3xl))}.bi-wrapper[size=\"4xl\"]{width:var(--size-4xl, var(--icon-size-4xl));height:var(--size-4xl, var(--icon-size-4xl))}.bi-wrapper[size=\"4xl\"] .bi{font-size:var(--size-4xl, var(--icon-size-4xl))}.bi-wrapper[size=\"5xl\"]{width:var(--size-5xl, var(--icon-size-5xl));height:var(--size-5xl, var(--icon-size-5xl))}.bi-wrapper[size=\"5xl\"] .bi{font-size:var(--size-5xl, var(--icon-size-5xl))}.bi-wrapper[color=black]{color:var(--black, var(--icon-on-bold-black))}.bi-wrapper[color=default]{color:var(--default, var(--icon-default))}.bi-wrapper[color=disabled]{color:var(--disabled, var(--icon-disabled))}.bi-wrapper[color=error]{color:var(--error, var(--icon-error))}.bi-wrapper[color=neutral]{color:var(--neutral, var(--icon-neutral))}.bi-wrapper[color=primary]{color:var(--primary, var(--icon-on-subtle))}.bi-wrapper[color=secondary]{color:var(--secondary, var(--icon-secondary))}.bi-wrapper[color=success]{color:var(--success, var(--icon-success))}.bi-wrapper[color=warning]{color:var(--warning, var(--icon-warning))}.bi-wrapper[color=white]{color:var(--white, var(--icon-on-bold-white))}\n"], dependencies: [{ kind: "ngmodule", type: GovDesignSystemModule }, { kind: "component", type: i1.GovIcon, selector: "gov-icon", inputs: ["color", "name", "size", "type"] }, { kind: "ngmodule", type: CommonModule }] });
517
522
  }
518
523
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovIconComponent, decorators: [{
519
524
  type: Component,
520
- args: [{ selector: 'rdt-gov-icon', imports: [GovDesignSystemModule, CommonModule], template: "@let p = parsedName(); @if (p.name) {\n<gov-icon class=\"rdt-gov-icon\" [type]=\"p.type\" [name]=\"p.name\"></gov-icon>\n} @else {\n<i class=\"bi\" [class]=\"'bi-' + p.type\"></i>\n}\n", styles: [":host{display:flex;align-items:center;justify-content:center}.rdt-gov-icon{width:16px;height:16px;font-size:10px;display:flex;align-items:center;justify-content:center}\n"] }]
525
+ args: [{ selector: 'rdt-gov-icon', imports: [GovDesignSystemModule, CommonModule], template: "@let p = parsed(); @if (p.name) { @if (isBootstrapIcon()) {\n<div class=\"bi-wrapper\" [attr.color]=\"color()\" [attr.size]=\"size()\">\n <i class=\"bi bi-{{ p.name }}\"></i>\n</div>\n} @else {\n<gov-icon\n [color]=\"color()\"\n [size]=\"size()\"\n [type]=\"p.type\"\n [name]=\"p.name\"\n></gov-icon>\n} }\n", styles: [":host{display:flex;align-items:center;justify-content:center}.bi-wrapper{display:flex;align-items:center;justify-content:center}.bi-wrapper[size=xs]{width:var(--size-xs, var(--icon-size-xs));height:var(--size-xs, var(--icon-size-xs))}.bi-wrapper[size=xs] .bi{font-size:var(--size-xs, var(--icon-size-xs))}.bi-wrapper[size=s]{width:var(--size-s, var(--icon-size-s));height:var(--size-s, var(--icon-size-s))}.bi-wrapper[size=s] .bi{font-size:var(--size-s, var(--icon-size-s))}.bi-wrapper[size=m]{width:var(--size-m, var(--icon-size-m));height:var(--size-m, var(--icon-size-m))}.bi-wrapper[size=m] .bi{font-size:var(--size-m, var(--icon-size-m))}.bi-wrapper[size=l]{width:var(--size-l, var(--icon-size-l));height:var(--size-l, var(--icon-size-l))}.bi-wrapper[size=l] .bi{font-size:var(--size-l, var(--icon-size-l))}.bi-wrapper[size=xl]{width:var(--size-xl, var(--icon-size-xl));height:var(--size-xl, var(--icon-size-xl))}.bi-wrapper[size=xl] .bi{font-size:var(--size-xl, var(--icon-size-xl))}.bi-wrapper[size=\"2xl\"]{width:var(--size-2xl, var(--icon-size-2xl));height:var(--size-2xl, var(--icon-size-2xl))}.bi-wrapper[size=\"2xl\"] .bi{font-size:var(--size-2xl, var(--icon-size-2xl))}.bi-wrapper[size=\"3xl\"]{width:var(--size-3xl, var(--icon-size-3xl));height:var(--size-3xl, var(--icon-size-3xl))}.bi-wrapper[size=\"3xl\"] .bi{font-size:var(--size-3xl, var(--icon-size-3xl))}.bi-wrapper[size=\"4xl\"]{width:var(--size-4xl, var(--icon-size-4xl));height:var(--size-4xl, var(--icon-size-4xl))}.bi-wrapper[size=\"4xl\"] .bi{font-size:var(--size-4xl, var(--icon-size-4xl))}.bi-wrapper[size=\"5xl\"]{width:var(--size-5xl, var(--icon-size-5xl));height:var(--size-5xl, var(--icon-size-5xl))}.bi-wrapper[size=\"5xl\"] .bi{font-size:var(--size-5xl, var(--icon-size-5xl))}.bi-wrapper[color=black]{color:var(--black, var(--icon-on-bold-black))}.bi-wrapper[color=default]{color:var(--default, var(--icon-default))}.bi-wrapper[color=disabled]{color:var(--disabled, var(--icon-disabled))}.bi-wrapper[color=error]{color:var(--error, var(--icon-error))}.bi-wrapper[color=neutral]{color:var(--neutral, var(--icon-neutral))}.bi-wrapper[color=primary]{color:var(--primary, var(--icon-on-subtle))}.bi-wrapper[color=secondary]{color:var(--secondary, var(--icon-secondary))}.bi-wrapper[color=success]{color:var(--success, var(--icon-success))}.bi-wrapper[color=warning]{color:var(--warning, var(--icon-warning))}.bi-wrapper[color=white]{color:var(--white, var(--icon-on-bold-white))}\n"] }]
521
526
  }] });
522
527
 
523
- const RDT_BASE_NOTIFICATION_PROVIDER = new InjectionToken('RDT_GOV_NOTIFICATION_PROVIDER');
524
- const RDT_POPUP_NOTIFICATION_PROVIDER = new InjectionToken('RDT_CUSTOM_NOTIFICATION_PROVIDER');
528
+ const RDT_GOV_NOTIFICATION_DEFAULT_CONFIG = {
529
+ duration: 3000,
530
+ positionVert: 'top',
531
+ positionHoriz: 'right',
532
+ type: 'bold',
533
+ closeLabel: undefined,
534
+ };
535
+
536
+ /**
537
+ * Injection token for the default configuration of notifications.
538
+ */
539
+ const RDT_GOV_NOTIFICATION_CONFIG_PROVIDER = new InjectionToken('RDT_GOV_NOTIFICATION_CONFIG_PROVIDER');
540
+
541
+ /**
542
+ * Injection token for the data of the notification component.
543
+ * Private
544
+ */
545
+ const RDT_GOV_NOTIFICATION_DATA_PROVIDER = new InjectionToken('RDT_GOV_NOTIFICATION_DATA_PROVIDER');
525
546
 
547
+ /**
548
+ * Component rendering individual notification.
549
+ */
526
550
  class RdtGovNotificationPopupComponent {
527
- injected = inject(RDT_POPUP_NOTIFICATION_PROVIDER);
551
+ data = inject(RDT_GOV_NOTIFICATION_DATA_PROVIDER);
528
552
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovNotificationPopupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
529
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: RdtGovNotificationPopupComponent, isStandalone: true, selector: "rdt-gov-notification-popup", ngImport: i0, template: "@let icon = injected?.icon; @if(injected){\n<gov-toast\n [color]=\"injected.color\"\n [gravity]=\"injected.positionVert\"\n [position]=\"injected.positionHoriz\"\n [type]=\"injected.type\"\n [closeLabel]=\"injected.closeLabel\"\n ><div class=\"toast-wrapper\">\n @if (icon) {\n <span class=\"toast-icon\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: icon }\"></ng-container>\n </span>\n }\n <span>{{ injected.message }}</span>\n </div>\n</gov-toast>\n}\n", styles: [".toast-wrapper{display:flex;gap:var(--spacing-s-nudge)}\n"], dependencies: [{ kind: "ngmodule", type: GovDesignSystemModule }, { kind: "component", type: i1.GovToast, selector: "gov-toast", inputs: ["accessibleCloseLabel", "closeLabel", "color", "gravity", "position", "time", "type"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: RdtIconOutletDirective, selector: "[rdtIconOutlet]", exportAs: ["rdtIconOutlet"] }] });
553
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: RdtGovNotificationPopupComponent, isStandalone: true, selector: "rdt-gov-notification-popup", ngImport: i0, template: "@if(data){\n<gov-toast\n [color]=\"data.color\"\n [gravity]=\"data.positionVert\"\n [position]=\"data.positionHoriz\"\n [type]=\"data.type\"\n [closeLabel]=\"data.closeLabel\"\n ><div class=\"toast-wrapper\">\n @if (data.icon) {\n <span class=\"toast-icon\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: data.icon }\"></ng-container>\n </span>\n }\n <span>{{ data.message }}</span>\n </div>\n</gov-toast>\n}\n", styles: [".toast-wrapper{display:flex;gap:var(--spacing-s-nudge)}\n"], dependencies: [{ kind: "ngmodule", type: GovDesignSystemModule }, { kind: "component", type: i1.GovToast, selector: "gov-toast", inputs: ["accessibleCloseLabel", "closeLabel", "color", "gravity", "position", "time", "type"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: RdtIconOutletDirective, selector: "[rdtIconOutlet]", exportAs: ["rdtIconOutlet"] }] });
530
554
  }
531
555
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovNotificationPopupComponent, decorators: [{
532
556
  type: Component,
533
- args: [{ selector: 'rdt-gov-notification-popup', imports: [GovDesignSystemModule, CommonModule, RdtIconOutletDirective], template: "@let icon = injected?.icon; @if(injected){\n<gov-toast\n [color]=\"injected.color\"\n [gravity]=\"injected.positionVert\"\n [position]=\"injected.positionHoriz\"\n [type]=\"injected.type\"\n [closeLabel]=\"injected.closeLabel\"\n ><div class=\"toast-wrapper\">\n @if (icon) {\n <span class=\"toast-icon\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: icon }\"></ng-container>\n </span>\n }\n <span>{{ injected.message }}</span>\n </div>\n</gov-toast>\n}\n", styles: [".toast-wrapper{display:flex;gap:var(--spacing-s-nudge)}\n"] }]
557
+ args: [{ selector: 'rdt-gov-notification-popup', imports: [GovDesignSystemModule, CommonModule, RdtIconOutletDirective], template: "@if(data){\n<gov-toast\n [color]=\"data.color\"\n [gravity]=\"data.positionVert\"\n [position]=\"data.positionHoriz\"\n [type]=\"data.type\"\n [closeLabel]=\"data.closeLabel\"\n ><div class=\"toast-wrapper\">\n @if (data.icon) {\n <span class=\"toast-icon\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: data.icon }\"></ng-container>\n </span>\n }\n <span>{{ data.message }}</span>\n </div>\n</gov-toast>\n}\n", styles: [".toast-wrapper{display:flex;gap:var(--spacing-s-nudge)}\n"] }]
534
558
  }] });
535
559
 
536
560
  class RdtGovNotificationService {
537
561
  overlay = inject(Overlay);
538
562
  injector = inject(Injector);
539
- translateService = inject(RdtTranslateService);
540
- govDefaults = inject(RDT_BASE_NOTIFICATION_PROVIDER);
541
- show(cfg) {
542
- this.open(cfg);
543
- }
544
- success(customMsg = '') {
545
- this.openDefault('success', this.translateService.instant(customMsg));
546
- }
547
- warning(customMsg = '') {
548
- this.openDefault('warning', this.translateService.instant(customMsg));
549
- }
550
- error(customMsg = '') {
551
- this.openDefault('error', this.translateService.instant(customMsg));
552
- }
553
- openDefault(type, customMsg) {
554
- const msgPropName = (type + 'Msg');
555
- this.open({
556
- message: customMsg
557
- ? customMsg
558
- : this.govDefaults?.[msgPropName].toString() ?? '',
559
- positionVert: this.govDefaults?.positionVert ?? 'top',
560
- positionHoriz: this.govDefaults?.positionHoriz ?? 'center',
561
- duration: this.govDefaults?.duration ?? 2000,
562
- color: type,
563
- type: 'bold',
564
- });
563
+ t = inject(RdtTranslateService);
564
+ config = inject(RDT_GOV_NOTIFICATION_CONFIG_PROVIDER, {
565
+ optional: true,
566
+ });
567
+ show(partialConfig) {
568
+ const cfg = this.mergeConfig(partialConfig);
569
+ const overlayRef = this.createOverlayRef();
570
+ const portal = this.createPortal(cfg);
571
+ overlayRef.attach(portal);
572
+ setTimeout(() => this.close(overlayRef), cfg.duration);
573
+ }
574
+ success(message = this.t.instant('RDT_GOV_NOTIFY_SUCCESS')) {
575
+ this.show({ color: 'success', message });
576
+ }
577
+ warn(message = this.t.instant('RDT_GOV_NOTIFY_WARNING')) {
578
+ this.show({ color: 'warning', message });
579
+ }
580
+ error(message = this.t.instant('RDT_GOV_NOTIFY_ERROR')) {
581
+ this.show({ color: 'error', message });
582
+ }
583
+ mergeConfig(cfg) {
584
+ return {
585
+ ...RDT_GOV_NOTIFICATION_DEFAULT_CONFIG,
586
+ ...this.config,
587
+ ...cfg,
588
+ };
565
589
  }
566
- open(cfg) {
567
- let positionStrat = this.overlay.position().global();
590
+ createPortal(cfg) {
591
+ const popupInjector = this.getDataInjector(cfg);
592
+ return new ComponentPortal(RdtGovNotificationPopupComponent, null, popupInjector);
593
+ }
594
+ createOverlayRef() {
595
+ const positionStrat = this.overlay.position().global();
568
596
  const overlayRef = this.overlay.create({
569
597
  positionStrategy: positionStrat,
570
598
  hasBackdrop: false,
571
599
  });
572
- const popupInjector = Injector.create({
600
+ return overlayRef;
601
+ }
602
+ getDataInjector(cfg) {
603
+ return Injector.create({
573
604
  providers: [
574
605
  {
575
- provide: RDT_POPUP_NOTIFICATION_PROVIDER,
606
+ provide: RDT_GOV_NOTIFICATION_DATA_PROVIDER,
576
607
  useValue: cfg,
577
608
  },
578
609
  ],
579
610
  parent: this.injector,
580
611
  });
581
- const portal = new ComponentPortal(RdtGovNotificationPopupComponent, null, popupInjector);
582
- overlayRef.attach(portal);
583
- setTimeout(() => {
584
- this.close(overlayRef);
585
- }, cfg.duration);
586
612
  }
587
613
  close(overlayRef) {
588
614
  overlayRef?.dispose();
@@ -595,420 +621,71 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
595
621
  args: [{ providedIn: 'root' }]
596
622
  }] });
597
623
 
598
- function provideNgrdtGov(options = {}) {
599
- return [
600
- importProvidersFrom(GovDesignSystemModule),
601
- {
602
- provide: RDT_ICON_BASE_PROVIDER,
603
- useValue: RdtGovIconComponent,
604
- },
605
- {
606
- provide: RDT_CHECKBOX_BASE_PROVIDER,
607
- useValue: RdtGovCheckboxComponent,
608
- },
609
- {
610
- provide: RDT_BUTTON_BASE_PROVIDER,
611
- useValue: RdtGovButtonComponent,
612
- },
613
- {
614
- provide: RDT_ICON_REGISTRY_PROVIDER,
615
- useValue: {
616
- [RdtIcon.MenuArrowRight]: 'components/chevron-right',
617
- [RdtIcon.MenuArrowDown]: 'components/chevron-down',
618
- [RdtIcon.SkipDoubleLeft]: 'components/chevron-double-left',
619
- [RdtIcon.SkipDoubleRight]: 'components/chevron-double-right',
620
- [RdtIcon.SkipLeft]: 'components/chevron-left',
621
- [RdtIcon.SkipRight]: 'components/chevron-right',
622
- [RdtIcon.SortAsc]: 'sort-down',
623
- [RdtIcon.SortDesc]: 'sort-up',
624
- [RdtIcon.SortEnabled]: 'filter',
625
- },
626
- },
627
- {
628
- provide: RDT_BASE_NOTIFICATION_PROVIDER,
629
- useValue: {
630
- duration: 3000,
631
- positionVert: 'top',
632
- positionHoriz: 'right',
633
- successMsg: 'RDT_GOV_NOTIFY_SUCCESS',
634
- warningMsg: 'RDT_GOV_NOTIFY_WARNING',
635
- errorMsg: 'RDT_GOV_NOTIFY_ERROR',
636
- },
637
- },
638
- {
639
- provide: RDT_ALERT_DIALOG_PROVIDER,
640
- useValue: {
641
- minHeight: '250px',
642
- },
643
- },
644
- {
645
- provide: RDT_CONFIRM_DIALOG_PROVIDER,
646
- useValue: {
647
- minHeight: '250px',
648
- },
649
- },
650
- {
651
- provide: RDT_BASE_DIALOG_PROVIDER,
652
- useValue: {
653
- isDraggable: false,
654
- minHeight: '400px',
655
- },
656
- },
657
- {
658
- provide: RDT_SPINNER_BASE_PROVIDER,
659
- useValue: RdtGovSpinnerComponent,
660
- },
661
- { provide: MAT_DATE_LOCALE, useValue: 'cs-CZ' },
662
- { provide: LOCALE_ID, useValue: 'cs-CZ' },
663
- { provide: MatDatepickerIntl, useClass: RdtDatepickerIntl },
664
- provideDateFnsAdapter(),
665
- ];
666
- }
667
-
668
- function initRdtGov(config = {}) {
669
- const defaultConfig = {
670
- iconsPath: 'icons',
671
- };
672
- window.GOV_DS_CONFIG = { ...defaultConfig, ...config };
673
- defineCustomElements(window);
674
- }
675
-
676
- class RdtGovDateComponent extends RdtDateComponent {
677
- translateService = inject(RdtTranslateService);
678
- dateAdapter = inject(DateAdapter);
679
- dateInput = viewChild('dateInput');
680
- timeInput = viewChild('timeInput');
624
+ class RdtGovNumberInputComponent extends RdtNumericInputComponent {
625
+ renderer = inject(Renderer2);
626
+ govInput = viewChild('govInput');
681
627
  size = input('s');
628
+ icon = input(null);
629
+ iconStart = input(null);
682
630
  labelPositionInput = input('top', {
683
631
  alias: 'labelPosition',
684
632
  });
685
633
  labelPosition = linkedSignal(() => this.labelPositionInput());
686
- showSeconds = input(false, { transform: booleanAttribute });
687
- stepInput = input(undefined, {
688
- alias: 'step',
689
- transform: numberAttribute,
690
- });
691
- step = linkedSignal(() => {
692
- return this.stepInput() ?? (this.showSeconds() ? 1 : undefined);
693
- });
694
- dateInputFocused = false;
695
- // Current value of physical date input field
696
- dateInputValue = signal(null);
697
- // Current value of physical time input field
698
- timeInputValue = signal('');
699
- internalTimeFormat = computed(() => this.showSeconds() ? 'HH:mm:ss' : 'HH:mm');
700
- defaultTime = computed(() => this.showSeconds() ? '00:00:00' : '00:00');
701
- localeUsed = computed(() => this.translateService.currentFormat().dateFnsLocale);
702
- hasDate = computed(() => this.type() !== 'time');
703
- hasTime = computed(() => this.type() !== 'date');
704
- internalTimeValue = computed(() => {
705
- const value = this.internalValue();
706
- if (!value) {
707
- return '';
708
- }
709
- const time = this.formatTime(value);
710
- // This condition prevents adding zeros for seconds while typing
711
- // E.g. 12:34 won't get changed to 12:34:00 automatically and it's valid value
712
- if (this.timeInputValue() !== time &&
713
- this.isValidTime(this.timeInputValue()) &&
714
- time.startsWith(this.timeInputValue())) {
715
- return this.timeInputValue();
716
- }
717
- return time;
718
- });
634
+ inputElement = signal(null);
635
+ hasErrors = false;
719
636
  isEmpty(value) {
720
- return value === null;
721
- }
722
- // Update DateAdapter locale when current locale changes
723
- dateFnsLocaleEffect = effect(() => {
724
- this.dateAdapter.setLocale(this.localeUsed());
725
- });
726
- toExternalValue(internalValue) {
727
- if (!internalValue) {
728
- return null;
729
- }
730
- return this.dateAdapter.format(internalValue, this.formControlFormat());
731
- }
732
- toInternalValue(externalValue) {
733
- if (!externalValue) {
734
- return null;
735
- }
736
- const parsed = this.dateAdapter.parse(externalValue, this.formControlFormat());
737
- if (!isValid(parsed)) {
738
- console.error(`Date field labeled "${this.label()}" was set invalid value "${externalValue}". Expected FormControl format: "${this.formControlFormat()}"`);
739
- return null;
740
- }
741
- return parsed;
637
+ return value == null;
742
638
  }
743
- /**
744
- * Prevents unnecessary change emissions on FormControl
745
- * @returns True if both Date objects represent the same point in time
746
- */
747
- areInternalValuesEqual(value1, value2) {
748
- if (value1 === null && value2 === null) {
749
- return true;
750
- }
751
- if (value1 === null || value2 === null) {
752
- return false;
639
+ onInput(value) {
640
+ if (value === '' || value == null) {
641
+ this.onInternalValueChange(null);
753
642
  }
754
- return value1.getTime() === value2.getTime();
755
- }
756
- writeValue(value) {
757
- super.writeValue(value);
758
- const internalValue = this.toInternalValue(value);
759
- // Update physical input fields when FormControl value changes
760
- // Necessary before user interaction
761
- if (internalValue) {
762
- this.dateInputValue.set(internalValue);
763
- this.timeInputValue.set(this.formatTime(internalValue));
643
+ else if (typeof value === 'string') {
644
+ const parsed = parseFloat(value);
645
+ if (!isNaN(parsed)) {
646
+ this.onInternalValueChange(parsed);
647
+ }
764
648
  }
765
649
  else {
766
- this.dateInputValue.set(null);
767
- this.timeInputValue.set('');
650
+ this.onInternalValueChange(value);
768
651
  }
769
652
  }
770
- onDateInput(event) {
771
- const dateValue = event.value;
772
- if (!dateValue) {
773
- // Clear FormControl value when date is invalid
774
- // Keep internal state
775
- this.dateInputValue.set(null);
776
- this.onChange(null);
777
- }
778
- else {
779
- this.dateInputValue.set(dateValue);
780
- this.onDateChange(dateValue);
653
+ readonlyEffect = effect(async () => {
654
+ const input = this.govInput()?.nativeElement;
655
+ const inputEl = await input?.getRef();
656
+ const readonly = this.readonlyInput();
657
+ if (input) {
658
+ if (readonly) {
659
+ this.renderer.setAttribute(input, 'readonly', 'true');
660
+ }
661
+ else {
662
+ this.renderer.removeAttribute(input, 'readonly');
663
+ }
781
664
  }
782
- }
783
- onTimeChange(event) {
784
- const value = event.target.value;
785
- let internalValue = this.internalValue();
786
- if (!this.hasDate()) {
787
- internalValue ??= this.emptyTimeDate;
665
+ });
666
+ inputElementEffect = effect(async () => {
667
+ const govInput = this.govInput()?.nativeElement;
668
+ if (govInput) {
669
+ const input = await govInput.getRef();
670
+ this.inputElement.set(input);
788
671
  }
789
- const dateOk = internalValue && (this.dateInputValue() || !this.hasDate());
790
- if (this.isValidTime(value) && internalValue && dateOk) {
791
- const newDate = this.populateTime(new Date(internalValue), value);
792
- this.onInternalValueChange(newDate);
672
+ });
673
+ errorFixEffect = effect(() => {
674
+ const inputElement = this.inputElement();
675
+ const visibleErrors = this.visibleErrors();
676
+ const hadErrors = this.hasErrors;
677
+ this.hasErrors = !!visibleErrors;
678
+ if (hadErrors !== this.hasErrors) {
679
+ const isActive = document.activeElement === inputElement;
680
+ if (isActive && inputElement) {
681
+ forceFocus(inputElement);
682
+ }
793
683
  }
794
- this.timeInputValue.set(value);
795
- }
796
- onDateChange(date) {
797
- const value = date ?? null;
798
- const internalValueOld = this.internalValue();
799
- const timeInputValue = this.timeInputValue();
800
- // If both newly selected date and time input are valid, combine them
801
- if (value && timeInputValue) {
802
- this.populateTime(value, timeInputValue);
803
- }
804
- // Set internal value
805
- this.onInternalValueChange(value);
806
- // In case date input is focused, revert internal value
807
- // to original value before Date change event
808
- // while keeping external value and FormControl value updated
809
- // This prevents unexpected changes to date and time inputs while typing
810
- // New internal value will be set on date input blur
811
- if (this.dateInputFocused) {
812
- this.internalValue.set(internalValueOld);
813
- }
814
- }
815
- onDateInputFocus() {
816
- this.dateInputFocused = true;
817
- this.onFocus();
818
- }
819
- onDateInputBlur() {
820
- this.dateInputFocused = false;
821
- // Set internal value to the combined date and time from inputs
822
- // In case date and/or time input is invalid, internal value will not change
823
- const dateTimeFromInputs = this.getDateTimeFromInputs();
824
- if (dateTimeFromInputs) {
825
- this.onInternalValueChange(dateTimeFromInputs);
826
- }
827
- this.onBlur();
828
- }
829
- /**
830
- * Returns Date object constructed from current date and time input values
831
- * or null if either input is invalid
832
- */
833
- getDateTimeFromInputs() {
834
- const dateInputValue = this.dateInputValue();
835
- const timeInputValue = this.timeInputValue();
836
- if (!timeInputValue || !dateInputValue) {
837
- return null;
838
- }
839
- else {
840
- const newInternal = new Date(dateInputValue);
841
- this.populateTime(newInternal, timeInputValue);
842
- return newInternal;
843
- }
844
- }
845
- onTimeInputFocus() {
846
- this.onFocus();
847
- }
848
- onTimeInputBlur() {
849
- const timeInputEl = this.timeInput()?.nativeElement;
850
- if (!timeInputEl) {
851
- return;
852
- }
853
- const value = timeInputEl?.value ?? '';
854
- // Emit null value to FormControl in case time is blurred while invalid (empty slots), ,
855
- // Keep internal state intacted to prevent unexpected changes to input fields
856
- if (!value) {
857
- this.onChange(null);
858
- }
859
- this.onBlur();
860
- }
861
- /**
862
- * Helper function to format a Date object to a time string
863
- */
864
- formatTime(date) {
865
- if (this.type() === 'date') {
866
- return this.defaultTime();
867
- }
868
- try {
869
- const locale = this.localeUsed();
870
- const timeFormat = this.internalTimeFormat();
871
- return format(date, timeFormat, { locale });
872
- }
873
- catch (e) {
874
- console.log('Error formatting date: ', date, 'target format: ', this.internalTimeFormat());
875
- console.error(e);
876
- return this.defaultTime();
877
- }
878
- }
879
- /**
880
- * Helper function to populate a Date object with time from a string
881
- * in the format HH:mm or HH:mm:ss
882
- */
883
- populateTime(date, timeString) {
884
- const timeParts = timeString.split(':').map((part) => parseInt(part, 10));
885
- date.setHours(timeParts[0] || 0, timeParts[1] || 0, timeParts[2] || 0, 0);
886
- return date;
887
- }
888
- isValidTime(value) {
889
- if (!value) {
890
- return false;
891
- }
892
- return /^(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d{1,3})?)?$/.test(value);
893
- }
894
- async focus() {
895
- this.dateInput()?.nativeElement.focus();
896
- }
897
- canFocus() {
898
- return new Promise((resolve) => {
899
- setTimeout(() => {
900
- const elRef = this.dateInput();
901
- resolve(!!elRef?.nativeElement);
902
- }, 1);
903
- });
904
- }
905
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovDateComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
906
- 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: [
907
- {
908
- provide: NG_VALUE_ACCESSOR,
909
- useExisting: RdtGovDateComponent,
910
- multi: true,
911
- },
912
- {
913
- provide: RdtBaseFormInputComponent,
914
- useExisting: RdtGovDateComponent,
915
- },
916
- {
917
- provide: RdtDateComponent,
918
- useExisting: RdtGovDateComponent,
919
- },
920
- ], 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\n class=\"rdt-date-field-wrapper gov-form-input\"\n [attr.size]=\"size()\"\n [attr.disabled]=\"disabled() ? true : undefined\"\n >\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{width:100%}.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: 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 });
921
- }
922
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovDateComponent, decorators: [{
923
- type: Component,
924
- args: [{ selector: 'rdt-gov-date', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [
925
- RdtFormErrorPipe,
926
- MatDatepickerModule,
927
- MatInputModule,
928
- ReactiveFormsModule,
929
- FormsModule,
930
- ], providers: [
931
- {
932
- provide: NG_VALUE_ACCESSOR,
933
- useExisting: RdtGovDateComponent,
934
- multi: true,
935
- },
936
- {
937
- provide: RdtBaseFormInputComponent,
938
- useExisting: RdtGovDateComponent,
939
- },
940
- {
941
- provide: RdtDateComponent,
942
- useExisting: RdtGovDateComponent,
943
- },
944
- ], 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\n class=\"rdt-date-field-wrapper gov-form-input\"\n [attr.size]=\"size()\"\n [attr.disabled]=\"disabled() ? true : undefined\"\n >\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{width:100%}.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"] }]
945
- }] });
946
-
947
- class RdtGovNumberInputComponent extends RdtNumericInputComponent {
948
- renderer = inject(Renderer2);
949
- govInput = viewChild('govInput');
950
- size = input('s');
951
- icon = input(null);
952
- iconStart = input(null);
953
- labelPositionInput = input('top', {
954
- alias: 'labelPosition',
955
- });
956
- labelPosition = linkedSignal(() => this.labelPositionInput());
957
- inputElement = signal(null);
958
- hasErrors = false;
959
- isEmpty(value) {
960
- return value == null;
961
- }
962
- onInput(value) {
963
- if (value === '' || value == null) {
964
- this.onInternalValueChange(null);
965
- }
966
- else if (typeof value === 'string') {
967
- const parsed = parseFloat(value);
968
- if (!isNaN(parsed)) {
969
- this.onInternalValueChange(parsed);
970
- }
971
- }
972
- else {
973
- this.onInternalValueChange(value);
974
- }
975
- }
976
- readonlyEffect = effect(async () => {
977
- const input = this.govInput()?.nativeElement;
978
- const inputEl = await input?.getRef();
979
- const readonly = this.readonlyInput();
980
- if (input) {
981
- if (readonly) {
982
- this.renderer.setAttribute(input, 'readonly', 'true');
983
- }
984
- else {
985
- this.renderer.removeAttribute(input, 'readonly');
986
- }
987
- }
988
- });
989
- inputElementEffect = effect(async () => {
990
- const govInput = this.govInput()?.nativeElement;
991
- if (govInput) {
992
- const input = await govInput.getRef();
993
- this.inputElement.set(input);
994
- }
995
- });
996
- errorFixEffect = effect(() => {
997
- const inputElement = this.inputElement();
998
- const visibleErrors = this.visibleErrors();
999
- const hadErrors = this.hasErrors;
1000
- this.hasErrors = !!visibleErrors;
1001
- if (hadErrors !== this.hasErrors) {
1002
- const isActive = document.activeElement === inputElement;
1003
- if (isActive && inputElement) {
1004
- forceFocus(inputElement);
1005
- }
1006
- }
1007
- });
1008
- async focus() {
1009
- const govInput = await this.govInput()?.nativeElement;
1010
- const el = await govInput?.getRef();
1011
- forceFocus(el);
684
+ });
685
+ async focus() {
686
+ const govInput = await this.govInput()?.nativeElement;
687
+ const el = await govInput?.getRef();
688
+ forceFocus(el);
1012
689
  }
1013
690
  canFocus() {
1014
691
  return new Promise((resolve) => {
@@ -1029,7 +706,7 @@ class RdtGovNumberInputComponent extends RdtNumericInputComponent {
1029
706
  provide: RdtBaseFormInputComponent,
1030
707
  useExisting: RdtGovNumberInputComponent,
1031
708
  },
1032
- ], 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 });
709
+ ], viewQueries: [{ propertyName: "govInput", first: true, predicate: ["govInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@let lPos = labelPosition(); @if(lPos === 'top' && label().length>0){\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)}rdt-gov-number-input,rdt-gov-text-input,rdt-gov-select{min-width:60px}\n"], dependencies: [{ kind: "pipe", type: RdtFormErrorPipe, name: "rdtFormError" }, { kind: "directive", type: RdtIconOutletDirective, selector: "[rdtIconOutlet]", exportAs: ["rdtIconOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1033
710
  }
1034
711
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovNumberInputComponent, decorators: [{
1035
712
  type: Component,
@@ -1043,7 +720,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
1043
720
  provide: RdtBaseFormInputComponent,
1044
721
  useExisting: RdtGovNumberInputComponent,
1045
722
  },
1046
- ], 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"] }]
723
+ ], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "@let lPos = labelPosition(); @if(lPos === 'top' && label().length>0){\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)}rdt-gov-number-input,rdt-gov-text-input,rdt-gov-select{min-width:60px}\n"] }]
1047
724
  }] });
1048
725
 
1049
726
  class RdtGovSelectOfflineProviderDirective extends RdtSelectOfflineDatasourceProviderDirective {
@@ -1336,7 +1013,7 @@ class RdtGovSelectComponent extends RdtBaseSelectCommonComponent {
1336
1013
  provide: RdtBaseFormInputComponent,
1337
1014
  useExisting: RdtGovSelectComponent,
1338
1015
  },
1339
- ], 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 });
1016
+ ], 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' &&\nlabel().length>0){\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)}rdt-gov-number-input,rdt-gov-text-input,rdt-gov-select{min-width:60px}\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 });
1340
1017
  }
1341
1018
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovSelectComponent, decorators: [{
1342
1019
  type: Component,
@@ -1367,7 +1044,369 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
1367
1044
  provide: RdtBaseFormInputComponent,
1368
1045
  useExisting: RdtGovSelectComponent,
1369
1046
  },
1370
- ], 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"] }]
1047
+ ], schemas: [CUSTOM_ELEMENTS_SCHEMA], encapsulation: ViewEncapsulation.None, template: "@let sel = selectedLabel(); @let lPos = labelPosition(); @let hasError =\nhideErrors() ? '' : visibleErrors() | rdtFormError; @if(lPos === 'top' &&\nlabel().length>0){\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)}rdt-gov-number-input,rdt-gov-text-input,rdt-gov-select{min-width:60px}\n"] }]
1048
+ }] });
1049
+
1050
+ function provideNgrdtGov(options = {}) {
1051
+ return [
1052
+ importProvidersFrom(GovDesignSystemModule),
1053
+ {
1054
+ provide: RDT_ICON_BASE_PROVIDER,
1055
+ useValue: RdtGovIconComponent,
1056
+ },
1057
+ {
1058
+ provide: RDT_CHECKBOX_BASE_PROVIDER,
1059
+ useValue: RdtGovCheckboxComponent,
1060
+ },
1061
+ {
1062
+ provide: RDT_BUTTON_BASE_PROVIDER,
1063
+ useValue: RdtGovButtonComponent,
1064
+ },
1065
+ {
1066
+ provide: RDT_NUMERIC_INPUT_BASE_PROVIDER,
1067
+ useValue: RdtGovNumberInputComponent,
1068
+ },
1069
+ {
1070
+ provide: RDT_SELECT_BASE_PROVIDER,
1071
+ useValue: RdtGovSelectComponent,
1072
+ },
1073
+ {
1074
+ provide: RDT_ICON_REGISTRY_PROVIDER,
1075
+ useValue: {
1076
+ [RdtIcon.MenuArrowRight]: 'components/chevron-right',
1077
+ [RdtIcon.MenuArrowDown]: 'components/chevron-down',
1078
+ [RdtIcon.SkipDoubleLeft]: 'components/chevron-double-left',
1079
+ [RdtIcon.SkipDoubleRight]: 'components/chevron-double-right',
1080
+ [RdtIcon.SkipLeft]: 'components/chevron-left',
1081
+ [RdtIcon.SkipRight]: 'components/chevron-right',
1082
+ [RdtIcon.SortAsc]: 'bs/sort-down',
1083
+ [RdtIcon.SortDesc]: 'bs/sort-up',
1084
+ [RdtIcon.SortEnabled]: 'bs/filter',
1085
+ },
1086
+ },
1087
+ {
1088
+ provide: RDT_GOV_NOTIFICATION_CONFIG_PROVIDER,
1089
+ useValue: {
1090
+ duration: 3000,
1091
+ positionVert: 'top',
1092
+ positionHoriz: 'right',
1093
+ },
1094
+ },
1095
+ {
1096
+ provide: RDT_NOTIFICATION_SERVICE_PROVIDER,
1097
+ useFactory: () => inject(RdtGovNotificationService),
1098
+ },
1099
+ {
1100
+ provide: RDT_ALERT_DIALOG_PROVIDER,
1101
+ useValue: {
1102
+ minHeight: '250px',
1103
+ },
1104
+ },
1105
+ {
1106
+ provide: RDT_CONFIRM_DIALOG_PROVIDER,
1107
+ useValue: {
1108
+ minHeight: '250px',
1109
+ },
1110
+ },
1111
+ {
1112
+ provide: RDT_BASE_DIALOG_PROVIDER,
1113
+ useValue: {
1114
+ isDraggable: false,
1115
+ minHeight: '400px',
1116
+ },
1117
+ },
1118
+ {
1119
+ provide: RDT_SPINNER_BASE_PROVIDER,
1120
+ useValue: RdtGovSpinnerComponent,
1121
+ },
1122
+ { provide: MAT_DATE_LOCALE, useValue: 'cs-CZ' },
1123
+ { provide: LOCALE_ID, useValue: 'cs-CZ' },
1124
+ { provide: MatDatepickerIntl, useClass: RdtDatepickerIntl },
1125
+ {
1126
+ provide: RDT_FORM_ERROR_CODES_PROVIDER,
1127
+ useValue: defaultRdtFormErrorCodes,
1128
+ },
1129
+ provideDateFnsAdapter(),
1130
+ ];
1131
+ }
1132
+
1133
+ function initRdtGov(config = {}) {
1134
+ const defaultConfig = {
1135
+ iconsPath: 'icons',
1136
+ };
1137
+ window.GOV_DS_CONFIG = { ...defaultConfig, ...config };
1138
+ defineCustomElements(window);
1139
+ }
1140
+
1141
+ class RdtGovDateComponent extends RdtDateComponent {
1142
+ translateService = inject(RdtTranslateService);
1143
+ dateAdapter = inject(DateAdapter);
1144
+ dateInput = viewChild('dateInput');
1145
+ timeInput = viewChild('timeInput');
1146
+ size = input('s');
1147
+ labelPositionInput = input('top', {
1148
+ alias: 'labelPosition',
1149
+ });
1150
+ labelPosition = linkedSignal(() => this.labelPositionInput());
1151
+ showSeconds = input(false, { transform: booleanAttribute });
1152
+ stepInput = input(undefined, {
1153
+ alias: 'step',
1154
+ transform: numberAttribute,
1155
+ });
1156
+ step = linkedSignal(() => {
1157
+ return this.stepInput() ?? (this.showSeconds() ? 1 : undefined);
1158
+ });
1159
+ dateInputFocused = false;
1160
+ // Current value of physical date input field
1161
+ dateInputValue = signal(null);
1162
+ // Current value of physical time input field
1163
+ timeInputValue = signal('');
1164
+ internalTimeFormat = computed(() => this.showSeconds() ? 'HH:mm:ss' : 'HH:mm');
1165
+ defaultTime = computed(() => this.showSeconds() ? '00:00:00' : '00:00');
1166
+ localeUsed = computed(() => this.translateService.currentFormat().dateFnsLocale);
1167
+ hasDate = computed(() => this.type() !== 'time');
1168
+ hasTime = computed(() => this.type() !== 'date');
1169
+ internalTimeValue = computed(() => {
1170
+ const value = this.internalValue();
1171
+ if (!value) {
1172
+ return '';
1173
+ }
1174
+ const time = this.formatTime(value);
1175
+ // This condition prevents adding zeros for seconds while typing
1176
+ // E.g. 12:34 won't get changed to 12:34:00 automatically and it's valid value
1177
+ if (this.timeInputValue() !== time &&
1178
+ this.isValidTime(this.timeInputValue()) &&
1179
+ time.startsWith(this.timeInputValue())) {
1180
+ return this.timeInputValue();
1181
+ }
1182
+ return time;
1183
+ });
1184
+ isEmpty(value) {
1185
+ return value === null;
1186
+ }
1187
+ // Update DateAdapter locale when current locale changes
1188
+ dateFnsLocaleEffect = effect(() => {
1189
+ this.dateAdapter.setLocale(this.localeUsed());
1190
+ });
1191
+ toExternalValue(internalValue) {
1192
+ if (!internalValue) {
1193
+ return null;
1194
+ }
1195
+ return this.dateAdapter.format(internalValue, this.formControlFormat());
1196
+ }
1197
+ toInternalValue(externalValue) {
1198
+ if (!externalValue) {
1199
+ return null;
1200
+ }
1201
+ const parsed = this.dateAdapter.parse(externalValue, this.formControlFormat());
1202
+ if (!isValid(parsed)) {
1203
+ console.error(`Date field labeled "${this.label()}" was set invalid value "${externalValue}". Expected FormControl format: "${this.formControlFormat()}"`);
1204
+ return null;
1205
+ }
1206
+ return parsed;
1207
+ }
1208
+ /**
1209
+ * Prevents unnecessary change emissions on FormControl
1210
+ * @returns True if both Date objects represent the same point in time
1211
+ */
1212
+ areInternalValuesEqual(value1, value2) {
1213
+ if (value1 === null && value2 === null) {
1214
+ return true;
1215
+ }
1216
+ if (value1 === null || value2 === null) {
1217
+ return false;
1218
+ }
1219
+ return value1.getTime() === value2.getTime();
1220
+ }
1221
+ writeValue(value) {
1222
+ super.writeValue(value);
1223
+ const internalValue = this.toInternalValue(value);
1224
+ // Update physical input fields when FormControl value changes
1225
+ // Necessary before user interaction
1226
+ if (internalValue) {
1227
+ this.dateInputValue.set(internalValue);
1228
+ this.timeInputValue.set(this.formatTime(internalValue));
1229
+ }
1230
+ else {
1231
+ this.dateInputValue.set(null);
1232
+ this.timeInputValue.set('');
1233
+ }
1234
+ }
1235
+ onDateInput(event) {
1236
+ const dateValue = event.value;
1237
+ if (!dateValue) {
1238
+ // Clear FormControl value when date is invalid
1239
+ // Keep internal state
1240
+ this.dateInputValue.set(null);
1241
+ this.onChange(null);
1242
+ }
1243
+ else {
1244
+ this.dateInputValue.set(dateValue);
1245
+ this.onDateChange(dateValue);
1246
+ }
1247
+ }
1248
+ onTimeChange(event) {
1249
+ const value = event.target.value;
1250
+ let internalValue = this.internalValue();
1251
+ if (!this.hasDate()) {
1252
+ internalValue ??= this.emptyTimeDate;
1253
+ }
1254
+ const dateOk = internalValue && (this.dateInputValue() || !this.hasDate());
1255
+ if (this.isValidTime(value) && internalValue && dateOk) {
1256
+ const newDate = this.populateTime(new Date(internalValue), value);
1257
+ this.onInternalValueChange(newDate);
1258
+ }
1259
+ this.timeInputValue.set(value);
1260
+ }
1261
+ onDateChange(date) {
1262
+ const value = date ?? null;
1263
+ const internalValueOld = this.internalValue();
1264
+ const timeInputValue = this.timeInputValue();
1265
+ // If both newly selected date and time input are valid, combine them
1266
+ if (value && timeInputValue) {
1267
+ this.populateTime(value, timeInputValue);
1268
+ }
1269
+ // Set internal value
1270
+ this.onInternalValueChange(value);
1271
+ // In case date input is focused, revert internal value
1272
+ // to original value before Date change event
1273
+ // while keeping external value and FormControl value updated
1274
+ // This prevents unexpected changes to date and time inputs while typing
1275
+ // New internal value will be set on date input blur
1276
+ if (this.dateInputFocused) {
1277
+ this.internalValue.set(internalValueOld);
1278
+ }
1279
+ }
1280
+ onDateInputFocus() {
1281
+ this.dateInputFocused = true;
1282
+ this.onFocus();
1283
+ }
1284
+ onDateInputBlur() {
1285
+ this.dateInputFocused = false;
1286
+ // Set internal value to the combined date and time from inputs
1287
+ // In case date and/or time input is invalid, internal value will not change
1288
+ const dateTimeFromInputs = this.getDateTimeFromInputs();
1289
+ if (dateTimeFromInputs) {
1290
+ this.onInternalValueChange(dateTimeFromInputs);
1291
+ }
1292
+ this.onBlur();
1293
+ }
1294
+ /**
1295
+ * Returns Date object constructed from current date and time input values
1296
+ * or null if either input is invalid
1297
+ */
1298
+ getDateTimeFromInputs() {
1299
+ const dateInputValue = this.dateInputValue();
1300
+ const timeInputValue = this.timeInputValue();
1301
+ if (!timeInputValue || !dateInputValue) {
1302
+ return null;
1303
+ }
1304
+ else {
1305
+ const newInternal = new Date(dateInputValue);
1306
+ this.populateTime(newInternal, timeInputValue);
1307
+ return newInternal;
1308
+ }
1309
+ }
1310
+ onTimeInputFocus() {
1311
+ this.onFocus();
1312
+ }
1313
+ onTimeInputBlur() {
1314
+ const timeInputEl = this.timeInput()?.nativeElement;
1315
+ if (!timeInputEl) {
1316
+ return;
1317
+ }
1318
+ const value = timeInputEl?.value ?? '';
1319
+ // Emit null value to FormControl in case time is blurred while invalid (empty slots), ,
1320
+ // Keep internal state intacted to prevent unexpected changes to input fields
1321
+ if (!value) {
1322
+ this.onChange(null);
1323
+ }
1324
+ this.onBlur();
1325
+ }
1326
+ /**
1327
+ * Helper function to format a Date object to a time string
1328
+ */
1329
+ formatTime(date) {
1330
+ if (this.type() === 'date') {
1331
+ return this.defaultTime();
1332
+ }
1333
+ try {
1334
+ const locale = this.localeUsed();
1335
+ const timeFormat = this.internalTimeFormat();
1336
+ return format(date, timeFormat, { locale });
1337
+ }
1338
+ catch (e) {
1339
+ console.log('Error formatting date: ', date, 'target format: ', this.internalTimeFormat());
1340
+ console.error(e);
1341
+ return this.defaultTime();
1342
+ }
1343
+ }
1344
+ /**
1345
+ * Helper function to populate a Date object with time from a string
1346
+ * in the format HH:mm or HH:mm:ss
1347
+ */
1348
+ populateTime(date, timeString) {
1349
+ const timeParts = timeString.split(':').map((part) => parseInt(part, 10));
1350
+ date.setHours(timeParts[0] || 0, timeParts[1] || 0, timeParts[2] || 0, 0);
1351
+ return date;
1352
+ }
1353
+ isValidTime(value) {
1354
+ if (!value) {
1355
+ return false;
1356
+ }
1357
+ return /^(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d{1,3})?)?$/.test(value);
1358
+ }
1359
+ async focus() {
1360
+ this.dateInput()?.nativeElement.focus();
1361
+ }
1362
+ canFocus() {
1363
+ return new Promise((resolve) => {
1364
+ setTimeout(() => {
1365
+ const elRef = this.dateInput();
1366
+ resolve(!!elRef?.nativeElement);
1367
+ }, 1);
1368
+ });
1369
+ }
1370
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovDateComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1371
+ 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: [
1372
+ {
1373
+ provide: NG_VALUE_ACCESSOR,
1374
+ useExisting: RdtGovDateComponent,
1375
+ multi: true,
1376
+ },
1377
+ {
1378
+ provide: RdtBaseFormInputComponent,
1379
+ useExisting: RdtGovDateComponent,
1380
+ },
1381
+ {
1382
+ provide: RdtDateComponent,
1383
+ useExisting: RdtGovDateComponent,
1384
+ },
1385
+ ], 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\n class=\"rdt-date-field-wrapper gov-form-input\"\n [attr.size]=\"size()\"\n [attr.disabled]=\"disabled() ? true : undefined\"\n >\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)}rdt-gov-number-input,rdt-gov-text-input,rdt-gov-select{min-width:60px}\n", ".rdt-date-wrapper{width:100%}.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$3.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i1$3.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i1$3.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { 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 });
1386
+ }
1387
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovDateComponent, decorators: [{
1388
+ type: Component,
1389
+ args: [{ selector: 'rdt-gov-date', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [
1390
+ RdtFormErrorPipe,
1391
+ MatDatepickerModule,
1392
+ MatInputModule,
1393
+ ReactiveFormsModule,
1394
+ FormsModule,
1395
+ ], providers: [
1396
+ {
1397
+ provide: NG_VALUE_ACCESSOR,
1398
+ useExisting: RdtGovDateComponent,
1399
+ multi: true,
1400
+ },
1401
+ {
1402
+ provide: RdtBaseFormInputComponent,
1403
+ useExisting: RdtGovDateComponent,
1404
+ },
1405
+ {
1406
+ provide: RdtDateComponent,
1407
+ useExisting: RdtGovDateComponent,
1408
+ },
1409
+ ], 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\n class=\"rdt-date-field-wrapper gov-form-input\"\n [attr.size]=\"size()\"\n [attr.disabled]=\"disabled() ? true : undefined\"\n >\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)}rdt-gov-number-input,rdt-gov-text-input,rdt-gov-select{min-width:60px}\n", ".rdt-date-wrapper{width:100%}.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"] }]
1371
1410
  }] });
1372
1411
 
1373
1412
  class RdtGovTextInputComponent extends RdtTextInputComponent {
@@ -1441,7 +1480,7 @@ class RdtGovTextInputComponent extends RdtTextInputComponent {
1441
1480
  provide: RdtBaseFormInputComponent,
1442
1481
  useExisting: RdtGovTextInputComponent,
1443
1482
  },
1444
- ], 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 });
1483
+ ], 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)}rdt-gov-number-input,rdt-gov-text-input,rdt-gov-select{min-width:60px}\n"], dependencies: [{ kind: "pipe", type: RdtFormErrorPipe, name: "rdtFormError" }, { kind: "directive", type: RdtIconOutletDirective, selector: "[rdtIconOutlet]", exportAs: ["rdtIconOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1445
1484
  }
1446
1485
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovTextInputComponent, decorators: [{
1447
1486
  type: Component,
@@ -1455,7 +1494,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
1455
1494
  provide: RdtBaseFormInputComponent,
1456
1495
  useExisting: RdtGovTextInputComponent,
1457
1496
  },
1458
- ], 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"] }]
1497
+ ], 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)}rdt-gov-number-input,rdt-gov-text-input,rdt-gov-select{min-width:60px}\n"] }]
1459
1498
  }] });
1460
1499
 
1461
1500
  class RdtGovThemeService {
@@ -1493,5 +1532,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
1493
1532
  * Generated bundle index. Do not edit.
1494
1533
  */
1495
1534
 
1496
- 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 };
1535
+ export { DEFAULT_GOV_BUTTON_COLOR, DEFAULT_GOV_BUTTON_SIZE, DEFAULT_GOV_BUTTON_TYPE, RDT_ALERT_DIALOG_PROVIDER, RDT_BASE_DIALOG_PROVIDER, RDT_CONFIRM_DIALOG_PROVIDER, RDT_GOV_NOTIFICATION_CONFIG_PROVIDER, RDT_GOV_NOTIFICATION_DEFAULT_CONFIG, RdtGovBaseDialog, RdtGovButtonComponent, RdtGovCheckboxComponent, RdtGovDateComponent, RdtGovDialogContentComponent, RdtGovDialogFooterComponent, RdtGovDialogHeaderComponent, RdtGovDialogLoadingComponent, RdtGovDialogService, RdtGovIconComponent, RdtGovNotificationService, RdtGovNumberInputComponent, RdtGovSelectComponent, RdtGovSelectOfflineProviderDirective, RdtGovSpinnerComponent, RdtGovTextInputComponent, RdtGovThemeService, forceFocus, initRdtGov, provideNgrdtGov };
1497
1536
  //# sourceMappingURL=ngrdt-gov.mjs.map