@leanix/components 0.4.531 → 0.4.533
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/leanix-components.mjs +365 -365
- package/fesm2022/leanix-components.mjs.map +1 -1
- package/lib/core-ui/tooltip/tooltip.directive.d.ts +1 -1
- package/lib/forms-ui/components/keyboard-select.directive.d.ts +1 -1
- package/lib/forms-ui/models/base-select.directive.d.ts +1 -1
- package/lib/tab-ui/components/tab-group/tab-group.component.d.ts +1 -1
- package/package.json +10 -14
- package/esm2022/index.mjs +0 -145
- package/esm2022/leanix-components.mjs +0 -5
- package/esm2022/lib/core-ui/components/avatar/avatar.component.mjs +0 -40
- package/esm2022/lib/core-ui/components/avatar/avatar.helpers.mjs +0 -49
- package/esm2022/lib/core-ui/components/avatar/avatar.model.mjs +0 -33
- package/esm2022/lib/core-ui/components/avatar-group/avatar-group.component.mjs +0 -75
- package/esm2022/lib/core-ui/components/badge/badge.component.mjs +0 -58
- package/esm2022/lib/core-ui/components/banner/banner.component.mjs +0 -68
- package/esm2022/lib/core-ui/components/banner/banner.models.mjs +0 -12
- package/esm2022/lib/core-ui/components/button/button.component.mjs +0 -179
- package/esm2022/lib/core-ui/components/button-group/button-group.component.mjs +0 -28
- package/esm2022/lib/core-ui/components/card/card.component.mjs +0 -26
- package/esm2022/lib/core-ui/components/collapsible/collapsible.component.mjs +0 -52
- package/esm2022/lib/core-ui/components/counter/counter.component.mjs +0 -30
- package/esm2022/lib/core-ui/components/ellipsis/ellipsis.component.mjs +0 -143
- package/esm2022/lib/core-ui/components/empty-state/empty-state.component.mjs +0 -41
- package/esm2022/lib/core-ui/components/icon-scale/icon-scale.component.mjs +0 -36
- package/esm2022/lib/core-ui/components/skeleton/skeleton.component.mjs +0 -44
- package/esm2022/lib/core-ui/components/spinner/spinner.component.mjs +0 -26
- package/esm2022/lib/core-ui/components/stepper/stepper.component.mjs +0 -70
- package/esm2022/lib/core-ui/components/table/table-header/table-header.component.mjs +0 -128
- package/esm2022/lib/core-ui/components/table/table.component.mjs +0 -77
- package/esm2022/lib/core-ui/components/tiny-spinner/tiny-spinner.component.mjs +0 -14
- package/esm2022/lib/core-ui/components/tokenizer/token/token.component.mjs +0 -20
- package/esm2022/lib/core-ui/components/tokenizer/tokenizer-overflow-popover/tokenizer-overflow-popover.component.mjs +0 -44
- package/esm2022/lib/core-ui/components/tokenizer/tokenizer.component.mjs +0 -149
- package/esm2022/lib/core-ui/core-ui.constants.mjs +0 -240
- package/esm2022/lib/core-ui/core-ui.module.mjs +0 -206
- package/esm2022/lib/core-ui/directives/after-view-init.directive.mjs +0 -33
- package/esm2022/lib/core-ui/directives/autoclose-group.service.mjs +0 -39
- package/esm2022/lib/core-ui/directives/autoclose.directive.mjs +0 -43
- package/esm2022/lib/core-ui/directives/autofocus.directive.mjs +0 -36
- package/esm2022/lib/core-ui/functions/core-css.helpers.mjs +0 -52
- package/esm2022/lib/core-ui/functions/highlight-text.function.mjs +0 -80
- package/esm2022/lib/core-ui/linkify/linkify.pipe.mjs +0 -146
- package/esm2022/lib/core-ui/linkify/unlinkify.pipe.mjs +0 -51
- package/esm2022/lib/core-ui/pipes/br.pipe.mjs +0 -24
- package/esm2022/lib/core-ui/pipes/contrast-color.pipe.mjs +0 -21
- package/esm2022/lib/core-ui/pipes/custom-date.pipe.mjs +0 -28
- package/esm2022/lib/core-ui/pipes/display-avatars.pipe.mjs +0 -37
- package/esm2022/lib/core-ui/pipes/highlight-range.pipe.mjs +0 -29
- package/esm2022/lib/core-ui/pipes/highlight-term.pipe.mjs +0 -57
- package/esm2022/lib/core-ui/pipes/lx-is-uuid.pipe.mjs +0 -22
- package/esm2022/lib/core-ui/pipes/lx-time-ago.pipe.mjs +0 -29
- package/esm2022/lib/core-ui/pipes/lx-translate.pipe.mjs +0 -50
- package/esm2022/lib/core-ui/pipes/markdown.pipe.mjs +0 -32
- package/esm2022/lib/core-ui/pipes/nbsp.pipe.mjs +0 -17
- package/esm2022/lib/core-ui/pipes/sort.pipe.mjs +0 -55
- package/esm2022/lib/core-ui/pipes/translation-after.pipe.mjs +0 -29
- package/esm2022/lib/core-ui/pipes/translation-before.pipe.mjs +0 -54
- package/esm2022/lib/core-ui/pipes/translation-between.pipe.mjs +0 -68
- package/esm2022/lib/core-ui/pipes/unescape-curly-braces.pipe.mjs +0 -17
- package/esm2022/lib/core-ui/services/resize-observer.service.mjs +0 -112
- package/esm2022/lib/core-ui/tooltip/to-cdk-position.function.mjs +0 -74
- package/esm2022/lib/core-ui/tooltip/tooltip-position.interface.mjs +0 -7
- package/esm2022/lib/core-ui/tooltip/tooltip.component.mjs +0 -26
- package/esm2022/lib/core-ui/tooltip/tooltip.directive.mjs +0 -117
- package/esm2022/lib/forms-ui/components/basic-dropdown/basic-dropdown.component.mjs +0 -139
- package/esm2022/lib/forms-ui/components/basic-dropdown-item/basic-dropdown-item.component.mjs +0 -38
- package/esm2022/lib/forms-ui/components/breadcrumb/breadcrumb.component.mjs +0 -55
- package/esm2022/lib/forms-ui/components/cdk-options-dropdown/cdk-options-dropdown.component.mjs +0 -215
- package/esm2022/lib/forms-ui/components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.component.mjs +0 -135
- package/esm2022/lib/forms-ui/components/currency/currency-input.component.mjs +0 -159
- package/esm2022/lib/forms-ui/components/currency/currency-symbol-map.constant.mjs +0 -105
- package/esm2022/lib/forms-ui/components/currency/currency-symbol.component.mjs +0 -24
- package/esm2022/lib/forms-ui/components/date-input/date-input.component.mjs +0 -347
- package/esm2022/lib/forms-ui/components/date-picker-ui/date-formatter.mjs +0 -8
- package/esm2022/lib/forms-ui/components/date-picker-ui/datepicker-inner.component.mjs +0 -312
- package/esm2022/lib/forms-ui/components/date-picker-ui/datepicker-ui.module.mjs +0 -20
- package/esm2022/lib/forms-ui/components/date-picker-ui/datepicker.component.mjs +0 -206
- package/esm2022/lib/forms-ui/components/date-picker-ui/datepicker.config.mjs +0 -29
- package/esm2022/lib/forms-ui/components/date-picker-ui/daypicker.component.mjs +0 -319
- package/esm2022/lib/forms-ui/components/date-picker-ui/isBs3.mjs +0 -2
- package/esm2022/lib/forms-ui/components/date-picker-ui/monthpicker.component.mjs +0 -149
- package/esm2022/lib/forms-ui/components/date-picker-ui/yearpicker.component.mjs +0 -151
- package/esm2022/lib/forms-ui/components/drag-and-drop-list/constants.mjs +0 -5
- package/esm2022/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list-item/drag-and-drop-list-item.component.mjs +0 -49
- package/esm2022/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.component.mjs +0 -120
- package/esm2022/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.module.mjs +0 -39
- package/esm2022/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-item/keyboard-sortable-item.directive.mjs +0 -137
- package/esm2022/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-list/keyboard-sortable-list.directive.mjs +0 -38
- package/esm2022/lib/forms-ui/components/error-message/error-message.component.mjs +0 -16
- package/esm2022/lib/forms-ui/components/expanded-dropdown/expanded-dropdown.component.mjs +0 -26
- package/esm2022/lib/forms-ui/components/form-error/form-error.component.mjs +0 -44
- package/esm2022/lib/forms-ui/components/icon/icon.component.mjs +0 -45
- package/esm2022/lib/forms-ui/components/input/input.component.mjs +0 -48
- package/esm2022/lib/forms-ui/components/keyboard-select.directive.mjs +0 -126
- package/esm2022/lib/forms-ui/components/multi-select/multi-select-selection/multi-select-selection.component.mjs +0 -28
- package/esm2022/lib/forms-ui/components/multi-select/multi-select.component.mjs +0 -318
- package/esm2022/lib/forms-ui/components/option/option.component.mjs +0 -99
- package/esm2022/lib/forms-ui/components/option-group/option-group.component.mjs +0 -29
- package/esm2022/lib/forms-ui/components/option-group-dropdown/option-group-dropdown.component.mjs +0 -123
- package/esm2022/lib/forms-ui/components/options-dropdown/options-dropdown.component.mjs +0 -297
- package/esm2022/lib/forms-ui/components/options-sub-dropdown/options-sub-dropdown.component.mjs +0 -94
- package/esm2022/lib/forms-ui/components/picker/picker-trigger.directive.mjs +0 -47
- package/esm2022/lib/forms-ui/components/picker/picker.component.mjs +0 -218
- package/esm2022/lib/forms-ui/components/picker-option/picker-option.component.mjs +0 -118
- package/esm2022/lib/forms-ui/components/pill-item/pill-item.component.mjs +0 -33
- package/esm2022/lib/forms-ui/components/pill-list/pill-list.component.mjs +0 -58
- package/esm2022/lib/forms-ui/components/responsive-input/responsive-input.component.mjs +0 -101
- package/esm2022/lib/forms-ui/components/select-list/select-list.component.mjs +0 -178
- package/esm2022/lib/forms-ui/components/single-select/single-select.component.mjs +0 -290
- package/esm2022/lib/forms-ui/components/sorting-dropdown/sorting-dropdown.component.mjs +0 -71
- package/esm2022/lib/forms-ui/components/sorting-dropdown-trigger/sorting-dropdown-trigger.component.mjs +0 -21
- package/esm2022/lib/forms-ui/components/switch/switch.component.mjs +0 -51
- package/esm2022/lib/forms-ui/directives/contenteditable.directive.mjs +0 -130
- package/esm2022/lib/forms-ui/directives/form-error.directive.mjs +0 -121
- package/esm2022/lib/forms-ui/directives/form-submit.directive.mjs +0 -29
- package/esm2022/lib/forms-ui/directives/keyboard-action-source.directive.mjs +0 -63
- package/esm2022/lib/forms-ui/directives/mark-invalid.directive.mjs +0 -39
- package/esm2022/lib/forms-ui/directives/max-length-counter.directive.mjs +0 -131
- package/esm2022/lib/forms-ui/directives/select-dropdown.directive.mjs +0 -32
- package/esm2022/lib/forms-ui/directives/selectable-item.directive.mjs +0 -34
- package/esm2022/lib/forms-ui/directives/selected-option.directive.mjs +0 -27
- package/esm2022/lib/forms-ui/forms-ui.module.mjs +0 -270
- package/esm2022/lib/forms-ui/helpers/key-codes.constants.mjs +0 -13
- package/esm2022/lib/forms-ui/helpers/keyboard-navigation.helpers.mjs +0 -38
- package/esm2022/lib/forms-ui/models/base-select.directive.mjs +0 -183
- package/esm2022/lib/forms-ui/models/dropdown-item.interface.mjs +0 -2
- package/esm2022/lib/forms-ui/models/single-select-padding.interface.mjs +0 -2
- package/esm2022/lib/forms-ui/models/sorting.interface.mjs +0 -7
- package/esm2022/lib/forms-ui/pipes/filter-selection.pipe.mjs +0 -33
- package/esm2022/lib/forms-ui/pipes/filter-term.pipe.mjs +0 -29
- package/esm2022/lib/forms-ui/pipes/format-number.pipe.mjs +0 -66
- package/esm2022/lib/forms-ui/validators/date-in-foreseeable-future.validator.mjs +0 -26
- package/esm2022/lib/forms-ui/validators/string-not-in-array.validator.mjs +0 -30
- package/esm2022/lib/modal-ui/components/modal/modal.component.mjs +0 -264
- package/esm2022/lib/modal-ui/components/modal-footer/modal-footer.component.mjs +0 -16
- package/esm2022/lib/modal-ui/components/modal-header/modal-header.component.mjs +0 -19
- package/esm2022/lib/modal-ui/directives/modal-content.directive.mjs +0 -14
- package/esm2022/lib/modal-ui/modal.constants.mjs +0 -18
- package/esm2022/lib/modal-ui/modal.module.mjs +0 -47
- package/esm2022/lib/popover-ui/components/popover/popover.component.mjs +0 -228
- package/esm2022/lib/popover-ui/directives/popover-click.directive.mjs +0 -52
- package/esm2022/lib/popover-ui/directives/popover-content.directive.mjs +0 -17
- package/esm2022/lib/popover-ui/directives/popover-hover.directive.mjs +0 -88
- package/esm2022/lib/popover-ui/popover-ui.module.mjs +0 -21
- package/esm2022/lib/shared/date-helpers.mjs +0 -35
- package/esm2022/lib/shared/html-helpers.function.mjs +0 -34
- package/esm2022/lib/shared/misc-helpers.mjs +0 -24
- package/esm2022/lib/shared/observe.mjs +0 -40
- package/esm2022/lib/tab-ui/components/tab/tab.component.mjs +0 -118
- package/esm2022/lib/tab-ui/components/tab-group/tab-group-key-codes.enum.mjs +0 -12
- package/esm2022/lib/tab-ui/components/tab-group/tab-group.component.mjs +0 -150
- package/esm2022/lib/tab-ui/tab-ui.module.mjs +0 -20
- package/esm2022/ui5/icons/lx-icons.json +0 -177
- package/esm2022/ui5/icons/register-icons.mjs +0 -14
- package/esm2022/ui5/index.mjs +0 -8
- package/esm2022/ui5/leanix-components-ui5.mjs +0 -5
- package/esm2022/ui5/ui5.provider.mjs +0 -29
@@ -1,128 +0,0 @@
|
|
1
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Input, Optional, Output, computed, signal } from '@angular/core';
|
2
|
-
// eslint-disable-next-line no-restricted-imports
|
3
|
-
import { IconComponent } from '@ui5/webcomponents-ngx/main/icon';
|
4
|
-
// eslint-disable-next-line no-restricted-imports
|
5
|
-
import { registerIcon } from '@ui5/webcomponents-base/dist/asset-registries/Icons.js';
|
6
|
-
import * as i0 from "@angular/core";
|
7
|
-
import * as i1 from "../table.component";
|
8
|
-
registerIcon('sort', {
|
9
|
-
pathData: '',
|
10
|
-
ltr: false,
|
11
|
-
collection: 'lx-icons',
|
12
|
-
packageName: '@leanix/theming',
|
13
|
-
viewBox: '0 0 16 16',
|
14
|
-
customTemplate: () => ({
|
15
|
-
strings: [
|
16
|
-
'<path d="M8.00278 2C8.19778 2 8.37778 2.09 8.49028 2.2475L10.8903 5.5475C11.0253 5.7275 11.0403 5.975 10.9428 6.17C10.8378 6.3725 10.6353 6.5 10.4103 6.5L5.61028 6.5C5.38528 6.5 5.17528 6.3725 5.07778 6.17C4.97278 5.9675 4.99528 5.7275 5.13028 5.5475L7.53028 2.2475C7.64278 2.09 7.82278 2 8.01778 2H8.00278Z" fill="#99A5BB"/>',
|
17
|
-
'<path d="M8.00278 14.455C7.80778 14.455 7.62778 14.365 7.51528 14.2075L5.11528 10.9075C4.98028 10.7275 4.96528 10.48 5.06278 10.285C5.16778 10.0825 5.37028 9.95496 5.59528 9.95496H10.3953C10.6203 9.95496 10.8303 10.0825 10.9278 10.285C11.0328 10.4875 11.0103 10.7275 10.8753 10.9075L8.47528 14.2075C8.36278 14.365 8.18278 14.455 7.98778 14.455H8.00278Z" fill="#99A5BB"/>'
|
18
|
-
]
|
19
|
-
})
|
20
|
-
});
|
21
|
-
registerIcon('sort-desc', {
|
22
|
-
pathData: '',
|
23
|
-
ltr: false,
|
24
|
-
collection: 'lx-icons',
|
25
|
-
packageName: '@leanix/theming',
|
26
|
-
viewBox: '0 0 16 16',
|
27
|
-
customTemplate: () => ({
|
28
|
-
strings: [
|
29
|
-
'<path d="M8.00278 2C8.19778 2 8.37778 2.09 8.49028 2.2475L10.8903 5.5475C11.0253 5.7275 11.0403 5.975 10.9428 6.17C10.8378 6.3725 10.6353 6.5 10.4103 6.5L5.61028 6.5C5.38528 6.5 5.17528 6.3725 5.07778 6.17C4.97278 5.9675 4.99528 5.7275 5.13028 5.5475L7.53028 2.2475C7.64278 2.09 7.82278 2 8.01778 2H8.00278Z" fill="#99A5BB"/>',
|
30
|
-
'<path d="M8.00278 14.455C7.80778 14.455 7.62778 14.365 7.51528 14.2075L5.11528 10.9075C4.98028 10.7275 4.96528 10.48 5.06278 10.285C5.16778 10.0825 5.37028 9.95496 5.59528 9.95496H10.3953C10.6203 9.95496 10.8303 10.0825 10.9278 10.285C11.0328 10.4875 11.0103 10.7275 10.8753 10.9075L8.47528 14.2075C8.36278 14.365 8.18278 14.455 7.98778 14.455H8.00278Z" fill="#2A303D"/>'
|
31
|
-
]
|
32
|
-
})
|
33
|
-
});
|
34
|
-
registerIcon('sort-asc', {
|
35
|
-
pathData: '',
|
36
|
-
ltr: false,
|
37
|
-
collection: 'lx-icons',
|
38
|
-
packageName: '@leanix/theming',
|
39
|
-
viewBox: '0 0 16 16',
|
40
|
-
customTemplate: () => ({
|
41
|
-
strings: [
|
42
|
-
'<path d="M8.00278 2C8.19778 2 8.37778 2.09 8.49028 2.2475L10.8903 5.5475C11.0253 5.7275 11.0403 5.975 10.9428 6.17C10.8378 6.3725 10.6353 6.5 10.4103 6.5L5.61028 6.5C5.38528 6.5 5.17528 6.3725 5.07778 6.17C4.97278 5.9675 4.99528 5.7275 5.13028 5.5475L7.53028 2.2475C7.64278 2.09 7.82278 2 8.01778 2H8.00278Z" fill="#2A303D"/>',
|
43
|
-
'<path d="M8.00278 14.455C7.80778 14.455 7.62778 14.365 7.51528 14.2075L5.11528 10.9075C4.98028 10.7275 4.96528 10.48 5.06278 10.285C5.16778 10.0825 5.37028 9.95496 5.59528 9.95496H10.3953C10.6203 9.95496 10.8303 10.0825 10.9278 10.285C11.0328 10.4875 11.0103 10.7275 10.8753 10.9075L8.47528 14.2075C8.36278 14.365 8.18278 14.455 7.98778 14.455H8.00278Z" fill="#99A5BB"/>'
|
44
|
-
]
|
45
|
-
})
|
46
|
-
});
|
47
|
-
/**
|
48
|
-
* The `lx-th` can be used in combination with `lx-table` to implement sortable `<table>` elements.
|
49
|
-
*/
|
50
|
-
export class TableHeaderComponent {
|
51
|
-
#sort;
|
52
|
-
constructor(parentTable) {
|
53
|
-
this.parentTable = parentTable;
|
54
|
-
/**
|
55
|
-
* Indicates that the column is not sortable (default `false`).
|
56
|
-
*/
|
57
|
-
this.disableSort = false;
|
58
|
-
/**
|
59
|
-
* Prevents the user from clearing the sort.
|
60
|
-
* Only allowing to toggle between asc & desc.
|
61
|
-
*/
|
62
|
-
this.disableSortClear = false;
|
63
|
-
/**
|
64
|
-
* Triggers whenever the user changes the sort order.
|
65
|
-
*/
|
66
|
-
this.sortChange = new EventEmitter();
|
67
|
-
this.sortable = computed(() => (this.parentTable?.isSortable() && !this.disableSort) ?? false);
|
68
|
-
this.order = computed(() => {
|
69
|
-
const sort = this.parentTable ? this.parentTable.sort() : this.#sort();
|
70
|
-
if (this.column !== sort?.key) {
|
71
|
-
return undefined;
|
72
|
-
}
|
73
|
-
else {
|
74
|
-
return sort?.order;
|
75
|
-
}
|
76
|
-
});
|
77
|
-
this.#sort = signal({ key: this.column, order: undefined });
|
78
|
-
}
|
79
|
-
onSort() {
|
80
|
-
if (this.column && !this.disableSort) {
|
81
|
-
const sort = { key: this.column, order: determineNewOrder(this.order(), this.disableSortClear) };
|
82
|
-
if (!this.parentTable) {
|
83
|
-
this.#sort.set(sort);
|
84
|
-
}
|
85
|
-
this.sortChange.emit(sort);
|
86
|
-
this.parentTable?.onTableHeaderSortChange(sort);
|
87
|
-
}
|
88
|
-
}
|
89
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: TableHeaderComponent, deps: [{ token: i1.TableComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
90
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: TableHeaderComponent, isStandalone: true, selector: "lx-th", inputs: { column: "column", disableSort: "disableSort", disableSortClear: "disableSortClear" }, outputs: { sortChange: "sortChange" }, host: { attributes: { "role": "columnheader" }, listeners: { "keydown.enter": "onSort()", "click": "onSort()" }, properties: { "class.sortable": "sortable()", "tabIndex": "sortable() ? 0 : -1" } }, ngImport: i0, template: "<div class=\"wrapper\">\n <span>\n <ng-content />\n </span>\n @if (sortable()) {\n @if (!order()) {\n <ui5-icon name=\"lx-icons/sort\" />\n } @else if (order() === 'ASC') {\n <ui5-icon name=\"lx-icons/sort-asc\" />\n } @else if (order() === 'DESC') {\n <ui5-icon name=\"lx-icons/sort-desc\" />\n }\n }\n</div>\n", styles: [":host{display:table-cell;line-height:normal;vertical-align:middle;padding:8px;border-bottom:2px solid #e1e5eb;border-top:none;font-weight:700;color:#526179}:host.sortable{cursor:pointer}.wrapper{display:flex;align-items:center;gap:4px}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "ui5-icon", inputs: ["design", "name", "accessibleName", "showTooltip", "mode"], exportAs: ["ui5Icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
91
|
-
}
|
92
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: TableHeaderComponent, decorators: [{
|
93
|
-
type: Component,
|
94
|
-
args: [{ selector: 'lx-th', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, host: {
|
95
|
-
'[class.sortable]': 'sortable()',
|
96
|
-
'[tabIndex]': 'sortable() ? 0 : -1',
|
97
|
-
role: 'columnheader'
|
98
|
-
}, imports: [IconComponent], template: "<div class=\"wrapper\">\n <span>\n <ng-content />\n </span>\n @if (sortable()) {\n @if (!order()) {\n <ui5-icon name=\"lx-icons/sort\" />\n } @else if (order() === 'ASC') {\n <ui5-icon name=\"lx-icons/sort-asc\" />\n } @else if (order() === 'DESC') {\n <ui5-icon name=\"lx-icons/sort-desc\" />\n }\n }\n</div>\n", styles: [":host{display:table-cell;line-height:normal;vertical-align:middle;padding:8px;border-bottom:2px solid #e1e5eb;border-top:none;font-weight:700;color:#526179}:host.sortable{cursor:pointer}.wrapper{display:flex;align-items:center;gap:4px}\n"] }]
|
99
|
-
}], ctorParameters: () => [{ type: i1.TableComponent, decorators: [{
|
100
|
-
type: Optional
|
101
|
-
}] }], propDecorators: { column: [{
|
102
|
-
type: Input
|
103
|
-
}], disableSort: [{
|
104
|
-
type: Input
|
105
|
-
}], disableSortClear: [{
|
106
|
-
type: Input
|
107
|
-
}], sortChange: [{
|
108
|
-
type: Output
|
109
|
-
}], onSort: [{
|
110
|
-
type: HostListener,
|
111
|
-
args: ['keydown.enter']
|
112
|
-
}, {
|
113
|
-
type: HostListener,
|
114
|
-
args: ['click']
|
115
|
-
}] } });
|
116
|
-
function determineNewOrder(currentOrder, disableSortClear) {
|
117
|
-
if (!currentOrder) {
|
118
|
-
return 'ASC';
|
119
|
-
}
|
120
|
-
else if (currentOrder === 'ASC') {
|
121
|
-
return 'DESC';
|
122
|
-
}
|
123
|
-
else if (currentOrder === 'DESC') {
|
124
|
-
return disableSortClear ? 'ASC' : undefined;
|
125
|
-
}
|
126
|
-
return undefined;
|
127
|
-
}
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2NvcmUtdWkvY29tcG9uZW50cy90YWJsZS90YWJsZS1oZWFkZXIvdGFibGUtaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2NvcmUtdWkvY29tcG9uZW50cy90YWJsZS90YWJsZS1oZWFkZXIvdGFibGUtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFJLGlEQUFpRDtBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsaURBQWlEO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3REFBd0QsQ0FBQzs7O0FBR3RGLFlBQVksQ0FBQyxNQUFNLEVBQUU7SUFDbkIsUUFBUSxFQUFFLEVBQUU7SUFDWixHQUFHLEVBQUUsS0FBSztJQUNWLFVBQVUsRUFBRSxVQUFVO0lBQ3RCLFdBQVcsRUFBRSxpQkFBaUI7SUFDOUIsT0FBTyxFQUFFLFdBQVc7SUFDcEIsY0FBYyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDckIsT0FBTyxFQUFFO1lBQ1AsdVVBQXVVO1lBQ3ZVLG9YQUFvWDtTQUNyWDtLQUNGLENBQUM7Q0FDSCxDQUFDLENBQUM7QUFDSCxZQUFZLENBQUMsV0FBVyxFQUFFO0lBQ3hCLFFBQVEsRUFBRSxFQUFFO0lBQ1osR0FBRyxFQUFFLEtBQUs7SUFDVixVQUFVLEVBQUUsVUFBVTtJQUN0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USxDQUFDLGFBQWEsQ0FBQzs7MEJBb0NYLFFBQVE7eUNBOUJaLE1BQU07c0JBQWQsS0FBSztnQkFLRyxXQUFXO3NCQUFuQixLQUFLO2dCQU1HLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFLSSxVQUFVO3NCQUFuQixNQUFNO2dCQWdCK0MsTUFBTTtzQkFBM0QsWUFBWTt1QkFBQyxlQUFlOztzQkFBRyxZQUFZO3VCQUFDLE9BQU87O0FBWXRELFNBQVMsaUJBQWlCLENBQUMsWUFBeUIsRUFBRSxnQkFBeUI7SUFDN0UsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztTQUFNLElBQUksWUFBWSxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQ2xDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7U0FBTSxJQUFJLFlBQVksS0FBSyxNQUFNLEVBQUUsQ0FBQztRQUNuQyxPQUFPLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUM5QyxDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3B0aW9uYWwsIE91dHB1dCwgY29tcHV0ZWQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT3JkZXJPcHRpb24sIFNvcnRpbmdPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvc29ydC5waXBlJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWltcG9ydHNcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICdAdWk1L3dlYmNvbXBvbmVudHMtbmd4L21haW4vaWNvbic7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1pbXBvcnRzXG5pbXBvcnQgeyByZWdpc3Rlckljb24gfSBmcm9tICdAdWk1L3dlYmNvbXBvbmVudHMtYmFzZS9kaXN0L2Fzc2V0LXJlZ2lzdHJpZXMvSWNvbnMuanMnO1xuaW1wb3J0IHsgVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi90YWJsZS5jb21wb25lbnQnO1xuXG5yZWdpc3Rlckljb24oJ3NvcnQnLCB7XG4gIHBhdGhEYXRhOiAnJyxcbiAgbHRyOiBmYWxzZSxcbiAgY29sbGVjdGlvbjogJ2x4LWljb25zJyxcbiAgcGFja2FnZU5hbWU6ICdAbGVhbml4L3RoZW1pbmcnLFxuICB2aWV3Qm94OiAnMCAwIDE2IDE2JyxcbiAgY3VzdG9tVGVtcGxhdGU6ICgpID0+ICh7XG4gICAgc3RyaW5nczogW1xuICAgICAgJzxwYXRoIGQ9XCJNOC4wMDI3OCAyQzguMTk3NzggMiA4LjM3Nzc4IDIuMDkgOC40OTAyOCAyLjI0NzVMMTAuODkwMyA1LjU0NzVDMTEuMDI1MyA1LjcyNzUgMTEuMDQwMyA1Ljk3NSAxMC45NDI4IDYuMTdDMTAuODM3OCA2LjM3MjUgMTAuNjM1MyA2LjUgMTAuNDEwMyA2LjVMNS42MTAyOCA2LjVDNS4zODUyOCA2LjUgNS4xNzUyOCA2LjM3MjUgNS4wNzc3OCA2LjE3QzQuOTcyNzggNS45Njc1IDQuOTk1MjggNS43Mjc1IDUuMTMwMjggNS41NDc1TDcuNTMwMjggMi4yNDc1QzcuNjQyNzggMi4wOSA3LjgyMjc4IDIgOC4wMTc3OCAySDguMDAyNzhaXCIgZmlsbD1cIiM5OUE1QkJcIi8+JyxcbiAgICAgICc8cGF0aCBkPVwiTTguMDAyNzggMTQuNDU1QzcuODA3NzggMTQuNDU1IDcuNjI3NzggMTQuMzY1IDcuNTE1MjggMTQuMjA3NUw1LjExNTI4IDEwLjkwNzVDNC45ODAyOCAxMC43Mjc1IDQuOTY1MjggMTAuNDggNS4wNjI3OCAxMC4yODVDNS4xNjc3OCAxMC4wODI1IDUuMzcwMjggOS45NTQ5NiA1LjU5NTI4IDkuOTU0OTZIMTAuMzk1M0MxMC42MjAzIDkuOTU0OTYgMTAuODMwMyAxMC4wODI1IDEwLjkyNzggMTAuMjg1QzExLjAzMjggMTAuNDg3NSAxMS4wMTAzIDEwLjcyNzUgMTAuODc1MyAxMC45MDc1TDguNDc1MjggMTQuMjA3NUM4LjM2Mjc4IDE0LjM2NSA4LjE4Mjc4IDE0LjQ1NSA3Ljk4Nzc4IDE0LjQ1NUg4LjAwMjc4WlwiIGZpbGw9XCIjOTlBNUJCXCIvPidcbiAgICBdXG4gIH0pXG59KTtcbnJlZ2lzdGVySWNvbignc29ydC1kZXNjJywge1xuICBwYXRoRGF0YTogJycsXG4gIGx0cjogZmFsc2UsXG4gIGNvbGxlY3Rpb246ICdseC1pY29ucycsXG4gIHBhY2thZ2VOYW1lOiAnQGxlYW5peC90aGVtaW5nJyxcbiAgdmlld0JveDogJzAgMCAxNiAxNicsXG4gIGN1c3RvbVRlbXBsYXRlOiAoKSA9PiAoe1xuICAgIHN0cmluZ3M6IFtcbiAgICAgICc8cGF0aCBkPVwiTTguMDAyNzggMkM4LjE5Nzc4IDIgOC4zNzc3OCAyLjA5IDguNDkwMjggMi4yNDc1TDEwLjg5MDMgNS41NDc1QzExLjAyNTMgNS43Mjc1IDExLjA0MDMgNS45NzUgMTAuOTQyOCA2LjE3QzEwLjgzNzggNi4zNzI1IDEwLjYzNTMgNi41IDEwLjQxMDMgNi41TDUuNjEwMjggNi41QzUuMzg1MjggNi41IDUuMTc1MjggNi4zNzI1IDUuMDc3NzggNi4xN0M0Ljk3Mjc4IDUuOTY3NSA0Ljk5NTI4IDUuNzI3NSA1LjEzMDI4IDUuNTQ3NUw3LjUzMDI4IDIuMjQ3NUM3LjY0Mjc4IDIuMDkgNy44MjI3OCAyIDguMDE3NzggMkg4LjAwMjc4WlwiIGZpbGw9XCIjOTlBNUJCXCIvPicsXG4gICAgICAnPHBhdGggZD1cIk04LjAwMjc4IDE0LjQ1NUM3LjgwNzc4IDE0LjQ1NSA3LjYyNzc4IDE0LjM2NSA3LjUxNTI4IDE0LjIwNzVMNS4xMTUyOCAxMC45MDc1QzQuOTgwMjggMTAuNzI3NSA0Ljk2NTI4IDEwLjQ4IDUuMDYyNzggMTAuMjg1QzUuMTY3NzggMTAuMDgyNSA1LjM3MDI4IDkuOTU0OTYgNS41OTUyOCA5Ljk1NDk2SDEwLjM5NTNDMTAuNjIwMyA5Ljk1NDk2IDEwLjgzMDMgMTAuMDgyNSAxMC45Mjc4IDEwLjI4NUMxMS4wMzI4IDEwLjQ4NzUgMTEuMDEwMyAxMC43Mjc1IDEwLjg3NTMgMTAuOTA3NUw4LjQ3NTI4IDE0LjIwNzVDOC4zNjI3OCAxNC4zNjUgOC4xODI3OCAxNC40NTUgNy45ODc3OCAxNC40NTVIOC4wMDI3OFpcIiBmaWxsPVwiIzJBMzAzRFwiLz4nXG4gICAgXVxuICB9KVxufSk7XG5yZWdpc3Rlckljb24oJ3NvcnQtYXNjJywge1xuICBwYXRoRGF0YTogJycsXG4gIGx0cjogZmFsc2UsXG4gIGNvbGxlY3Rpb246ICdseC1pY29ucycsXG4gIHBhY2thZ2VOYW1lOiAnQGxlYW5peC90aGVtaW5nJyxcbiAgdmlld0JveDogJzAgMCAxNiAxNicsXG4gIGN1c3RvbVRlbXBsYXRlOiAoKSA9PiAoe1xuICAgIHN0cmluZ3M6IFtcbiAgICAgICc8cGF0aCBkPVwiTTguMDAyNzggMkM4LjE5Nzc4IDIgOC4zNzc3OCAyLjA5IDguNDkwMjggMi4yNDc1TDEwLjg5MDMgNS41NDc1QzExLjAyNTMgNS43Mjc1IDExLjA0MDMgNS45NzUgMTAuOTQyOCA2LjE3QzEwLjgzNzggNi4zNzI1IDEwLjYzNTMgNi41IDEwLjQxMDMgNi41TDUuNjEwMjggNi41QzUuMzg1MjggNi41IDUuMTc1MjggNi4zNzI1IDUuMDc3NzggNi4xN0M0Ljk3Mjc4IDUuOTY3NSA0Ljk5NTI4IDUuNzI3NSA1LjEzMDI4IDUuNTQ3NUw3LjUzMDI4IDIuMjQ3NUM3LjY0Mjc4IDIuMDkgNy44MjI3OCAyIDguMDE3NzggMkg4LjAwMjc4WlwiIGZpbGw9XCIjMkEzMDNEXCIvPicsXG4gICAgICAnPHBhdGggZD1cIk04LjAwMjc4IDE0LjQ1NUM3LjgwNzc4IDE0LjQ1NSA3LjYyNzc4IDE0LjM2NSA3LjUxNTI4IDE0LjIwNzVMNS4xMTUyOCAxMC45MDc1QzQuOTgwMjggMTAuNzI3NSA0Ljk2NTI4IDEwLjQ4IDUuMDYyNzggMTAuMjg1QzUuMTY3NzggMTAuMDgyNSA1LjM3MDI4IDkuOTU0OTYgNS41OTUyOCA5Ljk1NDk2SDEwLjM5NTNDMTAuNjIwMyA5Ljk1NDk2IDEwLjgzMDMgMTAuMDgyNSAxMC45Mjc4IDEwLjI4NUMxMS4wMzI4IDEwLjQ4NzUgMTEuMDEwMyAxMC43Mjc1IDEwLjg3NTMgMTAuOTA3NUw4LjQ3NTI4IDE0LjIwNzVDOC4zNjI3OCAxNC4zNjUgOC4xODI3OCAxNC40NTUgNy45ODc3OCAxNC40NTVIOC4wMDI3OFpcIiBmaWxsPVwiIzk5QTVCQlwiLz4nXG4gICAgXVxuICB9KVxufSk7XG5cbi8qKlxuICogVGhlIGBseC10aGAgY2FuIGJlIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBgbHgtdGFibGVgIHRvIGltcGxlbWVudCBzb3J0YWJsZSBgPHRhYmxlPmAgZWxlbWVudHMuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2x4LXRoJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLWhlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLWhlYWRlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muc29ydGFibGVdJzogJ3NvcnRhYmxlKCknLFxuICAgICdbdGFiSW5kZXhdJzogJ3NvcnRhYmxlKCkgPyAwIDogLTEnLFxuICAgIHJvbGU6ICdjb2x1bW5oZWFkZXInXG4gIH0sXG4gIGltcG9ydHM6IFtJY29uQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUhlYWRlckNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBUaGUgdGVjaG5pY2FsIGNvbHVtbiBuYW1lLlxuICAgKi9cbiAgQElucHV0KCkgY29sdW1uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgY29sdW1uIGlzIG5vdCBzb3J0YWJsZSAoZGVmYXVsdCBgZmFsc2VgKS5cbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVTb3J0ID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFByZXZlbnRzIHRoZSB1c2VyIGZyb20gY2xlYXJpbmcgdGhlIHNvcnQuXG4gICAqIE9ubHkgYWxsb3dpbmcgdG8gdG9nZ2xlIGJldHdlZW4gYXNjICYgZGVzYy5cbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVTb3J0Q2xlYXIgPSBmYWxzZTtcblxuICAvKipcbiAgICogVHJpZ2dlcnMgd2hlbmV2ZXIgdGhlIHVzZXIgY2hhbmdlcyB0aGUgc29ydCBvcmRlci5cbiAgICovXG4gIEBPdXRwdXQoKSBzb3J0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTb3J0aW5nT3B0aW9ucz4oKTtcblxuICByZWFkb25seSBzb3J0YWJsZSA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLnBhcmVudFRhYmxlPy5pc1NvcnRhYmxlKCkgJiYgIXRoaXMuZGlzYWJsZVNvcnQpID8/IGZhbHNlKTtcbiAgcmVhZG9ubHkgb3JkZXIgPSBjb21wdXRlZDxPcmRlck9wdGlvbj4oKCkgPT4ge1xuICAgIGNvbnN0IHNvcnQgPSB0aGlzLnBhcmVudFRhYmxlID8gdGhpcy5wYXJlbnRUYWJsZS5zb3J0KCkgOiB0aGlzLiNzb3J0KCk7XG4gICAgaWYgKHRoaXMuY29sdW1uICE9PSBzb3J0Py5rZXkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBzb3J0Py5vcmRlcjtcbiAgICB9XG4gIH0pO1xuXG4gIHJlYWRvbmx5ICNzb3J0ID0gc2lnbmFsPFNvcnRpbmdPcHRpb25zPih7IGtleTogdGhpcy5jb2x1bW4sIG9yZGVyOiB1bmRlZmluZWQgfSk7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcHJpdmF0ZSBwYXJlbnRUYWJsZT86IFRhYmxlQ29tcG9uZW50KSB7fVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uZW50ZXInKSBASG9zdExpc3RlbmVyKCdjbGljaycpIG9uU29ydCgpIHtcbiAgICBpZiAodGhpcy5jb2x1bW4gJiYgIXRoaXMuZGlzYWJsZVNvcnQpIHtcbiAgICAgIGNvbnN0IHNvcnQgPSB7IGtleTogdGhpcy5jb2x1bW4sIG9yZGVyOiBkZXRlcm1pbmVOZXdPcmRlcih0aGlzLm9yZGVyKCksIHRoaXMuZGlzYWJsZVNvcnRDbGVhcikgfTtcbiAgICAgIGlmICghdGhpcy5wYXJlbnRUYWJsZSkge1xuICAgICAgICB0aGlzLiNzb3J0LnNldChzb3J0KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc29ydENoYW5nZS5lbWl0KHNvcnQpO1xuICAgICAgdGhpcy5wYXJlbnRUYWJsZT8ub25UYWJsZUhlYWRlclNvcnRDaGFuZ2Uoc29ydCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGRldGVybWluZU5ld09yZGVyKGN1cnJlbnRPcmRlcjogT3JkZXJPcHRpb24sIGRpc2FibGVTb3J0Q2xlYXI6IGJvb2xlYW4pOiBPcmRlck9wdGlvbiB7XG4gIGlmICghY3VycmVudE9yZGVyKSB7XG4gICAgcmV0dXJuICdBU0MnO1xuICB9IGVsc2UgaWYgKGN1cnJlbnRPcmRlciA9PT0gJ0FTQycpIHtcbiAgICByZXR1cm4gJ0RFU0MnO1xuICB9IGVsc2UgaWYgKGN1cnJlbnRPcmRlciA9PT0gJ0RFU0MnKSB7XG4gICAgcmV0dXJuIGRpc2FibGVTb3J0Q2xlYXIgPyAnQVNDJyA6IHVuZGVmaW5lZDtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuIiwiPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cbiAgPHNwYW4+XG4gICAgPG5nLWNvbnRlbnQgLz5cbiAgPC9zcGFuPlxuICBAaWYgKHNvcnRhYmxlKCkpIHtcbiAgICBAaWYgKCFvcmRlcigpKSB7XG4gICAgICA8dWk1LWljb24gbmFtZT1cImx4LWljb25zL3NvcnRcIiAvPlxuICAgIH0gQGVsc2UgaWYgKG9yZGVyKCkgPT09ICdBU0MnKSB7XG4gICAgICA8dWk1LWljb24gbmFtZT1cImx4LWljb25zL3NvcnQtYXNjXCIgLz5cbiAgICB9IEBlbHNlIGlmIChvcmRlcigpID09PSAnREVTQycpIHtcbiAgICAgIDx1aTUtaWNvbiBuYW1lPVwibHgtaWNvbnMvc29ydC1kZXNjXCIgLz5cbiAgICB9XG4gIH1cbjwvZGl2PlxuIl19
|
@@ -1,77 +0,0 @@
|
|
1
|
-
import { Directive, input, model } from '@angular/core';
|
2
|
-
import * as i0 from "@angular/core";
|
3
|
-
/**
|
4
|
-
* The `lx-table` directive can be applied to `<table>` elements to provide a common styling.
|
5
|
-
* Furthermore it supports column sorting in combination with `<lx-th>` for table headers.
|
6
|
-
*
|
7
|
-
*
|
8
|
-
* ## Usage
|
9
|
-
*
|
10
|
-
* 1. Import the `TableComponent` from `@leanix/components` where you want to use it.
|
11
|
-
*
|
12
|
-
* ```ts
|
13
|
-
* import { TableComponent } from '@leanix/components';
|
14
|
-
* ```
|
15
|
-
*
|
16
|
-
* 2. Add the `lx-table` directive to your `<table>` element.
|
17
|
-
*
|
18
|
-
* ```html
|
19
|
-
* <table lx-table></table>
|
20
|
-
* ```
|
21
|
-
*
|
22
|
-
* ## Sortability
|
23
|
-
*
|
24
|
-
* To provide sortability within a table, the `isSortable` input has to be set to `true`
|
25
|
-
* and the columns that support sorting should be `<lx-th>` elements with a column name applied via the `column` input.
|
26
|
-
*
|
27
|
-
* Sorting can be disabled for individual columns via the `disableSort` input.
|
28
|
-
*
|
29
|
-
* By default the sort order of columns can be changed between unsorted, ascending, and descending (after descending back to unsorted).
|
30
|
-
* To prevent the user from clearing the sort order and just allow toggling between ascending and descending the `disableSortClear` input can be set to `true`.
|
31
|
-
*
|
32
|
-
* To handle sort changes, the `(sortChange)` output can be used to receive the new sort (`key` of the column and `order` - either `ASC`, `DESC`, or `undefined`).
|
33
|
-
*
|
34
|
-
* ### Example code
|
35
|
-
* ```html
|
36
|
-
* <table lx-table [isSortable]="true" [(sort)]="sort" (sortChange)="...">
|
37
|
-
* <thead>
|
38
|
-
* <lx-th column="column1" [disableSortClear]="false">Allows asc, desc & unsorted</lx-th>
|
39
|
-
* <lx-th column="column2" [disableSortClear]="true">Allows only asc & desc</lx-th>
|
40
|
-
* <lx-th column="column3" [disableSort]="true">Is not sortable</lx-th>
|
41
|
-
* </thead>
|
42
|
-
* </table>
|
43
|
-
* ```
|
44
|
-
*/
|
45
|
-
// eslint-disable-next-line @angular-eslint/directive-class-suffix
|
46
|
-
export class TableComponent {
|
47
|
-
constructor() {
|
48
|
-
/**
|
49
|
-
* This enables or disables the sortability of the table.
|
50
|
-
*/
|
51
|
-
this.isSortable = input(false);
|
52
|
-
/**
|
53
|
-
* The sort state of the table. Which column is sorted in what order.
|
54
|
-
*/
|
55
|
-
this.sort = model({});
|
56
|
-
}
|
57
|
-
/**
|
58
|
-
* @internal To be called from `lx-th` elements to set the sort state.
|
59
|
-
*/
|
60
|
-
onTableHeaderSortChange(sort) {
|
61
|
-
this.sort.set(sort);
|
62
|
-
}
|
63
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: TableComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
64
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.8", type: TableComponent, isStandalone: true, selector: "table[lx-table]", inputs: { isSortable: { classPropertyName: "isSortable", publicName: "isSortable", isSignal: true, isRequired: false, transformFunction: null }, sort: { classPropertyName: "sort", publicName: "sort", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { sort: "sortChange" }, host: { classAttribute: "table table-hover" }, ngImport: i0 }); }
|
65
|
-
}
|
66
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: TableComponent, decorators: [{
|
67
|
-
type: Directive,
|
68
|
-
args: [{
|
69
|
-
// eslint-disable-next-line @angular-eslint/directive-selector
|
70
|
-
selector: 'table[lx-table]',
|
71
|
-
host: {
|
72
|
-
class: 'table table-hover'
|
73
|
-
},
|
74
|
-
standalone: true
|
75
|
-
}]
|
76
|
-
}] });
|
77
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvY29yZS11aS9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBR3hEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlDRztBQVNILGtFQUFrRTtBQUNsRSxNQUFNLE9BQU8sY0FBYztJQVQzQjtRQVVFOztXQUVHO1FBQ00sZUFBVSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVuQzs7V0FFRztRQUNNLFNBQUksR0FBRyxLQUFLLENBQWlCLEVBQUUsQ0FBQyxDQUFDO0tBUTNDO0lBTkM7O09BRUc7SUFDSCx1QkFBdUIsQ0FBQyxJQUFvQjtRQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QixDQUFDOzhHQWhCVSxjQUFjO2tHQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBVDFCLFNBQVM7bUJBQUM7b0JBQ1QsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixJQUFJLEVBQUU7d0JBQ0osS0FBSyxFQUFFLG1CQUFtQjtxQkFDM0I7b0JBQ0QsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBpbnB1dCwgbW9kZWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNvcnRpbmdPcHRpb25zIH0gZnJvbSAnLi4vLi4vcGlwZXMvc29ydC5waXBlJztcblxuLyoqXG4gKiBUaGUgYGx4LXRhYmxlYCBkaXJlY3RpdmUgY2FuIGJlIGFwcGxpZWQgdG8gYDx0YWJsZT5gIGVsZW1lbnRzIHRvIHByb3ZpZGUgYSBjb21tb24gc3R5bGluZy5cbiAqIEZ1cnRoZXJtb3JlIGl0IHN1cHBvcnRzIGNvbHVtbiBzb3J0aW5nIGluIGNvbWJpbmF0aW9uIHdpdGggYDxseC10aD5gIGZvciB0YWJsZSBoZWFkZXJzLlxuICpcbiAqXG4gKiAjIyBVc2FnZVxuICpcbiAqIDEuIEltcG9ydCB0aGUgYFRhYmxlQ29tcG9uZW50YCBmcm9tIGBAbGVhbml4L2NvbXBvbmVudHNgIHdoZXJlIHlvdSB3YW50IHRvIHVzZSBpdC5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgVGFibGVDb21wb25lbnQgfSBmcm9tICdAbGVhbml4L2NvbXBvbmVudHMnO1xuICogYGBgXG4gKlxuICogMi4gQWRkIHRoZSBgbHgtdGFibGVgIGRpcmVjdGl2ZSB0byB5b3VyIGA8dGFibGU+YCBlbGVtZW50LlxuICpcbiAqIGBgYGh0bWxcbiAqIDx0YWJsZSBseC10YWJsZT48L3RhYmxlPlxuICogYGBgXG4gKlxuICogIyMgU29ydGFiaWxpdHlcbiAqXG4gKiBUbyBwcm92aWRlIHNvcnRhYmlsaXR5IHdpdGhpbiBhIHRhYmxlLCB0aGUgYGlzU29ydGFibGVgIGlucHV0IGhhcyB0byBiZSBzZXQgdG8gYHRydWVgXG4gKiBhbmQgdGhlIGNvbHVtbnMgdGhhdCBzdXBwb3J0IHNvcnRpbmcgc2hvdWxkIGJlIGA8bHgtdGg+YCBlbGVtZW50cyB3aXRoIGEgY29sdW1uIG5hbWUgYXBwbGllZCB2aWEgdGhlIGBjb2x1bW5gIGlucHV0LlxuICpcbiAqIFNvcnRpbmcgY2FuIGJlIGRpc2FibGVkIGZvciBpbmRpdmlkdWFsIGNvbHVtbnMgdmlhIHRoZSBgZGlzYWJsZVNvcnRgIGlucHV0LlxuICpcbiAqIEJ5IGRlZmF1bHQgdGhlIHNvcnQgb3JkZXIgb2YgY29sdW1ucyBjYW4gYmUgY2hhbmdlZCBiZXR3ZWVuIHVuc29ydGVkLCBhc2NlbmRpbmcsIGFuZCBkZXNjZW5kaW5nIChhZnRlciBkZXNjZW5kaW5nIGJhY2sgdG8gdW5zb3J0ZWQpLlxuICogVG8gcHJldmVudCB0aGUgdXNlciBmcm9tIGNsZWFyaW5nIHRoZSBzb3J0IG9yZGVyIGFuZCBqdXN0IGFsbG93IHRvZ2dsaW5nIGJldHdlZW4gYXNjZW5kaW5nIGFuZCBkZXNjZW5kaW5nIHRoZSBgZGlzYWJsZVNvcnRDbGVhcmAgaW5wdXQgY2FuIGJlIHNldCB0byBgdHJ1ZWAuXG4gKlxuICogVG8gaGFuZGxlIHNvcnQgY2hhbmdlcywgdGhlIGAoc29ydENoYW5nZSlgIG91dHB1dCBjYW4gYmUgdXNlZCB0byByZWNlaXZlIHRoZSBuZXcgc29ydCAoYGtleWAgb2YgdGhlIGNvbHVtbiBhbmQgYG9yZGVyYCAtIGVpdGhlciBgQVNDYCwgYERFU0NgLCBvciBgdW5kZWZpbmVkYCkuXG4gKlxuICogIyMjIEV4YW1wbGUgY29kZVxuICogYGBgaHRtbFxuICogPHRhYmxlIGx4LXRhYmxlIFtpc1NvcnRhYmxlXT1cInRydWVcIiBbKHNvcnQpXT1cInNvcnRcIiAoc29ydENoYW5nZSk9XCIuLi5cIj5cbiAqICAgPHRoZWFkPlxuICogICAgIDxseC10aCBjb2x1bW49XCJjb2x1bW4xXCIgW2Rpc2FibGVTb3J0Q2xlYXJdPVwiZmFsc2VcIj5BbGxvd3MgYXNjLCBkZXNjICYgdW5zb3J0ZWQ8L2x4LXRoPlxuICogICAgIDxseC10aCBjb2x1bW49XCJjb2x1bW4yXCIgW2Rpc2FibGVTb3J0Q2xlYXJdPVwidHJ1ZVwiPkFsbG93cyBvbmx5IGFzYyAmIGRlc2M8L2x4LXRoPlxuICogICAgIDxseC10aCBjb2x1bW49XCJjb2x1bW4zXCIgW2Rpc2FibGVTb3J0XT1cInRydWVcIj5JcyBub3Qgc29ydGFibGU8L2x4LXRoPlxuICogICA8L3RoZWFkPlxuICogPC90YWJsZT5cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICd0YWJsZVtseC10YWJsZV0nLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICd0YWJsZSB0YWJsZS1ob3ZlcidcbiAgfSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRoaXMgZW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgc29ydGFiaWxpdHkgb2YgdGhlIHRhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNTb3J0YWJsZSA9IGlucHV0KGZhbHNlKTtcblxuICAvKipcbiAgICogVGhlIHNvcnQgc3RhdGUgb2YgdGhlIHRhYmxlLiBXaGljaCBjb2x1bW4gaXMgc29ydGVkIGluIHdoYXQgb3JkZXIuXG4gICAqL1xuICByZWFkb25seSBzb3J0ID0gbW9kZWw8U29ydGluZ09wdGlvbnM+KHt9KTtcblxuICAvKipcbiAgICogQGludGVybmFsIFRvIGJlIGNhbGxlZCBmcm9tIGBseC10aGAgZWxlbWVudHMgdG8gc2V0IHRoZSBzb3J0IHN0YXRlLlxuICAgKi9cbiAgb25UYWJsZUhlYWRlclNvcnRDaGFuZ2Uoc29ydDogU29ydGluZ09wdGlvbnMpIHtcbiAgICB0aGlzLnNvcnQuc2V0KHNvcnQpO1xuICB9XG59XG4iXX0=
|
@@ -1,14 +0,0 @@
|
|
1
|
-
import { Component } from '@angular/core';
|
2
|
-
import * as i0 from "@angular/core";
|
3
|
-
/**
|
4
|
-
* Tiny spinner component is used to show a small spinner.
|
5
|
-
*/
|
6
|
-
export class TinySpinnerComponent {
|
7
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: TinySpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
8
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: TinySpinnerComponent, isStandalone: true, selector: "lx-tiny-spinner", ngImport: i0, template: "<i class=\"far fa-spinner fa-spin fa-fw\"></i>\n" }); }
|
9
|
-
}
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: TinySpinnerComponent, decorators: [{
|
11
|
-
type: Component,
|
12
|
-
args: [{ selector: 'lx-tiny-spinner', standalone: true, template: "<i class=\"far fa-spinner fa-spin fa-fw\"></i>\n" }]
|
13
|
-
}] });
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlueS1zcGlubmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2NvcmUtdWkvY29tcG9uZW50cy90aW55LXNwaW5uZXIvdGlueS1zcGlubmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2NvcmUtdWkvY29tcG9uZW50cy90aW55LXNwaW5uZXIvdGlueS1zcGlubmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTFDOztHQUVHO0FBTUgsTUFBTSxPQUFPLG9CQUFvQjs4R0FBcEIsb0JBQW9CO2tHQUFwQixvQkFBb0IsMkVDVmpDLGtEQUNBOzsyRkRTYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsaUJBQWlCLGNBRWYsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIFRpbnkgc3Bpbm5lciBjb21wb25lbnQgaXMgdXNlZCB0byBzaG93IGEgc21hbGwgc3Bpbm5lci5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbHgtdGlueS1zcGlubmVyJyxcbiAgdGVtcGxhdGVVcmw6ICd0aW55LXNwaW5uZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFRpbnlTcGlubmVyQ29tcG9uZW50IHt9XG4iLCI8aSBjbGFzcz1cImZhciBmYS1zcGlubmVyIGZhLXNwaW4gZmEtZndcIj48L2k+XG4iXX0=
|
@@ -1,20 +0,0 @@
|
|
1
|
-
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
2
|
-
import * as i0 from "@angular/core";
|
3
|
-
export class TokenComponent {
|
4
|
-
constructor(elementRef) {
|
5
|
-
this.elementRef = elementRef;
|
6
|
-
}
|
7
|
-
show() {
|
8
|
-
this.elementRef.nativeElement.style.display = 'inline-block';
|
9
|
-
}
|
10
|
-
hide() {
|
11
|
-
this.elementRef.nativeElement.style.display = 'none';
|
12
|
-
}
|
13
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: TokenComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
14
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: TokenComponent, isStandalone: true, selector: "lx-token", ngImport: i0, template: "<ng-content />\n", changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
15
|
-
}
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: TokenComponent, decorators: [{
|
17
|
-
type: Component,
|
18
|
-
args: [{ selector: 'lx-token', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content />\n" }]
|
19
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }] });
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvY29yZS11aS9jb21wb25lbnRzL3Rva2VuaXplci90b2tlbi90b2tlbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9jb3JlLXVpL2NvbXBvbmVudHMvdG9rZW5pemVyL3Rva2VuL3Rva2VuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7O0FBUS9FLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLFlBQW9CLFVBQW1DO1FBQW5DLGVBQVUsR0FBVixVQUFVLENBQXlCO0lBQUcsQ0FBQztJQUUzRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxjQUFjLENBQUM7SUFDL0QsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUN2RCxDQUFDOzhHQVRVLGNBQWM7a0dBQWQsY0FBYyxvRUNSM0Isa0JBQ0E7OzJGRE9hLGNBQWM7a0JBTjFCLFNBQVM7K0JBQ0UsVUFBVSxjQUNSLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbHgtdG9rZW4nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGVVcmw6ICcuL3Rva2VuLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBUb2tlbkNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHt9XG5cbiAgc2hvdygpIHtcbiAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7XG4gIH1cblxuICBoaWRlKCkge1xuICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIH1cbn1cbiIsIjxuZy1jb250ZW50IC8+XG4iXX0=
|
@@ -1,44 +0,0 @@
|
|
1
|
-
import { NgTemplateOutlet } from '@angular/common';
|
2
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, DestroyRef, effect, inject, input, signal, ViewChild } from '@angular/core';
|
3
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
4
|
-
import { SatPopoverComponent, SatPopoverModule } from '@ncstate/sat-popover';
|
5
|
-
import { TokenizerComponent } from '../tokenizer.component';
|
6
|
-
import * as i0 from "@angular/core";
|
7
|
-
import * as i1 from "@ncstate/sat-popover";
|
8
|
-
export class TokenizerOverflowPopoverComponent {
|
9
|
-
constructor() {
|
10
|
-
this.destroyRef = inject(DestroyRef);
|
11
|
-
this.startIndex = signal(0);
|
12
|
-
this.changeDetectorRef = inject(ChangeDetectorRef);
|
13
|
-
this.tokenizer = input.required();
|
14
|
-
this.horizontalAlign = input('after');
|
15
|
-
this.verticalAlign = input('start');
|
16
|
-
effect(() => {
|
17
|
-
this.overflowClickSubscription?.unsubscribe();
|
18
|
-
this.overflowClickSubscription = this.tokenizer()
|
19
|
-
.overflowPlaceholderClick.pipe(takeUntilDestroyed(this.destroyRef))
|
20
|
-
.subscribe(({ startIndex, counterElement }) => {
|
21
|
-
this.startIndex.set(startIndex);
|
22
|
-
this.popover.anchor = counterElement;
|
23
|
-
this.popover.open();
|
24
|
-
});
|
25
|
-
});
|
26
|
-
}
|
27
|
-
closePopover() {
|
28
|
-
this.popover.close();
|
29
|
-
this.changeDetectorRef.detectChanges();
|
30
|
-
}
|
31
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: TokenizerOverflowPopoverComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
32
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: TokenizerOverflowPopoverComponent, isStandalone: true, selector: "lx-tokenizer-overflow-popover", inputs: { tokenizer: { classPropertyName: "tokenizer", publicName: "tokenizer", isSignal: true, isRequired: true, transformFunction: null }, horizontalAlign: { classPropertyName: "horizontalAlign", publicName: "horizontalAlign", isSignal: true, isRequired: false, transformFunction: null }, verticalAlign: { classPropertyName: "verticalAlign", publicName: "verticalAlign", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "popoverTemplate", first: true, predicate: ["popoverTemplate"], descendants: true }], viewQueries: [{ propertyName: "popover", first: true, predicate: SatPopoverComponent, descendants: true }], ngImport: i0, template: "<sat-popover\n (backdropClicked)=\"closePopover()\"\n [hasBackdrop]=\"true\"\n [horizontalAlign]=\"horizontalAlign()\"\n [verticalAlign]=\"verticalAlign()\"\n openTransition=\"100ms\"\n closeTransition=\"100ms\"\n>\n @if (popoverTemplate) {\n <div\n class=\"tokenizerPopoverContentWrapper\"\n [class.before]=\"horizontalAlign() === 'before'\"\n [class.after]=\"horizontalAlign() === 'after'\"\n >\n <ng-container *ngTemplateOutlet=\"popoverTemplate; context: { $implicit: startIndex() }\" />\n </div>\n }\n</sat-popover>\n", styles: [".tokenizerPopoverContentWrapper{padding:16px;background:#fff;border-radius:4px;box-shadow:0 8px 14px #5261794d}.tokenizerPopoverContentWrapper.before{margin-right:10px}.tokenizerPopoverContentWrapper.after{margin-left:10px}\n"], dependencies: [{ kind: "ngmodule", type: SatPopoverModule }, { kind: "component", type: i1.SatPopoverComponent, selector: "sat-popover", inputs: ["anchor", "horizontalAlign", "xAlign", "verticalAlign", "yAlign", "forceAlignment", "lockAlignment", "autoFocus", "restoreFocus", "scrollStrategy", "hasBackdrop", "interactiveClose", "openTransition", "closeTransition", "openAnimationStartAtScale", "closeAnimationEndAtScale", "backdropClass", "panelClass"], outputs: ["opened", "closed", "afterOpen", "afterClose", "backdropClicked", "overlayKeydown"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
33
|
-
}
|
34
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: TokenizerOverflowPopoverComponent, decorators: [{
|
35
|
-
type: Component,
|
36
|
-
args: [{ selector: 'lx-tokenizer-overflow-popover', standalone: true, imports: [TokenizerComponent, SatPopoverModule, NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "<sat-popover\n (backdropClicked)=\"closePopover()\"\n [hasBackdrop]=\"true\"\n [horizontalAlign]=\"horizontalAlign()\"\n [verticalAlign]=\"verticalAlign()\"\n openTransition=\"100ms\"\n closeTransition=\"100ms\"\n>\n @if (popoverTemplate) {\n <div\n class=\"tokenizerPopoverContentWrapper\"\n [class.before]=\"horizontalAlign() === 'before'\"\n [class.after]=\"horizontalAlign() === 'after'\"\n >\n <ng-container *ngTemplateOutlet=\"popoverTemplate; context: { $implicit: startIndex() }\" />\n </div>\n }\n</sat-popover>\n", styles: [".tokenizerPopoverContentWrapper{padding:16px;background:#fff;border-radius:4px;box-shadow:0 8px 14px #5261794d}.tokenizerPopoverContentWrapper.before{margin-right:10px}.tokenizerPopoverContentWrapper.after{margin-left:10px}\n"] }]
|
37
|
-
}], ctorParameters: () => [], propDecorators: { popoverTemplate: [{
|
38
|
-
type: ContentChild,
|
39
|
-
args: ['popoverTemplate']
|
40
|
-
}], popover: [{
|
41
|
-
type: ViewChild,
|
42
|
-
args: [SatPopoverComponent]
|
43
|
-
}] } });
|
44
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5pemVyLW92ZXJmbG93LXBvcG92ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvY29yZS11aS9jb21wb25lbnRzL3Rva2VuaXplci90b2tlbml6ZXItb3ZlcmZsb3ctcG9wb3Zlci90b2tlbml6ZXItb3ZlcmZsb3ctcG9wb3Zlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9jb3JlLXVpL2NvbXBvbmVudHMvdG9rZW5pemVyL3Rva2VuaXplci1vdmVyZmxvdy1wb3BvdmVyL3Rva2VuaXplci1vdmVyZmxvdy1wb3BvdmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG1CQUFtQixFQUE2QixnQkFBZ0IsRUFBMkIsTUFBTSxzQkFBc0IsQ0FBQztBQUVqSSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBUzVELE1BQU0sT0FBTyxpQ0FBaUM7SUFhNUM7UUFaUSxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTlCLGVBQVUsR0FBRyxNQUFNLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDakMsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFLdEQsY0FBUyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQXNCLENBQUM7UUFDakQsb0JBQWUsR0FBRyxLQUFLLENBQTRCLE9BQU8sQ0FBQyxDQUFDO1FBQzVELGtCQUFhLEdBQUcsS0FBSyxDQUEwQixPQUFPLENBQUMsQ0FBQztRQUd0RCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxDQUFDLHlCQUF5QixFQUFFLFdBQVcsRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFO2lCQUM5Qyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2lCQUNsRSxTQUFTLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFO2dCQUM1QyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVMsWUFBWTtRQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QyxDQUFDOzhHQTdCVSxpQ0FBaUM7a0dBQWpDLGlDQUFpQyx1cUJBT2pDLG1CQUFtQixnRENqQ2hDLGlqQkFrQkEsMFJER2dDLGdCQUFnQiwwZ0JBQUUsZ0JBQWdCOzsyRkFLckQsaUNBQWlDO2tCQVI3QyxTQUFTOytCQUNFLCtCQUErQixjQUM3QixJQUFJLFdBQ1AsQ0FBQyxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxtQkFHaEQsdUJBQXVCLENBQUMsTUFBTTt3REFRSyxlQUFlO3NCQUFsRSxZQUFZO3VCQUFDLGlCQUFpQjtnQkFDb0IsT0FBTztzQkFBekQsU0FBUzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIERlc3Ryb3lSZWYsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgc2lnbmFsLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgU2F0UG9wb3ZlckNvbXBvbmVudCwgU2F0UG9wb3Zlckhvcml6b250YWxBbGlnbiwgU2F0UG9wb3Zlck1vZHVsZSwgU2F0UG9wb3ZlclZlcnRpY2FsQWxpZ24gfSBmcm9tICdAbmNzdGF0ZS9zYXQtcG9wb3Zlcic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRva2VuaXplckNvbXBvbmVudCB9IGZyb20gJy4uL3Rva2VuaXplci5jb21wb25lbnQnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbHgtdG9rZW5pemVyLW92ZXJmbG93LXBvcG92ZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbVG9rZW5pemVyQ29tcG9uZW50LCBTYXRQb3BvdmVyTW9kdWxlLCBOZ1RlbXBsYXRlT3V0bGV0XSxcbiAgdGVtcGxhdGVVcmw6ICcuL3Rva2VuaXplci1vdmVyZmxvdy1wb3BvdmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdG9rZW5pemVyLW92ZXJmbG93LXBvcG92ZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVG9rZW5pemVyT3ZlcmZsb3dQb3BvdmVyQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcml2YXRlIG92ZXJmbG93Q2xpY2tTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCBzdGFydEluZGV4ID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gIEBDb250ZW50Q2hpbGQoJ3BvcG92ZXJUZW1wbGF0ZScpIHByb3RlY3RlZCByZWFkb25seSBwb3BvdmVyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcbiAgQFZpZXdDaGlsZChTYXRQb3BvdmVyQ29tcG9uZW50KSBwcm90ZWN0ZWQgcmVhZG9ubHkgcG9wb3ZlciE6IFNhdFBvcG92ZXJDb21wb25lbnQ7XG5cbiAgdG9rZW5pemVyID0gaW5wdXQucmVxdWlyZWQ8VG9rZW5pemVyQ29tcG9uZW50PigpO1xuICBob3Jpem9udGFsQWxpZ24gPSBpbnB1dDxTYXRQb3BvdmVySG9yaXpvbnRhbEFsaWduPignYWZ0ZXInKTtcbiAgdmVydGljYWxBbGlnbiA9IGlucHV0PFNhdFBvcG92ZXJWZXJ0aWNhbEFsaWduPignc3RhcnQnKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgdGhpcy5vdmVyZmxvd0NsaWNrU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5vdmVyZmxvd0NsaWNrU3Vic2NyaXB0aW9uID0gdGhpcy50b2tlbml6ZXIoKVxuICAgICAgICAub3ZlcmZsb3dQbGFjZWhvbGRlckNsaWNrLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgIC5zdWJzY3JpYmUoKHsgc3RhcnRJbmRleCwgY291bnRlckVsZW1lbnQgfSkgPT4ge1xuICAgICAgICAgIHRoaXMuc3RhcnRJbmRleC5zZXQoc3RhcnRJbmRleCk7XG4gICAgICAgICAgdGhpcy5wb3BvdmVyLmFuY2hvciA9IGNvdW50ZXJFbGVtZW50O1xuICAgICAgICAgIHRoaXMucG9wb3Zlci5vcGVuKCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNsb3NlUG9wb3ZlcigpOiB2b2lkIHtcbiAgICB0aGlzLnBvcG92ZXIuY2xvc2UoKTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxufVxuIiwiPHNhdC1wb3BvdmVyXG4gIChiYWNrZHJvcENsaWNrZWQpPVwiY2xvc2VQb3BvdmVyKClcIlxuICBbaGFzQmFja2Ryb3BdPVwidHJ1ZVwiXG4gIFtob3Jpem9udGFsQWxpZ25dPVwiaG9yaXpvbnRhbEFsaWduKClcIlxuICBbdmVydGljYWxBbGlnbl09XCJ2ZXJ0aWNhbEFsaWduKClcIlxuICBvcGVuVHJhbnNpdGlvbj1cIjEwMG1zXCJcbiAgY2xvc2VUcmFuc2l0aW9uPVwiMTAwbXNcIlxuPlxuICBAaWYgKHBvcG92ZXJUZW1wbGF0ZSkge1xuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwidG9rZW5pemVyUG9wb3ZlckNvbnRlbnRXcmFwcGVyXCJcbiAgICAgIFtjbGFzcy5iZWZvcmVdPVwiaG9yaXpvbnRhbEFsaWduKCkgPT09ICdiZWZvcmUnXCJcbiAgICAgIFtjbGFzcy5hZnRlcl09XCJob3Jpem9udGFsQWxpZ24oKSA9PT0gJ2FmdGVyJ1wiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBvcG92ZXJUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHN0YXJ0SW5kZXgoKSB9XCIgLz5cbiAgICA8L2Rpdj5cbiAgfVxuPC9zYXQtcG9wb3Zlcj5cbiJdfQ==
|
@@ -1,149 +0,0 @@
|
|
1
|
-
import { NgIf } from '@angular/common';
|
2
|
-
import { ChangeDetectionStrategy, Component, computed, ContentChildren, effect, ElementRef, EventEmitter, input, Output, signal, ViewChild } from '@angular/core';
|
3
|
-
import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
|
4
|
-
import { TranslateModule } from '@ngx-translate/core';
|
5
|
-
import { combineLatest } from 'rxjs';
|
6
|
-
import { debounceTime, distinctUntilChanged, filter, map, startWith } from 'rxjs/operators';
|
7
|
-
import { ButtonComponent } from '../../components/button/button.component';
|
8
|
-
import { CounterComponent } from '../../components/counter/counter.component';
|
9
|
-
import { TokenComponent } from './token/token.component';
|
10
|
-
import * as i0 from "@angular/core";
|
11
|
-
import * as i1 from "../../services/resize-observer.service";
|
12
|
-
import * as i2 from "@ngx-translate/core";
|
13
|
-
/**
|
14
|
-
* The tokenizer component (`lx-tokenizer`) is responsible for rendering a list of items into a container and hiding those that do not fit behind a placeholder. The items are represented as `lx-token`. Each `lx-token` allows to project any content into it, so anything can become a token. The tokenizer calculates how many items fit into the container (based on width), hiding those items that are overflowing and showing a overflow placeholder instead (e.g. "+4").
|
15
|
-
*
|
16
|
-
* ## Usage
|
17
|
-
*
|
18
|
-
* 1. Import `TokenizerComponent` & `TokenComponent` into your module or component.
|
19
|
-
* 2. Use the component in your template. All items should be wrapped in a `lx-token` element for the tokenizer to identify the individual tokens.
|
20
|
-
*
|
21
|
-
* ```ts
|
22
|
-
* import { TokenizerComponent } from '@leanix/components';
|
23
|
-
*
|
24
|
-
* @Component({
|
25
|
-
* selector: 'lx-my-component',
|
26
|
-
* standalone: true,
|
27
|
-
* imports: [TokenizerComponent, TokenComponent],
|
28
|
-
* template: `
|
29
|
-
* <lx-tokenizer>
|
30
|
-
* <lx-token>Token One</lx-token>
|
31
|
-
* <lx-token>Token Two</lx-token>
|
32
|
-
* </lx-tokenizer>
|
33
|
-
* `
|
34
|
-
* })
|
35
|
-
* export class MyComponent {}
|
36
|
-
* ```
|
37
|
-
*
|
38
|
-
* ## API
|
39
|
-
*
|
40
|
-
* ### Inputs
|
41
|
-
*
|
42
|
-
* - `active`: Can be used to activate & deactivate tokenization
|
43
|
-
*
|
44
|
-
* ### Outputs
|
45
|
-
*
|
46
|
-
* - `overflowPlaceholderClick`: Fires when the user clicks on the overflow placeholder
|
47
|
-
*
|
48
|
-
* ### Content projection
|
49
|
-
*
|
50
|
-
* - `lx-token`: All `lx-tokens` will be projected into the tokenizer
|
51
|
-
*/
|
52
|
-
export class TokenizerComponent {
|
53
|
-
constructor(elementRef, destroyRef, changeDetectorRef, resizeObserverService) {
|
54
|
-
this.elementRef = elementRef;
|
55
|
-
this.destroyRef = destroyRef;
|
56
|
-
this.changeDetectorRef = changeDetectorRef;
|
57
|
-
this.resizeObserverService = resizeObserverService;
|
58
|
-
/** @internal */
|
59
|
-
this.NAME = 'TokenizerComponent';
|
60
|
-
this.overflowItems = signal([]);
|
61
|
-
this.overflowItemCount = computed(() => this.overflowItems().length);
|
62
|
-
this.showCounter = computed(() => this.active() && this.overflowItemCount() > 0);
|
63
|
-
/** Can be used to activate & deactivate tokenization */
|
64
|
-
this.active = input(true);
|
65
|
-
this.active$ = toObservable(this.active);
|
66
|
-
this.overflowStartIndex = signal(null);
|
67
|
-
/**
|
68
|
-
* Emitted when the counter button is clicked
|
69
|
-
* @param startIndex The index of the first overflowing element
|
70
|
-
* @param counterElement The counter button element
|
71
|
-
*/
|
72
|
-
this.overflowPlaceholderClick = new EventEmitter();
|
73
|
-
effect(() => {
|
74
|
-
// Whenever the tokenizer is disabled, ensure all tokens are shown
|
75
|
-
if (!this.active()) {
|
76
|
-
this.items.forEach((item) => item.show());
|
77
|
-
}
|
78
|
-
});
|
79
|
-
}
|
80
|
-
ngAfterContentInit() {
|
81
|
-
const containerWidth = this.resizeObserverService.createResizeObservable(this.elementRef.nativeElement).pipe(map((entry) => entry.contentRect.width ?? 0), debounceTime(16), distinctUntilChanged());
|
82
|
-
const itemsChanged$ = this.items.changes;
|
83
|
-
combineLatest([
|
84
|
-
this.active$,
|
85
|
-
containerWidth.pipe(startWith(this.elementRef.nativeElement.getBoundingClientRect().width)),
|
86
|
-
itemsChanged$.pipe(startWith(this.items))
|
87
|
-
])
|
88
|
-
.pipe(filter(([active]) => active), takeUntilDestroyed(this.destroyRef))
|
89
|
-
.subscribe(([, containerWidth]) => {
|
90
|
-
this.tokenize(containerWidth);
|
91
|
-
});
|
92
|
-
}
|
93
|
-
/** @internal */
|
94
|
-
onCounterClicked() {
|
95
|
-
const startIndex = this.overflowStartIndex();
|
96
|
-
if (typeof startIndex === 'number') {
|
97
|
-
this.overflowPlaceholderClick.emit({ startIndex, counterElement: this.counter });
|
98
|
-
}
|
99
|
-
}
|
100
|
-
tokenize(containerWidth) {
|
101
|
-
if (!this.items) {
|
102
|
-
return;
|
103
|
-
}
|
104
|
-
this.items.forEach((item) => item.hide());
|
105
|
-
this.overflowItems.set([]);
|
106
|
-
this.changeDetectorRef.detectChanges();
|
107
|
-
let index = 0;
|
108
|
-
for (const item of this.items) {
|
109
|
-
item.show();
|
110
|
-
const usedWidth = this.tokensContainer.nativeElement.getBoundingClientRect().width;
|
111
|
-
if (usedWidth > containerWidth) {
|
112
|
-
item.hide();
|
113
|
-
this.updateOverflowCounter(index);
|
114
|
-
const usedWidthIncludingCounter = this.tokensContainer.nativeElement.getBoundingClientRect().width;
|
115
|
-
if (usedWidthIncludingCounter > containerWidth && index >= 1) {
|
116
|
-
const previousItem = this.items.toArray()[index - 1];
|
117
|
-
previousItem?.hide();
|
118
|
-
this.updateOverflowCounter(index - 1);
|
119
|
-
}
|
120
|
-
break;
|
121
|
-
}
|
122
|
-
index++;
|
123
|
-
}
|
124
|
-
}
|
125
|
-
updateOverflowCounter(index) {
|
126
|
-
this.overflowStartIndex.set(index);
|
127
|
-
const overflowingItems = this.items?.toArray().slice(index) ?? [];
|
128
|
-
this.overflowItems.set(overflowingItems);
|
129
|
-
this.changeDetectorRef.detectChanges();
|
130
|
-
}
|
131
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: TokenizerComponent, deps: [{ token: i0.ElementRef }, { token: i0.DestroyRef }, { token: i0.ChangeDetectorRef }, { token: i1.ResizeObserverService }], target: i0.ɵɵFactoryTarget.Component }); }
|
132
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: TokenizerComponent, isStandalone: true, selector: "lx-tokenizer", inputs: { active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { overflowPlaceholderClick: "overflowPlaceholderClick" }, queries: [{ propertyName: "items", predicate: TokenComponent }], viewQueries: [{ propertyName: "counter", first: true, predicate: ["counter"], descendants: true, read: ElementRef }, { propertyName: "tokensContainer", first: true, predicate: ["tokensContainer"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div #tokensContainer class=\"tokensContainer\">\n <ng-content select=\"lx-token\" />\n @if (showCounter()) {\n <button\n lx-button\n class=\"counterButton\"\n mode=\"ghost\"\n (click)=\"onCounterClicked()\"\n [attr.aria-label]=\"\n NAME + (overflowItemCount() === 1 ? '.showMoreItem' : '.showMoreItems') | translate: { count: overflowItemCount() }\n \"\n >\n <lx-counter #counter aria-hidden=\"true\" [content]=\"'+' + overflowItemCount()\" color=\"gray\" />\n </button>\n }\n</div>\n", styles: [":host{display:flex;align-items:center;white-space:nowrap}:host .counterButton{padding:0;display:flex;align-items:center;margin-left:4px;border-radius:12px}.tokensContainer{display:flex;align-items:center}\n"], dependencies: [{ kind: "component", type: CounterComponent, selector: "lx-counter", inputs: ["content", "size", "color"] }, { kind: "component", type: ButtonComponent, selector: "button[lx-button]", inputs: ["size", "color", "mode", "pressed", "selected", "square", "circle", "disabled", "icon", "endIcon", "showSpinner"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
133
|
-
}
|
134
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: TokenizerComponent, decorators: [{
|
135
|
-
type: Component,
|
136
|
-
args: [{ selector: 'lx-tokenizer', standalone: true, imports: [NgIf, CounterComponent, ButtonComponent, TranslateModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #tokensContainer class=\"tokensContainer\">\n <ng-content select=\"lx-token\" />\n @if (showCounter()) {\n <button\n lx-button\n class=\"counterButton\"\n mode=\"ghost\"\n (click)=\"onCounterClicked()\"\n [attr.aria-label]=\"\n NAME + (overflowItemCount() === 1 ? '.showMoreItem' : '.showMoreItems') | translate: { count: overflowItemCount() }\n \"\n >\n <lx-counter #counter aria-hidden=\"true\" [content]=\"'+' + overflowItemCount()\" color=\"gray\" />\n </button>\n }\n</div>\n", styles: [":host{display:flex;align-items:center;white-space:nowrap}:host .counterButton{padding:0;display:flex;align-items:center;margin-left:4px;border-radius:12px}.tokensContainer{display:flex;align-items:center}\n"] }]
|
137
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.DestroyRef }, { type: i0.ChangeDetectorRef }, { type: i1.ResizeObserverService }], propDecorators: { overflowPlaceholderClick: [{
|
138
|
-
type: Output
|
139
|
-
}], items: [{
|
140
|
-
type: ContentChildren,
|
141
|
-
args: [TokenComponent]
|
142
|
-
}], counter: [{
|
143
|
-
type: ViewChild,
|
144
|
-
args: ['counter', { read: ElementRef }]
|
145
|
-
}], tokensContainer: [{
|
146
|
-
type: ViewChild,
|
147
|
-
args: ['tokensContainer', { read: ElementRef }]
|
148
|
-
}] } });
|
149
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5pemVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2NvcmUtdWkvY29tcG9uZW50cy90b2tlbml6ZXIvdG9rZW5pemVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2NvcmUtdWkvY29tcG9uZW50cy90b2tlbml6ZXIvdG9rZW5pemVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsZUFBZSxFQUVmLE1BQU0sRUFDTixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4sTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUU5RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7QUFFekQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0NHO0FBU0gs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QUFHLENBQUMsQ0FBQyxDQUFDO2dCQUN4QyxDQUFDO2dCQUVELE1BQU07WUFDUixDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUM7UUFDVixDQUFDO0lBQ0gsQ0FBQztJQUVPLHFCQUFxQixDQUFDLEtBQWE7UUFDekMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVuQyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsRSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QyxDQUFDOzhHQTNHVSxrQkFBa0I7a0dBQWxCLGtCQUFrQix3U0FxQlosY0FBYyw0R0FFRCxVQUFVLDZHQUVGLFVBQVUsNkJDbkdsRCw2aEJBZ0JBLHdRRHVEa0IsZ0JBQWdCLDZGQUFFLGVBQWUseUxBQUUsZUFBZTs7MkZBR3ZELGtCQUFrQjtrQkFSOUIsU0FBUzsrQkFDRSxjQUFjLGNBQ1osSUFBSSxXQUdQLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxlQUFlLENBQUMsbUJBQ2xELHVCQUF1QixDQUFDLE1BQU07NEtBb0JyQyx3QkFBd0I7c0JBQWpDLE1BQU07Z0JBRzBCLEtBQUs7c0JBQXJDLGVBQWU7dUJBQUMsY0FBYztnQkFFYSxPQUFPO3NCQUFsRCxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBRVUsZUFBZTtzQkFBbEUsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBEZXN0cm95UmVmLFxuICBlZmZlY3QsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgaW5wdXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBzaWduYWwsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCwgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb3VudGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jb3VudGVyL2NvdW50ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFJlc2l6ZU9ic2VydmVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Jlc2l6ZS1vYnNlcnZlci5zZXJ2aWNlJztcbmltcG9ydCB7IFRva2VuQ29tcG9uZW50IH0gZnJvbSAnLi90b2tlbi90b2tlbi5jb21wb25lbnQnO1xuXG4vKipcbiAqIFRoZSB0b2tlbml6ZXIgY29tcG9uZW50IChgbHgtdG9rZW5pemVyYCkgaXMgcmVzcG9uc2libGUgZm9yIHJlbmRlcmluZyBhIGxpc3Qgb2YgaXRlbXMgaW50byBhIGNvbnRhaW5lciBhbmQgaGlkaW5nIHRob3NlIHRoYXQgZG8gbm90IGZpdCBiZWhpbmQgYSBwbGFjZWhvbGRlci4gVGhlIGl0ZW1zIGFyZSByZXByZXNlbnRlZCBhcyBgbHgtdG9rZW5gLiBFYWNoIGBseC10b2tlbmAgYWxsb3dzIHRvIHByb2plY3QgYW55IGNvbnRlbnQgaW50byBpdCwgc28gYW55dGhpbmcgY2FuIGJlY29tZSBhIHRva2VuLiBUaGUgdG9rZW5pemVyIGNhbGN1bGF0ZXMgaG93IG1hbnkgaXRlbXMgZml0IGludG8gdGhlIGNvbnRhaW5lciAoYmFzZWQgb24gd2lkdGgpLCBoaWRpbmcgdGhvc2UgaXRlbXMgdGhhdCBhcmUgb3ZlcmZsb3dpbmcgYW5kIHNob3dpbmcgYSBvdmVyZmxvdyBwbGFjZWhvbGRlciBpbnN0ZWFkIChlLmcuIFwiKzRcIikuXG4gKlxuICogIyMgVXNhZ2VcbiAqXG4gKiAxLiBJbXBvcnQgYFRva2VuaXplckNvbXBvbmVudGAgJiBgVG9rZW5Db21wb25lbnRgIGludG8geW91ciBtb2R1bGUgb3IgY29tcG9uZW50LlxuICogMi4gVXNlIHRoZSBjb21wb25lbnQgaW4geW91ciB0ZW1wbGF0ZS4gQWxsIGl0ZW1zIHNob3VsZCBiZSB3cmFwcGVkIGluIGEgYGx4LXRva2VuYCBlbGVtZW50IGZvciB0aGUgdG9rZW5pemVyIHRvIGlkZW50aWZ5IHRoZSBpbmRpdmlkdWFsIHRva2Vucy5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgVG9rZW5pemVyQ29tcG9uZW50IH0gZnJvbSAnQGxlYW5peC9jb21wb25lbnRzJztcbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdseC1teS1jb21wb25lbnQnLFxuICogICBzdGFuZGFsb25lOiB0cnVlLFxuICogICBpbXBvcnRzOiBbVG9rZW5pemVyQ29tcG9uZW50LCBUb2tlbkNvbXBvbmVudF0sXG4gKiAgIHRlbXBsYXRlOiBgXG4gKiAgICAgPGx4LXRva2VuaXplcj5cbiAqICAgICAgIDxseC10b2tlbj5Ub2tlbiBPbmU8L2x4LXRva2VuPlxuICogICAgICAgPGx4LXRva2VuPlRva2VuIFR3bzwvbHgtdG9rZW4+XG4gKiAgICAgPC9seC10b2tlbml6ZXI+XG4gKiAgIGBcbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgTXlDb21wb25lbnQge31cbiAqIGBgYFxuICpcbiAqICMjIEFQSVxuICpcbiAqICMjIyBJbnB1dHNcbiAqXG4gKiAtIGBhY3RpdmVgOiBDYW4gYmUgdXNlZCB0byBhY3RpdmF0ZSAmIGRlYWN0aXZhdGUgdG9rZW5pemF0aW9uXG4gKlxuICogIyMjIE91dHB1dHNcbiAqXG4gKiAtIGBvdmVyZmxvd1BsYWNlaG9sZGVyQ2xpY2tgOiBGaXJlcyB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvbiB0aGUgb3ZlcmZsb3cgcGxhY2Vob2xkZXJcbiAqXG4gKiAjIyMgQ29udGVudCBwcm9qZWN0aW9uXG4gKlxuICogLSBgbHgtdG9rZW5gOiBBbGwgYGx4LXRva2Vuc2Agd2lsbCBiZSBwcm9qZWN0ZWQgaW50byB0aGUgdG9rZW5pemVyXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2x4LXRva2VuaXplcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlVXJsOiAnLi90b2tlbml6ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90b2tlbml6ZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgaW1wb3J0czogW05nSWYsIENvdW50ZXJDb21wb25lbnQsIEJ1dHRvbkNvbXBvbmVudCwgVHJhbnNsYXRlTW9kdWxlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVG9rZW5pemVyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcmVhZG9ubHkgTkFNRSA9ICdUb2tlbml6ZXJDb21wb25lbnQnO1xuXG4gIHByb3RlY3RlZCBvdmVyZmxvd0l0ZW1zID0gc2lnbmFsPFRva2VuQ29tcG9uZW50W10+KFtdKTtcbiAgcHJvdGVjdGVkIG92ZXJmbG93SXRlbUNvdW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vdmVyZmxvd0l0ZW1zKCkubGVuZ3RoKTtcbiAgcHJvdGVjdGVkIHNob3dDb3VudGVyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5hY3RpdmUoKSAmJiB0aGlzLm92ZXJmbG93SXRlbUNvdW50KCkgPiAwKTtcblxuICAvKiogQ2FuIGJlIHVzZWQgdG8gYWN0aXZhdGUgJiBkZWFjdGl2YXRlIHRva2VuaXphdGlvbiAqL1xuICBhY3RpdmUgPSBpbnB1dCh0cnVlKTtcbiAgcHJpdmF0ZSBhY3RpdmUkID0gdG9PYnNlcnZhYmxlKHRoaXMuYWN0aXZlKTtcbiAgcHJpdmF0ZSBvdmVyZmxvd1N0YXJ0SW5kZXggPSBzaWduYWw8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG5cbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgY291bnRlciBidXR0b24gaXMgY2xpY2tlZFxuICAgKiBAcGFyYW0gc3RhcnRJbmRleCBUaGUgaW5kZXggb2YgdGhlIGZpcnN0IG92ZXJmbG93aW5nIGVsZW1lbnRcbiAgICogQHBhcmFtIGNvdW50ZXJFbGVtZW50IFRoZSBjb3VudGVyIGJ1dHRvbiBlbGVtZW50XG4gICAqL1xuICBAT3V0cHV0KCkgb3ZlcmZsb3dQbGFjZWhvbGRlckNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx7IHN0YXJ0SW5kZXg6IG51bWJlcjsgY291bnRlckVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IH0+KCk7XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBAQ29udGVudENoaWxkcmVuKFRva2VuQ29tcG9uZW50KSBpdGVtcz86IFF1ZXJ5TGlzdDxUb2tlbkNvbXBvbmVudD47XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgQFZpZXdDaGlsZCgnY291bnRlcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBjb3VudGVyPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgQFZpZXdDaGlsZCgndG9rZW5zQ29udGFpbmVyJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIHRva2Vuc0NvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBkZXN0cm95UmVmOiBEZXN0cm95UmVmLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXJTZXJ2aWNlOiBSZXNpemVPYnNlcnZlclNlcnZpY2VcbiAgKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIC8vIFdoZW5ldmVyIHRoZSB0b2tlbml6ZXIgaXMgZGlzYWJsZWQsIGVuc3VyZSBhbGwgdG9rZW5zIGFyZSBzaG93blxuICAgICAgaWYgKCF0aGlzLmFjdGl2ZSgpKSB7XG4gICAgICAgIHRoaXMuaXRlbXMhLmZvckVhY2goKGl0ZW0pID0+IGl0ZW0uc2hvdygpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLmNyZWF0ZVJlc2l6ZU9ic2VydmFibGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpLnBpcGUoXG4gICAgICBtYXAoKGVudHJ5KSA9PiBlbnRyeS5jb250ZW50UmVjdC53aWR0aCA/PyAwKSxcbiAgICAgIGRlYm91bmNlVGltZSgxNiksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgKTtcbiAgICBjb25zdCBpdGVtc0NoYW5nZWQkID0gdGhpcy5pdGVtcyEuY2hhbmdlcztcblxuICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5hY3RpdmUkLFxuICAgICAgY29udGFpbmVyV2lkdGgucGlwZShzdGFydFdpdGgodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpKSxcbiAgICAgIGl0ZW1zQ2hhbmdlZCQucGlwZShzdGFydFdpdGgodGhpcy5pdGVtcykpXG4gICAgXSlcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKFthY3RpdmVdKSA9PiBhY3RpdmUpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoWywgY29udGFpbmVyV2lkdGhdKSA9PiB7XG4gICAgICAgIHRoaXMudG9rZW5pemUoY29udGFpbmVyV2lkdGgpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIG9uQ291bnRlckNsaWNrZWQoKTogdm9pZCB7XG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IHRoaXMub3ZlcmZsb3dTdGFydEluZGV4KCk7XG4gICAgaWYgKHR5cGVvZiBzdGFydEluZGV4ID09PSAnbnVtYmVyJykge1xuICAgICAgdGhpcy5vdmVyZmxvd1BsYWNlaG9sZGVyQ2xpY2suZW1pdCh7IHN0YXJ0SW5kZXgsIGNvdW50ZXJFbGVtZW50OiB0aGlzLmNvdW50ZXIhIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdG9rZW5pemUoY29udGFpbmVyV2lkdGg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5pdGVtcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4gaXRlbS5oaWRlKCkpO1xuICAgIHRoaXMub3ZlcmZsb3dJdGVtcy5zZXQoW10pO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgbGV0IGluZGV4ID0gMDtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5pdGVtcykge1xuICAgICAgaXRlbS5zaG93KCk7XG4gICAgICBjb25zdCB1c2VkV2lkdGggPSB0aGlzLnRva2Vuc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgICAgaWYgKHVzZWRXaWR0aCA+IGNvbnRhaW5lcldpZHRoKSB7XG4gICAgICAgIGl0ZW0uaGlkZSgpO1xuICAgICAgICB0aGlzLnVwZGF0ZU92ZXJmbG93Q291bnRlcihpbmRleCk7XG5cbiAgICAgICAgY29uc3QgdXNlZFdpZHRoSW5jbHVkaW5nQ291bnRlciA9IHRoaXMudG9rZW5zQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICAgIGlmICh1c2VkV2lkdGhJbmNsdWRpbmdDb3VudGVyID4gY29udGFpbmVyV2lkdGggJiYgaW5kZXggPj0gMSkge1xuICAgICAgICAgIGNvbnN0IHByZXZpb3VzSXRlbSA9IHRoaXMuaXRlbXMudG9BcnJheSgpW2luZGV4IC0gMV07XG4gICAgICAgICAgcHJldmlvdXNJdGVtPy5oaWRlKCk7XG4gICAgICAgICAgdGhpcy51cGRhdGVPdmVyZmxvd0NvdW50ZXIoaW5kZXggLSAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaW5kZXgrKztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU92ZXJmbG93Q291bnRlcihpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5vdmVyZmxvd1N0YXJ0SW5kZXguc2V0KGluZGV4KTtcblxuICAgIGNvbnN0IG92ZXJmbG93aW5nSXRlbXMgPSB0aGlzLml0ZW1zPy50b0FycmF5KCkuc2xpY2UoaW5kZXgpID8/IFtdO1xuICAgIHRoaXMub3ZlcmZsb3dJdGVtcy5zZXQob3ZlcmZsb3dpbmdJdGVtcyk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbn1cbiIsIjxkaXYgI3Rva2Vuc0NvbnRhaW5lciBjbGFzcz1cInRva2Vuc0NvbnRhaW5lclwiPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJseC10b2tlblwiIC8+XG4gIEBpZiAoc2hvd0NvdW50ZXIoKSkge1xuICAgIDxidXR0b25cbiAgICAgIGx4LWJ1dHRvblxuICAgICAgY2xhc3M9XCJjb3VudGVyQnV0dG9uXCJcbiAgICAgIG1vZGU9XCJnaG9zdFwiXG4gICAgICAoY2xpY2spPVwib25Db3VudGVyQ2xpY2tlZCgpXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgIE5BTUUgKyAob3ZlcmZsb3dJdGVtQ291bnQoKSA9PT0gMSA/ICcuc2hvd01vcmVJdGVtJyA6ICcuc2hvd01vcmVJdGVtcycpIHwgdHJhbnNsYXRlOiB7IGNvdW50OiBvdmVyZmxvd0l0ZW1Db3VudCgpIH1cbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGx4LWNvdW50ZXIgI2NvdW50ZXIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgW2NvbnRlbnRdPVwiJysnICsgb3ZlcmZsb3dJdGVtQ291bnQoKVwiIGNvbG9yPVwiZ3JheVwiIC8+XG4gICAgPC9idXR0b24+XG4gIH1cbjwvZGl2PlxuIl19
|