@ngrdt/gov 0.0.89 → 0.0.92
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/fesm2022/ngrdt-gov.mjs +694 -587
- package/fesm2022/ngrdt-gov.mjs.map +1 -1
- package/index.d.ts +201 -253
- package/package.json +7 -7
package/fesm2022/ngrdt-gov.mjs
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, Injector, signal, input, linkedSignal, viewChild, effect, afterNextRender, untracked, HostBinding, Component, forwardRef, Injectable, ViewEncapsulation,
|
|
2
|
+
import { inject, Injector, signal, input, linkedSignal, viewChild, effect, afterNextRender, untracked, HostBinding, Component, forwardRef, Injectable, ViewEncapsulation, ChangeDetectionStrategy, computed, InjectionToken, Renderer2, CUSTOM_ELEMENTS_SCHEMA, Directive, ViewContainerRef, viewChildren, booleanAttribute, importProvidersFrom, LOCALE_ID, numberAttribute } from '@angular/core';
|
|
3
3
|
import { provideDateFnsAdapter } from '@angular/material-date-fns-adapter';
|
|
4
4
|
import { MAT_DATE_LOCALE, DateAdapter } from '@angular/material/core';
|
|
5
|
-
import * as i1$
|
|
5
|
+
import * as i1$3 from '@angular/material/datepicker';
|
|
6
6
|
import { MatDatepickerIntl, MatDatepickerModule } from '@angular/material/datepicker';
|
|
7
7
|
import * as i1 from '@gov-design-system-ce/angular';
|
|
8
8
|
import { GovButton, GovDesignSystemModule, GovFormCheckbox } from '@gov-design-system-ce/angular';
|
|
9
9
|
import { RdtButtonBase, RDT_BUTTON_BASE_PROVIDER } from '@ngrdt/button';
|
|
10
|
-
import {
|
|
10
|
+
import { RdtTranslateService, RdtAutoFocusOnInitDirective, RdtTranslatePipe, RDT_NOTIFICATION_SERVICE_PROVIDER, RDT_DIALOG_SERVICE_PROVIDER } from '@ngrdt/core';
|
|
11
|
+
import { RdtCheckboxComponent, RdtFormErrorPipe, RdtNumericInputComponent, RdtBaseFormInputComponent, RdtSelectOfflineDatasourceProviderDirective, RdtBaseSelectCommonComponent, RdtSelectOptionDirective, RdtSelectStore, RdtSingleSelectComponent, RDT_CHECKBOX_BASE_PROVIDER, RDT_NUMERIC_INPUT_BASE_PROVIDER, RDT_SELECT_BASE_PROVIDER, defaultRdtFormErrorCodes, RDT_FORM_ERROR_CODES_PROVIDER, RdtDateComponent, RdtTextInputComponent } from '@ngrdt/forms';
|
|
11
12
|
import { RdtIconOutletDirective, RdtIcon, RdtIconComponent, RDT_ICON_BASE_PROVIDER, RDT_ICON_REGISTRY_PROVIDER } from '@ngrdt/icon';
|
|
12
13
|
import { RdtSpinnerComponent, RDT_SPINNER_BASE_PROVIDER } from '@ngrdt/loading';
|
|
13
14
|
import * as i1$1 from '@angular/common';
|
|
14
15
|
import { NgTemplateOutlet, CommonModule } from '@angular/common';
|
|
15
16
|
import { RouterLink } from '@angular/router';
|
|
16
|
-
import * as i1$
|
|
17
|
+
import * as i1$2 from '@angular/forms';
|
|
17
18
|
import { NG_VALUE_ACCESSOR, ReactiveFormsModule, FormsModule } from '@angular/forms';
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
19
|
+
import { ReplaySubject, Subject, map, fromEvent, filter, throttleTime, animationFrameScheduler } from 'rxjs';
|
|
20
|
+
import { CdkDrag } from '@angular/cdk/drag-drop';
|
|
20
21
|
import { Overlay } from '@angular/cdk/overlay';
|
|
21
22
|
import { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';
|
|
22
|
-
import {
|
|
23
|
+
import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
|
|
24
|
+
import { TAB, ENTER } from '@angular/cdk/keycodes';
|
|
23
25
|
import { defineCustomElements } from '@gov-design-system-ce/components/loader';
|
|
24
26
|
import * as i2 from '@angular/material/input';
|
|
25
27
|
import { MatInputModule } from '@angular/material/input';
|
|
26
28
|
import { isValid, format } from 'date-fns';
|
|
27
|
-
import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
|
|
28
|
-
import { TAB, ENTER } from '@angular/cdk/keycodes';
|
|
29
29
|
|
|
30
30
|
const DEFAULT_GOV_BUTTON_COLOR = 'primary';
|
|
31
31
|
const DEFAULT_GOV_BUTTON_TYPE = 'outlined';
|
|
@@ -202,20 +202,39 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
202
202
|
}] });
|
|
203
203
|
|
|
204
204
|
class RdtGovDialogRef {
|
|
205
|
-
|
|
205
|
+
component;
|
|
206
|
+
injector;
|
|
207
|
+
minHeight;
|
|
208
|
+
maxHeight;
|
|
209
|
+
minWidth;
|
|
210
|
+
maxWidth;
|
|
211
|
+
size;
|
|
212
|
+
hasBackdrop;
|
|
213
|
+
isDraggable;
|
|
214
|
+
isResizable;
|
|
206
215
|
_close$ = new ReplaySubject(1);
|
|
207
216
|
_open$ = new Subject();
|
|
208
217
|
close$ = this._close$.asObservable();
|
|
209
218
|
open$ = this._open$.asObservable();
|
|
210
|
-
header
|
|
211
|
-
headerIcons
|
|
212
|
-
isLoading
|
|
213
|
-
|
|
214
|
-
isDraggable = signal(false);
|
|
215
|
-
isResizable = signal(false);
|
|
216
|
-
inputData = signal(null);
|
|
219
|
+
header;
|
|
220
|
+
headerIcons;
|
|
221
|
+
isLoading;
|
|
222
|
+
inputData;
|
|
217
223
|
constructor(config) {
|
|
218
|
-
this.
|
|
224
|
+
this.component = config.component;
|
|
225
|
+
this.injector = config.injector;
|
|
226
|
+
this.minHeight = config.minHeight;
|
|
227
|
+
this.maxHeight = config.maxHeight;
|
|
228
|
+
this.minWidth = config.minWidth;
|
|
229
|
+
this.maxWidth = config.maxWidth;
|
|
230
|
+
this.size = config.size;
|
|
231
|
+
this.isLoading = signal(config.initialLoading);
|
|
232
|
+
this.hasBackdrop = config.hasBackdrop;
|
|
233
|
+
this.isDraggable = config.isDraggable;
|
|
234
|
+
this.isResizable = config.isResizable;
|
|
235
|
+
this.inputData = signal(config.inputData);
|
|
236
|
+
this.header = signal(config.header ?? null);
|
|
237
|
+
this.headerIcons = signal(config.headerIcons ?? null);
|
|
219
238
|
}
|
|
220
239
|
ready() {
|
|
221
240
|
this._open$.next();
|
|
@@ -240,8 +259,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
240
259
|
class RdtGovDialogHeaderComponent {
|
|
241
260
|
dialogRef = inject(RdtGovDialogRef);
|
|
242
261
|
govIcon = RdtIcon.Close;
|
|
262
|
+
getIconColorDeclaration(color) {
|
|
263
|
+
if (color) {
|
|
264
|
+
return `--icon-color: var(--icon-${color});`;
|
|
265
|
+
}
|
|
266
|
+
else {
|
|
267
|
+
return undefined;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
243
270
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovDialogHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
244
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: RdtGovDialogHeaderComponent, isStandalone: true, selector: "rdt-gov-dialog-header", ngImport: i0, template: "<div class=\"gov-dialog__header\">\n <div class=\"gov-dialog__header-left\">\n @let
|
|
271
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: RdtGovDialogHeaderComponent, isStandalone: true, selector: "rdt-gov-dialog-header", ngImport: i0, template: "<div class=\"gov-dialog__header\">\n <div class=\"gov-dialog__header-left\">\n @let icons = dialogRef.headerIcons(); @let iL = icons?.iconStart; @if(iL){\n <span [style]=\"getIconColorDeclaration(icons?.iconStartColor)\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: iL }\"></ng-container>\n </span>\n }\n <h2 class=\"gov-dialog__title\">\n {{ dialogRef.header() }}\n </h2>\n @let rI = icons?.icon; @if(rI){\n <span [style]=\"getIconColorDeclaration(icons?.iconColor)\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: rI }\"> </ng-container>\n </span>\n }\n </div>\n <rdt-gov-button\n appearance=\"base\"\n size=\"l\"\n [expanded]=\"true\"\n [iconStart]=\"govIcon\"\n (click)=\"dialogRef.close()\"\n ></rdt-gov-button>\n</div>\n", dependencies: [{ kind: "ngmodule", type: GovDesignSystemModule }, { kind: "component", type: RdtGovButtonComponent, selector: "rdt-gov-button", inputs: ["appearance", "color", "size", "iconStart", "expanded"] }, { kind: "directive", type: RdtIconOutletDirective, selector: "[rdtIconOutlet]", exportAs: ["rdtIconOutlet"] }] });
|
|
245
272
|
}
|
|
246
273
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovDialogHeaderComponent, decorators: [{
|
|
247
274
|
type: Component,
|
|
@@ -249,7 +276,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
249
276
|
GovDesignSystemModule,
|
|
250
277
|
RdtGovButtonComponent,
|
|
251
278
|
RdtIconOutletDirective,
|
|
252
|
-
], template: "<div class=\"gov-dialog__header\">\n <div class=\"gov-dialog__header-left\">\n @let
|
|
279
|
+
], template: "<div class=\"gov-dialog__header\">\n <div class=\"gov-dialog__header-left\">\n @let icons = dialogRef.headerIcons(); @let iL = icons?.iconStart; @if(iL){\n <span [style]=\"getIconColorDeclaration(icons?.iconStartColor)\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: iL }\"></ng-container>\n </span>\n }\n <h2 class=\"gov-dialog__title\">\n {{ dialogRef.header() }}\n </h2>\n @let rI = icons?.icon; @if(rI){\n <span [style]=\"getIconColorDeclaration(icons?.iconColor)\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: rI }\"> </ng-container>\n </span>\n }\n </div>\n <rdt-gov-button\n appearance=\"base\"\n size=\"l\"\n [expanded]=\"true\"\n [iconStart]=\"govIcon\"\n (click)=\"dialogRef.close()\"\n ></rdt-gov-button>\n</div>\n" }]
|
|
253
280
|
}] });
|
|
254
281
|
|
|
255
282
|
class RdtGovSpinnerComponent extends RdtSpinnerComponent {
|
|
@@ -290,204 +317,237 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
290
317
|
args: [{ selector: 'rdt-gov-dialog-loading', imports: [GovDesignSystemModule, RdtGovSpinnerComponent], template: "<div class=\"gov-dialog__loading\">\n <rdt-gov-spinner\n [size]=\"'m'\"\n [messagePosition]=\"'below'\"\n [message]=\"message() ?? 'Loading...'\"\n ></rdt-gov-spinner>\n <div></div>\n</div>\n" }]
|
|
291
318
|
}] });
|
|
292
319
|
|
|
293
|
-
class RdtGovBaseDialog {
|
|
294
|
-
dialogRef = inject(RdtGovDialogRef);
|
|
295
|
-
constructor() {
|
|
296
|
-
this.ready();
|
|
297
|
-
}
|
|
298
|
-
ready() {
|
|
299
|
-
this.dialogRef.ready();
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
const RDT_BASE_DIALOG_PROVIDER = new InjectionToken('RDT_GOV_BASE_DIALOG_PROVIDER');
|
|
304
|
-
const RDT_ALERT_DIALOG_PROVIDER = new InjectionToken('RDT_GOV_ALERT_DIALOG_PROVIDER');
|
|
305
|
-
const RDT_CONFIRM_DIALOG_PROVIDER = new InjectionToken('RDT_GOV_CONFIRM_DIALOG_PROVIDER');
|
|
306
|
-
|
|
307
320
|
class RdtGovDialogComponent {
|
|
308
321
|
dialogRef = inject(RdtGovDialogRef);
|
|
309
|
-
|
|
310
|
-
dialogRefInjector = computed(() => Injector.create({
|
|
322
|
+
dialogRefInjector = Injector.create({
|
|
311
323
|
providers: [{ provide: RdtGovDialogRef, useValue: this.dialogRef }],
|
|
312
|
-
parent: this.dialogRef.
|
|
313
|
-
})
|
|
314
|
-
constructor() {
|
|
315
|
-
const config = this.dialogRef.config();
|
|
316
|
-
const pxBindings = {
|
|
317
|
-
minHeight: '--dialog-min-height',
|
|
318
|
-
minWidth: '--dialog-min-width',
|
|
319
|
-
maxHeight: '--dialog-max-height',
|
|
320
|
-
maxWidth: '--dialog-max-width',
|
|
321
|
-
};
|
|
322
|
-
Object.keys(pxBindings).forEach((prop) => {
|
|
323
|
-
if (this.isPxSize(prop)) {
|
|
324
|
-
const value = config[prop];
|
|
325
|
-
if (value) {
|
|
326
|
-
document.documentElement.style.setProperty(pxBindings[prop], value);
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
});
|
|
330
|
-
}
|
|
331
|
-
isPxSize(propname) {
|
|
332
|
-
const size = this.dialogRef.config()[propname];
|
|
333
|
-
return typeof size === 'string' && size.endsWith('px');
|
|
334
|
-
}
|
|
324
|
+
parent: this.dialogRef.injector,
|
|
325
|
+
});
|
|
335
326
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
336
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: RdtGovDialogComponent, isStandalone: true, selector: "rdt-gov-dialog", host: { properties: { "class.fullscreen-modal": "dialogRef.
|
|
327
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: RdtGovDialogComponent, isStandalone: true, selector: "rdt-gov-dialog", host: { properties: { "class.fullscreen-modal": "dialogRef.size === 'fullscreen'", "style.width": "dialogRef.size", "style.--dialog-min-height": "dialogRef.minHeight", "style.--dialog-max-height": "dialogRef.maxHeight", "style.--dialog-min-width": "dialogRef.minWidth", "style.--dialog-max-width": "dialogRef.maxWidth" } }, ngImport: i0, template: "<div\n class=\"gov-modal__dialog rdt-gov-dialog\"\n cdkDrag\n [cdkDragDisabled]=\"!dialogRef.isDraggable\"\n>\n <ng-container\n *ngComponentOutlet=\"dialogRef.component; injector: dialogRefInjector\"\n ></ng-container>\n</div>\n", styles: [":root{--dialog-min-height: 400px;--dialog-min-width: 400px;--dialog-max-height: 100%;--dialog-max-width: 100%}.fullscreen-modal{width:100vw;height:100vh}.fullscreen-modal .rdt-gov-dialog{padding:1.25rem;height:100%}.gov-dialog__content{flex:1;display:flex;flex-direction:column}.gov-modal__dialog>*{min-width:var(--dialog-min-width);min-height:var(--dialog-min-height);position:relative;display:flex;flex-direction:column;width:100%;height:100%;max-height:var(--dialog-max-height);max-width:var(--dialog-max-width);border-radius:var(--border-radius, var(--corner-radius-s));background:var(--background, var(--background-block-primary));overflow:hidden;pointer-events:auto;box-shadow:0 .5rem 2rem #0000004d}.gov-modal__dialog>* rdt-gov-dialog-content{flex:1;position:relative}.gov-dialog__header{margin-top:0;margin-bottom:0;display:flex;padding:var(--spacing-m) var(--spacing-l);line-height:var(--height-line-l);border-bottom:var(--border-width, .0625rem) solid var(--border-color, var(--border-subtlest));justify-content:space-between;align-items:center}.gov-dialog__header h2{font-size:var(--font-size-body-l);line-height:150%;font-weight:400}.gov-dialog__header-left{display:flex;gap:var(--spacing-m)}.gov-dialog__header-left .warning{color:var(--warning, var(--icon-warning))}.gov-dialog__header-left .error{color:var(--error, var(--icon-error))}.gov-dialog__header-left .success{color:var(--success, var(--icon-success))}.gov-dialog__header-left .neutral{color:var(--neutral, var(--icon-neutral))}.gov-dialog__header-left .primary{color:var(--primary, var(--icon-on-subtle))}.gov-dialog__header-left .secondary{color:var(--secondary, var(--icon-secondary))}rdt-gov-dialog-loading{min-height:calc(var(--dialog-min-height) - 210px);flex:1;display:grid;place-items:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
337
328
|
}
|
|
338
329
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovDialogComponent, decorators: [{
|
|
339
330
|
type: Component,
|
|
340
331
|
args: [{ selector: 'rdt-gov-dialog', standalone: true, imports: [CommonModule, CdkDrag], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
341
|
-
'[class.fullscreen-modal]': "dialogRef.
|
|
342
|
-
'[style.width]': '
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
this.dialogRef.close(true);
|
|
349
|
-
}
|
|
350
|
-
get alert() {
|
|
351
|
-
return this.dialogRef.inputData();
|
|
352
|
-
}
|
|
353
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovAlertDialog, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
354
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: RdtGovAlertDialog, isStandalone: true, selector: "rdt-gov-alert-dialog", usesInheritance: true, ngImport: i0, template: "<rdt-gov-dialog-header />\n<rdt-gov-dialog-content>\n <p>{{ alert.message }}</p>\n</rdt-gov-dialog-content>\n<rdt-gov-dialog-footer>\n <rdt-gov-button\n [appearance]=\"alert.okBtn?.appearance ?? 'solid'\"\n [label]=\"alert.okBtn?.text\"\n [size]=\"alert.okBtn?.size ?? 'm'\"\n [iconStart]=\"alert.okBtn?.iconStart\"\n [icon]=\"alert.okBtn?.icon\"\n [color]=\"alert.okBtn?.color ?? 'primary'\"\n [autofocus]=\"alert.okBtn?.isAutofocused ?? true\"\n (click)=\"proceed()\"\n ></rdt-gov-button>\n</rdt-gov-dialog-footer>\n", dependencies: [{ kind: "component", type: RdtGovDialogHeaderComponent, selector: "rdt-gov-dialog-header" }, { kind: "component", type: RdtGovDialogFooterComponent, selector: "rdt-gov-dialog-footer" }, { kind: "component", type: RdtGovDialogContentComponent, selector: "rdt-gov-dialog-content" }, { kind: "component", type: RdtGovButtonComponent, selector: "rdt-gov-button", inputs: ["appearance", "color", "size", "iconStart", "expanded"] }] });
|
|
355
|
-
}
|
|
356
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovAlertDialog, decorators: [{
|
|
357
|
-
type: Component,
|
|
358
|
-
args: [{ selector: 'rdt-gov-alert-dialog', imports: [
|
|
359
|
-
RdtGovDialogHeaderComponent,
|
|
360
|
-
RdtGovDialogFooterComponent,
|
|
361
|
-
RdtGovDialogContentComponent,
|
|
362
|
-
RdtGovButtonComponent,
|
|
363
|
-
], template: "<rdt-gov-dialog-header />\n<rdt-gov-dialog-content>\n <p>{{ alert.message }}</p>\n</rdt-gov-dialog-content>\n<rdt-gov-dialog-footer>\n <rdt-gov-button\n [appearance]=\"alert.okBtn?.appearance ?? 'solid'\"\n [label]=\"alert.okBtn?.text\"\n [size]=\"alert.okBtn?.size ?? 'm'\"\n [iconStart]=\"alert.okBtn?.iconStart\"\n [icon]=\"alert.okBtn?.icon\"\n [color]=\"alert.okBtn?.color ?? 'primary'\"\n [autofocus]=\"alert.okBtn?.isAutofocused ?? true\"\n (click)=\"proceed()\"\n ></rdt-gov-button>\n</rdt-gov-dialog-footer>\n" }]
|
|
332
|
+
'[class.fullscreen-modal]': "dialogRef.size === 'fullscreen'",
|
|
333
|
+
'[style.width]': 'dialogRef.size',
|
|
334
|
+
'[style.--dialog-min-height]': 'dialogRef.minHeight',
|
|
335
|
+
'[style.--dialog-max-height]': 'dialogRef.maxHeight',
|
|
336
|
+
'[style.--dialog-min-width]': 'dialogRef.minWidth',
|
|
337
|
+
'[style.--dialog-max-width]': 'dialogRef.maxWidth',
|
|
338
|
+
}, template: "<div\n class=\"gov-modal__dialog rdt-gov-dialog\"\n cdkDrag\n [cdkDragDisabled]=\"!dialogRef.isDraggable\"\n>\n <ng-container\n *ngComponentOutlet=\"dialogRef.component; injector: dialogRefInjector\"\n ></ng-container>\n</div>\n", styles: [":root{--dialog-min-height: 400px;--dialog-min-width: 400px;--dialog-max-height: 100%;--dialog-max-width: 100%}.fullscreen-modal{width:100vw;height:100vh}.fullscreen-modal .rdt-gov-dialog{padding:1.25rem;height:100%}.gov-dialog__content{flex:1;display:flex;flex-direction:column}.gov-modal__dialog>*{min-width:var(--dialog-min-width);min-height:var(--dialog-min-height);position:relative;display:flex;flex-direction:column;width:100%;height:100%;max-height:var(--dialog-max-height);max-width:var(--dialog-max-width);border-radius:var(--border-radius, var(--corner-radius-s));background:var(--background, var(--background-block-primary));overflow:hidden;pointer-events:auto;box-shadow:0 .5rem 2rem #0000004d}.gov-modal__dialog>* rdt-gov-dialog-content{flex:1;position:relative}.gov-dialog__header{margin-top:0;margin-bottom:0;display:flex;padding:var(--spacing-m) var(--spacing-l);line-height:var(--height-line-l);border-bottom:var(--border-width, .0625rem) solid var(--border-color, var(--border-subtlest));justify-content:space-between;align-items:center}.gov-dialog__header h2{font-size:var(--font-size-body-l);line-height:150%;font-weight:400}.gov-dialog__header-left{display:flex;gap:var(--spacing-m)}.gov-dialog__header-left .warning{color:var(--warning, var(--icon-warning))}.gov-dialog__header-left .error{color:var(--error, var(--icon-error))}.gov-dialog__header-left .success{color:var(--success, var(--icon-success))}.gov-dialog__header-left .neutral{color:var(--neutral, var(--icon-neutral))}.gov-dialog__header-left .primary{color:var(--primary, var(--icon-on-subtle))}.gov-dialog__header-left .secondary{color:var(--secondary, var(--icon-secondary))}rdt-gov-dialog-loading{min-height:calc(var(--dialog-min-height) - 210px);flex:1;display:grid;place-items:center}\n"] }]
|
|
364
339
|
}] });
|
|
365
340
|
|
|
366
|
-
class
|
|
367
|
-
|
|
368
|
-
|
|
341
|
+
class RdtGovDialogBase {
|
|
342
|
+
dialogRef = inject(RdtGovDialogRef);
|
|
343
|
+
constructor() {
|
|
344
|
+
this.ready();
|
|
369
345
|
}
|
|
370
|
-
|
|
371
|
-
this.dialogRef.
|
|
346
|
+
ready() {
|
|
347
|
+
this.dialogRef.ready();
|
|
372
348
|
}
|
|
373
|
-
|
|
374
|
-
|
|
349
|
+
close(data) {
|
|
350
|
+
this.dialogRef.close(data);
|
|
375
351
|
}
|
|
376
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovConfirmDialog, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
377
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: RdtGovConfirmDialog, isStandalone: true, selector: "rdt-gov-confirm-dialog", usesInheritance: true, ngImport: i0, template: "<rdt-gov-dialog-header />\n<rdt-gov-dialog-content>\n <p>{{ confirm.message }}</p>\n</rdt-gov-dialog-content>\n<rdt-gov-dialog-footer>\n <rdt-gov-button\n [appearance]=\"confirm.noBtn?.appearance ?? 'outlined'\"\n [label]=\"confirm.noBtn?.text\"\n [size]=\"confirm.noBtn?.size ?? 'm'\"\n [color]=\"confirm.noBtn?.color ?? 'primary'\"\n [icon]=\"confirm.noBtn?.icon\"\n [iconStart]=\"confirm.noBtn?.iconStart\"\n [autofocus]=\"\n confirm.noBtn?.isAutofocused ?? confirm.yesBtn?.isAutofocused\n ? false\n : true\n \"\n (click)=\"abort()\"\n ></rdt-gov-button>\n <rdt-gov-button\n [appearance]=\"confirm.yesBtn?.appearance ?? 'solid'\"\n [label]=\"confirm.yesBtn?.text\"\n [size]=\"confirm.yesBtn?.size ?? 'm'\"\n [icon]=\"confirm.yesBtn?.icon\"\n [iconStart]=\"confirm.yesBtn?.iconStart\"\n [color]=\"confirm.yesBtn?.color ?? 'primary'\"\n [autofocus]=\"confirm.yesBtn?.isAutofocused ?? false\"\n (click)=\"proceed()\"\n ></rdt-gov-button>\n</rdt-gov-dialog-footer>\n", dependencies: [{ kind: "component", type: RdtGovDialogHeaderComponent, selector: "rdt-gov-dialog-header" }, { kind: "component", type: RdtGovDialogFooterComponent, selector: "rdt-gov-dialog-footer" }, { kind: "component", type: RdtGovDialogContentComponent, selector: "rdt-gov-dialog-content" }, { kind: "component", type: RdtGovButtonComponent, selector: "rdt-gov-button", inputs: ["appearance", "color", "size", "iconStart", "expanded"] }] });
|
|
378
352
|
}
|
|
379
|
-
|
|
353
|
+
|
|
354
|
+
class RdtGovStandardDialogComponent extends RdtGovDialogBase {
|
|
355
|
+
message = computed(() => this.dialogRef.inputData().message);
|
|
356
|
+
buttons = computed(() => this.dialogRef.inputData().buttons);
|
|
357
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovStandardDialogComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
358
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: RdtGovStandardDialogComponent, isStandalone: true, selector: "rdt-gov-standard-dialog", usesInheritance: true, ngImport: i0, template: "<rdt-gov-dialog-header />\n<rdt-gov-dialog-content>\n <p>{{ message() }}</p>\n</rdt-gov-dialog-content>\n<rdt-gov-dialog-footer>\n @for (button of buttons(); track button.label) {\n <rdt-gov-button\n [appearance]=\"button.appearance\"\n [label]=\"button.label\"\n [size]=\"button.size\"\n [color]=\"button.color\"\n [icon]=\"button.icon\"\n [iconStart]=\"button.iconStart\"\n [autofocus]=\"button.isAutofocused\"\n (click)=\"close(button.value)\"\n />\n }\n</rdt-gov-dialog-footer>\n", dependencies: [{ kind: "component", type: RdtGovDialogHeaderComponent, selector: "rdt-gov-dialog-header" }, { kind: "component", type: RdtGovDialogFooterComponent, selector: "rdt-gov-dialog-footer" }, { kind: "component", type: RdtGovDialogContentComponent, selector: "rdt-gov-dialog-content" }, { kind: "component", type: RdtGovButtonComponent, selector: "rdt-gov-button", inputs: ["appearance", "color", "size", "iconStart", "expanded"] }] });
|
|
359
|
+
}
|
|
360
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovStandardDialogComponent, decorators: [{
|
|
380
361
|
type: Component,
|
|
381
|
-
args: [{ selector: 'rdt-gov-
|
|
362
|
+
args: [{ selector: 'rdt-gov-standard-dialog', imports: [
|
|
382
363
|
RdtGovDialogHeaderComponent,
|
|
383
364
|
RdtGovDialogFooterComponent,
|
|
384
365
|
RdtGovDialogContentComponent,
|
|
385
366
|
RdtGovButtonComponent,
|
|
386
|
-
], template: "<rdt-gov-dialog-header />\n<rdt-gov-dialog-content>\n <p>{{
|
|
367
|
+
], template: "<rdt-gov-dialog-header />\n<rdt-gov-dialog-content>\n <p>{{ message() }}</p>\n</rdt-gov-dialog-content>\n<rdt-gov-dialog-footer>\n @for (button of buttons(); track button.label) {\n <rdt-gov-button\n [appearance]=\"button.appearance\"\n [label]=\"button.label\"\n [size]=\"button.size\"\n [color]=\"button.color\"\n [icon]=\"button.icon\"\n [iconStart]=\"button.iconStart\"\n [autofocus]=\"button.isAutofocused\"\n (click)=\"close(button.value)\"\n />\n }\n</rdt-gov-dialog-footer>\n" }]
|
|
387
368
|
}] });
|
|
388
369
|
|
|
370
|
+
const RDT_GOV_BASE_DIALOG_CONFIG_PROVIDER = new InjectionToken('RDT_GOV_BASE_DIALOG_CONFIG_PROVIDER');
|
|
371
|
+
const RDT_GOV_ALERT_DIALOG_CONFIG_PROVIDER = new InjectionToken('RDT_GOV_ALERT_DIALOG_CONFIG_PROVIDER');
|
|
372
|
+
const RDT_GOV_CONFIRM_DIALOG_CONFIG_PROVIDER = new InjectionToken('RDT_GOV_CONFIRM_DIALOG_CONFIG_PROVIDER');
|
|
373
|
+
|
|
374
|
+
const RDT_GOV_DIALOG_DEFAULT_DATA = {
|
|
375
|
+
size: 'content',
|
|
376
|
+
initialLoading: false,
|
|
377
|
+
hasBackdrop: true,
|
|
378
|
+
isDraggable: false,
|
|
379
|
+
isResizable: false,
|
|
380
|
+
minWidth: undefined,
|
|
381
|
+
maxWidth: undefined,
|
|
382
|
+
minHeight: undefined,
|
|
383
|
+
maxHeight: undefined,
|
|
384
|
+
header: undefined,
|
|
385
|
+
headerIcons: undefined,
|
|
386
|
+
injector: undefined,
|
|
387
|
+
inputData: undefined,
|
|
388
|
+
};
|
|
389
|
+
|
|
390
|
+
const RDT_GOV_DIALOG_DEFAULT_BUTTON = {
|
|
391
|
+
icon: undefined,
|
|
392
|
+
iconStart: undefined,
|
|
393
|
+
size: 's',
|
|
394
|
+
color: 'primary',
|
|
395
|
+
appearance: 'outlined',
|
|
396
|
+
isAutofocused: false,
|
|
397
|
+
value: undefined,
|
|
398
|
+
};
|
|
399
|
+
const RDT_GOV_DIALOG_OK_BUTTON = {
|
|
400
|
+
...RDT_GOV_DIALOG_DEFAULT_BUTTON,
|
|
401
|
+
appearance: 'solid',
|
|
402
|
+
isAutofocused: true,
|
|
403
|
+
value: undefined,
|
|
404
|
+
};
|
|
405
|
+
const RDT_GOV_DIALOG_YES_BUTTON = {
|
|
406
|
+
...RDT_GOV_DIALOG_DEFAULT_BUTTON,
|
|
407
|
+
appearance: 'solid',
|
|
408
|
+
isAutofocused: true,
|
|
409
|
+
value: true,
|
|
410
|
+
};
|
|
411
|
+
const RDT_GOV_DIALOG_NO_BUTTON = {
|
|
412
|
+
...RDT_GOV_DIALOG_DEFAULT_BUTTON,
|
|
413
|
+
value: false,
|
|
414
|
+
};
|
|
415
|
+
|
|
389
416
|
class RdtGovDialogService {
|
|
390
417
|
overlay = inject(Overlay);
|
|
391
|
-
|
|
418
|
+
t = inject(RdtTranslateService);
|
|
419
|
+
confirmDefaults = inject(RDT_GOV_CONFIRM_DIALOG_CONFIG_PROVIDER, {
|
|
392
420
|
optional: true,
|
|
393
421
|
});
|
|
394
|
-
alertDefaults = inject(
|
|
422
|
+
alertDefaults = inject(RDT_GOV_ALERT_DIALOG_CONFIG_PROVIDER, {
|
|
395
423
|
optional: true,
|
|
396
424
|
});
|
|
397
|
-
baseDefaults = inject(
|
|
425
|
+
baseDefaults = inject(RDT_GOV_BASE_DIALOG_CONFIG_PROVIDER, {
|
|
398
426
|
optional: true,
|
|
399
427
|
});
|
|
400
428
|
open(config) {
|
|
401
|
-
const
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
console.log(config, mergedConfig);
|
|
406
|
-
const overlayRef = this.overlay.create(this.getOverlayConfig(mergedConfig));
|
|
407
|
-
const dialogRef = new RdtGovDialogRef(mergedConfig);
|
|
408
|
-
dialogRef.header.set(mergedConfig.header ?? null);
|
|
409
|
-
dialogRef.headerIcons.set(mergedConfig.headerIcons ?? null);
|
|
410
|
-
dialogRef.hasBackdrop.set(mergedConfig.hasBackdrop ?? true);
|
|
411
|
-
dialogRef.isDraggable.set(mergedConfig.isDraggable ?? true);
|
|
412
|
-
dialogRef.isResizable.set(mergedConfig.isResizable ?? true);
|
|
413
|
-
dialogRef.inputData.set(mergedConfig.inputData);
|
|
414
|
-
const portal = new ComponentPortal(RdtGovDialogComponent, null, Injector.create({
|
|
415
|
-
providers: [{ provide: RdtGovDialogRef, useValue: dialogRef }],
|
|
416
|
-
parent: mergedConfig.injector,
|
|
417
|
-
}));
|
|
429
|
+
const dialogData = this.getDialogData(config);
|
|
430
|
+
const dialogRef = new RdtGovDialogRef(dialogData);
|
|
431
|
+
const overlayRef = this.createOverlayRef(dialogRef);
|
|
432
|
+
const portal = this.createComponentPortal(dialogRef);
|
|
418
433
|
overlayRef.attach(portal);
|
|
419
|
-
|
|
420
|
-
dialogRef.isLoading.set(mergedConfig.initialLoading);
|
|
421
|
-
}
|
|
422
|
-
dialogRef.open$.pipe(take(1)).subscribe(() => {
|
|
423
|
-
dialogRef.isLoading.set(false);
|
|
424
|
-
});
|
|
425
|
-
dialogRef.close$.subscribe(() => {
|
|
426
|
-
overlayRef.dispose();
|
|
427
|
-
});
|
|
434
|
+
dialogRef.close$.subscribe(() => overlayRef.dispose());
|
|
428
435
|
return dialogRef;
|
|
429
436
|
}
|
|
437
|
+
openStandard(config) {
|
|
438
|
+
const dialogConfig = this.getDialogDataFromStandardConfig(config);
|
|
439
|
+
return this.open(dialogConfig);
|
|
440
|
+
}
|
|
430
441
|
alert(config) {
|
|
431
|
-
const
|
|
442
|
+
const defaultLabel = this.t.instant('RDT_OK');
|
|
443
|
+
const okBtn = {
|
|
444
|
+
...RDT_GOV_DIALOG_OK_BUTTON,
|
|
445
|
+
label: defaultLabel,
|
|
446
|
+
...this.alertDefaults?.okBtn,
|
|
447
|
+
...config.okBtn,
|
|
448
|
+
};
|
|
449
|
+
if (!okBtn.label) {
|
|
450
|
+
okBtn.label = defaultLabel;
|
|
451
|
+
}
|
|
452
|
+
const alertConfig = {
|
|
432
453
|
...this.alertDefaults,
|
|
433
454
|
...config,
|
|
455
|
+
buttons: [okBtn],
|
|
434
456
|
};
|
|
435
|
-
|
|
436
|
-
component: RdtGovAlertDialog,
|
|
437
|
-
header: mergedConfig.header,
|
|
438
|
-
headerIcons: mergedConfig.headerIcons,
|
|
439
|
-
inputData: mergedConfig,
|
|
440
|
-
minHeight: mergedConfig.minHeight,
|
|
441
|
-
maxHeight: mergedConfig.maxHeight,
|
|
442
|
-
maxWidth: mergedConfig.maxWidth,
|
|
443
|
-
minWidth: mergedConfig.minWidth,
|
|
444
|
-
};
|
|
445
|
-
if (dialogConfig.inputData && !dialogConfig.inputData.okBtn) {
|
|
446
|
-
dialogConfig.inputData.okBtn = {
|
|
447
|
-
text: 'OK',
|
|
448
|
-
};
|
|
449
|
-
}
|
|
450
|
-
return this.open(this.parseInternalConfig(dialogConfig));
|
|
457
|
+
return this.openStandard(alertConfig);
|
|
451
458
|
}
|
|
452
459
|
confirm(config) {
|
|
453
|
-
const
|
|
454
|
-
|
|
455
|
-
|
|
460
|
+
const defaultYesLabel = this.t.instant('RDT_YES');
|
|
461
|
+
const defaultNoLabel = this.t.instant('RDT_NO');
|
|
462
|
+
const yesBtn = {
|
|
463
|
+
...RDT_GOV_DIALOG_YES_BUTTON,
|
|
464
|
+
label: defaultYesLabel,
|
|
465
|
+
...this.confirmDefaults?.yesBtn,
|
|
466
|
+
...config.yesBtn,
|
|
456
467
|
};
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
minWidth: mergedConfig.minWidth,
|
|
468
|
+
if (!yesBtn.label) {
|
|
469
|
+
yesBtn.label = defaultYesLabel;
|
|
470
|
+
}
|
|
471
|
+
const noBtn = {
|
|
472
|
+
...RDT_GOV_DIALOG_NO_BUTTON,
|
|
473
|
+
label: defaultNoLabel,
|
|
474
|
+
...this.confirmDefaults?.noBtn,
|
|
475
|
+
...config.noBtn,
|
|
466
476
|
};
|
|
467
|
-
if (
|
|
468
|
-
|
|
469
|
-
text: 'Ano',
|
|
470
|
-
};
|
|
477
|
+
if (!noBtn.label) {
|
|
478
|
+
noBtn.label = defaultNoLabel;
|
|
471
479
|
}
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
480
|
+
const confirmConfig = {
|
|
481
|
+
...this.confirmDefaults,
|
|
482
|
+
...config,
|
|
483
|
+
buttons: [yesBtn, noBtn],
|
|
484
|
+
};
|
|
485
|
+
return this.openStandard(confirmConfig);
|
|
486
|
+
}
|
|
487
|
+
simpleAlert(config) {
|
|
488
|
+
return this.alert({
|
|
489
|
+
header: config.header,
|
|
490
|
+
message: config.message,
|
|
491
|
+
okBtn: {
|
|
492
|
+
label: config.okButtonLabel,
|
|
493
|
+
},
|
|
494
|
+
}).close$;
|
|
495
|
+
}
|
|
496
|
+
simpleConfirm(config) {
|
|
497
|
+
return this.confirm({
|
|
498
|
+
header: config.header,
|
|
499
|
+
message: config.message,
|
|
500
|
+
yesBtn: {
|
|
501
|
+
label: config.yesButtonLabel,
|
|
502
|
+
},
|
|
503
|
+
noBtn: {
|
|
504
|
+
label: config.noButtonLabel,
|
|
505
|
+
},
|
|
506
|
+
}).close$.pipe(map(Boolean));
|
|
507
|
+
}
|
|
508
|
+
getButtons(buttons, defaultButton = RDT_GOV_DIALOG_DEFAULT_BUTTON) {
|
|
509
|
+
const mapped = buttons?.map((btn) => ({ ...defaultButton, ...btn })) ?? [];
|
|
510
|
+
for (let autofocusExists = false, i = 0; i < mapped.length; i++) {
|
|
511
|
+
if (mapped[i].isAutofocused) {
|
|
512
|
+
if (!autofocusExists) {
|
|
513
|
+
autofocusExists = true;
|
|
514
|
+
}
|
|
515
|
+
else {
|
|
516
|
+
mapped[i].isAutofocused = false;
|
|
517
|
+
}
|
|
518
|
+
}
|
|
476
519
|
}
|
|
477
|
-
return
|
|
520
|
+
return mapped;
|
|
478
521
|
}
|
|
479
|
-
|
|
480
|
-
|
|
522
|
+
getDialogDataFromStandardConfig(config) {
|
|
523
|
+
return {
|
|
524
|
+
...RDT_GOV_DIALOG_DEFAULT_DATA,
|
|
525
|
+
...this.baseDefaults,
|
|
481
526
|
...config,
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
527
|
+
component: RdtGovStandardDialogComponent,
|
|
528
|
+
inputData: {
|
|
529
|
+
message: config.message,
|
|
530
|
+
buttons: this.getButtons(config.buttons, RDT_GOV_DIALOG_DEFAULT_BUTTON),
|
|
531
|
+
},
|
|
485
532
|
};
|
|
486
|
-
return filled;
|
|
487
533
|
}
|
|
488
|
-
|
|
534
|
+
getDialogData(cfg) {
|
|
489
535
|
return {
|
|
490
|
-
|
|
536
|
+
...RDT_GOV_DIALOG_DEFAULT_DATA,
|
|
537
|
+
...this.baseDefaults,
|
|
538
|
+
...cfg,
|
|
539
|
+
};
|
|
540
|
+
}
|
|
541
|
+
createComponentPortal(dialogRef) {
|
|
542
|
+
const injector = Injector.create({
|
|
543
|
+
providers: [{ provide: RdtGovDialogRef, useValue: dialogRef }],
|
|
544
|
+
parent: dialogRef.injector,
|
|
545
|
+
});
|
|
546
|
+
return new ComponentPortal(RdtGovDialogComponent, null, injector);
|
|
547
|
+
}
|
|
548
|
+
createOverlayRef(config) {
|
|
549
|
+
const overlayConfig = {
|
|
550
|
+
hasBackdrop: config.hasBackdrop,
|
|
491
551
|
backdropClass: 'cdk-overlay-dark-backdrop',
|
|
492
552
|
positionStrategy: this.overlay
|
|
493
553
|
.position()
|
|
@@ -497,6 +557,7 @@ class RdtGovDialogService {
|
|
|
497
557
|
scrollStrategy: this.overlay.scrollStrategies.block(),
|
|
498
558
|
disposeOnNavigation: true,
|
|
499
559
|
};
|
|
560
|
+
return this.overlay.create(overlayConfig);
|
|
500
561
|
}
|
|
501
562
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
502
563
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovDialogService, providedIn: 'root' });
|
|
@@ -507,82 +568,111 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
507
568
|
}] });
|
|
508
569
|
|
|
509
570
|
class RdtGovIconComponent extends RdtIconComponent {
|
|
510
|
-
|
|
571
|
+
size = input('s');
|
|
572
|
+
color = input();
|
|
573
|
+
parsed = computed(() => {
|
|
511
574
|
const value = this.name() || '';
|
|
512
575
|
const [type, name] = value.split('/');
|
|
513
576
|
return { type: type || '', name: name || '' };
|
|
514
577
|
});
|
|
578
|
+
isBootstrapIcon = computed(() => {
|
|
579
|
+
return this.parsed().type === 'bs';
|
|
580
|
+
});
|
|
515
581
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovIconComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
516
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: RdtGovIconComponent, isStandalone: true, selector: "rdt-gov-icon", usesInheritance: true, ngImport: i0, template: "@let p =
|
|
582
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: RdtGovIconComponent, isStandalone: true, selector: "rdt-gov-icon", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.size": "size()" }, classAttribute: "gov-icon" }, usesInheritance: true, ngImport: i0, template: "@let p = parsed(); @if (isBootstrapIcon()) {\n<i\n class=\"bi bi-{{ p.name }} gov-icon\"\n [attr.size]=\"size()\"\n [attr.color]=\"color()\"\n></i>\n} @else {\n<gov-icon\n [type]=\"p.type\"\n [name]=\"p.name\"\n [size]=\"size()\"\n [color]=\"color()\"\n></gov-icon>\n}\n", styles: [":host{vertical-align:middle}gov-icon{color:var(--icon-color, currentColor)}i.bi:before{vertical-align:.125em;font-size:var(--icon-size, 1rem);color:var(--icon-color, currentColor)}i.bi[size=xs]:before{font-size:var(--icon-size, var(--icon-size-xs))}i.bi[size=s]:before{font-size:var(--icon-size, var(--icon-size-s))}i.bi[size=m]:before{font-size:var(--icon-size, var(--icon-size-m))}i.bi[size=l]:before{font-size:var(--icon-size, var(--icon-size-l))}i.bi[size=xl]:before{font-size:var(--icon-size, var(--icon-size-xl))}i.bi[color=primary]:before{color:var(--primary, var(--icon-on-subtle))}i.bi[color=secondary]:before{color:var(--secondary, var(--icon-secondary))}i.bi[color=success]:before{color:var(--success, var(--icon-success))}i.bi[color=warning]:before{color:var(--warning, var(--icon-warning))}i.bi[color=error]:before{color:var(--error, var(--icon-error))}\n"], dependencies: [{ kind: "ngmodule", type: GovDesignSystemModule }, { kind: "component", type: i1.GovIcon, selector: "gov-icon", inputs: ["color", "name", "size", "type"] }, { kind: "ngmodule", type: CommonModule }] });
|
|
517
583
|
}
|
|
518
584
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovIconComponent, decorators: [{
|
|
519
585
|
type: Component,
|
|
520
|
-
args: [{ selector: 'rdt-gov-icon', imports: [GovDesignSystemModule, CommonModule],
|
|
586
|
+
args: [{ selector: 'rdt-gov-icon', imports: [GovDesignSystemModule, CommonModule], host: {
|
|
587
|
+
class: 'gov-icon',
|
|
588
|
+
'[attr.size]': 'size()',
|
|
589
|
+
}, template: "@let p = parsed(); @if (isBootstrapIcon()) {\n<i\n class=\"bi bi-{{ p.name }} gov-icon\"\n [attr.size]=\"size()\"\n [attr.color]=\"color()\"\n></i>\n} @else {\n<gov-icon\n [type]=\"p.type\"\n [name]=\"p.name\"\n [size]=\"size()\"\n [color]=\"color()\"\n></gov-icon>\n}\n", styles: [":host{vertical-align:middle}gov-icon{color:var(--icon-color, currentColor)}i.bi:before{vertical-align:.125em;font-size:var(--icon-size, 1rem);color:var(--icon-color, currentColor)}i.bi[size=xs]:before{font-size:var(--icon-size, var(--icon-size-xs))}i.bi[size=s]:before{font-size:var(--icon-size, var(--icon-size-s))}i.bi[size=m]:before{font-size:var(--icon-size, var(--icon-size-m))}i.bi[size=l]:before{font-size:var(--icon-size, var(--icon-size-l))}i.bi[size=xl]:before{font-size:var(--icon-size, var(--icon-size-xl))}i.bi[color=primary]:before{color:var(--primary, var(--icon-on-subtle))}i.bi[color=secondary]:before{color:var(--secondary, var(--icon-secondary))}i.bi[color=success]:before{color:var(--success, var(--icon-success))}i.bi[color=warning]:before{color:var(--warning, var(--icon-warning))}i.bi[color=error]:before{color:var(--error, var(--icon-error))}\n"] }]
|
|
521
590
|
}] });
|
|
522
591
|
|
|
523
|
-
const
|
|
524
|
-
|
|
592
|
+
const RDT_GOV_NOTIFICATION_DEFAULT_CONFIG = {
|
|
593
|
+
duration: 3000,
|
|
594
|
+
positionVert: 'top',
|
|
595
|
+
positionHoriz: 'right',
|
|
596
|
+
type: 'bold',
|
|
597
|
+
closeLabel: undefined,
|
|
598
|
+
};
|
|
599
|
+
|
|
600
|
+
/**
|
|
601
|
+
* Injection token for the default configuration of notifications.
|
|
602
|
+
*/
|
|
603
|
+
const RDT_GOV_NOTIFICATION_CONFIG_PROVIDER = new InjectionToken('RDT_GOV_NOTIFICATION_CONFIG_PROVIDER');
|
|
604
|
+
|
|
605
|
+
/**
|
|
606
|
+
* Injection token for the data of the notification component.
|
|
607
|
+
* Private
|
|
608
|
+
*/
|
|
609
|
+
const RDT_GOV_NOTIFICATION_DATA_PROVIDER = new InjectionToken('RDT_GOV_NOTIFICATION_DATA_PROVIDER');
|
|
525
610
|
|
|
611
|
+
/**
|
|
612
|
+
* Component rendering individual notification.
|
|
613
|
+
*/
|
|
526
614
|
class RdtGovNotificationPopupComponent {
|
|
527
|
-
|
|
615
|
+
data = inject(RDT_GOV_NOTIFICATION_DATA_PROVIDER);
|
|
528
616
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovNotificationPopupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
529
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: RdtGovNotificationPopupComponent, isStandalone: true, selector: "rdt-gov-notification-popup", ngImport: i0, template: "@
|
|
617
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: RdtGovNotificationPopupComponent, isStandalone: true, selector: "rdt-gov-notification-popup", ngImport: i0, template: "@if(data){\n<gov-toast\n [color]=\"data.color\"\n [gravity]=\"data.positionVert\"\n [position]=\"data.positionHoriz\"\n [type]=\"data.type\"\n [closeLabel]=\"data.closeLabel\"\n ><div class=\"toast-wrapper\">\n @if (data.icon) {\n <span class=\"toast-icon\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: data.icon }\"></ng-container>\n </span>\n }\n <span>{{ data.message }}</span>\n </div>\n</gov-toast>\n}\n", styles: [".toast-wrapper{display:flex;gap:var(--spacing-s-nudge)}\n"], dependencies: [{ kind: "ngmodule", type: GovDesignSystemModule }, { kind: "component", type: i1.GovToast, selector: "gov-toast", inputs: ["accessibleCloseLabel", "closeLabel", "color", "gravity", "position", "time", "type"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: RdtIconOutletDirective, selector: "[rdtIconOutlet]", exportAs: ["rdtIconOutlet"] }] });
|
|
530
618
|
}
|
|
531
619
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovNotificationPopupComponent, decorators: [{
|
|
532
620
|
type: Component,
|
|
533
|
-
args: [{ selector: 'rdt-gov-notification-popup', imports: [GovDesignSystemModule, CommonModule, RdtIconOutletDirective], template: "@
|
|
621
|
+
args: [{ selector: 'rdt-gov-notification-popup', imports: [GovDesignSystemModule, CommonModule, RdtIconOutletDirective], template: "@if(data){\n<gov-toast\n [color]=\"data.color\"\n [gravity]=\"data.positionVert\"\n [position]=\"data.positionHoriz\"\n [type]=\"data.type\"\n [closeLabel]=\"data.closeLabel\"\n ><div class=\"toast-wrapper\">\n @if (data.icon) {\n <span class=\"toast-icon\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: data.icon }\"></ng-container>\n </span>\n }\n <span>{{ data.message }}</span>\n </div>\n</gov-toast>\n}\n", styles: [".toast-wrapper{display:flex;gap:var(--spacing-s-nudge)}\n"] }]
|
|
534
622
|
}] });
|
|
535
623
|
|
|
536
624
|
class RdtGovNotificationService {
|
|
537
625
|
overlay = inject(Overlay);
|
|
538
626
|
injector = inject(Injector);
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
this.
|
|
549
|
-
}
|
|
550
|
-
|
|
551
|
-
this.
|
|
552
|
-
}
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
}
|
|
627
|
+
t = inject(RdtTranslateService);
|
|
628
|
+
config = inject(RDT_GOV_NOTIFICATION_CONFIG_PROVIDER, {
|
|
629
|
+
optional: true,
|
|
630
|
+
});
|
|
631
|
+
show(partialConfig) {
|
|
632
|
+
const cfg = this.mergeConfig(partialConfig);
|
|
633
|
+
const overlayRef = this.createOverlayRef();
|
|
634
|
+
const portal = this.createPortal(cfg);
|
|
635
|
+
overlayRef.attach(portal);
|
|
636
|
+
setTimeout(() => this.close(overlayRef), cfg.duration);
|
|
637
|
+
}
|
|
638
|
+
success(message = this.t.instant('RDT_GOV_NOTIFY_SUCCESS')) {
|
|
639
|
+
this.show({ color: 'success', message });
|
|
640
|
+
}
|
|
641
|
+
warn(message = this.t.instant('RDT_GOV_NOTIFY_WARNING')) {
|
|
642
|
+
this.show({ color: 'warning', message });
|
|
643
|
+
}
|
|
644
|
+
error(message = this.t.instant('RDT_GOV_NOTIFY_ERROR')) {
|
|
645
|
+
this.show({ color: 'error', message });
|
|
646
|
+
}
|
|
647
|
+
mergeConfig(cfg) {
|
|
648
|
+
return {
|
|
649
|
+
...RDT_GOV_NOTIFICATION_DEFAULT_CONFIG,
|
|
650
|
+
...this.config,
|
|
651
|
+
...cfg,
|
|
652
|
+
};
|
|
653
|
+
}
|
|
654
|
+
createPortal(cfg) {
|
|
655
|
+
const popupInjector = this.getDataInjector(cfg);
|
|
656
|
+
return new ComponentPortal(RdtGovNotificationPopupComponent, null, popupInjector);
|
|
565
657
|
}
|
|
566
|
-
|
|
567
|
-
|
|
658
|
+
createOverlayRef() {
|
|
659
|
+
const positionStrat = this.overlay.position().global();
|
|
568
660
|
const overlayRef = this.overlay.create({
|
|
569
661
|
positionStrategy: positionStrat,
|
|
570
662
|
hasBackdrop: false,
|
|
571
663
|
});
|
|
572
|
-
|
|
664
|
+
return overlayRef;
|
|
665
|
+
}
|
|
666
|
+
getDataInjector(cfg) {
|
|
667
|
+
return Injector.create({
|
|
573
668
|
providers: [
|
|
574
669
|
{
|
|
575
|
-
provide:
|
|
670
|
+
provide: RDT_GOV_NOTIFICATION_DATA_PROVIDER,
|
|
576
671
|
useValue: cfg,
|
|
577
672
|
},
|
|
578
673
|
],
|
|
579
674
|
parent: this.injector,
|
|
580
675
|
});
|
|
581
|
-
const portal = new ComponentPortal(RdtGovNotificationPopupComponent, null, popupInjector);
|
|
582
|
-
overlayRef.attach(portal);
|
|
583
|
-
setTimeout(() => {
|
|
584
|
-
this.close(overlayRef);
|
|
585
|
-
}, cfg.duration);
|
|
586
676
|
}
|
|
587
677
|
close(overlayRef) {
|
|
588
678
|
overlayRef?.dispose();
|
|
@@ -595,382 +685,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
595
685
|
args: [{ providedIn: 'root' }]
|
|
596
686
|
}] });
|
|
597
687
|
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
{
|
|
602
|
-
provide: RDT_ICON_BASE_PROVIDER,
|
|
603
|
-
useValue: RdtGovIconComponent,
|
|
604
|
-
},
|
|
605
|
-
{
|
|
606
|
-
provide: RDT_CHECKBOX_BASE_PROVIDER,
|
|
607
|
-
useValue: RdtGovCheckboxComponent,
|
|
608
|
-
},
|
|
609
|
-
{
|
|
610
|
-
provide: RDT_BUTTON_BASE_PROVIDER,
|
|
611
|
-
useValue: RdtGovButtonComponent,
|
|
612
|
-
},
|
|
613
|
-
{
|
|
614
|
-
provide: RDT_ICON_REGISTRY_PROVIDER,
|
|
615
|
-
useValue: {
|
|
616
|
-
[RdtIcon.MenuArrowRight]: 'components/chevron-right',
|
|
617
|
-
[RdtIcon.MenuArrowDown]: 'components/chevron-down',
|
|
618
|
-
[RdtIcon.SkipDoubleLeft]: 'components/chevron-double-left',
|
|
619
|
-
[RdtIcon.SkipDoubleRight]: 'components/chevron-double-right',
|
|
620
|
-
[RdtIcon.SkipLeft]: 'components/chevron-left',
|
|
621
|
-
[RdtIcon.SkipRight]: 'components/chevron-right',
|
|
622
|
-
[RdtIcon.SortAsc]: 'sort-down',
|
|
623
|
-
[RdtIcon.SortDesc]: 'sort-up',
|
|
624
|
-
[RdtIcon.SortEnabled]: 'filter',
|
|
625
|
-
},
|
|
626
|
-
},
|
|
627
|
-
{
|
|
628
|
-
provide: RDT_BASE_NOTIFICATION_PROVIDER,
|
|
629
|
-
useValue: {
|
|
630
|
-
duration: 3000,
|
|
631
|
-
positionVert: 'top',
|
|
632
|
-
positionHoriz: 'right',
|
|
633
|
-
successMsg: 'RDT_GOV_NOTIFY_SUCCESS',
|
|
634
|
-
warningMsg: 'RDT_GOV_NOTIFY_WARNING',
|
|
635
|
-
errorMsg: 'RDT_GOV_NOTIFY_ERROR',
|
|
636
|
-
},
|
|
637
|
-
},
|
|
638
|
-
{
|
|
639
|
-
provide: RDT_ALERT_DIALOG_PROVIDER,
|
|
640
|
-
useValue: {
|
|
641
|
-
minHeight: '250px',
|
|
642
|
-
},
|
|
643
|
-
},
|
|
644
|
-
{
|
|
645
|
-
provide: RDT_CONFIRM_DIALOG_PROVIDER,
|
|
646
|
-
useValue: {
|
|
647
|
-
minHeight: '250px',
|
|
648
|
-
},
|
|
649
|
-
},
|
|
650
|
-
{
|
|
651
|
-
provide: RDT_BASE_DIALOG_PROVIDER,
|
|
652
|
-
useValue: {
|
|
653
|
-
isDraggable: false,
|
|
654
|
-
minHeight: '400px',
|
|
655
|
-
},
|
|
656
|
-
},
|
|
657
|
-
{
|
|
658
|
-
provide: RDT_SPINNER_BASE_PROVIDER,
|
|
659
|
-
useValue: RdtGovSpinnerComponent,
|
|
660
|
-
},
|
|
661
|
-
{ provide: MAT_DATE_LOCALE, useValue: 'cs-CZ' },
|
|
662
|
-
{ provide: LOCALE_ID, useValue: 'cs-CZ' },
|
|
663
|
-
{ provide: MatDatepickerIntl, useClass: RdtDatepickerIntl },
|
|
664
|
-
provideDateFnsAdapter(),
|
|
665
|
-
];
|
|
666
|
-
}
|
|
667
|
-
|
|
668
|
-
function initRdtGov(config = {}) {
|
|
669
|
-
const defaultConfig = {
|
|
670
|
-
iconsPath: 'icons',
|
|
671
|
-
};
|
|
672
|
-
window.GOV_DS_CONFIG = { ...defaultConfig, ...config };
|
|
673
|
-
defineCustomElements(window);
|
|
674
|
-
}
|
|
675
|
-
|
|
676
|
-
class RdtGovDateComponent extends RdtDateComponent {
|
|
677
|
-
translateService = inject(RdtTranslateService);
|
|
678
|
-
dateAdapter = inject(DateAdapter);
|
|
679
|
-
dateInput = viewChild('dateInput');
|
|
680
|
-
timeInput = viewChild('timeInput');
|
|
688
|
+
class RdtGovNumberInputComponent extends RdtNumericInputComponent {
|
|
689
|
+
renderer = inject(Renderer2);
|
|
690
|
+
govInput = viewChild('govInput');
|
|
681
691
|
size = input('s');
|
|
692
|
+
icon = input(null);
|
|
693
|
+
iconStart = input(null);
|
|
682
694
|
labelPositionInput = input('top', {
|
|
683
695
|
alias: 'labelPosition',
|
|
684
696
|
});
|
|
685
697
|
labelPosition = linkedSignal(() => this.labelPositionInput());
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
alias: 'step',
|
|
689
|
-
transform: numberAttribute,
|
|
690
|
-
});
|
|
691
|
-
step = linkedSignal(() => {
|
|
692
|
-
return this.stepInput() ?? (this.showSeconds() ? 1 : undefined);
|
|
693
|
-
});
|
|
694
|
-
dateInputFocused = false;
|
|
695
|
-
// Current value of physical date input field
|
|
696
|
-
dateInputValue = signal(null);
|
|
697
|
-
// Current value of physical time input field
|
|
698
|
-
timeInputValue = signal('');
|
|
699
|
-
internalTimeFormat = computed(() => this.showSeconds() ? 'HH:mm:ss' : 'HH:mm');
|
|
700
|
-
defaultTime = computed(() => this.showSeconds() ? '00:00:00' : '00:00');
|
|
701
|
-
localeUsed = computed(() => this.translateService.currentFormat().dateFnsLocale);
|
|
702
|
-
hasDate = computed(() => this.type() !== 'time');
|
|
703
|
-
hasTime = computed(() => this.type() !== 'date');
|
|
704
|
-
internalTimeValue = computed(() => {
|
|
705
|
-
const value = this.internalValue();
|
|
706
|
-
if (!value) {
|
|
707
|
-
return '';
|
|
708
|
-
}
|
|
709
|
-
const time = this.formatTime(value);
|
|
710
|
-
// This condition prevents adding zeros for seconds while typing
|
|
711
|
-
// E.g. 12:34 won't get changed to 12:34:00 automatically and it's valid value
|
|
712
|
-
if (this.timeInputValue() !== time &&
|
|
713
|
-
this.isValidTime(this.timeInputValue()) &&
|
|
714
|
-
time.startsWith(this.timeInputValue())) {
|
|
715
|
-
return this.timeInputValue();
|
|
716
|
-
}
|
|
717
|
-
return time;
|
|
718
|
-
});
|
|
698
|
+
inputElement = signal(null);
|
|
699
|
+
hasErrors = false;
|
|
719
700
|
isEmpty(value) {
|
|
720
|
-
return value
|
|
701
|
+
return value == null;
|
|
721
702
|
}
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
});
|
|
726
|
-
toExternalValue(internalValue) {
|
|
727
|
-
if (!internalValue) {
|
|
728
|
-
return null;
|
|
703
|
+
onInput(value) {
|
|
704
|
+
if (value === '' || value == null) {
|
|
705
|
+
this.onInternalValueChange(null);
|
|
729
706
|
}
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
707
|
+
else if (typeof value === 'string') {
|
|
708
|
+
const parsed = parseFloat(value);
|
|
709
|
+
if (!isNaN(parsed)) {
|
|
710
|
+
this.onInternalValueChange(parsed);
|
|
711
|
+
}
|
|
735
712
|
}
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
console.error(`Date field labeled "${this.label()}" was set invalid value "${externalValue}". Expected FormControl format: "${this.formControlFormat()}"`);
|
|
739
|
-
return null;
|
|
740
|
-
}
|
|
741
|
-
return parsed;
|
|
742
|
-
}
|
|
743
|
-
/**
|
|
744
|
-
* Prevents unnecessary change emissions on FormControl
|
|
745
|
-
* @returns True if both Date objects represent the same point in time
|
|
746
|
-
*/
|
|
747
|
-
areInternalValuesEqual(value1, value2) {
|
|
748
|
-
if (value1 === null && value2 === null) {
|
|
749
|
-
return true;
|
|
750
|
-
}
|
|
751
|
-
if (value1 === null || value2 === null) {
|
|
752
|
-
return false;
|
|
753
|
-
}
|
|
754
|
-
return value1.getTime() === value2.getTime();
|
|
755
|
-
}
|
|
756
|
-
writeValue(value) {
|
|
757
|
-
super.writeValue(value);
|
|
758
|
-
const internalValue = this.toInternalValue(value);
|
|
759
|
-
// Update physical input fields when FormControl value changes
|
|
760
|
-
// Necessary before user interaction
|
|
761
|
-
if (internalValue) {
|
|
762
|
-
this.dateInputValue.set(internalValue);
|
|
763
|
-
this.timeInputValue.set(this.formatTime(internalValue));
|
|
764
|
-
}
|
|
765
|
-
else {
|
|
766
|
-
this.dateInputValue.set(null);
|
|
767
|
-
this.timeInputValue.set('');
|
|
768
|
-
}
|
|
769
|
-
}
|
|
770
|
-
onDateInput(event) {
|
|
771
|
-
const dateValue = event.value;
|
|
772
|
-
if (!dateValue) {
|
|
773
|
-
// Clear FormControl value when date is invalid
|
|
774
|
-
// Keep internal state
|
|
775
|
-
this.dateInputValue.set(null);
|
|
776
|
-
this.onChange(null);
|
|
777
|
-
}
|
|
778
|
-
else {
|
|
779
|
-
this.dateInputValue.set(dateValue);
|
|
780
|
-
this.onDateChange(dateValue);
|
|
781
|
-
}
|
|
782
|
-
}
|
|
783
|
-
onTimeChange(event) {
|
|
784
|
-
const value = event.target.value;
|
|
785
|
-
let internalValue = this.internalValue();
|
|
786
|
-
if (!this.hasDate()) {
|
|
787
|
-
internalValue ??= this.emptyTimeDate;
|
|
788
|
-
}
|
|
789
|
-
const dateOk = internalValue && (this.dateInputValue() || !this.hasDate());
|
|
790
|
-
if (this.isValidTime(value) && internalValue && dateOk) {
|
|
791
|
-
const newDate = this.populateTime(new Date(internalValue), value);
|
|
792
|
-
this.onInternalValueChange(newDate);
|
|
793
|
-
}
|
|
794
|
-
this.timeInputValue.set(value);
|
|
795
|
-
}
|
|
796
|
-
onDateChange(date) {
|
|
797
|
-
const value = date ?? null;
|
|
798
|
-
const internalValueOld = this.internalValue();
|
|
799
|
-
const timeInputValue = this.timeInputValue();
|
|
800
|
-
// If both newly selected date and time input are valid, combine them
|
|
801
|
-
if (value && timeInputValue) {
|
|
802
|
-
this.populateTime(value, timeInputValue);
|
|
803
|
-
}
|
|
804
|
-
// Set internal value
|
|
805
|
-
this.onInternalValueChange(value);
|
|
806
|
-
// In case date input is focused, revert internal value
|
|
807
|
-
// to original value before Date change event
|
|
808
|
-
// while keeping external value and FormControl value updated
|
|
809
|
-
// This prevents unexpected changes to date and time inputs while typing
|
|
810
|
-
// New internal value will be set on date input blur
|
|
811
|
-
if (this.dateInputFocused) {
|
|
812
|
-
this.internalValue.set(internalValueOld);
|
|
813
|
-
}
|
|
814
|
-
}
|
|
815
|
-
onDateInputFocus() {
|
|
816
|
-
this.dateInputFocused = true;
|
|
817
|
-
this.onFocus();
|
|
818
|
-
}
|
|
819
|
-
onDateInputBlur() {
|
|
820
|
-
this.dateInputFocused = false;
|
|
821
|
-
// Set internal value to the combined date and time from inputs
|
|
822
|
-
// In case date and/or time input is invalid, internal value will not change
|
|
823
|
-
const dateTimeFromInputs = this.getDateTimeFromInputs();
|
|
824
|
-
if (dateTimeFromInputs) {
|
|
825
|
-
this.onInternalValueChange(dateTimeFromInputs);
|
|
826
|
-
}
|
|
827
|
-
this.onBlur();
|
|
828
|
-
}
|
|
829
|
-
/**
|
|
830
|
-
* Returns Date object constructed from current date and time input values
|
|
831
|
-
* or null if either input is invalid
|
|
832
|
-
*/
|
|
833
|
-
getDateTimeFromInputs() {
|
|
834
|
-
const dateInputValue = this.dateInputValue();
|
|
835
|
-
const timeInputValue = this.timeInputValue();
|
|
836
|
-
if (!timeInputValue || !dateInputValue) {
|
|
837
|
-
return null;
|
|
838
|
-
}
|
|
839
|
-
else {
|
|
840
|
-
const newInternal = new Date(dateInputValue);
|
|
841
|
-
this.populateTime(newInternal, timeInputValue);
|
|
842
|
-
return newInternal;
|
|
843
|
-
}
|
|
844
|
-
}
|
|
845
|
-
onTimeInputFocus() {
|
|
846
|
-
this.onFocus();
|
|
847
|
-
}
|
|
848
|
-
onTimeInputBlur() {
|
|
849
|
-
const timeInputEl = this.timeInput()?.nativeElement;
|
|
850
|
-
if (!timeInputEl) {
|
|
851
|
-
return;
|
|
852
|
-
}
|
|
853
|
-
const value = timeInputEl?.value ?? '';
|
|
854
|
-
// Emit null value to FormControl in case time is blurred while invalid (empty slots), ,
|
|
855
|
-
// Keep internal state intacted to prevent unexpected changes to input fields
|
|
856
|
-
if (!value) {
|
|
857
|
-
this.onChange(null);
|
|
858
|
-
}
|
|
859
|
-
this.onBlur();
|
|
860
|
-
}
|
|
861
|
-
/**
|
|
862
|
-
* Helper function to format a Date object to a time string
|
|
863
|
-
*/
|
|
864
|
-
formatTime(date) {
|
|
865
|
-
if (this.type() === 'date') {
|
|
866
|
-
return this.defaultTime();
|
|
867
|
-
}
|
|
868
|
-
try {
|
|
869
|
-
const locale = this.localeUsed();
|
|
870
|
-
const timeFormat = this.internalTimeFormat();
|
|
871
|
-
return format(date, timeFormat, { locale });
|
|
872
|
-
}
|
|
873
|
-
catch (e) {
|
|
874
|
-
console.log('Error formatting date: ', date, 'target format: ', this.internalTimeFormat());
|
|
875
|
-
console.error(e);
|
|
876
|
-
return this.defaultTime();
|
|
877
|
-
}
|
|
878
|
-
}
|
|
879
|
-
/**
|
|
880
|
-
* Helper function to populate a Date object with time from a string
|
|
881
|
-
* in the format HH:mm or HH:mm:ss
|
|
882
|
-
*/
|
|
883
|
-
populateTime(date, timeString) {
|
|
884
|
-
const timeParts = timeString.split(':').map((part) => parseInt(part, 10));
|
|
885
|
-
date.setHours(timeParts[0] || 0, timeParts[1] || 0, timeParts[2] || 0, 0);
|
|
886
|
-
return date;
|
|
887
|
-
}
|
|
888
|
-
isValidTime(value) {
|
|
889
|
-
if (!value) {
|
|
890
|
-
return false;
|
|
891
|
-
}
|
|
892
|
-
return /^(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d{1,3})?)?$/.test(value);
|
|
893
|
-
}
|
|
894
|
-
async focus() {
|
|
895
|
-
this.dateInput()?.nativeElement.focus();
|
|
896
|
-
}
|
|
897
|
-
canFocus() {
|
|
898
|
-
return new Promise((resolve) => {
|
|
899
|
-
setTimeout(() => {
|
|
900
|
-
const elRef = this.dateInput();
|
|
901
|
-
resolve(!!elRef?.nativeElement);
|
|
902
|
-
}, 1);
|
|
903
|
-
});
|
|
904
|
-
}
|
|
905
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovDateComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
906
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: RdtGovDateComponent, isStandalone: true, selector: "rdt-gov-date", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, labelPositionInput: { classPropertyName: "labelPositionInput", publicName: "labelPosition", isSignal: true, isRequired: false, transformFunction: null }, showSeconds: { classPropertyName: "showSeconds", publicName: "showSeconds", isSignal: true, isRequired: false, transformFunction: null }, stepInput: { classPropertyName: "stepInput", publicName: "step", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
907
|
-
{
|
|
908
|
-
provide: NG_VALUE_ACCESSOR,
|
|
909
|
-
useExisting: RdtGovDateComponent,
|
|
910
|
-
multi: true,
|
|
911
|
-
},
|
|
912
|
-
{
|
|
913
|
-
provide: RdtBaseFormInputComponent,
|
|
914
|
-
useExisting: RdtGovDateComponent,
|
|
915
|
-
},
|
|
916
|
-
{
|
|
917
|
-
provide: RdtDateComponent,
|
|
918
|
-
useExisting: RdtGovDateComponent,
|
|
919
|
-
},
|
|
920
|
-
], viewQueries: [{ propertyName: "dateInput", first: true, predicate: ["dateInput"], descendants: true, isSignal: true }, { propertyName: "timeInput", first: true, predicate: ["timeInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@let lPos = labelPosition();\n<div class=\"rdt-date-wrapper\" [class]=\"lPos\">\n @if(lPos) {\n <p\n class=\"gov-form-label__label s_label\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n }\n <div\n class=\"rdt-date-field-wrapper gov-form-input\"\n [attr.size]=\"size()\"\n [attr.disabled]=\"disabled() ? true : undefined\"\n >\n @if(type() === 'date' || type() === 'datetime-local'){\n <div class=\"rdt-date-field-position date\">\n <input\n class=\"rdt-date-field\"\n #dateInput\n matInput\n [attr.invalid]=\"invalid() && touched()\"\n [attr.readonly]=\"readonlyInput() ? true : null\"\n [attr.size]=\"size()\"\n [name]=\"name()\"\n [value]=\"internalValue()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [matDatepicker]=\"picker\"\n (focus)=\"onDateInputFocus()\"\n (blur)=\"onDateInputBlur()\"\n (dateInput)=\"onDateInput($event)\"\n (dateChange)=\"onDateInput($event)\"\n />\n <div class=\"gov-form-input__icons\">\n <gov-icon\n class=\"validation-icon gov-icon\"\n name=\"exclamation-lg\"\n type=\"components\"\n [attr.size]=\"size()\"\n >\n </gov-icon>\n </div>\n <mat-datepicker-toggle\n [attr.size]=\"size()\"\n matIconSuffix\n [for]=\"picker\"\n [disableRipple]=\"true\"\n >\n <!-- <mat-icon matDatepickerToggleIcon>keyboard_arrow_down</mat-icon> //moznost vlastni ikonky-->\n </mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </div>\n } @if(type() === 'datetime-local' || type() === 'time'){\n <div class=\"rdt-date-field-position time\">\n <input\n class=\"rdt-date-field\"\n type=\"time\"\n #timeInput\n (input)=\"onTimeChange($event)\"\n matInput\n [attr.invalid]=\"invalid() && touched()\"\n [step]=\"step()\"\n [attr.readonly]=\"readonlyInput() ? true : undefined\"\n [attr.size]=\"size()\"\n [name]=\"name()\"\n [value]=\"internalTimeValue()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n (focus)=\"onTimeInputFocus()\"\n (blur)=\"onTimeInputBlur()\"\n />\n <div class=\"gov-form-input__icons\">\n <gov-icon\n class=\"validation-icon gov-icon\"\n name=\"exclamation-lg\"\n type=\"components\"\n [attr.size]=\"size()\"\n >\n </gov-icon>\n </div>\n </div>\n }\n </div>\n</div>\n@let hasError = visibleErrors() | rdtFormError; @if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\" [attr.size]=\"size()\">\n <gov-icon\n type=\"components\"\n name=\"exclamation-triangle-fill\"\n slot=\"validation-icon\"\n ></gov-icon>\n {{ hasError }}\n</gov-form-message>\n}\n", styles: [".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}\n", ".rdt-date-wrapper{width:100%}.rdt-date-wrapper mat-datepicker-toggle,.rdt-date-wrapper mat-timepicker-toggle{position:absolute}.rdt-date-wrapper.right{display:flex;align-items:center;flex-direction:row-reverse;gap:var(--gap, var(--spacing-s))}.rdt-date-wrapper.left{display:flex;align-items:center;flex-direction:row;gap:var(--gap, var(--spacing-s))}.rdt-date-wrapper.top{display:flex;flex-direction:column;gap:var(--gap, var(--spacing-xs))}.rdt-date-wrapper .gov-form-input__icons{display:var(--exclamation-mark-display, none)}.rdt-date-wrapper mat-datepicker-toggle,.rdt-date-wrapper mat-timepicker-toggle{--mat-icon-button-touch-target-size: calc( var(--padding-horizontal) + var(--icon-size) + var(--gap) );--mat-icon-button-state-layer-size: var( --mat-icon-button-touch-target-size );right:calc(var(--exclamation-mark-width, 0px) + var(--exclamation-mark-offset, 0px))}.rdt-date-wrapper mat-datepicker-toggle button,.rdt-date-wrapper mat-timepicker-toggle button{display:flex;justify-content:center;align-items:center;height:var(--mat-icon-button-state-layer-size)}.rdt-date-wrapper mat-datepicker-toggle button svg,.rdt-date-wrapper mat-timepicker-toggle button svg{width:var(--icon-size);height:var(--icon-size)}.rdt-date-wrapper mat-datepicker-toggle[size=xl],.rdt-date-wrapper mat-timepicker-toggle[size=xl]{--padding-horizontal: var(--spacing-m-nudge);--icon-size: var(--icon-size-xl);--gap: var(--spacing-m)}.rdt-date-wrapper mat-datepicker-toggle[size=l],.rdt-date-wrapper mat-timepicker-toggle[size=l]{--padding-horizontal: var(--spacing-s-nudge);--icon-size: var(--icon-size-l);--gap: var(--spacing-m)}.rdt-date-wrapper mat-datepicker-toggle[size=m],.rdt-date-wrapper mat-timepicker-toggle[size=m]{--padding-horizontal: var(--spacing-s-nudge);--icon-size: var(--icon-size-m);--gap: var(--spacing-s)}.rdt-date-wrapper mat-datepicker-toggle[size=s],.rdt-date-wrapper mat-timepicker-toggle[size=s]{--padding-horizontal: var(--spacing-xs-nudge);--icon-size: var(--icon-size-s);--gap: var(--spacing-s)}.rdt-date-wrapper mat-datepicker-toggle[size=xs],.rdt-date-wrapper mat-timepicker-toggle[size=xs]{--padding-horizontal: var(--spacing-xs-nudge);--icon-size: var(--icon-size-xs);--gap: var(--spacing-xs)}.rdt-date-field{background-color:transparent;border:none;border-radius:var(--border-radius, var(--corner-radius-s));color:var(--form-value-color, var(--text-primary));font-family:var(--font-family-primary, var(--font-family));width:100%;line-height:150%;font-weight:400}.rdt-date-field-position{width:100%;position:relative;display:flex;align-items:center}.rdt-date-field-wrapper{width:100%;flex:1;border-radius:var(--border-radius, var(--corner-radius-s));border:var(--border-width, .0625rem) solid var(--form-border-color, var(--border-subtle));background-color:var(--form-bg-color, var(--background-block-primary));display:flex;align-items:center;gap:0!important}.rdt-date-field-wrapper:focus-within{border-radius:var(--outline-border-radius, var(--corner-radius-xs-nudge));outline:var(--outline-width, .125rem) solid var(--status-focus);outline-offset:var(--outline-offset, .125rem)}.rdt-date-field-wrapper:hover{background-color:var(--form-hover-color, var(--button-outlined-primary-hover))!important}.rdt-date-field-wrapper>*:after{content:\"\";display:block;position:absolute;width:var(--border-width, .0625rem);height:calc(100% + var(--border-width, .0625rem) * 2);left:calc(100% + var(--border-width, .0625rem) / 2);top:calc(-1 * var(--border-width, .0625rem));background-color:var(--border-subtle)}.rdt-date-field-wrapper>*:last-child:after{display:none}.rdt-date-field-wrapper[size=xl] .time{gap:var(--spacing-m)}.rdt-date-field-wrapper[size=xl] .time input{padding-right:var(--padding-horizontal, var(--spacing-m-nudge))!important}.rdt-date-field-wrapper[size=l] .time{gap:var(--spacing-s-nudge)}.rdt-date-field-wrapper[size=l] .time input{padding-right:var(--padding-horizontal, var(--spacing-m))!important}.rdt-date-field-wrapper[size=m] .time{gap:var(--spacing-s)}.rdt-date-field-wrapper[size=m] .time input{padding-right:var(--padding-horizontal, var(--spacing-s-nudge))!important}.rdt-date-field-wrapper[size=s] .time{gap:var(--spacing-xs-nudge)}.rdt-date-field-wrapper[size=s] .time input{padding-right:var(--padding-horizontal, var(--spacing-s))!important;--mat-icon-button-icon-size: 10px}.rdt-date-field-wrapper[size=xs] .time{gap:var(--spacing-xs)}.rdt-date-field-wrapper[size=xs] .time input{padding-right:var(--padding-horizontal, var(--spacing-xs-nudge))!important;--mat-icon-button-icon-size: 10px}.rdt-date-field:focus{outline:none}rdt-gov-date,mat-datepicker-content{--mat-icon-button-icon-size: 24px;--mat-button-text-label-text-font: var(--font-family);--mat-button-text-label-text-size: var(--font-size-body-s);--mat-button-text-label-text-weight: 600;--mat-button-text-label-text-color: var(--text-secondary);--mat-datepicker-calendar-body-label-text-size: var(--font-size-body-s);--mat-datepicker-calendar-body-label-text-weight: 600;--mat-datepicker-calendar-body-label-text-color: var(--text-primary);--mat-datepicker-calendar-text-size: var(--font-size-body-m);--mat-datepicker-calendar-text-font: var(--font-family);--mat-datepicker-calendar-container-background-color: var( --background-neutral-subtle );--mat-datepicker-calendar-container-text-color: var(--text-primary);--mat-datepicker-calendar-container-shape: 8px;--mat-datepicker-calendar-date-text-color: var(--text-primary);--mat-datepicker-calendar-date-selected-state-text-color: var( --color-neutral-0 );--mat-datepicker-calendar-date-today-selected-state-outline-color: var( --color-primary-400 );--mat-datepicker-calendar-container-elevation-shadow: 0px 0px 0px 1px var(--border-subtle);--mat-datepicker-calendar-date-today-outline-color: var( --button-solid-primary );--mat-datepicker-calendar-date-selected-state-background-color: var( --button-solid-primary );--mat-datepicker-calendar-period-button-icon-color: var(--text-primary);--mat-datepicker-calendar-date-hover-state-background-color: var( --background-neutral-subtlest );--mat-datepicker-calendar-header-text-color: var(--text-secondary);--mat-datepicker-calendar-header-text-size: var(--font-size-body-m);--mat-datepicker-calendar-header-text-weight: 600;--mat-tooltip-container-color: var(--color-neutral-950);--mat-tooltip-supporting-text-color: var(--color-neutral-0);--mat-tooltip-container-shape: 8px;--mat-button-text-container-shape: 8px;--mat-sys-on-surface-variant: var(--text-secondary);--mat-sys-primary: var(--button-solid-primary-hover);--mat-sys-dragged-state-layer-opacity: .16;--mat-sys-focus-state-layer-opacity: .12;--mat-sys-hover-state-layer-opacity: .08;--mat-sys-pressed-state-layer-opacity: .12;--mat-timepicker-container-background-color: var(--background-neutral-subtle);--mat-timepicker-container-shape: 8px;--mat-timepicker-container-elevation-shadow: 0px 0px 0px 1px var(--border-subtle);--mat-option-selected-state-layer-color: var(--button-solid-primary-hover);--mat-option-selected-state-label-text-color: var(--color-neutral-0);--mat-datepicker-toggle-active-state-icon-color: var( --mat-datepicker-toggle-icon-color )}rdt-gov-date.ng-invalid.ng-touched,mat-datepicker-content.ng-invalid.ng-touched{--border-subtle: var(--status-error);--mat-datepicker-toggle-icon-color: var(--status-error);--form-value-color: var(--form-state-value-color, var(--text-status-error));--exclamation-mark-display: flex}rdt-gov-date.ng-invalid.ng-touched input::-webkit-calendar-picker-indicator,mat-datepicker-content.ng-invalid.ng-touched input::-webkit-calendar-picker-indicator{filter:brightness(0) saturate(100%) invert(22%) sepia(89%) saturate(1847%) hue-rotate(345deg) brightness(98%) contrast(97%);cursor:pointer}rdt-gov-date.ng-invalid.ng-touched [size=xl],mat-datepicker-content.ng-invalid.ng-touched [size=xl]{--exclamation-mark-width: var(--icon-size-xl);--exclamation-mark-offset: var(--spacing-m-nudge)}rdt-gov-date.ng-invalid.ng-touched [size=l],mat-datepicker-content.ng-invalid.ng-touched [size=l]{--exclamation-mark-width: var(--icon-size-l);--exclamation-mark-offset: var(--spacing-m)}rdt-gov-date.ng-invalid.ng-touched [size=m],mat-datepicker-content.ng-invalid.ng-touched [size=m]{--exclamation-mark-width: var(--icon-size-m);--exclamation-mark-offset: var(--spacing-s-nudge)}rdt-gov-date.ng-invalid.ng-touched [size=s],mat-datepicker-content.ng-invalid.ng-touched [size=s]{--exclamation-mark-width: var(--icon-size-s);--exclamation-mark-offset: var(--spacing-s)}rdt-gov-date.ng-invalid.ng-touched [size=xs],mat-datepicker-content.ng-invalid.ng-touched [size=xs]{--exclamation-mark-width: var(--icon-size-xs);--exclamation-mark-offset: var(--spacing-xs-nudge)}rdt-gov-date.ng-invalid.ng-touched .time input,mat-datepicker-content.ng-invalid.ng-touched .time input{padding-right:0!important}\n"], dependencies: [{ kind: "pipe", type: RdtFormErrorPipe, name: "rdtFormError" }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i1$2.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i1$2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i1$2.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
921
|
-
}
|
|
922
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovDateComponent, decorators: [{
|
|
923
|
-
type: Component,
|
|
924
|
-
args: [{ selector: 'rdt-gov-date', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [
|
|
925
|
-
RdtFormErrorPipe,
|
|
926
|
-
MatDatepickerModule,
|
|
927
|
-
MatInputModule,
|
|
928
|
-
ReactiveFormsModule,
|
|
929
|
-
FormsModule,
|
|
930
|
-
], providers: [
|
|
931
|
-
{
|
|
932
|
-
provide: NG_VALUE_ACCESSOR,
|
|
933
|
-
useExisting: RdtGovDateComponent,
|
|
934
|
-
multi: true,
|
|
935
|
-
},
|
|
936
|
-
{
|
|
937
|
-
provide: RdtBaseFormInputComponent,
|
|
938
|
-
useExisting: RdtGovDateComponent,
|
|
939
|
-
},
|
|
940
|
-
{
|
|
941
|
-
provide: RdtDateComponent,
|
|
942
|
-
useExisting: RdtGovDateComponent,
|
|
943
|
-
},
|
|
944
|
-
], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "@let lPos = labelPosition();\n<div class=\"rdt-date-wrapper\" [class]=\"lPos\">\n @if(lPos) {\n <p\n class=\"gov-form-label__label s_label\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n }\n <div\n class=\"rdt-date-field-wrapper gov-form-input\"\n [attr.size]=\"size()\"\n [attr.disabled]=\"disabled() ? true : undefined\"\n >\n @if(type() === 'date' || type() === 'datetime-local'){\n <div class=\"rdt-date-field-position date\">\n <input\n class=\"rdt-date-field\"\n #dateInput\n matInput\n [attr.invalid]=\"invalid() && touched()\"\n [attr.readonly]=\"readonlyInput() ? true : null\"\n [attr.size]=\"size()\"\n [name]=\"name()\"\n [value]=\"internalValue()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [matDatepicker]=\"picker\"\n (focus)=\"onDateInputFocus()\"\n (blur)=\"onDateInputBlur()\"\n (dateInput)=\"onDateInput($event)\"\n (dateChange)=\"onDateInput($event)\"\n />\n <div class=\"gov-form-input__icons\">\n <gov-icon\n class=\"validation-icon gov-icon\"\n name=\"exclamation-lg\"\n type=\"components\"\n [attr.size]=\"size()\"\n >\n </gov-icon>\n </div>\n <mat-datepicker-toggle\n [attr.size]=\"size()\"\n matIconSuffix\n [for]=\"picker\"\n [disableRipple]=\"true\"\n >\n <!-- <mat-icon matDatepickerToggleIcon>keyboard_arrow_down</mat-icon> //moznost vlastni ikonky-->\n </mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </div>\n } @if(type() === 'datetime-local' || type() === 'time'){\n <div class=\"rdt-date-field-position time\">\n <input\n class=\"rdt-date-field\"\n type=\"time\"\n #timeInput\n (input)=\"onTimeChange($event)\"\n matInput\n [attr.invalid]=\"invalid() && touched()\"\n [step]=\"step()\"\n [attr.readonly]=\"readonlyInput() ? true : undefined\"\n [attr.size]=\"size()\"\n [name]=\"name()\"\n [value]=\"internalTimeValue()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n (focus)=\"onTimeInputFocus()\"\n (blur)=\"onTimeInputBlur()\"\n />\n <div class=\"gov-form-input__icons\">\n <gov-icon\n class=\"validation-icon gov-icon\"\n name=\"exclamation-lg\"\n type=\"components\"\n [attr.size]=\"size()\"\n >\n </gov-icon>\n </div>\n </div>\n }\n </div>\n</div>\n@let hasError = visibleErrors() | rdtFormError; @if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\" [attr.size]=\"size()\">\n <gov-icon\n type=\"components\"\n name=\"exclamation-triangle-fill\"\n slot=\"validation-icon\"\n ></gov-icon>\n {{ hasError }}\n</gov-form-message>\n}\n", styles: [".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}\n", ".rdt-date-wrapper{width:100%}.rdt-date-wrapper mat-datepicker-toggle,.rdt-date-wrapper mat-timepicker-toggle{position:absolute}.rdt-date-wrapper.right{display:flex;align-items:center;flex-direction:row-reverse;gap:var(--gap, var(--spacing-s))}.rdt-date-wrapper.left{display:flex;align-items:center;flex-direction:row;gap:var(--gap, var(--spacing-s))}.rdt-date-wrapper.top{display:flex;flex-direction:column;gap:var(--gap, var(--spacing-xs))}.rdt-date-wrapper .gov-form-input__icons{display:var(--exclamation-mark-display, none)}.rdt-date-wrapper mat-datepicker-toggle,.rdt-date-wrapper mat-timepicker-toggle{--mat-icon-button-touch-target-size: calc( var(--padding-horizontal) + var(--icon-size) + var(--gap) );--mat-icon-button-state-layer-size: var( --mat-icon-button-touch-target-size );right:calc(var(--exclamation-mark-width, 0px) + var(--exclamation-mark-offset, 0px))}.rdt-date-wrapper mat-datepicker-toggle button,.rdt-date-wrapper mat-timepicker-toggle button{display:flex;justify-content:center;align-items:center;height:var(--mat-icon-button-state-layer-size)}.rdt-date-wrapper mat-datepicker-toggle button svg,.rdt-date-wrapper mat-timepicker-toggle button svg{width:var(--icon-size);height:var(--icon-size)}.rdt-date-wrapper mat-datepicker-toggle[size=xl],.rdt-date-wrapper mat-timepicker-toggle[size=xl]{--padding-horizontal: var(--spacing-m-nudge);--icon-size: var(--icon-size-xl);--gap: var(--spacing-m)}.rdt-date-wrapper mat-datepicker-toggle[size=l],.rdt-date-wrapper mat-timepicker-toggle[size=l]{--padding-horizontal: var(--spacing-s-nudge);--icon-size: var(--icon-size-l);--gap: var(--spacing-m)}.rdt-date-wrapper mat-datepicker-toggle[size=m],.rdt-date-wrapper mat-timepicker-toggle[size=m]{--padding-horizontal: var(--spacing-s-nudge);--icon-size: var(--icon-size-m);--gap: var(--spacing-s)}.rdt-date-wrapper mat-datepicker-toggle[size=s],.rdt-date-wrapper mat-timepicker-toggle[size=s]{--padding-horizontal: var(--spacing-xs-nudge);--icon-size: var(--icon-size-s);--gap: var(--spacing-s)}.rdt-date-wrapper mat-datepicker-toggle[size=xs],.rdt-date-wrapper mat-timepicker-toggle[size=xs]{--padding-horizontal: var(--spacing-xs-nudge);--icon-size: var(--icon-size-xs);--gap: var(--spacing-xs)}.rdt-date-field{background-color:transparent;border:none;border-radius:var(--border-radius, var(--corner-radius-s));color:var(--form-value-color, var(--text-primary));font-family:var(--font-family-primary, var(--font-family));width:100%;line-height:150%;font-weight:400}.rdt-date-field-position{width:100%;position:relative;display:flex;align-items:center}.rdt-date-field-wrapper{width:100%;flex:1;border-radius:var(--border-radius, var(--corner-radius-s));border:var(--border-width, .0625rem) solid var(--form-border-color, var(--border-subtle));background-color:var(--form-bg-color, var(--background-block-primary));display:flex;align-items:center;gap:0!important}.rdt-date-field-wrapper:focus-within{border-radius:var(--outline-border-radius, var(--corner-radius-xs-nudge));outline:var(--outline-width, .125rem) solid var(--status-focus);outline-offset:var(--outline-offset, .125rem)}.rdt-date-field-wrapper:hover{background-color:var(--form-hover-color, var(--button-outlined-primary-hover))!important}.rdt-date-field-wrapper>*:after{content:\"\";display:block;position:absolute;width:var(--border-width, .0625rem);height:calc(100% + var(--border-width, .0625rem) * 2);left:calc(100% + var(--border-width, .0625rem) / 2);top:calc(-1 * var(--border-width, .0625rem));background-color:var(--border-subtle)}.rdt-date-field-wrapper>*:last-child:after{display:none}.rdt-date-field-wrapper[size=xl] .time{gap:var(--spacing-m)}.rdt-date-field-wrapper[size=xl] .time input{padding-right:var(--padding-horizontal, var(--spacing-m-nudge))!important}.rdt-date-field-wrapper[size=l] .time{gap:var(--spacing-s-nudge)}.rdt-date-field-wrapper[size=l] .time input{padding-right:var(--padding-horizontal, var(--spacing-m))!important}.rdt-date-field-wrapper[size=m] .time{gap:var(--spacing-s)}.rdt-date-field-wrapper[size=m] .time input{padding-right:var(--padding-horizontal, var(--spacing-s-nudge))!important}.rdt-date-field-wrapper[size=s] .time{gap:var(--spacing-xs-nudge)}.rdt-date-field-wrapper[size=s] .time input{padding-right:var(--padding-horizontal, var(--spacing-s))!important;--mat-icon-button-icon-size: 10px}.rdt-date-field-wrapper[size=xs] .time{gap:var(--spacing-xs)}.rdt-date-field-wrapper[size=xs] .time input{padding-right:var(--padding-horizontal, var(--spacing-xs-nudge))!important;--mat-icon-button-icon-size: 10px}.rdt-date-field:focus{outline:none}rdt-gov-date,mat-datepicker-content{--mat-icon-button-icon-size: 24px;--mat-button-text-label-text-font: var(--font-family);--mat-button-text-label-text-size: var(--font-size-body-s);--mat-button-text-label-text-weight: 600;--mat-button-text-label-text-color: var(--text-secondary);--mat-datepicker-calendar-body-label-text-size: var(--font-size-body-s);--mat-datepicker-calendar-body-label-text-weight: 600;--mat-datepicker-calendar-body-label-text-color: var(--text-primary);--mat-datepicker-calendar-text-size: var(--font-size-body-m);--mat-datepicker-calendar-text-font: var(--font-family);--mat-datepicker-calendar-container-background-color: var( --background-neutral-subtle );--mat-datepicker-calendar-container-text-color: var(--text-primary);--mat-datepicker-calendar-container-shape: 8px;--mat-datepicker-calendar-date-text-color: var(--text-primary);--mat-datepicker-calendar-date-selected-state-text-color: var( --color-neutral-0 );--mat-datepicker-calendar-date-today-selected-state-outline-color: var( --color-primary-400 );--mat-datepicker-calendar-container-elevation-shadow: 0px 0px 0px 1px var(--border-subtle);--mat-datepicker-calendar-date-today-outline-color: var( --button-solid-primary );--mat-datepicker-calendar-date-selected-state-background-color: var( --button-solid-primary );--mat-datepicker-calendar-period-button-icon-color: var(--text-primary);--mat-datepicker-calendar-date-hover-state-background-color: var( --background-neutral-subtlest );--mat-datepicker-calendar-header-text-color: var(--text-secondary);--mat-datepicker-calendar-header-text-size: var(--font-size-body-m);--mat-datepicker-calendar-header-text-weight: 600;--mat-tooltip-container-color: var(--color-neutral-950);--mat-tooltip-supporting-text-color: var(--color-neutral-0);--mat-tooltip-container-shape: 8px;--mat-button-text-container-shape: 8px;--mat-sys-on-surface-variant: var(--text-secondary);--mat-sys-primary: var(--button-solid-primary-hover);--mat-sys-dragged-state-layer-opacity: .16;--mat-sys-focus-state-layer-opacity: .12;--mat-sys-hover-state-layer-opacity: .08;--mat-sys-pressed-state-layer-opacity: .12;--mat-timepicker-container-background-color: var(--background-neutral-subtle);--mat-timepicker-container-shape: 8px;--mat-timepicker-container-elevation-shadow: 0px 0px 0px 1px var(--border-subtle);--mat-option-selected-state-layer-color: var(--button-solid-primary-hover);--mat-option-selected-state-label-text-color: var(--color-neutral-0);--mat-datepicker-toggle-active-state-icon-color: var( --mat-datepicker-toggle-icon-color )}rdt-gov-date.ng-invalid.ng-touched,mat-datepicker-content.ng-invalid.ng-touched{--border-subtle: var(--status-error);--mat-datepicker-toggle-icon-color: var(--status-error);--form-value-color: var(--form-state-value-color, var(--text-status-error));--exclamation-mark-display: flex}rdt-gov-date.ng-invalid.ng-touched input::-webkit-calendar-picker-indicator,mat-datepicker-content.ng-invalid.ng-touched input::-webkit-calendar-picker-indicator{filter:brightness(0) saturate(100%) invert(22%) sepia(89%) saturate(1847%) hue-rotate(345deg) brightness(98%) contrast(97%);cursor:pointer}rdt-gov-date.ng-invalid.ng-touched [size=xl],mat-datepicker-content.ng-invalid.ng-touched [size=xl]{--exclamation-mark-width: var(--icon-size-xl);--exclamation-mark-offset: var(--spacing-m-nudge)}rdt-gov-date.ng-invalid.ng-touched [size=l],mat-datepicker-content.ng-invalid.ng-touched [size=l]{--exclamation-mark-width: var(--icon-size-l);--exclamation-mark-offset: var(--spacing-m)}rdt-gov-date.ng-invalid.ng-touched [size=m],mat-datepicker-content.ng-invalid.ng-touched [size=m]{--exclamation-mark-width: var(--icon-size-m);--exclamation-mark-offset: var(--spacing-s-nudge)}rdt-gov-date.ng-invalid.ng-touched [size=s],mat-datepicker-content.ng-invalid.ng-touched [size=s]{--exclamation-mark-width: var(--icon-size-s);--exclamation-mark-offset: var(--spacing-s)}rdt-gov-date.ng-invalid.ng-touched [size=xs],mat-datepicker-content.ng-invalid.ng-touched [size=xs]{--exclamation-mark-width: var(--icon-size-xs);--exclamation-mark-offset: var(--spacing-xs-nudge)}rdt-gov-date.ng-invalid.ng-touched .time input,mat-datepicker-content.ng-invalid.ng-touched .time input{padding-right:0!important}\n"] }]
|
|
945
|
-
}] });
|
|
946
|
-
|
|
947
|
-
class RdtGovNumberInputComponent extends RdtNumericInputComponent {
|
|
948
|
-
renderer = inject(Renderer2);
|
|
949
|
-
govInput = viewChild('govInput');
|
|
950
|
-
size = input('s');
|
|
951
|
-
icon = input(null);
|
|
952
|
-
iconStart = input(null);
|
|
953
|
-
labelPositionInput = input('top', {
|
|
954
|
-
alias: 'labelPosition',
|
|
955
|
-
});
|
|
956
|
-
labelPosition = linkedSignal(() => this.labelPositionInput());
|
|
957
|
-
inputElement = signal(null);
|
|
958
|
-
hasErrors = false;
|
|
959
|
-
isEmpty(value) {
|
|
960
|
-
return value == null;
|
|
961
|
-
}
|
|
962
|
-
onInput(value) {
|
|
963
|
-
if (value === '' || value == null) {
|
|
964
|
-
this.onInternalValueChange(null);
|
|
965
|
-
}
|
|
966
|
-
else if (typeof value === 'string') {
|
|
967
|
-
const parsed = parseFloat(value);
|
|
968
|
-
if (!isNaN(parsed)) {
|
|
969
|
-
this.onInternalValueChange(parsed);
|
|
970
|
-
}
|
|
971
|
-
}
|
|
972
|
-
else {
|
|
973
|
-
this.onInternalValueChange(value);
|
|
713
|
+
else {
|
|
714
|
+
this.onInternalValueChange(value);
|
|
974
715
|
}
|
|
975
716
|
}
|
|
976
717
|
readonlyEffect = effect(async () => {
|
|
@@ -1029,7 +770,7 @@ class RdtGovNumberInputComponent extends RdtNumericInputComponent {
|
|
|
1029
770
|
provide: RdtBaseFormInputComponent,
|
|
1030
771
|
useExisting: RdtGovNumberInputComponent,
|
|
1031
772
|
},
|
|
1032
|
-
], viewQueries: [{ propertyName: "govInput", first: true, predicate: ["govInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@let lPos = labelPosition(); @if(lPos === 'top'){\n<gov-form-label slot=\"left\" size=\"m\" [class.warning-color-gov-label]=\"hasError\"\n >{{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n>\n}\n<gov-form-input\n #govInput\n input-type=\"number\"\n [size]=\"size()\"\n [value]=\"internalValue()\"\n [placeholder]=\"placeholder()\"\n [autocomplete]=\"autocomplete()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [invalid]=\"invalid() && touched()\"\n [attr.invalid]=\"invalid() && touched()\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n [attr.disabled]=\"disabled()\"\n [name]=\"id()\"\n [identifier]=\"id()\"\n (gov-input)=\"onInput($event.detail.value)\"\n (gov-focus)=\"onFocus()\"\n (gov-blur)=\"onBlur()\"\n>\n @let lI = iconStart(); @let rI = icon(); @if(lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if(lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if (lI) {\n <span slot=\"icon-start\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: lI }\"></ng-container>\n </span>\n } @if (rI) {\n <span slot=\"icon-end\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: rI }\"></ng-container>\n </span>\n }\n</gov-form-input>\n@let hasError = visibleErrors() | rdtFormError; @if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\" [attr.size]=\"size()\">\n <gov-icon\n type=\"components\"\n name=\"exclamation-triangle-fill\"\n slot=\"validation-icon\"\n ></gov-icon>\n {{ hasError }}\n</gov-form-message>\n}\n", styles: [".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}\n"], dependencies: [{ kind: "pipe", type: RdtFormErrorPipe, name: "rdtFormError" }, { kind: "directive", type: RdtIconOutletDirective, selector: "[rdtIconOutlet]", exportAs: ["rdtIconOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
773
|
+
], viewQueries: [{ propertyName: "govInput", first: true, predicate: ["govInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@let lPos = labelPosition(); @if(lPos === 'top' && label().length>0){\n<gov-form-label slot=\"left\" size=\"m\" [class.warning-color-gov-label]=\"hasError\"\n >{{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n>\n}\n<gov-form-input\n #govInput\n input-type=\"number\"\n [size]=\"size()\"\n [value]=\"internalValue()\"\n [placeholder]=\"placeholder()\"\n [autocomplete]=\"autocomplete()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [invalid]=\"invalid() && touched()\"\n [attr.invalid]=\"invalid() && touched()\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n [attr.disabled]=\"disabled()\"\n [name]=\"id()\"\n [identifier]=\"id()\"\n (gov-input)=\"onInput($event.detail.value)\"\n (gov-focus)=\"onFocus()\"\n (gov-blur)=\"onBlur()\"\n>\n @let lI = iconStart(); @let rI = icon(); @if(lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if(lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if (lI) {\n <span slot=\"icon-start\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: lI }\"></ng-container>\n </span>\n } @if (rI) {\n <span slot=\"icon-end\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: rI }\"></ng-container>\n </span>\n }\n</gov-form-input>\n@let hasError = visibleErrors() | rdtFormError; @if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\" [attr.size]=\"size()\">\n <gov-icon\n type=\"components\"\n name=\"exclamation-triangle-fill\"\n slot=\"validation-icon\"\n ></gov-icon>\n {{ hasError }}\n</gov-form-message>\n}\n", styles: [".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}rdt-gov-number-input,rdt-gov-text-input,rdt-gov-select{min-width:60px}\n"], dependencies: [{ kind: "pipe", type: RdtFormErrorPipe, name: "rdtFormError" }, { kind: "directive", type: RdtIconOutletDirective, selector: "[rdtIconOutlet]", exportAs: ["rdtIconOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
1033
774
|
}
|
|
1034
775
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovNumberInputComponent, decorators: [{
|
|
1035
776
|
type: Component,
|
|
@@ -1043,7 +784,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
1043
784
|
provide: RdtBaseFormInputComponent,
|
|
1044
785
|
useExisting: RdtGovNumberInputComponent,
|
|
1045
786
|
},
|
|
1046
|
-
], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "@let lPos = labelPosition(); @if(lPos === 'top'){\n<gov-form-label slot=\"left\" size=\"m\" [class.warning-color-gov-label]=\"hasError\"\n >{{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n>\n}\n<gov-form-input\n #govInput\n input-type=\"number\"\n [size]=\"size()\"\n [value]=\"internalValue()\"\n [placeholder]=\"placeholder()\"\n [autocomplete]=\"autocomplete()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [invalid]=\"invalid() && touched()\"\n [attr.invalid]=\"invalid() && touched()\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n [attr.disabled]=\"disabled()\"\n [name]=\"id()\"\n [identifier]=\"id()\"\n (gov-input)=\"onInput($event.detail.value)\"\n (gov-focus)=\"onFocus()\"\n (gov-blur)=\"onBlur()\"\n>\n @let lI = iconStart(); @let rI = icon(); @if(lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if(lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if (lI) {\n <span slot=\"icon-start\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: lI }\"></ng-container>\n </span>\n } @if (rI) {\n <span slot=\"icon-end\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: rI }\"></ng-container>\n </span>\n }\n</gov-form-input>\n@let hasError = visibleErrors() | rdtFormError; @if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\" [attr.size]=\"size()\">\n <gov-icon\n type=\"components\"\n name=\"exclamation-triangle-fill\"\n slot=\"validation-icon\"\n ></gov-icon>\n {{ hasError }}\n</gov-form-message>\n}\n", styles: [".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}\n"] }]
|
|
787
|
+
], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "@let lPos = labelPosition(); @if(lPos === 'top' && label().length>0){\n<gov-form-label slot=\"left\" size=\"m\" [class.warning-color-gov-label]=\"hasError\"\n >{{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n>\n}\n<gov-form-input\n #govInput\n input-type=\"number\"\n [size]=\"size()\"\n [value]=\"internalValue()\"\n [placeholder]=\"placeholder()\"\n [autocomplete]=\"autocomplete()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [invalid]=\"invalid() && touched()\"\n [attr.invalid]=\"invalid() && touched()\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n [attr.disabled]=\"disabled()\"\n [name]=\"id()\"\n [identifier]=\"id()\"\n (gov-input)=\"onInput($event.detail.value)\"\n (gov-focus)=\"onFocus()\"\n (gov-blur)=\"onBlur()\"\n>\n @let lI = iconStart(); @let rI = icon(); @if(lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if(lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if (lI) {\n <span slot=\"icon-start\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: lI }\"></ng-container>\n </span>\n } @if (rI) {\n <span slot=\"icon-end\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: rI }\"></ng-container>\n </span>\n }\n</gov-form-input>\n@let hasError = visibleErrors() | rdtFormError; @if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\" [attr.size]=\"size()\">\n <gov-icon\n type=\"components\"\n name=\"exclamation-triangle-fill\"\n slot=\"validation-icon\"\n ></gov-icon>\n {{ hasError }}\n</gov-form-message>\n}\n", styles: [".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}rdt-gov-number-input,rdt-gov-text-input,rdt-gov-select{min-width:60px}\n"] }]
|
|
1047
788
|
}] });
|
|
1048
789
|
|
|
1049
790
|
class RdtGovSelectOfflineProviderDirective extends RdtSelectOfflineDatasourceProviderDirective {
|
|
@@ -1336,7 +1077,7 @@ class RdtGovSelectComponent extends RdtBaseSelectCommonComponent {
|
|
|
1336
1077
|
provide: RdtBaseFormInputComponent,
|
|
1337
1078
|
useExisting: RdtGovSelectComponent,
|
|
1338
1079
|
},
|
|
1339
|
-
], viewQueries: [{ propertyName: "scrollContainer", first: true, predicate: ["scrollContainer"], descendants: true, isSignal: true }, { propertyName: "selectButton", first: true, predicate: ["selectButton"], descendants: true, isSignal: true }, { propertyName: "overlayTemplate", first: true, predicate: ["overlayContainer"], descendants: true, isSignal: true }, { propertyName: "optionEls", predicate: (RdtSelectOptionDirective), descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@let sel = selectedLabel(); @let lPos = labelPosition(); @let hasError =\nhideErrors() ? '' : visibleErrors() | rdtFormError; @if(lPos === 'top'){\n<gov-form-label slot=\"left\" [class.warning-color-gov-label]=\"hasError\" size=\"s\"\n >{{ label() }}\n @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n>\n}\n<div\n class=\"gov-form-select gov-form-input\"\n [class.has-clear]=\"showClear() && !!sel\"\n [attr.size]=\"size()\"\n [attr.invalid]=\"invalid() && touched()\"\n [attr.disabled]=\"disabled()\"\n>\n @if (lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }}\n @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n }\n <div class=\"element\">\n <button\n #selectButton\n [attr.size]=\"size()\"\n (click)=\"openOverlay()\"\n (keydown)=\"handleButtonKeydown($event)\"\n [disabled]=\"disabled()\"\n class=\"select\"\n type=\"button\"\n (blur)=\"handleButtonBlur()\"\n (focus)=\"onFocus()\"\n >\n <div class=\"scroll-content\" [class.warning-color-text]=\"hasError\">\n @if (sel) {\n {{ sel }}\n } @else if (!disabled() && !readonlyInput()) {\n {{ placeholder() || ' ' }}\n }\n </div>\n @if (showClear() && sel) {\n <gov-button\n class=\"clear-button\"\n iconStart=\"basic/x\"\n (click)=\"onClearClick($event)\"\n propagate=\"false\"\n buttonType=\"base\"\n color=\"error\"\n [rdtDisabled]=\"disabled()\"\n ></gov-button>\n } @if (loading()) {\n <rdt-spinner />\n } @else { @if(hasError){\n <gov-icon\n name=\"exclamation-lg\"\n class=\"icon-warning\"\n [ngClass]=\"'icon-' + size()\"\n ></gov-icon>\n }\n <gov-icon\n name=\"chevron-down\"\n class=\"icon-arrow\"\n [class.warning-color-icon]=\"hasError\"\n ></gov-icon>\n }\n </button>\n </div>\n @if (lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }}\n @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n }\n</div>\n<ng-template #overlayContainer>\n <div class=\"rdt-gov-select-container\" [attr.data-size]=\"size()\">\n @if (showSearch()) {\n <div class=\"search-container\" [class.loading]=\"loading()\">\n <input\n class=\"gov-form-input\"\n size=\"s\"\n type=\"search\"\n rdtAutofocusOnInit\n [formControl]=\"inputCtrl\"\n (keydown)=\"handleInputKeydown($event)\"\n [placeholder]=\"'RDT_SELECT_ENTER_SEARCH' | rdtTranslate\"\n />\n @if (loading()) {\n <rdt-spinner />\n }\n </div>\n }\n <ul role=\"listbox\" aria-hidden=\"false\" #scrollContainer>\n @for (option of visibleOptions(); track option.id) {\n <li role=\"option\" [attr.aria-selected]=\"option.selected\">\n <button\n tabindex=\"-1\"\n [rdtSelectOption]=\"option.id\"\n (click)=\"selectOption(option.id)\"\n class=\"option\"\n type=\"button\"\n >\n <gov-icon\n name=\"check-lg\"\n [class.invisible]=\"!option.selected\"\n class=\"mr-1 w-4 picked\"\n />\n {{ $any(option.label) | rdtTranslate }}\n </button>\n </li>\n } @empty { @if (loading()) {\n <li class=\"pointer-events-none\">\n <div class=\"option\">\n {{ 'RDT_GOV_SELECT_LOADING_VALUES' | rdtTranslate }}\n </div>\n </li>\n } @else if (store.query()) {\n <li class=\"pointer-events-none\">\n <div class=\"option\">\n {{ 'RDT_GOV_SELECT_NO_VALUES_FOUND' | rdtTranslate }}\n </div>\n </li>\n } @else if (!store.datasource()?.queryRequired) {\n <li class=\"pointer-events-none\">\n <div class=\"option\">\n {{ 'RDT_GOV_SELECT_NO_VALUES_AVAILABLE' | rdtTranslate }}\n </div>\n </li>\n } }\n </ul>\n </div>\n</ng-template>\n@if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\" [attr.size]=\"size()\">\n <gov-icon\n type=\"components\"\n name=\"exclamation-triangle-fill\"\n slot=\"validation-icon\"\n ></gov-icon>\n {{ hasError }}\n</gov-form-message>\n}\n", styles: [".rdt-option-selected{background:var(--gov-autocomplete-item-hover, var(--color-neutral-600))!important;--text-primary: var(--color-primary-50) !important}.icon-warning{width:var(--icon-size)!important;height:var(--icon-size)!important}.icon-xs{--icon-size: 12px}.icon-s{--icon-size: 14px}.icon-m{--icon-size: 16px}.icon-l{--icon-size: 18px}.icon-xl{--icon-size: 20px}rdt-gov-select{display:inline-block;width:100%;max-width:100%}rdt-gov-select .gov-form-select{width:100%}rdt-gov-select .gov-form-select.has-clear .select{padding-right:calc(1.5rem + var(--spacing-s))!important}rdt-gov-select .gov-form-input{border:none!important;background-color:transparent!important}rdt-gov-select .select{display:flex}rdt-gov-select .select rdt-spinner{position:absolute;right:.5rem;width:1rem;height:1rem}rdt-gov-select [size=xs].gov-form-select .select{min-height:var(--height-component-xs);font-size:var(--font-size-body-xs)}rdt-gov-select [size=xs].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=s].gov-form-select .select{min-height:var(--height-component-s);font-size:var(--font-size-body-s)}rdt-gov-select [size=s].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=m].gov-form-select .select{min-height:var(--height-component-m);font-size:var(--font-size-body-m)}rdt-gov-select [size=m].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=l].gov-form-select .select{min-height:var(--height-component-l);font-size:var(--font-size-body-l)}rdt-gov-select [size=l].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=xl].gov-form-select .select{min-height:var(--height-component-xl);font-size:var(--font-size-body-xl)}rdt-gov-select [size=xl].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=xs].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-xs) var(--spacing-xs-nudge)}rdt-gov-select [size=s].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-s) var(--spacing-s)}rdt-gov-select [size=m].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-m) var(--spacing-s-nudge)}rdt-gov-select [size=l].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-l) var(--spacing-m)}rdt-gov-select [size=xl].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-xl) var(--spacing-m-nudge)}rdt-gov-select .gov-form-select .select{position:relative;border:none;width:100%;border-radius:var(--corner-radius-s);background-color:var(--background-block-primary);font-family:var(--font-family);text-align:left}rdt-gov-select [invalid=true].gov-form-input .select{border-color:var(--background-status-error);color:var(--background-status-error)}rdt-gov-select .icon-arrow{color:var(--text-primary);position:absolute;top:50%;display:flex;justify-content:center;transform:translateY(-50%);pointer-events:none;right:.75rem;width:.75rem;height:.75rem}rdt-gov-select .icon-warning{color:var(--icon-error);position:absolute;top:50%;display:flex;justify-content:center;transform:translateY(-50%);pointer-events:none;right:1.85rem;width:.75rem;height:.75rem}rdt-gov-select .scroll-content{display:flex;align-items:center;color:var(--text-primary);width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}rdt-gov-select .clear-button{display:flex;position:absolute;right:2rem;top:50%;transform:translateY(-50%)}rdt-gov-select .clear-button button{padding:0!important;min-height:auto!important;--icon-size-xs: 1rem}rdt-gov-select .clear-button gov-icon[slot=left-icon]{left:0!important;position:inherit!important;top:0!important;display:inline!important;transform:none!important}rdt-gov-select .element{max-width:100%}.rdt-gov-select-container{width:100%;margin-top:.5rem;margin-bottom:.5rem;overflow:hidden;border:1px solid var(--color-neutral-600);border-radius:0;background-color:var(--background-block-primary)}.rdt-gov-select-container ul{padding-left:0;margin-top:0;margin-bottom:0;list-style:none;max-height:14.0625rem;overflow-x:hidden;overflow-y:auto;overscroll-behavior:none}.rdt-gov-select-container ul .option{font-family:var(--font-family);color:var(--text-primary);border:none;display:flex;align-items:center;padding:.75rem .5rem;width:100%;margin:0;background:none;text-align:left}.rdt-gov-select-container ul .option gov-icon{padding-right:var(--spacing-s)}.rdt-gov-select-container ul .option gov-icon.invisible{display:none}.rdt-gov-select-container ul .option:hover{--text-primary: var(--color-primary-50);background:var(--color-neutral-600)}.rdt-gov-select-container li{margin-bottom:0}.rdt-gov-select-container .picked{color:var(--text-primary)}.rdt-gov-select-container .search-spinner{--spinner-size: 1.2rem;position:absolute;right:1rem;top:100%;transform:translateY(calc(var(--spinner-size) / -2))}.rdt-gov-select-container .search-spinner .sis-icon-32-fix{height:var(--spinner-size)}.rdt-gov-select-container .search-container{width:100%;position:relative}.rdt-gov-select-container .search-container input{font-family:var(--font-family);border-radius:0;border-top:1px;border-left:1px;border-right:1px;padding:.75rem .5rem;width:100%;background-color:var(--background-block-primary);color:var(--text-primary)}.rdt-gov-select-container .search-container input:focus-visible{outline:var(.125rem) solid var(--status-focus);outline-offset:0}.rdt-gov-select-container .search-container.loading input::-webkit-search-cancel-button{position:relative;right:1rem}[data-size=xs].rdt-gov-select-container ul li button{font-size:var(--font-size-body-xs)!important;line-height:var(--height-line-xs);padding:var(--spacing-multiline-vertical-padding-xs)}[data-size=xs].rdt-gov-select-container input{font-size:var(--font-size-body-xs)!important;padding:var(--spacing-multiline-vertical-padding-xs)}[data-size=s].rdt-gov-select-container ul li button{font-size:var(--font-size-body-s)!important;line-height:var(--height-line-s);padding:var(--spacing-multiline-vertical-padding-s)}[data-size=s].rdt-gov-select-container input{font-size:var(--font-size-body-s)!important;padding:var(--spacing-multiline-vertical-padding-s)}[data-size=m].rdt-gov-select-container ul li button{font-size:var(--font-size-body-m)!important;line-height:var(--height-line-m);padding:var(--spacing-multiline-vertical-padding-m)}[data-size=m].rdt-gov-select-container input{font-size:var(--font-size-body-m)!important;padding:var(--spacing-multiline-vertical-padding-m)}[data-size=l].rdt-gov-select-container ul li button{font-size:var(--font-size-body-l)!important;line-height:var(--height-line-l);padding:var(--spacing-multiline-vertical-padding-l)}[data-size=l].rdt-gov-select-container input{font-size:var(--font-size-body-l)!important;padding:var(--spacing-multiline-vertical-padding-l)}[data-size=xl].rdt-gov-select-container ul li button{font-size:var(--font-size-body-xl)!important;line-height:var(--height-line-xl);padding:var(--spacing-multiline-vertical-padding-xl)}[data-size=xl].rdt-gov-select-container input{font-size:var(--font-size-body-xl)!important;padding:var(--spacing-multiline-vertical-padding-xl)}.rdt-gov-select-overlay-panel-top .rdt-gov-select-container{display:flex;flex-direction:column-reverse}\n", ".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}\n"], dependencies: [{ kind: "directive", type: RdtSelectOptionDirective, selector: "[rdtSelectOption]", inputs: ["rdtSelectOption"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: RdtAutoFocusOnInitDirective, selector: "[rdtAutofocusOnInit]" }, { kind: "ngmodule", type: GovDesignSystemModule }, { kind: "component", type: i1.GovButton, selector: "gov-button", inputs: ["color", "disabled", "download", "expanded", "expandedMobile", "focusable", "href", "hreflang", "identifier", "loading", "name", "nativeType", "referrerpolicy", "rel", "size", "target", "type"] }, { kind: "component", type: i1.GovFormLabel, selector: "gov-form-label", inputs: ["identifier", "legend", "required", "size"] }, { kind: "component", type: i1.GovFormMessage, selector: "gov-form-message", inputs: ["color", "size"] }, { kind: "component", type: i1.GovIcon, selector: "gov-icon", inputs: ["color", "name", "size", "type"] }, { kind: "pipe", type: RdtFormErrorPipe, name: "rdtFormError" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: RdtTranslatePipe, name: "rdtTranslate" }], encapsulation: i0.ViewEncapsulation.None });
|
|
1080
|
+
], viewQueries: [{ propertyName: "scrollContainer", first: true, predicate: ["scrollContainer"], descendants: true, isSignal: true }, { propertyName: "selectButton", first: true, predicate: ["selectButton"], descendants: true, isSignal: true }, { propertyName: "overlayTemplate", first: true, predicate: ["overlayContainer"], descendants: true, isSignal: true }, { propertyName: "optionEls", predicate: (RdtSelectOptionDirective), descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@let sel = selectedLabel(); @let lPos = labelPosition(); @let hasError =\nhideErrors() ? '' : visibleErrors() | rdtFormError; @if(lPos === 'top' &&\nlabel().length>0){\n<gov-form-label slot=\"left\" [class.warning-color-gov-label]=\"hasError\" size=\"s\"\n >{{ label() }}\n @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n>\n}\n<div\n class=\"gov-form-select gov-form-input\"\n [class.has-clear]=\"showClear() && !!sel\"\n [attr.size]=\"size()\"\n [attr.invalid]=\"invalid() && touched()\"\n [attr.disabled]=\"disabled()\"\n>\n @if (lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }}\n @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n }\n <div class=\"element\">\n <button\n #selectButton\n [attr.size]=\"size()\"\n (click)=\"openOverlay()\"\n (keydown)=\"handleButtonKeydown($event)\"\n [disabled]=\"disabled()\"\n class=\"select\"\n type=\"button\"\n (blur)=\"handleButtonBlur()\"\n (focus)=\"onFocus()\"\n >\n <div class=\"scroll-content\" [class.warning-color-text]=\"hasError\">\n @if (sel) {\n {{ sel }}\n } @else if (!disabled() && !readonlyInput()) {\n {{ placeholder() || ' ' }}\n }\n </div>\n @if (showClear() && sel) {\n <gov-button\n class=\"clear-button\"\n iconStart=\"basic/x\"\n (click)=\"onClearClick($event)\"\n propagate=\"false\"\n buttonType=\"base\"\n color=\"error\"\n [rdtDisabled]=\"disabled()\"\n ></gov-button>\n } @if (loading()) {\n <rdt-spinner />\n } @else { @if(hasError){\n <gov-icon\n name=\"exclamation-lg\"\n class=\"icon-warning\"\n [ngClass]=\"'icon-' + size()\"\n ></gov-icon>\n }\n <gov-icon\n name=\"chevron-down\"\n class=\"icon-arrow\"\n [class.warning-color-icon]=\"hasError\"\n ></gov-icon>\n }\n </button>\n </div>\n @if (lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }}\n @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n }\n</div>\n<ng-template #overlayContainer>\n <div class=\"rdt-gov-select-container\" [attr.data-size]=\"size()\">\n @if (showSearch()) {\n <div class=\"search-container\" [class.loading]=\"loading()\">\n <input\n class=\"gov-form-input\"\n size=\"s\"\n type=\"search\"\n rdtAutofocusOnInit\n [formControl]=\"inputCtrl\"\n (keydown)=\"handleInputKeydown($event)\"\n [placeholder]=\"'RDT_SELECT_ENTER_SEARCH' | rdtTranslate\"\n />\n @if (loading()) {\n <rdt-spinner />\n }\n </div>\n }\n <ul role=\"listbox\" aria-hidden=\"false\" #scrollContainer>\n @for (option of visibleOptions(); track option.id) {\n <li role=\"option\" [attr.aria-selected]=\"option.selected\">\n <button\n tabindex=\"-1\"\n [rdtSelectOption]=\"option.id\"\n (click)=\"selectOption(option.id)\"\n class=\"option\"\n type=\"button\"\n >\n <gov-icon\n name=\"check-lg\"\n [class.invisible]=\"!option.selected\"\n class=\"mr-1 w-4 picked\"\n />\n {{ $any(option.label) | rdtTranslate }}\n </button>\n </li>\n } @empty { @if (loading()) {\n <li class=\"pointer-events-none\">\n <div class=\"option\">\n {{ 'RDT_GOV_SELECT_LOADING_VALUES' | rdtTranslate }}\n </div>\n </li>\n } @else if (store.query()) {\n <li class=\"pointer-events-none\">\n <div class=\"option\">\n {{ 'RDT_GOV_SELECT_NO_VALUES_FOUND' | rdtTranslate }}\n </div>\n </li>\n } @else if (!store.datasource()?.queryRequired) {\n <li class=\"pointer-events-none\">\n <div class=\"option\">\n {{ 'RDT_GOV_SELECT_NO_VALUES_AVAILABLE' | rdtTranslate }}\n </div>\n </li>\n } }\n </ul>\n </div>\n</ng-template>\n@if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\" [attr.size]=\"size()\">\n <gov-icon\n type=\"components\"\n name=\"exclamation-triangle-fill\"\n slot=\"validation-icon\"\n ></gov-icon>\n {{ hasError }}\n</gov-form-message>\n}\n", styles: [".rdt-option-selected{background:var(--gov-autocomplete-item-hover, var(--color-neutral-600))!important;--text-primary: var(--color-primary-50) !important}.icon-warning{width:var(--icon-size)!important;height:var(--icon-size)!important}.icon-xs{--icon-size: 12px}.icon-s{--icon-size: 14px}.icon-m{--icon-size: 16px}.icon-l{--icon-size: 18px}.icon-xl{--icon-size: 20px}rdt-gov-select{display:inline-block;width:100%;max-width:100%}rdt-gov-select .gov-form-select{width:100%}rdt-gov-select .gov-form-select.has-clear .select{padding-right:calc(1.5rem + var(--spacing-s))!important}rdt-gov-select .gov-form-input{border:none!important;background-color:transparent!important}rdt-gov-select .select{display:flex}rdt-gov-select .select rdt-spinner{position:absolute;right:.5rem;width:1rem;height:1rem}rdt-gov-select [size=xs].gov-form-select .select{min-height:var(--height-component-xs);font-size:var(--font-size-body-xs)}rdt-gov-select [size=xs].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=s].gov-form-select .select{min-height:var(--height-component-s);font-size:var(--font-size-body-s)}rdt-gov-select [size=s].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=m].gov-form-select .select{min-height:var(--height-component-m);font-size:var(--font-size-body-m)}rdt-gov-select [size=m].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=l].gov-form-select .select{min-height:var(--height-component-l);font-size:var(--font-size-body-l)}rdt-gov-select [size=l].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=xl].gov-form-select .select{min-height:var(--height-component-xl);font-size:var(--font-size-body-xl)}rdt-gov-select [size=xl].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=xs].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-xs) var(--spacing-xs-nudge)}rdt-gov-select [size=s].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-s) var(--spacing-s)}rdt-gov-select [size=m].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-m) var(--spacing-s-nudge)}rdt-gov-select [size=l].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-l) var(--spacing-m)}rdt-gov-select [size=xl].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-xl) var(--spacing-m-nudge)}rdt-gov-select .gov-form-select .select{position:relative;border:none;width:100%;border-radius:var(--corner-radius-s);background-color:var(--background-block-primary);font-family:var(--font-family);text-align:left}rdt-gov-select [invalid=true].gov-form-input .select{border-color:var(--background-status-error);color:var(--background-status-error)}rdt-gov-select .icon-arrow{color:var(--text-primary);position:absolute;top:50%;display:flex;justify-content:center;transform:translateY(-50%);pointer-events:none;right:.75rem;width:.75rem;height:.75rem}rdt-gov-select .icon-warning{color:var(--icon-error);position:absolute;top:50%;display:flex;justify-content:center;transform:translateY(-50%);pointer-events:none;right:1.85rem;width:.75rem;height:.75rem}rdt-gov-select .scroll-content{display:flex;align-items:center;color:var(--text-primary);width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}rdt-gov-select .clear-button{display:flex;position:absolute;right:2rem;top:50%;transform:translateY(-50%)}rdt-gov-select .clear-button button{padding:0!important;min-height:auto!important;--icon-size-xs: 1rem}rdt-gov-select .clear-button gov-icon[slot=left-icon]{left:0!important;position:inherit!important;top:0!important;display:inline!important;transform:none!important}rdt-gov-select .element{max-width:100%}.rdt-gov-select-container{width:100%;margin-top:.5rem;margin-bottom:.5rem;overflow:hidden;border:1px solid var(--color-neutral-600);border-radius:0;background-color:var(--background-block-primary)}.rdt-gov-select-container ul{padding-left:0;margin-top:0;margin-bottom:0;list-style:none;max-height:14.0625rem;overflow-x:hidden;overflow-y:auto;overscroll-behavior:none}.rdt-gov-select-container ul .option{font-family:var(--font-family);color:var(--text-primary);border:none;display:flex;align-items:center;padding:.75rem .5rem;width:100%;margin:0;background:none;text-align:left}.rdt-gov-select-container ul .option gov-icon{padding-right:var(--spacing-s)}.rdt-gov-select-container ul .option gov-icon.invisible{display:none}.rdt-gov-select-container ul .option:hover{--text-primary: var(--color-primary-50);background:var(--color-neutral-600)}.rdt-gov-select-container li{margin-bottom:0}.rdt-gov-select-container .picked{color:var(--text-primary)}.rdt-gov-select-container .search-spinner{--spinner-size: 1.2rem;position:absolute;right:1rem;top:100%;transform:translateY(calc(var(--spinner-size) / -2))}.rdt-gov-select-container .search-spinner .sis-icon-32-fix{height:var(--spinner-size)}.rdt-gov-select-container .search-container{width:100%;position:relative}.rdt-gov-select-container .search-container input{font-family:var(--font-family);border-radius:0;border-top:1px;border-left:1px;border-right:1px;padding:.75rem .5rem;width:100%;background-color:var(--background-block-primary);color:var(--text-primary)}.rdt-gov-select-container .search-container input:focus-visible{outline:var(.125rem) solid var(--status-focus);outline-offset:0}.rdt-gov-select-container .search-container.loading input::-webkit-search-cancel-button{position:relative;right:1rem}[data-size=xs].rdt-gov-select-container ul li button{font-size:var(--font-size-body-xs)!important;line-height:var(--height-line-xs);padding:var(--spacing-multiline-vertical-padding-xs)}[data-size=xs].rdt-gov-select-container input{font-size:var(--font-size-body-xs)!important;padding:var(--spacing-multiline-vertical-padding-xs)}[data-size=s].rdt-gov-select-container ul li button{font-size:var(--font-size-body-s)!important;line-height:var(--height-line-s);padding:var(--spacing-multiline-vertical-padding-s)}[data-size=s].rdt-gov-select-container input{font-size:var(--font-size-body-s)!important;padding:var(--spacing-multiline-vertical-padding-s)}[data-size=m].rdt-gov-select-container ul li button{font-size:var(--font-size-body-m)!important;line-height:var(--height-line-m);padding:var(--spacing-multiline-vertical-padding-m)}[data-size=m].rdt-gov-select-container input{font-size:var(--font-size-body-m)!important;padding:var(--spacing-multiline-vertical-padding-m)}[data-size=l].rdt-gov-select-container ul li button{font-size:var(--font-size-body-l)!important;line-height:var(--height-line-l);padding:var(--spacing-multiline-vertical-padding-l)}[data-size=l].rdt-gov-select-container input{font-size:var(--font-size-body-l)!important;padding:var(--spacing-multiline-vertical-padding-l)}[data-size=xl].rdt-gov-select-container ul li button{font-size:var(--font-size-body-xl)!important;line-height:var(--height-line-xl);padding:var(--spacing-multiline-vertical-padding-xl)}[data-size=xl].rdt-gov-select-container input{font-size:var(--font-size-body-xl)!important;padding:var(--spacing-multiline-vertical-padding-xl)}.rdt-gov-select-overlay-panel-top .rdt-gov-select-container{display:flex;flex-direction:column-reverse}\n", ".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}rdt-gov-number-input,rdt-gov-text-input,rdt-gov-select{min-width:60px}\n"], dependencies: [{ kind: "directive", type: RdtSelectOptionDirective, selector: "[rdtSelectOption]", inputs: ["rdtSelectOption"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: RdtAutoFocusOnInitDirective, selector: "[rdtAutofocusOnInit]" }, { kind: "ngmodule", type: GovDesignSystemModule }, { kind: "component", type: i1.GovButton, selector: "gov-button", inputs: ["color", "disabled", "download", "expanded", "expandedMobile", "focusable", "href", "hreflang", "identifier", "loading", "name", "nativeType", "referrerpolicy", "rel", "size", "target", "type"] }, { kind: "component", type: i1.GovFormLabel, selector: "gov-form-label", inputs: ["identifier", "legend", "required", "size"] }, { kind: "component", type: i1.GovFormMessage, selector: "gov-form-message", inputs: ["color", "size"] }, { kind: "component", type: i1.GovIcon, selector: "gov-icon", inputs: ["color", "name", "size", "type"] }, { kind: "pipe", type: RdtFormErrorPipe, name: "rdtFormError" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: RdtTranslatePipe, name: "rdtTranslate" }], encapsulation: i0.ViewEncapsulation.None });
|
|
1340
1081
|
}
|
|
1341
1082
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovSelectComponent, decorators: [{
|
|
1342
1083
|
type: Component,
|
|
@@ -1367,7 +1108,373 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
1367
1108
|
provide: RdtBaseFormInputComponent,
|
|
1368
1109
|
useExisting: RdtGovSelectComponent,
|
|
1369
1110
|
},
|
|
1370
|
-
], schemas: [CUSTOM_ELEMENTS_SCHEMA], encapsulation: ViewEncapsulation.None, template: "@let sel = selectedLabel(); @let lPos = labelPosition(); @let hasError =\nhideErrors() ? '' : visibleErrors() | rdtFormError; @if(lPos === 'top'){\n<gov-form-label slot=\"left\" [class.warning-color-gov-label]=\"hasError\" size=\"s\"\n >{{ label() }}\n @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n>\n}\n<div\n class=\"gov-form-select gov-form-input\"\n [class.has-clear]=\"showClear() && !!sel\"\n [attr.size]=\"size()\"\n [attr.invalid]=\"invalid() && touched()\"\n [attr.disabled]=\"disabled()\"\n>\n @if (lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }}\n @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n }\n <div class=\"element\">\n <button\n #selectButton\n [attr.size]=\"size()\"\n (click)=\"openOverlay()\"\n (keydown)=\"handleButtonKeydown($event)\"\n [disabled]=\"disabled()\"\n class=\"select\"\n type=\"button\"\n (blur)=\"handleButtonBlur()\"\n (focus)=\"onFocus()\"\n >\n <div class=\"scroll-content\" [class.warning-color-text]=\"hasError\">\n @if (sel) {\n {{ sel }}\n } @else if (!disabled() && !readonlyInput()) {\n {{ placeholder() || ' ' }}\n }\n </div>\n @if (showClear() && sel) {\n <gov-button\n class=\"clear-button\"\n iconStart=\"basic/x\"\n (click)=\"onClearClick($event)\"\n propagate=\"false\"\n buttonType=\"base\"\n color=\"error\"\n [rdtDisabled]=\"disabled()\"\n ></gov-button>\n } @if (loading()) {\n <rdt-spinner />\n } @else { @if(hasError){\n <gov-icon\n name=\"exclamation-lg\"\n class=\"icon-warning\"\n [ngClass]=\"'icon-' + size()\"\n ></gov-icon>\n }\n <gov-icon\n name=\"chevron-down\"\n class=\"icon-arrow\"\n [class.warning-color-icon]=\"hasError\"\n ></gov-icon>\n }\n </button>\n </div>\n @if (lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }}\n @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n }\n</div>\n<ng-template #overlayContainer>\n <div class=\"rdt-gov-select-container\" [attr.data-size]=\"size()\">\n @if (showSearch()) {\n <div class=\"search-container\" [class.loading]=\"loading()\">\n <input\n class=\"gov-form-input\"\n size=\"s\"\n type=\"search\"\n rdtAutofocusOnInit\n [formControl]=\"inputCtrl\"\n (keydown)=\"handleInputKeydown($event)\"\n [placeholder]=\"'RDT_SELECT_ENTER_SEARCH' | rdtTranslate\"\n />\n @if (loading()) {\n <rdt-spinner />\n }\n </div>\n }\n <ul role=\"listbox\" aria-hidden=\"false\" #scrollContainer>\n @for (option of visibleOptions(); track option.id) {\n <li role=\"option\" [attr.aria-selected]=\"option.selected\">\n <button\n tabindex=\"-1\"\n [rdtSelectOption]=\"option.id\"\n (click)=\"selectOption(option.id)\"\n class=\"option\"\n type=\"button\"\n >\n <gov-icon\n name=\"check-lg\"\n [class.invisible]=\"!option.selected\"\n class=\"mr-1 w-4 picked\"\n />\n {{ $any(option.label) | rdtTranslate }}\n </button>\n </li>\n } @empty { @if (loading()) {\n <li class=\"pointer-events-none\">\n <div class=\"option\">\n {{ 'RDT_GOV_SELECT_LOADING_VALUES' | rdtTranslate }}\n </div>\n </li>\n } @else if (store.query()) {\n <li class=\"pointer-events-none\">\n <div class=\"option\">\n {{ 'RDT_GOV_SELECT_NO_VALUES_FOUND' | rdtTranslate }}\n </div>\n </li>\n } @else if (!store.datasource()?.queryRequired) {\n <li class=\"pointer-events-none\">\n <div class=\"option\">\n {{ 'RDT_GOV_SELECT_NO_VALUES_AVAILABLE' | rdtTranslate }}\n </div>\n </li>\n } }\n </ul>\n </div>\n</ng-template>\n@if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\" [attr.size]=\"size()\">\n <gov-icon\n type=\"components\"\n name=\"exclamation-triangle-fill\"\n slot=\"validation-icon\"\n ></gov-icon>\n {{ hasError }}\n</gov-form-message>\n}\n", styles: [".rdt-option-selected{background:var(--gov-autocomplete-item-hover, var(--color-neutral-600))!important;--text-primary: var(--color-primary-50) !important}.icon-warning{width:var(--icon-size)!important;height:var(--icon-size)!important}.icon-xs{--icon-size: 12px}.icon-s{--icon-size: 14px}.icon-m{--icon-size: 16px}.icon-l{--icon-size: 18px}.icon-xl{--icon-size: 20px}rdt-gov-select{display:inline-block;width:100%;max-width:100%}rdt-gov-select .gov-form-select{width:100%}rdt-gov-select .gov-form-select.has-clear .select{padding-right:calc(1.5rem + var(--spacing-s))!important}rdt-gov-select .gov-form-input{border:none!important;background-color:transparent!important}rdt-gov-select .select{display:flex}rdt-gov-select .select rdt-spinner{position:absolute;right:.5rem;width:1rem;height:1rem}rdt-gov-select [size=xs].gov-form-select .select{min-height:var(--height-component-xs);font-size:var(--font-size-body-xs)}rdt-gov-select [size=xs].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=s].gov-form-select .select{min-height:var(--height-component-s);font-size:var(--font-size-body-s)}rdt-gov-select [size=s].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=m].gov-form-select .select{min-height:var(--height-component-m);font-size:var(--font-size-body-m)}rdt-gov-select [size=m].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=l].gov-form-select .select{min-height:var(--height-component-l);font-size:var(--font-size-body-l)}rdt-gov-select [size=l].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=xl].gov-form-select .select{min-height:var(--height-component-xl);font-size:var(--font-size-body-xl)}rdt-gov-select [size=xl].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=xs].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-xs) var(--spacing-xs-nudge)}rdt-gov-select [size=s].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-s) var(--spacing-s)}rdt-gov-select [size=m].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-m) var(--spacing-s-nudge)}rdt-gov-select [size=l].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-l) var(--spacing-m)}rdt-gov-select [size=xl].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-xl) var(--spacing-m-nudge)}rdt-gov-select .gov-form-select .select{position:relative;border:none;width:100%;border-radius:var(--corner-radius-s);background-color:var(--background-block-primary);font-family:var(--font-family);text-align:left}rdt-gov-select [invalid=true].gov-form-input .select{border-color:var(--background-status-error);color:var(--background-status-error)}rdt-gov-select .icon-arrow{color:var(--text-primary);position:absolute;top:50%;display:flex;justify-content:center;transform:translateY(-50%);pointer-events:none;right:.75rem;width:.75rem;height:.75rem}rdt-gov-select .icon-warning{color:var(--icon-error);position:absolute;top:50%;display:flex;justify-content:center;transform:translateY(-50%);pointer-events:none;right:1.85rem;width:.75rem;height:.75rem}rdt-gov-select .scroll-content{display:flex;align-items:center;color:var(--text-primary);width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}rdt-gov-select .clear-button{display:flex;position:absolute;right:2rem;top:50%;transform:translateY(-50%)}rdt-gov-select .clear-button button{padding:0!important;min-height:auto!important;--icon-size-xs: 1rem}rdt-gov-select .clear-button gov-icon[slot=left-icon]{left:0!important;position:inherit!important;top:0!important;display:inline!important;transform:none!important}rdt-gov-select .element{max-width:100%}.rdt-gov-select-container{width:100%;margin-top:.5rem;margin-bottom:.5rem;overflow:hidden;border:1px solid var(--color-neutral-600);border-radius:0;background-color:var(--background-block-primary)}.rdt-gov-select-container ul{padding-left:0;margin-top:0;margin-bottom:0;list-style:none;max-height:14.0625rem;overflow-x:hidden;overflow-y:auto;overscroll-behavior:none}.rdt-gov-select-container ul .option{font-family:var(--font-family);color:var(--text-primary);border:none;display:flex;align-items:center;padding:.75rem .5rem;width:100%;margin:0;background:none;text-align:left}.rdt-gov-select-container ul .option gov-icon{padding-right:var(--spacing-s)}.rdt-gov-select-container ul .option gov-icon.invisible{display:none}.rdt-gov-select-container ul .option:hover{--text-primary: var(--color-primary-50);background:var(--color-neutral-600)}.rdt-gov-select-container li{margin-bottom:0}.rdt-gov-select-container .picked{color:var(--text-primary)}.rdt-gov-select-container .search-spinner{--spinner-size: 1.2rem;position:absolute;right:1rem;top:100%;transform:translateY(calc(var(--spinner-size) / -2))}.rdt-gov-select-container .search-spinner .sis-icon-32-fix{height:var(--spinner-size)}.rdt-gov-select-container .search-container{width:100%;position:relative}.rdt-gov-select-container .search-container input{font-family:var(--font-family);border-radius:0;border-top:1px;border-left:1px;border-right:1px;padding:.75rem .5rem;width:100%;background-color:var(--background-block-primary);color:var(--text-primary)}.rdt-gov-select-container .search-container input:focus-visible{outline:var(.125rem) solid var(--status-focus);outline-offset:0}.rdt-gov-select-container .search-container.loading input::-webkit-search-cancel-button{position:relative;right:1rem}[data-size=xs].rdt-gov-select-container ul li button{font-size:var(--font-size-body-xs)!important;line-height:var(--height-line-xs);padding:var(--spacing-multiline-vertical-padding-xs)}[data-size=xs].rdt-gov-select-container input{font-size:var(--font-size-body-xs)!important;padding:var(--spacing-multiline-vertical-padding-xs)}[data-size=s].rdt-gov-select-container ul li button{font-size:var(--font-size-body-s)!important;line-height:var(--height-line-s);padding:var(--spacing-multiline-vertical-padding-s)}[data-size=s].rdt-gov-select-container input{font-size:var(--font-size-body-s)!important;padding:var(--spacing-multiline-vertical-padding-s)}[data-size=m].rdt-gov-select-container ul li button{font-size:var(--font-size-body-m)!important;line-height:var(--height-line-m);padding:var(--spacing-multiline-vertical-padding-m)}[data-size=m].rdt-gov-select-container input{font-size:var(--font-size-body-m)!important;padding:var(--spacing-multiline-vertical-padding-m)}[data-size=l].rdt-gov-select-container ul li button{font-size:var(--font-size-body-l)!important;line-height:var(--height-line-l);padding:var(--spacing-multiline-vertical-padding-l)}[data-size=l].rdt-gov-select-container input{font-size:var(--font-size-body-l)!important;padding:var(--spacing-multiline-vertical-padding-l)}[data-size=xl].rdt-gov-select-container ul li button{font-size:var(--font-size-body-xl)!important;line-height:var(--height-line-xl);padding:var(--spacing-multiline-vertical-padding-xl)}[data-size=xl].rdt-gov-select-container input{font-size:var(--font-size-body-xl)!important;padding:var(--spacing-multiline-vertical-padding-xl)}.rdt-gov-select-overlay-panel-top .rdt-gov-select-container{display:flex;flex-direction:column-reverse}\n", ".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}\n"] }]
|
|
1111
|
+
], schemas: [CUSTOM_ELEMENTS_SCHEMA], encapsulation: ViewEncapsulation.None, template: "@let sel = selectedLabel(); @let lPos = labelPosition(); @let hasError =\nhideErrors() ? '' : visibleErrors() | rdtFormError; @if(lPos === 'top' &&\nlabel().length>0){\n<gov-form-label slot=\"left\" [class.warning-color-gov-label]=\"hasError\" size=\"s\"\n >{{ label() }}\n @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n>\n}\n<div\n class=\"gov-form-select gov-form-input\"\n [class.has-clear]=\"showClear() && !!sel\"\n [attr.size]=\"size()\"\n [attr.invalid]=\"invalid() && touched()\"\n [attr.disabled]=\"disabled()\"\n>\n @if (lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }}\n @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n }\n <div class=\"element\">\n <button\n #selectButton\n [attr.size]=\"size()\"\n (click)=\"openOverlay()\"\n (keydown)=\"handleButtonKeydown($event)\"\n [disabled]=\"disabled()\"\n class=\"select\"\n type=\"button\"\n (blur)=\"handleButtonBlur()\"\n (focus)=\"onFocus()\"\n >\n <div class=\"scroll-content\" [class.warning-color-text]=\"hasError\">\n @if (sel) {\n {{ sel }}\n } @else if (!disabled() && !readonlyInput()) {\n {{ placeholder() || ' ' }}\n }\n </div>\n @if (showClear() && sel) {\n <gov-button\n class=\"clear-button\"\n iconStart=\"basic/x\"\n (click)=\"onClearClick($event)\"\n propagate=\"false\"\n buttonType=\"base\"\n color=\"error\"\n [rdtDisabled]=\"disabled()\"\n ></gov-button>\n } @if (loading()) {\n <rdt-spinner />\n } @else { @if(hasError){\n <gov-icon\n name=\"exclamation-lg\"\n class=\"icon-warning\"\n [ngClass]=\"'icon-' + size()\"\n ></gov-icon>\n }\n <gov-icon\n name=\"chevron-down\"\n class=\"icon-arrow\"\n [class.warning-color-icon]=\"hasError\"\n ></gov-icon>\n }\n </button>\n </div>\n @if (lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }}\n @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n }\n</div>\n<ng-template #overlayContainer>\n <div class=\"rdt-gov-select-container\" [attr.data-size]=\"size()\">\n @if (showSearch()) {\n <div class=\"search-container\" [class.loading]=\"loading()\">\n <input\n class=\"gov-form-input\"\n size=\"s\"\n type=\"search\"\n rdtAutofocusOnInit\n [formControl]=\"inputCtrl\"\n (keydown)=\"handleInputKeydown($event)\"\n [placeholder]=\"'RDT_SELECT_ENTER_SEARCH' | rdtTranslate\"\n />\n @if (loading()) {\n <rdt-spinner />\n }\n </div>\n }\n <ul role=\"listbox\" aria-hidden=\"false\" #scrollContainer>\n @for (option of visibleOptions(); track option.id) {\n <li role=\"option\" [attr.aria-selected]=\"option.selected\">\n <button\n tabindex=\"-1\"\n [rdtSelectOption]=\"option.id\"\n (click)=\"selectOption(option.id)\"\n class=\"option\"\n type=\"button\"\n >\n <gov-icon\n name=\"check-lg\"\n [class.invisible]=\"!option.selected\"\n class=\"mr-1 w-4 picked\"\n />\n {{ $any(option.label) | rdtTranslate }}\n </button>\n </li>\n } @empty { @if (loading()) {\n <li class=\"pointer-events-none\">\n <div class=\"option\">\n {{ 'RDT_GOV_SELECT_LOADING_VALUES' | rdtTranslate }}\n </div>\n </li>\n } @else if (store.query()) {\n <li class=\"pointer-events-none\">\n <div class=\"option\">\n {{ 'RDT_GOV_SELECT_NO_VALUES_FOUND' | rdtTranslate }}\n </div>\n </li>\n } @else if (!store.datasource()?.queryRequired) {\n <li class=\"pointer-events-none\">\n <div class=\"option\">\n {{ 'RDT_GOV_SELECT_NO_VALUES_AVAILABLE' | rdtTranslate }}\n </div>\n </li>\n } }\n </ul>\n </div>\n</ng-template>\n@if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\" [attr.size]=\"size()\">\n <gov-icon\n type=\"components\"\n name=\"exclamation-triangle-fill\"\n slot=\"validation-icon\"\n ></gov-icon>\n {{ hasError }}\n</gov-form-message>\n}\n", styles: [".rdt-option-selected{background:var(--gov-autocomplete-item-hover, var(--color-neutral-600))!important;--text-primary: var(--color-primary-50) !important}.icon-warning{width:var(--icon-size)!important;height:var(--icon-size)!important}.icon-xs{--icon-size: 12px}.icon-s{--icon-size: 14px}.icon-m{--icon-size: 16px}.icon-l{--icon-size: 18px}.icon-xl{--icon-size: 20px}rdt-gov-select{display:inline-block;width:100%;max-width:100%}rdt-gov-select .gov-form-select{width:100%}rdt-gov-select .gov-form-select.has-clear .select{padding-right:calc(1.5rem + var(--spacing-s))!important}rdt-gov-select .gov-form-input{border:none!important;background-color:transparent!important}rdt-gov-select .select{display:flex}rdt-gov-select .select rdt-spinner{position:absolute;right:.5rem;width:1rem;height:1rem}rdt-gov-select [size=xs].gov-form-select .select{min-height:var(--height-component-xs);font-size:var(--font-size-body-xs)}rdt-gov-select [size=xs].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=s].gov-form-select .select{min-height:var(--height-component-s);font-size:var(--font-size-body-s)}rdt-gov-select [size=s].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=m].gov-form-select .select{min-height:var(--height-component-m);font-size:var(--font-size-body-m)}rdt-gov-select [size=m].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=l].gov-form-select .select{min-height:var(--height-component-l);font-size:var(--font-size-body-l)}rdt-gov-select [size=l].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=xl].gov-form-select .select{min-height:var(--height-component-xl);font-size:var(--font-size-body-xl)}rdt-gov-select [size=xl].gov-form-select .select:hover{background-color:var(--button-outlined-primary-hover)}rdt-gov-select [size=xs].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-xs) var(--spacing-xs-nudge)}rdt-gov-select [size=s].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-s) var(--spacing-s)}rdt-gov-select [size=m].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-m) var(--spacing-s-nudge)}rdt-gov-select [size=l].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-l) var(--spacing-m)}rdt-gov-select [size=xl].gov-form-select .select{padding:var(--spacing-multiline-vertical-padding-xl) var(--spacing-m-nudge)}rdt-gov-select .gov-form-select .select{position:relative;border:none;width:100%;border-radius:var(--corner-radius-s);background-color:var(--background-block-primary);font-family:var(--font-family);text-align:left}rdt-gov-select [invalid=true].gov-form-input .select{border-color:var(--background-status-error);color:var(--background-status-error)}rdt-gov-select .icon-arrow{color:var(--text-primary);position:absolute;top:50%;display:flex;justify-content:center;transform:translateY(-50%);pointer-events:none;right:.75rem;width:.75rem;height:.75rem}rdt-gov-select .icon-warning{color:var(--icon-error);position:absolute;top:50%;display:flex;justify-content:center;transform:translateY(-50%);pointer-events:none;right:1.85rem;width:.75rem;height:.75rem}rdt-gov-select .scroll-content{display:flex;align-items:center;color:var(--text-primary);width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}rdt-gov-select .clear-button{display:flex;position:absolute;right:2rem;top:50%;transform:translateY(-50%)}rdt-gov-select .clear-button button{padding:0!important;min-height:auto!important;--icon-size-xs: 1rem}rdt-gov-select .clear-button gov-icon[slot=left-icon]{left:0!important;position:inherit!important;top:0!important;display:inline!important;transform:none!important}rdt-gov-select .element{max-width:100%}.rdt-gov-select-container{width:100%;margin-top:.5rem;margin-bottom:.5rem;overflow:hidden;border:1px solid var(--color-neutral-600);border-radius:0;background-color:var(--background-block-primary)}.rdt-gov-select-container ul{padding-left:0;margin-top:0;margin-bottom:0;list-style:none;max-height:14.0625rem;overflow-x:hidden;overflow-y:auto;overscroll-behavior:none}.rdt-gov-select-container ul .option{font-family:var(--font-family);color:var(--text-primary);border:none;display:flex;align-items:center;padding:.75rem .5rem;width:100%;margin:0;background:none;text-align:left}.rdt-gov-select-container ul .option gov-icon{padding-right:var(--spacing-s)}.rdt-gov-select-container ul .option gov-icon.invisible{display:none}.rdt-gov-select-container ul .option:hover{--text-primary: var(--color-primary-50);background:var(--color-neutral-600)}.rdt-gov-select-container li{margin-bottom:0}.rdt-gov-select-container .picked{color:var(--text-primary)}.rdt-gov-select-container .search-spinner{--spinner-size: 1.2rem;position:absolute;right:1rem;top:100%;transform:translateY(calc(var(--spinner-size) / -2))}.rdt-gov-select-container .search-spinner .sis-icon-32-fix{height:var(--spinner-size)}.rdt-gov-select-container .search-container{width:100%;position:relative}.rdt-gov-select-container .search-container input{font-family:var(--font-family);border-radius:0;border-top:1px;border-left:1px;border-right:1px;padding:.75rem .5rem;width:100%;background-color:var(--background-block-primary);color:var(--text-primary)}.rdt-gov-select-container .search-container input:focus-visible{outline:var(.125rem) solid var(--status-focus);outline-offset:0}.rdt-gov-select-container .search-container.loading input::-webkit-search-cancel-button{position:relative;right:1rem}[data-size=xs].rdt-gov-select-container ul li button{font-size:var(--font-size-body-xs)!important;line-height:var(--height-line-xs);padding:var(--spacing-multiline-vertical-padding-xs)}[data-size=xs].rdt-gov-select-container input{font-size:var(--font-size-body-xs)!important;padding:var(--spacing-multiline-vertical-padding-xs)}[data-size=s].rdt-gov-select-container ul li button{font-size:var(--font-size-body-s)!important;line-height:var(--height-line-s);padding:var(--spacing-multiline-vertical-padding-s)}[data-size=s].rdt-gov-select-container input{font-size:var(--font-size-body-s)!important;padding:var(--spacing-multiline-vertical-padding-s)}[data-size=m].rdt-gov-select-container ul li button{font-size:var(--font-size-body-m)!important;line-height:var(--height-line-m);padding:var(--spacing-multiline-vertical-padding-m)}[data-size=m].rdt-gov-select-container input{font-size:var(--font-size-body-m)!important;padding:var(--spacing-multiline-vertical-padding-m)}[data-size=l].rdt-gov-select-container ul li button{font-size:var(--font-size-body-l)!important;line-height:var(--height-line-l);padding:var(--spacing-multiline-vertical-padding-l)}[data-size=l].rdt-gov-select-container input{font-size:var(--font-size-body-l)!important;padding:var(--spacing-multiline-vertical-padding-l)}[data-size=xl].rdt-gov-select-container ul li button{font-size:var(--font-size-body-xl)!important;line-height:var(--height-line-xl);padding:var(--spacing-multiline-vertical-padding-xl)}[data-size=xl].rdt-gov-select-container input{font-size:var(--font-size-body-xl)!important;padding:var(--spacing-multiline-vertical-padding-xl)}.rdt-gov-select-overlay-panel-top .rdt-gov-select-container{display:flex;flex-direction:column-reverse}\n", ".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}rdt-gov-number-input,rdt-gov-text-input,rdt-gov-select{min-width:60px}\n"] }]
|
|
1112
|
+
}] });
|
|
1113
|
+
|
|
1114
|
+
function provideNgrdtGov(options = {}) {
|
|
1115
|
+
return [
|
|
1116
|
+
importProvidersFrom(GovDesignSystemModule),
|
|
1117
|
+
{
|
|
1118
|
+
provide: RDT_ICON_BASE_PROVIDER,
|
|
1119
|
+
useValue: RdtGovIconComponent,
|
|
1120
|
+
},
|
|
1121
|
+
{
|
|
1122
|
+
provide: RDT_CHECKBOX_BASE_PROVIDER,
|
|
1123
|
+
useValue: RdtGovCheckboxComponent,
|
|
1124
|
+
},
|
|
1125
|
+
{
|
|
1126
|
+
provide: RDT_BUTTON_BASE_PROVIDER,
|
|
1127
|
+
useValue: RdtGovButtonComponent,
|
|
1128
|
+
},
|
|
1129
|
+
{
|
|
1130
|
+
provide: RDT_NUMERIC_INPUT_BASE_PROVIDER,
|
|
1131
|
+
useValue: RdtGovNumberInputComponent,
|
|
1132
|
+
},
|
|
1133
|
+
{
|
|
1134
|
+
provide: RDT_SELECT_BASE_PROVIDER,
|
|
1135
|
+
useValue: RdtGovSelectComponent,
|
|
1136
|
+
},
|
|
1137
|
+
{
|
|
1138
|
+
provide: RDT_ICON_REGISTRY_PROVIDER,
|
|
1139
|
+
useValue: {
|
|
1140
|
+
[RdtIcon.MenuArrowRight]: 'components/chevron-right',
|
|
1141
|
+
[RdtIcon.MenuArrowDown]: 'components/chevron-down',
|
|
1142
|
+
[RdtIcon.SkipDoubleLeft]: 'components/chevron-double-left',
|
|
1143
|
+
[RdtIcon.SkipDoubleRight]: 'components/chevron-double-right',
|
|
1144
|
+
[RdtIcon.SkipLeft]: 'components/chevron-left',
|
|
1145
|
+
[RdtIcon.SkipRight]: 'components/chevron-right',
|
|
1146
|
+
[RdtIcon.SortAsc]: 'bs/sort-down',
|
|
1147
|
+
[RdtIcon.SortDesc]: 'bs/sort-up',
|
|
1148
|
+
[RdtIcon.SortEnabled]: 'bs/filter',
|
|
1149
|
+
},
|
|
1150
|
+
},
|
|
1151
|
+
{
|
|
1152
|
+
provide: RDT_GOV_NOTIFICATION_CONFIG_PROVIDER,
|
|
1153
|
+
useValue: {
|
|
1154
|
+
duration: 3000,
|
|
1155
|
+
positionVert: 'top',
|
|
1156
|
+
positionHoriz: 'right',
|
|
1157
|
+
},
|
|
1158
|
+
},
|
|
1159
|
+
{
|
|
1160
|
+
provide: RDT_NOTIFICATION_SERVICE_PROVIDER,
|
|
1161
|
+
useFactory: () => inject(RdtGovNotificationService),
|
|
1162
|
+
},
|
|
1163
|
+
{
|
|
1164
|
+
provide: RDT_DIALOG_SERVICE_PROVIDER,
|
|
1165
|
+
useFactory: () => inject(RdtGovDialogService),
|
|
1166
|
+
},
|
|
1167
|
+
{
|
|
1168
|
+
provide: RDT_GOV_ALERT_DIALOG_CONFIG_PROVIDER,
|
|
1169
|
+
useValue: {
|
|
1170
|
+
minHeight: '250px',
|
|
1171
|
+
},
|
|
1172
|
+
},
|
|
1173
|
+
{
|
|
1174
|
+
provide: RDT_GOV_CONFIRM_DIALOG_CONFIG_PROVIDER,
|
|
1175
|
+
useValue: {
|
|
1176
|
+
minHeight: '250px',
|
|
1177
|
+
},
|
|
1178
|
+
},
|
|
1179
|
+
{
|
|
1180
|
+
provide: RDT_GOV_BASE_DIALOG_CONFIG_PROVIDER,
|
|
1181
|
+
useValue: {
|
|
1182
|
+
isDraggable: false,
|
|
1183
|
+
minHeight: '400px',
|
|
1184
|
+
},
|
|
1185
|
+
},
|
|
1186
|
+
{
|
|
1187
|
+
provide: RDT_SPINNER_BASE_PROVIDER,
|
|
1188
|
+
useValue: RdtGovSpinnerComponent,
|
|
1189
|
+
},
|
|
1190
|
+
{ provide: MAT_DATE_LOCALE, useValue: 'cs-CZ' },
|
|
1191
|
+
{ provide: LOCALE_ID, useValue: 'cs-CZ' },
|
|
1192
|
+
{ provide: MatDatepickerIntl, useClass: RdtDatepickerIntl },
|
|
1193
|
+
{
|
|
1194
|
+
provide: RDT_FORM_ERROR_CODES_PROVIDER,
|
|
1195
|
+
useValue: defaultRdtFormErrorCodes,
|
|
1196
|
+
},
|
|
1197
|
+
provideDateFnsAdapter(),
|
|
1198
|
+
];
|
|
1199
|
+
}
|
|
1200
|
+
|
|
1201
|
+
function initRdtGov(config = {}) {
|
|
1202
|
+
const defaultConfig = {
|
|
1203
|
+
iconsPath: 'icons',
|
|
1204
|
+
};
|
|
1205
|
+
window.GOV_DS_CONFIG = { ...defaultConfig, ...config };
|
|
1206
|
+
defineCustomElements(window);
|
|
1207
|
+
}
|
|
1208
|
+
|
|
1209
|
+
class RdtGovDateComponent extends RdtDateComponent {
|
|
1210
|
+
translateService = inject(RdtTranslateService);
|
|
1211
|
+
dateAdapter = inject(DateAdapter);
|
|
1212
|
+
dateInput = viewChild('dateInput');
|
|
1213
|
+
timeInput = viewChild('timeInput');
|
|
1214
|
+
size = input('s');
|
|
1215
|
+
labelPositionInput = input('top', {
|
|
1216
|
+
alias: 'labelPosition',
|
|
1217
|
+
});
|
|
1218
|
+
labelPosition = linkedSignal(() => this.labelPositionInput());
|
|
1219
|
+
showSeconds = input(false, { transform: booleanAttribute });
|
|
1220
|
+
stepInput = input(undefined, {
|
|
1221
|
+
alias: 'step',
|
|
1222
|
+
transform: numberAttribute,
|
|
1223
|
+
});
|
|
1224
|
+
step = linkedSignal(() => {
|
|
1225
|
+
return this.stepInput() ?? (this.showSeconds() ? 1 : undefined);
|
|
1226
|
+
});
|
|
1227
|
+
dateInputFocused = false;
|
|
1228
|
+
// Current value of physical date input field
|
|
1229
|
+
dateInputValue = signal(null);
|
|
1230
|
+
// Current value of physical time input field
|
|
1231
|
+
timeInputValue = signal('');
|
|
1232
|
+
internalTimeFormat = computed(() => this.showSeconds() ? 'HH:mm:ss' : 'HH:mm');
|
|
1233
|
+
defaultTime = computed(() => this.showSeconds() ? '00:00:00' : '00:00');
|
|
1234
|
+
localeUsed = computed(() => this.translateService.currentFormat().dateFnsLocale);
|
|
1235
|
+
hasDate = computed(() => this.type() !== 'time');
|
|
1236
|
+
hasTime = computed(() => this.type() !== 'date');
|
|
1237
|
+
internalTimeValue = computed(() => {
|
|
1238
|
+
const value = this.internalValue();
|
|
1239
|
+
if (!value) {
|
|
1240
|
+
return '';
|
|
1241
|
+
}
|
|
1242
|
+
const time = this.formatTime(value);
|
|
1243
|
+
// This condition prevents adding zeros for seconds while typing
|
|
1244
|
+
// E.g. 12:34 won't get changed to 12:34:00 automatically and it's valid value
|
|
1245
|
+
if (this.timeInputValue() !== time &&
|
|
1246
|
+
this.isValidTime(this.timeInputValue()) &&
|
|
1247
|
+
time.startsWith(this.timeInputValue())) {
|
|
1248
|
+
return this.timeInputValue();
|
|
1249
|
+
}
|
|
1250
|
+
return time;
|
|
1251
|
+
});
|
|
1252
|
+
isEmpty(value) {
|
|
1253
|
+
return value === null;
|
|
1254
|
+
}
|
|
1255
|
+
// Update DateAdapter locale when current locale changes
|
|
1256
|
+
dateFnsLocaleEffect = effect(() => {
|
|
1257
|
+
this.dateAdapter.setLocale(this.localeUsed());
|
|
1258
|
+
});
|
|
1259
|
+
toExternalValue(internalValue) {
|
|
1260
|
+
if (!internalValue) {
|
|
1261
|
+
return null;
|
|
1262
|
+
}
|
|
1263
|
+
return this.dateAdapter.format(internalValue, this.formControlFormat());
|
|
1264
|
+
}
|
|
1265
|
+
toInternalValue(externalValue) {
|
|
1266
|
+
if (!externalValue) {
|
|
1267
|
+
return null;
|
|
1268
|
+
}
|
|
1269
|
+
const parsed = this.dateAdapter.parse(externalValue, this.formControlFormat());
|
|
1270
|
+
if (!isValid(parsed)) {
|
|
1271
|
+
console.error(`Date field labeled "${this.label()}" was set invalid value "${externalValue}". Expected FormControl format: "${this.formControlFormat()}"`);
|
|
1272
|
+
return null;
|
|
1273
|
+
}
|
|
1274
|
+
return parsed;
|
|
1275
|
+
}
|
|
1276
|
+
/**
|
|
1277
|
+
* Prevents unnecessary change emissions on FormControl
|
|
1278
|
+
* @returns True if both Date objects represent the same point in time
|
|
1279
|
+
*/
|
|
1280
|
+
areInternalValuesEqual(value1, value2) {
|
|
1281
|
+
if (value1 === null && value2 === null) {
|
|
1282
|
+
return true;
|
|
1283
|
+
}
|
|
1284
|
+
if (value1 === null || value2 === null) {
|
|
1285
|
+
return false;
|
|
1286
|
+
}
|
|
1287
|
+
return value1.getTime() === value2.getTime();
|
|
1288
|
+
}
|
|
1289
|
+
writeValue(value) {
|
|
1290
|
+
super.writeValue(value);
|
|
1291
|
+
const internalValue = this.toInternalValue(value);
|
|
1292
|
+
// Update physical input fields when FormControl value changes
|
|
1293
|
+
// Necessary before user interaction
|
|
1294
|
+
if (internalValue) {
|
|
1295
|
+
this.dateInputValue.set(internalValue);
|
|
1296
|
+
this.timeInputValue.set(this.formatTime(internalValue));
|
|
1297
|
+
}
|
|
1298
|
+
else {
|
|
1299
|
+
this.dateInputValue.set(null);
|
|
1300
|
+
this.timeInputValue.set('');
|
|
1301
|
+
}
|
|
1302
|
+
}
|
|
1303
|
+
onDateInput(event) {
|
|
1304
|
+
const dateValue = event.value;
|
|
1305
|
+
if (!dateValue) {
|
|
1306
|
+
// Clear FormControl value when date is invalid
|
|
1307
|
+
// Keep internal state
|
|
1308
|
+
this.dateInputValue.set(null);
|
|
1309
|
+
this.onChange(null);
|
|
1310
|
+
}
|
|
1311
|
+
else {
|
|
1312
|
+
this.dateInputValue.set(dateValue);
|
|
1313
|
+
this.onDateChange(dateValue);
|
|
1314
|
+
}
|
|
1315
|
+
}
|
|
1316
|
+
onTimeChange(event) {
|
|
1317
|
+
const value = event.target.value;
|
|
1318
|
+
let internalValue = this.internalValue();
|
|
1319
|
+
if (!this.hasDate()) {
|
|
1320
|
+
internalValue ??= this.emptyTimeDate;
|
|
1321
|
+
}
|
|
1322
|
+
const dateOk = internalValue && (this.dateInputValue() || !this.hasDate());
|
|
1323
|
+
if (this.isValidTime(value) && internalValue && dateOk) {
|
|
1324
|
+
const newDate = this.populateTime(new Date(internalValue), value);
|
|
1325
|
+
this.onInternalValueChange(newDate);
|
|
1326
|
+
}
|
|
1327
|
+
this.timeInputValue.set(value);
|
|
1328
|
+
}
|
|
1329
|
+
onDateChange(date) {
|
|
1330
|
+
const value = date ?? null;
|
|
1331
|
+
const internalValueOld = this.internalValue();
|
|
1332
|
+
const timeInputValue = this.timeInputValue();
|
|
1333
|
+
// If both newly selected date and time input are valid, combine them
|
|
1334
|
+
if (value && timeInputValue) {
|
|
1335
|
+
this.populateTime(value, timeInputValue);
|
|
1336
|
+
}
|
|
1337
|
+
// Set internal value
|
|
1338
|
+
this.onInternalValueChange(value);
|
|
1339
|
+
// In case date input is focused, revert internal value
|
|
1340
|
+
// to original value before Date change event
|
|
1341
|
+
// while keeping external value and FormControl value updated
|
|
1342
|
+
// This prevents unexpected changes to date and time inputs while typing
|
|
1343
|
+
// New internal value will be set on date input blur
|
|
1344
|
+
if (this.dateInputFocused) {
|
|
1345
|
+
this.internalValue.set(internalValueOld);
|
|
1346
|
+
}
|
|
1347
|
+
}
|
|
1348
|
+
onDateInputFocus() {
|
|
1349
|
+
this.dateInputFocused = true;
|
|
1350
|
+
this.onFocus();
|
|
1351
|
+
}
|
|
1352
|
+
onDateInputBlur() {
|
|
1353
|
+
this.dateInputFocused = false;
|
|
1354
|
+
// Set internal value to the combined date and time from inputs
|
|
1355
|
+
// In case date and/or time input is invalid, internal value will not change
|
|
1356
|
+
const dateTimeFromInputs = this.getDateTimeFromInputs();
|
|
1357
|
+
if (dateTimeFromInputs) {
|
|
1358
|
+
this.onInternalValueChange(dateTimeFromInputs);
|
|
1359
|
+
}
|
|
1360
|
+
this.onBlur();
|
|
1361
|
+
}
|
|
1362
|
+
/**
|
|
1363
|
+
* Returns Date object constructed from current date and time input values
|
|
1364
|
+
* or null if either input is invalid
|
|
1365
|
+
*/
|
|
1366
|
+
getDateTimeFromInputs() {
|
|
1367
|
+
const dateInputValue = this.dateInputValue();
|
|
1368
|
+
const timeInputValue = this.timeInputValue();
|
|
1369
|
+
if (!timeInputValue || !dateInputValue) {
|
|
1370
|
+
return null;
|
|
1371
|
+
}
|
|
1372
|
+
else {
|
|
1373
|
+
const newInternal = new Date(dateInputValue);
|
|
1374
|
+
this.populateTime(newInternal, timeInputValue);
|
|
1375
|
+
return newInternal;
|
|
1376
|
+
}
|
|
1377
|
+
}
|
|
1378
|
+
onTimeInputFocus() {
|
|
1379
|
+
this.onFocus();
|
|
1380
|
+
}
|
|
1381
|
+
onTimeInputBlur() {
|
|
1382
|
+
const timeInputEl = this.timeInput()?.nativeElement;
|
|
1383
|
+
if (!timeInputEl) {
|
|
1384
|
+
return;
|
|
1385
|
+
}
|
|
1386
|
+
const value = timeInputEl?.value ?? '';
|
|
1387
|
+
// Emit null value to FormControl in case time is blurred while invalid (empty slots), ,
|
|
1388
|
+
// Keep internal state intacted to prevent unexpected changes to input fields
|
|
1389
|
+
if (!value) {
|
|
1390
|
+
this.onChange(null);
|
|
1391
|
+
}
|
|
1392
|
+
this.onBlur();
|
|
1393
|
+
}
|
|
1394
|
+
/**
|
|
1395
|
+
* Helper function to format a Date object to a time string
|
|
1396
|
+
*/
|
|
1397
|
+
formatTime(date) {
|
|
1398
|
+
if (this.type() === 'date') {
|
|
1399
|
+
return this.defaultTime();
|
|
1400
|
+
}
|
|
1401
|
+
try {
|
|
1402
|
+
const locale = this.localeUsed();
|
|
1403
|
+
const timeFormat = this.internalTimeFormat();
|
|
1404
|
+
return format(date, timeFormat, { locale });
|
|
1405
|
+
}
|
|
1406
|
+
catch (e) {
|
|
1407
|
+
console.log('Error formatting date: ', date, 'target format: ', this.internalTimeFormat());
|
|
1408
|
+
console.error(e);
|
|
1409
|
+
return this.defaultTime();
|
|
1410
|
+
}
|
|
1411
|
+
}
|
|
1412
|
+
/**
|
|
1413
|
+
* Helper function to populate a Date object with time from a string
|
|
1414
|
+
* in the format HH:mm or HH:mm:ss
|
|
1415
|
+
*/
|
|
1416
|
+
populateTime(date, timeString) {
|
|
1417
|
+
const timeParts = timeString.split(':').map((part) => parseInt(part, 10));
|
|
1418
|
+
date.setHours(timeParts[0] || 0, timeParts[1] || 0, timeParts[2] || 0, 0);
|
|
1419
|
+
return date;
|
|
1420
|
+
}
|
|
1421
|
+
isValidTime(value) {
|
|
1422
|
+
if (!value) {
|
|
1423
|
+
return false;
|
|
1424
|
+
}
|
|
1425
|
+
return /^(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d{1,3})?)?$/.test(value);
|
|
1426
|
+
}
|
|
1427
|
+
async focus() {
|
|
1428
|
+
this.dateInput()?.nativeElement.focus();
|
|
1429
|
+
}
|
|
1430
|
+
canFocus() {
|
|
1431
|
+
return new Promise((resolve) => {
|
|
1432
|
+
setTimeout(() => {
|
|
1433
|
+
const elRef = this.dateInput();
|
|
1434
|
+
resolve(!!elRef?.nativeElement);
|
|
1435
|
+
}, 1);
|
|
1436
|
+
});
|
|
1437
|
+
}
|
|
1438
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovDateComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
1439
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: RdtGovDateComponent, isStandalone: true, selector: "rdt-gov-date", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, labelPositionInput: { classPropertyName: "labelPositionInput", publicName: "labelPosition", isSignal: true, isRequired: false, transformFunction: null }, showSeconds: { classPropertyName: "showSeconds", publicName: "showSeconds", isSignal: true, isRequired: false, transformFunction: null }, stepInput: { classPropertyName: "stepInput", publicName: "step", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
1440
|
+
{
|
|
1441
|
+
provide: NG_VALUE_ACCESSOR,
|
|
1442
|
+
useExisting: RdtGovDateComponent,
|
|
1443
|
+
multi: true,
|
|
1444
|
+
},
|
|
1445
|
+
{
|
|
1446
|
+
provide: RdtBaseFormInputComponent,
|
|
1447
|
+
useExisting: RdtGovDateComponent,
|
|
1448
|
+
},
|
|
1449
|
+
{
|
|
1450
|
+
provide: RdtDateComponent,
|
|
1451
|
+
useExisting: RdtGovDateComponent,
|
|
1452
|
+
},
|
|
1453
|
+
], viewQueries: [{ propertyName: "dateInput", first: true, predicate: ["dateInput"], descendants: true, isSignal: true }, { propertyName: "timeInput", first: true, predicate: ["timeInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@let lPos = labelPosition();\n<div class=\"rdt-date-wrapper\" [class]=\"lPos\">\n @if(lPos) {\n <p\n class=\"gov-form-label__label s_label\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n }\n <div\n class=\"rdt-date-field-wrapper gov-form-input\"\n [attr.size]=\"size()\"\n [attr.disabled]=\"disabled() ? true : undefined\"\n >\n @if(type() === 'date' || type() === 'datetime-local'){\n <div class=\"rdt-date-field-position date\">\n <input\n class=\"rdt-date-field\"\n #dateInput\n matInput\n [attr.invalid]=\"invalid() && touched()\"\n [attr.readonly]=\"readonlyInput() ? true : null\"\n [attr.size]=\"size()\"\n [name]=\"name()\"\n [value]=\"internalValue()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [matDatepicker]=\"picker\"\n (focus)=\"onDateInputFocus()\"\n (blur)=\"onDateInputBlur()\"\n (dateInput)=\"onDateInput($event)\"\n (dateChange)=\"onDateInput($event)\"\n />\n <div class=\"gov-form-input__icons\">\n <gov-icon\n class=\"validation-icon gov-icon\"\n name=\"exclamation-lg\"\n type=\"components\"\n [attr.size]=\"size()\"\n >\n </gov-icon>\n </div>\n <mat-datepicker-toggle\n [attr.size]=\"size()\"\n matIconSuffix\n [for]=\"picker\"\n [disableRipple]=\"true\"\n >\n <!-- <mat-icon matDatepickerToggleIcon>keyboard_arrow_down</mat-icon> //moznost vlastni ikonky-->\n </mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </div>\n } @if(type() === 'datetime-local' || type() === 'time'){\n <div class=\"rdt-date-field-position time\">\n <input\n class=\"rdt-date-field\"\n type=\"time\"\n #timeInput\n (input)=\"onTimeChange($event)\"\n matInput\n [attr.invalid]=\"invalid() && touched()\"\n [step]=\"step()\"\n [attr.readonly]=\"readonlyInput() ? true : undefined\"\n [attr.size]=\"size()\"\n [name]=\"name()\"\n [value]=\"internalTimeValue()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n (focus)=\"onTimeInputFocus()\"\n (blur)=\"onTimeInputBlur()\"\n />\n <div class=\"gov-form-input__icons\">\n <gov-icon\n class=\"validation-icon gov-icon\"\n name=\"exclamation-lg\"\n type=\"components\"\n [attr.size]=\"size()\"\n >\n </gov-icon>\n </div>\n </div>\n }\n </div>\n</div>\n@let hasError = visibleErrors() | rdtFormError; @if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\" [attr.size]=\"size()\">\n <gov-icon\n type=\"components\"\n name=\"exclamation-triangle-fill\"\n slot=\"validation-icon\"\n ></gov-icon>\n {{ hasError }}\n</gov-form-message>\n}\n", styles: [".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}rdt-gov-number-input,rdt-gov-text-input,rdt-gov-select{min-width:60px}\n", ".rdt-date-wrapper{width:100%}.rdt-date-wrapper mat-datepicker-toggle,.rdt-date-wrapper mat-timepicker-toggle{position:absolute}.rdt-date-wrapper.right{display:flex;align-items:center;flex-direction:row-reverse;gap:var(--gap, var(--spacing-s))}.rdt-date-wrapper.left{display:flex;align-items:center;flex-direction:row;gap:var(--gap, var(--spacing-s))}.rdt-date-wrapper.top{display:flex;flex-direction:column;gap:var(--gap, var(--spacing-xs))}.rdt-date-wrapper .gov-form-input__icons{display:var(--exclamation-mark-display, none)}.rdt-date-wrapper mat-datepicker-toggle,.rdt-date-wrapper mat-timepicker-toggle{--mat-icon-button-touch-target-size: calc( var(--padding-horizontal) + var(--icon-size) + var(--gap) );--mat-icon-button-state-layer-size: var( --mat-icon-button-touch-target-size );right:calc(var(--exclamation-mark-width, 0px) + var(--exclamation-mark-offset, 0px))}.rdt-date-wrapper mat-datepicker-toggle button,.rdt-date-wrapper mat-timepicker-toggle button{display:flex;justify-content:center;align-items:center;height:var(--mat-icon-button-state-layer-size)}.rdt-date-wrapper mat-datepicker-toggle button svg,.rdt-date-wrapper mat-timepicker-toggle button svg{width:var(--icon-size);height:var(--icon-size)}.rdt-date-wrapper mat-datepicker-toggle[size=xl],.rdt-date-wrapper mat-timepicker-toggle[size=xl]{--padding-horizontal: var(--spacing-m-nudge);--icon-size: var(--icon-size-xl);--gap: var(--spacing-m)}.rdt-date-wrapper mat-datepicker-toggle[size=l],.rdt-date-wrapper mat-timepicker-toggle[size=l]{--padding-horizontal: var(--spacing-s-nudge);--icon-size: var(--icon-size-l);--gap: var(--spacing-m)}.rdt-date-wrapper mat-datepicker-toggle[size=m],.rdt-date-wrapper mat-timepicker-toggle[size=m]{--padding-horizontal: var(--spacing-s-nudge);--icon-size: var(--icon-size-m);--gap: var(--spacing-s)}.rdt-date-wrapper mat-datepicker-toggle[size=s],.rdt-date-wrapper mat-timepicker-toggle[size=s]{--padding-horizontal: var(--spacing-xs-nudge);--icon-size: var(--icon-size-s);--gap: var(--spacing-s)}.rdt-date-wrapper mat-datepicker-toggle[size=xs],.rdt-date-wrapper mat-timepicker-toggle[size=xs]{--padding-horizontal: var(--spacing-xs-nudge);--icon-size: var(--icon-size-xs);--gap: var(--spacing-xs)}.rdt-date-field{background-color:transparent;border:none;border-radius:var(--border-radius, var(--corner-radius-s));color:var(--form-value-color, var(--text-primary));font-family:var(--font-family-primary, var(--font-family));width:100%;line-height:150%;font-weight:400}.rdt-date-field-position{width:100%;position:relative;display:flex;align-items:center}.rdt-date-field-wrapper{width:100%;flex:1;border-radius:var(--border-radius, var(--corner-radius-s));border:var(--border-width, .0625rem) solid var(--form-border-color, var(--border-subtle));background-color:var(--form-bg-color, var(--background-block-primary));display:flex;align-items:center;gap:0!important}.rdt-date-field-wrapper:focus-within{border-radius:var(--outline-border-radius, var(--corner-radius-xs-nudge));outline:var(--outline-width, .125rem) solid var(--status-focus);outline-offset:var(--outline-offset, .125rem)}.rdt-date-field-wrapper:hover{background-color:var(--form-hover-color, var(--button-outlined-primary-hover))!important}.rdt-date-field-wrapper>*:after{content:\"\";display:block;position:absolute;width:var(--border-width, .0625rem);height:calc(100% + var(--border-width, .0625rem) * 2);left:calc(100% + var(--border-width, .0625rem) / 2);top:calc(-1 * var(--border-width, .0625rem));background-color:var(--border-subtle)}.rdt-date-field-wrapper>*:last-child:after{display:none}.rdt-date-field-wrapper[size=xl] .time{gap:var(--spacing-m)}.rdt-date-field-wrapper[size=xl] .time input{padding-right:var(--padding-horizontal, var(--spacing-m-nudge))!important}.rdt-date-field-wrapper[size=l] .time{gap:var(--spacing-s-nudge)}.rdt-date-field-wrapper[size=l] .time input{padding-right:var(--padding-horizontal, var(--spacing-m))!important}.rdt-date-field-wrapper[size=m] .time{gap:var(--spacing-s)}.rdt-date-field-wrapper[size=m] .time input{padding-right:var(--padding-horizontal, var(--spacing-s-nudge))!important}.rdt-date-field-wrapper[size=s] .time{gap:var(--spacing-xs-nudge)}.rdt-date-field-wrapper[size=s] .time input{padding-right:var(--padding-horizontal, var(--spacing-s))!important;--mat-icon-button-icon-size: 10px}.rdt-date-field-wrapper[size=xs] .time{gap:var(--spacing-xs)}.rdt-date-field-wrapper[size=xs] .time input{padding-right:var(--padding-horizontal, var(--spacing-xs-nudge))!important;--mat-icon-button-icon-size: 10px}.rdt-date-field:focus{outline:none}rdt-gov-date,mat-datepicker-content{--mat-icon-button-icon-size: 24px;--mat-button-text-label-text-font: var(--font-family);--mat-button-text-label-text-size: var(--font-size-body-s);--mat-button-text-label-text-weight: 600;--mat-button-text-label-text-color: var(--text-secondary);--mat-datepicker-calendar-body-label-text-size: var(--font-size-body-s);--mat-datepicker-calendar-body-label-text-weight: 600;--mat-datepicker-calendar-body-label-text-color: var(--text-primary);--mat-datepicker-calendar-text-size: var(--font-size-body-m);--mat-datepicker-calendar-text-font: var(--font-family);--mat-datepicker-calendar-container-background-color: var( --background-neutral-subtle );--mat-datepicker-calendar-container-text-color: var(--text-primary);--mat-datepicker-calendar-container-shape: 8px;--mat-datepicker-calendar-date-text-color: var(--text-primary);--mat-datepicker-calendar-date-selected-state-text-color: var( --color-neutral-0 );--mat-datepicker-calendar-date-today-selected-state-outline-color: var( --color-primary-400 );--mat-datepicker-calendar-container-elevation-shadow: 0px 0px 0px 1px var(--border-subtle);--mat-datepicker-calendar-date-today-outline-color: var( --button-solid-primary );--mat-datepicker-calendar-date-selected-state-background-color: var( --button-solid-primary );--mat-datepicker-calendar-period-button-icon-color: var(--text-primary);--mat-datepicker-calendar-date-hover-state-background-color: var( --background-neutral-subtlest );--mat-datepicker-calendar-header-text-color: var(--text-secondary);--mat-datepicker-calendar-header-text-size: var(--font-size-body-m);--mat-datepicker-calendar-header-text-weight: 600;--mat-tooltip-container-color: var(--color-neutral-950);--mat-tooltip-supporting-text-color: var(--color-neutral-0);--mat-tooltip-container-shape: 8px;--mat-button-text-container-shape: 8px;--mat-sys-on-surface-variant: var(--text-secondary);--mat-sys-primary: var(--button-solid-primary-hover);--mat-sys-dragged-state-layer-opacity: .16;--mat-sys-focus-state-layer-opacity: .12;--mat-sys-hover-state-layer-opacity: .08;--mat-sys-pressed-state-layer-opacity: .12;--mat-timepicker-container-background-color: var(--background-neutral-subtle);--mat-timepicker-container-shape: 8px;--mat-timepicker-container-elevation-shadow: 0px 0px 0px 1px var(--border-subtle);--mat-option-selected-state-layer-color: var(--button-solid-primary-hover);--mat-option-selected-state-label-text-color: var(--color-neutral-0);--mat-datepicker-toggle-active-state-icon-color: var( --mat-datepicker-toggle-icon-color )}rdt-gov-date.ng-invalid.ng-touched,mat-datepicker-content.ng-invalid.ng-touched{--border-subtle: var(--status-error);--mat-datepicker-toggle-icon-color: var(--status-error);--form-value-color: var(--form-state-value-color, var(--text-status-error));--exclamation-mark-display: flex}rdt-gov-date.ng-invalid.ng-touched input::-webkit-calendar-picker-indicator,mat-datepicker-content.ng-invalid.ng-touched input::-webkit-calendar-picker-indicator{filter:brightness(0) saturate(100%) invert(22%) sepia(89%) saturate(1847%) hue-rotate(345deg) brightness(98%) contrast(97%);cursor:pointer}rdt-gov-date.ng-invalid.ng-touched [size=xl],mat-datepicker-content.ng-invalid.ng-touched [size=xl]{--exclamation-mark-width: var(--icon-size-xl);--exclamation-mark-offset: var(--spacing-m-nudge)}rdt-gov-date.ng-invalid.ng-touched [size=l],mat-datepicker-content.ng-invalid.ng-touched [size=l]{--exclamation-mark-width: var(--icon-size-l);--exclamation-mark-offset: var(--spacing-m)}rdt-gov-date.ng-invalid.ng-touched [size=m],mat-datepicker-content.ng-invalid.ng-touched [size=m]{--exclamation-mark-width: var(--icon-size-m);--exclamation-mark-offset: var(--spacing-s-nudge)}rdt-gov-date.ng-invalid.ng-touched [size=s],mat-datepicker-content.ng-invalid.ng-touched [size=s]{--exclamation-mark-width: var(--icon-size-s);--exclamation-mark-offset: var(--spacing-s)}rdt-gov-date.ng-invalid.ng-touched [size=xs],mat-datepicker-content.ng-invalid.ng-touched [size=xs]{--exclamation-mark-width: var(--icon-size-xs);--exclamation-mark-offset: var(--spacing-xs-nudge)}rdt-gov-date.ng-invalid.ng-touched .time input,mat-datepicker-content.ng-invalid.ng-touched .time input{padding-right:0!important}\n"], dependencies: [{ kind: "pipe", type: RdtFormErrorPipe, name: "rdtFormError" }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i1$3.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i1$3.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i1$3.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
1454
|
+
}
|
|
1455
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovDateComponent, decorators: [{
|
|
1456
|
+
type: Component,
|
|
1457
|
+
args: [{ selector: 'rdt-gov-date', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [
|
|
1458
|
+
RdtFormErrorPipe,
|
|
1459
|
+
MatDatepickerModule,
|
|
1460
|
+
MatInputModule,
|
|
1461
|
+
ReactiveFormsModule,
|
|
1462
|
+
FormsModule,
|
|
1463
|
+
], providers: [
|
|
1464
|
+
{
|
|
1465
|
+
provide: NG_VALUE_ACCESSOR,
|
|
1466
|
+
useExisting: RdtGovDateComponent,
|
|
1467
|
+
multi: true,
|
|
1468
|
+
},
|
|
1469
|
+
{
|
|
1470
|
+
provide: RdtBaseFormInputComponent,
|
|
1471
|
+
useExisting: RdtGovDateComponent,
|
|
1472
|
+
},
|
|
1473
|
+
{
|
|
1474
|
+
provide: RdtDateComponent,
|
|
1475
|
+
useExisting: RdtGovDateComponent,
|
|
1476
|
+
},
|
|
1477
|
+
], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "@let lPos = labelPosition();\n<div class=\"rdt-date-wrapper\" [class]=\"lPos\">\n @if(lPos) {\n <p\n class=\"gov-form-label__label s_label\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n }\n <div\n class=\"rdt-date-field-wrapper gov-form-input\"\n [attr.size]=\"size()\"\n [attr.disabled]=\"disabled() ? true : undefined\"\n >\n @if(type() === 'date' || type() === 'datetime-local'){\n <div class=\"rdt-date-field-position date\">\n <input\n class=\"rdt-date-field\"\n #dateInput\n matInput\n [attr.invalid]=\"invalid() && touched()\"\n [attr.readonly]=\"readonlyInput() ? true : null\"\n [attr.size]=\"size()\"\n [name]=\"name()\"\n [value]=\"internalValue()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [matDatepicker]=\"picker\"\n (focus)=\"onDateInputFocus()\"\n (blur)=\"onDateInputBlur()\"\n (dateInput)=\"onDateInput($event)\"\n (dateChange)=\"onDateInput($event)\"\n />\n <div class=\"gov-form-input__icons\">\n <gov-icon\n class=\"validation-icon gov-icon\"\n name=\"exclamation-lg\"\n type=\"components\"\n [attr.size]=\"size()\"\n >\n </gov-icon>\n </div>\n <mat-datepicker-toggle\n [attr.size]=\"size()\"\n matIconSuffix\n [for]=\"picker\"\n [disableRipple]=\"true\"\n >\n <!-- <mat-icon matDatepickerToggleIcon>keyboard_arrow_down</mat-icon> //moznost vlastni ikonky-->\n </mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </div>\n } @if(type() === 'datetime-local' || type() === 'time'){\n <div class=\"rdt-date-field-position time\">\n <input\n class=\"rdt-date-field\"\n type=\"time\"\n #timeInput\n (input)=\"onTimeChange($event)\"\n matInput\n [attr.invalid]=\"invalid() && touched()\"\n [step]=\"step()\"\n [attr.readonly]=\"readonlyInput() ? true : undefined\"\n [attr.size]=\"size()\"\n [name]=\"name()\"\n [value]=\"internalTimeValue()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n (focus)=\"onTimeInputFocus()\"\n (blur)=\"onTimeInputBlur()\"\n />\n <div class=\"gov-form-input__icons\">\n <gov-icon\n class=\"validation-icon gov-icon\"\n name=\"exclamation-lg\"\n type=\"components\"\n [attr.size]=\"size()\"\n >\n </gov-icon>\n </div>\n </div>\n }\n </div>\n</div>\n@let hasError = visibleErrors() | rdtFormError; @if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\" [attr.size]=\"size()\">\n <gov-icon\n type=\"components\"\n name=\"exclamation-triangle-fill\"\n slot=\"validation-icon\"\n ></gov-icon>\n {{ hasError }}\n</gov-form-message>\n}\n", styles: [".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}rdt-gov-number-input,rdt-gov-text-input,rdt-gov-select{min-width:60px}\n", ".rdt-date-wrapper{width:100%}.rdt-date-wrapper mat-datepicker-toggle,.rdt-date-wrapper mat-timepicker-toggle{position:absolute}.rdt-date-wrapper.right{display:flex;align-items:center;flex-direction:row-reverse;gap:var(--gap, var(--spacing-s))}.rdt-date-wrapper.left{display:flex;align-items:center;flex-direction:row;gap:var(--gap, var(--spacing-s))}.rdt-date-wrapper.top{display:flex;flex-direction:column;gap:var(--gap, var(--spacing-xs))}.rdt-date-wrapper .gov-form-input__icons{display:var(--exclamation-mark-display, none)}.rdt-date-wrapper mat-datepicker-toggle,.rdt-date-wrapper mat-timepicker-toggle{--mat-icon-button-touch-target-size: calc( var(--padding-horizontal) + var(--icon-size) + var(--gap) );--mat-icon-button-state-layer-size: var( --mat-icon-button-touch-target-size );right:calc(var(--exclamation-mark-width, 0px) + var(--exclamation-mark-offset, 0px))}.rdt-date-wrapper mat-datepicker-toggle button,.rdt-date-wrapper mat-timepicker-toggle button{display:flex;justify-content:center;align-items:center;height:var(--mat-icon-button-state-layer-size)}.rdt-date-wrapper mat-datepicker-toggle button svg,.rdt-date-wrapper mat-timepicker-toggle button svg{width:var(--icon-size);height:var(--icon-size)}.rdt-date-wrapper mat-datepicker-toggle[size=xl],.rdt-date-wrapper mat-timepicker-toggle[size=xl]{--padding-horizontal: var(--spacing-m-nudge);--icon-size: var(--icon-size-xl);--gap: var(--spacing-m)}.rdt-date-wrapper mat-datepicker-toggle[size=l],.rdt-date-wrapper mat-timepicker-toggle[size=l]{--padding-horizontal: var(--spacing-s-nudge);--icon-size: var(--icon-size-l);--gap: var(--spacing-m)}.rdt-date-wrapper mat-datepicker-toggle[size=m],.rdt-date-wrapper mat-timepicker-toggle[size=m]{--padding-horizontal: var(--spacing-s-nudge);--icon-size: var(--icon-size-m);--gap: var(--spacing-s)}.rdt-date-wrapper mat-datepicker-toggle[size=s],.rdt-date-wrapper mat-timepicker-toggle[size=s]{--padding-horizontal: var(--spacing-xs-nudge);--icon-size: var(--icon-size-s);--gap: var(--spacing-s)}.rdt-date-wrapper mat-datepicker-toggle[size=xs],.rdt-date-wrapper mat-timepicker-toggle[size=xs]{--padding-horizontal: var(--spacing-xs-nudge);--icon-size: var(--icon-size-xs);--gap: var(--spacing-xs)}.rdt-date-field{background-color:transparent;border:none;border-radius:var(--border-radius, var(--corner-radius-s));color:var(--form-value-color, var(--text-primary));font-family:var(--font-family-primary, var(--font-family));width:100%;line-height:150%;font-weight:400}.rdt-date-field-position{width:100%;position:relative;display:flex;align-items:center}.rdt-date-field-wrapper{width:100%;flex:1;border-radius:var(--border-radius, var(--corner-radius-s));border:var(--border-width, .0625rem) solid var(--form-border-color, var(--border-subtle));background-color:var(--form-bg-color, var(--background-block-primary));display:flex;align-items:center;gap:0!important}.rdt-date-field-wrapper:focus-within{border-radius:var(--outline-border-radius, var(--corner-radius-xs-nudge));outline:var(--outline-width, .125rem) solid var(--status-focus);outline-offset:var(--outline-offset, .125rem)}.rdt-date-field-wrapper:hover{background-color:var(--form-hover-color, var(--button-outlined-primary-hover))!important}.rdt-date-field-wrapper>*:after{content:\"\";display:block;position:absolute;width:var(--border-width, .0625rem);height:calc(100% + var(--border-width, .0625rem) * 2);left:calc(100% + var(--border-width, .0625rem) / 2);top:calc(-1 * var(--border-width, .0625rem));background-color:var(--border-subtle)}.rdt-date-field-wrapper>*:last-child:after{display:none}.rdt-date-field-wrapper[size=xl] .time{gap:var(--spacing-m)}.rdt-date-field-wrapper[size=xl] .time input{padding-right:var(--padding-horizontal, var(--spacing-m-nudge))!important}.rdt-date-field-wrapper[size=l] .time{gap:var(--spacing-s-nudge)}.rdt-date-field-wrapper[size=l] .time input{padding-right:var(--padding-horizontal, var(--spacing-m))!important}.rdt-date-field-wrapper[size=m] .time{gap:var(--spacing-s)}.rdt-date-field-wrapper[size=m] .time input{padding-right:var(--padding-horizontal, var(--spacing-s-nudge))!important}.rdt-date-field-wrapper[size=s] .time{gap:var(--spacing-xs-nudge)}.rdt-date-field-wrapper[size=s] .time input{padding-right:var(--padding-horizontal, var(--spacing-s))!important;--mat-icon-button-icon-size: 10px}.rdt-date-field-wrapper[size=xs] .time{gap:var(--spacing-xs)}.rdt-date-field-wrapper[size=xs] .time input{padding-right:var(--padding-horizontal, var(--spacing-xs-nudge))!important;--mat-icon-button-icon-size: 10px}.rdt-date-field:focus{outline:none}rdt-gov-date,mat-datepicker-content{--mat-icon-button-icon-size: 24px;--mat-button-text-label-text-font: var(--font-family);--mat-button-text-label-text-size: var(--font-size-body-s);--mat-button-text-label-text-weight: 600;--mat-button-text-label-text-color: var(--text-secondary);--mat-datepicker-calendar-body-label-text-size: var(--font-size-body-s);--mat-datepicker-calendar-body-label-text-weight: 600;--mat-datepicker-calendar-body-label-text-color: var(--text-primary);--mat-datepicker-calendar-text-size: var(--font-size-body-m);--mat-datepicker-calendar-text-font: var(--font-family);--mat-datepicker-calendar-container-background-color: var( --background-neutral-subtle );--mat-datepicker-calendar-container-text-color: var(--text-primary);--mat-datepicker-calendar-container-shape: 8px;--mat-datepicker-calendar-date-text-color: var(--text-primary);--mat-datepicker-calendar-date-selected-state-text-color: var( --color-neutral-0 );--mat-datepicker-calendar-date-today-selected-state-outline-color: var( --color-primary-400 );--mat-datepicker-calendar-container-elevation-shadow: 0px 0px 0px 1px var(--border-subtle);--mat-datepicker-calendar-date-today-outline-color: var( --button-solid-primary );--mat-datepicker-calendar-date-selected-state-background-color: var( --button-solid-primary );--mat-datepicker-calendar-period-button-icon-color: var(--text-primary);--mat-datepicker-calendar-date-hover-state-background-color: var( --background-neutral-subtlest );--mat-datepicker-calendar-header-text-color: var(--text-secondary);--mat-datepicker-calendar-header-text-size: var(--font-size-body-m);--mat-datepicker-calendar-header-text-weight: 600;--mat-tooltip-container-color: var(--color-neutral-950);--mat-tooltip-supporting-text-color: var(--color-neutral-0);--mat-tooltip-container-shape: 8px;--mat-button-text-container-shape: 8px;--mat-sys-on-surface-variant: var(--text-secondary);--mat-sys-primary: var(--button-solid-primary-hover);--mat-sys-dragged-state-layer-opacity: .16;--mat-sys-focus-state-layer-opacity: .12;--mat-sys-hover-state-layer-opacity: .08;--mat-sys-pressed-state-layer-opacity: .12;--mat-timepicker-container-background-color: var(--background-neutral-subtle);--mat-timepicker-container-shape: 8px;--mat-timepicker-container-elevation-shadow: 0px 0px 0px 1px var(--border-subtle);--mat-option-selected-state-layer-color: var(--button-solid-primary-hover);--mat-option-selected-state-label-text-color: var(--color-neutral-0);--mat-datepicker-toggle-active-state-icon-color: var( --mat-datepicker-toggle-icon-color )}rdt-gov-date.ng-invalid.ng-touched,mat-datepicker-content.ng-invalid.ng-touched{--border-subtle: var(--status-error);--mat-datepicker-toggle-icon-color: var(--status-error);--form-value-color: var(--form-state-value-color, var(--text-status-error));--exclamation-mark-display: flex}rdt-gov-date.ng-invalid.ng-touched input::-webkit-calendar-picker-indicator,mat-datepicker-content.ng-invalid.ng-touched input::-webkit-calendar-picker-indicator{filter:brightness(0) saturate(100%) invert(22%) sepia(89%) saturate(1847%) hue-rotate(345deg) brightness(98%) contrast(97%);cursor:pointer}rdt-gov-date.ng-invalid.ng-touched [size=xl],mat-datepicker-content.ng-invalid.ng-touched [size=xl]{--exclamation-mark-width: var(--icon-size-xl);--exclamation-mark-offset: var(--spacing-m-nudge)}rdt-gov-date.ng-invalid.ng-touched [size=l],mat-datepicker-content.ng-invalid.ng-touched [size=l]{--exclamation-mark-width: var(--icon-size-l);--exclamation-mark-offset: var(--spacing-m)}rdt-gov-date.ng-invalid.ng-touched [size=m],mat-datepicker-content.ng-invalid.ng-touched [size=m]{--exclamation-mark-width: var(--icon-size-m);--exclamation-mark-offset: var(--spacing-s-nudge)}rdt-gov-date.ng-invalid.ng-touched [size=s],mat-datepicker-content.ng-invalid.ng-touched [size=s]{--exclamation-mark-width: var(--icon-size-s);--exclamation-mark-offset: var(--spacing-s)}rdt-gov-date.ng-invalid.ng-touched [size=xs],mat-datepicker-content.ng-invalid.ng-touched [size=xs]{--exclamation-mark-width: var(--icon-size-xs);--exclamation-mark-offset: var(--spacing-xs-nudge)}rdt-gov-date.ng-invalid.ng-touched .time input,mat-datepicker-content.ng-invalid.ng-touched .time input{padding-right:0!important}\n"] }]
|
|
1371
1478
|
}] });
|
|
1372
1479
|
|
|
1373
1480
|
class RdtGovTextInputComponent extends RdtTextInputComponent {
|
|
@@ -1441,7 +1548,7 @@ class RdtGovTextInputComponent extends RdtTextInputComponent {
|
|
|
1441
1548
|
provide: RdtBaseFormInputComponent,
|
|
1442
1549
|
useExisting: RdtGovTextInputComponent,
|
|
1443
1550
|
},
|
|
1444
|
-
], viewQueries: [{ propertyName: "govInput", first: true, predicate: ["govInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@let lPos = labelPosition(); @if(lPos === 'top'){\n<gov-form-label slot=\"left\" size=\"m\" [class.warning-color-gov-label]=\"hasError\"\n >{{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n>\n}\n<gov-form-input\n #govInput\n [inputType]=\"type()\"\n [size]=\"size()\"\n [value]=\"internalValue()\"\n [placeholder]=\"placeholder()\"\n [autocomplete]=\"autocomplete()\"\n [minlength]=\"minlength()\"\n [maxlength]=\"maxlength()\"\n [invalid]=\"invalid() && touched()\"\n [attr.invalid]=\"invalid() && touched()\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n [attr.disabled]=\"disabled()\"\n [name]=\"id()\"\n [identifier]=\"id()\"\n (gov-input)=\"onInternalValueChange($event.detail.value)\"\n (gov-focus)=\"onFocus()\"\n (gov-blur)=\"onBlur()\"\n>\n @let lI = iconStart(); @let rI = icon(); @if(lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if(lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if (lI) {\n <span slot=\"icon-start\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: lI }\"></ng-container>\n </span>\n } @if (rI) {\n <span slot=\"icon-end\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: rI }\"></ng-container>\n </span>\n }\n</gov-form-input>\n@let hasError = visibleErrors() | rdtFormError; @if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\" [attr.size]=\"size()\">\n <gov-icon\n type=\"components\"\n name=\"exclamation-triangle-fill\"\n slot=\"validation-icon\"\n ></gov-icon>\n {{ hasError }}\n</gov-form-message>\n}\n", styles: [".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}\n"], dependencies: [{ kind: "pipe", type: RdtFormErrorPipe, name: "rdtFormError" }, { kind: "directive", type: RdtIconOutletDirective, selector: "[rdtIconOutlet]", exportAs: ["rdtIconOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
1551
|
+
], viewQueries: [{ propertyName: "govInput", first: true, predicate: ["govInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@let lPos = labelPosition(); @if(lPos === 'top'){\n<gov-form-label slot=\"left\" size=\"m\" [class.warning-color-gov-label]=\"hasError\"\n >{{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n>\n}\n<gov-form-input\n #govInput\n [inputType]=\"type()\"\n [size]=\"size()\"\n [value]=\"internalValue()\"\n [placeholder]=\"placeholder()\"\n [autocomplete]=\"autocomplete()\"\n [minlength]=\"minlength()\"\n [maxlength]=\"maxlength()\"\n [invalid]=\"invalid() && touched()\"\n [attr.invalid]=\"invalid() && touched()\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n [attr.disabled]=\"disabled()\"\n [name]=\"id()\"\n [identifier]=\"id()\"\n (gov-input)=\"onInternalValueChange($event.detail.value)\"\n (gov-focus)=\"onFocus()\"\n (gov-blur)=\"onBlur()\"\n>\n @let lI = iconStart(); @let rI = icon(); @if(lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if(lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if (lI) {\n <span slot=\"icon-start\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: lI }\"></ng-container>\n </span>\n } @if (rI) {\n <span slot=\"icon-end\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: rI }\"></ng-container>\n </span>\n }\n</gov-form-input>\n@let hasError = visibleErrors() | rdtFormError; @if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\" [attr.size]=\"size()\">\n <gov-icon\n type=\"components\"\n name=\"exclamation-triangle-fill\"\n slot=\"validation-icon\"\n ></gov-icon>\n {{ hasError }}\n</gov-form-message>\n}\n", styles: [".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}rdt-gov-number-input,rdt-gov-text-input,rdt-gov-select{min-width:60px}\n"], dependencies: [{ kind: "pipe", type: RdtFormErrorPipe, name: "rdtFormError" }, { kind: "directive", type: RdtIconOutletDirective, selector: "[rdtIconOutlet]", exportAs: ["rdtIconOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
1445
1552
|
}
|
|
1446
1553
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RdtGovTextInputComponent, decorators: [{
|
|
1447
1554
|
type: Component,
|
|
@@ -1455,7 +1562,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
1455
1562
|
provide: RdtBaseFormInputComponent,
|
|
1456
1563
|
useExisting: RdtGovTextInputComponent,
|
|
1457
1564
|
},
|
|
1458
|
-
], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "@let lPos = labelPosition(); @if(lPos === 'top'){\n<gov-form-label slot=\"left\" size=\"m\" [class.warning-color-gov-label]=\"hasError\"\n >{{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n>\n}\n<gov-form-input\n #govInput\n [inputType]=\"type()\"\n [size]=\"size()\"\n [value]=\"internalValue()\"\n [placeholder]=\"placeholder()\"\n [autocomplete]=\"autocomplete()\"\n [minlength]=\"minlength()\"\n [maxlength]=\"maxlength()\"\n [invalid]=\"invalid() && touched()\"\n [attr.invalid]=\"invalid() && touched()\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n [attr.disabled]=\"disabled()\"\n [name]=\"id()\"\n [identifier]=\"id()\"\n (gov-input)=\"onInternalValueChange($event.detail.value)\"\n (gov-focus)=\"onFocus()\"\n (gov-blur)=\"onBlur()\"\n>\n @let lI = iconStart(); @let rI = icon(); @if(lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if(lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if (lI) {\n <span slot=\"icon-start\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: lI }\"></ng-container>\n </span>\n } @if (rI) {\n <span slot=\"icon-end\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: rI }\"></ng-container>\n </span>\n }\n</gov-form-input>\n@let hasError = visibleErrors() | rdtFormError; @if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\" [attr.size]=\"size()\">\n <gov-icon\n type=\"components\"\n name=\"exclamation-triangle-fill\"\n slot=\"validation-icon\"\n ></gov-icon>\n {{ hasError }}\n</gov-form-message>\n}\n", styles: [".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}\n"] }]
|
|
1565
|
+
], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "@let lPos = labelPosition(); @if(lPos === 'top'){\n<gov-form-label slot=\"left\" size=\"m\" [class.warning-color-gov-label]=\"hasError\"\n >{{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }</gov-form-label\n>\n}\n<gov-form-input\n #govInput\n [inputType]=\"type()\"\n [size]=\"size()\"\n [value]=\"internalValue()\"\n [placeholder]=\"placeholder()\"\n [autocomplete]=\"autocomplete()\"\n [minlength]=\"minlength()\"\n [maxlength]=\"maxlength()\"\n [invalid]=\"invalid() && touched()\"\n [attr.invalid]=\"invalid() && touched()\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n [attr.disabled]=\"disabled()\"\n [name]=\"id()\"\n [identifier]=\"id()\"\n (gov-input)=\"onInternalValueChange($event.detail.value)\"\n (gov-focus)=\"onFocus()\"\n (gov-blur)=\"onBlur()\"\n>\n @let lI = iconStart(); @let rI = icon(); @if(lPos === 'left') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"prefix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if(lPos === 'right') {\n <p\n class=\"gov-form-label__label s_label\"\n slot=\"sufix\"\n [class.warning-color-text]=\"hasError\"\n >\n {{ label() }} @if (required()) {\n <span class=\"warning-color-text\">*</span>\n }\n </p>\n } @if (lI) {\n <span slot=\"icon-start\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: lI }\"></ng-container>\n </span>\n } @if (rI) {\n <span slot=\"icon-end\" style=\"width: auto\">\n <ng-container rdtIconOutlet [inputs]=\"{ name: rI }\"></ng-container>\n </span>\n }\n</gov-form-input>\n@let hasError = visibleErrors() | rdtFormError; @if(hasError){\n<gov-form-message slot=\"bottom\" color=\"error\" [attr.size]=\"size()\">\n <gov-icon\n type=\"components\"\n name=\"exclamation-triangle-fill\"\n slot=\"validation-icon\"\n ></gov-icon>\n {{ hasError }}\n</gov-form-message>\n}\n", styles: [".warning-color-icon{color:var(--icon-error)!important}.warning-color-text{color:var(--text-status-error)!important}.warning-color-gov-label .gov-form-label__label{color:var(--form-state-label-error, var(--text-status-error))!important}.s_label{font-size:var(--font-size-body-s);line-height:150%;font-weight:400}gov-form-message{font-size:var(--font-size-body-s)}rdt-gov-number-input,rdt-gov-text-input,rdt-gov-select{min-width:60px}\n"] }]
|
|
1459
1566
|
}] });
|
|
1460
1567
|
|
|
1461
1568
|
class RdtGovThemeService {
|
|
@@ -1493,5 +1600,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
1493
1600
|
* Generated bundle index. Do not edit.
|
|
1494
1601
|
*/
|
|
1495
1602
|
|
|
1496
|
-
export { DEFAULT_GOV_BUTTON_COLOR, DEFAULT_GOV_BUTTON_SIZE, DEFAULT_GOV_BUTTON_TYPE,
|
|
1603
|
+
export { DEFAULT_GOV_BUTTON_COLOR, DEFAULT_GOV_BUTTON_SIZE, DEFAULT_GOV_BUTTON_TYPE, RDT_GOV_ALERT_DIALOG_CONFIG_PROVIDER, RDT_GOV_BASE_DIALOG_CONFIG_PROVIDER, RDT_GOV_CONFIRM_DIALOG_CONFIG_PROVIDER, RDT_GOV_NOTIFICATION_CONFIG_PROVIDER, RDT_GOV_NOTIFICATION_DEFAULT_CONFIG, RdtGovButtonComponent, RdtGovCheckboxComponent, RdtGovDateComponent, RdtGovDialogBase, RdtGovDialogComponent, RdtGovDialogContentComponent, RdtGovDialogFooterComponent, RdtGovDialogHeaderComponent, RdtGovDialogLoadingComponent, RdtGovDialogRef, RdtGovDialogService, RdtGovIconComponent, RdtGovNotificationService, RdtGovNumberInputComponent, RdtGovSelectComponent, RdtGovSelectOfflineProviderDirective, RdtGovSpinnerComponent, RdtGovStandardDialogComponent, RdtGovTextInputComponent, RdtGovThemeService, forceFocus, initRdtGov, provideNgrdtGov };
|
|
1497
1604
|
//# sourceMappingURL=ngrdt-gov.mjs.map
|