@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.
Files changed (109) hide show
  1. package/esm2022/index.mjs +1 -19
  2. package/esm2022/src/v-angular/breadcrumbs/breadcrumbs.component.mjs +3 -3
  3. package/esm2022/src/v-angular/button/button.component.mjs +3 -3
  4. package/esm2022/src/v-angular/card/card.component.mjs +3 -3
  5. package/esm2022/src/v-angular/checkbox/checkbox.component.mjs +3 -3
  6. package/esm2022/src/v-angular/core/core.globals.mjs +5 -2
  7. package/esm2022/src/v-angular/dropdown/dropdown-list/dropdown-list.component.mjs +3 -3
  8. package/esm2022/src/v-angular/dropdown/dropdown.component.mjs +3 -3
  9. package/esm2022/src/v-angular/dropdown/typeahead/index.mjs +4 -1
  10. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.mjs +3 -3
  11. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.mjs +3 -3
  12. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.mjs +3 -3
  13. package/esm2022/src/v-angular/dropdown/typeahead/typeahead.directive.mjs +177 -0
  14. package/esm2022/src/v-angular/info-circle/info-circle.component.mjs +3 -3
  15. package/esm2022/src/v-angular/input/input.component.mjs +3 -3
  16. package/esm2022/src/v-angular/modal/dialog/dialog.component.mjs +3 -3
  17. package/esm2022/src/v-angular/modal/fold-out/fold-out.component.mjs +3 -3
  18. package/esm2022/src/v-angular/modal/modal.globals.mjs +5 -2
  19. package/esm2022/src/v-angular/modal/slide-out/slide-out.component.mjs +4 -4
  20. package/esm2022/src/v-angular/radio/radio.component.mjs +3 -3
  21. package/esm2022/src/v-angular/textarea/textarea.component.mjs +3 -3
  22. package/esm2022/v-angular/breadcrumbs/breadcrumbs.component.mjs +3 -3
  23. package/esm2022/v-angular/button/button.component.mjs +3 -3
  24. package/esm2022/v-angular/card/card.component.mjs +3 -3
  25. package/esm2022/v-angular/checkbox/checkbox.component.mjs +3 -3
  26. package/esm2022/v-angular/dropdown/dropdown-list/dropdown-list.component.mjs +3 -3
  27. package/esm2022/v-angular/dropdown/dropdown.component.mjs +3 -3
  28. package/esm2022/v-angular/dropdown/typeahead/index.mjs +4 -1
  29. package/esm2022/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.mjs +3 -3
  30. package/esm2022/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.mjs +3 -3
  31. package/esm2022/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.mjs +3 -3
  32. package/esm2022/v-angular/dropdown/typeahead/typeahead.directive.mjs +177 -0
  33. package/esm2022/v-angular/index.mjs +17 -0
  34. package/esm2022/v-angular/info-circle/info-circle.component.mjs +3 -3
  35. package/esm2022/v-angular/input/input.component.mjs +3 -3
  36. package/esm2022/v-angular/modal/dialog/dialog.component.mjs +3 -3
  37. package/esm2022/v-angular/modal/fold-out/fold-out.component.mjs +3 -3
  38. package/esm2022/v-angular/modal/modal.globals.mjs +5 -2
  39. package/esm2022/v-angular/modal/slide-out/slide-out.component.mjs +4 -4
  40. package/esm2022/v-angular/radio/radio.component.mjs +3 -3
  41. package/esm2022/v-angular/sebgroup-green-angular-v-angular.mjs +5 -0
  42. package/esm2022/v-angular/textarea/textarea.component.mjs +3 -3
  43. package/esm2022/v-angular/v-angular.module.mjs +76 -0
  44. package/fesm2022/sebgroup-green-angular-src-v-angular-breadcrumbs.mjs +2 -2
  45. package/fesm2022/sebgroup-green-angular-src-v-angular-breadcrumbs.mjs.map +1 -1
  46. package/fesm2022/sebgroup-green-angular-src-v-angular-button.mjs +2 -2
  47. package/fesm2022/sebgroup-green-angular-src-v-angular-button.mjs.map +1 -1
  48. package/fesm2022/sebgroup-green-angular-src-v-angular-card.mjs +2 -2
  49. package/fesm2022/sebgroup-green-angular-src-v-angular-card.mjs.map +1 -1
  50. package/fesm2022/sebgroup-green-angular-src-v-angular-checkbox.mjs +2 -2
  51. package/fesm2022/sebgroup-green-angular-src-v-angular-checkbox.mjs.map +1 -1
  52. package/fesm2022/sebgroup-green-angular-src-v-angular-core.mjs +4 -1
  53. package/fesm2022/sebgroup-green-angular-src-v-angular-core.mjs.map +1 -1
  54. package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs +182 -13
  55. package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs.map +1 -1
  56. package/fesm2022/sebgroup-green-angular-src-v-angular-info-circle.mjs +2 -2
  57. package/fesm2022/sebgroup-green-angular-src-v-angular-info-circle.mjs.map +1 -1
  58. package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs +2 -2
  59. package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs.map +1 -1
  60. package/fesm2022/sebgroup-green-angular-src-v-angular-modal.mjs +11 -8
  61. package/fesm2022/sebgroup-green-angular-src-v-angular-modal.mjs.map +1 -1
  62. package/fesm2022/sebgroup-green-angular-src-v-angular-radio.mjs +2 -2
  63. package/fesm2022/sebgroup-green-angular-src-v-angular-radio.mjs.map +1 -1
  64. package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs +2 -2
  65. package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs.map +1 -1
  66. package/fesm2022/sebgroup-green-angular-v-angular.mjs +3341 -0
  67. package/fesm2022/sebgroup-green-angular-v-angular.mjs.map +1 -0
  68. package/fesm2022/sebgroup-green-angular.mjs +13 -3105
  69. package/fesm2022/sebgroup-green-angular.mjs.map +1 -1
  70. package/index.d.ts +0 -18
  71. package/package.json +9 -3
  72. package/src/v-angular/breadcrumbs/breadcrumbs.component.d.ts +1 -1
  73. package/src/v-angular/button/button.component.d.ts +1 -1
  74. package/src/v-angular/card/card.component.d.ts +1 -1
  75. package/src/v-angular/checkbox/checkbox.component.d.ts +1 -1
  76. package/src/v-angular/dropdown/dropdown-list/dropdown-list.component.d.ts +1 -1
  77. package/src/v-angular/dropdown/dropdown.component.d.ts +1 -1
  78. package/src/v-angular/dropdown/typeahead/index.d.ts +3 -0
  79. package/src/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.d.ts +1 -1
  80. package/src/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.d.ts +1 -1
  81. package/src/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.d.ts +1 -1
  82. package/src/v-angular/dropdown/typeahead/typeahead.directive.d.ts +76 -0
  83. package/src/v-angular/info-circle/info-circle.component.d.ts +1 -1
  84. package/src/v-angular/input/input.component.d.ts +1 -1
  85. package/src/v-angular/modal/dialog/dialog.component.d.ts +1 -1
  86. package/src/v-angular/modal/fold-out/fold-out.component.d.ts +1 -1
  87. package/src/v-angular/modal/slide-out/slide-out.component.d.ts +2 -2
  88. package/src/v-angular/radio/radio.component.d.ts +1 -1
  89. package/src/v-angular/textarea/textarea.component.d.ts +1 -1
  90. package/v-angular/breadcrumbs/breadcrumbs.component.d.ts +1 -1
  91. package/v-angular/button/button.component.d.ts +1 -1
  92. package/v-angular/card/card.component.d.ts +1 -1
  93. package/v-angular/checkbox/checkbox.component.d.ts +1 -1
  94. package/v-angular/dropdown/dropdown-list/dropdown-list.component.d.ts +1 -1
  95. package/v-angular/dropdown/dropdown.component.d.ts +1 -1
  96. package/v-angular/dropdown/typeahead/index.d.ts +3 -0
  97. package/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.d.ts +1 -1
  98. package/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.d.ts +1 -1
  99. package/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.d.ts +1 -1
  100. package/v-angular/dropdown/typeahead/typeahead.directive.d.ts +76 -0
  101. package/v-angular/index.d.ts +16 -0
  102. package/v-angular/info-circle/info-circle.component.d.ts +1 -1
  103. package/v-angular/input/input.component.d.ts +1 -1
  104. package/v-angular/modal/dialog/dialog.component.d.ts +1 -1
  105. package/v-angular/modal/fold-out/fold-out.component.d.ts +1 -1
  106. package/v-angular/modal/slide-out/slide-out.component.d.ts +2 -2
  107. package/v-angular/radio/radio.component.d.ts +1 -1
  108. package/v-angular/textarea/textarea.component.d.ts +1 -1
  109. 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, isPlatformServer } from '@angular/common';
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, ElementRef, Injectable, Self, Optional, HostListener, SkipSelf, isDevMode, Pipe, PLATFORM_ID } 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 } 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 i1$3 from '@angular/forms';
11
- import { NG_VALUE_ACCESSOR, NgControl, FormsModule, Validators, UntypedFormControl, ReactiveFormsModule } from '@angular/forms';
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, takeUntil as takeUntil$1, lastValueFrom, of, delay } from 'rxjs';
24
- import { takeUntil, throttle, debounceTime } from 'rxjs/operators';
25
- import * as i2$1 from '@angular/cdk/drag-drop';
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$4 from '@angular/platform-browser';
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: 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.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
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$1.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$1.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: i2$1.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$1.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }] }); }
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$4.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
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$4.DomSanitizer }]; }, propDecorators: { row: [{
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>&lt;c-dialog&gt; ...children &lt;/c-dialog&gt;</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 { ButtonStyle, InputMaskFormatPipe, 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, NgvBaseControlValueAccessorComponent, NgvBaseControlValueAccessorModule, NgvBreadcrumbsComponent, NgvBreadcrumbsModule, NgvButtonComponent, NgvButtonModule, NgvCardComponent, NgvCardModule, NgvCheckboxComponent, NgvCheckboxModule, NgvDialogComponent, NgvDropdownComponent, NgvDropdownListComponent, NgvDropdownModule, NgvFoldOutComponent, NgvFoldOutOptionDirective, NgvI18nModule, NgvI18nTestModule, NgvInfoCircleComponent, NgvInfoCircleModule, NgvInputComponent, NgvInputMaskDirective, NgvInputMaskModule, NgvInputModule, NgvMissingHandler, NgvModalModule, NgvRadioComponent, NgvRadioControlRegistry, NgvRadioModule, NgvSlideOutComponent, NgvTextareaComponent, NgvTextareaModule, NgvTooltipDirective, NgvTooltipModule, NgvTypeaheadHighlightComponent, NgvTypeaheadInputComponent, ON_SCROLL_TOKEN, TranslocoMockInterceptor, TranslocoMockMissingHandler, TranslocoMockPipe, TranslocoMockStrategy, TranslocoMockTranspiler, createMask, dateValidator };
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