@spartan-ng/brain 0.0.1-alpha.421 → 0.0.1-alpha.423

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 (231) hide show
  1. package/fesm2022/spartan-ng-brain-accordion.mjs +16 -16
  2. package/fesm2022/spartan-ng-brain-alert-dialog.mjs +22 -22
  3. package/fesm2022/spartan-ng-brain-avatar.mjs +16 -16
  4. package/fesm2022/spartan-ng-brain-calendar.mjs +31 -31
  5. package/fesm2022/spartan-ng-brain-checkbox.mjs +7 -8
  6. package/fesm2022/spartan-ng-brain-checkbox.mjs.map +1 -1
  7. package/fesm2022/spartan-ng-brain-collapsible.mjs +13 -13
  8. package/fesm2022/spartan-ng-brain-command.mjs +22 -22
  9. package/fesm2022/spartan-ng-brain-dialog.mjs +28 -28
  10. package/fesm2022/spartan-ng-brain-form-field.mjs +3 -3
  11. package/fesm2022/spartan-ng-brain-form-field.mjs.map +1 -1
  12. package/fesm2022/spartan-ng-brain-forms.mjs +6 -6
  13. package/fesm2022/spartan-ng-brain-hover-card.mjs +16 -16
  14. package/fesm2022/spartan-ng-brain-label.mjs +7 -7
  15. package/fesm2022/spartan-ng-brain-menu.mjs +40 -40
  16. package/fesm2022/spartan-ng-brain-popover.mjs +16 -16
  17. package/fesm2022/spartan-ng-brain-progress.mjs +10 -10
  18. package/fesm2022/spartan-ng-brain-radio-group.mjs +10 -10
  19. package/fesm2022/spartan-ng-brain-select.mjs +37 -38
  20. package/fesm2022/spartan-ng-brain-select.mjs.map +1 -1
  21. package/fesm2022/spartan-ng-brain-separator.mjs +7 -7
  22. package/fesm2022/spartan-ng-brain-sheet.mjs +25 -25
  23. package/fesm2022/spartan-ng-brain-slider.mjs +22 -20
  24. package/fesm2022/spartan-ng-brain-slider.mjs.map +1 -1
  25. package/fesm2022/spartan-ng-brain-switch.mjs +10 -12
  26. package/fesm2022/spartan-ng-brain-switch.mjs.map +1 -1
  27. package/fesm2022/spartan-ng-brain-table.mjs +22 -24
  28. package/fesm2022/spartan-ng-brain-table.mjs.map +1 -1
  29. package/fesm2022/spartan-ng-brain-tabs.mjs +19 -19
  30. package/fesm2022/spartan-ng-brain-tabs.mjs.map +1 -1
  31. package/fesm2022/spartan-ng-brain-toggle.mjs +14 -14
  32. package/fesm2022/spartan-ng-brain-tooltip.mjs +16 -17
  33. package/fesm2022/spartan-ng-brain-tooltip.mjs.map +1 -1
  34. package/form-field/lib/brn-form-field-control.d.ts +1 -1
  35. package/package.json +5 -63
  36. package/slider/lib/brn-slider-track.directive.d.ts +1 -0
  37. package/tabs/lib/brn-tabs-paginated-list.directive.d.ts +1 -1
  38. package/esm2022/accordion/index.mjs +0 -31
  39. package/esm2022/accordion/lib/brn-accordion-content.component.mjs +0 -50
  40. package/esm2022/accordion/lib/brn-accordion.directive.mjs +0 -185
  41. package/esm2022/accordion/spartan-ng-brain-accordion.mjs +0 -5
  42. package/esm2022/alert-dialog/index.mjs +0 -45
  43. package/esm2022/alert-dialog/lib/brn-alert-dialog-content.directive.mjs +0 -17
  44. package/esm2022/alert-dialog/lib/brn-alert-dialog-description.directive.mjs +0 -18
  45. package/esm2022/alert-dialog/lib/brn-alert-dialog-overlay.component.mjs +0 -20
  46. package/esm2022/alert-dialog/lib/brn-alert-dialog-title.directive.mjs +0 -18
  47. package/esm2022/alert-dialog/lib/brn-alert-dialog-trigger.directive.mjs +0 -34
  48. package/esm2022/alert-dialog/lib/brn-alert-dialog.component.mjs +0 -41
  49. package/esm2022/alert-dialog/spartan-ng-brain-alert-dialog.mjs +0 -5
  50. package/esm2022/avatar/index.mjs +0 -23
  51. package/esm2022/avatar/lib/brn-avatar.component.mjs +0 -31
  52. package/esm2022/avatar/lib/fallback/brn-avatar-fallback.directive.mjs +0 -21
  53. package/esm2022/avatar/lib/fallback/index.mjs +0 -2
  54. package/esm2022/avatar/lib/image/brn-avatar-image.directive.mjs +0 -29
  55. package/esm2022/avatar/lib/image/index.mjs +0 -2
  56. package/esm2022/avatar/lib/util/hex-color-for.mjs +0 -22
  57. package/esm2022/avatar/lib/util/index.mjs +0 -4
  58. package/esm2022/avatar/lib/util/initials.pipe.mjs +0 -27
  59. package/esm2022/avatar/lib/util/is-bright.mjs +0 -12
  60. package/esm2022/avatar/spartan-ng-brain-avatar.mjs +0 -5
  61. package/esm2022/calendar/index.mjs +0 -62
  62. package/esm2022/calendar/lib/brn-calendar-cell-button.directive.mjs +0 -160
  63. package/esm2022/calendar/lib/brn-calendar-cell.directive.mjs +0 -17
  64. package/esm2022/calendar/lib/brn-calendar-grid.directive.mjs +0 -21
  65. package/esm2022/calendar/lib/brn-calendar-header.directive.mjs +0 -22
  66. package/esm2022/calendar/lib/brn-calendar-next-button.directive.mjs +0 -42
  67. package/esm2022/calendar/lib/brn-calendar-previous-button.directive.mjs +0 -42
  68. package/esm2022/calendar/lib/brn-calendar-week.directive.mjs +0 -67
  69. package/esm2022/calendar/lib/brn-calendar-weekday.directive.mjs +0 -48
  70. package/esm2022/calendar/lib/brn-calendar.directive.mjs +0 -154
  71. package/esm2022/calendar/lib/brn-calendar.token.mjs +0 -12
  72. package/esm2022/calendar/lib/i18n/calendar-i18n.mjs +0 -33
  73. package/esm2022/calendar/spartan-ng-brain-calendar.mjs +0 -5
  74. package/esm2022/checkbox/index.mjs +0 -18
  75. package/esm2022/checkbox/lib/brn-checkbox.component.mjs +0 -248
  76. package/esm2022/checkbox/spartan-ng-brain-checkbox.mjs +0 -5
  77. package/esm2022/collapsible/index.mjs +0 -30
  78. package/esm2022/collapsible/lib/brn-collapsible-content.component.mjs +0 -62
  79. package/esm2022/collapsible/lib/brn-collapsible-trigger.directive.mjs +0 -35
  80. package/esm2022/collapsible/lib/brn-collapsible.component.mjs +0 -33
  81. package/esm2022/collapsible/spartan-ng-brain-collapsible.mjs +0 -5
  82. package/esm2022/command/index.mjs +0 -48
  83. package/esm2022/command/lib/brn-command-empty.directive.mjs +0 -30
  84. package/esm2022/command/lib/brn-command-group.directive.mjs +0 -29
  85. package/esm2022/command/lib/brn-command-item.directive.mjs +0 -92
  86. package/esm2022/command/lib/brn-command-item.token.mjs +0 -6
  87. package/esm2022/command/lib/brn-command-list.directive.mjs +0 -21
  88. package/esm2022/command/lib/brn-command-search-input.directive.mjs +0 -81
  89. package/esm2022/command/lib/brn-command-search-input.token.mjs +0 -6
  90. package/esm2022/command/lib/brn-command.directive.mjs +0 -81
  91. package/esm2022/command/lib/brn-command.token.mjs +0 -9
  92. package/esm2022/command/spartan-ng-brain-command.mjs +0 -5
  93. package/esm2022/core/helpers/create-injection-token.mjs +0 -15
  94. package/esm2022/core/helpers/custom-element-class-settable.mjs +0 -3
  95. package/esm2022/core/helpers/dev-mode.mjs +0 -6
  96. package/esm2022/core/helpers/exposes-side.mjs +0 -3
  97. package/esm2022/core/helpers/exposes-state.mjs +0 -3
  98. package/esm2022/core/helpers/hlm.mjs +0 -6
  99. package/esm2022/core/helpers/table-classes-settable.mjs +0 -3
  100. package/esm2022/core/helpers/zone-free.mjs +0 -15
  101. package/esm2022/core/index.mjs +0 -8
  102. package/esm2022/core/spartan-ng-brain-core.mjs +0 -5
  103. package/esm2022/date-time/index.mjs +0 -3
  104. package/esm2022/date-time/lib/date-adapter.mjs +0 -16
  105. package/esm2022/date-time/lib/native-date-adapter.mjs +0 -155
  106. package/esm2022/date-time/spartan-ng-brain-date-time.mjs +0 -5
  107. package/esm2022/date-time-luxon/index.mjs +0 -2
  108. package/esm2022/date-time-luxon/lib/date-adapter.mjs +0 -85
  109. package/esm2022/date-time-luxon/spartan-ng-brain-date-time-luxon.mjs +0 -5
  110. package/esm2022/dialog/index.mjs +0 -56
  111. package/esm2022/dialog/lib/brn-dialog-close.directive.mjs +0 -24
  112. package/esm2022/dialog/lib/brn-dialog-content.directive.mjs +0 -41
  113. package/esm2022/dialog/lib/brn-dialog-description.directive.mjs +0 -25
  114. package/esm2022/dialog/lib/brn-dialog-options.mjs +0 -19
  115. package/esm2022/dialog/lib/brn-dialog-overlay.component.mjs +0 -33
  116. package/esm2022/dialog/lib/brn-dialog-ref.mjs +0 -54
  117. package/esm2022/dialog/lib/brn-dialog-state.mjs +0 -2
  118. package/esm2022/dialog/lib/brn-dialog-title.directive.mjs +0 -25
  119. package/esm2022/dialog/lib/brn-dialog-token.mjs +0 -25
  120. package/esm2022/dialog/lib/brn-dialog-trigger.directive.mjs +0 -47
  121. package/esm2022/dialog/lib/brn-dialog-utils.mjs +0 -12
  122. package/esm2022/dialog/lib/brn-dialog.component.mjs +0 -179
  123. package/esm2022/dialog/lib/brn-dialog.service.mjs +0 -128
  124. package/esm2022/dialog/spartan-ng-brain-dialog.mjs +0 -5
  125. package/esm2022/form-field/index.mjs +0 -2
  126. package/esm2022/form-field/lib/brn-form-field-control.mjs +0 -14
  127. package/esm2022/form-field/spartan-ng-brain-form-field.mjs +0 -5
  128. package/esm2022/forms/index.mjs +0 -4
  129. package/esm2022/forms/lib/control-value-accessor.mjs +0 -2
  130. package/esm2022/forms/lib/error-options.mjs +0 -26
  131. package/esm2022/forms/lib/error-state-tracker.mjs +0 -29
  132. package/esm2022/forms/spartan-ng-brain-forms.mjs +0 -5
  133. package/esm2022/hover-card/index.mjs +0 -29
  134. package/esm2022/hover-card/lib/brn-hover-card-content.service.mjs +0 -197
  135. package/esm2022/hover-card/lib/brn-hover-card.component.mjs +0 -28
  136. package/esm2022/hover-card/lib/createHoverObservable.mjs +0 -20
  137. package/esm2022/hover-card/spartan-ng-brain-hover-card.mjs +0 -5
  138. package/esm2022/index.mjs +0 -3
  139. package/esm2022/label/index.mjs +0 -17
  140. package/esm2022/label/lib/brn-label.directive.mjs +0 -49
  141. package/esm2022/label/spartan-ng-brain-label.mjs +0 -5
  142. package/esm2022/menu/index.mjs +0 -100
  143. package/esm2022/menu/lib/brn-context-menu-trigger.directive.mjs +0 -40
  144. package/esm2022/menu/lib/brn-menu-align.mjs +0 -15
  145. package/esm2022/menu/lib/brn-menu-bar.directive.mjs +0 -17
  146. package/esm2022/menu/lib/brn-menu-group.directive.mjs +0 -17
  147. package/esm2022/menu/lib/brn-menu-item-checkbox.directive.mjs +0 -30
  148. package/esm2022/menu/lib/brn-menu-item-radio.directive.mjs +0 -30
  149. package/esm2022/menu/lib/brn-menu-item.directive.mjs +0 -27
  150. package/esm2022/menu/lib/brn-menu-trigger.directive.mjs +0 -42
  151. package/esm2022/menu/lib/brn-menu.directive.mjs +0 -56
  152. package/esm2022/menu/spartan-ng-brain-menu.mjs +0 -5
  153. package/esm2022/popover/index.mjs +0 -35
  154. package/esm2022/popover/lib/brn-popover-close.directive.mjs +0 -15
  155. package/esm2022/popover/lib/brn-popover-content.directive.mjs +0 -17
  156. package/esm2022/popover/lib/brn-popover-trigger.directive.mjs +0 -43
  157. package/esm2022/popover/lib/brn-popover.component.mjs +0 -81
  158. package/esm2022/popover/spartan-ng-brain-popover.mjs +0 -5
  159. package/esm2022/progress/index.mjs +0 -21
  160. package/esm2022/progress/lib/brn-progress-indicator.component.mjs +0 -22
  161. package/esm2022/progress/lib/brn-progress.component.mjs +0 -61
  162. package/esm2022/progress/lib/brn-progress.token.mjs +0 -9
  163. package/esm2022/progress/spartan-ng-brain-progress.mjs +0 -5
  164. package/esm2022/radio-group/index.mjs +0 -20
  165. package/esm2022/radio-group/lib/brn-radio-group.directive.mjs +0 -90
  166. package/esm2022/radio-group/lib/brn-radio-group.token.mjs +0 -9
  167. package/esm2022/radio-group/lib/brn-radio.component.mjs +0 -191
  168. package/esm2022/radio-group/spartan-ng-brain-radio-group.mjs +0 -5
  169. package/esm2022/select/index.mjs +0 -66
  170. package/esm2022/select/lib/brn-select-content.component.mjs +0 -224
  171. package/esm2022/select/lib/brn-select-content.token.mjs +0 -9
  172. package/esm2022/select/lib/brn-select-group.directive.mjs +0 -19
  173. package/esm2022/select/lib/brn-select-label.directive.mjs +0 -23
  174. package/esm2022/select/lib/brn-select-option.directive.mjs +0 -69
  175. package/esm2022/select/lib/brn-select-placeholder.directive.mjs +0 -16
  176. package/esm2022/select/lib/brn-select-trigger.directive.mjs +0 -67
  177. package/esm2022/select/lib/brn-select-value.component.mjs +0 -68
  178. package/esm2022/select/lib/brn-select-value.directive.mjs +0 -16
  179. package/esm2022/select/lib/brn-select.component.mjs +0 -272
  180. package/esm2022/select/lib/brn-select.token.mjs +0 -9
  181. package/esm2022/select/spartan-ng-brain-select.mjs +0 -5
  182. package/esm2022/separator/index.mjs +0 -17
  183. package/esm2022/separator/lib/brn-separator.component.mjs +0 -24
  184. package/esm2022/separator/spartan-ng-brain-separator.mjs +0 -5
  185. package/esm2022/sheet/index.mjs +0 -50
  186. package/esm2022/sheet/lib/brn-sheet-close.directive.mjs +0 -15
  187. package/esm2022/sheet/lib/brn-sheet-content.directive.mjs +0 -25
  188. package/esm2022/sheet/lib/brn-sheet-description.directive.mjs +0 -18
  189. package/esm2022/sheet/lib/brn-sheet-overlay.component.mjs +0 -20
  190. package/esm2022/sheet/lib/brn-sheet-title.directive.mjs +0 -18
  191. package/esm2022/sheet/lib/brn-sheet-trigger.directive.mjs +0 -25
  192. package/esm2022/sheet/lib/brn-sheet.component.mjs +0 -57
  193. package/esm2022/sheet/spartan-ng-brain-sheet.mjs +0 -5
  194. package/esm2022/slider/index.mjs +0 -13
  195. package/esm2022/slider/lib/brn-slider-thumb.directive.mjs +0 -41
  196. package/esm2022/slider/lib/brn-slider-tick-mark.directive.mjs +0 -37
  197. package/esm2022/slider/lib/brn-slider-track-active-fill.directive.mjs +0 -29
  198. package/esm2022/slider/lib/brn-slider-track.directive.mjs +0 -297
  199. package/esm2022/slider/spartan-ng-brain-slider.mjs +0 -5
  200. package/esm2022/spartan-ng-brain.mjs +0 -5
  201. package/esm2022/switch/index.mjs +0 -20
  202. package/esm2022/switch/lib/brn-switch-thumb.component.mjs +0 -16
  203. package/esm2022/switch/lib/brn-switch.component.mjs +0 -236
  204. package/esm2022/switch/spartan-ng-brain-switch.mjs +0 -5
  205. package/esm2022/table/index.mjs +0 -47
  206. package/esm2022/table/lib/brn-cell-def.directive.mjs +0 -22
  207. package/esm2022/table/lib/brn-column-def.component.mjs +0 -82
  208. package/esm2022/table/lib/brn-column-manager.mjs +0 -61
  209. package/esm2022/table/lib/brn-footer-def.directive.mjs +0 -22
  210. package/esm2022/table/lib/brn-header-def.directive.mjs +0 -22
  211. package/esm2022/table/lib/brn-paginator.directive.mjs +0 -111
  212. package/esm2022/table/lib/brn-table.component.mjs +0 -169
  213. package/esm2022/table/spartan-ng-brain-table.mjs +0 -5
  214. package/esm2022/tabs/index.mjs +0 -32
  215. package/esm2022/tabs/lib/brn-tabs-list.directive.mjs +0 -66
  216. package/esm2022/tabs/lib/brn-tabs-paginated-list.directive.mjs +0 -525
  217. package/esm2022/tabs/lib/brn-tabs-trigger.directive.mjs +0 -136
  218. package/esm2022/tabs/spartan-ng-brain-tabs.mjs +0 -5
  219. package/esm2022/toggle/index.mjs +0 -31
  220. package/esm2022/toggle/lib/brn-toggle-group.component.mjs +0 -159
  221. package/esm2022/toggle/lib/brn-toggle-group.token.mjs +0 -9
  222. package/esm2022/toggle/lib/brn-toggle.directive.mjs +0 -65
  223. package/esm2022/toggle/spartan-ng-brain-toggle.mjs +0 -5
  224. package/esm2022/tooltip/index.mjs +0 -36
  225. package/esm2022/tooltip/lib/brn-tooltip-content.component.mjs +0 -221
  226. package/esm2022/tooltip/lib/brn-tooltip-content.directive.mjs +0 -22
  227. package/esm2022/tooltip/lib/brn-tooltip-trigger.directive.mjs +0 -629
  228. package/esm2022/tooltip/lib/brn-tooltip.directive.mjs +0 -15
  229. package/esm2022/tooltip/lib/brn-tooltip.token.mjs +0 -18
  230. package/esm2022/tooltip/lib/computed-previous.mjs +0 -46
  231. package/esm2022/tooltip/spartan-ng-brain-tooltip.mjs +0 -5
@@ -1,111 +0,0 @@
1
- import { Directive, Input, TemplateRef, ViewContainerRef, computed, effect, inject, numberAttribute, signal, untracked, } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class BrnPaginatorDirective {
4
- static ngTemplateContextGuard(_directive, _context) {
5
- return true;
6
- }
7
- _vcr = inject(ViewContainerRef);
8
- _template = inject((TemplateRef));
9
- _state = signal({
10
- currentPage: 0,
11
- startIndex: 0,
12
- endIndex: 0,
13
- pageSize: 10,
14
- totalPages: 0,
15
- totalElements: null,
16
- });
17
- _decrementable = computed(() => 0 < this._state().startIndex);
18
- _incrementable = computed(() => this._state().endIndex < (this._state().totalElements ?? 0) - 1);
19
- set totalElements(value) {
20
- this.calculateNewState({ newTotalElements: value, newPage: 0 });
21
- }
22
- set currentPage(value) {
23
- this.calculateNewState({ newPage: value });
24
- }
25
- set pageSize(value) {
26
- this.calculateNewState({ newPageSize: value, newPage: 0 });
27
- }
28
- onStateChange;
29
- constructor() {
30
- effect(() => {
31
- const state = this._state();
32
- untracked(() => {
33
- Promise.resolve().then(() => {
34
- if (this.onStateChange) {
35
- this.onStateChange(state);
36
- }
37
- });
38
- });
39
- });
40
- }
41
- ngOnInit() {
42
- this._vcr.createEmbeddedView(this._template, {
43
- $implicit: {
44
- state: this._state,
45
- increment: () => this.incrementPage(),
46
- decrement: () => this.decrementPage(),
47
- incrementable: this._incrementable,
48
- decrementable: this._decrementable,
49
- },
50
- });
51
- }
52
- decrementPage() {
53
- const { currentPage } = this._state();
54
- if (0 < currentPage) {
55
- this.calculateNewState({ newPage: currentPage - 1 });
56
- }
57
- }
58
- incrementPage() {
59
- const { currentPage, totalPages } = this._state();
60
- if (totalPages > currentPage) {
61
- this.calculateNewState({ newPage: currentPage + 1 });
62
- }
63
- }
64
- reset() {
65
- this.currentPage = 0;
66
- }
67
- calculateNewState({ newPage, newPageSize, newTotalElements, }) {
68
- const previousState = this._state();
69
- let currentPage = newPage ?? previousState.currentPage;
70
- const pageSize = newPageSize ?? previousState.pageSize;
71
- const totalElements = newTotalElements ?? previousState.totalElements ?? 0;
72
- const newTotalPages = totalElements ? Math.floor(totalElements / pageSize) : 0;
73
- if (newTotalPages < currentPage - 1) {
74
- currentPage = newTotalPages - 1;
75
- }
76
- const newStartIndex = totalElements === 0 ? 0 : Math.min(totalElements - 1, currentPage * pageSize);
77
- const newEndIndex = Math.min((currentPage + 1) * pageSize - 1, totalElements - 1);
78
- const newState = {
79
- currentPage: currentPage,
80
- startIndex: newStartIndex,
81
- endIndex: newEndIndex,
82
- pageSize: pageSize,
83
- totalPages: newTotalPages,
84
- totalElements: totalElements,
85
- };
86
- this._state.set(newState);
87
- }
88
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnPaginatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
89
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.5", type: BrnPaginatorDirective, isStandalone: true, selector: "[brnPaginator]", inputs: { totalElements: ["brnPaginatorTotalElements", "totalElements"], currentPage: ["brnPaginatorCurrentPage", "currentPage", numberAttribute], pageSize: ["brnPaginatorPageSize", "pageSize", numberAttribute], onStateChange: ["brnPaginatorOnStateChange", "onStateChange"] }, exportAs: ["brnPaginator"], ngImport: i0 });
90
- }
91
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnPaginatorDirective, decorators: [{
92
- type: Directive,
93
- args: [{
94
- standalone: true,
95
- selector: '[brnPaginator]',
96
- exportAs: 'brnPaginator',
97
- }]
98
- }], ctorParameters: () => [], propDecorators: { totalElements: [{
99
- type: Input,
100
- args: [{ alias: 'brnPaginatorTotalElements' }]
101
- }], currentPage: [{
102
- type: Input,
103
- args: [{ alias: 'brnPaginatorCurrentPage', transform: numberAttribute }]
104
- }], pageSize: [{
105
- type: Input,
106
- args: [{ alias: 'brnPaginatorPageSize', transform: numberAttribute }]
107
- }], onStateChange: [{
108
- type: Input,
109
- args: [{ alias: 'brnPaginatorOnStateChange' }]
110
- }] } });
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLXBhZ2luYXRvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2JyYWluL3RhYmxlL3NyYy9saWIvYnJuLXBhZ2luYXRvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLFNBQVMsRUFDVCxLQUFLLEVBR0wsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixlQUFlLEVBQ2YsTUFBTSxFQUNOLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQzs7QUEwQnZCLE1BQU0sT0FBTyxxQkFBcUI7SUFDakMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLFVBQWlDLEVBQUUsUUFBaUI7UUFDakYsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRWdCLElBQUksR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNoQyxTQUFTLEdBQUcsTUFBTSxDQUFDLENBQUEsV0FBb0IsQ0FBQSxDQUFDLENBQUM7SUFFekMsTUFBTSxHQUFHLE1BQU0sQ0FBaUI7UUFDaEQsV0FBVyxFQUFFLENBQUM7UUFDZCxVQUFVLEVBQUUsQ0FBQztRQUNiLFFBQVEsRUFBRSxDQUFDO1FBQ1gsUUFBUSxFQUFFLEVBQUU7UUFDWixVQUFVLEVBQUUsQ0FBQztRQUNiLGFBQWEsRUFBRSxJQUFJO0tBQ25CLENBQUMsQ0FBQztJQUNjLGNBQWMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM5RCxjQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFD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QUFDLEVBQUUsS0FBSyxFQUFFLHNCQUFzQixFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUU7Z0JBTTdELGFBQWE7c0JBRG5CLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsMkJBQTJCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHREaXJlY3RpdmUsXG5cdElucHV0LFxuXHR0eXBlIE9uSW5pdCxcblx0dHlwZSBTaWduYWwsXG5cdFRlbXBsYXRlUmVmLFxuXHRWaWV3Q29udGFpbmVyUmVmLFxuXHRjb21wdXRlZCxcblx0ZWZmZWN0LFxuXHRpbmplY3QsXG5cdG51bWJlckF0dHJpYnV0ZSxcblx0c2lnbmFsLFxuXHR1bnRyYWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBQYWdpbmF0b3JTdGF0ZSA9IHtcblx0Y3VycmVudFBhZ2U6IG51bWJlcjtcblx0c3RhcnRJbmRleDogbnVtYmVyO1xuXHRlbmRJbmRleDogbnVtYmVyO1xuXHRwYWdlU2l6ZTogbnVtYmVyO1xuXHR0b3RhbFBhZ2VzOiBudW1iZXI7XG5cdHRvdGFsRWxlbWVudHM6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBQYWdpbmF0b3JDb250ZXh0ID0ge1xuXHQkaW1wbGljaXQ6IHtcblx0XHRzdGF0ZTogU2lnbmFsPFBhZ2luYXRvclN0YXRlPjtcblx0XHRpbmNyZW1lbnRhYmxlOiBTaWduYWw8Ym9vbGVhbj47XG5cdFx0ZGVjcmVtZW50YWJsZTogU2lnbmFsPGJvb2xlYW4+O1xuXHRcdGluY3JlbWVudDogKCkgPT4gdm9pZDtcblx0XHRkZWNyZW1lbnQ6ICgpID0+IHZvaWQ7XG5cdH07XG59O1xuXG5ARGlyZWN0aXZlKHtcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0c2VsZWN0b3I6ICdbYnJuUGFnaW5hdG9yXScsXG5cdGV4cG9ydEFzOiAnYnJuUGFnaW5hdG9yJyxcbn0pXG5leHBvcnQgY2xhc3MgQnJuUGFnaW5hdG9yRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcblx0c3RhdGljIG5nVGVtcGxhdGVDb250ZXh0R3VhcmQoX2RpcmVjdGl2ZTogQnJuUGFnaW5hdG9yRGlyZWN0aXZlLCBfY29udGV4dDogdW5rbm93bik6IF9jb250ZXh0IGlzIFBhZ2luYXRvckNvbnRleHQge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0cHJpdmF0ZSByZWFkb25seSBfdmNyID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuXHRwcml2YXRlIHJlYWRvbmx5IF90ZW1wbGF0ZSA9IGluamVjdChUZW1wbGF0ZVJlZjx1bmtub3duPik7XG5cblx0cHJpdmF0ZSByZWFkb25seSBfc3RhdGUgPSBzaWduYWw8UGFnaW5hdG9yU3RhdGU+KHtcblx0XHRjdXJyZW50UGFnZTogMCxcblx0XHRzdGFydEluZGV4OiAwLFxuXHRcdGVuZEluZGV4OiAwLFxuXHRcdHBhZ2VTaXplOiAxMCxcblx0XHR0b3RhbFBhZ2VzOiAwLFxuXHRcdHRvdGFsRWxlbWVudHM6IG51bGwsXG5cdH0pO1xuXHRwcml2YXRlIHJlYWRvbmx5IF9kZWNyZW1lbnRhYmxlID0gY29tcHV0ZWQoKCkgPT4gMCA8IHRoaXMuX3N0YXRlKCkuc3RhcnRJbmRleCk7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2luY3JlbWVudGFibGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9zdGF0ZSgpLmVuZEluZGV4IDwgKHRoaXMuX3N0YXRlKCkudG90YWxFbGVtZW50cyA/PyAwKSAtIDEpO1xuXG5cdEBJbnB1dCh7IGFsaWFzOiAnYnJuUGFnaW5hdG9yVG90YWxFbGVtZW50cycgfSlcblx0cHVibGljIHNldCB0b3RhbEVsZW1lbnRzKHZhbHVlOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG5cdFx0dGhpcy5jYWxjdWxhdGVOZXdTdGF0ZSh7IG5ld1RvdGFsRWxlbWVudHM6IHZhbHVlLCBuZXdQYWdlOiAwIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdicm5QYWdpbmF0b3JDdXJyZW50UGFnZScsIHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pXG5cdHB1YmxpYyBzZXQgY3VycmVudFBhZ2UodmFsdWU6IG51bWJlcikge1xuXHRcdHRoaXMuY2FsY3VsYXRlTmV3U3RhdGUoeyBuZXdQYWdlOiB2YWx1ZSB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnYnJuUGFnaW5hdG9yUGFnZVNpemUnLCB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuXHRwdWJsaWMgc2V0IHBhZ2VTaXplKHZhbHVlOiBudW1iZXIpIHtcblx0XHR0aGlzLmNhbGN1bGF0ZU5ld1N0YXRlKHsgbmV3UGFnZVNpemU6IHZhbHVlLCBuZXdQYWdlOiAwIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdicm5QYWdpbmF0b3JPblN0YXRlQ2hhbmdlJyB9KVxuXHRwdWJsaWMgb25TdGF0ZUNoYW5nZT86IChzdGF0ZTogUGFnaW5hdG9yU3RhdGUpID0+IHZvaWQ7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IHN0YXRlID0gdGhpcy5fc3RhdGUoKTtcblx0XHRcdHVudHJhY2tlZCgoKSA9PiB7XG5cdFx0XHRcdFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRcdGlmICh0aGlzLm9uU3RhdGVDaGFuZ2UpIHtcblx0XHRcdFx0XHRcdHRoaXMub25TdGF0ZUNoYW5nZShzdGF0ZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9XG5cblx0cHVibGljIG5nT25Jbml0KCkge1xuXHRcdHRoaXMuX3Zjci5jcmVhdGVFbWJlZGRlZFZpZXc8UGFnaW5hdG9yQ29udGV4dD4odGhpcy5fdGVtcGxhdGUsIHtcblx0XHRcdCRpbXBsaWNpdDoge1xuXHRcdFx0XHRzdGF0ZTogdGhpcy5fc3RhdGUsXG5cdFx0XHRcdGluY3JlbWVudDogKCkgPT4gdGhpcy5pbmNyZW1lbnRQYWdlKCksXG5cdFx0XHRcdGRlY3JlbWVudDogKCkgPT4gdGhpcy5kZWNyZW1lbnRQYWdlKCksXG5cdFx0XHRcdGluY3JlbWVudGFibGU6IHRoaXMuX2luY3JlbWVudGFibGUsXG5cdFx0XHRcdGRlY3JlbWVudGFibGU6IHRoaXMuX2RlY3JlbWVudGFibGUsXG5cdFx0XHR9LFxuXHRcdH0pO1xuXHR9XG5cblx0cHVibGljIGRlY3JlbWVudFBhZ2UoKTogdm9pZCB7XG5cdFx0Y29uc3QgeyBjdXJyZW50UGFnZSB9ID0gdGhpcy5fc3RhdGUoKTtcblx0XHRpZiAoMCA8IGN1cnJlbnRQYWdlKSB7XG5cdFx0XHR0aGlzLmNhbGN1bGF0ZU5ld1N0YXRlKHsgbmV3UGFnZTogY3VycmVudFBhZ2UgLSAxIH0pO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBpbmNyZW1lbnRQYWdlKCk6IHZvaWQge1xuXHRcdGNvbnN0IHsgY3VycmVudFBhZ2UsIHRvdGFsUGFnZXMgfSA9IHRoaXMuX3N0YXRlKCk7XG5cdFx0aWYgKHRvdGFsUGFnZXMgPiBjdXJyZW50UGFnZSkge1xuXHRcdFx0dGhpcy5jYWxjdWxhdGVOZXdTdGF0ZSh7IG5ld1BhZ2U6IGN1cnJlbnRQYWdlICsgMSB9KTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG5cdFx0dGhpcy5jdXJyZW50UGFnZSA9IDA7XG5cdH1cblxuXHRwcml2YXRlIGNhbGN1bGF0ZU5ld1N0YXRlKHtcblx0XHRuZXdQYWdlLFxuXHRcdG5ld1BhZ2VTaXplLFxuXHRcdG5ld1RvdGFsRWxlbWVudHMsXG5cdH06IFBhcnRpYWw8e1xuXHRcdG5ld1BhZ2U6IG51bWJlcjtcblx0XHRuZXdQYWdlU2l6ZTogbnVtYmVyO1xuXHRcdG5ld1RvdGFsRWxlbWVudHM6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQ7XG5cdH0+KSB7XG5cdFx0Y29uc3QgcHJldmlvdXNTdGF0ZSA9IHRoaXMuX3N0YXRlKCk7XG5cblx0XHRsZXQgY3VycmVudFBhZ2UgPSBuZXdQYWdlID8/IHByZXZpb3VzU3RhdGUuY3VycmVudFBhZ2U7XG5cdFx0Y29uc3QgcGFnZVNpemUgPSBuZXdQYWdlU2l6ZSA/PyBwcmV2aW91c1N0YXRlLnBhZ2VTaXplO1xuXHRcdGNvbnN0IHRvdGFsRWxlbWVudHMgPSBuZXdUb3RhbEVsZW1lbnRzID8/IHByZXZpb3VzU3RhdGUudG90YWxFbGVtZW50cyA/PyAwO1xuXG5cdFx0Y29uc3QgbmV3VG90YWxQYWdlcyA9IHRvdGFsRWxlbWVudHMgPyBNYXRoLmZsb29yKHRvdGFsRWxlbWVudHMgLyBwYWdlU2l6ZSkgOiAwO1xuXG5cdFx0aWYgKG5ld1RvdGFsUGFnZXMgPCBjdXJyZW50UGFnZSAtIDEpIHtcblx0XHRcdGN1cnJlbnRQYWdlID0gbmV3VG90YWxQYWdlcyAtIDE7XG5cdFx0fVxuXG5cdFx0Y29uc3QgbmV3U3RhcnRJbmRleCA9IHRvdGFsRWxlbWVudHMgPT09IDAgPyAwIDogTWF0aC5taW4odG90YWxFbGVtZW50cyAtIDEsIGN1cnJlbnRQYWdlICogcGFnZVNpemUpO1xuXHRcdGNvbnN0IG5ld0VuZEluZGV4ID0gTWF0aC5taW4oKGN1cnJlbnRQYWdlICsgMSkgKiBwYWdlU2l6ZSAtIDEsIHRvdGFsRWxlbWVudHMgLSAxKTtcblxuXHRcdGNvbnN0IG5ld1N0YXRlID0ge1xuXHRcdFx0Y3VycmVudFBhZ2U6IGN1cnJlbnRQYWdlLFxuXHRcdFx0c3RhcnRJbmRleDogbmV3U3RhcnRJbmRleCxcblx0XHRcdGVuZEluZGV4OiBuZXdFbmRJbmRleCxcblx0XHRcdHBhZ2VTaXplOiBwYWdlU2l6ZSxcblx0XHRcdHRvdGFsUGFnZXM6IG5ld1RvdGFsUGFnZXMsXG5cdFx0XHR0b3RhbEVsZW1lbnRzOiB0b3RhbEVsZW1lbnRzLFxuXHRcdH07XG5cblx0XHR0aGlzLl9zdGF0ZS5zZXQobmV3U3RhdGUpO1xuXHR9XG59XG4iXX0=
@@ -1,169 +0,0 @@
1
- import { CdkRowDef, CdkTable, CdkTableModule } from '@angular/cdk/table';
2
- import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Input, Output, ViewChild, ViewEncapsulation, booleanAttribute, } from '@angular/core';
3
- import { provideTableClassesSettableExisting } from '@spartan-ng/brain/core';
4
- import { BrnColumnDefComponent } from './brn-column-def.component';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/cdk/table";
7
- export class BrnTableComponent {
8
- _cdkTable;
9
- // Cdk Table Inputs / Outputs
10
- dataSource = [];
11
- fixedLayout = false;
12
- multiTemplateDataRows = false;
13
- displayedColumns = [];
14
- _trackBy;
15
- get trackBy() {
16
- return this._trackBy;
17
- }
18
- set trackBy(value) {
19
- this._trackBy = value;
20
- if (this._cdkTable) {
21
- this._cdkTable.trackBy = this._trackBy;
22
- }
23
- }
24
- contentChanged = new EventEmitter();
25
- // Brn Inputs / Outputs
26
- customTemplateDataRows = false;
27
- onRowClick;
28
- stickyHeader = false;
29
- tableClasses = '';
30
- headerRowClasses = '';
31
- bodyRowClasses = '';
32
- columnDefComponents;
33
- rowDefs;
34
- // after the <ng-content> has been initialized, the column definitions are available.
35
- // All that's left is to add them to the table ourselves:
36
- ngAfterContentInit() {
37
- this.columnDefComponents.forEach((component) => {
38
- if (!this._cdkTable)
39
- return;
40
- if (component.cell) {
41
- this._cdkTable.addColumnDef(component.columnDef);
42
- }
43
- });
44
- this.rowDefs.forEach((rowDef) => {
45
- if (!this._cdkTable)
46
- return;
47
- this._cdkTable.addRowDef(rowDef);
48
- });
49
- }
50
- setTableClasses({ table, headerRow, bodyRow, }) {
51
- if (table) {
52
- this.tableClasses = table;
53
- }
54
- if (headerRow) {
55
- this.headerRowClasses = headerRow;
56
- }
57
- if (bodyRow) {
58
- this.bodyRowClasses = bodyRow;
59
- }
60
- }
61
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
62
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.5", type: BrnTableComponent, isStandalone: true, selector: "brn-table", inputs: { dataSource: "dataSource", fixedLayout: ["fixedLayout", "fixedLayout", booleanAttribute], multiTemplateDataRows: ["multiTemplateDataRows", "multiTemplateDataRows", booleanAttribute], displayedColumns: "displayedColumns", trackBy: "trackBy", customTemplateDataRows: ["customTemplateDataRows", "customTemplateDataRows", booleanAttribute], onRowClick: "onRowClick", stickyHeader: ["stickyHeader", "stickyHeader", booleanAttribute], tableClasses: "tableClasses", headerRowClasses: "headerRowClasses", bodyRowClasses: "bodyRowClasses" }, outputs: { contentChanged: "contentChanged" }, providers: [provideTableClassesSettableExisting((() => BrnTableComponent))], queries: [{ propertyName: "columnDefComponents", predicate: BrnColumnDefComponent }, { propertyName: "rowDefs", predicate: CdkRowDef }], viewQueries: [{ propertyName: "_cdkTable", first: true, predicate: ["cdkTable"], descendants: true, read: CdkTable, static: true }], ngImport: i0, template: `
63
- <cdk-table
64
- #cdkTable
65
- [class]="tableClasses"
66
- [dataSource]="dataSource"
67
- [fixedLayout]="fixedLayout"
68
- [multiTemplateDataRows]="multiTemplateDataRows"
69
- (contentChanged)="contentChanged.emit()"
70
- >
71
- <ng-content />
72
-
73
- <cdk-header-row [class]="headerRowClasses" *cdkHeaderRowDef="displayedColumns; sticky: stickyHeader" />
74
- @if (!customTemplateDataRows) {
75
- <cdk-row
76
- [tabindex]="!!onRowClick ? 0 : -1"
77
- [attr.role]="!!onRowClick ? 'button' : 'row'"
78
- [class.row-interactive]="!!onRowClick"
79
- (keydown.enter)="!!onRowClick && onRowClick(row)"
80
- (click)="!!onRowClick && onRowClick(row)"
81
- [class]="bodyRowClasses"
82
- *cdkRowDef="let row; columns: displayedColumns"
83
- />
84
- }
85
-
86
- <ng-template cdkNoDataRow>
87
- <ng-content select="[brnNoDataRow]" />
88
- </ng-template>
89
- </cdk-table>
90
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CdkTableModule }, { kind: "component", type: i1.CdkTable, selector: "cdk-table, table[cdk-table]", inputs: ["trackBy", "dataSource", "multiTemplateDataRows", "fixedLayout"], outputs: ["contentChanged"], exportAs: ["cdkTable"] }, { kind: "directive", type: i1.CdkRowDef, selector: "[cdkRowDef]", inputs: ["cdkRowDefColumns", "cdkRowDefWhen"] }, { kind: "component", type: i1.CdkRow, selector: "cdk-row, tr[cdk-row]" }, { kind: "component", type: i1.CdkHeaderRow, selector: "cdk-header-row, tr[cdk-header-row]" }, { kind: "directive", type: i1.CdkHeaderRowDef, selector: "[cdkHeaderRowDef]", inputs: ["cdkHeaderRowDef", "cdkHeaderRowDefSticky"] }, { kind: "directive", type: i1.CdkNoDataRow, selector: "ng-template[cdkNoDataRow]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
91
- }
92
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnTableComponent, decorators: [{
93
- type: Component,
94
- args: [{
95
- selector: 'brn-table',
96
- standalone: true,
97
- imports: [CdkTableModule],
98
- providers: [provideTableClassesSettableExisting((() => BrnTableComponent))],
99
- template: `
100
- <cdk-table
101
- #cdkTable
102
- [class]="tableClasses"
103
- [dataSource]="dataSource"
104
- [fixedLayout]="fixedLayout"
105
- [multiTemplateDataRows]="multiTemplateDataRows"
106
- (contentChanged)="contentChanged.emit()"
107
- >
108
- <ng-content />
109
-
110
- <cdk-header-row [class]="headerRowClasses" *cdkHeaderRowDef="displayedColumns; sticky: stickyHeader" />
111
- @if (!customTemplateDataRows) {
112
- <cdk-row
113
- [tabindex]="!!onRowClick ? 0 : -1"
114
- [attr.role]="!!onRowClick ? 'button' : 'row'"
115
- [class.row-interactive]="!!onRowClick"
116
- (keydown.enter)="!!onRowClick && onRowClick(row)"
117
- (click)="!!onRowClick && onRowClick(row)"
118
- [class]="bodyRowClasses"
119
- *cdkRowDef="let row; columns: displayedColumns"
120
- />
121
- }
122
-
123
- <ng-template cdkNoDataRow>
124
- <ng-content select="[brnNoDataRow]" />
125
- </ng-template>
126
- </cdk-table>
127
- `,
128
- changeDetection: ChangeDetectionStrategy.OnPush,
129
- encapsulation: ViewEncapsulation.None,
130
- }]
131
- }], propDecorators: { _cdkTable: [{
132
- type: ViewChild,
133
- args: ['cdkTable', { read: CdkTable, static: true }]
134
- }], dataSource: [{
135
- type: Input
136
- }], fixedLayout: [{
137
- type: Input,
138
- args: [{ transform: booleanAttribute }]
139
- }], multiTemplateDataRows: [{
140
- type: Input,
141
- args: [{ transform: booleanAttribute }]
142
- }], displayedColumns: [{
143
- type: Input
144
- }], trackBy: [{
145
- type: Input
146
- }], contentChanged: [{
147
- type: Output
148
- }], customTemplateDataRows: [{
149
- type: Input,
150
- args: [{ transform: booleanAttribute }]
151
- }], onRowClick: [{
152
- type: Input
153
- }], stickyHeader: [{
154
- type: Input,
155
- args: [{ transform: booleanAttribute }]
156
- }], tableClasses: [{
157
- type: Input
158
- }], headerRowClasses: [{
159
- type: Input
160
- }], bodyRowClasses: [{
161
- type: Input
162
- }], columnDefComponents: [{
163
- type: ContentChildren,
164
- args: [BrnColumnDefComponent]
165
- }], rowDefs: [{
166
- type: ContentChildren,
167
- args: [CdkRowDef]
168
- }] } });
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYnJhaW4vdGFibGUvc3JjL2xpYi9icm4tdGFibGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFnQyxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RyxPQUFPLEVBRU4sdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBR04sU0FBUyxFQUNULGlCQUFpQixFQUNqQixnQkFBZ0IsR0FDaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUE2QixtQ0FBbUMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUF5Q25FLE1BQU0sT0FBTyxpQkFBaUI7SUFFWixTQUFTLENBQWU7SUFDekMsNkJBQTZCO0lBRXRCLFVBQVUsR0FBK0IsRUFBRSxDQUFDO0lBRTVDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFFcEIscUJBQXFCLEdBQUcsS0FBSyxDQUFDO0lBRTlCLGdCQUFnQixHQUFhLEVBQUUsQ0FBQztJQUUvQixRQUFRLENBQXNCO0lBQ3RDLElBQVcsT0FBTztRQUNqQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQ1csT0FBTyxDQUFDLEtBQXlCO1FBQzNDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDeEMsQ0FBQztJQUNGLENBQUM7SUFHZSxjQUFjLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7SUFF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Z0IsRUFBRTtnQkFHL0IsVUFBVTtzQkFEaEIsS0FBSztnQkFJQyxZQUFZO3NCQURsQixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUcvQixZQUFZO3NCQURsQixLQUFLO2dCQUdDLGdCQUFnQjtzQkFEdEIsS0FBSztnQkFHQyxjQUFjO3NCQURwQixLQUFLO2dCQUd5QyxtQkFBbUI7c0JBQWpFLGVBQWU7dUJBQUMscUJBQXFCO2dCQUNILE9BQU87c0JBQXpDLGVBQWU7dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka1Jvd0RlZiwgQ2RrVGFibGUsIHR5cGUgQ2RrVGFibGVEYXRhU291cmNlSW5wdXQsIENka1RhYmxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RhYmxlJztcbmltcG9ydCB7XG5cdHR5cGUgQWZ0ZXJDb250ZW50SW5pdCxcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Q29udGVudENoaWxkcmVuLFxuXHRFdmVudEVtaXR0ZXIsXG5cdElucHV0LFxuXHRPdXRwdXQsXG5cdHR5cGUgUXVlcnlMaXN0LFxuXHR0eXBlIFRyYWNrQnlGdW5jdGlvbixcblx0Vmlld0NoaWxkLFxuXHRWaWV3RW5jYXBzdWxhdGlvbixcblx0Ym9vbGVhbkF0dHJpYnV0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0eXBlIFRhYmxlQ2xhc3Nlc1NldHRhYmxlLCBwcm92aWRlVGFibGVDbGFzc2VzU2V0dGFibGVFeGlzdGluZyB9IGZyb20gJ0BzcGFydGFuLW5nL2JyYWluL2NvcmUnO1xuaW1wb3J0IHsgQnJuQ29sdW1uRGVmQ29tcG9uZW50IH0gZnJvbSAnLi9icm4tY29sdW1uLWRlZi5jb21wb25lbnQnO1xuXG5leHBvcnQgdHlwZSBCcm5UYWJsZURhdGFTb3VyY2VJbnB1dDxUPiA9IENka1RhYmxlRGF0YVNvdXJjZUlucHV0PFQ+O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdicm4tdGFibGUnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRpbXBvcnRzOiBbQ2RrVGFibGVNb2R1bGVdLFxuXHRwcm92aWRlcnM6IFtwcm92aWRlVGFibGVDbGFzc2VzU2V0dGFibGVFeGlzdGluZyg8VD4oKSA9PiBCcm5UYWJsZUNvbXBvbmVudDxUPildLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxjZGstdGFibGVcblx0XHRcdCNjZGtUYWJsZVxuXHRcdFx0W2NsYXNzXT1cInRhYmxlQ2xhc3Nlc1wiXG5cdFx0XHRbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCJcblx0XHRcdFtmaXhlZExheW91dF09XCJmaXhlZExheW91dFwiXG5cdFx0XHRbbXVsdGlUZW1wbGF0ZURhdGFSb3dzXT1cIm11bHRpVGVtcGxhdGVEYXRhUm93c1wiXG5cdFx0XHQoY29udGVudENoYW5nZWQpPVwiY29udGVudENoYW5nZWQuZW1pdCgpXCJcblx0XHQ+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXG5cdFx0XHQ8Y2RrLWhlYWRlci1yb3cgW2NsYXNzXT1cImhlYWRlclJvd0NsYXNzZXNcIiAqY2RrSGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uczsgc3RpY2t5OiBzdGlja3lIZWFkZXJcIiAvPlxuXHRcdFx0QGlmICghY3VzdG9tVGVtcGxhdGVEYXRhUm93cykge1xuXHRcdFx0XHQ8Y2RrLXJvd1xuXHRcdFx0XHRcdFt0YWJpbmRleF09XCIhIW9uUm93Q2xpY2sgPyAwIDogLTFcIlxuXHRcdFx0XHRcdFthdHRyLnJvbGVdPVwiISFvblJvd0NsaWNrID8gJ2J1dHRvbicgOiAncm93J1wiXG5cdFx0XHRcdFx0W2NsYXNzLnJvdy1pbnRlcmFjdGl2ZV09XCIhIW9uUm93Q2xpY2tcIlxuXHRcdFx0XHRcdChrZXlkb3duLmVudGVyKT1cIiEhb25Sb3dDbGljayAmJiBvblJvd0NsaWNrKHJvdylcIlxuXHRcdFx0XHRcdChjbGljayk9XCIhIW9uUm93Q2xpY2sgJiYgb25Sb3dDbGljayhyb3cpXCJcblx0XHRcdFx0XHRbY2xhc3NdPVwiYm9keVJvd0NsYXNzZXNcIlxuXHRcdFx0XHRcdCpjZGtSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zXCJcblx0XHRcdFx0Lz5cblx0XHRcdH1cblxuXHRcdFx0PG5nLXRlbXBsYXRlIGNka05vRGF0YVJvdz5cblx0XHRcdFx0PG5nLWNvbnRlbnQgc2VsZWN0PVwiW2Jybk5vRGF0YVJvd11cIiAvPlxuXHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHQ8L2Nkay10YWJsZT5cblx0YCxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEJyblRhYmxlQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgVGFibGVDbGFzc2VzU2V0dGFibGUsIEFmdGVyQ29udGVudEluaXQge1xuXHRAVmlld0NoaWxkKCdjZGtUYWJsZScsIHsgcmVhZDogQ2RrVGFibGUsIHN0YXRpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IF9jZGtUYWJsZT86IENka1RhYmxlPFQ+O1xuXHQvLyBDZGsgVGFibGUgSW5wdXRzIC8gT3V0cHV0c1xuXHRASW5wdXQoKVxuXHRwdWJsaWMgZGF0YVNvdXJjZTogQnJuVGFibGVEYXRhU291cmNlSW5wdXQ8VD4gPSBbXTtcblx0QElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG5cdHB1YmxpYyBmaXhlZExheW91dCA9IGZhbHNlO1xuXHRASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcblx0cHVibGljIG11bHRpVGVtcGxhdGVEYXRhUm93cyA9IGZhbHNlO1xuXHRASW5wdXQoKVxuXHRwdWJsaWMgZGlzcGxheWVkQ29sdW1uczogc3RyaW5nW10gPSBbXTtcblxuXHRwcml2YXRlIF90cmFja0J5PzogVHJhY2tCeUZ1bmN0aW9uPFQ+O1xuXHRwdWJsaWMgZ2V0IHRyYWNrQnkoKTogVHJhY2tCeUZ1bmN0aW9uPFQ+IHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5fdHJhY2tCeTtcblx0fVxuXG5cdEBJbnB1dCgpXG5cdHB1YmxpYyBzZXQgdHJhY2tCeSh2YWx1ZTogVHJhY2tCeUZ1bmN0aW9uPFQ+KSB7XG5cdFx0dGhpcy5fdHJhY2tCeSA9IHZhbHVlO1xuXHRcdGlmICh0aGlzLl9jZGtUYWJsZSkge1xuXHRcdFx0dGhpcy5fY2RrVGFibGUudHJhY2tCeSA9IHRoaXMuX3RyYWNrQnk7XG5cdFx0fVxuXHR9XG5cblx0QE91dHB1dCgpXG5cdHB1YmxpYyByZWFkb25seSBjb250ZW50Q2hhbmdlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG5cdC8vIEJybiBJbnB1dHMgLyBPdXRwdXRzXG5cdEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuXHRwdWJsaWMgY3VzdG9tVGVtcGxhdGVEYXRhUm93cyA9IGZhbHNlO1xuXHRASW5wdXQoKVxuXHRwdWJsaWMgb25Sb3dDbGljazogKChlbGVtZW50OiBUKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcblxuXHRASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcblx0cHVibGljIHN0aWNreUhlYWRlciA9IGZhbHNlO1xuXHRASW5wdXQoKVxuXHRwdWJsaWMgdGFibGVDbGFzc2VzID0gJyc7XG5cdEBJbnB1dCgpXG5cdHB1YmxpYyBoZWFkZXJSb3dDbGFzc2VzID0gJyc7XG5cdEBJbnB1dCgpXG5cdHB1YmxpYyBib2R5Um93Q2xhc3NlcyA9ICcnO1xuXG5cdEBDb250ZW50Q2hpbGRyZW4oQnJuQ29sdW1uRGVmQ29tcG9uZW50KSBwdWJsaWMgY29sdW1uRGVmQ29tcG9uZW50cyE6IFF1ZXJ5TGlzdDxCcm5Db2x1bW5EZWZDb21wb25lbnQ+O1xuXHRAQ29udGVudENoaWxkcmVuKENka1Jvd0RlZikgcHVibGljIHJvd0RlZnMhOiBRdWVyeUxpc3Q8Q2RrUm93RGVmPFQ+PjtcblxuXHQvLyBhZnRlciB0aGUgPG5nLWNvbnRlbnQ+IGhhcyBiZWVuIGluaXRpYWxpemVkLCB0aGUgY29sdW1uIGRlZmluaXRpb25zIGFyZSBhdmFpbGFibGUuXG5cdC8vIEFsbCB0aGF0J3MgbGVmdCBpcyB0byBhZGQgdGhlbSB0byB0aGUgdGFibGUgb3Vyc2VsdmVzOlxuXHRwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuXHRcdHRoaXMuY29sdW1uRGVmQ29tcG9uZW50cy5mb3JFYWNoKChjb21wb25lbnQpID0+IHtcblx0XHRcdGlmICghdGhpcy5fY2RrVGFibGUpIHJldHVybjtcblx0XHRcdGlmIChjb21wb25lbnQuY2VsbCkge1xuXHRcdFx0XHR0aGlzLl9jZGtUYWJsZS5hZGRDb2x1bW5EZWYoY29tcG9uZW50LmNvbHVtbkRlZik7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0dGhpcy5yb3dEZWZzLmZvckVhY2goKHJvd0RlZikgPT4ge1xuXHRcdFx0aWYgKCF0aGlzLl9jZGtUYWJsZSkgcmV0dXJuO1xuXHRcdFx0dGhpcy5fY2RrVGFibGUuYWRkUm93RGVmKHJvd0RlZik7XG5cdFx0fSk7XG5cdH1cblxuXHRwdWJsaWMgc2V0VGFibGVDbGFzc2VzKHtcblx0XHR0YWJsZSxcblx0XHRoZWFkZXJSb3csXG5cdFx0Ym9keVJvdyxcblx0fTogUGFydGlhbDx7IHRhYmxlOiBzdHJpbmc7IGhlYWRlclJvdzogc3RyaW5nOyBib2R5Um93OiBzdHJpbmcgfT4pOiB2b2lkIHtcblx0XHRpZiAodGFibGUpIHtcblx0XHRcdHRoaXMudGFibGVDbGFzc2VzID0gdGFibGU7XG5cdFx0fVxuXHRcdGlmIChoZWFkZXJSb3cpIHtcblx0XHRcdHRoaXMuaGVhZGVyUm93Q2xhc3NlcyA9IGhlYWRlclJvdztcblx0XHR9XG5cdFx0aWYgKGJvZHlSb3cpIHtcblx0XHRcdHRoaXMuYm9keVJvd0NsYXNzZXMgPSBib2R5Um93O1xuXHRcdH1cblx0fVxufVxuIl19
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhcnRhbi1uZy1icmFpbi10YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYnJhaW4vdGFibGUvc3JjL3NwYXJ0YW4tbmctYnJhaW4tdGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -1,32 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { BrnTabsListDirective } from './lib/brn-tabs-list.directive';
3
- import { BrnTabsContentDirective, BrnTabsDirective, BrnTabsTriggerDirective } from './lib/brn-tabs-trigger.directive';
4
- import * as i0 from "@angular/core";
5
- export * from './lib/brn-tabs-list.directive';
6
- export * from './lib/brn-tabs-paginated-list.directive';
7
- export * from './lib/brn-tabs-trigger.directive';
8
- export const BrnTabsImports = [
9
- BrnTabsDirective,
10
- BrnTabsListDirective,
11
- BrnTabsTriggerDirective,
12
- BrnTabsContentDirective,
13
- ];
14
- export class BrnTabsModule {
15
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnTabsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
16
- /** @nocollapse */ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.5", ngImport: i0, type: BrnTabsModule, imports: [BrnTabsDirective,
17
- BrnTabsListDirective,
18
- BrnTabsTriggerDirective,
19
- BrnTabsContentDirective], exports: [BrnTabsDirective,
20
- BrnTabsListDirective,
21
- BrnTabsTriggerDirective,
22
- BrnTabsContentDirective] });
23
- /** @nocollapse */ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnTabsModule });
24
- }
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnTabsModule, decorators: [{
26
- type: NgModule,
27
- args: [{
28
- imports: [...BrnTabsImports],
29
- exports: [...BrnTabsImports],
30
- }]
31
- }] });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2JyYWluL3RhYnMvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDckUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7O0FBRXRILGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLGtDQUFrQyxDQUFDO0FBRWpELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUM3QixnQkFBZ0I7SUFDaEIsb0JBQW9CO0lBQ3BCLHVCQUF1QjtJQUN2Qix1QkFBdUI7Q0FDZCxDQUFDO0FBTVgsTUFBTSxPQUFPLGFBQWE7MEhBQWIsYUFBYTsySEFBYixhQUFhLFlBVnpCLGdCQUFnQjtZQUNoQixvQkFBb0I7WUFDcEIsdUJBQXVCO1lBQ3ZCLHVCQUF1QixhQUh2QixnQkFBZ0I7WUFDaEIsb0JBQW9CO1lBQ3BCLHVCQUF1QjtZQUN2Qix1QkFBdUI7MkhBT1gsYUFBYTs7MkZBQWIsYUFBYTtrQkFKekIsUUFBUTttQkFBQztvQkFDVCxPQUFPLEVBQUUsQ0FBQyxHQUFHLGNBQWMsQ0FBQztvQkFDNUIsT0FBTyxFQUFFLENBQUMsR0FBRyxjQUFjLENBQUM7aUJBQzVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQnJuVGFic0xpc3REaXJlY3RpdmUgfSBmcm9tICcuL2xpYi9icm4tdGFicy1saXN0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBCcm5UYWJzQ29udGVudERpcmVjdGl2ZSwgQnJuVGFic0RpcmVjdGl2ZSwgQnJuVGFic1RyaWdnZXJEaXJlY3RpdmUgfSBmcm9tICcuL2xpYi9icm4tdGFicy10cmlnZ2VyLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jybi10YWJzLWxpc3QuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jybi10YWJzLXBhZ2luYXRlZC1saXN0LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9icm4tdGFicy10cmlnZ2VyLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCBjb25zdCBCcm5UYWJzSW1wb3J0cyA9IFtcblx0QnJuVGFic0RpcmVjdGl2ZSxcblx0QnJuVGFic0xpc3REaXJlY3RpdmUsXG5cdEJyblRhYnNUcmlnZ2VyRGlyZWN0aXZlLFxuXHRCcm5UYWJzQ29udGVudERpcmVjdGl2ZSxcbl0gYXMgY29uc3Q7XG5cbkBOZ01vZHVsZSh7XG5cdGltcG9ydHM6IFsuLi5Ccm5UYWJzSW1wb3J0c10sXG5cdGV4cG9ydHM6IFsuLi5Ccm5UYWJzSW1wb3J0c10sXG59KVxuZXhwb3J0IGNsYXNzIEJyblRhYnNNb2R1bGUge31cbiJdfQ==
@@ -1,66 +0,0 @@
1
- import { FocusKeyManager } from '@angular/cdk/a11y';
2
- import { Directive, ElementRef, contentChildren, inject } from '@angular/core';
3
- import { fromEvent } from 'rxjs';
4
- import { take } from 'rxjs/operators';
5
- import { BrnTabsDirective, BrnTabsTriggerDirective } from './brn-tabs-trigger.directive';
6
- import * as i0 from "@angular/core";
7
- export class BrnTabsListDirective {
8
- _root = inject(BrnTabsDirective);
9
- _orientation = this._root.$orientation;
10
- _direction = this._root.$direction;
11
- _activeTab = this._root.$activeTab;
12
- _tabs = this._root.$tabs;
13
- _elementRef = inject(ElementRef);
14
- _keyDownListener = fromEvent(this._elementRef.nativeElement, 'keydown');
15
- _keyManager;
16
- triggers = contentChildren(BrnTabsTriggerDirective, { descendants: true });
17
- ngAfterContentInit() {
18
- this._keyManager = new FocusKeyManager(this.triggers())
19
- .withHorizontalOrientation(this._direction())
20
- .withHomeAndEnd()
21
- .withPageUpDown()
22
- .withWrap();
23
- // needed because by default the index is set to -1, which means first interaction is skipped
24
- this._keyDownListener.pipe(take(1)).subscribe(() => {
25
- const currentTabKey = this._activeTab();
26
- const tabs = this._tabs();
27
- let activeIndex = 0;
28
- if (currentTabKey) {
29
- const currentTab = tabs[currentTabKey];
30
- if (currentTab) {
31
- activeIndex = this.triggers().indexOf(currentTab.trigger);
32
- }
33
- }
34
- this._keyManager?.setActiveItem(activeIndex);
35
- });
36
- this._keyDownListener.subscribe((event) => {
37
- if ('key' in event) {
38
- if (this._orientation() === 'horizontal') {
39
- if (event.key === 'ArrowUp' || event.key === 'ArrowDown')
40
- return;
41
- }
42
- if (this._orientation() === 'vertical') {
43
- if (event.key === 'ArrowLeft' || event.key === 'ArrowRight')
44
- return;
45
- }
46
- }
47
- this._keyManager?.onKeydown(event);
48
- });
49
- }
50
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnTabsListDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
51
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.2.5", type: BrnTabsListDirective, isStandalone: true, selector: "[brnTabsList]", host: { attributes: { "role": "tablist" }, properties: { "attr.aria-orientation": "_orientation()", "attr.data-orientation": "_orientation()" } }, queries: [{ propertyName: "triggers", predicate: BrnTabsTriggerDirective, descendants: true, isSignal: true }], exportAs: ["brnTabsList"], ngImport: i0 });
52
- }
53
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnTabsListDirective, decorators: [{
54
- type: Directive,
55
- args: [{
56
- selector: '[brnTabsList]',
57
- standalone: true,
58
- host: {
59
- role: 'tablist',
60
- '[attr.aria-orientation]': '_orientation()',
61
- '[attr.data-orientation]': '_orientation()',
62
- },
63
- exportAs: 'brnTabsList',
64
- }]
65
- }] });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLXRhYnMtbGlzdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2JyYWluL3RhYnMvc3JjL2xpYi9icm4tdGFicy1saXN0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUF5QixTQUFTLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBWXpGLE1BQU0sT0FBTyxvQkFBb0I7SUFDZixLQUFLLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFL0IsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO0lBQ3pDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztJQUNuQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7SUFDbkMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3pCLFdBQVcsR0FBRyxNQUFNLENBQTBCLFVBQVUsQ0FBQyxDQUFDO0lBQzFELGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUVqRixXQUFXLENBQTRDO0lBRXhELFFBQVEsR0FBRyxlQUFlLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUUzRSxrQkFBa0I7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBMEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQzlFLHlCQUF5QixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUM1QyxjQUFjLEVBQUU7YUFDaEIsY0FBYyxFQUFFO2FBQ2hCLFFBQVEsRUFBRSxDQUFDO1FBRWIsNkZBQTZGO1FBQzdGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNsRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDeEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzFCLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQztZQUNwQixJQUFJLGFBQWEsRUFBRSxDQUFDO2dCQUNuQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ3ZDLElBQUksVUFBVSxFQUFFLENBQUM7b0JBQ2hCLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDM0QsQ0FBQztZQUNGLENBQUM7WUFDRCxJQUFJLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN6QyxJQUFJLEtBQUssSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssWUFBWSxFQUFFLENBQUM7b0JBQzFDLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxXQUFXO3dCQUFFLE9BQU87Z0JBQ2xFLENBQUM7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQ3hDLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxXQUFXLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxZQUFZO3dCQUFFLE9BQU87Z0JBQ3JFLENBQUM7WUFDRixDQUFDO1lBQ0QsSUFBSSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsS0FBc0IsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzswSEE5Q1csb0JBQW9COzhHQUFwQixvQkFBb0IscVBBWUUsdUJBQXVCOzsyRkFaN0Msb0JBQW9CO2tCQVZoQyxTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxlQUFlO29CQUN6QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFO3dCQUNMLElBQUksRUFBRSxTQUFTO3dCQUNmLHlCQUF5QixFQUFFLGdCQUFnQjt3QkFDM0MseUJBQXlCLEVBQUUsZ0JBQWdCO3FCQUMzQztvQkFDRCxRQUFRLEVBQUUsYUFBYTtpQkFDdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c0tleU1hbmFnZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyB0eXBlIEFmdGVyQ29udGVudEluaXQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgY29udGVudENoaWxkcmVuLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEJyblRhYnNEaXJlY3RpdmUsIEJyblRhYnNUcmlnZ2VyRGlyZWN0aXZlIH0gZnJvbSAnLi9icm4tdGFicy10cmlnZ2VyLmRpcmVjdGl2ZSc7XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ1ticm5UYWJzTGlzdF0nLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRob3N0OiB7XG5cdFx0cm9sZTogJ3RhYmxpc3QnLFxuXHRcdCdbYXR0ci5hcmlhLW9yaWVudGF0aW9uXSc6ICdfb3JpZW50YXRpb24oKScsXG5cdFx0J1thdHRyLmRhdGEtb3JpZW50YXRpb25dJzogJ19vcmllbnRhdGlvbigpJyxcblx0fSxcblx0ZXhwb3J0QXM6ICdicm5UYWJzTGlzdCcsXG59KVxuZXhwb3J0IGNsYXNzIEJyblRhYnNMaXN0RGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG5cdHByaXZhdGUgcmVhZG9ubHkgX3Jvb3QgPSBpbmplY3QoQnJuVGFic0RpcmVjdGl2ZSk7XG5cblx0cHJvdGVjdGVkIHJlYWRvbmx5IF9vcmllbnRhdGlvbiA9IHRoaXMuX3Jvb3QuJG9yaWVudGF0aW9uO1xuXHRwcml2YXRlIHJlYWRvbmx5IF9kaXJlY3Rpb24gPSB0aGlzLl9yb290LiRkaXJlY3Rpb247XG5cdHByaXZhdGUgcmVhZG9ubHkgX2FjdGl2ZVRhYiA9IHRoaXMuX3Jvb3QuJGFjdGl2ZVRhYjtcblx0cHJpdmF0ZSByZWFkb25seSBfdGFicyA9IHRoaXMuX3Jvb3QuJHRhYnM7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuXHRwcml2YXRlIHJlYWRvbmx5IF9rZXlEb3duTGlzdGVuZXIgPSBmcm9tRXZlbnQodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAna2V5ZG93bicpO1xuXG5cdHByaXZhdGUgX2tleU1hbmFnZXI/OiBGb2N1c0tleU1hbmFnZXI8QnJuVGFic1RyaWdnZXJEaXJlY3RpdmU+O1xuXG5cdHB1YmxpYyB0cmlnZ2VycyA9IGNvbnRlbnRDaGlsZHJlbihCcm5UYWJzVHJpZ2dlckRpcmVjdGl2ZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KTtcblxuXHRwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuXHRcdHRoaXMuX2tleU1hbmFnZXIgPSBuZXcgRm9jdXNLZXlNYW5hZ2VyPEJyblRhYnNUcmlnZ2VyRGlyZWN0aXZlPih0aGlzLnRyaWdnZXJzKCkpXG5cdFx0XHQud2l0aEhvcml6b250YWxPcmllbnRhdGlvbih0aGlzLl9kaXJlY3Rpb24oKSlcblx0XHRcdC53aXRoSG9tZUFuZEVuZCgpXG5cdFx0XHQud2l0aFBhZ2VVcERvd24oKVxuXHRcdFx0LndpdGhXcmFwKCk7XG5cblx0XHQvLyBuZWVkZWQgYmVjYXVzZSBieSBkZWZhdWx0IHRoZSBpbmRleCBpcyBzZXQgdG8gLTEsIHdoaWNoIG1lYW5zIGZpcnN0IGludGVyYWN0aW9uIGlzIHNraXBwZWRcblx0XHR0aGlzLl9rZXlEb3duTGlzdGVuZXIucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuXHRcdFx0Y29uc3QgY3VycmVudFRhYktleSA9IHRoaXMuX2FjdGl2ZVRhYigpO1xuXHRcdFx0Y29uc3QgdGFicyA9IHRoaXMuX3RhYnMoKTtcblx0XHRcdGxldCBhY3RpdmVJbmRleCA9IDA7XG5cdFx0XHRpZiAoY3VycmVudFRhYktleSkge1xuXHRcdFx0XHRjb25zdCBjdXJyZW50VGFiID0gdGFic1tjdXJyZW50VGFiS2V5XTtcblx0XHRcdFx0aWYgKGN1cnJlbnRUYWIpIHtcblx0XHRcdFx0XHRhY3RpdmVJbmRleCA9IHRoaXMudHJpZ2dlcnMoKS5pbmRleE9mKGN1cnJlbnRUYWIudHJpZ2dlcik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHRoaXMuX2tleU1hbmFnZXI/LnNldEFjdGl2ZUl0ZW0oYWN0aXZlSW5kZXgpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5fa2V5RG93bkxpc3RlbmVyLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcblx0XHRcdGlmICgna2V5JyBpbiBldmVudCkge1xuXHRcdFx0XHRpZiAodGhpcy5fb3JpZW50YXRpb24oKSA9PT0gJ2hvcml6b250YWwnKSB7XG5cdFx0XHRcdFx0aWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnIHx8IGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodGhpcy5fb3JpZW50YXRpb24oKSA9PT0gJ3ZlcnRpY2FsJykge1xuXHRcdFx0XHRcdGlmIChldmVudC5rZXkgPT09ICdBcnJvd0xlZnQnIHx8IGV2ZW50LmtleSA9PT0gJ0Fycm93UmlnaHQnKSByZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHRoaXMuX2tleU1hbmFnZXI/Lm9uS2V5ZG93bihldmVudCBhcyBLZXlib2FyZEV2ZW50KTtcblx0XHR9KTtcblx0fVxufVxuIl19