@sebgroup/green-angular 4.6.0 → 4.6.2
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/esm2022/index.mjs +1 -19
- package/esm2022/src/v-angular/breadcrumbs/breadcrumbs.component.mjs +3 -3
- package/esm2022/src/v-angular/button/button.component.mjs +3 -3
- package/esm2022/src/v-angular/card/card.component.mjs +3 -3
- package/esm2022/src/v-angular/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/src/v-angular/core/core.globals.mjs +5 -2
- package/esm2022/src/v-angular/dropdown/dropdown-list/dropdown-list.component.mjs +3 -3
- package/esm2022/src/v-angular/dropdown/dropdown.component.mjs +3 -3
- package/esm2022/src/v-angular/dropdown/typeahead/index.mjs +4 -1
- package/esm2022/src/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.mjs +3 -3
- package/esm2022/src/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.mjs +3 -3
- package/esm2022/src/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.mjs +3 -3
- package/esm2022/src/v-angular/dropdown/typeahead/typeahead.directive.mjs +177 -0
- package/esm2022/src/v-angular/info-circle/info-circle.component.mjs +3 -3
- package/esm2022/src/v-angular/input/input.component.mjs +3 -3
- package/esm2022/src/v-angular/modal/dialog/dialog.component.mjs +3 -3
- package/esm2022/src/v-angular/modal/fold-out/fold-out.component.mjs +3 -3
- package/esm2022/src/v-angular/modal/modal.globals.mjs +5 -2
- package/esm2022/src/v-angular/modal/slide-out/slide-out.component.mjs +4 -4
- package/esm2022/src/v-angular/radio/radio.component.mjs +3 -3
- package/esm2022/src/v-angular/textarea/textarea.component.mjs +3 -3
- package/esm2022/v-angular/breadcrumbs/breadcrumbs.component.mjs +3 -3
- package/esm2022/v-angular/button/button.component.mjs +3 -3
- package/esm2022/v-angular/card/card.component.mjs +3 -3
- package/esm2022/v-angular/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/v-angular/dropdown/dropdown-list/dropdown-list.component.mjs +3 -3
- package/esm2022/v-angular/dropdown/dropdown.component.mjs +3 -3
- package/esm2022/v-angular/dropdown/typeahead/index.mjs +4 -1
- package/esm2022/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.mjs +3 -3
- package/esm2022/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.mjs +3 -3
- package/esm2022/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.mjs +3 -3
- package/esm2022/v-angular/dropdown/typeahead/typeahead.directive.mjs +177 -0
- package/esm2022/v-angular/index.mjs +17 -0
- package/esm2022/v-angular/info-circle/info-circle.component.mjs +3 -3
- package/esm2022/v-angular/input/input.component.mjs +3 -3
- package/esm2022/v-angular/modal/dialog/dialog.component.mjs +3 -3
- package/esm2022/v-angular/modal/fold-out/fold-out.component.mjs +3 -3
- package/esm2022/v-angular/modal/modal.globals.mjs +5 -2
- package/esm2022/v-angular/modal/slide-out/slide-out.component.mjs +4 -4
- package/esm2022/v-angular/radio/radio.component.mjs +3 -3
- package/esm2022/v-angular/sebgroup-green-angular-v-angular.mjs +5 -0
- package/esm2022/v-angular/textarea/textarea.component.mjs +3 -3
- package/esm2022/v-angular/v-angular.module.mjs +76 -0
- package/fesm2022/sebgroup-green-angular-src-v-angular-breadcrumbs.mjs +2 -2
- package/fesm2022/sebgroup-green-angular-src-v-angular-breadcrumbs.mjs.map +1 -1
- package/fesm2022/sebgroup-green-angular-src-v-angular-button.mjs +2 -2
- package/fesm2022/sebgroup-green-angular-src-v-angular-button.mjs.map +1 -1
- package/fesm2022/sebgroup-green-angular-src-v-angular-card.mjs +2 -2
- package/fesm2022/sebgroup-green-angular-src-v-angular-card.mjs.map +1 -1
- package/fesm2022/sebgroup-green-angular-src-v-angular-checkbox.mjs +2 -2
- package/fesm2022/sebgroup-green-angular-src-v-angular-checkbox.mjs.map +1 -1
- package/fesm2022/sebgroup-green-angular-src-v-angular-core.mjs +4 -1
- package/fesm2022/sebgroup-green-angular-src-v-angular-core.mjs.map +1 -1
- package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs +182 -13
- package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs.map +1 -1
- package/fesm2022/sebgroup-green-angular-src-v-angular-info-circle.mjs +2 -2
- package/fesm2022/sebgroup-green-angular-src-v-angular-info-circle.mjs.map +1 -1
- package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs +2 -2
- package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs.map +1 -1
- package/fesm2022/sebgroup-green-angular-src-v-angular-modal.mjs +11 -8
- package/fesm2022/sebgroup-green-angular-src-v-angular-modal.mjs.map +1 -1
- package/fesm2022/sebgroup-green-angular-src-v-angular-radio.mjs +2 -2
- package/fesm2022/sebgroup-green-angular-src-v-angular-radio.mjs.map +1 -1
- package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs +2 -2
- package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs.map +1 -1
- package/fesm2022/sebgroup-green-angular-v-angular.mjs +3341 -0
- package/fesm2022/sebgroup-green-angular-v-angular.mjs.map +1 -0
- package/fesm2022/sebgroup-green-angular.mjs +13 -3105
- package/fesm2022/sebgroup-green-angular.mjs.map +1 -1
- package/index.d.ts +0 -18
- package/package.json +9 -3
- package/src/v-angular/breadcrumbs/breadcrumbs.component.d.ts +1 -1
- package/src/v-angular/button/button.component.d.ts +1 -1
- package/src/v-angular/card/card.component.d.ts +1 -1
- package/src/v-angular/checkbox/checkbox.component.d.ts +1 -1
- package/src/v-angular/dropdown/dropdown-list/dropdown-list.component.d.ts +1 -1
- package/src/v-angular/dropdown/dropdown.component.d.ts +1 -1
- package/src/v-angular/dropdown/typeahead/index.d.ts +3 -0
- package/src/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.d.ts +1 -1
- package/src/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.d.ts +1 -1
- package/src/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.d.ts +1 -1
- package/src/v-angular/dropdown/typeahead/typeahead.directive.d.ts +76 -0
- package/src/v-angular/info-circle/info-circle.component.d.ts +1 -1
- package/src/v-angular/input/input.component.d.ts +1 -1
- package/src/v-angular/modal/dialog/dialog.component.d.ts +1 -1
- package/src/v-angular/modal/fold-out/fold-out.component.d.ts +1 -1
- package/src/v-angular/modal/slide-out/slide-out.component.d.ts +2 -2
- package/src/v-angular/radio/radio.component.d.ts +1 -1
- package/src/v-angular/textarea/textarea.component.d.ts +1 -1
- package/v-angular/breadcrumbs/breadcrumbs.component.d.ts +1 -1
- package/v-angular/button/button.component.d.ts +1 -1
- package/v-angular/card/card.component.d.ts +1 -1
- package/v-angular/checkbox/checkbox.component.d.ts +1 -1
- package/v-angular/dropdown/dropdown-list/dropdown-list.component.d.ts +1 -1
- package/v-angular/dropdown/dropdown.component.d.ts +1 -1
- package/v-angular/dropdown/typeahead/index.d.ts +3 -0
- package/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.d.ts +1 -1
- package/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.d.ts +1 -1
- package/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.d.ts +1 -1
- package/v-angular/dropdown/typeahead/typeahead.directive.d.ts +76 -0
- package/v-angular/index.d.ts +16 -0
- package/v-angular/info-circle/info-circle.component.d.ts +1 -1
- package/v-angular/input/input.component.d.ts +1 -1
- package/v-angular/modal/dialog/dialog.component.d.ts +1 -1
- package/v-angular/modal/fold-out/fold-out.component.d.ts +1 -1
- package/v-angular/modal/slide-out/slide-out.component.d.ts +2 -2
- package/v-angular/radio/radio.component.d.ts +1 -1
- package/v-angular/textarea/textarea.component.d.ts +1 -1
- package/v-angular/v-angular.module.d.ts +22 -0
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import * as i1 from '@angular/common';
|
|
2
|
-
import { CommonModule, DOCUMENT
|
|
2
|
+
import { CommonModule, DOCUMENT } from '@angular/common';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { EventEmitter, Component, Input, Output, ContentChildren, NgModule, ChangeDetectionStrategy, HostBinding, ViewChild, CUSTOM_ELEMENTS_SCHEMA, Directive, Injector, Inject, ContentChild, InjectionToken, QueryList, ViewChildren, inject, Renderer2, ViewContainerRef, ChangeDetectorRef, TemplateRef
|
|
4
|
+
import { EventEmitter, Component, Input, Output, ContentChildren, NgModule, ChangeDetectionStrategy, HostBinding, ViewChild, CUSTOM_ELEMENTS_SCHEMA, Directive, Injector, Inject, ContentChild, InjectionToken, QueryList, ViewChildren, inject, Renderer2, ViewContainerRef, ChangeDetectorRef, TemplateRef } from '@angular/core';
|
|
5
5
|
import { randomId, calculateDegrees, sliderColors, getSliderTrackBackground, PaginationI18n } from '@sebgroup/extract';
|
|
6
6
|
import '@sebgroup/green-core/components/context-menu/index.js';
|
|
7
7
|
import * as ContextMenuTransStyles from '@sebgroup/green-core/components/context-menu/context-menu.trans.styles.js';
|
|
8
8
|
import * as i2 from '@sebgroup/green-angular/src/lib/shared';
|
|
9
9
|
import { NggCoreWrapperModule as NggCoreWrapperModule$1 } from '@sebgroup/green-angular/src/lib/shared';
|
|
10
|
-
import * as
|
|
11
|
-
import { NG_VALUE_ACCESSOR, NgControl, FormsModule
|
|
10
|
+
import * as i2$1 from '@angular/forms';
|
|
11
|
+
import { NG_VALUE_ACCESSOR, NgControl, FormsModule } from '@angular/forms';
|
|
12
12
|
import { startOfDay, endOfDay } from 'date-fns';
|
|
13
13
|
import '@sebgroup/green-core/components/datepicker/index.js';
|
|
14
14
|
import * as DatepickerTransStyles from '@sebgroup/green-core/components/datepicker/datepicker.trans.styles.js';
|
|
@@ -20,30 +20,12 @@ import { A11yModule } from '@angular/cdk/a11y';
|
|
|
20
20
|
import { disableBodyScroll, enableBodyScroll } from 'body-scroll-lock';
|
|
21
21
|
import * as i1$2 from '@angular/router';
|
|
22
22
|
import { RouterModule } from '@angular/router';
|
|
23
|
-
import { Subject, fromEvent, interval
|
|
24
|
-
import { takeUntil, throttle
|
|
25
|
-
import * as i2$
|
|
23
|
+
import { Subject, fromEvent, interval } from 'rxjs';
|
|
24
|
+
import { takeUntil, throttle } from 'rxjs/operators';
|
|
25
|
+
import * as i2$2 from '@angular/cdk/drag-drop';
|
|
26
26
|
import { moveItemInArray, transferArrayItem, DragDropModule } from '@angular/cdk/drag-drop';
|
|
27
|
-
import * as i1$
|
|
27
|
+
import * as i1$3 from '@angular/platform-browser';
|
|
28
28
|
import { getScopedTagName } from '@sebgroup/green-core/scoping';
|
|
29
|
-
import * as i3 from '@ngneat/transloco';
|
|
30
|
-
import { TRANSLOCO_SCOPE, TRANSLOCO_TRANSPILER, TranslocoModule, provideTransloco, provideTranslocoMissingHandler, TRANSLOCO_INTERCEPTOR, TRANSLOCO_FALLBACK_STRATEGY, TRANSLOCO_MISSING_HANDLER } from '@ngneat/transloco';
|
|
31
|
-
import * as i2$2 from '@sebgroup/green-angular/src/v-angular/external-link';
|
|
32
|
-
import { NgvExternalLinkDirectiveModule } from '@sebgroup/green-angular/src/v-angular/external-link';
|
|
33
|
-
import { NgvBaseControlValueAccessorComponent as NgvBaseControlValueAccessorComponent$1 } from '@sebgroup/green-angular/src/v-angular/base-control-value-accessor';
|
|
34
|
-
import { NgvI18nModule as NgvI18nModule$1 } from '@sebgroup/green-angular/src/v-angular/i18n';
|
|
35
|
-
import * as i2$3 from '@sebgroup/green-angular/src/v-angular/core';
|
|
36
|
-
import { DropdownUtils } from '@sebgroup/green-angular/src/v-angular/core';
|
|
37
|
-
import scrollIntoView from 'scroll-into-view-if-needed';
|
|
38
|
-
import * as i3$1 from '@sebgroup/green-angular/src/v-angular/tooltip';
|
|
39
|
-
import { NgvTooltipModule as NgvTooltipModule$1 } from '@sebgroup/green-angular/src/v-angular/tooltip';
|
|
40
|
-
import { NgvInputComponent as NgvInputComponent$1 } from '@sebgroup/green-angular/src/v-angular/input';
|
|
41
|
-
import '@sebgroup/green-core/components/icon/icons/circle-info';
|
|
42
|
-
import * as i4 from '@sebgroup/green-angular/src/v-angular/input-mask';
|
|
43
|
-
import { NgvInputMaskModule as NgvInputMaskModule$1 } from '@sebgroup/green-angular/src/v-angular/input-mask';
|
|
44
|
-
import _Inputmask from 'inputmask';
|
|
45
|
-
import '@sebgroup/green-core/components/icon/icons/dot-grid-one-horizontal';
|
|
46
|
-
import { NgvButtonModule as NgvButtonModule$1 } from '@sebgroup/green-angular/src/v-angular/button';
|
|
47
29
|
|
|
48
30
|
class NggAccordionListItemComponent {
|
|
49
31
|
constructor() {
|
|
@@ -1460,7 +1442,7 @@ class NggSliderComponent {
|
|
|
1460
1442
|
useExisting: NggSliderComponent,
|
|
1461
1443
|
multi: true,
|
|
1462
1444
|
},
|
|
1463
|
-
], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"!!label\" class=\"gds-slider-label-container\">\n <div>\n <label [attr.for]=\"name\" [attr.id]=\"name + '-label'\">{{ label }}</label>\n <p *ngIf=\"!!instruction\">{{ instruction }}</p>\n </div>\n <ng-container *ngIf=\"hasTextbox\">\n <ng-container *ngIf=\"!!unitLabel\">\n <div class=\"group group-border group-focus\">\n <ng-container *ngTemplateOutlet=\"inputField\"></ng-container>\n <span class=\"form-text\">{{ unitLabel }}</span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!unitLabel\">\n <ng-container *ngTemplateOutlet=\"inputField\"></ng-container>\n </ng-container>\n </ng-container>\n</div>\n\n<input\n type=\"range\"\n [attr.id]=\"name\"\n [attr.name]=\"name\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.step]=\"step\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"value\"\n [ngStyle]=\"style\"\n (blur)=\"onBlur()\"\n (input)=\"handleChange()\"\n/>\n\n<p *ngIf=\"!!errorMessage\" class=\"gds-slider-error-info\">\n {{ errorMessage }}\n</p>\n\n<ng-template #inputField>\n <input\n type=\"text\"\n inputmode=\"numeric\"\n pattern=\"[0-9]*\"\n [(ngModel)]=\"value\"\n [class.is-invalid]=\"!!errorMessage\"\n [attr.name]=\"name\"\n [attr.id]=\"name + '-textbox'\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-labelledby]=\"name + '-label'\"\n [attr.enterkeyhint]=\"enterkeyhint\"\n [disabled]=\"disabled\"\n (blur)=\"onBlur()\"\n (input)=\"handleChange()\"\n />\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type:
|
|
1445
|
+
], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"!!label\" class=\"gds-slider-label-container\">\n <div>\n <label [attr.for]=\"name\" [attr.id]=\"name + '-label'\">{{ label }}</label>\n <p *ngIf=\"!!instruction\">{{ instruction }}</p>\n </div>\n <ng-container *ngIf=\"hasTextbox\">\n <ng-container *ngIf=\"!!unitLabel\">\n <div class=\"group group-border group-focus\">\n <ng-container *ngTemplateOutlet=\"inputField\"></ng-container>\n <span class=\"form-text\">{{ unitLabel }}</span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!unitLabel\">\n <ng-container *ngTemplateOutlet=\"inputField\"></ng-container>\n </ng-container>\n </ng-container>\n</div>\n\n<input\n type=\"range\"\n [attr.id]=\"name\"\n [attr.name]=\"name\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.step]=\"step\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"value\"\n [ngStyle]=\"style\"\n (blur)=\"onBlur()\"\n (input)=\"handleChange()\"\n/>\n\n<p *ngIf=\"!!errorMessage\" class=\"gds-slider-error-info\">\n {{ errorMessage }}\n</p>\n\n<ng-template #inputField>\n <input\n type=\"text\"\n inputmode=\"numeric\"\n pattern=\"[0-9]*\"\n [(ngModel)]=\"value\"\n [class.is-invalid]=\"!!errorMessage\"\n [attr.name]=\"name\"\n [attr.id]=\"name + '-textbox'\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-labelledby]=\"name + '-label'\"\n [attr.enterkeyhint]=\"enterkeyhint\"\n [disabled]=\"disabled\"\n (blur)=\"onBlur()\"\n (input)=\"handleChange()\"\n />\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2$1.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: i2$1.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1464
1446
|
}
|
|
1465
1447
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NggSliderComponent, decorators: [{
|
|
1466
1448
|
type: Component,
|
|
@@ -1667,7 +1649,7 @@ class NggSortableListComponent {
|
|
|
1667
1649
|
return this.focusedIndex[groupIndex] === itemIndex;
|
|
1668
1650
|
}
|
|
1669
1651
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NggSortableListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1670
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NggSortableListComponent, selector: "ngg-sortable-list", inputs: { groups: "groups", shouldDisplayCheckboxes: "shouldDisplayCheckboxes", isReadOnly: "isReadOnly", isDraggable: "isDraggable", description: "description", suffixTemplate: "suffixTemplate" }, outputs: { itemSelectionChanged: "itemSelectionChanged", itemOrderChanged: "itemOrderChanged" }, viewQueries: [{ propertyName: "sortableListGroups", first: true, predicate: ["sortableListGroups"], descendants: true }], ngImport: i0, template: "<div class=\"item-list\">\n <ng-container>\n <p class=\"item-list-header\">\n <span class=\"item-list-header-title\">{{ description }}</span>\n </p>\n <div #sortableListGroups cdkDropListGroup>\n <div\n *ngFor=\"let group of groups; let g_i = index\"\n class=\"item-list-group\"\n [class.drag-enabled]=\"isDraggable && !isReadOnly\"\n role=\"list\"\n cdkDropList\n [cdkDropListData]=\"group.items\"\n [id]=\"g_i.toString()\"\n (cdkDropListDropped)=\"onDragDrop($event)\"\n >\n <p\n *ngIf=\"group.title && group.title.length > 0\"\n class=\"item-list-header\"\n >\n <span class=\"item-list-header-title\">{{ group.title }}</span>\n </p>\n <p\n *ngIf=\"group.description && group.description.length > 0\"\n class=\"item-list-header-description\"\n >\n {{ group.description }}\n </p>\n <div\n *ngFor=\"let checklistItem of group.items; let i = index\"\n [cdkDragDisabled]=\"!isDraggable || isReadOnly\"\n [cdkDragData]=\"checklistItem\"\n cdkDrag\n cdkDragLockAxis=\"y\"\n class=\"item-box\"\n role=\"listitem\"\n >\n <div *cdkDragPlaceholder class=\"item-custom-placeholder\"></div>\n <label\n (keydown.alt.arrowDown)=\"onAltArrowKeydown(g_i, i, i + 1, $event)\"\n (keydown.alt.arrowUp)=\"onAltArrowKeydown(g_i, i, i - 1, $event)\"\n (keydown.arrowDown)=\"onArrowKeydown(g_i, i + 1, $event)\"\n (keydown.arrowUp)=\"onArrowKeydown(g_i, i - 1, $event)\"\n class=\"form-control item-control align-items-center item\"\n [tabindex]=\"shouldDisplayCheckboxes ? '-1' : '0'\"\n >\n <div class=\"form-control\">\n <input\n (change)=\"toggleSelection(checklistItem)\"\n [checked]=\"checklistItem.selected\"\n [disabled]=\"isReadOnly\"\n [type]=\"shouldDisplayCheckboxes ? 'checkbox' : 'hidden'\"\n />\n <div class=\"item-box-title\">\n <span name=\"agendaItemName\"\n >{{ checklistItem.name }}\n <span\n *ngIf=\"checklistItem.hasCustomSuffix\"\n class=\"item-list-suffix\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n suffixTemplate;\n context: { $implicit: checklistItem }\n \"\n class=\"user-icon\"\n >\n </ng-container>\n </span>\n </span>\n <br />\n <span *ngIf=\"!!checklistItem.description\">\n <span class=\"item-list-suffix\" name=\"agendaItemToolTip\">\n {{ checklistItem.description }}\n </span>\n <br />\n </span>\n </div>\n <i></i>\n </div>\n <div *ngIf=\"isDraggable && !isReadOnly\" class=\"item-grip-icon\">\n <i class=\"sg-icon sg-icon-grip-vertical text-primary\"></i>\n </div>\n </label>\n </div>\n </div>\n </div>\n </ng-container>\n</div>\n", styles: [".item-list{width:100%;display:block}label.item{padding:0!important}.item-box{background-color:var(--sg-card-background);color:var(--text-primary-color);display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;font-size:14px;margin:5px 0;border:1px solid var(--border-color);border-radius:4px}.form-control{line-height:20px;font-size:16px;font-weight:500}.item-list-header{display:flex;flex-direction:row;justify-content:space-between;margin-bottom:1rem}.item-list-header-title{font-weight:600;font-size:1rem;line-height:1.25rem;font-style:normal}.item-list-header-subtitle{font-size:.75rem;color:var(--text-primary-color);display:flex;justify-content:center;align-content:center}.item-list-suffix{font-weight:400;font-size:.85rem}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.item-grip-icon{font-weight:400;padding:.75rem 1rem .75rem 0rem}.cdk-drop-list.cdk-drop-list-dragging{cursor:grabbing!important;pointer-events:all!important}.item-custom-placeholder.cdk-drag-placeholder{pointer-events:all!important}.cdk-drop-list.drag-enabled:not(.cdk-drag-placeholder) label{cursor:grab}.cdk-drop-list label:focus-visible{outline-color:#333;outline-offset:4px}.item-list.cdk-drop-list-dragging .item-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1);pointer-events:all!important}.item-custom-placeholder{border:dotted 1px #999;min-height:44px;transition:transform .25s cubic-bezier(0,0,.2,1);border-radius:4px;margin:5px 0;padding:12px 12px 12px 16px}.user-icon{margin-right:.5rem}.item-control{width:100%;display:flex;flex-direction:row;justify-content:space-between}.form-control.item-layout{display:flex;justify-content:space-between}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$
|
|
1652
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NggSortableListComponent, selector: "ngg-sortable-list", inputs: { groups: "groups", shouldDisplayCheckboxes: "shouldDisplayCheckboxes", isReadOnly: "isReadOnly", isDraggable: "isDraggable", description: "description", suffixTemplate: "suffixTemplate" }, outputs: { itemSelectionChanged: "itemSelectionChanged", itemOrderChanged: "itemOrderChanged" }, viewQueries: [{ propertyName: "sortableListGroups", first: true, predicate: ["sortableListGroups"], descendants: true }], ngImport: i0, template: "<div class=\"item-list\">\n <ng-container>\n <p class=\"item-list-header\">\n <span class=\"item-list-header-title\">{{ description }}</span>\n </p>\n <div #sortableListGroups cdkDropListGroup>\n <div\n *ngFor=\"let group of groups; let g_i = index\"\n class=\"item-list-group\"\n [class.drag-enabled]=\"isDraggable && !isReadOnly\"\n role=\"list\"\n cdkDropList\n [cdkDropListData]=\"group.items\"\n [id]=\"g_i.toString()\"\n (cdkDropListDropped)=\"onDragDrop($event)\"\n >\n <p\n *ngIf=\"group.title && group.title.length > 0\"\n class=\"item-list-header\"\n >\n <span class=\"item-list-header-title\">{{ group.title }}</span>\n </p>\n <p\n *ngIf=\"group.description && group.description.length > 0\"\n class=\"item-list-header-description\"\n >\n {{ group.description }}\n </p>\n <div\n *ngFor=\"let checklistItem of group.items; let i = index\"\n [cdkDragDisabled]=\"!isDraggable || isReadOnly\"\n [cdkDragData]=\"checklistItem\"\n cdkDrag\n cdkDragLockAxis=\"y\"\n class=\"item-box\"\n role=\"listitem\"\n >\n <div *cdkDragPlaceholder class=\"item-custom-placeholder\"></div>\n <label\n (keydown.alt.arrowDown)=\"onAltArrowKeydown(g_i, i, i + 1, $event)\"\n (keydown.alt.arrowUp)=\"onAltArrowKeydown(g_i, i, i - 1, $event)\"\n (keydown.arrowDown)=\"onArrowKeydown(g_i, i + 1, $event)\"\n (keydown.arrowUp)=\"onArrowKeydown(g_i, i - 1, $event)\"\n class=\"form-control item-control align-items-center item\"\n [tabindex]=\"shouldDisplayCheckboxes ? '-1' : '0'\"\n >\n <div class=\"form-control\">\n <input\n (change)=\"toggleSelection(checklistItem)\"\n [checked]=\"checklistItem.selected\"\n [disabled]=\"isReadOnly\"\n [type]=\"shouldDisplayCheckboxes ? 'checkbox' : 'hidden'\"\n />\n <div class=\"item-box-title\">\n <span name=\"agendaItemName\"\n >{{ checklistItem.name }}\n <span\n *ngIf=\"checklistItem.hasCustomSuffix\"\n class=\"item-list-suffix\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n suffixTemplate;\n context: { $implicit: checklistItem }\n \"\n class=\"user-icon\"\n >\n </ng-container>\n </span>\n </span>\n <br />\n <span *ngIf=\"!!checklistItem.description\">\n <span class=\"item-list-suffix\" name=\"agendaItemToolTip\">\n {{ checklistItem.description }}\n </span>\n <br />\n </span>\n </div>\n <i></i>\n </div>\n <div *ngIf=\"isDraggable && !isReadOnly\" class=\"item-grip-icon\">\n <i class=\"sg-icon sg-icon-grip-vertical text-primary\"></i>\n </div>\n </label>\n </div>\n </div>\n </div>\n </ng-container>\n</div>\n", styles: [".item-list{width:100%;display:block}label.item{padding:0!important}.item-box{background-color:var(--sg-card-background);color:var(--text-primary-color);display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;font-size:14px;margin:5px 0;border:1px solid var(--border-color);border-radius:4px}.form-control{line-height:20px;font-size:16px;font-weight:500}.item-list-header{display:flex;flex-direction:row;justify-content:space-between;margin-bottom:1rem}.item-list-header-title{font-weight:600;font-size:1rem;line-height:1.25rem;font-style:normal}.item-list-header-subtitle{font-size:.75rem;color:var(--text-primary-color);display:flex;justify-content:center;align-content:center}.item-list-suffix{font-weight:400;font-size:.85rem}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.item-grip-icon{font-weight:400;padding:.75rem 1rem .75rem 0rem}.cdk-drop-list.cdk-drop-list-dragging{cursor:grabbing!important;pointer-events:all!important}.item-custom-placeholder.cdk-drag-placeholder{pointer-events:all!important}.cdk-drop-list.drag-enabled:not(.cdk-drag-placeholder) label{cursor:grab}.cdk-drop-list label:focus-visible{outline-color:#333;outline-offset:4px}.item-list.cdk-drop-list-dragging .item-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1);pointer-events:all!important}.item-custom-placeholder{border:dotted 1px #999;min-height:44px;transition:transform .25s cubic-bezier(0,0,.2,1);border-radius:4px;margin:5px 0;padding:12px 12px 12px 16px}.user-icon{margin-right:.5rem}.item-control{width:100%;display:flex;flex-direction:row;justify-content:space-between}.form-control.item-layout{display:flex;justify-content:space-between}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i2$2.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: i2$2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i2$2.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }] }); }
|
|
1671
1653
|
}
|
|
1672
1654
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NggSortableListComponent, decorators: [{
|
|
1673
1655
|
type: Component,
|
|
@@ -1781,7 +1763,7 @@ class CellTableItemComponent {
|
|
|
1781
1763
|
return '';
|
|
1782
1764
|
}
|
|
1783
1765
|
}
|
|
1784
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CellTableItemComponent, deps: [{ token: i1$
|
|
1766
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CellTableItemComponent, deps: [{ token: i1$3.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1785
1767
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CellTableItemComponent, selector: "[nggCellTableItem]", inputs: { row: "row", valueType: "valueType", id: "id" }, ngImport: i0, template: `
|
|
1786
1768
|
<ng-container [ngSwitch]="valueType">
|
|
1787
1769
|
<span *ngSwitchCase="'string'">{{ row || '–' }}</span>
|
|
@@ -1837,7 +1819,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1837
1819
|
</ng-container>
|
|
1838
1820
|
`,
|
|
1839
1821
|
}]
|
|
1840
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
1822
|
+
}], ctorParameters: function () { return [{ type: i1$3.DomSanitizer }]; }, propDecorators: { row: [{
|
|
1841
1823
|
type: Input
|
|
1842
1824
|
}], valueType: [{
|
|
1843
1825
|
type: Input
|
|
@@ -2248,3083 +2230,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
2248
2230
|
}]
|
|
2249
2231
|
}] });
|
|
2250
2232
|
|
|
2251
|
-
// eslint-disable-next-line @angular-eslint/directive-class-suffix
|
|
2252
|
-
class NgvBaseControlValueAccessorComponent {
|
|
2253
|
-
/** Hides the input borders and displays current value as a text. */
|
|
2254
|
-
set locked(value) {
|
|
2255
|
-
this._locked = value;
|
|
2256
|
-
this.cdr.detectChanges();
|
|
2257
|
-
}
|
|
2258
|
-
get locked() {
|
|
2259
|
-
return this._locked;
|
|
2260
|
-
}
|
|
2261
|
-
/** Override the required flag of the component. */
|
|
2262
|
-
set required(value) {
|
|
2263
|
-
this._required = value;
|
|
2264
|
-
}
|
|
2265
|
-
/** Child input element is considered required and changes default label template accordingly. */
|
|
2266
|
-
get required() {
|
|
2267
|
-
// if required is set => return required
|
|
2268
|
-
if (this._required !== undefined)
|
|
2269
|
-
return this._required;
|
|
2270
|
-
// if required can be determined from the control => return control.required
|
|
2271
|
-
if (this.ngControl?.control?.validator) {
|
|
2272
|
-
const validator = this.ngControl?.control?.validator({});
|
|
2273
|
-
// returns true for any error that starts with required
|
|
2274
|
-
return Object.keys(validator ?? {}).some((key) => key.startsWith('required'));
|
|
2275
|
-
}
|
|
2276
|
-
return;
|
|
2277
|
-
}
|
|
2278
|
-
/** Override the invalid state of the component. */
|
|
2279
|
-
set invalid(value) {
|
|
2280
|
-
this._invalid = value;
|
|
2281
|
-
}
|
|
2282
|
-
/** The component has the invalid state, usually decorating the elements red and shows the first error. */
|
|
2283
|
-
get invalid() {
|
|
2284
|
-
if (this._invalid === true || this._invalid === false)
|
|
2285
|
-
return this._invalid;
|
|
2286
|
-
return (!!this.ngControl?.control?.invalid && this.ngControl?.control?.touched);
|
|
2287
|
-
}
|
|
2288
|
-
/** Override the valid state of the component. */
|
|
2289
|
-
set valid(value) {
|
|
2290
|
-
this._valid = value;
|
|
2291
|
-
}
|
|
2292
|
-
/** The component has the valid state, usually decorating the elements green. */
|
|
2293
|
-
get valid() {
|
|
2294
|
-
if (this._valid === true || this._valid === false)
|
|
2295
|
-
return this._valid;
|
|
2296
|
-
return !!this.ngControl?.control?.valid && this.ngControl?.control?.touched;
|
|
2297
|
-
}
|
|
2298
|
-
/** Override the disabled state of the component. */
|
|
2299
|
-
set disabled(value) {
|
|
2300
|
-
this._disabled = value;
|
|
2301
|
-
}
|
|
2302
|
-
/** The component has the disabled state, usually muting the colors and removes interaction. */
|
|
2303
|
-
get disabled() {
|
|
2304
|
-
if (this._disabled === true || this._disabled === false)
|
|
2305
|
-
return this._disabled;
|
|
2306
|
-
return !!this.ngControl?.control?.disabled;
|
|
2307
|
-
}
|
|
2308
|
-
/**
|
|
2309
|
-
* Creates a new BaseControlValueAccessorComponent.
|
|
2310
|
-
* @param ngControl optional FormControl provided when component is used in a form, through dependency injection.
|
|
2311
|
-
* @param translocoScope optional TranslocoScope provided if component is used within a scope.
|
|
2312
|
-
*/
|
|
2313
|
-
constructor(ngControl, translocoScope, cdr) {
|
|
2314
|
-
this.ngControl = ngControl;
|
|
2315
|
-
this.translocoScope = translocoScope;
|
|
2316
|
-
this.cdr = cdr;
|
|
2317
|
-
/* ATTRIBUTES */
|
|
2318
|
-
/** Id of the host element and is accessible by the children, automatically generated if not provided. */
|
|
2319
|
-
this.id = window.ngv?.nextId();
|
|
2320
|
-
/** If set to true, the browser will try to automatically set focus to the child input element. */
|
|
2321
|
-
this.autofocus = false;
|
|
2322
|
-
this._locked = undefined;
|
|
2323
|
-
/* STATES */
|
|
2324
|
-
this._required = undefined;
|
|
2325
|
-
this._invalid = undefined;
|
|
2326
|
-
this._valid = undefined;
|
|
2327
|
-
/** The component has the focused state, updated by the child input element's focus state. */
|
|
2328
|
-
this.focused = false;
|
|
2329
|
-
this._disabled = undefined;
|
|
2330
|
-
/* TRIGGERS */
|
|
2331
|
-
/** Emits focus events triggered by the child elements. */
|
|
2332
|
-
this.ngvFocus = new EventEmitter();
|
|
2333
|
-
/** Emits focus events triggered by the child elements. */
|
|
2334
|
-
this.ngvBlur = new EventEmitter();
|
|
2335
|
-
/* VALUE HANDLERS */
|
|
2336
|
-
this._state = null;
|
|
2337
|
-
/** @internal */
|
|
2338
|
-
this.onChange = (_) => {
|
|
2339
|
-
// do nothing
|
|
2340
|
-
};
|
|
2341
|
-
/** @internal */
|
|
2342
|
-
this.onTouched = () => {
|
|
2343
|
-
// do nothing
|
|
2344
|
-
};
|
|
2345
|
-
/** @internal */
|
|
2346
|
-
this.onValidatorChange = () => null;
|
|
2347
|
-
/* LIFE CYCLE VARIABLES */
|
|
2348
|
-
this._onDestroy$ = new Subject();
|
|
2349
|
-
if (this.ngControl) {
|
|
2350
|
-
// Note: we provide the value accessor through here, instead of
|
|
2351
|
-
// the `providers` to avoid running into a circular import.
|
|
2352
|
-
this.ngControl.valueAccessor = this;
|
|
2353
|
-
}
|
|
2354
|
-
if (this.translocoScope)
|
|
2355
|
-
this.scope = this.translocoScope.toString();
|
|
2356
|
-
}
|
|
2357
|
-
// eslint-disable-next-line @angular-eslint/contextual-lifecycle
|
|
2358
|
-
ngOnInit() {
|
|
2359
|
-
if (this.ngControl && this.ngControl.control) {
|
|
2360
|
-
this.ngControl.control.setValidators(Validators.compose([this.ngControl.control.validator, this.validate]));
|
|
2361
|
-
}
|
|
2362
|
-
// if reset observable has been passed, subscribe after updates
|
|
2363
|
-
this.reset?.pipe(takeUntil(this._onDestroy$)).subscribe({
|
|
2364
|
-
next: () => {
|
|
2365
|
-
// reset value of controller
|
|
2366
|
-
this.state = this.defaultValue;
|
|
2367
|
-
this.onChange(this.state);
|
|
2368
|
-
this.cdr.detectChanges();
|
|
2369
|
-
},
|
|
2370
|
-
});
|
|
2371
|
-
}
|
|
2372
|
-
// eslint-disable-next-line @angular-eslint/contextual-lifecycle
|
|
2373
|
-
ngAfterViewInit() {
|
|
2374
|
-
// if default value is set, then don't alter it. Otherwise, use
|
|
2375
|
-
// current value of controller after initiation as default value
|
|
2376
|
-
this.defaultValue = this.defaultValue ?? this.ngControl?.value;
|
|
2377
|
-
}
|
|
2378
|
-
ngOnDestroy() {
|
|
2379
|
-
this._onDestroy$.next(true);
|
|
2380
|
-
this._onDestroy$.complete();
|
|
2381
|
-
}
|
|
2382
|
-
detectChanges() {
|
|
2383
|
-
this.cdr.detectChanges();
|
|
2384
|
-
}
|
|
2385
|
-
/** @internal */
|
|
2386
|
-
onFocus(event) {
|
|
2387
|
-
event.stopPropagation
|
|
2388
|
-
? event.stopPropagation()
|
|
2389
|
-
: (event.cancelBubble = true);
|
|
2390
|
-
this.focused = true;
|
|
2391
|
-
this.ngvFocus.emit(event);
|
|
2392
|
-
}
|
|
2393
|
-
/** @internal */
|
|
2394
|
-
onBlur(event) {
|
|
2395
|
-
event.stopPropagation
|
|
2396
|
-
? event.stopPropagation()
|
|
2397
|
-
: (event.cancelBubble = true);
|
|
2398
|
-
this.onTouched();
|
|
2399
|
-
this.focused = false;
|
|
2400
|
-
this.ngvBlur.emit(event);
|
|
2401
|
-
}
|
|
2402
|
-
/** Sets the focus on the actual input element. */
|
|
2403
|
-
setFocus() {
|
|
2404
|
-
if (this.inputRef)
|
|
2405
|
-
this.inputRef.nativeElement.focus();
|
|
2406
|
-
}
|
|
2407
|
-
// ----------------------------------------------------------------------------
|
|
2408
|
-
// CONTROL VALUE ACCESSOR
|
|
2409
|
-
// ----------------------------------------------------------------------------
|
|
2410
|
-
/** Internal state/value that the native input element has. */
|
|
2411
|
-
get state() {
|
|
2412
|
-
return this._state;
|
|
2413
|
-
}
|
|
2414
|
-
/** Internal state/value that the native input element has. */
|
|
2415
|
-
set state(value) {
|
|
2416
|
-
if (typeof value === 'undefined')
|
|
2417
|
-
value = null;
|
|
2418
|
-
this._state = value;
|
|
2419
|
-
}
|
|
2420
|
-
/** Writes a new value to the child input element. */
|
|
2421
|
-
writeValue(value) {
|
|
2422
|
-
this.state = value;
|
|
2423
|
-
}
|
|
2424
|
-
/** Registers a callback function that is called when the child input element's value changes. */
|
|
2425
|
-
registerOnChange(fn) {
|
|
2426
|
-
this.onChange = fn;
|
|
2427
|
-
}
|
|
2428
|
-
/** Registers a callback function that is called when the child input element triggers on blur. */
|
|
2429
|
-
registerOnTouched(fn) {
|
|
2430
|
-
this.onTouched = fn;
|
|
2431
|
-
}
|
|
2432
|
-
/** Function that is called by the forms API when the control status changes to or from 'DISABLED'. */
|
|
2433
|
-
setDisabledState(isDisabled) {
|
|
2434
|
-
this.disabled = isDisabled;
|
|
2435
|
-
// if displayDisabledAsLocked is enabled - update locked state based on disabled state
|
|
2436
|
-
if (this.displayDisabledAsLocked) {
|
|
2437
|
-
this.locked = isDisabled;
|
|
2438
|
-
}
|
|
2439
|
-
}
|
|
2440
|
-
// ----------------------------------------------------------------------------
|
|
2441
|
-
// VALIDATORS
|
|
2442
|
-
// ----------------------------------------------------------------------------
|
|
2443
|
-
/** Method that performs synchronous validation against the provided control. Used for internal validation. */
|
|
2444
|
-
validate(_control) {
|
|
2445
|
-
return null;
|
|
2446
|
-
}
|
|
2447
|
-
/** Registers a callback function to call when the validator inputs change. */
|
|
2448
|
-
registerOnValidatorChange(fn) {
|
|
2449
|
-
this.onValidatorChange = fn;
|
|
2450
|
-
}
|
|
2451
|
-
// ----------------------------------------------------------------------------
|
|
2452
|
-
// HELPERS
|
|
2453
|
-
// ----------------------------------------------------------------------------
|
|
2454
|
-
/** Returns the first entry in an error object. */
|
|
2455
|
-
get firstError() {
|
|
2456
|
-
const errors = this.ngControl.errors;
|
|
2457
|
-
if (!errors)
|
|
2458
|
-
return null;
|
|
2459
|
-
const code = Object.keys(errors)[0];
|
|
2460
|
-
return { code, params: errors[code] };
|
|
2461
|
-
}
|
|
2462
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvBaseControlValueAccessorComponent, deps: [{ token: i1$3.NgControl, optional: true, self: true }, { token: TRANSLOCO_SCOPE, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2463
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgvBaseControlValueAccessorComponent, selector: "ng-component", inputs: { id: "id", name: "name", label: "label", role: "role", value: "value", error: "error", description: "description", autofocus: "autofocus", defaultValue: "defaultValue", reset: "reset", optional: "optional", locked: "locked", displayDisabledAsLocked: "displayDisabledAsLocked", required: "required", invalid: "invalid", valid: "valid", focused: "focused", disabled: "disabled" }, outputs: { ngvFocus: "ngvFocus", ngvBlur: "ngvBlur" }, host: { properties: { "attr.id": "this.id" } }, queries: [{ propertyName: "labelContentTpl", first: true, predicate: ["labelTpl"], descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true, read: ElementRef }], ngImport: i0, template: '', isInline: true }); }
|
|
2464
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvBaseControlValueAccessorComponent }); }
|
|
2465
|
-
}
|
|
2466
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvBaseControlValueAccessorComponent, decorators: [{
|
|
2467
|
-
type: Injectable
|
|
2468
|
-
}, {
|
|
2469
|
-
type: Component,
|
|
2470
|
-
args: [{ template: '' }]
|
|
2471
|
-
}], ctorParameters: function () { return [{ type: i1$3.NgControl, decorators: [{
|
|
2472
|
-
type: Self
|
|
2473
|
-
}, {
|
|
2474
|
-
type: Optional
|
|
2475
|
-
}] }, { type: undefined, decorators: [{
|
|
2476
|
-
type: Optional
|
|
2477
|
-
}, {
|
|
2478
|
-
type: Inject,
|
|
2479
|
-
args: [TRANSLOCO_SCOPE]
|
|
2480
|
-
}] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { labelContentTpl: [{
|
|
2481
|
-
type: ContentChild,
|
|
2482
|
-
args: ['labelTpl', { read: TemplateRef }]
|
|
2483
|
-
}], inputRef: [{
|
|
2484
|
-
type: ViewChild,
|
|
2485
|
-
args: ['input', { read: ElementRef }]
|
|
2486
|
-
}], id: [{
|
|
2487
|
-
type: HostBinding,
|
|
2488
|
-
args: ['attr.id']
|
|
2489
|
-
}, {
|
|
2490
|
-
type: Input
|
|
2491
|
-
}], name: [{
|
|
2492
|
-
type: Input
|
|
2493
|
-
}], label: [{
|
|
2494
|
-
type: Input
|
|
2495
|
-
}], role: [{
|
|
2496
|
-
type: Input
|
|
2497
|
-
}], value: [{
|
|
2498
|
-
type: Input
|
|
2499
|
-
}], error: [{
|
|
2500
|
-
type: Input
|
|
2501
|
-
}], description: [{
|
|
2502
|
-
type: Input
|
|
2503
|
-
}], autofocus: [{
|
|
2504
|
-
type: Input
|
|
2505
|
-
}], defaultValue: [{
|
|
2506
|
-
type: Input
|
|
2507
|
-
}], reset: [{
|
|
2508
|
-
type: Input
|
|
2509
|
-
}], optional: [{
|
|
2510
|
-
type: Input
|
|
2511
|
-
}], locked: [{
|
|
2512
|
-
type: Input
|
|
2513
|
-
}], displayDisabledAsLocked: [{
|
|
2514
|
-
type: Input
|
|
2515
|
-
}], required: [{
|
|
2516
|
-
type: Input
|
|
2517
|
-
}], invalid: [{
|
|
2518
|
-
type: Input
|
|
2519
|
-
}], valid: [{
|
|
2520
|
-
type: Input
|
|
2521
|
-
}], focused: [{
|
|
2522
|
-
type: Input
|
|
2523
|
-
}], disabled: [{
|
|
2524
|
-
type: Input
|
|
2525
|
-
}], ngvFocus: [{
|
|
2526
|
-
type: Output
|
|
2527
|
-
}], ngvBlur: [{
|
|
2528
|
-
type: Output
|
|
2529
|
-
}] } });
|
|
2530
|
-
|
|
2531
|
-
class NgvBaseControlValueAccessorModule {
|
|
2532
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvBaseControlValueAccessorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
2533
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgvBaseControlValueAccessorModule, declarations: [NgvBaseControlValueAccessorComponent], exports: [NgvBaseControlValueAccessorComponent] }); }
|
|
2534
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvBaseControlValueAccessorModule }); }
|
|
2535
|
-
}
|
|
2536
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvBaseControlValueAccessorModule, decorators: [{
|
|
2537
|
-
type: NgModule,
|
|
2538
|
-
args: [{
|
|
2539
|
-
declarations: [NgvBaseControlValueAccessorComponent],
|
|
2540
|
-
imports: [],
|
|
2541
|
-
exports: [NgvBaseControlValueAccessorComponent],
|
|
2542
|
-
}]
|
|
2543
|
-
}] });
|
|
2544
|
-
|
|
2545
|
-
class NgvBreadcrumbsComponent {
|
|
2546
|
-
constructor() {
|
|
2547
|
-
/** Special property used for selecting DOM elements during automated UI testing. */
|
|
2548
|
-
this.thook = 'breadcrumbs';
|
|
2549
|
-
}
|
|
2550
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvBreadcrumbsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2551
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgvBreadcrumbsComponent, selector: "ngv-breadcrumbs", inputs: { thook: "thook", breadcrumbs: "breadcrumbs" }, host: { properties: { "attr.data-thook": "this.thook" } }, ngImport: i0, template: "<nav aria-label=\"Breadcrumbs\">\n <ol class=\"gds-breadcrumbs\">\n <ng-container *ngFor=\"let breadcrumb of breadcrumbs; let i = index\">\n <li [attr.aria-current]=\"i === breadcrumbs.length - 1\">\n <a\n [routerLink]=\"breadcrumb.href\"\n [external]=\"!!breadcrumb.external\"\n *ngIf=\"i < breadcrumbs.length - 1; else currentPageRef\"\n >{{ breadcrumb.title }}</a\n >\n <ng-template #currentPageRef>\n <span>{{ breadcrumb.title }}</span>\n </ng-template>\n </li>\n <li class=\"icon\" *ngIf=\"i < breadcrumbs.length - 1\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M9.22817 5.19072L8.60942 5.80947C8.46255 5.95635 8.46255 6.19385 8.60942 6.34072L14.2563 12.0001L8.60942 17.6595C8.46255 17.8063 8.46255 18.0438 8.60942 18.1907L9.22817 18.8095C9.37505 18.9563 9.61255 18.9563 9.75942 18.8095L16.3032 12.2657C16.45 12.1188 16.45 11.8813 16.3032 11.7345L9.75942 5.19072C9.61255 5.04385 9.37505 5.04385 9.22817 5.19072Z\"\n fill=\"#000\"\n />\n </svg>\n </li>\n </ng-container>\n </ol>\n</nav>\n", styles: [":host ol{padding-left:0;margin-bottom:0;margin-top:0;display:flex;flex-direction:column;list-style:none;flex-direction:row!important;align-items:center;gap:4px}:host ol>li{padding-bottom:.5rem;padding-top:.5rem;border:0;display:block;position:relative}:host ol>li:before{font-weight:500;display:inline-block;left:0;position:absolute;text-align:center}:host ol>li{padding:0!important;font-weight:500}:host ol>li:before{display:none!important}:host ol>li.icon{display:flex}:host ol>li.icon>svg{height:1rem;width:1rem}:host ol a{text-decoration:underline;text-underline-offset:3px;color:#0062bc;font-weight:500;border:none;border-radius:.125rem}:host ol a:hover{text-underline-offset:2px;text-decoration-thickness:2px}:host ol a:active{text-underline-offset:1px}:host ol a:focus:not(:focus-visible){box-shadow:none;outline:0}:host ol a:focus,:host ol a:focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host ol a:focus:not([aria-disabled]){color:#0092e1}:host ol a.link-history:visited{color:#673ab6}:host ol svg{width:1rem;height:1rem}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.NgvExternalLinkDirective, selector: "a[routerLink]", inputs: ["external"] }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
|
|
2552
|
-
}
|
|
2553
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvBreadcrumbsComponent, decorators: [{
|
|
2554
|
-
type: Component,
|
|
2555
|
-
args: [{ selector: 'ngv-breadcrumbs', template: "<nav aria-label=\"Breadcrumbs\">\n <ol class=\"gds-breadcrumbs\">\n <ng-container *ngFor=\"let breadcrumb of breadcrumbs; let i = index\">\n <li [attr.aria-current]=\"i === breadcrumbs.length - 1\">\n <a\n [routerLink]=\"breadcrumb.href\"\n [external]=\"!!breadcrumb.external\"\n *ngIf=\"i < breadcrumbs.length - 1; else currentPageRef\"\n >{{ breadcrumb.title }}</a\n >\n <ng-template #currentPageRef>\n <span>{{ breadcrumb.title }}</span>\n </ng-template>\n </li>\n <li class=\"icon\" *ngIf=\"i < breadcrumbs.length - 1\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M9.22817 5.19072L8.60942 5.80947C8.46255 5.95635 8.46255 6.19385 8.60942 6.34072L14.2563 12.0001L8.60942 17.6595C8.46255 17.8063 8.46255 18.0438 8.60942 18.1907L9.22817 18.8095C9.37505 18.9563 9.61255 18.9563 9.75942 18.8095L16.3032 12.2657C16.45 12.1188 16.45 11.8813 16.3032 11.7345L9.75942 5.19072C9.61255 5.04385 9.37505 5.04385 9.22817 5.19072Z\"\n fill=\"#000\"\n />\n </svg>\n </li>\n </ng-container>\n </ol>\n</nav>\n", styles: [":host ol{padding-left:0;margin-bottom:0;margin-top:0;display:flex;flex-direction:column;list-style:none;flex-direction:row!important;align-items:center;gap:4px}:host ol>li{padding-bottom:.5rem;padding-top:.5rem;border:0;display:block;position:relative}:host ol>li:before{font-weight:500;display:inline-block;left:0;position:absolute;text-align:center}:host ol>li{padding:0!important;font-weight:500}:host ol>li:before{display:none!important}:host ol>li.icon{display:flex}:host ol>li.icon>svg{height:1rem;width:1rem}:host ol a{text-decoration:underline;text-underline-offset:3px;color:#0062bc;font-weight:500;border:none;border-radius:.125rem}:host ol a:hover{text-underline-offset:2px;text-decoration-thickness:2px}:host ol a:active{text-underline-offset:1px}:host ol a:focus:not(:focus-visible){box-shadow:none;outline:0}:host ol a:focus,:host ol a:focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host ol a:focus:not([aria-disabled]){color:#0092e1}:host ol a.link-history:visited{color:#673ab6}:host ol svg{width:1rem;height:1rem}\n"] }]
|
|
2556
|
-
}], propDecorators: { thook: [{
|
|
2557
|
-
type: HostBinding,
|
|
2558
|
-
args: ['attr.data-thook']
|
|
2559
|
-
}, {
|
|
2560
|
-
type: Input
|
|
2561
|
-
}], breadcrumbs: [{
|
|
2562
|
-
type: Input
|
|
2563
|
-
}] } });
|
|
2564
|
-
|
|
2565
|
-
class NgvBreadcrumbsModule {
|
|
2566
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvBreadcrumbsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
2567
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgvBreadcrumbsModule, declarations: [NgvBreadcrumbsComponent], imports: [CommonModule, NgvExternalLinkDirectiveModule, RouterModule], exports: [NgvBreadcrumbsComponent] }); }
|
|
2568
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvBreadcrumbsModule, imports: [CommonModule, NgvExternalLinkDirectiveModule, RouterModule] }); }
|
|
2569
|
-
}
|
|
2570
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvBreadcrumbsModule, decorators: [{
|
|
2571
|
-
type: NgModule,
|
|
2572
|
-
args: [{
|
|
2573
|
-
declarations: [NgvBreadcrumbsComponent],
|
|
2574
|
-
imports: [CommonModule, NgvExternalLinkDirectiveModule, RouterModule],
|
|
2575
|
-
exports: [NgvBreadcrumbsComponent],
|
|
2576
|
-
}]
|
|
2577
|
-
}] });
|
|
2578
|
-
|
|
2579
|
-
var ButtonStyle;
|
|
2580
|
-
(function (ButtonStyle) {
|
|
2581
|
-
ButtonStyle[ButtonStyle["Primary"] = 0] = "Primary";
|
|
2582
|
-
ButtonStyle[ButtonStyle["Secondary"] = 1] = "Secondary";
|
|
2583
|
-
ButtonStyle[ButtonStyle["Alternative"] = 2] = "Alternative";
|
|
2584
|
-
ButtonStyle[ButtonStyle["Delete"] = 3] = "Delete";
|
|
2585
|
-
ButtonStyle[ButtonStyle["DeleteConfirm"] = 4] = "DeleteConfirm";
|
|
2586
|
-
ButtonStyle[ButtonStyle["Ghost"] = 5] = "Ghost";
|
|
2587
|
-
ButtonStyle[ButtonStyle["GhostDark"] = 6] = "GhostDark";
|
|
2588
|
-
ButtonStyle[ButtonStyle["Link"] = 7] = "Link";
|
|
2589
|
-
})(ButtonStyle || (ButtonStyle = {}));
|
|
2590
|
-
/**
|
|
2591
|
-
* Buttons allow users to take action with a single tap.
|
|
2592
|
-
* https://designlibrary.sebgroup.com/components/component-button
|
|
2593
|
-
*/
|
|
2594
|
-
class NgvButtonComponent extends NgvBaseControlValueAccessorComponent$1 {
|
|
2595
|
-
constructor(ngControl, translocoScope, cdr) {
|
|
2596
|
-
super(ngControl, translocoScope, cdr);
|
|
2597
|
-
this.ngControl = ngControl;
|
|
2598
|
-
this.translocoScope = translocoScope;
|
|
2599
|
-
this.cdr = cdr;
|
|
2600
|
-
/** Special property used for selecting DOM elements during automated UI testing. */
|
|
2601
|
-
this.thook = 'button';
|
|
2602
|
-
/** Type of button to one of button|submit|reset|link, where link creates an anchor tag. */
|
|
2603
|
-
this.type = 'button';
|
|
2604
|
-
/** Style of the button to one of Primary|Secondary|Alternative|Delete|DeleteConfirm|Ghost|GhostDark|Link. */
|
|
2605
|
-
this.buttonStyle = this.type === 'link' ? ButtonStyle.Link : ButtonStyle.Primary;
|
|
2606
|
-
/** Size of the button to be smaller. */
|
|
2607
|
-
this.small = false;
|
|
2608
|
-
/** @internal Determines if the the href property should use internal routing. */
|
|
2609
|
-
this.external = false;
|
|
2610
|
-
/** @internal The classes determined by the buttonStyle and small properties. */
|
|
2611
|
-
this.buttonClasses = {};
|
|
2612
|
-
/** Emits click events triggered by the button or link.
|
|
2613
|
-
* Use instead of click to avoid triggering events on disabled buttons and links.
|
|
2614
|
-
*/
|
|
2615
|
-
this.ngvClick = new EventEmitter();
|
|
2616
|
-
}
|
|
2617
|
-
/** @internal */
|
|
2618
|
-
static buttonStyleClasses(type, small) {
|
|
2619
|
-
return {
|
|
2620
|
-
small: small,
|
|
2621
|
-
primary: type === ButtonStyle.Primary || type === ButtonStyle.Delete,
|
|
2622
|
-
secondary: type === ButtonStyle.Secondary,
|
|
2623
|
-
tertiary: type === ButtonStyle.Alternative || type === ButtonStyle.Link,
|
|
2624
|
-
danger: type === ButtonStyle.Delete || type === ButtonStyle.DeleteConfirm,
|
|
2625
|
-
ghost: type === ButtonStyle.GhostDark,
|
|
2626
|
-
'ghost-light': type === ButtonStyle.Ghost,
|
|
2627
|
-
};
|
|
2628
|
-
}
|
|
2629
|
-
ngOnInit() {
|
|
2630
|
-
super.ngOnInit();
|
|
2631
|
-
if (this.href)
|
|
2632
|
-
this.external = /^\w+:\/\/.+$/.test(this.href);
|
|
2633
|
-
this.buttonClasses = NgvButtonComponent.buttonStyleClasses(this.buttonStyle, this.small);
|
|
2634
|
-
}
|
|
2635
|
-
ngOnChanges(changes) {
|
|
2636
|
-
if (changes.buttonStyle || changes.small) {
|
|
2637
|
-
this.buttonClasses = NgvButtonComponent.buttonStyleClasses(this.buttonStyle, this.small);
|
|
2638
|
-
}
|
|
2639
|
-
}
|
|
2640
|
-
/** @internal */
|
|
2641
|
-
onClick(event) {
|
|
2642
|
-
if (this.disabled)
|
|
2643
|
-
return;
|
|
2644
|
-
this.ngvClick.emit(event);
|
|
2645
|
-
}
|
|
2646
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvButtonComponent, deps: [{ token: i1$3.NgControl, optional: true, self: true }, { token: TRANSLOCO_SCOPE, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2647
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgvButtonComponent, selector: "ngv-button", inputs: { thook: "thook", type: "type", buttonStyle: "buttonStyle", small: "small", href: "href" }, outputs: { ngvClick: "ngvClick" }, host: { properties: { "attr.data-thook": "this.thook" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<button\n #input\n [ngClass]=\"buttonClasses\"\n [id]=\"id + '-button'\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [type]=\"type\"\n [autofocus]=\"autofocus\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"description\"\n (click)=\"onClick($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n *ngIf=\"type !== 'link'\"\n>\n <ng-container *ngTemplateOutlet=\"contentRef\"></ng-container>\n</button>\n\n<a\n #input\n [ngClass]=\"buttonClasses\"\n role=\"button\"\n [id]=\"id + '-link'\"\n [routerLink]=\"href\"\n [external]=\"external\"\n [attr.aria-label]=\"description\"\n (click)=\"onClick($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n *ngIf=\"type === 'link'\"\n>\n <ng-container *ngTemplateOutlet=\"contentRef\"></ng-container>\n</a>\n\n<ng-template #contentRef>\n <ng-content></ng-content>\n</ng-template>\n", styles: [":host button,:host a{background-color:transparent;border:0;cursor:pointer;font-family:inherit;padding:0;padding:.75rem 1rem;border-radius:var(--sg-border-radius);border:solid var(--sg-border-width) var(--sg-border-color);font-weight:500;min-height:2.75rem;align-items:center;display:inline-flex;justify-content:center}:host button:focus:not(:focus-visible),:host a:focus:not(:focus-visible){box-shadow:none;outline:0}:host button:focus,:host button:focus-visible,:host a:focus,:host a:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}@media (max-width: 35.98em){:host button,:host a{min-width:100%}}@media screen and (-ms-high-contrast: active){:host button,:host a{border:2px solid currentcolor}}:host button.small,:host a.small{min-height:2rem;padding:.4375rem .75rem;line-height:1rem}:host button.large,:host a.large{min-height:4rem;padding:1rem 1.5rem;font-size:1.5rem;line-height:2rem}:host .primary{transition:all .3s cubic-bezier(.23,1,.32,1),outline-offset 0s,outline-width 0s;background:#007ac7;border-color:#007ac7;color:#fff;--color: #fff}:host .primary:not(:disabled,.disabled,[aria-disabled]):hover{background-color:#199be3;color:#fff;--background: #199be3;--color: rgb(255, 255, 255);border-color:#199be3}:host .primary[aria-selected=true],:host .primary:active,:host .primary.active,:host .primary.active:hover,:host .primary:active:hover{background-color:#007ac7;color:#fff;--background: rgb(0, 122, 199);--color: rgb(255, 255, 255);border-color:#007ac7}:host .primary:focus-visible{background-color:#199be3;color:#fff;--background: #199be3;--color: rgb(255, 255, 255);border-color:#199be3!important}:host .primary:disabled,:host .primary.disabled,:host .primary[aria-disabled=true]{background:var(--form-control-primary-bg-disabled)!important;color:var(--text-primary-disabled-color)!important;border-color:var(--border-primary-disabled-color)!important;cursor:not-allowed}:host .primary:disabled::placeholder,:host .primary.disabled::placeholder,:host .primary[aria-disabled=true]::placeholder{color:var(--text-disabled-color)}:host .secondary{transition:all .3s cubic-bezier(.23,1,.32,1),outline-offset 0s,outline-width 0s;background:transparent;border-color:#007ac7;color:#007ac7;--color: rgb(0, 122, 199)}:host .secondary:focus:not(:focus-visible){box-shadow:none;outline:0}:host .secondary:focus,:host .secondary:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .secondary:not(:disabled,.disabled,[aria-disabled]):hover{background-color:#199be3;color:#fff;--background: #199be3;--color: rgb(255, 255, 255);border-color:#199be3}:host .secondary[aria-selected=true],:host .secondary:active,:host .secondary.active,:host .secondary.active:hover,:host .secondary:active:hover{background-color:#007ac7;color:#fff;--background: rgb(0, 122, 199);--color: rgb(255, 255, 255);border-color:#007ac7}:host .secondary:disabled,:host .secondary.disabled,:host .secondary[aria-disabled=true]{background:var(--sg-form-control-bg-disabled)!important;color:var(--text-disabled-color)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed}:host .secondary:disabled::placeholder,:host .secondary.disabled::placeholder,:host .secondary[aria-disabled=true]::placeholder{color:var(--text-disabled-color)}:host .tertiary{transition:all .3s cubic-bezier(.23,1,.32,1),outline-offset 0s,outline-width 0s;background:transparent;border-color:transparent;color:#007ac7;--color: rgb(0, 122, 199)}:host .tertiary:focus:not(:focus-visible){box-shadow:none;outline:0}:host .tertiary:focus,:host .tertiary:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .tertiary:not(:disabled,.disabled,[aria-disabled]):hover{background-color:#199be3;color:#fff;--background: #199be3;--color: rgb(255, 255, 255);border-color:#199be3}:host .tertiary[aria-selected=true],:host .tertiary:active,:host .tertiary.active,:host .tertiary.active:hover,:host .tertiary:active:hover{background-color:#007ac7;color:#fff;--background: rgb(0, 122, 199);--color: rgb(255, 255, 255);border-color:#007ac7}:host .tertiary:disabled,:host .tertiary.disabled,:host .tertiary[aria-disabled=true]{background:var(--sg-form-control-bg-disabled)!important;color:var(--text-disabled-color)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed}:host .tertiary:disabled::placeholder,:host .tertiary.disabled::placeholder,:host .tertiary[aria-disabled=true]::placeholder{color:var(--text-disabled-color)}:host .ghost-light{transition:all .3s cubic-bezier(.23,1,.32,1),outline-offset 0s,outline-width 0s;border-color:#fff;color:#fff;--color: rgb(255, 255, 255)}:host .ghost-light:not(:disabled,.disabled,[aria-disabled]):hover{background-color:#fff;color:#000;--background: rgb(255, 255, 255);--color: black;border-color:#fff}:host .ghost-light[aria-selected=true],:host .ghost-light:active,:host .ghost-light.active,:host .ghost-light.active:hover,:host .ghost-light:active:hover{background-color:#fff;color:#000;--background: rgb(255, 255, 255);--color: black;border-color:#fff}:host .ghost-light[aria-selected]:hover,:host .ghost-light.active:hover,:host .ghost-light:active:hover{opacity:.9}:host .ghost-light:focus-visible{background-color:#fff;color:#000;--background: rgb(255, 255, 255);--color: black;border-color:#fff!important}:host .ghost-light:disabled,:host .ghost-light.disabled,:host .ghost-light[aria-disabled=true]{color:var(--text-disabled-color)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed}:host .ghost-light:disabled::placeholder,:host .ghost-light.disabled::placeholder,:host .ghost-light[aria-disabled=true]::placeholder{color:var(--text-disabled-color)}:host .ghost{transition:all .3s cubic-bezier(.23,1,.32,1),outline-offset 0s,outline-width 0s;border-color:#333;color:#333;--color: rgb(51, 51, 51)}:host .ghost:not(:disabled,.disabled,[aria-disabled]):hover{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333}:host .ghost[aria-selected=true],:host .ghost:active,:host .ghost.active,:host .ghost.active:hover,:host .ghost:active:hover{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333}:host .ghost[aria-selected]:hover,:host .ghost.active:hover,:host .ghost:active:hover{opacity:.9}:host .ghost:focus-visible{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333!important}:host .ghost:disabled,:host .ghost.disabled,:host .ghost[aria-disabled=true]{color:var(--text-disabled-color)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed}:host .ghost:disabled::placeholder,:host .ghost.disabled::placeholder,:host .ghost[aria-disabled=true]::placeholder{color:var(--text-disabled-color)}:host .danger.primary{background:#bb000c;border-color:#bb000c;color:#fff;--color: #fff;transition:all .3s cubic-bezier(.23,1,.32,1),outline-offset 0s,outline-width 0s}:host .danger.primary:not(:disabled,.disabled,[aria-disabled]):hover{background-color:#d81a1a;color:#fff;--background: rgb(216, 26, 26);--color: rgb(255, 255, 255);border-color:#d81a1a}:host .danger.primary[aria-selected=true],:host .danger.primary:active,:host .danger.primary.active,:host .danger.primary.active:hover,:host .danger.primary:active:hover{background-color:#bb000c;color:#fff;--background: rgb(187, 0, 12);--color: rgb(255, 255, 255);border-color:#bb000c}:host .danger.primary[aria-selected]:hover,:host .danger.primary.active:hover,:host .danger.primary:active:hover{opacity:.9}:host .danger.primary:focus:not(:focus-visible){box-shadow:none;outline:0}:host .danger.primary:focus,:host .danger.primary:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .danger.primary:disabled,:host .danger.primary.disabled,:host .danger.primary[aria-disabled=true]{background:var(--form-control-primary-bg-disabled)!important;color:var(--text-primary-disabled-color)!important;border-color:var(--border-primary-disabled-color)!important;cursor:not-allowed}:host .danger.primary:disabled::placeholder,:host .danger.primary.disabled::placeholder,:host .danger.primary[aria-disabled=true]::placeholder{color:var(--text-disabled-color)}:host .danger:not(.primary){color:#bb000c;--color: rgb(187, 0, 12);border-color:transparent;transition:all .3s cubic-bezier(.23,1,.32,1),outline-offset 0s,outline-width 0s}:host .danger:not(.primary):not(:disabled,.disabled,[aria-disabled]):hover{background-color:#d81a1a;color:#fff;--background: rgb(216, 26, 26);--color: rgb(255, 255, 255);border-color:#d81a1a}:host .danger:not(.primary)[aria-selected=true],:host .danger:not(.primary):active,:host .danger:not(.primary).active,:host .danger:not(.primary).active:hover,:host .danger:not(.primary):active:hover{background-color:#bb000c;color:#fff;--background: rgb(187, 0, 12);--color: rgb(255, 255, 255);border-color:#bb000c}:host .danger:not(.primary)[aria-selected]:hover,:host .danger:not(.primary).active:hover,:host .danger:not(.primary):active:hover{opacity:.9}:host .danger:not(.primary):focus:not(:focus-visible){box-shadow:none;outline:0}:host .danger:not(.primary):focus,:host .danger:not(.primary):focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$2.NgvExternalLinkDirective, selector: "a[routerLink]", inputs: ["external"] }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
|
|
2648
|
-
}
|
|
2649
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvButtonComponent, decorators: [{
|
|
2650
|
-
type: Component,
|
|
2651
|
-
args: [{ selector: 'ngv-button', template: "<button\n #input\n [ngClass]=\"buttonClasses\"\n [id]=\"id + '-button'\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [type]=\"type\"\n [autofocus]=\"autofocus\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"description\"\n (click)=\"onClick($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n *ngIf=\"type !== 'link'\"\n>\n <ng-container *ngTemplateOutlet=\"contentRef\"></ng-container>\n</button>\n\n<a\n #input\n [ngClass]=\"buttonClasses\"\n role=\"button\"\n [id]=\"id + '-link'\"\n [routerLink]=\"href\"\n [external]=\"external\"\n [attr.aria-label]=\"description\"\n (click)=\"onClick($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n *ngIf=\"type === 'link'\"\n>\n <ng-container *ngTemplateOutlet=\"contentRef\"></ng-container>\n</a>\n\n<ng-template #contentRef>\n <ng-content></ng-content>\n</ng-template>\n", styles: [":host button,:host a{background-color:transparent;border:0;cursor:pointer;font-family:inherit;padding:0;padding:.75rem 1rem;border-radius:var(--sg-border-radius);border:solid var(--sg-border-width) var(--sg-border-color);font-weight:500;min-height:2.75rem;align-items:center;display:inline-flex;justify-content:center}:host button:focus:not(:focus-visible),:host a:focus:not(:focus-visible){box-shadow:none;outline:0}:host button:focus,:host button:focus-visible,:host a:focus,:host a:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}@media (max-width: 35.98em){:host button,:host a{min-width:100%}}@media screen and (-ms-high-contrast: active){:host button,:host a{border:2px solid currentcolor}}:host button.small,:host a.small{min-height:2rem;padding:.4375rem .75rem;line-height:1rem}:host button.large,:host a.large{min-height:4rem;padding:1rem 1.5rem;font-size:1.5rem;line-height:2rem}:host .primary{transition:all .3s cubic-bezier(.23,1,.32,1),outline-offset 0s,outline-width 0s;background:#007ac7;border-color:#007ac7;color:#fff;--color: #fff}:host .primary:not(:disabled,.disabled,[aria-disabled]):hover{background-color:#199be3;color:#fff;--background: #199be3;--color: rgb(255, 255, 255);border-color:#199be3}:host .primary[aria-selected=true],:host .primary:active,:host .primary.active,:host .primary.active:hover,:host .primary:active:hover{background-color:#007ac7;color:#fff;--background: rgb(0, 122, 199);--color: rgb(255, 255, 255);border-color:#007ac7}:host .primary:focus-visible{background-color:#199be3;color:#fff;--background: #199be3;--color: rgb(255, 255, 255);border-color:#199be3!important}:host .primary:disabled,:host .primary.disabled,:host .primary[aria-disabled=true]{background:var(--form-control-primary-bg-disabled)!important;color:var(--text-primary-disabled-color)!important;border-color:var(--border-primary-disabled-color)!important;cursor:not-allowed}:host .primary:disabled::placeholder,:host .primary.disabled::placeholder,:host .primary[aria-disabled=true]::placeholder{color:var(--text-disabled-color)}:host .secondary{transition:all .3s cubic-bezier(.23,1,.32,1),outline-offset 0s,outline-width 0s;background:transparent;border-color:#007ac7;color:#007ac7;--color: rgb(0, 122, 199)}:host .secondary:focus:not(:focus-visible){box-shadow:none;outline:0}:host .secondary:focus,:host .secondary:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .secondary:not(:disabled,.disabled,[aria-disabled]):hover{background-color:#199be3;color:#fff;--background: #199be3;--color: rgb(255, 255, 255);border-color:#199be3}:host .secondary[aria-selected=true],:host .secondary:active,:host .secondary.active,:host .secondary.active:hover,:host .secondary:active:hover{background-color:#007ac7;color:#fff;--background: rgb(0, 122, 199);--color: rgb(255, 255, 255);border-color:#007ac7}:host .secondary:disabled,:host .secondary.disabled,:host .secondary[aria-disabled=true]{background:var(--sg-form-control-bg-disabled)!important;color:var(--text-disabled-color)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed}:host .secondary:disabled::placeholder,:host .secondary.disabled::placeholder,:host .secondary[aria-disabled=true]::placeholder{color:var(--text-disabled-color)}:host .tertiary{transition:all .3s cubic-bezier(.23,1,.32,1),outline-offset 0s,outline-width 0s;background:transparent;border-color:transparent;color:#007ac7;--color: rgb(0, 122, 199)}:host .tertiary:focus:not(:focus-visible){box-shadow:none;outline:0}:host .tertiary:focus,:host .tertiary:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .tertiary:not(:disabled,.disabled,[aria-disabled]):hover{background-color:#199be3;color:#fff;--background: #199be3;--color: rgb(255, 255, 255);border-color:#199be3}:host .tertiary[aria-selected=true],:host .tertiary:active,:host .tertiary.active,:host .tertiary.active:hover,:host .tertiary:active:hover{background-color:#007ac7;color:#fff;--background: rgb(0, 122, 199);--color: rgb(255, 255, 255);border-color:#007ac7}:host .tertiary:disabled,:host .tertiary.disabled,:host .tertiary[aria-disabled=true]{background:var(--sg-form-control-bg-disabled)!important;color:var(--text-disabled-color)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed}:host .tertiary:disabled::placeholder,:host .tertiary.disabled::placeholder,:host .tertiary[aria-disabled=true]::placeholder{color:var(--text-disabled-color)}:host .ghost-light{transition:all .3s cubic-bezier(.23,1,.32,1),outline-offset 0s,outline-width 0s;border-color:#fff;color:#fff;--color: rgb(255, 255, 255)}:host .ghost-light:not(:disabled,.disabled,[aria-disabled]):hover{background-color:#fff;color:#000;--background: rgb(255, 255, 255);--color: black;border-color:#fff}:host .ghost-light[aria-selected=true],:host .ghost-light:active,:host .ghost-light.active,:host .ghost-light.active:hover,:host .ghost-light:active:hover{background-color:#fff;color:#000;--background: rgb(255, 255, 255);--color: black;border-color:#fff}:host .ghost-light[aria-selected]:hover,:host .ghost-light.active:hover,:host .ghost-light:active:hover{opacity:.9}:host .ghost-light:focus-visible{background-color:#fff;color:#000;--background: rgb(255, 255, 255);--color: black;border-color:#fff!important}:host .ghost-light:disabled,:host .ghost-light.disabled,:host .ghost-light[aria-disabled=true]{color:var(--text-disabled-color)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed}:host .ghost-light:disabled::placeholder,:host .ghost-light.disabled::placeholder,:host .ghost-light[aria-disabled=true]::placeholder{color:var(--text-disabled-color)}:host .ghost{transition:all .3s cubic-bezier(.23,1,.32,1),outline-offset 0s,outline-width 0s;border-color:#333;color:#333;--color: rgb(51, 51, 51)}:host .ghost:not(:disabled,.disabled,[aria-disabled]):hover{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333}:host .ghost[aria-selected=true],:host .ghost:active,:host .ghost.active,:host .ghost.active:hover,:host .ghost:active:hover{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333}:host .ghost[aria-selected]:hover,:host .ghost.active:hover,:host .ghost:active:hover{opacity:.9}:host .ghost:focus-visible{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333!important}:host .ghost:disabled,:host .ghost.disabled,:host .ghost[aria-disabled=true]{color:var(--text-disabled-color)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed}:host .ghost:disabled::placeholder,:host .ghost.disabled::placeholder,:host .ghost[aria-disabled=true]::placeholder{color:var(--text-disabled-color)}:host .danger.primary{background:#bb000c;border-color:#bb000c;color:#fff;--color: #fff;transition:all .3s cubic-bezier(.23,1,.32,1),outline-offset 0s,outline-width 0s}:host .danger.primary:not(:disabled,.disabled,[aria-disabled]):hover{background-color:#d81a1a;color:#fff;--background: rgb(216, 26, 26);--color: rgb(255, 255, 255);border-color:#d81a1a}:host .danger.primary[aria-selected=true],:host .danger.primary:active,:host .danger.primary.active,:host .danger.primary.active:hover,:host .danger.primary:active:hover{background-color:#bb000c;color:#fff;--background: rgb(187, 0, 12);--color: rgb(255, 255, 255);border-color:#bb000c}:host .danger.primary[aria-selected]:hover,:host .danger.primary.active:hover,:host .danger.primary:active:hover{opacity:.9}:host .danger.primary:focus:not(:focus-visible){box-shadow:none;outline:0}:host .danger.primary:focus,:host .danger.primary:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .danger.primary:disabled,:host .danger.primary.disabled,:host .danger.primary[aria-disabled=true]{background:var(--form-control-primary-bg-disabled)!important;color:var(--text-primary-disabled-color)!important;border-color:var(--border-primary-disabled-color)!important;cursor:not-allowed}:host .danger.primary:disabled::placeholder,:host .danger.primary.disabled::placeholder,:host .danger.primary[aria-disabled=true]::placeholder{color:var(--text-disabled-color)}:host .danger:not(.primary){color:#bb000c;--color: rgb(187, 0, 12);border-color:transparent;transition:all .3s cubic-bezier(.23,1,.32,1),outline-offset 0s,outline-width 0s}:host .danger:not(.primary):not(:disabled,.disabled,[aria-disabled]):hover{background-color:#d81a1a;color:#fff;--background: rgb(216, 26, 26);--color: rgb(255, 255, 255);border-color:#d81a1a}:host .danger:not(.primary)[aria-selected=true],:host .danger:not(.primary):active,:host .danger:not(.primary).active,:host .danger:not(.primary).active:hover,:host .danger:not(.primary):active:hover{background-color:#bb000c;color:#fff;--background: rgb(187, 0, 12);--color: rgb(255, 255, 255);border-color:#bb000c}:host .danger:not(.primary)[aria-selected]:hover,:host .danger:not(.primary).active:hover,:host .danger:not(.primary):active:hover{opacity:.9}:host .danger:not(.primary):focus:not(:focus-visible){box-shadow:none;outline:0}:host .danger:not(.primary):focus,:host .danger:not(.primary):focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}\n"] }]
|
|
2652
|
-
}], ctorParameters: function () { return [{ type: i1$3.NgControl, decorators: [{
|
|
2653
|
-
type: Self
|
|
2654
|
-
}, {
|
|
2655
|
-
type: Optional
|
|
2656
|
-
}] }, { type: undefined, decorators: [{
|
|
2657
|
-
type: Optional
|
|
2658
|
-
}, {
|
|
2659
|
-
type: Inject,
|
|
2660
|
-
args: [TRANSLOCO_SCOPE]
|
|
2661
|
-
}] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { thook: [{
|
|
2662
|
-
type: HostBinding,
|
|
2663
|
-
args: ['attr.data-thook']
|
|
2664
|
-
}, {
|
|
2665
|
-
type: Input
|
|
2666
|
-
}], type: [{
|
|
2667
|
-
type: Input
|
|
2668
|
-
}], buttonStyle: [{
|
|
2669
|
-
type: Input
|
|
2670
|
-
}], small: [{
|
|
2671
|
-
type: Input
|
|
2672
|
-
}], href: [{
|
|
2673
|
-
type: Input
|
|
2674
|
-
}], ngvClick: [{
|
|
2675
|
-
type: Output
|
|
2676
|
-
}] } });
|
|
2677
|
-
|
|
2678
|
-
class NgvButtonModule {
|
|
2679
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
2680
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgvButtonModule, declarations: [NgvButtonComponent], imports: [CommonModule, NgvExternalLinkDirectiveModule, RouterModule], exports: [NgvButtonComponent] }); }
|
|
2681
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvButtonModule, imports: [CommonModule, NgvExternalLinkDirectiveModule, RouterModule] }); }
|
|
2682
|
-
}
|
|
2683
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvButtonModule, decorators: [{
|
|
2684
|
-
type: NgModule,
|
|
2685
|
-
args: [{
|
|
2686
|
-
declarations: [NgvButtonComponent],
|
|
2687
|
-
imports: [CommonModule, NgvExternalLinkDirectiveModule, RouterModule],
|
|
2688
|
-
exports: [NgvButtonComponent],
|
|
2689
|
-
}]
|
|
2690
|
-
}] });
|
|
2691
|
-
|
|
2692
|
-
class NgvCardComponent {
|
|
2693
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2694
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgvCardComponent, selector: "ngv-card", ngImport: i0, template: ` <ng-content></ng-content> `, isInline: true, styles: [":host{background-clip:border-box;background:var(--sg-card-background);border:var(--sg-card-border);border-radius:var(--sg-card-border-radius);box-shadow:var(--sg-card-box-shadow);color:var(--sg-card-color);display:flex;flex-direction:column;padding:1rem}:host>header{align-items:center;display:flex;justify-content:space-between;margin-bottom:1rem;margin-block-end:1rem}:host>header .close{margin:-.5rem -.5rem -.5rem .5rem}:host>*:not(header,footer){flex:1 1 auto}:host>footer{margin-top:.75rem}@media (min-width: 36em){:host>footer{display:flex;justify-content:flex-end}}@media (max-width: 35.98em){:host>footer button:not(.link)+button,:host>footer button:not(.link)+.button,:host>footer .button:not(.link)+button,:host>footer .button:not(.link)+.button{margin-top:.75rem}}@media (min-width: 36em){:host>footer button:not(.link)+button,:host>footer button:not(.link)+.button,:host>footer .button:not(.link)+button,:host>footer .button:not(.link)+.button{margin-left:.75rem}}:host:has(.card-row){display:table;width:inherit;box-sizing:border-box}:host ::ng-deep .card-row{display:table-row}:host ::ng-deep .card-row *{padding-bottom:.5rem}:host ::ng-deep .card-row:last-child *{padding-bottom:0}:host ::ng-deep .card-row.divider *{border-top:1px solid #d8d8d8;padding-top:.375rem}:host ::ng-deep .card-column{display:table-cell;text-align:start}:host ::ng-deep .card-column:first-child{text-align:start}:host ::ng-deep .card-column:not(:first-child):not(:last-child){text-align:center}:host ::ng-deep .card-column:last-child{text-align:end}\n"] }); }
|
|
2695
|
-
}
|
|
2696
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvCardComponent, decorators: [{
|
|
2697
|
-
type: Component,
|
|
2698
|
-
args: [{ selector: 'ngv-card', template: ` <ng-content></ng-content> `, styles: [":host{background-clip:border-box;background:var(--sg-card-background);border:var(--sg-card-border);border-radius:var(--sg-card-border-radius);box-shadow:var(--sg-card-box-shadow);color:var(--sg-card-color);display:flex;flex-direction:column;padding:1rem}:host>header{align-items:center;display:flex;justify-content:space-between;margin-bottom:1rem;margin-block-end:1rem}:host>header .close{margin:-.5rem -.5rem -.5rem .5rem}:host>*:not(header,footer){flex:1 1 auto}:host>footer{margin-top:.75rem}@media (min-width: 36em){:host>footer{display:flex;justify-content:flex-end}}@media (max-width: 35.98em){:host>footer button:not(.link)+button,:host>footer button:not(.link)+.button,:host>footer .button:not(.link)+button,:host>footer .button:not(.link)+.button{margin-top:.75rem}}@media (min-width: 36em){:host>footer button:not(.link)+button,:host>footer button:not(.link)+.button,:host>footer .button:not(.link)+button,:host>footer .button:not(.link)+.button{margin-left:.75rem}}:host:has(.card-row){display:table;width:inherit;box-sizing:border-box}:host ::ng-deep .card-row{display:table-row}:host ::ng-deep .card-row *{padding-bottom:.5rem}:host ::ng-deep .card-row:last-child *{padding-bottom:0}:host ::ng-deep .card-row.divider *{border-top:1px solid #d8d8d8;padding-top:.375rem}:host ::ng-deep .card-column{display:table-cell;text-align:start}:host ::ng-deep .card-column:first-child{text-align:start}:host ::ng-deep .card-column:not(:first-child):not(:last-child){text-align:center}:host ::ng-deep .card-column:last-child{text-align:end}\n"] }]
|
|
2699
|
-
}] });
|
|
2700
|
-
|
|
2701
|
-
class NgvCardModule {
|
|
2702
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvCardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
2703
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgvCardModule, declarations: [NgvCardComponent], imports: [CommonModule], exports: [NgvCardComponent] }); }
|
|
2704
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvCardModule, imports: [CommonModule] }); }
|
|
2705
|
-
}
|
|
2706
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvCardModule, decorators: [{
|
|
2707
|
-
type: NgModule,
|
|
2708
|
-
args: [{
|
|
2709
|
-
declarations: [NgvCardComponent],
|
|
2710
|
-
imports: [CommonModule],
|
|
2711
|
-
exports: [NgvCardComponent],
|
|
2712
|
-
}]
|
|
2713
|
-
}] });
|
|
2714
|
-
|
|
2715
|
-
/**
|
|
2716
|
-
* Checkboxes allow a user to toggle an option on or off, or make multiple choices in a set of available options.
|
|
2717
|
-
* https://designlibrary.sebgroup.com/components/component-checkbox
|
|
2718
|
-
*/
|
|
2719
|
-
class NgvCheckboxComponent extends NgvBaseControlValueAccessorComponent$1 {
|
|
2720
|
-
constructor(ngControl, translocoScope, cdr) {
|
|
2721
|
-
super(ngControl, translocoScope, cdr);
|
|
2722
|
-
this.ngControl = ngControl;
|
|
2723
|
-
this.translocoScope = translocoScope;
|
|
2724
|
-
this.cdr = cdr;
|
|
2725
|
-
/** Special property used for selecting DOM elements during automated UI testing. */
|
|
2726
|
-
this.thook = 'checkbox';
|
|
2727
|
-
this.optionalLabel = 'Optional';
|
|
2728
|
-
this.valueChange = new EventEmitter();
|
|
2729
|
-
}
|
|
2730
|
-
/** @internal */
|
|
2731
|
-
onInputChange(event) {
|
|
2732
|
-
event.stopPropagation();
|
|
2733
|
-
if (this.disabled)
|
|
2734
|
-
return;
|
|
2735
|
-
this.state = !this.state;
|
|
2736
|
-
this.onTouched();
|
|
2737
|
-
this.onChange(this.state);
|
|
2738
|
-
}
|
|
2739
|
-
/** Writes a new value of true or false based on if argument matches this components value property. */
|
|
2740
|
-
writeValue(value) {
|
|
2741
|
-
// Phantom null value on first load https://github.com/angular/angular/pull/38140
|
|
2742
|
-
super.writeValue(value === this.value);
|
|
2743
|
-
}
|
|
2744
|
-
/** Registers a callback function that is called when the child input element's value changes. */
|
|
2745
|
-
registerOnChange(fn) {
|
|
2746
|
-
// Override default to update registry
|
|
2747
|
-
this.onChange = (checked) => {
|
|
2748
|
-
const output = checked ? this.value : null;
|
|
2749
|
-
fn(output);
|
|
2750
|
-
this.valueChange.emit(output);
|
|
2751
|
-
};
|
|
2752
|
-
}
|
|
2753
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvCheckboxComponent, deps: [{ token: i1$3.NgControl, optional: true, self: true }, { token: TRANSLOCO_SCOPE, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2754
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgvCheckboxComponent, selector: "ngv-checkbox", inputs: { thook: "thook", optionalLabel: "optionalLabel" }, outputs: { valueChange: "valueChange" }, host: { properties: { "attr.data-thook": "this.thook" } }, usesInheritance: true, ngImport: i0, template: "<!-- LOCKED INPUT -->\n<div *ngIf=\"locked && state\" class=\"sdv-field-checkbox-wrap\">\n <div\n [id]=\"id + '-checkbox'\"\n class=\"ngv-field--locked\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n >\n <ng-container *ngIf=\"!labelContentTpl\">\n {{ label }}\n </ng-container>\n <ng-template\n *ngTemplateOutlet=\"labelContentTpl ?? null; context: { $implicit: value }\"\n ></ng-template>\n </div>\n</div>\n\n<!-- INPUT WRAPPER -->\n<ng-container *ngIf=\"!locked\">\n <div class=\"sdv-field-checkbox-wrap\">\n <!-- CHECKBOX FIELD -->\n <label\n [id]=\"id + '-label'\"\n [attr.for]=\"id + '-checkbox'\"\n class=\"form-control\"\n *transloco=\"let t; read: scope\"\n >\n <input\n #input\n type=\"checkbox\"\n [id]=\"id + '-checkbox'\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [attr.required]=\"required\"\n [disabled]=\"disabled\"\n [autofocus]=\"autofocus\"\n [attr.aria-label]=\"description\"\n [checked]=\"state\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"onInputChange($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n />\n <!-- LABEL -->\n <ng-template\n *ngTemplateOutlet=\"labelContentTpl || basicLabelContentTpl\"\n ></ng-template>\n <ng-template #basicLabelContentTpl>\n <!-- to trigger css:empty if no label was added -->\n <ng-container *ngIf=\"label\">\n <span\n *ngIf=\"\n optional === true || (required !== true && optional !== false)\n \"\n class=\"sdv-field-label--optional\"\n >\n ({{ t('label.optional') }})\n </span>\n <span>{{ label }}</span>\n </ng-container>\n </ng-template>\n <i></i>\n </label>\n </div>\n\n <!-- ERRORS -->\n <ng-container *transloco=\"let t; read: scope\">\n <label\n class=\"sdv-field-notice sdv-field-notice--error\"\n [attr.for]=\"id + '-checkbox'\"\n *ngIf=\"invalid && (error || ngControl?.invalid)\"\n >\n <span *ngIf=\"error; else errorsRef\">{{ error }}</span>\n <ng-template #errorsRef>\n <span *ngIf=\"firstError as error\">\n {{ t('error.field' + error?.code, error?.params) }}\n </span>\n </ng-template>\n </label>\n </ng-container>\n\n <!-- CHILDREN -->\n <ng-content></ng-content>\n</ng-container>\n", styles: [":host{--gds-comp-checkbox-container-height: 1rem;--gds-comp-checkbox-container-width: 1rem;--gds-comp-checkbox-container-color: var(--gds-sys-color-surface);--gds-comp-checkbox-container-color-disabled: var(--gds-ref-pallet-base200);--gds-comp-checkbox-border-color: var(--gds-sys-color-base);--gds-comp-checkbox-border-radius: var(--gds-sys-shape-corner-small);--gds-comp-checkbox-hover-border-color: var(--gds-ref-pallet-base600);--gds-comp-checkbox-container-color-selected: var(--gds-sys-color-base);--gds-comp-checkbox-border-color-selected: var(--gds-sys-color-surface);--gds-comp-checkbox-border-color-focus: var(--gds-sys-color-blue-dark-2)}:host label.form-control input[type=checkbox]{cursor:pointer;height:0;opacity:0;position:absolute;width:0;z-index:-1}:host label.form-control{align-items:flex-start}:host label.form-control:has(input[type=checkbox]){padding:.6875rem 1rem .5625rem}:host label.form-control:has(input[type=checkbox]:focus-visible):focus:not(:focus-visible){box-shadow:none;outline:0}:host label.form-control:has(input[type=checkbox]:focus-visible):focus,:host label.form-control:has(input[type=checkbox]:focus-visible):focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host label.form-control input[type=checkbox]~i{margin-right:.75rem;margin-top:.0625rem;flex-shrink:0;box-shadow:inset 0 0 0 1px var(--gds-comp-checkbox-border-color);position:relative;border-radius:var(--gds-comp-checkbox-border-radius);background-color:var(--gds-comp-checkbox-container-color);flex:0 0 auto;height:var(--gds-comp-checkbox-container-width, 1rem);width:var(--gds-comp-checkbox-container-width, 1rem);transition:color .3s ease-in-out,all .3s ease-in-out}:host label.form-control input[type=checkbox]~i:after{transition:color .3s ease-in-out,all .3s ease-in-out}:host label.form-control input[type=checkbox]:not(:checked):focus-visible~i{box-shadow:inset 0 0 0 1px var(--gds-comp-checkbox-border-color-focus)}:host label.form-control:hover input[type=checkbox]:not(.disabled,:disabled,:checked,:indeterminate)~i{border-color:var(--gds-comp-checkbox-hover-border-color);box-shadow:inset 0 0 0 1px var(--gds-comp-checkbox-hover-border-color)}:host label.form-control:hover input[type=checkbox]:not(:checked,:indeterminate,:disabled,.disabled)~i:after{border-color:var(--gds-comp-checkbox-hover-border-color);opacity:1}:host label.form-control input[type=checkbox]:checked~i{background-color:var(--gds-comp-checkbox-container-color-selected)}:host label.form-control:hover input[type=checkbox]:checked~i{background-color:var(--gds-comp-checkbox-hover-border-color);box-shadow:inset 0 0 0 1px var(--gds-comp-checkbox-hover-border-color)}:host label.form-control input[type=checkbox]:indeterminate~i{background-color:var(--gds-comp-checkbox-container-color-selected)}:host label.form-control input[type=checkbox]:indeterminate~i:after{border-bottom:2px solid var(--gds-comp-checkbox-border-color-selected, #fff);border-left:none;transform:scale(1) rotate(0);opacity:1}:host label.form-control:has(input[type=checkbox].is-invalid){border:.0625rem solid var(--intent-danger-background);margin-bottom:.5rem}:host .is-invalid label.form-control:has(input[type=checkbox].is-invalid){border:none;margin:0}@supports (-moz-appearance: none){:host label.form-control.is-invalid{border:.0625rem solid var(--intent-danger-background);margin-bottom:.5rem}:host .is-invalid label.form-control.is-invalid{border:none;margin:0}}:host label.form-control input[type=checkbox]:disabled~i,:host label.form-control input[type=checkbox].disabled~i{background:var(--sg-form-control-bg-disabled)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed;box-shadow:inset 0 0 0 1px var(--border-disabled-color)}:host label.form-control input[type=checkbox]:disabled~i::placeholder,:host label.form-control input[type=checkbox].disabled~i::placeholder{color:var(--text-disabled-color)}:host label.form-control input[type=checkbox]:disabled:checked~i,:host label.form-control input[type=checkbox].disabled:checked~i{background:var(--sg-form-control-bg-disabled)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed;box-shadow:inset 0 0 0 1px var(--border-disabled-color)}:host label.form-control input[type=checkbox]:disabled:checked~i::placeholder,:host label.form-control input[type=checkbox].disabled:checked~i::placeholder{color:var(--text-disabled-color)}:host label.form-control input[type=checkbox]:disabled:checked~i:after,:host label.form-control input[type=checkbox].disabled:checked~i:after{border-color:var(--border-disabled-color)}:host label.form-control input[type=checkbox]:disabled~span,:host label.form-control input[type=checkbox].disabled~span{color:var(--text-disabled-color)!important;cursor:not-allowed}:host label.form-control input[type=checkbox]:disabled~span::placeholder,:host label.form-control input[type=checkbox].disabled~span::placeholder{color:var(--text-disabled-color)}:host label.form-control input[type=checkbox]~i:after{content:\"\";opacity:0;position:absolute}:host label.form-control input[type=checkbox]~i:after{border-bottom:3px solid var(--gds-comp-checkbox-border-color-selected, #fff);border-left:3px solid var(--gds-comp-checkbox-border-color-selected, #fff);height:.5rem;width:1rem;left:0;top:.1875rem;transform:scale(.601) rotate(-45deg);transform-origin:center}:host label.form-control input[type=checkbox]:checked~i:after{opacity:1}:host .form-control{padding:.75rem 1rem;border:1px solid transparent;border-radius:var(--gds-sys-shape-corner-medium);align-items:center;cursor:pointer;display:flex;flex-direction:row-reverse;font:inherit;justify-content:flex-end;position:relative;user-select:none;-webkit-user-select:none}:host .form-control:has(input:disabled){cursor:not-allowed}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }] }); }
|
|
2755
|
-
}
|
|
2756
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvCheckboxComponent, decorators: [{
|
|
2757
|
-
type: Component,
|
|
2758
|
-
args: [{ selector: 'ngv-checkbox', template: "<!-- LOCKED INPUT -->\n<div *ngIf=\"locked && state\" class=\"sdv-field-checkbox-wrap\">\n <div\n [id]=\"id + '-checkbox'\"\n class=\"ngv-field--locked\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n >\n <ng-container *ngIf=\"!labelContentTpl\">\n {{ label }}\n </ng-container>\n <ng-template\n *ngTemplateOutlet=\"labelContentTpl ?? null; context: { $implicit: value }\"\n ></ng-template>\n </div>\n</div>\n\n<!-- INPUT WRAPPER -->\n<ng-container *ngIf=\"!locked\">\n <div class=\"sdv-field-checkbox-wrap\">\n <!-- CHECKBOX FIELD -->\n <label\n [id]=\"id + '-label'\"\n [attr.for]=\"id + '-checkbox'\"\n class=\"form-control\"\n *transloco=\"let t; read: scope\"\n >\n <input\n #input\n type=\"checkbox\"\n [id]=\"id + '-checkbox'\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [attr.required]=\"required\"\n [disabled]=\"disabled\"\n [autofocus]=\"autofocus\"\n [attr.aria-label]=\"description\"\n [checked]=\"state\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"onInputChange($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n />\n <!-- LABEL -->\n <ng-template\n *ngTemplateOutlet=\"labelContentTpl || basicLabelContentTpl\"\n ></ng-template>\n <ng-template #basicLabelContentTpl>\n <!-- to trigger css:empty if no label was added -->\n <ng-container *ngIf=\"label\">\n <span\n *ngIf=\"\n optional === true || (required !== true && optional !== false)\n \"\n class=\"sdv-field-label--optional\"\n >\n ({{ t('label.optional') }})\n </span>\n <span>{{ label }}</span>\n </ng-container>\n </ng-template>\n <i></i>\n </label>\n </div>\n\n <!-- ERRORS -->\n <ng-container *transloco=\"let t; read: scope\">\n <label\n class=\"sdv-field-notice sdv-field-notice--error\"\n [attr.for]=\"id + '-checkbox'\"\n *ngIf=\"invalid && (error || ngControl?.invalid)\"\n >\n <span *ngIf=\"error; else errorsRef\">{{ error }}</span>\n <ng-template #errorsRef>\n <span *ngIf=\"firstError as error\">\n {{ t('error.field' + error?.code, error?.params) }}\n </span>\n </ng-template>\n </label>\n </ng-container>\n\n <!-- CHILDREN -->\n <ng-content></ng-content>\n</ng-container>\n", styles: [":host{--gds-comp-checkbox-container-height: 1rem;--gds-comp-checkbox-container-width: 1rem;--gds-comp-checkbox-container-color: var(--gds-sys-color-surface);--gds-comp-checkbox-container-color-disabled: var(--gds-ref-pallet-base200);--gds-comp-checkbox-border-color: var(--gds-sys-color-base);--gds-comp-checkbox-border-radius: var(--gds-sys-shape-corner-small);--gds-comp-checkbox-hover-border-color: var(--gds-ref-pallet-base600);--gds-comp-checkbox-container-color-selected: var(--gds-sys-color-base);--gds-comp-checkbox-border-color-selected: var(--gds-sys-color-surface);--gds-comp-checkbox-border-color-focus: var(--gds-sys-color-blue-dark-2)}:host label.form-control input[type=checkbox]{cursor:pointer;height:0;opacity:0;position:absolute;width:0;z-index:-1}:host label.form-control{align-items:flex-start}:host label.form-control:has(input[type=checkbox]){padding:.6875rem 1rem .5625rem}:host label.form-control:has(input[type=checkbox]:focus-visible):focus:not(:focus-visible){box-shadow:none;outline:0}:host label.form-control:has(input[type=checkbox]:focus-visible):focus,:host label.form-control:has(input[type=checkbox]:focus-visible):focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host label.form-control input[type=checkbox]~i{margin-right:.75rem;margin-top:.0625rem;flex-shrink:0;box-shadow:inset 0 0 0 1px var(--gds-comp-checkbox-border-color);position:relative;border-radius:var(--gds-comp-checkbox-border-radius);background-color:var(--gds-comp-checkbox-container-color);flex:0 0 auto;height:var(--gds-comp-checkbox-container-width, 1rem);width:var(--gds-comp-checkbox-container-width, 1rem);transition:color .3s ease-in-out,all .3s ease-in-out}:host label.form-control input[type=checkbox]~i:after{transition:color .3s ease-in-out,all .3s ease-in-out}:host label.form-control input[type=checkbox]:not(:checked):focus-visible~i{box-shadow:inset 0 0 0 1px var(--gds-comp-checkbox-border-color-focus)}:host label.form-control:hover input[type=checkbox]:not(.disabled,:disabled,:checked,:indeterminate)~i{border-color:var(--gds-comp-checkbox-hover-border-color);box-shadow:inset 0 0 0 1px var(--gds-comp-checkbox-hover-border-color)}:host label.form-control:hover input[type=checkbox]:not(:checked,:indeterminate,:disabled,.disabled)~i:after{border-color:var(--gds-comp-checkbox-hover-border-color);opacity:1}:host label.form-control input[type=checkbox]:checked~i{background-color:var(--gds-comp-checkbox-container-color-selected)}:host label.form-control:hover input[type=checkbox]:checked~i{background-color:var(--gds-comp-checkbox-hover-border-color);box-shadow:inset 0 0 0 1px var(--gds-comp-checkbox-hover-border-color)}:host label.form-control input[type=checkbox]:indeterminate~i{background-color:var(--gds-comp-checkbox-container-color-selected)}:host label.form-control input[type=checkbox]:indeterminate~i:after{border-bottom:2px solid var(--gds-comp-checkbox-border-color-selected, #fff);border-left:none;transform:scale(1) rotate(0);opacity:1}:host label.form-control:has(input[type=checkbox].is-invalid){border:.0625rem solid var(--intent-danger-background);margin-bottom:.5rem}:host .is-invalid label.form-control:has(input[type=checkbox].is-invalid){border:none;margin:0}@supports (-moz-appearance: none){:host label.form-control.is-invalid{border:.0625rem solid var(--intent-danger-background);margin-bottom:.5rem}:host .is-invalid label.form-control.is-invalid{border:none;margin:0}}:host label.form-control input[type=checkbox]:disabled~i,:host label.form-control input[type=checkbox].disabled~i{background:var(--sg-form-control-bg-disabled)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed;box-shadow:inset 0 0 0 1px var(--border-disabled-color)}:host label.form-control input[type=checkbox]:disabled~i::placeholder,:host label.form-control input[type=checkbox].disabled~i::placeholder{color:var(--text-disabled-color)}:host label.form-control input[type=checkbox]:disabled:checked~i,:host label.form-control input[type=checkbox].disabled:checked~i{background:var(--sg-form-control-bg-disabled)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed;box-shadow:inset 0 0 0 1px var(--border-disabled-color)}:host label.form-control input[type=checkbox]:disabled:checked~i::placeholder,:host label.form-control input[type=checkbox].disabled:checked~i::placeholder{color:var(--text-disabled-color)}:host label.form-control input[type=checkbox]:disabled:checked~i:after,:host label.form-control input[type=checkbox].disabled:checked~i:after{border-color:var(--border-disabled-color)}:host label.form-control input[type=checkbox]:disabled~span,:host label.form-control input[type=checkbox].disabled~span{color:var(--text-disabled-color)!important;cursor:not-allowed}:host label.form-control input[type=checkbox]:disabled~span::placeholder,:host label.form-control input[type=checkbox].disabled~span::placeholder{color:var(--text-disabled-color)}:host label.form-control input[type=checkbox]~i:after{content:\"\";opacity:0;position:absolute}:host label.form-control input[type=checkbox]~i:after{border-bottom:3px solid var(--gds-comp-checkbox-border-color-selected, #fff);border-left:3px solid var(--gds-comp-checkbox-border-color-selected, #fff);height:.5rem;width:1rem;left:0;top:.1875rem;transform:scale(.601) rotate(-45deg);transform-origin:center}:host label.form-control input[type=checkbox]:checked~i:after{opacity:1}:host .form-control{padding:.75rem 1rem;border:1px solid transparent;border-radius:var(--gds-sys-shape-corner-medium);align-items:center;cursor:pointer;display:flex;flex-direction:row-reverse;font:inherit;justify-content:flex-end;position:relative;user-select:none;-webkit-user-select:none}:host .form-control:has(input:disabled){cursor:not-allowed}\n"] }]
|
|
2759
|
-
}], ctorParameters: function () { return [{ type: i1$3.NgControl, decorators: [{
|
|
2760
|
-
type: Self
|
|
2761
|
-
}, {
|
|
2762
|
-
type: Optional
|
|
2763
|
-
}] }, { type: undefined, decorators: [{
|
|
2764
|
-
type: Optional
|
|
2765
|
-
}, {
|
|
2766
|
-
type: Inject,
|
|
2767
|
-
args: [TRANSLOCO_SCOPE]
|
|
2768
|
-
}] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { thook: [{
|
|
2769
|
-
type: HostBinding,
|
|
2770
|
-
args: ['attr.data-thook']
|
|
2771
|
-
}, {
|
|
2772
|
-
type: Input
|
|
2773
|
-
}], optionalLabel: [{
|
|
2774
|
-
type: Input
|
|
2775
|
-
}], valueChange: [{
|
|
2776
|
-
type: Output
|
|
2777
|
-
}] } });
|
|
2778
|
-
|
|
2779
|
-
class NgvCheckboxModule {
|
|
2780
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvCheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
2781
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgvCheckboxModule, declarations: [NgvCheckboxComponent], imports: [CommonModule, NgvI18nModule$1], exports: [NgvCheckboxComponent] }); }
|
|
2782
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvCheckboxModule, imports: [CommonModule, NgvI18nModule$1] }); }
|
|
2783
|
-
}
|
|
2784
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvCheckboxModule, decorators: [{
|
|
2785
|
-
type: NgModule,
|
|
2786
|
-
args: [{
|
|
2787
|
-
declarations: [NgvCheckboxComponent],
|
|
2788
|
-
imports: [CommonModule, NgvI18nModule$1],
|
|
2789
|
-
exports: [NgvCheckboxComponent],
|
|
2790
|
-
}]
|
|
2791
|
-
}] });
|
|
2792
|
-
|
|
2793
|
-
class NgvTypeaheadHighlightComponent {
|
|
2794
|
-
constructor() {
|
|
2795
|
-
this.text = '';
|
|
2796
|
-
this.input = '';
|
|
2797
|
-
/**
|
|
2798
|
-
* Regexp of characters that are allowed in textContent without being found in textToHighlight
|
|
2799
|
-
* Allow whitespaces.
|
|
2800
|
-
* */
|
|
2801
|
-
this.allowedNonMatchingChars = new RegExp(/\s/);
|
|
2802
|
-
}
|
|
2803
|
-
ngOnChanges(changes) {
|
|
2804
|
-
const { textContent, textToHighlight } = changes;
|
|
2805
|
-
if (textContent?.currentValue != null)
|
|
2806
|
-
this.text = `${textContent.currentValue}`;
|
|
2807
|
-
if (textToHighlight?.currentValue != null)
|
|
2808
|
-
this.input = `${textToHighlight.currentValue}`;
|
|
2809
|
-
this.updateValues();
|
|
2810
|
-
}
|
|
2811
|
-
updateValues() {
|
|
2812
|
-
const splittedText = this.text.toLocaleLowerCase().split('');
|
|
2813
|
-
const splittedInput = this.input.toLocaleLowerCase().split('');
|
|
2814
|
-
const { start, end } = this.getHighlightedPart(splittedText, splittedInput);
|
|
2815
|
-
// If user input is not found within the textcontent, reset options and return.
|
|
2816
|
-
if (start === -1 || end === -1) {
|
|
2817
|
-
this.prefix = this.match = this.suffix = '';
|
|
2818
|
-
return;
|
|
2819
|
-
}
|
|
2820
|
-
this.prefix = this.text.substring(0, start);
|
|
2821
|
-
this.match = this.text.substring(start, end);
|
|
2822
|
-
this.suffix = this.text.substring(end);
|
|
2823
|
-
}
|
|
2824
|
-
/**
|
|
2825
|
-
* Function that finds the start and end index of where the input is located within the text to display.
|
|
2826
|
-
* First occurence is returned. Allows for spaces to occur despite input not matching space.
|
|
2827
|
-
* Loops through each character in splittedText and when a char in splittedText equlas the first character of
|
|
2828
|
-
* splittedInput, evaluate wether it's match on the entire input.
|
|
2829
|
-
* - If it's => return indexes.
|
|
2830
|
-
* - If it's not => break out and check next char in outer loop.
|
|
2831
|
-
* @param splittedText the text content splitted in an array
|
|
2832
|
-
* @param splittedInput the input splitted in an array
|
|
2833
|
-
* @returns { start: number, end: number } Indexes of where the match starts and ends in the text displatyed
|
|
2834
|
-
*/
|
|
2835
|
-
getHighlightedPart(splittedText, splittedInput) {
|
|
2836
|
-
let start = -1;
|
|
2837
|
-
let end = -1;
|
|
2838
|
-
for (let i = 0; i < splittedText.length; i++) {
|
|
2839
|
-
// If start and end have been set, break and return
|
|
2840
|
-
if (start > -1 || end > -1)
|
|
2841
|
-
break;
|
|
2842
|
-
// If current char match first in input, try see if whole input match from that index
|
|
2843
|
-
if (splittedText[i] === splittedInput[0]) {
|
|
2844
|
-
let matches = 1;
|
|
2845
|
-
for (let t = 1; t <= splittedText.length; t++) {
|
|
2846
|
-
// If match on last character of input, we're finished.
|
|
2847
|
-
if (matches === splittedInput.length) {
|
|
2848
|
-
start = i;
|
|
2849
|
-
end = start + t;
|
|
2850
|
-
break;
|
|
2851
|
-
}
|
|
2852
|
-
if (splittedText[t + i] === splittedInput[matches])
|
|
2853
|
-
matches++;
|
|
2854
|
-
else if (this.allowedNonMatchingChars.test(splittedText[t + i]))
|
|
2855
|
-
continue; // Ignore whitespace, continue
|
|
2856
|
-
else
|
|
2857
|
-
break; // No match, break out of inner loop to check next char in text
|
|
2858
|
-
}
|
|
2859
|
-
}
|
|
2860
|
-
}
|
|
2861
|
-
return { start, end };
|
|
2862
|
-
}
|
|
2863
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTypeaheadHighlightComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2864
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgvTypeaheadHighlightComponent, selector: "ngv-typeahead-highlight", inputs: { textContent: "textContent", textToHighlight: "textToHighlight" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!this.match\">{{ textContent }}</ng-container>\n<!-- Note that this is sensitive to line breaks producing extra spacing between the different parts -->\n<ng-container *ngIf=\"!!this.match\">\n {{ prefix || '' }}<span class=\"match\">{{ match }}</span>{{ suffix ||''}}\n</ng-container>", styles: [":host .match{font-weight:500}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
2865
|
-
}
|
|
2866
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTypeaheadHighlightComponent, decorators: [{
|
|
2867
|
-
type: Component,
|
|
2868
|
-
args: [{ selector: 'ngv-typeahead-highlight', template: "<ng-container *ngIf=\"!this.match\">{{ textContent }}</ng-container>\n<!-- Note that this is sensitive to line breaks producing extra spacing between the different parts -->\n<ng-container *ngIf=\"!!this.match\">\n {{ prefix || '' }}<span class=\"match\">{{ match }}</span>{{ suffix ||''}}\n</ng-container>", styles: [":host .match{font-weight:500}\n"] }]
|
|
2869
|
-
}], propDecorators: { textContent: [{
|
|
2870
|
-
type: Input
|
|
2871
|
-
}], textToHighlight: [{
|
|
2872
|
-
type: Input
|
|
2873
|
-
}] } });
|
|
2874
|
-
|
|
2875
|
-
class NgvDropdownListComponent {
|
|
2876
|
-
set expanded(state) {
|
|
2877
|
-
this.setExpanded(state);
|
|
2878
|
-
}
|
|
2879
|
-
get expanded() {
|
|
2880
|
-
return this._expanded;
|
|
2881
|
-
}
|
|
2882
|
-
constructor(translocoScope) {
|
|
2883
|
-
this.translocoScope = translocoScope;
|
|
2884
|
-
/** The additional amount to show when option is scrolled into view. */
|
|
2885
|
-
this.scrollOffset = 24;
|
|
2886
|
-
/** Id of the host element and is accessible by the children, automatically generated if not provided. */
|
|
2887
|
-
this.id = window.ngv?.nextId();
|
|
2888
|
-
/** Special property used for selecting DOM elements during automated UI testing. */
|
|
2889
|
-
this.thook = 'dropdown';
|
|
2890
|
-
this.selectedValueChanged = new EventEmitter();
|
|
2891
|
-
this.closed = new EventEmitter();
|
|
2892
|
-
/** The current active option based on numeric index. */
|
|
2893
|
-
this.activeIndex = -1;
|
|
2894
|
-
this.dropdownUtils = new DropdownUtils();
|
|
2895
|
-
this._expanded = false;
|
|
2896
|
-
this.closed$ = new Subject();
|
|
2897
|
-
if (this.translocoScope)
|
|
2898
|
-
this.scope = this.translocoScope.toString();
|
|
2899
|
-
}
|
|
2900
|
-
ngOnInit() {
|
|
2901
|
-
if (this.state)
|
|
2902
|
-
this.activeIndex = this.options.findIndex((option) => option.key === this.state.key);
|
|
2903
|
-
}
|
|
2904
|
-
ngOnChanges(changes) {
|
|
2905
|
-
if (!!changes.state && !changes.state.firstChange)
|
|
2906
|
-
this.selectedValue = changes.state.currentValue;
|
|
2907
|
-
if (!!changes.options?.currentValue?.length && this.expanded)
|
|
2908
|
-
this.refreshSelectedOption();
|
|
2909
|
-
}
|
|
2910
|
-
/**
|
|
2911
|
-
* Returns true if argument is an {@link OptionGroup}.
|
|
2912
|
-
* @param option the object to check.
|
|
2913
|
-
*/
|
|
2914
|
-
isGroup(option) {
|
|
2915
|
-
return 'options' in option;
|
|
2916
|
-
}
|
|
2917
|
-
/** @internal */
|
|
2918
|
-
updateState(option, event) {
|
|
2919
|
-
if (option.disabled)
|
|
2920
|
-
return;
|
|
2921
|
-
this.selectedValue = option;
|
|
2922
|
-
this.state = option;
|
|
2923
|
-
this.selectedValueChanged.emit(option);
|
|
2924
|
-
this.setExpanded(false);
|
|
2925
|
-
event.stopPropagation();
|
|
2926
|
-
}
|
|
2927
|
-
/**
|
|
2928
|
-
* @internal
|
|
2929
|
-
*/
|
|
2930
|
-
setExpanded(expanded = true) {
|
|
2931
|
-
// update expanded state
|
|
2932
|
-
this._expanded = expanded;
|
|
2933
|
-
if (expanded)
|
|
2934
|
-
this.refreshSelectedOption();
|
|
2935
|
-
else {
|
|
2936
|
-
this.closed$.next(true);
|
|
2937
|
-
this.onClickSubscription?.unsubscribe();
|
|
2938
|
-
}
|
|
2939
|
-
}
|
|
2940
|
-
/**
|
|
2941
|
-
* @internal
|
|
2942
|
-
*/
|
|
2943
|
-
refreshSelectedOption() {
|
|
2944
|
-
const options = this.dropdownUtils.flattenOptions(this.options, !this.optionContentTpl);
|
|
2945
|
-
this.activeIndex = this.getActiveIndex();
|
|
2946
|
-
this.state = options[this.activeIndex];
|
|
2947
|
-
this.scrollToResult(this.state);
|
|
2948
|
-
}
|
|
2949
|
-
/**
|
|
2950
|
-
* @internal
|
|
2951
|
-
* @returns The active index (number) if option is found, -1 otherwise.
|
|
2952
|
-
* - If a selectedValue exists that's not nullish and that options is found, return that index
|
|
2953
|
-
* - Else, return first non nullish index
|
|
2954
|
-
* - If none of the above criterias are met, -1 are returned
|
|
2955
|
-
*/
|
|
2956
|
-
getActiveIndex() {
|
|
2957
|
-
if (!!this.selectedValue && this.selectedValue?.key != null) {
|
|
2958
|
-
const selectedIndex = this.dropdownUtils
|
|
2959
|
-
.flattenOptions(this.options, !this.optionContentTpl)
|
|
2960
|
-
.findIndex((option) => option.key != null && option.key === this.selectedValue?.key);
|
|
2961
|
-
if (selectedIndex > -1)
|
|
2962
|
-
return selectedIndex;
|
|
2963
|
-
}
|
|
2964
|
-
return this.dropdownUtils
|
|
2965
|
-
.flattenOptions(this.options, !this.optionContentTpl)
|
|
2966
|
-
.findIndex((option) => option.key != null);
|
|
2967
|
-
}
|
|
2968
|
-
/**
|
|
2969
|
-
* @internal
|
|
2970
|
-
* evaluates wether the HTML element overflows
|
|
2971
|
-
* @param elem The HTMLElement to evaluate
|
|
2972
|
-
* */
|
|
2973
|
-
isOverflow(elem) {
|
|
2974
|
-
return elem.offsetWidth < elem.scrollWidth;
|
|
2975
|
-
}
|
|
2976
|
-
/**
|
|
2977
|
-
* Typecast anything to an {@link OptionGroup}.
|
|
2978
|
-
* @param group the object to typecast.
|
|
2979
|
-
*/
|
|
2980
|
-
castGroup(group) {
|
|
2981
|
-
return group;
|
|
2982
|
-
}
|
|
2983
|
-
/**
|
|
2984
|
-
* @internal
|
|
2985
|
-
* Disables default events.
|
|
2986
|
-
* @param event fired containing which key was pressed.
|
|
2987
|
-
*/
|
|
2988
|
-
onKeyDown(event) {
|
|
2989
|
-
switch (event.key) {
|
|
2990
|
-
case 'Enter': // Disable form submission
|
|
2991
|
-
case 'ArrowUp': // Disable scrolling up
|
|
2992
|
-
case 'ArrowDown': // Disable scrolling down
|
|
2993
|
-
event.preventDefault();
|
|
2994
|
-
event.stopPropagation();
|
|
2995
|
-
return false;
|
|
2996
|
-
}
|
|
2997
|
-
return true;
|
|
2998
|
-
}
|
|
2999
|
-
/**
|
|
3000
|
-
* @internal
|
|
3001
|
-
* Enter toggles the dropdown, home, end, and, arrows change the index.
|
|
3002
|
-
* @param event fired containing which key was released.
|
|
3003
|
-
*/
|
|
3004
|
-
onKeyUp(event) {
|
|
3005
|
-
if (!this.expanded)
|
|
3006
|
-
return;
|
|
3007
|
-
const options = this.dropdownUtils.flattenOptions(this.options, !this.optionContentTpl);
|
|
3008
|
-
let option;
|
|
3009
|
-
switch (event.key) {
|
|
3010
|
-
case 'Escape':
|
|
3011
|
-
this.setExpanded(false);
|
|
3012
|
-
this.closed.emit();
|
|
3013
|
-
break;
|
|
3014
|
-
case 'Enter': // Select the currently chosen value
|
|
3015
|
-
option = options[this.activeIndex];
|
|
3016
|
-
this.updateState(option, event);
|
|
3017
|
-
break;
|
|
3018
|
-
case 'Home': // Move to the first option
|
|
3019
|
-
this.activeIndex = 0;
|
|
3020
|
-
option = options[this.activeIndex];
|
|
3021
|
-
this.state = option;
|
|
3022
|
-
this.scrollToResult(option);
|
|
3023
|
-
break;
|
|
3024
|
-
case 'ArrowUp': // Move up one step to the previous option
|
|
3025
|
-
if (this.activeIndex > 0)
|
|
3026
|
-
this.activeIndex--;
|
|
3027
|
-
else if (this.activeIndex === 0)
|
|
3028
|
-
this.activeIndex = options.length - 1;
|
|
3029
|
-
option = options[this.activeIndex];
|
|
3030
|
-
this.state = option;
|
|
3031
|
-
this.scrollToResult(option);
|
|
3032
|
-
break;
|
|
3033
|
-
case 'ArrowDown': // Move down one step to the next option
|
|
3034
|
-
if (options.length > this.activeIndex + 1)
|
|
3035
|
-
this.activeIndex++;
|
|
3036
|
-
else if (this.activeIndex === options.length - 1)
|
|
3037
|
-
this.activeIndex = 0;
|
|
3038
|
-
option = options[this.activeIndex];
|
|
3039
|
-
this.state = option;
|
|
3040
|
-
this.scrollToResult(option);
|
|
3041
|
-
break;
|
|
3042
|
-
case 'End': // Move to the last options
|
|
3043
|
-
this.activeIndex = options.length - 1;
|
|
3044
|
-
option = options[this.activeIndex];
|
|
3045
|
-
this.state = option;
|
|
3046
|
-
this.scrollToResult(option);
|
|
3047
|
-
break;
|
|
3048
|
-
}
|
|
3049
|
-
}
|
|
3050
|
-
/**
|
|
3051
|
-
* Scrolls focused result into view with a specified offset.
|
|
3052
|
-
* @param key the result index which to scroll to.
|
|
3053
|
-
*/
|
|
3054
|
-
scrollToResult(option) {
|
|
3055
|
-
if (!this.optionRefs || !option)
|
|
3056
|
-
return;
|
|
3057
|
-
const optionRef = this.optionRefs.find((li) => li.nativeElement.id === this.id + '-option-' + option.key);
|
|
3058
|
-
const offset = this.scrollOffset;
|
|
3059
|
-
if (optionRef) {
|
|
3060
|
-
let delta = window.scrollY || document.documentElement.scrollTop;
|
|
3061
|
-
// The list seems not to be visible at the time of scrolling, but this setTimeout "hack" makes it work...
|
|
3062
|
-
setTimeout(() => {
|
|
3063
|
-
scrollIntoView(optionRef.nativeElement, {
|
|
3064
|
-
scrollMode: 'if-needed',
|
|
3065
|
-
block: 'nearest',
|
|
3066
|
-
});
|
|
3067
|
-
delta -= window.scrollY || document.documentElement.scrollTop;
|
|
3068
|
-
if (delta)
|
|
3069
|
-
window.scrollBy(0, delta > 0 ? -offset : offset);
|
|
3070
|
-
}, 0);
|
|
3071
|
-
}
|
|
3072
|
-
}
|
|
3073
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvDropdownListComponent, deps: [{ token: TRANSLOCO_SCOPE, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3074
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgvDropdownListComponent, selector: "ngv-dropdown-list", inputs: { expanded: "expanded", state: "state", scrollOffset: "scrollOffset", optionContentTpl: "optionContentTpl", id: "id", thook: "thook", options: "options", textToHighlight: "textToHighlight" }, outputs: { selectedValueChanged: "selectedValueChanged", closed: "closed" }, host: { listeners: { "document:keydown": "onKeyDown($event)", "document:keyup": "onKeyUp($event)" }, properties: { "attr.id": "this.id", "attr.data-thook": "this.thook" } }, viewQueries: [{ propertyName: "optionRefs", predicate: ["optionRefs"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *transloco=\"let t; read: scope\">\n <ul\n class=\"gds-dropdown__options card options gds-reset\"\n [class.gds-dropdown__options-expanded]=\"expanded\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.data-thook]=\"thook + '-options'\"\n [attr.aria-labelledby]=\"id + '-label'\"\n [attr.aria-activedescendant]=\"\n state ? id + '-option-' + state?.key : undefined\n \"\n >\n <ng-container *ngFor=\"let item of options\">\n <!-- OPTION -->\n <ng-container *ngIf=\"!isGroup(item)\">\n <ng-template\n *ngTemplateOutlet=\"listItemTemplate; context: { $implicit: item }\"\n ></ng-template>\n </ng-container>\n\n <!-- OPTION GROUP -->\n <li\n class=\"gds-dropdown__options__label group\"\n [attr.data-thook]=\"thook + '-option-group'\"\n *ngIf=\"isGroup(item)\"\n >\n <div class=\"sdv-list__label\">{{ t(item.label) }}</div>\n <ul [attr.aria-disabled]=\"item.disabled\">\n <ng-container *ngFor=\"let option of castGroup(item).options\">\n <ng-template\n *ngTemplateOutlet=\"\n listItemTemplate;\n context: { $implicit: option }\n \"\n ></ng-template>\n </ng-container>\n </ul>\n </li>\n </ng-container>\n </ul>\n\n <!-- TEMPLATE -->\n <ng-template #listItemTemplate let-option>\n <li\n #optionRefs\n *ngIf=\"!optionContentTpl\"\n tabindex=\"-1\"\n [id]=\"id + '-option-' + option.key\"\n class=\"gds-dropdown__options__label option\"\n role=\"option\"\n #liElem\n [attr.data-thook]=\"thook + '-option-' + option.key\"\n [attr.aria-disabled]=\"option.disabled\"\n [attr.aria-selected]=\"\n option.key === selectedValue?.key && !!selectedValue?.key\n \"\n [attr.aria-focus]=\"option.key === state?.key && !option.disabled\"\n [ngvTooltip]=\"isOverflow(liElem) ? t(option.label) : undefined\"\n (click)=\"updateState(option, $event)\"\n >\n <ng-template\n *ngTemplateOutlet=\"\n basicOptionContentTpl;\n context: { $implicit: option }\n \"\n >\n </ng-template>\n </li>\n <!-- Checking overflow on custom templates do not work skip adding ngvToolTip if custom template is provided -->\n <li\n #optionRefs\n *ngIf=\"!!optionContentTpl\"\n tabindex=\"-1\"\n [id]=\"id + '-option-' + option.key\"\n class=\"gds-dropdown__options__label option\"\n role=\"option\"\n #liElem\n [attr.data-thook]=\"thook + '-option-' + option.key\"\n [attr.aria-disabled]=\"option.disabled\"\n [attr.aria-selected]=\"\n option.key === selectedValue?.key && !!selectedValue?.key\n \"\n [attr.aria-focus]=\"option.key === state?.key && !option.disabled\"\n (click)=\"updateState(option, $event)\"\n >\n <ng-template\n *ngTemplateOutlet=\"optionContentTpl; context: { $implicit: option }\"\n >\n </ng-template>\n </li>\n </ng-template>\n\n <ng-template #basicOptionContentTpl let-option>\n <ngv-typeahead-highlight\n *ngIf=\"!!textToHighlight\"\n [textToHighlight]=\"textToHighlight\"\n [textContent]=\"t(option.label)\"\n >\n </ngv-typeahead-highlight>\n <ng-container *ngIf=\"!textToHighlight\">\n {{ t(option.label) }}\n </ng-container>\n </ng-template>\n</ng-container>\n", styles: [":host{position:absolute;bottom:0;transform:translateY(calc(100% + .5rem));--z-index: var(--sg-z-index-dropdown)}:host .hidden{visibility:hidden;display:none}:host ul[role=menu] [role=menuitem]{padding:.75rem;cursor:pointer}:host ul[role=menu] [role=menuitem]:hover,:host ul[role=menu] [role=menuitem]:focus-visible{background-color:var(--gds-ref-pallet-base200)}:host ul[role=menu] [role=menuitem]:active{background-color:var(--gds-ref-pallet-base300)}:host ul[role=menu] [role=menuitem]:focus{outline-color:#000;outline-offset:-.25rem}:host ul[role=listbox]{--z-index: var(--sg-z-index-popover);background-color:var(--sg-popover-background);flex-direction:column;justify-content:flex-end;inset:auto;z-index:var(--z-index);box-shadow:var(--sg-popover-box-shadow);color:var(--text-primary-color);padding:0;border:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--text-primary-color);--sg-border-color: var(--text-primary-color);border-radius:var(--sg-border-radius)}:host ul[role=listbox] [role=option]{padding:.75rem 1rem;line-height:1.25;cursor:pointer}:host ul[role=listbox] [role=option]:hover,:host ul[role=listbox] [role=option]:focus-visible{background-color:var(--grey-400)}:host ul[role=listbox] [role=option]:active{background-color:var(--grey-400)}:host ul[role=listbox] [role=option]:focus{outline-color:#000;outline-offset:-.25rem}:host ul[role=listbox] [role=option].active.sg-highlighted,:host ul[role=listbox] [role=option][aria-selected=true]{background:var(--grey-1000);color:#fff}:host .sg-fieldset-container{overflow-y:auto}:host .sg-fieldset-container fieldset[role=listbox][aria-multiselectable=true] [role=option]{display:flex;width:100%}:host .sg-fieldset-container fieldset[role=listbox][aria-multiselectable=true] [role=option].active.sg-highlighted input[type=checkbox]~i{border-color:#007ac7!important;box-shadow:0 0 .25em .0625em #41b0ee;outline-color:transparent;outline-style:solid}:host .gds-dropdown__options{padding-left:0;margin-bottom:0;margin-top:0;display:flex;flex-direction:column;list-style:none;display:none}:host .gds-dropdown__options>li{padding-bottom:.5rem;padding-top:.5rem;border:0;display:block;position:relative}:host .gds-dropdown__options>li:before{font-weight:500;display:inline-block;left:0;position:absolute;text-align:center}:host .gds-dropdown__options-expanded{display:block}:host .gds-dropdown__options__label:hover,:host .gds-dropdown__options__label:focus-visible{background-color:var(--grey-400)}:host .gds-dropdown__options__label:active{background-color:var(--grey-500)}:host .gds-dropdown__options__label:focus-visible{outline-color:#000;outline-offset:-.25rem}:host .gds-dropdown__options__label[aria-hidden=true]{display:none}:host .gds-dropdown__options__label[highlighted]{color:#fff}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: NgvTypeaheadHighlightComponent, selector: "ngv-typeahead-highlight", inputs: ["textContent", "textToHighlight"] }, { kind: "directive", type: i3$1.NgvTooltipDirective, selector: "[ngvTooltip]", inputs: ["ngvTooltip", "thook", "placement", "shown", "offset", "resizeThrottle", "maxWidth"], outputs: ["ngvShow", "ngvHide"] }, { kind: "directive", type: i3.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }] }); }
|
|
3075
|
-
}
|
|
3076
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvDropdownListComponent, decorators: [{
|
|
3077
|
-
type: Component,
|
|
3078
|
-
args: [{ selector: 'ngv-dropdown-list', template: "<ng-container *transloco=\"let t; read: scope\">\n <ul\n class=\"gds-dropdown__options card options gds-reset\"\n [class.gds-dropdown__options-expanded]=\"expanded\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.data-thook]=\"thook + '-options'\"\n [attr.aria-labelledby]=\"id + '-label'\"\n [attr.aria-activedescendant]=\"\n state ? id + '-option-' + state?.key : undefined\n \"\n >\n <ng-container *ngFor=\"let item of options\">\n <!-- OPTION -->\n <ng-container *ngIf=\"!isGroup(item)\">\n <ng-template\n *ngTemplateOutlet=\"listItemTemplate; context: { $implicit: item }\"\n ></ng-template>\n </ng-container>\n\n <!-- OPTION GROUP -->\n <li\n class=\"gds-dropdown__options__label group\"\n [attr.data-thook]=\"thook + '-option-group'\"\n *ngIf=\"isGroup(item)\"\n >\n <div class=\"sdv-list__label\">{{ t(item.label) }}</div>\n <ul [attr.aria-disabled]=\"item.disabled\">\n <ng-container *ngFor=\"let option of castGroup(item).options\">\n <ng-template\n *ngTemplateOutlet=\"\n listItemTemplate;\n context: { $implicit: option }\n \"\n ></ng-template>\n </ng-container>\n </ul>\n </li>\n </ng-container>\n </ul>\n\n <!-- TEMPLATE -->\n <ng-template #listItemTemplate let-option>\n <li\n #optionRefs\n *ngIf=\"!optionContentTpl\"\n tabindex=\"-1\"\n [id]=\"id + '-option-' + option.key\"\n class=\"gds-dropdown__options__label option\"\n role=\"option\"\n #liElem\n [attr.data-thook]=\"thook + '-option-' + option.key\"\n [attr.aria-disabled]=\"option.disabled\"\n [attr.aria-selected]=\"\n option.key === selectedValue?.key && !!selectedValue?.key\n \"\n [attr.aria-focus]=\"option.key === state?.key && !option.disabled\"\n [ngvTooltip]=\"isOverflow(liElem) ? t(option.label) : undefined\"\n (click)=\"updateState(option, $event)\"\n >\n <ng-template\n *ngTemplateOutlet=\"\n basicOptionContentTpl;\n context: { $implicit: option }\n \"\n >\n </ng-template>\n </li>\n <!-- Checking overflow on custom templates do not work skip adding ngvToolTip if custom template is provided -->\n <li\n #optionRefs\n *ngIf=\"!!optionContentTpl\"\n tabindex=\"-1\"\n [id]=\"id + '-option-' + option.key\"\n class=\"gds-dropdown__options__label option\"\n role=\"option\"\n #liElem\n [attr.data-thook]=\"thook + '-option-' + option.key\"\n [attr.aria-disabled]=\"option.disabled\"\n [attr.aria-selected]=\"\n option.key === selectedValue?.key && !!selectedValue?.key\n \"\n [attr.aria-focus]=\"option.key === state?.key && !option.disabled\"\n (click)=\"updateState(option, $event)\"\n >\n <ng-template\n *ngTemplateOutlet=\"optionContentTpl; context: { $implicit: option }\"\n >\n </ng-template>\n </li>\n </ng-template>\n\n <ng-template #basicOptionContentTpl let-option>\n <ngv-typeahead-highlight\n *ngIf=\"!!textToHighlight\"\n [textToHighlight]=\"textToHighlight\"\n [textContent]=\"t(option.label)\"\n >\n </ngv-typeahead-highlight>\n <ng-container *ngIf=\"!textToHighlight\">\n {{ t(option.label) }}\n </ng-container>\n </ng-template>\n</ng-container>\n", styles: [":host{position:absolute;bottom:0;transform:translateY(calc(100% + .5rem));--z-index: var(--sg-z-index-dropdown)}:host .hidden{visibility:hidden;display:none}:host ul[role=menu] [role=menuitem]{padding:.75rem;cursor:pointer}:host ul[role=menu] [role=menuitem]:hover,:host ul[role=menu] [role=menuitem]:focus-visible{background-color:var(--gds-ref-pallet-base200)}:host ul[role=menu] [role=menuitem]:active{background-color:var(--gds-ref-pallet-base300)}:host ul[role=menu] [role=menuitem]:focus{outline-color:#000;outline-offset:-.25rem}:host ul[role=listbox]{--z-index: var(--sg-z-index-popover);background-color:var(--sg-popover-background);flex-direction:column;justify-content:flex-end;inset:auto;z-index:var(--z-index);box-shadow:var(--sg-popover-box-shadow);color:var(--text-primary-color);padding:0;border:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--text-primary-color);--sg-border-color: var(--text-primary-color);border-radius:var(--sg-border-radius)}:host ul[role=listbox] [role=option]{padding:.75rem 1rem;line-height:1.25;cursor:pointer}:host ul[role=listbox] [role=option]:hover,:host ul[role=listbox] [role=option]:focus-visible{background-color:var(--grey-400)}:host ul[role=listbox] [role=option]:active{background-color:var(--grey-400)}:host ul[role=listbox] [role=option]:focus{outline-color:#000;outline-offset:-.25rem}:host ul[role=listbox] [role=option].active.sg-highlighted,:host ul[role=listbox] [role=option][aria-selected=true]{background:var(--grey-1000);color:#fff}:host .sg-fieldset-container{overflow-y:auto}:host .sg-fieldset-container fieldset[role=listbox][aria-multiselectable=true] [role=option]{display:flex;width:100%}:host .sg-fieldset-container fieldset[role=listbox][aria-multiselectable=true] [role=option].active.sg-highlighted input[type=checkbox]~i{border-color:#007ac7!important;box-shadow:0 0 .25em .0625em #41b0ee;outline-color:transparent;outline-style:solid}:host .gds-dropdown__options{padding-left:0;margin-bottom:0;margin-top:0;display:flex;flex-direction:column;list-style:none;display:none}:host .gds-dropdown__options>li{padding-bottom:.5rem;padding-top:.5rem;border:0;display:block;position:relative}:host .gds-dropdown__options>li:before{font-weight:500;display:inline-block;left:0;position:absolute;text-align:center}:host .gds-dropdown__options-expanded{display:block}:host .gds-dropdown__options__label:hover,:host .gds-dropdown__options__label:focus-visible{background-color:var(--grey-400)}:host .gds-dropdown__options__label:active{background-color:var(--grey-500)}:host .gds-dropdown__options__label:focus-visible{outline-color:#000;outline-offset:-.25rem}:host .gds-dropdown__options__label[aria-hidden=true]{display:none}:host .gds-dropdown__options__label[highlighted]{color:#fff}\n"] }]
|
|
3079
|
-
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
3080
|
-
type: Optional
|
|
3081
|
-
}, {
|
|
3082
|
-
type: Inject,
|
|
3083
|
-
args: [TRANSLOCO_SCOPE]
|
|
3084
|
-
}] }]; }, propDecorators: { expanded: [{
|
|
3085
|
-
type: Input
|
|
3086
|
-
}], state: [{
|
|
3087
|
-
type: Input
|
|
3088
|
-
}], scrollOffset: [{
|
|
3089
|
-
type: Input
|
|
3090
|
-
}], optionContentTpl: [{
|
|
3091
|
-
type: Input
|
|
3092
|
-
}], optionRefs: [{
|
|
3093
|
-
type: ViewChildren,
|
|
3094
|
-
args: ['optionRefs']
|
|
3095
|
-
}], id: [{
|
|
3096
|
-
type: HostBinding,
|
|
3097
|
-
args: ['attr.id']
|
|
3098
|
-
}, {
|
|
3099
|
-
type: Input
|
|
3100
|
-
}], thook: [{
|
|
3101
|
-
type: HostBinding,
|
|
3102
|
-
args: ['attr.data-thook']
|
|
3103
|
-
}, {
|
|
3104
|
-
type: Input
|
|
3105
|
-
}], options: [{
|
|
3106
|
-
type: Input
|
|
3107
|
-
}], textToHighlight: [{
|
|
3108
|
-
type: Input
|
|
3109
|
-
}], selectedValueChanged: [{
|
|
3110
|
-
type: Output
|
|
3111
|
-
}], closed: [{
|
|
3112
|
-
type: Output
|
|
3113
|
-
}], onKeyDown: [{
|
|
3114
|
-
type: HostListener,
|
|
3115
|
-
args: ['document:keydown', ['$event']]
|
|
3116
|
-
}], onKeyUp: [{
|
|
3117
|
-
type: HostListener,
|
|
3118
|
-
args: ['document:keyup', ['$event']]
|
|
3119
|
-
}] } });
|
|
3120
|
-
|
|
3121
|
-
/**
|
|
3122
|
-
* A dropdown allows the user to select an option from a list.
|
|
3123
|
-
* Dropdowns enables users to make a quick selection of the available options for a specific entry.
|
|
3124
|
-
* https://designlibrary.sebgroup.com/components/component-dropdown
|
|
3125
|
-
*/
|
|
3126
|
-
class NgvDropdownComponent extends NgvBaseControlValueAccessorComponent$1 {
|
|
3127
|
-
/** List of {@link Option} and {@link OptionGroup} listed when dropdown is expanded. */
|
|
3128
|
-
set options(value) {
|
|
3129
|
-
// update options
|
|
3130
|
-
this._options = value;
|
|
3131
|
-
// already has a null/undefined key
|
|
3132
|
-
const nullishOption = this.dropdownUtils
|
|
3133
|
-
.flattenOptions(value, false)
|
|
3134
|
-
.find((option) => option.key == null);
|
|
3135
|
-
// if the dropdown is optional, add a null value to deselect option
|
|
3136
|
-
if (!this.required && !nullishOption && this.allowControlNullishOption) {
|
|
3137
|
-
this._options = [this.defaultNullishOption].concat(this._options);
|
|
3138
|
-
}
|
|
3139
|
-
// set default value and emit if there is only one option
|
|
3140
|
-
if (value.length === 1 && this.required && this.selectOnSingleOption) {
|
|
3141
|
-
const onlyOption = this.dropdownUtils.flattenOptions(value, false)[0];
|
|
3142
|
-
this.updateModel(onlyOption);
|
|
3143
|
-
return;
|
|
3144
|
-
}
|
|
3145
|
-
// don't update local state if we shouldn't control nullish value and we cant find the selected value amongst the options
|
|
3146
|
-
const matchingOption = this.dropdownUtils
|
|
3147
|
-
.flattenOptions(value, false)
|
|
3148
|
-
.find((option) => option.key == this.ngControl?.value);
|
|
3149
|
-
if (!this.allowControlNullishOption && !matchingOption)
|
|
3150
|
-
return;
|
|
3151
|
-
// Update local state
|
|
3152
|
-
this.writeValue(this.ngControl?.value);
|
|
3153
|
-
}
|
|
3154
|
-
get options() {
|
|
3155
|
-
return this._options;
|
|
3156
|
-
}
|
|
3157
|
-
/** @internal nullish option. */
|
|
3158
|
-
get defaultNullishOption() {
|
|
3159
|
-
return { key: null, label: this.placeholder ?? '\u00A0' };
|
|
3160
|
-
}
|
|
3161
|
-
constructor(ngControl, translocoScope, cdr, dropdownUtils) {
|
|
3162
|
-
super(ngControl, translocoScope, cdr);
|
|
3163
|
-
this.ngControl = ngControl;
|
|
3164
|
-
this.translocoScope = translocoScope;
|
|
3165
|
-
this.cdr = cdr;
|
|
3166
|
-
this.dropdownUtils = dropdownUtils;
|
|
3167
|
-
/** Special property used for selecting DOM elements during automated UI testing. */
|
|
3168
|
-
this.thook = 'dropdown';
|
|
3169
|
-
/** The additional amount to show when option is scrolled into view. */
|
|
3170
|
-
this.scrollOffset = 24;
|
|
3171
|
-
/**
|
|
3172
|
-
* Allow this component to add/ remove nullish options based on wether the control is required or not
|
|
3173
|
-
* Defaults to true.
|
|
3174
|
-
*/
|
|
3175
|
-
this.allowControlNullishOption = true;
|
|
3176
|
-
/**
|
|
3177
|
-
* If only one option exists in options[], default is to select it.
|
|
3178
|
-
* This input can be used to alter that behaviour so it doesn't automatically
|
|
3179
|
-
* select a value if it's the only one.
|
|
3180
|
-
* Defaults to true.
|
|
3181
|
-
*/
|
|
3182
|
-
this.selectOnSingleOption = true;
|
|
3183
|
-
/**
|
|
3184
|
-
* Emits changes of the expanded state of the dropdown
|
|
3185
|
-
*/
|
|
3186
|
-
this.expandedChange = new EventEmitter();
|
|
3187
|
-
/** The current expanded state of the dropdown options. */
|
|
3188
|
-
this.expanded = false;
|
|
3189
|
-
/** The current option selected based on numeric index. */
|
|
3190
|
-
this.activeIndex = -1;
|
|
3191
|
-
this.keyEvent = {};
|
|
3192
|
-
this._options = [];
|
|
3193
|
-
}
|
|
3194
|
-
ngOnChanges(changes) {
|
|
3195
|
-
if (changes.required?.currentValue !== undefined) {
|
|
3196
|
-
const isRequired = changes.required.currentValue;
|
|
3197
|
-
// remove nullish option
|
|
3198
|
-
const hasNullishOption = this.dropdownUtils.flattenOptions(this._options, false)[0]?.key == null;
|
|
3199
|
-
// if required, remove nullish option
|
|
3200
|
-
if (isRequired && hasNullishOption && this.allowControlNullishOption) {
|
|
3201
|
-
this._options = this._options.slice(1);
|
|
3202
|
-
return;
|
|
3203
|
-
}
|
|
3204
|
-
// if not required, add nullish option
|
|
3205
|
-
if (!isRequired && !hasNullishOption && this.allowControlNullishOption) {
|
|
3206
|
-
this._options = [this.defaultNullishOption].concat(this._options);
|
|
3207
|
-
return;
|
|
3208
|
-
}
|
|
3209
|
-
}
|
|
3210
|
-
}
|
|
3211
|
-
ngOnDestroy() {
|
|
3212
|
-
this.onClickSubscription?.unsubscribe();
|
|
3213
|
-
}
|
|
3214
|
-
/** @internal override to correctly set state from form value */
|
|
3215
|
-
writeValue(value) {
|
|
3216
|
-
const options = this.dropdownUtils.flattenOptions(this._options, false);
|
|
3217
|
-
this.state = options.find((option) => option.key === value);
|
|
3218
|
-
}
|
|
3219
|
-
// ----------------------------------------------------------------------------
|
|
3220
|
-
// EVENTS
|
|
3221
|
-
// ----------------------------------------------------------------------------
|
|
3222
|
-
/** @internal */
|
|
3223
|
-
onSelectChange(option) {
|
|
3224
|
-
if (option.disabled)
|
|
3225
|
-
return;
|
|
3226
|
-
this.updateModel(option);
|
|
3227
|
-
this.setExpanded(false);
|
|
3228
|
-
}
|
|
3229
|
-
// /**
|
|
3230
|
-
// * @internal
|
|
3231
|
-
// * Enter toggles the dropdown, home, end, and, arrows change the index.
|
|
3232
|
-
// * @param event fired containing which key was released.
|
|
3233
|
-
// */
|
|
3234
|
-
onKeyUp(event) {
|
|
3235
|
-
this.keyEvent = event;
|
|
3236
|
-
}
|
|
3237
|
-
/**
|
|
3238
|
-
* Closes the dropdown on click outside.
|
|
3239
|
-
*/
|
|
3240
|
-
subscribeToOutsideClickEvent() {
|
|
3241
|
-
this.onClickSubscription = fromEvent(document, 'click').subscribe({
|
|
3242
|
-
next: (event) => {
|
|
3243
|
-
if (this.expanded &&
|
|
3244
|
-
!this.inputRef?.nativeElement.contains(event.target)) {
|
|
3245
|
-
this.toggleDropdown();
|
|
3246
|
-
this.onClickSubscription?.unsubscribe();
|
|
3247
|
-
}
|
|
3248
|
-
},
|
|
3249
|
-
});
|
|
3250
|
-
}
|
|
3251
|
-
// ----------------------------------------------------------------------------
|
|
3252
|
-
// HELPERS
|
|
3253
|
-
// ----------------------------------------------------------------------------
|
|
3254
|
-
/**
|
|
3255
|
-
* Set the dropdown value to given option.
|
|
3256
|
-
* @param value the dropdown option to select.
|
|
3257
|
-
*/
|
|
3258
|
-
updateModel(value) {
|
|
3259
|
-
this.state = value;
|
|
3260
|
-
this.onChange(value.key);
|
|
3261
|
-
}
|
|
3262
|
-
/** Toggle the expanded state of the dropdown options. */
|
|
3263
|
-
toggleDropdown() {
|
|
3264
|
-
this.setExpanded(!this.expanded);
|
|
3265
|
-
this.cdr.detectChanges();
|
|
3266
|
-
}
|
|
3267
|
-
/**
|
|
3268
|
-
* Set the expanded state of the dropdown options. If true the options are shown below the field.
|
|
3269
|
-
* Activate on click event to be able to close dropdown on click outside.
|
|
3270
|
-
* @param state the expanded state which to set.
|
|
3271
|
-
*/
|
|
3272
|
-
setExpanded(state = true) {
|
|
3273
|
-
this.expanded = state;
|
|
3274
|
-
this.expandedChange.emit(this.expanded);
|
|
3275
|
-
if (this.expanded)
|
|
3276
|
-
this.subscribeToOutsideClickEvent();
|
|
3277
|
-
if (!this.expanded)
|
|
3278
|
-
this.onTouched();
|
|
3279
|
-
}
|
|
3280
|
-
/* TYPE CASTS */
|
|
3281
|
-
/**
|
|
3282
|
-
* Typecast anything to an {@link Option}.
|
|
3283
|
-
* @param option the object to typecast.
|
|
3284
|
-
*/
|
|
3285
|
-
castOption(option) {
|
|
3286
|
-
return option;
|
|
3287
|
-
}
|
|
3288
|
-
/**
|
|
3289
|
-
* Typecast anything to an {@link OptionGroup}.
|
|
3290
|
-
* @param group the object to typecast.
|
|
3291
|
-
*/
|
|
3292
|
-
castGroup(group) {
|
|
3293
|
-
return group;
|
|
3294
|
-
}
|
|
3295
|
-
/* TYPE CHECKS */
|
|
3296
|
-
/**
|
|
3297
|
-
* Returns true if argument is an {@link Option}.
|
|
3298
|
-
* @param option the object to check.
|
|
3299
|
-
*/
|
|
3300
|
-
isOption(option) {
|
|
3301
|
-
return !('options' in option);
|
|
3302
|
-
}
|
|
3303
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvDropdownComponent, deps: [{ token: i1$3.NgControl, optional: true, self: true }, { token: TRANSLOCO_SCOPE, optional: true }, { token: i0.ChangeDetectorRef }, { token: i2$3.DropdownUtils }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3304
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgvDropdownComponent, selector: "ngv-dropdown", inputs: { thook: "thook", placeholder: "placeholder", options: "options", scrollOffset: "scrollOffset", allowControlNullishOption: "allowControlNullishOption", textToHighlight: "textToHighlight", selectOnSingleOption: "selectOnSingleOption" }, outputs: { expandedChange: "expandedChange" }, host: { listeners: { "keyup": "onKeyUp($event)" }, properties: { "attr.data-thook": "this.thook" } }, queries: [{ propertyName: "selectedContentTpl", first: true, predicate: ["selectedTpl"], descendants: true, read: TemplateRef }, { propertyName: "optionContentTpl", first: true, predicate: ["optionTpl"], descendants: true, read: TemplateRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- LABEL -->\n<ng-container *transloco=\"let t; read: scope\">\n <label [id]=\"id + '-label'\" class=\"hide-if-empty\" [attr.for]=\"id + '-toggle'\">\n <ng-template\n *ngTemplateOutlet=\"labelContentTpl || basicLabelContentTpl\"\n ></ng-template>\n <ng-template #basicLabelContentTpl>\n <!-- to trigger css:empty if no label was added -->\n <ng-container *ngIf=\"label\">\n {{ label }}\n <span\n *ngIf=\"optional === true || (required !== true && optional !== false)\"\n class=\"sdv-field-label--optional\"\n >\n ({{ t('label.optional') }})\n </span>\n </ng-container>\n </ng-template>\n </label>\n\n <!-- DESCRIPTION -->\n <div class=\"description\">{{ description }}</div>\n\n <!-- LOCKED INPUT -->\n <ng-container *ngIf=\"locked\">\n <div\n [id]=\"id + '-input'\"\n class=\"ngv-field--locked\"\n [attr.name]=\"name\"\n [attr.value]=\"state\"\n [attr.role]=\"role\"\n [attr.aria-labelledby]=\"id + '-label ' + id + '-input'\"\n >\n <span *ngIf=\"!state\" class=\"unset-state\">-</span>\n <ng-container *ngIf=\"state\">\n <ng-template\n *ngTemplateOutlet=\"\n selectedContentTpl || defaultSelectedContentTpl;\n context: { $implicit: state }\n \"\n >\n </ng-template>\n </ng-container>\n </div>\n </ng-container>\n\n <!-- INPUT -->\n <ng-container *ngIf=\"!locked\">\n <div #input [id]=\"id + '-input'\" class=\"dropdown\">\n <button\n [id]=\"id + '-toggle'\"\n [disabled]=\"disabled\"\n type=\"button\"\n class=\"ngv-field-dropdown__label toggle\"\n [class.ngv-field--error]=\"invalid\"\n aria-haspopup=\"listbox\"\n [attr.data-thook]=\"thook + '-toggle'\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-labelledby]=\"id + '-label ' + id + '-toggle'\"\n (click)=\"toggleDropdown()\"\n >\n <ng-template\n *ngTemplateOutlet=\"\n selectedContentTpl || defaultSelectedContentTpl;\n context: { $implicit: state }\n \"\n >\n </ng-template>\n </button>\n\n <ngv-dropdown-list\n #dropDownList\n [options]=\"options\"\n [scrollOffset]=\"scrollOffset\"\n [state]=\"state\"\n [expanded]=\"expanded\"\n [optionContentTpl]=\"optionContentTpl\"\n [textToHighlight]=\"textToHighlight\"\n (selectedValueChanged)=\"onSelectChange($event)\"\n >\n </ngv-dropdown-list>\n </div>\n <!-- ERRORS -->\n <label\n class=\"sdv-field-notice sdv-field-notice--error\"\n [attr.for]=\"id + '-input'\"\n *ngIf=\"invalid && (error || ngControl?.invalid)\"\n >\n <span *ngIf=\"error; else errorsRef\">{{ error }}</span>\n <ng-template #errorsRef>\n <span *ngIf=\"firstError as error\">\n {{ t('error.field' + error?.code, error?.params) }}\n </span>\n </ng-template>\n </label>\n\n <!-- CHILDREN -->\n <ng-content></ng-content>\n </ng-container>\n\n <ng-template #defaultSelectedContentTpl let-state>\n <!-- eslint-disable-next-line @angular-eslint/template/eqeqeq -->\n {{ state?.key != null && state?.label ? t(state.label) : placeholder }}\n </ng-template>\n</ng-container>\n", styles: [":host label{display:block;font-weight:500;line-height:1.25rem;margin-bottom:.5rem;width:100%}:host .description{margin-bottom:.5rem;line-height:1.25rem;width:100%}:host button{font-weight:500;display:inline-flex;justify-content:center;transition:all .3s cubic-bezier(.23,1,.32,1),outline-offset 0s,outline-width 0s;background:transparent;border-color:#007ac7;color:#007ac7;--color: rgb(0, 122, 199);background-color:transparent;border:0;cursor:pointer;font-family:inherit;padding:0;padding:.75rem 1rem;border-radius:var(--sg-border-radius);border:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--grey-800);--sg-border-color: var(--grey-800);background:var(--sg-form-control-bg);color:var(--text-primary-color);min-height:2.75rem;display:flex;flex-wrap:nowrap;justify-content:space-between;align-items:center;max-width:100%;font-size:inherit;font-weight:400;line-height:1.125;margin-bottom:.5rem;margin-top:.5rem;width:100%}@media screen and (-ms-high-contrast: active){:host button{border:2px solid currentcolor}}:host button.small{min-height:2rem;padding:.4375rem .75rem;line-height:1rem}:host button.large{min-height:4rem;padding:1rem 1.5rem;font-size:1.5rem;line-height:2rem}:host button:focus:not(:focus-visible){box-shadow:none;outline:0}:host button:focus,:host button:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host button:not(:disabled,.disabled,[aria-disabled]):hover{background-color:#199be3;color:#fff;--background: #199be3;--color: rgb(255, 255, 255);border-color:#199be3}:host button[aria-selected=true],:host button:active,:host button.active,:host button.active:hover,:host button:active:hover{background-color:#007ac7;color:#fff;--background: rgb(0, 122, 199);--color: rgb(255, 255, 255);border-color:#007ac7}:host button:disabled,:host button.disabled,:host button[aria-disabled=true]{background:var(--sg-form-control-bg-disabled)!important;color:var(--text-disabled-color)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed}:host button:disabled::placeholder,:host button.disabled::placeholder,:host button[aria-disabled=true]::placeholder{color:var(--text-disabled-color)}:host button:focus{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}@media (max-width: 35.98em){:host button{min-width:100%}}:host button:not(:disabled,.disabled,[aria-disabled]):hover{--background: var(--grey-400);--color: var(--grey-1000);background-color:var(--grey-400);color:var(--grey-1000);border-color:var(--grey-1000)}:host button>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host button:after{margin-left:.5rem;margin-right:.5rem;border-bottom:solid 2px var(--text-primary-color);border-left:solid 2px var(--text-primary-color);content:\"\";display:block;height:.5rem;width:.5rem;position:relative;top:-.15rem;transform:translate(75%) rotate3d(0,0,1,-45deg) scaleZ(-1);transition:transform .3s ease-in;flex-shrink:0}:host button[aria-expanded=true]:after{transform:translate(75%,6px) rotate3d(0,0,1,-45deg) scale3d(-1,-1,1)}:host button:hover:after{border-color:currentColor}:host button.small{font-size:.875rem}:host button:hover{background:var(--grey-400)}:host .dropdown{position:relative}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: NgvDropdownListComponent, selector: "ngv-dropdown-list", inputs: ["expanded", "state", "scrollOffset", "optionContentTpl", "id", "thook", "options", "textToHighlight"], outputs: ["selectedValueChanged", "closed"] }] }); }
|
|
3305
|
-
}
|
|
3306
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvDropdownComponent, decorators: [{
|
|
3307
|
-
type: Component,
|
|
3308
|
-
args: [{ selector: 'ngv-dropdown', template: "<!-- LABEL -->\n<ng-container *transloco=\"let t; read: scope\">\n <label [id]=\"id + '-label'\" class=\"hide-if-empty\" [attr.for]=\"id + '-toggle'\">\n <ng-template\n *ngTemplateOutlet=\"labelContentTpl || basicLabelContentTpl\"\n ></ng-template>\n <ng-template #basicLabelContentTpl>\n <!-- to trigger css:empty if no label was added -->\n <ng-container *ngIf=\"label\">\n {{ label }}\n <span\n *ngIf=\"optional === true || (required !== true && optional !== false)\"\n class=\"sdv-field-label--optional\"\n >\n ({{ t('label.optional') }})\n </span>\n </ng-container>\n </ng-template>\n </label>\n\n <!-- DESCRIPTION -->\n <div class=\"description\">{{ description }}</div>\n\n <!-- LOCKED INPUT -->\n <ng-container *ngIf=\"locked\">\n <div\n [id]=\"id + '-input'\"\n class=\"ngv-field--locked\"\n [attr.name]=\"name\"\n [attr.value]=\"state\"\n [attr.role]=\"role\"\n [attr.aria-labelledby]=\"id + '-label ' + id + '-input'\"\n >\n <span *ngIf=\"!state\" class=\"unset-state\">-</span>\n <ng-container *ngIf=\"state\">\n <ng-template\n *ngTemplateOutlet=\"\n selectedContentTpl || defaultSelectedContentTpl;\n context: { $implicit: state }\n \"\n >\n </ng-template>\n </ng-container>\n </div>\n </ng-container>\n\n <!-- INPUT -->\n <ng-container *ngIf=\"!locked\">\n <div #input [id]=\"id + '-input'\" class=\"dropdown\">\n <button\n [id]=\"id + '-toggle'\"\n [disabled]=\"disabled\"\n type=\"button\"\n class=\"ngv-field-dropdown__label toggle\"\n [class.ngv-field--error]=\"invalid\"\n aria-haspopup=\"listbox\"\n [attr.data-thook]=\"thook + '-toggle'\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-labelledby]=\"id + '-label ' + id + '-toggle'\"\n (click)=\"toggleDropdown()\"\n >\n <ng-template\n *ngTemplateOutlet=\"\n selectedContentTpl || defaultSelectedContentTpl;\n context: { $implicit: state }\n \"\n >\n </ng-template>\n </button>\n\n <ngv-dropdown-list\n #dropDownList\n [options]=\"options\"\n [scrollOffset]=\"scrollOffset\"\n [state]=\"state\"\n [expanded]=\"expanded\"\n [optionContentTpl]=\"optionContentTpl\"\n [textToHighlight]=\"textToHighlight\"\n (selectedValueChanged)=\"onSelectChange($event)\"\n >\n </ngv-dropdown-list>\n </div>\n <!-- ERRORS -->\n <label\n class=\"sdv-field-notice sdv-field-notice--error\"\n [attr.for]=\"id + '-input'\"\n *ngIf=\"invalid && (error || ngControl?.invalid)\"\n >\n <span *ngIf=\"error; else errorsRef\">{{ error }}</span>\n <ng-template #errorsRef>\n <span *ngIf=\"firstError as error\">\n {{ t('error.field' + error?.code, error?.params) }}\n </span>\n </ng-template>\n </label>\n\n <!-- CHILDREN -->\n <ng-content></ng-content>\n </ng-container>\n\n <ng-template #defaultSelectedContentTpl let-state>\n <!-- eslint-disable-next-line @angular-eslint/template/eqeqeq -->\n {{ state?.key != null && state?.label ? t(state.label) : placeholder }}\n </ng-template>\n</ng-container>\n", styles: [":host label{display:block;font-weight:500;line-height:1.25rem;margin-bottom:.5rem;width:100%}:host .description{margin-bottom:.5rem;line-height:1.25rem;width:100%}:host button{font-weight:500;display:inline-flex;justify-content:center;transition:all .3s cubic-bezier(.23,1,.32,1),outline-offset 0s,outline-width 0s;background:transparent;border-color:#007ac7;color:#007ac7;--color: rgb(0, 122, 199);background-color:transparent;border:0;cursor:pointer;font-family:inherit;padding:0;padding:.75rem 1rem;border-radius:var(--sg-border-radius);border:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--grey-800);--sg-border-color: var(--grey-800);background:var(--sg-form-control-bg);color:var(--text-primary-color);min-height:2.75rem;display:flex;flex-wrap:nowrap;justify-content:space-between;align-items:center;max-width:100%;font-size:inherit;font-weight:400;line-height:1.125;margin-bottom:.5rem;margin-top:.5rem;width:100%}@media screen and (-ms-high-contrast: active){:host button{border:2px solid currentcolor}}:host button.small{min-height:2rem;padding:.4375rem .75rem;line-height:1rem}:host button.large{min-height:4rem;padding:1rem 1.5rem;font-size:1.5rem;line-height:2rem}:host button:focus:not(:focus-visible){box-shadow:none;outline:0}:host button:focus,:host button:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host button:not(:disabled,.disabled,[aria-disabled]):hover{background-color:#199be3;color:#fff;--background: #199be3;--color: rgb(255, 255, 255);border-color:#199be3}:host button[aria-selected=true],:host button:active,:host button.active,:host button.active:hover,:host button:active:hover{background-color:#007ac7;color:#fff;--background: rgb(0, 122, 199);--color: rgb(255, 255, 255);border-color:#007ac7}:host button:disabled,:host button.disabled,:host button[aria-disabled=true]{background:var(--sg-form-control-bg-disabled)!important;color:var(--text-disabled-color)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed}:host button:disabled::placeholder,:host button.disabled::placeholder,:host button[aria-disabled=true]::placeholder{color:var(--text-disabled-color)}:host button:focus{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}@media (max-width: 35.98em){:host button{min-width:100%}}:host button:not(:disabled,.disabled,[aria-disabled]):hover{--background: var(--grey-400);--color: var(--grey-1000);background-color:var(--grey-400);color:var(--grey-1000);border-color:var(--grey-1000)}:host button>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host button:after{margin-left:.5rem;margin-right:.5rem;border-bottom:solid 2px var(--text-primary-color);border-left:solid 2px var(--text-primary-color);content:\"\";display:block;height:.5rem;width:.5rem;position:relative;top:-.15rem;transform:translate(75%) rotate3d(0,0,1,-45deg) scaleZ(-1);transition:transform .3s ease-in;flex-shrink:0}:host button[aria-expanded=true]:after{transform:translate(75%,6px) rotate3d(0,0,1,-45deg) scale3d(-1,-1,1)}:host button:hover:after{border-color:currentColor}:host button.small{font-size:.875rem}:host button:hover{background:var(--grey-400)}:host .dropdown{position:relative}\n"] }]
|
|
3309
|
-
}], ctorParameters: function () { return [{ type: i1$3.NgControl, decorators: [{
|
|
3310
|
-
type: Self
|
|
3311
|
-
}, {
|
|
3312
|
-
type: Optional
|
|
3313
|
-
}] }, { type: undefined, decorators: [{
|
|
3314
|
-
type: Optional
|
|
3315
|
-
}, {
|
|
3316
|
-
type: Inject,
|
|
3317
|
-
args: [TRANSLOCO_SCOPE]
|
|
3318
|
-
}] }, { type: i0.ChangeDetectorRef }, { type: i2$3.DropdownUtils }]; }, propDecorators: { selectedContentTpl: [{
|
|
3319
|
-
type: ContentChild,
|
|
3320
|
-
args: ['selectedTpl', { read: TemplateRef }]
|
|
3321
|
-
}], optionContentTpl: [{
|
|
3322
|
-
type: ContentChild,
|
|
3323
|
-
args: ['optionTpl', { read: TemplateRef }]
|
|
3324
|
-
}], thook: [{
|
|
3325
|
-
type: HostBinding,
|
|
3326
|
-
args: ['attr.data-thook']
|
|
3327
|
-
}, {
|
|
3328
|
-
type: Input
|
|
3329
|
-
}], placeholder: [{
|
|
3330
|
-
type: Input
|
|
3331
|
-
}], options: [{
|
|
3332
|
-
type: Input
|
|
3333
|
-
}], scrollOffset: [{
|
|
3334
|
-
type: Input
|
|
3335
|
-
}], allowControlNullishOption: [{
|
|
3336
|
-
type: Input
|
|
3337
|
-
}], textToHighlight: [{
|
|
3338
|
-
type: Input
|
|
3339
|
-
}], selectOnSingleOption: [{
|
|
3340
|
-
type: Input
|
|
3341
|
-
}], expandedChange: [{
|
|
3342
|
-
type: Output
|
|
3343
|
-
}], onKeyUp: [{
|
|
3344
|
-
type: HostListener,
|
|
3345
|
-
args: ['keyup', ['$event']]
|
|
3346
|
-
}] } });
|
|
3347
|
-
|
|
3348
|
-
class NgvTypeaheadInputComponent extends NgvInputComponent$1 {
|
|
3349
|
-
get dropdownButton() {
|
|
3350
|
-
return this.hostComponent.inputRef?.nativeElement;
|
|
3351
|
-
}
|
|
3352
|
-
constructor(element, renderer2, ngControl, translocoScope, cdr) {
|
|
3353
|
-
super(ngControl, translocoScope, cdr);
|
|
3354
|
-
this.element = element;
|
|
3355
|
-
this.renderer2 = renderer2;
|
|
3356
|
-
this.ngControl = ngControl;
|
|
3357
|
-
this.translocoScope = translocoScope;
|
|
3358
|
-
this.cdr = cdr;
|
|
3359
|
-
/** Boolean to indicate wether the dropdown is expanded or not, to apply appropriate styling */
|
|
3360
|
-
this.expanded = false;
|
|
3361
|
-
super.ngOnInit();
|
|
3362
|
-
}
|
|
3363
|
-
ngOnInit() {
|
|
3364
|
-
this.autocomplete = 'off';
|
|
3365
|
-
this.debounceTime = 0;
|
|
3366
|
-
this.hostComponent.selectOnSingleOption = false;
|
|
3367
|
-
this.moveInput();
|
|
3368
|
-
this.handleExpandedChange();
|
|
3369
|
-
}
|
|
3370
|
-
/**
|
|
3371
|
-
* @internal
|
|
3372
|
-
* Allow space to be inputted as text
|
|
3373
|
-
* @param event fired containing which key was released.
|
|
3374
|
-
*/
|
|
3375
|
-
onKeyUp(event) {
|
|
3376
|
-
if (event.code === 'Space') {
|
|
3377
|
-
event.preventDefault();
|
|
3378
|
-
}
|
|
3379
|
-
}
|
|
3380
|
-
/**
|
|
3381
|
-
* @internal
|
|
3382
|
-
* First time the dropdown is expanded, move the input sp it becomes a child of the dropdown button
|
|
3383
|
-
* to better reflect semantics and styling.
|
|
3384
|
-
*/
|
|
3385
|
-
moveInput() {
|
|
3386
|
-
// Workaround to execute code in setTimeout due to hooks management etc.
|
|
3387
|
-
setTimeout(() => {
|
|
3388
|
-
// Only move if parent dropdown is found
|
|
3389
|
-
if (this.dropdownButton) {
|
|
3390
|
-
this.renderer2.appendChild(this.dropdownButton.querySelector('button'), this.element.nativeElement);
|
|
3391
|
-
// Get the height of the parent button so the input can be explicitly set to the same height since it's absolutely positioned
|
|
3392
|
-
this.buttonHeight =
|
|
3393
|
-
this.dropdownButton.getBoundingClientRect().height || 32; // Default to 2em;
|
|
3394
|
-
}
|
|
3395
|
-
}, 0);
|
|
3396
|
-
}
|
|
3397
|
-
/**
|
|
3398
|
-
* @internal
|
|
3399
|
-
* When dropdown is expanded, focus on the input. If a value is selected, set it in the input.
|
|
3400
|
-
* When the dropdown is collapsed, empty the input from text.
|
|
3401
|
-
*/
|
|
3402
|
-
handleExpandedChange() {
|
|
3403
|
-
this.hostComponent.expandedChange
|
|
3404
|
-
.pipe(takeUntil$1(this._destroy$))
|
|
3405
|
-
.subscribe((state) => {
|
|
3406
|
-
this.expanded = state;
|
|
3407
|
-
if (this.expanded) {
|
|
3408
|
-
// Weird workaround for setting focus. Didn't set focus, but wrapping in setTimeout solved it.
|
|
3409
|
-
// See suggestion here: https://github.com/ionic-team/stencil/issues/3772#issuecomment-1292599609
|
|
3410
|
-
setTimeout(() => this.setFocus());
|
|
3411
|
-
// Format and interpolate result since return type can be other than string from the formatter
|
|
3412
|
-
const formattedValue = `${this.formatSelected(this.hostComponent.state)}`;
|
|
3413
|
-
this.setInput(formattedValue, false);
|
|
3414
|
-
}
|
|
3415
|
-
else
|
|
3416
|
-
this.setInput('', true);
|
|
3417
|
-
});
|
|
3418
|
-
}
|
|
3419
|
-
/**
|
|
3420
|
-
* @internal Formats the selected option to display in the input. Interpolate the returned value
|
|
3421
|
-
* since we don't know the return type or label type.
|
|
3422
|
-
* @param value The selected value
|
|
3423
|
-
* @returns The formatted value
|
|
3424
|
-
*/
|
|
3425
|
-
formatSelected(value) {
|
|
3426
|
-
if (value?.key == null)
|
|
3427
|
-
return '';
|
|
3428
|
-
// If no formatter exists, return the label or empty string
|
|
3429
|
-
if (!this.selectedFormatter)
|
|
3430
|
-
return value.label ?? '';
|
|
3431
|
-
// If a formatter exists, use it
|
|
3432
|
-
return this.selectedFormatter(value) ?? '';
|
|
3433
|
-
}
|
|
3434
|
-
/**
|
|
3435
|
-
* Sets the input programmatically instead of native HTML input event.
|
|
3436
|
-
* @param input
|
|
3437
|
-
*/
|
|
3438
|
-
setInput(input, triggerFilter) {
|
|
3439
|
-
this.state = input;
|
|
3440
|
-
if (triggerFilter) {
|
|
3441
|
-
this.onChange(this.state);
|
|
3442
|
-
this.inputChange$.next(this.state);
|
|
3443
|
-
}
|
|
3444
|
-
}
|
|
3445
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTypeaheadInputComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1$3.NgControl, optional: true, self: true }, { token: TRANSLOCO_SCOPE, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3446
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgvTypeaheadInputComponent, selector: "ngv-typeahead-input", inputs: { hostComponent: "hostComponent", resultFormatter: "resultFormatter", selectedFormatter: "selectedFormatter" }, host: { listeners: { "document:keyup": "onKeyUp($event)" } }, usesInheritance: true, ngImport: i0, template: "<ng-container>\n <div class=\"input-wrapper\"\n [ngClass]=\"{ 'expanded': expanded, 'collapsed': !expanded }\"\n [ngStyle]=\"{ 'height.px': buttonHeight }\"\n (click)=\"$event.stopPropagation();\">\n <!-- INPUT FIELD -->\n <div class=\"input-group\">\n <input #input\n [id]=\"id + '-input'\"\n class=\"sdv-field\"\n [attr.type]=\"type\"\n [attr.name]=\"name\"\n [attr.required]=\"required\"\n [attr.email]=\"email\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [attr.maxlength]=\"maxlength\"\n [attr.minlength]=\"minlength\"\n [pattern]=\"pattern\"\n [disabled]=\"disabled\"\n [autocomplete]=\"autocomplete\"\n [autofocus]=\"autofocus\"\n [readOnly]=\"readonly\"\n [attr.role]=\"role\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"description\"\n [value]=\"state\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\" />\n </div>\n </div>\n</ng-container>", styles: [":host{position:absolute;top:0;left:0;width:calc(100% - 2.625em)}:host .input-wrapper{border:none;box-shadow:none}:host .input-wrapper.expanded{display:flex}:host .input-wrapper.expanded .input-group input.sdv-field{height:100%;width:100%;min-height:unset;margin-left:1px;border:none;box-shadow:none}:host .input-wrapper.collapsed{display:none}:host .input-wrapper .input-group{width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
|
|
3447
|
-
}
|
|
3448
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTypeaheadInputComponent, decorators: [{
|
|
3449
|
-
type: Component,
|
|
3450
|
-
args: [{ selector: 'ngv-typeahead-input', template: "<ng-container>\n <div class=\"input-wrapper\"\n [ngClass]=\"{ 'expanded': expanded, 'collapsed': !expanded }\"\n [ngStyle]=\"{ 'height.px': buttonHeight }\"\n (click)=\"$event.stopPropagation();\">\n <!-- INPUT FIELD -->\n <div class=\"input-group\">\n <input #input\n [id]=\"id + '-input'\"\n class=\"sdv-field\"\n [attr.type]=\"type\"\n [attr.name]=\"name\"\n [attr.required]=\"required\"\n [attr.email]=\"email\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [attr.maxlength]=\"maxlength\"\n [attr.minlength]=\"minlength\"\n [pattern]=\"pattern\"\n [disabled]=\"disabled\"\n [autocomplete]=\"autocomplete\"\n [autofocus]=\"autofocus\"\n [readOnly]=\"readonly\"\n [attr.role]=\"role\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"description\"\n [value]=\"state\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\" />\n </div>\n </div>\n</ng-container>", styles: [":host{position:absolute;top:0;left:0;width:calc(100% - 2.625em)}:host .input-wrapper{border:none;box-shadow:none}:host .input-wrapper.expanded{display:flex}:host .input-wrapper.expanded .input-group input.sdv-field{height:100%;width:100%;min-height:unset;margin-left:1px;border:none;box-shadow:none}:host .input-wrapper.collapsed{display:none}:host .input-wrapper .input-group{width:100%}\n"] }]
|
|
3451
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1$3.NgControl, decorators: [{
|
|
3452
|
-
type: Self
|
|
3453
|
-
}, {
|
|
3454
|
-
type: Optional
|
|
3455
|
-
}] }, { type: undefined, decorators: [{
|
|
3456
|
-
type: Optional
|
|
3457
|
-
}, {
|
|
3458
|
-
type: Inject,
|
|
3459
|
-
args: [TRANSLOCO_SCOPE]
|
|
3460
|
-
}] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { hostComponent: [{
|
|
3461
|
-
type: Input
|
|
3462
|
-
}], resultFormatter: [{
|
|
3463
|
-
type: Input
|
|
3464
|
-
}], selectedFormatter: [{
|
|
3465
|
-
type: Input
|
|
3466
|
-
}], onKeyUp: [{
|
|
3467
|
-
type: HostListener,
|
|
3468
|
-
args: ['document:keyup', ['$event']]
|
|
3469
|
-
}] } });
|
|
3470
|
-
|
|
3471
|
-
// Use dropdownList template and combine stylesheets
|
|
3472
|
-
class NgvTypeaheadDropdownListComponent extends NgvDropdownListComponent {
|
|
3473
|
-
constructor(translocoScope, element) {
|
|
3474
|
-
super(translocoScope);
|
|
3475
|
-
this.translocoScope = translocoScope;
|
|
3476
|
-
this.element = element;
|
|
3477
|
-
this._destroy$ = new Subject();
|
|
3478
|
-
}
|
|
3479
|
-
ngOnInit() {
|
|
3480
|
-
this.handleSelectedValueChanges();
|
|
3481
|
-
this.handleFocusChanges();
|
|
3482
|
-
}
|
|
3483
|
-
ngOnDestroy() {
|
|
3484
|
-
this._destroy$.next(true);
|
|
3485
|
-
this._destroy$.complete();
|
|
3486
|
-
}
|
|
3487
|
-
/** @Internal Subscribe to click outside dropdownList and input to close dropdownList */
|
|
3488
|
-
subscribeToOutsideClickEvent() {
|
|
3489
|
-
this.onClickSubscription = fromEvent(document, 'click')
|
|
3490
|
-
.pipe(takeUntil$1(this._destroy$))
|
|
3491
|
-
.subscribe({
|
|
3492
|
-
next: (event) => {
|
|
3493
|
-
if (this.expanded &&
|
|
3494
|
-
!this.element.nativeElement.contains(event.target) &&
|
|
3495
|
-
!this.hostComponent.inputRef?.nativeElement.contains(event.target)) {
|
|
3496
|
-
this.setExpanded(false);
|
|
3497
|
-
this.onClickSubscription?.unsubscribe();
|
|
3498
|
-
}
|
|
3499
|
-
},
|
|
3500
|
-
});
|
|
3501
|
-
}
|
|
3502
|
-
/** @Internal Update state of the host-input to reflect the selected value */
|
|
3503
|
-
handleSelectedValueChanges() {
|
|
3504
|
-
this.selectedValueChanged
|
|
3505
|
-
.pipe(takeUntil$1(this._destroy$))
|
|
3506
|
-
.subscribe((selected) => {
|
|
3507
|
-
if (this.hostComponent.inputRef) {
|
|
3508
|
-
this.hostComponent.state = `${this.formatSelected(selected)}`;
|
|
3509
|
-
}
|
|
3510
|
-
});
|
|
3511
|
-
}
|
|
3512
|
-
/** @Internal Expand the dropdown when input receives focus. If no state, set empty string in input */
|
|
3513
|
-
handleFocusChanges() {
|
|
3514
|
-
this.hostComponent.ngvFocus
|
|
3515
|
-
.asObservable()
|
|
3516
|
-
.pipe(takeUntil$1(this._destroy$))
|
|
3517
|
-
.subscribe(() => {
|
|
3518
|
-
if (!this.state)
|
|
3519
|
-
this.hostComponent.ngvInput.emit('');
|
|
3520
|
-
this.setExpanded(true);
|
|
3521
|
-
this.subscribeToOutsideClickEvent();
|
|
3522
|
-
});
|
|
3523
|
-
}
|
|
3524
|
-
/**
|
|
3525
|
-
* @internal Formats the selected option to display in the input. Interpolate the returned value
|
|
3526
|
-
* since we don't know the return type or label type.
|
|
3527
|
-
* @param value The selected value
|
|
3528
|
-
* @returns The formatted value
|
|
3529
|
-
*/
|
|
3530
|
-
formatSelected(value) {
|
|
3531
|
-
if (value?.key == null)
|
|
3532
|
-
return '';
|
|
3533
|
-
//If no formatter exists, return the label or empty string
|
|
3534
|
-
if (!this.selectedFormatter)
|
|
3535
|
-
return value.label ?? '';
|
|
3536
|
-
// If a formatter exists, use it
|
|
3537
|
-
return this.selectedFormatter(value) ?? '';
|
|
3538
|
-
}
|
|
3539
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTypeaheadDropdownListComponent, deps: [{ token: TRANSLOCO_SCOPE, optional: true, skipSelf: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3540
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgvTypeaheadDropdownListComponent, selector: "ngv-typeahead-dropdown-list", inputs: { hostComponent: "hostComponent", resultFormatter: "resultFormatter", selectedFormatter: "selectedFormatter" }, usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t; read: scope\">\n <ul\n class=\"gds-dropdown__options card options gds-reset\"\n [class.gds-dropdown__options-expanded]=\"expanded\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.data-thook]=\"thook + '-options'\"\n [attr.aria-labelledby]=\"id + '-label'\"\n [attr.aria-activedescendant]=\"\n state ? id + '-option-' + state?.key : undefined\n \"\n >\n <ng-container *ngFor=\"let item of options\">\n <!-- OPTION -->\n <ng-container *ngIf=\"!isGroup(item)\">\n <ng-template\n *ngTemplateOutlet=\"listItemTemplate; context: { $implicit: item }\"\n ></ng-template>\n </ng-container>\n\n <!-- OPTION GROUP -->\n <li\n class=\"gds-dropdown__options__label group\"\n [attr.data-thook]=\"thook + '-option-group'\"\n *ngIf=\"isGroup(item)\"\n >\n <div class=\"sdv-list__label\">{{ t(item.label) }}</div>\n <ul [attr.aria-disabled]=\"item.disabled\">\n <ng-container *ngFor=\"let option of castGroup(item).options\">\n <ng-template\n *ngTemplateOutlet=\"\n listItemTemplate;\n context: { $implicit: option }\n \"\n ></ng-template>\n </ng-container>\n </ul>\n </li>\n </ng-container>\n </ul>\n\n <!-- TEMPLATE -->\n <ng-template #listItemTemplate let-option>\n <li\n #optionRefs\n *ngIf=\"!optionContentTpl\"\n tabindex=\"-1\"\n [id]=\"id + '-option-' + option.key\"\n class=\"gds-dropdown__options__label option\"\n role=\"option\"\n #liElem\n [attr.data-thook]=\"thook + '-option-' + option.key\"\n [attr.aria-disabled]=\"option.disabled\"\n [attr.aria-selected]=\"\n option.key === selectedValue?.key && !!selectedValue?.key\n \"\n [attr.aria-focus]=\"option.key === state?.key && !option.disabled\"\n [ngvTooltip]=\"isOverflow(liElem) ? t(option.label) : undefined\"\n (click)=\"updateState(option, $event)\"\n >\n <ng-template\n *ngTemplateOutlet=\"\n basicOptionContentTpl;\n context: { $implicit: option }\n \"\n >\n </ng-template>\n </li>\n <!-- Checking overflow on custom templates do not work skip adding ngvToolTip if custom template is provided -->\n <li\n #optionRefs\n *ngIf=\"!!optionContentTpl\"\n tabindex=\"-1\"\n [id]=\"id + '-option-' + option.key\"\n class=\"gds-dropdown__options__label option\"\n role=\"option\"\n #liElem\n [attr.data-thook]=\"thook + '-option-' + option.key\"\n [attr.aria-disabled]=\"option.disabled\"\n [attr.aria-selected]=\"\n option.key === selectedValue?.key && !!selectedValue?.key\n \"\n [attr.aria-focus]=\"option.key === state?.key && !option.disabled\"\n (click)=\"updateState(option, $event)\"\n >\n <ng-template\n *ngTemplateOutlet=\"optionContentTpl; context: { $implicit: option }\"\n >\n </ng-template>\n </li>\n </ng-template>\n\n <ng-template #basicOptionContentTpl let-option>\n <ngv-typeahead-highlight\n *ngIf=\"!!textToHighlight\"\n [textToHighlight]=\"textToHighlight\"\n [textContent]=\"t(option.label)\"\n >\n </ngv-typeahead-highlight>\n <ng-container *ngIf=\"!textToHighlight\">\n {{ t(option.label) }}\n </ng-container>\n </ng-template>\n</ng-container>\n", styles: [":host{display:flex;width:100%;position:relative}\n", ":host{position:absolute;bottom:0;transform:translateY(calc(100% + .5rem));--z-index: var(--sg-z-index-dropdown)}:host .hidden{visibility:hidden;display:none}:host ul[role=menu] [role=menuitem]{padding:.75rem;cursor:pointer}:host ul[role=menu] [role=menuitem]:hover,:host ul[role=menu] [role=menuitem]:focus-visible{background-color:var(--gds-ref-pallet-base200)}:host ul[role=menu] [role=menuitem]:active{background-color:var(--gds-ref-pallet-base300)}:host ul[role=menu] [role=menuitem]:focus{outline-color:#000;outline-offset:-.25rem}:host ul[role=listbox]{--z-index: var(--sg-z-index-popover);background-color:var(--sg-popover-background);flex-direction:column;justify-content:flex-end;inset:auto;z-index:var(--z-index);box-shadow:var(--sg-popover-box-shadow);color:var(--text-primary-color);padding:0;border:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--text-primary-color);--sg-border-color: var(--text-primary-color);border-radius:var(--sg-border-radius)}:host ul[role=listbox] [role=option]{padding:.75rem 1rem;line-height:1.25;cursor:pointer}:host ul[role=listbox] [role=option]:hover,:host ul[role=listbox] [role=option]:focus-visible{background-color:var(--grey-400)}:host ul[role=listbox] [role=option]:active{background-color:var(--grey-400)}:host ul[role=listbox] [role=option]:focus{outline-color:#000;outline-offset:-.25rem}:host ul[role=listbox] [role=option].active.sg-highlighted,:host ul[role=listbox] [role=option][aria-selected=true]{background:var(--grey-1000);color:#fff}:host .sg-fieldset-container{overflow-y:auto}:host .sg-fieldset-container fieldset[role=listbox][aria-multiselectable=true] [role=option]{display:flex;width:100%}:host .sg-fieldset-container fieldset[role=listbox][aria-multiselectable=true] [role=option].active.sg-highlighted input[type=checkbox]~i{border-color:#007ac7!important;box-shadow:0 0 .25em .0625em #41b0ee;outline-color:transparent;outline-style:solid}:host .gds-dropdown__options{padding-left:0;margin-bottom:0;margin-top:0;display:flex;flex-direction:column;list-style:none;display:none}:host .gds-dropdown__options>li{padding-bottom:.5rem;padding-top:.5rem;border:0;display:block;position:relative}:host .gds-dropdown__options>li:before{font-weight:500;display:inline-block;left:0;position:absolute;text-align:center}:host .gds-dropdown__options-expanded{display:block}:host .gds-dropdown__options__label:hover,:host .gds-dropdown__options__label:focus-visible{background-color:var(--grey-400)}:host .gds-dropdown__options__label:active{background-color:var(--grey-500)}:host .gds-dropdown__options__label:focus-visible{outline-color:#000;outline-offset:-.25rem}:host .gds-dropdown__options__label[aria-hidden=true]{display:none}:host .gds-dropdown__options__label[highlighted]{color:#fff}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3$1.NgvTooltipDirective, selector: "[ngvTooltip]", inputs: ["ngvTooltip", "thook", "placement", "shown", "offset", "resizeThrottle", "maxWidth"], outputs: ["ngvShow", "ngvHide"] }, { kind: "component", type: NgvTypeaheadHighlightComponent, selector: "ngv-typeahead-highlight", inputs: ["textContent", "textToHighlight"] }] }); }
|
|
3541
|
-
}
|
|
3542
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTypeaheadDropdownListComponent, decorators: [{
|
|
3543
|
-
type: Component,
|
|
3544
|
-
args: [{ selector: 'ngv-typeahead-dropdown-list', template: "<ng-container *transloco=\"let t; read: scope\">\n <ul\n class=\"gds-dropdown__options card options gds-reset\"\n [class.gds-dropdown__options-expanded]=\"expanded\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.data-thook]=\"thook + '-options'\"\n [attr.aria-labelledby]=\"id + '-label'\"\n [attr.aria-activedescendant]=\"\n state ? id + '-option-' + state?.key : undefined\n \"\n >\n <ng-container *ngFor=\"let item of options\">\n <!-- OPTION -->\n <ng-container *ngIf=\"!isGroup(item)\">\n <ng-template\n *ngTemplateOutlet=\"listItemTemplate; context: { $implicit: item }\"\n ></ng-template>\n </ng-container>\n\n <!-- OPTION GROUP -->\n <li\n class=\"gds-dropdown__options__label group\"\n [attr.data-thook]=\"thook + '-option-group'\"\n *ngIf=\"isGroup(item)\"\n >\n <div class=\"sdv-list__label\">{{ t(item.label) }}</div>\n <ul [attr.aria-disabled]=\"item.disabled\">\n <ng-container *ngFor=\"let option of castGroup(item).options\">\n <ng-template\n *ngTemplateOutlet=\"\n listItemTemplate;\n context: { $implicit: option }\n \"\n ></ng-template>\n </ng-container>\n </ul>\n </li>\n </ng-container>\n </ul>\n\n <!-- TEMPLATE -->\n <ng-template #listItemTemplate let-option>\n <li\n #optionRefs\n *ngIf=\"!optionContentTpl\"\n tabindex=\"-1\"\n [id]=\"id + '-option-' + option.key\"\n class=\"gds-dropdown__options__label option\"\n role=\"option\"\n #liElem\n [attr.data-thook]=\"thook + '-option-' + option.key\"\n [attr.aria-disabled]=\"option.disabled\"\n [attr.aria-selected]=\"\n option.key === selectedValue?.key && !!selectedValue?.key\n \"\n [attr.aria-focus]=\"option.key === state?.key && !option.disabled\"\n [ngvTooltip]=\"isOverflow(liElem) ? t(option.label) : undefined\"\n (click)=\"updateState(option, $event)\"\n >\n <ng-template\n *ngTemplateOutlet=\"\n basicOptionContentTpl;\n context: { $implicit: option }\n \"\n >\n </ng-template>\n </li>\n <!-- Checking overflow on custom templates do not work skip adding ngvToolTip if custom template is provided -->\n <li\n #optionRefs\n *ngIf=\"!!optionContentTpl\"\n tabindex=\"-1\"\n [id]=\"id + '-option-' + option.key\"\n class=\"gds-dropdown__options__label option\"\n role=\"option\"\n #liElem\n [attr.data-thook]=\"thook + '-option-' + option.key\"\n [attr.aria-disabled]=\"option.disabled\"\n [attr.aria-selected]=\"\n option.key === selectedValue?.key && !!selectedValue?.key\n \"\n [attr.aria-focus]=\"option.key === state?.key && !option.disabled\"\n (click)=\"updateState(option, $event)\"\n >\n <ng-template\n *ngTemplateOutlet=\"optionContentTpl; context: { $implicit: option }\"\n >\n </ng-template>\n </li>\n </ng-template>\n\n <ng-template #basicOptionContentTpl let-option>\n <ngv-typeahead-highlight\n *ngIf=\"!!textToHighlight\"\n [textToHighlight]=\"textToHighlight\"\n [textContent]=\"t(option.label)\"\n >\n </ngv-typeahead-highlight>\n <ng-container *ngIf=\"!textToHighlight\">\n {{ t(option.label) }}\n </ng-container>\n </ng-template>\n</ng-container>\n", styles: [":host{display:flex;width:100%;position:relative}\n", ":host{position:absolute;bottom:0;transform:translateY(calc(100% + .5rem));--z-index: var(--sg-z-index-dropdown)}:host .hidden{visibility:hidden;display:none}:host ul[role=menu] [role=menuitem]{padding:.75rem;cursor:pointer}:host ul[role=menu] [role=menuitem]:hover,:host ul[role=menu] [role=menuitem]:focus-visible{background-color:var(--gds-ref-pallet-base200)}:host ul[role=menu] [role=menuitem]:active{background-color:var(--gds-ref-pallet-base300)}:host ul[role=menu] [role=menuitem]:focus{outline-color:#000;outline-offset:-.25rem}:host ul[role=listbox]{--z-index: var(--sg-z-index-popover);background-color:var(--sg-popover-background);flex-direction:column;justify-content:flex-end;inset:auto;z-index:var(--z-index);box-shadow:var(--sg-popover-box-shadow);color:var(--text-primary-color);padding:0;border:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--text-primary-color);--sg-border-color: var(--text-primary-color);border-radius:var(--sg-border-radius)}:host ul[role=listbox] [role=option]{padding:.75rem 1rem;line-height:1.25;cursor:pointer}:host ul[role=listbox] [role=option]:hover,:host ul[role=listbox] [role=option]:focus-visible{background-color:var(--grey-400)}:host ul[role=listbox] [role=option]:active{background-color:var(--grey-400)}:host ul[role=listbox] [role=option]:focus{outline-color:#000;outline-offset:-.25rem}:host ul[role=listbox] [role=option].active.sg-highlighted,:host ul[role=listbox] [role=option][aria-selected=true]{background:var(--grey-1000);color:#fff}:host .sg-fieldset-container{overflow-y:auto}:host .sg-fieldset-container fieldset[role=listbox][aria-multiselectable=true] [role=option]{display:flex;width:100%}:host .sg-fieldset-container fieldset[role=listbox][aria-multiselectable=true] [role=option].active.sg-highlighted input[type=checkbox]~i{border-color:#007ac7!important;box-shadow:0 0 .25em .0625em #41b0ee;outline-color:transparent;outline-style:solid}:host .gds-dropdown__options{padding-left:0;margin-bottom:0;margin-top:0;display:flex;flex-direction:column;list-style:none;display:none}:host .gds-dropdown__options>li{padding-bottom:.5rem;padding-top:.5rem;border:0;display:block;position:relative}:host .gds-dropdown__options>li:before{font-weight:500;display:inline-block;left:0;position:absolute;text-align:center}:host .gds-dropdown__options-expanded{display:block}:host .gds-dropdown__options__label:hover,:host .gds-dropdown__options__label:focus-visible{background-color:var(--grey-400)}:host .gds-dropdown__options__label:active{background-color:var(--grey-500)}:host .gds-dropdown__options__label:focus-visible{outline-color:#000;outline-offset:-.25rem}:host .gds-dropdown__options__label[aria-hidden=true]{display:none}:host .gds-dropdown__options__label[highlighted]{color:#fff}\n"] }]
|
|
3545
|
-
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
3546
|
-
type: SkipSelf
|
|
3547
|
-
}, {
|
|
3548
|
-
type: Optional
|
|
3549
|
-
}, {
|
|
3550
|
-
type: Inject,
|
|
3551
|
-
args: [TRANSLOCO_SCOPE]
|
|
3552
|
-
}] }, { type: i0.ElementRef }]; }, propDecorators: { hostComponent: [{
|
|
3553
|
-
type: Input
|
|
3554
|
-
}], resultFormatter: [{
|
|
3555
|
-
type: Input
|
|
3556
|
-
}], selectedFormatter: [{
|
|
3557
|
-
type: Input
|
|
3558
|
-
}] } });
|
|
3559
|
-
|
|
3560
|
-
class NgvTypeaheadModule {
|
|
3561
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTypeaheadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
3562
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgvTypeaheadModule, declarations: [NgvTypeaheadHighlightComponent,
|
|
3563
|
-
NgvTypeaheadInputComponent,
|
|
3564
|
-
NgvTypeaheadDropdownListComponent], imports: [CommonModule, NgvTooltipModule$1], exports: [NgvTypeaheadHighlightComponent,
|
|
3565
|
-
NgvTypeaheadInputComponent,
|
|
3566
|
-
NgvTypeaheadDropdownListComponent] }); }
|
|
3567
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTypeaheadModule, imports: [CommonModule, NgvTooltipModule$1] }); }
|
|
3568
|
-
}
|
|
3569
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTypeaheadModule, decorators: [{
|
|
3570
|
-
type: NgModule,
|
|
3571
|
-
args: [{
|
|
3572
|
-
declarations: [
|
|
3573
|
-
NgvTypeaheadHighlightComponent,
|
|
3574
|
-
NgvTypeaheadInputComponent,
|
|
3575
|
-
NgvTypeaheadDropdownListComponent,
|
|
3576
|
-
],
|
|
3577
|
-
imports: [CommonModule, NgvTooltipModule$1],
|
|
3578
|
-
exports: [
|
|
3579
|
-
NgvTypeaheadHighlightComponent,
|
|
3580
|
-
NgvTypeaheadInputComponent,
|
|
3581
|
-
NgvTypeaheadDropdownListComponent,
|
|
3582
|
-
],
|
|
3583
|
-
}]
|
|
3584
|
-
}] });
|
|
3585
|
-
|
|
3586
|
-
class NgvDropdownModule {
|
|
3587
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvDropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
3588
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgvDropdownModule, declarations: [NgvDropdownComponent, NgvDropdownListComponent], imports: [CommonModule, NgvTypeaheadModule, NgvTooltipModule$1, NgvI18nModule$1], exports: [NgvDropdownComponent, NgvDropdownListComponent] }); }
|
|
3589
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvDropdownModule, imports: [CommonModule, NgvTypeaheadModule, NgvTooltipModule$1, NgvI18nModule$1] }); }
|
|
3590
|
-
}
|
|
3591
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvDropdownModule, decorators: [{
|
|
3592
|
-
type: NgModule,
|
|
3593
|
-
args: [{
|
|
3594
|
-
declarations: [NgvDropdownComponent, NgvDropdownListComponent],
|
|
3595
|
-
imports: [CommonModule, NgvTypeaheadModule, NgvTooltipModule$1, NgvI18nModule$1],
|
|
3596
|
-
exports: [NgvDropdownComponent, NgvDropdownListComponent],
|
|
3597
|
-
}]
|
|
3598
|
-
}] });
|
|
3599
|
-
|
|
3600
|
-
var button_cancel = "Cancel";
|
|
3601
|
-
var button_apply = "Apply";
|
|
3602
|
-
var button_save = "Save";
|
|
3603
|
-
var text_dialogue = "You can supply the content seen here either through the <code>[content]=\"string\"</code> property or</br>by passing children between the opening and closing tags <code><c-dialog> ...children </c-dialog></code>";
|
|
3604
|
-
var defaultLang = {
|
|
3605
|
-
"error.fieldinputmask": "Invalid value pattern",
|
|
3606
|
-
"error.fieldrequired": "Field must have content",
|
|
3607
|
-
"error.fieldmaxlength": "Field content should not be longer than {{requiredLength}} characters",
|
|
3608
|
-
"label.defaultlabel": "Label",
|
|
3609
|
-
"label.maxlength": "characters left",
|
|
3610
|
-
"label.optional": "Optional",
|
|
3611
|
-
button_cancel: button_cancel,
|
|
3612
|
-
button_apply: button_apply,
|
|
3613
|
-
button_save: button_save,
|
|
3614
|
-
text_dialogue: text_dialogue
|
|
3615
|
-
};
|
|
3616
|
-
|
|
3617
|
-
class NgvMissingHandler {
|
|
3618
|
-
constructor(transpiler) {
|
|
3619
|
-
this.transpiler = transpiler;
|
|
3620
|
-
}
|
|
3621
|
-
handle(key, _, params) {
|
|
3622
|
-
const keyWithoutLocale = key.charAt(2) === '.' ? key.substring(3) : key;
|
|
3623
|
-
const withoutScope = keyWithoutLocale.replace(/^((?:\w+)(?<!label|heading|button|alt|link|title|href|fieldhelp|error|text|image|list)(?:\.))/, '');
|
|
3624
|
-
const transpiledKey = this.transpiler.transpile(defaultLang[keyWithoutLocale], params, {}, keyWithoutLocale);
|
|
3625
|
-
return transpiledKey || withoutScope;
|
|
3626
|
-
}
|
|
3627
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvMissingHandler, deps: [{ token: TRANSLOCO_TRANSPILER }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3628
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvMissingHandler }); }
|
|
3629
|
-
}
|
|
3630
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvMissingHandler, decorators: [{
|
|
3631
|
-
type: Injectable
|
|
3632
|
-
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
3633
|
-
type: Inject,
|
|
3634
|
-
args: [TRANSLOCO_TRANSPILER]
|
|
3635
|
-
}] }]; } });
|
|
3636
|
-
const en = {
|
|
3637
|
-
'error.fieldinputmask': 'Invalid value pattern',
|
|
3638
|
-
'error.fieldrequired': 'Field must have content',
|
|
3639
|
-
'error.fieldmaxlength': 'Field content should not be longer than {{requiredLength}} characters',
|
|
3640
|
-
'label.defaultlabel': 'Label',
|
|
3641
|
-
'label.maxlength': 'characters left',
|
|
3642
|
-
'label.optional': 'Optional',
|
|
3643
|
-
};
|
|
3644
|
-
const sv = {
|
|
3645
|
-
'error.fieldinputmask': 'Icke giltigt tecken mönster',
|
|
3646
|
-
'error.fieldrequired': 'Fältet får inte lämnas tomt',
|
|
3647
|
-
'error.fieldmaxlength': 'Fältinnehållet måste vara längre än {{requiredLength}} tecken',
|
|
3648
|
-
'label.maxlength': 'tecken kvar',
|
|
3649
|
-
};
|
|
3650
|
-
class TranslocoInlineLoader {
|
|
3651
|
-
getTranslation(lang) {
|
|
3652
|
-
if (lang === 'sv') {
|
|
3653
|
-
return lastValueFrom(of(sv).pipe(delay(1500)));
|
|
3654
|
-
}
|
|
3655
|
-
return lastValueFrom(of(en).pipe(delay(500)));
|
|
3656
|
-
}
|
|
3657
|
-
}
|
|
3658
|
-
class NgvI18nModule {
|
|
3659
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvI18nModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
3660
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgvI18nModule, exports: [TranslocoModule] }); }
|
|
3661
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvI18nModule, providers: [
|
|
3662
|
-
provideTransloco({
|
|
3663
|
-
config: {
|
|
3664
|
-
availableLangs: ['en', 'sv'],
|
|
3665
|
-
defaultLang: 'en',
|
|
3666
|
-
// Remove this option if your application doesn't support changing language in runtime.
|
|
3667
|
-
reRenderOnLangChange: true,
|
|
3668
|
-
prodMode: !isDevMode(),
|
|
3669
|
-
},
|
|
3670
|
-
loader: TranslocoInlineLoader,
|
|
3671
|
-
}),
|
|
3672
|
-
provideTranslocoMissingHandler(NgvMissingHandler),
|
|
3673
|
-
], imports: [TranslocoModule] }); }
|
|
3674
|
-
}
|
|
3675
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvI18nModule, decorators: [{
|
|
3676
|
-
type: NgModule,
|
|
3677
|
-
args: [{
|
|
3678
|
-
providers: [
|
|
3679
|
-
provideTransloco({
|
|
3680
|
-
config: {
|
|
3681
|
-
availableLangs: ['en', 'sv'],
|
|
3682
|
-
defaultLang: 'en',
|
|
3683
|
-
// Remove this option if your application doesn't support changing language in runtime.
|
|
3684
|
-
reRenderOnLangChange: true,
|
|
3685
|
-
prodMode: !isDevMode(),
|
|
3686
|
-
},
|
|
3687
|
-
loader: TranslocoInlineLoader,
|
|
3688
|
-
}),
|
|
3689
|
-
provideTranslocoMissingHandler(NgvMissingHandler),
|
|
3690
|
-
],
|
|
3691
|
-
exports: [TranslocoModule],
|
|
3692
|
-
}]
|
|
3693
|
-
}] });
|
|
3694
|
-
|
|
3695
|
-
class TranslocoMockPipe {
|
|
3696
|
-
constructor() {
|
|
3697
|
-
this.transform = (value) => value;
|
|
3698
|
-
}
|
|
3699
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TranslocoMockPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
3700
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: TranslocoMockPipe, name: "transloco" }); }
|
|
3701
|
-
}
|
|
3702
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TranslocoMockPipe, decorators: [{
|
|
3703
|
-
type: Pipe,
|
|
3704
|
-
args: [{ name: 'transloco' }]
|
|
3705
|
-
}] });
|
|
3706
|
-
class TranslocoMockTranspiler {
|
|
3707
|
-
constructor() {
|
|
3708
|
-
this.transpile = (..._args) => '';
|
|
3709
|
-
}
|
|
3710
|
-
}
|
|
3711
|
-
class TranslocoMockMissingHandler {
|
|
3712
|
-
constructor() {
|
|
3713
|
-
this.handle = (key, _, _params) => key;
|
|
3714
|
-
}
|
|
3715
|
-
}
|
|
3716
|
-
class TranslocoMockStrategy {
|
|
3717
|
-
constructor() {
|
|
3718
|
-
this.getNextLangs = (_failedLang) => '';
|
|
3719
|
-
}
|
|
3720
|
-
}
|
|
3721
|
-
class TranslocoMockInterceptor {
|
|
3722
|
-
preSaveTranslation(translation, _lang) {
|
|
3723
|
-
return translation;
|
|
3724
|
-
}
|
|
3725
|
-
preSaveTranslationKey(_key, value, _lang) {
|
|
3726
|
-
return value;
|
|
3727
|
-
}
|
|
3728
|
-
}
|
|
3729
|
-
class NgvI18nTestModule {
|
|
3730
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvI18nTestModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
3731
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgvI18nTestModule, declarations: [TranslocoMockPipe], imports: [CommonModule], exports: [TranslocoMockPipe] }); }
|
|
3732
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvI18nTestModule, providers: [
|
|
3733
|
-
{
|
|
3734
|
-
provide: TRANSLOCO_TRANSPILER,
|
|
3735
|
-
useClass: TranslocoMockTranspiler,
|
|
3736
|
-
},
|
|
3737
|
-
{
|
|
3738
|
-
provide: TRANSLOCO_INTERCEPTOR,
|
|
3739
|
-
useClass: TranslocoMockInterceptor,
|
|
3740
|
-
},
|
|
3741
|
-
{
|
|
3742
|
-
provide: TRANSLOCO_FALLBACK_STRATEGY,
|
|
3743
|
-
useClass: TranslocoMockStrategy,
|
|
3744
|
-
},
|
|
3745
|
-
{
|
|
3746
|
-
provide: TRANSLOCO_MISSING_HANDLER,
|
|
3747
|
-
useClass: TranslocoMockMissingHandler,
|
|
3748
|
-
deps: [TRANSLOCO_TRANSPILER],
|
|
3749
|
-
},
|
|
3750
|
-
], imports: [CommonModule] }); }
|
|
3751
|
-
}
|
|
3752
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvI18nTestModule, decorators: [{
|
|
3753
|
-
type: NgModule,
|
|
3754
|
-
args: [{
|
|
3755
|
-
imports: [CommonModule],
|
|
3756
|
-
declarations: [TranslocoMockPipe],
|
|
3757
|
-
exports: [TranslocoMockPipe],
|
|
3758
|
-
providers: [
|
|
3759
|
-
{
|
|
3760
|
-
provide: TRANSLOCO_TRANSPILER,
|
|
3761
|
-
useClass: TranslocoMockTranspiler,
|
|
3762
|
-
},
|
|
3763
|
-
{
|
|
3764
|
-
provide: TRANSLOCO_INTERCEPTOR,
|
|
3765
|
-
useClass: TranslocoMockInterceptor,
|
|
3766
|
-
},
|
|
3767
|
-
{
|
|
3768
|
-
provide: TRANSLOCO_FALLBACK_STRATEGY,
|
|
3769
|
-
useClass: TranslocoMockStrategy,
|
|
3770
|
-
},
|
|
3771
|
-
{
|
|
3772
|
-
provide: TRANSLOCO_MISSING_HANDLER,
|
|
3773
|
-
useClass: TranslocoMockMissingHandler,
|
|
3774
|
-
deps: [TRANSLOCO_TRANSPILER],
|
|
3775
|
-
},
|
|
3776
|
-
],
|
|
3777
|
-
}]
|
|
3778
|
-
}] });
|
|
3779
|
-
|
|
3780
|
-
/**
|
|
3781
|
-
* A button that will present an explanation to a problem/question.
|
|
3782
|
-
* https://designlibrary.sebgroup.com/components/component-contextual-help-button
|
|
3783
|
-
*/
|
|
3784
|
-
class NgvInfoCircleComponent {
|
|
3785
|
-
constructor() {
|
|
3786
|
-
/** Special property used for selecting DOM elements during automated UI testing. */
|
|
3787
|
-
this.thook = 'info';
|
|
3788
|
-
}
|
|
3789
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvInfoCircleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3790
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgvInfoCircleComponent, selector: "ngv-info-circle", inputs: { thook: "thook", info: "info" }, host: { properties: { "attr.data-thook": "this.thook" } }, ngImport: i0, template: "<svg [ngvTooltip]=\"info\">\n <path\n d=\"M10.75 11H12L12 16.25M21.25 12C21.25 17.1086 17.1086 21.25 12 21.25C6.89137 21.25 2.75 17.1086 2.75 12C2.75 6.89137 6.89137 2.75 12 2.75C17.1086 2.75 21.25 6.89137 21.25 12Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n fill=\"none\"\n />\n <path\n d=\"M11.375 8C11.375 8.34518 11.6548 8.625 12 8.625C12.3452 8.625 12.625 8.34518 12.625 8C12.625 7.65482 12.3452 7.375 12 7.375C11.6548 7.375 11.375 7.65482 11.375 8Z\"\n fill=\"currentColor\"\n stroke=\"currentColor\"\n stroke-width=\"0.25\"\n />\n</svg>\n", styles: [":host{display:block}svg{display:block;width:1.5rem;height:1.5rem}.gds-tooltip{background-color:#1a1a1a;color:#fff;font-size:.875rem;font-weight:400;line-height:1.5;padding:.5rem;pointer-events:none}.gds-tooltip__arrow-top{position:absolute;width:0;height:0;border:.5rem solid transparent;bottom:-1rem;left:50%;transform:translate(-50%);border-color:#1a1a1a transparent transparent}.gds-tooltip__arrow-bottom{position:absolute;width:0;height:0;border:.5rem solid transparent;top:-1rem;left:50%;transform:translate(-50%);border-color:transparent transparent #1a1a1a}.gds-tooltip__arrow-left{position:absolute;width:0;height:0;border:.5rem solid transparent;right:-1rem;top:50%;transform:translateY(-50%);border-color:transparent transparent transparent #1a1a1a}.gds-tooltip__arrow-right{position:absolute;width:0;height:0;border:.5rem solid transparent;left:-1rem;top:50%;transform:translateY(-50%);border-color:transparent #1a1a1a transparent transparent}\n"], dependencies: [{ kind: "directive", type: i3$1.NgvTooltipDirective, selector: "[ngvTooltip]", inputs: ["ngvTooltip", "thook", "placement", "shown", "offset", "resizeThrottle", "maxWidth"], outputs: ["ngvShow", "ngvHide"] }] }); }
|
|
3791
|
-
}
|
|
3792
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvInfoCircleComponent, decorators: [{
|
|
3793
|
-
type: Component,
|
|
3794
|
-
args: [{ selector: 'ngv-info-circle', template: "<svg [ngvTooltip]=\"info\">\n <path\n d=\"M10.75 11H12L12 16.25M21.25 12C21.25 17.1086 17.1086 21.25 12 21.25C6.89137 21.25 2.75 17.1086 2.75 12C2.75 6.89137 6.89137 2.75 12 2.75C17.1086 2.75 21.25 6.89137 21.25 12Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n fill=\"none\"\n />\n <path\n d=\"M11.375 8C11.375 8.34518 11.6548 8.625 12 8.625C12.3452 8.625 12.625 8.34518 12.625 8C12.625 7.65482 12.3452 7.375 12 7.375C11.6548 7.375 11.375 7.65482 11.375 8Z\"\n fill=\"currentColor\"\n stroke=\"currentColor\"\n stroke-width=\"0.25\"\n />\n</svg>\n", styles: [":host{display:block}svg{display:block;width:1.5rem;height:1.5rem}.gds-tooltip{background-color:#1a1a1a;color:#fff;font-size:.875rem;font-weight:400;line-height:1.5;padding:.5rem;pointer-events:none}.gds-tooltip__arrow-top{position:absolute;width:0;height:0;border:.5rem solid transparent;bottom:-1rem;left:50%;transform:translate(-50%);border-color:#1a1a1a transparent transparent}.gds-tooltip__arrow-bottom{position:absolute;width:0;height:0;border:.5rem solid transparent;top:-1rem;left:50%;transform:translate(-50%);border-color:transparent transparent #1a1a1a}.gds-tooltip__arrow-left{position:absolute;width:0;height:0;border:.5rem solid transparent;right:-1rem;top:50%;transform:translateY(-50%);border-color:transparent transparent transparent #1a1a1a}.gds-tooltip__arrow-right{position:absolute;width:0;height:0;border:.5rem solid transparent;left:-1rem;top:50%;transform:translateY(-50%);border-color:transparent #1a1a1a transparent transparent}\n"] }]
|
|
3795
|
-
}], propDecorators: { thook: [{
|
|
3796
|
-
type: HostBinding,
|
|
3797
|
-
args: ['attr.data-thook']
|
|
3798
|
-
}, {
|
|
3799
|
-
type: Input
|
|
3800
|
-
}], info: [{
|
|
3801
|
-
type: Input
|
|
3802
|
-
}] } });
|
|
3803
|
-
|
|
3804
|
-
class NgvInfoCircleModule {
|
|
3805
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvInfoCircleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
3806
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgvInfoCircleModule, declarations: [NgvInfoCircleComponent], imports: [CommonModule, NggCoreWrapperModule$1, NgvTooltipModule$1], exports: [NgvInfoCircleComponent] }); }
|
|
3807
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvInfoCircleModule, imports: [CommonModule, NggCoreWrapperModule$1, NgvTooltipModule$1] }); }
|
|
3808
|
-
}
|
|
3809
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvInfoCircleModule, decorators: [{
|
|
3810
|
-
type: NgModule,
|
|
3811
|
-
args: [{
|
|
3812
|
-
declarations: [NgvInfoCircleComponent],
|
|
3813
|
-
imports: [CommonModule, NggCoreWrapperModule$1, NgvTooltipModule$1],
|
|
3814
|
-
exports: [NgvInfoCircleComponent],
|
|
3815
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
3816
|
-
}]
|
|
3817
|
-
}] });
|
|
3818
|
-
|
|
3819
|
-
/**
|
|
3820
|
-
* Input fields allow users to add and edit text.
|
|
3821
|
-
* https://designlibrary.sebgroup.com/components/component-input
|
|
3822
|
-
*/
|
|
3823
|
-
class NgvInputComponent extends NgvBaseControlValueAccessorComponent$1 {
|
|
3824
|
-
/** Minimum length (number of characters) of value. */
|
|
3825
|
-
set minLength(length) {
|
|
3826
|
-
this._minlength = length;
|
|
3827
|
-
}
|
|
3828
|
-
/**
|
|
3829
|
-
* Minimum length (number of characters) of value.
|
|
3830
|
-
* @deprecated minlength triggers angular-template-validation. Use @Input() minLength instead.
|
|
3831
|
-
*/
|
|
3832
|
-
set minlength(length) {
|
|
3833
|
-
this._minlength = length;
|
|
3834
|
-
}
|
|
3835
|
-
get minlength() {
|
|
3836
|
-
return this._minlength;
|
|
3837
|
-
}
|
|
3838
|
-
/** Maximum length (number of characters) of value. */
|
|
3839
|
-
set maxLength(length) {
|
|
3840
|
-
this._maxlength = length;
|
|
3841
|
-
this.writeValue(this.state);
|
|
3842
|
-
}
|
|
3843
|
-
get maxlength() {
|
|
3844
|
-
return this._maxlength;
|
|
3845
|
-
}
|
|
3846
|
-
/**
|
|
3847
|
-
* Maximum length (number of characters) of value.
|
|
3848
|
-
* @deprecated maxlength triggers angular-template-validation. Use @Input() maxLength instead.
|
|
3849
|
-
*/
|
|
3850
|
-
set maxlength(length) {
|
|
3851
|
-
this._maxlength = length;
|
|
3852
|
-
this.writeValue(this.state);
|
|
3853
|
-
}
|
|
3854
|
-
set showCharacterCountdown(option) {
|
|
3855
|
-
this._showCharacterCountDown = option;
|
|
3856
|
-
}
|
|
3857
|
-
get showCharacterCountdown() {
|
|
3858
|
-
return this._showCharacterCountDown && this.hasMaxLength;
|
|
3859
|
-
}
|
|
3860
|
-
set inputMask(newInputMask) {
|
|
3861
|
-
// Hide input field
|
|
3862
|
-
this.hideInput$.next(true);
|
|
3863
|
-
this.cdr.detectChanges();
|
|
3864
|
-
this._inputMask = newInputMask;
|
|
3865
|
-
// Show input field to reload input-mask settings upon update
|
|
3866
|
-
setTimeout(() => {
|
|
3867
|
-
this.hideInput$.next(false);
|
|
3868
|
-
this.cdr.detectChanges();
|
|
3869
|
-
}, 200);
|
|
3870
|
-
}
|
|
3871
|
-
get inputMask() {
|
|
3872
|
-
return this._inputMask;
|
|
3873
|
-
}
|
|
3874
|
-
get control() {
|
|
3875
|
-
return this.ngControl?.control ?? this._formControl;
|
|
3876
|
-
}
|
|
3877
|
-
/** Returns if maxlength is used */
|
|
3878
|
-
get hasMaxLength() {
|
|
3879
|
-
return !!this.maxlength && this.maxlength !== Number.MAX_SAFE_INTEGER;
|
|
3880
|
-
}
|
|
3881
|
-
constructor(ngControl, translocoScope, cdr) {
|
|
3882
|
-
super(ngControl, translocoScope, cdr);
|
|
3883
|
-
this.ngControl = ngControl;
|
|
3884
|
-
this.translocoScope = translocoScope;
|
|
3885
|
-
this.cdr = cdr;
|
|
3886
|
-
/** Adding .gds-form-item as a class to host element */
|
|
3887
|
-
this.class = 'gds-form-item';
|
|
3888
|
-
/** Special property used for selecting DOM elements during automated UI testing. */
|
|
3889
|
-
this.thook = 'input';
|
|
3890
|
-
/** Type of input field. Should avoid types that modify field too much such as range. */
|
|
3891
|
-
this.type = 'text';
|
|
3892
|
-
/** If set to "on", hint for form autofill feature. */
|
|
3893
|
-
this.autocomplete = 'on';
|
|
3894
|
-
/** If set to true, the value will not be editable. */
|
|
3895
|
-
this.readonly = false;
|
|
3896
|
-
/** If set to true, enables the Angular template-driven email validator. */
|
|
3897
|
-
this.email = false;
|
|
3898
|
-
/** Minimum value required for numeric input types. */
|
|
3899
|
-
this.min = 0;
|
|
3900
|
-
/** Maximum value required for numeric input types. */
|
|
3901
|
-
this.max = Number.MAX_SAFE_INTEGER;
|
|
3902
|
-
/** Incremental values that are valid for numeric input types. */
|
|
3903
|
-
this.step = 1;
|
|
3904
|
-
this._maxlength = Number.MAX_SAFE_INTEGER;
|
|
3905
|
-
this._minlength = 0;
|
|
3906
|
-
/** Wether to show label that tells how many characters are still left to be entered. Will only be set if maxLength is also set */
|
|
3907
|
-
this._showCharacterCountDown = true;
|
|
3908
|
-
/** Pattern the value must match to be valid. */
|
|
3909
|
-
this.pattern = '';
|
|
3910
|
-
/** Amount of time to wait until emitting (ngvINput) event */
|
|
3911
|
-
this.debounceTime = 500;
|
|
3912
|
-
/**
|
|
3913
|
-
* @deprecated
|
|
3914
|
-
* Text to put in badge
|
|
3915
|
-
*/
|
|
3916
|
-
this.badgeText = '';
|
|
3917
|
-
/** Emits every time the value of the inner input field changes, independantly of updates on the formcontroller */
|
|
3918
|
-
this.ngvInput = new EventEmitter();
|
|
3919
|
-
this._formControl = new UntypedFormControl();
|
|
3920
|
-
/** Toggler for showing or hiding the input field */
|
|
3921
|
-
this.hideInput$ = new Subject();
|
|
3922
|
-
this.inputChange$ = new Subject();
|
|
3923
|
-
this._destroy$ = new Subject();
|
|
3924
|
-
}
|
|
3925
|
-
ngOnInit() {
|
|
3926
|
-
super.ngOnInit();
|
|
3927
|
-
this.inputChange$
|
|
3928
|
-
.pipe(takeUntil(this._destroy$), debounceTime(this.debounceTime))
|
|
3929
|
-
.subscribe((inputValue) => {
|
|
3930
|
-
this.ngvInput.emit(inputValue);
|
|
3931
|
-
});
|
|
3932
|
-
}
|
|
3933
|
-
ngOnDestroy() {
|
|
3934
|
-
this._destroy$.next(true);
|
|
3935
|
-
this._destroy$.complete();
|
|
3936
|
-
}
|
|
3937
|
-
writeValue(value) {
|
|
3938
|
-
// maxLength will only work with string values
|
|
3939
|
-
if (value?.length && value.length > this.maxlength) {
|
|
3940
|
-
// cut value to match max length
|
|
3941
|
-
this.state = this.cutTextAfterMaxLength(value);
|
|
3942
|
-
if (value.length !== this.state.length) {
|
|
3943
|
-
this.onChange(this.state);
|
|
3944
|
-
}
|
|
3945
|
-
// emit value
|
|
3946
|
-
}
|
|
3947
|
-
else {
|
|
3948
|
-
// update state
|
|
3949
|
-
this.state = value;
|
|
3950
|
-
}
|
|
3951
|
-
this.cdr.detectChanges();
|
|
3952
|
-
}
|
|
3953
|
-
cutTextAfterMaxLength(value) {
|
|
3954
|
-
if (typeof value === 'string') {
|
|
3955
|
-
return value.substring(0, this.maxlength);
|
|
3956
|
-
}
|
|
3957
|
-
return value;
|
|
3958
|
-
}
|
|
3959
|
-
/** @internal */
|
|
3960
|
-
onInput(event) {
|
|
3961
|
-
event.stopPropagation();
|
|
3962
|
-
if (this.disabled)
|
|
3963
|
-
return;
|
|
3964
|
-
this.state = event.target.value;
|
|
3965
|
-
this.onChange(this.state);
|
|
3966
|
-
this.inputChange$.next(this.state);
|
|
3967
|
-
}
|
|
3968
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvInputComponent, deps: [{ token: i1$3.NgControl, optional: true, self: true }, { token: TRANSLOCO_SCOPE, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3969
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgvInputComponent, selector: "ngv-input", inputs: { thook: "thook", type: "type", placeholder: "placeholder", autocomplete: "autocomplete", readonly: "readonly", email: "email", min: "min", max: "max", step: "step", minLength: "minLength", minlength: "minlength", maxLength: "maxLength", maxlength: "maxlength", showCharacterCountdown: "showCharacterCountdown", pattern: "pattern", debounceTime: "debounceTime", badgeText: "badgeText", inputMask: "inputMask" }, outputs: { ngvInput: "ngvInput" }, host: { properties: { "class": "this.class", "attr.data-thook": "this.thook" } }, usesInheritance: true, ngImport: i0, template: "<!-- LABEL -->\n<label\n [id]=\"id + '-label'\"\n class=\"sdv-field-label hide-if-empty\"\n [attr.for]=\"id + '-input'\"\n *transloco=\"let t; read: scope\"\n>\n <ng-template\n *ngTemplateOutlet=\"labelContentTpl || basicLabelContentTpl\"\n ></ng-template>\n <ng-template #basicLabelContentTpl>\n <!-- to trigger css:empty if no label was added -->\n <ng-container *ngIf=\"label\">\n {{ label }}\n <span\n *ngIf=\"optional === true || (required !== true && optional !== false)\"\n class=\"sdv-field-label--optional\"\n >\n ({{ t('label.optional') }})\n </span>\n </ng-container>\n </ng-template>\n</label>\n\n<!-- DESCRIPTION -->\n<div class=\"form-info description hide-if-empty\">\n {{ description }}\n</div>\n\n<!-- LOCKED INPUT -->\n<ng-container *ngIf=\"locked\">\n <div\n [id]=\"id + '-input'\"\n class=\"ngv-field--locked\"\n [attr.name]=\"name\"\n [attr.value]=\"state\"\n [attr.role]=\"role\"\n >\n <span *ngIf=\"!state\" class=\"unset-state\">-</span>\n <ng-container *ngIf=\"state\">\n <ng-container *ngIf=\"!inputMask\">\n {{ state }}\n </ng-container>\n <ng-container *ngIf=\"!!inputMask\">\n {{ state | ngvInputMaskFormat: inputMask }}\n </ng-container>\n </ng-container>\n </div>\n</ng-container>\n\n<!-- INPUT WRAPPER -->\n<ng-container *ngIf=\"!locked\">\n <div class=\"gds-input-wrapper\" [class.ngv-field--error]=\"invalid\">\n <div class=\"input-group-prefix hide-if-empty\">\n <ng-content select=\"[slot='prefix']\"></ng-content>\n </div>\n\n <!-- INPUT FIELD -->\n <div class=\"input-group\" *ngIf=\"!inputMask\">\n <input\n #input\n [id]=\"id + '-input'\"\n class=\"sdv-field\"\n [attr.type]=\"type\"\n [attr.name]=\"name\"\n [attr.required]=\"required\"\n [attr.email]=\"email\"\n [attr.aria-describedby]=\"id + '-message'\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [attr.maxlength]=\"maxlength\"\n [attr.minlength]=\"minlength\"\n [pattern]=\"pattern\"\n [disabled]=\"disabled\"\n [autocomplete]=\"autocomplete\"\n [autofocus]=\"autofocus\"\n [readOnly]=\"readonly\"\n [attr.role]=\"role\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"description\"\n [value]=\"state\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n />\n </div>\n\n <!-- INPUT FIELD WITH MASK -->\n <div\n class=\"input-group\"\n *ngIf=\"!!inputMask && (hideInput$ | async) === false\"\n >\n <input\n #input\n [id]=\"id + '-input'\"\n class=\"sdv-field\"\n autocomplete=\"off\"\n [attr.name]=\"name\"\n [attr.required]=\"required\"\n [readOnly]=\"readonly\"\n [attr.role]=\"role\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"description\"\n [attr.aria-describedby]=\"id + '-message'\"\n [ngvInputMask]=\"inputMask\"\n [formControl]=\"control\"\n />\n </div>\n\n <div class=\"input-group-suffix hide-if-empty\">\n <ng-content select=\"[slot='suffix']\"></ng-content>\n <ng-content></ng-content>\n </div>\n </div>\n\n <!-- ERRORS -->\n <div\n class=\"gds-form-item__footer error-wrapper\"\n *transloco=\"let t; read: scope\"\n >\n <span\n class=\"form-info form-info--error\"\n [attr.id]=\"id + '-message'\"\n *ngIf=\"invalid && (error || ngControl?.invalid)\"\n >\n <span *ngIf=\"error; else errorsRef\">{{ error }}</span>\n <ng-template #errorsRef>\n <span *ngIf=\"firstError as error\">\n {{ t('error.field' + error?.code, error?.params) }}\n </span>\n </ng-template>\n </span>\n\n <ng-container *ngIf=\"!inputMask && hasMaxLength && showCharacterCountdown\">\n <span\n *ngvCharacterCountdown=\"\n maxlength;\n currentLength: (inputRef?.nativeElement?.value ?? '').length;\n charactersLeft as charactersLeft\n \"\n class=\"form-info\"\n style=\"text-align: right\"\n >\n {{ charactersLeft }} {{ t('label.maxlength') }}\n </span>\n </ng-container>\n </div>\n</ng-container>\n", styles: [":host.gds-form-item{display:flex;flex-direction:column;max-width:100%;position:relative;width:100%;z-index:0}:host.gds-form-item:not(:last-child){margin-bottom:1.5rem}:host.gds-form-item .gds-form-item__header{display:flex}:host.gds-form-item .gds-form-item__header .form-info{font-weight:400}:host.gds-form-item .gds-form-item__header button.icon.small{margin-top:-.5rem;margin-right:-.5rem}:host.gds-form-item .gds-form-item__labels{flex:1;margin-bottom:.5rem}:host.gds-form-item .gds-form-item__labels .form-info{margin-bottom:0}:host.gds-form-item .gds-form-item__labels .form-info a:link:not(.button,[aria-disabled]){color:#0062bc}:host.gds-form-item .gds-form-item__labels>*{width:100%;display:block}:host.gds-form-item .gds-form-item__expandable-info{overflow:hidden;font-size:.875rem;line-height:1.25rem;transition:height .3s cubic-bezier(.23,1,.32,1)}:host.gds-form-item .gds-form-item__expandable-info>div{padding-bottom:.5rem}:host.gds-form-item .gds-form-item__backdrop{position:absolute;inset:0;background:var(--gds-ref-pallet-base100);border-radius:2px;z-index:-1;margin:-1rem;opacity:0;transition:all .3s cubic-bezier(.23,1,.32,1);border:1px solid transparent}@media (prefers-reduced-motion: reduce){:host.gds-form-item .gds-form-item__backdrop{transition:none}}:host.gds-form-item:has([aria-expanded=true]) .gds-form-item__backdrop{opacity:1;border-radius:.25rem;border-color:var(--gds-ref-pallet-base600)}:host.gds-form-item .gds-form-item__footer:not(:empty){margin-top:.5rem;display:flex;column-gap:1rem}:host.gds-form-item .gds-form-item__footer:not(:empty)>span{font-weight:500}:host .hide-if-empty:empty{display:none}:host input:not([type]),:host input[type=date],:host input[type=datetime],:host input[type=datetime-local],:host input[type=email],:host input[type=month],:host input[type=number],:host input[type=password],:host input[type=search],:host input[type=tel],:host input[type=text],:host input[type=time],:host input[type=url],:host input[type=week]{padding:.75rem 1rem;border-radius:var(--sg-border-radius);border:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--sg-border-color);background-color:var(--sg-form-control-bg);color:var(--sg-text-primary);min-height:2.75rem;display:flex;align-items:center;justify-content:center}:host input:not([type]):focus:not(:focus-visible),:host input[type=date]:focus:not(:focus-visible),:host input[type=datetime]:focus:not(:focus-visible),:host input[type=datetime-local]:focus:not(:focus-visible),:host input[type=email]:focus:not(:focus-visible),:host input[type=month]:focus:not(:focus-visible),:host input[type=number]:focus:not(:focus-visible),:host input[type=password]:focus:not(:focus-visible),:host input[type=search]:focus:not(:focus-visible),:host input[type=tel]:focus:not(:focus-visible),:host input[type=text]:focus:not(:focus-visible),:host input[type=time]:focus:not(:focus-visible),:host input[type=url]:focus:not(:focus-visible),:host input[type=week]:focus:not(:focus-visible){box-shadow:none;outline:0}:host input:not([type]):focus,:host input:not([type]):focus-visible,:host input[type=date]:focus,:host input[type=date]:focus-visible,:host input[type=datetime]:focus,:host input[type=datetime]:focus-visible,:host input[type=datetime-local]:focus,:host input[type=datetime-local]:focus-visible,:host input[type=email]:focus,:host input[type=email]:focus-visible,:host input[type=month]:focus,:host input[type=month]:focus-visible,:host input[type=number]:focus,:host input[type=number]:focus-visible,:host input[type=password]:focus,:host input[type=password]:focus-visible,:host input[type=search]:focus,:host input[type=search]:focus-visible,:host input[type=tel]:focus,:host input[type=tel]:focus-visible,:host input[type=text]:focus,:host input[type=text]:focus-visible,:host input[type=time]:focus,:host input[type=time]:focus-visible,:host input[type=url]:focus,:host input[type=url]:focus-visible,:host input[type=week]:focus,:host input[type=week]:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host input:not([type]).small,:host input[type=date].small,:host input[type=datetime].small,:host input[type=datetime-local].small,:host input[type=email].small,:host input[type=month].small,:host input[type=number].small,:host input[type=password].small,:host input[type=search].small,:host input[type=tel].small,:host input[type=text].small,:host input[type=time].small,:host input[type=url].small,:host input[type=week].small{min-height:2rem;padding:.25rem .75rem;line-height:1rem}@media screen and (-ms-high-contrast: active){:host input:not([type]),:host input[type=date],:host input[type=datetime],:host input[type=datetime-local],:host input[type=email],:host input[type=month],:host input[type=number],:host input[type=password],:host input[type=search],:host input[type=tel],:host input[type=text],:host input[type=time],:host input[type=url],:host input[type=week]{border:2px solid currentcolor}}:host input:not([type]):disabled,:host input:not([type]).disabled,:host input:not([type])[aria-disabled=true],:host input[type=date]:disabled,:host input[type=date].disabled,:host input[type=date][aria-disabled=true],:host input[type=datetime]:disabled,:host input[type=datetime].disabled,:host input[type=datetime][aria-disabled=true],:host input[type=datetime-local]:disabled,:host input[type=datetime-local].disabled,:host input[type=datetime-local][aria-disabled=true],:host input[type=email]:disabled,:host input[type=email].disabled,:host input[type=email][aria-disabled=true],:host input[type=month]:disabled,:host input[type=month].disabled,:host input[type=month][aria-disabled=true],:host input[type=number]:disabled,:host input[type=number].disabled,:host input[type=number][aria-disabled=true],:host input[type=password]:disabled,:host input[type=password].disabled,:host input[type=password][aria-disabled=true],:host input[type=search]:disabled,:host input[type=search].disabled,:host input[type=search][aria-disabled=true],:host input[type=tel]:disabled,:host input[type=tel].disabled,:host input[type=tel][aria-disabled=true],:host input[type=text]:disabled,:host input[type=text].disabled,:host input[type=text][aria-disabled=true],:host input[type=time]:disabled,:host input[type=time].disabled,:host input[type=time][aria-disabled=true],:host input[type=url]:disabled,:host input[type=url].disabled,:host input[type=url][aria-disabled=true],:host input[type=week]:disabled,:host input[type=week].disabled,:host input[type=week][aria-disabled=true]{background:var(--sg-form-control-bg-disabled)!important;color:var(--text-disabled-color)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed}:host input:not([type]):disabled::placeholder,:host input:not([type]).disabled::placeholder,:host input:not([type])[aria-disabled=true]::placeholder,:host input[type=date]:disabled::placeholder,:host input[type=date].disabled::placeholder,:host input[type=date][aria-disabled=true]::placeholder,:host input[type=datetime]:disabled::placeholder,:host input[type=datetime].disabled::placeholder,:host input[type=datetime][aria-disabled=true]::placeholder,:host input[type=datetime-local]:disabled::placeholder,:host input[type=datetime-local].disabled::placeholder,:host input[type=datetime-local][aria-disabled=true]::placeholder,:host input[type=email]:disabled::placeholder,:host input[type=email].disabled::placeholder,:host input[type=email][aria-disabled=true]::placeholder,:host input[type=month]:disabled::placeholder,:host input[type=month].disabled::placeholder,:host input[type=month][aria-disabled=true]::placeholder,:host input[type=number]:disabled::placeholder,:host input[type=number].disabled::placeholder,:host input[type=number][aria-disabled=true]::placeholder,:host input[type=password]:disabled::placeholder,:host input[type=password].disabled::placeholder,:host input[type=password][aria-disabled=true]::placeholder,:host input[type=search]:disabled::placeholder,:host input[type=search].disabled::placeholder,:host input[type=search][aria-disabled=true]::placeholder,:host input[type=tel]:disabled::placeholder,:host input[type=tel].disabled::placeholder,:host input[type=tel][aria-disabled=true]::placeholder,:host input[type=text]:disabled::placeholder,:host input[type=text].disabled::placeholder,:host input[type=text][aria-disabled=true]::placeholder,:host input[type=time]:disabled::placeholder,:host input[type=time].disabled::placeholder,:host input[type=time][aria-disabled=true]::placeholder,:host input[type=url]:disabled::placeholder,:host input[type=url].disabled::placeholder,:host input[type=url][aria-disabled=true]::placeholder,:host input[type=week]:disabled::placeholder,:host input[type=week].disabled::placeholder,:host input[type=week][aria-disabled=true]::placeholder{color:var(--text-disabled-color)}:host input:not([type]):hover,:host input[type=date]:hover,:host input[type=datetime]:hover,:host input[type=datetime-local]:hover,:host input[type=email]:hover,:host input[type=month]:hover,:host input[type=number]:hover,:host input[type=password]:hover,:host input[type=search]:hover,:host input[type=tel]:hover,:host input[type=text]:hover,:host input[type=time]:hover,:host input[type=url]:hover,:host input[type=week]:hover{background-color:var(--gds-ref-pallet-base100)}:host input[type=number]{-moz-appearance:textfield}:host input[type=number]::-webkit-outer-spin-button,:host input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}:host input{width:100%}:host .gds-input-wrapper{display:flex;flex-direction:column;position:relative;transition:all .2s ease-in-out,outline-offset 0s,outline-width 0s}:host .gds-input-wrapper:before{background:transparent;border-radius:0 0 4px 4px;clip-path:inset(4px 0 0 0);content:\"\";display:block;height:4px;position:absolute;transition:.3s ease-in-out;width:100%}:host .gds-input-wrapper:before{bottom:0}.is-invalid :host .gds-input-wrapper{color:var(--intent-danger-background);opacity:1}.is-invalid :host .gds-input-wrapper:before{background:var(--intent-danger-background);clip-path:inset(1px 0 0 0)}:host label:is(label),:host .label:is(label),:host legend:is(label){margin-bottom:0}:host label.form-control,:host .label.form-control,:host legend.form-control{width:-moz-fit-content;width:fit-content}@supports (-moz-appearance: none){:host label.form-control:focus:not(:focus-visible),:host .label.form-control:focus:not(:focus-visible),:host legend.form-control:focus:not(:focus-visible){box-shadow:none;outline:0}:host label.form-control:focus,:host label.form-control:focus-within,:host .label.form-control:focus,:host .label.form-control:focus-within,:host legend.form-control:focus,:host legend.form-control:focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}}:host label:not(.form-control),:host .label:not(.form-control),:host legend:not(.form-control){font-weight:500;width:100%;line-height:1.25rem}:host label+input,:host label+textarea,fieldset :host label+div,:host label+button,:host label+.group-stepper,:host label+.stepper-wrapper,:host label+.group,:host .label+input,:host .label+textarea,fieldset :host .label+div,:host .label+button,:host .label+.group-stepper,:host .label+.stepper-wrapper,:host .label+.group,:host legend+input,:host legend+textarea,fieldset :host legend+div,:host legend+button,:host legend+.group-stepper,:host legend+.stepper-wrapper,:host legend+.group{margin-top:.5rem}:host label+.form-info,:host .label+.form-info,:host legend+.form-info{margin-bottom:.5rem}:host .form-info{font-size:.875rem;line-height:1.25rem;width:100%}:host .gds-form-item__footer .form-info{font-weight:500}:host .gds-form-item__footer .form-info--error{color:var(--intent-danger-background, #9f000a)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "directive", type: i4.NgvInputMaskDirective, selector: "[ngvInputMask]", inputs: ["ngvInputMask"] }, { 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: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.InputMaskFormatPipe, name: "ngvInputMaskFormat" }] }); }
|
|
3970
|
-
}
|
|
3971
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvInputComponent, decorators: [{
|
|
3972
|
-
type: Component,
|
|
3973
|
-
args: [{ selector: 'ngv-input', template: "<!-- LABEL -->\n<label\n [id]=\"id + '-label'\"\n class=\"sdv-field-label hide-if-empty\"\n [attr.for]=\"id + '-input'\"\n *transloco=\"let t; read: scope\"\n>\n <ng-template\n *ngTemplateOutlet=\"labelContentTpl || basicLabelContentTpl\"\n ></ng-template>\n <ng-template #basicLabelContentTpl>\n <!-- to trigger css:empty if no label was added -->\n <ng-container *ngIf=\"label\">\n {{ label }}\n <span\n *ngIf=\"optional === true || (required !== true && optional !== false)\"\n class=\"sdv-field-label--optional\"\n >\n ({{ t('label.optional') }})\n </span>\n </ng-container>\n </ng-template>\n</label>\n\n<!-- DESCRIPTION -->\n<div class=\"form-info description hide-if-empty\">\n {{ description }}\n</div>\n\n<!-- LOCKED INPUT -->\n<ng-container *ngIf=\"locked\">\n <div\n [id]=\"id + '-input'\"\n class=\"ngv-field--locked\"\n [attr.name]=\"name\"\n [attr.value]=\"state\"\n [attr.role]=\"role\"\n >\n <span *ngIf=\"!state\" class=\"unset-state\">-</span>\n <ng-container *ngIf=\"state\">\n <ng-container *ngIf=\"!inputMask\">\n {{ state }}\n </ng-container>\n <ng-container *ngIf=\"!!inputMask\">\n {{ state | ngvInputMaskFormat: inputMask }}\n </ng-container>\n </ng-container>\n </div>\n</ng-container>\n\n<!-- INPUT WRAPPER -->\n<ng-container *ngIf=\"!locked\">\n <div class=\"gds-input-wrapper\" [class.ngv-field--error]=\"invalid\">\n <div class=\"input-group-prefix hide-if-empty\">\n <ng-content select=\"[slot='prefix']\"></ng-content>\n </div>\n\n <!-- INPUT FIELD -->\n <div class=\"input-group\" *ngIf=\"!inputMask\">\n <input\n #input\n [id]=\"id + '-input'\"\n class=\"sdv-field\"\n [attr.type]=\"type\"\n [attr.name]=\"name\"\n [attr.required]=\"required\"\n [attr.email]=\"email\"\n [attr.aria-describedby]=\"id + '-message'\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [attr.maxlength]=\"maxlength\"\n [attr.minlength]=\"minlength\"\n [pattern]=\"pattern\"\n [disabled]=\"disabled\"\n [autocomplete]=\"autocomplete\"\n [autofocus]=\"autofocus\"\n [readOnly]=\"readonly\"\n [attr.role]=\"role\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"description\"\n [value]=\"state\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n />\n </div>\n\n <!-- INPUT FIELD WITH MASK -->\n <div\n class=\"input-group\"\n *ngIf=\"!!inputMask && (hideInput$ | async) === false\"\n >\n <input\n #input\n [id]=\"id + '-input'\"\n class=\"sdv-field\"\n autocomplete=\"off\"\n [attr.name]=\"name\"\n [attr.required]=\"required\"\n [readOnly]=\"readonly\"\n [attr.role]=\"role\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"description\"\n [attr.aria-describedby]=\"id + '-message'\"\n [ngvInputMask]=\"inputMask\"\n [formControl]=\"control\"\n />\n </div>\n\n <div class=\"input-group-suffix hide-if-empty\">\n <ng-content select=\"[slot='suffix']\"></ng-content>\n <ng-content></ng-content>\n </div>\n </div>\n\n <!-- ERRORS -->\n <div\n class=\"gds-form-item__footer error-wrapper\"\n *transloco=\"let t; read: scope\"\n >\n <span\n class=\"form-info form-info--error\"\n [attr.id]=\"id + '-message'\"\n *ngIf=\"invalid && (error || ngControl?.invalid)\"\n >\n <span *ngIf=\"error; else errorsRef\">{{ error }}</span>\n <ng-template #errorsRef>\n <span *ngIf=\"firstError as error\">\n {{ t('error.field' + error?.code, error?.params) }}\n </span>\n </ng-template>\n </span>\n\n <ng-container *ngIf=\"!inputMask && hasMaxLength && showCharacterCountdown\">\n <span\n *ngvCharacterCountdown=\"\n maxlength;\n currentLength: (inputRef?.nativeElement?.value ?? '').length;\n charactersLeft as charactersLeft\n \"\n class=\"form-info\"\n style=\"text-align: right\"\n >\n {{ charactersLeft }} {{ t('label.maxlength') }}\n </span>\n </ng-container>\n </div>\n</ng-container>\n", styles: [":host.gds-form-item{display:flex;flex-direction:column;max-width:100%;position:relative;width:100%;z-index:0}:host.gds-form-item:not(:last-child){margin-bottom:1.5rem}:host.gds-form-item .gds-form-item__header{display:flex}:host.gds-form-item .gds-form-item__header .form-info{font-weight:400}:host.gds-form-item .gds-form-item__header button.icon.small{margin-top:-.5rem;margin-right:-.5rem}:host.gds-form-item .gds-form-item__labels{flex:1;margin-bottom:.5rem}:host.gds-form-item .gds-form-item__labels .form-info{margin-bottom:0}:host.gds-form-item .gds-form-item__labels .form-info a:link:not(.button,[aria-disabled]){color:#0062bc}:host.gds-form-item .gds-form-item__labels>*{width:100%;display:block}:host.gds-form-item .gds-form-item__expandable-info{overflow:hidden;font-size:.875rem;line-height:1.25rem;transition:height .3s cubic-bezier(.23,1,.32,1)}:host.gds-form-item .gds-form-item__expandable-info>div{padding-bottom:.5rem}:host.gds-form-item .gds-form-item__backdrop{position:absolute;inset:0;background:var(--gds-ref-pallet-base100);border-radius:2px;z-index:-1;margin:-1rem;opacity:0;transition:all .3s cubic-bezier(.23,1,.32,1);border:1px solid transparent}@media (prefers-reduced-motion: reduce){:host.gds-form-item .gds-form-item__backdrop{transition:none}}:host.gds-form-item:has([aria-expanded=true]) .gds-form-item__backdrop{opacity:1;border-radius:.25rem;border-color:var(--gds-ref-pallet-base600)}:host.gds-form-item .gds-form-item__footer:not(:empty){margin-top:.5rem;display:flex;column-gap:1rem}:host.gds-form-item .gds-form-item__footer:not(:empty)>span{font-weight:500}:host .hide-if-empty:empty{display:none}:host input:not([type]),:host input[type=date],:host input[type=datetime],:host input[type=datetime-local],:host input[type=email],:host input[type=month],:host input[type=number],:host input[type=password],:host input[type=search],:host input[type=tel],:host input[type=text],:host input[type=time],:host input[type=url],:host input[type=week]{padding:.75rem 1rem;border-radius:var(--sg-border-radius);border:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--sg-border-color);background-color:var(--sg-form-control-bg);color:var(--sg-text-primary);min-height:2.75rem;display:flex;align-items:center;justify-content:center}:host input:not([type]):focus:not(:focus-visible),:host input[type=date]:focus:not(:focus-visible),:host input[type=datetime]:focus:not(:focus-visible),:host input[type=datetime-local]:focus:not(:focus-visible),:host input[type=email]:focus:not(:focus-visible),:host input[type=month]:focus:not(:focus-visible),:host input[type=number]:focus:not(:focus-visible),:host input[type=password]:focus:not(:focus-visible),:host input[type=search]:focus:not(:focus-visible),:host input[type=tel]:focus:not(:focus-visible),:host input[type=text]:focus:not(:focus-visible),:host input[type=time]:focus:not(:focus-visible),:host input[type=url]:focus:not(:focus-visible),:host input[type=week]:focus:not(:focus-visible){box-shadow:none;outline:0}:host input:not([type]):focus,:host input:not([type]):focus-visible,:host input[type=date]:focus,:host input[type=date]:focus-visible,:host input[type=datetime]:focus,:host input[type=datetime]:focus-visible,:host input[type=datetime-local]:focus,:host input[type=datetime-local]:focus-visible,:host input[type=email]:focus,:host input[type=email]:focus-visible,:host input[type=month]:focus,:host input[type=month]:focus-visible,:host input[type=number]:focus,:host input[type=number]:focus-visible,:host input[type=password]:focus,:host input[type=password]:focus-visible,:host input[type=search]:focus,:host input[type=search]:focus-visible,:host input[type=tel]:focus,:host input[type=tel]:focus-visible,:host input[type=text]:focus,:host input[type=text]:focus-visible,:host input[type=time]:focus,:host input[type=time]:focus-visible,:host input[type=url]:focus,:host input[type=url]:focus-visible,:host input[type=week]:focus,:host input[type=week]:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host input:not([type]).small,:host input[type=date].small,:host input[type=datetime].small,:host input[type=datetime-local].small,:host input[type=email].small,:host input[type=month].small,:host input[type=number].small,:host input[type=password].small,:host input[type=search].small,:host input[type=tel].small,:host input[type=text].small,:host input[type=time].small,:host input[type=url].small,:host input[type=week].small{min-height:2rem;padding:.25rem .75rem;line-height:1rem}@media screen and (-ms-high-contrast: active){:host input:not([type]),:host input[type=date],:host input[type=datetime],:host input[type=datetime-local],:host input[type=email],:host input[type=month],:host input[type=number],:host input[type=password],:host input[type=search],:host input[type=tel],:host input[type=text],:host input[type=time],:host input[type=url],:host input[type=week]{border:2px solid currentcolor}}:host input:not([type]):disabled,:host input:not([type]).disabled,:host input:not([type])[aria-disabled=true],:host input[type=date]:disabled,:host input[type=date].disabled,:host input[type=date][aria-disabled=true],:host input[type=datetime]:disabled,:host input[type=datetime].disabled,:host input[type=datetime][aria-disabled=true],:host input[type=datetime-local]:disabled,:host input[type=datetime-local].disabled,:host input[type=datetime-local][aria-disabled=true],:host input[type=email]:disabled,:host input[type=email].disabled,:host input[type=email][aria-disabled=true],:host input[type=month]:disabled,:host input[type=month].disabled,:host input[type=month][aria-disabled=true],:host input[type=number]:disabled,:host input[type=number].disabled,:host input[type=number][aria-disabled=true],:host input[type=password]:disabled,:host input[type=password].disabled,:host input[type=password][aria-disabled=true],:host input[type=search]:disabled,:host input[type=search].disabled,:host input[type=search][aria-disabled=true],:host input[type=tel]:disabled,:host input[type=tel].disabled,:host input[type=tel][aria-disabled=true],:host input[type=text]:disabled,:host input[type=text].disabled,:host input[type=text][aria-disabled=true],:host input[type=time]:disabled,:host input[type=time].disabled,:host input[type=time][aria-disabled=true],:host input[type=url]:disabled,:host input[type=url].disabled,:host input[type=url][aria-disabled=true],:host input[type=week]:disabled,:host input[type=week].disabled,:host input[type=week][aria-disabled=true]{background:var(--sg-form-control-bg-disabled)!important;color:var(--text-disabled-color)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed}:host input:not([type]):disabled::placeholder,:host input:not([type]).disabled::placeholder,:host input:not([type])[aria-disabled=true]::placeholder,:host input[type=date]:disabled::placeholder,:host input[type=date].disabled::placeholder,:host input[type=date][aria-disabled=true]::placeholder,:host input[type=datetime]:disabled::placeholder,:host input[type=datetime].disabled::placeholder,:host input[type=datetime][aria-disabled=true]::placeholder,:host input[type=datetime-local]:disabled::placeholder,:host input[type=datetime-local].disabled::placeholder,:host input[type=datetime-local][aria-disabled=true]::placeholder,:host input[type=email]:disabled::placeholder,:host input[type=email].disabled::placeholder,:host input[type=email][aria-disabled=true]::placeholder,:host input[type=month]:disabled::placeholder,:host input[type=month].disabled::placeholder,:host input[type=month][aria-disabled=true]::placeholder,:host input[type=number]:disabled::placeholder,:host input[type=number].disabled::placeholder,:host input[type=number][aria-disabled=true]::placeholder,:host input[type=password]:disabled::placeholder,:host input[type=password].disabled::placeholder,:host input[type=password][aria-disabled=true]::placeholder,:host input[type=search]:disabled::placeholder,:host input[type=search].disabled::placeholder,:host input[type=search][aria-disabled=true]::placeholder,:host input[type=tel]:disabled::placeholder,:host input[type=tel].disabled::placeholder,:host input[type=tel][aria-disabled=true]::placeholder,:host input[type=text]:disabled::placeholder,:host input[type=text].disabled::placeholder,:host input[type=text][aria-disabled=true]::placeholder,:host input[type=time]:disabled::placeholder,:host input[type=time].disabled::placeholder,:host input[type=time][aria-disabled=true]::placeholder,:host input[type=url]:disabled::placeholder,:host input[type=url].disabled::placeholder,:host input[type=url][aria-disabled=true]::placeholder,:host input[type=week]:disabled::placeholder,:host input[type=week].disabled::placeholder,:host input[type=week][aria-disabled=true]::placeholder{color:var(--text-disabled-color)}:host input:not([type]):hover,:host input[type=date]:hover,:host input[type=datetime]:hover,:host input[type=datetime-local]:hover,:host input[type=email]:hover,:host input[type=month]:hover,:host input[type=number]:hover,:host input[type=password]:hover,:host input[type=search]:hover,:host input[type=tel]:hover,:host input[type=text]:hover,:host input[type=time]:hover,:host input[type=url]:hover,:host input[type=week]:hover{background-color:var(--gds-ref-pallet-base100)}:host input[type=number]{-moz-appearance:textfield}:host input[type=number]::-webkit-outer-spin-button,:host input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}:host input{width:100%}:host .gds-input-wrapper{display:flex;flex-direction:column;position:relative;transition:all .2s ease-in-out,outline-offset 0s,outline-width 0s}:host .gds-input-wrapper:before{background:transparent;border-radius:0 0 4px 4px;clip-path:inset(4px 0 0 0);content:\"\";display:block;height:4px;position:absolute;transition:.3s ease-in-out;width:100%}:host .gds-input-wrapper:before{bottom:0}.is-invalid :host .gds-input-wrapper{color:var(--intent-danger-background);opacity:1}.is-invalid :host .gds-input-wrapper:before{background:var(--intent-danger-background);clip-path:inset(1px 0 0 0)}:host label:is(label),:host .label:is(label),:host legend:is(label){margin-bottom:0}:host label.form-control,:host .label.form-control,:host legend.form-control{width:-moz-fit-content;width:fit-content}@supports (-moz-appearance: none){:host label.form-control:focus:not(:focus-visible),:host .label.form-control:focus:not(:focus-visible),:host legend.form-control:focus:not(:focus-visible){box-shadow:none;outline:0}:host label.form-control:focus,:host label.form-control:focus-within,:host .label.form-control:focus,:host .label.form-control:focus-within,:host legend.form-control:focus,:host legend.form-control:focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}}:host label:not(.form-control),:host .label:not(.form-control),:host legend:not(.form-control){font-weight:500;width:100%;line-height:1.25rem}:host label+input,:host label+textarea,fieldset :host label+div,:host label+button,:host label+.group-stepper,:host label+.stepper-wrapper,:host label+.group,:host .label+input,:host .label+textarea,fieldset :host .label+div,:host .label+button,:host .label+.group-stepper,:host .label+.stepper-wrapper,:host .label+.group,:host legend+input,:host legend+textarea,fieldset :host legend+div,:host legend+button,:host legend+.group-stepper,:host legend+.stepper-wrapper,:host legend+.group{margin-top:.5rem}:host label+.form-info,:host .label+.form-info,:host legend+.form-info{margin-bottom:.5rem}:host .form-info{font-size:.875rem;line-height:1.25rem;width:100%}:host .gds-form-item__footer .form-info{font-weight:500}:host .gds-form-item__footer .form-info--error{color:var(--intent-danger-background, #9f000a)}\n"] }]
|
|
3974
|
-
}], ctorParameters: function () { return [{ type: i1$3.NgControl, decorators: [{
|
|
3975
|
-
type: Self
|
|
3976
|
-
}, {
|
|
3977
|
-
type: Optional
|
|
3978
|
-
}] }, { type: undefined, decorators: [{
|
|
3979
|
-
type: Optional
|
|
3980
|
-
}, {
|
|
3981
|
-
type: Inject,
|
|
3982
|
-
args: [TRANSLOCO_SCOPE]
|
|
3983
|
-
}] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { class: [{
|
|
3984
|
-
type: HostBinding,
|
|
3985
|
-
args: ['class']
|
|
3986
|
-
}], thook: [{
|
|
3987
|
-
type: HostBinding,
|
|
3988
|
-
args: ['attr.data-thook']
|
|
3989
|
-
}, {
|
|
3990
|
-
type: Input
|
|
3991
|
-
}], type: [{
|
|
3992
|
-
type: Input
|
|
3993
|
-
}], placeholder: [{
|
|
3994
|
-
type: Input
|
|
3995
|
-
}], autocomplete: [{
|
|
3996
|
-
type: Input
|
|
3997
|
-
}], readonly: [{
|
|
3998
|
-
type: Input
|
|
3999
|
-
}], email: [{
|
|
4000
|
-
type: Input
|
|
4001
|
-
}], min: [{
|
|
4002
|
-
type: Input
|
|
4003
|
-
}], max: [{
|
|
4004
|
-
type: Input
|
|
4005
|
-
}], step: [{
|
|
4006
|
-
type: Input
|
|
4007
|
-
}], minLength: [{
|
|
4008
|
-
type: Input
|
|
4009
|
-
}], minlength: [{
|
|
4010
|
-
type: Input
|
|
4011
|
-
}], maxLength: [{
|
|
4012
|
-
type: Input
|
|
4013
|
-
}], maxlength: [{
|
|
4014
|
-
type: Input
|
|
4015
|
-
}], showCharacterCountdown: [{
|
|
4016
|
-
type: Input
|
|
4017
|
-
}], pattern: [{
|
|
4018
|
-
type: Input
|
|
4019
|
-
}], debounceTime: [{
|
|
4020
|
-
type: Input
|
|
4021
|
-
}], badgeText: [{
|
|
4022
|
-
type: Input
|
|
4023
|
-
}], inputMask: [{
|
|
4024
|
-
type: Input
|
|
4025
|
-
}], ngvInput: [{
|
|
4026
|
-
type: Output
|
|
4027
|
-
}] } });
|
|
4028
|
-
|
|
4029
|
-
class NgvInputModule {
|
|
4030
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
4031
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgvInputModule, declarations: [NgvInputComponent], imports: [CommonModule,
|
|
4032
|
-
NgvI18nModule$1,
|
|
4033
|
-
NgvInputMaskModule$1,
|
|
4034
|
-
ReactiveFormsModule], exports: [NgvInputComponent] }); }
|
|
4035
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvInputModule, imports: [CommonModule,
|
|
4036
|
-
NgvI18nModule$1,
|
|
4037
|
-
NgvInputMaskModule$1,
|
|
4038
|
-
ReactiveFormsModule] }); }
|
|
4039
|
-
}
|
|
4040
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvInputModule, decorators: [{
|
|
4041
|
-
type: NgModule,
|
|
4042
|
-
args: [{
|
|
4043
|
-
declarations: [NgvInputComponent],
|
|
4044
|
-
imports: [
|
|
4045
|
-
CommonModule,
|
|
4046
|
-
NgvI18nModule$1,
|
|
4047
|
-
NgvInputMaskModule$1,
|
|
4048
|
-
ReactiveFormsModule,
|
|
4049
|
-
],
|
|
4050
|
-
exports: [NgvInputComponent],
|
|
4051
|
-
}]
|
|
4052
|
-
}] });
|
|
4053
|
-
|
|
4054
|
-
const InputmaskStatic = _Inputmask.default || _Inputmask;
|
|
4055
|
-
class InputMaskFormatPipe {
|
|
4056
|
-
transform(value, options) {
|
|
4057
|
-
if (!value)
|
|
4058
|
-
return value;
|
|
4059
|
-
return InputmaskStatic.format(value, options);
|
|
4060
|
-
}
|
|
4061
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InputMaskFormatPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
4062
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: InputMaskFormatPipe, name: "ngvInputMaskFormat" }); }
|
|
4063
|
-
}
|
|
4064
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InputMaskFormatPipe, decorators: [{
|
|
4065
|
-
type: Pipe,
|
|
4066
|
-
args: [{
|
|
4067
|
-
name: 'ngvInputMaskFormat',
|
|
4068
|
-
}]
|
|
4069
|
-
}] });
|
|
4070
|
-
|
|
4071
|
-
class InputMaskConfig {
|
|
4072
|
-
constructor() {
|
|
4073
|
-
this.isAsync = false;
|
|
4074
|
-
this.inputSelector = 'input';
|
|
4075
|
-
}
|
|
4076
|
-
}
|
|
4077
|
-
const INPUT_MASK_CONFIG = new InjectionToken('InputMaskConfig');
|
|
4078
|
-
|
|
4079
|
-
const InputmaskConstructor = _Inputmask.default ||
|
|
4080
|
-
_Inputmask;
|
|
4081
|
-
class NgvInputMaskDirective {
|
|
4082
|
-
constructor(ngControl, config, platformId, elementRef, renderer, ngZone) {
|
|
4083
|
-
this.ngControl = ngControl;
|
|
4084
|
-
this.platformId = platformId;
|
|
4085
|
-
this.elementRef = elementRef;
|
|
4086
|
-
this.renderer = renderer;
|
|
4087
|
-
this.ngZone = ngZone;
|
|
4088
|
-
/** Input settings of directive */
|
|
4089
|
-
this.ngvInputMask = {};
|
|
4090
|
-
this.defaultInputMaskConfig = new InputMaskConfig();
|
|
4091
|
-
this.onInput = (_) => {
|
|
4092
|
-
// Empty method
|
|
4093
|
-
};
|
|
4094
|
-
this.onTouched = (_) => {
|
|
4095
|
-
// Empty method
|
|
4096
|
-
};
|
|
4097
|
-
this.validate = (control) => !control.value || !this.inputMaskPlugin || this.inputMaskPlugin.isValid()
|
|
4098
|
-
? null
|
|
4099
|
-
: { invalidformat: true };
|
|
4100
|
-
if (this.ngControl) {
|
|
4101
|
-
this.ngControl.valueAccessor = this;
|
|
4102
|
-
}
|
|
4103
|
-
this.setNativeInputElement(config);
|
|
4104
|
-
}
|
|
4105
|
-
onKeyUp(event) {
|
|
4106
|
-
// Trigger "onInput" when pressing delete or backspace, when input is focused
|
|
4107
|
-
if (['Delete', 'Backspace'].includes(event.key)) {
|
|
4108
|
-
this.elementRef.nativeElement.dispatchEvent(new Event('input', {
|
|
4109
|
-
bubbles: true,
|
|
4110
|
-
cancelable: true,
|
|
4111
|
-
}));
|
|
4112
|
-
}
|
|
4113
|
-
}
|
|
4114
|
-
ngOnInit() {
|
|
4115
|
-
if (this.control) {
|
|
4116
|
-
this.control.setValidators(this.control.validator
|
|
4117
|
-
? [this.control.validator, this.validate]
|
|
4118
|
-
: [this.validate]);
|
|
4119
|
-
this.control.updateValueAndValidity();
|
|
4120
|
-
}
|
|
4121
|
-
}
|
|
4122
|
-
ngOnDestroy() {
|
|
4123
|
-
this.inputMaskPlugin?.remove();
|
|
4124
|
-
this.mutationObserver?.disconnect();
|
|
4125
|
-
}
|
|
4126
|
-
initInputMask() {
|
|
4127
|
-
if (isPlatformServer(this.platformId) ||
|
|
4128
|
-
!this.nativeInputElement ||
|
|
4129
|
-
!Object.keys(this.ngvInputMask).length) {
|
|
4130
|
-
return;
|
|
4131
|
-
}
|
|
4132
|
-
this.inputMaskPlugin = this.ngZone.runOutsideAngular(() => new InputmaskConstructor(this.inputMaskOptions).mask(this.nativeInputElement));
|
|
4133
|
-
if (this.control) {
|
|
4134
|
-
setTimeout(() => {
|
|
4135
|
-
this.control.updateValueAndValidity();
|
|
4136
|
-
});
|
|
4137
|
-
}
|
|
4138
|
-
}
|
|
4139
|
-
ngAfterViewInit() {
|
|
4140
|
-
this.initInputMask();
|
|
4141
|
-
}
|
|
4142
|
-
get inputMaskOptions() {
|
|
4143
|
-
const { parser, ...options } = this.ngvInputMask;
|
|
4144
|
-
return options;
|
|
4145
|
-
}
|
|
4146
|
-
writeValue(value) {
|
|
4147
|
-
if (this.nativeInputElement) {
|
|
4148
|
-
this.renderer.setProperty(this.nativeInputElement, 'value', value ?? '');
|
|
4149
|
-
}
|
|
4150
|
-
}
|
|
4151
|
-
registerOnChange(fn) {
|
|
4152
|
-
// Use injected parser from settings to modify value
|
|
4153
|
-
// of users desire
|
|
4154
|
-
this.onInput = (value) => {
|
|
4155
|
-
const parser = this.ngvInputMask?.parser;
|
|
4156
|
-
const newValue = parser && value ? parser(value) : value;
|
|
4157
|
-
fn(newValue);
|
|
4158
|
-
};
|
|
4159
|
-
}
|
|
4160
|
-
registerOnTouched(fn) {
|
|
4161
|
-
this.onTouched = fn;
|
|
4162
|
-
}
|
|
4163
|
-
setDisabledState(disabled) {
|
|
4164
|
-
if (this.nativeInputElement) {
|
|
4165
|
-
this.renderer.setProperty(this.nativeInputElement, 'disabled', disabled);
|
|
4166
|
-
}
|
|
4167
|
-
}
|
|
4168
|
-
get control() {
|
|
4169
|
-
return this.ngControl?.control;
|
|
4170
|
-
}
|
|
4171
|
-
setNativeInputElement(config) {
|
|
4172
|
-
if (this.elementRef.nativeElement.tagName === 'INPUT') {
|
|
4173
|
-
this.nativeInputElement = this.elementRef.nativeElement;
|
|
4174
|
-
}
|
|
4175
|
-
else {
|
|
4176
|
-
this.defaultInputMaskConfig = {
|
|
4177
|
-
...this.defaultInputMaskConfig,
|
|
4178
|
-
...config,
|
|
4179
|
-
};
|
|
4180
|
-
if (this.defaultInputMaskConfig.isAsync) {
|
|
4181
|
-
// Create an observer instance linked to the callback function
|
|
4182
|
-
this.mutationObserver = new MutationObserver((mutationsList) => {
|
|
4183
|
-
for (const mutation of mutationsList) {
|
|
4184
|
-
if (mutation.type === 'childList') {
|
|
4185
|
-
const nativeInputElement = this.elementRef.nativeElement.querySelector(this.defaultInputMaskConfig.inputSelector);
|
|
4186
|
-
if (nativeInputElement) {
|
|
4187
|
-
this.nativeInputElement = nativeInputElement;
|
|
4188
|
-
this.mutationObserver?.disconnect();
|
|
4189
|
-
this.initInputMask();
|
|
4190
|
-
}
|
|
4191
|
-
}
|
|
4192
|
-
}
|
|
4193
|
-
});
|
|
4194
|
-
// Start observing the target node for configured mutations
|
|
4195
|
-
this.mutationObserver.observe(this.elementRef.nativeElement, {
|
|
4196
|
-
childList: true,
|
|
4197
|
-
subtree: true,
|
|
4198
|
-
});
|
|
4199
|
-
}
|
|
4200
|
-
else {
|
|
4201
|
-
this.nativeInputElement = this.elementRef.nativeElement.querySelector(this.defaultInputMaskConfig.inputSelector);
|
|
4202
|
-
}
|
|
4203
|
-
}
|
|
4204
|
-
}
|
|
4205
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvInputMaskDirective, deps: [{ token: i1$3.NgControl, optional: true, self: true }, { token: INPUT_MASK_CONFIG }, { token: PLATFORM_ID }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
4206
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: NgvInputMaskDirective, selector: "[ngvInputMask]", inputs: { ngvInputMask: "ngvInputMask" }, host: { listeners: { "input": "onInput($event.target.value)", "blur": "onTouched($event.target.value)", "keyup": "onKeyUp($event)" } }, ngImport: i0 }); }
|
|
4207
|
-
}
|
|
4208
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvInputMaskDirective, decorators: [{
|
|
4209
|
-
type: Directive,
|
|
4210
|
-
args: [{
|
|
4211
|
-
selector: '[ngvInputMask]',
|
|
4212
|
-
}]
|
|
4213
|
-
}], ctorParameters: function () { return [{ type: i1$3.NgControl, decorators: [{
|
|
4214
|
-
type: Optional
|
|
4215
|
-
}, {
|
|
4216
|
-
type: Self
|
|
4217
|
-
}] }, { type: InputMaskConfig, decorators: [{
|
|
4218
|
-
type: Inject,
|
|
4219
|
-
args: [INPUT_MASK_CONFIG]
|
|
4220
|
-
}] }, { type: undefined, decorators: [{
|
|
4221
|
-
type: Inject,
|
|
4222
|
-
args: [PLATFORM_ID]
|
|
4223
|
-
}] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { ngvInputMask: [{
|
|
4224
|
-
type: Input
|
|
4225
|
-
}], onInput: [{
|
|
4226
|
-
type: HostListener,
|
|
4227
|
-
args: ['input', ['$event.target.value']]
|
|
4228
|
-
}], onTouched: [{
|
|
4229
|
-
type: HostListener,
|
|
4230
|
-
args: ['blur', ['$event.target.value']]
|
|
4231
|
-
}], onKeyUp: [{
|
|
4232
|
-
type: HostListener,
|
|
4233
|
-
args: ['keyup', ['$event']]
|
|
4234
|
-
}] } });
|
|
4235
|
-
|
|
4236
|
-
class NgvInputMaskModule {
|
|
4237
|
-
static forRoot(config) {
|
|
4238
|
-
return {
|
|
4239
|
-
ngModule: NgvInputMaskModule,
|
|
4240
|
-
providers: [{ provide: INPUT_MASK_CONFIG, useValue: config }],
|
|
4241
|
-
};
|
|
4242
|
-
}
|
|
4243
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvInputMaskModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
4244
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgvInputMaskModule, declarations: [NgvInputMaskDirective, InputMaskFormatPipe], exports: [NgvInputMaskDirective, InputMaskFormatPipe] }); }
|
|
4245
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvInputMaskModule, providers: [
|
|
4246
|
-
{
|
|
4247
|
-
provide: INPUT_MASK_CONFIG,
|
|
4248
|
-
useClass: InputMaskConfig,
|
|
4249
|
-
},
|
|
4250
|
-
] }); }
|
|
4251
|
-
}
|
|
4252
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvInputMaskModule, decorators: [{
|
|
4253
|
-
type: NgModule,
|
|
4254
|
-
args: [{
|
|
4255
|
-
declarations: [NgvInputMaskDirective, InputMaskFormatPipe],
|
|
4256
|
-
exports: [NgvInputMaskDirective, InputMaskFormatPipe],
|
|
4257
|
-
providers: [
|
|
4258
|
-
{
|
|
4259
|
-
provide: INPUT_MASK_CONFIG,
|
|
4260
|
-
useClass: InputMaskConfig,
|
|
4261
|
-
},
|
|
4262
|
-
],
|
|
4263
|
-
}]
|
|
4264
|
-
}] });
|
|
4265
|
-
|
|
4266
|
-
const createMask = (options) => typeof options === 'string' ? { mask: options } : options;
|
|
4267
|
-
|
|
4268
|
-
(() => {
|
|
4269
|
-
// Make sure there is an incremental ID each component can use
|
|
4270
|
-
if (typeof window !== 'undefined' && !window.ngv) {
|
|
4271
|
-
window.ngv = {
|
|
4272
|
-
ids: { default: -1 },
|
|
4273
|
-
nextId(namespace = 'default') {
|
|
4274
|
-
let id = this.ids[namespace] || 0;
|
|
4275
|
-
if (typeof this.ids[namespace] === 'number')
|
|
4276
|
-
id++;
|
|
4277
|
-
this.ids[namespace] = id;
|
|
4278
|
-
return namespace === 'default' ? `ngv-${id}` : `ngv-${namespace}-${id}`;
|
|
4279
|
-
},
|
|
4280
|
-
};
|
|
4281
|
-
}
|
|
4282
|
-
})();
|
|
4283
|
-
|
|
4284
|
-
class NgvDialogComponent {
|
|
4285
|
-
constructor() {
|
|
4286
|
-
/** Special property used for selecting DOM elements during automated UI testing. */
|
|
4287
|
-
this.thook = 'dialog';
|
|
4288
|
-
/** @internal */
|
|
4289
|
-
this.baseClass = true;
|
|
4290
|
-
/** @internal Defines the default visibility state of the dialog. */
|
|
4291
|
-
this.shown = false;
|
|
4292
|
-
/** Defines the default visibility state of the dialog. */
|
|
4293
|
-
this.initiallyShown = false;
|
|
4294
|
-
/**
|
|
4295
|
-
* Sets modal title. Will be translated (using transloco) if the string matches a cms key.
|
|
4296
|
-
* @deprecated - use heading instead.
|
|
4297
|
-
*/
|
|
4298
|
-
this.title = 'Attention';
|
|
4299
|
-
/** Defines if dialog should close on action. */
|
|
4300
|
-
this.autoClose = true;
|
|
4301
|
-
/** An array of event payloads that will be added to every click context menu item click. */
|
|
4302
|
-
this.payload = {};
|
|
4303
|
-
/** It gives an ability for parent component to control if modal should be closed on esc button click. */
|
|
4304
|
-
this.closeModalOnEscape = true;
|
|
4305
|
-
// /** @internal */
|
|
4306
|
-
// closeIcon = faTimes
|
|
4307
|
-
this.ngvCloseEvent = new EventEmitter();
|
|
4308
|
-
this.ngvPositiveEvent = new EventEmitter();
|
|
4309
|
-
this.ngvNeutralEvent = new EventEmitter();
|
|
4310
|
-
this.ngvNegativeEvent = new EventEmitter();
|
|
4311
|
-
}
|
|
4312
|
-
/** @internal */
|
|
4313
|
-
get ariaHidden() {
|
|
4314
|
-
return !this.shown;
|
|
4315
|
-
}
|
|
4316
|
-
/** Buttons are defined as a key-value pair where key is one of "positive|neutral|negative" and value is the button label. */
|
|
4317
|
-
set buttons(buttons) {
|
|
4318
|
-
this._buttons = buttons;
|
|
4319
|
-
}
|
|
4320
|
-
ngOnInit() {
|
|
4321
|
-
this.dialogTitleId =
|
|
4322
|
-
this.dialogTitleId ?? 'sdv-dialog-title-' + window.ngv?.nextId();
|
|
4323
|
-
this.dialogBodyId =
|
|
4324
|
-
this.dialogBodyId ?? 'sdv-dialog-body-' + window.ngv?.nextId();
|
|
4325
|
-
this.shown = this.initiallyShown;
|
|
4326
|
-
if (this.shown)
|
|
4327
|
-
this._limitFocusable();
|
|
4328
|
-
}
|
|
4329
|
-
onAction(event, action) {
|
|
4330
|
-
event.preventDefault();
|
|
4331
|
-
const emitEvent = {
|
|
4332
|
-
original: event,
|
|
4333
|
-
payload: this.payload,
|
|
4334
|
-
};
|
|
4335
|
-
switch (action) {
|
|
4336
|
-
case 'positive':
|
|
4337
|
-
this.ngvPositiveEvent.emit(emitEvent);
|
|
4338
|
-
break;
|
|
4339
|
-
case 'neutral':
|
|
4340
|
-
this.ngvNeutralEvent.emit(emitEvent);
|
|
4341
|
-
break;
|
|
4342
|
-
case 'negative':
|
|
4343
|
-
this.ngvNegativeEvent.emit(emitEvent);
|
|
4344
|
-
break;
|
|
4345
|
-
// case 'close' is handled by if-statement below with call to this.close()
|
|
4346
|
-
}
|
|
4347
|
-
if (this.autoClose)
|
|
4348
|
-
this.close(event, 'action');
|
|
4349
|
-
}
|
|
4350
|
-
open(opener) {
|
|
4351
|
-
this.shown = true;
|
|
4352
|
-
this._previous = opener || document.activeElement;
|
|
4353
|
-
this._limitFocusable();
|
|
4354
|
-
return true;
|
|
4355
|
-
}
|
|
4356
|
-
_limitFocusable() {
|
|
4357
|
-
window.setTimeout(() => {
|
|
4358
|
-
if (!this.dialogRef)
|
|
4359
|
-
return;
|
|
4360
|
-
const focusable = this.dialogRef.nativeElement.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
|
|
4361
|
-
this._firstFocusable = focusable[0];
|
|
4362
|
-
this._lastFocusable = focusable[focusable.length - 1];
|
|
4363
|
-
if (this._lastFocusable)
|
|
4364
|
-
this._lastFocusable.focus();
|
|
4365
|
-
});
|
|
4366
|
-
}
|
|
4367
|
-
close(event, initiator) {
|
|
4368
|
-
if (initiator === 'host' && event instanceof MouseEvent)
|
|
4369
|
-
return;
|
|
4370
|
-
// prevent modal from closing on esc button click when closeModalOnEscape is set to false
|
|
4371
|
-
if (!this.closeModalOnEscape)
|
|
4372
|
-
return;
|
|
4373
|
-
if (this.shown) {
|
|
4374
|
-
const emitEvent = {
|
|
4375
|
-
original: event,
|
|
4376
|
-
payload: this.payload,
|
|
4377
|
-
};
|
|
4378
|
-
this.ngvCloseEvent.emit(emitEvent);
|
|
4379
|
-
}
|
|
4380
|
-
this.shown = false;
|
|
4381
|
-
window.setTimeout(() => {
|
|
4382
|
-
if (this._previous)
|
|
4383
|
-
this._previous.focus();
|
|
4384
|
-
this._previous = undefined;
|
|
4385
|
-
});
|
|
4386
|
-
}
|
|
4387
|
-
focusTrap(event) {
|
|
4388
|
-
if (event.key !== 'Tab')
|
|
4389
|
-
return;
|
|
4390
|
-
if (event.shiftKey) {
|
|
4391
|
-
// shift + tab
|
|
4392
|
-
if (this._lastFocusable &&
|
|
4393
|
-
document.activeElement === this._firstFocusable) {
|
|
4394
|
-
this._lastFocusable.focus();
|
|
4395
|
-
event.preventDefault();
|
|
4396
|
-
}
|
|
4397
|
-
}
|
|
4398
|
-
else {
|
|
4399
|
-
// tab
|
|
4400
|
-
if (this._firstFocusable &&
|
|
4401
|
-
document.activeElement === this._lastFocusable) {
|
|
4402
|
-
this._firstFocusable.focus();
|
|
4403
|
-
event.preventDefault();
|
|
4404
|
-
}
|
|
4405
|
-
}
|
|
4406
|
-
}
|
|
4407
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4408
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgvDialogComponent, selector: "ngv-dialog", inputs: { thook: "thook", shown: "shown", initiallyShown: "initiallyShown", heading: "heading", title: "title", content: "content", autoClose: "autoClose", payload: "payload", dialogTitleId: "dialogTitleId", dialogBodyId: "dialogBodyId", closeModalOnEscape: "closeModalOnEscape", buttons: "buttons" }, outputs: { ngvCloseEvent: "ngvCloseEvent", ngvPositiveEvent: "ngvPositiveEvent", ngvNeutralEvent: "ngvNeutralEvent", ngvNegativeEvent: "ngvNegativeEvent" }, host: { listeners: { "click": "close($event,\"host\")", "document:keydown.escape": "close($event)", "keydown": "focusTrap($event)" }, properties: { "attr.data-thook": "this.thook", "class.sdv-modal-dialog": "this.baseClass", "class.-active": "this.shown", "attr.aria-hidden": "this.ariaHidden" } }, viewQueries: [{ propertyName: "dialogRef", first: true, predicate: ["dialog"], descendants: true }], exportAs: ["dialog"], ngImport: i0, template: "<div\n class=\"sdv-modal-dialog__container\"\n *transloco=\"let t\"\n #dialog\n role=\"dialog\"\n aria-dialog=\"true\"\n [attr.aria-labelledby]=\"dialogTitleId\"\n [attr.aria-describedby]=\"dialogBodyId\"\n>\n <header class=\"sdv-modal-dialog__heading\">\n <h3 [attr.id]=\"dialogTitleId\">{{ t(heading || title || '') }}</h3>\n <button\n type=\"button\"\n data-thook=\"dialog-close\"\n (click)=\"onAction($event, 'close')\"\n (keydown.enter)=\"onAction($event, 'close')\"\n class=\"close\"\n >\n <gds-icon-cross-small\n *nggCoreElement\n width=\"24\"\n height=\"24\"\n ></gds-icon-cross-small>\n </button>\n </header>\n <section class=\"sdv-modal-dialog__body\" [attr.id]=\"dialogBodyId\">\n <div [innerHtml]=\"content\"></div>\n <ng-content></ng-content>\n </section>\n <footer class=\"sdv-modal-dialog__actions\">\n <button\n class=\"sdv-button sdv-button-delete\"\n type=\"reset\"\n [attr.data-thook]=\"'dialog-' + (_buttons?.negative || 'negative')\"\n (click)=\"onAction($event, 'negative')\"\n (keydown.enter)=\"onAction($event, 'negative')\"\n *ngIf=\"_buttons && _buttons.negative\"\n >\n {{ t(_buttons.negative) }}\n </button>\n <button\n class=\"sdv-button sdv-button-secondary\"\n type=\"button\"\n [attr.data-thook]=\"'dialog-' + (_buttons?.neutral || 'neutral')\"\n (click)=\"onAction($event, 'neutral')\"\n (keydown.enter)=\"onAction($event, 'neutral')\"\n *ngIf=\"_buttons && _buttons.neutral\"\n >\n {{ t(_buttons.neutral) }}\n </button>\n <button\n class=\"sdv-button\"\n type=\"submit\"\n [attr.data-thook]=\"'dialog-' + (_buttons?.positive || 'positive')\"\n (click)=\"onAction($event, 'positive')\"\n (keydown.enter)=\"onAction($event, 'positive')\"\n *ngIf=\"_buttons && _buttons.positive\"\n >\n {{ t(_buttons.positive) }}\n </button>\n </footer>\n</div>\n\n<div class=\"sdv-modal-backdrop\"></div>\n", styles: [":host{inset:0;position:fixed;display:grid;place-content:center;z-index:calc(var(--sg-z-index-modal-backdrop) + 1)}:host .sdv-modal-dialog__container{background:var(--sg-modal-background);display:flex;flex-direction:column;box-shadow:var(--sg-modal-box-shadow);position:absolute;width:100%;z-index:var(--sg-z-index-modal);position:initial;width:375px;max-width:95vw}:host .sdv-modal-dialog__container>.header,:host .sdv-modal-dialog__container>header{padding:1rem;border-bottom:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--sg-border-color);display:inline-flex;justify-content:space-between;align-items:center;width:100%}:host .sdv-modal-dialog__container>.header h3,:host .sdv-modal-dialog__container>.header .h3,:host .sdv-modal-dialog__container>header h3,:host .sdv-modal-dialog__container>header .h3{margin-bottom:0;margin-top:0}:host .sdv-modal-dialog__container>.header h3+.close,:host .sdv-modal-dialog__container>.header .h3+.close,:host .sdv-modal-dialog__container>header h3+.close,:host .sdv-modal-dialog__container>header .h3+.close{margin:-7px}:host .sdv-modal-dialog__container>.body{padding:1rem;overflow:auto;width:100%}:host .sdv-modal-dialog__container>.body p{margin-bottom:0;margin-top:0}:host .sdv-modal-dialog__container>.footer,:host .sdv-modal-dialog__container>footer{padding:1rem;width:100%}@media (min-width: 36em){:host .sdv-modal-dialog__container>.footer,:host .sdv-modal-dialog__container>footer{display:flex;justify-content:flex-end}}@media (max-width: 35.98em){:host .sdv-modal-dialog__container>.footer button+button,:host .sdv-modal-dialog__container>.footer button+.button,:host .sdv-modal-dialog__container>.footer .button+button,:host .sdv-modal-dialog__container>.footer .button+.button,:host .sdv-modal-dialog__container>footer button+button,:host .sdv-modal-dialog__container>footer button+.button,:host .sdv-modal-dialog__container>footer .button+button,:host .sdv-modal-dialog__container>footer .button+.button{margin-top:.75rem}}@media (min-width: 36em){:host .sdv-modal-dialog__container>.footer button+button,:host .sdv-modal-dialog__container>.footer button+.button,:host .sdv-modal-dialog__container>.footer .button+button,:host .sdv-modal-dialog__container>.footer .button+.button,:host .sdv-modal-dialog__container>footer button+button,:host .sdv-modal-dialog__container>footer button+.button,:host .sdv-modal-dialog__container>footer .button+button,:host .sdv-modal-dialog__container>footer .button+.button{margin-left:.75rem}}:host .sdv-modal-dialog__container.medium{width:512px}:host .sdv-modal-dialog__container.large{width:720px}:host .sdv-modal-dialog__heading{padding:1rem;border-bottom:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--sg-border-color);display:inline-flex;justify-content:space-between;align-items:center;width:100%}:host .sdv-modal-dialog__heading h3,:host .sdv-modal-dialog__heading .h3{margin-bottom:0;margin-top:0}:host .sdv-modal-dialog__heading h3+.close,:host .sdv-modal-dialog__heading .h3+.close{margin:-7px}:host .sdv-modal-dialog__heading button{display:grid;place-content:center}:host .sdv-modal-dialog__body{padding:1rem;overflow:auto;width:100%}:host .sdv-modal-dialog__body p{margin-bottom:0;margin-top:0}:host .sdv-modal-backdrop{background:#00000059;inset:0;position:fixed;z-index:999;display:block;transition:opacity .5s cubic-bezier(.33,1,.68,1)}:host .sdv-modal-backdrop--transparent{opacity:0}:host .sdv-modal-backdrop--transparent.entered,:host .sdv-modal-backdrop--transparent.is-entering{opacity:1}:host .sdv-modal-backdrop--transparent.is-exiting{opacity:0}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
4409
|
-
}
|
|
4410
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvDialogComponent, decorators: [{
|
|
4411
|
-
type: Component,
|
|
4412
|
-
args: [{ selector: 'ngv-dialog', exportAs: 'dialog', template: "<div\n class=\"sdv-modal-dialog__container\"\n *transloco=\"let t\"\n #dialog\n role=\"dialog\"\n aria-dialog=\"true\"\n [attr.aria-labelledby]=\"dialogTitleId\"\n [attr.aria-describedby]=\"dialogBodyId\"\n>\n <header class=\"sdv-modal-dialog__heading\">\n <h3 [attr.id]=\"dialogTitleId\">{{ t(heading || title || '') }}</h3>\n <button\n type=\"button\"\n data-thook=\"dialog-close\"\n (click)=\"onAction($event, 'close')\"\n (keydown.enter)=\"onAction($event, 'close')\"\n class=\"close\"\n >\n <gds-icon-cross-small\n *nggCoreElement\n width=\"24\"\n height=\"24\"\n ></gds-icon-cross-small>\n </button>\n </header>\n <section class=\"sdv-modal-dialog__body\" [attr.id]=\"dialogBodyId\">\n <div [innerHtml]=\"content\"></div>\n <ng-content></ng-content>\n </section>\n <footer class=\"sdv-modal-dialog__actions\">\n <button\n class=\"sdv-button sdv-button-delete\"\n type=\"reset\"\n [attr.data-thook]=\"'dialog-' + (_buttons?.negative || 'negative')\"\n (click)=\"onAction($event, 'negative')\"\n (keydown.enter)=\"onAction($event, 'negative')\"\n *ngIf=\"_buttons && _buttons.negative\"\n >\n {{ t(_buttons.negative) }}\n </button>\n <button\n class=\"sdv-button sdv-button-secondary\"\n type=\"button\"\n [attr.data-thook]=\"'dialog-' + (_buttons?.neutral || 'neutral')\"\n (click)=\"onAction($event, 'neutral')\"\n (keydown.enter)=\"onAction($event, 'neutral')\"\n *ngIf=\"_buttons && _buttons.neutral\"\n >\n {{ t(_buttons.neutral) }}\n </button>\n <button\n class=\"sdv-button\"\n type=\"submit\"\n [attr.data-thook]=\"'dialog-' + (_buttons?.positive || 'positive')\"\n (click)=\"onAction($event, 'positive')\"\n (keydown.enter)=\"onAction($event, 'positive')\"\n *ngIf=\"_buttons && _buttons.positive\"\n >\n {{ t(_buttons.positive) }}\n </button>\n </footer>\n</div>\n\n<div class=\"sdv-modal-backdrop\"></div>\n", styles: [":host{inset:0;position:fixed;display:grid;place-content:center;z-index:calc(var(--sg-z-index-modal-backdrop) + 1)}:host .sdv-modal-dialog__container{background:var(--sg-modal-background);display:flex;flex-direction:column;box-shadow:var(--sg-modal-box-shadow);position:absolute;width:100%;z-index:var(--sg-z-index-modal);position:initial;width:375px;max-width:95vw}:host .sdv-modal-dialog__container>.header,:host .sdv-modal-dialog__container>header{padding:1rem;border-bottom:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--sg-border-color);display:inline-flex;justify-content:space-between;align-items:center;width:100%}:host .sdv-modal-dialog__container>.header h3,:host .sdv-modal-dialog__container>.header .h3,:host .sdv-modal-dialog__container>header h3,:host .sdv-modal-dialog__container>header .h3{margin-bottom:0;margin-top:0}:host .sdv-modal-dialog__container>.header h3+.close,:host .sdv-modal-dialog__container>.header .h3+.close,:host .sdv-modal-dialog__container>header h3+.close,:host .sdv-modal-dialog__container>header .h3+.close{margin:-7px}:host .sdv-modal-dialog__container>.body{padding:1rem;overflow:auto;width:100%}:host .sdv-modal-dialog__container>.body p{margin-bottom:0;margin-top:0}:host .sdv-modal-dialog__container>.footer,:host .sdv-modal-dialog__container>footer{padding:1rem;width:100%}@media (min-width: 36em){:host .sdv-modal-dialog__container>.footer,:host .sdv-modal-dialog__container>footer{display:flex;justify-content:flex-end}}@media (max-width: 35.98em){:host .sdv-modal-dialog__container>.footer button+button,:host .sdv-modal-dialog__container>.footer button+.button,:host .sdv-modal-dialog__container>.footer .button+button,:host .sdv-modal-dialog__container>.footer .button+.button,:host .sdv-modal-dialog__container>footer button+button,:host .sdv-modal-dialog__container>footer button+.button,:host .sdv-modal-dialog__container>footer .button+button,:host .sdv-modal-dialog__container>footer .button+.button{margin-top:.75rem}}@media (min-width: 36em){:host .sdv-modal-dialog__container>.footer button+button,:host .sdv-modal-dialog__container>.footer button+.button,:host .sdv-modal-dialog__container>.footer .button+button,:host .sdv-modal-dialog__container>.footer .button+.button,:host .sdv-modal-dialog__container>footer button+button,:host .sdv-modal-dialog__container>footer button+.button,:host .sdv-modal-dialog__container>footer .button+button,:host .sdv-modal-dialog__container>footer .button+.button{margin-left:.75rem}}:host .sdv-modal-dialog__container.medium{width:512px}:host .sdv-modal-dialog__container.large{width:720px}:host .sdv-modal-dialog__heading{padding:1rem;border-bottom:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--sg-border-color);display:inline-flex;justify-content:space-between;align-items:center;width:100%}:host .sdv-modal-dialog__heading h3,:host .sdv-modal-dialog__heading .h3{margin-bottom:0;margin-top:0}:host .sdv-modal-dialog__heading h3+.close,:host .sdv-modal-dialog__heading .h3+.close{margin:-7px}:host .sdv-modal-dialog__heading button{display:grid;place-content:center}:host .sdv-modal-dialog__body{padding:1rem;overflow:auto;width:100%}:host .sdv-modal-dialog__body p{margin-bottom:0;margin-top:0}:host .sdv-modal-backdrop{background:#00000059;inset:0;position:fixed;z-index:999;display:block;transition:opacity .5s cubic-bezier(.33,1,.68,1)}:host .sdv-modal-backdrop--transparent{opacity:0}:host .sdv-modal-backdrop--transparent.entered,:host .sdv-modal-backdrop--transparent.is-entering{opacity:1}:host .sdv-modal-backdrop--transparent.is-exiting{opacity:0}\n"] }]
|
|
4413
|
-
}], propDecorators: { dialogRef: [{
|
|
4414
|
-
type: ViewChild,
|
|
4415
|
-
args: ['dialog']
|
|
4416
|
-
}], thook: [{
|
|
4417
|
-
type: HostBinding,
|
|
4418
|
-
args: ['attr.data-thook']
|
|
4419
|
-
}, {
|
|
4420
|
-
type: Input
|
|
4421
|
-
}], baseClass: [{
|
|
4422
|
-
type: HostBinding,
|
|
4423
|
-
args: ['class.sdv-modal-dialog']
|
|
4424
|
-
}], shown: [{
|
|
4425
|
-
type: HostBinding,
|
|
4426
|
-
args: ['class.-active']
|
|
4427
|
-
}, {
|
|
4428
|
-
type: Input
|
|
4429
|
-
}], ariaHidden: [{
|
|
4430
|
-
type: HostBinding,
|
|
4431
|
-
args: ['attr.aria-hidden']
|
|
4432
|
-
}], initiallyShown: [{
|
|
4433
|
-
type: Input
|
|
4434
|
-
}], heading: [{
|
|
4435
|
-
type: Input
|
|
4436
|
-
}], title: [{
|
|
4437
|
-
type: Input
|
|
4438
|
-
}], content: [{
|
|
4439
|
-
type: Input
|
|
4440
|
-
}], autoClose: [{
|
|
4441
|
-
type: Input
|
|
4442
|
-
}], payload: [{
|
|
4443
|
-
type: Input
|
|
4444
|
-
}], dialogTitleId: [{
|
|
4445
|
-
type: Input
|
|
4446
|
-
}], dialogBodyId: [{
|
|
4447
|
-
type: Input
|
|
4448
|
-
}], closeModalOnEscape: [{
|
|
4449
|
-
type: Input
|
|
4450
|
-
}], buttons: [{
|
|
4451
|
-
type: Input
|
|
4452
|
-
}], ngvCloseEvent: [{
|
|
4453
|
-
type: Output
|
|
4454
|
-
}], ngvPositiveEvent: [{
|
|
4455
|
-
type: Output
|
|
4456
|
-
}], ngvNeutralEvent: [{
|
|
4457
|
-
type: Output
|
|
4458
|
-
}], ngvNegativeEvent: [{
|
|
4459
|
-
type: Output
|
|
4460
|
-
}], close: [{
|
|
4461
|
-
type: HostListener,
|
|
4462
|
-
args: ['click', ['$event', '"host"']]
|
|
4463
|
-
}, {
|
|
4464
|
-
type: HostListener,
|
|
4465
|
-
args: ['document:keydown.escape', ['$event']]
|
|
4466
|
-
}], focusTrap: [{
|
|
4467
|
-
type: HostListener,
|
|
4468
|
-
args: ['keydown', ['$event']]
|
|
4469
|
-
}] } });
|
|
4470
|
-
|
|
4471
|
-
class NgvFoldOutComponent {
|
|
4472
|
-
constructor() {
|
|
4473
|
-
/** Special property used for selecting DOM elements during automated UI testing. */
|
|
4474
|
-
this.thook = 'fold-out';
|
|
4475
|
-
// /** @internal */
|
|
4476
|
-
// faEllipsisH: IconDefinition = faEllipsisH
|
|
4477
|
-
/** @internal */
|
|
4478
|
-
this.shown = false;
|
|
4479
|
-
// Empty constructor
|
|
4480
|
-
}
|
|
4481
|
-
ngOnDestroy() {
|
|
4482
|
-
this.onClickSubscription?.unsubscribe();
|
|
4483
|
-
}
|
|
4484
|
-
/** Toggle display of the option list */
|
|
4485
|
-
toggleVisibility(event, setVisibility) {
|
|
4486
|
-
this.shown = setVisibility !== undefined ? setVisibility : !this.shown;
|
|
4487
|
-
if (this.shown)
|
|
4488
|
-
this.subscribeToOutsideClickEvent();
|
|
4489
|
-
}
|
|
4490
|
-
/**
|
|
4491
|
-
* Closes the fold-out on click outside.
|
|
4492
|
-
*/
|
|
4493
|
-
subscribeToOutsideClickEvent() {
|
|
4494
|
-
this.onClickSubscription = fromEvent(document, 'click').subscribe({
|
|
4495
|
-
next: (event) => {
|
|
4496
|
-
if (this.shown &&
|
|
4497
|
-
!this.inputRef?.nativeElement.contains(event.target)) {
|
|
4498
|
-
this.toggleVisibility();
|
|
4499
|
-
this.onClickSubscription?.unsubscribe();
|
|
4500
|
-
}
|
|
4501
|
-
},
|
|
4502
|
-
});
|
|
4503
|
-
}
|
|
4504
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvFoldOutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4505
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgvFoldOutComponent, selector: "ngv-fold-out", inputs: { thook: "thook", alignOptions: "alignOptions" }, host: { properties: { "attr.data-thook": "this.thook" } }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["foldout"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div #foldout class=\"sdv-field-dropdown\">\n <button\n data-thook=\"fold-out-toggle\"\n class=\"sdv-button fold-out-button\"\n (click)=\"toggleVisibility($event)\"\n >\n <gds-icon-dot-grid-one-horizontal\n width=\"24\"\n height=\"24\"\n *nggCoreElement\n ></gds-icon-dot-grid-one-horizontal>\n </button>\n\n <div\n class=\"gds-fold-out__popover\"\n [ngClass]=\"{ 'flex-right': alignOptions === 'right' }\"\n [class.gds-fold-out__popover-expanded]=\"shown\"\n (click)=\"toggleVisibility($event, false)\"\n >\n <ng-content></ng-content>\n </div>\n</div>\n", styles: ["i.sg-icon{font-size:0;width:1rem;height:1rem;display:inline-block}i.sg-icon:before{content:\"\";display:inline-block;background:var(--color);width:100%;height:100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}i.sg-icon.sg-icon-calendar:before{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3C!--! Font Awesome Pro 6.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc.--%3E%3Cpath d='M152 64h144V24c0-13.25 10.7-24 24-24s24 10.75 24 24v40h40c35.3 0 64 28.65 64 64v320c0 35.3-28.7 64-64 64H64c-35.35 0-64-28.7-64-64V128c0-35.35 28.65-64 64-64h40V24c0-13.25 10.7-24 24-24s24 10.75 24 24v40zM48 248h80v-56H48v56zm0 48v64h80v-64H48zm128 0v64h96v-64h-96zm144 0v64h80v-64h-80zm80-104h-80v56h80v-56zm0 216h-80v56h64c8.8 0 16-7.2 16-16v-40zm-128 0h-96v56h96v-56zm-144 0H48v40c0 8.8 7.16 16 16 16h64v-56zm144-216h-96v56h96v-56z '/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3C!--! Font Awesome Pro 6.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc.--%3E%3Cpath d='M152 64h144V24c0-13.25 10.7-24 24-24s24 10.75 24 24v40h40c35.3 0 64 28.65 64 64v320c0 35.3-28.7 64-64 64H64c-35.35 0-64-28.7-64-64V128c0-35.35 28.65-64 64-64h40V24c0-13.25 10.7-24 24-24s24 10.75 24 24v40zM48 248h80v-56H48v56zm0 48v64h80v-64H48zm128 0v64h96v-64h-96zm144 0v64h80v-64h-80zm80-104h-80v56h80v-56zm0 216h-80v56h64c8.8 0 16-7.2 16-16v-40zm-128 0h-96v56h96v-56zm-144 0H48v40c0 8.8 7.16 16 16 16h64v-56zm144-216h-96v56h96v-56z '/%3E%3C/svg%3E\")}i.sg-icon.sg-icon-calendar-range:before{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3C!--! Font Awesome Pro 6.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc.--%3E%3Cpath d='M96 288c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm224 64c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-128-64c0-13.3 10.7-24 24-24h112c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24zm40 72c13.3 0 24 10.7 24 24s-10.7 24-24 24H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h112zM152 64h144V24c0-13.25 10.7-24 24-24s24 10.75 24 24v40h40c35.3 0 64 28.65 64 64v320c0 35.3-28.7 64-64 64H64c-35.35 0-64-28.7-64-64V128c0-35.35 28.65-64 64-64h40V24c0-13.25 10.7-24 24-24s24 10.75 24 24v40zM48 448c0 8.8 7.16 16 16 16h320c8.8 0 16-7.2 16-16V192H48v256z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3C!--! Font Awesome Pro 6.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc.--%3E%3Cpath d='M96 288c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm224 64c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-128-64c0-13.3 10.7-24 24-24h112c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24zm40 72c13.3 0 24 10.7 24 24s-10.7 24-24 24H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h112zM152 64h144V24c0-13.25 10.7-24 24-24s24 10.75 24 24v40h40c35.3 0 64 28.65 64 64v320c0 35.3-28.7 64-64 64H64c-35.35 0-64-28.7-64-64V128c0-35.35 28.65-64 64-64h40V24c0-13.25 10.7-24 24-24s24 10.75 24 24v40zM48 448c0 8.8 7.16 16 16 16h320c8.8 0 16-7.2 16-16V192H48v256z'/%3E%3C/svg%3E\")}i.sg-icon.sg-icon-ellipsis:before{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3C!--! Font Awesome Pro 6.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc.--%3E%3Cpath d='M8 256a56 56 0 1 1 112 0A56 56 0 1 1 8 256zm160 0a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm216-56a56 56 0 1 1 0 112 56 56 0 1 1 0-112z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3C!--! Font Awesome Pro 6.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc.--%3E%3Cpath d='M8 256a56 56 0 1 1 112 0A56 56 0 1 1 8 256zm160 0a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm216-56a56 56 0 1 1 0 112 56 56 0 1 1 0-112z'/%3E%3C/svg%3E\")}i.sg-icon.sg-icon-grip-vertical:before{-webkit-mask-image:url(\"data:image/svg+xml, %3Csvg height='1em' viewBox='0 0 320 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M40 352l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zm192 0l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 320c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 192l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 160c-22.1 0-40-17.9-40-40L0 72C0 49.9 17.9 32 40 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40z' /%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml, %3Csvg height='1em' viewBox='0 0 320 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M40 352l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zm192 0l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 320c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 192l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 160c-22.1 0-40-17.9-40-40L0 72C0 49.9 17.9 32 40 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40z' /%3E%3C/svg%3E\")}i.sg-icon.sg-icon-next:before{background:none;border-bottom:2px solid;border-left:2px solid;content:\"\";display:block;height:12px;margin-left:-10px;margin-top:2px;transform:translate(75%) rotate(-135deg) scaleZ(-1);transition:transform .3s ease-in;width:12px}i.sg-icon.sg-icon-previous:before{background:none;border-bottom:2px solid;border-left:2px solid;content:\"\";display:block;height:12px;margin-left:-4px;margin-top:2px;transform:translate(75%) rotate(45deg) scaleZ(-1);transition:transform .3s ease-in;width:12px}i.sg-icon.sg-icon-ellipsis:before{margin-right:-2px}:host .flex-right{right:0}:host .fold-out-button{border:0;cursor:pointer;font-family:inherit;padding:0;padding:.75rem 1rem;border-radius:var(--sg-border-radius);border:solid var(--sg-border-width) var(--sg-border-color);font-weight:500;min-height:2.75rem;align-items:center;display:inline-flex;justify-content:center;background-color:transparent;border:.0625rem solid transparent;padding:.625rem;height:2.75rem;width:2.75rem;min-width:auto;--color: var(--gds-ref-pallet-base800);border-color:transparent;color:var(--gds-ref-pallet-base800);display:flex;gap:.5rem;line-height:.75;padding-inline:.4375rem;width:auto}:host .fold-out-button:focus:not(:focus-visible){box-shadow:none;outline:0}:host .fold-out-button:focus,:host .fold-out-button:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}@media (max-width: 35.98em){:host .fold-out-button{min-width:100%}}@media screen and (-ms-high-contrast: active){:host .fold-out-button{border:2px solid currentcolor}}:host .fold-out-button.small{min-height:2rem;padding:.4375rem .75rem;line-height:1rem}:host .fold-out-button.large{min-height:4rem;padding:1rem 1.5rem;font-size:1.5rem;line-height:2rem}.form-group :host .fold-out-button{margin-top:-.625rem}:host .fold-out-button.small{height:2rem;width:2rem;padding:.4375rem;line-height:1.125rem}:host .fold-out-button svg{height:1rem;width:1rem}:host .fold-out-button path,:host .fold-out-button line,:host .fold-out-button circle,:host .fold-out-button rect,:host .fold-out-button ellipse,:host .fold-out-button polyline,:host .fold-out-button text{fill:var(--gds-ref-pallet-base800);stroke:var(--gds-ref-pallet-base800);transition:all .3s cubic-bezier(.23,1,.32,1)}:host .fold-out-button:hover,:host .fold-out-button.highlighted{background-color:#0000001a;border-color:transparent}:host .fold-out-button:active,:host .fold-out-button.highlighted:hover{background-color:#0003;border-color:transparent}:host .gds-fold-out__popover{background-clip:border-box;background:var(--sg-card-background);border:var(--sg-card-border);border-radius:var(--sg-card-border-radius);box-shadow:var(--sg-card-box-shadow);color:var(--sg-card-color);display:flex;flex-direction:column;padding:1rem;width:-moz-fit-content;width:fit-content;display:none;padding:0}:host .gds-fold-out__popover>header{align-items:center;display:flex;justify-content:space-between;margin-bottom:1rem;margin-block-end:1rem}:host .gds-fold-out__popover>header .close{margin:-.5rem -.5rem -.5rem .5rem}:host .gds-fold-out__popover>*:not(header,footer){flex:1 1 auto}:host .gds-fold-out__popover>footer{margin-top:.75rem}@media (min-width: 36em){:host .gds-fold-out__popover>footer{display:flex;justify-content:flex-end}}@media (max-width: 35.98em){:host .gds-fold-out__popover>footer button:not(.link)+button,:host .gds-fold-out__popover>footer button:not(.link)+.button,:host .gds-fold-out__popover>footer .button:not(.link)+button,:host .gds-fold-out__popover>footer .button:not(.link)+.button{margin-top:.75rem}}@media (min-width: 36em){:host .gds-fold-out__popover>footer button:not(.link)+button,:host .gds-fold-out__popover>footer button:not(.link)+.button,:host .gds-fold-out__popover>footer .button:not(.link)+button,:host .gds-fold-out__popover>footer .button:not(.link)+.button{margin-left:.75rem}}:host .gds-fold-out__popover-expanded{display:block}:host ::ng-deep .sdv-field-dropdown__options__label{padding:.75rem 1rem;line-height:1.25;cursor:pointer;display:flex;gap:.75rem;-webkit-user-select:none;user-select:none}:host ::ng-deep .sdv-field-dropdown__options__label:active{background-color:var(--grey-400)}:host ::ng-deep .sdv-field-dropdown__options__label:focus{outline-color:#000;outline-offset:-.25rem}:host ::ng-deep .sdv-field-dropdown__options__label.active.sg-highlighted,:host ::ng-deep .sdv-field-dropdown__options__label[aria-selected=true]{background:var(--grey-1000);color:#fff}:host ::ng-deep .sdv-field-dropdown__options__label:hover,:host ::ng-deep .sdv-field-dropdown__options__label:focus-visible{background-color:var(--grey-400)}:host ::ng-deep .sdv-field-dropdown__options__label:active{background-color:var(--grey-500)}:host ::ng-deep .sdv-field-dropdown__options__label:focus-visible{outline-color:#000;outline-offset:-.25rem}:host ::ng-deep .sdv-field-dropdown__options__label[aria-hidden=true]{display:none}:host ::ng-deep .sdv-field-dropdown__options__label[highlighted]{background:var(--grey-1000);color:#fff}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
4506
|
-
}
|
|
4507
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvFoldOutComponent, decorators: [{
|
|
4508
|
-
type: Component,
|
|
4509
|
-
args: [{ selector: 'ngv-fold-out', template: "<div #foldout class=\"sdv-field-dropdown\">\n <button\n data-thook=\"fold-out-toggle\"\n class=\"sdv-button fold-out-button\"\n (click)=\"toggleVisibility($event)\"\n >\n <gds-icon-dot-grid-one-horizontal\n width=\"24\"\n height=\"24\"\n *nggCoreElement\n ></gds-icon-dot-grid-one-horizontal>\n </button>\n\n <div\n class=\"gds-fold-out__popover\"\n [ngClass]=\"{ 'flex-right': alignOptions === 'right' }\"\n [class.gds-fold-out__popover-expanded]=\"shown\"\n (click)=\"toggleVisibility($event, false)\"\n >\n <ng-content></ng-content>\n </div>\n</div>\n", styles: ["i.sg-icon{font-size:0;width:1rem;height:1rem;display:inline-block}i.sg-icon:before{content:\"\";display:inline-block;background:var(--color);width:100%;height:100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}i.sg-icon.sg-icon-calendar:before{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3C!--! Font Awesome Pro 6.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc.--%3E%3Cpath d='M152 64h144V24c0-13.25 10.7-24 24-24s24 10.75 24 24v40h40c35.3 0 64 28.65 64 64v320c0 35.3-28.7 64-64 64H64c-35.35 0-64-28.7-64-64V128c0-35.35 28.65-64 64-64h40V24c0-13.25 10.7-24 24-24s24 10.75 24 24v40zM48 248h80v-56H48v56zm0 48v64h80v-64H48zm128 0v64h96v-64h-96zm144 0v64h80v-64h-80zm80-104h-80v56h80v-56zm0 216h-80v56h64c8.8 0 16-7.2 16-16v-40zm-128 0h-96v56h96v-56zm-144 0H48v40c0 8.8 7.16 16 16 16h64v-56zm144-216h-96v56h96v-56z '/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3C!--! Font Awesome Pro 6.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc.--%3E%3Cpath d='M152 64h144V24c0-13.25 10.7-24 24-24s24 10.75 24 24v40h40c35.3 0 64 28.65 64 64v320c0 35.3-28.7 64-64 64H64c-35.35 0-64-28.7-64-64V128c0-35.35 28.65-64 64-64h40V24c0-13.25 10.7-24 24-24s24 10.75 24 24v40zM48 248h80v-56H48v56zm0 48v64h80v-64H48zm128 0v64h96v-64h-96zm144 0v64h80v-64h-80zm80-104h-80v56h80v-56zm0 216h-80v56h64c8.8 0 16-7.2 16-16v-40zm-128 0h-96v56h96v-56zm-144 0H48v40c0 8.8 7.16 16 16 16h64v-56zm144-216h-96v56h96v-56z '/%3E%3C/svg%3E\")}i.sg-icon.sg-icon-calendar-range:before{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3C!--! Font Awesome Pro 6.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc.--%3E%3Cpath d='M96 288c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm224 64c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-128-64c0-13.3 10.7-24 24-24h112c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24zm40 72c13.3 0 24 10.7 24 24s-10.7 24-24 24H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h112zM152 64h144V24c0-13.25 10.7-24 24-24s24 10.75 24 24v40h40c35.3 0 64 28.65 64 64v320c0 35.3-28.7 64-64 64H64c-35.35 0-64-28.7-64-64V128c0-35.35 28.65-64 64-64h40V24c0-13.25 10.7-24 24-24s24 10.75 24 24v40zM48 448c0 8.8 7.16 16 16 16h320c8.8 0 16-7.2 16-16V192H48v256z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3C!--! Font Awesome Pro 6.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc.--%3E%3Cpath d='M96 288c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm224 64c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-128-64c0-13.3 10.7-24 24-24h112c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24zm40 72c13.3 0 24 10.7 24 24s-10.7 24-24 24H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h112zM152 64h144V24c0-13.25 10.7-24 24-24s24 10.75 24 24v40h40c35.3 0 64 28.65 64 64v320c0 35.3-28.7 64-64 64H64c-35.35 0-64-28.7-64-64V128c0-35.35 28.65-64 64-64h40V24c0-13.25 10.7-24 24-24s24 10.75 24 24v40zM48 448c0 8.8 7.16 16 16 16h320c8.8 0 16-7.2 16-16V192H48v256z'/%3E%3C/svg%3E\")}i.sg-icon.sg-icon-ellipsis:before{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3C!--! Font Awesome Pro 6.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc.--%3E%3Cpath d='M8 256a56 56 0 1 1 112 0A56 56 0 1 1 8 256zm160 0a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm216-56a56 56 0 1 1 0 112 56 56 0 1 1 0-112z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3C!--! Font Awesome Pro 6.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc.--%3E%3Cpath d='M8 256a56 56 0 1 1 112 0A56 56 0 1 1 8 256zm160 0a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm216-56a56 56 0 1 1 0 112 56 56 0 1 1 0-112z'/%3E%3C/svg%3E\")}i.sg-icon.sg-icon-grip-vertical:before{-webkit-mask-image:url(\"data:image/svg+xml, %3Csvg height='1em' viewBox='0 0 320 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M40 352l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zm192 0l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 320c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 192l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 160c-22.1 0-40-17.9-40-40L0 72C0 49.9 17.9 32 40 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40z' /%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml, %3Csvg height='1em' viewBox='0 0 320 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M40 352l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zm192 0l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 320c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 192l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 160c-22.1 0-40-17.9-40-40L0 72C0 49.9 17.9 32 40 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40z' /%3E%3C/svg%3E\")}i.sg-icon.sg-icon-next:before{background:none;border-bottom:2px solid;border-left:2px solid;content:\"\";display:block;height:12px;margin-left:-10px;margin-top:2px;transform:translate(75%) rotate(-135deg) scaleZ(-1);transition:transform .3s ease-in;width:12px}i.sg-icon.sg-icon-previous:before{background:none;border-bottom:2px solid;border-left:2px solid;content:\"\";display:block;height:12px;margin-left:-4px;margin-top:2px;transform:translate(75%) rotate(45deg) scaleZ(-1);transition:transform .3s ease-in;width:12px}i.sg-icon.sg-icon-ellipsis:before{margin-right:-2px}:host .flex-right{right:0}:host .fold-out-button{border:0;cursor:pointer;font-family:inherit;padding:0;padding:.75rem 1rem;border-radius:var(--sg-border-radius);border:solid var(--sg-border-width) var(--sg-border-color);font-weight:500;min-height:2.75rem;align-items:center;display:inline-flex;justify-content:center;background-color:transparent;border:.0625rem solid transparent;padding:.625rem;height:2.75rem;width:2.75rem;min-width:auto;--color: var(--gds-ref-pallet-base800);border-color:transparent;color:var(--gds-ref-pallet-base800);display:flex;gap:.5rem;line-height:.75;padding-inline:.4375rem;width:auto}:host .fold-out-button:focus:not(:focus-visible){box-shadow:none;outline:0}:host .fold-out-button:focus,:host .fold-out-button:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}@media (max-width: 35.98em){:host .fold-out-button{min-width:100%}}@media screen and (-ms-high-contrast: active){:host .fold-out-button{border:2px solid currentcolor}}:host .fold-out-button.small{min-height:2rem;padding:.4375rem .75rem;line-height:1rem}:host .fold-out-button.large{min-height:4rem;padding:1rem 1.5rem;font-size:1.5rem;line-height:2rem}.form-group :host .fold-out-button{margin-top:-.625rem}:host .fold-out-button.small{height:2rem;width:2rem;padding:.4375rem;line-height:1.125rem}:host .fold-out-button svg{height:1rem;width:1rem}:host .fold-out-button path,:host .fold-out-button line,:host .fold-out-button circle,:host .fold-out-button rect,:host .fold-out-button ellipse,:host .fold-out-button polyline,:host .fold-out-button text{fill:var(--gds-ref-pallet-base800);stroke:var(--gds-ref-pallet-base800);transition:all .3s cubic-bezier(.23,1,.32,1)}:host .fold-out-button:hover,:host .fold-out-button.highlighted{background-color:#0000001a;border-color:transparent}:host .fold-out-button:active,:host .fold-out-button.highlighted:hover{background-color:#0003;border-color:transparent}:host .gds-fold-out__popover{background-clip:border-box;background:var(--sg-card-background);border:var(--sg-card-border);border-radius:var(--sg-card-border-radius);box-shadow:var(--sg-card-box-shadow);color:var(--sg-card-color);display:flex;flex-direction:column;padding:1rem;width:-moz-fit-content;width:fit-content;display:none;padding:0}:host .gds-fold-out__popover>header{align-items:center;display:flex;justify-content:space-between;margin-bottom:1rem;margin-block-end:1rem}:host .gds-fold-out__popover>header .close{margin:-.5rem -.5rem -.5rem .5rem}:host .gds-fold-out__popover>*:not(header,footer){flex:1 1 auto}:host .gds-fold-out__popover>footer{margin-top:.75rem}@media (min-width: 36em){:host .gds-fold-out__popover>footer{display:flex;justify-content:flex-end}}@media (max-width: 35.98em){:host .gds-fold-out__popover>footer button:not(.link)+button,:host .gds-fold-out__popover>footer button:not(.link)+.button,:host .gds-fold-out__popover>footer .button:not(.link)+button,:host .gds-fold-out__popover>footer .button:not(.link)+.button{margin-top:.75rem}}@media (min-width: 36em){:host .gds-fold-out__popover>footer button:not(.link)+button,:host .gds-fold-out__popover>footer button:not(.link)+.button,:host .gds-fold-out__popover>footer .button:not(.link)+button,:host .gds-fold-out__popover>footer .button:not(.link)+.button{margin-left:.75rem}}:host .gds-fold-out__popover-expanded{display:block}:host ::ng-deep .sdv-field-dropdown__options__label{padding:.75rem 1rem;line-height:1.25;cursor:pointer;display:flex;gap:.75rem;-webkit-user-select:none;user-select:none}:host ::ng-deep .sdv-field-dropdown__options__label:active{background-color:var(--grey-400)}:host ::ng-deep .sdv-field-dropdown__options__label:focus{outline-color:#000;outline-offset:-.25rem}:host ::ng-deep .sdv-field-dropdown__options__label.active.sg-highlighted,:host ::ng-deep .sdv-field-dropdown__options__label[aria-selected=true]{background:var(--grey-1000);color:#fff}:host ::ng-deep .sdv-field-dropdown__options__label:hover,:host ::ng-deep .sdv-field-dropdown__options__label:focus-visible{background-color:var(--grey-400)}:host ::ng-deep .sdv-field-dropdown__options__label:active{background-color:var(--grey-500)}:host ::ng-deep .sdv-field-dropdown__options__label:focus-visible{outline-color:#000;outline-offset:-.25rem}:host ::ng-deep .sdv-field-dropdown__options__label[aria-hidden=true]{display:none}:host ::ng-deep .sdv-field-dropdown__options__label[highlighted]{background:var(--grey-1000);color:#fff}\n"] }]
|
|
4510
|
-
}], ctorParameters: function () { return []; }, propDecorators: { thook: [{
|
|
4511
|
-
type: HostBinding,
|
|
4512
|
-
args: ['attr.data-thook']
|
|
4513
|
-
}, {
|
|
4514
|
-
type: Input
|
|
4515
|
-
}], inputRef: [{
|
|
4516
|
-
type: ViewChild,
|
|
4517
|
-
args: ['foldout', { read: ElementRef }]
|
|
4518
|
-
}], alignOptions: [{
|
|
4519
|
-
type: Input
|
|
4520
|
-
}] } });
|
|
4521
|
-
|
|
4522
|
-
class NgvFoldOutOptionDirective {
|
|
4523
|
-
constructor() {
|
|
4524
|
-
this.baseClass = true;
|
|
4525
|
-
}
|
|
4526
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvFoldOutOptionDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
4527
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: NgvFoldOutOptionDirective, selector: "[ngvOption]", host: { properties: { "class.sdv-field-dropdown__options__label": "this.baseClass" } }, ngImport: i0 }); }
|
|
4528
|
-
}
|
|
4529
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvFoldOutOptionDirective, decorators: [{
|
|
4530
|
-
type: Directive,
|
|
4531
|
-
args: [{
|
|
4532
|
-
selector: '[ngvOption]',
|
|
4533
|
-
}]
|
|
4534
|
-
}], propDecorators: { baseClass: [{
|
|
4535
|
-
type: HostBinding,
|
|
4536
|
-
args: ['class.sdv-field-dropdown__options__label']
|
|
4537
|
-
}] } });
|
|
4538
|
-
|
|
4539
|
-
/** Modal slide-out component based on vanilla pattern library design.
|
|
4540
|
-
* The modal title can be set using the @Input heading, and will automatically be translated if
|
|
4541
|
-
* the string matches a cms key.
|
|
4542
|
-
* Content can be injected into the body of the slide-out by either setting the @Input content to any type of
|
|
4543
|
-
* markdown, or using content projection (adding content between the `ngv-slideout-modal`-start and end tag).
|
|
4544
|
-
* If the content needs to stretch outside the normal padded area, add the attribute `slot="outside-content"` to the
|
|
4545
|
-
* projected content main element.
|
|
4546
|
-
* Test hooks:
|
|
4547
|
-
* The modal hook defaults to 'slideout' but is customizeable.
|
|
4548
|
-
* The closing button can be selected using 'slideout-close'.
|
|
4549
|
-
* The backdrop is selectable using 'slideout-backdrop'.
|
|
4550
|
-
*/
|
|
4551
|
-
class NgvSlideOutComponent {
|
|
4552
|
-
/** @internal */
|
|
4553
|
-
get fromLeft() {
|
|
4554
|
-
return this.side === 'left';
|
|
4555
|
-
}
|
|
4556
|
-
/** Buttons are defined as a key-value pair where key is one of "positive|neutral|negative" and value is the button label. */
|
|
4557
|
-
set buttons(buttons) {
|
|
4558
|
-
this._buttons = buttons;
|
|
4559
|
-
}
|
|
4560
|
-
constructor(host) {
|
|
4561
|
-
this.host = host;
|
|
4562
|
-
/** Sets from which side the modal should open. */
|
|
4563
|
-
this.side = 'right';
|
|
4564
|
-
/** Defines the default visibility state of the slide-out. */
|
|
4565
|
-
this.shown = false;
|
|
4566
|
-
/** Defines the default visibility state of the modal. */
|
|
4567
|
-
this.initiallyShown = false;
|
|
4568
|
-
/** Sets whether it is possible to close the modal from the top right corner. */
|
|
4569
|
-
this.closable = true;
|
|
4570
|
-
/** Allows the modal content to decide the width of the modal. */
|
|
4571
|
-
this.autoWidth = false;
|
|
4572
|
-
/** Special property used for selecting DOM elements during automated UI testing. */
|
|
4573
|
-
this.thook = 'slideout';
|
|
4574
|
-
/** Will emit true on closing event. */
|
|
4575
|
-
this.ngvCloseEvent = new EventEmitter();
|
|
4576
|
-
this.ngvPositiveEvent = new EventEmitter();
|
|
4577
|
-
this.ngvNeutralEvent = new EventEmitter();
|
|
4578
|
-
this.ngvNegativeEvent = new EventEmitter();
|
|
4579
|
-
// appends methods for opening and closing modal to native element
|
|
4580
|
-
this.host.nativeElement.open = this.open.bind(this);
|
|
4581
|
-
this.host.nativeElement.close = this.close.bind(this);
|
|
4582
|
-
}
|
|
4583
|
-
ngOnInit() {
|
|
4584
|
-
this.shown = this.initiallyShown;
|
|
4585
|
-
if (this.shown)
|
|
4586
|
-
this.limitFocusable();
|
|
4587
|
-
}
|
|
4588
|
-
onAction(event, action) {
|
|
4589
|
-
event.preventDefault();
|
|
4590
|
-
switch (action) {
|
|
4591
|
-
case 'positive':
|
|
4592
|
-
this.ngvPositiveEvent.emit();
|
|
4593
|
-
break;
|
|
4594
|
-
case 'neutral':
|
|
4595
|
-
this.ngvNeutralEvent.emit();
|
|
4596
|
-
break;
|
|
4597
|
-
case 'negative':
|
|
4598
|
-
this.ngvNegativeEvent.emit();
|
|
4599
|
-
break;
|
|
4600
|
-
}
|
|
4601
|
-
this.close(event, 'action');
|
|
4602
|
-
}
|
|
4603
|
-
/**
|
|
4604
|
-
* Called on a modal element. Opens the modal and sets focus to the last focusable element in the modal.
|
|
4605
|
-
*
|
|
4606
|
-
* @param opener - reference to last focused element before opening modal
|
|
4607
|
-
* @returns - true
|
|
4608
|
-
*/
|
|
4609
|
-
open(opener) {
|
|
4610
|
-
this.shown = true;
|
|
4611
|
-
this.previous = opener || document.activeElement;
|
|
4612
|
-
this.limitFocusable();
|
|
4613
|
-
return true;
|
|
4614
|
-
}
|
|
4615
|
-
/**
|
|
4616
|
-
* Called on a modal element. Closes the modal and emits a `ngvCloseEvent`. Sets focus to the lats focused element if an element was sent in to open function.
|
|
4617
|
-
*
|
|
4618
|
-
* @param event
|
|
4619
|
-
* @param initiator
|
|
4620
|
-
*/
|
|
4621
|
-
close(event, initiator) {
|
|
4622
|
-
if (initiator === 'host' &&
|
|
4623
|
-
event instanceof MouseEvent &&
|
|
4624
|
-
event.target !== event.currentTarget)
|
|
4625
|
-
return;
|
|
4626
|
-
if (this.shown && this.closable) {
|
|
4627
|
-
this.ngvCloseEvent.emit(this.shown);
|
|
4628
|
-
this.shown = false;
|
|
4629
|
-
window.setTimeout(() => {
|
|
4630
|
-
if (this.previous)
|
|
4631
|
-
this.previous.focus();
|
|
4632
|
-
this.previous = undefined;
|
|
4633
|
-
});
|
|
4634
|
-
}
|
|
4635
|
-
}
|
|
4636
|
-
/** @internal */
|
|
4637
|
-
focusTrap(event) {
|
|
4638
|
-
if (event.key !== 'Tab')
|
|
4639
|
-
return;
|
|
4640
|
-
if (event.shiftKey) {
|
|
4641
|
-
// shift + tab
|
|
4642
|
-
if (this.lastFocusable &&
|
|
4643
|
-
document.activeElement === this.firstFocusable) {
|
|
4644
|
-
this.lastFocusable.focus();
|
|
4645
|
-
event.preventDefault();
|
|
4646
|
-
}
|
|
4647
|
-
}
|
|
4648
|
-
else {
|
|
4649
|
-
// tab
|
|
4650
|
-
if (this.firstFocusable &&
|
|
4651
|
-
document.activeElement === this.lastFocusable) {
|
|
4652
|
-
this.firstFocusable.focus();
|
|
4653
|
-
event.preventDefault();
|
|
4654
|
-
}
|
|
4655
|
-
}
|
|
4656
|
-
}
|
|
4657
|
-
limitFocusable() {
|
|
4658
|
-
window.setTimeout(() => {
|
|
4659
|
-
if (!this.slideOutRef)
|
|
4660
|
-
return;
|
|
4661
|
-
const focusable = this.slideOutRef.nativeElement.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
|
|
4662
|
-
this.firstFocusable = focusable[0];
|
|
4663
|
-
this.lastFocusable = focusable[focusable.length - 1];
|
|
4664
|
-
if (this.lastFocusable)
|
|
4665
|
-
this.lastFocusable.focus();
|
|
4666
|
-
});
|
|
4667
|
-
}
|
|
4668
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvSlideOutComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4669
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgvSlideOutComponent, selector: "ngv-slideout-modal", inputs: { side: "side", shown: "shown", initiallyShown: "initiallyShown", heading: "heading", title: "title", content: "content", closable: "closable", autoWidth: "autoWidth", thook: "thook", buttons: "buttons" }, outputs: { ngvCloseEvent: "ngvCloseEvent", ngvPositiveEvent: "ngvPositiveEvent", ngvNeutralEvent: "ngvNeutralEvent", ngvNegativeEvent: "ngvNegativeEvent" }, host: { listeners: { "click": "close($event,\"host\")", "document:keydown.escape": "close($event)", "keydown": "focusTrap($event)" } }, viewQueries: [{ propertyName: "slideOutRef", first: true, predicate: ["slideOut"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"shown\">\n <div\n [ngClass]=\"{\n 'gds-slide-out--left': fromLeft,\n 'gds-slide-out--right': !fromLeft\n }\"\n *transloco=\"let t\"\n [class.-active]=\"shown\"\n [attr.data-thook]=\"thook\"\n [attr.aria-hidden]=\"!shown\"\n [@modalAnimation]\n >\n <div\n #slideOut\n class=\"gds-slide-out\"\n [class.auto-width]=\"autoWidth\"\n [class.entered]=\"shown\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"sdv-modal-title\"\n aria-describedby=\"sdv-modal-body\"\n >\n <header class=\"gds-slide-out__header\">\n <h3 class=\"gds-slide-out__heading\" id=\"sdv-modal-title\">\n {{ heading || title || '' }}\n </h3>\n <button\n data-testid=\"modal-close-button\"\n class=\"close\"\n (click)=\"this.close()\"\n >\n <span className=\"sr-only\">Close</span>\n <i></i>\n </button>\n </header>\n\n <section id=\"sdv-modal-body\">\n <div class=\"gds-slide-out__content hide-if-empty\">\n <div *ngIf=\"content\" [innerHtml]=\"content\"></div>\n <ng-content></ng-content>\n </div>\n <ng-content select=\"[slot='outside-content']\"></ng-content>\n </section>\n\n <footer class=\"sdv-modal-dialog__actions\">\n <button\n class=\"danger\"\n type=\"reset\"\n [attr.data-thook]=\"'dialog-' + (_buttons?.negative || 'negative')\"\n (click)=\"onAction($event, 'negative')\"\n (keydown.enter)=\"onAction($event, 'negative')\"\n *ngIf=\"_buttons && _buttons.negative\"\n >\n {{ t(_buttons.negative) }}\n </button>\n\n <button\n class=\"secondary\"\n type=\"button\"\n [attr.data-thook]=\"'dialog-' + (_buttons?.neutral || 'neutral')\"\n (click)=\"onAction($event, 'neutral')\"\n (keydown.enter)=\"onAction($event, 'neutral')\"\n *ngIf=\"_buttons && _buttons.neutral\"\n >\n {{ t(_buttons.neutral) }}\n </button>\n\n <button\n type=\"submit\"\n [attr.data-thook]=\"'dialog-' + (_buttons?.positive || 'positive')\"\n (click)=\"onAction($event, 'positive')\"\n (keydown.enter)=\"onAction($event, 'positive')\"\n *ngIf=\"_buttons && _buttons.positive\"\n >\n {{ t(_buttons.positive) }}\n </button>\n </footer>\n </div>\n\n <div\n class=\"gds-backdrop\"\n data-thook=\"slideout-backdrop\"\n (click)=\"close()\"\n ></div>\n </div>\n</ng-container>\n", styles: [":host .gds-slide-out{background:var(--sg-modal-background);display:flex;flex-direction:column;box-shadow:var(--sg-modal-box-shadow);position:absolute;width:100%;z-index:var(--sg-z-index-modal);position:fixed;height:100dvh;max-width:512px;min-height:-webkit-fill-available;min-height:-moz-available;min-height:stretch;right:0;top:0;transition:transform .35s cubic-bezier(.33,1,.68,1);transform:translate(100%);z-index:1050}:host .gds-slide-out>.header,:host .gds-slide-out>header{padding:1rem;border-bottom:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--sg-border-color);display:inline-flex;justify-content:space-between;align-items:center;width:100%}:host .gds-slide-out>.header h3,:host .gds-slide-out>.header .h3,:host .gds-slide-out>header h3,:host .gds-slide-out>header .h3{margin-bottom:0;margin-top:0}:host .gds-slide-out>.header h3+.close,:host .gds-slide-out>.header .h3+.close,:host .gds-slide-out>header h3+.close,:host .gds-slide-out>header .h3+.close{margin:-7px}:host .gds-slide-out>.body{padding:1rem;overflow:auto;width:100%}:host .gds-slide-out>.body p{margin-bottom:0;margin-top:0}:host .gds-slide-out>.footer,:host .gds-slide-out>footer{padding:1rem;width:100%}@media (min-width: 36em){:host .gds-slide-out>.footer,:host .gds-slide-out>footer{display:flex;justify-content:flex-end}}@media (max-width: 35.98em){:host .gds-slide-out>.footer button+button,:host .gds-slide-out>.footer button+.button,:host .gds-slide-out>.footer .button+button,:host .gds-slide-out>.footer .button+.button,:host .gds-slide-out>footer button+button,:host .gds-slide-out>footer button+.button,:host .gds-slide-out>footer .button+button,:host .gds-slide-out>footer .button+.button{margin-top:.75rem}}@media (min-width: 36em){:host .gds-slide-out>.footer button+button,:host .gds-slide-out>.footer button+.button,:host .gds-slide-out>.footer .button+button,:host .gds-slide-out>.footer .button+.button,:host .gds-slide-out>footer button+button,:host .gds-slide-out>footer button+.button,:host .gds-slide-out>footer .button+button,:host .gds-slide-out>footer .button+.button{margin-left:.75rem}}:host .gds-slide-out.is-entering,:host .gds-slide-out.entered{transform:translate(0)}:host .gds-slide-out.is-exiting{transform:translate(100%)}:host .gds-slide-out.large{max-width:720px}:host .gds-slide-out>.body{flex:1 0}:host .gds-slide-out.left{left:0}:host .gds-slide-out.gds-slide-out--768{max-width:48rem}:host .gds-slide-out.gds-slide-out--960{max-width:60rem}:host .gds-slide-out.gds-slide-out--768 header,:host .gds-slide-out.gds-slide-out--960 header{padding:1.5rem 2rem 1rem}:host .gds-slide-out.gds-slide-out--768 .body,:host .gds-slide-out.gds-slide-out--960 .body{padding:2rem 2rem 1rem}:host .gds-slide-out.gds-slide-out--768 footer,:host .gds-slide-out.gds-slide-out--960 footer{padding:1rem 2rem 2rem}:host .gds-slide-out.auto-width{width:auto;max-width:initial}:host .hide-if-empty:empty{display:none}:host .gds-backdrop{background:#00000059;inset:0;position:fixed;z-index:1040;display:block;transition:opacity .5s cubic-bezier(.33,1,.68,1)}:host .gds-backdrop--transparent{opacity:0}:host .gds-backdrop--transparent.entered,:host .gds-backdrop--transparent.is-entering{opacity:1}:host .gds-backdrop--transparent.is-exiting{opacity:0}:host .gds-slide-out__content{padding:1rem;overflow:auto;width:100%}:host .gds-slide-out__content p{margin-bottom:0;margin-top:0}:host #sdv-modal-body{flex:1}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [
|
|
4670
|
-
trigger('modalAnimation', [
|
|
4671
|
-
transition(':enter', [
|
|
4672
|
-
query('.gds-slide-out', style({ transform: 'translateX(100%)' }), {
|
|
4673
|
-
optional: true,
|
|
4674
|
-
}),
|
|
4675
|
-
query('.gds-backdrop, [role=dialog]', style({ opacity: '0' }), {
|
|
4676
|
-
optional: true,
|
|
4677
|
-
}),
|
|
4678
|
-
group([
|
|
4679
|
-
query('.gds-slide-out', animate('350ms cubic-bezier(0.33, 1, 0.68, 1)', style({ transform: 'translateX(0)' })), { optional: true }),
|
|
4680
|
-
query('.gds-backdrop, [role=dialog]', animate('350ms cubic-bezier(0.33, 1, 0.68, 1)', style({ opacity: '1' })), { optional: true }),
|
|
4681
|
-
]),
|
|
4682
|
-
]),
|
|
4683
|
-
transition(':leave', [
|
|
4684
|
-
query('.gds-slide-out', style({ transform: 'translateX(0)' }), {
|
|
4685
|
-
optional: true,
|
|
4686
|
-
}),
|
|
4687
|
-
group([
|
|
4688
|
-
query('.gds-slide-out', animate('350ms cubic-bezier(0.33, 1, 0.68, 1)', style({ transform: 'translateX(100%)' })), { optional: true }),
|
|
4689
|
-
query('.gds-backdrop, [role=dialog]', animate('350ms cubic-bezier(0.33, 1, 0.68, 1)', style({ opacity: '0' })), { optional: true }),
|
|
4690
|
-
]),
|
|
4691
|
-
]),
|
|
4692
|
-
]),
|
|
4693
|
-
] }); }
|
|
4694
|
-
}
|
|
4695
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvSlideOutComponent, decorators: [{
|
|
4696
|
-
type: Component,
|
|
4697
|
-
args: [{ selector: 'ngv-slideout-modal', animations: [
|
|
4698
|
-
trigger('modalAnimation', [
|
|
4699
|
-
transition(':enter', [
|
|
4700
|
-
query('.gds-slide-out', style({ transform: 'translateX(100%)' }), {
|
|
4701
|
-
optional: true,
|
|
4702
|
-
}),
|
|
4703
|
-
query('.gds-backdrop, [role=dialog]', style({ opacity: '0' }), {
|
|
4704
|
-
optional: true,
|
|
4705
|
-
}),
|
|
4706
|
-
group([
|
|
4707
|
-
query('.gds-slide-out', animate('350ms cubic-bezier(0.33, 1, 0.68, 1)', style({ transform: 'translateX(0)' })), { optional: true }),
|
|
4708
|
-
query('.gds-backdrop, [role=dialog]', animate('350ms cubic-bezier(0.33, 1, 0.68, 1)', style({ opacity: '1' })), { optional: true }),
|
|
4709
|
-
]),
|
|
4710
|
-
]),
|
|
4711
|
-
transition(':leave', [
|
|
4712
|
-
query('.gds-slide-out', style({ transform: 'translateX(0)' }), {
|
|
4713
|
-
optional: true,
|
|
4714
|
-
}),
|
|
4715
|
-
group([
|
|
4716
|
-
query('.gds-slide-out', animate('350ms cubic-bezier(0.33, 1, 0.68, 1)', style({ transform: 'translateX(100%)' })), { optional: true }),
|
|
4717
|
-
query('.gds-backdrop, [role=dialog]', animate('350ms cubic-bezier(0.33, 1, 0.68, 1)', style({ opacity: '0' })), { optional: true }),
|
|
4718
|
-
]),
|
|
4719
|
-
]),
|
|
4720
|
-
]),
|
|
4721
|
-
], template: "<ng-container *ngIf=\"shown\">\n <div\n [ngClass]=\"{\n 'gds-slide-out--left': fromLeft,\n 'gds-slide-out--right': !fromLeft\n }\"\n *transloco=\"let t\"\n [class.-active]=\"shown\"\n [attr.data-thook]=\"thook\"\n [attr.aria-hidden]=\"!shown\"\n [@modalAnimation]\n >\n <div\n #slideOut\n class=\"gds-slide-out\"\n [class.auto-width]=\"autoWidth\"\n [class.entered]=\"shown\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"sdv-modal-title\"\n aria-describedby=\"sdv-modal-body\"\n >\n <header class=\"gds-slide-out__header\">\n <h3 class=\"gds-slide-out__heading\" id=\"sdv-modal-title\">\n {{ heading || title || '' }}\n </h3>\n <button\n data-testid=\"modal-close-button\"\n class=\"close\"\n (click)=\"this.close()\"\n >\n <span className=\"sr-only\">Close</span>\n <i></i>\n </button>\n </header>\n\n <section id=\"sdv-modal-body\">\n <div class=\"gds-slide-out__content hide-if-empty\">\n <div *ngIf=\"content\" [innerHtml]=\"content\"></div>\n <ng-content></ng-content>\n </div>\n <ng-content select=\"[slot='outside-content']\"></ng-content>\n </section>\n\n <footer class=\"sdv-modal-dialog__actions\">\n <button\n class=\"danger\"\n type=\"reset\"\n [attr.data-thook]=\"'dialog-' + (_buttons?.negative || 'negative')\"\n (click)=\"onAction($event, 'negative')\"\n (keydown.enter)=\"onAction($event, 'negative')\"\n *ngIf=\"_buttons && _buttons.negative\"\n >\n {{ t(_buttons.negative) }}\n </button>\n\n <button\n class=\"secondary\"\n type=\"button\"\n [attr.data-thook]=\"'dialog-' + (_buttons?.neutral || 'neutral')\"\n (click)=\"onAction($event, 'neutral')\"\n (keydown.enter)=\"onAction($event, 'neutral')\"\n *ngIf=\"_buttons && _buttons.neutral\"\n >\n {{ t(_buttons.neutral) }}\n </button>\n\n <button\n type=\"submit\"\n [attr.data-thook]=\"'dialog-' + (_buttons?.positive || 'positive')\"\n (click)=\"onAction($event, 'positive')\"\n (keydown.enter)=\"onAction($event, 'positive')\"\n *ngIf=\"_buttons && _buttons.positive\"\n >\n {{ t(_buttons.positive) }}\n </button>\n </footer>\n </div>\n\n <div\n class=\"gds-backdrop\"\n data-thook=\"slideout-backdrop\"\n (click)=\"close()\"\n ></div>\n </div>\n</ng-container>\n", styles: [":host .gds-slide-out{background:var(--sg-modal-background);display:flex;flex-direction:column;box-shadow:var(--sg-modal-box-shadow);position:absolute;width:100%;z-index:var(--sg-z-index-modal);position:fixed;height:100dvh;max-width:512px;min-height:-webkit-fill-available;min-height:-moz-available;min-height:stretch;right:0;top:0;transition:transform .35s cubic-bezier(.33,1,.68,1);transform:translate(100%);z-index:1050}:host .gds-slide-out>.header,:host .gds-slide-out>header{padding:1rem;border-bottom:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--sg-border-color);display:inline-flex;justify-content:space-between;align-items:center;width:100%}:host .gds-slide-out>.header h3,:host .gds-slide-out>.header .h3,:host .gds-slide-out>header h3,:host .gds-slide-out>header .h3{margin-bottom:0;margin-top:0}:host .gds-slide-out>.header h3+.close,:host .gds-slide-out>.header .h3+.close,:host .gds-slide-out>header h3+.close,:host .gds-slide-out>header .h3+.close{margin:-7px}:host .gds-slide-out>.body{padding:1rem;overflow:auto;width:100%}:host .gds-slide-out>.body p{margin-bottom:0;margin-top:0}:host .gds-slide-out>.footer,:host .gds-slide-out>footer{padding:1rem;width:100%}@media (min-width: 36em){:host .gds-slide-out>.footer,:host .gds-slide-out>footer{display:flex;justify-content:flex-end}}@media (max-width: 35.98em){:host .gds-slide-out>.footer button+button,:host .gds-slide-out>.footer button+.button,:host .gds-slide-out>.footer .button+button,:host .gds-slide-out>.footer .button+.button,:host .gds-slide-out>footer button+button,:host .gds-slide-out>footer button+.button,:host .gds-slide-out>footer .button+button,:host .gds-slide-out>footer .button+.button{margin-top:.75rem}}@media (min-width: 36em){:host .gds-slide-out>.footer button+button,:host .gds-slide-out>.footer button+.button,:host .gds-slide-out>.footer .button+button,:host .gds-slide-out>.footer .button+.button,:host .gds-slide-out>footer button+button,:host .gds-slide-out>footer button+.button,:host .gds-slide-out>footer .button+button,:host .gds-slide-out>footer .button+.button{margin-left:.75rem}}:host .gds-slide-out.is-entering,:host .gds-slide-out.entered{transform:translate(0)}:host .gds-slide-out.is-exiting{transform:translate(100%)}:host .gds-slide-out.large{max-width:720px}:host .gds-slide-out>.body{flex:1 0}:host .gds-slide-out.left{left:0}:host .gds-slide-out.gds-slide-out--768{max-width:48rem}:host .gds-slide-out.gds-slide-out--960{max-width:60rem}:host .gds-slide-out.gds-slide-out--768 header,:host .gds-slide-out.gds-slide-out--960 header{padding:1.5rem 2rem 1rem}:host .gds-slide-out.gds-slide-out--768 .body,:host .gds-slide-out.gds-slide-out--960 .body{padding:2rem 2rem 1rem}:host .gds-slide-out.gds-slide-out--768 footer,:host .gds-slide-out.gds-slide-out--960 footer{padding:1rem 2rem 2rem}:host .gds-slide-out.auto-width{width:auto;max-width:initial}:host .hide-if-empty:empty{display:none}:host .gds-backdrop{background:#00000059;inset:0;position:fixed;z-index:1040;display:block;transition:opacity .5s cubic-bezier(.33,1,.68,1)}:host .gds-backdrop--transparent{opacity:0}:host .gds-backdrop--transparent.entered,:host .gds-backdrop--transparent.is-entering{opacity:1}:host .gds-backdrop--transparent.is-exiting{opacity:0}:host .gds-slide-out__content{padding:1rem;overflow:auto;width:100%}:host .gds-slide-out__content p{margin-bottom:0;margin-top:0}:host #sdv-modal-body{flex:1}\n"] }]
|
|
4722
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { slideOutRef: [{
|
|
4723
|
-
type: ViewChild,
|
|
4724
|
-
args: ['slideOut']
|
|
4725
|
-
}], side: [{
|
|
4726
|
-
type: Input
|
|
4727
|
-
}], shown: [{
|
|
4728
|
-
type: Input
|
|
4729
|
-
}], initiallyShown: [{
|
|
4730
|
-
type: Input
|
|
4731
|
-
}], heading: [{
|
|
4732
|
-
type: Input
|
|
4733
|
-
}], title: [{
|
|
4734
|
-
type: Input
|
|
4735
|
-
}], content: [{
|
|
4736
|
-
type: Input
|
|
4737
|
-
}], closable: [{
|
|
4738
|
-
type: Input
|
|
4739
|
-
}], autoWidth: [{
|
|
4740
|
-
type: Input
|
|
4741
|
-
}], thook: [{
|
|
4742
|
-
type: Input
|
|
4743
|
-
}], buttons: [{
|
|
4744
|
-
type: Input
|
|
4745
|
-
}], ngvCloseEvent: [{
|
|
4746
|
-
type: Output
|
|
4747
|
-
}], ngvPositiveEvent: [{
|
|
4748
|
-
type: Output
|
|
4749
|
-
}], ngvNeutralEvent: [{
|
|
4750
|
-
type: Output
|
|
4751
|
-
}], ngvNegativeEvent: [{
|
|
4752
|
-
type: Output
|
|
4753
|
-
}], close: [{
|
|
4754
|
-
type: HostListener,
|
|
4755
|
-
args: ['click', ['$event', '"host"']]
|
|
4756
|
-
}, {
|
|
4757
|
-
type: HostListener,
|
|
4758
|
-
args: ['document:keydown.escape', ['$event']]
|
|
4759
|
-
}], focusTrap: [{
|
|
4760
|
-
type: HostListener,
|
|
4761
|
-
args: ['keydown', ['$event']]
|
|
4762
|
-
}] } });
|
|
4763
|
-
|
|
4764
|
-
class NgvModalModule {
|
|
4765
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
4766
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgvModalModule, declarations: [NgvDialogComponent,
|
|
4767
|
-
NgvSlideOutComponent,
|
|
4768
|
-
NgvFoldOutComponent,
|
|
4769
|
-
NgvFoldOutOptionDirective], imports: [CommonModule, NgvButtonModule$1], exports: [NgvDialogComponent,
|
|
4770
|
-
NgvSlideOutComponent,
|
|
4771
|
-
NgvFoldOutComponent,
|
|
4772
|
-
NgvFoldOutOptionDirective] }); }
|
|
4773
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvModalModule, imports: [CommonModule, NgvButtonModule$1] }); }
|
|
4774
|
-
}
|
|
4775
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvModalModule, decorators: [{
|
|
4776
|
-
type: NgModule,
|
|
4777
|
-
args: [{
|
|
4778
|
-
imports: [CommonModule, NgvButtonModule$1],
|
|
4779
|
-
declarations: [
|
|
4780
|
-
NgvDialogComponent,
|
|
4781
|
-
NgvSlideOutComponent,
|
|
4782
|
-
NgvFoldOutComponent,
|
|
4783
|
-
NgvFoldOutOptionDirective,
|
|
4784
|
-
],
|
|
4785
|
-
exports: [
|
|
4786
|
-
NgvDialogComponent,
|
|
4787
|
-
NgvSlideOutComponent,
|
|
4788
|
-
NgvFoldOutComponent,
|
|
4789
|
-
NgvFoldOutOptionDirective,
|
|
4790
|
-
],
|
|
4791
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
4792
|
-
}]
|
|
4793
|
-
}] });
|
|
4794
|
-
|
|
4795
|
-
/** @internal Internal class used to uncheck radio buttons with the matching name. */
|
|
4796
|
-
class NgvRadioControlRegistry {
|
|
4797
|
-
constructor() {
|
|
4798
|
-
this._radios = [];
|
|
4799
|
-
}
|
|
4800
|
-
add(control, radio) {
|
|
4801
|
-
this._radios.push([control, radio]);
|
|
4802
|
-
}
|
|
4803
|
-
remove(radio) {
|
|
4804
|
-
for (let i = this._radios.length - 1; i >= 0; --i) {
|
|
4805
|
-
if (this._radios[i][1] === radio) {
|
|
4806
|
-
this._radios.splice(i, 1);
|
|
4807
|
-
return;
|
|
4808
|
-
}
|
|
4809
|
-
}
|
|
4810
|
-
}
|
|
4811
|
-
select(radio) {
|
|
4812
|
-
this._radios.forEach((controlPair) => {
|
|
4813
|
-
if (this._isSameGroup(controlPair, radio) && controlPair[1] !== radio) {
|
|
4814
|
-
controlPair[1].writeValue(radio.value);
|
|
4815
|
-
}
|
|
4816
|
-
});
|
|
4817
|
-
}
|
|
4818
|
-
_isSameGroup(controlPair, radio) {
|
|
4819
|
-
if (!controlPair[0].control)
|
|
4820
|
-
return false;
|
|
4821
|
-
return (
|
|
4822
|
-
//@ts-expect-error internal properties not exposed
|
|
4823
|
-
controlPair[0]._parent === radio.ngControl._parent &&
|
|
4824
|
-
controlPair[1].name === radio.name);
|
|
4825
|
-
}
|
|
4826
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvRadioControlRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4827
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvRadioControlRegistry }); }
|
|
4828
|
-
}
|
|
4829
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvRadioControlRegistry, decorators: [{
|
|
4830
|
-
type: Injectable
|
|
4831
|
-
}] });
|
|
4832
|
-
/**
|
|
4833
|
-
* Use radio buttons when users must select one option in a list with exclusive options out of a set of two or more options.
|
|
4834
|
-
* https://designlibrary.sebgroup.com/components/component-radiobutton
|
|
4835
|
-
*/
|
|
4836
|
-
class NgvRadioComponent extends NgvBaseControlValueAccessorComponent$1 {
|
|
4837
|
-
/**
|
|
4838
|
-
* Creates a new RadioComponent
|
|
4839
|
-
* @param ngControl optional FormControl provided when component is used in a form, through dependency injection.
|
|
4840
|
-
* @param registry internal registry used to uncheck radio buttons with the matching name, through dependency injection.
|
|
4841
|
-
* @param cdr change detection reference for rendering purposes.
|
|
4842
|
-
*/
|
|
4843
|
-
constructor(ngControl, translocoScope, registry, cdr) {
|
|
4844
|
-
super(ngControl, translocoScope, cdr);
|
|
4845
|
-
this.ngControl = ngControl;
|
|
4846
|
-
this.translocoScope = translocoScope;
|
|
4847
|
-
this.registry = registry;
|
|
4848
|
-
this.cdr = cdr;
|
|
4849
|
-
/** Special property used for selecting DOM elements during automated UI testing. */
|
|
4850
|
-
this.thook = 'radio';
|
|
4851
|
-
}
|
|
4852
|
-
ngOnInit() {
|
|
4853
|
-
super.ngOnInit();
|
|
4854
|
-
this._checkName();
|
|
4855
|
-
this.registry.add(this.ngControl, this);
|
|
4856
|
-
}
|
|
4857
|
-
ngOnDestroy() {
|
|
4858
|
-
this.registry.remove(this);
|
|
4859
|
-
}
|
|
4860
|
-
/** @internal */
|
|
4861
|
-
onInputChange(event) {
|
|
4862
|
-
event.stopPropagation();
|
|
4863
|
-
if (this.disabled)
|
|
4864
|
-
return;
|
|
4865
|
-
this.onChange(this.state);
|
|
4866
|
-
}
|
|
4867
|
-
/** Writes a new value of true or false based on if argument matches this components value property. */
|
|
4868
|
-
writeValue(value) {
|
|
4869
|
-
// Phantom null value on first load https://github.com/angular/angular/pull/38140
|
|
4870
|
-
super.writeValue(value === this.value);
|
|
4871
|
-
}
|
|
4872
|
-
/** Registers a callback function that is called when the child input element's value changes. */
|
|
4873
|
-
registerOnChange(fn) {
|
|
4874
|
-
// Override default to update registry
|
|
4875
|
-
this.onChange = () => {
|
|
4876
|
-
fn(this.value);
|
|
4877
|
-
this.registry.select(this);
|
|
4878
|
-
};
|
|
4879
|
-
}
|
|
4880
|
-
/** Checks that the name properties match and updates name property if only formControlName is given. */
|
|
4881
|
-
_checkName() {
|
|
4882
|
-
if (this.name &&
|
|
4883
|
-
this.formControlName &&
|
|
4884
|
-
this.name !== this.formControlName) {
|
|
4885
|
-
throw new Error(`
|
|
4886
|
-
If you define both a name and a formControlName attribute on your radio button, their values
|
|
4887
|
-
must match. Ex: <input type="radio" formControlName="food" name="food">
|
|
4888
|
-
`);
|
|
4889
|
-
}
|
|
4890
|
-
if (!this.name && this.formControlName)
|
|
4891
|
-
this.name = this.formControlName;
|
|
4892
|
-
}
|
|
4893
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvRadioComponent, deps: [{ token: i1$3.NgControl, optional: true, self: true }, { token: TRANSLOCO_SCOPE, optional: true }, { token: NgvRadioControlRegistry }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4894
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgvRadioComponent, selector: "ngv-radio", inputs: { thook: "thook", formControlName: "formControlName" }, host: { properties: { "attr.data-thook": "this.thook" } }, providers: [NgvRadioControlRegistry], usesInheritance: true, ngImport: i0, template: "<!-- LOCKED INPUT -->\n<div *ngIf=\"locked && state\" class=\"sdv-field-radio-wrap\">\n <div\n [id]=\"id + '-radio'\"\n class=\"ngv-field--locked\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n >\n {{ label }}\n <ng-template\n *ngTemplateOutlet=\"labelContentTpl ?? null; context: { $implicit: value }\"\n ></ng-template>\n </div>\n</div>\n\n<!-- INPUT WRAPPER -->\n<ng-container *ngIf=\"!locked\">\n <div class=\"sdv-field-radio-wrap\">\n <!-- RADIO BUTTON FIELD -->\n <label [attr.for]=\"id + '-radio'\" class=\"form-control\">\n <input\n #input\n type=\"radio\"\n [attr.id]=\"id + '-radio'\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [attr.required]=\"required\"\n [disabled]=\"disabled\"\n [autofocus]=\"autofocus\"\n [attr.aria-label]=\"description\"\n [checked]=\"state\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"onInputChange($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n />\n\n <!-- LABEL -->\n {{ label }}\n <ng-template\n *ngTemplateOutlet=\"\n labelContentTpl ?? null;\n context: { $implicit: value }\n \"\n ></ng-template>\n <i></i>\n </label>\n </div>\n\n <!-- ERRORS -->\n <ng-container *transloco=\"let t; read: scope\">\n <label\n class=\"sdv-field-notice sdv-field-notice--error\"\n [attr.for]=\"id + '-radio'\"\n *ngIf=\"invalid && (error || ngControl?.invalid)\"\n >\n <span *ngIf=\"error; else errorsRef\">{{ error }}</span>\n <ng-template #errorsRef>\n <span *ngIf=\"firstError as error\">\n {{ t('error.field' + error?.code, error?.params) }}\n </span>\n </ng-template>\n </label>\n </ng-container>\n\n <!-- CHILDREN -->\n <ng-content></ng-content>\n</ng-container>\n", styles: [":host .ngv-field--locked{display:inline-block;border-radius:.25em;position:relative;min-height:2em;padding:.5em .75em .5em 0}:host .form-control{padding:.75rem 1rem;border:1px solid transparent;border-radius:var(--gds-sys-shape-corner-medium);align-items:center;cursor:pointer;display:flex;flex-direction:row-reverse;font:inherit;justify-content:flex-end;position:relative;user-select:none;-webkit-user-select:none}:host .form-control:has(input:disabled){cursor:not-allowed}:host label.form-control input[type=radio]{cursor:pointer;height:0;opacity:0;position:absolute;width:0;z-index:-1}:host label.form-control:has(input[type=radio]:focus-visible):focus:not(:focus-visible){box-shadow:none;outline:0}:host label.form-control:has(input[type=radio]:focus-visible):focus,:host label.form-control:has(input[type=radio]:focus-visible):focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host label.form-control input[type=radio]~i{margin-right:.75rem;margin-top:.0625rem;flex-shrink:0;position:relative;border-radius:var(--gds-comp-radio-border-radius);display:flex;height:var(--gds-comp-radio-container-height);width:var(--gds-comp-radio-container-width);box-shadow:inset 0 0 0 .05rem var(--gds-comp-radio-border)}:host label.form-control input[type=radio]~i:after{content:\"\";width:100%;height:100%;border-radius:var(--gds-comp-radio-border-radius);background-color:var(--gds-comp-radio-dot);transform:scale(.5)}:host label.form-control:hover input[type=radio]:not(.disabled,:disabled)~i{box-shadow:inset 0 0 0 .05rem var(--gds-comp-radio-border-hover)}:host label.form-control:hover input[type=radio]:not(.disabled,:disabled)~i:after{background-color:var(--gds-comp-radio-dot-hover)}:host label.form-control input[type=radio]:checked:not(.disabled,:disabled)~i{box-shadow:inset 0 0 0 .05rem var(--gds-comp-radio-border-checked)}:host label.form-control input[type=radio]:checked:not(.disabled,:disabled)~i:after{background-color:var(--gds-comp-radio-dot-checked)}:host label.form-control:hover input[type=radio]:checked:not(.disabled,:disabled)~i{box-shadow:inset 0 0 0 .05rem var(--gds-comp-radio-border-checked-hover)}:host label.form-control:hover input[type=radio]:checked:not(.disabled,:disabled)~i:after{background-color:var(--gds-comp-radio-dot-checked-hover)}:host .was-validated label.form-control input[type=radio]:not(.is-invalid):valid~i,:host label.form-control input[type=radio].is-valid~i{--border-color: var(--intent-success-background);--sg-border-color: var(--intent-success-background)}:host .was-validated label.form-control input[type=radio]:not(.is-valid):invalid~i,:host label.form-control input[type=radio].is-invalid~i{--border-color: var(--intent-danger-background);--sg-border-color: var(--intent-danger-background)}:host label.form-control input[type=radio]:disabled~i,:host label.form-control input[type=radio].disabled~i{background-color:var(--gds-comp-radio-container-background-disabled);box-shadow:inset 0 0 0 .05rem var(--gds-comp-radio-border-disabled)}:host label.form-control input[type=radio]:disabled~span,:host label.form-control input[type=radio].disabled~span{color:var(--text-disabled-color)!important;cursor:not-allowed}:host label.form-control input[type=radio]:disabled~span::placeholder,:host label.form-control input[type=radio].disabled~span::placeholder{color:var(--text-disabled-color)}:host label.form-control input[type=radio]:disabled:checked~i:after,:host label.form-control input[type=radio]:checked.disabled~i:after{background-color:var(--gds-comp-radio-dot-disabled)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }] }); }
|
|
4895
|
-
}
|
|
4896
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvRadioComponent, decorators: [{
|
|
4897
|
-
type: Component,
|
|
4898
|
-
args: [{ selector: 'ngv-radio', providers: [NgvRadioControlRegistry], template: "<!-- LOCKED INPUT -->\n<div *ngIf=\"locked && state\" class=\"sdv-field-radio-wrap\">\n <div\n [id]=\"id + '-radio'\"\n class=\"ngv-field--locked\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n >\n {{ label }}\n <ng-template\n *ngTemplateOutlet=\"labelContentTpl ?? null; context: { $implicit: value }\"\n ></ng-template>\n </div>\n</div>\n\n<!-- INPUT WRAPPER -->\n<ng-container *ngIf=\"!locked\">\n <div class=\"sdv-field-radio-wrap\">\n <!-- RADIO BUTTON FIELD -->\n <label [attr.for]=\"id + '-radio'\" class=\"form-control\">\n <input\n #input\n type=\"radio\"\n [attr.id]=\"id + '-radio'\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [attr.required]=\"required\"\n [disabled]=\"disabled\"\n [autofocus]=\"autofocus\"\n [attr.aria-label]=\"description\"\n [checked]=\"state\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"onInputChange($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n />\n\n <!-- LABEL -->\n {{ label }}\n <ng-template\n *ngTemplateOutlet=\"\n labelContentTpl ?? null;\n context: { $implicit: value }\n \"\n ></ng-template>\n <i></i>\n </label>\n </div>\n\n <!-- ERRORS -->\n <ng-container *transloco=\"let t; read: scope\">\n <label\n class=\"sdv-field-notice sdv-field-notice--error\"\n [attr.for]=\"id + '-radio'\"\n *ngIf=\"invalid && (error || ngControl?.invalid)\"\n >\n <span *ngIf=\"error; else errorsRef\">{{ error }}</span>\n <ng-template #errorsRef>\n <span *ngIf=\"firstError as error\">\n {{ t('error.field' + error?.code, error?.params) }}\n </span>\n </ng-template>\n </label>\n </ng-container>\n\n <!-- CHILDREN -->\n <ng-content></ng-content>\n</ng-container>\n", styles: [":host .ngv-field--locked{display:inline-block;border-radius:.25em;position:relative;min-height:2em;padding:.5em .75em .5em 0}:host .form-control{padding:.75rem 1rem;border:1px solid transparent;border-radius:var(--gds-sys-shape-corner-medium);align-items:center;cursor:pointer;display:flex;flex-direction:row-reverse;font:inherit;justify-content:flex-end;position:relative;user-select:none;-webkit-user-select:none}:host .form-control:has(input:disabled){cursor:not-allowed}:host label.form-control input[type=radio]{cursor:pointer;height:0;opacity:0;position:absolute;width:0;z-index:-1}:host label.form-control:has(input[type=radio]:focus-visible):focus:not(:focus-visible){box-shadow:none;outline:0}:host label.form-control:has(input[type=radio]:focus-visible):focus,:host label.form-control:has(input[type=radio]:focus-visible):focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host label.form-control input[type=radio]~i{margin-right:.75rem;margin-top:.0625rem;flex-shrink:0;position:relative;border-radius:var(--gds-comp-radio-border-radius);display:flex;height:var(--gds-comp-radio-container-height);width:var(--gds-comp-radio-container-width);box-shadow:inset 0 0 0 .05rem var(--gds-comp-radio-border)}:host label.form-control input[type=radio]~i:after{content:\"\";width:100%;height:100%;border-radius:var(--gds-comp-radio-border-radius);background-color:var(--gds-comp-radio-dot);transform:scale(.5)}:host label.form-control:hover input[type=radio]:not(.disabled,:disabled)~i{box-shadow:inset 0 0 0 .05rem var(--gds-comp-radio-border-hover)}:host label.form-control:hover input[type=radio]:not(.disabled,:disabled)~i:after{background-color:var(--gds-comp-radio-dot-hover)}:host label.form-control input[type=radio]:checked:not(.disabled,:disabled)~i{box-shadow:inset 0 0 0 .05rem var(--gds-comp-radio-border-checked)}:host label.form-control input[type=radio]:checked:not(.disabled,:disabled)~i:after{background-color:var(--gds-comp-radio-dot-checked)}:host label.form-control:hover input[type=radio]:checked:not(.disabled,:disabled)~i{box-shadow:inset 0 0 0 .05rem var(--gds-comp-radio-border-checked-hover)}:host label.form-control:hover input[type=radio]:checked:not(.disabled,:disabled)~i:after{background-color:var(--gds-comp-radio-dot-checked-hover)}:host .was-validated label.form-control input[type=radio]:not(.is-invalid):valid~i,:host label.form-control input[type=radio].is-valid~i{--border-color: var(--intent-success-background);--sg-border-color: var(--intent-success-background)}:host .was-validated label.form-control input[type=radio]:not(.is-valid):invalid~i,:host label.form-control input[type=radio].is-invalid~i{--border-color: var(--intent-danger-background);--sg-border-color: var(--intent-danger-background)}:host label.form-control input[type=radio]:disabled~i,:host label.form-control input[type=radio].disabled~i{background-color:var(--gds-comp-radio-container-background-disabled);box-shadow:inset 0 0 0 .05rem var(--gds-comp-radio-border-disabled)}:host label.form-control input[type=radio]:disabled~span,:host label.form-control input[type=radio].disabled~span{color:var(--text-disabled-color)!important;cursor:not-allowed}:host label.form-control input[type=radio]:disabled~span::placeholder,:host label.form-control input[type=radio].disabled~span::placeholder{color:var(--text-disabled-color)}:host label.form-control input[type=radio]:disabled:checked~i:after,:host label.form-control input[type=radio]:checked.disabled~i:after{background-color:var(--gds-comp-radio-dot-disabled)}\n"] }]
|
|
4899
|
-
}], ctorParameters: function () { return [{ type: i1$3.NgControl, decorators: [{
|
|
4900
|
-
type: Self
|
|
4901
|
-
}, {
|
|
4902
|
-
type: Optional
|
|
4903
|
-
}] }, { type: undefined, decorators: [{
|
|
4904
|
-
type: Optional
|
|
4905
|
-
}, {
|
|
4906
|
-
type: Inject,
|
|
4907
|
-
args: [TRANSLOCO_SCOPE]
|
|
4908
|
-
}] }, { type: NgvRadioControlRegistry }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { thook: [{
|
|
4909
|
-
type: HostBinding,
|
|
4910
|
-
args: ['attr.data-thook']
|
|
4911
|
-
}, {
|
|
4912
|
-
type: Input
|
|
4913
|
-
}], formControlName: [{
|
|
4914
|
-
type: Input
|
|
4915
|
-
}] } });
|
|
4916
|
-
|
|
4917
|
-
class NgvRadioModule {
|
|
4918
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvRadioModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
4919
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgvRadioModule, declarations: [NgvRadioComponent], imports: [CommonModule, NgvI18nModule$1], exports: [NgvRadioComponent] }); }
|
|
4920
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvRadioModule, imports: [CommonModule, NgvI18nModule$1] }); }
|
|
4921
|
-
}
|
|
4922
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvRadioModule, decorators: [{
|
|
4923
|
-
type: NgModule,
|
|
4924
|
-
args: [{
|
|
4925
|
-
declarations: [NgvRadioComponent],
|
|
4926
|
-
imports: [CommonModule, NgvI18nModule$1],
|
|
4927
|
-
exports: [NgvRadioComponent],
|
|
4928
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
4929
|
-
}]
|
|
4930
|
-
}] });
|
|
4931
|
-
|
|
4932
|
-
/** Textarea fields allow users to add and edit longer or multiple line text. */
|
|
4933
|
-
class NgvTextareaComponent extends NgvBaseControlValueAccessorComponent$1 {
|
|
4934
|
-
/** Minimum length (number of characters) of value. */
|
|
4935
|
-
set minLength(length) {
|
|
4936
|
-
this._minlength = length;
|
|
4937
|
-
this.cdr.detectChanges();
|
|
4938
|
-
}
|
|
4939
|
-
get minlength() {
|
|
4940
|
-
return this._minlength;
|
|
4941
|
-
}
|
|
4942
|
-
/**
|
|
4943
|
-
* Minimum length (number of characters) of value.
|
|
4944
|
-
* @deprecated minlength triggers angular-template-validation. Use @Input() minLength instead.
|
|
4945
|
-
*/
|
|
4946
|
-
set minlength(length) {
|
|
4947
|
-
this._minlength = length;
|
|
4948
|
-
this.cdr.detectChanges();
|
|
4949
|
-
}
|
|
4950
|
-
/** Maximum length (number of characters) of value. */
|
|
4951
|
-
set maxLength(length) {
|
|
4952
|
-
this._maxlength = length;
|
|
4953
|
-
this.cdr.detectChanges();
|
|
4954
|
-
}
|
|
4955
|
-
get maxlength() {
|
|
4956
|
-
return this._maxlength;
|
|
4957
|
-
}
|
|
4958
|
-
/**
|
|
4959
|
-
* Maximum length (number of characters) of value.
|
|
4960
|
-
* @deprecated maxlength triggers angular-template-validation. Use @Input() maxLength instead.
|
|
4961
|
-
*/
|
|
4962
|
-
set maxlength(length) {
|
|
4963
|
-
this._maxlength = length;
|
|
4964
|
-
this.cdr.detectChanges();
|
|
4965
|
-
}
|
|
4966
|
-
/** Returns if maxlength is used */
|
|
4967
|
-
get hasMaxLength() {
|
|
4968
|
-
return !!this.maxlength && this.maxlength !== Number.MAX_SAFE_INTEGER;
|
|
4969
|
-
}
|
|
4970
|
-
constructor(ngControl, translocoScope, cdr) {
|
|
4971
|
-
super(ngControl, translocoScope, cdr);
|
|
4972
|
-
this.ngControl = ngControl;
|
|
4973
|
-
this.translocoScope = translocoScope;
|
|
4974
|
-
this.cdr = cdr;
|
|
4975
|
-
/** Special property used for selecting DOM elements during automated UI testing. */
|
|
4976
|
-
this.thook = 'textarea';
|
|
4977
|
-
/** If set to true, the value will not be editable. */
|
|
4978
|
-
this.readonly = false;
|
|
4979
|
-
this._maxlength = Number.MAX_SAFE_INTEGER;
|
|
4980
|
-
this._minlength = 0;
|
|
4981
|
-
}
|
|
4982
|
-
/** @internal */
|
|
4983
|
-
onInput(event) {
|
|
4984
|
-
event.stopPropagation();
|
|
4985
|
-
if (this.disabled)
|
|
4986
|
-
return;
|
|
4987
|
-
this.state = event.target.value;
|
|
4988
|
-
this.onChange(this.state);
|
|
4989
|
-
}
|
|
4990
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTextareaComponent, deps: [{ token: i1$3.NgControl, optional: true, self: true }, { token: TRANSLOCO_SCOPE, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4991
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgvTextareaComponent, selector: "ngv-textarea", inputs: { thook: "thook", placeholder: "placeholder", readonly: "readonly", minLength: "minLength", minlength: "minlength", maxLength: "maxLength", maxlength: "maxlength", rows: "rows" }, host: { properties: { "attr.data-thook": "this.thook" } }, usesInheritance: true, ngImport: i0, template: "<!-- LABEL -->\n<label [id]=\"id + '-label'\"\n class=\"sdv-field-label hide-if-empty\"\n [attr.for]=\"id + '-textarea'\"\n *transloco=\"let t; read: scope\">\n <ng-template *ngTemplateOutlet=\"labelContentTpl || basicLabelContentTpl\"></ng-template>\n <ng-template #basicLabelContentTpl>\n <!-- to trigger css:empty if no label was added -->\n <ng-container *ngIf=\"label\">\n {{ label }}\n <span *ngIf=\"optional === true || required !== true && optional !== false\"\n class=\"sdv-field-label--optional\">\n ({{ t('label.optional') }})\n </span>\n </ng-container>\n </ng-template>\n</label>\n\n<!-- DESCRIPTION -->\n<div class=\"sdv-field-label--small description\">{{description}}</div>\n\n<!-- LOCKED INPUT -->\n<ng-container *ngIf=\"locked\">\n <div [id]=\"id + '-textarea'\"\n class=\"ngv-field--locked\"\n [attr.name]=\"name\"\n [attr.value]=\"state\"\n [attr.role]=\"role\">\n <span *ngIf=\"!state\"\n class=\"unset-state\">-</span>\n <ng-container *ngIf=\"state\">\n {{ state }}\n </ng-container>\n </div>\n</ng-container>\n\n<!-- INPUT FIELD -->\n<ng-container *ngIf=\"!locked\">\n <textarea #input\n [id]=\"id + '-textarea'\"\n class=\"sdv-field\"\n [ngClass]=\"{ 'no-resize': !!rows }\"\n [class.ngv-field--error]=\"invalid\"\n [attr.name]=\"name\"\n [attr.required]=\"required\"\n [disabled]=\"disabled\"\n [autofocus]=\"autofocus\"\n [readOnly]=\"readonly\"\n [attr.maxlength]=\"maxlength\"\n [attr.minlength]=\"minlength\"\n [attr.role]=\"role\"\n [attr.rows]=\"rows\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"description\"\n [value]=\"state\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\">\n</textarea>\n\n <!-- ERRORS -->\n <div class=\"error-wrapper\"\n *transloco=\"let t; read: scope\">\n <label class=\"sdv-field-notice sdv-field-notice--error\"\n [attr.for]=\"id + '-textarea'\"\n *ngIf=\"invalid && (error || ngControl?.invalid)\">\n <span *ngIf=\"error; else errorsRef\">{{error}}</span>\n <ng-template #errorsRef>\n <span *ngIf=\"firstError as error\">\n {{ t('error.field' + error?.code, error?.params) }}\n </span>\n </ng-template>\n </label>\n\n <ng-container *ngIf=\"hasMaxLength\">\n <label\n *ngvCharacterCountdown=\"maxlength; currentLength: (inputRef?.nativeElement?.value ?? '').length; charactersLeft as charactersLeft\"\n class=\"sdv-field-notice\"\n style=\"text-align: right\">\n {{ charactersLeft }} {{ t('label.maxlength')}}\n </label>\n </ng-container>\n </div>\n\n <!-- CHILDREN -->\n <ng-content></ng-content>\n\n</ng-container>", styles: [":host textarea{padding:.75rem 1rem;border-radius:var(--sg-border-radius);border:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--sg-border-color);align-items:center;background-color:var(--sg-form-control-bg);color:var(--text-primary-color);display:flex;justify-content:center;resize:vertical}:host textarea:focus:not(:focus-visible){box-shadow:none;outline:0}:host textarea:focus,:host textarea:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}@media screen and (-ms-high-contrast: active){:host textarea{border:2px solid currentcolor}}:host textarea:hover{background-color:var(--gds-ref-pallet-base100)}:host textarea:disabled,:host textarea.disabled,:host textarea[aria-disabled=true]{background:var(--sg-form-control-bg-disabled)!important;color:var(--text-disabled-color)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed}:host textarea:disabled::placeholder,:host textarea.disabled::placeholder,:host textarea[aria-disabled=true]::placeholder{color:var(--text-disabled-color)}:host label:not(.sdv-field-notice){margin-bottom:.5rem}:host label:not(.sdv-field-notice):is(label){margin-bottom:0}:host label:not(.sdv-field-notice).form-control{width:-moz-fit-content;width:fit-content}@supports (-moz-appearance: none){:host label:not(.sdv-field-notice).form-control:focus:not(:focus-visible){box-shadow:none;outline:0}:host label:not(.sdv-field-notice).form-control:focus,:host label:not(.sdv-field-notice).form-control:focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}}:host label:not(.sdv-field-notice):not(.form-control){font-weight:500;width:100%;line-height:1.25rem}:host label:not(.sdv-field-notice)+input,:host label:not(.sdv-field-notice)+textarea,fieldset :host label:not(.sdv-field-notice)+div,:host label:not(.sdv-field-notice)+button,:host label:not(.sdv-field-notice)+.group-stepper,:host label:not(.sdv-field-notice)+.stepper-wrapper,:host label:not(.sdv-field-notice)+.group{margin-top:.5rem}:host label:not(.sdv-field-notice)+.form-info{margin-bottom:.5rem}:host label:is(.sdv-field-label){margin-bottom:.5rem}:host .hide-if-empty:empty{display:none}:host .unset-state{padding-left:.5rem}:host .sdv-field-label--optional{font-weight:400}:host textarea{width:100%;max-width:100%}:host .description{margin-bottom:.5rem}:host .error-wrapper{margin-top:.5rem}:host .no-resize{resize:none}:host .no-resize::-webkit-scrollbar{-webkit-appearance:none}:host .no-resize::-webkit-scrollbar-thumb{border-radius:.5rem}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
4992
|
-
}
|
|
4993
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTextareaComponent, decorators: [{
|
|
4994
|
-
type: Component,
|
|
4995
|
-
args: [{ selector: 'ngv-textarea', template: "<!-- LABEL -->\n<label [id]=\"id + '-label'\"\n class=\"sdv-field-label hide-if-empty\"\n [attr.for]=\"id + '-textarea'\"\n *transloco=\"let t; read: scope\">\n <ng-template *ngTemplateOutlet=\"labelContentTpl || basicLabelContentTpl\"></ng-template>\n <ng-template #basicLabelContentTpl>\n <!-- to trigger css:empty if no label was added -->\n <ng-container *ngIf=\"label\">\n {{ label }}\n <span *ngIf=\"optional === true || required !== true && optional !== false\"\n class=\"sdv-field-label--optional\">\n ({{ t('label.optional') }})\n </span>\n </ng-container>\n </ng-template>\n</label>\n\n<!-- DESCRIPTION -->\n<div class=\"sdv-field-label--small description\">{{description}}</div>\n\n<!-- LOCKED INPUT -->\n<ng-container *ngIf=\"locked\">\n <div [id]=\"id + '-textarea'\"\n class=\"ngv-field--locked\"\n [attr.name]=\"name\"\n [attr.value]=\"state\"\n [attr.role]=\"role\">\n <span *ngIf=\"!state\"\n class=\"unset-state\">-</span>\n <ng-container *ngIf=\"state\">\n {{ state }}\n </ng-container>\n </div>\n</ng-container>\n\n<!-- INPUT FIELD -->\n<ng-container *ngIf=\"!locked\">\n <textarea #input\n [id]=\"id + '-textarea'\"\n class=\"sdv-field\"\n [ngClass]=\"{ 'no-resize': !!rows }\"\n [class.ngv-field--error]=\"invalid\"\n [attr.name]=\"name\"\n [attr.required]=\"required\"\n [disabled]=\"disabled\"\n [autofocus]=\"autofocus\"\n [readOnly]=\"readonly\"\n [attr.maxlength]=\"maxlength\"\n [attr.minlength]=\"minlength\"\n [attr.role]=\"role\"\n [attr.rows]=\"rows\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"description\"\n [value]=\"state\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\">\n</textarea>\n\n <!-- ERRORS -->\n <div class=\"error-wrapper\"\n *transloco=\"let t; read: scope\">\n <label class=\"sdv-field-notice sdv-field-notice--error\"\n [attr.for]=\"id + '-textarea'\"\n *ngIf=\"invalid && (error || ngControl?.invalid)\">\n <span *ngIf=\"error; else errorsRef\">{{error}}</span>\n <ng-template #errorsRef>\n <span *ngIf=\"firstError as error\">\n {{ t('error.field' + error?.code, error?.params) }}\n </span>\n </ng-template>\n </label>\n\n <ng-container *ngIf=\"hasMaxLength\">\n <label\n *ngvCharacterCountdown=\"maxlength; currentLength: (inputRef?.nativeElement?.value ?? '').length; charactersLeft as charactersLeft\"\n class=\"sdv-field-notice\"\n style=\"text-align: right\">\n {{ charactersLeft }} {{ t('label.maxlength')}}\n </label>\n </ng-container>\n </div>\n\n <!-- CHILDREN -->\n <ng-content></ng-content>\n\n</ng-container>", styles: [":host textarea{padding:.75rem 1rem;border-radius:var(--sg-border-radius);border:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--sg-border-color);align-items:center;background-color:var(--sg-form-control-bg);color:var(--text-primary-color);display:flex;justify-content:center;resize:vertical}:host textarea:focus:not(:focus-visible){box-shadow:none;outline:0}:host textarea:focus,:host textarea:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}@media screen and (-ms-high-contrast: active){:host textarea{border:2px solid currentcolor}}:host textarea:hover{background-color:var(--gds-ref-pallet-base100)}:host textarea:disabled,:host textarea.disabled,:host textarea[aria-disabled=true]{background:var(--sg-form-control-bg-disabled)!important;color:var(--text-disabled-color)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed}:host textarea:disabled::placeholder,:host textarea.disabled::placeholder,:host textarea[aria-disabled=true]::placeholder{color:var(--text-disabled-color)}:host label:not(.sdv-field-notice){margin-bottom:.5rem}:host label:not(.sdv-field-notice):is(label){margin-bottom:0}:host label:not(.sdv-field-notice).form-control{width:-moz-fit-content;width:fit-content}@supports (-moz-appearance: none){:host label:not(.sdv-field-notice).form-control:focus:not(:focus-visible){box-shadow:none;outline:0}:host label:not(.sdv-field-notice).form-control:focus,:host label:not(.sdv-field-notice).form-control:focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}}:host label:not(.sdv-field-notice):not(.form-control){font-weight:500;width:100%;line-height:1.25rem}:host label:not(.sdv-field-notice)+input,:host label:not(.sdv-field-notice)+textarea,fieldset :host label:not(.sdv-field-notice)+div,:host label:not(.sdv-field-notice)+button,:host label:not(.sdv-field-notice)+.group-stepper,:host label:not(.sdv-field-notice)+.stepper-wrapper,:host label:not(.sdv-field-notice)+.group{margin-top:.5rem}:host label:not(.sdv-field-notice)+.form-info{margin-bottom:.5rem}:host label:is(.sdv-field-label){margin-bottom:.5rem}:host .hide-if-empty:empty{display:none}:host .unset-state{padding-left:.5rem}:host .sdv-field-label--optional{font-weight:400}:host textarea{width:100%;max-width:100%}:host .description{margin-bottom:.5rem}:host .error-wrapper{margin-top:.5rem}:host .no-resize{resize:none}:host .no-resize::-webkit-scrollbar{-webkit-appearance:none}:host .no-resize::-webkit-scrollbar-thumb{border-radius:.5rem}\n"] }]
|
|
4996
|
-
}], ctorParameters: function () { return [{ type: i1$3.NgControl, decorators: [{
|
|
4997
|
-
type: Self
|
|
4998
|
-
}, {
|
|
4999
|
-
type: Optional
|
|
5000
|
-
}] }, { type: undefined, decorators: [{
|
|
5001
|
-
type: Optional
|
|
5002
|
-
}, {
|
|
5003
|
-
type: Inject,
|
|
5004
|
-
args: [TRANSLOCO_SCOPE]
|
|
5005
|
-
}] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { thook: [{
|
|
5006
|
-
type: HostBinding,
|
|
5007
|
-
args: ['attr.data-thook']
|
|
5008
|
-
}, {
|
|
5009
|
-
type: Input
|
|
5010
|
-
}], placeholder: [{
|
|
5011
|
-
type: Input
|
|
5012
|
-
}], readonly: [{
|
|
5013
|
-
type: Input
|
|
5014
|
-
}], minLength: [{
|
|
5015
|
-
type: Input
|
|
5016
|
-
}], minlength: [{
|
|
5017
|
-
type: Input
|
|
5018
|
-
}], maxLength: [{
|
|
5019
|
-
type: Input
|
|
5020
|
-
}], maxlength: [{
|
|
5021
|
-
type: Input
|
|
5022
|
-
}], rows: [{
|
|
5023
|
-
type: Input
|
|
5024
|
-
}] } });
|
|
5025
|
-
|
|
5026
|
-
class NgvTextareaModule {
|
|
5027
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTextareaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
5028
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgvTextareaModule, declarations: [NgvTextareaComponent], imports: [CommonModule], exports: [NgvTextareaComponent] }); }
|
|
5029
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTextareaModule, imports: [CommonModule] }); }
|
|
5030
|
-
}
|
|
5031
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTextareaModule, decorators: [{
|
|
5032
|
-
type: NgModule,
|
|
5033
|
-
args: [{
|
|
5034
|
-
declarations: [NgvTextareaComponent],
|
|
5035
|
-
imports: [CommonModule],
|
|
5036
|
-
exports: [NgvTextareaComponent],
|
|
5037
|
-
}]
|
|
5038
|
-
}] });
|
|
5039
|
-
|
|
5040
|
-
/**
|
|
5041
|
-
* A tooltip is a text label that acts as a helper to a specific item.
|
|
5042
|
-
* Recommended to use value `top` or `bottom` with `placement` for responsive design.
|
|
5043
|
-
* Dynamic resizing and tooltip position are a work in progress.
|
|
5044
|
-
* https://designlibrary.sebgroup.com/components/component-tooltip
|
|
5045
|
-
*/
|
|
5046
|
-
class NgvTooltipDirective {
|
|
5047
|
-
/** @internal Check if changes should trigger a re-render */
|
|
5048
|
-
static shouldUpdate(change) {
|
|
5049
|
-
return (change &&
|
|
5050
|
-
!change.firstChange &&
|
|
5051
|
-
change.previousValue !== change.currentValue);
|
|
5052
|
-
}
|
|
5053
|
-
constructor(anchorElementRef, renderer) {
|
|
5054
|
-
this.anchorElementRef = anchorElementRef;
|
|
5055
|
-
this.renderer = renderer;
|
|
5056
|
-
/** Special property used for selecting DOM elements during automated UI testing. */
|
|
5057
|
-
this.thook = 'tooltip';
|
|
5058
|
-
/** The side of the anchor which the tooltip will be rendered.
|
|
5059
|
-
* Recommended `top` and `bottom` for responsive designs as these are more stable.
|
|
5060
|
-
*/
|
|
5061
|
-
this.placement = 'top';
|
|
5062
|
-
/** Initial state and subsequent updates on wether the tooltip is visible. */
|
|
5063
|
-
this.shown = false;
|
|
5064
|
-
/** How far off from the text the tooltip will be rendered. */
|
|
5065
|
-
this.offset = 10;
|
|
5066
|
-
/** How frequently the tooltip will be re-rendered when the page size changes. */
|
|
5067
|
-
this.resizeThrottle = 50;
|
|
5068
|
-
/** Numeric max-width for tooltip. */
|
|
5069
|
-
this.maxWidth = 343;
|
|
5070
|
-
/** Emits a show event triggered changing visibility state of the tooltip. */
|
|
5071
|
-
this.ngvShow = new EventEmitter();
|
|
5072
|
-
/** Emits a hide event triggered changing visibility state of the tooltip. */
|
|
5073
|
-
this.ngvHide = new EventEmitter();
|
|
5074
|
-
/** @internal */
|
|
5075
|
-
this.timeout = 0;
|
|
5076
|
-
this.anchorElement = this.anchorElementRef.nativeElement;
|
|
5077
|
-
this.parentElement = document.body;
|
|
5078
|
-
}
|
|
5079
|
-
ngAfterViewInit() {
|
|
5080
|
-
// Set a timeout to allow view to fully render before creating tooltip.
|
|
5081
|
-
setTimeout(() => (this.shown ? this.show(true) : this.hide(true)));
|
|
5082
|
-
}
|
|
5083
|
-
ngOnChanges(changes) {
|
|
5084
|
-
if (NgvTooltipDirective.shouldUpdate(changes.ngvTooltip) ||
|
|
5085
|
-
NgvTooltipDirective.shouldUpdate(changes.placement) ||
|
|
5086
|
-
NgvTooltipDirective.shouldUpdate(changes.thook)) {
|
|
5087
|
-
this.shown ? this.show(true) : this.hide(true);
|
|
5088
|
-
}
|
|
5089
|
-
if (NgvTooltipDirective.shouldUpdate(changes.shown)) {
|
|
5090
|
-
this.shown ? this.show() : this.hide();
|
|
5091
|
-
}
|
|
5092
|
-
if (NgvTooltipDirective.shouldUpdate(changes.offset)) {
|
|
5093
|
-
this.updatePosition();
|
|
5094
|
-
}
|
|
5095
|
-
}
|
|
5096
|
-
ngOnDestroy() {
|
|
5097
|
-
this.hide(true);
|
|
5098
|
-
}
|
|
5099
|
-
/** @internal */
|
|
5100
|
-
onMouseEnter() {
|
|
5101
|
-
this.show();
|
|
5102
|
-
}
|
|
5103
|
-
/** @internal */
|
|
5104
|
-
onMouseLeave() {
|
|
5105
|
-
this.hide();
|
|
5106
|
-
}
|
|
5107
|
-
/** @internal */
|
|
5108
|
-
resize() {
|
|
5109
|
-
if (this.timeout)
|
|
5110
|
-
return;
|
|
5111
|
-
this.timeout = window.setTimeout(() => {
|
|
5112
|
-
this.timeout = 0;
|
|
5113
|
-
this.updatePosition();
|
|
5114
|
-
}, this.resizeThrottle);
|
|
5115
|
-
}
|
|
5116
|
-
/**
|
|
5117
|
-
* Sets the visibility state of the tooltip to true and creates a new tooltip if it doesn't exist or `recreate` is set.
|
|
5118
|
-
* @param recreate if set to true, destroy any existing tooltip and create a new one.
|
|
5119
|
-
*/
|
|
5120
|
-
show(recreate = false) {
|
|
5121
|
-
// Require tooltip text to create
|
|
5122
|
-
if (!this.ngvTooltip || this.ngvTooltip.length === 0)
|
|
5123
|
-
return;
|
|
5124
|
-
if (recreate || !this.tooltipElement) {
|
|
5125
|
-
this.hide(true);
|
|
5126
|
-
this.create(this.ngvTooltip);
|
|
5127
|
-
}
|
|
5128
|
-
else {
|
|
5129
|
-
this.renderer.appendChild(this.parentElement, this.tooltipElement);
|
|
5130
|
-
}
|
|
5131
|
-
this.updatePosition();
|
|
5132
|
-
this.shown = true;
|
|
5133
|
-
this.ngvShow.emit(this.tooltipElement);
|
|
5134
|
-
}
|
|
5135
|
-
/**
|
|
5136
|
-
* Sets the visibility state of the tooltip to false and destroys an existing tooltip if `destroy` is set.
|
|
5137
|
-
* @param destroy if set to true, destroy any existing tooltip.
|
|
5138
|
-
*/
|
|
5139
|
-
hide(destroy = false) {
|
|
5140
|
-
if (!this.tooltipElement)
|
|
5141
|
-
return;
|
|
5142
|
-
if (this.parentElement.contains(this.tooltipElement))
|
|
5143
|
-
this.renderer.removeChild(this.parentElement, this.tooltipElement);
|
|
5144
|
-
if (destroy)
|
|
5145
|
-
this.destroy();
|
|
5146
|
-
this.shown = false;
|
|
5147
|
-
this.ngvHide.emit(this.tooltipElement);
|
|
5148
|
-
}
|
|
5149
|
-
/**
|
|
5150
|
-
* @internal
|
|
5151
|
-
* Creates a new tooltip with the set placement and a given text as its body.
|
|
5152
|
-
* @param text the string to be displayed in the tooltip body.
|
|
5153
|
-
*/
|
|
5154
|
-
create(text) {
|
|
5155
|
-
this.tooltipElement = this.renderer.createElement('div');
|
|
5156
|
-
this.renderer.addClass(this.tooltipElement, 'gds-tooltip');
|
|
5157
|
-
this.renderer.setAttribute(this.tooltipElement, 'data-thook', this.thook);
|
|
5158
|
-
this.renderer.setStyle(this.tooltipElement, 'position', 'absolute');
|
|
5159
|
-
this.renderer.setStyle(this.tooltipElement, 'z-index', '1040');
|
|
5160
|
-
this.renderer.setStyle(this.tooltipElement, 'border-radius', '.25rem');
|
|
5161
|
-
this.renderer.setStyle(this.tooltipElement, 'padding', '.5rem 1rem');
|
|
5162
|
-
const relativeMaxWidth = this.pxToRem(this.maxWidth);
|
|
5163
|
-
this.renderer.setStyle(this.tooltipElement, 'max-width', relativeMaxWidth);
|
|
5164
|
-
this.renderer.appendChild(this.tooltipElement, this.renderer.createText(text));
|
|
5165
|
-
// add tooltip to DOM
|
|
5166
|
-
this.renderer.appendChild(this.parentElement, this.tooltipElement);
|
|
5167
|
-
this.arrowElement = this.renderer.createElement('div');
|
|
5168
|
-
this.renderer.addClass(this.arrowElement, `gds-tooltip__arrow-${this.placement}`);
|
|
5169
|
-
// add arrow to tooltip element
|
|
5170
|
-
this.renderer.appendChild(this.tooltipElement, this.arrowElement);
|
|
5171
|
-
}
|
|
5172
|
-
/**
|
|
5173
|
-
* @internal
|
|
5174
|
-
* Destroys the current tooltip by un-setting variables, should only be used after detaching elements from the DOM.
|
|
5175
|
-
*/
|
|
5176
|
-
destroy() {
|
|
5177
|
-
this.tooltipElement = undefined;
|
|
5178
|
-
this.arrowElement = undefined;
|
|
5179
|
-
}
|
|
5180
|
-
/**
|
|
5181
|
-
* @internal
|
|
5182
|
-
* Recalculates the position of the tooltip.
|
|
5183
|
-
*/
|
|
5184
|
-
updatePosition() {
|
|
5185
|
-
if (!this.tooltipElement || !this.arrowElement)
|
|
5186
|
-
return;
|
|
5187
|
-
const scrollPos = window.pageYOffset ||
|
|
5188
|
-
document.documentElement.scrollTop ||
|
|
5189
|
-
this.parentElement.scrollTop ||
|
|
5190
|
-
0;
|
|
5191
|
-
const anchorRect = this.anchorElement.getBoundingClientRect();
|
|
5192
|
-
const tooltipRect = this.tooltipElement.getBoundingClientRect();
|
|
5193
|
-
const arrowRect = this.arrowElement.getBoundingClientRect();
|
|
5194
|
-
switch (this.placement) {
|
|
5195
|
-
case 'top':
|
|
5196
|
-
this.alignVertical(true, scrollPos, anchorRect, tooltipRect.width, tooltipRect.height, arrowRect.width);
|
|
5197
|
-
break;
|
|
5198
|
-
case 'bottom':
|
|
5199
|
-
this.alignVertical(false, scrollPos, anchorRect, tooltipRect.width, tooltipRect.height, arrowRect.width);
|
|
5200
|
-
break;
|
|
5201
|
-
case 'left':
|
|
5202
|
-
this.alignHorizontal(true, scrollPos, anchorRect, tooltipRect.height);
|
|
5203
|
-
break;
|
|
5204
|
-
case 'right':
|
|
5205
|
-
this.alignHorizontal(false, scrollPos, anchorRect, tooltipRect.height);
|
|
5206
|
-
break;
|
|
5207
|
-
default:
|
|
5208
|
-
return;
|
|
5209
|
-
}
|
|
5210
|
-
}
|
|
5211
|
-
/**
|
|
5212
|
-
* @internal
|
|
5213
|
-
* Calculates and set the position of the tooltip when the placement is `top` or `bottom`.
|
|
5214
|
-
*/
|
|
5215
|
-
alignVertical(above, scrollPos, anchor, tooltipWidth, tooltipHeight, arrowWidth) {
|
|
5216
|
-
const width = this.parentElement.clientWidth;
|
|
5217
|
-
const anchorMidX = anchor.left + anchor.width / 2;
|
|
5218
|
-
const tooltip = {};
|
|
5219
|
-
const arrow = {};
|
|
5220
|
-
if (above)
|
|
5221
|
-
tooltip.top = anchor.top - tooltipHeight - this.offset + scrollPos;
|
|
5222
|
-
else
|
|
5223
|
-
tooltip.top = anchor.bottom + this.offset + scrollPos;
|
|
5224
|
-
if (anchorMidX < width / 2) {
|
|
5225
|
-
tooltip.left = Math.max(0, anchorMidX - tooltipWidth / 2);
|
|
5226
|
-
arrow.left = anchorMidX - tooltip.left;
|
|
5227
|
-
}
|
|
5228
|
-
else {
|
|
5229
|
-
tooltip.right = Math.max(0, width - (anchorMidX + tooltipWidth / 2));
|
|
5230
|
-
arrow.right = width - anchorMidX - tooltip.right - arrowWidth;
|
|
5231
|
-
}
|
|
5232
|
-
this.setStyle(tooltip, arrow);
|
|
5233
|
-
}
|
|
5234
|
-
/**
|
|
5235
|
-
* @internal
|
|
5236
|
-
* Calculates and set the position of the tooltip when the placement is `left` or `right`.
|
|
5237
|
-
*/
|
|
5238
|
-
alignHorizontal(before, scrollPos, anchor, tooltipHeight) {
|
|
5239
|
-
const width = this.parentElement.clientWidth;
|
|
5240
|
-
const top = anchor.top + (anchor.height - tooltipHeight) / 2 + scrollPos;
|
|
5241
|
-
const tooltip = { top };
|
|
5242
|
-
const arrow = { top: tooltipHeight / 2 };
|
|
5243
|
-
if (before)
|
|
5244
|
-
tooltip.right = width - anchor.left + this.offset;
|
|
5245
|
-
else
|
|
5246
|
-
tooltip.left = anchor.right + this.offset;
|
|
5247
|
-
this.setStyle(tooltip, arrow);
|
|
5248
|
-
}
|
|
5249
|
-
/**
|
|
5250
|
-
* @internal
|
|
5251
|
-
* Updates the CSS properties for the tooltip position.
|
|
5252
|
-
*/
|
|
5253
|
-
setStyle(tooltip, arrow) {
|
|
5254
|
-
// Tooltip
|
|
5255
|
-
Object.entries(tooltip).forEach(([prop, value]) => {
|
|
5256
|
-
const position = this.pxToRem(value);
|
|
5257
|
-
this.renderer.setStyle(this.tooltipElement, prop, position);
|
|
5258
|
-
});
|
|
5259
|
-
// Arrow
|
|
5260
|
-
Object.entries(arrow).forEach(([prop, value]) => {
|
|
5261
|
-
const position = this.pxToRem(value);
|
|
5262
|
-
this.renderer.setStyle(this.arrowElement, prop, position);
|
|
5263
|
-
});
|
|
5264
|
-
}
|
|
5265
|
-
pxToRem(value) {
|
|
5266
|
-
const fontSizePx = window
|
|
5267
|
-
?.getComputedStyle(this.parentElement)
|
|
5268
|
-
?.getPropertyValue('font-size');
|
|
5269
|
-
const fontSizeNumberMatch = fontSizePx?.match(/\d{1,}/);
|
|
5270
|
-
const fontSize = fontSizeNumberMatch ? +fontSizeNumberMatch[0] : 16;
|
|
5271
|
-
const remValue = value / fontSize;
|
|
5272
|
-
return `${remValue}rem`;
|
|
5273
|
-
}
|
|
5274
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTooltipDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
5275
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: NgvTooltipDirective, selector: "[ngvTooltip]", inputs: { ngvTooltip: "ngvTooltip", thook: "thook", placement: "placement", shown: "shown", offset: "offset", resizeThrottle: "resizeThrottle", maxWidth: "maxWidth" }, outputs: { ngvShow: "ngvShow", ngvHide: "ngvHide" }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "window:resize": "resize()" } }, usesOnChanges: true, ngImport: i0 }); }
|
|
5276
|
-
}
|
|
5277
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTooltipDirective, decorators: [{
|
|
5278
|
-
type: Directive,
|
|
5279
|
-
args: [{
|
|
5280
|
-
selector: '[ngvTooltip]',
|
|
5281
|
-
}]
|
|
5282
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { ngvTooltip: [{
|
|
5283
|
-
type: Input
|
|
5284
|
-
}], thook: [{
|
|
5285
|
-
type: Input
|
|
5286
|
-
}], placement: [{
|
|
5287
|
-
type: Input
|
|
5288
|
-
}], shown: [{
|
|
5289
|
-
type: Input
|
|
5290
|
-
}], offset: [{
|
|
5291
|
-
type: Input
|
|
5292
|
-
}], resizeThrottle: [{
|
|
5293
|
-
type: Input
|
|
5294
|
-
}], maxWidth: [{
|
|
5295
|
-
type: Input
|
|
5296
|
-
}], ngvShow: [{
|
|
5297
|
-
type: Output
|
|
5298
|
-
}], ngvHide: [{
|
|
5299
|
-
type: Output
|
|
5300
|
-
}], onMouseEnter: [{
|
|
5301
|
-
type: HostListener,
|
|
5302
|
-
args: ['mouseenter']
|
|
5303
|
-
}], onMouseLeave: [{
|
|
5304
|
-
type: HostListener,
|
|
5305
|
-
args: ['mouseleave']
|
|
5306
|
-
}], resize: [{
|
|
5307
|
-
type: HostListener,
|
|
5308
|
-
args: ['window:resize']
|
|
5309
|
-
}] } });
|
|
5310
|
-
|
|
5311
|
-
class NgvTooltipModule {
|
|
5312
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
5313
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgvTooltipModule, declarations: [NgvTooltipDirective], imports: [NgvI18nModule$1], exports: [NgvTooltipDirective] }); }
|
|
5314
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTooltipModule, imports: [NgvI18nModule$1] }); }
|
|
5315
|
-
}
|
|
5316
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTooltipModule, decorators: [{
|
|
5317
|
-
type: NgModule,
|
|
5318
|
-
args: [{
|
|
5319
|
-
declarations: [NgvTooltipDirective],
|
|
5320
|
-
exports: [NgvTooltipDirective],
|
|
5321
|
-
imports: [NgvI18nModule$1],
|
|
5322
|
-
}]
|
|
5323
|
-
}] });
|
|
5324
|
-
|
|
5325
2233
|
/**
|
|
5326
2234
|
* Generated bundle index. Do not edit.
|
|
5327
2235
|
*/
|
|
5328
2236
|
|
|
5329
|
-
export {
|
|
2237
|
+
export { NggAccordionComponent, NggAccordionListItemComponent, NggAccordionModule, NggBadgeComponent, NggBadgeModule, NggButtonComponent, NggButtonModule, NggCellTableComponent, NggCellTableModule, NggContextMenuComponent, NggContextMenuModule, NggCoreElementDirective, NggCoreWrapperModule, NggDatepickerComponent, NggDatepickerModule, NggDropdownButtonDirective, NggDropdownComponent, NggDropdownModule, NggDropdownOptionDirective, NggInPageWizardModule, NggInPageWizardStepCardComponent, NggModalBodyComponent, NggModalComponent, NggModalFooterComponent, NggModalFooterDirective, NggModalHeaderComponent, NggModalHeaderDirective, NggModalModule, NggModule, NggOnScrollDirective, NggPaginationComponent, NggPaginationModule, NggProgressCircleComponent, NggProgressCircleModule, NggSegmentedControlComponent, NggSegmentedControlModule, NggSharedModule, NggSliderComponent, NggSliderModule, NggSortableListComponent, NggSortableListModule, ON_SCROLL_TOKEN, dateValidator };
|
|
5330
2238
|
//# sourceMappingURL=sebgroup-green-angular.mjs.map
|