@ndwnu/design-system 5.0.0 → 6.0.0
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/components/alert/alert.model.d.ts +1 -6
- package/components/banner/banner.model.d.ts +1 -4
- package/components/card/card-header/card-header.component.d.ts +7 -1
- package/components/card/card.animation.d.ts +1 -0
- package/components/card/card.component.d.ts +15 -2
- package/components/card/index.d.ts +2 -2
- package/components/dropdown/dropdown.component.d.ts +1 -1
- package/components/form-field/autosuggest/autosuggest-add-option/autosuggest-add-option.component.d.ts +3 -3
- package/components/form-field/autosuggest/autosuggest-option/autosuggest-option.component.d.ts +7 -7
- package/components/form-field/autosuggest/autosuggest-option/autosuggest-option.model.d.ts +5 -2
- package/components/form-field/autosuggest/autosuggest-option/base-autosuggest-option.component.d.ts +5 -6
- package/components/form-field/autosuggest/autosuggest-panel/autosuggest-panel.component.d.ts +12 -14
- package/components/form-field/autosuggest/autosuggest.directive.d.ts +7 -8
- package/components/form-field/clear-search-button/clear-search-button.component.d.ts +2 -1
- package/components/form-field/form-field.component.d.ts +2 -1
- package/components/form-field/input/input.model.d.ts +1 -11
- package/components/form-field/picker-button/picker-button.component.d.ts +1 -0
- package/components/form-field/textarea/auto-grow.directive.d.ts +6 -3
- package/components/form-field/textarea/index.d.ts +1 -0
- package/components/form-field/textarea/max-char.directive.d.ts +15 -0
- package/components/icon/action-icon/action-icon.component.d.ts +2 -2
- package/components/index.d.ts +1 -0
- package/components/layout/layout.component.d.ts +5 -2
- package/components/main-navigation/main-navigation.imports.d.ts +1 -1
- package/components/main-navigation/main-navigation.model.d.ts +1 -4
- package/components/modal/modal.component.d.ts +1 -2
- package/components/multi-select/multi-select.component.d.ts +3 -3
- package/components/pill/pill.model.d.ts +1 -8
- package/components/router-breadcrumbs/router-breadcrumbs.component.d.ts +2 -2
- package/components/summary-card/index.d.ts +10 -0
- package/components/summary-card/summary-card-action/summary-card-action.component.d.ts +11 -0
- package/components/summary-card/summary-card-actions/summary-card-actions.component.d.ts +9 -0
- package/components/summary-card/summary-card-avatar/summary-card-avatar.component.d.ts +8 -0
- package/components/summary-card/summary-card-content/summary-card-content.component.d.ts +5 -0
- package/components/summary-card/summary-card-header/summary-card-header.component.d.ts +5 -0
- package/components/summary-card/summary-card-subtitle/summary-card-subtitle.component.d.ts +5 -0
- package/components/summary-card/summary-card-tag/summary-card-tag.component.d.ts +5 -0
- package/components/summary-card/summary-card-tags/summary-card-tags.component.d.ts +5 -0
- package/components/summary-card/summary-card.component.d.ts +5 -0
- package/components/summary-card/summary-card.model.d.ts +2 -0
- package/components/tag/tag.component.d.ts +2 -2
- package/core/style/styles.css +217 -11
- package/core/style/styles.scss +217 -11
- package/fesm2022/ndwnu-design-system.mjs +608 -334
- package/fesm2022/ndwnu-design-system.mjs.map +1 -1
- package/package.json +5 -7
- package/esm2022/components/accordion/accordion.component.mjs +0 -32
- package/esm2022/components/accordion/accordion.service.mjs +0 -17
- package/esm2022/components/accordion/index.mjs +0 -3
- package/esm2022/components/alert/alert.component.mjs +0 -42
- package/esm2022/components/alert/alert.model.mjs +0 -8
- package/esm2022/components/alert/index.mjs +0 -3
- package/esm2022/components/badge/badge.component.mjs +0 -21
- package/esm2022/components/badge/index.mjs +0 -2
- package/esm2022/components/banner/banner.component.mjs +0 -61
- package/esm2022/components/banner/banner.model.mjs +0 -6
- package/esm2022/components/banner/index.mjs +0 -3
- package/esm2022/components/breadcrumb/breadcrumb.component.mjs +0 -15
- package/esm2022/components/breadcrumb/index.mjs +0 -2
- package/esm2022/components/breadcrumb-group/breadcrumb-group.component.mjs +0 -21
- package/esm2022/components/breadcrumb-group/index.mjs +0 -2
- package/esm2022/components/button/button.directive.mjs +0 -37
- package/esm2022/components/button/index.mjs +0 -2
- package/esm2022/components/card/card-content/card-content.component.mjs +0 -11
- package/esm2022/components/card/card-content/index.mjs +0 -2
- package/esm2022/components/card/card-footer/card-footer.component.mjs +0 -11
- package/esm2022/components/card/card-footer/index.mjs +0 -2
- package/esm2022/components/card/card-header/card-header.component.mjs +0 -11
- package/esm2022/components/card/card-header/index.mjs +0 -2
- package/esm2022/components/card/card.component.mjs +0 -11
- package/esm2022/components/card/index.mjs +0 -15
- package/esm2022/components/collapsible/collapsible.animation.mjs +0 -26
- package/esm2022/components/collapsible/collapsible.component.mjs +0 -34
- package/esm2022/components/collapsible/index.mjs +0 -2
- package/esm2022/components/dashboard-card/dashboard-card.component.mjs +0 -32
- package/esm2022/components/dashboard-card/index.mjs +0 -2
- package/esm2022/components/dropdown/dropdown.component.mjs +0 -57
- package/esm2022/components/dropdown/index.mjs +0 -2
- package/esm2022/components/form-field/autosuggest/autosuggest-add-option/autosuggest-add-option.component.mjs +0 -29
- package/esm2022/components/form-field/autosuggest/autosuggest-add-option/index.mjs +0 -2
- package/esm2022/components/form-field/autosuggest/autosuggest-option/autosuggest-option.component.mjs +0 -45
- package/esm2022/components/form-field/autosuggest/autosuggest-option/autosuggest-option.model.mjs +0 -2
- package/esm2022/components/form-field/autosuggest/autosuggest-option/base-autosuggest-option.component.mjs +0 -85
- package/esm2022/components/form-field/autosuggest/autosuggest-option/index.mjs +0 -3
- package/esm2022/components/form-field/autosuggest/autosuggest-panel/autosuggest-panel.component.mjs +0 -82
- package/esm2022/components/form-field/autosuggest/autosuggest.directive.mjs +0 -411
- package/esm2022/components/form-field/autosuggest/index.mjs +0 -6
- package/esm2022/components/form-field/autosuggest/match-bold.pipe.mjs +0 -21
- package/esm2022/components/form-field/checkbox/checkbox.component.mjs +0 -62
- package/esm2022/components/form-field/checkbox/index.mjs +0 -2
- package/esm2022/components/form-field/checkbox-group/checkbox-group.component.mjs +0 -15
- package/esm2022/components/form-field/checkbox-group/index.mjs +0 -2
- package/esm2022/components/form-field/clear-search-button/clear-search-button.component.mjs +0 -37
- package/esm2022/components/form-field/error/error.component.mjs +0 -12
- package/esm2022/components/form-field/error/index.mjs +0 -2
- package/esm2022/components/form-field/file-upload/file-upload-text.interface.mjs +0 -2
- package/esm2022/components/form-field/file-upload/file-upload.component.mjs +0 -172
- package/esm2022/components/form-field/file-upload/index.mjs +0 -3
- package/esm2022/components/form-field/form-field.component.mjs +0 -81
- package/esm2022/components/form-field/form-field.constant.mjs +0 -2
- package/esm2022/components/form-field/form-field.model.mjs +0 -8
- package/esm2022/components/form-field/index.mjs +0 -17
- package/esm2022/components/form-field/info/index.mjs +0 -2
- package/esm2022/components/form-field/info/info.component.mjs +0 -11
- package/esm2022/components/form-field/input/index.mjs +0 -3
- package/esm2022/components/form-field/input/input.directive.mjs +0 -68
- package/esm2022/components/form-field/input/input.model.mjs +0 -13
- package/esm2022/components/form-field/input-button/index.mjs +0 -2
- package/esm2022/components/form-field/input-button/input-button.component.mjs +0 -23
- package/esm2022/components/form-field/input-icon/index.mjs +0 -2
- package/esm2022/components/form-field/input-icon/input-icon.component.mjs +0 -12
- package/esm2022/components/form-field/month-input/index.mjs +0 -2
- package/esm2022/components/form-field/month-input/month-input-utils.mjs +0 -13
- package/esm2022/components/form-field/month-input/month-input.component.mjs +0 -154
- package/esm2022/components/form-field/option-group/index.mjs +0 -4
- package/esm2022/components/form-field/option-group/option-group.component.mjs +0 -64
- package/esm2022/components/form-field/option-group/option-group.model.mjs +0 -2
- package/esm2022/components/form-field/option-group/option.component.mjs +0 -22
- package/esm2022/components/form-field/picker-button/picker-button.component.mjs +0 -45
- package/esm2022/components/form-field/radio-button/index.mjs +0 -2
- package/esm2022/components/form-field/radio-button/radio-button.component.mjs +0 -63
- package/esm2022/components/form-field/radio-group/index.mjs +0 -2
- package/esm2022/components/form-field/radio-group/radio-group.component.mjs +0 -70
- package/esm2022/components/form-field/success/index.mjs +0 -2
- package/esm2022/components/form-field/success/success.component.mjs +0 -12
- package/esm2022/components/form-field/textarea/auto-grow.directive.mjs +0 -45
- package/esm2022/components/form-field/textarea/index.mjs +0 -2
- package/esm2022/components/icon/action-icon/action-icon.component.mjs +0 -40
- package/esm2022/components/icon/action-icon/index.mjs +0 -2
- package/esm2022/components/icon/icon.component.mjs +0 -36
- package/esm2022/components/icon/index.mjs +0 -3
- package/esm2022/components/index.mjs +0 -28
- package/esm2022/components/layout/index.mjs +0 -2
- package/esm2022/components/layout/layout.component.mjs +0 -20
- package/esm2022/components/layout-banners/index.mjs +0 -2
- package/esm2022/components/layout-banners/layout-banners.component.mjs +0 -11
- package/esm2022/components/loader/index.mjs +0 -2
- package/esm2022/components/loader/loader.component.mjs +0 -11
- package/esm2022/components/main-navigation/index.mjs +0 -3
- package/esm2022/components/main-navigation/main-navigation.component.mjs +0 -165
- package/esm2022/components/main-navigation/main-navigation.imports.mjs +0 -20
- package/esm2022/components/main-navigation/main-navigation.model.mjs +0 -6
- package/esm2022/components/main-navigation-menu/index.mjs +0 -2
- package/esm2022/components/main-navigation-menu/main-navigation-menu.component.mjs +0 -20
- package/esm2022/components/modal/index.mjs +0 -16
- package/esm2022/components/modal/modal-content/index.mjs +0 -2
- package/esm2022/components/modal/modal-content/modal-content.component.mjs +0 -11
- package/esm2022/components/modal/modal-footer/index.mjs +0 -2
- package/esm2022/components/modal/modal-footer/modal-footer.component.mjs +0 -11
- package/esm2022/components/modal/modal-header/index.mjs +0 -2
- package/esm2022/components/modal/modal-header/modal-header.component.mjs +0 -18
- package/esm2022/components/modal/modal-ref.mjs +0 -4
- package/esm2022/components/modal/modal.component.mjs +0 -19
- package/esm2022/components/modal/modal.service.mjs +0 -31
- package/esm2022/components/multi-select/checkbox-data.interface.mjs +0 -2
- package/esm2022/components/multi-select/index.mjs +0 -4
- package/esm2022/components/multi-select/multi-select.component.mjs +0 -76
- package/esm2022/components/multi-select/select-all-text.interface.mjs +0 -2
- package/esm2022/components/pill/index.mjs +0 -3
- package/esm2022/components/pill/pill.component.mjs +0 -25
- package/esm2022/components/pill/pill.model.mjs +0 -2
- package/esm2022/components/popover/index.mjs +0 -2
- package/esm2022/components/popover/popover-trigger.directive.mjs +0 -182
- package/esm2022/components/router-breadcrumbs/index.mjs +0 -2
- package/esm2022/components/router-breadcrumbs/router-breadcrumbs.component.mjs +0 -37
- package/esm2022/components/tab/index.mjs +0 -2
- package/esm2022/components/tab/tab.component.mjs +0 -32
- package/esm2022/components/tab-group/index.mjs +0 -2
- package/esm2022/components/tab-group/tab-group.component.mjs +0 -34
- package/esm2022/components/tag/index.mjs +0 -2
- package/esm2022/components/tag/tag.component.mjs +0 -29
- package/esm2022/components/toast/index.mjs +0 -3
- package/esm2022/components/toast/toast.component.mjs +0 -77
- package/esm2022/components/toast/toast.service.mjs +0 -43
- package/esm2022/components/tooltip/index.mjs +0 -3
- package/esm2022/components/tooltip/tooltip.component.mjs +0 -16
- package/esm2022/components/tooltip/tooltip.directive.mjs +0 -89
- package/esm2022/models/aria.model.mjs +0 -2
- package/esm2022/models/index.mjs +0 -2
- package/esm2022/ndwnu-design-system.mjs +0 -5
- package/esm2022/public-api.mjs +0 -5
|
@@ -1,411 +0,0 @@
|
|
|
1
|
-
/* eslint max-lines: off */
|
|
2
|
-
// Based on https://github.com/angular/components/tree/main/src/material/autocomplete
|
|
3
|
-
import { hasModifierKey } from '@angular/cdk/keycodes';
|
|
4
|
-
import { ConnectionPositionPair, Overlay, OverlayConfig, ViewportRuler, } from '@angular/cdk/overlay';
|
|
5
|
-
import { TemplatePortal } from '@angular/cdk/portal';
|
|
6
|
-
import { DOCUMENT } from '@angular/common';
|
|
7
|
-
import { ChangeDetectorRef, DestroyRef, Directive, ElementRef, forwardRef, inject, input, NgZone, output, ViewContainerRef, } from '@angular/core';
|
|
8
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
9
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
10
|
-
import { defer, delay, filter, fromEvent, map, merge, of, Subject, switchMap, take, } from 'rxjs';
|
|
11
|
-
import { AutocompleteOptionSelectionChange, } from './autosuggest-option/autosuggest-option.component';
|
|
12
|
-
import { INPUT_CONTAINER_CLASS } from '../form-field.constant';
|
|
13
|
-
import * as i0 from "@angular/core";
|
|
14
|
-
export class AutosuggestDirective {
|
|
15
|
-
constructor() {
|
|
16
|
-
this.ndwAutosuggest = input.required();
|
|
17
|
-
this.filter = output();
|
|
18
|
-
this.overlayAttached = false;
|
|
19
|
-
this.overlayRef = null;
|
|
20
|
-
this.canOpenOnNextFocus = true;
|
|
21
|
-
this.valueOnAttach = null;
|
|
22
|
-
this.valueOnLastKeydown = null;
|
|
23
|
-
this.closeKeyEventStream = new Subject();
|
|
24
|
-
this.zone = inject(NgZone);
|
|
25
|
-
this.element = inject(ElementRef);
|
|
26
|
-
this.viewContainerRef = inject(ViewContainerRef);
|
|
27
|
-
this.overlay = inject(Overlay);
|
|
28
|
-
this.changeDetectorRef = inject(ChangeDetectorRef);
|
|
29
|
-
this.document = inject(DOCUMENT);
|
|
30
|
-
this.viewportRuler = inject(ViewportRuler);
|
|
31
|
-
this.destroyRef = inject(DestroyRef);
|
|
32
|
-
this.optionSelections = defer(() => {
|
|
33
|
-
const options = this.autosuggest.items;
|
|
34
|
-
if (this.autosuggest && options) {
|
|
35
|
-
return merge(...options.map((option) => option.selectionChange));
|
|
36
|
-
}
|
|
37
|
-
return this.zone.onStable.asObservable().pipe(take(1), switchMap(() => this.optionSelections));
|
|
38
|
-
});
|
|
39
|
-
this.handlePanelKeydown = (event) => {
|
|
40
|
-
if ((event.key === 'Escape' && !hasModifierKey(event)) ||
|
|
41
|
-
(event.key === 'ArrowUp' && hasModifierKey(event, 'altKey'))) {
|
|
42
|
-
this.closeKeyEventStream.next();
|
|
43
|
-
this.resetActiveItem();
|
|
44
|
-
event.stopPropagation();
|
|
45
|
-
event.preventDefault();
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
this.windowBlurHandler = () => {
|
|
49
|
-
this.canOpenOnNextFocus =
|
|
50
|
-
this.document?.activeElement !== this.element.nativeElement || this.panelOpen;
|
|
51
|
-
};
|
|
52
|
-
this.onChange = () => { };
|
|
53
|
-
this.onTouched = () => { };
|
|
54
|
-
}
|
|
55
|
-
get panelOpen() {
|
|
56
|
-
return this.overlayAttached && !!this.autosuggest?.showPanel;
|
|
57
|
-
}
|
|
58
|
-
get activeOption() {
|
|
59
|
-
const keyManager = this.autosuggest?.keyManager;
|
|
60
|
-
return keyManager?.activeItem ?? null;
|
|
61
|
-
}
|
|
62
|
-
get autosuggest() {
|
|
63
|
-
return this.ndwAutosuggest();
|
|
64
|
-
}
|
|
65
|
-
get panelClosingActions() {
|
|
66
|
-
return merge(this.optionSelections, this.autosuggest.keyManager.tabOut.pipe(filter(() => this.overlayAttached)), this.closeKeyEventStream, this.getOutsideClickStream(), this.overlayRef
|
|
67
|
-
? this.overlayRef.detachments().pipe(filter(() => this.overlayAttached))
|
|
68
|
-
: of()).pipe(map((event) => (event instanceof AutocompleteOptionSelectionChange ? event : null)));
|
|
69
|
-
}
|
|
70
|
-
ngAfterViewInit() {
|
|
71
|
-
const window = this.getWindow();
|
|
72
|
-
if (typeof window !== 'undefined') {
|
|
73
|
-
this.zone.runOutsideAngular(() => {
|
|
74
|
-
window.addEventListener('blur', this.windowBlurHandler);
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
ngOnDestroy() {
|
|
79
|
-
const window = this.getWindow();
|
|
80
|
-
if (typeof window !== 'undefined') {
|
|
81
|
-
window.removeEventListener('blur', this.windowBlurHandler);
|
|
82
|
-
}
|
|
83
|
-
this.closingActionsSubscription?.unsubscribe();
|
|
84
|
-
this.keydownSubscription?.unsubscribe();
|
|
85
|
-
this.closeKeyEventStream.complete();
|
|
86
|
-
this.destroyPanel();
|
|
87
|
-
}
|
|
88
|
-
openPanel(valueOnAttach = this.element.nativeElement.value) {
|
|
89
|
-
this.attachOverlay(valueOnAttach);
|
|
90
|
-
}
|
|
91
|
-
closePanel() {
|
|
92
|
-
if (!this.overlayAttached) {
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
if (this.panelOpen) {
|
|
96
|
-
this.autosuggest.closed?.emit();
|
|
97
|
-
}
|
|
98
|
-
this.autosuggest.isOpen = false;
|
|
99
|
-
this.overlayAttached = false;
|
|
100
|
-
if (this.overlayRef?.hasAttached()) {
|
|
101
|
-
this.overlayRef.detach();
|
|
102
|
-
this.closingActionsSubscription?.unsubscribe();
|
|
103
|
-
this.keydownSubscription?.unsubscribe();
|
|
104
|
-
}
|
|
105
|
-
this.changeDetectorRef.detectChanges();
|
|
106
|
-
// Dispatch an input event to trigger the form-field component change detection.
|
|
107
|
-
this.element.nativeElement.dispatchEvent(new Event('input'));
|
|
108
|
-
}
|
|
109
|
-
handleFocus() {
|
|
110
|
-
this.filter.emit(this.element.nativeElement.value);
|
|
111
|
-
if (!this.canOpenOnNextFocus) {
|
|
112
|
-
this.canOpenOnNextFocus = true;
|
|
113
|
-
this.blur();
|
|
114
|
-
}
|
|
115
|
-
else if (this.canOpen()) {
|
|
116
|
-
this.previousValue = this.element.nativeElement.value;
|
|
117
|
-
this.attachOverlay(this.previousValue);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
writeValue(value) {
|
|
121
|
-
Promise.resolve(null).then(() => this.setTriggerValue(value));
|
|
122
|
-
}
|
|
123
|
-
registerOnChange(fn) {
|
|
124
|
-
this.onChange = fn;
|
|
125
|
-
}
|
|
126
|
-
registerOnTouched(fn) {
|
|
127
|
-
this.onTouched = fn;
|
|
128
|
-
}
|
|
129
|
-
clearValue() {
|
|
130
|
-
this.writeValue('');
|
|
131
|
-
this.onChange('');
|
|
132
|
-
}
|
|
133
|
-
handleClick() {
|
|
134
|
-
if (this.canOpen() && !this.panelOpen) {
|
|
135
|
-
this.openPanel();
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
handleKeydown(event) {
|
|
139
|
-
const code = event.code;
|
|
140
|
-
if (event.key === 'Escape') {
|
|
141
|
-
event.preventDefault();
|
|
142
|
-
}
|
|
143
|
-
this.valueOnLastKeydown = this.element.nativeElement.value;
|
|
144
|
-
if (this.activeOption && code === 'Enter' && this.panelOpen) {
|
|
145
|
-
this.activeOption.selectViaInteraction();
|
|
146
|
-
this.resetActiveItem();
|
|
147
|
-
event.preventDefault();
|
|
148
|
-
}
|
|
149
|
-
else if (this.autosuggest) {
|
|
150
|
-
const prevActiveItem = this.autosuggest.keyManager?.activeItem;
|
|
151
|
-
const isArrowKey = code === 'ArrowUp' || code === 'ArrowDown';
|
|
152
|
-
if (code === 'Tab' || (isArrowKey && this.panelOpen)) {
|
|
153
|
-
this.autosuggest.keyManager?.onKeydown(event);
|
|
154
|
-
}
|
|
155
|
-
else if (isArrowKey && this.canOpen()) {
|
|
156
|
-
this.openPanel();
|
|
157
|
-
}
|
|
158
|
-
if (isArrowKey || this.autosuggest.keyManager?.activeItem !== prevActiveItem) {
|
|
159
|
-
this.scrollToOption();
|
|
160
|
-
if (this.activeOption) {
|
|
161
|
-
this.assignOptionValue(this.activeOption.value() ?? null);
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
handleInput(event) {
|
|
167
|
-
const target = event.target;
|
|
168
|
-
let value = target.value;
|
|
169
|
-
this.filter.emit(value);
|
|
170
|
-
this.autosuggest.searchTerm.set(value);
|
|
171
|
-
// Based on `NumberValueAccessor` from forms.
|
|
172
|
-
if (target.type === 'number') {
|
|
173
|
-
value = value === '' ? null : parseFloat(value);
|
|
174
|
-
}
|
|
175
|
-
if (this.previousValue !== value) {
|
|
176
|
-
this.previousValue = value;
|
|
177
|
-
if (!this.autosuggest) {
|
|
178
|
-
this.onChange(value);
|
|
179
|
-
}
|
|
180
|
-
if (!value) {
|
|
181
|
-
this.clearPreviousSelectedOption(null, true);
|
|
182
|
-
}
|
|
183
|
-
if (this.canOpen() && this.document.activeElement === event.target) {
|
|
184
|
-
const valueOnAttach = this.valueOnLastKeydown ?? this.element.nativeElement.value;
|
|
185
|
-
this.valueOnLastKeydown = null;
|
|
186
|
-
this.openPanel(valueOnAttach);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
setDisabledState(isDisabled) {
|
|
191
|
-
this.element.nativeElement.disabled = isDisabled;
|
|
192
|
-
}
|
|
193
|
-
destroyPanel() {
|
|
194
|
-
if (this.overlayRef) {
|
|
195
|
-
this.closePanel();
|
|
196
|
-
this.overlayRef.dispose();
|
|
197
|
-
this.overlayRef = null;
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
attachOverlay(valueOnAttach = this.element.nativeElement.value) {
|
|
201
|
-
if (!this.autosuggest) {
|
|
202
|
-
throw Error('Cannot open autosuggest panel because the autosuggest is not defined.');
|
|
203
|
-
}
|
|
204
|
-
let overlayRef = this.overlayRef;
|
|
205
|
-
if (!overlayRef) {
|
|
206
|
-
this.portal = new TemplatePortal(this.autosuggest.template(), this.viewContainerRef);
|
|
207
|
-
overlayRef = this.overlay.create(this.getOverlayConfig());
|
|
208
|
-
this.overlayRef = overlayRef;
|
|
209
|
-
this.viewportRuler
|
|
210
|
-
.change()
|
|
211
|
-
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
212
|
-
.subscribe(() => {
|
|
213
|
-
if (this.panelOpen && overlayRef) {
|
|
214
|
-
overlayRef.updateSize({ width: this.getHostWidth() });
|
|
215
|
-
}
|
|
216
|
-
});
|
|
217
|
-
this.initKeydownEvents();
|
|
218
|
-
}
|
|
219
|
-
if (overlayRef && !overlayRef.hasAttached()) {
|
|
220
|
-
overlayRef.attach(this.portal);
|
|
221
|
-
this.valueOnAttach = valueOnAttach;
|
|
222
|
-
this.closingActionsSubscription = this.subscribeToClosingActions();
|
|
223
|
-
this.keydownSubscription = overlayRef.keydownEvents().subscribe(this.handlePanelKeydown);
|
|
224
|
-
}
|
|
225
|
-
const wasOpen = this.panelOpen;
|
|
226
|
-
this.autosuggest.setVisibility();
|
|
227
|
-
this.autosuggest.isOpen = true;
|
|
228
|
-
this.overlayAttached = true;
|
|
229
|
-
if (this.panelOpen && wasOpen !== this.panelOpen) {
|
|
230
|
-
this.autosuggest.opened.emit();
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
initKeydownEvents() {
|
|
234
|
-
this.overlayRef?.keydownEvents()?.subscribe((event) => {
|
|
235
|
-
if (event.code === 'ArrowUp' && event.altKey) {
|
|
236
|
-
this.resetActiveItem();
|
|
237
|
-
this.closeKeyEventStream.next();
|
|
238
|
-
event.stopPropagation();
|
|
239
|
-
event.preventDefault();
|
|
240
|
-
this.blur();
|
|
241
|
-
}
|
|
242
|
-
});
|
|
243
|
-
}
|
|
244
|
-
getOverlayConfig() {
|
|
245
|
-
return new OverlayConfig({
|
|
246
|
-
positionStrategy: this.getOverlayPosition(),
|
|
247
|
-
scrollStrategy: this.overlay.scrollStrategies.reposition(),
|
|
248
|
-
width: this.getHostWidth(),
|
|
249
|
-
});
|
|
250
|
-
}
|
|
251
|
-
getHostWidth() {
|
|
252
|
-
return this.bindingElement().getBoundingClientRect().width;
|
|
253
|
-
}
|
|
254
|
-
bindingElement() {
|
|
255
|
-
const element = this.element.nativeElement;
|
|
256
|
-
const parentElement = element.parentElement;
|
|
257
|
-
return parentElement?.classList?.contains(INPUT_CONTAINER_CLASS) ? parentElement : element;
|
|
258
|
-
}
|
|
259
|
-
getOverlayPosition() {
|
|
260
|
-
const positions = [
|
|
261
|
-
new ConnectionPositionPair({ originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' }),
|
|
262
|
-
];
|
|
263
|
-
return this.overlay
|
|
264
|
-
.position()
|
|
265
|
-
.flexibleConnectedTo(this.bindingElement())
|
|
266
|
-
.withPositions(positions)
|
|
267
|
-
.withFlexibleDimensions(false)
|
|
268
|
-
.withPush(false);
|
|
269
|
-
}
|
|
270
|
-
resetActiveItem() {
|
|
271
|
-
const activeItemIndex = 0;
|
|
272
|
-
if (this.autosuggest.keyManager) {
|
|
273
|
-
this.autosuggest.keyManager.setActiveItem(activeItemIndex);
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
blur() {
|
|
277
|
-
this.element.nativeElement.blur();
|
|
278
|
-
}
|
|
279
|
-
getOutsideClickStream() {
|
|
280
|
-
return merge(fromEvent(this.document, 'click'), fromEvent(this.document, 'touchend')).pipe(filter((event) => {
|
|
281
|
-
const clickTarget = event.target;
|
|
282
|
-
return (this.overlayAttached &&
|
|
283
|
-
clickTarget !== this.element.nativeElement &&
|
|
284
|
-
this.document.activeElement !== this.element.nativeElement &&
|
|
285
|
-
!!this.overlayRef &&
|
|
286
|
-
!this.overlayRef.overlayElement.contains(clickTarget));
|
|
287
|
-
}));
|
|
288
|
-
}
|
|
289
|
-
subscribeToClosingActions() {
|
|
290
|
-
const items = this.autosuggest.items;
|
|
291
|
-
const firstStable = this.zone.onStable.asObservable().pipe(take(1));
|
|
292
|
-
const optionChanges = items.changes.pipe(delay(0));
|
|
293
|
-
return merge(firstStable, optionChanges)
|
|
294
|
-
.pipe(switchMap(() => {
|
|
295
|
-
const wasOpen = this.panelOpen;
|
|
296
|
-
this.resetActiveItem();
|
|
297
|
-
this.autosuggest.setVisibility();
|
|
298
|
-
if (this.panelOpen) {
|
|
299
|
-
this.overlayRef?.updatePosition();
|
|
300
|
-
if (wasOpen !== this.panelOpen) {
|
|
301
|
-
this.autosuggest.opened?.emit();
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
return this.panelClosingActions;
|
|
305
|
-
}), take(1))
|
|
306
|
-
.subscribe((event) => this.setValueAndClose(event));
|
|
307
|
-
}
|
|
308
|
-
setValueAndClose(event) {
|
|
309
|
-
const toSelect = event ? event.source : null;
|
|
310
|
-
if (toSelect) {
|
|
311
|
-
this.clearPreviousSelectedOption(toSelect);
|
|
312
|
-
this.onChange(toSelect.value());
|
|
313
|
-
this.assignOptionValue(toSelect.value() ?? null);
|
|
314
|
-
this.autosuggest.emitSelectEvent(toSelect);
|
|
315
|
-
this.element.nativeElement.focus();
|
|
316
|
-
}
|
|
317
|
-
else if (this.element.nativeElement.value !== this.valueOnAttach) {
|
|
318
|
-
this.clearPreviousSelectedOption(null);
|
|
319
|
-
this.assignOptionValue(null);
|
|
320
|
-
this.onChange(null);
|
|
321
|
-
}
|
|
322
|
-
this.closePanel();
|
|
323
|
-
}
|
|
324
|
-
assignOptionValue(value) {
|
|
325
|
-
const toDisplay = this.getDisplayValue(value);
|
|
326
|
-
if (value == null) {
|
|
327
|
-
this.clearPreviousSelectedOption(null, false);
|
|
328
|
-
}
|
|
329
|
-
this.updateNativeInputValue(toDisplay ?? '');
|
|
330
|
-
}
|
|
331
|
-
getDisplayValue(value) {
|
|
332
|
-
if (!value) {
|
|
333
|
-
return '';
|
|
334
|
-
}
|
|
335
|
-
const displayWithFn = this.autosuggest.displayWith();
|
|
336
|
-
return this.autosuggest && displayWithFn ? displayWithFn(value) : value;
|
|
337
|
-
}
|
|
338
|
-
updateNativeInputValue(value) {
|
|
339
|
-
this.element.nativeElement.value = value;
|
|
340
|
-
this.previousValue = value;
|
|
341
|
-
this.changeDetectorRef.markForCheck();
|
|
342
|
-
}
|
|
343
|
-
scrollToOption() {
|
|
344
|
-
const index = this.autosuggest.keyManager?.activeItemIndex ?? 0;
|
|
345
|
-
if (index === 0) {
|
|
346
|
-
this.autosuggest.setScrollTop(0);
|
|
347
|
-
}
|
|
348
|
-
else {
|
|
349
|
-
const newScrollPosition = index * 26;
|
|
350
|
-
this.autosuggest.setScrollTop(newScrollPosition);
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
setTriggerValue(value) {
|
|
354
|
-
const inputValue = value ?? '';
|
|
355
|
-
this.element.nativeElement.value = inputValue;
|
|
356
|
-
this.previousValue = inputValue;
|
|
357
|
-
}
|
|
358
|
-
clearPreviousSelectedOption(skip, emitEvent) {
|
|
359
|
-
this.onChange(null);
|
|
360
|
-
this.autosuggest.items?.forEach((option) => {
|
|
361
|
-
if (option !== skip && option.selected) {
|
|
362
|
-
option.deselect(emitEvent);
|
|
363
|
-
}
|
|
364
|
-
});
|
|
365
|
-
}
|
|
366
|
-
canOpen() {
|
|
367
|
-
const element = this.element.nativeElement;
|
|
368
|
-
return !element.readOnly && !element.disabled;
|
|
369
|
-
}
|
|
370
|
-
getWindow() {
|
|
371
|
-
return this.document?.defaultView ?? window;
|
|
372
|
-
}
|
|
373
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AutosuggestDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
374
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.0.1", type: AutosuggestDirective, isStandalone: true, selector: "input[ndwAutosuggest], textarea[ndwAutosuggest]", inputs: { ndwAutosuggest: { classPropertyName: "ndwAutosuggest", publicName: "ndwAutosuggest", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { filter: "filter" }, host: { listeners: { "focus": "handleFocus()", "blur": "onTouched()", "input": "handleInput($event)", "keydown": "handleKeydown($event)", "click": "handleClick()" }, properties: { "attr.role": "\"combobox\"", "attr.autocomplete": "\"off\"", "attr.aria-autocomplete": "\"list\"", "attr.aria-activedescendant": "(panelOpen && activeOption) ? activeOption.id : null", "attr.aria-expanded": "panelOpen.toString()", "attr.aria-owns": "!panelOpen ? null : ndwAutosuggest()?.id", "attr.aria-haspopup": "\"true\"" } }, providers: [
|
|
375
|
-
{
|
|
376
|
-
provide: NG_VALUE_ACCESSOR,
|
|
377
|
-
useExisting: forwardRef(() => AutosuggestDirective),
|
|
378
|
-
multi: true,
|
|
379
|
-
},
|
|
380
|
-
], exportAs: ["ndwAutosuggestTrigger"], ngImport: i0 }); }
|
|
381
|
-
}
|
|
382
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AutosuggestDirective, decorators: [{
|
|
383
|
-
type: Directive,
|
|
384
|
-
args: [{
|
|
385
|
-
selector: 'input[ndwAutosuggest], textarea[ndwAutosuggest]',
|
|
386
|
-
exportAs: 'ndwAutosuggestTrigger',
|
|
387
|
-
standalone: true,
|
|
388
|
-
host: {
|
|
389
|
-
'[attr.role]': '"combobox"',
|
|
390
|
-
'[attr.autocomplete]': '"off"',
|
|
391
|
-
'[attr.aria-autocomplete]': '"list"',
|
|
392
|
-
'[attr.aria-activedescendant]': '(panelOpen && activeOption) ? activeOption.id : null',
|
|
393
|
-
'[attr.aria-expanded]': 'panelOpen.toString()',
|
|
394
|
-
'[attr.aria-owns]': '!panelOpen ? null : ndwAutosuggest()?.id',
|
|
395
|
-
'[attr.aria-haspopup]': '"true"',
|
|
396
|
-
'(focus)': 'handleFocus()',
|
|
397
|
-
'(blur)': 'onTouched()',
|
|
398
|
-
'(input)': 'handleInput($event)',
|
|
399
|
-
'(keydown)': 'handleKeydown($event)',
|
|
400
|
-
'(click)': 'handleClick()',
|
|
401
|
-
},
|
|
402
|
-
providers: [
|
|
403
|
-
{
|
|
404
|
-
provide: NG_VALUE_ACCESSOR,
|
|
405
|
-
useExisting: forwardRef(() => AutosuggestDirective),
|
|
406
|
-
multi: true,
|
|
407
|
-
},
|
|
408
|
-
],
|
|
409
|
-
}]
|
|
410
|
-
}] });
|
|
411
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b3N1Z2dlc3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2Zvcm0tZmllbGQvYXV0b3N1Z2dlc3QvYXV0b3N1Z2dlc3QuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJCQUEyQjtBQUUzQixxRkFBcUY7QUFFckYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFDTCxzQkFBc0IsRUFFdEIsT0FBTyxFQUNQLGFBQWEsRUFFYixhQUFhLEdBQ2QsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsVUFBVSxFQUNWLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUVOLE1BQU0sRUFDTixnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFDTCxLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsR0FBRyxFQUNILEtBQUssRUFFTCxFQUFFLEVBQ0YsT0FBTyxFQUVQLFNBQVMsRUFDVCxJQUFJLEdBQ0wsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQ0wsaUNBQWlDLEdBRWxDLE1BQU0sbURBQW1ELENBQUM7QUFFM0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBNkIvRCxNQUFNLE9BQU8sb0JBQW9CO0lB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LEVBQUU7d0JBQ0osYUFBYSxFQUFFLFlBQVk7d0JBQzNCLHFCQUFxQixFQUFFLE9BQU87d0JBQzlCLDBCQUEwQixFQUFFLFFBQVE7d0JBQ3BDLDhCQUE4QixFQUFFLHNEQUFzRDt3QkFDdEYsc0JBQXNCLEVBQUUsc0JBQXNCO3dCQUM5QyxrQkFBa0IsRUFBRSwwQ0FBMEM7d0JBQzlELHNCQUFzQixFQUFFLFFBQVE7d0JBQ2hDLFNBQVMsRUFBRSxlQUFlO3dCQUMxQixRQUFRLEVBQUUsYUFBYTt3QkFDdkIsU0FBUyxFQUFFLHFCQUFxQjt3QkFDaEMsV0FBVyxFQUFFLHVCQUF1Qjt3QkFDcEMsU0FBUyxFQUFFLGVBQWU7cUJBQzNCO29CQUNELFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQzs0QkFDbkQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQgbWF4LWxpbmVzOiBvZmYgKi9cblxuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy90cmVlL21haW4vc3JjL21hdGVyaWFsL2F1dG9jb21wbGV0ZVxuXG5pbXBvcnQgeyBoYXNNb2RpZmllcktleSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQge1xuICBDb25uZWN0aW9uUG9zaXRpb25QYWlyLFxuICBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3ksXG4gIE92ZXJsYXksXG4gIE92ZXJsYXlDb25maWcsXG4gIE92ZXJsYXlSZWYsXG4gIFZpZXdwb3J0UnVsZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRGVzdHJveVJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgb3V0cHV0LFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIGRlZmVyLFxuICBkZWxheSxcbiAgZmlsdGVyLFxuICBmcm9tRXZlbnQsXG4gIG1hcCxcbiAgbWVyZ2UsXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICBTdWJqZWN0LFxuICBTdWJzY3JpcHRpb24sXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRvc3VnZ2VzdEFkZE9wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vYXV0b3N1Z2dlc3QtYWRkLW9wdGlvbic7XG5pbXBvcnQge1xuICBBdXRvY29tcGxldGVPcHRpb25TZWxlY3Rpb25DaGFuZ2UsXG4gIEF1dG9zdWdnZXN0T3B0aW9uQ29tcG9uZW50LFxufSBmcm9tICcuL2F1dG9zdWdnZXN0LW9wdGlvbi9hdXRvc3VnZ2VzdC1vcHRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IEF1dG9zdWdnZXN0UGFuZWxDb21wb25lbnQgfSBmcm9tICcuL2F1dG9zdWdnZXN0LXBhbmVsL2F1dG9zdWdnZXN0LXBhbmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJTlBVVF9DT05UQUlORVJfQ0xBU1MgfSBmcm9tICcuLi9mb3JtLWZpZWxkLmNvbnN0YW50JztcbmltcG9ydCB7IEF1dG9zdWdnZXN0T3B0aW9uIH0gZnJvbSAnLi9hdXRvc3VnZ2VzdC1vcHRpb24vYXV0b3N1Z2dlc3Qtb3B0aW9uLm1vZGVsJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnaW5wdXRbbmR3QXV0b3N1Z2dlc3RdLCB0ZXh0YXJlYVtuZHdBdXRvc3VnZ2VzdF0nLFxuICBleHBvcnRBczogJ25kd0F1dG9zdWdnZXN0VHJpZ2dlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGhvc3Q6IHtcbiAgICAnW2F0dHIucm9sZV0nOiAnXCJjb21ib2JveFwiJyxcbiAgICAnW2F0dHIuYXV0b2NvbXBsZXRlXSc6ICdcIm9mZlwiJyxcbiAgICAnW2F0dHIuYXJpYS1hdXRvY29tcGxldGVdJzogJ1wibGlzdFwiJyxcbiAgICAnW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XSc6ICcocGFuZWxPcGVuICYmIGFjdGl2ZU9wdGlvbikgPyBhY3RpdmVPcHRpb24uaWQgOiBudWxsJyxcbiAgICAnW2F0dHIuYXJpYS1leHBhbmRlZF0nOiAncGFuZWxPcGVuLnRvU3RyaW5nKCknLFxuICAgICdbYXR0ci5hcmlhLW93bnNdJzogJyFwYW5lbE9wZW4gPyBudWxsIDogbmR3QXV0b3N1Z2dlc3QoKT8uaWQnLFxuICAgICdbYXR0ci5hcmlhLWhhc3BvcHVwXSc6ICdcInRydWVcIicsXG4gICAgJyhmb2N1cyknOiAnaGFuZGxlRm9jdXMoKScsXG4gICAgJyhibHVyKSc6ICdvblRvdWNoZWQoKScsXG4gICAgJyhpbnB1dCknOiAnaGFuZGxlSW5wdXQoJGV2ZW50KScsXG4gICAgJyhrZXlkb3duKSc6ICdoYW5kbGVLZXlkb3duKCRldmVudCknLFxuICAgICcoY2xpY2spJzogJ2hhbmRsZUNsaWNrKCknLFxuICB9LFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEF1dG9zdWdnZXN0RGlyZWN0aXZlKSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9zdWdnZXN0RGlyZWN0aXZlIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyByZWFkb25seSBuZHdBdXRvc3VnZ2VzdCA9IGlucHV0LnJlcXVpcmVkPEF1dG9zdWdnZXN0UGFuZWxDb21wb25lbnQ+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZpbHRlciA9IG91dHB1dDxzdHJpbmc+KCk7XG5cbiAgcHJpdmF0ZSBvdmVybGF5QXR0YWNoZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBvdmVybGF5UmVmOiBPdmVybGF5UmVmIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgcG9ydGFsOiBUZW1wbGF0ZVBvcnRhbCB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBwcmV2aW91c1ZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGNsb3NpbmdBY3Rpb25zU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUga2V5ZG93blN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGNhbk9wZW5Pbk5leHRGb2N1cyA9IHRydWU7XG4gIHByaXZhdGUgdmFsdWVPbkF0dGFjaDogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgdmFsdWVPbkxhc3RLZXlkb3duOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBjbG9zZUtleUV2ZW50U3RyZWFtID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHpvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50ID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3ZlcmxheSA9IGluamVjdChPdmVybGF5KTtcbiAgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VEZXRlY3RvclJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICBwcml2YXRlIHJlYWRvbmx5IHZpZXdwb3J0UnVsZXIgPSBpbmplY3QoVmlld3BvcnRSdWxlcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICBwdWJsaWMgZ2V0IHBhbmVsT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5vdmVybGF5QXR0YWNoZWQgJiYgISF0aGlzLmF1dG9zdWdnZXN0Py5zaG93UGFuZWw7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFjdGl2ZU9wdGlvbigpOiBBdXRvc3VnZ2VzdE9wdGlvbkNvbXBvbmVudCB8IEF1dG9zdWdnZXN0QWRkT3B0aW9uQ29tcG9uZW50IHwgbnVsbCB7XG4gICAgY29uc3Qga2V5TWFuYWdlciA9IHRoaXMuYXV0b3N1Z2dlc3Q/LmtleU1hbmFnZXI7XG4gICAgcmV0dXJuIGtleU1hbmFnZXI/LmFjdGl2ZUl0ZW0gPz8gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXV0b3N1Z2dlc3QoKTogQXV0b3N1Z2dlc3RQYW5lbENvbXBvbmVudCB7XG4gICAgcmV0dXJuIHRoaXMubmR3QXV0b3N1Z2dlc3QoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHBhbmVsQ2xvc2luZ0FjdGlvbnMoKTogT2JzZXJ2YWJsZTxBdXRvY29tcGxldGVPcHRpb25TZWxlY3Rpb25DaGFuZ2UgfCBudWxsPiB7XG4gICAgcmV0dXJuIG1lcmdlKFxuICAgICAgdGhpcy5vcHRpb25TZWxlY3Rpb25zLFxuICAgICAgdGhpcy5hdXRvc3VnZ2VzdCEua2V5TWFuYWdlciEudGFiT3V0LnBpcGUoZmlsdGVyKCgpID0+IHRoaXMub3ZlcmxheUF0dGFjaGVkKSksXG4gICAgICB0aGlzLmNsb3NlS2V5RXZlbnRTdHJlYW0sXG4gICAgICB0aGlzLmdldE91dHNpZGVDbGlja1N0cmVhbSgpLFxuICAgICAgdGhpcy5vdmVybGF5UmVmXG4gICAgICAgID8gdGhpcy5vdmVybGF5UmVmLmRldGFjaG1lbnRzKCkucGlwZShmaWx0ZXIoKCkgPT4gdGhpcy5vdmVybGF5QXR0YWNoZWQpKVxuICAgICAgICA6IG9mKCksXG4gICAgKS5waXBlKG1hcCgoZXZlbnQpID0+IChldmVudCBpbnN0YW5jZW9mIEF1dG9jb21wbGV0ZU9wdGlvblNlbGVjdGlvbkNoYW5nZSA/IGV2ZW50IDogbnVsbCkpKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uU2VsZWN0aW9uczogT2JzZXJ2YWJsZTxBdXRvY29tcGxldGVPcHRpb25TZWxlY3Rpb25DaGFuZ2U+ID0gZGVmZXIoKCkgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmF1dG9zdWdnZXN0Lml0ZW1zO1xuXG4gICAgaWYgKHRoaXMuYXV0b3N1Z2dlc3QgJiYgb3B0aW9ucykge1xuICAgICAgcmV0dXJuIG1lcmdlKC4uLm9wdGlvbnMubWFwKChvcHRpb24pID0+IG9wdGlvbi5zZWxlY3Rpb25DaGFuZ2UpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy56b25lLm9uU3RhYmxlLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICB0YWtlKDEpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMub3B0aW9uU2VsZWN0aW9ucyksXG4gICAgKTtcbiAgfSk7XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCB3aW5kb3cgPSB0aGlzLmdldFdpbmRvdygpO1xuXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIHRoaXMud2luZG93Qmx1ckhhbmRsZXIpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGNvbnN0IHdpbmRvdyA9IHRoaXMuZ2V0V2luZG93KCk7XG5cbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdibHVyJywgdGhpcy53aW5kb3dCbHVySGFuZGxlcik7XG4gICAgfVxuXG4gICAgdGhpcy5jbG9zaW5nQWN0aW9uc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmtleWRvd25TdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5jbG9zZUtleUV2ZW50U3RyZWFtLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5kZXN0cm95UGFuZWwoKTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuUGFuZWwodmFsdWVPbkF0dGFjaDogc3RyaW5nID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUpOiB2b2lkIHtcbiAgICB0aGlzLmF0dGFjaE92ZXJsYXkodmFsdWVPbkF0dGFjaCk7XG4gIH1cblxuICBwdWJsaWMgY2xvc2VQYW5lbCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMub3ZlcmxheUF0dGFjaGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGFuZWxPcGVuKSB7XG4gICAgICB0aGlzLmF1dG9zdWdnZXN0LmNsb3NlZD8uZW1pdCgpO1xuICAgIH1cblxuICAgIHRoaXMuYXV0b3N1Z2dlc3QhLmlzT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMub3ZlcmxheUF0dGFjaGVkID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5vdmVybGF5UmVmPy5oYXNBdHRhY2hlZCgpKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuZGV0YWNoKCk7XG4gICAgICB0aGlzLmNsb3NpbmdBY3Rpb25zU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5rZXlkb3duU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgLy8gRGlzcGF0Y2ggYW4gaW5wdXQgZXZlbnQgdG8gdHJpZ2dlciB0aGUgZm9ybS1maWVsZCBjb21wb25lbnQgY2hhbmdlIGRldGVjdGlvbi5cbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQnKSk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlRm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXIuZW1pdCh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSk7XG5cbiAgICBpZiAoIXRoaXMuY2FuT3Blbk9uTmV4dEZvY3VzKSB7XG4gICAgICB0aGlzLmNhbk9wZW5Pbk5leHRGb2N1cyA9IHRydWU7XG4gICAgICB0aGlzLmJsdXIoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY2FuT3BlbigpKSB7XG4gICAgICB0aGlzLnByZXZpb3VzVmFsdWUgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgICAgIHRoaXMuYXR0YWNoT3ZlcmxheSh0aGlzLnByZXZpb3VzVmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiB1bmtub3duKTogdm9pZCB7XG4gICAgUHJvbWlzZS5yZXNvbHZlKG51bGwpLnRoZW4oKCkgPT4gdGhpcy5zZXRUcmlnZ2VyVmFsdWUodmFsdWUgYXMgc3RyaW5nKSk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiB1bmtub3duKSA9PiB1bmtub3duKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB1bmtub3duKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhclZhbHVlKCk6IHZvaWQge1xuICAgIHRoaXMud3JpdGVWYWx1ZSgnJyk7XG4gICAgdGhpcy5vbkNoYW5nZSgnJyk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlQ2xpY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2FuT3BlbigpICYmICF0aGlzLnBhbmVsT3Blbikge1xuICAgICAgdGhpcy5vcGVuUGFuZWwoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGNvZGUgPSBldmVudC5jb2RlO1xuXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgdGhpcy52YWx1ZU9uTGFzdEtleWRvd24gPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZTtcblxuICAgIGlmICh0aGlzLmFjdGl2ZU9wdGlvbiAmJiBjb2RlID09PSAnRW50ZXInICYmIHRoaXMucGFuZWxPcGVuKSB7XG4gICAgICB0aGlzLmFjdGl2ZU9wdGlvbi5zZWxlY3RWaWFJbnRlcmFjdGlvbigpO1xuICAgICAgdGhpcy5yZXNldEFjdGl2ZUl0ZW0oKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmF1dG9zdWdnZXN0KSB7XG4gICAgICBjb25zdCBwcmV2QWN0aXZlSXRlbSA9IHRoaXMuYXV0b3N1Z2dlc3Qua2V5TWFuYWdlcj8uYWN0aXZlSXRlbTtcbiAgICAgIGNvbnN0IGlzQXJyb3dLZXkgPSBjb2RlID09PSAnQXJyb3dVcCcgfHwgY29kZSA9PT0gJ0Fycm93RG93bic7XG5cbiAgICAgIGlmIChjb2RlID09PSAnVGFiJyB8fCAoaXNBcnJvd0tleSAmJiB0aGlzLnBhbmVsT3BlbikpIHtcbiAgICAgICAgdGhpcy5hdXRvc3VnZ2VzdC5rZXlNYW5hZ2VyPy5vbktleWRvd24oZXZlbnQpO1xuICAgICAgfSBlbHNlIGlmIChpc0Fycm93S2V5ICYmIHRoaXMuY2FuT3BlbigpKSB7XG4gICAgICAgIHRoaXMub3BlblBhbmVsKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0Fycm93S2V5IHx8IHRoaXMuYXV0b3N1Z2dlc3Qua2V5TWFuYWdlcj8uYWN0aXZlSXRlbSAhPT0gcHJldkFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgdGhpcy5zY3JvbGxUb09wdGlvbigpO1xuXG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZU9wdGlvbikge1xuICAgICAgICAgIHRoaXMuYXNzaWduT3B0aW9uVmFsdWUodGhpcy5hY3RpdmVPcHRpb24udmFsdWUoKSA/PyBudWxsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVJbnB1dChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGxldCB2YWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCA9IHRhcmdldC52YWx1ZTtcbiAgICB0aGlzLmZpbHRlci5lbWl0KHZhbHVlKTtcbiAgICB0aGlzLmF1dG9zdWdnZXN0LnNlYXJjaFRlcm0uc2V0KHZhbHVlKTtcblxuICAgIC8vIEJhc2VkIG9uIGBOdW1iZXJWYWx1ZUFjY2Vzc29yYCBmcm9tIGZvcm1zLlxuICAgIGlmICh0YXJnZXQudHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUgPT09ICcnID8gbnVsbCA6IHBhcnNlRmxvYXQodmFsdWUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByZXZpb3VzVmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLnByZXZpb3VzVmFsdWUgPSB2YWx1ZTtcblxuICAgICAgaWYgKCF0aGlzLmF1dG9zdWdnZXN0KSB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHRoaXMuY2xlYXJQcmV2aW91c1NlbGVjdGVkT3B0aW9uKG51bGwsIHRydWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jYW5PcGVuKCkgJiYgdGhpcy5kb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBldmVudC50YXJnZXQpIHtcbiAgICAgICAgY29uc3QgdmFsdWVPbkF0dGFjaCA9IHRoaXMudmFsdWVPbkxhc3RLZXlkb3duID8/IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgICB0aGlzLnZhbHVlT25MYXN0S2V5ZG93biA9IG51bGw7XG4gICAgICAgIHRoaXMub3BlblBhbmVsKHZhbHVlT25BdHRhY2gpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGhhbmRsZVBhbmVsS2V5ZG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQgPT4ge1xuICAgIGlmIChcbiAgICAgIChldmVudC5rZXkgPT09ICdFc2NhcGUnICYmICFoYXNNb2RpZmllcktleShldmVudCkpIHx8XG4gICAgICAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcgJiYgaGFzTW9kaWZpZXJLZXkoZXZlbnQsICdhbHRLZXknKSlcbiAgICApIHtcbiAgICAgIHRoaXMuY2xvc2VLZXlFdmVudFN0cmVhbS5uZXh0KCk7XG4gICAgICB0aGlzLnJlc2V0QWN0aXZlSXRlbSgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHdpbmRvd0JsdXJIYW5kbGVyID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMuY2FuT3Blbk9uTmV4dEZvY3VzID1cbiAgICAgIHRoaXMuZG9jdW1lbnQ/LmFjdGl2ZUVsZW1lbnQgIT09IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50IHx8IHRoaXMucGFuZWxPcGVuO1xuICB9O1xuXG4gIHB1YmxpYyBvbkNoYW5nZTogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkID0gKCkgPT4ge307XG4gIHB1YmxpYyBvblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcblxuICBwcml2YXRlIGRlc3Ryb3lQYW5lbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLmNsb3NlUGFuZWwoKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXR0YWNoT3ZlcmxheSh2YWx1ZU9uQXR0YWNoOiBzdHJpbmcgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5hdXRvc3VnZ2VzdCkge1xuICAgICAgdGhyb3cgRXJyb3IoJ0Nhbm5vdCBvcGVuIGF1dG9zdWdnZXN0IHBhbmVsIGJlY2F1c2UgdGhlIGF1dG9zdWdnZXN0IGlzIG5vdCBkZWZpbmVkLicpO1xuICAgIH1cblxuICAgIGxldCBvdmVybGF5UmVmID0gdGhpcy5vdmVybGF5UmVmO1xuXG4gICAgaWYgKCFvdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLnBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLmF1dG9zdWdnZXN0LnRlbXBsYXRlKCksIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgICBvdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh0aGlzLmdldE92ZXJsYXlDb25maWcoKSk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYgPSBvdmVybGF5UmVmO1xuXG4gICAgICB0aGlzLnZpZXdwb3J0UnVsZXJcbiAgICAgICAgLmNoYW5nZSgpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5wYW5lbE9wZW4gJiYgb3ZlcmxheVJlZikge1xuICAgICAgICAgICAgb3ZlcmxheVJlZi51cGRhdGVTaXplKHsgd2lkdGg6IHRoaXMuZ2V0SG9zdFdpZHRoKCkgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgdGhpcy5pbml0S2V5ZG93bkV2ZW50cygpO1xuICAgIH1cblxuICAgIGlmIChvdmVybGF5UmVmICYmICFvdmVybGF5UmVmLmhhc0F0dGFjaGVkKCkpIHtcbiAgICAgIG92ZXJsYXlSZWYuYXR0YWNoKHRoaXMucG9ydGFsKTtcbiAgICAgIHRoaXMudmFsdWVPbkF0dGFjaCA9IHZhbHVlT25BdHRhY2g7XG4gICAgICB0aGlzLmNsb3NpbmdBY3Rpb25zU3Vic2NyaXB0aW9uID0gdGhpcy5zdWJzY3JpYmVUb0Nsb3NpbmdBY3Rpb25zKCk7XG4gICAgICB0aGlzLmtleWRvd25TdWJzY3JpcHRpb24gPSBvdmVybGF5UmVmLmtleWRvd25FdmVudHMoKS5zdWJzY3JpYmUodGhpcy5oYW5kbGVQYW5lbEtleWRvd24pO1xuICAgIH1cblxuICAgIGNvbnN0IHdhc09wZW4gPSB0aGlzLnBhbmVsT3BlbjtcbiAgICB0aGlzLmF1dG9zdWdnZXN0LnNldFZpc2liaWxpdHkoKTtcbiAgICB0aGlzLmF1dG9zdWdnZXN0LmlzT3BlbiA9IHRydWU7XG4gICAgdGhpcy5vdmVybGF5QXR0YWNoZWQgPSB0cnVlO1xuXG4gICAgaWYgKHRoaXMucGFuZWxPcGVuICYmIHdhc09wZW4gIT09IHRoaXMucGFuZWxPcGVuKSB7XG4gICAgICB0aGlzLmF1dG9zdWdnZXN0Lm9wZW5lZC5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0S2V5ZG93bkV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLm92ZXJsYXlSZWY/LmtleWRvd25FdmVudHMoKT8uc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50LmNvZGUgPT09ICdBcnJvd1VwJyAmJiBldmVudC5hbHRLZXkpIHtcbiAgICAgICAgdGhpcy5yZXNldEFjdGl2ZUl0ZW0oKTtcbiAgICAgICAgdGhpcy5jbG9zZUtleUV2ZW50U3RyZWFtLm5leHQoKTtcblxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5ibHVyKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldE92ZXJsYXlDb25maWcoKTogT3ZlcmxheUNvbmZpZyB7XG4gICAgcmV0dXJuIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMuZ2V0T3ZlcmxheVBvc2l0aW9uKCksXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpLFxuICAgICAgd2lkdGg6IHRoaXMuZ2V0SG9zdFdpZHRoKCksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldEhvc3RXaWR0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmJpbmRpbmdFbGVtZW50KCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gIH1cblxuICBwcml2YXRlIGJpbmRpbmdFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgcGFyZW50RWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICByZXR1cm4gcGFyZW50RWxlbWVudD8uY2xhc3NMaXN0Py5jb250YWlucyhJTlBVVF9DT05UQUlORVJfQ0xBU1MpID8gcGFyZW50RWxlbWVudCA6IGVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIGdldE92ZXJsYXlQb3NpdGlvbigpOiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kge1xuICAgIGNvbnN0IHBvc2l0aW9ucyA9IFtcbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKFxuICAgICAgICB7IG9yaWdpblg6ICdzdGFydCcsIG9yaWdpblk6ICdib3R0b20nIH0sXG4gICAgICAgIHsgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAndG9wJyB9LFxuICAgICAgKSxcbiAgICBdO1xuXG4gICAgcmV0dXJuIHRoaXMub3ZlcmxheVxuICAgICAgLnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuYmluZGluZ0VsZW1lbnQoKSlcbiAgICAgIC53aXRoUG9zaXRpb25zKHBvc2l0aW9ucylcbiAgICAgIC53aXRoRmxleGlibGVEaW1lbnNpb25zKGZhbHNlKVxuICAgICAgLndpdGhQdXNoKGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRBY3RpdmVJdGVtKCk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGl2ZUl0ZW1JbmRleCA9IDA7XG5cbiAgICBpZiAodGhpcy5hdXRvc3VnZ2VzdC5rZXlNYW5hZ2VyKSB7XG4gICAgICB0aGlzLmF1dG9zdWdnZXN0LmtleU1hbmFnZXIuc2V0QWN0aXZlSXRlbShhY3RpdmVJdGVtSW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gIH1cblxuICBwcml2YXRlIGdldE91dHNpZGVDbGlja1N0cmVhbSgpOiBPYnNlcnZhYmxlPEV2ZW50PiB7XG4gICAgcmV0dXJuIG1lcmdlKGZyb21FdmVudCh0aGlzLmRvY3VtZW50LCAnY2xpY2snKSwgZnJvbUV2ZW50KHRoaXMuZG9jdW1lbnQsICd0b3VjaGVuZCcpKS5waXBlKFxuICAgICAgZmlsdGVyKChldmVudDogRXZlbnQpOiBib29sZWFuID0+IHtcbiAgICAgICAgY29uc3QgY2xpY2tUYXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICB0aGlzLm92ZXJsYXlBdHRhY2hlZCAmJlxuICAgICAgICAgIGNsaWNrVGFyZ2V0ICE9PSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCAmJlxuICAgICAgICAgIHRoaXMuZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQgJiZcbiAgICAgICAgICAhIXRoaXMub3ZlcmxheVJlZiAmJlxuICAgICAgICAgICF0aGlzLm92ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQuY29udGFpbnMoY2xpY2tUYXJnZXQpXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb0Nsb3NpbmdBY3Rpb25zKCk6IFN1YnNjcmlwdGlvbiB7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLmF1dG9zdWdnZXN0IS5pdGVtcztcblxuICAgIGNvbnN0IGZpcnN0U3RhYmxlID0gdGhpcy56b25lLm9uU3RhYmxlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZSgxKSk7XG4gICAgY29uc3Qgb3B0aW9uQ2hhbmdlcyA9IGl0ZW1zLmNoYW5nZXMucGlwZShkZWxheSgwKSk7XG5cbiAgICByZXR1cm4gbWVyZ2UoZmlyc3RTdGFibGUsIG9wdGlvbkNoYW5nZXMpXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICBjb25zdCB3YXNPcGVuID0gdGhpcy5wYW5lbE9wZW47XG4gICAgICAgICAgdGhpcy5yZXNldEFjdGl2ZUl0ZW0oKTtcbiAgICAgICAgICB0aGlzLmF1dG9zdWdnZXN0LnNldFZpc2liaWxpdHkoKTtcblxuICAgICAgICAgIGlmICh0aGlzLnBhbmVsT3Blbikge1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmPy51cGRhdGVQb3NpdGlvbigpO1xuXG4gICAgICAgICAgICBpZiAod2FzT3BlbiAhPT0gdGhpcy5wYW5lbE9wZW4pIHtcbiAgICAgICAgICAgICAgdGhpcy5hdXRvc3VnZ2VzdC5vcGVuZWQ/LmVtaXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdGhpcy5wYW5lbENsb3NpbmdBY3Rpb25zO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB0aGlzLnNldFZhbHVlQW5kQ2xvc2UoZXZlbnQpKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VmFsdWVBbmRDbG9zZShldmVudDogQXV0b2NvbXBsZXRlT3B0aW9uU2VsZWN0aW9uQ2hhbmdlIHwgbnVsbCk6IHZvaWQge1xuICAgIGNvbnN0IHRvU2VsZWN0ID0gZXZlbnQgPyBldmVudC5zb3VyY2UgOiBudWxsO1xuXG4gICAgaWYgKHRvU2VsZWN0KSB7XG4gICAgICB0aGlzLmNsZWFyUHJldmlvdXNTZWxlY3RlZE9wdGlvbih0b1NlbGVjdCk7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRvU2VsZWN0LnZhbHVlKCkpO1xuICAgICAgdGhpcy5hc3NpZ25PcHRpb25WYWx1ZSh0b1NlbGVjdC52YWx1ZSgpID8/IG51bGwpO1xuICAgICAgdGhpcy5hdXRvc3VnZ2VzdC5lbWl0U2VsZWN0RXZlbnQodG9TZWxlY3QpO1xuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlICE9PSB0aGlzLnZhbHVlT25BdHRhY2gpIHtcbiAgICAgIHRoaXMuY2xlYXJQcmV2aW91c1NlbGVjdGVkT3B0aW9uKG51bGwpO1xuICAgICAgdGhpcy5hc3NpZ25PcHRpb25WYWx1ZShudWxsKTtcbiAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG4gICAgfVxuXG4gICAgdGhpcy5jbG9zZVBhbmVsKCk7XG4gIH1cblxuICBwcml2YXRlIGFzc2lnbk9wdGlvblZhbHVlKHZhbHVlOiBBdXRvc3VnZ2VzdE9wdGlvbiB8IG51bGwpOiB2b2lkIHtcbiAgICBjb25zdCB0b0Rpc3BsYXkgPSB0aGlzLmdldERpc3BsYXlWYWx1ZSh2YWx1ZSk7XG5cbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgdGhpcy5jbGVhclByZXZpb3VzU2VsZWN0ZWRPcHRpb24obnVsbCwgZmFsc2UpO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlTmF0aXZlSW5wdXRWYWx1ZSh0b0Rpc3BsYXkgPz8gJycpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREaXNwbGF5VmFsdWUodmFsdWU6IEF1dG9zdWdnZXN0T3B0aW9uIHwgbnVsbCk6IHN0cmluZyB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGRpc3BsYXlXaXRoRm4gPSB0aGlzLmF1dG9zdWdnZXN0LmRpc3BsYXlXaXRoKCk7XG4gICAgcmV0dXJuIHRoaXMuYXV0b3N1Z2dlc3QgJiYgZGlzcGxheVdpdGhGbiA/IGRpc3BsYXlXaXRoRm4odmFsdWUpIDogKHZhbHVlIGFzIHN0cmluZyk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU5hdGl2ZUlucHV0VmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5wcmV2aW91c1ZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgc2Nyb2xsVG9PcHRpb24oKTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmF1dG9zdWdnZXN0LmtleU1hbmFnZXI/LmFjdGl2ZUl0ZW1JbmRleCA/PyAwO1xuXG4gICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICB0aGlzLmF1dG9zdWdnZXN0LnNldFNjcm9sbFRvcCgwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbmV3U2Nyb2xsUG9zaXRpb24gPSBpbmRleCAqIDI2O1xuICAgICAgdGhpcy5hdXRvc3VnZ2VzdC5zZXRTY3JvbGxUb3AobmV3U2Nyb2xsUG9zaXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0VHJpZ2dlclZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dFZhbHVlID0gdmFsdWUgPz8gJyc7XG5cbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSA9IGlucHV0VmFsdWU7XG4gICAgdGhpcy5wcmV2aW91c1ZhbHVlID0gaW5wdXRWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJQcmV2aW91c1NlbGVjdGVkT3B0aW9uKFxuICAgIHNraXA6IEF1dG9zdWdnZXN0T3B0aW9uQ29tcG9uZW50IHwgQXV0b3N1Z2dlc3RBZGRPcHRpb25Db21wb25lbnQgfCBudWxsLFxuICAgIGVtaXRFdmVudD86IGJvb2xlYW4sXG4gICk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG4gICAgdGhpcy5hdXRvc3VnZ2VzdC5pdGVtcz8uZm9yRWFjaCgob3B0aW9uKSA9PiB7XG4gICAgICBpZiAob3B0aW9uICE9PSBza2lwICYmIG9wdGlvbi5zZWxlY3RlZCkge1xuICAgICAgICBvcHRpb24uZGVzZWxlY3QoZW1pdEV2ZW50KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2FuT3BlbigpOiBib29sZWFuIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgcmV0dXJuICFlbGVtZW50LnJlYWRPbmx5ICYmICFlbGVtZW50LmRpc2FibGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRXaW5kb3coKTogV2luZG93IHtcbiAgICByZXR1cm4gdGhpcy5kb2N1bWVudD8uZGVmYXVsdFZpZXcgPz8gd2luZG93O1xuICB9XG59XG4iXX0=
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export * from './autosuggest.directive';
|
|
2
|
-
export * from './autosuggest-option/autosuggest-option.model';
|
|
3
|
-
export * from './autosuggest-option/autosuggest-option.component';
|
|
4
|
-
export * from './autosuggest-panel/autosuggest-panel.component';
|
|
5
|
-
export * from './autosuggest-add-option/autosuggest-add-option.component';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvZm9ybS1maWVsZC9hdXRvc3VnZ2VzdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsMkRBQTJELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2F1dG9zdWdnZXN0LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2F1dG9zdWdnZXN0LW9wdGlvbi9hdXRvc3VnZ2VzdC1vcHRpb24ubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9hdXRvc3VnZ2VzdC1vcHRpb24vYXV0b3N1Z2dlc3Qtb3B0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2F1dG9zdWdnZXN0LXBhbmVsL2F1dG9zdWdnZXN0LXBhbmVsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2F1dG9zdWdnZXN0LWFkZC1vcHRpb24vYXV0b3N1Z2dlc3QtYWRkLW9wdGlvbi5jb21wb25lbnQnO1xuIl19
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { Pipe } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class MatchBoldPipe {
|
|
4
|
-
transform(value, searchTerm) {
|
|
5
|
-
if (!searchTerm || typeof value !== 'string') {
|
|
6
|
-
return `${value}`;
|
|
7
|
-
}
|
|
8
|
-
const regex = new RegExp(`(${searchTerm})`, 'gi');
|
|
9
|
-
return value.replace(regex, '<b>$1</b>');
|
|
10
|
-
}
|
|
11
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: MatchBoldPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
12
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.1", ngImport: i0, type: MatchBoldPipe, isStandalone: true, name: "matchBold" }); }
|
|
13
|
-
}
|
|
14
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: MatchBoldPipe, decorators: [{
|
|
15
|
-
type: Pipe,
|
|
16
|
-
args: [{
|
|
17
|
-
name: 'matchBold',
|
|
18
|
-
standalone: true,
|
|
19
|
-
}]
|
|
20
|
-
}] });
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2gtYm9sZC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2Zvcm0tZmllbGQvYXV0b3N1Z2dlc3QvbWF0Y2gtYm9sZC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQU1wRCxNQUFNLE9BQU8sYUFBYTtJQUNqQixTQUFTLENBQUMsS0FBYyxFQUFFLFVBQWtCO1FBQ2pELElBQUksQ0FBQyxVQUFVLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDN0MsT0FBTyxHQUFHLEtBQUssRUFBRSxDQUFDO1FBQ3BCLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLFVBQVUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDM0MsQ0FBQzs4R0FSVSxhQUFhOzRHQUFiLGFBQWE7OzJGQUFiLGFBQWE7a0JBSnpCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQFBpcGUoe1xuICBuYW1lOiAnbWF0Y2hCb2xkJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTWF0Y2hCb2xkUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBwdWJsaWMgdHJhbnNmb3JtKHZhbHVlOiB1bmtub3duLCBzZWFyY2hUZXJtOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghc2VhcmNoVGVybSB8fCB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gYCR7dmFsdWV9YDtcbiAgICB9XG5cbiAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoYCgke3NlYXJjaFRlcm19KWAsICdnaScpO1xuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKHJlZ2V4LCAnPGI+JDE8L2I+Jyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { NgClass } from '@angular/common';
|
|
2
|
-
import { ChangeDetectionStrategy, Component, input, model } from '@angular/core';
|
|
3
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
|
-
import { IconComponent } from '../../icon';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class CheckboxComponent {
|
|
7
|
-
constructor() {
|
|
8
|
-
this.checked = model(false);
|
|
9
|
-
this.switch = input(false);
|
|
10
|
-
this.disabled = input(false);
|
|
11
|
-
this.error = input(false);
|
|
12
|
-
this.success = input(false);
|
|
13
|
-
this.indeterminate = input(false);
|
|
14
|
-
this.required = input(false);
|
|
15
|
-
this.uuid = crypto.randomUUID();
|
|
16
|
-
}
|
|
17
|
-
onClick() {
|
|
18
|
-
if (this.disabled()) {
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
this.checked.set(!this.checked());
|
|
22
|
-
}
|
|
23
|
-
onKeyDown(event) {
|
|
24
|
-
if (event.key !== 'Enter' || this.disabled()) {
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
this.checked.set(!this.checked());
|
|
28
|
-
event.preventDefault();
|
|
29
|
-
}
|
|
30
|
-
writeValue(value) {
|
|
31
|
-
this.checked.set(value);
|
|
32
|
-
}
|
|
33
|
-
registerOnChange(fn) {
|
|
34
|
-
this.checked.subscribe(fn);
|
|
35
|
-
}
|
|
36
|
-
registerOnTouched() {
|
|
37
|
-
// noop
|
|
38
|
-
}
|
|
39
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
40
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: CheckboxComponent, isStandalone: true, selector: "ndw-checkbox", inputs: { checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, switch: { classPropertyName: "switch", publicName: "switch", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, success: { classPropertyName: "success", publicName: "success", isSignal: true, isRequired: false, transformFunction: null }, indeterminate: { classPropertyName: "indeterminate", publicName: "indeterminate", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange" }, host: { properties: { "class.checked": "checked()", "class.disabled": "disabled()", "class.indeterminate": "indeterminate()" } }, providers: [
|
|
41
|
-
{
|
|
42
|
-
provide: NG_VALUE_ACCESSOR,
|
|
43
|
-
useExisting: CheckboxComponent,
|
|
44
|
-
multi: true,
|
|
45
|
-
},
|
|
46
|
-
], ngImport: i0, template: "<input\n type=\"checkbox\"\n [id]=\"'checkbox-' + uuid\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n aria-hidden=\"true\"\n/>\n<div\n [ngClass]=\"{ error: error(), success: success(), checkbox: !switch(), switch: switch() }\"\n role=\"checkbox\"\n [attr.aria-checked]=\"indeterminate() ? 'mixed' : checked()\"\n [attr.aria-disabled]=\"disabled()\"\n [attr.aria-labelledby]=\"'checkbox-label-' + uuid\"\n (click)=\"onClick()\"\n (keydown)=\"onKeyDown($event)\"\n [tabindex]=\"disabled() ? -1 : 0\"\n>\n @if (!switch()) {\n @if (checked()) {\n <ndw-icon>check</ndw-icon>\n } @else if (indeterminate()) {\n <ndw-icon>remove</ndw-icon>\n }\n } @else {\n <span class=\"switch-icon\">\n @if (checked()) {\n <ndw-icon>check</ndw-icon>\n } @else {\n <ndw-icon>close</ndw-icon>\n }\n </span>\n }\n</div>\n<label\n id=\"checkbox-label-{{ uuid }}\"\n tabindex=\"-1\"\n [for]=\"'checkbox-' + uuid\"\n [ngClass]=\"{ 'switch-text': switch() }\"\n (click)=\"onClick()\"\n (keydown)=\"onKeyDown($event)\"\n>\n <ng-content />\n</label>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,400..650;1,9..40,400..650&family=Material+Symbols+Rounded:opsz,wght@20..48,400&family=Nunito+Sans:ital,opsz,wght@0,6..12,400..650;1,6..12,400..650&family=Roboto+Flex:opsz,wght@8..144,100..1000&display=block\";.ndw-heading-xl{font-family:var(--ndw-font-family-heading);font-size:2.5rem;font-weight:var(--ndw-font-weight-bold);line-height:150%}.ndw-heading-lg{font-family:var(--ndw-font-family-heading);font-size:2rem;font-weight:var(--ndw-font-weight-bold);line-height:150%}.ndw-heading-md{font-family:var(--ndw-font-family-heading);font-size:1.5rem;font-weight:var(--ndw-font-weight-bold);line-height:150%}.ndw-heading-sm{font-family:var(--ndw-font-family-heading);font-size:1.25rem;font-weight:var(--ndw-font-weight-bold);line-height:150%}.ndw-paragraph-bold-xl{font-family:var(--ndw-font-family-body);font-size:1.125rem;font-weight:var(--ndw-font-weight-bold);line-height:150%}.ndw-paragraph-xl{font-family:var(--ndw-font-family-body);font-size:1.125rem;font-weight:var(--ndw-font-weight-regular);line-height:150%}.ndw-paragraph-bold-lg{font-family:var(--ndw-font-family-body);font-size:1rem;font-weight:var(--ndw-font-weight-bold);line-height:150%}.ndw-paragraph-lg{font-family:var(--ndw-font-family-body);font-size:1rem;font-weight:var(--ndw-font-weight-regular);line-height:150%}.ndw-paragraph-bold-md{font-family:var(--ndw-font-family-body);font-size:.8125rem;font-weight:var(--ndw-font-weight-bold);line-height:150%}.ndw-paragraph-md{font-family:var(--ndw-font-family-body);font-size:.8125rem;font-weight:var(--ndw-font-weight-regular);line-height:150%}.ndw-paragraph-bold-sm{font-family:var(--ndw-font-family-body);font-size:.6875rem;font-weight:var(--ndw-font-weight-bold);line-height:150%}.ndw-paragraph-sm{font-family:var(--ndw-font-family-body);font-size:.6875rem;font-weight:var(--ndw-font-weight-regular);line-height:150%}:host{--checkable-input-size: 1.25rem;cursor:pointer;display:inline-grid;gap:var(--ndw-spacing-xs);grid-template-columns:auto 1fr;min-height:1.375rem;width:fit-content}input{display:none}div{background-color:var(--ndw-color-white);border:var(--ndw-border-size-sm) solid var(--ndw-color-grey-300);box-sizing:border-box;color:var(--ndw-color-white);display:flex;height:var(--checkable-input-size);position:relative;transition:background-color var(--ndw-animation-speed-fast) ease-out,border-color var(--ndw-animation-speed-fast) ease-out,box-shadow var(--ndw-animation-speed-fast) ease-out;width:var(--checkable-input-size)}div.success{background-color:var(--ndw-color-positive-100);border-color:var(--ndw-color-positive-500)}div.error{background-color:var(--ndw-color-critical-100);border-color:var(--ndw-color-critical-500)}label{font-family:var(--ndw-font-family-body);font-size:.8125rem;font-weight:var(--ndw-font-weight-regular);line-height:150%;align-items:center;color:var(--ndw-color-grey-600);cursor:pointer;display:flex;line-height:var(--ndw-line-height-sm);width:fit-content;word-break:break-word}label:focus{outline:none}:host(.checked) div,:host(.indeterminate) div{background-color:var(--ndw-color-primary-500);border-color:var(--ndw-color-primary-500)}:host(.checked) div.success,:host(.indeterminate) div.success{background-color:var(--ndw-color-positive-500);border-color:var(--ndw-color-positive-500)}:host(.checked) div.error,:host(.indeterminate) div.error{background-color:var(--ndw-color-critical-500);border-color:var(--ndw-color-critical-500)}:host(:focus){outline:none}:host(:focus) div{box-shadow:var(--ndw-elevation-info)}:host(:active) div,:host(:focus) div,:host(:not(.checked):active) div,:host(:not(.indeterminate):active) div{border-color:var(--ndw-color-secondary-500)}:host(.checked:focus) div,:host(.indeterminate:focus) div{background-color:var(--ndw-color-primary-700)}:host(.disabled){pointer-events:none;-webkit-user-select:none;user-select:none}:host(.disabled) div{background-color:var(--ndw-color-grey-100);border-color:var(--ndw-color-grey-200)}:host(.disabled) label{color:var(--ndw-color-grey-400)}:host(.checked.disabled) div{background-color:var(--ndw-color-grey-200);border-color:var(--ndw-color-grey-200)}\n", "div{border-radius:var(--ndw-border-radius-sm)}div.checkbox ndw-icon{font-size:1.25rem;inset:calc(var(--ndw-border-size-sm) * -1);position:absolute}div.switch{width:2.75rem;height:var(--ndw-spacing-lg);border-radius:calc(var(--ndw-spacing-lg) / 2);border:var(--ndw-border-size-sm) solid var(--ndw-color-grey-300);padding:var(--ndw-border-size-lg)}div.switch .switch-icon{background-color:var(--ndw-color-grey-400);border-radius:50%;width:var(--ndw-spacing-md);height:var(--ndw-spacing-md);display:flex;align-items:center;justify-content:center;animation:translateToLeft var(--ndw-animation-speed-fast) ease-out forwards}div.switch .switch-icon ndw-icon{color:var(--ndw-color-white);font-size:var(--ndw-spacing-sm)}div.switch.error{background-color:var(--ndw-color-white)}label.switch-text{margin-top:var(--ndw-spacing-2xs)}:host(.checked) div.switch,:host(.indeterminate) div.switch{background-color:var(--ndw-color-positive-500);border-color:var(--ndw-color-positive-500)}:host(.checked) div.switch .switch-icon,:host(.indeterminate) div.switch .switch-icon{background-color:var(--ndw-color-white);animation:translateToRight var(--ndw-animation-speed-fast) ease-out forwards}:host(.checked) div.switch .switch-icon ndw-icon,:host(.indeterminate) div.switch .switch-icon ndw-icon{color:var(--ndw-color-positive-500)}:host(.checked) div.switch.error,:host(.indeterminate) div.switch.error{background-color:var(--ndw-color-positive-500)}:host(:hover) div{background-color:var(--ndw-color-white)}:host(:hover) div.checkbox{border-color:var(--ndw-color-primary-500)}:host(:hover) div.switch{border-color:var(--ndw-color-grey-500)}:host(:hover) div.switch ndw-icon{color:var(--ndw-color-white)}:host(.checked:hover) div.checkbox,:host(.indeterminate:hover) div.checkbox{background-color:var(--ndw-color-primary-600);border-color:var(--ndw-color-primary-600)}:host(.checked:hover) div.switch,:host(.indeterminate:hover) div.switch{background-color:var(--ndw-color-positive-600);border-color:var(--ndw-color-positive-600)}:host(.checked:hover) div.switch ndw-icon,:host(.indeterminate:hover) div.switch ndw-icon{color:var(--ndw-color-positive-600)}:host(:focus) div.switch{border-color:var(--ndw-color-secondary-500)}:host(.disabled) div.switch{background-color:var(--ndw-color-grey-100);border-color:var(--ndw-color-grey-300)}:host(.disabled) div.switch .switch-icon{background-color:var(--ndw-color-grey-200)}:host(.checked.disabled) div.switch,:host(.indeterminate.disabled) div.switch{background-color:var(--ndw-color-grey-400);border-color:var(--ndw-color-grey-400)}:host(.checked.disabled) div.switch .switch-icon,:host(.indeterminate.disabled) div.switch .switch-icon{background-color:var(--ndw-color-white)}:host(.checked.disabled) div.switch .switch-icon ndw-icon,:host(.indeterminate.disabled) div.switch .switch-icon ndw-icon{background-color:var(--ndw-color-white);color:var(--ndw-color-grey-400)}@keyframes translateToRight{0%{transform:translate(0);background-color:var(--ndw-color-grey-300)}to{transform:translate(20px);background-color:var(--ndw-color-white)}}@keyframes translateToLeft{0%{transform:translate(20px);background-color:var(--ndw-color-white)}to{transform:translate(0);background-color:var(--ndw-color-grey-300)}}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "ndw-icon", inputs: ["size"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
47
|
-
}
|
|
48
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CheckboxComponent, decorators: [{
|
|
49
|
-
type: Component,
|
|
50
|
-
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
51
|
-
'[class.checked]': 'checked()',
|
|
52
|
-
'[class.disabled]': 'disabled()',
|
|
53
|
-
'[class.indeterminate]': 'indeterminate()',
|
|
54
|
-
}, imports: [IconComponent, NgClass], providers: [
|
|
55
|
-
{
|
|
56
|
-
provide: NG_VALUE_ACCESSOR,
|
|
57
|
-
useExisting: CheckboxComponent,
|
|
58
|
-
multi: true,
|
|
59
|
-
},
|
|
60
|
-
], selector: 'ndw-checkbox', standalone: true, template: "<input\n type=\"checkbox\"\n [id]=\"'checkbox-' + uuid\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n aria-hidden=\"true\"\n/>\n<div\n [ngClass]=\"{ error: error(), success: success(), checkbox: !switch(), switch: switch() }\"\n role=\"checkbox\"\n [attr.aria-checked]=\"indeterminate() ? 'mixed' : checked()\"\n [attr.aria-disabled]=\"disabled()\"\n [attr.aria-labelledby]=\"'checkbox-label-' + uuid\"\n (click)=\"onClick()\"\n (keydown)=\"onKeyDown($event)\"\n [tabindex]=\"disabled() ? -1 : 0\"\n>\n @if (!switch()) {\n @if (checked()) {\n <ndw-icon>check</ndw-icon>\n } @else if (indeterminate()) {\n <ndw-icon>remove</ndw-icon>\n }\n } @else {\n <span class=\"switch-icon\">\n @if (checked()) {\n <ndw-icon>check</ndw-icon>\n } @else {\n <ndw-icon>close</ndw-icon>\n }\n </span>\n }\n</div>\n<label\n id=\"checkbox-label-{{ uuid }}\"\n tabindex=\"-1\"\n [for]=\"'checkbox-' + uuid\"\n [ngClass]=\"{ 'switch-text': switch() }\"\n (click)=\"onClick()\"\n (keydown)=\"onKeyDown($event)\"\n>\n <ng-content />\n</label>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,400..650;1,9..40,400..650&family=Material+Symbols+Rounded:opsz,wght@20..48,400&family=Nunito+Sans:ital,opsz,wght@0,6..12,400..650;1,6..12,400..650&family=Roboto+Flex:opsz,wght@8..144,100..1000&display=block\";.ndw-heading-xl{font-family:var(--ndw-font-family-heading);font-size:2.5rem;font-weight:var(--ndw-font-weight-bold);line-height:150%}.ndw-heading-lg{font-family:var(--ndw-font-family-heading);font-size:2rem;font-weight:var(--ndw-font-weight-bold);line-height:150%}.ndw-heading-md{font-family:var(--ndw-font-family-heading);font-size:1.5rem;font-weight:var(--ndw-font-weight-bold);line-height:150%}.ndw-heading-sm{font-family:var(--ndw-font-family-heading);font-size:1.25rem;font-weight:var(--ndw-font-weight-bold);line-height:150%}.ndw-paragraph-bold-xl{font-family:var(--ndw-font-family-body);font-size:1.125rem;font-weight:var(--ndw-font-weight-bold);line-height:150%}.ndw-paragraph-xl{font-family:var(--ndw-font-family-body);font-size:1.125rem;font-weight:var(--ndw-font-weight-regular);line-height:150%}.ndw-paragraph-bold-lg{font-family:var(--ndw-font-family-body);font-size:1rem;font-weight:var(--ndw-font-weight-bold);line-height:150%}.ndw-paragraph-lg{font-family:var(--ndw-font-family-body);font-size:1rem;font-weight:var(--ndw-font-weight-regular);line-height:150%}.ndw-paragraph-bold-md{font-family:var(--ndw-font-family-body);font-size:.8125rem;font-weight:var(--ndw-font-weight-bold);line-height:150%}.ndw-paragraph-md{font-family:var(--ndw-font-family-body);font-size:.8125rem;font-weight:var(--ndw-font-weight-regular);line-height:150%}.ndw-paragraph-bold-sm{font-family:var(--ndw-font-family-body);font-size:.6875rem;font-weight:var(--ndw-font-weight-bold);line-height:150%}.ndw-paragraph-sm{font-family:var(--ndw-font-family-body);font-size:.6875rem;font-weight:var(--ndw-font-weight-regular);line-height:150%}:host{--checkable-input-size: 1.25rem;cursor:pointer;display:inline-grid;gap:var(--ndw-spacing-xs);grid-template-columns:auto 1fr;min-height:1.375rem;width:fit-content}input{display:none}div{background-color:var(--ndw-color-white);border:var(--ndw-border-size-sm) solid var(--ndw-color-grey-300);box-sizing:border-box;color:var(--ndw-color-white);display:flex;height:var(--checkable-input-size);position:relative;transition:background-color var(--ndw-animation-speed-fast) ease-out,border-color var(--ndw-animation-speed-fast) ease-out,box-shadow var(--ndw-animation-speed-fast) ease-out;width:var(--checkable-input-size)}div.success{background-color:var(--ndw-color-positive-100);border-color:var(--ndw-color-positive-500)}div.error{background-color:var(--ndw-color-critical-100);border-color:var(--ndw-color-critical-500)}label{font-family:var(--ndw-font-family-body);font-size:.8125rem;font-weight:var(--ndw-font-weight-regular);line-height:150%;align-items:center;color:var(--ndw-color-grey-600);cursor:pointer;display:flex;line-height:var(--ndw-line-height-sm);width:fit-content;word-break:break-word}label:focus{outline:none}:host(.checked) div,:host(.indeterminate) div{background-color:var(--ndw-color-primary-500);border-color:var(--ndw-color-primary-500)}:host(.checked) div.success,:host(.indeterminate) div.success{background-color:var(--ndw-color-positive-500);border-color:var(--ndw-color-positive-500)}:host(.checked) div.error,:host(.indeterminate) div.error{background-color:var(--ndw-color-critical-500);border-color:var(--ndw-color-critical-500)}:host(:focus){outline:none}:host(:focus) div{box-shadow:var(--ndw-elevation-info)}:host(:active) div,:host(:focus) div,:host(:not(.checked):active) div,:host(:not(.indeterminate):active) div{border-color:var(--ndw-color-secondary-500)}:host(.checked:focus) div,:host(.indeterminate:focus) div{background-color:var(--ndw-color-primary-700)}:host(.disabled){pointer-events:none;-webkit-user-select:none;user-select:none}:host(.disabled) div{background-color:var(--ndw-color-grey-100);border-color:var(--ndw-color-grey-200)}:host(.disabled) label{color:var(--ndw-color-grey-400)}:host(.checked.disabled) div{background-color:var(--ndw-color-grey-200);border-color:var(--ndw-color-grey-200)}\n", "div{border-radius:var(--ndw-border-radius-sm)}div.checkbox ndw-icon{font-size:1.25rem;inset:calc(var(--ndw-border-size-sm) * -1);position:absolute}div.switch{width:2.75rem;height:var(--ndw-spacing-lg);border-radius:calc(var(--ndw-spacing-lg) / 2);border:var(--ndw-border-size-sm) solid var(--ndw-color-grey-300);padding:var(--ndw-border-size-lg)}div.switch .switch-icon{background-color:var(--ndw-color-grey-400);border-radius:50%;width:var(--ndw-spacing-md);height:var(--ndw-spacing-md);display:flex;align-items:center;justify-content:center;animation:translateToLeft var(--ndw-animation-speed-fast) ease-out forwards}div.switch .switch-icon ndw-icon{color:var(--ndw-color-white);font-size:var(--ndw-spacing-sm)}div.switch.error{background-color:var(--ndw-color-white)}label.switch-text{margin-top:var(--ndw-spacing-2xs)}:host(.checked) div.switch,:host(.indeterminate) div.switch{background-color:var(--ndw-color-positive-500);border-color:var(--ndw-color-positive-500)}:host(.checked) div.switch .switch-icon,:host(.indeterminate) div.switch .switch-icon{background-color:var(--ndw-color-white);animation:translateToRight var(--ndw-animation-speed-fast) ease-out forwards}:host(.checked) div.switch .switch-icon ndw-icon,:host(.indeterminate) div.switch .switch-icon ndw-icon{color:var(--ndw-color-positive-500)}:host(.checked) div.switch.error,:host(.indeterminate) div.switch.error{background-color:var(--ndw-color-positive-500)}:host(:hover) div{background-color:var(--ndw-color-white)}:host(:hover) div.checkbox{border-color:var(--ndw-color-primary-500)}:host(:hover) div.switch{border-color:var(--ndw-color-grey-500)}:host(:hover) div.switch ndw-icon{color:var(--ndw-color-white)}:host(.checked:hover) div.checkbox,:host(.indeterminate:hover) div.checkbox{background-color:var(--ndw-color-primary-600);border-color:var(--ndw-color-primary-600)}:host(.checked:hover) div.switch,:host(.indeterminate:hover) div.switch{background-color:var(--ndw-color-positive-600);border-color:var(--ndw-color-positive-600)}:host(.checked:hover) div.switch ndw-icon,:host(.indeterminate:hover) div.switch ndw-icon{color:var(--ndw-color-positive-600)}:host(:focus) div.switch{border-color:var(--ndw-color-secondary-500)}:host(.disabled) div.switch{background-color:var(--ndw-color-grey-100);border-color:var(--ndw-color-grey-300)}:host(.disabled) div.switch .switch-icon{background-color:var(--ndw-color-grey-200)}:host(.checked.disabled) div.switch,:host(.indeterminate.disabled) div.switch{background-color:var(--ndw-color-grey-400);border-color:var(--ndw-color-grey-400)}:host(.checked.disabled) div.switch .switch-icon,:host(.indeterminate.disabled) div.switch .switch-icon{background-color:var(--ndw-color-white)}:host(.checked.disabled) div.switch .switch-icon ndw-icon,:host(.indeterminate.disabled) div.switch .switch-icon ndw-icon{background-color:var(--ndw-color-white);color:var(--ndw-color-grey-400)}@keyframes translateToRight{0%{transform:translate(0);background-color:var(--ndw-color-grey-300)}to{transform:translate(20px);background-color:var(--ndw-color-white)}}@keyframes translateToLeft{0%{transform:translate(20px);background-color:var(--ndw-color-white)}to{transform:translate(0);background-color:var(--ndw-color-grey-300)}}\n"] }]
|
|
61
|
-
}] });
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2Zvcm0tZmllbGQvY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2Zvcm0tZmllbGQvY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUFzQjNDLE1BQU0sT0FBTyxpQkFBaUI7SUFwQjlCO1FBcUJTLFlBQU8sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsV0FBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixhQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLFVBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsWUFBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixrQkFBYSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixhQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXhCLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7S0E4Qm5DO0lBNUJRLE9BQU87UUFDWixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ3BCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU0sU0FBUyxDQUFDLEtBQW9CO1FBQ25DLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDN0MsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQWM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVNLGdCQUFnQixDQUFDLEVBQTRCO1FBQ2xELElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsT0FBTztJQUNULENBQUM7OEdBdENVLGlCQUFpQjtrR0FBakIsaUJBQWlCLGluQ0FaakI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsaUJBQWlCO2dCQUM5QixLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsMEJDcEJILG9uQ0E0Q0EsNnlPRC9CWSxhQUFhLHVFQUFFLE9BQU87OzJGQWFyQixpQkFBaUI7a0JBcEI3QixTQUFTO3NDQUNTLHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0osaUJBQWlCLEVBQUUsV0FBVzt3QkFDOUIsa0JBQWtCLEVBQUUsWUFBWTt3QkFDaEMsdUJBQXVCLEVBQUUsaUJBQWlCO3FCQUMzQyxXQUNRLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUN0Qjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLG1CQUFtQjs0QkFDOUIsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0YsWUFDUyxjQUFjLGNBQ1osSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5wdXQsIG1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9pY29uJztcblxuQENvbXBvbmVudCh7XG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5jaGVja2VkXSc6ICdjaGVja2VkKCknLFxuICAgICdbY2xhc3MuZGlzYWJsZWRdJzogJ2Rpc2FibGVkKCknLFxuICAgICdbY2xhc3MuaW5kZXRlcm1pbmF0ZV0nOiAnaW5kZXRlcm1pbmF0ZSgpJyxcbiAgfSxcbiAgaW1wb3J0czogW0ljb25Db21wb25lbnQsIE5nQ2xhc3NdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBDaGVja2JveENvbXBvbmVudCxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG4gIHNlbGVjdG9yOiAnbmR3LWNoZWNrYm94JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc3R5bGVVcmxzOiBbJy4uL2NoZWNrYWJsZS1pbnB1dC5zY3NzJywgJy4vY2hlY2tib3guY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrYm94LmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgQ2hlY2tib3hDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIHB1YmxpYyBjaGVja2VkID0gbW9kZWwoZmFsc2UpO1xuICBwdWJsaWMgc3dpdGNoID0gaW5wdXQoZmFsc2UpO1xuICBwdWJsaWMgZGlzYWJsZWQgPSBpbnB1dChmYWxzZSk7XG4gIHB1YmxpYyBlcnJvciA9IGlucHV0KGZhbHNlKTtcbiAgcHVibGljIHN1Y2Nlc3MgPSBpbnB1dChmYWxzZSk7XG4gIHB1YmxpYyBpbmRldGVybWluYXRlID0gaW5wdXQoZmFsc2UpO1xuICBwdWJsaWMgcmVxdWlyZWQgPSBpbnB1dChmYWxzZSk7XG5cbiAgcHVibGljIHV1aWQgPSBjcnlwdG8ucmFuZG9tVVVJRCgpO1xuXG4gIHB1YmxpYyBvbkNsaWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNoZWNrZWQuc2V0KCF0aGlzLmNoZWNrZWQoKSk7XG4gIH1cblxuICBwdWJsaWMgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmtleSAhPT0gJ0VudGVyJyB8fCB0aGlzLmRpc2FibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNoZWNrZWQuc2V0KCF0aGlzLmNoZWNrZWQoKSk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5jaGVja2VkLnNldCh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBib29sZWFuKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5jaGVja2VkLnN1YnNjcmliZShmbik7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoKTogdm9pZCB7XG4gICAgLy8gbm9vcFxuICB9XG59XG4iLCI8aW5wdXRcbiAgdHlwZT1cImNoZWNrYm94XCJcbiAgW2lkXT1cIidjaGVja2JveC0nICsgdXVpZFwiXG4gIFtjaGVja2VkXT1cImNoZWNrZWQoKVwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgW3JlcXVpcmVkXT1cInJlcXVpcmVkKClcIlxuICBhcmlhLWhpZGRlbj1cInRydWVcIlxuLz5cbjxkaXZcbiAgW25nQ2xhc3NdPVwieyBlcnJvcjogZXJyb3IoKSwgc3VjY2Vzczogc3VjY2VzcygpLCBjaGVja2JveDogIXN3aXRjaCgpLCBzd2l0Y2g6IHN3aXRjaCgpIH1cIlxuICByb2xlPVwiY2hlY2tib3hcIlxuICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwiaW5kZXRlcm1pbmF0ZSgpID8gJ21peGVkJyA6IGNoZWNrZWQoKVwiXG4gIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInY2hlY2tib3gtbGFiZWwtJyArIHV1aWRcIlxuICAoY2xpY2spPVwib25DbGljaygpXCJcbiAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICBbdGFiaW5kZXhdPVwiZGlzYWJsZWQoKSA/IC0xIDogMFwiXG4+XG4gIEBpZiAoIXN3aXRjaCgpKSB7XG4gICAgQGlmIChjaGVja2VkKCkpIHtcbiAgICAgIDxuZHctaWNvbj5jaGVjazwvbmR3LWljb24+XG4gICAgfSBAZWxzZSBpZiAoaW5kZXRlcm1pbmF0ZSgpKSB7XG4gICAgICA8bmR3LWljb24+cmVtb3ZlPC9uZHctaWNvbj5cbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIDxzcGFuIGNsYXNzPVwic3dpdGNoLWljb25cIj5cbiAgICAgIEBpZiAoY2hlY2tlZCgpKSB7XG4gICAgICAgIDxuZHctaWNvbj5jaGVjazwvbmR3LWljb24+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPG5kdy1pY29uPmNsb3NlPC9uZHctaWNvbj5cbiAgICAgIH1cbiAgICA8L3NwYW4+XG4gIH1cbjwvZGl2PlxuPGxhYmVsXG4gIGlkPVwiY2hlY2tib3gtbGFiZWwte3sgdXVpZCB9fVwiXG4gIHRhYmluZGV4PVwiLTFcIlxuICBbZm9yXT1cIidjaGVja2JveC0nICsgdXVpZFwiXG4gIFtuZ0NsYXNzXT1cInsgJ3N3aXRjaC10ZXh0Jzogc3dpdGNoKCkgfVwiXG4gIChjbGljayk9XCJvbkNsaWNrKClcIlxuICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4+XG4gIDxuZy1jb250ZW50IC8+XG48L2xhYmVsPlxuIl19
|