@festo-ui/angular 8.2.0-dev.617 → 8.2.0-dev.620

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 (100) hide show
  1. package/css/bundle.css +1 -1
  2. package/css/popover.css +1 -1
  3. package/fesm2022/festo-ui-angular.mjs +514 -260
  4. package/fesm2022/festo-ui-angular.mjs.map +1 -1
  5. package/lib/components/components.module.d.ts +3 -1
  6. package/lib/components/overlay/overlay-content/overlay-content.component.d.ts +5 -0
  7. package/lib/components/overlay/overlay-outlet.directive.d.ts +64 -0
  8. package/lib/components/popovers/popover.defaults.d.ts +0 -18
  9. package/lib/components/popovers/popover.models.d.ts +2 -1
  10. package/lib/components/popovers/tooltip/tooltip.directive.d.ts +7 -0
  11. package/lib/forms/value-accessor-base.d.ts +1 -1
  12. package/package.json +9 -11
  13. package/public-api.d.ts +2 -0
  14. package/scss/base/icons-svg.scss +1 -1
  15. package/scss/base/image-gallery.scss +2 -2
  16. package/scss/base/popover.scss +2 -2
  17. package/scss/base/styles.scss +4 -4
  18. package/esm2022/festo-ui-angular.mjs +0 -5
  19. package/esm2022/lib/components/accordion/accordion-header/accordion-header.component.mjs +0 -11
  20. package/esm2022/lib/components/accordion/accordion-item/accordion-item-body/accordion-item-body.component.mjs +0 -15
  21. package/esm2022/lib/components/accordion/accordion-item/accordion-item-header/accordion-item-header.component.mjs +0 -28
  22. package/esm2022/lib/components/accordion/accordion-item/accordion-item.component.mjs +0 -148
  23. package/esm2022/lib/components/accordion/accordion.component.mjs +0 -59
  24. package/esm2022/lib/components/accordion/index.mjs +0 -6
  25. package/esm2022/lib/components/bottom-sheet/bottom-sheet.component.mjs +0 -97
  26. package/esm2022/lib/components/breadcrumb/breadcrumb.component.mjs +0 -26
  27. package/esm2022/lib/components/buttons/button/button.component.mjs +0 -48
  28. package/esm2022/lib/components/buttons/link-button/link-button.component.mjs +0 -34
  29. package/esm2022/lib/components/chips/chip/chip.component.mjs +0 -38
  30. package/esm2022/lib/components/chips/chip-container/chip-container.component.mjs +0 -17
  31. package/esm2022/lib/components/components.module.mjs +0 -212
  32. package/esm2022/lib/components/loading-indicator/loading-indicator.component.mjs +0 -17
  33. package/esm2022/lib/components/mobile-flyout/mobile-flyout-item/mobile-flyout-item.component.mjs +0 -39
  34. package/esm2022/lib/components/mobile-flyout/mobile-flyout-page/mobile-flyout-page.component.mjs +0 -65
  35. package/esm2022/lib/components/mobile-flyout/mobile-flyout.component.mjs +0 -69
  36. package/esm2022/lib/components/pagination/pagination.component.mjs +0 -57
  37. package/esm2022/lib/components/popovers/legend/legend.component.mjs +0 -42
  38. package/esm2022/lib/components/popovers/legend/legend.directive.mjs +0 -31
  39. package/esm2022/lib/components/popovers/popover/popover.component.mjs +0 -31
  40. package/esm2022/lib/components/popovers/popover-content/popover-content.component.mjs +0 -80
  41. package/esm2022/lib/components/popovers/popover-content/popover-content.directive.mjs +0 -39
  42. package/esm2022/lib/components/popovers/popover-menu/popover-menu.component.mjs +0 -67
  43. package/esm2022/lib/components/popovers/popover-ref.mjs +0 -25
  44. package/esm2022/lib/components/popovers/popover.defaults.mjs +0 -59
  45. package/esm2022/lib/components/popovers/popover.models.mjs +0 -7
  46. package/esm2022/lib/components/popovers/popover.service.mjs +0 -140
  47. package/esm2022/lib/components/popovers/tooltip/tooltip.directive.mjs +0 -101
  48. package/esm2022/lib/components/progress/progress.component.mjs +0 -22
  49. package/esm2022/lib/components/scroll/index.mjs +0 -2
  50. package/esm2022/lib/components/scroll/scrollable.directive.mjs +0 -75
  51. package/esm2022/lib/components/search-input/search-input.component.mjs +0 -182
  52. package/esm2022/lib/components/sidebar-overlay/sidebar-overlay.component.mjs +0 -59
  53. package/esm2022/lib/components/snackbar/snackbar-container.component.mjs +0 -21
  54. package/esm2022/lib/components/snackbar/snackbar-container.directive.mjs +0 -80
  55. package/esm2022/lib/components/snackbar/snackbar.component.mjs +0 -81
  56. package/esm2022/lib/components/snackbar/snackbar.models.mjs +0 -2
  57. package/esm2022/lib/components/snackbar/snackbar.module.mjs +0 -24
  58. package/esm2022/lib/components/snackbar/snackbar.service.mjs +0 -23
  59. package/esm2022/lib/components/stepper-horizontal/step-horizontal/step-horizontal.component.mjs +0 -19
  60. package/esm2022/lib/components/stepper-horizontal/stepper-horizontal.component.mjs +0 -52
  61. package/esm2022/lib/components/stepper-vertical/step-vertical/step-vertical.component.mjs +0 -57
  62. package/esm2022/lib/components/stepper-vertical/stepper-vertical.component.mjs +0 -54
  63. package/esm2022/lib/components/table-header-cell/table-header-cell.directive.mjs +0 -60
  64. package/esm2022/lib/components/tabs/tab-pane/tab-pane.component.mjs +0 -34
  65. package/esm2022/lib/components/tabs/tabs.component.mjs +0 -459
  66. package/esm2022/lib/directives/click-outside.directive.mjs +0 -29
  67. package/esm2022/lib/festo-angular.module.mjs +0 -21
  68. package/esm2022/lib/forms/checkbox/checkbox.component.mjs +0 -154
  69. package/esm2022/lib/forms/color-indicator/color-indicator.component.mjs +0 -88
  70. package/esm2022/lib/forms/color-picker/color-helper.mjs +0 -129
  71. package/esm2022/lib/forms/color-picker/color-picker.component.mjs +0 -292
  72. package/esm2022/lib/forms/date-picker/date-picker.component.mjs +0 -205
  73. package/esm2022/lib/forms/date-range-picker/date-range-picker.component.mjs +0 -231
  74. package/esm2022/lib/forms/flatpickr/flatpickr.component.mjs +0 -55
  75. package/esm2022/lib/forms/forms.module.mjs +0 -132
  76. package/esm2022/lib/forms/radio/radio.component.mjs +0 -349
  77. package/esm2022/lib/forms/segment/segment-control/segment-control.component.mjs +0 -65
  78. package/esm2022/lib/forms/segment/segment.component.mjs +0 -139
  79. package/esm2022/lib/forms/select/chip-text.pipe.mjs +0 -39
  80. package/esm2022/lib/forms/select/select-option/select-option.component.mjs +0 -23
  81. package/esm2022/lib/forms/select/select.component.mjs +0 -273
  82. package/esm2022/lib/forms/slider/slider.component.mjs +0 -117
  83. package/esm2022/lib/forms/switch/switch.component.mjs +0 -121
  84. package/esm2022/lib/forms/text-area/text-area.component.mjs +0 -187
  85. package/esm2022/lib/forms/text-editor/text-editor.component.mjs +0 -307
  86. package/esm2022/lib/forms/text-input/text-input.component.mjs +0 -208
  87. package/esm2022/lib/forms/time-picker/time-picker-dropdown/time-picker-dropdown.component.mjs +0 -107
  88. package/esm2022/lib/forms/time-picker/time-picker.component.mjs +0 -204
  89. package/esm2022/lib/forms/unique-selection-dispatcher.mjs +0 -41
  90. package/esm2022/lib/forms/value-accessor-base.mjs +0 -41
  91. package/esm2022/lib/modals/alert/alert.component.mjs +0 -55
  92. package/esm2022/lib/modals/confirm/confirm.component.mjs +0 -56
  93. package/esm2022/lib/modals/custom-modal/custom-modal.component.mjs +0 -88
  94. package/esm2022/lib/modals/image-gallery/image-gallery.component.mjs +0 -80
  95. package/esm2022/lib/modals/index.mjs +0 -2
  96. package/esm2022/lib/modals/modal.service.mjs +0 -118
  97. package/esm2022/lib/modals/modals.module.mjs +0 -27
  98. package/esm2022/lib/modals/prompt/prompt.component.mjs +0 -114
  99. package/esm2022/lib/pipes/safe-html.pipe.mjs +0 -21
  100. package/esm2022/public-api.mjs +0 -66
@@ -1,204 +0,0 @@
1
- import { ComponentPortal } from '@angular/cdk/portal';
2
- import { Component, forwardRef, HostBinding, Input, ViewChild, ViewEncapsulation } from '@angular/core';
3
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
- import { Subject } from 'rxjs';
5
- import { takeUntil } from 'rxjs/operators';
6
- import { coerceBooleanProperty } from '@angular/cdk/coercion';
7
- import { FngTimePickerDropdownComponent } from './time-picker-dropdown/time-picker-dropdown.component';
8
- import { CommonModule } from '@angular/common';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@angular/cdk/overlay";
11
- import * as i2 from "@angular/common";
12
- export class FngTimePickerComponent {
13
- get value() {
14
- return this.innerValue;
15
- }
16
- set value(date) {
17
- if (!this.disabled) {
18
- this.innerValue = date;
19
- if (this.onChange != null) {
20
- this.onChange(date);
21
- }
22
- if (this.onTouched != null) {
23
- this.onTouched();
24
- }
25
- }
26
- }
27
- get disabled() {
28
- return this.innerDisabled;
29
- }
30
- set disabled(value) {
31
- this.innerDisabled = coerceBooleanProperty(value);
32
- }
33
- get required() {
34
- return this.innerRequired;
35
- }
36
- set required(value) {
37
- this.innerRequired = coerceBooleanProperty(value);
38
- }
39
- get timeFormat() {
40
- let timeFormat = 'H:mm';
41
- if (this.options != null) {
42
- if (this.options.showSeconds) {
43
- timeFormat += ':ss';
44
- }
45
- if (this.options.timeFormat === '12') {
46
- timeFormat = timeFormat.toLowerCase() + ' a';
47
- }
48
- }
49
- return timeFormat;
50
- }
51
- constructor(overlay, cd) {
52
- this.overlay = overlay;
53
- this.cd = cd;
54
- this.innerRequired = false;
55
- this.width = 'none';
56
- this.display = 'block';
57
- this.timePickerRef = null;
58
- this.innerValue = new Date();
59
- this.innerDisabled = false;
60
- this.complete = new Subject();
61
- }
62
- writeValue(date) {
63
- this.innerValue = date;
64
- }
65
- registerOnChange(fn) {
66
- this.onChange = fn;
67
- }
68
- registerOnTouched(fn) {
69
- this.onTouched = fn;
70
- }
71
- setDisabledState(isDisabled) {
72
- this.disabled = isDisabled;
73
- }
74
- toggle(event) {
75
- const resetValue = this.value;
76
- event.preventDefault();
77
- event.stopPropagation();
78
- if (!this.disabled) {
79
- if (this.timePickerRef == null && this.connector != null && this.connector.nativeElement != null) {
80
- const labelWidth = this.connector.nativeElement.clientWidth;
81
- this.timePickerRef = this.overlay.create({
82
- minWidth: `${labelWidth}px`,
83
- panelClass: 'fng-first-child-fullwidth',
84
- hasBackdrop: true,
85
- backdropClass: 'fng-date-picker-backdrop',
86
- scrollStrategy: this.overlay.scrollStrategies.block(),
87
- positionStrategy: this.overlay
88
- .position()
89
- .flexibleConnectedTo(this.connector.nativeElement)
90
- .withPositions([
91
- {
92
- originX: 'center',
93
- originY: 'bottom',
94
- overlayX: 'center',
95
- overlayY: 'top',
96
- offsetY: -12
97
- },
98
- {
99
- originX: 'center',
100
- originY: 'top',
101
- overlayX: 'center',
102
- overlayY: 'bottom',
103
- offsetY: 4
104
- },
105
- {
106
- originX: 'start',
107
- originY: 'bottom',
108
- overlayX: 'start',
109
- overlayY: 'top',
110
- offsetY: -12
111
- },
112
- {
113
- originX: 'start',
114
- originY: 'top',
115
- overlayX: 'start',
116
- overlayY: 'bottom',
117
- offsetY: 4
118
- }
119
- ])
120
- .withFlexibleDimensions(false)
121
- .withPush(false)
122
- });
123
- const timePickerPortal = new ComponentPortal(FngTimePickerDropdownComponent);
124
- this.timePicker = this.timePickerRef.attach(timePickerPortal);
125
- this.timePicker.instance.timeFormat = this.options != null && this.options.timeFormat != null ? this.options.timeFormat : '24';
126
- this.timePicker.instance.showSeconds = this.options != null && this.options.showSeconds != null ? this.options.showSeconds : false;
127
- this.timePicker.instance.date = new Date(this.value);
128
- this.timePicker.instance.dateChange.pipe(takeUntil(this.complete)).subscribe(ev => {
129
- if (ev.reset) {
130
- this.value = resetValue;
131
- }
132
- else {
133
- this.value = ev.date;
134
- }
135
- if (ev.close) {
136
- this.disposeDropdown();
137
- }
138
- // we need to re-render our view after value changed
139
- this.cd.markForCheck();
140
- });
141
- this.timePickerRef
142
- .backdropClick()
143
- .pipe(takeUntil(this.complete))
144
- .subscribe(() => this.disposeDropdown());
145
- }
146
- else {
147
- this.disposeDropdown();
148
- }
149
- }
150
- }
151
- disposeDropdown() {
152
- if (this.timePickerRef != null) {
153
- this.timePickerRef.detach();
154
- this.timePickerRef.dispose();
155
- this.timePickerRef = null;
156
- }
157
- if (this.complete != null) {
158
- this.complete.next(true);
159
- this.complete.complete();
160
- }
161
- }
162
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: FngTimePickerComponent, deps: [{ token: i1.Overlay }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
163
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.2", type: FngTimePickerComponent, isStandalone: true, selector: "fng-time-picker", inputs: { value: "value", disabled: "disabled", required: "required", hint: "hint", error: "error", options: "options", width: "width" }, host: { properties: { "style.width": "this.width", "style.display": "this.display" } }, providers: [
164
- {
165
- provide: NG_VALUE_ACCESSOR,
166
- useExisting: forwardRef(() => FngTimePickerComponent),
167
- multi: true
168
- }
169
- ], viewQueries: [{ propertyName: "connector", first: true, predicate: ["connector"], descendants: true, static: true }], ngImport: i0, template: "<label #connector class=\"fng-time-picker fwe-input-text fwe-input-text-icon\" (click)=\"toggle($event)\">\n <i class=\"fng-icon-svg fng-icon-svg--time\" [class.fwe-color-hero]=\"timePickerRef != null\" [class.fwe-color-control-disabled]=\"disabled\"></i>\n <input\n aria-label=\"picked time\"\n type=\"text\"\n readonly\n [required]=\"required === true || null\"\n [class.fwe-border-hero]=\"timePickerRef != null\"\n [value]=\"value | date: timeFormat\"\n [disabled]=\"disabled\"\n />\n <span class=\"fwe-input-text-label\"><ng-content></ng-content></span>\n <span *ngIf=\"hint\" class=\"fwe-input-text-info\">{{ hint }}</span>\n <span *ngIf=\"error\" class=\"fwe-input-text-invalid\">{{ error }}</span>\n</label>\n", styles: [".fng-first-child-fullwidth fng-time-picker-dropdown{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }], encapsulation: i0.ViewEncapsulation.None }); }
170
- }
171
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: FngTimePickerComponent, decorators: [{
172
- type: Component,
173
- args: [{ standalone: true, imports: [CommonModule], selector: 'fng-time-picker', providers: [
174
- {
175
- provide: NG_VALUE_ACCESSOR,
176
- useExisting: forwardRef(() => FngTimePickerComponent),
177
- multi: true
178
- }
179
- ], encapsulation: ViewEncapsulation.None, template: "<label #connector class=\"fng-time-picker fwe-input-text fwe-input-text-icon\" (click)=\"toggle($event)\">\n <i class=\"fng-icon-svg fng-icon-svg--time\" [class.fwe-color-hero]=\"timePickerRef != null\" [class.fwe-color-control-disabled]=\"disabled\"></i>\n <input\n aria-label=\"picked time\"\n type=\"text\"\n readonly\n [required]=\"required === true || null\"\n [class.fwe-border-hero]=\"timePickerRef != null\"\n [value]=\"value | date: timeFormat\"\n [disabled]=\"disabled\"\n />\n <span class=\"fwe-input-text-label\"><ng-content></ng-content></span>\n <span *ngIf=\"hint\" class=\"fwe-input-text-info\">{{ hint }}</span>\n <span *ngIf=\"error\" class=\"fwe-input-text-invalid\">{{ error }}</span>\n</label>\n", styles: [".fng-first-child-fullwidth fng-time-picker-dropdown{width:100%}\n"] }]
180
- }], ctorParameters: () => [{ type: i1.Overlay }, { type: i0.ChangeDetectorRef }], propDecorators: { value: [{
181
- type: Input
182
- }], disabled: [{
183
- type: Input
184
- }], required: [{
185
- type: Input
186
- }], hint: [{
187
- type: Input
188
- }], error: [{
189
- type: Input
190
- }], options: [{
191
- type: Input
192
- }], width: [{
193
- type: Input
194
- }, {
195
- type: HostBinding,
196
- args: ['style.width']
197
- }], display: [{
198
- type: HostBinding,
199
- args: ['style.display']
200
- }], connector: [{
201
- type: ViewChild,
202
- args: ['connector', { static: true }]
203
- }] } });
204
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvbGliL2Zvcm1zL3RpbWUtcGlja2VyL3RpbWUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2xpYi9mb3Jtcy90aW1lLXBpY2tlci90aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUVMLFNBQVMsRUFHVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN2RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFzQi9DLE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUNJLEtBQUssQ0FBQyxJQUFVO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDdkIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksRUFB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R0FBRyxFQUFFLHVCQUF1QixDQUFDOzRCQUNyRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJOzRHQU9qQyxLQUFLO3NCQURSLEtBQUs7Z0JBY0YsUUFBUTtzQkFEWCxLQUFLO2dCQVNGLFFBQVE7c0JBRFgsS0FBSztnQkFTRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFJTixLQUFLO3NCQUZKLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsYUFBYTtnQkFFSSxPQUFPO3NCQUFwQyxXQUFXO3VCQUFDLGVBQWU7Z0JBRWMsU0FBUztzQkFBbEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50UmVmLFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgRm5nVGltZVBpY2tlckRyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi90aW1lLXBpY2tlci1kcm9wZG93bi90aW1lLXBpY2tlci1kcm9wZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBGbmdUaW1lUGlja2VyT3B0aW9ucyB7XG4gIHRpbWVGb3JtYXQ/OiAnMTInIHwgJzI0JztcbiAgc2hvd1NlY29uZHM/OiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHNlbGVjdG9yOiAnZm5nLXRpbWUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RpbWUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGltZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGbmdUaW1lUGlja2VyQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEZuZ1RpbWVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIGdldCB2YWx1ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5pbm5lclZhbHVlO1xuICB9XG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZShkYXRlOiBEYXRlKSB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmlubmVyVmFsdWUgPSBkYXRlO1xuICAgICAgaWYgKHRoaXMub25DaGFuZ2UgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKGRhdGUpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMub25Ub3VjaGVkICE9IG51bGwpIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXJEaXNhYmxlZDtcbiAgfVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlubmVyRGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgQElucHV0KClcbiAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlubmVyUmVxdWlyZWQ7XG4gIH1cbiAgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5pbm5lclJlcXVpcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBwcm90ZWN0ZWQgaW5uZXJSZXF1aXJlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGhpbnQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgZXJyb3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgb3B0aW9uczogRm5nVGltZVBpY2tlck9wdGlvbnMgfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS53aWR0aCcpXG4gIHdpZHRoOiBzdHJpbmcgPSAnbm9uZSc7XG4gIEBIb3N0QmluZGluZygnc3R5bGUuZGlzcGxheScpIGRpc3BsYXk6IHN0cmluZyA9ICdibG9jayc7XG5cbiAgQFZpZXdDaGlsZCgnY29ubmVjdG9yJywgeyBzdGF0aWM6IHRydWUgfSkgY29ubmVjdG9yOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIGdldCB0aW1lRm9ybWF0KCk6IHN0cmluZyB7XG4gICAgbGV0IHRpbWVGb3JtYXQgPSAnSDptbSc7XG4gICAgaWYgKHRoaXMub3B0aW9ucyAhPSBudWxsKSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLnNob3dTZWNvbmRzKSB7XG4gICAgICAgIHRpbWVGb3JtYXQgKz0gJzpzcyc7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5vcHRpb25zLnRpbWVGb3JtYXQgPT09ICcxMicpIHtcbiAgICAgICAgdGltZUZvcm1hdCA9IHRpbWVGb3JtYXQudG9Mb3dlckNhc2UoKSArICcgYSc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aW1lRm9ybWF0O1xuICB9XG5cbiAgdGltZVBpY2tlclJlZjogT3ZlcmxheVJlZiB8IG51bGwgPSBudWxsO1xuXG4gIHByb3RlY3RlZCBpbm5lclZhbHVlOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgcHJvdGVjdGVkIGlubmVyRGlzYWJsZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIGNvbXBsZXRlID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHJpdmF0ZSB0aW1lUGlja2VyOiBDb21wb25lbnRSZWY8Rm5nVGltZVBpY2tlckRyb3Bkb3duQ29tcG9uZW50PiB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG9uVG91Y2hlZDogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICBvbkNoYW5nZTogKChkYXRlOiBEYXRlKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcblxuICB3cml0ZVZhbHVlKGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICB0aGlzLmlubmVyVmFsdWUgPSBkYXRlO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICB0b2dnbGUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgcmVzZXRWYWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIGlmICh0aGlzLnRpbWVQaWNrZXJSZWYgPT0gbnVsbCAmJiB0aGlzLmNvbm5lY3RvciAhPSBudWxsICYmIHRoaXMuY29ubmVjdG9yLm5hdGl2ZUVsZW1lbnQgIT0gbnVsbCkge1xuICAgICAgICBjb25zdCBsYWJlbFdpZHRoID0gKHRoaXMuY29ubmVjdG9yLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmNsaWVudFdpZHRoO1xuICAgICAgICB0aGlzLnRpbWVQaWNrZXJSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcbiAgICAgICAgICBtaW5XaWR0aDogYCR7bGFiZWxXaWR0aH1weGAsXG4gICAgICAgICAgcGFuZWxDbGFzczogJ2ZuZy1maXJzdC1jaGlsZC1mdWxsd2lkdGgnLFxuICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdmbmctZGF0ZS1waWNrZXItYmFja2Ryb3AnLFxuICAgICAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5ibG9jaygpLFxuICAgICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMub3ZlcmxheVxuICAgICAgICAgICAgLnBvc2l0aW9uKClcbiAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuY29ubmVjdG9yLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBvcmlnaW5YOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgICAgICAgICBvdmVybGF5WDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICAgICAgICAgIG9mZnNldFk6IC0xMlxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgb3JpZ2luWDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICAgICAgICAgICAgICBvZmZzZXRZOiA0XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgICAgICAgICBvZmZzZXRZOiAtMTJcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxuICAgICAgICAgICAgICAgIG9mZnNldFk6IDRcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIC53aXRoRmxleGlibGVEaW1lbnNpb25zKGZhbHNlKVxuICAgICAgICAgICAgLndpdGhQdXNoKGZhbHNlKVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgdGltZVBpY2tlclBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoRm5nVGltZVBpY2tlckRyb3Bkb3duQ29tcG9uZW50KTtcbiAgICAgICAgdGhpcy50aW1lUGlja2VyID0gdGhpcy50aW1lUGlja2VyUmVmLmF0dGFjaCh0aW1lUGlja2VyUG9ydGFsKTtcbiAgICAgICAgdGhpcy50aW1lUGlja2VyLmluc3RhbmNlLnRpbWVGb3JtYXQgPSB0aGlzLm9wdGlvbnMgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMudGltZUZvcm1hdCAhPSBudWxsID8gdGhpcy5vcHRpb25zLnRpbWVGb3JtYXQgOiAnMjQnO1xuICAgICAgICB0aGlzLnRpbWVQaWNrZXIuaW5zdGFuY2Uuc2hvd1NlY29uZHMgPSB0aGlzLm9wdGlvbnMgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuc2hvd1NlY29uZHMgIT0gbnVsbCA/IHRoaXMub3B0aW9ucy5zaG93U2Vjb25kcyA6IGZhbHNlO1xuICAgICAgICB0aGlzLnRpbWVQaWNrZXIuaW5zdGFuY2UuZGF0ZSA9IG5ldyBEYXRlKHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLnRpbWVQaWNrZXIuaW5zdGFuY2UuZGF0ZUNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLmNvbXBsZXRlKSkuc3Vic2NyaWJlKGV2ID0+IHtcbiAgICAgICAgICBpZiAoZXYucmVzZXQpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSByZXNldFZhbHVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gZXYuZGF0ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGV2LmNsb3NlKSB7XG4gICAgICAgICAgICB0aGlzLmRpc3Bvc2VEcm9wZG93bigpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyB3ZSBuZWVkIHRvIHJlLXJlbmRlciBvdXIgdmlldyBhZnRlciB2YWx1ZSBjaGFuZ2VkXG4gICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudGltZVBpY2tlclJlZlxuICAgICAgICAgIC5iYWNrZHJvcENsaWNrKClcbiAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5jb21wbGV0ZSkpXG4gICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmRpc3Bvc2VEcm9wZG93bigpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGlzcG9zZURyb3Bkb3duKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRpc3Bvc2VEcm9wZG93bigpIHtcbiAgICBpZiAodGhpcy50aW1lUGlja2VyUmVmICE9IG51bGwpIHtcbiAgICAgIHRoaXMudGltZVBpY2tlclJlZi5kZXRhY2goKTtcbiAgICAgIHRoaXMudGltZVBpY2tlclJlZi5kaXNwb3NlKCk7XG4gICAgICB0aGlzLnRpbWVQaWNrZXJSZWYgPSBudWxsO1xuICAgIH1cbiAgICBpZiAodGhpcy5jb21wbGV0ZSAhPSBudWxsKSB7XG4gICAgICB0aGlzLmNvbXBsZXRlLm5leHQodHJ1ZSk7XG4gICAgICB0aGlzLmNvbXBsZXRlLmNvbXBsZXRlKCk7XG4gICAgfVxuICB9XG59XG4iLCI8bGFiZWwgI2Nvbm5lY3RvciBjbGFzcz1cImZuZy10aW1lLXBpY2tlciBmd2UtaW5wdXQtdGV4dCBmd2UtaW5wdXQtdGV4dC1pY29uXCIgKGNsaWNrKT1cInRvZ2dsZSgkZXZlbnQpXCI+XG4gIDxpIGNsYXNzPVwiZm5nLWljb24tc3ZnIGZuZy1pY29uLXN2Zy0tdGltZVwiIFtjbGFzcy5md2UtY29sb3ItaGVyb109XCJ0aW1lUGlja2VyUmVmICE9IG51bGxcIiBbY2xhc3MuZndlLWNvbG9yLWNvbnRyb2wtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj48L2k+XG4gIDxpbnB1dFxuICAgIGFyaWEtbGFiZWw9XCJwaWNrZWQgdGltZVwiXG4gICAgdHlwZT1cInRleHRcIlxuICAgIHJlYWRvbmx5XG4gICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkID09PSB0cnVlIHx8IG51bGxcIlxuICAgIFtjbGFzcy5md2UtYm9yZGVyLWhlcm9dPVwidGltZVBpY2tlclJlZiAhPSBudWxsXCJcbiAgICBbdmFsdWVdPVwidmFsdWUgfCBkYXRlOiB0aW1lRm9ybWF0XCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAvPlxuICA8c3BhbiBjbGFzcz1cImZ3ZS1pbnB1dC10ZXh0LWxhYmVsXCI+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pjwvc3Bhbj5cbiAgPHNwYW4gKm5nSWY9XCJoaW50XCIgY2xhc3M9XCJmd2UtaW5wdXQtdGV4dC1pbmZvXCI+e3sgaGludCB9fTwvc3Bhbj5cbiAgPHNwYW4gKm5nSWY9XCJlcnJvclwiIGNsYXNzPVwiZndlLWlucHV0LXRleHQtaW52YWxpZFwiPnt7IGVycm9yIH19PC9zcGFuPlxuPC9sYWJlbD5cbiJdfQ==
@@ -1,41 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class FngUniqueSelectionDispatcher {
4
- constructor() {
5
- this.listeners = [];
6
- }
7
- /**
8
- * Notify other items that selection for the given name has been set.
9
- * @param id ID of the item.
10
- * @param name Name of the item.
11
- */
12
- notify(id, name) {
13
- for (const listener of this.listeners) {
14
- if (name) {
15
- listener(id, name);
16
- }
17
- }
18
- }
19
- /**
20
- * Listen for future changes to item selection.
21
- * @return Function used to deregister listener
22
- */
23
- listen(listener) {
24
- this.listeners.push(listener);
25
- return () => {
26
- this.listeners = this.listeners.filter((registered) => {
27
- return listener !== registered;
28
- });
29
- };
30
- }
31
- ngOnDestroy() {
32
- this.listeners = [];
33
- }
34
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: FngUniqueSelectionDispatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
35
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: FngUniqueSelectionDispatcher, providedIn: 'root' }); }
36
- }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: FngUniqueSelectionDispatcher, decorators: [{
38
- type: Injectable,
39
- args: [{ providedIn: 'root' }]
40
- }] });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pcXVlLXNlbGVjdGlvbi1kaXNwYXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvbGliL2Zvcm1zL3VuaXF1ZS1zZWxlY3Rpb24tZGlzcGF0Y2hlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDOztBQUt0RCxNQUFNLE9BQU8sNEJBQTRCO0lBRHpDO1FBRVUsY0FBUyxHQUF3QyxFQUFFLENBQUM7S0ErQjdEO0lBN0JDOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsRUFBVSxFQUFFLElBQWE7UUFDOUIsS0FBSyxNQUFNLFFBQVEsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdEMsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDVCxRQUFRLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3JCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxRQUEyQztRQUNoRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QixPQUFPLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUE2QyxFQUFFLEVBQUU7Z0JBQ3ZGLE9BQU8sUUFBUSxLQUFLLFVBQVUsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQzs4R0EvQlUsNEJBQTRCO2tIQUE1Qiw0QkFBNEIsY0FEZixNQUFNOzsyRkFDbkIsNEJBQTRCO2tCQUR4QyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBVbmlxdWVTZWxlY3Rpb25EaXNwYXRjaGVyTGlzdGVuZXIgPSAoaWQ6IHN0cmluZywgbmFtZTogc3RyaW5nKSA9PiB2b2lkO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEZuZ1VuaXF1ZVNlbGVjdGlvbkRpc3BhdGNoZXIgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGxpc3RlbmVyczogVW5pcXVlU2VsZWN0aW9uRGlzcGF0Y2hlckxpc3RlbmVyW10gPSBbXTtcblxuICAvKipcbiAgICogTm90aWZ5IG90aGVyIGl0ZW1zIHRoYXQgc2VsZWN0aW9uIGZvciB0aGUgZ2l2ZW4gbmFtZSBoYXMgYmVlbiBzZXQuXG4gICAqIEBwYXJhbSBpZCBJRCBvZiB0aGUgaXRlbS5cbiAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgaXRlbS5cbiAgICovXG4gIG5vdGlmeShpZDogc3RyaW5nLCBuYW1lPzogc3RyaW5nKSB7XG4gICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiB0aGlzLmxpc3RlbmVycykge1xuICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgbGlzdGVuZXIoaWQsIG5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gZm9yIGZ1dHVyZSBjaGFuZ2VzIHRvIGl0ZW0gc2VsZWN0aW9uLlxuICAgKiBAcmV0dXJuIEZ1bmN0aW9uIHVzZWQgdG8gZGVyZWdpc3RlciBsaXN0ZW5lclxuICAgKi9cbiAgbGlzdGVuKGxpc3RlbmVyOiBVbmlxdWVTZWxlY3Rpb25EaXNwYXRjaGVyTGlzdGVuZXIpOiAoKSA9PiB2b2lkIHtcbiAgICB0aGlzLmxpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdGhpcy5saXN0ZW5lcnMgPSB0aGlzLmxpc3RlbmVycy5maWx0ZXIoKHJlZ2lzdGVyZWQ6IFVuaXF1ZVNlbGVjdGlvbkRpc3BhdGNoZXJMaXN0ZW5lcikgPT4ge1xuICAgICAgICByZXR1cm4gbGlzdGVuZXIgIT09IHJlZ2lzdGVyZWQ7XG4gICAgICB9KTtcbiAgICB9O1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5saXN0ZW5lcnMgPSBbXTtcbiAgfVxufVxuIl19
@@ -1,41 +0,0 @@
1
- import { Input, Directive } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class FngValueAccessorBaseDirective {
4
- constructor() {
5
- this.disabled = false;
6
- this.changed = new Array();
7
- this.touched = new Array();
8
- }
9
- get value() {
10
- return this.innerValue;
11
- }
12
- set value(value) {
13
- if (value && this.innerValue !== value) {
14
- this.innerValue = value;
15
- this.changed.forEach(f => f(value));
16
- }
17
- }
18
- touch() {
19
- this.touched.forEach(f => f());
20
- }
21
- writeValue(value) {
22
- this.innerValue = value;
23
- }
24
- registerOnChange(fn) {
25
- this.changed.push(fn);
26
- }
27
- registerOnTouched(fn) {
28
- this.touched.push(fn);
29
- }
30
- setDisabledState(isDisabled) {
31
- this.disabled = isDisabled;
32
- }
33
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: FngValueAccessorBaseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
34
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: FngValueAccessorBaseDirective, inputs: { disabled: "disabled" }, ngImport: i0 }); }
35
- }
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: FngValueAccessorBaseDirective, decorators: [{
37
- type: Directive
38
- }], propDecorators: { disabled: [{
39
- type: Input
40
- }] } });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtYWNjZXNzb3ItYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2xpYi9mb3Jtcy92YWx1ZS1hY2Nlc3Nvci1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUdqRCxNQUFNLE9BQU8sNkJBQTZCO0lBRDFDO1FBRVcsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUloQixZQUFPLEdBQUcsSUFBSSxLQUFLLEVBQXNCLENBQUM7UUFDMUMsWUFBTyxHQUFHLElBQUksS0FBSyxFQUFjLENBQUM7S0FnQzdDO0lBOUJDLElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUMsS0FBb0I7UUFDNUIsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVE7UUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQXNCO1FBQ3JDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFjO1FBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBRSxVQUFtQjtRQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUM3QixDQUFDOzhHQXJDVSw2QkFBNkI7a0dBQTdCLDZCQUE2Qjs7MkZBQTdCLDZCQUE2QjtrQkFEekMsU0FBUzs4QkFFQyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJbnB1dCwgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIEZuZ1ZhbHVlQWNjZXNzb3JCYXNlRGlyZWN0aXZlPFQ+IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBpbm5lclZhbHVlOiBUIHwgdW5kZWZpbmVkO1xuXG4gIHByb3RlY3RlZCBjaGFuZ2VkID0gbmV3IEFycmF5PCh2YWx1ZTogVCkgPT4gdm9pZD4oKTtcbiAgcHJvdGVjdGVkIHRvdWNoZWQgPSBuZXcgQXJyYXk8KCkgPT4gdm9pZD4oKTtcblxuICBnZXQgdmFsdWUoKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXJWYWx1ZTtcbiAgfVxuXG4gIHNldCB2YWx1ZSh2YWx1ZTogVCB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSAmJiB0aGlzLmlubmVyVmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLmlubmVyVmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuY2hhbmdlZC5mb3JFYWNoKGYgPT4gZih2YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIHRvdWNoKCkge1xuICAgIHRoaXMudG91Y2hlZC5mb3JFYWNoKGYgPT4gZigpKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IFQpIHtcbiAgICB0aGlzLmlubmVyVmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogVCkgPT4gdm9pZCkge1xuICAgIHRoaXMuY2hhbmdlZC5wdXNoKGZuKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy50b3VjaGVkLnB1c2goZm4pO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG59XG4iXX0=
@@ -1,55 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component, EventEmitter, HostListener, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
3
- import { FngSafeHtmlPipe } from './../../pipes/safe-html.pipe';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common";
6
- export class FngAlertComponent {
7
- constructor() {
8
- this.data = {};
9
- this.close = new EventEmitter();
10
- this.cancel = new EventEmitter();
11
- this.ok = new EventEmitter();
12
- }
13
- onKeyUp(event) {
14
- event.preventDefault();
15
- event.stopPropagation();
16
- if (event.key === 'Esc' || event.key === 'Escape') {
17
- this.onClose();
18
- }
19
- }
20
- ngAfterViewInit() {
21
- if (this.closeBtn) {
22
- this.closeBtn.nativeElement.focus();
23
- }
24
- }
25
- onClose() {
26
- this.close.emit();
27
- }
28
- onOk() {
29
- this.ok.emit();
30
- }
31
- onCancel() {
32
- this.cancel.emit();
33
- }
34
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: FngAlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
35
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.2", type: FngAlertComponent, isStandalone: true, selector: "fng-alert", inputs: { data: "data" }, outputs: { close: "close", cancel: "cancel", ok: "ok" }, host: { listeners: { "window:keyup": "onKeyUp($event)" } }, viewQueries: [{ propertyName: "closeBtn", first: true, predicate: ["closeBtn"], descendants: true }], ngImport: i0, template: "<div\n class=\"fwe-modal\"\n [ngClass]=\"{\n 'fwe-modal--with-indicator-bar': data.strong === true,\n 'fwe-modal--warning': data.alertType === 'warning',\n 'fwe-modal--error': data.alertType === 'error',\n 'fwe-modal--info': data.alertType === 'info'\n }\"\n>\n <button type=\"button\" aria-label=\"Close\" #closeBtn class=\"fwe-modal-close-btn\" (click)=\"onClose()\">\n <span class=\"fwe-sr-only\">Close</span>\n </button>\n <div class=\"fwe-modal-header\">\n <h2 *ngIf=\"data.subtitle\" class=\"fwe-modal-h2\">\n {{ data.subtitle }}\n </h2>\n <h1 class=\"fwe-modal-h1\">\n {{ data.title }}\n </h1>\n </div>\n <div class=\"fwe-modal-body\" [innerHTML]=\"data.body | fngSafeHtml\"></div>\n <div class=\"fwe-modal-footer\" *ngIf=\"data.cancel || data.ok\">\n <div class=\"fwe-modal-buttons\">\n <button\n *ngIf=\"data.cancel\"\n type=\"button\"\n aria-label=\"Cancel\"\n class=\"fwe-btn fwe-btn-lg\"\n [class.fwe-btn-link]=\"data.strong\"\n (click)=\"onCancel()\"\n >\n {{ data.cancel }}\n </button>\n <button *ngIf=\"data.ok\" type=\"button\" aria-label=\"Ok\" class=\"fwe-btn fwe-btn-lg\" [class.fwe-btn-hero]=\"!data.strong\" (click)=\"onOk()\">\n {{ data.ok }}\n </button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: FngSafeHtmlPipe, name: "fngSafeHtml" }], encapsulation: i0.ViewEncapsulation.None }); }
36
- }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: FngAlertComponent, decorators: [{
38
- type: Component,
39
- args: [{ standalone: true, imports: [CommonModule, FngSafeHtmlPipe], selector: 'fng-alert', encapsulation: ViewEncapsulation.None, template: "<div\n class=\"fwe-modal\"\n [ngClass]=\"{\n 'fwe-modal--with-indicator-bar': data.strong === true,\n 'fwe-modal--warning': data.alertType === 'warning',\n 'fwe-modal--error': data.alertType === 'error',\n 'fwe-modal--info': data.alertType === 'info'\n }\"\n>\n <button type=\"button\" aria-label=\"Close\" #closeBtn class=\"fwe-modal-close-btn\" (click)=\"onClose()\">\n <span class=\"fwe-sr-only\">Close</span>\n </button>\n <div class=\"fwe-modal-header\">\n <h2 *ngIf=\"data.subtitle\" class=\"fwe-modal-h2\">\n {{ data.subtitle }}\n </h2>\n <h1 class=\"fwe-modal-h1\">\n {{ data.title }}\n </h1>\n </div>\n <div class=\"fwe-modal-body\" [innerHTML]=\"data.body | fngSafeHtml\"></div>\n <div class=\"fwe-modal-footer\" *ngIf=\"data.cancel || data.ok\">\n <div class=\"fwe-modal-buttons\">\n <button\n *ngIf=\"data.cancel\"\n type=\"button\"\n aria-label=\"Cancel\"\n class=\"fwe-btn fwe-btn-lg\"\n [class.fwe-btn-link]=\"data.strong\"\n (click)=\"onCancel()\"\n >\n {{ data.cancel }}\n </button>\n <button *ngIf=\"data.ok\" type=\"button\" aria-label=\"Ok\" class=\"fwe-btn fwe-btn-lg\" [class.fwe-btn-hero]=\"!data.strong\" (click)=\"onOk()\">\n {{ data.ok }}\n </button>\n </div>\n </div>\n</div>\n" }]
40
- }], propDecorators: { data: [{
41
- type: Input
42
- }], close: [{
43
- type: Output
44
- }], cancel: [{
45
- type: Output
46
- }], ok: [{
47
- type: Output
48
- }], closeBtn: [{
49
- type: ViewChild,
50
- args: ['closeBtn']
51
- }], onKeyUp: [{
52
- type: HostListener,
53
- args: ['window:keyup', ['$event']]
54
- }] } });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvbGliL21vZGFscy9hbGVydC9hbGVydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9saWIvbW9kYWxzL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBcUIvRCxNQUFNLE9BQU8saUJBQWlCO0lBUjlCO1FBU1csU0FBSSxHQUFpQixFQUFrQixDQUFDO1FBQ3ZDLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ2hDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ2pDLE9BQUUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0tBK0J4QztJQTFCQyxPQUFPLENBQUMsS0FBb0I7UUFDMUIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV4QixJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssS0FBSyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pCLENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBNkIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN2RCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckIsQ0FBQzs4R0FsQ1UsaUJBQWlCO2tHQUFqQixpQkFBaUIsMFRDakM5Qiw0ekNBdUNBLHlERFpZLFlBQVksNE5BQUUsZUFBZTs7MkZBTTVCLGlCQUFpQjtrQkFSN0IsU0FBUztpQ0FDSSxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDLFlBQzlCLFdBQVcsaUJBR04saUJBQWlCLENBQUMsSUFBSTs4QkFHNUIsSUFBSTtzQkFBWixLQUFLO2dCQUNJLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csRUFBRTtzQkFBWCxNQUFNO2dCQUVnQixRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBR3JCLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxjQUFjLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZuZ1NhZmVIdG1sUGlwZSB9IGZyb20gJy4vLi4vLi4vcGlwZXMvc2FmZS1odG1sLnBpcGUnO1xuaW1wb3J0IHsgTW9kYWwgfSBmcm9tICcuLi9pbmRleCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm5nQWxlcnREYXRhIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgc3VidGl0bGU/OiBzdHJpbmc7XG4gIGJvZHk6IHN0cmluZztcbiAgYWxlcnRUeXBlOiAnaW5mbycgfCAnd2FybmluZycgfCAnZXJyb3InO1xuICBjYW5jZWw/OiBzdHJpbmc7XG4gIG9rPzogc3RyaW5nO1xuICBzdHJvbmc/OiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm5nU2FmZUh0bWxQaXBlXSxcbiAgc2VsZWN0b3I6ICdmbmctYWxlcnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWxlcnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hbGVydC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEZuZ0FsZXJ0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgTW9kYWw8Rm5nQWxlcnREYXRhLCBhbnk+IHtcbiAgQElucHV0KCkgZGF0YTogRm5nQWxlcnREYXRhID0ge30gYXMgRm5nQWxlcnREYXRhO1xuICBAT3V0cHV0KCkgY2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgb2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAVmlld0NoaWxkKCdjbG9zZUJ0bicpIGNsb3NlQnRuOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXl1cCcsIFsnJGV2ZW50J10pXG4gIG9uS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzYycgfHwgZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgdGhpcy5vbkNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLmNsb3NlQnRuKSB7XG4gICAgICAodGhpcy5jbG9zZUJ0bi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2xvc2UoKSB7XG4gICAgdGhpcy5jbG9zZS5lbWl0KCk7XG4gIH1cblxuICBvbk9rKCkge1xuICAgIHRoaXMub2suZW1pdCgpO1xuICB9XG5cbiAgb25DYW5jZWwoKSB7XG4gICAgdGhpcy5jYW5jZWwuZW1pdCgpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiZndlLW1vZGFsXCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdmd2UtbW9kYWwtLXdpdGgtaW5kaWNhdG9yLWJhcic6IGRhdGEuc3Ryb25nID09PSB0cnVlLFxuICAgICdmd2UtbW9kYWwtLXdhcm5pbmcnOiBkYXRhLmFsZXJ0VHlwZSA9PT0gJ3dhcm5pbmcnLFxuICAgICdmd2UtbW9kYWwtLWVycm9yJzogZGF0YS5hbGVydFR5cGUgPT09ICdlcnJvcicsXG4gICAgJ2Z3ZS1tb2RhbC0taW5mbyc6IGRhdGEuYWxlcnRUeXBlID09PSAnaW5mbydcbiAgfVwiXG4+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiICNjbG9zZUJ0biBjbGFzcz1cImZ3ZS1tb2RhbC1jbG9zZS1idG5cIiAoY2xpY2spPVwib25DbG9zZSgpXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJmd2Utc3Itb25seVwiPkNsb3NlPC9zcGFuPlxuICA8L2J1dHRvbj5cbiAgPGRpdiBjbGFzcz1cImZ3ZS1tb2RhbC1oZWFkZXJcIj5cbiAgICA8aDIgKm5nSWY9XCJkYXRhLnN1YnRpdGxlXCIgY2xhc3M9XCJmd2UtbW9kYWwtaDJcIj5cbiAgICAgIHt7IGRhdGEuc3VidGl0bGUgfX1cbiAgICA8L2gyPlxuICAgIDxoMSBjbGFzcz1cImZ3ZS1tb2RhbC1oMVwiPlxuICAgICAge3sgZGF0YS50aXRsZSB9fVxuICAgIDwvaDE+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZndlLW1vZGFsLWJvZHlcIiBbaW5uZXJIVE1MXT1cImRhdGEuYm9keSB8IGZuZ1NhZmVIdG1sXCI+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmd2UtbW9kYWwtZm9vdGVyXCIgKm5nSWY9XCJkYXRhLmNhbmNlbCB8fCBkYXRhLm9rXCI+XG4gICAgPGRpdiBjbGFzcz1cImZ3ZS1tb2RhbC1idXR0b25zXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwiZGF0YS5jYW5jZWxcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgYXJpYS1sYWJlbD1cIkNhbmNlbFwiXG4gICAgICAgIGNsYXNzPVwiZndlLWJ0biBmd2UtYnRuLWxnXCJcbiAgICAgICAgW2NsYXNzLmZ3ZS1idG4tbGlua109XCJkYXRhLnN0cm9uZ1wiXG4gICAgICAgIChjbGljayk9XCJvbkNhbmNlbCgpXCJcbiAgICAgID5cbiAgICAgICAge3sgZGF0YS5jYW5jZWwgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiAqbmdJZj1cImRhdGEub2tcIiB0eXBlPVwiYnV0dG9uXCIgYXJpYS1sYWJlbD1cIk9rXCIgY2xhc3M9XCJmd2UtYnRuIGZ3ZS1idG4tbGdcIiBbY2xhc3MuZndlLWJ0bi1oZXJvXT1cIiFkYXRhLnN0cm9uZ1wiIChjbGljayk9XCJvbk9rKClcIj5cbiAgICAgICAge3sgZGF0YS5vayB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,56 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
3
- import { FngSafeHtmlPipe } from './../../pipes/safe-html.pipe';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common";
6
- export class FngConfirmComponent {
7
- onKeyUp(event) {
8
- event.preventDefault();
9
- event.stopPropagation();
10
- if (event.key === 'Esc' || event.key === 'Escape') {
11
- this.onClose();
12
- }
13
- }
14
- constructor(cd) {
15
- this.cd = cd;
16
- this.data = {};
17
- this.close = new EventEmitter();
18
- this.cancel = new EventEmitter();
19
- this.ok = new EventEmitter();
20
- }
21
- ngAfterViewInit() {
22
- if (this.closeBtn) {
23
- this.closeBtn.nativeElement.focus();
24
- }
25
- }
26
- onClose() {
27
- this.close.emit();
28
- }
29
- onOk() {
30
- this.ok.emit();
31
- }
32
- onCancel() {
33
- this.cancel.emit();
34
- }
35
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: FngConfirmComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
36
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.2", type: FngConfirmComponent, isStandalone: true, selector: "fng-confirm", inputs: { data: "data" }, outputs: { close: "close", cancel: "cancel", ok: "ok" }, host: { listeners: { "window:keyup": "onKeyUp($event)" } }, viewQueries: [{ propertyName: "closeBtn", first: true, predicate: ["closeBtn"], descendants: true }], ngImport: i0, template: "<div class=\"fwe-modal\" [ngClass]=\"{ 'fwe-modal--large': data.large }\">\n <button type=\"button\" aria-label=\"Close\" #closeBtn class=\"fwe-modal-close-btn\" (click)=\"onClose()\">\n <span class=\"fwe-sr-only\">Close</span>\n </button>\n <div class=\"fwe-modal-header\">\n <h2 *ngIf=\"data.subtitle\" class=\"fwe-modal-h2\">{{ data.subtitle }}</h2>\n <h1 class=\"fwe-modal-h1\">{{ data.title }}</h1>\n </div>\n <div class=\"fwe-modal-body\" [innerHTML]=\"data.body | fngSafeHtml\"></div>\n <div class=\"fwe-modal-footer\" *ngIf=\"data.cancel || data.ok\">\n <div class=\"fwe-modal-buttons\">\n <button *ngIf=\"data.cancel\" type=\"button\" aria-label=\"Cancel\" class=\"fwe-btn fwe-btn-lg\" (click)=\"onCancel()\">\n {{ data.cancel }}\n </button>\n <button *ngIf=\"data.ok\" type=\"button\" aria-label=\"Ok\" class=\"fwe-btn fwe-btn-lg fwe-btn-hero\" (click)=\"onOk()\">\n {{ data.ok }}\n </button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: FngSafeHtmlPipe, name: "fngSafeHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
37
- }
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: FngConfirmComponent, decorators: [{
39
- type: Component,
40
- args: [{ standalone: true, imports: [CommonModule, FngSafeHtmlPipe], selector: 'fng-confirm', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"fwe-modal\" [ngClass]=\"{ 'fwe-modal--large': data.large }\">\n <button type=\"button\" aria-label=\"Close\" #closeBtn class=\"fwe-modal-close-btn\" (click)=\"onClose()\">\n <span class=\"fwe-sr-only\">Close</span>\n </button>\n <div class=\"fwe-modal-header\">\n <h2 *ngIf=\"data.subtitle\" class=\"fwe-modal-h2\">{{ data.subtitle }}</h2>\n <h1 class=\"fwe-modal-h1\">{{ data.title }}</h1>\n </div>\n <div class=\"fwe-modal-body\" [innerHTML]=\"data.body | fngSafeHtml\"></div>\n <div class=\"fwe-modal-footer\" *ngIf=\"data.cancel || data.ok\">\n <div class=\"fwe-modal-buttons\">\n <button *ngIf=\"data.cancel\" type=\"button\" aria-label=\"Cancel\" class=\"fwe-btn fwe-btn-lg\" (click)=\"onCancel()\">\n {{ data.cancel }}\n </button>\n <button *ngIf=\"data.ok\" type=\"button\" aria-label=\"Ok\" class=\"fwe-btn fwe-btn-lg fwe-btn-hero\" (click)=\"onOk()\">\n {{ data.ok }}\n </button>\n </div>\n </div>\n</div>\n" }]
41
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { data: [{
42
- type: Input
43
- }], close: [{
44
- type: Output
45
- }], cancel: [{
46
- type: Output
47
- }], ok: [{
48
- type: Output
49
- }], closeBtn: [{
50
- type: ViewChild,
51
- args: ['closeBtn']
52
- }], onKeyUp: [{
53
- type: HostListener,
54
- args: ['window:keyup', ['$event']]
55
- }] } });
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9saWIvbW9kYWxzL2NvbmZpcm0vY29uZmlybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9saWIvbW9kYWxzL2NvbmZpcm0vY29uZmlybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7QUFxQi9ELE1BQU0sT0FBTyxtQkFBbUI7SUFTOUIsT0FBTyxDQUFDLEtBQW9CO1FBQzFCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFeEIsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLEtBQUssSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2xELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQixDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQW9CLEVBQXFCO1FBQXJCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBakJoQyxTQUFJLEdBQW1CLEVBQW9CLENBQUM7UUFDM0MsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDaEMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDakMsT0FBRSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFjSyxDQUFDO0lBRTdDLGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLGFBQTZCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkQsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JCLENBQUM7OEdBcENVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLDRUQ25DaEMsNDlCQW9CQSx5RERRWSxZQUFZLDROQUFFLGVBQWU7OzJGQU81QixtQkFBbUI7a0JBVC9CLFNBQVM7aUNBQ0ksSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsQ0FBQyxZQUM5QixhQUFhLG1CQUdOLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7c0ZBRzVCLElBQUk7c0JBQVosS0FBSztnQkFDSSxLQUFLO3NCQUFkLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLEVBQUU7c0JBQVgsTUFBTTtnQkFFZ0IsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUdyQixPQUFPO3NCQUROLFlBQVk7dUJBQUMsY0FBYyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZuZ1NhZmVIdG1sUGlwZSB9IGZyb20gJy4vLi4vLi4vcGlwZXMvc2FmZS1odG1sLnBpcGUnO1xuaW1wb3J0IHsgTW9kYWwgfSBmcm9tICcuLi9pbmRleCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm5nQ29uZmlybURhdGEge1xuICB0aXRsZTogc3RyaW5nO1xuICBzdWJ0aXRsZT86IHN0cmluZztcbiAgYm9keTogc3RyaW5nO1xuICBjYW5jZWw/OiBzdHJpbmc7XG4gIG9rPzogc3RyaW5nO1xuICBsYXJnZT86IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGbmdTYWZlSHRtbFBpcGVdLFxuICBzZWxlY3RvcjogJ2ZuZy1jb25maXJtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbmZpcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb25maXJtLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEZuZ0NvbmZpcm1Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBNb2RhbDxGbmdDb25maXJtRGF0YSwgYW55PiB7XG4gIEBJbnB1dCgpIGRhdGE6IEZuZ0NvbmZpcm1EYXRhID0ge30gYXMgRm5nQ29uZmlybURhdGE7XG4gIEBPdXRwdXQoKSBjbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgY2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBvayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2Nsb3NlQnRuJykgY2xvc2VCdG46IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleXVwJywgWyckZXZlbnQnXSlcbiAgb25LZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjJyB8fCBldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICB0aGlzLm9uQ2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMuY2xvc2VCdG4pIHtcbiAgICAgICh0aGlzLmNsb3NlQnRuLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgb25DbG9zZSgpIHtcbiAgICB0aGlzLmNsb3NlLmVtaXQoKTtcbiAgfVxuXG4gIG9uT2soKSB7XG4gICAgdGhpcy5vay5lbWl0KCk7XG4gIH1cblxuICBvbkNhbmNlbCgpIHtcbiAgICB0aGlzLmNhbmNlbC5lbWl0KCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmd2UtbW9kYWxcIiBbbmdDbGFzc109XCJ7ICdmd2UtbW9kYWwtLWxhcmdlJzogZGF0YS5sYXJnZSB9XCI+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiICNjbG9zZUJ0biBjbGFzcz1cImZ3ZS1tb2RhbC1jbG9zZS1idG5cIiAoY2xpY2spPVwib25DbG9zZSgpXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJmd2Utc3Itb25seVwiPkNsb3NlPC9zcGFuPlxuICA8L2J1dHRvbj5cbiAgPGRpdiBjbGFzcz1cImZ3ZS1tb2RhbC1oZWFkZXJcIj5cbiAgICA8aDIgKm5nSWY9XCJkYXRhLnN1YnRpdGxlXCIgY2xhc3M9XCJmd2UtbW9kYWwtaDJcIj57eyBkYXRhLnN1YnRpdGxlIH19PC9oMj5cbiAgICA8aDEgY2xhc3M9XCJmd2UtbW9kYWwtaDFcIj57eyBkYXRhLnRpdGxlIH19PC9oMT5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmd2UtbW9kYWwtYm9keVwiIFtpbm5lckhUTUxdPVwiZGF0YS5ib2R5IHwgZm5nU2FmZUh0bWxcIj48L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImZ3ZS1tb2RhbC1mb290ZXJcIiAqbmdJZj1cImRhdGEuY2FuY2VsIHx8IGRhdGEub2tcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZndlLW1vZGFsLWJ1dHRvbnNcIj5cbiAgICAgIDxidXR0b24gKm5nSWY9XCJkYXRhLmNhbmNlbFwiIHR5cGU9XCJidXR0b25cIiBhcmlhLWxhYmVsPVwiQ2FuY2VsXCIgY2xhc3M9XCJmd2UtYnRuIGZ3ZS1idG4tbGdcIiAoY2xpY2spPVwib25DYW5jZWwoKVwiPlxuICAgICAgICB7eyBkYXRhLmNhbmNlbCB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uICpuZ0lmPVwiZGF0YS5va1wiIHR5cGU9XCJidXR0b25cIiBhcmlhLWxhYmVsPVwiT2tcIiBjbGFzcz1cImZ3ZS1idG4gZndlLWJ0bi1sZyBmd2UtYnRuLWhlcm9cIiAoY2xpY2spPVwib25PaygpXCI+XG4gICAgICAgIHt7IGRhdGEub2sgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,88 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- export class FngCustomModalComponent {
6
- constructor() {
7
- this._visible = false;
8
- this.closeOnBackdrop = false;
9
- this.large = false;
10
- /**
11
- * Emits false on close modal by close, cancel, click outside and close by providing value false to visible
12
- */
13
- this.visibleChange = new EventEmitter();
14
- this.header = '';
15
- this.subheader = '';
16
- this.acknowledgeLabel = 'Ok';
17
- this.acknowledge = new EventEmitter();
18
- this.cancelLabel = 'Cancel';
19
- this.cancel = new EventEmitter();
20
- this.close = new EventEmitter();
21
- }
22
- set visible(value) {
23
- this._visible = value;
24
- if (!value && this.visibleChange) {
25
- this.visibleChange.emit(false);
26
- }
27
- }
28
- get visible() {
29
- return this._visible;
30
- }
31
- closeModal() {
32
- this.visible = false;
33
- }
34
- onClose() {
35
- if (this.close) {
36
- this.close.emit();
37
- }
38
- this.closeModal();
39
- }
40
- onCancel() {
41
- this.closeModal();
42
- if (this.cancel) {
43
- this.cancel.emit();
44
- }
45
- }
46
- onAcknowledge() {
47
- if (this.acknowledge) {
48
- this.acknowledge.emit();
49
- }
50
- }
51
- onClickOutside() {
52
- if (this.closeOnBackdrop) {
53
- this.onClose();
54
- }
55
- }
56
- onClickInside(event) {
57
- event.stopPropagation();
58
- }
59
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: FngCustomModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
60
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.2", type: FngCustomModalComponent, isStandalone: true, selector: "fng-custom-modal", inputs: { closeOnBackdrop: "closeOnBackdrop", large: "large", visible: "visible", header: "header", subheader: "subheader", acknowledgeLabel: "acknowledgeLabel", cancelLabel: "cancelLabel" }, outputs: { visibleChange: "visibleChange", acknowledge: "acknowledge", cancel: "cancel", close: "close" }, ngImport: i0, template: "<div class=\"fwe-modal-backdrop\" *ngIf=\"visible\" (mousedown)=\"onClickOutside()\">\n <div class=\"fwe-modal\" [class.fwe-modal--large]=\"large\" (mousedown)=\"onClickInside($event)\">\n <button type=\"button\" aria-label=\"Close\" #closeBtn class=\"fwe-modal-close-btn\" (click)=\"onClose()\">\n <span class=\"fwe-sr-only\">Close</span>\n </button>\n <div class=\"fwe-modal-header\">\n <h2 class=\"fwe-modal-h2\" *ngIf=\"subheader?.length\">{{ subheader }}</h2>\n <h1 class=\"fwe-modal-h1\">{{ header }}</h1>\n </div>\n <div class=\"fwe-modal-body\">\n <ng-content></ng-content>\n </div>\n <div class=\"fwe-modal-footer\">\n <div class=\"fwe-modal-buttons\">\n <button class=\"fwe-btn fwe-btn-lg\" (click)=\"onCancel()\">\n {{ cancelLabel }}\n </button>\n <button class=\"fwe-btn fwe-btn-hero fwe-btn-lg\" (click)=\"onAcknowledge()\">\n {{ acknowledgeLabel }}\n </button>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None }); }
61
- }
62
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: FngCustomModalComponent, decorators: [{
63
- type: Component,
64
- args: [{ standalone: true, imports: [CommonModule], selector: 'fng-custom-modal', encapsulation: ViewEncapsulation.None, template: "<div class=\"fwe-modal-backdrop\" *ngIf=\"visible\" (mousedown)=\"onClickOutside()\">\n <div class=\"fwe-modal\" [class.fwe-modal--large]=\"large\" (mousedown)=\"onClickInside($event)\">\n <button type=\"button\" aria-label=\"Close\" #closeBtn class=\"fwe-modal-close-btn\" (click)=\"onClose()\">\n <span class=\"fwe-sr-only\">Close</span>\n </button>\n <div class=\"fwe-modal-header\">\n <h2 class=\"fwe-modal-h2\" *ngIf=\"subheader?.length\">{{ subheader }}</h2>\n <h1 class=\"fwe-modal-h1\">{{ header }}</h1>\n </div>\n <div class=\"fwe-modal-body\">\n <ng-content></ng-content>\n </div>\n <div class=\"fwe-modal-footer\">\n <div class=\"fwe-modal-buttons\">\n <button class=\"fwe-btn fwe-btn-lg\" (click)=\"onCancel()\">\n {{ cancelLabel }}\n </button>\n <button class=\"fwe-btn fwe-btn-hero fwe-btn-lg\" (click)=\"onAcknowledge()\">\n {{ acknowledgeLabel }}\n </button>\n </div>\n </div>\n </div>\n</div>\n" }]
65
- }], propDecorators: { closeOnBackdrop: [{
66
- type: Input
67
- }], large: [{
68
- type: Input
69
- }], visible: [{
70
- type: Input
71
- }], visibleChange: [{
72
- type: Output
73
- }], header: [{
74
- type: Input
75
- }], subheader: [{
76
- type: Input
77
- }], acknowledgeLabel: [{
78
- type: Input
79
- }], acknowledge: [{
80
- type: Output
81
- }], cancelLabel: [{
82
- type: Input
83
- }], cancel: [{
84
- type: Output
85
- }], close: [{
86
- type: Output
87
- }] } });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2xpYi9tb2RhbHMvY3VzdG9tLW1vZGFsL2N1c3RvbS1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9saWIvbW9kYWxzL2N1c3RvbS1tb2RhbC9jdXN0b20tbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVMxRixNQUFNLE9BQU8sdUJBQXVCO0lBUHBDO1FBUVUsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUV6QixvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUNqQyxVQUFLLEdBQVksS0FBSyxDQUFDO1FBWWhDOztXQUVHO1FBQ08sa0JBQWEsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUVwRSxXQUFNLEdBQVcsRUFBRSxDQUFDO1FBQ3BCLGNBQVMsR0FBVyxFQUFFLENBQUM7UUFFdkIscUJBQWdCLEdBQVcsSUFBSSxDQUFDO1FBQy9CLGdCQUFXLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFNUQsZ0JBQVcsR0FBVyxRQUFRLENBQUM7UUFDOUIsV0FBTSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXRELFVBQUssR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztLQW1DaEU7SUE1REMsSUFDSSxPQUFPLENBQUMsS0FBYztRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUV0QixJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxDQUFDO0lBQ0gsQ0FBQztJQUNELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBaUJELFVBQVU7UUFDUixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNwQixDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakIsQ0FBQztJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsS0FBaUI7UUFDN0IsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzFCLENBQUM7OEdBaEVVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLHVYQ1ZwQyx1L0JBd0JBLDJDRG5CWSxZQUFZOzsyRkFLWCx1QkFBdUI7a0JBUG5DLFNBQVM7aUNBQ0ksSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDLFlBQ2Isa0JBQWtCLGlCQUViLGlCQUFpQixDQUFDLElBQUk7OEJBSzVCLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVGLE9BQU87c0JBRFYsS0FBSztnQkFjSSxhQUFhO3NCQUF0QixNQUFNO2dCQUVFLE1BQU07c0JBQWQsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUVFLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0ksTUFBTTtzQkFBZixNQUFNO2dCQUVHLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBzZWxlY3RvcjogJ2ZuZy1jdXN0b20tbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBGbmdDdXN0b21Nb2RhbENvbXBvbmVudCB7XG4gIHByaXZhdGUgX3Zpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBjbG9zZU9uQmFja2Ryb3A6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbGFyZ2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KClcbiAgc2V0IHZpc2libGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl92aXNpYmxlID0gdmFsdWU7XG5cbiAgICBpZiAoIXZhbHVlICYmIHRoaXMudmlzaWJsZUNoYW5nZSkge1xuICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBnZXQgdmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdmlzaWJsZTtcbiAgfVxuICAvKipcbiAgICogRW1pdHMgZmFsc2Ugb24gY2xvc2UgbW9kYWwgYnkgY2xvc2UsIGNhbmNlbCwgY2xpY2sgb3V0c2lkZSBhbmQgY2xvc2UgYnkgcHJvdmlkaW5nIHZhbHVlIGZhbHNlIHRvIHZpc2libGVcbiAgICovXG4gIEBPdXRwdXQoKSB2aXNpYmxlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQElucHV0KCkgaGVhZGVyOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgc3ViaGVhZGVyOiBzdHJpbmcgPSAnJztcblxuICBASW5wdXQoKSBhY2tub3dsZWRnZUxhYmVsOiBzdHJpbmcgPSAnT2snO1xuICBAT3V0cHV0KCkgYWNrbm93bGVkZ2U6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBASW5wdXQoKSBjYW5jZWxMYWJlbDogc3RyaW5nID0gJ0NhbmNlbCc7XG4gIEBPdXRwdXQoKSBjYW5jZWw6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBAT3V0cHV0KCkgY2xvc2U6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBjbG9zZU1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICB9XG5cbiAgb25DbG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jbG9zZSkge1xuICAgICAgdGhpcy5jbG9zZS5lbWl0KCk7XG4gICAgfVxuICAgIHRoaXMuY2xvc2VNb2RhbCgpO1xuICB9XG5cbiAgb25DYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZU1vZGFsKCk7XG4gICAgaWYgKHRoaXMuY2FuY2VsKSB7XG4gICAgICB0aGlzLmNhbmNlbC5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgb25BY2tub3dsZWRnZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hY2tub3dsZWRnZSkge1xuICAgICAgdGhpcy5hY2tub3dsZWRnZS5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgb25DbGlja091dHNpZGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2xvc2VPbkJhY2tkcm9wKSB7XG4gICAgICB0aGlzLm9uQ2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBvbkNsaWNrSW5zaWRlKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmd2UtbW9kYWwtYmFja2Ryb3BcIiAqbmdJZj1cInZpc2libGVcIiAobW91c2Vkb3duKT1cIm9uQ2xpY2tPdXRzaWRlKClcIj5cbiAgPGRpdiBjbGFzcz1cImZ3ZS1tb2RhbFwiIFtjbGFzcy5md2UtbW9kYWwtLWxhcmdlXT1cImxhcmdlXCIgKG1vdXNlZG93bik9XCJvbkNsaWNrSW5zaWRlKCRldmVudClcIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiAjY2xvc2VCdG4gY2xhc3M9XCJmd2UtbW9kYWwtY2xvc2UtYnRuXCIgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJmd2Utc3Itb25seVwiPkNsb3NlPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxkaXYgY2xhc3M9XCJmd2UtbW9kYWwtaGVhZGVyXCI+XG4gICAgICA8aDIgY2xhc3M9XCJmd2UtbW9kYWwtaDJcIiAqbmdJZj1cInN1YmhlYWRlcj8ubGVuZ3RoXCI+e3sgc3ViaGVhZGVyIH19PC9oMj5cbiAgICAgIDxoMSBjbGFzcz1cImZ3ZS1tb2RhbC1oMVwiPnt7IGhlYWRlciB9fTwvaDE+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZ3ZS1tb2RhbC1ib2R5XCI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZ3ZS1tb2RhbC1mb290ZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmd2UtbW9kYWwtYnV0dG9uc1wiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZndlLWJ0biBmd2UtYnRuLWxnXCIgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIj5cbiAgICAgICAgICB7eyBjYW5jZWxMYWJlbCB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImZ3ZS1idG4gZndlLWJ0bi1oZXJvIGZ3ZS1idG4tbGdcIiAoY2xpY2spPVwib25BY2tub3dsZWRnZSgpXCI+XG4gICAgICAgICAge3sgYWNrbm93bGVkZ2VMYWJlbCB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19