@ni/fast-foundation 0.0.2

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 (416) hide show
  1. package/README.md +58 -0
  2. package/dist/dts/accordion/accordion.d.ts +65 -0
  3. package/dist/dts/accordion/accordion.template.d.ts +8 -0
  4. package/dist/dts/accordion/index.d.ts +2 -0
  5. package/dist/dts/accordion-item/accordion-item.d.ts +76 -0
  6. package/dist/dts/accordion-item/accordion-item.template.d.ts +8 -0
  7. package/dist/dts/accordion-item/index.d.ts +2 -0
  8. package/dist/dts/anchor/anchor.d.ts +128 -0
  9. package/dist/dts/anchor/anchor.template.d.ts +8 -0
  10. package/dist/dts/anchor/index.d.ts +2 -0
  11. package/dist/dts/anchored-region/anchored-region-config.d.ts +117 -0
  12. package/dist/dts/anchored-region/anchored-region.d.ts +389 -0
  13. package/dist/dts/anchored-region/anchored-region.template.d.ts +8 -0
  14. package/dist/dts/anchored-region/index.d.ts +3 -0
  15. package/dist/dts/avatar/avatar.d.ts +62 -0
  16. package/dist/dts/avatar/avatar.template.d.ts +8 -0
  17. package/dist/dts/avatar/index.d.ts +2 -0
  18. package/dist/dts/badge/badge.d.ts +36 -0
  19. package/dist/dts/badge/badge.template.d.ts +8 -0
  20. package/dist/dts/badge/index.d.ts +2 -0
  21. package/dist/dts/breadcrumb/breadcrumb.d.ts +27 -0
  22. package/dist/dts/breadcrumb/breadcrumb.template.d.ts +8 -0
  23. package/dist/dts/breadcrumb/index.d.ts +2 -0
  24. package/dist/dts/breadcrumb-item/breadcrumb-item.d.ts +36 -0
  25. package/dist/dts/breadcrumb-item/breadcrumb-item.template.d.ts +8 -0
  26. package/dist/dts/breadcrumb-item/index.d.ts +2 -0
  27. package/dist/dts/button/button.d.ts +167 -0
  28. package/dist/dts/button/button.form-associated.d.ts +16 -0
  29. package/dist/dts/button/button.template.d.ts +8 -0
  30. package/dist/dts/button/index.d.ts +2 -0
  31. package/dist/dts/calendar/calendar.d.ts +178 -0
  32. package/dist/dts/calendar/calendar.template.d.ts +58 -0
  33. package/dist/dts/calendar/date-formatter.d.ts +124 -0
  34. package/dist/dts/calendar/index.d.ts +3 -0
  35. package/dist/dts/card/card.d.ts +10 -0
  36. package/dist/dts/card/card.template.d.ts +8 -0
  37. package/dist/dts/card/index.d.ts +2 -0
  38. package/dist/dts/checkbox/checkbox.d.ts +58 -0
  39. package/dist/dts/checkbox/checkbox.form-associated.d.ts +16 -0
  40. package/dist/dts/checkbox/checkbox.template.d.ts +8 -0
  41. package/dist/dts/checkbox/index.d.ts +2 -0
  42. package/dist/dts/combobox/combobox.d.ts +341 -0
  43. package/dist/dts/combobox/combobox.form-associated.d.ts +16 -0
  44. package/dist/dts/combobox/combobox.options.d.ts +15 -0
  45. package/dist/dts/combobox/combobox.template.d.ts +8 -0
  46. package/dist/dts/combobox/index.d.ts +3 -0
  47. package/dist/dts/data-grid/data-grid-cell.d.ts +62 -0
  48. package/dist/dts/data-grid/data-grid-cell.template.d.ts +9 -0
  49. package/dist/dts/data-grid/data-grid-row.d.ts +119 -0
  50. package/dist/dts/data-grid/data-grid-row.template.d.ts +10 -0
  51. package/dist/dts/data-grid/data-grid.d.ts +218 -0
  52. package/dist/dts/data-grid/data-grid.options.d.ts +49 -0
  53. package/dist/dts/data-grid/data-grid.template.d.ts +10 -0
  54. package/dist/dts/data-grid/index.d.ts +6 -0
  55. package/dist/dts/design-system/component-presentation.d.ts +66 -0
  56. package/dist/dts/design-system/design-system.d.ts +104 -0
  57. package/dist/dts/design-system/index.d.ts +3 -0
  58. package/dist/dts/design-system/registration-context.d.ts +106 -0
  59. package/dist/dts/design-token/custom-property-manager.d.ts +35 -0
  60. package/dist/dts/design-token/design-token.d.ts +139 -0
  61. package/dist/dts/design-token/interfaces.d.ts +31 -0
  62. package/dist/dts/di/di.d.ts +858 -0
  63. package/dist/dts/di/index.d.ts +1 -0
  64. package/dist/dts/dialog/dialog.d.ts +153 -0
  65. package/dist/dts/dialog/dialog.template.d.ts +8 -0
  66. package/dist/dts/dialog/index.d.ts +2 -0
  67. package/dist/dts/directives/reflect-attributes.d.ts +18 -0
  68. package/dist/dts/disclosure/disclosure.d.ts +59 -0
  69. package/dist/dts/disclosure/disclosure.template.d.ts +8 -0
  70. package/dist/dts/disclosure/index.d.ts +2 -0
  71. package/dist/dts/divider/divider.d.ts +28 -0
  72. package/dist/dts/divider/divider.options.d.ts +19 -0
  73. package/dist/dts/divider/divider.template.d.ts +8 -0
  74. package/dist/dts/divider/index.d.ts +2 -0
  75. package/dist/dts/flipper/flipper.d.ts +57 -0
  76. package/dist/dts/flipper/flipper.options.d.ts +13 -0
  77. package/dist/dts/flipper/flipper.template.d.ts +8 -0
  78. package/dist/dts/flipper/index.d.ts +2 -0
  79. package/dist/dts/form-associated/form-associated.d.ts +177 -0
  80. package/dist/dts/form-associated/index.d.ts +1 -0
  81. package/dist/dts/foundation-element/foundation-element.d.ts +120 -0
  82. package/dist/dts/foundation-element/index.d.ts +1 -0
  83. package/dist/dts/horizontal-scroll/horizontal-scroll.d.ts +242 -0
  84. package/dist/dts/horizontal-scroll/horizontal-scroll.template.d.ts +7 -0
  85. package/dist/dts/horizontal-scroll/index.d.ts +2 -0
  86. package/dist/dts/index-rollup.d.ts +2 -0
  87. package/dist/dts/index.d.ts +53 -0
  88. package/dist/dts/interfaces.d.ts +4 -0
  89. package/dist/dts/listbox/index.d.ts +3 -0
  90. package/dist/dts/listbox/listbox.d.ts +314 -0
  91. package/dist/dts/listbox/listbox.element.d.ts +223 -0
  92. package/dist/dts/listbox/listbox.template.d.ts +8 -0
  93. package/dist/dts/listbox-option/index.d.ts +2 -0
  94. package/dist/dts/listbox-option/listbox-option.d.ts +176 -0
  95. package/dist/dts/listbox-option/listbox-option.template.d.ts +8 -0
  96. package/dist/dts/menu/index.d.ts +2 -0
  97. package/dist/dts/menu/menu.d.ts +78 -0
  98. package/dist/dts/menu/menu.template.d.ts +8 -0
  99. package/dist/dts/menu-item/index.d.ts +2 -0
  100. package/dist/dts/menu-item/menu-item.d.ts +160 -0
  101. package/dist/dts/menu-item/menu-item.options.d.ts +29 -0
  102. package/dist/dts/menu-item/menu-item.template.d.ts +10 -0
  103. package/dist/dts/number-field/index.d.ts +2 -0
  104. package/dist/dts/number-field/number-field.d.ts +227 -0
  105. package/dist/dts/number-field/number-field.form-associated.d.ts +16 -0
  106. package/dist/dts/number-field/number-field.template.d.ts +8 -0
  107. package/dist/dts/patterns/aria-global.d.ts +189 -0
  108. package/dist/dts/patterns/index.d.ts +2 -0
  109. package/dist/dts/patterns/start-end.d.ts +65 -0
  110. package/dist/dts/picker/index.d.ts +10 -0
  111. package/dist/dts/picker/picker-list-item.d.ts +38 -0
  112. package/dist/dts/picker/picker-list-item.template.d.ts +8 -0
  113. package/dist/dts/picker/picker-list.d.ts +8 -0
  114. package/dist/dts/picker/picker-list.template.d.ts +8 -0
  115. package/dist/dts/picker/picker-menu-option.d.ts +37 -0
  116. package/dist/dts/picker/picker-menu-option.template.d.ts +8 -0
  117. package/dist/dts/picker/picker-menu.d.ts +46 -0
  118. package/dist/dts/picker/picker-menu.template.d.ts +8 -0
  119. package/dist/dts/picker/picker.d.ts +390 -0
  120. package/dist/dts/picker/picker.form-associated.d.ts +16 -0
  121. package/dist/dts/picker/picker.template.d.ts +8 -0
  122. package/dist/dts/progress/base-progress.d.ts +71 -0
  123. package/dist/dts/progress/index.d.ts +2 -0
  124. package/dist/dts/progress/progress.template.d.ts +8 -0
  125. package/dist/dts/progress-ring/index.d.ts +1 -0
  126. package/dist/dts/progress-ring/progress-ring.template.d.ts +8 -0
  127. package/dist/dts/radio/index.d.ts +2 -0
  128. package/dist/dts/radio/radio.d.ts +70 -0
  129. package/dist/dts/radio/radio.form-associated.d.ts +16 -0
  130. package/dist/dts/radio/radio.template.d.ts +8 -0
  131. package/dist/dts/radio-group/index.d.ts +2 -0
  132. package/dist/dts/radio-group/radio-group.d.ts +101 -0
  133. package/dist/dts/radio-group/radio-group.template.d.ts +8 -0
  134. package/dist/dts/search/index.d.ts +2 -0
  135. package/dist/dts/search/search.d.ts +162 -0
  136. package/dist/dts/search/search.form-associated.d.ts +16 -0
  137. package/dist/dts/search/search.template.d.ts +8 -0
  138. package/dist/dts/select/index.d.ts +3 -0
  139. package/dist/dts/select/select.d.ts +289 -0
  140. package/dist/dts/select/select.form-associated.d.ts +16 -0
  141. package/dist/dts/select/select.options.d.ts +13 -0
  142. package/dist/dts/select/select.template.d.ts +8 -0
  143. package/dist/dts/skeleton/index.d.ts +2 -0
  144. package/dist/dts/skeleton/skeleton.d.ts +47 -0
  145. package/dist/dts/skeleton/skeleton.template.d.ts +8 -0
  146. package/dist/dts/slider/index.d.ts +2 -0
  147. package/dist/dts/slider/slider-utilities.d.ts +5 -0
  148. package/dist/dts/slider/slider.d.ts +230 -0
  149. package/dist/dts/slider/slider.form-associated.d.ts +16 -0
  150. package/dist/dts/slider/slider.template.d.ts +8 -0
  151. package/dist/dts/slider-label/index.d.ts +2 -0
  152. package/dist/dts/slider-label/slider-label.d.ts +81 -0
  153. package/dist/dts/slider-label/slider-label.template.d.ts +8 -0
  154. package/dist/dts/switch/index.d.ts +2 -0
  155. package/dist/dts/switch/switch.d.ts +60 -0
  156. package/dist/dts/switch/switch.form-associated.d.ts +16 -0
  157. package/dist/dts/switch/switch.template.d.ts +8 -0
  158. package/dist/dts/tab/index.d.ts +2 -0
  159. package/dist/dts/tab/tab.d.ts +17 -0
  160. package/dist/dts/tab/tab.template.d.ts +8 -0
  161. package/dist/dts/tab-panel/index.d.ts +2 -0
  162. package/dist/dts/tab-panel/tab-panel.d.ts +10 -0
  163. package/dist/dts/tab-panel/tab-panel.template.d.ts +8 -0
  164. package/dist/dts/tabs/index.d.ts +2 -0
  165. package/dist/dts/tabs/tabs.d.ts +140 -0
  166. package/dist/dts/tabs/tabs.template.d.ts +8 -0
  167. package/dist/dts/test-utilities/fixture.d.ts +89 -0
  168. package/dist/dts/test-utilities/timeout.d.ts +4 -0
  169. package/dist/dts/text-area/index.d.ts +2 -0
  170. package/dist/dts/text-area/text-area.d.ts +149 -0
  171. package/dist/dts/text-area/text-area.form-associated.d.ts +16 -0
  172. package/dist/dts/text-area/text-area.options.d.ts +27 -0
  173. package/dist/dts/text-area/text-area.template.d.ts +8 -0
  174. package/dist/dts/text-field/index.d.ts +2 -0
  175. package/dist/dts/text-field/text-field.d.ts +166 -0
  176. package/dist/dts/text-field/text-field.form-associated.d.ts +16 -0
  177. package/dist/dts/text-field/text-field.options.d.ts +31 -0
  178. package/dist/dts/text-field/text-field.template.d.ts +8 -0
  179. package/dist/dts/toolbar/index.d.ts +2 -0
  180. package/dist/dts/toolbar/toolbar.d.ts +167 -0
  181. package/dist/dts/toolbar/toolbar.template.d.ts +9 -0
  182. package/dist/dts/tooltip/index.d.ts +2 -0
  183. package/dist/dts/tooltip/tooltip.d.ts +239 -0
  184. package/dist/dts/tooltip/tooltip.options.d.ts +69 -0
  185. package/dist/dts/tooltip/tooltip.template.d.ts +8 -0
  186. package/dist/dts/tree-item/index.d.ts +2 -0
  187. package/dist/dts/tree-item/tree-item.d.ts +141 -0
  188. package/dist/dts/tree-item/tree-item.template.d.ts +8 -0
  189. package/dist/dts/tree-view/index.d.ts +2 -0
  190. package/dist/dts/tree-view/tree-view.d.ts +99 -0
  191. package/dist/dts/tree-view/tree-view.template.d.ts +8 -0
  192. package/dist/dts/utilities/apply-mixins.d.ts +6 -0
  193. package/dist/dts/utilities/composed-contains.d.ts +12 -0
  194. package/dist/dts/utilities/composed-parent.d.ts +10 -0
  195. package/dist/dts/utilities/direction.d.ts +7 -0
  196. package/dist/dts/utilities/index.d.ts +8 -0
  197. package/dist/dts/utilities/intersection-service.d.ts +30 -0
  198. package/dist/dts/utilities/match-media-stylesheet-behavior.d.ts +124 -0
  199. package/dist/dts/utilities/property-stylesheet-behavior.d.ts +38 -0
  200. package/dist/dts/utilities/resize-observer.d.ts +31 -0
  201. package/dist/dts/utilities/root-active-element.d.ts +1 -0
  202. package/dist/dts/utilities/style/disabled.d.ts +5 -0
  203. package/dist/dts/utilities/style/display.d.ts +17 -0
  204. package/dist/dts/utilities/style/focus.d.ts +8 -0
  205. package/dist/dts/utilities/style/index.d.ts +3 -0
  206. package/dist/dts/utilities/whitespace-filter.d.ts +9 -0
  207. package/dist/esm/accordion/accordion.js +185 -0
  208. package/dist/esm/accordion/accordion.template.js +11 -0
  209. package/dist/esm/accordion/index.js +2 -0
  210. package/dist/esm/accordion-item/accordion-item.js +72 -0
  211. package/dist/esm/accordion-item/accordion-item.template.js +49 -0
  212. package/dist/esm/accordion-item/index.js +2 -0
  213. package/dist/esm/anchor/anchor.js +85 -0
  214. package/dist/esm/anchor/anchor.template.js +47 -0
  215. package/dist/esm/anchor/index.js +2 -0
  216. package/dist/esm/anchored-region/anchored-region-config.js +59 -0
  217. package/dist/esm/anchored-region/anchored-region.js +964 -0
  218. package/dist/esm/anchored-region/anchored-region.template.js +12 -0
  219. package/dist/esm/anchored-region/index.js +3 -0
  220. package/dist/esm/avatar/avatar.js +39 -0
  221. package/dist/esm/avatar/avatar.template.js +23 -0
  222. package/dist/esm/avatar/index.js +2 -0
  223. package/dist/esm/badge/badge.js +40 -0
  224. package/dist/esm/badge/badge.template.js +12 -0
  225. package/dist/esm/badge/index.js +2 -0
  226. package/dist/esm/breadcrumb/breadcrumb.js +70 -0
  227. package/dist/esm/breadcrumb/breadcrumb.template.js +14 -0
  228. package/dist/esm/breadcrumb/index.js +2 -0
  229. package/dist/esm/breadcrumb-item/breadcrumb-item.js +23 -0
  230. package/dist/esm/breadcrumb-item/breadcrumb-item.template.js +24 -0
  231. package/dist/esm/breadcrumb-item/index.js +2 -0
  232. package/dist/esm/button/button.form-associated.js +15 -0
  233. package/dist/esm/button/button.js +183 -0
  234. package/dist/esm/button/button.template.js +51 -0
  235. package/dist/esm/button/index.js +2 -0
  236. package/dist/esm/calendar/calendar.js +280 -0
  237. package/dist/esm/calendar/calendar.template.js +191 -0
  238. package/dist/esm/calendar/date-formatter.js +144 -0
  239. package/dist/esm/calendar/index.js +3 -0
  240. package/dist/esm/card/card.js +10 -0
  241. package/dist/esm/card/card.template.js +8 -0
  242. package/dist/esm/card/index.js +2 -0
  243. package/dist/esm/checkbox/checkbox.form-associated.js +15 -0
  244. package/dist/esm/checkbox/checkbox.js +75 -0
  245. package/dist/esm/checkbox/checkbox.template.js +35 -0
  246. package/dist/esm/checkbox/index.js +2 -0
  247. package/dist/esm/combobox/combobox.form-associated.js +15 -0
  248. package/dist/esm/combobox/combobox.js +587 -0
  249. package/dist/esm/combobox/combobox.options.js +10 -0
  250. package/dist/esm/combobox/combobox.template.js +66 -0
  251. package/dist/esm/combobox/index.js +3 -0
  252. package/dist/esm/data-grid/data-grid-cell.js +229 -0
  253. package/dist/esm/data-grid/data-grid-cell.template.js +23 -0
  254. package/dist/esm/data-grid/data-grid-row.js +203 -0
  255. package/dist/esm/data-grid/data-grid-row.template.js +47 -0
  256. package/dist/esm/data-grid/data-grid.js +440 -0
  257. package/dist/esm/data-grid/data-grid.options.js +31 -0
  258. package/dist/esm/data-grid/data-grid.template.js +36 -0
  259. package/dist/esm/data-grid/index.js +6 -0
  260. package/dist/esm/design-system/component-presentation.js +86 -0
  261. package/dist/esm/design-system/design-system.js +207 -0
  262. package/dist/esm/design-system/index.js +3 -0
  263. package/dist/esm/design-system/registration-context.js +1 -0
  264. package/dist/esm/design-token/custom-property-manager.js +216 -0
  265. package/dist/esm/design-token/design-token.js +657 -0
  266. package/dist/esm/design-token/interfaces.js +1 -0
  267. package/dist/esm/di/di.js +1341 -0
  268. package/dist/esm/di/index.js +1 -0
  269. package/dist/esm/dialog/dialog.js +280 -0
  270. package/dist/esm/dialog/dialog.template.js +30 -0
  271. package/dist/esm/dialog/index.js +2 -0
  272. package/dist/esm/directives/reflect-attributes.js +88 -0
  273. package/dist/esm/disclosure/disclosure.js +72 -0
  274. package/dist/esm/disclosure/disclosure.template.js +20 -0
  275. package/dist/esm/disclosure/index.js +2 -0
  276. package/dist/esm/divider/divider.js +39 -0
  277. package/dist/esm/divider/divider.options.js +14 -0
  278. package/dist/esm/divider/divider.template.js +8 -0
  279. package/dist/esm/divider/index.js +2 -0
  280. package/dist/esm/flipper/flipper.js +65 -0
  281. package/dist/esm/flipper/flipper.options.js +8 -0
  282. package/dist/esm/flipper/flipper.template.js +30 -0
  283. package/dist/esm/flipper/index.js +2 -0
  284. package/dist/esm/form-associated/form-associated.js +464 -0
  285. package/dist/esm/form-associated/index.js +1 -0
  286. package/dist/esm/foundation-element/foundation-element.js +132 -0
  287. package/dist/esm/foundation-element/index.js +1 -0
  288. package/dist/esm/horizontal-scroll/horizontal-scroll.js +380 -0
  289. package/dist/esm/horizontal-scroll/horizontal-scroll.template.js +62 -0
  290. package/dist/esm/horizontal-scroll/index.js +2 -0
  291. package/dist/esm/index-rollup.js +2 -0
  292. package/dist/esm/index.js +54 -0
  293. package/dist/esm/interfaces.js +1 -0
  294. package/dist/esm/listbox/index.js +3 -0
  295. package/dist/esm/listbox/listbox.element.js +448 -0
  296. package/dist/esm/listbox/listbox.js +528 -0
  297. package/dist/esm/listbox/listbox.template.js +27 -0
  298. package/dist/esm/listbox-option/index.js +2 -0
  299. package/dist/esm/listbox-option/listbox-option.js +200 -0
  300. package/dist/esm/listbox-option/listbox-option.template.js +25 -0
  301. package/dist/esm/menu/index.js +2 -0
  302. package/dist/esm/menu/menu.js +290 -0
  303. package/dist/esm/menu/menu.template.js +15 -0
  304. package/dist/esm/menu-item/index.js +2 -0
  305. package/dist/esm/menu-item/menu-item.js +251 -0
  306. package/dist/esm/menu-item/menu-item.options.js +26 -0
  307. package/dist/esm/menu-item/menu-item.template.js +78 -0
  308. package/dist/esm/number-field/index.js +2 -0
  309. package/dist/esm/number-field/number-field.form-associated.js +15 -0
  310. package/dist/esm/number-field/number-field.js +288 -0
  311. package/dist/esm/number-field/number-field.template.js +84 -0
  312. package/dist/esm/patterns/aria-global.js +70 -0
  313. package/dist/esm/patterns/index.js +2 -0
  314. package/dist/esm/patterns/start-end.js +84 -0
  315. package/dist/esm/picker/index.js +10 -0
  316. package/dist/esm/picker/picker-list-item.js +71 -0
  317. package/dist/esm/picker/picker-list-item.template.js +17 -0
  318. package/dist/esm/picker/picker-list.js +8 -0
  319. package/dist/esm/picker/picker-list.template.js +13 -0
  320. package/dist/esm/picker/picker-menu-option.js +61 -0
  321. package/dist/esm/picker/picker-menu-option.template.js +16 -0
  322. package/dist/esm/picker/picker-menu.js +59 -0
  323. package/dist/esm/picker/picker-menu.template.js +29 -0
  324. package/dist/esm/picker/picker.form-associated.js +15 -0
  325. package/dist/esm/picker/picker.js +759 -0
  326. package/dist/esm/picker/picker.template.js +97 -0
  327. package/dist/esm/progress/base-progress.js +69 -0
  328. package/dist/esm/progress/index.js +2 -0
  329. package/dist/esm/progress/progress.template.js +31 -0
  330. package/dist/esm/progress-ring/index.js +1 -0
  331. package/dist/esm/progress-ring/progress-ring.template.js +45 -0
  332. package/dist/esm/radio/index.js +2 -0
  333. package/dist/esm/radio/radio.form-associated.js +15 -0
  334. package/dist/esm/radio/radio.js +108 -0
  335. package/dist/esm/radio/radio.template.js +31 -0
  336. package/dist/esm/radio-group/index.js +2 -0
  337. package/dist/esm/radio-group/radio-group.js +390 -0
  338. package/dist/esm/radio-group/radio-group.template.js +29 -0
  339. package/dist/esm/search/index.js +2 -0
  340. package/dist/esm/search/search.form-associated.js +15 -0
  341. package/dist/esm/search/search.js +157 -0
  342. package/dist/esm/search/search.template.js +93 -0
  343. package/dist/esm/select/index.js +3 -0
  344. package/dist/esm/select/select.form-associated.js +15 -0
  345. package/dist/esm/select/select.js +490 -0
  346. package/dist/esm/select/select.options.js +8 -0
  347. package/dist/esm/select/select.template.js +72 -0
  348. package/dist/esm/skeleton/index.js +2 -0
  349. package/dist/esm/skeleton/skeleton.js +35 -0
  350. package/dist/esm/skeleton/skeleton.template.js +20 -0
  351. package/dist/esm/slider/index.js +2 -0
  352. package/dist/esm/slider/slider-utilities.js +11 -0
  353. package/dist/esm/slider/slider.form-associated.js +15 -0
  354. package/dist/esm/slider/slider.js +452 -0
  355. package/dist/esm/slider/slider.template.js +40 -0
  356. package/dist/esm/slider-label/index.js +2 -0
  357. package/dist/esm/slider-label/slider-label.js +158 -0
  358. package/dist/esm/slider-label/slider-label.template.js +24 -0
  359. package/dist/esm/switch/index.js +2 -0
  360. package/dist/esm/switch/switch.form-associated.js +15 -0
  361. package/dist/esm/switch/switch.js +79 -0
  362. package/dist/esm/switch/switch.template.js +37 -0
  363. package/dist/esm/tab/index.js +2 -0
  364. package/dist/esm/tab/tab.js +15 -0
  365. package/dist/esm/tab/tab.template.js +10 -0
  366. package/dist/esm/tab-panel/index.js +2 -0
  367. package/dist/esm/tab-panel/tab-panel.js +10 -0
  368. package/dist/esm/tab-panel/tab-panel.template.js +10 -0
  369. package/dist/esm/tabs/index.js +2 -0
  370. package/dist/esm/tabs/tabs.js +375 -0
  371. package/dist/esm/tabs/tabs.template.js +26 -0
  372. package/dist/esm/test-utilities/fixture.js +90 -0
  373. package/dist/esm/test-utilities/timeout.js +13 -0
  374. package/dist/esm/text-area/index.js +2 -0
  375. package/dist/esm/text-area/text-area.form-associated.js +15 -0
  376. package/dist/esm/text-area/text-area.js +146 -0
  377. package/dist/esm/text-area/text-area.options.js +22 -0
  378. package/dist/esm/text-area/text-area.template.js +64 -0
  379. package/dist/esm/text-field/index.js +2 -0
  380. package/dist/esm/text-field/text-field.form-associated.js +15 -0
  381. package/dist/esm/text-field/text-field.js +183 -0
  382. package/dist/esm/text-field/text-field.options.js +26 -0
  383. package/dist/esm/text-field/text-field.template.js +70 -0
  384. package/dist/esm/toolbar/index.js +2 -0
  385. package/dist/esm/toolbar/toolbar.js +271 -0
  386. package/dist/esm/toolbar/toolbar.template.js +37 -0
  387. package/dist/esm/tooltip/index.js +2 -0
  388. package/dist/esm/tooltip/tooltip.js +512 -0
  389. package/dist/esm/tooltip/tooltip.options.js +63 -0
  390. package/dist/esm/tooltip/tooltip.template.js +32 -0
  391. package/dist/esm/tree-item/index.js +2 -0
  392. package/dist/esm/tree-item/tree-item.js +150 -0
  393. package/dist/esm/tree-item/tree-item.template.js +52 -0
  394. package/dist/esm/tree-view/index.js +2 -0
  395. package/dist/esm/tree-view/tree-view.js +268 -0
  396. package/dist/esm/tree-view/tree-view.template.js +18 -0
  397. package/dist/esm/utilities/apply-mixins.js +20 -0
  398. package/dist/esm/utilities/composed-contains.js +22 -0
  399. package/dist/esm/utilities/composed-parent.js +23 -0
  400. package/dist/esm/utilities/direction.js +10 -0
  401. package/dist/esm/utilities/index.js +8 -0
  402. package/dist/esm/utilities/intersection-service.js +91 -0
  403. package/dist/esm/utilities/match-media-stylesheet-behavior.js +140 -0
  404. package/dist/esm/utilities/property-stylesheet-behavior.js +52 -0
  405. package/dist/esm/utilities/resize-observer.js +5 -0
  406. package/dist/esm/utilities/root-active-element.js +8 -0
  407. package/dist/esm/utilities/style/disabled.js +5 -0
  408. package/dist/esm/utilities/style/display.js +14 -0
  409. package/dist/esm/utilities/style/focus.js +9 -0
  410. package/dist/esm/utilities/style/index.js +3 -0
  411. package/dist/esm/utilities/whitespace-filter.js +13 -0
  412. package/dist/fast-foundation.d.ts +9744 -0
  413. package/dist/fast-foundation.js +19097 -0
  414. package/dist/fast-foundation.min.js +19 -0
  415. package/dist/tsdoc-metadata.json +11 -0
  416. package/package.json +101 -0
@@ -0,0 +1,440 @@
1
+ import { __decorate } from "tslib";
2
+ import { attr, DOM, observable, RepeatDirective, } from "@ni/fast-element";
3
+ import { eventFocus, eventFocusOut, eventKeyDown, keyArrowDown, keyArrowUp, keyEnd, keyHome, keyPageDown, keyPageUp, } from "@ni/fast-web-utilities";
4
+ import { FoundationElement } from "../foundation-element/foundation-element.js";
5
+ import { DataGridRowTypes, GenerateHeaderOptions } from "./data-grid.options.js";
6
+ export { DataGridRowTypes, GenerateHeaderOptions };
7
+ /**
8
+ * A Data Grid Custom HTML Element.
9
+ *
10
+ * @slot - The default slot for custom row elements
11
+ * @public
12
+ */
13
+ export class DataGrid extends FoundationElement {
14
+ /**
15
+ * generates a gridTemplateColumns based on columndata array
16
+ */
17
+ static generateTemplateColumns(columnDefinitions) {
18
+ let templateColumns = "";
19
+ columnDefinitions.forEach((column) => {
20
+ templateColumns = `${templateColumns}${templateColumns === "" ? "" : " "}${"1fr"}`;
21
+ });
22
+ return templateColumns;
23
+ }
24
+ noTabbingChanged() {
25
+ if (this.$fastController.isConnected) {
26
+ if (this.noTabbing) {
27
+ this.setAttribute("tabIndex", "-1");
28
+ }
29
+ else {
30
+ this.setAttribute("tabIndex", this.contains(document.activeElement) ||
31
+ this === document.activeElement
32
+ ? "-1"
33
+ : "0");
34
+ }
35
+ }
36
+ }
37
+ generateHeaderChanged() {
38
+ if (this.$fastController.isConnected) {
39
+ this.toggleGeneratedHeader();
40
+ }
41
+ }
42
+ gridTemplateColumnsChanged() {
43
+ if (this.$fastController.isConnected) {
44
+ this.updateRowIndexes();
45
+ }
46
+ }
47
+ rowsDataChanged() {
48
+ if (this.columnDefinitions === null && this.rowsData.length > 0) {
49
+ this.columnDefinitions = DataGrid.generateColumns(this.rowsData[0]);
50
+ }
51
+ if (this.$fastController.isConnected) {
52
+ this.toggleGeneratedHeader();
53
+ }
54
+ }
55
+ columnDefinitionsChanged() {
56
+ if (this.columnDefinitions === null) {
57
+ this.generatedGridTemplateColumns = "";
58
+ return;
59
+ }
60
+ this.generatedGridTemplateColumns = DataGrid.generateTemplateColumns(this.columnDefinitions);
61
+ if (this.$fastController.isConnected) {
62
+ this.columnDefinitionsStale = true;
63
+ this.queueRowIndexUpdate();
64
+ }
65
+ }
66
+ headerCellItemTemplateChanged() {
67
+ if (this.$fastController.isConnected) {
68
+ if (this.generatedHeader !== null) {
69
+ this.generatedHeader.headerCellItemTemplate = this.headerCellItemTemplate;
70
+ }
71
+ }
72
+ }
73
+ focusRowIndexChanged() {
74
+ if (this.$fastController.isConnected) {
75
+ this.queueFocusUpdate();
76
+ }
77
+ }
78
+ focusColumnIndexChanged() {
79
+ if (this.$fastController.isConnected) {
80
+ this.queueFocusUpdate();
81
+ }
82
+ }
83
+ constructor() {
84
+ super();
85
+ /**
86
+ * When true the component will not add itself to the tab queue.
87
+ * Default is false.
88
+ *
89
+ * @public
90
+ * @remarks
91
+ * HTML Attribute: no-tabbing
92
+ */
93
+ this.noTabbing = false;
94
+ /**
95
+ * Whether the grid should automatically generate a header row and its type
96
+ *
97
+ * @public
98
+ * @remarks
99
+ * HTML Attribute: generate-header
100
+ */
101
+ this.generateHeader = GenerateHeaderOptions.default;
102
+ /**
103
+ * The data being displayed in the grid
104
+ *
105
+ * @public
106
+ */
107
+ this.rowsData = [];
108
+ /**
109
+ * The column definitions of the grid
110
+ *
111
+ * @public
112
+ */
113
+ this.columnDefinitions = null;
114
+ /**
115
+ * The index of the row that will receive focus the next time the
116
+ * grid is focused. This value changes as focus moves to different
117
+ * rows within the grid. Changing this value when focus is already
118
+ * within the grid moves focus to the specified row.
119
+ *
120
+ * @public
121
+ */
122
+ this.focusRowIndex = 0;
123
+ /**
124
+ * The index of the column that will receive focus the next time the
125
+ * grid is focused. This value changes as focus moves to different rows
126
+ * within the grid. Changing this value when focus is already within
127
+ * the grid moves focus to the specified column.
128
+ *
129
+ * @public
130
+ */
131
+ this.focusColumnIndex = 0;
132
+ this.rowsPlaceholder = null;
133
+ this.generatedHeader = null;
134
+ this.isUpdatingFocus = false;
135
+ this.pendingFocusUpdate = false;
136
+ this.rowindexUpdateQueued = false;
137
+ this.columnDefinitionsStale = true;
138
+ this.generatedGridTemplateColumns = "";
139
+ this.focusOnCell = (rowIndex, columnIndex, scrollIntoView) => {
140
+ if (this.rowElements.length === 0) {
141
+ this.focusRowIndex = 0;
142
+ this.focusColumnIndex = 0;
143
+ return;
144
+ }
145
+ const focusRowIndex = Math.max(0, Math.min(this.rowElements.length - 1, rowIndex));
146
+ const focusRow = this.rowElements[focusRowIndex];
147
+ const cells = focusRow.querySelectorAll('[role="cell"], [role="gridcell"], [role="columnheader"], [role="rowheader"]');
148
+ const focusColumnIndex = Math.max(0, Math.min(cells.length - 1, columnIndex));
149
+ const focusTarget = cells[focusColumnIndex];
150
+ if (scrollIntoView &&
151
+ this.scrollHeight !== this.clientHeight &&
152
+ ((focusRowIndex < this.focusRowIndex && this.scrollTop > 0) ||
153
+ (focusRowIndex > this.focusRowIndex &&
154
+ this.scrollTop < this.scrollHeight - this.clientHeight))) {
155
+ focusTarget.scrollIntoView({ block: "center", inline: "center" });
156
+ }
157
+ focusTarget.focus();
158
+ };
159
+ this.onChildListChange = (mutations,
160
+ /* eslint-disable-next-line @typescript-eslint/no-unused-vars */
161
+ observer) => {
162
+ if (mutations && mutations.length) {
163
+ mutations.forEach((mutation) => {
164
+ mutation.addedNodes.forEach((newNode) => {
165
+ if (newNode.nodeType === 1 &&
166
+ newNode.getAttribute("role") === "row") {
167
+ newNode.columnDefinitions = this.columnDefinitions;
168
+ }
169
+ });
170
+ });
171
+ this.queueRowIndexUpdate();
172
+ }
173
+ };
174
+ this.queueRowIndexUpdate = () => {
175
+ if (!this.rowindexUpdateQueued) {
176
+ this.rowindexUpdateQueued = true;
177
+ DOM.queueUpdate(this.updateRowIndexes);
178
+ }
179
+ };
180
+ this.updateRowIndexes = () => {
181
+ let newGridTemplateColumns = this.gridTemplateColumns;
182
+ if (newGridTemplateColumns === undefined) {
183
+ // try to generate columns based on manual rows
184
+ if (this.generatedGridTemplateColumns === "" && this.rowElements.length > 0) {
185
+ const firstRow = this.rowElements[0];
186
+ this.generatedGridTemplateColumns = new Array(firstRow.cellElements.length)
187
+ .fill("1fr")
188
+ .join(" ");
189
+ }
190
+ newGridTemplateColumns = this.generatedGridTemplateColumns;
191
+ }
192
+ this.rowElements.forEach((element, index) => {
193
+ const thisRow = element;
194
+ thisRow.rowIndex = index;
195
+ thisRow.gridTemplateColumns = newGridTemplateColumns;
196
+ if (this.columnDefinitionsStale) {
197
+ thisRow.columnDefinitions = this.columnDefinitions;
198
+ }
199
+ });
200
+ this.rowindexUpdateQueued = false;
201
+ this.columnDefinitionsStale = false;
202
+ };
203
+ }
204
+ /**
205
+ * @internal
206
+ */
207
+ connectedCallback() {
208
+ super.connectedCallback();
209
+ if (this.rowItemTemplate === undefined) {
210
+ this.rowItemTemplate = this.defaultRowItemTemplate;
211
+ }
212
+ this.rowsPlaceholder = document.createComment("");
213
+ this.appendChild(this.rowsPlaceholder);
214
+ this.toggleGeneratedHeader();
215
+ this.rowsRepeatBehavior = new RepeatDirective(x => x.rowsData, x => x.rowItemTemplate, { positioning: true }).createBehavior(this.rowsPlaceholder);
216
+ /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion */
217
+ this.$fastController.addBehaviors([this.rowsRepeatBehavior]);
218
+ this.addEventListener("row-focused", this.handleRowFocus);
219
+ this.addEventListener(eventFocus, this.handleFocus);
220
+ this.addEventListener(eventKeyDown, this.handleKeydown);
221
+ this.addEventListener(eventFocusOut, this.handleFocusOut);
222
+ this.observer = new MutationObserver(this.onChildListChange);
223
+ // only observe if nodes are added or removed
224
+ this.observer.observe(this, { childList: true });
225
+ if (this.noTabbing) {
226
+ this.setAttribute("tabindex", "-1");
227
+ }
228
+ DOM.queueUpdate(this.queueRowIndexUpdate);
229
+ }
230
+ /**
231
+ * @internal
232
+ */
233
+ disconnectedCallback() {
234
+ super.disconnectedCallback();
235
+ this.removeEventListener("row-focused", this.handleRowFocus);
236
+ this.removeEventListener(eventFocus, this.handleFocus);
237
+ this.removeEventListener(eventKeyDown, this.handleKeydown);
238
+ this.removeEventListener(eventFocusOut, this.handleFocusOut);
239
+ // disconnect observer
240
+ this.observer.disconnect();
241
+ this.rowsPlaceholder = null;
242
+ this.generatedHeader = null;
243
+ }
244
+ /**
245
+ * @internal
246
+ */
247
+ handleRowFocus(e) {
248
+ this.isUpdatingFocus = true;
249
+ const focusRow = e.target;
250
+ this.focusRowIndex = this.rowElements.indexOf(focusRow);
251
+ this.focusColumnIndex = focusRow.focusColumnIndex;
252
+ this.setAttribute("tabIndex", "-1");
253
+ this.isUpdatingFocus = false;
254
+ }
255
+ /**
256
+ * @internal
257
+ */
258
+ handleFocus(e) {
259
+ this.focusOnCell(this.focusRowIndex, this.focusColumnIndex, true);
260
+ }
261
+ /**
262
+ * @internal
263
+ */
264
+ handleFocusOut(e) {
265
+ if (e.relatedTarget === null || !this.contains(e.relatedTarget)) {
266
+ this.setAttribute("tabIndex", this.noTabbing ? "-1" : "0");
267
+ }
268
+ }
269
+ /**
270
+ * @internal
271
+ */
272
+ handleKeydown(e) {
273
+ if (e.defaultPrevented) {
274
+ return;
275
+ }
276
+ let newFocusRowIndex;
277
+ const maxIndex = this.rowElements.length - 1;
278
+ const currentGridBottom = this.offsetHeight + this.scrollTop;
279
+ const lastRow = this.rowElements[maxIndex];
280
+ switch (e.key) {
281
+ case keyArrowUp:
282
+ e.preventDefault();
283
+ // focus up one row
284
+ this.focusOnCell(this.focusRowIndex - 1, this.focusColumnIndex, true);
285
+ break;
286
+ case keyArrowDown:
287
+ e.preventDefault();
288
+ // focus down one row
289
+ this.focusOnCell(this.focusRowIndex + 1, this.focusColumnIndex, true);
290
+ break;
291
+ case keyPageUp:
292
+ e.preventDefault();
293
+ if (this.rowElements.length === 0) {
294
+ this.focusOnCell(0, 0, false);
295
+ break;
296
+ }
297
+ if (this.focusRowIndex === 0) {
298
+ this.focusOnCell(0, this.focusColumnIndex, false);
299
+ return;
300
+ }
301
+ newFocusRowIndex = this.focusRowIndex - 1;
302
+ for (newFocusRowIndex; newFocusRowIndex >= 0; newFocusRowIndex--) {
303
+ const thisRow = this.rowElements[newFocusRowIndex];
304
+ if (thisRow.offsetTop < this.scrollTop) {
305
+ this.scrollTop =
306
+ thisRow.offsetTop + thisRow.clientHeight - this.clientHeight;
307
+ break;
308
+ }
309
+ }
310
+ this.focusOnCell(newFocusRowIndex, this.focusColumnIndex, false);
311
+ break;
312
+ case keyPageDown:
313
+ e.preventDefault();
314
+ if (this.rowElements.length === 0) {
315
+ this.focusOnCell(0, 0, false);
316
+ break;
317
+ }
318
+ // focus down one "page"
319
+ if (this.focusRowIndex >= maxIndex ||
320
+ lastRow.offsetTop + lastRow.offsetHeight <= currentGridBottom) {
321
+ this.focusOnCell(maxIndex, this.focusColumnIndex, false);
322
+ return;
323
+ }
324
+ newFocusRowIndex = this.focusRowIndex + 1;
325
+ for (newFocusRowIndex; newFocusRowIndex <= maxIndex; newFocusRowIndex++) {
326
+ const thisRow = this.rowElements[newFocusRowIndex];
327
+ if (thisRow.offsetTop + thisRow.offsetHeight > currentGridBottom) {
328
+ let stickyHeaderOffset = 0;
329
+ if (this.generateHeader === GenerateHeaderOptions.sticky &&
330
+ this.generatedHeader !== null) {
331
+ stickyHeaderOffset = this.generatedHeader.clientHeight;
332
+ }
333
+ this.scrollTop = thisRow.offsetTop - stickyHeaderOffset;
334
+ break;
335
+ }
336
+ }
337
+ this.focusOnCell(newFocusRowIndex, this.focusColumnIndex, false);
338
+ break;
339
+ case keyHome:
340
+ if (e.ctrlKey) {
341
+ e.preventDefault();
342
+ // focus first cell of first row
343
+ this.focusOnCell(0, 0, true);
344
+ }
345
+ break;
346
+ case keyEnd:
347
+ if (e.ctrlKey && this.columnDefinitions !== null) {
348
+ e.preventDefault();
349
+ // focus last cell of last row
350
+ this.focusOnCell(this.rowElements.length - 1, this.columnDefinitions.length - 1, true);
351
+ }
352
+ break;
353
+ }
354
+ }
355
+ queueFocusUpdate() {
356
+ if (this.isUpdatingFocus &&
357
+ (this.contains(document.activeElement) || this === document.activeElement)) {
358
+ return;
359
+ }
360
+ if (this.pendingFocusUpdate === false) {
361
+ this.pendingFocusUpdate = true;
362
+ DOM.queueUpdate(() => this.updateFocus());
363
+ }
364
+ }
365
+ updateFocus() {
366
+ this.pendingFocusUpdate = false;
367
+ this.focusOnCell(this.focusRowIndex, this.focusColumnIndex, true);
368
+ }
369
+ toggleGeneratedHeader() {
370
+ if (this.generatedHeader !== null) {
371
+ this.removeChild(this.generatedHeader);
372
+ this.generatedHeader = null;
373
+ }
374
+ if (this.generateHeader !== GenerateHeaderOptions.none &&
375
+ this.rowsData.length > 0) {
376
+ const generatedHeaderElement = document.createElement(this.rowElementTag);
377
+ this.generatedHeader = generatedHeaderElement;
378
+ this.generatedHeader.columnDefinitions = this.columnDefinitions;
379
+ this.generatedHeader.gridTemplateColumns = this.gridTemplateColumns;
380
+ this.generatedHeader.rowType =
381
+ this.generateHeader === GenerateHeaderOptions.sticky
382
+ ? DataGridRowTypes.stickyHeader
383
+ : DataGridRowTypes.header;
384
+ if (this.firstChild !== null || this.rowsPlaceholder !== null) {
385
+ this.insertBefore(generatedHeaderElement, this.firstChild !== null ? this.firstChild : this.rowsPlaceholder);
386
+ }
387
+ return;
388
+ }
389
+ }
390
+ }
391
+ /**
392
+ * generates a basic column definition by examining sample row data
393
+ */
394
+ DataGrid.generateColumns = (row) => {
395
+ return Object.getOwnPropertyNames(row).map((property, index) => {
396
+ return {
397
+ columnDataKey: property,
398
+ gridColumn: `${index}`,
399
+ };
400
+ });
401
+ };
402
+ __decorate([
403
+ attr({ attribute: "no-tabbing", mode: "boolean" })
404
+ ], DataGrid.prototype, "noTabbing", void 0);
405
+ __decorate([
406
+ attr({ attribute: "generate-header" })
407
+ ], DataGrid.prototype, "generateHeader", void 0);
408
+ __decorate([
409
+ attr({ attribute: "grid-template-columns" })
410
+ ], DataGrid.prototype, "gridTemplateColumns", void 0);
411
+ __decorate([
412
+ observable
413
+ ], DataGrid.prototype, "rowsData", void 0);
414
+ __decorate([
415
+ observable
416
+ ], DataGrid.prototype, "columnDefinitions", void 0);
417
+ __decorate([
418
+ observable
419
+ ], DataGrid.prototype, "rowItemTemplate", void 0);
420
+ __decorate([
421
+ observable
422
+ ], DataGrid.prototype, "cellItemTemplate", void 0);
423
+ __decorate([
424
+ observable
425
+ ], DataGrid.prototype, "headerCellItemTemplate", void 0);
426
+ __decorate([
427
+ observable
428
+ ], DataGrid.prototype, "focusRowIndex", void 0);
429
+ __decorate([
430
+ observable
431
+ ], DataGrid.prototype, "focusColumnIndex", void 0);
432
+ __decorate([
433
+ observable
434
+ ], DataGrid.prototype, "defaultRowItemTemplate", void 0);
435
+ __decorate([
436
+ observable
437
+ ], DataGrid.prototype, "rowElementTag", void 0);
438
+ __decorate([
439
+ observable
440
+ ], DataGrid.prototype, "rowElements", void 0);
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Enumerates the data grid auto generated header options
3
+ * default option generates a non-sticky header row
4
+ *
5
+ * @public
6
+ */
7
+ export const GenerateHeaderOptions = {
8
+ none: "none",
9
+ default: "default",
10
+ sticky: "sticky",
11
+ };
12
+ /**
13
+ * Enumerates possible data grid cell types.
14
+ *
15
+ * @public
16
+ */
17
+ export const DataGridCellTypes = {
18
+ default: "default",
19
+ columnHeader: "columnheader",
20
+ rowHeader: "rowheader",
21
+ };
22
+ /**
23
+ * Enumerates possible data grid row types
24
+ *
25
+ * @public
26
+ */
27
+ export const DataGridRowTypes = {
28
+ default: "default",
29
+ header: "header",
30
+ stickyHeader: "sticky-header",
31
+ };
@@ -0,0 +1,36 @@
1
+ import { children, elements, html } from "@ni/fast-element";
2
+ import { DataGridRow } from "./data-grid-row.js";
3
+ function createRowItemTemplate(context) {
4
+ const rowTag = context.tagFor(DataGridRow);
5
+ return html `
6
+ <${rowTag}
7
+ :rowData="${x => x}"
8
+ :cellItemTemplate="${(x, c) => c.parent.cellItemTemplate}"
9
+ :headerCellItemTemplate="${(x, c) => c.parent.headerCellItemTemplate}"
10
+ ></${rowTag}>
11
+ `;
12
+ }
13
+ /**
14
+ * Generates a template for the {@link @ni/fast-foundation#DataGrid} component using
15
+ * the provided prefix.
16
+ *
17
+ * @public
18
+ */
19
+ export const dataGridTemplate = (context, definition) => {
20
+ const rowItemTemplate = createRowItemTemplate(context);
21
+ const rowTag = context.tagFor(DataGridRow);
22
+ return html `
23
+ <template
24
+ role="grid"
25
+ tabindex="0"
26
+ :rowElementTag="${() => rowTag}"
27
+ :defaultRowItemTemplate="${rowItemTemplate}"
28
+ ${children({
29
+ property: "rowElements",
30
+ filter: elements("[role=row]"),
31
+ })}
32
+ >
33
+ <slot></slot>
34
+ </template>
35
+ `;
36
+ };
@@ -0,0 +1,6 @@
1
+ export * from "./data-grid.template.js";
2
+ export * from "./data-grid.js";
3
+ export * from "./data-grid-row.template.js";
4
+ export * from "./data-grid-row.js";
5
+ export * from "./data-grid-cell.template.js";
6
+ export * from "./data-grid-cell.js";
@@ -0,0 +1,86 @@
1
+ import { ElementStyles, } from "@ni/fast-element";
2
+ import { DI, Registration } from "../di/di.js";
3
+ function presentationKeyFromTag(tagName) {
4
+ return `${tagName.toLowerCase()}:presentation`;
5
+ }
6
+ const presentationRegistry = new Map();
7
+ /**
8
+ * An API gateway to component presentation features.
9
+ * @public
10
+ */
11
+ export const ComponentPresentation = Object.freeze({
12
+ /**
13
+ * Defines a component presentation for an element.
14
+ * @param tagName - The element name to define the presentation for.
15
+ * @param presentation - The presentation that will be applied to matching elements.
16
+ * @param container - The dependency injection container to register the configuration in.
17
+ * @public
18
+ */
19
+ define(tagName, presentation, container) {
20
+ const key = presentationKeyFromTag(tagName);
21
+ const existing = presentationRegistry.get(key);
22
+ if (existing === void 0) {
23
+ presentationRegistry.set(key, presentation);
24
+ }
25
+ else {
26
+ // false indicates that we have more than one presentation
27
+ // registered for a tagName and we must resolve through DI
28
+ presentationRegistry.set(key, false);
29
+ }
30
+ container.register(Registration.instance(key, presentation));
31
+ },
32
+ /**
33
+ * Finds a component presentation for the specified element name,
34
+ * searching the DOM hierarchy starting from the provided element.
35
+ * @param tagName - The name of the element to locate the presentation for.
36
+ * @param element - The element to begin the search from.
37
+ * @returns The component presentation or null if none is found.
38
+ * @public
39
+ */
40
+ forTag(tagName, element) {
41
+ const key = presentationKeyFromTag(tagName);
42
+ const existing = presentationRegistry.get(key);
43
+ if (existing === false) {
44
+ const container = DI.findResponsibleContainer(element);
45
+ return container.get(key);
46
+ }
47
+ return existing || null;
48
+ },
49
+ });
50
+ /**
51
+ * The default implementation of ComponentPresentation, used by FoundationElement.
52
+ * @public
53
+ */
54
+ export class DefaultComponentPresentation {
55
+ /**
56
+ * Creates an instance of DefaultComponentPresentation.
57
+ * @param template - The template to apply to the element.
58
+ * @param styles - The styles to apply to the element.
59
+ * @public
60
+ */
61
+ constructor(template, styles) {
62
+ this.template = template || null;
63
+ this.styles =
64
+ styles === void 0
65
+ ? null
66
+ : Array.isArray(styles)
67
+ ? ElementStyles.create(styles)
68
+ : styles instanceof ElementStyles
69
+ ? styles
70
+ : ElementStyles.create([styles]);
71
+ }
72
+ /**
73
+ * Applies the presentation details to the specified element.
74
+ * @param element - The element to apply the presentation details to.
75
+ * @public
76
+ */
77
+ applyTo(element) {
78
+ const controller = element.$fastController;
79
+ if (controller.template === null) {
80
+ controller.template = this.template;
81
+ }
82
+ if (controller.styles === null) {
83
+ controller.styles = this.styles;
84
+ }
85
+ }
86
+ }