@sebgroup/green-angular 4.6.1 → 4.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/src/v-angular/base-control-value-accessor/base-control-value-accessor.component.mjs +9 -9
- package/esm2022/src/v-angular/button/button.component.mjs +5 -5
- package/esm2022/src/v-angular/character-countdown/character-countdown.directive.mjs +5 -5
- package/esm2022/src/v-angular/core/core.globals.mjs +3 -3
- package/esm2022/src/v-angular/dropdown/dropdown-list/dropdown-list.component.mjs +4 -4
- package/esm2022/src/v-angular/dropdown/typeahead/index.mjs +4 -1
- package/esm2022/src/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.mjs +5 -5
- package/esm2022/src/v-angular/dropdown/typeahead/typeahead.directive.mjs +177 -0
- package/esm2022/src/v-angular/info-circle/info-circle.component.mjs +3 -3
- package/esm2022/src/v-angular/input/input.component.mjs +7 -7
- package/esm2022/src/v-angular/input-mask/input-mask-format.pipe.mjs +5 -4
- package/esm2022/src/v-angular/input-mask/input-mask.directive.mjs +8 -8
- package/esm2022/src/v-angular/modal/dialog/dialog.component.mjs +16 -16
- package/esm2022/src/v-angular/modal/fold-out/fold-out.directive.mjs +3 -3
- package/esm2022/src/v-angular/modal/modal.globals.mjs +3 -3
- package/esm2022/src/v-angular/modal/slide-out/slide-out.component.mjs +15 -15
- package/esm2022/src/v-angular/textarea/textarea.component.mjs +4 -3
- package/esm2022/src/v-angular/textarea/textarea.module.mjs +5 -4
- package/esm2022/src/v-angular/tooltip/tooltip.directive.mjs +13 -13
- package/esm2022/v-angular/base-control-value-accessor/base-control-value-accessor.component.mjs +287 -0
- package/esm2022/v-angular/base-control-value-accessor/base-control-value-accessor.module.mjs +17 -0
- package/esm2022/v-angular/base-control-value-accessor/index.mjs +3 -0
- package/esm2022/v-angular/breadcrumbs/breadcrumbs.component.mjs +25 -0
- package/esm2022/v-angular/breadcrumbs/breadcrumbs.module.mjs +20 -0
- package/esm2022/v-angular/breadcrumbs/index.mjs +3 -0
- package/esm2022/v-angular/button/button.component.mjs +108 -0
- package/esm2022/v-angular/button/button.module.mjs +20 -0
- package/esm2022/v-angular/button/index.mjs +3 -0
- package/esm2022/v-angular/card/card.component.mjs +11 -0
- package/esm2022/v-angular/card/card.module.mjs +18 -0
- package/esm2022/v-angular/card/index.mjs +3 -0
- package/esm2022/v-angular/character-countdown/character-countdown.directive.mjs +51 -0
- package/esm2022/v-angular/character-countdown/character-countdown.module.mjs +18 -0
- package/esm2022/v-angular/character-countdown/index.mjs +3 -0
- package/esm2022/v-angular/checkbox/checkbox.component.mjs +72 -0
- package/esm2022/v-angular/checkbox/checkbox.module.mjs +19 -0
- package/esm2022/v-angular/checkbox/index.mjs +3 -0
- package/esm2022/v-angular/dropdown/dropdown-list/dropdown-list.component.mjs +256 -0
- package/esm2022/v-angular/dropdown/dropdown-list/index.mjs +2 -0
- package/esm2022/v-angular/dropdown/dropdown.component.mjs +239 -0
- package/esm2022/v-angular/dropdown/dropdown.module.mjs +22 -0
- package/esm2022/v-angular/dropdown/index.mjs +6 -0
- package/esm2022/v-angular/dropdown/typeahead/index.mjs +6 -0
- package/esm2022/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.mjs +98 -0
- package/esm2022/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.mjs +85 -0
- package/esm2022/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.mjs +132 -0
- package/esm2022/v-angular/dropdown/typeahead/typeahead.directive.mjs +177 -0
- package/esm2022/v-angular/dropdown/typeahead/typeahead.module.mjs +33 -0
- package/esm2022/v-angular/i18n/i18n.json +12 -0
- package/esm2022/v-angular/i18n/i18n.module.mjs +83 -0
- package/esm2022/v-angular/i18n/i18n.test.module.mjs +89 -0
- package/esm2022/v-angular/i18n/index.mjs +3 -0
- package/esm2022/v-angular/index.mjs +18 -0
- package/esm2022/v-angular/info-circle/index.mjs +3 -0
- package/esm2022/v-angular/info-circle/info-circle.component.mjs +28 -0
- package/esm2022/v-angular/info-circle/info-circle.module.mjs +21 -0
- package/esm2022/v-angular/input/index.mjs +3 -0
- package/esm2022/v-angular/input/input.component.mjs +221 -0
- package/esm2022/v-angular/input/input.module.mjs +32 -0
- package/esm2022/v-angular/input-mask/config.mjs +9 -0
- package/esm2022/v-angular/input-mask/constants.mjs +2 -0
- package/esm2022/v-angular/input-mask/index.mjs +6 -0
- package/esm2022/v-angular/input-mask/input-mask-format.pipe.mjs +21 -0
- package/esm2022/v-angular/input-mask/input-mask.directive.mjs +165 -0
- package/esm2022/v-angular/input-mask/input-mask.module.mjs +35 -0
- package/esm2022/v-angular/input-mask/input-mask.types.mjs +2 -0
- package/esm2022/v-angular/modal/dialog/dialog.component.mjs +190 -0
- package/esm2022/v-angular/modal/fold-out/fold-out.component.mjs +56 -0
- package/esm2022/v-angular/modal/fold-out/fold-out.directive.mjs +19 -0
- package/esm2022/v-angular/modal/index.mjs +6 -0
- package/esm2022/v-angular/modal/modal.globals.mjs +20 -0
- package/esm2022/v-angular/modal/modal.module.mjs +40 -0
- package/esm2022/v-angular/modal/modal.types.mjs +2 -0
- package/esm2022/v-angular/modal/slide-out/slide-out.component.mjs +229 -0
- package/esm2022/v-angular/radio/index.mjs +3 -0
- package/esm2022/v-angular/radio/radio.component.mjs +130 -0
- package/esm2022/v-angular/radio/radio.module.mjs +20 -0
- package/esm2022/v-angular/sebgroup-green-angular-v-angular.mjs +5 -0
- package/esm2022/v-angular/textarea/index.mjs +3 -0
- package/esm2022/v-angular/textarea/textarea.component.mjs +102 -0
- package/esm2022/v-angular/textarea/textarea.module.mjs +19 -0
- package/esm2022/v-angular/tooltip/index.mjs +3 -0
- package/esm2022/v-angular/tooltip/tooltip.directive.mjs +273 -0
- package/esm2022/v-angular/tooltip/tooltip.module.mjs +18 -0
- package/esm2022/v-angular/v-angular.module.mjs +80 -0
- package/fesm2022/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs +8 -8
- package/fesm2022/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs.map +1 -1
- package/fesm2022/sebgroup-green-angular-src-v-angular-button.mjs +4 -4
- package/fesm2022/sebgroup-green-angular-src-v-angular-button.mjs.map +1 -1
- package/fesm2022/sebgroup-green-angular-src-v-angular-character-countdown.mjs +4 -4
- package/fesm2022/sebgroup-green-angular-src-v-angular-character-countdown.mjs.map +1 -1
- package/fesm2022/sebgroup-green-angular-src-v-angular-core.mjs +2 -2
- package/fesm2022/sebgroup-green-angular-src-v-angular-core.mjs.map +1 -1
- package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs +179 -10
- package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs.map +1 -1
- package/fesm2022/sebgroup-green-angular-src-v-angular-info-circle.mjs +2 -2
- package/fesm2022/sebgroup-green-angular-src-v-angular-info-circle.mjs.map +1 -1
- package/fesm2022/sebgroup-green-angular-src-v-angular-input-mask.mjs +11 -10
- package/fesm2022/sebgroup-green-angular-src-v-angular-input-mask.mjs.map +1 -1
- package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs +6 -6
- package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs.map +1 -1
- package/fesm2022/sebgroup-green-angular-src-v-angular-modal.mjs +33 -33
- package/fesm2022/sebgroup-green-angular-src-v-angular-modal.mjs.map +1 -1
- package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs +7 -5
- package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs.map +1 -1
- package/fesm2022/sebgroup-green-angular-src-v-angular-tooltip.mjs +12 -12
- package/fesm2022/sebgroup-green-angular-src-v-angular-tooltip.mjs.map +1 -1
- package/fesm2022/sebgroup-green-angular-v-angular.mjs +3408 -0
- package/fesm2022/sebgroup-green-angular-v-angular.mjs.map +1 -0
- package/package.json +8 -2
- package/src/v-angular/base-control-value-accessor/base-control-value-accessor.component.d.ts +3 -3
- package/src/v-angular/button/button.component.d.ts +2 -2
- package/src/v-angular/character-countdown/character-countdown.directive.d.ts +1 -1
- package/src/v-angular/core/core.globals.d.ts +1 -1
- package/src/v-angular/dropdown/typeahead/index.d.ts +3 -0
- package/src/v-angular/dropdown/typeahead/typeahead.directive.d.ts +76 -0
- package/src/v-angular/input/input.component.d.ts +3 -3
- package/src/v-angular/input-mask/input-mask-format.pipe.d.ts +1 -1
- package/src/v-angular/input-mask/input-mask.directive.d.ts +2 -2
- package/src/v-angular/modal/dialog/dialog.component.d.ts +5 -5
- package/src/v-angular/modal/fold-out/fold-out.directive.d.ts +1 -1
- package/src/v-angular/modal/modal.globals.d.ts +1 -1
- package/src/v-angular/modal/slide-out/slide-out.component.d.ts +6 -6
- package/src/v-angular/textarea/textarea.module.d.ts +2 -1
- package/src/v-angular/tooltip/tooltip.directive.d.ts +4 -4
- package/v-angular/base-control-value-accessor/base-control-value-accessor.component.d.ts +124 -0
- package/v-angular/base-control-value-accessor/base-control-value-accessor.module.d.ts +7 -0
- package/v-angular/base-control-value-accessor/index.d.ts +2 -0
- package/v-angular/breadcrumbs/breadcrumbs.component.d.ts +18 -0
- package/v-angular/breadcrumbs/breadcrumbs.module.d.ts +10 -0
- package/v-angular/breadcrumbs/index.d.ts +2 -0
- package/v-angular/button/button.component.d.ts +62 -0
- package/v-angular/button/button.module.d.ts +10 -0
- package/v-angular/button/index.d.ts +2 -0
- package/v-angular/card/card.component.d.ts +5 -0
- package/v-angular/card/card.module.d.ts +8 -0
- package/v-angular/card/index.d.ts +2 -0
- package/v-angular/character-countdown/character-countdown.directive.d.ts +17 -0
- package/v-angular/character-countdown/character-countdown.module.d.ts +8 -0
- package/v-angular/character-countdown/index.d.ts +2 -0
- package/v-angular/checkbox/checkbox.component.d.ts +27 -0
- package/v-angular/checkbox/checkbox.module.d.ts +9 -0
- package/v-angular/checkbox/index.d.ts +2 -0
- package/v-angular/dropdown/dropdown-list/dropdown-list.component.d.ts +89 -0
- package/v-angular/dropdown/dropdown-list/index.d.ts +1 -0
- package/v-angular/dropdown/dropdown.component.d.ts +99 -0
- package/v-angular/dropdown/dropdown.module.d.ts +12 -0
- package/v-angular/dropdown/index.d.ts +5 -0
- package/v-angular/dropdown/typeahead/index.d.ts +5 -0
- package/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.d.ts +34 -0
- package/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.d.ts +34 -0
- package/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.d.ts +59 -0
- package/v-angular/dropdown/typeahead/typeahead.directive.d.ts +76 -0
- package/v-angular/dropdown/typeahead/typeahead.module.d.ts +11 -0
- package/v-angular/i18n/i18n.module.d.ts +15 -0
- package/v-angular/i18n/i18n.test.module.d.ts +27 -0
- package/v-angular/i18n/index.d.ts +2 -0
- package/v-angular/index.d.ts +17 -0
- package/v-angular/info-circle/index.d.ts +2 -0
- package/v-angular/info-circle/info-circle.component.d.ts +16 -0
- package/v-angular/info-circle/info-circle.module.d.ts +10 -0
- package/v-angular/input/index.d.ts +2 -0
- package/v-angular/input/input.component.d.ts +90 -0
- package/v-angular/input/input.module.d.ts +11 -0
- package/v-angular/input-mask/config.d.ts +6 -0
- package/v-angular/input-mask/constants.d.ts +2 -0
- package/v-angular/input-mask/index.d.ts +5 -0
- package/v-angular/input-mask/input-mask-format.pipe.d.ts +8 -0
- package/v-angular/input-mask/input-mask.directive.d.ts +39 -0
- package/v-angular/input-mask/input-mask.module.d.ts +11 -0
- package/v-angular/input-mask/input-mask.types.d.ts +20 -0
- package/v-angular/modal/dialog/dialog.component.d.ts +55 -0
- package/v-angular/modal/fold-out/fold-out.component.d.ts +24 -0
- package/v-angular/modal/fold-out/fold-out.directive.d.ts +6 -0
- package/v-angular/modal/index.d.ts +5 -0
- package/v-angular/modal/modal.globals.d.ts +13 -0
- package/v-angular/modal/modal.module.d.ts +13 -0
- package/v-angular/modal/modal.types.d.ts +5 -0
- package/v-angular/modal/slide-out/slide-out.component.d.ts +76 -0
- package/v-angular/radio/index.d.ts +2 -0
- package/v-angular/radio/radio.component.d.ts +48 -0
- package/v-angular/radio/radio.module.d.ts +9 -0
- package/v-angular/textarea/index.d.ts +2 -0
- package/v-angular/textarea/textarea.component.d.ts +44 -0
- package/v-angular/textarea/textarea.module.d.ts +9 -0
- package/v-angular/tooltip/index.d.ts +2 -0
- package/v-angular/tooltip/tooltip.directive.d.ts +106 -0
- package/v-angular/tooltip/tooltip.module.d.ts +8 -0
- package/v-angular/v-angular.module.d.ts +23 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import _Inputmask from 'inputmask';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
const InputmaskStatic = _Inputmask.default ||
|
|
5
|
+
_Inputmask;
|
|
6
|
+
export class InputMaskFormatPipe {
|
|
7
|
+
transform(value, options) {
|
|
8
|
+
if (!value)
|
|
9
|
+
return value;
|
|
10
|
+
return InputmaskStatic.format(value, options);
|
|
11
|
+
}
|
|
12
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InputMaskFormatPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
13
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: InputMaskFormatPipe, name: "nggvInputMaskFormat" }); }
|
|
14
|
+
}
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InputMaskFormatPipe, decorators: [{
|
|
16
|
+
type: Pipe,
|
|
17
|
+
args: [{
|
|
18
|
+
name: 'nggvInputMaskFormat',
|
|
19
|
+
}]
|
|
20
|
+
}] });
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbWFzay1mb3JtYXQucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL2lucHV0LW1hc2svaW5wdXQtbWFzay1mb3JtYXQucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQTtBQUduRCxPQUFPLFVBQVUsTUFBTSxXQUFXLENBQUE7O0FBSWxDLE1BQU0sZUFBZSxHQUNsQixVQUF3RCxDQUFDLE9BQU87SUFDakUsVUFBVSxDQUFBO0FBS1osTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixTQUFTLENBQVUsS0FBVSxFQUFFLE9BQTRCO1FBQ3pELElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxLQUFLLENBQUE7UUFDeEIsT0FBTyxlQUFlLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUMvQyxDQUFDOytHQUpVLG1CQUFtQjs2R0FBbkIsbUJBQW1COzs0RkFBbkIsbUJBQW1CO2tCQUgvQixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxxQkFBcUI7aUJBQzVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbmltcG9ydCB0eXBlIElucHV0bWFzayBmcm9tICdpbnB1dG1hc2snXG5pbXBvcnQgX0lucHV0bWFzayBmcm9tICdpbnB1dG1hc2snXG5cbmltcG9ydCB0eXBlIHsgSW5wdXRtYXNrT3B0aW9ucyB9IGZyb20gJy4vaW5wdXQtbWFzay50eXBlcydcblxuY29uc3QgSW5wdXRtYXNrU3RhdGljID1cbiAgKF9JbnB1dG1hc2sgYXMgdW5rbm93biBhcyB7IGRlZmF1bHQ/OiBJbnB1dG1hc2suU3RhdGljIH0pLmRlZmF1bHQgfHxcbiAgX0lucHV0bWFza1xuXG5AUGlwZSh7XG4gIG5hbWU6ICduZ2d2SW5wdXRNYXNrRm9ybWF0Jyxcbn0pXG5leHBvcnQgY2xhc3MgSW5wdXRNYXNrRm9ybWF0UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm08VCA9IGFueT4odmFsdWU6IGFueSwgb3B0aW9uczogSW5wdXRtYXNrT3B0aW9uczxUPik6IGFueSB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIHZhbHVlXG4gICAgcmV0dXJuIElucHV0bWFza1N0YXRpYy5mb3JtYXQodmFsdWUsIG9wdGlvbnMpXG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { isPlatformServer } from '@angular/common';
|
|
2
|
+
import { Directive, ElementRef, HostListener, Inject, Input, NgZone, Optional, PLATFORM_ID, Renderer2, Self, } from '@angular/core';
|
|
3
|
+
import { NgControl, } from '@angular/forms';
|
|
4
|
+
import _Inputmask from 'inputmask';
|
|
5
|
+
import { INPUT_MASK_CONFIG, InputMaskConfig } from './config';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/forms";
|
|
8
|
+
import * as i2 from "./config";
|
|
9
|
+
const InputmaskConstructor = _Inputmask.default ||
|
|
10
|
+
_Inputmask;
|
|
11
|
+
export class NgvInputMaskDirective {
|
|
12
|
+
constructor(ngControl, config, platformId, elementRef, renderer, ngZone) {
|
|
13
|
+
this.ngControl = ngControl;
|
|
14
|
+
this.platformId = platformId;
|
|
15
|
+
this.elementRef = elementRef;
|
|
16
|
+
this.renderer = renderer;
|
|
17
|
+
this.ngZone = ngZone;
|
|
18
|
+
/** Input settings of directive */
|
|
19
|
+
this.nggvInputMask = {};
|
|
20
|
+
this.defaultInputMaskConfig = new InputMaskConfig();
|
|
21
|
+
this.onInput = (_) => {
|
|
22
|
+
// Empty method
|
|
23
|
+
};
|
|
24
|
+
this.onTouched = (_) => {
|
|
25
|
+
// Empty method
|
|
26
|
+
};
|
|
27
|
+
this.validate = (control) => !control.value || !this.inputMaskPlugin || this.inputMaskPlugin.isValid()
|
|
28
|
+
? null
|
|
29
|
+
: { invalidformat: true };
|
|
30
|
+
if (this.ngControl) {
|
|
31
|
+
this.ngControl.valueAccessor = this;
|
|
32
|
+
}
|
|
33
|
+
this.setNativeInputElement(config);
|
|
34
|
+
}
|
|
35
|
+
onKeyUp(event) {
|
|
36
|
+
// Trigger "onInput" when pressing delete or backspace, when input is focused
|
|
37
|
+
if (['Delete', 'Backspace'].includes(event.key)) {
|
|
38
|
+
this.elementRef.nativeElement.dispatchEvent(new Event('input', {
|
|
39
|
+
bubbles: true,
|
|
40
|
+
cancelable: true,
|
|
41
|
+
}));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
ngOnInit() {
|
|
45
|
+
if (this.control) {
|
|
46
|
+
this.control.setValidators(this.control.validator
|
|
47
|
+
? [this.control.validator, this.validate]
|
|
48
|
+
: [this.validate]);
|
|
49
|
+
this.control.updateValueAndValidity();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
ngOnDestroy() {
|
|
53
|
+
this.inputMaskPlugin?.remove();
|
|
54
|
+
this.mutationObserver?.disconnect();
|
|
55
|
+
}
|
|
56
|
+
initInputMask() {
|
|
57
|
+
if (isPlatformServer(this.platformId) ||
|
|
58
|
+
!this.nativeInputElement ||
|
|
59
|
+
!Object.keys(this.nggvInputMask).length) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
this.inputMaskPlugin = this.ngZone.runOutsideAngular(() => new InputmaskConstructor(this.inputMaskOptions).mask(this.nativeInputElement));
|
|
63
|
+
if (this.control) {
|
|
64
|
+
setTimeout(() => {
|
|
65
|
+
this.control.updateValueAndValidity();
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
ngAfterViewInit() {
|
|
70
|
+
this.initInputMask();
|
|
71
|
+
}
|
|
72
|
+
get inputMaskOptions() {
|
|
73
|
+
const { parser, ...options } = this.nggvInputMask;
|
|
74
|
+
return options;
|
|
75
|
+
}
|
|
76
|
+
writeValue(value) {
|
|
77
|
+
if (this.nativeInputElement) {
|
|
78
|
+
this.renderer.setProperty(this.nativeInputElement, 'value', value ?? '');
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
registerOnChange(fn) {
|
|
82
|
+
// Use injected parser from settings to modify value
|
|
83
|
+
// of users desire
|
|
84
|
+
this.onInput = (value) => {
|
|
85
|
+
const parser = this.nggvInputMask?.parser;
|
|
86
|
+
const newValue = parser && value ? parser(value) : value;
|
|
87
|
+
fn(newValue);
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
registerOnTouched(fn) {
|
|
91
|
+
this.onTouched = fn;
|
|
92
|
+
}
|
|
93
|
+
setDisabledState(disabled) {
|
|
94
|
+
if (this.nativeInputElement) {
|
|
95
|
+
this.renderer.setProperty(this.nativeInputElement, 'disabled', disabled);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
get control() {
|
|
99
|
+
return this.ngControl?.control;
|
|
100
|
+
}
|
|
101
|
+
setNativeInputElement(config) {
|
|
102
|
+
if (this.elementRef.nativeElement.tagName === 'INPUT') {
|
|
103
|
+
this.nativeInputElement = this.elementRef.nativeElement;
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
this.defaultInputMaskConfig = {
|
|
107
|
+
...this.defaultInputMaskConfig,
|
|
108
|
+
...config,
|
|
109
|
+
};
|
|
110
|
+
if (this.defaultInputMaskConfig.isAsync) {
|
|
111
|
+
// Create an observer instance linked to the callback function
|
|
112
|
+
this.mutationObserver = new MutationObserver((mutationsList) => {
|
|
113
|
+
for (const mutation of mutationsList) {
|
|
114
|
+
if (mutation.type === 'childList') {
|
|
115
|
+
const nativeInputElement = this.elementRef.nativeElement.querySelector(this.defaultInputMaskConfig.inputSelector);
|
|
116
|
+
if (nativeInputElement) {
|
|
117
|
+
this.nativeInputElement = nativeInputElement;
|
|
118
|
+
this.mutationObserver?.disconnect();
|
|
119
|
+
this.initInputMask();
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
// Start observing the target node for configured mutations
|
|
125
|
+
this.mutationObserver.observe(this.elementRef.nativeElement, {
|
|
126
|
+
childList: true,
|
|
127
|
+
subtree: true,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
this.nativeInputElement = this.elementRef.nativeElement.querySelector(this.defaultInputMaskConfig.inputSelector);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvInputMaskDirective, deps: [{ token: i1.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 }); }
|
|
136
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: NgvInputMaskDirective, selector: "[nggvInputMask]", inputs: { nggvInputMask: "nggvInputMask" }, host: { listeners: { "input": "onInput($event.target.value)", "blur": "onTouched($event.target.value)", "keyup": "onKeyUp($event)" } }, ngImport: i0 }); }
|
|
137
|
+
}
|
|
138
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvInputMaskDirective, decorators: [{
|
|
139
|
+
type: Directive,
|
|
140
|
+
args: [{
|
|
141
|
+
selector: '[nggvInputMask]',
|
|
142
|
+
}]
|
|
143
|
+
}], ctorParameters: function () { return [{ type: i1.NgControl, decorators: [{
|
|
144
|
+
type: Optional
|
|
145
|
+
}, {
|
|
146
|
+
type: Self
|
|
147
|
+
}] }, { type: i2.InputMaskConfig, decorators: [{
|
|
148
|
+
type: Inject,
|
|
149
|
+
args: [INPUT_MASK_CONFIG]
|
|
150
|
+
}] }, { type: undefined, decorators: [{
|
|
151
|
+
type: Inject,
|
|
152
|
+
args: [PLATFORM_ID]
|
|
153
|
+
}] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { nggvInputMask: [{
|
|
154
|
+
type: Input
|
|
155
|
+
}], onInput: [{
|
|
156
|
+
type: HostListener,
|
|
157
|
+
args: ['input', ['$event.target.value']]
|
|
158
|
+
}], onTouched: [{
|
|
159
|
+
type: HostListener,
|
|
160
|
+
args: ['blur', ['$event.target.value']]
|
|
161
|
+
}], onKeyUp: [{
|
|
162
|
+
type: HostListener,
|
|
163
|
+
args: ['keyup', ['$event']]
|
|
164
|
+
}] } });
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbWFzay5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9pbnB1dC1tYXNrL2lucHV0LW1hc2suZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ2xELE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFHTixRQUFRLEVBQ1IsV0FBVyxFQUNYLFNBQVMsRUFDVCxJQUFJLEdBQ0wsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUdMLFNBQVMsR0FFVixNQUFNLGdCQUFnQixDQUFBO0FBR3ZCLE9BQU8sVUFBVSxNQUFNLFdBQVcsQ0FBQTtBQUVsQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFBOzs7O0FBRzdELE1BQU0sb0JBQW9CLEdBQ3ZCLFVBQXdELENBQUMsT0FBTztJQUNqRSxVQUFVLENBQUE7QUFLWixNQUFNLE9BQU8scUJBQXFCO0lBWWhDLFlBQzZCLFNBQW9CLEVBQ3BCLE1BQXVCLEVBQ3JCLFVBQWtCLEVBQ3ZDLFVBQThDLEVBQzlDLFFBQW1CLEVBQ25CLE1BQWM7UUFMSyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBRWxCLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDdkMsZUFBVSxHQUFWLFVBQVUsQ0FBb0M7UUFDOUMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBZnhCLGtDQUFrQztRQUN6QixrQkFBYSxHQUF3QixFQUFFLENBQUE7UUFJaEQsMkJBQXNCLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQTtRQW1COUMsWUFBTyxHQUFHLENBQUMsQ0FBTSxFQUFFLEVBQUU7WUFDbkIsZUFBZTtRQUNq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QUFNOzJCQUFDLFdBQVc7a0hBWFosYUFBYTtzQkFBckIsS0FBSztnQkF1Qk4sT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLHFCQUFxQixDQUFDO2dCQU05QyxTQUFTO3NCQURSLFlBQVk7dUJBQUMsTUFBTSxFQUFFLENBQUMscUJBQXFCLENBQUM7Z0JBTTdDLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1BsYXRmb3JtU2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBQTEFURk9STV9JRCxcbiAgUmVuZGVyZXIyLFxuICBTZWxmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTmdDb250cm9sLFxuICBWYWxpZGF0b3IsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuXG5pbXBvcnQgdHlwZSBJbnB1dG1hc2sgZnJvbSAnaW5wdXRtYXNrJ1xuaW1wb3J0IF9JbnB1dG1hc2sgZnJvbSAnaW5wdXRtYXNrJ1xuXG5pbXBvcnQgeyBJTlBVVF9NQVNLX0NPTkZJRywgSW5wdXRNYXNrQ29uZmlnIH0gZnJvbSAnLi9jb25maWcnXG5pbXBvcnQgdHlwZSB7IElucHV0bWFza09wdGlvbnMgfSBmcm9tICcuL2lucHV0LW1hc2sudHlwZXMnXG5cbmNvbnN0IElucHV0bWFza0NvbnN0cnVjdG9yID1cbiAgKF9JbnB1dG1hc2sgYXMgdW5rbm93biBhcyB7IGRlZmF1bHQ/OiBJbnB1dG1hc2suU3RhdGljIH0pLmRlZmF1bHQgfHxcbiAgX0lucHV0bWFza1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbmdndklucHV0TWFza10nLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3ZJbnB1dE1hc2tEaXJlY3RpdmU8VCA9IGFueT5cbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvclxue1xuICAvKiogSW5wdXQgc2V0dGluZ3Mgb2YgZGlyZWN0aXZlICovXG4gIEBJbnB1dCgpIG5nZ3ZJbnB1dE1hc2s6IElucHV0bWFza09wdGlvbnM8VD4gPSB7fVxuXG4gIGlucHV0TWFza1BsdWdpbjogSW5wdXRtYXNrLkluc3RhbmNlIHwgdW5kZWZpbmVkXG4gIG5hdGl2ZUlucHV0RWxlbWVudDogSFRNTElucHV0RWxlbWVudCB8IHVuZGVmaW5lZFxuICBkZWZhdWx0SW5wdXRNYXNrQ29uZmlnID0gbmV3IElucHV0TWFza0NvbmZpZygpXG5cbiAgcHJpdmF0ZSBtdXRhdGlvbk9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyIHwgdW5kZWZpbmVkXG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgQEluamVjdChJTlBVVF9NQVNLX0NPTkZJRykgY29uZmlnOiBJbnB1dE1hc2tDb25maWcsXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQgfCBhbnk+LFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICApIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzXG4gICAgfVxuICAgIHRoaXMuc2V0TmF0aXZlSW5wdXRFbGVtZW50KGNvbmZpZylcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2lucHV0JywgWyckZXZlbnQudGFyZ2V0LnZhbHVlJ10pXG4gIG9uSW5wdXQgPSAoXzogYW55KSA9PiB7XG4gICAgLy8gRW1wdHkgbWV0aG9kXG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdibHVyJywgWyckZXZlbnQudGFyZ2V0LnZhbHVlJ10pXG4gIG9uVG91Y2hlZCA9IChfOiBhbnkpID0+IHtcbiAgICAvLyBFbXB0eSBtZXRob2RcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleXVwJywgWyckZXZlbnQnXSlcbiAgb25LZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIC8vIFRyaWdnZXIgXCJvbklucHV0XCIgd2hlbiBwcmVzc2luZyBkZWxldGUgb3IgYmFja3NwYWNlLCB3aGVuIGlucHV0IGlzIGZvY3VzZWRcbiAgICBpZiAoWydEZWxldGUnLCAnQmFja3NwYWNlJ10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgbmV3IEV2ZW50KCdpbnB1dCcsIHtcbiAgICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICAgIGNhbmNlbGFibGU6IHRydWUsXG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgIHRoaXMuY29udHJvbC5zZXRWYWxpZGF0b3JzKFxuICAgICAgICB0aGlzLmNvbnRyb2wudmFsaWRhdG9yXG4gICAgICAgICAgPyBbdGhpcy5jb250cm9sLnZhbGlkYXRvciwgdGhpcy52YWxpZGF0ZV1cbiAgICAgICAgICA6IFt0aGlzLnZhbGlkYXRlXSxcbiAgICAgIClcblxuICAgICAgdGhpcy5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRNYXNrUGx1Z2luPy5yZW1vdmUoKVxuICAgIHRoaXMubXV0YXRpb25PYnNlcnZlcj8uZGlzY29ubmVjdCgpXG4gIH1cblxuICBpbml0SW5wdXRNYXNrKCkge1xuICAgIGlmIChcbiAgICAgIGlzUGxhdGZvcm1TZXJ2ZXIodGhpcy5wbGF0Zm9ybUlkKSB8fFxuICAgICAgIXRoaXMubmF0aXZlSW5wdXRFbGVtZW50IHx8XG4gICAgICAhT2JqZWN0LmtleXModGhpcy5uZ2d2SW5wdXRNYXNrKS5sZW5ndGhcbiAgICApIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuaW5wdXRNYXNrUGx1Z2luID0gdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT5cbiAgICAgIG5ldyBJbnB1dG1hc2tDb25zdHJ1Y3Rvcih0aGlzLmlucHV0TWFza09wdGlvbnMpLm1hc2soXG4gICAgICAgIHRoaXMubmF0aXZlSW5wdXRFbGVtZW50IGFzIEhUTUxJbnB1dEVsZW1lbnQsXG4gICAgICApLFxuICAgIClcblxuICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNvbnRyb2whLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5pbml0SW5wdXRNYXNrKClcbiAgfVxuXG4gIGdldCBpbnB1dE1hc2tPcHRpb25zKCk6IElucHV0bWFzay5PcHRpb25zIHtcbiAgICBjb25zdCB7IHBhcnNlciwgLi4ub3B0aW9ucyB9ID0gdGhpcy5uZ2d2SW5wdXRNYXNrXG4gICAgcmV0dXJuIG9wdGlvbnNcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLm5hdGl2ZUlucHV0RWxlbWVudCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLm5hdGl2ZUlucHV0RWxlbWVudCwgJ3ZhbHVlJywgdmFsdWUgPz8gJycpXG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKF86IFQgfCBudWxsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgLy8gVXNlIGluamVjdGVkIHBhcnNlciBmcm9tIHNldHRpbmdzIHRvIG1vZGlmeSB2YWx1ZVxuICAgIC8vIG9mIHVzZXJzIGRlc2lyZVxuICAgIHRoaXMub25JbnB1dCA9ICh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgcGFyc2VyID0gdGhpcy5uZ2d2SW5wdXRNYXNrPy5wYXJzZXJcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gcGFyc2VyICYmIHZhbHVlID8gcGFyc2VyKHZhbHVlKSA6IHZhbHVlXG4gICAgICBmbihuZXdWYWx1ZSlcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmblxuICB9XG5cbiAgdmFsaWRhdGUgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IG51bGwgPT5cbiAgICAhY29udHJvbC52YWx1ZSB8fCAhdGhpcy5pbnB1dE1hc2tQbHVnaW4gfHwgdGhpcy5pbnB1dE1hc2tQbHVnaW4uaXNWYWxpZCgpXG4gICAgICA/IG51bGxcbiAgICAgIDogeyBpbnZhbGlkZm9ybWF0OiB0cnVlIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubmF0aXZlSW5wdXRFbGVtZW50KSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMubmF0aXZlSW5wdXRFbGVtZW50LCAnZGlzYWJsZWQnLCBkaXNhYmxlZClcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldCBjb250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLm5nQ29udHJvbD8uY29udHJvbFxuICB9XG5cbiAgcHJpdmF0ZSBzZXROYXRpdmVJbnB1dEVsZW1lbnQoY29uZmlnOiBJbnB1dE1hc2tDb25maWcpIHtcbiAgICBpZiAodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudGFnTmFtZSA9PT0gJ0lOUFVUJykge1xuICAgICAgdGhpcy5uYXRpdmVJbnB1dEVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlZmF1bHRJbnB1dE1hc2tDb25maWcgPSB7XG4gICAgICAgIC4uLnRoaXMuZGVmYXVsdElucHV0TWFza0NvbmZpZyxcbiAgICAgICAgLi4uY29uZmlnLFxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZGVmYXVsdElucHV0TWFza0NvbmZpZy5pc0FzeW5jKSB7XG4gICAgICAgIC8vIENyZWF0ZSBhbiBvYnNlcnZlciBpbnN0YW5jZSBsaW5rZWQgdG8gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uXG4gICAgICAgIHRoaXMubXV0YXRpb25PYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnNMaXN0KSA9PiB7XG4gICAgICAgICAgZm9yIChjb25zdCBtdXRhdGlvbiBvZiBtdXRhdGlvbnNMaXN0KSB7XG4gICAgICAgICAgICBpZiAobXV0YXRpb24udHlwZSA9PT0gJ2NoaWxkTGlzdCcpIHtcbiAgICAgICAgICAgICAgY29uc3QgbmF0aXZlSW5wdXRFbGVtZW50ID1cbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0SW5wdXRNYXNrQ29uZmlnLmlucHV0U2VsZWN0b3IsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAobmF0aXZlSW5wdXRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uYXRpdmVJbnB1dEVsZW1lbnQgPSBuYXRpdmVJbnB1dEVsZW1lbnRcbiAgICAgICAgICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKVxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdElucHV0TWFzaygpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICAgICAgLy8gU3RhcnQgb2JzZXJ2aW5nIHRoZSB0YXJnZXQgbm9kZSBmb3IgY29uZmlndXJlZCBtdXRhdGlvbnNcbiAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyLm9ic2VydmUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubmF0aXZlSW5wdXRFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICB0aGlzLmRlZmF1bHRJbnB1dE1hc2tDb25maWcuaW5wdXRTZWxlY3RvcixcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { INPUT_MASK_CONFIG, InputMaskConfig } from './config';
|
|
3
|
+
import { InputMaskFormatPipe } from './input-mask-format.pipe';
|
|
4
|
+
import { NgvInputMaskDirective } from './input-mask.directive';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class NgvInputMaskModule {
|
|
7
|
+
static forRoot(config) {
|
|
8
|
+
return {
|
|
9
|
+
ngModule: NgvInputMaskModule,
|
|
10
|
+
providers: [{ provide: INPUT_MASK_CONFIG, useValue: config }],
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvInputMaskModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
14
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgvInputMaskModule, declarations: [NgvInputMaskDirective, InputMaskFormatPipe], exports: [NgvInputMaskDirective, InputMaskFormatPipe] }); }
|
|
15
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvInputMaskModule, providers: [
|
|
16
|
+
{
|
|
17
|
+
provide: INPUT_MASK_CONFIG,
|
|
18
|
+
useClass: InputMaskConfig,
|
|
19
|
+
},
|
|
20
|
+
] }); }
|
|
21
|
+
}
|
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvInputMaskModule, decorators: [{
|
|
23
|
+
type: NgModule,
|
|
24
|
+
args: [{
|
|
25
|
+
declarations: [NgvInputMaskDirective, InputMaskFormatPipe],
|
|
26
|
+
exports: [NgvInputMaskDirective, InputMaskFormatPipe],
|
|
27
|
+
providers: [
|
|
28
|
+
{
|
|
29
|
+
provide: INPUT_MASK_CONFIG,
|
|
30
|
+
useClass: InputMaskConfig,
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
}]
|
|
34
|
+
}] });
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbWFzay5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9pbnB1dC1tYXNrL2lucHV0LW1hc2subW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRTdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDOUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUE7O0FBWTlELE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsTUFBTSxDQUFDLE9BQU8sQ0FDWixNQUFpQztRQUVqQyxPQUFPO1lBQ0wsUUFBUSxFQUFFLGtCQUFrQjtZQUM1QixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUM7U0FDOUQsQ0FBQTtJQUNILENBQUM7K0dBUlUsa0JBQWtCO2dIQUFsQixrQkFBa0IsaUJBVGQscUJBQXFCLEVBQUUsbUJBQW1CLGFBQy9DLHFCQUFxQixFQUFFLG1CQUFtQjtnSEFRekMsa0JBQWtCLGFBUGxCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsUUFBUSxFQUFFLGVBQWU7YUFDMUI7U0FDRjs7NEZBRVUsa0JBQWtCO2tCQVY5QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLHFCQUFxQixFQUFFLG1CQUFtQixDQUFDO29CQUMxRCxPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxtQkFBbUIsQ0FBQztvQkFDckQsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFFBQVEsRUFBRSxlQUFlO3lCQUMxQjtxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuaW1wb3J0IHsgSU5QVVRfTUFTS19DT05GSUcsIElucHV0TWFza0NvbmZpZyB9IGZyb20gJy4vY29uZmlnJ1xuaW1wb3J0IHsgSW5wdXRNYXNrRm9ybWF0UGlwZSB9IGZyb20gJy4vaW5wdXQtbWFzay1mb3JtYXQucGlwZSdcbmltcG9ydCB7IE5ndklucHV0TWFza0RpcmVjdGl2ZSB9IGZyb20gJy4vaW5wdXQtbWFzay5kaXJlY3RpdmUnXG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW05ndklucHV0TWFza0RpcmVjdGl2ZSwgSW5wdXRNYXNrRm9ybWF0UGlwZV0sXG4gIGV4cG9ydHM6IFtOZ3ZJbnB1dE1hc2tEaXJlY3RpdmUsIElucHV0TWFza0Zvcm1hdFBpcGVdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBJTlBVVF9NQVNLX0NPTkZJRyxcbiAgICAgIHVzZUNsYXNzOiBJbnB1dE1hc2tDb25maWcsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd2SW5wdXRNYXNrTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoXG4gICAgY29uZmlnPzogUGFydGlhbDxJbnB1dE1hc2tDb25maWc+LFxuICApOiBNb2R1bGVXaXRoUHJvdmlkZXJzPE5ndklucHV0TWFza01vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogTmd2SW5wdXRNYXNrTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBJTlBVVF9NQVNLX0NPTkZJRywgdXNlVmFsdWU6IGNvbmZpZyB9XSxcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbWFzay50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL2lucHV0LW1hc2svaW5wdXQtbWFzay50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgSW5wdXRtYXNrIGZyb20gJ2lucHV0bWFzayc7XG5cbmV4cG9ydCB0eXBlIElucHV0bWFza09wdGlvbnM8VD4gPSBJbnB1dG1hc2suT3B0aW9ucyAmIHtcbiAgcGFyc2VyPzogKHZhbHVlOiBhbnkpID0+IFQ7XG59O1xuXG4vKipcbiAqIFVzZWZ1bCB3aGVuIHlvdSB3YW50IHRvIGFkZCBpbnB1dC1tYXNrIG9uIGlucHV0IHdoaWNoIGlzIGNoaWxkIG9mIHlvdXIgY29tcG9uZW50XG4gKlxuICogQHNpbmNlIDIuMS4wXG4gKi9cbmV4cG9ydCB0eXBlIElucHV0TWFza0NvbmZpZyA9IHtcbiAgLyoqXG4gICAqIElmIHNldCB0cnVlLCBNdXRhdGlvbk9ic2VydmVyIHdpbGwgYmUgdXNlZCB0byBsb29rIGZvciBjaGFuZ2VzIHVudGlsIGl0IGZpbmRzIGlucHV0IHdpdGggaW5wdXRTZWxlY3RvclxuICAgKi9cbiAgaXNBc3luYzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIENTUyBsaWtlIHNlbGVjdG9yLCB3aGljaCB3aWxsIGJlIHVzZWQgd2l0aCBgcXVlcnlTZWxlY3RvcmAgdG8gZ2V0IHRoZSBuYXRpdmUgaW5wdXQuXG4gICAqIElmIHlvdXIgaW5wdXQgaXMgbG9hZGVkIGxhemlseSwgcGxlYXNlIHVzZSBgaXNBc3luY2Agb3B0aW9uIHdpdGggdGhpc1xuICAgKi9cbiAgaW5wdXRTZWxlY3Rvcjogc3RyaW5nO1xufTtcbiJdfQ==
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { Component, EventEmitter, HostBinding, HostListener, Input, Output, ViewChild, } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
export class NgvDialogComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
/** Special property used for selecting DOM elements during automated UI testing. */
|
|
7
|
+
this.thook = 'dialog';
|
|
8
|
+
/** @internal */
|
|
9
|
+
this.baseClass = true;
|
|
10
|
+
/** @internal Defines the default visibility state of the dialog. */
|
|
11
|
+
this.shown = false;
|
|
12
|
+
/** Defines the default visibility state of the dialog. */
|
|
13
|
+
this.initiallyShown = false;
|
|
14
|
+
/**
|
|
15
|
+
* Sets modal title. Will be translated (using transloco) if the string matches a cms key.
|
|
16
|
+
* @deprecated - use heading instead.
|
|
17
|
+
*/
|
|
18
|
+
this.title = 'Attention';
|
|
19
|
+
/** Defines if dialog should close on action. */
|
|
20
|
+
this.autoClose = true;
|
|
21
|
+
/** An array of event payloads that will be added to every click context menu item click. */
|
|
22
|
+
this.payload = {};
|
|
23
|
+
/** It gives an ability for parent component to control if modal should be closed on esc button click. */
|
|
24
|
+
this.closeModalOnEscape = true;
|
|
25
|
+
// /** @internal */
|
|
26
|
+
// closeIcon = faTimes
|
|
27
|
+
this.nggvCloseEvent = new EventEmitter();
|
|
28
|
+
this.nggvPositiveEvent = new EventEmitter();
|
|
29
|
+
this.nggvNeutralEvent = new EventEmitter();
|
|
30
|
+
this.nggvNegativeEvent = new EventEmitter();
|
|
31
|
+
}
|
|
32
|
+
/** @internal */
|
|
33
|
+
get ariaHidden() {
|
|
34
|
+
return !this.shown;
|
|
35
|
+
}
|
|
36
|
+
/** Buttons are defined as a key-value pair where key is one of "positive|neutral|negative" and value is the button label. */
|
|
37
|
+
set buttons(buttons) {
|
|
38
|
+
this._buttons = buttons;
|
|
39
|
+
}
|
|
40
|
+
ngOnInit() {
|
|
41
|
+
this.dialogTitleId =
|
|
42
|
+
this.dialogTitleId ?? 'sdv-dialog-title-' + window.nggv?.nextId();
|
|
43
|
+
this.dialogBodyId =
|
|
44
|
+
this.dialogBodyId ?? 'sdv-dialog-body-' + window.nggv?.nextId();
|
|
45
|
+
this.shown = this.initiallyShown;
|
|
46
|
+
if (this.shown)
|
|
47
|
+
this._limitFocusable();
|
|
48
|
+
}
|
|
49
|
+
onAction(event, action) {
|
|
50
|
+
event.preventDefault();
|
|
51
|
+
const emitEvent = {
|
|
52
|
+
original: event,
|
|
53
|
+
payload: this.payload,
|
|
54
|
+
};
|
|
55
|
+
switch (action) {
|
|
56
|
+
case 'positive':
|
|
57
|
+
this.nggvPositiveEvent.emit(emitEvent);
|
|
58
|
+
break;
|
|
59
|
+
case 'neutral':
|
|
60
|
+
this.nggvNeutralEvent.emit(emitEvent);
|
|
61
|
+
break;
|
|
62
|
+
case 'negative':
|
|
63
|
+
this.nggvNegativeEvent.emit(emitEvent);
|
|
64
|
+
break;
|
|
65
|
+
// case 'close' is handled by if-statement below with call to this.close()
|
|
66
|
+
}
|
|
67
|
+
if (this.autoClose)
|
|
68
|
+
this.close(event, 'action');
|
|
69
|
+
}
|
|
70
|
+
open(opener) {
|
|
71
|
+
this.shown = true;
|
|
72
|
+
this._previous = opener || document.activeElement;
|
|
73
|
+
this._limitFocusable();
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
_limitFocusable() {
|
|
77
|
+
window.setTimeout(() => {
|
|
78
|
+
if (!this.dialogRef)
|
|
79
|
+
return;
|
|
80
|
+
const focusable = this.dialogRef.nativeElement.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
|
|
81
|
+
this._firstFocusable = focusable[0];
|
|
82
|
+
this._lastFocusable = focusable[focusable.length - 1];
|
|
83
|
+
if (this._lastFocusable)
|
|
84
|
+
this._lastFocusable.focus();
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
close(event, initiator) {
|
|
88
|
+
if (initiator === 'host' && event instanceof MouseEvent)
|
|
89
|
+
return;
|
|
90
|
+
// prevent modal from closing on esc button click when closeModalOnEscape is set to false
|
|
91
|
+
if (!this.closeModalOnEscape)
|
|
92
|
+
return;
|
|
93
|
+
if (this.shown) {
|
|
94
|
+
const emitEvent = {
|
|
95
|
+
original: event,
|
|
96
|
+
payload: this.payload,
|
|
97
|
+
};
|
|
98
|
+
this.nggvCloseEvent.emit(emitEvent);
|
|
99
|
+
}
|
|
100
|
+
this.shown = false;
|
|
101
|
+
window.setTimeout(() => {
|
|
102
|
+
if (this._previous)
|
|
103
|
+
this._previous.focus();
|
|
104
|
+
this._previous = undefined;
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
focusTrap(event) {
|
|
108
|
+
if (event.key !== 'Tab')
|
|
109
|
+
return;
|
|
110
|
+
if (event.shiftKey) {
|
|
111
|
+
// shift + tab
|
|
112
|
+
if (this._lastFocusable &&
|
|
113
|
+
document.activeElement === this._firstFocusable) {
|
|
114
|
+
this._lastFocusable.focus();
|
|
115
|
+
event.preventDefault();
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
// tab
|
|
120
|
+
if (this._firstFocusable &&
|
|
121
|
+
document.activeElement === this._lastFocusable) {
|
|
122
|
+
this._firstFocusable.focus();
|
|
123
|
+
event.preventDefault();
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
128
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgvDialogComponent, selector: "nggv-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: { nggvCloseEvent: "nggvCloseEvent", nggvPositiveEvent: "nggvPositiveEvent", nggvNeutralEvent: "nggvNeutralEvent", nggvNegativeEvent: "nggvNegativeEvent" }, 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"] }] }); }
|
|
129
|
+
}
|
|
130
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvDialogComponent, decorators: [{
|
|
131
|
+
type: Component,
|
|
132
|
+
args: [{ selector: 'nggv-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"] }]
|
|
133
|
+
}], propDecorators: { dialogRef: [{
|
|
134
|
+
type: ViewChild,
|
|
135
|
+
args: ['dialog']
|
|
136
|
+
}], thook: [{
|
|
137
|
+
type: HostBinding,
|
|
138
|
+
args: ['attr.data-thook']
|
|
139
|
+
}, {
|
|
140
|
+
type: Input
|
|
141
|
+
}], baseClass: [{
|
|
142
|
+
type: HostBinding,
|
|
143
|
+
args: ['class.sdv-modal-dialog']
|
|
144
|
+
}], shown: [{
|
|
145
|
+
type: HostBinding,
|
|
146
|
+
args: ['class.-active']
|
|
147
|
+
}, {
|
|
148
|
+
type: Input
|
|
149
|
+
}], ariaHidden: [{
|
|
150
|
+
type: HostBinding,
|
|
151
|
+
args: ['attr.aria-hidden']
|
|
152
|
+
}], initiallyShown: [{
|
|
153
|
+
type: Input
|
|
154
|
+
}], heading: [{
|
|
155
|
+
type: Input
|
|
156
|
+
}], title: [{
|
|
157
|
+
type: Input
|
|
158
|
+
}], content: [{
|
|
159
|
+
type: Input
|
|
160
|
+
}], autoClose: [{
|
|
161
|
+
type: Input
|
|
162
|
+
}], payload: [{
|
|
163
|
+
type: Input
|
|
164
|
+
}], dialogTitleId: [{
|
|
165
|
+
type: Input
|
|
166
|
+
}], dialogBodyId: [{
|
|
167
|
+
type: Input
|
|
168
|
+
}], closeModalOnEscape: [{
|
|
169
|
+
type: Input
|
|
170
|
+
}], buttons: [{
|
|
171
|
+
type: Input
|
|
172
|
+
}], nggvCloseEvent: [{
|
|
173
|
+
type: Output
|
|
174
|
+
}], nggvPositiveEvent: [{
|
|
175
|
+
type: Output
|
|
176
|
+
}], nggvNeutralEvent: [{
|
|
177
|
+
type: Output
|
|
178
|
+
}], nggvNegativeEvent: [{
|
|
179
|
+
type: Output
|
|
180
|
+
}], close: [{
|
|
181
|
+
type: HostListener,
|
|
182
|
+
args: ['click', ['$event', '"host"']]
|
|
183
|
+
}, {
|
|
184
|
+
type: HostListener,
|
|
185
|
+
args: ['document:keydown.escape', ['$event']]
|
|
186
|
+
}], focusTrap: [{
|
|
187
|
+
type: HostListener,
|
|
188
|
+
args: ['keydown', ['$event']]
|
|
189
|
+
}] } });
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL21vZGFsL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvbW9kYWwvZGlhbG9nL2RpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBOzs7QUFldEIsTUFBTSxPQUFPLGtCQUFrQjtJQU4vQjtRQVNFLG9GQUFvRjtRQUMzQyxVQUFLLEdBQUcsUUFBUSxDQUFBO1FBQ3pELGdCQUFnQjtRQUN1QixjQUFTLEdBQUcsSUFBSSxDQUFBO1FBQ3ZELG9FQUFvRTtRQUM3QixVQUFLLEdBQUcsS0FBSyxDQUFBO1FBS3BELDBEQUEwRDtRQUNqRCxtQkFBYyxHQUFHLEtBQUssQ0FBQTtRQUcvQjs7O1dBR0c7UUFDTSxVQUFLLEdBQUcsV0FBVyxDQUFBO1FBRzVCLGdEQUFnRDtRQUN2QyxjQUFTLEdBQUcsSUFBSSxDQUFBO1FBQ3pCLDRGQUE0RjtRQUNuRixZQUFPLEdBQVEsRUFBRSxDQUFBO1FBSTFCLHlHQUF5RztRQUNoRyx1QkFBa0IsR0FBRyxJQUFJLENBQUE7UUFPbEMsbUJBQW1CO1FBQ25CLHNCQUFzQjtRQUVaLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQWUsQ0FBQTtRQUNoRCxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBZSxDQUFBO1FBQ25ELHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFlLENBQUE7UUFDbEQsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQWUsQ0FBQTtLQW1HOUQ7SUF2SUMsZ0JBQWdC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dUJBQUMsd0JBQXdCO2dCQUVFLEtBQUs7c0JBQTNDLFdBQVc7dUJBQUMsZUFBZTs7c0JBQUcsS0FBSztnQkFFQyxVQUFVO3NCQUE5QyxXQUFXO3VCQUFDLGtCQUFrQjtnQkFJdEIsY0FBYztzQkFBdEIsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBS0csS0FBSztzQkFBYixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsa0JBQWtCO3NCQUExQixLQUFLO2dCQUlPLE9BQU87c0JBQW5CLEtBQUs7Z0JBTUksY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkEwRFAsS0FBSztzQkFGSixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUM7O3NCQUMxQyxZQUFZO3VCQUFDLHlCQUF5QixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQW9CbkQsU0FBUztzQkFEUixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuaW1wb3J0IHsgRGlhbG9nQnV0dG9ucyB9IGZyb20gJy4uL21vZGFsLnR5cGVzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIERpYWxvZ0V2ZW50PFQgPSBhbnk+IHtcbiAgb3JpZ2luYWw6IEV2ZW50IHwgdW5kZWZpbmVkXG4gIHBheWxvYWQ6IFQgfCB1bmRlZmluZWRcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdndi1kaWFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG4gIGV4cG9ydEFzOiAnZGlhbG9nJyxcbn0pXG5leHBvcnQgY2xhc3MgTmd2RGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQFZpZXdDaGlsZCgnZGlhbG9nJykgZGlhbG9nUmVmOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkXG5cbiAgLyoqIFNwZWNpYWwgcHJvcGVydHkgdXNlZCBmb3Igc2VsZWN0aW5nIERPTSBlbGVtZW50cyBkdXJpbmcgYXV0b21hdGVkIFVJIHRlc3RpbmcuICovXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXRob29rJykgQElucHV0KCkgdGhvb2sgPSAnZGlhbG9nJ1xuICAvKiogQGludGVybmFsICovXG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2R2LW1vZGFsLWRpYWxvZycpIGJhc2VDbGFzcyA9IHRydWVcbiAgLyoqIEBpbnRlcm5hbCBEZWZpbmVzIHRoZSBkZWZhdWx0IHZpc2liaWxpdHkgc3RhdGUgb2YgdGhlIGRpYWxvZy4gKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy4tYWN0aXZlJykgQElucHV0KCkgc2hvd24gPSBmYWxzZVxuICAvKiogQGludGVybmFsICovXG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWhpZGRlbicpIGdldCBhcmlhSGlkZGVuKCkge1xuICAgIHJldHVybiAhdGhpcy5zaG93blxuICB9XG4gIC8qKiBEZWZpbmVzIHRoZSBkZWZhdWx0IHZpc2liaWxpdHkgc3RhdGUgb2YgdGhlIGRpYWxvZy4gKi9cbiAgQElucHV0KCkgaW5pdGlhbGx5U2hvd24gPSBmYWxzZVxuICAvKiogU2V0cyBtb2RhbCBoZWFkaW5nLiBXaWxsIGJlIHRyYW5zbGF0ZWQgKHVzaW5nIHRyYW5zbG9jbykgaWYgdGhlIHN0cmluZyBtYXRjaGVzIGEgY21zIGtleS4gKi9cbiAgQElucHV0KCkgaGVhZGluZyE6IHN0cmluZ1xuICAvKipcbiAgICogU2V0cyBtb2RhbCB0aXRsZS4gV2lsbCBiZSB0cmFuc2xhdGVkICh1c2luZyB0cmFuc2xvY28pIGlmIHRoZSBzdHJpbmcgbWF0Y2hlcyBhIGNtcyBrZXkuXG4gICAqIEBkZXByZWNhdGVkIC0gdXNlIGhlYWRpbmcgaW5zdGVhZC5cbiAgICovXG4gIEBJbnB1dCgpIHRpdGxlID0gJ0F0dGVudGlvbidcbiAgLyoqIFNldHMgY29udGVudCBib2R5IGFuZCBjYW4gY29udGFpbiBodG1sIGNvZGUuIFRoZSBjb250ZW50IGJvZHkgY2FuIGFsc28gYmUgc2V0IGJ5IG5lc3RpbmcgY2hpbGRyZW4gdG8gdGhlIGRpYWxvZyB0YWcuICovXG4gIEBJbnB1dCgpIGNvbnRlbnQ/OiBzdHJpbmdcbiAgLyoqIERlZmluZXMgaWYgZGlhbG9nIHNob3VsZCBjbG9zZSBvbiBhY3Rpb24uICovXG4gIEBJbnB1dCgpIGF1dG9DbG9zZSA9IHRydWVcbiAgLyoqIEFuIGFycmF5IG9mIGV2ZW50IHBheWxvYWRzIHRoYXQgd2lsbCBiZSBhZGRlZCB0byBldmVyeSBjbGljayBjb250ZXh0IG1lbnUgaXRlbSBjbGljay4gKi9cbiAgQElucHV0KCkgcGF5bG9hZDogYW55ID0ge31cblxuICBASW5wdXQoKSBkaWFsb2dUaXRsZUlkITogc3RyaW5nXG4gIEBJbnB1dCgpIGRpYWxvZ0JvZHlJZCE6IHN0cmluZ1xuICAvKiogSXQgZ2l2ZXMgYW4gYWJpbGl0eSBmb3IgcGFyZW50IGNvbXBvbmVudCB0byBjb250cm9sIGlmIG1vZGFsIHNob3VsZCBiZSBjbG9zZWQgb24gZXNjIGJ1dHRvbiBjbGljay4gKi9cbiAgQElucHV0KCkgY2xvc2VNb2RhbE9uRXNjYXBlID0gdHJ1ZVxuXG4gIF9idXR0b25zOiBEaWFsb2dCdXR0b25zIHwgdW5kZWZpbmVkXG4gIC8qKiBCdXR0b25zIGFyZSBkZWZpbmVkIGFzIGEga2V5LXZhbHVlIHBhaXIgd2hlcmUga2V5IGlzIG9uZSBvZiBcInBvc2l0aXZlfG5ldXRyYWx8bmVnYXRpdmVcIiBhbmQgdmFsdWUgaXMgdGhlIGJ1dHRvbiBsYWJlbC4gKi9cbiAgQElucHV0KCkgc2V0IGJ1dHRvbnMoYnV0dG9uczogRGlhbG9nQnV0dG9ucykge1xuICAgIHRoaXMuX2J1dHRvbnMgPSBidXR0b25zXG4gIH1cbiAgLy8gLyoqIEBpbnRlcm5hbCAqL1xuICAvLyBjbG9zZUljb24gPSBmYVRpbWVzXG5cbiAgQE91dHB1dCgpIG5nZ3ZDbG9zZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxEaWFsb2dFdmVudD4oKVxuICBAT3V0cHV0KCkgbmdndlBvc2l0aXZlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPERpYWxvZ0V2ZW50PigpXG4gIEBPdXRwdXQoKSBuZ2d2TmV1dHJhbEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxEaWFsb2dFdmVudD4oKVxuICBAT3V0cHV0KCkgbmdndk5lZ2F0aXZlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPERpYWxvZ0V2ZW50PigpXG5cbiAgcHJvdGVjdGVkIF9wcmV2aW91czogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWRcbiAgcHJvdGVjdGVkIF9maXJzdEZvY3VzYWJsZTogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWRcbiAgcHJvdGVjdGVkIF9sYXN0Rm9jdXNhYmxlOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZFxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZGlhbG9nVGl0bGVJZCA9XG4gICAgICB0aGlzLmRpYWxvZ1RpdGxlSWQgPz8gJ3Nkdi1kaWFsb2ctdGl0bGUtJyArIHdpbmRvdy5uZ2d2Py5uZXh0SWQoKVxuICAgIHRoaXMuZGlhbG9nQm9keUlkID1cbiAgICAgIHRoaXMuZGlhbG9nQm9keUlkID8/ICdzZHYtZGlhbG9nLWJvZHktJyArIHdpbmRvdy5uZ2d2Py5uZXh0SWQoKVxuXG4gICAgdGhpcy5zaG93biA9IHRoaXMuaW5pdGlhbGx5U2hvd25cbiAgICBpZiAodGhpcy5zaG93bikgdGhpcy5fbGltaXRGb2N1c2FibGUoKVxuICB9XG5cbiAgcHVibGljIG9uQWN0aW9uKGV2ZW50OiBFdmVudCwgYWN0aW9uOiBzdHJpbmcpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgY29uc3QgZW1pdEV2ZW50ID0ge1xuICAgICAgb3JpZ2luYWw6IGV2ZW50LFxuICAgICAgcGF5bG9hZDogdGhpcy5wYXlsb2FkLFxuICAgIH1cbiAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgICAgY2FzZSAncG9zaXRpdmUnOlxuICAgICAgICB0aGlzLm5nZ3ZQb3NpdGl2ZUV2ZW50LmVtaXQoZW1pdEV2ZW50KVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnbmV1dHJhbCc6XG4gICAgICAgIHRoaXMubmdndk5ldXRyYWxFdmVudC5lbWl0KGVtaXRFdmVudClcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ25lZ2F0aXZlJzpcbiAgICAgICAgdGhpcy5uZ2d2TmVnYXRpdmVFdmVudC5lbWl0KGVtaXRFdmVudClcbiAgICAgICAgYnJlYWtcbiAgICAgIC8vIGNhc2UgJ2Nsb3NlJyBpcyBoYW5kbGVkIGJ5IGlmLXN0YXRlbWVudCBiZWxvdyB3aXRoIGNhbGwgdG8gdGhpcy5jbG9zZSgpXG4gICAgfVxuICAgIGlmICh0aGlzLmF1dG9DbG9zZSkgdGhpcy5jbG9zZShldmVudCwgJ2FjdGlvbicpXG4gIH1cblxuICBvcGVuKG9wZW5lcj86IEhUTUxFbGVtZW50KSB7XG4gICAgdGhpcy5zaG93biA9IHRydWVcbiAgICB0aGlzLl9wcmV2aW91cyA9IG9wZW5lciB8fCAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudClcbiAgICB0aGlzLl9saW1pdEZvY3VzYWJsZSgpXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHByb3RlY3RlZCBfbGltaXRGb2N1c2FibGUoKSB7XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmRpYWxvZ1JlZikgcmV0dXJuXG4gICAgICBjb25zdCBmb2N1c2FibGUgPSB0aGlzLmRpYWxvZ1JlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAgICdidXR0b24sIFtocmVmXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIFt0YWJpbmRleF06bm90KFt0YWJpbmRleD1cIi0xXCJdKScsXG4gICAgICApXG4gICAgICB0aGlzLl9maXJzdEZvY3VzYWJsZSA9IGZvY3VzYWJsZVswXVxuICAgICAgdGhpcy5fbGFzdEZvY3VzYWJsZSA9IGZvY3VzYWJsZVtmb2N1c2FibGUubGVuZ3RoIC0gMV1cbiAgICAgIGlmICh0aGlzLl9sYXN0Rm9jdXNhYmxlKSB0aGlzLl9sYXN0Rm9jdXNhYmxlLmZvY3VzKClcbiAgICB9KVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCcsICdcImhvc3RcIiddKVxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVzY2FwZScsIFsnJGV2ZW50J10pXG4gIGNsb3NlKGV2ZW50PzogRXZlbnQsIGluaXRpYXRvcj86IHN0cmluZykge1xuICAgIGlmIChpbml0aWF0b3IgPT09ICdob3N0JyAmJiBldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpIHJldHVyblxuICAgIC8vIHByZXZlbnQgbW9kYWwgZnJvbSBjbG9zaW5nIG9uIGVzYyBidXR0b24gY2xpY2sgd2hlbiBjbG9zZU1vZGFsT25Fc2NhcGUgaXMgc2V0IHRvIGZhbHNlXG4gICAgaWYgKCF0aGlzLmNsb3NlTW9kYWxPbkVzY2FwZSkgcmV0dXJuXG4gICAgaWYgKHRoaXMuc2hvd24pIHtcbiAgICAgIGNvbnN0IGVtaXRFdmVudCA9IHtcbiAgICAgICAgb3JpZ2luYWw6IGV2ZW50LFxuICAgICAgICBwYXlsb2FkOiB0aGlzLnBheWxvYWQsXG4gICAgICB9XG4gICAgICB0aGlzLm5nZ3ZDbG9zZUV2ZW50LmVtaXQoZW1pdEV2ZW50KVxuICAgIH1cbiAgICB0aGlzLnNob3duID0gZmFsc2VcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fcHJldmlvdXMpIHRoaXMuX3ByZXZpb3VzLmZvY3VzKClcbiAgICAgIHRoaXMuX3ByZXZpb3VzID0gdW5kZWZpbmVkXG4gICAgfSlcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICBmb2N1c1RyYXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQua2V5ICE9PSAnVGFiJykgcmV0dXJuXG4gICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAvLyBzaGlmdCArIHRhYlxuICAgICAgaWYgKFxuICAgICAgICB0aGlzLl9sYXN0Rm9jdXNhYmxlICYmXG4gICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMuX2ZpcnN0Rm9jdXNhYmxlXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5fbGFzdEZvY3VzYWJsZS5mb2N1cygpXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gdGFiXG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuX2ZpcnN0Rm9jdXNhYmxlICYmXG4gICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMuX2xhc3RGb2N1c2FibGVcbiAgICAgICkge1xuICAgICAgICB0aGlzLl9maXJzdEZvY3VzYWJsZS5mb2N1cygpXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJzZHYtbW9kYWwtZGlhbG9nX19jb250YWluZXJcIlxuICAqdHJhbnNsb2NvPVwibGV0IHRcIlxuICAjZGlhbG9nXG4gIHJvbGU9XCJkaWFsb2dcIlxuICBhcmlhLWRpYWxvZz1cInRydWVcIlxuICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiZGlhbG9nVGl0bGVJZFwiXG4gIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiZGlhbG9nQm9keUlkXCJcbj5cbiAgPGhlYWRlciBjbGFzcz1cInNkdi1tb2RhbC1kaWFsb2dfX2hlYWRpbmdcIj5cbiAgICA8aDMgW2F0dHIuaWRdPVwiZGlhbG9nVGl0bGVJZFwiPnt7IHQoaGVhZGluZyB8fCB0aXRsZSB8fCAnJykgfX08L2gzPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgZGF0YS10aG9vaz1cImRpYWxvZy1jbG9zZVwiXG4gICAgICAoY2xpY2spPVwib25BY3Rpb24oJGV2ZW50LCAnY2xvc2UnKVwiXG4gICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbkFjdGlvbigkZXZlbnQsICdjbG9zZScpXCJcbiAgICAgIGNsYXNzPVwiY2xvc2VcIlxuICAgID5cbiAgICAgIDxnZHMtaWNvbi1jcm9zcy1zbWFsbFxuICAgICAgICAqbmdnQ29yZUVsZW1lbnRcbiAgICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICAgIGhlaWdodD1cIjI0XCJcbiAgICAgID48L2dkcy1pY29uLWNyb3NzLXNtYWxsPlxuICAgIDwvYnV0dG9uPlxuICA8L2hlYWRlcj5cbiAgPHNlY3Rpb24gY2xhc3M9XCJzZHYtbW9kYWwtZGlhbG9nX19ib2R5XCIgW2F0dHIuaWRdPVwiZGlhbG9nQm9keUlkXCI+XG4gICAgPGRpdiBbaW5uZXJIdG1sXT1cImNvbnRlbnRcIj48L2Rpdj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvc2VjdGlvbj5cbiAgPGZvb3RlciBjbGFzcz1cInNkdi1tb2RhbC1kaWFsb2dfX2FjdGlvbnNcIj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cInNkdi1idXR0b24gc2R2LWJ1dHRvbi1kZWxldGVcIlxuICAgICAgdHlwZT1cInJlc2V0XCJcbiAgICAgIFthdHRyLmRhdGEtdGhvb2tdPVwiJ2RpYWxvZy0nICsgKF9idXR0b25zPy5uZWdhdGl2ZSB8fCAnbmVnYXRpdmUnKVwiXG4gICAgICAoY2xpY2spPVwib25BY3Rpb24oJGV2ZW50LCAnbmVnYXRpdmUnKVwiXG4gICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbkFjdGlvbigkZXZlbnQsICduZWdhdGl2ZScpXCJcbiAgICAgICpuZ0lmPVwiX2J1dHRvbnMgJiYgX2J1dHRvbnMubmVnYXRpdmVcIlxuICAgID5cbiAgICAgIHt7IHQoX2J1dHRvbnMubmVnYXRpdmUpIH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJzZHYtYnV0dG9uIHNkdi1idXR0b24tc2Vjb25kYXJ5XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2F0dHIuZGF0YS10aG9va109XCInZGlhbG9nLScgKyAoX2J1dHRvbnM/Lm5ldXRyYWwgfHwgJ25ldXRyYWwnKVwiXG4gICAgICAoY2xpY2spPVwib25BY3Rpb24oJGV2ZW50LCAnbmV1dHJhbCcpXCJcbiAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uQWN0aW9uKCRldmVudCwgJ25ldXRyYWwnKVwiXG4gICAgICAqbmdJZj1cIl9idXR0b25zICYmIF9idXR0b25zLm5ldXRyYWxcIlxuICAgID5cbiAgICAgIHt7IHQoX2J1dHRvbnMubmV1dHJhbCkgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cInNkdi1idXR0b25cIlxuICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICBbYXR0ci5kYXRhLXRob29rXT1cIidkaWFsb2ctJyArIChfYnV0dG9ucz8ucG9zaXRpdmUgfHwgJ3Bvc2l0aXZlJylcIlxuICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uKCRldmVudCwgJ3Bvc2l0aXZlJylcIlxuICAgICAgKGtleWRvd24uZW50ZXIpPVwib25BY3Rpb24oJGV2ZW50LCAncG9zaXRpdmUnKVwiXG4gICAgICAqbmdJZj1cIl9idXR0b25zICYmIF9idXR0b25zLnBvc2l0aXZlXCJcbiAgICA+XG4gICAgICB7eyB0KF9idXR0b25zLnBvc2l0aXZlKSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Zvb3Rlcj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwic2R2LW1vZGFsLWJhY2tkcm9wXCI+PC9kaXY+XG4iXX0=
|