@energycap/components 0.44.8 → 0.44.9-Angular19Upgrade.20260217-1620
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/fesm2022/energycap-components.mjs +379 -354
- package/fesm2022/energycap-components.mjs.map +1 -1
- package/lib/controls/button/copy-button-base.directive.d.ts +1 -1
- package/lib/controls/date-input/date-input.component.d.ts +1 -1
- package/lib/controls/form-control-base.d.ts +1 -1
- package/lib/core/date-time-helper.d.ts +2 -2
- package/lib/display/hierarchy/hierarchy-base.d.ts +1 -1
- package/lib/display/hierarchy/hierarchy-mocks.spec.d.ts +1 -1
- package/lib/display/resizable/resizable-base.d.ts +1 -1
- package/lib/shared/display/pipes/date-display.pipe.d.ts +1 -1
- package/lib/shared/page/page-base/page-base.component.d.ts +1 -1
- package/lib/shared/testing/public-mocks.spec.d.ts +1 -1
- package/lib/shared/wizard/wizard-base/wizard-base.component.d.ts +1 -1
- package/package.json +1 -3
- package/schematics/utilities/typescript.js +3 -4
- package/schematics/utilities/typescript.js.map +1 -1
- package/schematics/utilities/workspace.d.ts +0 -8
- package/schematics/utilities/workspace.js +48 -71
- package/schematics/utilities/workspace.js.map +1 -1
- package/esm2022/energycap-components.mjs +0 -5
- package/esm2022/lib/components.module.mjs +0 -425
- package/esm2022/lib/controls/banner/banner.component.mjs +0 -112
- package/esm2022/lib/controls/button/button.component.mjs +0 -114
- package/esm2022/lib/controls/button/copy-button-base.directive.mjs +0 -67
- package/esm2022/lib/controls/button/copy-button.directive.mjs +0 -28
- package/esm2022/lib/controls/button/copy-table-button.directive.mjs +0 -43
- package/esm2022/lib/controls/calendar/calendar-item.component.mjs +0 -91
- package/esm2022/lib/controls/calendar/calendar.component.mjs +0 -251
- package/esm2022/lib/controls/calendar/calendar.types.mjs +0 -2
- package/esm2022/lib/controls/checkbox/checkbox.component.mjs +0 -140
- package/esm2022/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs +0 -38
- package/esm2022/lib/controls/combobox/combobox.component.mjs +0 -879
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.mjs +0 -57
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.mjs +0 -62
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.mjs +0 -100
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.mjs +0 -101
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.mjs +0 -76
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.mjs +0 -79
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.mjs +0 -210
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.mjs +0 -81
- package/esm2022/lib/controls/date-input/date-input.component.mjs +0 -466
- package/esm2022/lib/controls/date-input/date-input.types.mjs +0 -44
- package/esm2022/lib/controls/dropdown/dropdown.component.mjs +0 -243
- package/esm2022/lib/controls/file-upload/file-upload.component.mjs +0 -261
- package/esm2022/lib/controls/form-control/form-control.component.mjs +0 -110
- package/esm2022/lib/controls/form-control-base.mjs +0 -151
- package/esm2022/lib/controls/form-control-label/form-control-label.component.mjs +0 -136
- package/esm2022/lib/controls/form-group/form-group.component.mjs +0 -261
- package/esm2022/lib/controls/help-popover/help-popover.component.mjs +0 -31
- package/esm2022/lib/controls/item-picker/item-picker.component.mjs +0 -329
- package/esm2022/lib/controls/link-button/link-button.component.mjs +0 -11
- package/esm2022/lib/controls/menu/menu.component.mjs +0 -485
- package/esm2022/lib/controls/navigation/link-item.mjs +0 -2
- package/esm2022/lib/controls/navigation/nav-group.mjs +0 -39
- package/esm2022/lib/controls/navigation/nav-item-active.directive.mjs +0 -92
- package/esm2022/lib/controls/navigation/nav-item.mjs +0 -2
- package/esm2022/lib/controls/numericbox/numericbox.component.mjs +0 -372
- package/esm2022/lib/controls/popover/popover.component.mjs +0 -117
- package/esm2022/lib/controls/radio-button/radio-button-option.mjs +0 -3
- package/esm2022/lib/controls/radio-button/radio-button.component.mjs +0 -82
- package/esm2022/lib/controls/select/select.component.mjs +0 -88
- package/esm2022/lib/controls/tabs/tabs.component.mjs +0 -47
- package/esm2022/lib/controls/textbox/textbox.component.mjs +0 -155
- package/esm2022/lib/core/cache.service.mjs +0 -105
- package/esm2022/lib/core/custom-validators.mjs +0 -29
- package/esm2022/lib/core/date-time-helper.mjs +0 -228
- package/esm2022/lib/core/error.service.mjs +0 -61
- package/esm2022/lib/core/router-helper.service.mjs +0 -111
- package/esm2022/lib/core/scroll.service.mjs +0 -89
- package/esm2022/lib/core/telemetry-tracker.service.mjs +0 -16
- package/esm2022/lib/core/telemetry.service.mjs +0 -38
- package/esm2022/lib/core/validation-message.service.mjs +0 -185
- package/esm2022/lib/core/validation-patterns.mjs +0 -31
- package/esm2022/lib/core/window.service.mjs +0 -186
- package/esm2022/lib/display/app-bar/app-bar.component.mjs +0 -49
- package/esm2022/lib/display/avatar/avatar.component.mjs +0 -67
- package/esm2022/lib/display/avatar/avatar.service.mjs +0 -64
- package/esm2022/lib/display/confirm/confirm.component.mjs +0 -168
- package/esm2022/lib/display/dialog/dialog-content.mjs +0 -2
- package/esm2022/lib/display/dialog/dialog-group/dialog-group.component.mjs +0 -63
- package/esm2022/lib/display/dialog/dialog-types.mjs +0 -77
- package/esm2022/lib/display/dialog/dialog.component.mjs +0 -287
- package/esm2022/lib/display/dialog/dialog.service.mjs +0 -71
- package/esm2022/lib/display/help/help-types.mjs +0 -2
- package/esm2022/lib/display/hierarchy/hierarchy-base.mjs +0 -111
- package/esm2022/lib/display/hierarchy/hierarchy-mocks.spec.mjs +0 -54
- package/esm2022/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +0 -65
- package/esm2022/lib/display/item-display/item-display.component.mjs +0 -83
- package/esm2022/lib/display/json-display/json-display.component.mjs +0 -47
- package/esm2022/lib/display/resizable/resizable-base.mjs +0 -120
- package/esm2022/lib/display/resizable/resizable.component.mjs +0 -57
- package/esm2022/lib/display/spinner/spinner.component.mjs +0 -12
- package/esm2022/lib/display/splash/splash.component.mjs +0 -61
- package/esm2022/lib/display/splash/splash.service.mjs +0 -35
- package/esm2022/lib/display/table/resizable-column.component.mjs +0 -20
- package/esm2022/lib/display/table/resizable-table.directive.mjs +0 -227
- package/esm2022/lib/display/table/searchable-table.component.mjs +0 -344
- package/esm2022/lib/display/table/table-detail-row.component.mjs +0 -28
- package/esm2022/lib/display/table/table-locked-column.component.mjs +0 -58
- package/esm2022/lib/display/table/table-master-header-row.component.mjs +0 -14
- package/esm2022/lib/display/table/table-master-row.component.mjs +0 -163
- package/esm2022/lib/display/table/table-pagination.component.mjs +0 -155
- package/esm2022/lib/display/table/table-selectable-row.component.mjs +0 -235
- package/esm2022/lib/display/table/table.component.mjs +0 -257
- package/esm2022/lib/display/tags/tag.mjs +0 -18
- package/esm2022/lib/display/tags/tags.component.mjs +0 -82
- package/esm2022/lib/display/toast/toast/toast.component.mjs +0 -77
- package/esm2022/lib/display/toast/toast-types.mjs +0 -8
- package/esm2022/lib/display/toast/toast.service.mjs +0 -35
- package/esm2022/lib/display/toast/toaster/toaster.component.mjs +0 -114
- package/esm2022/lib/display/tooltip/tooltip.component.mjs +0 -28
- package/esm2022/lib/display/tooltip/tooltip.service.mjs +0 -78
- package/esm2022/lib/display/tooltip-directive/tooltip.directive.mjs +0 -173
- package/esm2022/lib/display/tree/tree.component.mjs +0 -139
- package/esm2022/lib/display/view-overlay/view-overlay.component.mjs +0 -58
- package/esm2022/lib/shared/directives/click-area-for/click-area-for.directive.mjs +0 -32
- package/esm2022/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +0 -111
- package/esm2022/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.mjs +0 -103
- package/esm2022/lib/shared/directives/popup/popup-container.directive.mjs +0 -166
- package/esm2022/lib/shared/display/pipes/date-display-2.pipe.mjs +0 -39
- package/esm2022/lib/shared/display/pipes/date-display.pipe.mjs +0 -51
- package/esm2022/lib/shared/display/pipes/highlight-text.pipe.mjs +0 -30
- package/esm2022/lib/shared/display/pipes/relative-date.pipe.mjs +0 -62
- package/esm2022/lib/shared/display/pipes/row-count.pipe.mjs +0 -48
- package/esm2022/lib/shared/display/pipes/time-display.pipe.mjs +0 -41
- package/esm2022/lib/shared/display.mjs +0 -6
- package/esm2022/lib/shared/form-group.helper.mjs +0 -67
- package/esm2022/lib/shared/json-helper.mjs +0 -19
- package/esm2022/lib/shared/lodash-helper.mjs +0 -52
- package/esm2022/lib/shared/page/page-base/page-base.component.mjs +0 -387
- package/esm2022/lib/shared/page/page-statuses.mjs +0 -23
- package/esm2022/lib/shared/page/page-title/page-title.component.mjs +0 -23
- package/esm2022/lib/shared/page/page-view/page-view.component.mjs +0 -147
- package/esm2022/lib/shared/testing/copy-button-base-test-injector-factory.spec.mjs +0 -17
- package/esm2022/lib/shared/testing/hierarchy-base-test-injector-factory.spec.mjs +0 -17
- package/esm2022/lib/shared/testing/page-base-component-test-helper.spec.mjs +0 -38
- package/esm2022/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +0 -98
- package/esm2022/lib/shared/testing/public-mocks.spec.mjs +0 -148
- package/esm2022/lib/shared/testing/spy-factory.spec.mjs +0 -40
- package/esm2022/lib/shared/testing/translation-mocks.spec.mjs +0 -57
- package/esm2022/lib/shared/user-preference.service.mjs +0 -17
- package/esm2022/lib/shared/wizard/wizard-base/wizard-base.component.mjs +0 -246
- package/esm2022/lib/shared/wizard/wizard-buttons/wizard-buttons.component.mjs +0 -68
- package/esm2022/lib/shared/wizard/wizard-progress/wizard-progress.component.mjs +0 -18
- package/esm2022/public-api.mjs +0 -115
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { Injectable } from "@angular/core";
|
|
2
|
-
import { DaySelectionStrategy } from "./date-input-selection-strategies/day-selection-strategy";
|
|
3
|
-
import { Last28DaysSelectionStrategy } from "./date-input-selection-strategies/last-28-days-selection-strategy";
|
|
4
|
-
import { Last7DaysSelectionStrategy } from "./date-input-selection-strategies/last-7-days-selection-strategy";
|
|
5
|
-
import { MonthSelectionStrategy } from "./date-input-selection-strategies/month-selection-strategy";
|
|
6
|
-
import { QuarterSelectionStrategy } from "./date-input-selection-strategies/quarter-selection-strategy";
|
|
7
|
-
import { RangeSelectionStrategy } from "./date-input-selection-strategies/range-selection-strategy";
|
|
8
|
-
import { YearSelectionStrategy } from "./date-input-selection-strategies/year-selection-strategy";
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "../../shared/display/pipes/date-display.pipe";
|
|
11
|
-
export var DateInput;
|
|
12
|
-
(function (DateInput) {
|
|
13
|
-
function isSelectionSingleDate(selection) {
|
|
14
|
-
return selection instanceof Date || typeof selection === 'string';
|
|
15
|
-
}
|
|
16
|
-
DateInput.isSelectionSingleDate = isSelectionSingleDate;
|
|
17
|
-
function isSelectionRange(selection) {
|
|
18
|
-
return !!selection && !isSelectionSingleDate(selection);
|
|
19
|
-
}
|
|
20
|
-
DateInput.isSelectionRange = isSelectionRange;
|
|
21
|
-
class SelectionStrategies {
|
|
22
|
-
constructor(dateDisplayPipe) {
|
|
23
|
-
this.dateDisplayPipe = dateDisplayPipe;
|
|
24
|
-
this._range = new RangeSelectionStrategy();
|
|
25
|
-
this._day = new DaySelectionStrategy(this.dateDisplayPipe);
|
|
26
|
-
this._last7Days = new Last7DaysSelectionStrategy(this._range);
|
|
27
|
-
this._last28Days = new Last28DaysSelectionStrategy(this._range);
|
|
28
|
-
this._month = new MonthSelectionStrategy();
|
|
29
|
-
this._quarter = new QuarterSelectionStrategy();
|
|
30
|
-
this._year = new YearSelectionStrategy();
|
|
31
|
-
}
|
|
32
|
-
get range() { return this._range; }
|
|
33
|
-
get day() { return this._day; }
|
|
34
|
-
get last7Days() { return this._last7Days; }
|
|
35
|
-
get last28Days() { return this._last28Days; }
|
|
36
|
-
get month() { return this._month; }
|
|
37
|
-
get quarter() { return this._quarter; }
|
|
38
|
-
get year() { return this._year; }
|
|
39
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SelectionStrategies, deps: [{ token: i1.DateDisplayPipe }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
40
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SelectionStrategies }); }
|
|
41
|
-
}
|
|
42
|
-
DateInput.SelectionStrategies = SelectionStrategies;
|
|
43
|
-
})(DateInput || (DateInput = {}));
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9kYXRlLWlucHV0L2RhdGUtaW5wdXQudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkzQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUNoRyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQztBQUNoSCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUM5RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUN4RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUNwRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQzs7O0FBRWxHLE1BQU0sS0FBVyxTQUFTLENBa0V6QjtBQWxFRCxXQUFpQixTQUFTO0lBY3hCLFNBQWdCLHFCQUFxQixDQUFDLFNBQTRCO1FBQ2hFLE9BQU8sU0FBUyxZQUFZLElBQUksSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLENBQUM7SUFDcEUsQ0FBQztJQUZlLCtCQUFxQix3QkFFcEMsQ0FBQTtJQUVELFNBQWdCLGdCQUFnQixDQUFDLFNBQTRCO1FBQzNELE9BQU8sQ0FBQyxDQUFDLFNBQVMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFGZSwwQkFBZ0IsbUJBRS9CLENBQUE7SUFtQkQsTUFDYSxtQkFBbUI7UUFDOUIsWUFDVSxlQUFnQztZQUFoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7WUFHbEMsV0FBTSxHQUFHLElBQUksc0JBQXNCLEVBQUUsQ0FBQztZQUd0QyxTQUFJLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFHdEQsZUFBVSxHQUFHLElBQUksMEJBQTBCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBR3pELGdCQUFXLEdBQUcsSUFBSSwyQkFBMkIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFHM0QsV0FBTSxHQUFHLElBQUksc0JBQXNCLEVBQUUsQ0FBQztZQUd0QyxhQUFRLEdBQUcsSUFBSSx3QkFBd0IsRUFBRSxDQUFDO1lBRzNDLFVBQUssR0FBRyxJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFwQnZDLENBQUM7UUFHTCxJQUFXLEtBQUssS0FBSyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBRzFDLElBQVcsR0FBRyxLQUFLLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFHdEMsSUFBVyxTQUFTLEtBQUssT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUdsRCxJQUFXLFVBQVUsS0FBSyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBR3BELElBQVcsS0FBSyxLQUFLLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFHMUMsSUFBVyxPQUFPLEtBQUssT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUc5QyxJQUFXLElBQUksS0FBSyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO21IQXhCN0IsbUJBQW1CO3VIQUFuQixtQkFBbUI7O0lBQW5CLDZCQUFtQixzQkF5Qi9CLENBQUE7QUFDSCxDQUFDLEVBbEVnQixTQUFTLEtBQVQsU0FBUyxRQWtFekIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IERhdGVEaXNwbGF5UGlwZSB9IGZyb20gXCIuLi8uLi9zaGFyZWQvZGlzcGxheS9waXBlcy9kYXRlLWRpc3BsYXkucGlwZVwiO1xuaW1wb3J0IHsgRGF0ZUlucHV0U2VsZWN0aW9uU3RyYXRlZ3lCYXNlIH0gZnJvbSBcIi4vZGF0ZS1pbnB1dC1zZWxlY3Rpb24tc3RyYXRlZ2llcy9kYXRlLWlucHV0LXNlbGVjdGlvbi1zdHJhdGVneS1iYXNlXCI7XG5pbXBvcnQgeyBEYXlTZWxlY3Rpb25TdHJhdGVneSB9IGZyb20gXCIuL2RhdGUtaW5wdXQtc2VsZWN0aW9uLXN0cmF0ZWdpZXMvZGF5LXNlbGVjdGlvbi1zdHJhdGVneVwiO1xuaW1wb3J0IHsgTGFzdDI4RGF5c1NlbGVjdGlvblN0cmF0ZWd5IH0gZnJvbSBcIi4vZGF0ZS1pbnB1dC1zZWxlY3Rpb24tc3RyYXRlZ2llcy9sYXN0LTI4LWRheXMtc2VsZWN0aW9uLXN0cmF0ZWd5XCI7XG5pbXBvcnQgeyBMYXN0N0RheXNTZWxlY3Rpb25TdHJhdGVneSB9IGZyb20gXCIuL2RhdGUtaW5wdXQtc2VsZWN0aW9uLXN0cmF0ZWdpZXMvbGFzdC03LWRheXMtc2VsZWN0aW9uLXN0cmF0ZWd5XCI7XG5pbXBvcnQgeyBNb250aFNlbGVjdGlvblN0cmF0ZWd5IH0gZnJvbSBcIi4vZGF0ZS1pbnB1dC1zZWxlY3Rpb24tc3RyYXRlZ2llcy9tb250aC1zZWxlY3Rpb24tc3RyYXRlZ3lcIjtcbmltcG9ydCB7IFF1YXJ0ZXJTZWxlY3Rpb25TdHJhdGVneSB9IGZyb20gXCIuL2RhdGUtaW5wdXQtc2VsZWN0aW9uLXN0cmF0ZWdpZXMvcXVhcnRlci1zZWxlY3Rpb24tc3RyYXRlZ3lcIjtcbmltcG9ydCB7IFJhbmdlU2VsZWN0aW9uU3RyYXRlZ3kgfSBmcm9tIFwiLi9kYXRlLWlucHV0LXNlbGVjdGlvbi1zdHJhdGVnaWVzL3JhbmdlLXNlbGVjdGlvbi1zdHJhdGVneVwiO1xuaW1wb3J0IHsgWWVhclNlbGVjdGlvblN0cmF0ZWd5IH0gZnJvbSBcIi4vZGF0ZS1pbnB1dC1zZWxlY3Rpb24tc3RyYXRlZ2llcy95ZWFyLXNlbGVjdGlvbi1zdHJhdGVneVwiO1xuXG5leHBvcnQgbmFtZXNwYWNlIERhdGVJbnB1dCB7XG4gIGV4cG9ydCB0eXBlIEZvcm1Nb2RlbCA9IEZvcm1Db250cm9sPFNlbGVjdGlvbiB8IG51bGw+O1xuXG4gIGV4cG9ydCB0eXBlIFRleHRib3hHcm91cCA9IEZvcm1Hcm91cDx7XG4gICAgdGV4dGJveDogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gICAgdGV4dGJveDI6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICB9PjtcblxuICBleHBvcnQgdHlwZSBSYW5nZSA9IHsgc3RhcnQ6IERhdGUgfCBudWxsOyBlbmQ6IERhdGUgfCBudWxsIH07XG5cbiAgZXhwb3J0IHR5cGUgU2VsZWN0aW9uID0gRGF0ZSB8IFJhbmdlO1xuXG4gIGV4cG9ydCB0eXBlIFNlbGVjdGlvbk1vZGUgPSAnZGF5JyB8ICdsYXN0N0RheXMnIHwgJ2xhc3QyOERheXMnIHwgJ21vbnRoJyB8ICdxdWFydGVyJyB8ICd5ZWFyJyB8ICdyYW5nZSc7XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzU2VsZWN0aW9uU2luZ2xlRGF0ZShzZWxlY3Rpb24/OiBTZWxlY3Rpb24gfCBudWxsKTogc2VsZWN0aW9uIGlzIERhdGUge1xuICAgIHJldHVybiBzZWxlY3Rpb24gaW5zdGFuY2VvZiBEYXRlIHx8IHR5cGVvZiBzZWxlY3Rpb24gPT09ICdzdHJpbmcnO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzU2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uPzogU2VsZWN0aW9uIHwgbnVsbCk6IHNlbGVjdGlvbiBpcyBSYW5nZSB7XG4gICAgcmV0dXJuICEhc2VsZWN0aW9uICYmICFpc1NlbGVjdGlvblNpbmdsZURhdGUoc2VsZWN0aW9uKTtcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIFBhcnNpbmdPcHRpb25zID0ge1xuICAgIC8qKlxuICAgICAqIFdoZW4gY29uZmlndXJlZCwgdGhlIHBhcnNlciB3aWxsIHNoaWZ0IHRoZSBwYXJzZWQgZGF0ZSB0byB0aGUgY3VycmVudCB5ZWFyIGlmIHRoZSBkYXRlIGlzIGJlbG93IHRoaXMgZGF0ZS5cbiAgICAgKiBUaGlzIGlzIHVzZWQgdG8gcHJldmVudCB0aGUgY2FsZW5kYXJzIGZyb20gc2hvd2luZyB1bmhlbHBmdWwgZGF0ZXMgaW4gdGhlIGRpc3RhbnQgcGFzdCBiZWZvcmUgdGhlIHVzZXIgZmluaXNoZXMgdHlwaW5nIGluIHRoZSBkYXRlLlxuICAgICAqL1xuICAgIHNoaWZ0VG9DdXJyZW50WWVhcklmQmVsb3c/OiBEYXRlO1xuICAgIC8qKlxuICAgICAqIFdoZW4gdHJ1ZSwgdGhlIHJhbmdlIHNlbGVjdGlvbiBtb2RlcyAocmFuZ2UsIGxhc3Q3RGF5cywgbGFzdDI4RGF5cykgd2lsbCBrZXkgb2ZmIG9mIHRoZSBlbmQgZGF0ZSBzdHJpbmcgdG8gZGV0ZXJtaW5lIHRoZSBzZWxlY3Rpb24gcmFuZ2UuXG4gICAgICovXG4gICAgcGFyc2VGcm9tRW5kPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBTdG9wcyB0aGUgcGFyc2VyIGZyb20gYXV0b21hdGljYWxseSBjb21wbGV0aW5nIHRoZSBkYXRlIHJhbmdlIHdoZW4gdGhlcmUgaXMgb25seSBhIHN0YXJ0IG9yIGFuIGVuZCBkYXRlLlxuICAgICAqIE9ubHkgYXBwbGljYWJsZSB0byB0aGUgZml4ZWQgbGVuZ3RoIHJhbmdlIHNlbGVjdGlvbiBtb2RlcyAobGFzdDdEYXlzLCBsYXN0MjhEYXlzKS5cbiAgICAgKi9cbiAgICBwcmV2ZW50QXV0b0NvbXBsZXRlPzogYm9vbGVhbjtcbiAgfTtcblxuICBASW5qZWN0YWJsZSgpXG4gIGV4cG9ydCBjbGFzcyBTZWxlY3Rpb25TdHJhdGVnaWVzIGltcGxlbWVudHMgUmVjb3JkPFNlbGVjdGlvbk1vZGUsIERhdGVJbnB1dFNlbGVjdGlvblN0cmF0ZWd5QmFzZT4ge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSBkYXRlRGlzcGxheVBpcGU6IERhdGVEaXNwbGF5UGlwZVxuICAgICkgeyB9XG4gICAgXG4gICAgcHJpdmF0ZSBfcmFuZ2UgPSBuZXcgUmFuZ2VTZWxlY3Rpb25TdHJhdGVneSgpO1xuICAgIHB1YmxpYyBnZXQgcmFuZ2UoKSB7IHJldHVybiB0aGlzLl9yYW5nZTsgfVxuICAgIFxuICAgIHByaXZhdGUgX2RheSA9IG5ldyBEYXlTZWxlY3Rpb25TdHJhdGVneSh0aGlzLmRhdGVEaXNwbGF5UGlwZSk7XG4gICAgcHVibGljIGdldCBkYXkoKSB7IHJldHVybiB0aGlzLl9kYXk7IH1cbiAgXG4gICAgcHJpdmF0ZSBfbGFzdDdEYXlzID0gbmV3IExhc3Q3RGF5c1NlbGVjdGlvblN0cmF0ZWd5KHRoaXMuX3JhbmdlKTtcbiAgICBwdWJsaWMgZ2V0IGxhc3Q3RGF5cygpIHsgcmV0dXJuIHRoaXMuX2xhc3Q3RGF5czsgfVxuICBcbiAgICBwcml2YXRlIF9sYXN0MjhEYXlzID0gbmV3IExhc3QyOERheXNTZWxlY3Rpb25TdHJhdGVneSh0aGlzLl9yYW5nZSk7XG4gICAgcHVibGljIGdldCBsYXN0MjhEYXlzKCkgeyByZXR1cm4gdGhpcy5fbGFzdDI4RGF5czsgfVxuICBcbiAgICBwcml2YXRlIF9tb250aCA9IG5ldyBNb250aFNlbGVjdGlvblN0cmF0ZWd5KCk7XG4gICAgcHVibGljIGdldCBtb250aCgpIHsgcmV0dXJuIHRoaXMuX21vbnRoOyB9XG4gIFxuICAgIHByaXZhdGUgX3F1YXJ0ZXIgPSBuZXcgUXVhcnRlclNlbGVjdGlvblN0cmF0ZWd5KCk7XG4gICAgcHVibGljIGdldCBxdWFydGVyKCkgeyByZXR1cm4gdGhpcy5fcXVhcnRlcjsgfVxuICBcbiAgICBwdWJsaWMgX3llYXIgPSBuZXcgWWVhclNlbGVjdGlvblN0cmF0ZWd5KCk7XG4gICAgcHVibGljIGdldCB5ZWFyKCkgeyByZXR1cm4gdGhpcy5feWVhcjsgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,243 +0,0 @@
|
|
|
1
|
-
import { Component, ElementRef, EventEmitter, HostBinding, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
3
|
-
import { takeUntil } from 'rxjs/operators';
|
|
4
|
-
import { PopupContainerDirective } from '../../shared/directives/popup/popup-container.directive';
|
|
5
|
-
import { MenuComponent } from '../menu/menu.component';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@angular/common";
|
|
8
|
-
import * as i2 from "../button/button.component";
|
|
9
|
-
import * as i3 from "../../display/view-overlay/view-overlay.component";
|
|
10
|
-
import * as i4 from "../menu/menu.component";
|
|
11
|
-
import * as i5 from "../../shared/directives/popup/popup-container.directive";
|
|
12
|
-
export class DropdownComponent {
|
|
13
|
-
constructor() {
|
|
14
|
-
/**
|
|
15
|
-
* Automatically focus the dropdown toggle button
|
|
16
|
-
*/
|
|
17
|
-
this.autofocus = false;
|
|
18
|
-
/**
|
|
19
|
-
* Controls the display status overlay for the menu
|
|
20
|
-
*/
|
|
21
|
-
this.status = { status: 'hasData', message: '' };
|
|
22
|
-
/**
|
|
23
|
-
* Disable the button to prevent the menu from being opened
|
|
24
|
-
*/
|
|
25
|
-
this.disabled = false;
|
|
26
|
-
/**
|
|
27
|
-
* The button type, defaults to icon
|
|
28
|
-
*/
|
|
29
|
-
this.buttonType = 'icon';
|
|
30
|
-
/**
|
|
31
|
-
* Adds a tooltip to the dropdown toggle button. Should only be used when
|
|
32
|
-
* the toggle buttonType is 'icon'
|
|
33
|
-
*/
|
|
34
|
-
this.buttonTitle = '';
|
|
35
|
-
/**
|
|
36
|
-
* Display a caret with the button label or icon
|
|
37
|
-
*/
|
|
38
|
-
this.showArrow = true;
|
|
39
|
-
/**
|
|
40
|
-
* Items to display in the menu
|
|
41
|
-
*/
|
|
42
|
-
this.items = [];
|
|
43
|
-
/**
|
|
44
|
-
* The menu item template
|
|
45
|
-
*/
|
|
46
|
-
this.menuTemplateType = 'label';
|
|
47
|
-
/**
|
|
48
|
-
* Fix position the menu instead of absolute. Useful when the dropdown is in a
|
|
49
|
-
* dialog
|
|
50
|
-
*/
|
|
51
|
-
this.popupFixed = false;
|
|
52
|
-
/**
|
|
53
|
-
* Used to set the menu buttons state to pending
|
|
54
|
-
*/
|
|
55
|
-
this.pending = false;
|
|
56
|
-
/**
|
|
57
|
-
* Emits an event when a menu item is selected
|
|
58
|
-
*/
|
|
59
|
-
this.itemSelected = new EventEmitter();
|
|
60
|
-
/**
|
|
61
|
-
* Emits an event when the popup menu opens
|
|
62
|
-
*/
|
|
63
|
-
this.popupOpened = new EventEmitter();
|
|
64
|
-
/**
|
|
65
|
-
* The status of the menu
|
|
66
|
-
*/
|
|
67
|
-
this.menuStatus = 'hidden';
|
|
68
|
-
/** Item to highlight when the menu is opened, used when the user
|
|
69
|
-
* opens the menu via the keyboard
|
|
70
|
-
*/
|
|
71
|
-
this.highlightedItem = null;
|
|
72
|
-
/** Used to know if the menu was toggled via the keyboard */
|
|
73
|
-
this.isKeyboardEvent = false;
|
|
74
|
-
/**
|
|
75
|
-
* Unsubscribe any active subscriptions when the component is destroyed
|
|
76
|
-
*/
|
|
77
|
-
this.componentDestroyed = new Subject();
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Subscribe to changes to the menu status
|
|
81
|
-
*/
|
|
82
|
-
ngOnInit() {
|
|
83
|
-
this.popup.popperStatusChange
|
|
84
|
-
.pipe(takeUntil(this.componentDestroyed))
|
|
85
|
-
.subscribe((event) => {
|
|
86
|
-
this.menuStatus = event;
|
|
87
|
-
if (this.menuStatus === 'visible') {
|
|
88
|
-
this.popupOpened.emit();
|
|
89
|
-
}
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Set up the popup
|
|
94
|
-
*/
|
|
95
|
-
ngAfterViewInit() {
|
|
96
|
-
let popperOptions = {
|
|
97
|
-
modifiers: {
|
|
98
|
-
preventOverflow: {
|
|
99
|
-
boundariesElement: 'viewport'
|
|
100
|
-
}
|
|
101
|
-
},
|
|
102
|
-
placement: 'bottom-end'
|
|
103
|
-
};
|
|
104
|
-
if (this.menuPosition === 'left') {
|
|
105
|
-
popperOptions.placement = 'bottom-start';
|
|
106
|
-
}
|
|
107
|
-
if (this.popupFixed) {
|
|
108
|
-
popperOptions.onCreate = () => {
|
|
109
|
-
this.popup.fixPosition();
|
|
110
|
-
};
|
|
111
|
-
popperOptions.onUpdate = () => {
|
|
112
|
-
// Hide the popup when the dropdown changes position due to window resize
|
|
113
|
-
// or container scrolling
|
|
114
|
-
this.popup.hide();
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
this.popup.popperOptions = popperOptions;
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Unsubscribe to any active subscriptions
|
|
121
|
-
*/
|
|
122
|
-
ngOnDestroy() {
|
|
123
|
-
this.componentDestroyed.next();
|
|
124
|
-
this.componentDestroyed.unsubscribe();
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Open and close the menu
|
|
128
|
-
*/
|
|
129
|
-
toggleMenu(event) {
|
|
130
|
-
if (event) {
|
|
131
|
-
event.stopPropagation();
|
|
132
|
-
}
|
|
133
|
-
if (!this.disabled) {
|
|
134
|
-
if (this.menuStatus === 'hidden') {
|
|
135
|
-
if (this.isKeyboardEvent && this.items.length) {
|
|
136
|
-
// Setup the first item in the list to highlight when opening the
|
|
137
|
-
// menu via the keyboard, ignoring headings
|
|
138
|
-
this.highlightedItem = this.items.find(item => item.display !== 'heading') || null;
|
|
139
|
-
}
|
|
140
|
-
this.popup.show();
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
143
|
-
this.popup.hide();
|
|
144
|
-
// Reset the highlighted item and our keyboard flag
|
|
145
|
-
// when we close the popup
|
|
146
|
-
this.highlightedItem = null;
|
|
147
|
-
this.isKeyboardEvent = false;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* Emit the selected item when it changes and close the menu
|
|
153
|
-
*/
|
|
154
|
-
selectedChanged(item) {
|
|
155
|
-
this.itemSelected.emit(item);
|
|
156
|
-
this.toggleMenu();
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* Closes the menu if the tab key is pressed
|
|
160
|
-
*/
|
|
161
|
-
keyNavigate(event) {
|
|
162
|
-
switch (event.key) {
|
|
163
|
-
case 'Enter':
|
|
164
|
-
this.isKeyboardEvent = true;
|
|
165
|
-
break;
|
|
166
|
-
case 'Escape':
|
|
167
|
-
case 'Tab':
|
|
168
|
-
if (this.menuStatus === 'visible') {
|
|
169
|
-
this.toggleMenu(event);
|
|
170
|
-
}
|
|
171
|
-
break;
|
|
172
|
-
default:
|
|
173
|
-
return;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
177
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DropdownComponent, selector: "ec-dropdown", inputs: { id: "id", autofocus: "autofocus", status: "status", disabled: "disabled", label: "label", icon: "icon", buttonType: "buttonType", buttonAlignment: "buttonAlignment", buttonTitle: "buttonTitle", tabindex: "tabindex", showArrow: "showArrow", items: "items", menuTemplateType: "menuTemplateType", menuTitle: "menuTitle", menuHeight: "menuHeight", menuWidth: "menuWidth", menuMinWidth: "menuMinWidth", menuPosition: "menuPosition", menuFooter: "menuFooter", popupFixed: "popupFixed", buttonCustomTemplate: "buttonCustomTemplate", pending: "pending" }, outputs: { itemSelected: "itemSelected", popupOpened: "popupOpened" }, host: { properties: { "class.is-pending": "this.pending" } }, viewQueries: [{ propertyName: "menuEl", first: true, predicate: MenuComponent, descendants: true, read: ElementRef }, { propertyName: "popup", first: true, predicate: PopupContainerDirective, descendants: true, static: true }, { propertyName: "dropdownToggleButton", first: true, predicate: ["dropdownToggle"], descendants: true }], ngImport: i0, template: "<div class=\"control\">\n <ec-button [disabled]=\"disabled\"\n id=\"{{id}}_toggle\"\n #dropdownToggle\n [ngClass]=\"{'has-arrow':showArrow, 'active': menuStatus === 'visible', 'text-left': buttonAlignment === 'left', 'text-right': buttonAlignment === 'right'}\"\n *ecPopup=\"dropdownMenu\"\n [label]=\"label\"\n [icon]=\"icon\"\n [tabindex]=\"tabindex\"\n [type]=\"buttonType\"\n [customTemplate]=\"buttonCustomTemplate\"\n [pending]=\"pending\"\n title=\"{{buttonTitle}}\"\n (click)=\"toggleMenu($event)\"\n (keydown)=\"keyNavigate($event)\"\n [autofocus]=\"autofocus\">\n </ec-button>\n <span class=\"arrow is-{{buttonType}}\"\n *ngIf=\"showArrow\"\n [class.is-disabled]=\"disabled\">\n <i class=\"ec-icon icon-caret-down\" [class.flip-y]=\"menuStatus === 'visible'\"></i>\n </span>\n</div>\n\n<ng-template #dropdownMenu>\n <div id=\"{{id}}_popup\"\n class=\"popup\"\n ecOverlay\n [status]=\"status?.status\"\n [message]=\"status?.message\"\n [displayAsMask]=\"true\">\n <!-- Dropdown Menu Title -->\n <header id=\"{{id}}_title\"\n class=\"text-heading-2 px-2 my-2\"\n *ngIf=\"menuTitle\">{{menuTitle}}\n </header>\n <!-- Dropdown Menu -->\n <ec-menu id=\"{{id}}_menu\"\n [class.wrap-items]=\"menuWidth\"\n [templateType]=\"menuTemplateType\"\n [style.width]=\"menuWidth ? menuWidth + 'px' : 'auto'\"\n [style.min-width]=\"menuMinWidth ? menuMinWidth + 'px' : 'auto'\"\n [style.height]=\"menuHeight ? menuHeight + 'px' : 'auto'\"\n [items]=\"items\"\n [showNoItems]=\"true\"\n [enableKeyNav]=\"true\"\n [highlightedItem]=\"highlightedItem\"\n [dropdownToggleButton]=\"dropdownToggleButton.buttonElement\"\n (selectedChanged)=\"selectedChanged($event)\">\n </ec-menu>\n <footer *ngIf=\"menuFooter\">{{menuFooter}}</footer>\n </div>\n</ng-template>", styles: [":host{display:inline-block;box-sizing:border-box;vertical-align:top}:host(.font-size-inherit) ec-button{font-size:inherit}:host(.font-size-inherit) ec-button ::ng-deep button{font-size:inherit}:host(.fill){display:block;height:100%;width:100%}:host(.fill) .control{display:block;height:100%;width:100%}:host(.fill) .control ec-button{display:block;height:100%;width:100%}:host(.fill) .control ec-button ::ng-deep button{display:block;height:100%;width:100%;display:flex}:host(.fill) ec-menu{min-width:100%}:host(.td-fill){position:absolute;left:0;top:0}:host(.td-fill) ec-button ::ng-deep button{padding-left:.375rem;padding-right:.375rem;font-size:.75rem}:host(.is-action) ec-button,:host(.is-action) .arrow{color:var(--ec-color-interactive)}:host(.is-condensed) ec-button ::ng-deep button{height:1.5rem}:host(.is-condensed) ec-button.has-arrow ::ng-deep button{padding:0 1.125rem 0 .25rem}:host(.is-condensed) ec-button.has-arrow~.arrow{right:.375rem}:host(.d-block) ec-button{display:block}:host(.d-block) ec-button ::ng-deep button{width:100%}:host(.is-pending) .arrow{opacity:0}:host-context(th){color:var(--ec-color-primary-dark)}.control{position:relative}ec-button{display:block}ec-button.has-arrow~.arrow{position:absolute;top:0;right:.5rem;height:100%;display:flex;align-items:center;pointer-events:none;width:.625rem;z-index:1}ec-button.has-arrow~.arrow .ec-icon{color:var(--ec-color-icon);width:auto;transition:color .3s ease}ec-button.has-arrow~.arrow.is-link .ec-icon{color:var(--ec-button-color-text, var(--ec-color-link))}ec-button.has-arrow~.arrow.is-primary .ec-icon{color:var(--ec-button-color-primary, var(--ec-color-primary-light))}ec-button.has-arrow~.arrow.is-common .ec-icon,ec-button.has-arrow~.arrow.is-secondary .ec-icon{color:var(--ec-button-color-secondary, var(--ec-color-primary-dark))}ec-button.has-arrow~.arrow.is-text .ec-icon{color:var(--ec-button-color-text, var(--ec-color-primary-dark))}ec-button.has-arrow~.arrow.is-disabled .ec-icon{opacity:.5}ec-button.has-arrow.active~.arrow.is-primary .ec-icon,ec-button.has-arrow.active~.arrow.is-secondary .ec-icon,ec-button.has-arrow.active~.arrow.is-text .ec-icon,ec-button.has-arrow.active~.arrow.is-link .ec-icon{color:var(--ec-button-color-active, var(--ec-color-primary-dark))}ec-button.has-arrow ::ng-deep button{width:auto;padding-right:1.25rem}ec-button.has-arrow ::ng-deep button:not(.ec-button-custom){padding-left:.5rem}.popup{background-color:var(--ec-background-color);border-radius:var(--ec-border-radius-card);box-shadow:var(--ec-box-shadow-overlay);margin-top:.25rem;overflow:hidden;z-index:var(--ec-z-index-popup);text-align:start}.popup>header{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.popup footer{color:var(--ec-color-secondary-dark);font-size:var(--ec-font-size-label);border-top:var(--ec-border-width) solid var(--ec-border-color);padding:.1875rem .5rem;line-height:1.2}ec-menu ::ng-deep ul{max-height:50vh}ec-menu ::ng-deep li{white-space:nowrap}ec-menu.wrap-items ::ng-deep li{white-space:normal}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ButtonComponent, selector: "ec-button", inputs: ["id", "disabled", "lockButton", "icon", "iconColor", "label", "badge", "tabindex", "type", "pending", "pendingIcon", "customTemplate", "isSubmit", "autofocus"], outputs: ["clicked"] }, { kind: "component", type: i3.ViewOverlayComponent, selector: "[ecOverlay]", inputs: ["status", "message", "action", "noDataTemplate", "displayAsMask", "overlayClassList"] }, { kind: "component", type: i4.MenuComponent, selector: "ec-menu", inputs: ["id", "items", "selected", "parent", "templateType", "customMenuTemplate", "title", "showNoItems", "noDataText", "enableKeyNav", "highlightedItem", "maintainSelectedItem", "truncateItems", "preserveIconSpace", "dropdownToggleButton"], outputs: ["selectedChanged", "menuClosed"] }, { kind: "directive", type: i5.PopupContainerDirective, selector: "[ecPopup]", inputs: ["ecPopup", "options"] }] }); }
|
|
178
|
-
}
|
|
179
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DropdownComponent, decorators: [{
|
|
180
|
-
type: Component,
|
|
181
|
-
args: [{ selector: 'ec-dropdown', template: "<div class=\"control\">\n <ec-button [disabled]=\"disabled\"\n id=\"{{id}}_toggle\"\n #dropdownToggle\n [ngClass]=\"{'has-arrow':showArrow, 'active': menuStatus === 'visible', 'text-left': buttonAlignment === 'left', 'text-right': buttonAlignment === 'right'}\"\n *ecPopup=\"dropdownMenu\"\n [label]=\"label\"\n [icon]=\"icon\"\n [tabindex]=\"tabindex\"\n [type]=\"buttonType\"\n [customTemplate]=\"buttonCustomTemplate\"\n [pending]=\"pending\"\n title=\"{{buttonTitle}}\"\n (click)=\"toggleMenu($event)\"\n (keydown)=\"keyNavigate($event)\"\n [autofocus]=\"autofocus\">\n </ec-button>\n <span class=\"arrow is-{{buttonType}}\"\n *ngIf=\"showArrow\"\n [class.is-disabled]=\"disabled\">\n <i class=\"ec-icon icon-caret-down\" [class.flip-y]=\"menuStatus === 'visible'\"></i>\n </span>\n</div>\n\n<ng-template #dropdownMenu>\n <div id=\"{{id}}_popup\"\n class=\"popup\"\n ecOverlay\n [status]=\"status?.status\"\n [message]=\"status?.message\"\n [displayAsMask]=\"true\">\n <!-- Dropdown Menu Title -->\n <header id=\"{{id}}_title\"\n class=\"text-heading-2 px-2 my-2\"\n *ngIf=\"menuTitle\">{{menuTitle}}\n </header>\n <!-- Dropdown Menu -->\n <ec-menu id=\"{{id}}_menu\"\n [class.wrap-items]=\"menuWidth\"\n [templateType]=\"menuTemplateType\"\n [style.width]=\"menuWidth ? menuWidth + 'px' : 'auto'\"\n [style.min-width]=\"menuMinWidth ? menuMinWidth + 'px' : 'auto'\"\n [style.height]=\"menuHeight ? menuHeight + 'px' : 'auto'\"\n [items]=\"items\"\n [showNoItems]=\"true\"\n [enableKeyNav]=\"true\"\n [highlightedItem]=\"highlightedItem\"\n [dropdownToggleButton]=\"dropdownToggleButton.buttonElement\"\n (selectedChanged)=\"selectedChanged($event)\">\n </ec-menu>\n <footer *ngIf=\"menuFooter\">{{menuFooter}}</footer>\n </div>\n</ng-template>", styles: [":host{display:inline-block;box-sizing:border-box;vertical-align:top}:host(.font-size-inherit) ec-button{font-size:inherit}:host(.font-size-inherit) ec-button ::ng-deep button{font-size:inherit}:host(.fill){display:block;height:100%;width:100%}:host(.fill) .control{display:block;height:100%;width:100%}:host(.fill) .control ec-button{display:block;height:100%;width:100%}:host(.fill) .control ec-button ::ng-deep button{display:block;height:100%;width:100%;display:flex}:host(.fill) ec-menu{min-width:100%}:host(.td-fill){position:absolute;left:0;top:0}:host(.td-fill) ec-button ::ng-deep button{padding-left:.375rem;padding-right:.375rem;font-size:.75rem}:host(.is-action) ec-button,:host(.is-action) .arrow{color:var(--ec-color-interactive)}:host(.is-condensed) ec-button ::ng-deep button{height:1.5rem}:host(.is-condensed) ec-button.has-arrow ::ng-deep button{padding:0 1.125rem 0 .25rem}:host(.is-condensed) ec-button.has-arrow~.arrow{right:.375rem}:host(.d-block) ec-button{display:block}:host(.d-block) ec-button ::ng-deep button{width:100%}:host(.is-pending) .arrow{opacity:0}:host-context(th){color:var(--ec-color-primary-dark)}.control{position:relative}ec-button{display:block}ec-button.has-arrow~.arrow{position:absolute;top:0;right:.5rem;height:100%;display:flex;align-items:center;pointer-events:none;width:.625rem;z-index:1}ec-button.has-arrow~.arrow .ec-icon{color:var(--ec-color-icon);width:auto;transition:color .3s ease}ec-button.has-arrow~.arrow.is-link .ec-icon{color:var(--ec-button-color-text, var(--ec-color-link))}ec-button.has-arrow~.arrow.is-primary .ec-icon{color:var(--ec-button-color-primary, var(--ec-color-primary-light))}ec-button.has-arrow~.arrow.is-common .ec-icon,ec-button.has-arrow~.arrow.is-secondary .ec-icon{color:var(--ec-button-color-secondary, var(--ec-color-primary-dark))}ec-button.has-arrow~.arrow.is-text .ec-icon{color:var(--ec-button-color-text, var(--ec-color-primary-dark))}ec-button.has-arrow~.arrow.is-disabled .ec-icon{opacity:.5}ec-button.has-arrow.active~.arrow.is-primary .ec-icon,ec-button.has-arrow.active~.arrow.is-secondary .ec-icon,ec-button.has-arrow.active~.arrow.is-text .ec-icon,ec-button.has-arrow.active~.arrow.is-link .ec-icon{color:var(--ec-button-color-active, var(--ec-color-primary-dark))}ec-button.has-arrow ::ng-deep button{width:auto;padding-right:1.25rem}ec-button.has-arrow ::ng-deep button:not(.ec-button-custom){padding-left:.5rem}.popup{background-color:var(--ec-background-color);border-radius:var(--ec-border-radius-card);box-shadow:var(--ec-box-shadow-overlay);margin-top:.25rem;overflow:hidden;z-index:var(--ec-z-index-popup);text-align:start}.popup>header{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.popup footer{color:var(--ec-color-secondary-dark);font-size:var(--ec-font-size-label);border-top:var(--ec-border-width) solid var(--ec-border-color);padding:.1875rem .5rem;line-height:1.2}ec-menu ::ng-deep ul{max-height:50vh}ec-menu ::ng-deep li{white-space:nowrap}ec-menu.wrap-items ::ng-deep li{white-space:normal}\n"] }]
|
|
182
|
-
}], ctorParameters: () => [], propDecorators: { id: [{
|
|
183
|
-
type: Input
|
|
184
|
-
}], autofocus: [{
|
|
185
|
-
type: Input
|
|
186
|
-
}], status: [{
|
|
187
|
-
type: Input
|
|
188
|
-
}], disabled: [{
|
|
189
|
-
type: Input
|
|
190
|
-
}], label: [{
|
|
191
|
-
type: Input
|
|
192
|
-
}], icon: [{
|
|
193
|
-
type: Input
|
|
194
|
-
}], buttonType: [{
|
|
195
|
-
type: Input
|
|
196
|
-
}], buttonAlignment: [{
|
|
197
|
-
type: Input
|
|
198
|
-
}], buttonTitle: [{
|
|
199
|
-
type: Input
|
|
200
|
-
}], tabindex: [{
|
|
201
|
-
type: Input
|
|
202
|
-
}], showArrow: [{
|
|
203
|
-
type: Input
|
|
204
|
-
}], items: [{
|
|
205
|
-
type: Input
|
|
206
|
-
}], menuTemplateType: [{
|
|
207
|
-
type: Input
|
|
208
|
-
}], menuTitle: [{
|
|
209
|
-
type: Input
|
|
210
|
-
}], menuHeight: [{
|
|
211
|
-
type: Input
|
|
212
|
-
}], menuWidth: [{
|
|
213
|
-
type: Input
|
|
214
|
-
}], menuMinWidth: [{
|
|
215
|
-
type: Input
|
|
216
|
-
}], menuPosition: [{
|
|
217
|
-
type: Input
|
|
218
|
-
}], menuFooter: [{
|
|
219
|
-
type: Input
|
|
220
|
-
}], popupFixed: [{
|
|
221
|
-
type: Input
|
|
222
|
-
}], buttonCustomTemplate: [{
|
|
223
|
-
type: Input
|
|
224
|
-
}], pending: [{
|
|
225
|
-
type: HostBinding,
|
|
226
|
-
args: ['class.is-pending']
|
|
227
|
-
}, {
|
|
228
|
-
type: Input
|
|
229
|
-
}], itemSelected: [{
|
|
230
|
-
type: Output
|
|
231
|
-
}], popupOpened: [{
|
|
232
|
-
type: Output
|
|
233
|
-
}], menuEl: [{
|
|
234
|
-
type: ViewChild,
|
|
235
|
-
args: [MenuComponent, { read: ElementRef }]
|
|
236
|
-
}], popup: [{
|
|
237
|
-
type: ViewChild,
|
|
238
|
-
args: [PopupContainerDirective, { static: true }]
|
|
239
|
-
}], dropdownToggleButton: [{
|
|
240
|
-
type: ViewChild,
|
|
241
|
-
args: ['dropdownToggle']
|
|
242
|
-
}] } });
|
|
243
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBZSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUosT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFlLE1BQU0seURBQXlELENBQUM7QUFHL0csT0FBTyxFQUFFLGFBQWEsRUFBOEIsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7OztBQU9uRixNQUFNLE9BQU8saUJBQWlCO0lBZ0s1QjtRQXpKQTs7V0FFRztRQUNhLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFbEM7O1dBRUc7UUFDYSxXQUFNLEdBQWtCLEVBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFDLENBQUM7UUFFekU7O1dBRUc7UUFDYSxhQUFRLEdBQVcsS0FBSyxDQUFDO1FBWXpDOztXQUVHO1FBQ2EsZUFBVSxHQUFnQixNQUFNLENBQUM7UUFRakQ7OztXQUdHO1FBQ2EsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFPekM7O1dBRUc7UUFDYSxjQUFTLEdBQVksSUFBSSxDQUFDO1FBRTFDOztXQUVHO1FBQ2EsVUFBSyxHQUFlLEVBQUUsQ0FBQztRQUV2Qzs7V0FFRztR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QUFLO2dCQUtVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBTVUsZUFBZTtzQkFBOUIsS0FBSztnQkFNVSxXQUFXO3NCQUExQixLQUFLO2dCQUtVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBS1UsU0FBUztzQkFBeEIsS0FBSztnQkFLVSxLQUFLO3NCQUFwQixLQUFLO2dCQUtVLGdCQUFnQjtzQkFBL0IsS0FBSztnQkFNVSxTQUFTO3NCQUF4QixLQUFLO2dCQUtVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBS1UsU0FBUztzQkFBeEIsS0FBSztnQkFLVSxZQUFZO3NCQUEzQixLQUFLO2dCQUtVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBS1UsVUFBVTtzQkFBekIsS0FBSztnQkFNVSxVQUFVO3NCQUF6QixLQUFLO2dCQUtVLG9CQUFvQjtzQkFBbkMsS0FBSztnQkFNVSxPQUFPO3NCQUR0QixXQUFXO3VCQUFDLGtCQUFrQjs7c0JBQzlCLEtBQUs7Z0JBS1csWUFBWTtzQkFBNUIsTUFBTTtnQkFLVSxXQUFXO3NCQUEzQixNQUFNO2dCQWtCaUQsTUFBTTtzQkFBN0QsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUtnQixLQUFLO3NCQUFsRSxTQUFTO3VCQUFDLHVCQUF1QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFLaEIsb0JBQW9CO3NCQUF2RCxTQUFTO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBQb3BwZXIgZnJvbSAncG9wcGVyLmpzJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUG9wdXBDb250YWluZXJEaXJlY3RpdmUsIFBvcHVwU3RhdHVzIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2RpcmVjdGl2ZXMvcG9wdXAvcG9wdXAtY29udGFpbmVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEaXNwbGF5U3RhdHVzIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Rpc3BsYXknO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50LCBCdXR0b25UeXBlIH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWVudUNvbXBvbmVudCwgTWVudUl0ZW0sIE1lbnVUZW1wbGF0ZVR5cGUgfSBmcm9tICcuLi9tZW51L21lbnUuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZWMtZHJvcGRvd24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kcm9wZG93bi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIERyb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIC8qKlxuICAgKiBCYXNlIGlkIGZvciB0aGUgY29tcG9uZW50J3Mgc3ViLWVsZW1lbnRzXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgaWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgZm9jdXMgdGhlIGRyb3Bkb3duIHRvZ2dsZSBidXR0b25cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBhdXRvZm9jdXMgPSBmYWxzZTtcblxuICAvKipcbiAgICogQ29udHJvbHMgdGhlIGRpc3BsYXkgc3RhdHVzIG92ZXJsYXkgZm9yIHRoZSBtZW51XG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgc3RhdHVzPzpEaXNwbGF5U3RhdHVzID0ge3N0YXR1czogJ2hhc0RhdGEnLCBtZXNzYWdlOiAnJ307XG5cbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIGJ1dHRvbiB0byBwcmV2ZW50IHRoZSBtZW51IGZyb20gYmVpbmcgb3BlbmVkXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQ6Ym9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBsYWJlbCBmb3IgdGhlIGJ1dHRvblxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBpY29uIGZvciB0aGUgYnV0dG9uXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgaWNvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGJ1dHRvbiB0eXBlLCBkZWZhdWx0cyB0byBpY29uXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgYnV0dG9uVHlwZT86IEJ1dHRvblR5cGUgPSAnaWNvbic7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsbHkgYWxpZ24gdGhlIGxhYmVsIG9mIHRoZSBidXR0b24gdG8gdGhlIGxlZnQgb3IgcmlnaHQuIElmIG5vdCBzZXQsXG4gICAqIHdpbGwgYmUgY2VudGVyZWQuXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgYnV0dG9uQWxpZ25tZW50PzogJ2xlZnQnIHwgJ3JpZ2h0JztcblxuICAvKipcbiAgICogQWRkcyBhIHRvb2x0aXAgdG8gdGhlIGRyb3Bkb3duIHRvZ2dsZSBidXR0b24uIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlblxuICAgKiB0aGUgdG9nZ2xlIGJ1dHRvblR5cGUgaXMgJ2ljb24nXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgYnV0dG9uVGl0bGU6IHN0cmluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFiaW5kZXggb2YgdGhlIGJ1dHRvblxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIHRhYmluZGV4PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBEaXNwbGF5IGEgY2FyZXQgd2l0aCB0aGUgYnV0dG9uIGxhYmVsIG9yIGljb25cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBzaG93QXJyb3c6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBJdGVtcyB0byBkaXNwbGF5IGluIHRoZSBtZW51XG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgaXRlbXM6IE1lbnVJdGVtW10gPSBbXTtcblxuICAvKipcbiAgICogVGhlIG1lbnUgaXRlbSB0ZW1wbGF0ZVxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIG1lbnVUZW1wbGF0ZVR5cGU6IE1lbnVUZW1wbGF0ZVR5cGUgPSAnbGFiZWwnO1xuXG4gIC8qKlxuICAgKiBEaXNwbGF5IGEgaGVhZGVyIG9uIHRoZSBtZW51XG4gICAqIEBkZXByZWNhdGVkIHVzZSBmaXJzdCBtZW51IGl0ZW0gd2l0aCBkaXNwbGF5IHNldCB0byAnaGVhZGluZycgaW5zdGVhZFxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIG1lbnVUaXRsZT86IHN0cmluZztcblxuICAvKipcbiAgICogU2V0IGEgZml4ZWQgaGVpZ2h0IGZvciB0aGUgbWVudSwgYXV0byBieSBkZWZhdWx0XG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgbWVudUhlaWdodD86IG51bWJlcjtcblxuICAvKipcbiAgICogU2V0IGEgZml4ZWQgd2lkdGggaW4gcGl4ZWxzIGZvciB0aGUgbWVudSwgYXV0byBieSBkZWZhdWx0XG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgbWVudVdpZHRoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTZXQgYSBtaW4td2lkdGggaW4gcGl4ZWxzIG9uIHRoZSBtZW51LiBJdCB3aWxsIGV4cGFuZCBpZiB0aGUgY29udGVudCBpcyBncmVhdGVyIHRoYW4gdGhlIG1pbi13aWR0aFxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIG1lbnVNaW5XaWR0aD86IG51bWJlcjtcblxuICAvKipcbiAgICogUGluIHRoZSBtZW51IHRvIHRoZSBsZWZ0IG9yIHJpZ2h0IG9mIHRoZSBidXR0b24uIFJpZ2h0IGJ5IGRlZmF1bHRcbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBtZW51UG9zaXRpb24/OiAnbGVmdCcgfCAncmlnaHQnO1xuXG4gIC8qKlxuICAgKiBTdGlja3kgZm9vdGVyIHRvIGRpc3BsYXkgYXQgdGhlIGJvdHRvbSBvZiB0aGUgcG9wdXAgbWVudVxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIG1lbnVGb290ZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZpeCBwb3NpdGlvbiB0aGUgbWVudSBpbnN0ZWFkIG9mIGFic29sdXRlLiBVc2VmdWwgd2hlbiB0aGUgZHJvcGRvd24gaXMgaW4gYVxuICAgKiBkaWFsb2dcbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBwb3B1cEZpeGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFBhc3MgYSBjdXN0b20gdGVtcGxhdGUgdG8gdGhlIHRvZ2dsZSBidXR0b25cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBidXR0b25DdXN0b21UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqXG4gICogVXNlZCB0byBzZXQgdGhlIG1lbnUgYnV0dG9ucyBzdGF0ZSB0byBwZW5kaW5nXG4gICovXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaXMtcGVuZGluZycpXG4gIEBJbnB1dCgpIHB1YmxpYyBwZW5kaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGFuIGV2ZW50IHdoZW4gYSBtZW51IGl0ZW0gaXMgc2VsZWN0ZWRcbiAgICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgaXRlbVNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8TWVudUl0ZW0+ID0gbmV3IEV2ZW50RW1pdHRlcjxNZW51SXRlbT4oKTtcblxuICAvKipcbiAgICogRW1pdHMgYW4gZXZlbnQgd2hlbiB0aGUgcG9wdXAgbWVudSBvcGVuc1xuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyBwb3B1cE9wZW5lZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhdHVzIG9mIHRoZSBtZW51XG4gICAqL1xuICBwdWJsaWMgbWVudVN0YXR1czogUG9wdXBTdGF0dXMgPSAnaGlkZGVuJztcblxuICAvKiogSXRlbSB0byBoaWdobGlnaHQgd2hlbiB0aGUgbWVudSBpcyBvcGVuZWQsIHVzZWQgd2hlbiB0aGUgdXNlclxuICAgKiAgb3BlbnMgdGhlIG1lbnUgdmlhIHRoZSBrZXlib2FyZFxuICAgKi9cbiAgcHVibGljIGhpZ2hsaWdodGVkSXRlbTogTWVudUl0ZW0gfCBudWxsID0gbnVsbDtcblxuICAvKiogVXNlZCB0byBrbm93IGlmIHRoZSBtZW51IHdhcyB0b2dnbGVkIHZpYSB0aGUga2V5Ym9hcmQgKi9cbiAgcHJpdmF0ZSBpc0tleWJvYXJkRXZlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogSW50ZXJuYWwgcmVmZXJlbmNlIHRvIHRoZSBtZW51IGVsZW1lbnRcbiAgICovXG4gIEBWaWV3Q2hpbGQoTWVudUNvbXBvbmVudCwgeyByZWFkOiBFbGVtZW50UmVmIH0pIHByaXZhdGUgbWVudUVsITpFbGVtZW50UmVmO1xuXG4gIC8qKlxuICAgKiBJbnRlcm5hbCByZWZlcmVuY2UgdG8gdGhlIHBvcHVwIGRpcmVjdGl2ZVxuICAgKi9cbiAgQFZpZXdDaGlsZChQb3B1cENvbnRhaW5lckRpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBwb3B1cCE6IFBvcHVwQ29udGFpbmVyRGlyZWN0aXZlO1xuXG4gIC8qKlxuICAgKiBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIHRvZ2dsZSBidXR0b25cbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duVG9nZ2xlJykgcHVibGljIGRyb3Bkb3duVG9nZ2xlQnV0dG9uITogQnV0dG9uQ29tcG9uZW50O1xuXG4gIC8qKlxuICAgKiBVbnN1YnNjcmliZSBhbnkgYWN0aXZlIHN1YnNjcmlwdGlvbnMgd2hlbiB0aGUgY29tcG9uZW50IGlzIGRlc3Ryb3llZFxuICAgKi9cbiAgcHJpdmF0ZSBjb21wb25lbnREZXN0cm95ZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICAvKipcbiAgICogU3Vic2NyaWJlIHRvIGNoYW5nZXMgdG8gdGhlIG1lbnUgc3RhdHVzXG4gICAqL1xuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5wb3B1cC5wb3BwZXJTdGF0dXNDaGFuZ2VcbiAgICAucGlwZSh0YWtlVW50aWwodGhpcy5jb21wb25lbnREZXN0cm95ZWQpKVxuICAgIC5zdWJzY3JpYmUoKGV2ZW50OiAndmlzaWJsZScgfCAnaGlkZGVuJykgPT4ge1xuICAgICAgdGhpcy5tZW51U3RhdHVzID0gZXZlbnQ7XG4gICAgICBpZih0aGlzLm1lbnVTdGF0dXMgPT09ICd2aXNpYmxlJykge1xuICAgICAgICB0aGlzLnBvcHVwT3BlbmVkLmVtaXQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdXAgdGhlIHBvcHVwXG4gICAqL1xuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGxldCBwb3BwZXJPcHRpb25zOiBQb3BwZXIuUG9wcGVyT3B0aW9ucyA9IHtcblx0XHRcdG1vZGlmaWVyczoge1xuXHRcdFx0XHRwcmV2ZW50T3ZlcmZsb3c6IHtcblx0XHRcdFx0XHRib3VuZGFyaWVzRWxlbWVudDogJ3ZpZXdwb3J0J1xuXHRcdFx0XHR9XG4gICAgICB9LFxuICAgICAgcGxhY2VtZW50OiAnYm90dG9tLWVuZCdcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMubWVudVBvc2l0aW9uID09PSAnbGVmdCcpIHtcbiAgICAgIHBvcHBlck9wdGlvbnMucGxhY2VtZW50ID0gJ2JvdHRvbS1zdGFydCc7XG4gICAgfVxuXG5cbiAgICBpZiAodGhpcy5wb3B1cEZpeGVkKSB7XG4gICAgICBwb3BwZXJPcHRpb25zLm9uQ3JlYXRlID0gKCkgPT4ge1xuICAgICAgICB0aGlzLnBvcHVwLmZpeFBvc2l0aW9uKCk7XG4gICAgICB9XG5cblx0XHRcdHBvcHBlck9wdGlvbnMub25VcGRhdGUgPSAoKSA9PiB7XG4gICAgICAgIC8vIEhpZGUgdGhlIHBvcHVwIHdoZW4gdGhlIGRyb3Bkb3duIGNoYW5nZXMgcG9zaXRpb24gZHVlIHRvIHdpbmRvdyByZXNpemVcbiAgICAgICAgLy8gb3IgY29udGFpbmVyIHNjcm9sbGluZ1xuICAgICAgICB0aGlzLnBvcHVwLmhpZGUoKTtcblx0XHRcdH1cbiAgICB9XG5cbiAgICB0aGlzLnBvcHVwLnBvcHBlck9wdGlvbnMgPSBwb3BwZXJPcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuc3Vic2NyaWJlIHRvIGFueSBhY3RpdmUgc3Vic2NyaXB0aW9uc1xuICAgKi9cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuY29tcG9uZW50RGVzdHJveWVkLm5leHQoKTtcbiAgICB0aGlzLmNvbXBvbmVudERlc3Ryb3llZC51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW4gYW5kIGNsb3NlIHRoZSBtZW51XG4gICAqL1xuICBwdWJsaWMgdG9nZ2xlTWVudShldmVudD86RXZlbnQpOnZvaWQge1xuICAgIGlmIChldmVudCkge1xuXHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICBpZiAodGhpcy5tZW51U3RhdHVzID09PSAnaGlkZGVuJykge1xuICAgICAgICBpZiAodGhpcy5pc0tleWJvYXJkRXZlbnQgJiYgdGhpcy5pdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAvLyBTZXR1cCB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgbGlzdCB0byBoaWdobGlnaHQgd2hlbiBvcGVuaW5nIHRoZVxuICAgICAgICAgIC8vIG1lbnUgdmlhIHRoZSBrZXlib2FyZCwgaWdub3JpbmcgaGVhZGluZ3NcblxuICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRJdGVtID0gdGhpcy5pdGVtcy5maW5kKGl0ZW0gPT4gaXRlbS5kaXNwbGF5ICE9PSAnaGVhZGluZycpIHx8IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wb3B1cC5zaG93KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBvcHVwLmhpZGUoKTtcblxuICAgICAgICAvLyBSZXNldCB0aGUgaGlnaGxpZ2h0ZWQgaXRlbSBhbmQgb3VyIGtleWJvYXJkIGZsYWdcbiAgICAgICAgLy8gd2hlbiB3ZSBjbG9zZSB0aGUgcG9wdXBcbiAgICAgICAgdGhpcy5oaWdobGlnaHRlZEl0ZW0gPSBudWxsO1xuICAgICAgICB0aGlzLmlzS2V5Ym9hcmRFdmVudCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0IHRoZSBzZWxlY3RlZCBpdGVtIHdoZW4gaXQgY2hhbmdlcyBhbmQgY2xvc2UgdGhlIG1lbnVcbiAgICovXG4gIHB1YmxpYyBzZWxlY3RlZENoYW5nZWQoaXRlbTpNZW51SXRlbSk6dm9pZCB7XG4gICAgdGhpcy5pdGVtU2VsZWN0ZWQuZW1pdChpdGVtKTtcbiAgICB0aGlzLnRvZ2dsZU1lbnUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIG1lbnUgaWYgdGhlIHRhYiBrZXkgaXMgcHJlc3NlZFxuICAgKi9cbiAgcHVibGljIGtleU5hdmlnYXRlKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgdGhpcy5pc0tleWJvYXJkRXZlbnQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0VzY2FwZSc6XG4gICAgICBjYXNlICdUYWInOlxuICAgICAgICBpZiAodGhpcy5tZW51U3RhdHVzID09PSAndmlzaWJsZScpIHtcbiAgICAgICAgICB0aGlzLnRvZ2dsZU1lbnUoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm47XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICA8ZWMtYnV0dG9uIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgaWQ9XCJ7e2lkfX1fdG9nZ2xlXCJcbiAgICAgICAgICAgICAjZHJvcGRvd25Ub2dnbGVcbiAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2hhcy1hcnJvdyc6c2hvd0Fycm93LCAnYWN0aXZlJzogbWVudVN0YXR1cyA9PT0gJ3Zpc2libGUnLCAndGV4dC1sZWZ0JzogYnV0dG9uQWxpZ25tZW50ID09PSAnbGVmdCcsICd0ZXh0LXJpZ2h0JzogYnV0dG9uQWxpZ25tZW50ID09PSAncmlnaHQnfVwiXG4gICAgICAgICAgICAgKmVjUG9wdXA9XCJkcm9wZG93bk1lbnVcIlxuICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgW2ljb25dPVwiaWNvblwiXG4gICAgICAgICAgICAgW3RhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgICAgICAgICBbdHlwZV09XCJidXR0b25UeXBlXCJcbiAgICAgICAgICAgICBbY3VzdG9tVGVtcGxhdGVdPVwiYnV0dG9uQ3VzdG9tVGVtcGxhdGVcIlxuICAgICAgICAgICAgIFtwZW5kaW5nXT1cInBlbmRpbmdcIlxuICAgICAgICAgICAgIHRpdGxlPVwie3tidXR0b25UaXRsZX19XCJcbiAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTWVudSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAoa2V5ZG93bik9XCJrZXlOYXZpZ2F0ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICBbYXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiPlxuICA8L2VjLWJ1dHRvbj5cbiAgPHNwYW4gY2xhc3M9XCJhcnJvdyBpcy17e2J1dHRvblR5cGV9fVwiXG4gICAgICAgICpuZ0lmPVwic2hvd0Fycm93XCJcbiAgICAgICAgW2NsYXNzLmlzLWRpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgPGkgY2xhc3M9XCJlYy1pY29uIGljb24tY2FyZXQtZG93blwiIFtjbGFzcy5mbGlwLXldPVwibWVudVN0YXR1cyA9PT0gJ3Zpc2libGUnXCI+PC9pPlxuICA8L3NwYW4+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNkcm9wZG93bk1lbnU+XG4gIDxkaXYgaWQ9XCJ7e2lkfX1fcG9wdXBcIlxuICAgICAgIGNsYXNzPVwicG9wdXBcIlxuICAgICAgIGVjT3ZlcmxheVxuICAgICAgIFtzdGF0dXNdPVwic3RhdHVzPy5zdGF0dXNcIlxuICAgICAgIFttZXNzYWdlXT1cInN0YXR1cz8ubWVzc2FnZVwiXG4gICAgICAgW2Rpc3BsYXlBc01hc2tdPVwidHJ1ZVwiPlxuICAgIDwhLS0gRHJvcGRvd24gTWVudSBUaXRsZSAtLT5cbiAgICA8aGVhZGVyIGlkPVwie3tpZH19X3RpdGxlXCJcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC1oZWFkaW5nLTIgcHgtMiBteS0yXCJcbiAgICAgICAgICAgICpuZ0lmPVwibWVudVRpdGxlXCI+e3ttZW51VGl0bGV9fVxuICAgIDwvaGVhZGVyPlxuICAgIDwhLS0gRHJvcGRvd24gTWVudSAtLT5cbiAgICA8ZWMtbWVudSBpZD1cInt7aWR9fV9tZW51XCJcbiAgICAgICAgICAgICBbY2xhc3Mud3JhcC1pdGVtc109XCJtZW51V2lkdGhcIlxuICAgICAgICAgICAgIFt0ZW1wbGF0ZVR5cGVdPVwibWVudVRlbXBsYXRlVHlwZVwiXG4gICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cIm1lbnVXaWR0aCA/IG1lbnVXaWR0aCArICdweCcgOiAnYXV0bydcIlxuICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGhdPVwibWVudU1pbldpZHRoID8gbWVudU1pbldpZHRoICsgJ3B4JyA6ICdhdXRvJ1wiXG4gICAgICAgICAgICAgW3N0eWxlLmhlaWdodF09XCJtZW51SGVpZ2h0ID8gbWVudUhlaWdodCArICdweCcgOiAnYXV0bydcIlxuICAgICAgICAgICAgIFtpdGVtc109XCJpdGVtc1wiXG4gICAgICAgICAgICAgW3Nob3dOb0l0ZW1zXT1cInRydWVcIlxuICAgICAgICAgICAgIFtlbmFibGVLZXlOYXZdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgW2hpZ2hsaWdodGVkSXRlbV09XCJoaWdobGlnaHRlZEl0ZW1cIlxuICAgICAgICAgICAgIFtkcm9wZG93blRvZ2dsZUJ1dHRvbl09XCJkcm9wZG93blRvZ2dsZUJ1dHRvbi5idXR0b25FbGVtZW50XCJcbiAgICAgICAgICAgICAoc2VsZWN0ZWRDaGFuZ2VkKT1cInNlbGVjdGVkQ2hhbmdlZCgkZXZlbnQpXCI+XG4gICAgPC9lYy1tZW51PlxuICAgIDxmb290ZXIgKm5nSWY9XCJtZW51Rm9vdGVyXCI+e3ttZW51Rm9vdGVyfX08L2Zvb3Rlcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==
|