@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.
Files changed (157) hide show
  1. package/fesm2022/leanix-components.mjs +365 -365
  2. package/fesm2022/leanix-components.mjs.map +1 -1
  3. package/lib/core-ui/tooltip/tooltip.directive.d.ts +1 -1
  4. package/lib/forms-ui/components/keyboard-select.directive.d.ts +1 -1
  5. package/lib/forms-ui/models/base-select.directive.d.ts +1 -1
  6. package/lib/tab-ui/components/tab-group/tab-group.component.d.ts +1 -1
  7. package/package.json +10 -14
  8. package/esm2022/index.mjs +0 -145
  9. package/esm2022/leanix-components.mjs +0 -5
  10. package/esm2022/lib/core-ui/components/avatar/avatar.component.mjs +0 -40
  11. package/esm2022/lib/core-ui/components/avatar/avatar.helpers.mjs +0 -49
  12. package/esm2022/lib/core-ui/components/avatar/avatar.model.mjs +0 -33
  13. package/esm2022/lib/core-ui/components/avatar-group/avatar-group.component.mjs +0 -75
  14. package/esm2022/lib/core-ui/components/badge/badge.component.mjs +0 -58
  15. package/esm2022/lib/core-ui/components/banner/banner.component.mjs +0 -68
  16. package/esm2022/lib/core-ui/components/banner/banner.models.mjs +0 -12
  17. package/esm2022/lib/core-ui/components/button/button.component.mjs +0 -179
  18. package/esm2022/lib/core-ui/components/button-group/button-group.component.mjs +0 -28
  19. package/esm2022/lib/core-ui/components/card/card.component.mjs +0 -26
  20. package/esm2022/lib/core-ui/components/collapsible/collapsible.component.mjs +0 -52
  21. package/esm2022/lib/core-ui/components/counter/counter.component.mjs +0 -30
  22. package/esm2022/lib/core-ui/components/ellipsis/ellipsis.component.mjs +0 -143
  23. package/esm2022/lib/core-ui/components/empty-state/empty-state.component.mjs +0 -41
  24. package/esm2022/lib/core-ui/components/icon-scale/icon-scale.component.mjs +0 -36
  25. package/esm2022/lib/core-ui/components/skeleton/skeleton.component.mjs +0 -44
  26. package/esm2022/lib/core-ui/components/spinner/spinner.component.mjs +0 -26
  27. package/esm2022/lib/core-ui/components/stepper/stepper.component.mjs +0 -70
  28. package/esm2022/lib/core-ui/components/table/table-header/table-header.component.mjs +0 -128
  29. package/esm2022/lib/core-ui/components/table/table.component.mjs +0 -77
  30. package/esm2022/lib/core-ui/components/tiny-spinner/tiny-spinner.component.mjs +0 -14
  31. package/esm2022/lib/core-ui/components/tokenizer/token/token.component.mjs +0 -20
  32. package/esm2022/lib/core-ui/components/tokenizer/tokenizer-overflow-popover/tokenizer-overflow-popover.component.mjs +0 -44
  33. package/esm2022/lib/core-ui/components/tokenizer/tokenizer.component.mjs +0 -149
  34. package/esm2022/lib/core-ui/core-ui.constants.mjs +0 -240
  35. package/esm2022/lib/core-ui/core-ui.module.mjs +0 -206
  36. package/esm2022/lib/core-ui/directives/after-view-init.directive.mjs +0 -33
  37. package/esm2022/lib/core-ui/directives/autoclose-group.service.mjs +0 -39
  38. package/esm2022/lib/core-ui/directives/autoclose.directive.mjs +0 -43
  39. package/esm2022/lib/core-ui/directives/autofocus.directive.mjs +0 -36
  40. package/esm2022/lib/core-ui/functions/core-css.helpers.mjs +0 -52
  41. package/esm2022/lib/core-ui/functions/highlight-text.function.mjs +0 -80
  42. package/esm2022/lib/core-ui/linkify/linkify.pipe.mjs +0 -146
  43. package/esm2022/lib/core-ui/linkify/unlinkify.pipe.mjs +0 -51
  44. package/esm2022/lib/core-ui/pipes/br.pipe.mjs +0 -24
  45. package/esm2022/lib/core-ui/pipes/contrast-color.pipe.mjs +0 -21
  46. package/esm2022/lib/core-ui/pipes/custom-date.pipe.mjs +0 -28
  47. package/esm2022/lib/core-ui/pipes/display-avatars.pipe.mjs +0 -37
  48. package/esm2022/lib/core-ui/pipes/highlight-range.pipe.mjs +0 -29
  49. package/esm2022/lib/core-ui/pipes/highlight-term.pipe.mjs +0 -57
  50. package/esm2022/lib/core-ui/pipes/lx-is-uuid.pipe.mjs +0 -22
  51. package/esm2022/lib/core-ui/pipes/lx-time-ago.pipe.mjs +0 -29
  52. package/esm2022/lib/core-ui/pipes/lx-translate.pipe.mjs +0 -50
  53. package/esm2022/lib/core-ui/pipes/markdown.pipe.mjs +0 -32
  54. package/esm2022/lib/core-ui/pipes/nbsp.pipe.mjs +0 -17
  55. package/esm2022/lib/core-ui/pipes/sort.pipe.mjs +0 -55
  56. package/esm2022/lib/core-ui/pipes/translation-after.pipe.mjs +0 -29
  57. package/esm2022/lib/core-ui/pipes/translation-before.pipe.mjs +0 -54
  58. package/esm2022/lib/core-ui/pipes/translation-between.pipe.mjs +0 -68
  59. package/esm2022/lib/core-ui/pipes/unescape-curly-braces.pipe.mjs +0 -17
  60. package/esm2022/lib/core-ui/services/resize-observer.service.mjs +0 -112
  61. package/esm2022/lib/core-ui/tooltip/to-cdk-position.function.mjs +0 -74
  62. package/esm2022/lib/core-ui/tooltip/tooltip-position.interface.mjs +0 -7
  63. package/esm2022/lib/core-ui/tooltip/tooltip.component.mjs +0 -26
  64. package/esm2022/lib/core-ui/tooltip/tooltip.directive.mjs +0 -117
  65. package/esm2022/lib/forms-ui/components/basic-dropdown/basic-dropdown.component.mjs +0 -139
  66. package/esm2022/lib/forms-ui/components/basic-dropdown-item/basic-dropdown-item.component.mjs +0 -38
  67. package/esm2022/lib/forms-ui/components/breadcrumb/breadcrumb.component.mjs +0 -55
  68. package/esm2022/lib/forms-ui/components/cdk-options-dropdown/cdk-options-dropdown.component.mjs +0 -215
  69. package/esm2022/lib/forms-ui/components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.component.mjs +0 -135
  70. package/esm2022/lib/forms-ui/components/currency/currency-input.component.mjs +0 -159
  71. package/esm2022/lib/forms-ui/components/currency/currency-symbol-map.constant.mjs +0 -105
  72. package/esm2022/lib/forms-ui/components/currency/currency-symbol.component.mjs +0 -24
  73. package/esm2022/lib/forms-ui/components/date-input/date-input.component.mjs +0 -347
  74. package/esm2022/lib/forms-ui/components/date-picker-ui/date-formatter.mjs +0 -8
  75. package/esm2022/lib/forms-ui/components/date-picker-ui/datepicker-inner.component.mjs +0 -312
  76. package/esm2022/lib/forms-ui/components/date-picker-ui/datepicker-ui.module.mjs +0 -20
  77. package/esm2022/lib/forms-ui/components/date-picker-ui/datepicker.component.mjs +0 -206
  78. package/esm2022/lib/forms-ui/components/date-picker-ui/datepicker.config.mjs +0 -29
  79. package/esm2022/lib/forms-ui/components/date-picker-ui/daypicker.component.mjs +0 -319
  80. package/esm2022/lib/forms-ui/components/date-picker-ui/isBs3.mjs +0 -2
  81. package/esm2022/lib/forms-ui/components/date-picker-ui/monthpicker.component.mjs +0 -149
  82. package/esm2022/lib/forms-ui/components/date-picker-ui/yearpicker.component.mjs +0 -151
  83. package/esm2022/lib/forms-ui/components/drag-and-drop-list/constants.mjs +0 -5
  84. package/esm2022/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list-item/drag-and-drop-list-item.component.mjs +0 -49
  85. package/esm2022/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.component.mjs +0 -120
  86. package/esm2022/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.module.mjs +0 -39
  87. package/esm2022/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-item/keyboard-sortable-item.directive.mjs +0 -137
  88. package/esm2022/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-list/keyboard-sortable-list.directive.mjs +0 -38
  89. package/esm2022/lib/forms-ui/components/error-message/error-message.component.mjs +0 -16
  90. package/esm2022/lib/forms-ui/components/expanded-dropdown/expanded-dropdown.component.mjs +0 -26
  91. package/esm2022/lib/forms-ui/components/form-error/form-error.component.mjs +0 -44
  92. package/esm2022/lib/forms-ui/components/icon/icon.component.mjs +0 -45
  93. package/esm2022/lib/forms-ui/components/input/input.component.mjs +0 -48
  94. package/esm2022/lib/forms-ui/components/keyboard-select.directive.mjs +0 -126
  95. package/esm2022/lib/forms-ui/components/multi-select/multi-select-selection/multi-select-selection.component.mjs +0 -28
  96. package/esm2022/lib/forms-ui/components/multi-select/multi-select.component.mjs +0 -318
  97. package/esm2022/lib/forms-ui/components/option/option.component.mjs +0 -99
  98. package/esm2022/lib/forms-ui/components/option-group/option-group.component.mjs +0 -29
  99. package/esm2022/lib/forms-ui/components/option-group-dropdown/option-group-dropdown.component.mjs +0 -123
  100. package/esm2022/lib/forms-ui/components/options-dropdown/options-dropdown.component.mjs +0 -297
  101. package/esm2022/lib/forms-ui/components/options-sub-dropdown/options-sub-dropdown.component.mjs +0 -94
  102. package/esm2022/lib/forms-ui/components/picker/picker-trigger.directive.mjs +0 -47
  103. package/esm2022/lib/forms-ui/components/picker/picker.component.mjs +0 -218
  104. package/esm2022/lib/forms-ui/components/picker-option/picker-option.component.mjs +0 -118
  105. package/esm2022/lib/forms-ui/components/pill-item/pill-item.component.mjs +0 -33
  106. package/esm2022/lib/forms-ui/components/pill-list/pill-list.component.mjs +0 -58
  107. package/esm2022/lib/forms-ui/components/responsive-input/responsive-input.component.mjs +0 -101
  108. package/esm2022/lib/forms-ui/components/select-list/select-list.component.mjs +0 -178
  109. package/esm2022/lib/forms-ui/components/single-select/single-select.component.mjs +0 -290
  110. package/esm2022/lib/forms-ui/components/sorting-dropdown/sorting-dropdown.component.mjs +0 -71
  111. package/esm2022/lib/forms-ui/components/sorting-dropdown-trigger/sorting-dropdown-trigger.component.mjs +0 -21
  112. package/esm2022/lib/forms-ui/components/switch/switch.component.mjs +0 -51
  113. package/esm2022/lib/forms-ui/directives/contenteditable.directive.mjs +0 -130
  114. package/esm2022/lib/forms-ui/directives/form-error.directive.mjs +0 -121
  115. package/esm2022/lib/forms-ui/directives/form-submit.directive.mjs +0 -29
  116. package/esm2022/lib/forms-ui/directives/keyboard-action-source.directive.mjs +0 -63
  117. package/esm2022/lib/forms-ui/directives/mark-invalid.directive.mjs +0 -39
  118. package/esm2022/lib/forms-ui/directives/max-length-counter.directive.mjs +0 -131
  119. package/esm2022/lib/forms-ui/directives/select-dropdown.directive.mjs +0 -32
  120. package/esm2022/lib/forms-ui/directives/selectable-item.directive.mjs +0 -34
  121. package/esm2022/lib/forms-ui/directives/selected-option.directive.mjs +0 -27
  122. package/esm2022/lib/forms-ui/forms-ui.module.mjs +0 -270
  123. package/esm2022/lib/forms-ui/helpers/key-codes.constants.mjs +0 -13
  124. package/esm2022/lib/forms-ui/helpers/keyboard-navigation.helpers.mjs +0 -38
  125. package/esm2022/lib/forms-ui/models/base-select.directive.mjs +0 -183
  126. package/esm2022/lib/forms-ui/models/dropdown-item.interface.mjs +0 -2
  127. package/esm2022/lib/forms-ui/models/single-select-padding.interface.mjs +0 -2
  128. package/esm2022/lib/forms-ui/models/sorting.interface.mjs +0 -7
  129. package/esm2022/lib/forms-ui/pipes/filter-selection.pipe.mjs +0 -33
  130. package/esm2022/lib/forms-ui/pipes/filter-term.pipe.mjs +0 -29
  131. package/esm2022/lib/forms-ui/pipes/format-number.pipe.mjs +0 -66
  132. package/esm2022/lib/forms-ui/validators/date-in-foreseeable-future.validator.mjs +0 -26
  133. package/esm2022/lib/forms-ui/validators/string-not-in-array.validator.mjs +0 -30
  134. package/esm2022/lib/modal-ui/components/modal/modal.component.mjs +0 -264
  135. package/esm2022/lib/modal-ui/components/modal-footer/modal-footer.component.mjs +0 -16
  136. package/esm2022/lib/modal-ui/components/modal-header/modal-header.component.mjs +0 -19
  137. package/esm2022/lib/modal-ui/directives/modal-content.directive.mjs +0 -14
  138. package/esm2022/lib/modal-ui/modal.constants.mjs +0 -18
  139. package/esm2022/lib/modal-ui/modal.module.mjs +0 -47
  140. package/esm2022/lib/popover-ui/components/popover/popover.component.mjs +0 -228
  141. package/esm2022/lib/popover-ui/directives/popover-click.directive.mjs +0 -52
  142. package/esm2022/lib/popover-ui/directives/popover-content.directive.mjs +0 -17
  143. package/esm2022/lib/popover-ui/directives/popover-hover.directive.mjs +0 -88
  144. package/esm2022/lib/popover-ui/popover-ui.module.mjs +0 -21
  145. package/esm2022/lib/shared/date-helpers.mjs +0 -35
  146. package/esm2022/lib/shared/html-helpers.function.mjs +0 -34
  147. package/esm2022/lib/shared/misc-helpers.mjs +0 -24
  148. package/esm2022/lib/shared/observe.mjs +0 -40
  149. package/esm2022/lib/tab-ui/components/tab/tab.component.mjs +0 -118
  150. package/esm2022/lib/tab-ui/components/tab-group/tab-group-key-codes.enum.mjs +0 -12
  151. package/esm2022/lib/tab-ui/components/tab-group/tab-group.component.mjs +0 -150
  152. package/esm2022/lib/tab-ui/tab-ui.module.mjs +0 -20
  153. package/esm2022/ui5/icons/lx-icons.json +0 -177
  154. package/esm2022/ui5/icons/register-icons.mjs +0 -14
  155. package/esm2022/ui5/index.mjs +0 -8
  156. package/esm2022/ui5/leanix-components-ui5.mjs +0 -5
  157. 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