@tailng-ui/primitives 0.13.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (244) hide show
  1. package/package.json +3 -2
  2. package/src/index.d.ts +1 -0
  3. package/src/index.d.ts.map +1 -1
  4. package/src/index.js +1 -0
  5. package/src/index.js.map +1 -1
  6. package/src/lib/feedback/empty/tng-empty.d.ts.map +1 -1
  7. package/src/lib/feedback/empty/tng-empty.js +0 -5
  8. package/src/lib/feedback/empty/tng-empty.js.map +1 -1
  9. package/src/lib/feedback/progress-bar/tng-progress-bar.d.ts.map +1 -1
  10. package/src/lib/feedback/progress-bar/tng-progress-bar.js +0 -2
  11. package/src/lib/feedback/progress-bar/tng-progress-bar.js.map +1 -1
  12. package/src/lib/feedback/progress-spinner/tng-progress-spinner.d.ts.map +1 -1
  13. package/src/lib/feedback/progress-spinner/tng-progress-spinner.js +0 -1
  14. package/src/lib/feedback/progress-spinner/tng-progress-spinner.js.map +1 -1
  15. package/src/lib/feedback/skeleton/tng-skeleton.d.ts.map +1 -1
  16. package/src/lib/feedback/skeleton/tng-skeleton.js +0 -1
  17. package/src/lib/feedback/skeleton/tng-skeleton.js.map +1 -1
  18. package/src/lib/feedback/toast/tng-toast.d.ts.map +1 -1
  19. package/src/lib/feedback/toast/tng-toast.js +0 -2
  20. package/src/lib/feedback/toast/tng-toast.js.map +1 -1
  21. package/src/lib/form/_shared/select/tng-select.overlay.shared.d.ts.map +1 -1
  22. package/src/lib/form/_shared/select/tng-select.overlay.shared.js +0 -1
  23. package/src/lib/form/_shared/select/tng-select.overlay.shared.js.map +1 -1
  24. package/src/lib/form/_shared/select/tng-select.parts.shared.d.ts.map +1 -1
  25. package/src/lib/form/_shared/select/tng-select.parts.shared.js +0 -4
  26. package/src/lib/form/_shared/select/tng-select.parts.shared.js.map +1 -1
  27. package/src/lib/form/autocomplete/tng-autocomplete.d.ts.map +1 -1
  28. package/src/lib/form/autocomplete/tng-autocomplete.js +0 -1
  29. package/src/lib/form/autocomplete/tng-autocomplete.js.map +1 -1
  30. package/src/lib/form/autocomplete/tng-autocomplete.listbox.d.ts.map +1 -1
  31. package/src/lib/form/autocomplete/tng-autocomplete.listbox.js +0 -2
  32. package/src/lib/form/autocomplete/tng-autocomplete.listbox.js.map +1 -1
  33. package/src/lib/form/autocomplete/tng-autocomplete.overlay.d.ts.map +1 -1
  34. package/src/lib/form/autocomplete/tng-autocomplete.overlay.js +0 -1
  35. package/src/lib/form/autocomplete/tng-autocomplete.overlay.js.map +1 -1
  36. package/src/lib/form/autocomplete/tng-autocomplete.parts.d.ts.map +1 -1
  37. package/src/lib/form/autocomplete/tng-autocomplete.parts.js +0 -4
  38. package/src/lib/form/autocomplete/tng-autocomplete.parts.js.map +1 -1
  39. package/src/lib/form/button-toggle/tng-button-toggle.d.ts.map +1 -1
  40. package/src/lib/form/button-toggle/tng-button-toggle.js +0 -2
  41. package/src/lib/form/button-toggle/tng-button-toggle.js.map +1 -1
  42. package/src/lib/form/checkbox/tng-checkbox.d.ts.map +1 -1
  43. package/src/lib/form/checkbox/tng-checkbox.js +0 -1
  44. package/src/lib/form/checkbox/tng-checkbox.js.map +1 -1
  45. package/src/lib/form/chips/tng-chips.d.ts.map +1 -1
  46. package/src/lib/form/chips/tng-chips.js +0 -3
  47. package/src/lib/form/chips/tng-chips.js.map +1 -1
  48. package/src/lib/form/combobox/tng-combobox.d.ts.map +1 -1
  49. package/src/lib/form/combobox/tng-combobox.js +0 -1
  50. package/src/lib/form/combobox/tng-combobox.js.map +1 -1
  51. package/src/lib/form/datepicker/__tests__/tng-datepicker.test-helpers.d.ts +25 -0
  52. package/src/lib/form/datepicker/__tests__/tng-datepicker.test-helpers.d.ts.map +1 -0
  53. package/src/lib/form/datepicker/__tests__/tng-datepicker.test-helpers.js +105 -0
  54. package/src/lib/form/datepicker/__tests__/tng-datepicker.test-helpers.js.map +1 -0
  55. package/src/lib/form/datepicker/datepicker.adapters.d.ts +5 -0
  56. package/src/lib/form/datepicker/datepicker.adapters.d.ts.map +1 -0
  57. package/src/lib/form/datepicker/datepicker.adapters.js +194 -0
  58. package/src/lib/form/datepicker/datepicker.adapters.js.map +1 -0
  59. package/src/lib/form/datepicker/datepicker.state.d.ts +10 -0
  60. package/src/lib/form/datepicker/datepicker.state.d.ts.map +1 -0
  61. package/src/lib/form/datepicker/datepicker.state.js +97 -0
  62. package/src/lib/form/datepicker/datepicker.state.js.map +1 -0
  63. package/src/lib/form/datepicker/datepicker.types.d.ts +269 -0
  64. package/src/lib/form/datepicker/datepicker.types.d.ts.map +1 -0
  65. package/src/lib/form/datepicker/datepicker.types.js +1 -0
  66. package/src/lib/form/datepicker/datepicker.types.js.map +1 -0
  67. package/src/lib/form/datepicker/datepicker.utils.d.ts +75 -0
  68. package/src/lib/form/datepicker/datepicker.utils.d.ts.map +1 -0
  69. package/src/lib/form/datepicker/datepicker.utils.js +238 -0
  70. package/src/lib/form/datepicker/datepicker.utils.js.map +1 -0
  71. package/src/lib/form/datepicker/index.d.ts +3 -0
  72. package/src/lib/form/datepicker/index.d.ts.map +1 -0
  73. package/src/lib/form/datepicker/index.js +3 -0
  74. package/src/lib/form/datepicker/index.js.map +1 -0
  75. package/src/lib/form/datepicker/tng-datepicker.d.ts +5 -0
  76. package/src/lib/form/datepicker/tng-datepicker.d.ts.map +1 -0
  77. package/src/lib/form/datepicker/tng-datepicker.js +1948 -0
  78. package/src/lib/form/datepicker/tng-datepicker.js.map +1 -0
  79. package/src/lib/form/datepicker/tng-datepicker.overlay.d.ts +60 -0
  80. package/src/lib/form/datepicker/tng-datepicker.overlay.d.ts.map +1 -0
  81. package/src/lib/form/datepicker/tng-datepicker.overlay.js +275 -0
  82. package/src/lib/form/datepicker/tng-datepicker.overlay.js.map +1 -0
  83. package/src/lib/form/input/tng-input.d.ts.map +1 -1
  84. package/src/lib/form/input/tng-input.js +0 -4
  85. package/src/lib/form/input/tng-input.js.map +1 -1
  86. package/src/lib/form/input-otp/tng-input-otp.d.ts.map +1 -1
  87. package/src/lib/form/input-otp/tng-input-otp.js +0 -1
  88. package/src/lib/form/input-otp/tng-input-otp.js.map +1 -1
  89. package/src/lib/form/label/tng-label.d.ts.map +1 -1
  90. package/src/lib/form/label/tng-label.js +0 -1
  91. package/src/lib/form/label/tng-label.js.map +1 -1
  92. package/src/lib/form/listbox/listbox.directive.d.ts.map +1 -1
  93. package/src/lib/form/listbox/listbox.directive.js +0 -1
  94. package/src/lib/form/listbox/listbox.directive.js.map +1 -1
  95. package/src/lib/form/listbox/option.directive.d.ts.map +1 -1
  96. package/src/lib/form/listbox/option.directive.js +0 -1
  97. package/src/lib/form/listbox/option.directive.js.map +1 -1
  98. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.d.ts.map +1 -1
  99. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.js +0 -1
  100. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.js.map +1 -1
  101. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.d.ts.map +1 -1
  102. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.js +0 -1
  103. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.js.map +1 -1
  104. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.d.ts.map +1 -1
  105. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.js +0 -1
  106. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.js.map +1 -1
  107. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.d.ts.map +1 -1
  108. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.js +0 -2
  109. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.js.map +1 -1
  110. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.d.ts.map +1 -1
  111. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.js +0 -1
  112. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.js.map +1 -1
  113. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.d.ts.map +1 -1
  114. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.js +0 -1
  115. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.js.map +1 -1
  116. package/src/lib/form/multi-select/tng-multi-select.d.ts.map +1 -1
  117. package/src/lib/form/multi-select/tng-multi-select.js +0 -1
  118. package/src/lib/form/multi-select/tng-multi-select.js.map +1 -1
  119. package/src/lib/form/multi-select/tng-multi-select.listbox.d.ts.map +1 -1
  120. package/src/lib/form/multi-select/tng-multi-select.listbox.js +0 -2
  121. package/src/lib/form/multi-select/tng-multi-select.listbox.js.map +1 -1
  122. package/src/lib/form/multiselect/tng-multiselect.d.ts.map +1 -1
  123. package/src/lib/form/multiselect/tng-multiselect.js +0 -1
  124. package/src/lib/form/multiselect/tng-multiselect.js.map +1 -1
  125. package/src/lib/form/radio/tng-radio.d.ts.map +1 -1
  126. package/src/lib/form/radio/tng-radio.js +0 -1
  127. package/src/lib/form/radio/tng-radio.js.map +1 -1
  128. package/src/lib/form/select/tng-select.d.ts.map +1 -1
  129. package/src/lib/form/select/tng-select.js +0 -1
  130. package/src/lib/form/select/tng-select.js.map +1 -1
  131. package/src/lib/form/select/tng-select.listbox.d.ts.map +1 -1
  132. package/src/lib/form/select/tng-select.listbox.js +0 -2
  133. package/src/lib/form/select/tng-select.listbox.js.map +1 -1
  134. package/src/lib/form/slider/tng-slider.d.ts.map +1 -1
  135. package/src/lib/form/slider/tng-slider.js +0 -1
  136. package/src/lib/form/slider/tng-slider.js.map +1 -1
  137. package/src/lib/form/switch/tng-switch.d.ts.map +1 -1
  138. package/src/lib/form/switch/tng-switch.js +0 -1
  139. package/src/lib/form/switch/tng-switch.js.map +1 -1
  140. package/src/lib/form/textarea/tng-textarea.d.ts.map +1 -1
  141. package/src/lib/form/textarea/tng-textarea.js +0 -1
  142. package/src/lib/form/textarea/tng-textarea.js.map +1 -1
  143. package/src/lib/form/toggle/tng-toggle.d.ts.map +1 -1
  144. package/src/lib/form/toggle/tng-toggle.js +0 -1
  145. package/src/lib/form/toggle/tng-toggle.js.map +1 -1
  146. package/src/lib/form/toggle-group/tng-toggle-group.d.ts.map +1 -1
  147. package/src/lib/form/toggle-group/tng-toggle-group.js +0 -1
  148. package/src/lib/form/toggle-group/tng-toggle-group.js.map +1 -1
  149. package/src/lib/layout/accordion/tng-accordion.d.ts.map +1 -1
  150. package/src/lib/layout/accordion/tng-accordion.js +0 -4
  151. package/src/lib/layout/accordion/tng-accordion.js.map +1 -1
  152. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.d.ts.map +1 -1
  153. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.js +0 -1
  154. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.js.map +1 -1
  155. package/src/lib/layout/card/tng-card.d.ts.map +1 -1
  156. package/src/lib/layout/card/tng-card.js +0 -10
  157. package/src/lib/layout/card/tng-card.js.map +1 -1
  158. package/src/lib/layout/collapsible/tng-collapsible.d.ts.map +1 -1
  159. package/src/lib/layout/collapsible/tng-collapsible.js +0 -3
  160. package/src/lib/layout/collapsible/tng-collapsible.js.map +1 -1
  161. package/src/lib/layout/drawer/tng-drawer.d.ts.map +1 -1
  162. package/src/lib/layout/drawer/tng-drawer.js +0 -6
  163. package/src/lib/layout/drawer/tng-drawer.js.map +1 -1
  164. package/src/lib/layout/grid/__tests__/tng-grid.test-harness.d.ts +32 -0
  165. package/src/lib/layout/grid/__tests__/tng-grid.test-harness.d.ts.map +1 -0
  166. package/src/lib/layout/grid/__tests__/tng-grid.test-harness.js +312 -0
  167. package/src/lib/layout/grid/__tests__/tng-grid.test-harness.js.map +1 -0
  168. package/src/lib/layout/grid/tng-grid.d.ts +144 -2
  169. package/src/lib/layout/grid/tng-grid.d.ts.map +1 -1
  170. package/src/lib/layout/grid/tng-grid.js +669 -3
  171. package/src/lib/layout/grid/tng-grid.js.map +1 -1
  172. package/src/lib/layout/separator/tng-separator.d.ts.map +1 -1
  173. package/src/lib/layout/separator/tng-separator.js +0 -1
  174. package/src/lib/layout/separator/tng-separator.js.map +1 -1
  175. package/src/lib/layout/stepper/tng-stepper.d.ts.map +1 -1
  176. package/src/lib/layout/stepper/tng-stepper.js +0 -1
  177. package/src/lib/layout/stepper/tng-stepper.js.map +1 -1
  178. package/src/lib/layout/tree/__tests__/tng-tree.test-harness.d.ts.map +1 -1
  179. package/src/lib/layout/tree/__tests__/tng-tree.test-harness.js +0 -1
  180. package/src/lib/layout/tree/__tests__/tng-tree.test-harness.js.map +1 -1
  181. package/src/lib/layout/tree/tng-tree-group.d.ts.map +1 -1
  182. package/src/lib/layout/tree/tng-tree-group.js +0 -1
  183. package/src/lib/layout/tree/tng-tree-group.js.map +1 -1
  184. package/src/lib/layout/tree/tng-tree-indicator.d.ts.map +1 -1
  185. package/src/lib/layout/tree/tng-tree-indicator.js +0 -1
  186. package/src/lib/layout/tree/tng-tree-indicator.js.map +1 -1
  187. package/src/lib/layout/tree/tng-tree-item.d.ts.map +1 -1
  188. package/src/lib/layout/tree/tng-tree-item.js +0 -1
  189. package/src/lib/layout/tree/tng-tree-item.js.map +1 -1
  190. package/src/lib/layout/tree/tng-tree.d.ts.map +1 -1
  191. package/src/lib/layout/tree/tng-tree.js +0 -1
  192. package/src/lib/layout/tree/tng-tree.js.map +1 -1
  193. package/src/lib/navigation/breadcrumb/tng-breadcrumb.d.ts.map +1 -1
  194. package/src/lib/navigation/breadcrumb/tng-breadcrumb.js +0 -5
  195. package/src/lib/navigation/breadcrumb/tng-breadcrumb.js.map +1 -1
  196. package/src/lib/navigation/context-menu/tng-context-menu.d.ts.map +1 -1
  197. package/src/lib/navigation/context-menu/tng-context-menu.js +0 -2
  198. package/src/lib/navigation/context-menu/tng-context-menu.js.map +1 -1
  199. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.d.ts.map +1 -1
  200. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.js +0 -1
  201. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.js.map +1 -1
  202. package/src/lib/navigation/menu/tng-menu.d.ts.map +1 -1
  203. package/src/lib/navigation/menu/tng-menu.js +0 -6
  204. package/src/lib/navigation/menu/tng-menu.js.map +1 -1
  205. package/src/lib/navigation/menubar/tng-menubar.d.ts.map +1 -1
  206. package/src/lib/navigation/menubar/tng-menubar.js +0 -2
  207. package/src/lib/navigation/menubar/tng-menubar.js.map +1 -1
  208. package/src/lib/navigation/navigation-menu/tng-navigation-menu.d.ts.map +1 -1
  209. package/src/lib/navigation/navigation-menu/tng-navigation-menu.js +0 -1
  210. package/src/lib/navigation/navigation-menu/tng-navigation-menu.js.map +1 -1
  211. package/src/lib/navigation/tabs/tng-tabs.d.ts +13 -6
  212. package/src/lib/navigation/tabs/tng-tabs.d.ts.map +1 -1
  213. package/src/lib/navigation/tabs/tng-tabs.js +77 -41
  214. package/src/lib/navigation/tabs/tng-tabs.js.map +1 -1
  215. package/src/lib/navigation/toolbar/tng-toolbar.d.ts.map +1 -1
  216. package/src/lib/navigation/toolbar/tng-toolbar.js +0 -1
  217. package/src/lib/navigation/toolbar/tng-toolbar.js.map +1 -1
  218. package/src/lib/overlay/dialog/tng-dialog.d.ts.map +1 -1
  219. package/src/lib/overlay/dialog/tng-dialog.js +0 -9
  220. package/src/lib/overlay/dialog/tng-dialog.js.map +1 -1
  221. package/src/lib/overlay/popover/tng-popover.d.ts.map +1 -1
  222. package/src/lib/overlay/popover/tng-popover.js +0 -4
  223. package/src/lib/overlay/popover/tng-popover.js.map +1 -1
  224. package/src/lib/overlay/tooltip/tng-tooltip.d.ts.map +1 -1
  225. package/src/lib/overlay/tooltip/tng-tooltip.js +0 -3
  226. package/src/lib/overlay/tooltip/tng-tooltip.js.map +1 -1
  227. package/src/lib/utility/avatar/tng-avatar.d.ts.map +1 -1
  228. package/src/lib/utility/avatar/tng-avatar.js +0 -3
  229. package/src/lib/utility/avatar/tng-avatar.js.map +1 -1
  230. package/src/lib/utility/badge/tng-badge.d.ts.map +1 -1
  231. package/src/lib/utility/badge/tng-badge.js +0 -1
  232. package/src/lib/utility/badge/tng-badge.js.map +1 -1
  233. package/src/lib/utility/code-block/tng-code-block.d.ts.map +1 -1
  234. package/src/lib/utility/code-block/tng-code-block.js +0 -5
  235. package/src/lib/utility/code-block/tng-code-block.js.map +1 -1
  236. package/src/lib/utility/copy/tng-copy.d.ts.map +1 -1
  237. package/src/lib/utility/copy/tng-copy.js +0 -1
  238. package/src/lib/utility/copy/tng-copy.js.map +1 -1
  239. package/src/lib/utility/press/tng-press.d.ts.map +1 -1
  240. package/src/lib/utility/press/tng-press.js +0 -1
  241. package/src/lib/utility/press/tng-press.js.map +1 -1
  242. package/src/lib/utility/tag/tng-tag.d.ts.map +1 -1
  243. package/src/lib/utility/tag/tng-tag.js +0 -3
  244. package/src/lib/utility/tag/tng-tag.js.map +1 -1
@@ -0,0 +1,312 @@
1
+ import { Component } from '@angular/core';
2
+ import { TestBed } from '@angular/core/testing';
3
+ import { By } from '@angular/platform-browser';
4
+ import { TngGrid, TngGridCell, TngGridRow, } from '../tng-grid';
5
+ import * as i0 from "@angular/core";
6
+ export class GridHarnessComponent {
7
+ ariaLabel = 'Harness grid';
8
+ ariaColcount = null;
9
+ ariaRowcount = null;
10
+ dir = 'ltr';
11
+ focusRow = undefined;
12
+ focusCol = undefined;
13
+ selectionMode = 'none';
14
+ value = undefined;
15
+ defaultValue = undefined;
16
+ wrap = false;
17
+ disableCell01 = true;
18
+ focusRowChanges = [];
19
+ focusColChanges = [];
20
+ focusEvents = [];
21
+ valueChanges = [];
22
+ activateEvents = [];
23
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: GridHarnessComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
24
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: GridHarnessComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `
25
+ <div
26
+ tngGrid
27
+ [ariaLabel]="ariaLabel"
28
+ [ariaColcount]="ariaColcount"
29
+ [ariaRowcount]="ariaRowcount"
30
+ [dir]="dir"
31
+ [focusRow]="focusRow"
32
+ [focusCol]="focusCol"
33
+ [selectionMode]="selectionMode"
34
+ [value]="value"
35
+ [defaultValue]="defaultValue"
36
+ [wrap]="wrap"
37
+ (focusRowChange)="focusRowChanges.push($event)"
38
+ (focusColChange)="focusColChanges.push($event)"
39
+ (focusChange)="focusEvents.push($event)"
40
+ (valueChange)="valueChanges.push($event)"
41
+ (cellActivate)="activateEvents.push($event)"
42
+ data-testid="grid"
43
+ >
44
+ <div tngGridRow data-testid="row-0">
45
+ <button
46
+ type="button"
47
+ tngGridCell
48
+ data-testid="cell-0-0"
49
+ cellRole="columnheader"
50
+ [rowIndex]="0"
51
+ [colIndex]="0"
52
+ >
53
+ Header
54
+ </button>
55
+ <button
56
+ type="button"
57
+ tngGridCell
58
+ data-testid="cell-0-1"
59
+ [disabled]="disableCell01"
60
+ [rowIndex]="0"
61
+ [colIndex]="1"
62
+ >
63
+ Alpha
64
+ </button>
65
+ <button
66
+ type="button"
67
+ tngGridCell
68
+ data-testid="cell-0-2"
69
+ [rowIndex]="0"
70
+ [colIndex]="2"
71
+ >
72
+ Beta
73
+ </button>
74
+ </div>
75
+
76
+ <div tngGridRow data-testid="row-1">
77
+ <button
78
+ type="button"
79
+ tngGridCell
80
+ data-testid="cell-1-0"
81
+ [rowIndex]="1"
82
+ [colIndex]="0"
83
+ >
84
+ Gamma
85
+ </button>
86
+ <button
87
+ type="button"
88
+ tngGridCell
89
+ data-testid="cell-1-1"
90
+ [rowIndex]="1"
91
+ [colIndex]="1"
92
+ [rowSpan]="2"
93
+ [colSpan]="2"
94
+ >
95
+ Delta
96
+ </button>
97
+ <button
98
+ type="button"
99
+ tngGridCell
100
+ data-testid="cell-1-2"
101
+ [rowIndex]="1"
102
+ [colIndex]="2"
103
+ >
104
+ Epsilon
105
+ </button>
106
+ </div>
107
+
108
+ <div tngGridRow data-testid="row-2">
109
+ <button
110
+ type="button"
111
+ tngGridCell
112
+ data-testid="cell-2-0"
113
+ [rowIndex]="2"
114
+ [colIndex]="0"
115
+ >
116
+ Zeta
117
+ </button>
118
+ <button
119
+ type="button"
120
+ tngGridCell
121
+ data-testid="cell-2-1"
122
+ [rowIndex]="2"
123
+ [colIndex]="1"
124
+ >
125
+ Eta
126
+ </button>
127
+ <button
128
+ type="button"
129
+ tngGridCell
130
+ data-testid="cell-2-2"
131
+ [rowIndex]="2"
132
+ [colIndex]="2"
133
+ >
134
+ Theta
135
+ </button>
136
+ </div>
137
+ </div>
138
+
139
+ <button type="button" data-testid="outside-button">Outside</button>
140
+ `, isInline: true, dependencies: [{ kind: "directive", type: TngGrid, selector: "[tngGrid]", inputs: ["dir", "focusCol", "focusRow", "selectionMode", "value", "defaultValue", "wrap", "ariaLabel", "ariaColcount", "ariaRowcount"], outputs: ["focusRowChange", "focusColChange", "focusChange", "valueChange", "cellActivate"], exportAs: ["tngGrid"] }, { kind: "directive", type: TngGridRow, selector: "[tngGridRow]", exportAs: ["tngGridRow"] }, { kind: "directive", type: TngGridCell, selector: "[tngGridCell]", inputs: ["rowIndex", "colIndex", "rowSpan", "colSpan", "disabled", "selected", "cellRole"], exportAs: ["tngGridCell"] }] });
141
+ }
142
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: GridHarnessComponent, decorators: [{
143
+ type: Component,
144
+ args: [{
145
+ standalone: true,
146
+ imports: [TngGrid, TngGridRow, TngGridCell],
147
+ template: `
148
+ <div
149
+ tngGrid
150
+ [ariaLabel]="ariaLabel"
151
+ [ariaColcount]="ariaColcount"
152
+ [ariaRowcount]="ariaRowcount"
153
+ [dir]="dir"
154
+ [focusRow]="focusRow"
155
+ [focusCol]="focusCol"
156
+ [selectionMode]="selectionMode"
157
+ [value]="value"
158
+ [defaultValue]="defaultValue"
159
+ [wrap]="wrap"
160
+ (focusRowChange)="focusRowChanges.push($event)"
161
+ (focusColChange)="focusColChanges.push($event)"
162
+ (focusChange)="focusEvents.push($event)"
163
+ (valueChange)="valueChanges.push($event)"
164
+ (cellActivate)="activateEvents.push($event)"
165
+ data-testid="grid"
166
+ >
167
+ <div tngGridRow data-testid="row-0">
168
+ <button
169
+ type="button"
170
+ tngGridCell
171
+ data-testid="cell-0-0"
172
+ cellRole="columnheader"
173
+ [rowIndex]="0"
174
+ [colIndex]="0"
175
+ >
176
+ Header
177
+ </button>
178
+ <button
179
+ type="button"
180
+ tngGridCell
181
+ data-testid="cell-0-1"
182
+ [disabled]="disableCell01"
183
+ [rowIndex]="0"
184
+ [colIndex]="1"
185
+ >
186
+ Alpha
187
+ </button>
188
+ <button
189
+ type="button"
190
+ tngGridCell
191
+ data-testid="cell-0-2"
192
+ [rowIndex]="0"
193
+ [colIndex]="2"
194
+ >
195
+ Beta
196
+ </button>
197
+ </div>
198
+
199
+ <div tngGridRow data-testid="row-1">
200
+ <button
201
+ type="button"
202
+ tngGridCell
203
+ data-testid="cell-1-0"
204
+ [rowIndex]="1"
205
+ [colIndex]="0"
206
+ >
207
+ Gamma
208
+ </button>
209
+ <button
210
+ type="button"
211
+ tngGridCell
212
+ data-testid="cell-1-1"
213
+ [rowIndex]="1"
214
+ [colIndex]="1"
215
+ [rowSpan]="2"
216
+ [colSpan]="2"
217
+ >
218
+ Delta
219
+ </button>
220
+ <button
221
+ type="button"
222
+ tngGridCell
223
+ data-testid="cell-1-2"
224
+ [rowIndex]="1"
225
+ [colIndex]="2"
226
+ >
227
+ Epsilon
228
+ </button>
229
+ </div>
230
+
231
+ <div tngGridRow data-testid="row-2">
232
+ <button
233
+ type="button"
234
+ tngGridCell
235
+ data-testid="cell-2-0"
236
+ [rowIndex]="2"
237
+ [colIndex]="0"
238
+ >
239
+ Zeta
240
+ </button>
241
+ <button
242
+ type="button"
243
+ tngGridCell
244
+ data-testid="cell-2-1"
245
+ [rowIndex]="2"
246
+ [colIndex]="1"
247
+ >
248
+ Eta
249
+ </button>
250
+ <button
251
+ type="button"
252
+ tngGridCell
253
+ data-testid="cell-2-2"
254
+ [rowIndex]="2"
255
+ [colIndex]="2"
256
+ >
257
+ Theta
258
+ </button>
259
+ </div>
260
+ </div>
261
+
262
+ <button type="button" data-testid="outside-button">Outside</button>
263
+ `,
264
+ }]
265
+ }] });
266
+ export async function createGridHarnessFixture(overrides = {}) {
267
+ await TestBed.configureTestingModule({
268
+ imports: [GridHarnessComponent],
269
+ }).compileComponents();
270
+ const fixture = TestBed.createComponent(GridHarnessComponent);
271
+ Object.assign(fixture.componentInstance, overrides);
272
+ fixture.detectChanges();
273
+ return fixture;
274
+ }
275
+ export function dispatchGridKeydown(element, key, init = {}) {
276
+ const event = new KeyboardEvent('keydown', {
277
+ bubbles: true,
278
+ cancelable: true,
279
+ key,
280
+ ...init,
281
+ });
282
+ element.dispatchEvent(event);
283
+ return event;
284
+ }
285
+ export function getGrid(fixture) {
286
+ return queryByTestId(fixture, 'grid');
287
+ }
288
+ export function getOutsideButton(fixture) {
289
+ return queryByTestId(fixture, 'outside-button');
290
+ }
291
+ export function getCell(fixture, row, col) {
292
+ return queryByTestId(fixture, `cell-${row}-${col}`);
293
+ }
294
+ export function getRow(fixture, row) {
295
+ return queryByTestId(fixture, `row-${row}`);
296
+ }
297
+ export function getCellDebugElement(fixture, row, col) {
298
+ const de = fixture.debugElement.query(By.css(`[data-testid="cell-${row}-${col}"]`));
299
+ if (de === null) {
300
+ throw new Error(`Missing cell ${row}:${col}`);
301
+ }
302
+ return de;
303
+ }
304
+ function queryByTestId(fixture, testId) {
305
+ const hostElement = fixture.nativeElement;
306
+ const element = hostElement.querySelector(`[data-testid="${testId}"]`);
307
+ if (element === null) {
308
+ throw new Error(`Missing element with data-testid="${testId}"`);
309
+ }
310
+ return element;
311
+ }
312
+ //# sourceMappingURL=tng-grid.test-harness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-grid.test-harness.js","sourceRoot":"","sources":["../../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/grid/__tests__/tng-grid.test-harness.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component } from '@angular/core';\nimport { TestBed, type ComponentFixture } from '@angular/core/testing';\nimport type { DebugElement } from '@angular/core';\nimport { By } from '@angular/platform-browser';\nimport {\n TngGrid,\n TngGridCell,\n type TngGridActivateEvent,\n type TngGridCellValue,\n type TngGridFocusChangeEvent,\n TngGridRow,\n} from '../tng-grid';\n\n@Component({\n standalone: true,\n imports: [TngGrid, TngGridRow, TngGridCell],\n template: `\n <div\n tngGrid\n [ariaLabel]=\"ariaLabel\"\n [ariaColcount]=\"ariaColcount\"\n [ariaRowcount]=\"ariaRowcount\"\n [dir]=\"dir\"\n [focusRow]=\"focusRow\"\n [focusCol]=\"focusCol\"\n [selectionMode]=\"selectionMode\"\n [value]=\"value\"\n [defaultValue]=\"defaultValue\"\n [wrap]=\"wrap\"\n (focusRowChange)=\"focusRowChanges.push($event)\"\n (focusColChange)=\"focusColChanges.push($event)\"\n (focusChange)=\"focusEvents.push($event)\"\n (valueChange)=\"valueChanges.push($event)\"\n (cellActivate)=\"activateEvents.push($event)\"\n data-testid=\"grid\"\n >\n <div tngGridRow data-testid=\"row-0\">\n <button\n type=\"button\"\n tngGridCell\n data-testid=\"cell-0-0\"\n cellRole=\"columnheader\"\n [rowIndex]=\"0\"\n [colIndex]=\"0\"\n >\n Header\n </button>\n <button\n type=\"button\"\n tngGridCell\n data-testid=\"cell-0-1\"\n [disabled]=\"disableCell01\"\n [rowIndex]=\"0\"\n [colIndex]=\"1\"\n >\n Alpha\n </button>\n <button\n type=\"button\"\n tngGridCell\n data-testid=\"cell-0-2\"\n [rowIndex]=\"0\"\n [colIndex]=\"2\"\n >\n Beta\n </button>\n </div>\n\n <div tngGridRow data-testid=\"row-1\">\n <button\n type=\"button\"\n tngGridCell\n data-testid=\"cell-1-0\"\n [rowIndex]=\"1\"\n [colIndex]=\"0\"\n >\n Gamma\n </button>\n <button\n type=\"button\"\n tngGridCell\n data-testid=\"cell-1-1\"\n [rowIndex]=\"1\"\n [colIndex]=\"1\"\n [rowSpan]=\"2\"\n [colSpan]=\"2\"\n >\n Delta\n </button>\n <button\n type=\"button\"\n tngGridCell\n data-testid=\"cell-1-2\"\n [rowIndex]=\"1\"\n [colIndex]=\"2\"\n >\n Epsilon\n </button>\n </div>\n\n <div tngGridRow data-testid=\"row-2\">\n <button\n type=\"button\"\n tngGridCell\n data-testid=\"cell-2-0\"\n [rowIndex]=\"2\"\n [colIndex]=\"0\"\n >\n Zeta\n </button>\n <button\n type=\"button\"\n tngGridCell\n data-testid=\"cell-2-1\"\n [rowIndex]=\"2\"\n [colIndex]=\"1\"\n >\n Eta\n </button>\n <button\n type=\"button\"\n tngGridCell\n data-testid=\"cell-2-2\"\n [rowIndex]=\"2\"\n [colIndex]=\"2\"\n >\n Theta\n </button>\n </div>\n </div>\n\n <button type=\"button\" data-testid=\"outside-button\">Outside</button>\n `,\n})\nexport class GridHarnessComponent {\n public ariaLabel = 'Harness grid';\n public ariaColcount: number | null = null;\n public ariaRowcount: number | null = null;\n public dir: 'ltr' | 'rtl' = 'ltr';\n public focusRow: number | null | undefined = undefined;\n public focusCol: number | null | undefined = undefined;\n public selectionMode: 'none' | 'single' = 'none';\n public value: TngGridCellValue | null | undefined = undefined;\n public defaultValue: TngGridCellValue | null | undefined = undefined;\n public wrap = false;\n public disableCell01 = true;\n\n public readonly focusRowChanges: Array<number | null> = [];\n public readonly focusColChanges: Array<number | null> = [];\n public readonly focusEvents: TngGridFocusChangeEvent[] = [];\n public readonly valueChanges: Array<TngGridCellValue | null> = [];\n public readonly activateEvents: TngGridActivateEvent[] = [];\n}\n\nexport async function createGridHarnessFixture(\n overrides: Partial<GridHarnessComponent> = {},\n): Promise<ComponentFixture<GridHarnessComponent>> {\n await TestBed.configureTestingModule({\n imports: [GridHarnessComponent],\n }).compileComponents();\n\n const fixture = TestBed.createComponent(GridHarnessComponent);\n Object.assign(fixture.componentInstance, overrides);\n fixture.detectChanges();\n return fixture;\n}\n\nexport function dispatchGridKeydown(\n element: HTMLElement,\n key: string,\n init: KeyboardEventInit = {},\n): KeyboardEvent {\n const event = new KeyboardEvent('keydown', {\n bubbles: true,\n cancelable: true,\n key,\n ...init,\n });\n element.dispatchEvent(event);\n return event;\n}\n\nexport function getGrid(fixture: ComponentFixture<GridHarnessComponent>): HTMLElement {\n return queryByTestId(fixture, 'grid');\n}\n\nexport function getOutsideButton(fixture: ComponentFixture<GridHarnessComponent>): HTMLButtonElement {\n return queryByTestId(fixture, 'outside-button') as HTMLButtonElement;\n}\n\nexport function getCell(\n fixture: ComponentFixture<GridHarnessComponent>,\n row: number,\n col: number,\n): HTMLButtonElement {\n return queryByTestId(fixture, `cell-${row}-${col}`) as HTMLButtonElement;\n}\n\nexport function getRow(\n fixture: ComponentFixture<GridHarnessComponent>,\n row: number,\n): HTMLElement {\n return queryByTestId(fixture, `row-${row}`);\n}\n\nexport function getCellDebugElement(\n fixture: ComponentFixture<GridHarnessComponent>,\n row: number,\n col: number,\n): DebugElement {\n const de = fixture.debugElement.query(By.css(`[data-testid=\"cell-${row}-${col}\"]`));\n if (de === null) {\n throw new Error(`Missing cell ${row}:${col}`);\n }\n\n return de;\n}\n\nfunction queryByTestId(\n fixture: ComponentFixture<GridHarnessComponent>,\n testId: string,\n): HTMLElement {\n const hostElement = fixture.nativeElement as HTMLElement;\n const element = hostElement.querySelector<HTMLElement>(`[data-testid=\"${testId}\"]`);\n if (element === null) {\n throw new Error(`Missing element with data-testid=\"${testId}\"`);\n }\n\n return element;\n}\n"]}
@@ -1,7 +1,149 @@
1
+ import type { OnDestroy, OnInit } from '@angular/core';
2
+ import { type TngGridCellPosition } from '@tailng-ui/cdk';
1
3
  import * as i0 from "@angular/core";
2
- export declare class TngGrid {
4
+ export type TngGridDirection = 'ltr' | 'rtl';
5
+ export type TngGridSelectionMode = 'none' | 'single';
6
+ export type TngGridCellRole = 'columnheader' | 'gridcell' | 'rowheader';
7
+ export type TngGridInteractionTrigger = 'keyboard' | 'pointer' | 'programmatic';
8
+ export type TngGridCellValue = Readonly<TngGridCellPosition>;
9
+ export type TngGridFocusChangeEvent = Readonly<{
10
+ col: number;
11
+ previousCol: number | null;
12
+ previousRow: number | null;
13
+ row: number;
14
+ trigger: TngGridInteractionTrigger;
15
+ }>;
16
+ export type TngGridActivateEvent = Readonly<{
17
+ col: number;
18
+ row: number;
19
+ trigger: Extract<TngGridInteractionTrigger, 'keyboard' | 'pointer'>;
20
+ }>;
21
+ type TngGridNullablePosition = TngGridCellValue | null;
22
+ export declare class TngGrid implements OnDestroy {
23
+ private readonly hostRef;
24
+ private readonly cells;
25
+ private readonly cellByKey;
26
+ private uncontrolledFocus;
27
+ private uncontrolledSelection;
28
+ private selectionInitialized;
29
+ private ariaLabelValue;
30
+ private ariaColcountValue;
31
+ private ariaRowcountValue;
32
+ private domFocusedKey;
33
+ private focusVisibleKey;
34
+ private lastActivatedKey;
35
+ private pendingFocusTrigger;
36
+ readonly dir: import("@angular/core").InputSignalWithTransform<TngGridDirection, unknown>;
37
+ readonly focusCol: import("@angular/core").InputSignalWithTransform<number | null | undefined, unknown>;
38
+ readonly focusRow: import("@angular/core").InputSignalWithTransform<number | null | undefined, unknown>;
39
+ readonly selectionMode: import("@angular/core").InputSignalWithTransform<TngGridSelectionMode, unknown>;
40
+ readonly value: import("@angular/core").InputSignalWithTransform<TngGridNullablePosition | undefined, unknown>;
41
+ readonly defaultValue: import("@angular/core").InputSignalWithTransform<TngGridNullablePosition | undefined, unknown>;
42
+ readonly wrap: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
43
+ readonly focusRowChange: import("@angular/core").OutputEmitterRef<number | null>;
44
+ readonly focusColChange: import("@angular/core").OutputEmitterRef<number | null>;
45
+ readonly focusChange: import("@angular/core").OutputEmitterRef<Readonly<{
46
+ col: number;
47
+ previousCol: number | null;
48
+ previousRow: number | null;
49
+ row: number;
50
+ trigger: TngGridInteractionTrigger;
51
+ }>>;
52
+ readonly valueChange: import("@angular/core").OutputEmitterRef<TngGridNullablePosition>;
53
+ readonly cellActivate: import("@angular/core").OutputEmitterRef<Readonly<{
54
+ col: number;
55
+ row: number;
56
+ trigger: Extract<TngGridInteractionTrigger, "keyboard" | "pointer">;
57
+ }>>;
58
+ set ariaLabel(value: string | null);
59
+ set ariaColcount(value: unknown);
60
+ set ariaRowcount(value: unknown);
3
61
  protected readonly dataSlot: "grid";
62
+ protected readonly role: "grid";
63
+ protected get ariaLabelAttr(): string | null;
64
+ protected get ariaColcountAttr(): string | null;
65
+ protected get ariaRowcountAttr(): string | null;
66
+ ngOnDestroy(): void;
67
+ registerCell(cell: TngGridCell): void;
68
+ unregisterCell(cell: TngGridCell): void;
69
+ isCellActivated(cell: TngGridCell): boolean;
70
+ isCellDisabled(cell: TngGridCell): boolean;
71
+ isCellFocusVisible(cell: TngGridCell): boolean;
72
+ isCellFocused(cell: TngGridCell): boolean;
73
+ isCellTabStop(cell: TngGridCell): boolean;
74
+ isCellSelected(cell: TngGridCell): boolean;
75
+ getCellTabIndex(cell: TngGridCell): string;
76
+ onCellClicked(cell: TngGridCell): void;
77
+ onCellFocused(cell: TngGridCell): void;
78
+ onCellPointerDown(cell: TngGridCell): void;
79
+ onCellSelectionRequest(cell: TngGridCell, trigger: Extract<TngGridInteractionTrigger, 'keyboard' | 'pointer'>): void;
80
+ protected onFocusOut(event: FocusEvent): void;
81
+ protected onKeyDown(event: KeyboardEvent): void;
82
+ private ensureFallbackFocus;
83
+ private ensureUncontrolledSelectionInitialized;
84
+ private getActiveCell;
85
+ private getComputedBounds;
86
+ private getFirstEnabledCell;
87
+ private getEnabledCells;
88
+ private getFocusValue;
89
+ private getNavigableCells;
90
+ private getSelectedValue;
91
+ private isFocusControlled;
92
+ private isSelectionControlled;
93
+ private moveFocus;
94
+ private requestFocus;
95
+ private requestSelection;
4
96
  static ɵfac: i0.ɵɵFactoryDeclaration<TngGrid, never>;
5
- static ɵdir: i0.ɵɵDirectiveDeclaration<TngGrid, "[tngGrid]", ["tngGrid"], {}, {}, never, never, true, never>;
97
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TngGrid, "[tngGrid]", ["tngGrid"], { "dir": { "alias": "dir"; "required": false; "isSignal": true; }; "focusCol": { "alias": "focusCol"; "required": false; "isSignal": true; }; "focusRow": { "alias": "focusRow"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "wrap": { "alias": "wrap"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "ariaColcount": { "alias": "ariaColcount"; "required": false; }; "ariaRowcount": { "alias": "ariaRowcount"; "required": false; }; }, { "focusRowChange": "focusRowChange"; "focusColChange": "focusColChange"; "focusChange": "focusChange"; "valueChange": "valueChange"; "cellActivate": "cellActivate"; }, never, never, true, never>;
6
98
  }
99
+ export declare class TngGridRow {
100
+ protected readonly dataSlot: "grid-row";
101
+ protected readonly role: "row";
102
+ static ɵfac: i0.ɵɵFactoryDeclaration<TngGridRow, never>;
103
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TngGridRow, "[tngGridRow]", ["tngGridRow"], {}, {}, never, never, true, never>;
104
+ }
105
+ export declare class TngGridCell implements OnInit, OnDestroy {
106
+ private readonly hostRef;
107
+ private readonly grid;
108
+ readonly rowIndex: import("@angular/core").InputSignalWithTransform<number, unknown>;
109
+ readonly colIndex: import("@angular/core").InputSignalWithTransform<number, unknown>;
110
+ readonly rowSpan: import("@angular/core").InputSignalWithTransform<number, unknown>;
111
+ readonly colSpan: import("@angular/core").InputSignalWithTransform<number, unknown>;
112
+ readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
113
+ readonly selected: import("@angular/core").InputSignalWithTransform<boolean | null, unknown>;
114
+ readonly cellRole: import("@angular/core").InputSignalWithTransform<TngGridCellRole, unknown>;
115
+ protected readonly dataSlot: "gridcell";
116
+ protected get roleAttr(): TngGridCellRole;
117
+ protected get tabIndexAttr(): string;
118
+ protected get ariaRowIndexAttr(): string;
119
+ protected get ariaColIndexAttr(): string;
120
+ protected get ariaRowSpanAttr(): string | null;
121
+ protected get ariaColSpanAttr(): string | null;
122
+ protected get ariaDisabledAttr(): string | null;
123
+ protected get ariaSelectedAttr(): string | null;
124
+ protected get dataRowIndexAttr(): string;
125
+ protected get dataColIndexAttr(): string;
126
+ protected get dataRowSpanAttr(): string | null;
127
+ protected get dataColSpanAttr(): string | null;
128
+ protected get dataDisabledAttr(): '' | null;
129
+ protected get dataSelectedAttr(): '' | null;
130
+ protected get dataFocusedAttr(): '' | null;
131
+ protected get dataFocusVisibleAttr(): '' | null;
132
+ protected get dataActivatedAttr(): '' | null;
133
+ ngOnInit(): void;
134
+ ngOnDestroy(): void;
135
+ cellKey(): string;
136
+ focusHost(): void;
137
+ getHostElement(): HTMLElement;
138
+ getValue(): TngGridCellValue;
139
+ isFocusVisible(): boolean;
140
+ matchesValue(value: TngGridCellValue): boolean;
141
+ protected onClick(): void;
142
+ protected onDoubleClick(): void;
143
+ protected onFocus(): void;
144
+ protected onPointerDown(): void;
145
+ static ɵfac: i0.ɵɵFactoryDeclaration<TngGridCell, never>;
146
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TngGridCell, "[tngGridCell]", ["tngGridCell"], { "rowIndex": { "alias": "rowIndex"; "required": true; "isSignal": true; }; "colIndex": { "alias": "colIndex"; "required": true; "isSignal": true; }; "rowSpan": { "alias": "rowSpan"; "required": false; "isSignal": true; }; "colSpan": { "alias": "colSpan"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "cellRole": { "alias": "cellRole"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
147
+ }
148
+ export {};
7
149
  //# sourceMappingURL=tng-grid.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tng-grid.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/grid/tng-grid.ts"],"names":[],"mappings":";AAEA,qBAKa,OAAO;IAElB,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,MAAM,CAAU;yCAFnC,OAAO;2CAAP,OAAO;CAGnB"}
1
+ {"version":3,"file":"tng-grid.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/grid/tng-grid.ts"],"names":[],"mappings":"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"}