@ngrdt/gov 0.0.58

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.
package/README.md ADDED
@@ -0,0 +1,7 @@
1
+ # @ngrdt/gov
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Running unit tests
6
+
7
+ Run `nx test @ngrdt/gov` to execute the unit tests.
@@ -0,0 +1,478 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, Renderer2, viewChild, input, linkedSignal, signal, effect, CUSTOM_ELEMENTS_SCHEMA, ViewEncapsulation, ChangeDetectionStrategy, Component, Directive, ViewContainerRef, viewChildren, booleanAttribute, computed, untracked } from '@angular/core';
3
+ import * as i1 from '@angular/forms';
4
+ import { NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';
5
+ import { RdtNumericInputComponent, RdtFormErrorPipe, RdtBaseFormInputComponent, RdtSelectOfflineDatasourceProviderDirective, RdtBaseSelectCommonComponent, RdtSelectOptionDirective, RdtSelectStore, RdtSingleSelectComponent, RdtTextInputComponent } from '@ngrdt/forms';
6
+ import { RdtIconOutletDirective } from '@ngrdt/icon';
7
+ import { signalToPromise } from '@ngrdt/utils';
8
+ import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
9
+ import { UP_ARROW, DOWN_ARROW, ENTER } from '@angular/cdk/keycodes';
10
+ import { Overlay } from '@angular/cdk/overlay';
11
+ import { TemplatePortal } from '@angular/cdk/portal';
12
+ import * as i2 from '@gov-design-system-ce/angular';
13
+ import { GovDesignSystemModule } from '@gov-design-system-ce/angular';
14
+ import { RdtAutoFocusOnInitDirective } from '@ngrdt/core';
15
+ import { map, filter, fromEvent, throttleTime, animationFrameScheduler } from 'rxjs';
16
+
17
+ const DEFAULT_GOV_BUTTON_COLOR = 'primary';
18
+ const DEFAULT_GOV_BUTTON_TYPE = 'outlined';
19
+ const DEFAULT_GOV_BUTTON_SIZE = 'xs';
20
+
21
+ function forceFocus(input) {
22
+ let cnt = 0;
23
+ const maxCnt = 10;
24
+ const int = setInterval(() => {
25
+ input.focus({ preventScroll: true });
26
+ if (cnt === maxCnt || input.matches(':focus')) {
27
+ clearInterval(int);
28
+ }
29
+ cnt++;
30
+ }, 5);
31
+ }
32
+
33
+ class RdtGovNumberInputComponent extends RdtNumericInputComponent {
34
+ renderer = inject(Renderer2);
35
+ govInput = viewChild('govInput');
36
+ size = input('s');
37
+ icon = input(null);
38
+ iconStart = input(null);
39
+ labelPositionInput = input('top', {
40
+ alias: 'labelPosition',
41
+ });
42
+ labelPosition = linkedSignal(() => this.labelPositionInput());
43
+ inputElement = signal(null);
44
+ hasErrors = false;
45
+ isEmpty(value) {
46
+ return value == null;
47
+ }
48
+ onInput(value) {
49
+ if (value === '' || value == null) {
50
+ this.onInternalValueChange(null);
51
+ }
52
+ else if (typeof value === 'string') {
53
+ const parsed = parseFloat(value);
54
+ if (!isNaN(parsed)) {
55
+ this.onInternalValueChange(parsed);
56
+ }
57
+ }
58
+ else {
59
+ this.onInternalValueChange(value);
60
+ }
61
+ }
62
+ readonlyEffect = effect(async () => {
63
+ const input = this.govInput()?.nativeElement;
64
+ const inputEl = await input?.getRef();
65
+ const readonly = this.readonlyInput();
66
+ if (input) {
67
+ if (readonly) {
68
+ this.renderer.setAttribute(input, 'readonly', 'true');
69
+ }
70
+ else {
71
+ this.renderer.removeAttribute(input, 'readonly');
72
+ }
73
+ }
74
+ });
75
+ inputElementEffect = effect(async () => {
76
+ const govInput = this.govInput()?.nativeElement;
77
+ if (govInput) {
78
+ const input = await govInput.getRef();
79
+ this.inputElement.set(input);
80
+ }
81
+ });
82
+ errorFixEffect = effect(() => {
83
+ const inputElement = this.inputElement();
84
+ const visibleErrors = this.visibleErrors();
85
+ const hadErrors = this.hasErrors;
86
+ this.hasErrors = !!visibleErrors;
87
+ if (hadErrors !== this.hasErrors) {
88
+ const isActive = document.activeElement === inputElement;
89
+ if (isActive && inputElement) {
90
+ forceFocus(inputElement);
91
+ }
92
+ }
93
+ });
94
+ async focus() {
95
+ const govInput = await this.govInput()?.nativeElement;
96
+ const el = await govInput?.getRef();
97
+ forceFocus(el);
98
+ }
99
+ canFocus() {
100
+ return signalToPromise(this.govInput, { injector: this.injector })
101
+ .then((btn) => btn?.nativeElement.getRef())
102
+ .then((el) => !!el);
103
+ }
104
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovNumberInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
105
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: RdtGovNumberInputComponent, isStandalone: true, selector: "rdt-gov-number-input", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconStart: { classPropertyName: "iconStart", publicName: "iconStart", isSignal: true, isRequired: false, transformFunction: null }, labelPositionInput: { classPropertyName: "labelPositionInput", publicName: "labelPosition", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
106
+ {
107
+ provide: NG_VALUE_ACCESSOR,
108
+ useExisting: RdtGovNumberInputComponent,
109
+ multi: true,
110
+ },
111
+ {
112
+ provide: RdtBaseFormInputComponent,
113
+ useExisting: RdtGovNumberInputComponent,
114
+ },
115
+ ], viewQueries: [{ propertyName: "govInput", first: true, predicate: ["govInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@let lPos = labelPosition(); @if(lPos === 'top'){\n<gov-form-label slot=\"left\" size=\"m\" [class.warning-color-gov-label]=\"hasError\"\n >{{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n>\n}\n<gov-form-input\n #govInput\n input-type=\"number\"\n [size]=\"size()\"\n [value]=\"internalValue()\"\n [placeholder]=\"placeholder()\"\n [autocomplete]=\"autocomplete()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [invalid]=\"invalid() && touched()\"\n [attr.invalid]=\"invalid() && touched()\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n [attr.disabled]=\"disabled()\"\n [name]=\"id()\"\n [identifier]=\"id()\"\n (gov-input)=\"onInput($event.detail.value)\"\n (gov-focus)=\"onFocus()\"\n (gov-blur)=\"onBlur()\"\n>\n @let lI = iconStart(); @let rI = icon(); @if(lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if(lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if (lI) {\n <span slot=\"icon-start\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: lI }\"></ng-container>\n </span>\n } @if (rI) {\n <span slot=\"icon-end\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: rI }\"></ng-container>\n </span>\n }\n</gov-form-input>\n@let hasError = visibleErrors() | rdtFormError; @if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\">{{ hasError }}</gov-form-message>\n}\n", styles: [".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}\n"], dependencies: [{ kind: "pipe", type: RdtFormErrorPipe, name: "rdtFormError" }, { kind: "directive", type: RdtIconOutletDirective, selector: "[rdtIconOutlet]", exportAs: ["rdtIconOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
116
+ }
117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovNumberInputComponent, decorators: [{
118
+ type: Component,
119
+ args: [{ selector: 'rdt-gov-number-input', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [RdtFormErrorPipe, RdtIconOutletDirective], providers: [
120
+ {
121
+ provide: NG_VALUE_ACCESSOR,
122
+ useExisting: RdtGovNumberInputComponent,
123
+ multi: true,
124
+ },
125
+ {
126
+ provide: RdtBaseFormInputComponent,
127
+ useExisting: RdtGovNumberInputComponent,
128
+ },
129
+ ], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "@let lPos = labelPosition(); @if(lPos === 'top'){\n<gov-form-label slot=\"left\" size=\"m\" [class.warning-color-gov-label]=\"hasError\"\n >{{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n>\n}\n<gov-form-input\n #govInput\n input-type=\"number\"\n [size]=\"size()\"\n [value]=\"internalValue()\"\n [placeholder]=\"placeholder()\"\n [autocomplete]=\"autocomplete()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [invalid]=\"invalid() && touched()\"\n [attr.invalid]=\"invalid() && touched()\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n [attr.disabled]=\"disabled()\"\n [name]=\"id()\"\n [identifier]=\"id()\"\n (gov-input)=\"onInput($event.detail.value)\"\n (gov-focus)=\"onFocus()\"\n (gov-blur)=\"onBlur()\"\n>\n @let lI = iconStart(); @let rI = icon(); @if(lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if(lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if (lI) {\n <span slot=\"icon-start\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: lI }\"></ng-container>\n </span>\n } @if (rI) {\n <span slot=\"icon-end\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: rI }\"></ng-container>\n </span>\n }\n</gov-form-input>\n@let hasError = visibleErrors() | rdtFormError; @if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\">{{ hasError }}</gov-form-message>\n}\n", styles: [".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}\n"] }]
130
+ }] });
131
+
132
+ class RdtGovSelectOfflineProviderDirective extends RdtSelectOfflineDatasourceProviderDirective {
133
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovSelectOfflineProviderDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
134
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0", type: RdtGovSelectOfflineProviderDirective, isStandalone: true, selector: "rdt-gov-select[options]", usesInheritance: true, ngImport: i0 });
135
+ }
136
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovSelectOfflineProviderDirective, decorators: [{
137
+ type: Directive,
138
+ args: [{
139
+ selector: 'rdt-gov-select[options]',
140
+ }]
141
+ }] });
142
+
143
+ class RdtGovSelectComponent extends RdtBaseSelectCommonComponent {
144
+ overlay = inject(Overlay);
145
+ viewContainerRef = inject(ViewContainerRef);
146
+ scrollContainer = viewChild('scrollContainer');
147
+ selectButton = viewChild('selectButton');
148
+ overlayTemplate = viewChild('overlayContainer');
149
+ optionEls = viewChildren((RdtSelectOptionDirective));
150
+ multi = input(false, { transform: booleanAttribute });
151
+ size = input('s');
152
+ placeholder = input('Vyberte');
153
+ showClear = input(true, { transform: booleanAttribute });
154
+ showSearchInput = input(false, {
155
+ transform: booleanAttribute,
156
+ alias: 'showSearch',
157
+ });
158
+ showSearch = linkedSignal(() => this.showSearchInput());
159
+ labelPositionInput = input('top', {
160
+ alias: 'labelPosition',
161
+ });
162
+ labelPosition = linkedSignal(() => this.labelPositionInput());
163
+ keyManager = new ActiveDescendantKeyManager(this.optionEls, this.injector);
164
+ resizeEffect = effect(() => {
165
+ const btn = this.selectButton()?.nativeElement;
166
+ const observer = new ResizeObserver((entries) => {
167
+ const size = entries[0]?.borderBoxSize?.[0].inlineSize;
168
+ if (this.overlayRef && size) {
169
+ this.overlayRef.updateSize({
170
+ minWidth: size,
171
+ });
172
+ }
173
+ });
174
+ if (btn) {
175
+ observer.observe(btn);
176
+ }
177
+ return () => observer.disconnect();
178
+ });
179
+ overlayRef = null;
180
+ isEmpty(value) {
181
+ return value === null || (Array.isArray(value) && value.length === 0);
182
+ }
183
+ selectedLabel = computed(() => this.store
184
+ .selectedItems()
185
+ .map((i) => i.label)
186
+ .join(', ') || null);
187
+ onClearClick(event) {
188
+ this.store.unselectAll();
189
+ }
190
+ openOverlay() {
191
+ if (this.readonlyInput()) {
192
+ return;
193
+ }
194
+ if (this.overlayRef === null) {
195
+ this.overlayRef = this.createOverlay();
196
+ this.overlayRef.backdropClick().subscribe(() => {
197
+ this.overlayRef?.detach();
198
+ this.onTouch();
199
+ });
200
+ this.overlayRef
201
+ .keydownEvents()
202
+ .pipe(map((e) => e.key), filter((key) => key === 'Escape'))
203
+ .subscribe((e) => {
204
+ this.overlayRef?.detach();
205
+ this.onTouch();
206
+ });
207
+ }
208
+ if (this.overlayRef.hasAttached()) {
209
+ this.overlayRef.detach();
210
+ this.onTouch();
211
+ return;
212
+ }
213
+ const overlayTemplate = this.overlayTemplate();
214
+ if (overlayTemplate) {
215
+ const portal = new TemplatePortal(overlayTemplate, this.viewContainerRef);
216
+ this.overlayRef.attach(portal);
217
+ }
218
+ }
219
+ handleButtonKeydown($event) {
220
+ const keyCode = $event.keyCode;
221
+ const isArrowKey = keyCode === UP_ARROW || keyCode === DOWN_ARROW;
222
+ if (isArrowKey) {
223
+ this.openOverlay();
224
+ }
225
+ }
226
+ handleButtonBlur() {
227
+ if (!this.overlayRef?.hasAttached()) {
228
+ this.onBlur();
229
+ }
230
+ }
231
+ handleInput(query) {
232
+ this.store.setQuery(query);
233
+ this.keyManager.setActiveItem(-1);
234
+ }
235
+ handleInputKeydown($event) {
236
+ const key = $event.keyCode;
237
+ const activeItem = this.keyManager.activeItem;
238
+ if (key === ENTER && activeItem !== null) {
239
+ this.selectOption(activeItem.value());
240
+ }
241
+ else {
242
+ this.keyManager.onKeydown($event);
243
+ this.keyManager.activeItem?.scrollIntoElement();
244
+ }
245
+ }
246
+ toExternalValue(internalValue) {
247
+ if (untracked(this.multi)) {
248
+ return internalValue;
249
+ }
250
+ else {
251
+ return Array.isArray(internalValue) ? internalValue[0] : null;
252
+ }
253
+ }
254
+ selectOption(option) {
255
+ if (untracked(this.multi)) {
256
+ this.store.toggle(option);
257
+ }
258
+ else {
259
+ this.store.selectSingle(option);
260
+ // detach on a next tick
261
+ // otherwise on ENTER overlay is still enter
262
+ setTimeout(() => {
263
+ this.overlayRef?.detach();
264
+ this.keyManager.setActiveItem(-1);
265
+ });
266
+ }
267
+ }
268
+ selectButtonEffect = effect(() => {
269
+ const selectButton = this.selectButton()?.nativeElement;
270
+ const overlay = this.overlayRef;
271
+ if (overlay && selectButton) {
272
+ const positionStrategy = this.getPositionStrategy(selectButton);
273
+ overlay.updatePositionStrategy(positionStrategy);
274
+ }
275
+ });
276
+ getPositionStrategy(element) {
277
+ return this.overlay
278
+ .position()
279
+ .flexibleConnectedTo(this.selectButton()?.nativeElement)
280
+ .withPositions([
281
+ {
282
+ originX: 'start',
283
+ originY: 'bottom',
284
+ overlayX: 'start',
285
+ overlayY: 'top',
286
+ panelClass: 'rdt-gov-select-overlay-panel-bottom',
287
+ },
288
+ {
289
+ originX: 'start',
290
+ originY: 'top',
291
+ overlayX: 'start',
292
+ overlayY: 'bottom',
293
+ panelClass: 'rdt-gov-select-overlay-panel-top',
294
+ },
295
+ ]);
296
+ }
297
+ createOverlay() {
298
+ const selectButton = this.selectButton()?.nativeElement;
299
+ const positionStrategy = this.getPositionStrategy(selectButton);
300
+ return this.overlay.create({
301
+ hasBackdrop: true,
302
+ backdropClass: 'rdt-gov-transparent-backdrop',
303
+ positionStrategy,
304
+ minWidth: this.selectButton()?.nativeElement.clientWidth,
305
+ scrollStrategy: this.overlay.scrollStrategies.block(),
306
+ });
307
+ }
308
+ scrollEffect = effect((onCleanup) => {
309
+ const scrollContainer = this.scrollContainer()?.nativeElement;
310
+ if (!scrollContainer) {
311
+ return;
312
+ }
313
+ const dist$ = fromEvent(scrollContainer, 'scroll').pipe(filter(() => untracked(this.store.hasMore) && !untracked(this.store.loading)), throttleTime(0, animationFrameScheduler), map(() => this.scrollDistToBottom(scrollContainer)));
314
+ const THRESHOLD = 42;
315
+ const sub = dist$.subscribe((dist) => {
316
+ if (dist < THRESHOLD) {
317
+ this.store.fetch();
318
+ }
319
+ });
320
+ onCleanup(() => sub.unsubscribe());
321
+ });
322
+ scrollDistToBottom(container) {
323
+ return (container.scrollHeight - (container.scrollTop + container.clientHeight));
324
+ }
325
+ focus() {
326
+ this.openOverlay();
327
+ }
328
+ canFocus() {
329
+ return !this.disabled();
330
+ }
331
+ ngOnDestroy() {
332
+ super.ngOnDestroy();
333
+ this.overlayRef?.dispose();
334
+ this.keyManager.destroy();
335
+ }
336
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovSelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
337
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: RdtGovSelectComponent, isStandalone: true, selector: "rdt-gov-select", inputs: { multi: { classPropertyName: "multi", publicName: "multi", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, showClear: { classPropertyName: "showClear", publicName: "showClear", isSignal: true, isRequired: false, transformFunction: null }, showSearchInput: { classPropertyName: "showSearchInput", publicName: "showSearch", isSignal: true, isRequired: false, transformFunction: null }, labelPositionInput: { classPropertyName: "labelPositionInput", publicName: "labelPosition", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
338
+ RdtSelectStore,
339
+ {
340
+ provide: NG_VALUE_ACCESSOR,
341
+ useExisting: RdtGovSelectComponent,
342
+ multi: true,
343
+ },
344
+ {
345
+ provide: RdtSingleSelectComponent,
346
+ useExisting: RdtGovSelectComponent,
347
+ },
348
+ {
349
+ provide: RdtBaseSelectCommonComponent,
350
+ useExisting: RdtGovSelectComponent,
351
+ },
352
+ {
353
+ provide: RdtBaseFormInputComponent,
354
+ useExisting: RdtGovSelectComponent,
355
+ },
356
+ ], 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 =\nvisibleErrors() | 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 {\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 name=\"exclamation-lg\" class=\"icon-warning\"></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\">\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=\"Zadejte hledan\u00FD v\u00FDraz\"\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 [rdtSelectOption]=\"option\"\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 {{ option.label }}\n </button>\n </li>\n } @empty { @if (loading()) {\n <li class=\"pointer-events-none\">\n <div class=\"option\">Na\u010D\u00EDt\u00E1n\u00ED hodnot...</div>\n </li>\n } @else if (store.query()) {\n <li class=\"pointer-events-none\">\n <div class=\"option\">\n Pro zadan\u00FD v\u00FDraz nejsou k dispozici \u017E\u00E1dn\u00E9 z\u00E1znamy\n </div>\n </li>\n } @else if (!store.datasource()?.queryRequired) {\n <li class=\"pointer-events-none\">\n <div class=\"option\">Nejsou k dispozici \u017E\u00E1dn\u00E9 hodnoty</div>\n </li>\n } }\n </ul>\n </div>\n</ng-template>\n@if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\">{{ hasError }}</gov-form-message>\n}\n", styles: ["rdt-gov-select{display:inline-block;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=s].gov-form-select .select{height:var(--height-component-s);padding:var(--spacing-s);padding-right:var(--spacing-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 .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{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{font-size:var(--font-size-body-s);line-height:var(--height-line-s);letter-spacing:var(--spacing-s);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{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{color:var(--color-primary-50);background:var(--color-neutral-600)}.rdt-gov-select-container li{margin-bottom:0}.rdt-gov-select-container .picked{color:var(--icon-success)}.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;padding:var(--spacing-s)}.rdt-gov-select-container .search-container input{width:100%;background-color:var(--background-block-primary);font-family:var(--font-family);font-size:var(--font-size-body-s);height:var(--height-component-s);padding:var(--spacing-s);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}.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.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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: RdtAutoFocusOnInitDirective, selector: "[rdtAutofocusOnInit]" }, { kind: "ngmodule", type: GovDesignSystemModule }, { kind: "component", type: i2.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: i2.GovFormLabel, selector: "gov-form-label", inputs: ["identifier", "legend", "required", "size"] }, { kind: "component", type: i2.GovFormMessage, selector: "gov-form-message", inputs: ["color", "size"] }, { kind: "component", type: i2.GovIcon, selector: "gov-icon", inputs: ["color", "name", "size", "type"] }, { kind: "pipe", type: RdtFormErrorPipe, name: "rdtFormError" }], encapsulation: i0.ViewEncapsulation.None });
357
+ }
358
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovSelectComponent, decorators: [{
359
+ type: Component,
360
+ args: [{ selector: 'rdt-gov-select', imports: [
361
+ RdtSelectOptionDirective,
362
+ ReactiveFormsModule,
363
+ RdtAutoFocusOnInitDirective,
364
+ GovDesignSystemModule,
365
+ RdtFormErrorPipe,
366
+ ], providers: [
367
+ RdtSelectStore,
368
+ {
369
+ provide: NG_VALUE_ACCESSOR,
370
+ useExisting: RdtGovSelectComponent,
371
+ multi: true,
372
+ },
373
+ {
374
+ provide: RdtSingleSelectComponent,
375
+ useExisting: RdtGovSelectComponent,
376
+ },
377
+ {
378
+ provide: RdtBaseSelectCommonComponent,
379
+ useExisting: RdtGovSelectComponent,
380
+ },
381
+ {
382
+ provide: RdtBaseFormInputComponent,
383
+ useExisting: RdtGovSelectComponent,
384
+ },
385
+ ], schemas: [CUSTOM_ELEMENTS_SCHEMA], encapsulation: ViewEncapsulation.None, template: "@let sel = selectedLabel(); @let lPos = labelPosition(); @let hasError =\nvisibleErrors() | 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 {\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 name=\"exclamation-lg\" class=\"icon-warning\"></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\">\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=\"Zadejte hledan\u00FD v\u00FDraz\"\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 [rdtSelectOption]=\"option\"\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 {{ option.label }}\n </button>\n </li>\n } @empty { @if (loading()) {\n <li class=\"pointer-events-none\">\n <div class=\"option\">Na\u010D\u00EDt\u00E1n\u00ED hodnot...</div>\n </li>\n } @else if (store.query()) {\n <li class=\"pointer-events-none\">\n <div class=\"option\">\n Pro zadan\u00FD v\u00FDraz nejsou k dispozici \u017E\u00E1dn\u00E9 z\u00E1znamy\n </div>\n </li>\n } @else if (!store.datasource()?.queryRequired) {\n <li class=\"pointer-events-none\">\n <div class=\"option\">Nejsou k dispozici \u017E\u00E1dn\u00E9 hodnoty</div>\n </li>\n } }\n </ul>\n </div>\n</ng-template>\n@if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\">{{ hasError }}</gov-form-message>\n}\n", styles: ["rdt-gov-select{display:inline-block;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=s].gov-form-select .select{height:var(--height-component-s);padding:var(--spacing-s);padding-right:var(--spacing-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 .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{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{font-size:var(--font-size-body-s);line-height:var(--height-line-s);letter-spacing:var(--spacing-s);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{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{color:var(--color-primary-50);background:var(--color-neutral-600)}.rdt-gov-select-container li{margin-bottom:0}.rdt-gov-select-container .picked{color:var(--icon-success)}.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;padding:var(--spacing-s)}.rdt-gov-select-container .search-container input{width:100%;background-color:var(--background-block-primary);font-family:var(--font-family);font-size:var(--font-size-body-s);height:var(--height-component-s);padding:var(--spacing-s);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}.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"] }]
386
+ }] });
387
+
388
+ class RdtGovTextInputComponent extends RdtTextInputComponent {
389
+ renderer = inject(Renderer2);
390
+ govInput = viewChild('govInput');
391
+ size = input('s');
392
+ icon = input(null);
393
+ iconStart = input(null);
394
+ labelPositionInput = input('top', {
395
+ alias: 'labelPosition',
396
+ });
397
+ labelPosition = linkedSignal(() => this.labelPositionInput());
398
+ inputElement = signal(null);
399
+ hasErrors = false;
400
+ isEmpty(value) {
401
+ return value == null || value === '';
402
+ }
403
+ readonlyEffect = effect(async () => {
404
+ const input = this.govInput()?.nativeElement;
405
+ const inputEl = await input?.getRef();
406
+ const readonly = this.readonlyInput();
407
+ if (input) {
408
+ if (readonly) {
409
+ this.renderer.setAttribute(input, 'readonly', 'true');
410
+ }
411
+ else {
412
+ this.renderer.removeAttribute(input, 'readonly');
413
+ }
414
+ }
415
+ });
416
+ inputElementEffect = effect(async () => {
417
+ const govInput = this.govInput()?.nativeElement;
418
+ if (govInput) {
419
+ const input = await govInput.getRef();
420
+ this.inputElement.set(input);
421
+ }
422
+ });
423
+ errorFixEffect = effect(() => {
424
+ const inputElement = this.inputElement();
425
+ const visibleErrors = this.visibleErrors();
426
+ const hadErrors = this.hasErrors;
427
+ this.hasErrors = !!visibleErrors;
428
+ if (hadErrors !== this.hasErrors) {
429
+ const isActive = document.activeElement === inputElement;
430
+ if (isActive && inputElement) {
431
+ forceFocus(inputElement);
432
+ }
433
+ }
434
+ });
435
+ async focus() {
436
+ const govInput = await this.govInput()?.nativeElement;
437
+ const el = await govInput?.getRef();
438
+ forceFocus(el);
439
+ }
440
+ canFocus() {
441
+ return signalToPromise(this.govInput, { injector: this.injector })
442
+ .then((btn) => btn?.nativeElement.getRef())
443
+ .then((el) => !!el);
444
+ }
445
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovTextInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
446
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: RdtGovTextInputComponent, isStandalone: true, selector: "rdt-gov-text-input", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconStart: { classPropertyName: "iconStart", publicName: "iconStart", isSignal: true, isRequired: false, transformFunction: null }, labelPositionInput: { classPropertyName: "labelPositionInput", publicName: "labelPosition", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
447
+ {
448
+ provide: NG_VALUE_ACCESSOR,
449
+ useExisting: RdtGovTextInputComponent,
450
+ multi: true,
451
+ },
452
+ {
453
+ provide: RdtBaseFormInputComponent,
454
+ useExisting: RdtGovTextInputComponent,
455
+ },
456
+ ], viewQueries: [{ propertyName: "govInput", first: true, predicate: ["govInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@let lPos = labelPosition(); @if(lPos === 'top'){\n<gov-form-label slot=\"left\" size=\"m\" [class.warning-color-gov-label]=\"hasError\"\n >{{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n>\n}\n<gov-form-input\n #govInput\n [inputType]=\"type()\"\n [size]=\"size()\"\n [value]=\"internalValue()\"\n [placeholder]=\"placeholder()\"\n [autocomplete]=\"autocomplete()\"\n [minlength]=\"minlength()\"\n [maxlength]=\"maxlength()\"\n [invalid]=\"invalid() && touched()\"\n [attr.invalid]=\"invalid() && touched()\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n [attr.disabled]=\"disabled()\"\n [name]=\"id()\"\n [identifier]=\"id()\"\n (gov-input)=\"onInternalValueChange($event.detail.value)\"\n (gov-focus)=\"onFocus()\"\n (gov-blur)=\"onBlur()\"\n>\n @let lI = iconStart(); @let rI = icon(); @if(lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if(lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if (lI) {\n <span slot=\"icon-start\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: lI }\"></ng-container>\n </span>\n } @if (rI) {\n <span slot=\"icon-end\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: rI }\"></ng-container>\n </span>\n }\n</gov-form-input>\n@let hasError = visibleErrors() | rdtFormError; @if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\">{{ hasError }}</gov-form-message>\n}\n", styles: [".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}\n"], dependencies: [{ kind: "pipe", type: RdtFormErrorPipe, name: "rdtFormError" }, { kind: "directive", type: RdtIconOutletDirective, selector: "[rdtIconOutlet]", exportAs: ["rdtIconOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
457
+ }
458
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovTextInputComponent, decorators: [{
459
+ type: Component,
460
+ args: [{ selector: 'rdt-gov-text-input', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [RdtFormErrorPipe, RdtIconOutletDirective], providers: [
461
+ {
462
+ provide: NG_VALUE_ACCESSOR,
463
+ useExisting: RdtGovTextInputComponent,
464
+ multi: true,
465
+ },
466
+ {
467
+ provide: RdtBaseFormInputComponent,
468
+ useExisting: RdtGovTextInputComponent,
469
+ },
470
+ ], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "@let lPos = labelPosition(); @if(lPos === 'top'){\n<gov-form-label slot=\"left\" size=\"m\" [class.warning-color-gov-label]=\"hasError\"\n >{{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n>\n}\n<gov-form-input\n #govInput\n [inputType]=\"type()\"\n [size]=\"size()\"\n [value]=\"internalValue()\"\n [placeholder]=\"placeholder()\"\n [autocomplete]=\"autocomplete()\"\n [minlength]=\"minlength()\"\n [maxlength]=\"maxlength()\"\n [invalid]=\"invalid() && touched()\"\n [attr.invalid]=\"invalid() && touched()\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n [attr.disabled]=\"disabled()\"\n [name]=\"id()\"\n [identifier]=\"id()\"\n (gov-input)=\"onInternalValueChange($event.detail.value)\"\n (gov-focus)=\"onFocus()\"\n (gov-blur)=\"onBlur()\"\n>\n @let lI = iconStart(); @let rI = icon(); @if(lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if(lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if (lI) {\n <span slot=\"icon-start\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: lI }\"></ng-container>\n </span>\n } @if (rI) {\n <span slot=\"icon-end\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: rI }\"></ng-container>\n </span>\n }\n</gov-form-input>\n@let hasError = visibleErrors() | rdtFormError; @if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\">{{ hasError }}</gov-form-message>\n}\n", styles: [".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}\n"] }]
471
+ }] });
472
+
473
+ /**
474
+ * Generated bundle index. Do not edit.
475
+ */
476
+
477
+ export { DEFAULT_GOV_BUTTON_COLOR, DEFAULT_GOV_BUTTON_SIZE, DEFAULT_GOV_BUTTON_TYPE, RdtGovNumberInputComponent, RdtGovSelectComponent, RdtGovSelectOfflineProviderDirective, RdtGovTextInputComponent, forceFocus };
478
+ //# sourceMappingURL=ngrdt-gov.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngrdt-gov.mjs","sources":["../tmp-esm2022/lib/gov/constants/default.constants.js","../tmp-esm2022/lib/gov/utils/force-focus.js","../tmp-esm2022/lib/gov/ui/number-input/rdt-gov-number-input.component.js","../tmp-esm2022/lib/gov/ui/select/directives/rdt-gov-select-offline-provider.directive.js","../tmp-esm2022/lib/gov/ui/select/rdt-gov-select.component.js","../tmp-esm2022/lib/gov/ui/text-input/rdt-gov-text-input.component.js","../tmp-esm2022/ngrdt-gov.js"],"sourcesContent":["export const DEFAULT_GOV_BUTTON_COLOR = 'primary';\nexport const DEFAULT_GOV_BUTTON_TYPE = 'outlined';\nexport const DEFAULT_GOV_BUTTON_SIZE = 'xs';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC5jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvZ292L3NyYy9saWIvZ292L2NvbnN0YW50cy9kZWZhdWx0LmNvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBYSxTQUFTLENBQUM7QUFDNUQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQWtCLFVBQVUsQ0FBQztBQUNqRSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBWSxJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHb3ZCdXR0b25UeXBlLCBHb3ZDb2xvciwgR292U2l6ZSB9IGZyb20gJy4vZGVmYXVsdC50eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0dPVl9CVVRUT05fQ09MT1I6IEdvdkNvbG9yID0gJ3ByaW1hcnknO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfR09WX0JVVFRPTl9UWVBFOiBHb3ZCdXR0b25UeXBlID0gJ291dGxpbmVkJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX0dPVl9CVVRUT05fU0laRTogR292U2l6ZSA9ICd4cyc7XG4iXX0=","export function forceFocus(input) {\n let cnt = 0;\n const maxCnt = 10;\n const int = setInterval(() => {\n input.focus({ preventScroll: true });\n if (cnt === maxCnt || input.matches(':focus')) {\n clearInterval(int);\n }\n cnt++;\n }, 5);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yY2UtZm9jdXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvZ292L3NyYy9saWIvZ292L3V0aWxzL2ZvcmNlLWZvY3VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxVQUFVLENBQUMsS0FBdUI7SUFDaEQsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ1osTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7UUFDM0IsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLElBQUksR0FBRyxLQUFLLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDOUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLENBQUM7UUFDRCxHQUFHLEVBQUUsQ0FBQztJQUNSLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNSLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZm9yY2VGb2N1cyhpbnB1dDogSFRNTElucHV0RWxlbWVudCkge1xuICBsZXQgY250ID0gMDtcbiAgY29uc3QgbWF4Q250ID0gMTA7XG4gIGNvbnN0IGludCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICBpbnB1dC5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgaWYgKGNudCA9PT0gbWF4Q250IHx8IGlucHV0Lm1hdGNoZXMoJzpmb2N1cycpKSB7XG4gICAgICBjbGVhckludGVydmFsKGludCk7XG4gICAgfVxuICAgIGNudCsrO1xuICB9LCA1KTtcbn1cbiJdfQ==","import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, effect, inject, input, linkedSignal, Renderer2, signal, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { RdtBaseFormInputComponent, RdtFormErrorPipe, RdtNumericInputComponent, } from '@ngrdt/forms';\nimport { RdtIconOutletDirective } from '@ngrdt/icon';\nimport { signalToPromise } from '@ngrdt/utils';\nimport { forceFocus } from '../../utils';\nimport * as i0 from \"@angular/core\";\nexport class RdtGovNumberInputComponent extends RdtNumericInputComponent {\n renderer = inject(Renderer2);\n govInput = viewChild('govInput');\n size = input('s');\n icon = input(null);\n iconStart = input(null);\n labelPositionInput = input('top', {\n alias: 'labelPosition',\n });\n labelPosition = linkedSignal(() => this.labelPositionInput());\n inputElement = signal(null);\n hasErrors = false;\n isEmpty(value) {\n return value == null;\n }\n onInput(value) {\n if (value === '' || value == null) {\n this.onInternalValueChange(null);\n }\n else if (typeof value === 'string') {\n const parsed = parseFloat(value);\n if (!isNaN(parsed)) {\n this.onInternalValueChange(parsed);\n }\n }\n else {\n this.onInternalValueChange(value);\n }\n }\n readonlyEffect = effect(async () => {\n const input = this.govInput()?.nativeElement;\n const inputEl = await input?.getRef();\n const readonly = this.readonlyInput();\n if (input) {\n if (readonly) {\n this.renderer.setAttribute(input, 'readonly', 'true');\n }\n else {\n this.renderer.removeAttribute(input, 'readonly');\n }\n }\n });\n inputElementEffect = effect(async () => {\n const govInput = this.govInput()?.nativeElement;\n if (govInput) {\n const input = await govInput.getRef();\n this.inputElement.set(input);\n }\n });\n errorFixEffect = effect(() => {\n const inputElement = this.inputElement();\n const visibleErrors = this.visibleErrors();\n const hadErrors = this.hasErrors;\n this.hasErrors = !!visibleErrors;\n if (hadErrors !== this.hasErrors) {\n const isActive = document.activeElement === inputElement;\n if (isActive && inputElement) {\n forceFocus(inputElement);\n }\n }\n });\n async focus() {\n const govInput = await this.govInput()?.nativeElement;\n const el = await govInput?.getRef();\n forceFocus(el);\n }\n canFocus() {\n return signalToPromise(this.govInput, { injector: this.injector })\n .then((btn) => btn?.nativeElement.getRef())\n .then((el) => !!el);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtGovNumberInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.0\", type: RdtGovNumberInputComponent, isStandalone: true, selector: \"rdt-gov-number-input\", inputs: { size: { classPropertyName: \"size\", publicName: \"size\", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: \"icon\", publicName: \"icon\", isSignal: true, isRequired: false, transformFunction: null }, iconStart: { classPropertyName: \"iconStart\", publicName: \"iconStart\", isSignal: true, isRequired: false, transformFunction: null }, labelPositionInput: { classPropertyName: \"labelPositionInput\", publicName: \"labelPosition\", isSignal: true, isRequired: false, transformFunction: null } }, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: RdtGovNumberInputComponent,\n multi: true,\n },\n {\n provide: RdtBaseFormInputComponent,\n useExisting: RdtGovNumberInputComponent,\n },\n ], viewQueries: [{ propertyName: \"govInput\", first: true, predicate: [\"govInput\"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: \"@let lPos = labelPosition(); @if(lPos === 'top'){\\n<gov-form-label slot=\\\"left\\\" size=\\\"m\\\" [class.warning-color-gov-label]=\\\"hasError\\\"\\n >{{ label() }} @if (required()) {\\n <span class=\\\"warning-color-text\\\">*</span>\\n }</gov-form-label\\n>\\n}\\n<gov-form-input\\n #govInput\\n input-type=\\\"number\\\"\\n [size]=\\\"size()\\\"\\n [value]=\\\"internalValue()\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [autocomplete]=\\\"autocomplete()\\\"\\n [min]=\\\"min()\\\"\\n [max]=\\\"max()\\\"\\n [step]=\\\"step()\\\"\\n [invalid]=\\\"invalid() && touched()\\\"\\n [attr.invalid]=\\\"invalid() && touched()\\\"\\n [required]=\\\"required()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [attr.disabled]=\\\"disabled()\\\"\\n [name]=\\\"id()\\\"\\n [identifier]=\\\"id()\\\"\\n (gov-input)=\\\"onInput($event.detail.value)\\\"\\n (gov-focus)=\\\"onFocus()\\\"\\n (gov-blur)=\\\"onBlur()\\\"\\n>\\n @let lI = iconStart(); @let rI = icon(); @if(lPos === 'left') {\\n <p\\n class=\\\"gov-form-label__label s_label\\\"\\n slot=\\\"prefix\\\"\\n [class.warning-color-text]=\\\"hasError\\\"\\n >\\n {{ label() }} @if (required()) {\\n <span class=\\\"warning-color-text\\\">*</span>\\n }\\n </p>\\n } @if(lPos === 'right') {\\n <p\\n class=\\\"gov-form-label__label s_label\\\"\\n slot=\\\"sufix\\\"\\n [class.warning-color-text]=\\\"hasError\\\"\\n >\\n {{ label() }} @if (required()) {\\n <span class=\\\"warning-color-text\\\">*</span>\\n }\\n </p>\\n } @if (lI) {\\n <span slot=\\\"icon-start\\\" style=\\\"width: auto\\\">\\n <ng-container rdtIconOutlet [inputs]=\\\"{ name: lI }\\\"></ng-container>\\n </span>\\n } @if (rI) {\\n <span slot=\\\"icon-end\\\" style=\\\"width: auto\\\">\\n <ng-container rdtIconOutlet [inputs]=\\\"{ name: rI }\\\"></ng-container>\\n </span>\\n }\\n</gov-form-input>\\n@let hasError = visibleErrors() | rdtFormError; @if(hasError){\\n<gov-form-message slot=\\\"bottom\\\" color=\\\"error\\\">{{ hasError }}</gov-form-message>\\n}\\n\", styles: [\".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}\\n\"], dependencies: [{ kind: \"pipe\", type: RdtFormErrorPipe, name: \"rdtFormError\" }, { kind: \"directive\", type: RdtIconOutletDirective, selector: \"[rdtIconOutlet]\", exportAs: [\"rdtIconOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtGovNumberInputComponent, decorators: [{\n type: Component,\n args: [{ selector: 'rdt-gov-number-input', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [RdtFormErrorPipe, RdtIconOutletDirective], providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: RdtGovNumberInputComponent,\n multi: true,\n },\n {\n provide: RdtBaseFormInputComponent,\n useExisting: RdtGovNumberInputComponent,\n },\n ], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: \"@let lPos = labelPosition(); @if(lPos === 'top'){\\n<gov-form-label slot=\\\"left\\\" size=\\\"m\\\" [class.warning-color-gov-label]=\\\"hasError\\\"\\n >{{ label() }} @if (required()) {\\n <span class=\\\"warning-color-text\\\">*</span>\\n }</gov-form-label\\n>\\n}\\n<gov-form-input\\n #govInput\\n input-type=\\\"number\\\"\\n [size]=\\\"size()\\\"\\n [value]=\\\"internalValue()\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [autocomplete]=\\\"autocomplete()\\\"\\n [min]=\\\"min()\\\"\\n [max]=\\\"max()\\\"\\n [step]=\\\"step()\\\"\\n [invalid]=\\\"invalid() && touched()\\\"\\n [attr.invalid]=\\\"invalid() && touched()\\\"\\n [required]=\\\"required()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [attr.disabled]=\\\"disabled()\\\"\\n [name]=\\\"id()\\\"\\n [identifier]=\\\"id()\\\"\\n (gov-input)=\\\"onInput($event.detail.value)\\\"\\n (gov-focus)=\\\"onFocus()\\\"\\n (gov-blur)=\\\"onBlur()\\\"\\n>\\n @let lI = iconStart(); @let rI = icon(); @if(lPos === 'left') {\\n <p\\n class=\\\"gov-form-label__label s_label\\\"\\n slot=\\\"prefix\\\"\\n [class.warning-color-text]=\\\"hasError\\\"\\n >\\n {{ label() }} @if (required()) {\\n <span class=\\\"warning-color-text\\\">*</span>\\n }\\n </p>\\n } @if(lPos === 'right') {\\n <p\\n class=\\\"gov-form-label__label s_label\\\"\\n slot=\\\"sufix\\\"\\n [class.warning-color-text]=\\\"hasError\\\"\\n >\\n {{ label() }} @if (required()) {\\n <span class=\\\"warning-color-text\\\">*</span>\\n }\\n </p>\\n } @if (lI) {\\n <span slot=\\\"icon-start\\\" style=\\\"width: auto\\\">\\n <ng-container rdtIconOutlet [inputs]=\\\"{ name: lI }\\\"></ng-container>\\n </span>\\n } @if (rI) {\\n <span slot=\\\"icon-end\\\" style=\\\"width: auto\\\">\\n <ng-container rdtIconOutlet [inputs]=\\\"{ name: rI }\\\"></ng-container>\\n </span>\\n }\\n</gov-form-input>\\n@let hasError = visibleErrors() | rdtFormError; @if(hasError){\\n<gov-form-message slot=\\\"bottom\\\" color=\\\"error\\\">{{ hasError }}</gov-form-message>\\n}\\n\", styles: [\".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWdvdi1udW1iZXItaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L2dvdi9zcmMvbGliL2dvdi91aS9udW1iZXItaW5wdXQvcmR0LWdvdi1udW1iZXItaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L2dvdi9zcmMvbGliL2dvdi91aS9udW1iZXItaW5wdXQvcmR0LWdvdi1udW1iZXItaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1Qsc0JBQXNCLEVBQ3RCLE1BQU0sRUFFTixNQUFNLEVBQ04sS0FBSyxFQUNMLFlBQVksRUFDWixTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHbkQsT0FBTyxFQUNMLHlCQUF5QixFQUN6QixnQkFBZ0IsRUFDaEIsd0JBQXdCLEdBQ3pCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBVyxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5RCxPQUFPLEVBQVksZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXpELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBc0J6QyxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsd0JBQXdCO0lBQ3JELFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0IsUUFBUSxHQUFHLFNBQVMsQ0FBMkIsVUFBVSxDQUFDLENBQUM7SUFDckUsSUFBSSxHQUFHLEtBQUssQ0FBVSxHQUFHLENBQUMsQ0FBQztJQUMzQixJQUFJLEdBQUcsS0FBSyxDQUFvQixJQUFJLENBQUMsQ0FBQztJ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T0FBTyxFQUFFLHlCQUF5Qjs0QkFDbEMsV0FBVyw0QkFBNEI7eUJBQ3hDO3FCQUNGLFdBQ1EsQ0FBQyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG4gIGVmZmVjdCxcbiAgRWxlbWVudFJlZixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgbGlua2VkU2lnbmFsLFxuICBSZW5kZXJlcjIsXG4gIHNpZ25hbCxcbiAgdmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEdvdkZvcm1JbnB1dCB9IGZyb20gJ0Bnb3YtZGVzaWduLXN5c3RlbS1jZS9hbmd1bGFyJztcbmltcG9ydCB7IFJkdEJvb2xlYW5SZXN1bHQgfSBmcm9tICdAbmdyZHQvY29yZSc7XG5pbXBvcnQge1xuICBSZHRCYXNlRm9ybUlucHV0Q29tcG9uZW50LFxuICBSZHRGb3JtRXJyb3JQaXBlLFxuICBSZHROdW1lcmljSW5wdXRDb21wb25lbnQsXG59IGZyb20gJ0BuZ3JkdC9mb3Jtcyc7XG5pbXBvcnQgeyBSZHRJY29uLCBSZHRJY29uT3V0bGV0RGlyZWN0aXZlIH0gZnJvbSAnQG5ncmR0L2ljb24nO1xuaW1wb3J0IHsgTnVsbGFibGUsIHNpZ25hbFRvUHJvbWlzZSB9IGZyb20gJ0BuZ3JkdC91dGlscyc7XG5pbXBvcnQgeyBHb3ZMYWJlbFBvc2l0aW9uLCBHb3ZTaXplIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGZvcmNlRm9jdXMgfSBmcm9tICcuLi8uLi91dGlscyc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyZHQtZ292LW51bWJlci1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZHQtZ292LW51bWJlci1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuLy4uL2dvdi1zaGFyZWQtc3R5bGVzLnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtSZHRGb3JtRXJyb3JQaXBlLCBSZHRJY29uT3V0bGV0RGlyZWN0aXZlXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogUmR0R292TnVtYmVySW5wdXRDb21wb25lbnQsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFJkdEJhc2VGb3JtSW5wdXRDb21wb25lbnQsXG4gICAgICB1c2VFeGlzdGluZzogUmR0R292TnVtYmVySW5wdXRDb21wb25lbnQsXG4gICAgfSxcbiAgXSxcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBSZHRHb3ZOdW1iZXJJbnB1dENvbXBvbmVudCBleHRlbmRzIFJkdE51bWVyaWNJbnB1dENvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGdvdklucHV0ID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8R292Rm9ybUlucHV0Pj4oJ2dvdklucHV0Jyk7XG4gIHJlYWRvbmx5IHNpemUgPSBpbnB1dDxHb3ZTaXplPigncycpO1xuICByZWFkb25seSBpY29uID0gaW5wdXQ8TnVsbGFibGU8UmR0SWNvbj4+KG51bGwpO1xuICByZWFkb25seSBpY29uU3RhcnQgPSBpbnB1dDxOdWxsYWJsZTxSZHRJY29uPj4obnVsbCk7XG4gIHJlYWRvbmx5IGxhYmVsUG9zaXRpb25JbnB1dCA9IGlucHV0PEdvdkxhYmVsUG9zaXRpb24+KCd0b3AnLCB7XG4gICAgYWxpYXM6ICdsYWJlbFBvc2l0aW9uJyxcbiAgfSk7XG4gIHJlYWRvbmx5IGxhYmVsUG9zaXRpb24gPSBsaW5rZWRTaWduYWwoKCkgPT4gdGhpcy5sYWJlbFBvc2l0aW9uSW5wdXQoKSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW5wdXRFbGVtZW50ID0gc2lnbmFsPEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSBoYXNFcnJvcnMgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGlzRW1wdHkodmFsdWU6IG51bWJlciB8IG51bGwpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsdWUgPT0gbnVsbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbklucHV0KHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsKSB7XG4gICAgaWYgKHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PSBudWxsKSB7XG4gICAgICB0aGlzLm9uSW50ZXJuYWxWYWx1ZUNoYW5nZShudWxsKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlRmxvYXQodmFsdWUpO1xuICAgICAgaWYgKCFpc05hTihwYXJzZWQpKSB7XG4gICAgICAgIHRoaXMub25JbnRlcm5hbFZhbHVlQ2hhbmdlKHBhcnNlZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub25JbnRlcm5hbFZhbHVlQ2hhbmdlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5RWZmZWN0ID0gZWZmZWN0KGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuZ292SW5wdXQoKT8ubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBpbnB1dEVsID0gYXdhaXQgaW5wdXQ/LmdldFJlZigpO1xuICAgIGNvbnN0IHJlYWRvbmx5ID0gdGhpcy5yZWFkb25seUlucHV0KCk7XG4gICAgaWYgKGlucHV0KSB7XG4gICAgICBpZiAocmVhZG9ubHkpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoaW5wdXQsICdyZWFkb25seScsICd0cnVlJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZShpbnB1dCwgJ3JlYWRvbmx5Jyk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGlucHV0RWxlbWVudEVmZmVjdCA9IGVmZmVjdChhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZ292SW5wdXQgPSB0aGlzLmdvdklucHV0KCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKGdvdklucHV0KSB7XG4gICAgICBjb25zdCBpbnB1dCA9IGF3YWl0IGdvdklucHV0LmdldFJlZigpO1xuICAgICAgdGhpcy5pbnB1dEVsZW1lbnQuc2V0KGlucHV0KTtcbiAgICB9XG4gIH0pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZXJyb3JGaXhFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IHRoaXMuaW5wdXRFbGVtZW50KCk7XG4gICAgY29uc3QgdmlzaWJsZUVycm9ycyA9IHRoaXMudmlzaWJsZUVycm9ycygpO1xuICAgIGNvbnN0IGhhZEVycm9ycyA9IHRoaXMuaGFzRXJyb3JzO1xuICAgIHRoaXMuaGFzRXJyb3JzID0gISF2aXNpYmxlRXJyb3JzO1xuXG4gICAgaWYgKGhhZEVycm9ycyAhPT0gdGhpcy5oYXNFcnJvcnMpIHtcbiAgICAgIGNvbnN0IGlzQWN0aXZlID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gaW5wdXRFbGVtZW50O1xuXG4gICAgICBpZiAoaXNBY3RpdmUgJiYgaW5wdXRFbGVtZW50KSB7XG4gICAgICAgIGZvcmNlRm9jdXMoaW5wdXRFbGVtZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIG92ZXJyaWRlIGFzeW5jIGZvY3VzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGdvdklucHV0ID0gYXdhaXQgdGhpcy5nb3ZJbnB1dCgpPy5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IGVsID0gYXdhaXQgZ292SW5wdXQ/LmdldFJlZigpO1xuICAgIGZvcmNlRm9jdXMoZWwhKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGNhbkZvY3VzKCk6IFJkdEJvb2xlYW5SZXN1bHQge1xuICAgIHJldHVybiBzaWduYWxUb1Byb21pc2UodGhpcy5nb3ZJbnB1dCwgeyBpbmplY3RvcjogdGhpcy5pbmplY3RvciB9KVxuICAgICAgLnRoZW4oKGJ0bikgPT4gYnRuPy5uYXRpdmVFbGVtZW50LmdldFJlZigpKVxuICAgICAgLnRoZW4oKGVsKSA9PiAhIWVsKTtcbiAgfVxufVxuIiwiQGxldCBsUG9zID0gbGFiZWxQb3NpdGlvbigpOyBAaWYobFBvcyA9PT0gJ3RvcCcpe1xuPGdvdi1mb3JtLWxhYmVsIHNsb3Q9XCJsZWZ0XCIgc2l6ZT1cIm1cIiBbY2xhc3Mud2FybmluZy1jb2xvci1nb3YtbGFiZWxdPVwiaGFzRXJyb3JcIlxuICA+e3sgbGFiZWwoKSB9fSBAaWYgKHJlcXVpcmVkKCkpIHtcbiAgPHNwYW4gY2xhc3M9XCJ3YXJuaW5nLWNvbG9yLXRleHRcIj4qPC9zcGFuPlxuICB9PC9nb3YtZm9ybS1sYWJlbFxuPlxufVxuPGdvdi1mb3JtLWlucHV0XG4gICNnb3ZJbnB1dFxuICBpbnB1dC10eXBlPVwibnVtYmVyXCJcbiAgW3NpemVdPVwic2l6ZSgpXCJcbiAgW3ZhbHVlXT1cImludGVybmFsVmFsdWUoKVwiXG4gIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcigpXCJcbiAgW2F1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGUoKVwiXG4gIFttaW5dPVwibWluKClcIlxuICBbbWF4XT1cIm1heCgpXCJcbiAgW3N0ZXBdPVwic3RlcCgpXCJcbiAgW2ludmFsaWRdPVwiaW52YWxpZCgpICYmIHRvdWNoZWQoKVwiXG4gIFthdHRyLmludmFsaWRdPVwiaW52YWxpZCgpICYmIHRvdWNoZWQoKVwiXG4gIFtyZXF1aXJlZF09XCJyZXF1aXJlZCgpXCJcbiAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgW25hbWVdPVwiaWQoKVwiXG4gIFtpZGVudGlmaWVyXT1cImlkKClcIlxuICAoZ292LWlucHV0KT1cIm9uSW5wdXQoJGV2ZW50LmRldGFpbC52YWx1ZSlcIlxuICAoZ292LWZvY3VzKT1cIm9uRm9jdXMoKVwiXG4gIChnb3YtYmx1cik9XCJvbkJsdXIoKVwiXG4+XG4gIEBsZXQgbEkgPSBpY29uU3RhcnQoKTsgQGxldCBySSA9IGljb24oKTsgQGlmKGxQb3MgPT09ICdsZWZ0Jykge1xuICA8cFxuICAgIGNsYXNzPVwiZ292LWZvcm0tbGFiZWxfX2xhYmVsIHNfbGFiZWxcIlxuICAgIHNsb3Q9XCJwcmVmaXhcIlxuICAgIFtjbGFzcy53YXJuaW5nLWNvbG9yLXRleHRdPVwiaGFzRXJyb3JcIlxuICA+XG4gICAge3sgbGFiZWwoKSB9fSBAaWYgKHJlcXVpcmVkKCkpIHtcbiAgICA8c3BhbiBjbGFzcz1cIndhcm5pbmctY29sb3ItdGV4dFwiPio8L3NwYW4+XG4gICAgfVxuICA8L3A+XG4gIH0gQGlmKGxQb3MgPT09ICdyaWdodCcpIHtcbiAgPHBcbiAgICBjbGFzcz1cImdvdi1mb3JtLWxhYmVsX19sYWJlbCBzX2xhYmVsXCJcbiAgICBzbG90PVwic3VmaXhcIlxuICAgIFtjbGFzcy53YXJuaW5nLWNvbG9yLXRleHRdPVwiaGFzRXJyb3JcIlxuICA+XG4gICAge3sgbGFiZWwoKSB9fSBAaWYgKHJlcXVpcmVkKCkpIHtcbiAgICA8c3BhbiBjbGFzcz1cIndhcm5pbmctY29sb3ItdGV4dFwiPio8L3NwYW4+XG4gICAgfVxuICA8L3A+XG4gIH0gQGlmIChsSSkge1xuICA8c3BhbiBzbG90PVwiaWNvbi1zdGFydFwiIHN0eWxlPVwid2lkdGg6IGF1dG9cIj5cbiAgICA8bmctY29udGFpbmVyIHJkdEljb25PdXRsZXQgW2lucHV0c109XCJ7IG5hbWU6IGxJIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9zcGFuPlxuICB9IEBpZiAockkpIHtcbiAgPHNwYW4gc2xvdD1cImljb24tZW5kXCIgc3R5bGU9XCJ3aWR0aDogYXV0b1wiPlxuICAgIDxuZy1jb250YWluZXIgcmR0SWNvbk91dGxldCBbaW5wdXRzXT1cInsgbmFtZTogckkgfVwiPjwvbmctY29udGFpbmVyPlxuICA8L3NwYW4+XG4gIH1cbjwvZ292LWZvcm0taW5wdXQ+XG5AbGV0IGhhc0Vycm9yID0gdmlzaWJsZUVycm9ycygpIHwgcmR0Rm9ybUVycm9yOyBAaWYoaGFzRXJyb3Ipe1xuPGdvdi1mb3JtLW1lc3NhZ2Ugc2xvdD1cImJvdHRvbVwiIGNvbG9yPVwiZXJyb3JcIj57eyBoYXNFcnJvciB9fTwvZ292LWZvcm0tbWVzc2FnZT5cbn1cbiJdfQ==","import { Directive } from '@angular/core';\nimport { RdtSelectOfflineDatasourceProviderDirective } from '@ngrdt/forms';\nimport * as i0 from \"@angular/core\";\nexport class RdtGovSelectOfflineProviderDirective extends RdtSelectOfflineDatasourceProviderDirective {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtGovSelectOfflineProviderDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.0\", type: RdtGovSelectOfflineProviderDirective, isStandalone: true, selector: \"rdt-gov-select[options]\", usesInheritance: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtGovSelectOfflineProviderDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'rdt-gov-select[options]',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWdvdi1zZWxlY3Qtb2ZmbGluZS1wcm92aWRlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvZ292L3NyYy9saWIvZ292L3VpL3NlbGVjdC9kaXJlY3RpdmVzL3JkdC1nb3Ytc2VsZWN0LW9mZmxpbmUtcHJvdmlkZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLDJDQUEyQyxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUszRSxNQUFNLE9BQU8sb0NBRVgsU0FBUSwyQ0FBOEM7dUdBRjNDLG9DQUFvQzsyRkFBcEMsb0NBQW9DOzsyRkFBcEMsb0NBQW9DO2tCQUhoRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx5QkFBeUI7aUJBQ3BDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZHRTZWxlY3RPZmZsaW5lRGF0YXNvdXJjZVByb3ZpZGVyRGlyZWN0aXZlIH0gZnJvbSAnQG5ncmR0L2Zvcm1zJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAncmR0LWdvdi1zZWxlY3Rbb3B0aW9uc10nLFxufSlcbmV4cG9ydCBjbGFzcyBSZHRHb3ZTZWxlY3RPZmZsaW5lUHJvdmlkZXJEaXJlY3RpdmU8XG4gIFQgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXJcbj4gZXh0ZW5kcyBSZHRTZWxlY3RPZmZsaW5lRGF0YXNvdXJjZVByb3ZpZGVyRGlyZWN0aXZlPFQ+IHt9XG4iXX0=","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { DOWN_ARROW, ENTER, UP_ARROW } from '@angular/cdk/keycodes';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { booleanAttribute, Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, inject, input, linkedSignal, untracked, viewChild, viewChildren, ViewContainerRef, ViewEncapsulation, } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { GovDesignSystemModule } from '@gov-design-system-ce/angular';\nimport { RdtAutoFocusOnInitDirective } from '@ngrdt/core';\nimport { RdtBaseFormInputComponent, RdtBaseSelectCommonComponent, RdtFormErrorPipe, RdtSelectOptionDirective, RdtSelectStore, RdtSingleSelectComponent, } from '@ngrdt/forms';\nimport { animationFrameScheduler, filter, fromEvent, map, throttleTime, } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@gov-design-system-ce/angular\";\nexport class RdtGovSelectComponent extends RdtBaseSelectCommonComponent {\n overlay = inject(Overlay);\n viewContainerRef = inject(ViewContainerRef);\n scrollContainer = viewChild('scrollContainer');\n selectButton = viewChild('selectButton');\n overlayTemplate = viewChild('overlayContainer');\n optionEls = viewChildren((RdtSelectOptionDirective));\n multi = input(false, { transform: booleanAttribute });\n size = input('s');\n placeholder = input('Vyberte');\n showClear = input(true, { transform: booleanAttribute });\n showSearchInput = input(false, {\n transform: booleanAttribute,\n alias: 'showSearch',\n });\n showSearch = linkedSignal(() => this.showSearchInput());\n labelPositionInput = input('top', {\n alias: 'labelPosition',\n });\n labelPosition = linkedSignal(() => this.labelPositionInput());\n keyManager = new ActiveDescendantKeyManager(this.optionEls, this.injector);\n resizeEffect = effect(() => {\n const btn = this.selectButton()?.nativeElement;\n const observer = new ResizeObserver((entries) => {\n const size = entries[0]?.borderBoxSize?.[0].inlineSize;\n if (this.overlayRef && size) {\n this.overlayRef.updateSize({\n minWidth: size,\n });\n }\n });\n if (btn) {\n observer.observe(btn);\n }\n return () => observer.disconnect();\n });\n overlayRef = null;\n isEmpty(value) {\n return value === null || (Array.isArray(value) && value.length === 0);\n }\n selectedLabel = computed(() => this.store\n .selectedItems()\n .map((i) => i.label)\n .join(', ') || null);\n onClearClick(event) {\n this.store.unselectAll();\n }\n openOverlay() {\n if (this.readonlyInput()) {\n return;\n }\n if (this.overlayRef === null) {\n this.overlayRef = this.createOverlay();\n this.overlayRef.backdropClick().subscribe(() => {\n this.overlayRef?.detach();\n this.onTouch();\n });\n this.overlayRef\n .keydownEvents()\n .pipe(map((e) => e.key), filter((key) => key === 'Escape'))\n .subscribe((e) => {\n this.overlayRef?.detach();\n this.onTouch();\n });\n }\n if (this.overlayRef.hasAttached()) {\n this.overlayRef.detach();\n this.onTouch();\n return;\n }\n const overlayTemplate = this.overlayTemplate();\n if (overlayTemplate) {\n const portal = new TemplatePortal(overlayTemplate, this.viewContainerRef);\n this.overlayRef.attach(portal);\n }\n }\n handleButtonKeydown($event) {\n const keyCode = $event.keyCode;\n const isArrowKey = keyCode === UP_ARROW || keyCode === DOWN_ARROW;\n if (isArrowKey) {\n this.openOverlay();\n }\n }\n handleButtonBlur() {\n if (!this.overlayRef?.hasAttached()) {\n this.onBlur();\n }\n }\n handleInput(query) {\n this.store.setQuery(query);\n this.keyManager.setActiveItem(-1);\n }\n handleInputKeydown($event) {\n const key = $event.keyCode;\n const activeItem = this.keyManager.activeItem;\n if (key === ENTER && activeItem !== null) {\n this.selectOption(activeItem.value());\n }\n else {\n this.keyManager.onKeydown($event);\n this.keyManager.activeItem?.scrollIntoElement();\n }\n }\n toExternalValue(internalValue) {\n if (untracked(this.multi)) {\n return internalValue;\n }\n else {\n return Array.isArray(internalValue) ? internalValue[0] : null;\n }\n }\n selectOption(option) {\n if (untracked(this.multi)) {\n this.store.toggle(option);\n }\n else {\n this.store.selectSingle(option);\n // detach on a next tick\n // otherwise on ENTER overlay is still enter\n setTimeout(() => {\n this.overlayRef?.detach();\n this.keyManager.setActiveItem(-1);\n });\n }\n }\n selectButtonEffect = effect(() => {\n const selectButton = this.selectButton()?.nativeElement;\n const overlay = this.overlayRef;\n if (overlay && selectButton) {\n const positionStrategy = this.getPositionStrategy(selectButton);\n overlay.updatePositionStrategy(positionStrategy);\n }\n });\n getPositionStrategy(element) {\n return this.overlay\n .position()\n .flexibleConnectedTo(this.selectButton()?.nativeElement)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n panelClass: 'rdt-gov-select-overlay-panel-bottom',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n panelClass: 'rdt-gov-select-overlay-panel-top',\n },\n ]);\n }\n createOverlay() {\n const selectButton = this.selectButton()?.nativeElement;\n const positionStrategy = this.getPositionStrategy(selectButton);\n return this.overlay.create({\n hasBackdrop: true,\n backdropClass: 'rdt-gov-transparent-backdrop',\n positionStrategy,\n minWidth: this.selectButton()?.nativeElement.clientWidth,\n scrollStrategy: this.overlay.scrollStrategies.block(),\n });\n }\n scrollEffect = effect((onCleanup) => {\n const scrollContainer = this.scrollContainer()?.nativeElement;\n if (!scrollContainer) {\n return;\n }\n const dist$ = fromEvent(scrollContainer, 'scroll').pipe(filter(() => untracked(this.store.hasMore) && !untracked(this.store.loading)), throttleTime(0, animationFrameScheduler), map(() => this.scrollDistToBottom(scrollContainer)));\n const THRESHOLD = 42;\n const sub = dist$.subscribe((dist) => {\n if (dist < THRESHOLD) {\n this.store.fetch();\n }\n });\n onCleanup(() => sub.unsubscribe());\n });\n scrollDistToBottom(container) {\n return (container.scrollHeight - (container.scrollTop + container.clientHeight));\n }\n focus() {\n this.openOverlay();\n }\n canFocus() {\n return !this.disabled();\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n this.overlayRef?.dispose();\n this.keyManager.destroy();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtGovSelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.0\", type: RdtGovSelectComponent, isStandalone: true, selector: \"rdt-gov-select\", inputs: { multi: { classPropertyName: \"multi\", publicName: \"multi\", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: \"size\", publicName: \"size\", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: \"placeholder\", publicName: \"placeholder\", isSignal: true, isRequired: false, transformFunction: null }, showClear: { classPropertyName: \"showClear\", publicName: \"showClear\", isSignal: true, isRequired: false, transformFunction: null }, showSearchInput: { classPropertyName: \"showSearchInput\", publicName: \"showSearch\", isSignal: true, isRequired: false, transformFunction: null }, labelPositionInput: { classPropertyName: \"labelPositionInput\", publicName: \"labelPosition\", isSignal: true, isRequired: false, transformFunction: null } }, providers: [\n RdtSelectStore,\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: RdtGovSelectComponent,\n multi: true,\n },\n {\n provide: RdtSingleSelectComponent,\n useExisting: RdtGovSelectComponent,\n },\n {\n provide: RdtBaseSelectCommonComponent,\n useExisting: RdtGovSelectComponent,\n },\n {\n provide: RdtBaseFormInputComponent,\n useExisting: RdtGovSelectComponent,\n },\n ], 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 =\\nvisibleErrors() | 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 {\\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 name=\\\"exclamation-lg\\\" class=\\\"icon-warning\\\"></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\\\">\\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=\\\"Zadejte hledan\\u00FD v\\u00FDraz\\\"\\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 [rdtSelectOption]=\\\"option\\\"\\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 {{ option.label }}\\n </button>\\n </li>\\n } @empty { @if (loading()) {\\n <li class=\\\"pointer-events-none\\\">\\n <div class=\\\"option\\\">Na\\u010D\\u00EDt\\u00E1n\\u00ED hodnot...</div>\\n </li>\\n } @else if (store.query()) {\\n <li class=\\\"pointer-events-none\\\">\\n <div class=\\\"option\\\">\\n Pro zadan\\u00FD v\\u00FDraz nejsou k dispozici \\u017E\\u00E1dn\\u00E9 z\\u00E1znamy\\n </div>\\n </li>\\n } @else if (!store.datasource()?.queryRequired) {\\n <li class=\\\"pointer-events-none\\\">\\n <div class=\\\"option\\\">Nejsou k dispozici \\u017E\\u00E1dn\\u00E9 hodnoty</div>\\n </li>\\n } }\\n </ul>\\n </div>\\n</ng-template>\\n@if(hasError){\\n<gov-form-message slot=\\\"bottom\\\" color=\\\"error\\\">{{ hasError }}</gov-form-message>\\n}\\n\", styles: [\"rdt-gov-select{display:inline-block;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=s].gov-form-select .select{height:var(--height-component-s);padding:var(--spacing-s);padding-right:var(--spacing-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 .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{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{font-size:var(--font-size-body-s);line-height:var(--height-line-s);letter-spacing:var(--spacing-s);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{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{color:var(--color-primary-50);background:var(--color-neutral-600)}.rdt-gov-select-container li{margin-bottom:0}.rdt-gov-select-container .picked{color:var(--icon-success)}.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;padding:var(--spacing-s)}.rdt-gov-select-container .search-container input{width:100%;background-color:var(--background-block-primary);font-family:var(--font-family);font-size:var(--font-size-body-s);height:var(--height-component-s);padding:var(--spacing-s);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}.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.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.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.FormControlDirective, selector: \"[formControl]\", inputs: [\"formControl\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }, { kind: \"directive\", type: RdtAutoFocusOnInitDirective, selector: \"[rdtAutofocusOnInit]\" }, { kind: \"ngmodule\", type: GovDesignSystemModule }, { kind: \"component\", type: i2.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: i2.GovFormLabel, selector: \"gov-form-label\", inputs: [\"identifier\", \"legend\", \"required\", \"size\"] }, { kind: \"component\", type: i2.GovFormMessage, selector: \"gov-form-message\", inputs: [\"color\", \"size\"] }, { kind: \"component\", type: i2.GovIcon, selector: \"gov-icon\", inputs: [\"color\", \"name\", \"size\", \"type\"] }, { kind: \"pipe\", type: RdtFormErrorPipe, name: \"rdtFormError\" }], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtGovSelectComponent, decorators: [{\n type: Component,\n args: [{ selector: 'rdt-gov-select', imports: [\n RdtSelectOptionDirective,\n ReactiveFormsModule,\n RdtAutoFocusOnInitDirective,\n GovDesignSystemModule,\n RdtFormErrorPipe,\n ], providers: [\n RdtSelectStore,\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: RdtGovSelectComponent,\n multi: true,\n },\n {\n provide: RdtSingleSelectComponent,\n useExisting: RdtGovSelectComponent,\n },\n {\n provide: RdtBaseSelectCommonComponent,\n useExisting: RdtGovSelectComponent,\n },\n {\n provide: RdtBaseFormInputComponent,\n useExisting: RdtGovSelectComponent,\n },\n ], schemas: [CUSTOM_ELEMENTS_SCHEMA], encapsulation: ViewEncapsulation.None, template: \"@let sel = selectedLabel(); @let lPos = labelPosition(); @let hasError =\\nvisibleErrors() | 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 {\\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 name=\\\"exclamation-lg\\\" class=\\\"icon-warning\\\"></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\\\">\\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=\\\"Zadejte hledan\\u00FD v\\u00FDraz\\\"\\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 [rdtSelectOption]=\\\"option\\\"\\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 {{ option.label }}\\n </button>\\n </li>\\n } @empty { @if (loading()) {\\n <li class=\\\"pointer-events-none\\\">\\n <div class=\\\"option\\\">Na\\u010D\\u00EDt\\u00E1n\\u00ED hodnot...</div>\\n </li>\\n } @else if (store.query()) {\\n <li class=\\\"pointer-events-none\\\">\\n <div class=\\\"option\\\">\\n Pro zadan\\u00FD v\\u00FDraz nejsou k dispozici \\u017E\\u00E1dn\\u00E9 z\\u00E1znamy\\n </div>\\n </li>\\n } @else if (!store.datasource()?.queryRequired) {\\n <li class=\\\"pointer-events-none\\\">\\n <div class=\\\"option\\\">Nejsou k dispozici \\u017E\\u00E1dn\\u00E9 hodnoty</div>\\n </li>\\n } }\\n </ul>\\n </div>\\n</ng-template>\\n@if(hasError){\\n<gov-form-message slot=\\\"bottom\\\" color=\\\"error\\\">{{ hasError }}</gov-form-message>\\n}\\n\", styles: [\"rdt-gov-select{display:inline-block;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=s].gov-form-select .select{height:var(--height-component-s);padding:var(--spacing-s);padding-right:var(--spacing-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 .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{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{font-size:var(--font-size-body-s);line-height:var(--height-line-s);letter-spacing:var(--spacing-s);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{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{color:var(--color-primary-50);background:var(--color-neutral-600)}.rdt-gov-select-container li{margin-bottom:0}.rdt-gov-select-container .picked{color:var(--icon-success)}.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;padding:var(--spacing-s)}.rdt-gov-select-container .search-container input{width:100%;background-color:var(--background-block-primary);font-family:var(--font-family);font-size:var(--font-size-body-s);height:var(--height-component-s);padding:var(--spacing-s);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}.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\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWdvdi1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L2dvdi9zcmMvbGliL2dvdi91aS9zZWxlY3QvcmR0LWdvdi1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L2dvdi9zcmMvbGliL2dvdi91aS9zZWxlY3QvcmR0LWdvdi1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEUsT0FBTyxFQUFFLE9BQU8sRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFDVCxRQUFRLEVBQ1Isc0JBQXNCLEVBQ3RCLE1BQU0sRUFFTixNQUFNLEVBQ04sS0FBSyxFQUNMLFlBQVksRUFHWixTQUFTLEVBQ1QsU0FBUyxFQUNULFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSwyQkFBMkIsRUFBb0IsTUFBTSxhQUFhLENBQUM7QUFDNUUsT0FBTyxFQUNMLHlCQUF5QixFQUN6Qiw0QkFBNEIsRUFDNUIsZ0JBQWdCLEVBQ2hCLHdCQUF3QixFQUN4QixjQUFjLEVBQ2Qsd0JBQXdCLEdBQ3pCLE1BQU0sY0FBYyxDQUFDO0FBQ3RC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LEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsd0JBQXdCOzRCQUNqQyxXQUFXLHVCQUF1Qjt5QkFDbkM7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLDRCQUE0Qjs0QkFDckMsV0FBVyx1QkFBdUI7eUJBQ25DO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSx5QkFBeUI7NEJBQ2xDLFdBQVcsdUJBQXVCO3lCQUNuQztxQkFDRixXQUNRLENBQUMsc0JBQXNCLENBQUMsaUJBQ2xCLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IERPV05fQVJST1csIEVOVEVSLCBVUF9BUlJPVyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG4gIGVmZmVjdCxcbiAgRWxlbWVudFJlZixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgbGlua2VkU2lnbmFsLFxuICBPbkRlc3Ryb3ksXG4gIFRlbXBsYXRlUmVmLFxuICB1bnRyYWNrZWQsXG4gIHZpZXdDaGlsZCxcbiAgdmlld0NoaWxkcmVuLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEdvdkRlc2lnblN5c3RlbU1vZHVsZSB9IGZyb20gJ0Bnb3YtZGVzaWduLXN5c3RlbS1jZS9hbmd1bGFyJztcbmltcG9ydCB7IFJkdEF1dG9Gb2N1c09uSW5pdERpcmVjdGl2ZSwgUmR0Qm9vbGVhblJlc3VsdCB9IGZyb20gJ0BuZ3JkdC9jb3JlJztcbmltcG9ydCB7XG4gIFJkdEJhc2VGb3JtSW5wdXRDb21wb25lbnQsXG4gIFJkdEJhc2VTZWxlY3RDb21tb25Db21wb25lbnQsXG4gIFJkdEZvcm1FcnJvclBpcGUsXG4gIFJkdFNlbGVjdE9wdGlvbkRpcmVjdGl2ZSxcbiAgUmR0U2VsZWN0U3RvcmUsXG4gIFJkdFNpbmdsZVNlbGVjdENvbXBvbmVudCxcbn0gZnJvbSAnQG5ncmR0L2Zvcm1zJztcbmltcG9ydCB7XG4gIGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyLFxuICBmaWx0ZXIsXG4gIGZyb21FdmVudCxcbiAgbWFwLFxuICB0aHJvdHRsZVRpbWUsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgR292TGFiZWxQb3NpdGlvbiwgR292U2l6ZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyZHQtZ292LXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZHQtZ292LXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JkdC1nb3Ytc2VsZWN0LmNvbXBvbmVudC5zY3NzJywgJy4vLi4vZ292LXNoYXJlZC1zdHlsZXMuc2NzcyddLFxuICBpbXBvcnRzOiBbXG4gICAgUmR0U2VsZWN0T3B0aW9uRGlyZWN0aXZlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgUmR0QXV0b0ZvY3VzT25Jbml0RGlyZWN0aXZlLFxuICAgIEdvdkRlc2lnblN5c3RlbU1vZHVsZSxcbiAgICBSZHRGb3JtRXJyb3JQaXBlLFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBSZHRTZWxlY3RTdG9yZSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBSZHRHb3ZTZWxlY3RDb21wb25lbnQsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFJkdFNpbmdsZVNlbGVjdENvbXBvbmVudCxcbiAgICAgIHVzZUV4aXN0aW5nOiBSZHRHb3ZTZWxlY3RDb21wb25lbnQsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBSZHRCYXNlU2VsZWN0Q29tbW9uQ29tcG9uZW50LFxuICAgICAgdXNlRXhpc3Rpbmc6IFJkdEdvdlNlbGVjdENvbXBvbmVudCxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFJkdEJhc2VGb3JtSW5wdXRDb21wb25lbnQsXG4gICAgICB1c2VFeGlzdGluZzogUmR0R292U2VsZWN0Q29tcG9uZW50LFxuICAgIH0sXG4gIF0sXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUmR0R292U2VsZWN0Q29tcG9uZW50PFRJdGVtLCBUSWQ+XG4gIGV4dGVuZHMgUmR0QmFzZVNlbGVjdENvbW1vbkNvbXBvbmVudDxUSXRlbSwgVElkLCBUSWQgfCBUSWRbXT5cbiAgaW1wbGVtZW50cyBPbkRlc3Ryb3lcbntcbiAgcHJpdmF0ZSByZWFkb25seSBvdmVybGF5ID0gaW5qZWN0KE92ZXJsYXkpO1xuICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzY3JvbGxDb250YWluZXIgPVxuICAgIHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxVTGlzdEVsZW1lbnQ+Pignc2Nyb2xsQ29udGFpbmVyJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0QnV0dG9uID0gdmlld0NoaWxkPEVsZW1lbnRSZWY+KCdzZWxlY3RCdXR0b24nKTtcbiAgcHJpdmF0ZSByZWFkb25seSBvdmVybGF5VGVtcGxhdGUgPVxuICAgIHZpZXdDaGlsZDxUZW1wbGF0ZVJlZjx2b2lkPj4oJ292ZXJsYXlDb250YWluZXInKTtcbiAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25FbHMgPSB2aWV3Q2hpbGRyZW4oUmR0U2VsZWN0T3B0aW9uRGlyZWN0aXZlPFRJZD4pO1xuXG4gIHJlYWRvbmx5IG11bHRpID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuICByZWFkb25seSBzaXplID0gaW5wdXQ8R292U2l6ZT4oJ3MnKTtcbiAgb3ZlcnJpZGUgcmVhZG9ubHkgcGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KCdWeWJlcnRlJyk7XG4gIHJlYWRvbmx5IHNob3dDbGVhciA9IGlucHV0KHRydWUsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuICByZWFkb25seSBzaG93U2VhcmNoSW5wdXQgPSBpbnB1dChmYWxzZSwge1xuICAgIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBhbGlhczogJ3Nob3dTZWFyY2gnLFxuICB9KTtcbiAgcmVhZG9ubHkgc2hvd1NlYXJjaCA9IGxpbmtlZFNpZ25hbCgoKSA9PiB0aGlzLnNob3dTZWFyY2hJbnB1dCgpKTtcbiAgcmVhZG9ubHkgbGFiZWxQb3NpdGlvbklucHV0ID0gaW5wdXQ8R292TGFiZWxQb3NpdGlvbj4oJ3RvcCcsIHtcbiAgICBhbGlhczogJ2xhYmVsUG9zaXRpb24nLFxuICB9KTtcbiAgcmVhZG9ubHkgbGFiZWxQb3NpdGlvbiA9IGxpbmtlZFNpZ25hbCgoKSA9PiB0aGlzLmxhYmVsUG9zaXRpb25JbnB1dCgpKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGtleU1hbmFnZXIgPSBuZXcgQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIoXG4gICAgdGhpcy5vcHRpb25FbHMsXG4gICAgdGhpcy5pbmplY3RvclxuICApO1xuXG4gIHByaXZhdGUgcmVzaXplRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBidG4gPSB0aGlzLnNlbGVjdEJ1dHRvbigpPy5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzKSA9PiB7XG4gICAgICBjb25zdCBzaXplID0gZW50cmllc1swXT8uYm9yZGVyQm94U2l6ZT8uWzBdLmlubGluZVNpemU7XG4gICAgICBpZiAodGhpcy5vdmVybGF5UmVmICYmIHNpemUpIHtcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmLnVwZGF0ZVNpemUoe1xuICAgICAgICAgIG1pbldpZHRoOiBzaXplLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoYnRuKSB7XG4gICAgICBvYnNlcnZlci5vYnNlcnZlKGJ0bik7XG4gICAgfVxuICAgIHJldHVybiAoKSA9PiBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH0pO1xuXG4gIHByaXZhdGUgb3ZlcmxheVJlZjogT3ZlcmxheVJlZiB8IG51bGwgPSBudWxsO1xuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBpc0VtcHR5KHZhbHVlOiBUSWQgfCBUSWRbXSB8IG51bGwpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IG51bGwgfHwgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCk7XG4gIH1cblxuICByZWFkb25seSBzZWxlY3RlZExhYmVsID0gY29tcHV0ZWQoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuc3RvcmVcbiAgICAgICAgLnNlbGVjdGVkSXRlbXMoKVxuICAgICAgICAubWFwKChpKSA9PiBpLmxhYmVsKVxuICAgICAgICAuam9pbignLCAnKSB8fCBudWxsXG4gICk7XG5cbiAgb25DbGVhckNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5zdG9yZS51bnNlbGVjdEFsbCgpO1xuICB9XG5cbiAgb3Blbk92ZXJsYXkoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVhZG9ubHlJbnB1dCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZiA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5jcmVhdGVPdmVybGF5KCk7XG5cbiAgICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmPy5kZXRhY2goKTtcbiAgICAgICAgdGhpcy5vblRvdWNoKCk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5vdmVybGF5UmVmXG4gICAgICAgIC5rZXlkb3duRXZlbnRzKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChlKSA9PiBlLmtleSksXG4gICAgICAgICAgZmlsdGVyKChrZXkpID0+IGtleSA9PT0gJ0VzY2FwZScpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgICAgIHRoaXMub3ZlcmxheVJlZj8uZGV0YWNoKCk7XG4gICAgICAgICAgdGhpcy5vblRvdWNoKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5vdmVybGF5UmVmLmhhc0F0dGFjaGVkKCkpIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5kZXRhY2goKTtcbiAgICAgIHRoaXMub25Ub3VjaCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG92ZXJsYXlUZW1wbGF0ZSA9IHRoaXMub3ZlcmxheVRlbXBsYXRlKCk7XG4gICAgaWYgKG92ZXJsYXlUZW1wbGF0ZSkge1xuICAgICAgY29uc3QgcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKG92ZXJsYXlUZW1wbGF0ZSwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gocG9ydGFsKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlQnV0dG9uS2V5ZG93bigkZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBrZXlDb2RlID0gJGV2ZW50LmtleUNvZGU7XG4gICAgY29uc3QgaXNBcnJvd0tleSA9IGtleUNvZGUgPT09IFVQX0FSUk9XIHx8IGtleUNvZGUgPT09IERPV05fQVJST1c7XG5cbiAgICBpZiAoaXNBcnJvd0tleSkge1xuICAgICAgdGhpcy5vcGVuT3ZlcmxheSgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVCdXR0b25CbHVyKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5vdmVybGF5UmVmPy5oYXNBdHRhY2hlZCgpKSB7XG4gICAgICB0aGlzLm9uQmx1cigpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBoYW5kbGVJbnB1dChxdWVyeTogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcmUuc2V0UXVlcnkocXVlcnkpO1xuICAgIHRoaXMua2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKC0xKTtcbiAgfVxuXG4gIGhhbmRsZUlucHV0S2V5ZG93bigkZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBrZXkgPSAkZXZlbnQua2V5Q29kZTtcbiAgICBjb25zdCBhY3RpdmVJdGVtID0gdGhpcy5rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW07XG4gICAgaWYgKGtleSA9PT0gRU5URVIgJiYgYWN0aXZlSXRlbSAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5zZWxlY3RPcHRpb24oYWN0aXZlSXRlbS52YWx1ZSgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5rZXlNYW5hZ2VyLm9uS2V5ZG93bigkZXZlbnQpO1xuICAgICAgdGhpcy5rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0/LnNjcm9sbEludG9FbGVtZW50KCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHRvRXh0ZXJuYWxWYWx1ZShcbiAgICBpbnRlcm5hbFZhbHVlOiBUSWQgfCBUSWRbXSB8IG51bGxcbiAgKTogVElkIHwgVElkW10gfCBudWxsIHtcbiAgICBpZiAodW50cmFja2VkKHRoaXMubXVsdGkpKSB7XG4gICAgICByZXR1cm4gaW50ZXJuYWxWYWx1ZSBhcyBUSWRbXSB8IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGludGVybmFsVmFsdWUpID8gaW50ZXJuYWxWYWx1ZVswXSA6IG51bGw7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0T3B0aW9uKG9wdGlvbjogVElkKTogdm9pZCB7XG4gICAgaWYgKHVudHJhY2tlZCh0aGlzLm11bHRpKSkge1xuICAgICAgdGhpcy5zdG9yZS50b2dnbGUob3B0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdG9yZS5zZWxlY3RTaW5nbGUob3B0aW9uKTtcbiAgICAgIC8vIGRldGFjaCBvbiBhIG5leHQgdGlja1xuICAgICAgLy8gb3RoZXJ3aXNlIG9uIEVOVEVSIG92ZXJsYXkgaXMgc3RpbGwgZW50ZXJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLm92ZXJsYXlSZWY/LmRldGFjaCgpO1xuICAgICAgICB0aGlzLmtleU1hbmFnZXIuc2V0QWN0aXZlSXRlbSgtMSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZWFkb25seSBzZWxlY3RCdXR0b25FZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdEJ1dHRvbiA9IHRoaXMuc2VsZWN0QnV0dG9uKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3Qgb3ZlcmxheSA9IHRoaXMub3ZlcmxheVJlZjtcbiAgICBpZiAob3ZlcmxheSAmJiBzZWxlY3RCdXR0b24pIHtcbiAgICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLmdldFBvc2l0aW9uU3RyYXRlZ3koc2VsZWN0QnV0dG9uKTtcbiAgICAgIG92ZXJsYXkudXBkYXRlUG9zaXRpb25TdHJhdGVneShwb3NpdGlvblN0cmF0ZWd5KTtcbiAgICB9XG4gIH0pO1xuXG4gIHByaXZhdGUgZ2V0UG9zaXRpb25TdHJhdGVneShlbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgIHJldHVybiB0aGlzLm92ZXJsYXlcbiAgICAgIC5wb3NpdGlvbigpXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLnNlbGVjdEJ1dHRvbigpPy5uYXRpdmVFbGVtZW50KVxuICAgICAgLndpdGhQb3NpdGlvbnMoW1xuICAgICAgICB7XG4gICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgICAgICAgcGFuZWxDbGFzczogJ3JkdC1nb3Ytc2VsZWN0LW92ZXJsYXktcGFuZWwtYm90dG9tJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6ICdyZHQtZ292LXNlbGVjdC1vdmVybGF5LXBhbmVsLXRvcCcsXG4gICAgICAgIH0sXG4gICAgICBdKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlT3ZlcmxheSgpOiBPdmVybGF5UmVmIHtcbiAgICBjb25zdCBzZWxlY3RCdXR0b24gPSB0aGlzLnNlbGVjdEJ1dHRvbigpPy5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLmdldFBvc2l0aW9uU3RyYXRlZ3koc2VsZWN0QnV0dG9uKTtcbiAgICByZXR1cm4gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICdyZHQtZ292LXRyYW5zcGFyZW50LWJhY2tkcm9wJyxcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgICBtaW5XaWR0aDogdGhpcy5zZWxlY3RCdXR0b24oKT8ubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5ibG9jaygpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzY3JvbGxFZmZlY3QgPSBlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuICAgIGNvbnN0IHNjcm9sbENvbnRhaW5lciA9IHRoaXMuc2Nyb2xsQ29udGFpbmVyKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKCFzY3JvbGxDb250YWluZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkaXN0JCA9IGZyb21FdmVudChzY3JvbGxDb250YWluZXIsICdzY3JvbGwnKS5waXBlKFxuICAgICAgZmlsdGVyKFxuICAgICAgICAoKSA9PiB1bnRyYWNrZWQodGhpcy5zdG9yZS5oYXNNb3JlKSAmJiAhdW50cmFja2VkKHRoaXMuc3RvcmUubG9hZGluZylcbiAgICAgICksXG4gICAgICB0aHJvdHRsZVRpbWUoMCwgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIpLFxuICAgICAgbWFwKCgpID0+IHRoaXMuc2Nyb2xsRGlzdFRvQm90dG9tKHNjcm9sbENvbnRhaW5lcikpXG4gICAgKTtcblxuICAgIGNvbnN0IFRIUkVTSE9MRCA9IDQyO1xuICAgIGNvbnN0IHN1YiA9IGRpc3QkLnN1YnNjcmliZSgoZGlzdCkgPT4ge1xuICAgICAgaWYgKGRpc3QgPCBUSFJFU0hPTEQpIHtcbiAgICAgICAgdGhpcy5zdG9yZS5mZXRjaCgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIG9uQ2xlYW51cCgoKSA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gIH0pO1xuXG4gIHByaXZhdGUgc2Nyb2xsRGlzdFRvQm90dG9tKGNvbnRhaW5lcjogSFRNTEVsZW1lbnQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgY29udGFpbmVyLnNjcm9sbEhlaWdodCAtIChjb250YWluZXIuc2Nyb2xsVG9wICsgY29udGFpbmVyLmNsaWVudEhlaWdodClcbiAgICApO1xuICB9XG5cbiAgb3ZlcnJpZGUgZm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuT3ZlcmxheSgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgY2FuRm9jdXMoKTogUmR0Qm9vbGVhblJlc3VsdCB7XG4gICAgcmV0dXJuICF0aGlzLmRpc2FibGVkKCk7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICAgIHRoaXMua2V5TWFuYWdlci5kZXN0cm95KCk7XG4gIH1cbn1cbiIsIkBsZXQgc2VsID0gc2VsZWN0ZWRMYWJlbCgpOyBAbGV0IGxQb3MgPSBsYWJlbFBvc2l0aW9uKCk7IEBsZXQgaGFzRXJyb3IgPVxudmlzaWJsZUVycm9ycygpIHwgcmR0Rm9ybUVycm9yOyBAaWYobFBvcyA9PT0gJ3RvcCcpe1xuPGdvdi1mb3JtLWxhYmVsIHNsb3Q9XCJsZWZ0XCIgW2NsYXNzLndhcm5pbmctY29sb3ItZ292LWxhYmVsXT1cImhhc0Vycm9yXCIgc2l6ZT1cInNcIlxuICA+e3sgbGFiZWwoKSB9fVxuICBAaWYgKHJlcXVpcmVkKCkpIHtcbiAgPHNwYW4gY2xhc3M9XCJ3YXJuaW5nLWNvbG9yLXRleHRcIj4qPC9zcGFuPlxuICB9PC9nb3YtZm9ybS1sYWJlbFxuPlxufVxuPGRpdlxuICBjbGFzcz1cImdvdi1mb3JtLXNlbGVjdCBnb3YtZm9ybS1pbnB1dFwiXG4gIFtjbGFzcy5oYXMtY2xlYXJdPVwic2hvd0NsZWFyKCkgJiYgISFzZWxcIlxuICBbYXR0ci5zaXplXT1cInNpemUoKVwiXG4gIFthdHRyLmludmFsaWRdPVwiaW52YWxpZCgpICYmIHRvdWNoZWQoKVwiXG4gIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkKClcIlxuPlxuICBAaWYgKGxQb3MgPT09ICdsZWZ0Jykge1xuICA8cFxuICAgIGNsYXNzPVwiZ292LWZvcm0tbGFiZWxfX2xhYmVsIHNfbGFiZWxcIlxuICAgIHNsb3Q9XCJwcmVmaXhcIlxuICAgIFtjbGFzcy53YXJuaW5nLWNvbG9yLXRleHRdPVwiaGFzRXJyb3JcIlxuICA+XG4gICAge3sgbGFiZWwoKSB9fVxuICAgIEBpZiAocmVxdWlyZWQoKSkge1xuICAgIDxzcGFuIGNsYXNzPVwid2FybmluZy1jb2xvci10ZXh0XCI+Kjwvc3Bhbj5cbiAgICB9XG4gIDwvcD5cbiAgfVxuICA8ZGl2IGNsYXNzPVwiZWxlbWVudFwiPlxuICAgIDxidXR0b25cbiAgICAgICNzZWxlY3RCdXR0b25cbiAgICAgIFthdHRyLnNpemVdPVwic2l6ZSgpXCJcbiAgICAgIChjbGljayk9XCJvcGVuT3ZlcmxheSgpXCJcbiAgICAgIChrZXlkb3duKT1cImhhbmRsZUJ1dHRvbktleWRvd24oJGV2ZW50KVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gICAgICBjbGFzcz1cInNlbGVjdFwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIChibHVyKT1cImhhbmRsZUJ1dHRvbkJsdXIoKVwiXG4gICAgICAoZm9jdXMpPVwib25Gb2N1cygpXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsLWNvbnRlbnRcIiBbY2xhc3Mud2FybmluZy1jb2xvci10ZXh0XT1cImhhc0Vycm9yXCI+XG4gICAgICAgIEBpZiAoc2VsKSB7XG4gICAgICAgIHt7IHNlbCB9fVxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAge3sgcGxhY2Vob2xkZXIoKSB8fCAnJm5ic3A7JyB9fVxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICAgIEBpZiAoc2hvd0NsZWFyKCkgJiYgc2VsKSB7XG4gICAgICA8Z292LWJ1dHRvblxuICAgICAgICBjbGFzcz1cImNsZWFyLWJ1dHRvblwiXG4gICAgICAgIGljb25TdGFydD1cImJhc2ljL3hcIlxuICAgICAgICAoY2xpY2spPVwib25DbGVhckNsaWNrKCRldmVudClcIlxuICAgICAgICBwcm9wYWdhdGU9XCJmYWxzZVwiXG4gICAgICAgIGJ1dHRvblR5cGU9XCJiYXNlXCJcbiAgICAgICAgY29sb3I9XCJlcnJvclwiXG4gICAgICAgIFtyZHREaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgICAgID48L2dvdi1idXR0b24+XG4gICAgICB9IEBpZiAobG9hZGluZygpKSB7XG4gICAgICA8cmR0LXNwaW5uZXIgLz5cbiAgICAgIH0gQGVsc2UgeyBAaWYoaGFzRXJyb3Ipe1xuICAgICAgPGdvdi1pY29uIG5hbWU9XCJleGNsYW1hdGlvbi1sZ1wiIGNsYXNzPVwiaWNvbi13YXJuaW5nXCI+PC9nb3YtaWNvbj5cbiAgICAgIH1cbiAgICAgIDxnb3YtaWNvblxuICAgICAgICBuYW1lPVwiY2hldnJvbi1kb3duXCJcbiAgICAgICAgY2xhc3M9XCJpY29uLWFycm93XCJcbiAgICAgICAgW2NsYXNzLndhcm5pbmctY29sb3ItaWNvbl09XCJoYXNFcnJvclwiXG4gICAgICA+PC9nb3YtaWNvbj5cbiAgICAgIH1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIEBpZiAobFBvcyA9PT0gJ3JpZ2h0Jykge1xuICA8cFxuICAgIGNsYXNzPVwiZ292LWZvcm0tbGFiZWxfX2xhYmVsIHNfbGFiZWxcIlxuICAgIHNsb3Q9XCJzdWZpeFwiXG4gICAgW2NsYXNzLndhcm5pbmctY29sb3ItdGV4dF09XCJoYXNFcnJvclwiXG4gID5cbiAgICB7eyBsYWJlbCgpIH19XG4gICAgQGlmIChyZXF1aXJlZCgpKSB7XG4gICAgPHNwYW4gY2xhc3M9XCJ3YXJuaW5nLWNvbG9yLXRleHRcIj4qPC9zcGFuPlxuICAgIH1cbiAgPC9wPlxuICB9XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjb3ZlcmxheUNvbnRhaW5lcj5cbiAgPGRpdiBjbGFzcz1cInJkdC1nb3Ytc2VsZWN0LWNvbnRhaW5lclwiPlxuICAgIEBpZiAoc2hvd1NlYXJjaCgpKSB7XG4gICAgPGRpdiBjbGFzcz1cInNlYXJjaC1jb250YWluZXJcIiBbY2xhc3MubG9hZGluZ109XCJsb2FkaW5nKClcIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICBjbGFzcz1cImdvdi1mb3JtLWlucHV0XCJcbiAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgcmR0QXV0b2ZvY3VzT25Jbml0XG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJpbnB1dEN0cmxcIlxuICAgICAgICAoa2V5ZG93bik9XCJoYW5kbGVJbnB1dEtleWRvd24oJGV2ZW50KVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiWmFkZWp0ZSBobGVkYW7DvSB2w71yYXpcIlxuICAgICAgLz5cbiAgICAgIEBpZiAobG9hZGluZygpKSB7XG4gICAgICA8cmR0LXNwaW5uZXIgLz5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICB9XG4gICAgPHVsIHJvbGU9XCJsaXN0Ym94XCIgYXJpYS1oaWRkZW49XCJmYWxzZVwiICNzY3JvbGxDb250YWluZXI+XG4gICAgICBAZm9yIChvcHRpb24gb2YgdmlzaWJsZU9wdGlvbnMoKTsgdHJhY2sgb3B0aW9uLmlkKSB7XG4gICAgICA8bGkgcm9sZT1cIm9wdGlvblwiIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwib3B0aW9uLnNlbGVjdGVkXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBbcmR0U2VsZWN0T3B0aW9uXT1cIm9wdGlvblwiXG4gICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9wdGlvbihvcHRpb24uaWQpXCJcbiAgICAgICAgICBjbGFzcz1cIm9wdGlvblwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgID5cbiAgICAgICAgICA8Z292LWljb25cbiAgICAgICAgICAgIG5hbWU9XCJjaGVjay1sZ1wiXG4gICAgICAgICAgICBbY2xhc3MuaW52aXNpYmxlXT1cIiFvcHRpb24uc2VsZWN0ZWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJtci0xIHctNCBwaWNrZWRcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9saT5cbiAgICAgIH0gQGVtcHR5IHsgQGlmIChsb2FkaW5nKCkpIHtcbiAgICAgIDxsaSBjbGFzcz1cInBvaW50ZXItZXZlbnRzLW5vbmVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvblwiPk5hxI3DrXTDoW7DrSBob2Rub3QuLi48L2Rpdj5cbiAgICAgIDwvbGk+XG4gICAgICB9IEBlbHNlIGlmIChzdG9yZS5xdWVyeSgpKSB7XG4gICAgICA8bGkgY2xhc3M9XCJwb2ludGVyLWV2ZW50cy1ub25lXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb25cIj5cbiAgICAgICAgICBQcm8gemFkYW7DvSB2w71yYXogbmVqc291IGsgZGlzcG96aWNpIMW+w6FkbsOpIHrDoXpuYW15XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9saT5cbiAgICAgIH0gQGVsc2UgaWYgKCFzdG9yZS5kYXRhc291cmNlKCk/LnF1ZXJ5UmVxdWlyZWQpIHtcbiAgICAgIDxsaSBjbGFzcz1cInBvaW50ZXItZXZlbnRzLW5vbmVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvblwiPk5lanNvdSBrIGRpc3BvemljaSDFvsOhZG7DqSBob2Rub3R5PC9kaXY+XG4gICAgICA8L2xpPlxuICAgICAgfSB9XG4gICAgPC91bD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuQGlmKGhhc0Vycm9yKXtcbjxnb3YtZm9ybS1tZXNzYWdlIHNsb3Q9XCJib3R0b21cIiBjb2xvcj1cImVycm9yXCI+e3sgaGFzRXJyb3IgfX08L2dvdi1mb3JtLW1lc3NhZ2U+XG59XG4iXX0=","import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, effect, inject, input, linkedSignal, Renderer2, signal, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { RdtBaseFormInputComponent, RdtFormErrorPipe, RdtTextInputComponent, } from '@ngrdt/forms';\nimport { RdtIconOutletDirective } from '@ngrdt/icon';\nimport { signalToPromise } from '@ngrdt/utils';\nimport { forceFocus } from '../../utils';\nimport * as i0 from \"@angular/core\";\nexport class RdtGovTextInputComponent extends RdtTextInputComponent {\n renderer = inject(Renderer2);\n govInput = viewChild('govInput');\n size = input('s');\n icon = input(null);\n iconStart = input(null);\n labelPositionInput = input('top', {\n alias: 'labelPosition',\n });\n labelPosition = linkedSignal(() => this.labelPositionInput());\n inputElement = signal(null);\n hasErrors = false;\n isEmpty(value) {\n return value == null || value === '';\n }\n readonlyEffect = effect(async () => {\n const input = this.govInput()?.nativeElement;\n const inputEl = await input?.getRef();\n const readonly = this.readonlyInput();\n if (input) {\n if (readonly) {\n this.renderer.setAttribute(input, 'readonly', 'true');\n }\n else {\n this.renderer.removeAttribute(input, 'readonly');\n }\n }\n });\n inputElementEffect = effect(async () => {\n const govInput = this.govInput()?.nativeElement;\n if (govInput) {\n const input = await govInput.getRef();\n this.inputElement.set(input);\n }\n });\n errorFixEffect = effect(() => {\n const inputElement = this.inputElement();\n const visibleErrors = this.visibleErrors();\n const hadErrors = this.hasErrors;\n this.hasErrors = !!visibleErrors;\n if (hadErrors !== this.hasErrors) {\n const isActive = document.activeElement === inputElement;\n if (isActive && inputElement) {\n forceFocus(inputElement);\n }\n }\n });\n async focus() {\n const govInput = await this.govInput()?.nativeElement;\n const el = await govInput?.getRef();\n forceFocus(el);\n }\n canFocus() {\n return signalToPromise(this.govInput, { injector: this.injector })\n .then((btn) => btn?.nativeElement.getRef())\n .then((el) => !!el);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtGovTextInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.0\", type: RdtGovTextInputComponent, isStandalone: true, selector: \"rdt-gov-text-input\", inputs: { size: { classPropertyName: \"size\", publicName: \"size\", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: \"icon\", publicName: \"icon\", isSignal: true, isRequired: false, transformFunction: null }, iconStart: { classPropertyName: \"iconStart\", publicName: \"iconStart\", isSignal: true, isRequired: false, transformFunction: null }, labelPositionInput: { classPropertyName: \"labelPositionInput\", publicName: \"labelPosition\", isSignal: true, isRequired: false, transformFunction: null } }, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: RdtGovTextInputComponent,\n multi: true,\n },\n {\n provide: RdtBaseFormInputComponent,\n useExisting: RdtGovTextInputComponent,\n },\n ], viewQueries: [{ propertyName: \"govInput\", first: true, predicate: [\"govInput\"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: \"@let lPos = labelPosition(); @if(lPos === 'top'){\\n<gov-form-label slot=\\\"left\\\" size=\\\"m\\\" [class.warning-color-gov-label]=\\\"hasError\\\"\\n >{{ label() }} @if (required()) {\\n <span class=\\\"warning-color-text\\\">*</span>\\n }</gov-form-label\\n>\\n}\\n<gov-form-input\\n #govInput\\n [inputType]=\\\"type()\\\"\\n [size]=\\\"size()\\\"\\n [value]=\\\"internalValue()\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [autocomplete]=\\\"autocomplete()\\\"\\n [minlength]=\\\"minlength()\\\"\\n [maxlength]=\\\"maxlength()\\\"\\n [invalid]=\\\"invalid() && touched()\\\"\\n [attr.invalid]=\\\"invalid() && touched()\\\"\\n [required]=\\\"required()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [attr.disabled]=\\\"disabled()\\\"\\n [name]=\\\"id()\\\"\\n [identifier]=\\\"id()\\\"\\n (gov-input)=\\\"onInternalValueChange($event.detail.value)\\\"\\n (gov-focus)=\\\"onFocus()\\\"\\n (gov-blur)=\\\"onBlur()\\\"\\n>\\n @let lI = iconStart(); @let rI = icon(); @if(lPos === 'left') {\\n <p\\n class=\\\"gov-form-label__label s_label\\\"\\n slot=\\\"prefix\\\"\\n [class.warning-color-text]=\\\"hasError\\\"\\n >\\n {{ label() }} @if (required()) {\\n <span class=\\\"warning-color-text\\\">*</span>\\n }\\n </p>\\n } @if(lPos === 'right') {\\n <p\\n class=\\\"gov-form-label__label s_label\\\"\\n slot=\\\"sufix\\\"\\n [class.warning-color-text]=\\\"hasError\\\"\\n >\\n {{ label() }} @if (required()) {\\n <span class=\\\"warning-color-text\\\">*</span>\\n }\\n </p>\\n } @if (lI) {\\n <span slot=\\\"icon-start\\\" style=\\\"width: auto\\\">\\n <ng-container rdtIconOutlet [inputs]=\\\"{ name: lI }\\\"></ng-container>\\n </span>\\n } @if (rI) {\\n <span slot=\\\"icon-end\\\" style=\\\"width: auto\\\">\\n <ng-container rdtIconOutlet [inputs]=\\\"{ name: rI }\\\"></ng-container>\\n </span>\\n }\\n</gov-form-input>\\n@let hasError = visibleErrors() | rdtFormError; @if(hasError){\\n<gov-form-message slot=\\\"bottom\\\" color=\\\"error\\\">{{ hasError }}</gov-form-message>\\n}\\n\", styles: [\".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}\\n\"], dependencies: [{ kind: \"pipe\", type: RdtFormErrorPipe, name: \"rdtFormError\" }, { kind: \"directive\", type: RdtIconOutletDirective, selector: \"[rdtIconOutlet]\", exportAs: [\"rdtIconOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtGovTextInputComponent, decorators: [{\n type: Component,\n args: [{ selector: 'rdt-gov-text-input', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [RdtFormErrorPipe, RdtIconOutletDirective], providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: RdtGovTextInputComponent,\n multi: true,\n },\n {\n provide: RdtBaseFormInputComponent,\n useExisting: RdtGovTextInputComponent,\n },\n ], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: \"@let lPos = labelPosition(); @if(lPos === 'top'){\\n<gov-form-label slot=\\\"left\\\" size=\\\"m\\\" [class.warning-color-gov-label]=\\\"hasError\\\"\\n >{{ label() }} @if (required()) {\\n <span class=\\\"warning-color-text\\\">*</span>\\n }</gov-form-label\\n>\\n}\\n<gov-form-input\\n #govInput\\n [inputType]=\\\"type()\\\"\\n [size]=\\\"size()\\\"\\n [value]=\\\"internalValue()\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [autocomplete]=\\\"autocomplete()\\\"\\n [minlength]=\\\"minlength()\\\"\\n [maxlength]=\\\"maxlength()\\\"\\n [invalid]=\\\"invalid() && touched()\\\"\\n [attr.invalid]=\\\"invalid() && touched()\\\"\\n [required]=\\\"required()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [attr.disabled]=\\\"disabled()\\\"\\n [name]=\\\"id()\\\"\\n [identifier]=\\\"id()\\\"\\n (gov-input)=\\\"onInternalValueChange($event.detail.value)\\\"\\n (gov-focus)=\\\"onFocus()\\\"\\n (gov-blur)=\\\"onBlur()\\\"\\n>\\n @let lI = iconStart(); @let rI = icon(); @if(lPos === 'left') {\\n <p\\n class=\\\"gov-form-label__label s_label\\\"\\n slot=\\\"prefix\\\"\\n [class.warning-color-text]=\\\"hasError\\\"\\n >\\n {{ label() }} @if (required()) {\\n <span class=\\\"warning-color-text\\\">*</span>\\n }\\n </p>\\n } @if(lPos === 'right') {\\n <p\\n class=\\\"gov-form-label__label s_label\\\"\\n slot=\\\"sufix\\\"\\n [class.warning-color-text]=\\\"hasError\\\"\\n >\\n {{ label() }} @if (required()) {\\n <span class=\\\"warning-color-text\\\">*</span>\\n }\\n </p>\\n } @if (lI) {\\n <span slot=\\\"icon-start\\\" style=\\\"width: auto\\\">\\n <ng-container rdtIconOutlet [inputs]=\\\"{ name: lI }\\\"></ng-container>\\n </span>\\n } @if (rI) {\\n <span slot=\\\"icon-end\\\" style=\\\"width: auto\\\">\\n <ng-container rdtIconOutlet [inputs]=\\\"{ name: rI }\\\"></ng-container>\\n </span>\\n }\\n</gov-form-input>\\n@let hasError = visibleErrors() | rdtFormError; @if(hasError){\\n<gov-form-message slot=\\\"bottom\\\" color=\\\"error\\\">{{ hasError }}</gov-form-message>\\n}\\n\", styles: [\".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWdvdi10ZXh0LWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL0BuZ3JkdC9nb3Yvc3JjL2xpYi9nb3YvdWkvdGV4dC1pbnB1dC9yZHQtZ292LXRleHQtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L2dvdi9zcmMvbGliL2dvdi91aS90ZXh0LWlucHV0L3JkdC1nb3YtdGV4dC1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxzQkFBc0IsRUFDdEIsTUFBTSxFQUVOLE1BQU0sRUFDTixLQUFLLEVBQ0wsWUFBWSxFQUNaLFNBQVMsRUFDVCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUduRCxPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLGdCQUFnQixFQUNoQixxQkFBcUIsR0FDdEIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFXLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlELE9BQU8sRUFBWSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUF1QnpDLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxxQkFBcUI7SUFDaEQsUUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUUzQixRQUFRLEdBQUcsU0FBUyxDQUEyQixVQUFVLENBQUMsQ0FBQztJQUVyRSxJQUFJLEdBQUcsS0FBSyxDQUFVLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLElBQUksR0FBRyxLQUFLLENBQW9CLElBQUksQ0FBQyxDQUFDO0lBQ3RDLFNBQVMsR0FBRyxLQUFLLENBQW9CLElBQUksQ0FBQyxDQUFDO0lBQzNDLGtCQUFrQixHQUFHLEtBQUssQ0FBbUIsS0FBSyxFQUFFO1FBQzNELEtBQUssRUFBRSxlQUFlO0tBQ3ZCLENBQUMsQ0FBQztJQUNNLGFBQWEsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztJQUN0RCxZQUFZLEdBQUcsTUFBTSxDQUEwQixJQUFJLENBQUMsQ0FBQztJQUM5RCxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBRVAsT0FBTyxDQUFDLEtBQW9CO1FBQzdDLE9BQU8sS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxjQUFjLEdBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ3pDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxhQUFhLENBQUM7UUFDN0MsTUFBTSxPQUFPLEdBQUcsTUFBTSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDdEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3RDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDeEQsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNuRCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0lBRWMsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ3RELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxhQUFhLENBQUM7UUFDaEQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLE1BQU0sS0FBSyxHQUFHLE1BQU0sUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVjLGNBQWMsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFO1FBQzVDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN6QyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFFakMsSUFBSSxTQUFTLEtBQUssSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxhQUFhLEtBQUssWUFBWSxDQUFDO1lBRXpELElBQUksUUFBUSxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUM3QixVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDM0IsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFLO1FBQ2xCLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLGFBQWEsQ0FBQztRQUN0RCxNQUFNLEVBQUUsR0FBRyxNQUFNLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUNwQyxVQUFVLENBQUMsRUFBRyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVRLFFBQVE7UUFDZixPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUMvRCxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDMUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEIsQ0FBQzt1R0FqRVUsd0JBQXdCOzJGQUF4Qix3QkFBd0IscWxCQWJ4QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSx3QkFBd0I7Z0JBQ3JDLEtBQUssRUFBRSxJQUFJO2FBQ1o7WUFDRDtnQkFDRSxPQUFPLEVBQUUseUJBQXlCO2dCQUNsQyxXQUFXLEVBQUUsd0JBQXdCO2FBQ3RDO1NBQ0YsdUtDN0NILG8wREE0REEsaWFEMUJZLGdCQUFnQixxREFBRSxzQkFBc0I7OzJGQWN2Qyx3QkFBd0I7a0JBckJwQyxTQUFTOytCQUNFLG9CQUFvQixtQkFHYix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGNBQ3pCLElBQUksV0FDUCxDQUFDLGdCQUFnQixFQUFFLHNCQUFzQixDQUFDLGFBQ3hDO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsMEJBQTBCOzRCQUNyQyxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUseUJBQXlCOzRCQUNsQyxXQUFXLDBCQUEwQjt5QkFDdEM7cUJBQ0YsV0FDUSxDQUFDLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcbiAgZWZmZWN0LFxuICBFbGVtZW50UmVmLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBsaW5rZWRTaWduYWwsXG4gIFJlbmRlcmVyMixcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgR292Rm9ybUlucHV0IH0gZnJvbSAnQGdvdi1kZXNpZ24tc3lzdGVtLWNlL2FuZ3VsYXInO1xuaW1wb3J0IHsgUmR0Qm9vbGVhblJlc3VsdCB9IGZyb20gJ0BuZ3JkdC9jb3JlJztcbmltcG9ydCB7XG4gIFJkdEJhc2VGb3JtSW5wdXRDb21wb25lbnQsXG4gIFJkdEZvcm1FcnJvclBpcGUsXG4gIFJkdFRleHRJbnB1dENvbXBvbmVudCxcbn0gZnJvbSAnQG5ncmR0L2Zvcm1zJztcbmltcG9ydCB7IFJkdEljb24sIFJkdEljb25PdXRsZXREaXJlY3RpdmUgfSBmcm9tICdAbmdyZHQvaWNvbic7XG5pbXBvcnQgeyBOdWxsYWJsZSwgc2lnbmFsVG9Qcm9taXNlIH0gZnJvbSAnQG5ncmR0L3V0aWxzJztcbmltcG9ydCB7IEdvdkxhYmVsUG9zaXRpb24sIEdvdlNpemUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZm9yY2VGb2N1cyB9IGZyb20gJy4uLy4uL3V0aWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncmR0LWdvdi10ZXh0LWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JkdC1nb3YtdGV4dC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuLy4uL2dvdi1zaGFyZWQtc3R5bGVzLnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtSZHRGb3JtRXJyb3JQaXBlLCBSZHRJY29uT3V0bGV0RGlyZWN0aXZlXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogUmR0R292VGV4dElucHV0Q29tcG9uZW50LFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBSZHRCYXNlRm9ybUlucHV0Q29tcG9uZW50LFxuICAgICAgdXNlRXhpc3Rpbmc6IFJkdEdvdlRleHRJbnB1dENvbXBvbmVudCxcbiAgICB9LFxuICBdLFxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIFJkdEdvdlRleHRJbnB1dENvbXBvbmVudCBleHRlbmRzIFJkdFRleHRJbnB1dENvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZ292SW5wdXQgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxHb3ZGb3JtSW5wdXQ+PignZ292SW5wdXQnKTtcblxuICByZWFkb25seSBzaXplID0gaW5wdXQ8R292U2l6ZT4oJ3MnKTtcbiAgcmVhZG9ubHkgaWNvbiA9IGlucHV0PE51bGxhYmxlPFJkdEljb24+PihudWxsKTtcbiAgcmVhZG9ubHkgaWNvblN0YXJ0ID0gaW5wdXQ8TnVsbGFibGU8UmR0SWNvbj4+KG51bGwpO1xuICByZWFkb25seSBsYWJlbFBvc2l0aW9uSW5wdXQgPSBpbnB1dDxHb3ZMYWJlbFBvc2l0aW9uPigndG9wJywge1xuICAgIGFsaWFzOiAnbGFiZWxQb3NpdGlvbicsXG4gIH0pO1xuICByZWFkb25seSBsYWJlbFBvc2l0aW9uID0gbGlua2VkU2lnbmFsKCgpID0+IHRoaXMubGFiZWxQb3NpdGlvbklucHV0KCkpO1xuICBwcml2YXRlIHJlYWRvbmx5IGlucHV0RWxlbWVudCA9IHNpZ25hbDxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgaGFzRXJyb3JzID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGlzRW1wdHkodmFsdWU6IHN0cmluZyB8IG51bGwpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSA9PT0gJyc7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5RWZmZWN0ID0gZWZmZWN0KGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuZ292SW5wdXQoKT8ubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBpbnB1dEVsID0gYXdhaXQgaW5wdXQ/LmdldFJlZigpO1xuICAgIGNvbnN0IHJlYWRvbmx5ID0gdGhpcy5yZWFkb25seUlucHV0KCk7XG4gICAgaWYgKGlucHV0KSB7XG4gICAgICBpZiAocmVhZG9ubHkpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoaW5wdXQsICdyZWFkb25seScsICd0cnVlJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZShpbnB1dCwgJ3JlYWRvbmx5Jyk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGlucHV0RWxlbWVudEVmZmVjdCA9IGVmZmVjdChhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZ292SW5wdXQgPSB0aGlzLmdvdklucHV0KCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKGdvdklucHV0KSB7XG4gICAgICBjb25zdCBpbnB1dCA9IGF3YWl0IGdvdklucHV0LmdldFJlZigpO1xuICAgICAgdGhpcy5pbnB1dEVsZW1lbnQuc2V0KGlucHV0KTtcbiAgICB9XG4gIH0pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZXJyb3JGaXhFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IHRoaXMuaW5wdXRFbGVtZW50KCk7XG4gICAgY29uc3QgdmlzaWJsZUVycm9ycyA9IHRoaXMudmlzaWJsZUVycm9ycygpO1xuICAgIGNvbnN0IGhhZEVycm9ycyA9IHRoaXMuaGFzRXJyb3JzO1xuICAgIHRoaXMuaGFzRXJyb3JzID0gISF2aXNpYmxlRXJyb3JzO1xuXG4gICAgaWYgKGhhZEVycm9ycyAhPT0gdGhpcy5oYXNFcnJvcnMpIHtcbiAgICAgIGNvbnN0IGlzQWN0aXZlID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gaW5wdXRFbGVtZW50O1xuXG4gICAgICBpZiAoaXNBY3RpdmUgJiYgaW5wdXRFbGVtZW50KSB7XG4gICAgICAgIGZvcmNlRm9jdXMoaW5wdXRFbGVtZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIG92ZXJyaWRlIGFzeW5jIGZvY3VzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGdvdklucHV0ID0gYXdhaXQgdGhpcy5nb3ZJbnB1dCgpPy5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IGVsID0gYXdhaXQgZ292SW5wdXQ/LmdldFJlZigpO1xuICAgIGZvcmNlRm9jdXMoZWwhKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGNhbkZvY3VzKCk6IFJkdEJvb2xlYW5SZXN1bHQge1xuICAgIHJldHVybiBzaWduYWxUb1Byb21pc2UodGhpcy5nb3ZJbnB1dCwgeyBpbmplY3RvcjogdGhpcy5pbmplY3RvciB9KVxuICAgICAgLnRoZW4oKGJ0bikgPT4gYnRuPy5uYXRpdmVFbGVtZW50LmdldFJlZigpKVxuICAgICAgLnRoZW4oKGVsKSA9PiAhIWVsKTtcbiAgfVxufVxuIiwiQGxldCBsUG9zID0gbGFiZWxQb3NpdGlvbigpOyBAaWYobFBvcyA9PT0gJ3RvcCcpe1xuPGdvdi1mb3JtLWxhYmVsIHNsb3Q9XCJsZWZ0XCIgc2l6ZT1cIm1cIiBbY2xhc3Mud2FybmluZy1jb2xvci1nb3YtbGFiZWxdPVwiaGFzRXJyb3JcIlxuICA+e3sgbGFiZWwoKSB9fSBAaWYgKHJlcXVpcmVkKCkpIHtcbiAgPHNwYW4gY2xhc3M9XCJ3YXJuaW5nLWNvbG9yLXRleHRcIj4qPC9zcGFuPlxuICB9PC9nb3YtZm9ybS1sYWJlbFxuPlxufVxuPGdvdi1mb3JtLWlucHV0XG4gICNnb3ZJbnB1dFxuICBbaW5wdXRUeXBlXT1cInR5cGUoKVwiXG4gIFtzaXplXT1cInNpemUoKVwiXG4gIFt2YWx1ZV09XCJpbnRlcm5hbFZhbHVlKClcIlxuICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKVwiXG4gIFthdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlKClcIlxuICBbbWlubGVuZ3RoXT1cIm1pbmxlbmd0aCgpXCJcbiAgW21heGxlbmd0aF09XCJtYXhsZW5ndGgoKVwiXG4gIFtpbnZhbGlkXT1cImludmFsaWQoKSAmJiB0b3VjaGVkKClcIlxuICBbYXR0ci5pbnZhbGlkXT1cImludmFsaWQoKSAmJiB0b3VjaGVkKClcIlxuICBbcmVxdWlyZWRdPVwicmVxdWlyZWQoKVwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gIFtuYW1lXT1cImlkKClcIlxuICBbaWRlbnRpZmllcl09XCJpZCgpXCJcbiAgKGdvdi1pbnB1dCk9XCJvbkludGVybmFsVmFsdWVDaGFuZ2UoJGV2ZW50LmRldGFpbC52YWx1ZSlcIlxuICAoZ292LWZvY3VzKT1cIm9uRm9jdXMoKVwiXG4gIChnb3YtYmx1cik9XCJvbkJsdXIoKVwiXG4+XG4gIEBsZXQgbEkgPSBpY29uU3RhcnQoKTsgQGxldCBySSA9IGljb24oKTsgQGlmKGxQb3MgPT09ICdsZWZ0Jykge1xuICA8cFxuICAgIGNsYXNzPVwiZ292LWZvcm0tbGFiZWxfX2xhYmVsIHNfbGFiZWxcIlxuICAgIHNsb3Q9XCJwcmVmaXhcIlxuICAgIFtjbGFzcy53YXJuaW5nLWNvbG9yLXRleHRdPVwiaGFzRXJyb3JcIlxuICA+XG4gICAge3sgbGFiZWwoKSB9fSBAaWYgKHJlcXVpcmVkKCkpIHtcbiAgICA8c3BhbiBjbGFzcz1cIndhcm5pbmctY29sb3ItdGV4dFwiPio8L3NwYW4+XG4gICAgfVxuICA8L3A+XG4gIH0gQGlmKGxQb3MgPT09ICdyaWdodCcpIHtcbiAgPHBcbiAgICBjbGFzcz1cImdvdi1mb3JtLWxhYmVsX19sYWJlbCBzX2xhYmVsXCJcbiAgICBzbG90PVwic3VmaXhcIlxuICAgIFtjbGFzcy53YXJuaW5nLWNvbG9yLXRleHRdPVwiaGFzRXJyb3JcIlxuICA+XG4gICAge3sgbGFiZWwoKSB9fSBAaWYgKHJlcXVpcmVkKCkpIHtcbiAgICA8c3BhbiBjbGFzcz1cIndhcm5pbmctY29sb3ItdGV4dFwiPio8L3NwYW4+XG4gICAgfVxuICA8L3A+XG4gIH0gQGlmIChsSSkge1xuICA8c3BhbiBzbG90PVwiaWNvbi1zdGFydFwiIHN0eWxlPVwid2lkdGg6IGF1dG9cIj5cbiAgICA8bmctY29udGFpbmVyIHJkdEljb25PdXRsZXQgW2lucHV0c109XCJ7IG5hbWU6IGxJIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9zcGFuPlxuICB9IEBpZiAockkpIHtcbiAgPHNwYW4gc2xvdD1cImljb24tZW5kXCIgc3R5bGU9XCJ3aWR0aDogYXV0b1wiPlxuICAgIDxuZy1jb250YWluZXIgcmR0SWNvbk91dGxldCBbaW5wdXRzXT1cInsgbmFtZTogckkgfVwiPjwvbmctY29udGFpbmVyPlxuICA8L3NwYW4+XG4gIH1cbjwvZ292LWZvcm0taW5wdXQ+XG5AbGV0IGhhc0Vycm9yID0gdmlzaWJsZUVycm9ycygpIHwgcmR0Rm9ybUVycm9yOyBAaWYoaGFzRXJyb3Ipe1xuPGdvdi1mb3JtLW1lc3NhZ2Ugc2xvdD1cImJvdHRvbVwiIGNvbG9yPVwiZXJyb3JcIj57eyBoYXNFcnJvciB9fTwvZ292LWZvcm0tbWVzc2FnZT5cbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdyZHQtZ292LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vQG5ncmR0L2dvdi9zcmMvbmdyZHQtZ292LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
package/index.d.ts ADDED
@@ -0,0 +1,108 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { ElementRef, OnDestroy } from '@angular/core';
3
+ import { GovFormInput } from '@gov-design-system-ce/angular';
4
+ import { RdtBooleanResult } from '@ngrdt/core';
5
+ import { RdtNumericInputComponent, RdtSelectOfflineDatasourceProviderDirective, RdtBaseSelectCommonComponent, RdtTextInputComponent } from '@ngrdt/forms';
6
+ import { RdtIcon } from '@ngrdt/icon';
7
+ import { Nullable } from '@ngrdt/utils';
8
+
9
+ type GovSize = 'xs' | 's' | 'm' | 'l' | 'xl';
10
+ type GovColor = 'primary' | 'secondary' | 'neutral' | 'success' | 'warning' | 'error';
11
+ type GovMessageVariant = 'success' | 'error' | 'warning' | 'secondary';
12
+ type GovButtonType = 'solid' | 'outlined' | 'base' | 'link';
13
+ type GovLabelPosition = 'left' | 'right' | 'top';
14
+
15
+ declare const DEFAULT_GOV_BUTTON_COLOR: GovColor;
16
+ declare const DEFAULT_GOV_BUTTON_TYPE: GovButtonType;
17
+ declare const DEFAULT_GOV_BUTTON_SIZE: GovSize;
18
+
19
+ declare class RdtGovNumberInputComponent extends RdtNumericInputComponent {
20
+ private readonly renderer;
21
+ protected readonly govInput: _angular_core.Signal<ElementRef<GovFormInput> | undefined>;
22
+ readonly size: _angular_core.InputSignal<GovSize>;
23
+ readonly icon: _angular_core.InputSignal<Nullable<RdtIcon>>;
24
+ readonly iconStart: _angular_core.InputSignal<Nullable<RdtIcon>>;
25
+ readonly labelPositionInput: _angular_core.InputSignal<GovLabelPosition>;
26
+ readonly labelPosition: _angular_core.WritableSignal<GovLabelPosition>;
27
+ private readonly inputElement;
28
+ private hasErrors;
29
+ protected isEmpty(value: number | null): boolean;
30
+ protected onInput(value: string | number | null): void;
31
+ private readonlyEffect;
32
+ private readonly inputElementEffect;
33
+ private readonly errorFixEffect;
34
+ focus(): Promise<void>;
35
+ canFocus(): RdtBooleanResult;
36
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdtGovNumberInputComponent, never>;
37
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RdtGovNumberInputComponent, "rdt-gov-number-input", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconStart": { "alias": "iconStart"; "required": false; "isSignal": true; }; "labelPositionInput": { "alias": "labelPosition"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
38
+ }
39
+
40
+ declare class RdtGovSelectOfflineProviderDirective<T extends string | number> extends RdtSelectOfflineDatasourceProviderDirective<T> {
41
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdtGovSelectOfflineProviderDirective<any>, never>;
42
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdtGovSelectOfflineProviderDirective<any>, "rdt-gov-select[options]", never, {}, {}, never, never, true, never>;
43
+ }
44
+
45
+ declare class RdtGovSelectComponent<TItem, TId> extends RdtBaseSelectCommonComponent<TItem, TId, TId | TId[]> implements OnDestroy {
46
+ private readonly overlay;
47
+ private readonly viewContainerRef;
48
+ private readonly scrollContainer;
49
+ private readonly selectButton;
50
+ private readonly overlayTemplate;
51
+ private readonly optionEls;
52
+ readonly multi: _angular_core.InputSignalWithTransform<boolean, unknown>;
53
+ readonly size: _angular_core.InputSignal<GovSize>;
54
+ readonly placeholder: _angular_core.InputSignal<string>;
55
+ readonly showClear: _angular_core.InputSignalWithTransform<boolean, unknown>;
56
+ readonly showSearchInput: _angular_core.InputSignalWithTransform<boolean, unknown>;
57
+ readonly showSearch: _angular_core.WritableSignal<boolean>;
58
+ readonly labelPositionInput: _angular_core.InputSignal<GovLabelPosition>;
59
+ readonly labelPosition: _angular_core.WritableSignal<GovLabelPosition>;
60
+ private readonly keyManager;
61
+ private resizeEffect;
62
+ private overlayRef;
63
+ protected isEmpty(value: TId | TId[] | null): boolean;
64
+ readonly selectedLabel: _angular_core.Signal<string | null>;
65
+ onClearClick(event: MouseEvent): void;
66
+ openOverlay(): void;
67
+ protected handleButtonKeydown($event: KeyboardEvent): void;
68
+ protected handleButtonBlur(): void;
69
+ protected handleInput(query: string | null): void;
70
+ handleInputKeydown($event: KeyboardEvent): void;
71
+ protected toExternalValue(internalValue: TId | TId[] | null): TId | TId[] | null;
72
+ selectOption(option: TId): void;
73
+ readonly selectButtonEffect: _angular_core.EffectRef;
74
+ private getPositionStrategy;
75
+ private createOverlay;
76
+ private scrollEffect;
77
+ private scrollDistToBottom;
78
+ focus(): void;
79
+ canFocus(): RdtBooleanResult;
80
+ ngOnDestroy(): void;
81
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdtGovSelectComponent<any, any>, never>;
82
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RdtGovSelectComponent<any, any>, "rdt-gov-select", never, { "multi": { "alias": "multi"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "showClear": { "alias": "showClear"; "required": false; "isSignal": true; }; "showSearchInput": { "alias": "showSearch"; "required": false; "isSignal": true; }; "labelPositionInput": { "alias": "labelPosition"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
83
+ }
84
+
85
+ declare class RdtGovTextInputComponent extends RdtTextInputComponent {
86
+ private readonly renderer;
87
+ protected readonly govInput: _angular_core.Signal<ElementRef<GovFormInput> | undefined>;
88
+ readonly size: _angular_core.InputSignal<GovSize>;
89
+ readonly icon: _angular_core.InputSignal<Nullable<RdtIcon>>;
90
+ readonly iconStart: _angular_core.InputSignal<Nullable<RdtIcon>>;
91
+ readonly labelPositionInput: _angular_core.InputSignal<GovLabelPosition>;
92
+ readonly labelPosition: _angular_core.WritableSignal<GovLabelPosition>;
93
+ private readonly inputElement;
94
+ private hasErrors;
95
+ protected isEmpty(value: string | null): boolean;
96
+ private readonlyEffect;
97
+ private readonly inputElementEffect;
98
+ private readonly errorFixEffect;
99
+ focus(): Promise<void>;
100
+ canFocus(): RdtBooleanResult;
101
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdtGovTextInputComponent, never>;
102
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RdtGovTextInputComponent, "rdt-gov-text-input", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconStart": { "alias": "iconStart"; "required": false; "isSignal": true; }; "labelPositionInput": { "alias": "labelPosition"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
103
+ }
104
+
105
+ declare function forceFocus(input: HTMLInputElement): void;
106
+
107
+ export { DEFAULT_GOV_BUTTON_COLOR, DEFAULT_GOV_BUTTON_SIZE, DEFAULT_GOV_BUTTON_TYPE, RdtGovNumberInputComponent, RdtGovSelectComponent, RdtGovSelectOfflineProviderDirective, RdtGovTextInputComponent, forceFocus };
108
+ export type { GovButtonType, GovColor, GovLabelPosition, GovMessageVariant, GovSize };
package/package.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "@ngrdt/gov",
3
+ "version": "0.0.58",
4
+ "peerDependencies": {
5
+ "@angular/core": "^20.0.0",
6
+ "@angular/forms": "^20.0.0",
7
+ "@gov-design-system-ce/angular": "^1.3.1",
8
+ "rxjs": "~7.8.0",
9
+ "@ngrdt/core": "^0.0.58",
10
+ "@ngrdt/forms": "^0.0.58",
11
+ "@ngrdt/icon": "^0.0.58",
12
+ "@ngrdt/utils": "^0.0.58",
13
+ "@angular/cdk": "^20.2.0"
14
+ },
15
+ "sideEffects": false,
16
+ "module": "fesm2022/ngrdt-gov.mjs",
17
+ "typings": "index.d.ts",
18
+ "exports": {
19
+ "./package.json": {
20
+ "default": "./package.json"
21
+ },
22
+ ".": {
23
+ "types": "./index.d.ts",
24
+ "default": "./fesm2022/ngrdt-gov.mjs"
25
+ }
26
+ },
27
+ "dependencies": {
28
+ "tslib": "^2.3.0"
29
+ }
30
+ }
@@ -0,0 +1,102 @@
1
+ :root {
2
+ ul {
3
+ li:before {
4
+ content: none;
5
+ }
6
+ justify-content: space-between;
7
+ }
8
+
9
+ .menu-item {
10
+ &:hover {
11
+ text-decoration: underline;
12
+ }
13
+ }
14
+
15
+ ul.menu-item-container {
16
+ min-width: 280px;
17
+ padding: var(--spacing-s) var(--spacing-m) !important;
18
+ }
19
+
20
+ --rdt-menu-background: var(--background-block-primary);
21
+ --rdt-menu-border-radius: 0 0 var(--corner-radius-m) var(--corner-radius-m);
22
+
23
+ // GOV menu bar item style
24
+ --rdt-menu-bar-item-background: transparent;
25
+ --rdt-menu-bar-item-text-color: var(--text-primary-color);
26
+ --rdt-menu-bar-item-padding: var(--spacing-s) var(--spacing-m) !important;
27
+ --rdt-menu-bar-item-border-radius: var(
28
+ --outline-border-radius,
29
+ var(--corner-radius-xs-nudge)
30
+ );
31
+ --rdt-menu-bar-item-border: none;
32
+ --rdt-menu-bar-item-outline: none;
33
+ --rdt-menu-bar-item-margin: 0;
34
+ --rdt-menu-bar-item-font-size: var(--font-size-body-m);
35
+ --rdt-menu-bar-item-font-weight: 500;
36
+
37
+ //GOV MENU ITEM
38
+ --rdt-menu-item-font-size: var(--font-size-body-s);
39
+ --rdt-menu-item-padding: var(--spacing-xs) 0 var(--spacing-xs)
40
+ var(--spacing-xs);
41
+
42
+ //GOV Hover styles
43
+ --rdt-menu-bar-item-hover-background: var(--button-outlined-primary-hover);
44
+ --rdt-menu-bar-item-hover-text-color: var(--text-primary-color);
45
+ --rdt-menu-bar-item-hover-border: none;
46
+ --rdt-menu-bar-item-hover-outline: none;
47
+
48
+ //GOV Expanded styles
49
+ --rdt-menu-bar-item-expanded-background: var(--button-outlined-primary-hover);
50
+ --rdt-menu-bar-item-expanded-text-color: var(--text-primary-color);
51
+ --rdt-menu-bar-item-expanded-border: none;
52
+ --rdt-menu-bar-item-expanded-outline: none;
53
+
54
+ //GOV Focus styles
55
+ --rdt-menu-bar-item-focus-background: transparent;
56
+ --rdt-menu-bar-item-focus-text-color: var(--text-primary-color);
57
+ --rdt-menu-bar-item-focus-border: none;
58
+ --rdt-menu-bar-item-focus-outline: var(--outline-width, 0.125rem) solid
59
+ var(--status-focus);
60
+
61
+ //GOV Route active styles
62
+ --rdt-menu-bar-item-route-active-background: var(
63
+ --button-outlined-primary-active
64
+ );
65
+ --rdt-menu-bar-item-route-active-text-color: var(--text-primary-color);
66
+ --rdt-menu-bar-item-route-active-border: none;
67
+ --rdt-menu-bar-item-route-active-outline: none;
68
+
69
+ //GOV Disabled styles
70
+ --rdt-menu-bar-item-disabled-background: var(
71
+ --disabled-background,
72
+ var(--button-solid-disabled)
73
+ );
74
+ --rdt-menu-bar-item-disabled-text-color: var(
75
+ --disabled-color,
76
+ var(--text-disabled)
77
+ );
78
+ --rdt-menu-bar-item-disabled-border: none;
79
+ --rdt-menu-bar-item-disabled-outline: none;
80
+
81
+ @media only screen and (max-width: 767px) {
82
+ --rdt-menu-background: transparent;
83
+ .menu-bar-item {
84
+ flex-direction: column;
85
+ &-container {
86
+ flex-direction: column;
87
+ }
88
+ &-content {
89
+ width: 100%;
90
+ background-color: var(--background-block-primary);
91
+ }
92
+ }
93
+ rdt-menu-overlay {
94
+ height: 0px;
95
+ width: 100%;
96
+ position: unset;
97
+ }
98
+ rdt-menu-overlay.expanded {
99
+ height: unset;
100
+ }
101
+ }
102
+ }