@tylertech/forge 2.0.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 (1158) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +124 -0
  3. package/dist/busy-indicator/forge-busy-indicator.css +6 -0
  4. package/dist/button/forge-button.css +6 -0
  5. package/dist/dialog/forge-dialog-utils.css +6 -0
  6. package/dist/dialog/forge-dialog.css +6 -0
  7. package/dist/expansion-panel/forge-expansion-panel.css +6 -0
  8. package/dist/floating-action-button/forge-floating-action-button.css +6 -0
  9. package/dist/floating-label/forge-floating-label.css +6 -0
  10. package/dist/forge-core.css +6 -0
  11. package/dist/forge-dark.css +6 -0
  12. package/dist/forge.css +6 -0
  13. package/dist/form-field/forge-form-field.css +6 -0
  14. package/dist/icon-button/forge-icon-button.css +6 -0
  15. package/dist/popup/forge-popup.css +6 -0
  16. package/dist/quantity-field/forge-quantity-field.css +6 -0
  17. package/dist/ripple/forge-ripple.css +6 -0
  18. package/dist/scaffold/forge-scaffold.css +6 -0
  19. package/dist/table/forge-table.css +6 -0
  20. package/dist/theme/forge-theme.css +6 -0
  21. package/dist/tooltip/forge-tooltip.css +6 -0
  22. package/dist/typography/forge-form.css +6 -0
  23. package/dist/typography/forge-typography.css +6 -0
  24. package/dist/utils/forge-flex.css +6 -0
  25. package/dist/utils/forge-grid.css +6 -0
  26. package/dist/utils/forge-utils.css +6 -0
  27. package/esm/accordion/accordion-adapter.d.ts +48 -0
  28. package/esm/accordion/accordion-adapter.js +63 -0
  29. package/esm/accordion/accordion-constants.d.ts +11 -0
  30. package/esm/accordion/accordion-constants.js +14 -0
  31. package/esm/accordion/accordion-foundation.d.ts +27 -0
  32. package/esm/accordion/accordion-foundation.js +61 -0
  33. package/esm/accordion/accordion.d.ts +30 -0
  34. package/esm/accordion/accordion.js +52 -0
  35. package/esm/accordion/index.d.ts +10 -0
  36. package/esm/accordion/index.js +14 -0
  37. package/esm/app-bar/app-bar-adapter.d.ts +43 -0
  38. package/esm/app-bar/app-bar-adapter.js +60 -0
  39. package/esm/app-bar/app-bar-constants.d.ts +33 -0
  40. package/esm/app-bar/app-bar-constants.js +37 -0
  41. package/esm/app-bar/app-bar-foundation.d.ts +35 -0
  42. package/esm/app-bar/app-bar-foundation.js +70 -0
  43. package/esm/app-bar/app-bar.d.ts +34 -0
  44. package/esm/app-bar/app-bar.js +71 -0
  45. package/esm/app-bar/help-button/app-bar-help-button-adapter.d.ts +18 -0
  46. package/esm/app-bar/help-button/app-bar-help-button-adapter.js +19 -0
  47. package/esm/app-bar/help-button/app-bar-help-button-constants.d.ts +8 -0
  48. package/esm/app-bar/help-button/app-bar-help-button-constants.js +10 -0
  49. package/esm/app-bar/help-button/app-bar-help-button-foundation.d.ts +21 -0
  50. package/esm/app-bar/help-button/app-bar-help-button-foundation.js +29 -0
  51. package/esm/app-bar/help-button/app-bar-help-button.d.ts +23 -0
  52. package/esm/app-bar/help-button/app-bar-help-button.js +48 -0
  53. package/esm/app-bar/help-button/index.d.ts +10 -0
  54. package/esm/app-bar/help-button/index.js +14 -0
  55. package/esm/app-bar/index.d.ts +16 -0
  56. package/esm/app-bar/index.js +20 -0
  57. package/esm/app-bar/menu-button/app-bar-menu-button-constants.d.ts +8 -0
  58. package/esm/app-bar/menu-button/app-bar-menu-button-constants.js +10 -0
  59. package/esm/app-bar/menu-button/app-bar-menu-button.d.ts +17 -0
  60. package/esm/app-bar/menu-button/app-bar-menu-button.js +34 -0
  61. package/esm/app-bar/menu-button/index.d.ts +8 -0
  62. package/esm/app-bar/menu-button/index.js +12 -0
  63. package/esm/app-bar/notification-button/app-bar-notification-button-adapter.d.ts +23 -0
  64. package/esm/app-bar/notification-button/app-bar-notification-button-adapter.js +28 -0
  65. package/esm/app-bar/notification-button/app-bar-notification-button-constants.d.ts +14 -0
  66. package/esm/app-bar/notification-button/app-bar-notification-button-constants.js +17 -0
  67. package/esm/app-bar/notification-button/app-bar-notification-button-foundation.d.ts +32 -0
  68. package/esm/app-bar/notification-button/app-bar-notification-button-foundation.js +79 -0
  69. package/esm/app-bar/notification-button/app-bar-notification-button.d.ts +29 -0
  70. package/esm/app-bar/notification-button/app-bar-notification-button.js +78 -0
  71. package/esm/app-bar/notification-button/index.d.ts +10 -0
  72. package/esm/app-bar/notification-button/index.js +14 -0
  73. package/esm/app-bar/profile-button/app-bar-profile-button-adapter.d.ts +34 -0
  74. package/esm/app-bar/profile-button/app-bar-profile-button-adapter.js +72 -0
  75. package/esm/app-bar/profile-button/app-bar-profile-button-constants.d.ts +31 -0
  76. package/esm/app-bar/profile-button/app-bar-profile-button-constants.js +25 -0
  77. package/esm/app-bar/profile-button/app-bar-profile-button-foundation.d.ts +66 -0
  78. package/esm/app-bar/profile-button/app-bar-profile-button-foundation.js +199 -0
  79. package/esm/app-bar/profile-button/app-bar-profile-button.d.ts +42 -0
  80. package/esm/app-bar/profile-button/app-bar-profile-button.js +112 -0
  81. package/esm/app-bar/profile-button/index.d.ts +10 -0
  82. package/esm/app-bar/profile-button/index.js +14 -0
  83. package/esm/app-bar/search/app-bar-search-adapter.d.ts +59 -0
  84. package/esm/app-bar/search/app-bar-search-adapter.js +73 -0
  85. package/esm/app-bar/search/app-bar-search-constants.d.ts +38 -0
  86. package/esm/app-bar/search/app-bar-search-constants.js +42 -0
  87. package/esm/app-bar/search/app-bar-search-foundation.d.ts +62 -0
  88. package/esm/app-bar/search/app-bar-search-foundation.js +126 -0
  89. package/esm/app-bar/search/app-bar-search.d.ts +52 -0
  90. package/esm/app-bar/search/app-bar-search.js +101 -0
  91. package/esm/app-bar/search/index.d.ts +10 -0
  92. package/esm/app-bar/search/index.js +14 -0
  93. package/esm/autocomplete/autocomplete-adapter.d.ts +90 -0
  94. package/esm/autocomplete/autocomplete-adapter.js +222 -0
  95. package/esm/autocomplete/autocomplete-component-delegate.d.ts +34 -0
  96. package/esm/autocomplete/autocomplete-component-delegate.js +76 -0
  97. package/esm/autocomplete/autocomplete-constants.d.ts +68 -0
  98. package/esm/autocomplete/autocomplete-constants.js +49 -0
  99. package/esm/autocomplete/autocomplete-foundation.d.ts +175 -0
  100. package/esm/autocomplete/autocomplete-foundation.js +857 -0
  101. package/esm/autocomplete/autocomplete-utils.d.ts +22 -0
  102. package/esm/autocomplete/autocomplete-utils.js +36 -0
  103. package/esm/autocomplete/autocomplete.d.ts +85 -0
  104. package/esm/autocomplete/autocomplete.js +162 -0
  105. package/esm/autocomplete/index.d.ts +12 -0
  106. package/esm/autocomplete/index.js +16 -0
  107. package/esm/avatar/avatar-adapter.d.ts +42 -0
  108. package/esm/avatar/avatar-adapter.js +63 -0
  109. package/esm/avatar/avatar-component-delegate.d.ts +16 -0
  110. package/esm/avatar/avatar-component-delegate.js +15 -0
  111. package/esm/avatar/avatar-constants.d.ts +25 -0
  112. package/esm/avatar/avatar-constants.js +32 -0
  113. package/esm/avatar/avatar-foundation.d.ts +47 -0
  114. package/esm/avatar/avatar-foundation.js +119 -0
  115. package/esm/avatar/avatar.d.ts +36 -0
  116. package/esm/avatar/avatar.js +71 -0
  117. package/esm/avatar/index.d.ts +11 -0
  118. package/esm/avatar/index.js +15 -0
  119. package/esm/backdrop/backdrop-adapter.d.ts +36 -0
  120. package/esm/backdrop/backdrop-adapter.js +40 -0
  121. package/esm/backdrop/backdrop-constants.d.ts +26 -0
  122. package/esm/backdrop/backdrop-constants.js +31 -0
  123. package/esm/backdrop/backdrop-foundation.d.ts +38 -0
  124. package/esm/backdrop/backdrop-foundation.js +82 -0
  125. package/esm/backdrop/backdrop.d.ts +51 -0
  126. package/esm/backdrop/backdrop.js +85 -0
  127. package/esm/backdrop/index.d.ts +10 -0
  128. package/esm/backdrop/index.js +14 -0
  129. package/esm/badge/badge-adapter.d.ts +17 -0
  130. package/esm/badge/badge-adapter.js +20 -0
  131. package/esm/badge/badge-component-delegate.d.ts +16 -0
  132. package/esm/badge/badge-component-delegate.js +15 -0
  133. package/esm/badge/badge-constants.d.ts +21 -0
  134. package/esm/badge/badge-constants.js +26 -0
  135. package/esm/badge/badge-foundation.d.ts +24 -0
  136. package/esm/badge/badge-foundation.js +55 -0
  137. package/esm/badge/badge.d.ts +26 -0
  138. package/esm/badge/badge.js +51 -0
  139. package/esm/badge/index.d.ts +11 -0
  140. package/esm/badge/index.js +15 -0
  141. package/esm/banner/banner-adapter.d.ts +30 -0
  142. package/esm/banner/banner-adapter.js +44 -0
  143. package/esm/banner/banner-constants.d.ts +34 -0
  144. package/esm/banner/banner-constants.js +41 -0
  145. package/esm/banner/banner-foundation.d.ts +31 -0
  146. package/esm/banner/banner-foundation.js +73 -0
  147. package/esm/banner/banner.d.ts +35 -0
  148. package/esm/banner/banner.js +67 -0
  149. package/esm/banner/index.d.ts +10 -0
  150. package/esm/banner/index.js +14 -0
  151. package/esm/bottom-sheet/bottom-sheet-adapter.d.ts +70 -0
  152. package/esm/bottom-sheet/bottom-sheet-adapter.js +129 -0
  153. package/esm/bottom-sheet/bottom-sheet-constants.d.ts +49 -0
  154. package/esm/bottom-sheet/bottom-sheet-constants.js +47 -0
  155. package/esm/bottom-sheet/bottom-sheet-foundation.d.ts +79 -0
  156. package/esm/bottom-sheet/bottom-sheet-foundation.js +327 -0
  157. package/esm/bottom-sheet/bottom-sheet.d.ts +58 -0
  158. package/esm/bottom-sheet/bottom-sheet.js +85 -0
  159. package/esm/bottom-sheet/index.d.ts +10 -0
  160. package/esm/bottom-sheet/index.js +14 -0
  161. package/esm/busy-indicator/busy-indicator-adapter.d.ts +159 -0
  162. package/esm/busy-indicator/busy-indicator-adapter.js +201 -0
  163. package/esm/busy-indicator/busy-indicator-constants.d.ts +49 -0
  164. package/esm/busy-indicator/busy-indicator-constants.js +58 -0
  165. package/esm/busy-indicator/busy-indicator-foundation.d.ts +97 -0
  166. package/esm/busy-indicator/busy-indicator-foundation.js +268 -0
  167. package/esm/busy-indicator/busy-indicator.d.ts +73 -0
  168. package/esm/busy-indicator/busy-indicator.js +111 -0
  169. package/esm/busy-indicator/index.d.ts +10 -0
  170. package/esm/busy-indicator/index.js +14 -0
  171. package/esm/button/button-component-delegate.d.ts +24 -0
  172. package/esm/button/button-component-delegate.js +39 -0
  173. package/esm/button/button-constants.d.ts +28 -0
  174. package/esm/button/button-constants.js +33 -0
  175. package/esm/button/button.d.ts +43 -0
  176. package/esm/button/button.js +160 -0
  177. package/esm/button/index.d.ts +9 -0
  178. package/esm/button/index.js +13 -0
  179. package/esm/button-toggle/button-toggle/button-toggle-adapter.d.ts +30 -0
  180. package/esm/button-toggle/button-toggle/button-toggle-adapter.js +62 -0
  181. package/esm/button-toggle/button-toggle/button-toggle-constants.d.ts +33 -0
  182. package/esm/button-toggle/button-toggle/button-toggle-constants.js +35 -0
  183. package/esm/button-toggle/button-toggle/button-toggle-foundation.d.ts +37 -0
  184. package/esm/button-toggle/button-toggle/button-toggle-foundation.js +74 -0
  185. package/esm/button-toggle/button-toggle/button-toggle.d.ts +37 -0
  186. package/esm/button-toggle/button-toggle/button-toggle.js +76 -0
  187. package/esm/button-toggle/button-toggle/index.d.ts +10 -0
  188. package/esm/button-toggle/button-toggle/index.js +14 -0
  189. package/esm/button-toggle/button-toggle-group/button-toggle-group-adapter.d.ts +44 -0
  190. package/esm/button-toggle/button-toggle-group/button-toggle-group-adapter.js +125 -0
  191. package/esm/button-toggle/button-toggle-group/button-toggle-group-constants.d.ts +35 -0
  192. package/esm/button-toggle/button-toggle-group/button-toggle-group-constants.js +33 -0
  193. package/esm/button-toggle/button-toggle-group/button-toggle-group-foundation.d.ts +57 -0
  194. package/esm/button-toggle/button-toggle-group/button-toggle-group-foundation.js +198 -0
  195. package/esm/button-toggle/button-toggle-group/button-toggle-group.d.ts +38 -0
  196. package/esm/button-toggle/button-toggle-group/button-toggle-group.js +94 -0
  197. package/esm/button-toggle/button-toggle-group/index.d.ts +10 -0
  198. package/esm/button-toggle/button-toggle-group/index.js +14 -0
  199. package/esm/button-toggle/index.d.ts +7 -0
  200. package/esm/button-toggle/index.js +7 -0
  201. package/esm/calendar/calendar-adapter.d.ts +160 -0
  202. package/esm/calendar/calendar-adapter.js +425 -0
  203. package/esm/calendar/calendar-component-delegate.d.ts +21 -0
  204. package/esm/calendar/calendar-component-delegate.js +27 -0
  205. package/esm/calendar/calendar-constants.d.ts +261 -0
  206. package/esm/calendar/calendar-constants.js +170 -0
  207. package/esm/calendar/calendar-dom-utils.d.ts +46 -0
  208. package/esm/calendar/calendar-dom-utils.js +301 -0
  209. package/esm/calendar/calendar-dropdown/calendar-dropdown-constants.d.ts +15 -0
  210. package/esm/calendar/calendar-dropdown/calendar-dropdown-constants.js +11 -0
  211. package/esm/calendar/calendar-dropdown/calendar-dropdown.d.ts +41 -0
  212. package/esm/calendar/calendar-dropdown/calendar-dropdown.js +106 -0
  213. package/esm/calendar/calendar-dropdown/index.d.ts +7 -0
  214. package/esm/calendar/calendar-dropdown/index.js +7 -0
  215. package/esm/calendar/calendar-foundation.d.ts +547 -0
  216. package/esm/calendar/calendar-foundation.js +2218 -0
  217. package/esm/calendar/calendar-locale-utils.d.ts +20 -0
  218. package/esm/calendar/calendar-locale-utils.js +133 -0
  219. package/esm/calendar/calendar-menu/calendar-menu-adapter.d.ts +43 -0
  220. package/esm/calendar/calendar-menu/calendar-menu-adapter.js +156 -0
  221. package/esm/calendar/calendar-menu/calendar-menu-constants.d.ts +74 -0
  222. package/esm/calendar/calendar-menu/calendar-menu-constants.js +76 -0
  223. package/esm/calendar/calendar-menu/calendar-menu-foundation.d.ts +66 -0
  224. package/esm/calendar/calendar-menu/calendar-menu-foundation.js +229 -0
  225. package/esm/calendar/calendar-menu/calendar-menu-utils.d.ts +12 -0
  226. package/esm/calendar/calendar-menu/calendar-menu-utils.js +85 -0
  227. package/esm/calendar/calendar-menu/calendar-menu.d.ts +48 -0
  228. package/esm/calendar/calendar-menu/calendar-menu.js +86 -0
  229. package/esm/calendar/calendar-menu/index.d.ts +11 -0
  230. package/esm/calendar/calendar-menu/index.js +15 -0
  231. package/esm/calendar/calendar-utils.d.ts +64 -0
  232. package/esm/calendar/calendar-utils.js +309 -0
  233. package/esm/calendar/calendar.d.ts +96 -0
  234. package/esm/calendar/calendar.js +282 -0
  235. package/esm/calendar/core/calendar-base.d.ts +34 -0
  236. package/esm/calendar/core/calendar-base.js +6 -0
  237. package/esm/calendar/core/date-range.d.ts +15 -0
  238. package/esm/calendar/core/date-range.js +16 -0
  239. package/esm/calendar/core/index.d.ts +7 -0
  240. package/esm/calendar/core/index.js +7 -0
  241. package/esm/calendar/index.d.ts +17 -0
  242. package/esm/calendar/index.js +21 -0
  243. package/esm/card/card-constants.d.ts +17 -0
  244. package/esm/card/card-constants.js +22 -0
  245. package/esm/card/card.d.ts +27 -0
  246. package/esm/card/card.js +58 -0
  247. package/esm/card/index.d.ts +8 -0
  248. package/esm/card/index.js +12 -0
  249. package/esm/checkbox/checkbox-adapter.d.ts +71 -0
  250. package/esm/checkbox/checkbox-adapter.js +216 -0
  251. package/esm/checkbox/checkbox-component-delegate.d.ts +37 -0
  252. package/esm/checkbox/checkbox-component-delegate.js +92 -0
  253. package/esm/checkbox/checkbox-constants.d.ts +72 -0
  254. package/esm/checkbox/checkbox-constants.js +67 -0
  255. package/esm/checkbox/checkbox-foundation.d.ts +35 -0
  256. package/esm/checkbox/checkbox-foundation.js +175 -0
  257. package/esm/checkbox/checkbox.d.ts +28 -0
  258. package/esm/checkbox/checkbox.js +69 -0
  259. package/esm/checkbox/index.d.ts +11 -0
  260. package/esm/checkbox/index.js +15 -0
  261. package/esm/chip-field/chip-field-adapter.d.ts +32 -0
  262. package/esm/chip-field/chip-field-adapter.js +51 -0
  263. package/esm/chip-field/chip-field-component-delegate.d.ts +45 -0
  264. package/esm/chip-field/chip-field-component-delegate.js +125 -0
  265. package/esm/chip-field/chip-field-constants.d.ts +31 -0
  266. package/esm/chip-field/chip-field-constants.js +36 -0
  267. package/esm/chip-field/chip-field-foundation.d.ts +30 -0
  268. package/esm/chip-field/chip-field-foundation.js +151 -0
  269. package/esm/chip-field/chip-field.d.ts +21 -0
  270. package/esm/chip-field/chip-field.js +28 -0
  271. package/esm/chip-field/index.d.ts +11 -0
  272. package/esm/chip-field/index.js +15 -0
  273. package/esm/chips/chip/chip-adapter.d.ts +51 -0
  274. package/esm/chips/chip/chip-adapter.js +115 -0
  275. package/esm/chips/chip/chip-constants.d.ts +53 -0
  276. package/esm/chips/chip/chip-constants.js +47 -0
  277. package/esm/chips/chip/chip-foundation.d.ts +69 -0
  278. package/esm/chips/chip/chip-foundation.js +264 -0
  279. package/esm/chips/chip/chip.d.ts +50 -0
  280. package/esm/chips/chip/chip.js +98 -0
  281. package/esm/chips/chip/index.d.ts +10 -0
  282. package/esm/chips/chip/index.js +14 -0
  283. package/esm/chips/chip-set/chip-set-adapter.d.ts +23 -0
  284. package/esm/chips/chip-set/chip-set-adapter.js +33 -0
  285. package/esm/chips/chip-set/chip-set-constants.d.ts +21 -0
  286. package/esm/chips/chip-set/chip-set-constants.js +26 -0
  287. package/esm/chips/chip-set/chip-set-foundation.d.ts +35 -0
  288. package/esm/chips/chip-set/chip-set-foundation.js +74 -0
  289. package/esm/chips/chip-set/chip-set.d.ts +29 -0
  290. package/esm/chips/chip-set/chip-set.js +67 -0
  291. package/esm/chips/chip-set/index.d.ts +10 -0
  292. package/esm/chips/chip-set/index.js +14 -0
  293. package/esm/chips/index.d.ts +7 -0
  294. package/esm/chips/index.js +7 -0
  295. package/esm/circular-progress/circular-progress-adapter.d.ts +28 -0
  296. package/esm/circular-progress/circular-progress-adapter.js +42 -0
  297. package/esm/circular-progress/circular-progress-constants.d.ts +17 -0
  298. package/esm/circular-progress/circular-progress-constants.js +21 -0
  299. package/esm/circular-progress/circular-progress-foundation.d.ts +32 -0
  300. package/esm/circular-progress/circular-progress-foundation.js +66 -0
  301. package/esm/circular-progress/circular-progress.d.ts +27 -0
  302. package/esm/circular-progress/circular-progress.js +65 -0
  303. package/esm/circular-progress/index.d.ts +10 -0
  304. package/esm/circular-progress/index.js +14 -0
  305. package/esm/color-picker/color-picker-adapter.d.ts +78 -0
  306. package/esm/color-picker/color-picker-adapter.js +175 -0
  307. package/esm/color-picker/color-picker-constants.d.ts +79 -0
  308. package/esm/color-picker/color-picker-constants.js +65 -0
  309. package/esm/color-picker/color-picker-foundation.d.ts +67 -0
  310. package/esm/color-picker/color-picker-foundation.js +235 -0
  311. package/esm/color-picker/color-picker-gradient-slider.d.ts +30 -0
  312. package/esm/color-picker/color-picker-gradient-slider.js +135 -0
  313. package/esm/color-picker/color-picker-slider.d.ts +38 -0
  314. package/esm/color-picker/color-picker-slider.js +118 -0
  315. package/esm/color-picker/color-picker-utils.d.ts +40 -0
  316. package/esm/color-picker/color-picker-utils.js +197 -0
  317. package/esm/color-picker/color-picker.d.ts +43 -0
  318. package/esm/color-picker/color-picker.js +80 -0
  319. package/esm/color-picker/index.d.ts +10 -0
  320. package/esm/color-picker/index.js +14 -0
  321. package/esm/constants.d.ts +9 -0
  322. package/esm/constants.js +9 -0
  323. package/esm/core/base/base-adapter.d.ts +42 -0
  324. package/esm/core/base/base-adapter.js +56 -0
  325. package/esm/core/base/base-component.d.ts +11 -0
  326. package/esm/core/base/base-component.js +8 -0
  327. package/esm/core/base/index.d.ts +7 -0
  328. package/esm/core/base/index.js +7 -0
  329. package/esm/core/delegates/base-component-delegate.d.ts +40 -0
  330. package/esm/core/delegates/base-component-delegate.js +84 -0
  331. package/esm/core/delegates/form-field-component-delegate.d.ts +24 -0
  332. package/esm/core/delegates/form-field-component-delegate.js +11 -0
  333. package/esm/core/delegates/index.d.ts +7 -0
  334. package/esm/core/delegates/index.js +7 -0
  335. package/esm/core/index.d.ts +9 -0
  336. package/esm/core/index.js +9 -0
  337. package/esm/core/mask/date-input-mask.d.ts +35 -0
  338. package/esm/core/mask/date-input-mask.js +155 -0
  339. package/esm/core/mask/index.d.ts +7 -0
  340. package/esm/core/mask/index.js +7 -0
  341. package/esm/core/mask/time-input-mask.d.ts +38 -0
  342. package/esm/core/mask/time-input-mask.js +163 -0
  343. package/esm/core/utils/date-utils.d.ts +42 -0
  344. package/esm/core/utils/date-utils.js +133 -0
  345. package/esm/core/utils/index.d.ts +9 -0
  346. package/esm/core/utils/index.js +9 -0
  347. package/esm/core/utils/svg-utils.d.ts +14 -0
  348. package/esm/core/utils/svg-utils.js +62 -0
  349. package/esm/core/utils/time-utils.d.ts +21 -0
  350. package/esm/core/utils/time-utils.js +111 -0
  351. package/esm/core/utils/utils.d.ts +11 -0
  352. package/esm/core/utils/utils.js +26 -0
  353. package/esm/date-picker/base/base-date-picker-adapter.d.ts +98 -0
  354. package/esm/date-picker/base/base-date-picker-adapter.js +157 -0
  355. package/esm/date-picker/base/base-date-picker-constants.d.ts +52 -0
  356. package/esm/date-picker/base/base-date-picker-constants.js +33 -0
  357. package/esm/date-picker/base/base-date-picker-foundation.d.ts +152 -0
  358. package/esm/date-picker/base/base-date-picker-foundation.js +608 -0
  359. package/esm/date-picker/base/base-date-picker-utils.d.ts +6 -0
  360. package/esm/date-picker/base/base-date-picker-utils.js +21 -0
  361. package/esm/date-picker/base/base-date-picker.d.ts +82 -0
  362. package/esm/date-picker/base/base-date-picker.js +135 -0
  363. package/esm/date-picker/date-picker-adapter.d.ts +39 -0
  364. package/esm/date-picker/date-picker-adapter.js +121 -0
  365. package/esm/date-picker/date-picker-component-delegate.d.ts +34 -0
  366. package/esm/date-picker/date-picker-component-delegate.js +73 -0
  367. package/esm/date-picker/date-picker-constants.d.ts +20 -0
  368. package/esm/date-picker/date-picker-constants.js +25 -0
  369. package/esm/date-picker/date-picker-foundation.d.ts +34 -0
  370. package/esm/date-picker/date-picker-foundation.js +155 -0
  371. package/esm/date-picker/date-picker.d.ts +26 -0
  372. package/esm/date-picker/date-picker.js +54 -0
  373. package/esm/date-picker/index.d.ts +11 -0
  374. package/esm/date-picker/index.js +15 -0
  375. package/esm/date-range-picker/date-range-picker-adapter.d.ts +65 -0
  376. package/esm/date-range-picker/date-range-picker-adapter.js +190 -0
  377. package/esm/date-range-picker/date-range-picker-component-delegate.d.ts +41 -0
  378. package/esm/date-range-picker/date-range-picker-component-delegate.js +86 -0
  379. package/esm/date-range-picker/date-range-picker-constants.d.ts +34 -0
  380. package/esm/date-range-picker/date-range-picker-constants.js +38 -0
  381. package/esm/date-range-picker/date-range-picker-foundation.d.ts +60 -0
  382. package/esm/date-range-picker/date-range-picker-foundation.js +342 -0
  383. package/esm/date-range-picker/date-range-picker.d.ts +33 -0
  384. package/esm/date-range-picker/date-range-picker.js +64 -0
  385. package/esm/date-range-picker/index.d.ts +11 -0
  386. package/esm/date-range-picker/index.js +15 -0
  387. package/esm/dialog/dialog-adapter.d.ts +75 -0
  388. package/esm/dialog/dialog-adapter.js +164 -0
  389. package/esm/dialog/dialog-constants.d.ts +65 -0
  390. package/esm/dialog/dialog-constants.js +59 -0
  391. package/esm/dialog/dialog-foundation.d.ts +102 -0
  392. package/esm/dialog/dialog-foundation.js +451 -0
  393. package/esm/dialog/dialog.d.ts +71 -0
  394. package/esm/dialog/dialog.js +120 -0
  395. package/esm/dialog/index.d.ts +10 -0
  396. package/esm/dialog/index.js +14 -0
  397. package/esm/divider/divider-constants.d.ts +11 -0
  398. package/esm/divider/divider-constants.js +14 -0
  399. package/esm/divider/divider.d.ts +19 -0
  400. package/esm/divider/divider.js +26 -0
  401. package/esm/divider/index.d.ts +8 -0
  402. package/esm/divider/index.js +12 -0
  403. package/esm/drawer/base/base-drawer-adapter.d.ts +24 -0
  404. package/esm/drawer/base/base-drawer-adapter.js +48 -0
  405. package/esm/drawer/base/base-drawer-constants.d.ts +27 -0
  406. package/esm/drawer/base/base-drawer-constants.js +30 -0
  407. package/esm/drawer/base/base-drawer-foundation.d.ts +32 -0
  408. package/esm/drawer/base/base-drawer-foundation.js +89 -0
  409. package/esm/drawer/base/base-drawer.d.ts +30 -0
  410. package/esm/drawer/base/base-drawer.js +42 -0
  411. package/esm/drawer/base/index.d.ts +9 -0
  412. package/esm/drawer/base/index.js +9 -0
  413. package/esm/drawer/drawer/drawer-constants.d.ts +8 -0
  414. package/esm/drawer/drawer/drawer-constants.js +10 -0
  415. package/esm/drawer/drawer/drawer.d.ts +21 -0
  416. package/esm/drawer/drawer/drawer.js +24 -0
  417. package/esm/drawer/drawer/index.d.ts +8 -0
  418. package/esm/drawer/drawer/index.js +12 -0
  419. package/esm/drawer/index.d.ts +9 -0
  420. package/esm/drawer/index.js +9 -0
  421. package/esm/drawer/mini-drawer/index.d.ts +8 -0
  422. package/esm/drawer/mini-drawer/index.js +12 -0
  423. package/esm/drawer/mini-drawer/mini-drawer-constants.d.ts +11 -0
  424. package/esm/drawer/mini-drawer/mini-drawer-constants.js +14 -0
  425. package/esm/drawer/mini-drawer/mini-drawer.d.ts +17 -0
  426. package/esm/drawer/mini-drawer/mini-drawer.js +24 -0
  427. package/esm/drawer/modal-drawer/index.d.ts +10 -0
  428. package/esm/drawer/modal-drawer/index.js +14 -0
  429. package/esm/drawer/modal-drawer/modal-drawer-adapter.d.ts +20 -0
  430. package/esm/drawer/modal-drawer/modal-drawer-adapter.js +30 -0
  431. package/esm/drawer/modal-drawer/modal-drawer-constants.d.ts +15 -0
  432. package/esm/drawer/modal-drawer/modal-drawer-constants.js +19 -0
  433. package/esm/drawer/modal-drawer/modal-drawer-foundation.d.ts +22 -0
  434. package/esm/drawer/modal-drawer/modal-drawer-foundation.js +52 -0
  435. package/esm/drawer/modal-drawer/modal-drawer.d.ts +21 -0
  436. package/esm/drawer/modal-drawer/modal-drawer.js +28 -0
  437. package/esm/expansion-panel/expansion-panel-adapter.d.ts +33 -0
  438. package/esm/expansion-panel/expansion-panel-adapter.js +182 -0
  439. package/esm/expansion-panel/expansion-panel-constants.d.ts +38 -0
  440. package/esm/expansion-panel/expansion-panel-constants.js +47 -0
  441. package/esm/expansion-panel/expansion-panel-foundation.d.ts +59 -0
  442. package/esm/expansion-panel/expansion-panel-foundation.js +151 -0
  443. package/esm/expansion-panel/expansion-panel.d.ts +60 -0
  444. package/esm/expansion-panel/expansion-panel.js +81 -0
  445. package/esm/expansion-panel/index.d.ts +10 -0
  446. package/esm/expansion-panel/index.js +14 -0
  447. package/esm/field/field-adapter.d.ts +101 -0
  448. package/esm/field/field-adapter.js +184 -0
  449. package/esm/field/field-constants.d.ts +36 -0
  450. package/esm/field/field-constants.js +36 -0
  451. package/esm/field/field-foundation.d.ts +65 -0
  452. package/esm/field/field-foundation.js +328 -0
  453. package/esm/field/field.d.ts +40 -0
  454. package/esm/field/field.js +78 -0
  455. package/esm/file-picker/file-picker-adapter.d.ts +81 -0
  456. package/esm/file-picker/file-picker-adapter.js +134 -0
  457. package/esm/file-picker/file-picker-component-delegate.d.ts +23 -0
  458. package/esm/file-picker/file-picker-component-delegate.js +49 -0
  459. package/esm/file-picker/file-picker-constants.d.ts +41 -0
  460. package/esm/file-picker/file-picker-constants.js +44 -0
  461. package/esm/file-picker/file-picker-foundation.d.ts +66 -0
  462. package/esm/file-picker/file-picker-foundation.js +226 -0
  463. package/esm/file-picker/file-picker.d.ts +45 -0
  464. package/esm/file-picker/file-picker.js +88 -0
  465. package/esm/file-picker/index.d.ts +11 -0
  466. package/esm/file-picker/index.js +15 -0
  467. package/esm/floating-action-button/floating-action-button-component-delegate.d.ts +22 -0
  468. package/esm/floating-action-button/floating-action-button-component-delegate.js +36 -0
  469. package/esm/floating-action-button/floating-action-button-constants.d.ts +27 -0
  470. package/esm/floating-action-button/floating-action-button-constants.js +32 -0
  471. package/esm/floating-action-button/floating-action-button.d.ts +40 -0
  472. package/esm/floating-action-button/floating-action-button.js +126 -0
  473. package/esm/floating-action-button/index.d.ts +9 -0
  474. package/esm/floating-action-button/index.js +13 -0
  475. package/esm/floating-label/floating-label-adapter.d.ts +23 -0
  476. package/esm/floating-label/floating-label-adapter.js +32 -0
  477. package/esm/floating-label/floating-label-constants.d.ts +13 -0
  478. package/esm/floating-label/floating-label-constants.js +14 -0
  479. package/esm/floating-label/floating-label-foundation.d.ts +17 -0
  480. package/esm/floating-label/floating-label-foundation.js +71 -0
  481. package/esm/floating-label/floating-label.d.ts +27 -0
  482. package/esm/floating-label/floating-label.js +34 -0
  483. package/esm/floating-label/index.d.ts +9 -0
  484. package/esm/floating-label/index.js +9 -0
  485. package/esm/icon/icon-adapter.d.ts +23 -0
  486. package/esm/icon/icon-adapter.js +43 -0
  487. package/esm/icon/icon-component-delegate.d.ts +15 -0
  488. package/esm/icon/icon-component-delegate.js +15 -0
  489. package/esm/icon/icon-constants.d.ts +27 -0
  490. package/esm/icon/icon-constants.js +31 -0
  491. package/esm/icon/icon-foundation.d.ts +58 -0
  492. package/esm/icon/icon-foundation.js +187 -0
  493. package/esm/icon/icon-registry.d.ts +53 -0
  494. package/esm/icon/icon-registry.js +94 -0
  495. package/esm/icon/icon-utils.d.ts +12 -0
  496. package/esm/icon/icon-utils.js +66 -0
  497. package/esm/icon/icon.d.ts +46 -0
  498. package/esm/icon/icon.js +89 -0
  499. package/esm/icon/index.d.ts +13 -0
  500. package/esm/icon/index.js +23 -0
  501. package/esm/icon-button/icon-button-component-delegate.d.ts +31 -0
  502. package/esm/icon-button/icon-button-component-delegate.js +68 -0
  503. package/esm/icon-button/icon-button-constants.d.ts +30 -0
  504. package/esm/icon-button/icon-button-constants.js +43 -0
  505. package/esm/icon-button/icon-button.d.ts +57 -0
  506. package/esm/icon-button/icon-button.js +219 -0
  507. package/esm/icon-button/index.d.ts +9 -0
  508. package/esm/icon-button/index.js +13 -0
  509. package/esm/index.d.ts +70 -0
  510. package/esm/index.js +212 -0
  511. package/esm/inline-message/index.d.ts +8 -0
  512. package/esm/inline-message/index.js +12 -0
  513. package/esm/inline-message/inline-message-constants.d.ts +11 -0
  514. package/esm/inline-message/inline-message-constants.js +14 -0
  515. package/esm/inline-message/inline-message.d.ts +16 -0
  516. package/esm/inline-message/inline-message.js +23 -0
  517. package/esm/keyboard-shortcut/index.d.ts +11 -0
  518. package/esm/keyboard-shortcut/index.js +15 -0
  519. package/esm/keyboard-shortcut/keyboard-shortcut-adapter.d.ts +44 -0
  520. package/esm/keyboard-shortcut/keyboard-shortcut-adapter.js +79 -0
  521. package/esm/keyboard-shortcut/keyboard-shortcut-constants.d.ts +29 -0
  522. package/esm/keyboard-shortcut/keyboard-shortcut-constants.js +44 -0
  523. package/esm/keyboard-shortcut/keyboard-shortcut-foundation.d.ts +63 -0
  524. package/esm/keyboard-shortcut/keyboard-shortcut-foundation.js +165 -0
  525. package/esm/keyboard-shortcut/keyboard-shortcut-utils.d.ts +16 -0
  526. package/esm/keyboard-shortcut/keyboard-shortcut-utils.js +61 -0
  527. package/esm/keyboard-shortcut/keyboard-shortcut.d.ts +45 -0
  528. package/esm/keyboard-shortcut/keyboard-shortcut.js +93 -0
  529. package/esm/label-value/index.d.ts +11 -0
  530. package/esm/label-value/index.js +15 -0
  531. package/esm/label-value/label-value-adapter.d.ts +24 -0
  532. package/esm/label-value/label-value-adapter.js +47 -0
  533. package/esm/label-value/label-value-component-delegate.d.ts +29 -0
  534. package/esm/label-value/label-value-component-delegate.js +54 -0
  535. package/esm/label-value/label-value-constants.d.ts +27 -0
  536. package/esm/label-value/label-value-constants.js +30 -0
  537. package/esm/label-value/label-value-foundation.d.ts +33 -0
  538. package/esm/label-value/label-value-foundation.js +80 -0
  539. package/esm/label-value/label-value.d.ts +34 -0
  540. package/esm/label-value/label-value.js +65 -0
  541. package/esm/linear-progress/index.d.ts +8 -0
  542. package/esm/linear-progress/index.js +12 -0
  543. package/esm/linear-progress/linear-progress-constants.d.ts +18 -0
  544. package/esm/linear-progress/linear-progress-constants.js +22 -0
  545. package/esm/linear-progress/linear-progress.d.ts +44 -0
  546. package/esm/linear-progress/linear-progress.js +143 -0
  547. package/esm/list/index.d.ts +7 -0
  548. package/esm/list/index.js +7 -0
  549. package/esm/list/list/index.d.ts +10 -0
  550. package/esm/list/list/index.js +14 -0
  551. package/esm/list/list/list-adapter.d.ts +61 -0
  552. package/esm/list/list/list-adapter.js +99 -0
  553. package/esm/list/list/list-constants.d.ts +18 -0
  554. package/esm/list/list/list-constants.js +22 -0
  555. package/esm/list/list/list-foundation.d.ts +48 -0
  556. package/esm/list/list/list-foundation.js +142 -0
  557. package/esm/list/list/list.d.ts +38 -0
  558. package/esm/list/list/list.js +77 -0
  559. package/esm/list/list-item/index.d.ts +10 -0
  560. package/esm/list/list-item/index.js +14 -0
  561. package/esm/list/list-item/list-item-adapter.d.ts +101 -0
  562. package/esm/list/list-item/list-item-adapter.js +175 -0
  563. package/esm/list/list-item/list-item-constants.d.ts +57 -0
  564. package/esm/list/list-item/list-item-constants.js +59 -0
  565. package/esm/list/list-item/list-item-foundation.d.ts +102 -0
  566. package/esm/list/list-item/list-item-foundation.js +305 -0
  567. package/esm/list/list-item/list-item.d.ts +72 -0
  568. package/esm/list/list-item/list-item.js +168 -0
  569. package/esm/list-dropdown/cascading-list-dropdown-aware-foundation.d.ts +43 -0
  570. package/esm/list-dropdown/cascading-list-dropdown-aware-foundation.js +62 -0
  571. package/esm/list-dropdown/index.d.ts +10 -0
  572. package/esm/list-dropdown/index.js +10 -0
  573. package/esm/list-dropdown/list-dropdown-adapter.d.ts +64 -0
  574. package/esm/list-dropdown/list-dropdown-adapter.js +282 -0
  575. package/esm/list-dropdown/list-dropdown-aware-foundation.d.ts +40 -0
  576. package/esm/list-dropdown/list-dropdown-aware-foundation.js +62 -0
  577. package/esm/list-dropdown/list-dropdown-aware.d.ts +34 -0
  578. package/esm/list-dropdown/list-dropdown-aware.js +54 -0
  579. package/esm/list-dropdown/list-dropdown-constants.d.ts +101 -0
  580. package/esm/list-dropdown/list-dropdown-constants.js +39 -0
  581. package/esm/list-dropdown/list-dropdown-foundation.d.ts +64 -0
  582. package/esm/list-dropdown/list-dropdown-foundation.js +224 -0
  583. package/esm/list-dropdown/list-dropdown-utils.d.ts +35 -0
  584. package/esm/list-dropdown/list-dropdown-utils.js +347 -0
  585. package/esm/list-dropdown/list-dropdown.d.ts +63 -0
  586. package/esm/list-dropdown/list-dropdown.js +86 -0
  587. package/esm/menu/index.d.ts +10 -0
  588. package/esm/menu/index.js +14 -0
  589. package/esm/menu/menu-adapter.d.ts +67 -0
  590. package/esm/menu/menu-adapter.js +202 -0
  591. package/esm/menu/menu-constants.d.ts +59 -0
  592. package/esm/menu/menu-constants.js +48 -0
  593. package/esm/menu/menu-foundation.d.ts +101 -0
  594. package/esm/menu/menu-foundation.js +514 -0
  595. package/esm/menu/menu.d.ts +71 -0
  596. package/esm/menu/menu.js +136 -0
  597. package/esm/open-icon/index.d.ts +10 -0
  598. package/esm/open-icon/index.js +14 -0
  599. package/esm/open-icon/open-icon-adapter.d.ts +18 -0
  600. package/esm/open-icon/open-icon-adapter.js +27 -0
  601. package/esm/open-icon/open-icon-constants.d.ts +20 -0
  602. package/esm/open-icon/open-icon-constants.js +25 -0
  603. package/esm/open-icon/open-icon-foundation.d.ts +22 -0
  604. package/esm/open-icon/open-icon-foundation.js +35 -0
  605. package/esm/open-icon/open-icon.d.ts +29 -0
  606. package/esm/open-icon/open-icon.js +55 -0
  607. package/esm/page-state/index.d.ts +8 -0
  608. package/esm/page-state/index.js +12 -0
  609. package/esm/page-state/page-state-constants.d.ts +8 -0
  610. package/esm/page-state/page-state-constants.js +10 -0
  611. package/esm/page-state/page-state.d.ts +16 -0
  612. package/esm/page-state/page-state.js +23 -0
  613. package/esm/paginator/index.d.ts +10 -0
  614. package/esm/paginator/index.js +14 -0
  615. package/esm/paginator/paginator-adapter.d.ts +96 -0
  616. package/esm/paginator/paginator-adapter.js +149 -0
  617. package/esm/paginator/paginator-constants.d.ts +74 -0
  618. package/esm/paginator/paginator-constants.js +75 -0
  619. package/esm/paginator/paginator-foundation.d.ts +132 -0
  620. package/esm/paginator/paginator-foundation.js +402 -0
  621. package/esm/paginator/paginator.d.ts +59 -0
  622. package/esm/paginator/paginator.js +135 -0
  623. package/esm/popup/index.d.ts +10 -0
  624. package/esm/popup/index.js +14 -0
  625. package/esm/popup/popup-adapter.d.ts +43 -0
  626. package/esm/popup/popup-adapter.js +136 -0
  627. package/esm/popup/popup-constants.d.ts +54 -0
  628. package/esm/popup/popup-constants.js +52 -0
  629. package/esm/popup/popup-foundation.d.ts +68 -0
  630. package/esm/popup/popup-foundation.js +249 -0
  631. package/esm/popup/popup.d.ts +49 -0
  632. package/esm/popup/popup.js +94 -0
  633. package/esm/product-icon/index.d.ts +10 -0
  634. package/esm/product-icon/index.js +14 -0
  635. package/esm/product-icon/product-icon-adapter.d.ts +27 -0
  636. package/esm/product-icon/product-icon-adapter.js +50 -0
  637. package/esm/product-icon/product-icon-constants.d.ts +38 -0
  638. package/esm/product-icon/product-icon-constants.js +46 -0
  639. package/esm/product-icon/product-icon-foundation.d.ts +40 -0
  640. package/esm/product-icon/product-icon-foundation.js +116 -0
  641. package/esm/product-icon/product-icon.d.ts +32 -0
  642. package/esm/product-icon/product-icon.js +65 -0
  643. package/esm/profile-card/index.d.ts +10 -0
  644. package/esm/profile-card/index.js +14 -0
  645. package/esm/profile-card/profile-card-adapter.d.ts +46 -0
  646. package/esm/profile-card/profile-card-adapter.js +81 -0
  647. package/esm/profile-card/profile-card-constants.d.ts +33 -0
  648. package/esm/profile-card/profile-card-constants.js +39 -0
  649. package/esm/profile-card/profile-card-foundation.d.ts +48 -0
  650. package/esm/profile-card/profile-card-foundation.js +108 -0
  651. package/esm/profile-card/profile-card.d.ts +38 -0
  652. package/esm/profile-card/profile-card.js +94 -0
  653. package/esm/quantity-field/index.d.ts +11 -0
  654. package/esm/quantity-field/index.js +15 -0
  655. package/esm/quantity-field/quantity-field-adapter.d.ts +77 -0
  656. package/esm/quantity-field/quantity-field-adapter.js +225 -0
  657. package/esm/quantity-field/quantity-field-component-delegate.d.ts +44 -0
  658. package/esm/quantity-field/quantity-field-component-delegate.js +129 -0
  659. package/esm/quantity-field/quantity-field-constants.d.ts +35 -0
  660. package/esm/quantity-field/quantity-field-constants.js +41 -0
  661. package/esm/quantity-field/quantity-field-foundation.d.ts +36 -0
  662. package/esm/quantity-field/quantity-field-foundation.js +100 -0
  663. package/esm/quantity-field/quantity-field.d.ts +29 -0
  664. package/esm/quantity-field/quantity-field.js +89 -0
  665. package/esm/radio/index.d.ts +8 -0
  666. package/esm/radio/index.js +12 -0
  667. package/esm/radio/radio-adapter.d.ts +70 -0
  668. package/esm/radio/radio-adapter.js +250 -0
  669. package/esm/radio/radio-constants.d.ts +30 -0
  670. package/esm/radio/radio-constants.js +36 -0
  671. package/esm/radio/radio-foundation.d.ts +31 -0
  672. package/esm/radio/radio-foundation.js +80 -0
  673. package/esm/radio/radio.d.ts +31 -0
  674. package/esm/radio/radio.js +73 -0
  675. package/esm/ripple/forge-ripple.d.ts +11 -0
  676. package/esm/ripple/forge-ripple.js +10 -0
  677. package/esm/ripple/index.d.ts +11 -0
  678. package/esm/ripple/index.js +15 -0
  679. package/esm/ripple/ripple-adapter.d.ts +23 -0
  680. package/esm/ripple/ripple-adapter.js +47 -0
  681. package/esm/ripple/ripple-constants.d.ts +15 -0
  682. package/esm/ripple/ripple-constants.js +19 -0
  683. package/esm/ripple/ripple-foundation.d.ts +30 -0
  684. package/esm/ripple/ripple-foundation.js +48 -0
  685. package/esm/ripple/ripple.d.ts +31 -0
  686. package/esm/ripple/ripple.js +59 -0
  687. package/esm/scaffold/index.d.ts +8 -0
  688. package/esm/scaffold/index.js +12 -0
  689. package/esm/scaffold/scaffold-constants.d.ts +8 -0
  690. package/esm/scaffold/scaffold-constants.js +10 -0
  691. package/esm/scaffold/scaffold.d.ts +19 -0
  692. package/esm/scaffold/scaffold.js +26 -0
  693. package/esm/select/core/base-select-adapter.d.ts +68 -0
  694. package/esm/select/core/base-select-adapter.js +167 -0
  695. package/esm/select/core/base-select-constants.d.ts +28 -0
  696. package/esm/select/core/base-select-constants.js +22 -0
  697. package/esm/select/core/base-select-foundation.d.ts +137 -0
  698. package/esm/select/core/base-select-foundation.js +609 -0
  699. package/esm/select/core/base-select.d.ts +51 -0
  700. package/esm/select/core/base-select.js +67 -0
  701. package/esm/select/core/index.d.ts +10 -0
  702. package/esm/select/core/index.js +10 -0
  703. package/esm/select/core/select-utils.d.ts +18 -0
  704. package/esm/select/core/select-utils.js +27 -0
  705. package/esm/select/index.d.ts +20 -0
  706. package/esm/select/index.js +11 -0
  707. package/esm/select/option/index.d.ts +10 -0
  708. package/esm/select/option/index.js +14 -0
  709. package/esm/select/option/option-adapter.d.ts +17 -0
  710. package/esm/select/option/option-adapter.js +14 -0
  711. package/esm/select/option/option-constants.d.ts +21 -0
  712. package/esm/select/option/option-constants.js +24 -0
  713. package/esm/select/option/option-foundation.d.ts +67 -0
  714. package/esm/select/option/option-foundation.js +149 -0
  715. package/esm/select/option/option.d.ts +51 -0
  716. package/esm/select/option/option.js +122 -0
  717. package/esm/select/option-group/index.d.ts +8 -0
  718. package/esm/select/option-group/index.js +12 -0
  719. package/esm/select/option-group/option-group-constants.d.ts +11 -0
  720. package/esm/select/option-group/option-group-constants.js +14 -0
  721. package/esm/select/option-group/option-group.d.ts +26 -0
  722. package/esm/select/option-group/option-group.js +45 -0
  723. package/esm/select/select/index.d.ts +10 -0
  724. package/esm/select/select/index.js +14 -0
  725. package/esm/select/select/select-adapter.d.ts +85 -0
  726. package/esm/select/select/select-adapter.js +159 -0
  727. package/esm/select/select/select-constants.d.ts +37 -0
  728. package/esm/select/select/select-constants.js +42 -0
  729. package/esm/select/select/select-foundation.d.ts +96 -0
  730. package/esm/select/select/select-foundation.js +338 -0
  731. package/esm/select/select/select.d.ts +54 -0
  732. package/esm/select/select/select.js +129 -0
  733. package/esm/select/select-component-delegate.d.ts +30 -0
  734. package/esm/select/select-component-delegate.js +62 -0
  735. package/esm/select/select-dropdown/index.d.ts +10 -0
  736. package/esm/select/select-dropdown/index.js +14 -0
  737. package/esm/select/select-dropdown/select-dropdown-adapter.d.ts +36 -0
  738. package/esm/select/select-dropdown/select-dropdown-adapter.js +123 -0
  739. package/esm/select/select-dropdown/select-dropdown-constants.d.ts +16 -0
  740. package/esm/select/select-dropdown/select-dropdown-constants.js +21 -0
  741. package/esm/select/select-dropdown/select-dropdown-foundation.d.ts +35 -0
  742. package/esm/select/select-dropdown/select-dropdown-foundation.js +88 -0
  743. package/esm/select/select-dropdown/select-dropdown.d.ts +31 -0
  744. package/esm/select/select-dropdown/select-dropdown.js +83 -0
  745. package/esm/skeleton/index.d.ts +8 -0
  746. package/esm/skeleton/index.js +12 -0
  747. package/esm/skeleton/skeleton-constants.d.ts +8 -0
  748. package/esm/skeleton/skeleton-constants.js +10 -0
  749. package/esm/skeleton/skeleton.d.ts +16 -0
  750. package/esm/skeleton/skeleton.js +23 -0
  751. package/esm/slider/index.d.ts +9 -0
  752. package/esm/slider/index.js +13 -0
  753. package/esm/slider/slider-component-delegate.d.ts +27 -0
  754. package/esm/slider/slider-component-delegate.js +42 -0
  755. package/esm/slider/slider-constants.d.ts +41 -0
  756. package/esm/slider/slider-constants.js +38 -0
  757. package/esm/slider/slider.d.ts +92 -0
  758. package/esm/slider/slider.js +298 -0
  759. package/esm/stepper/core/stepper-utils.d.ts +51 -0
  760. package/esm/stepper/core/stepper-utils.js +139 -0
  761. package/esm/stepper/index.d.ts +7 -0
  762. package/esm/stepper/index.js +7 -0
  763. package/esm/stepper/step/index.d.ts +10 -0
  764. package/esm/stepper/step/index.js +14 -0
  765. package/esm/stepper/step/step-adapter.d.ts +76 -0
  766. package/esm/stepper/step/step-adapter.js +161 -0
  767. package/esm/stepper/step/step-constants.d.ts +76 -0
  768. package/esm/stepper/step/step-constants.js +82 -0
  769. package/esm/stepper/step/step-foundation.d.ts +78 -0
  770. package/esm/stepper/step/step-foundation.js +248 -0
  771. package/esm/stepper/step/step.d.ts +49 -0
  772. package/esm/stepper/step/step.js +127 -0
  773. package/esm/stepper/stepper/index.d.ts +10 -0
  774. package/esm/stepper/stepper/index.js +14 -0
  775. package/esm/stepper/stepper/stepper-adapter.d.ts +67 -0
  776. package/esm/stepper/stepper/stepper-adapter.js +148 -0
  777. package/esm/stepper/stepper/stepper-constants.d.ts +77 -0
  778. package/esm/stepper/stepper/stepper-constants.js +79 -0
  779. package/esm/stepper/stepper/stepper-foundation.d.ts +76 -0
  780. package/esm/stepper/stepper/stepper-foundation.js +292 -0
  781. package/esm/stepper/stepper/stepper.d.ts +44 -0
  782. package/esm/stepper/stepper/stepper.js +95 -0
  783. package/esm/switch/index.d.ts +9 -0
  784. package/esm/switch/index.js +13 -0
  785. package/esm/switch/switch-component-delegate.d.ts +32 -0
  786. package/esm/switch/switch-component-delegate.js +70 -0
  787. package/esm/switch/switch-constants.d.ts +26 -0
  788. package/esm/switch/switch-constants.js +31 -0
  789. package/esm/switch/switch.d.ts +53 -0
  790. package/esm/switch/switch.js +155 -0
  791. package/esm/table/index.d.ts +12 -0
  792. package/esm/table/index.js +16 -0
  793. package/esm/table/multi-sort-manager.d.ts +18 -0
  794. package/esm/table/multi-sort-manager.js +67 -0
  795. package/esm/table/table-adapter.d.ts +80 -0
  796. package/esm/table/table-adapter.js +120 -0
  797. package/esm/table/table-constants.d.ts +104 -0
  798. package/esm/table/table-constants.js +115 -0
  799. package/esm/table/table-foundation.d.ts +271 -0
  800. package/esm/table/table-foundation.js +918 -0
  801. package/esm/table/table-row.d.ts +13 -0
  802. package/esm/table/table-row.js +14 -0
  803. package/esm/table/table-utils.d.ts +389 -0
  804. package/esm/table/table-utils.js +1415 -0
  805. package/esm/table/table.d.ts +182 -0
  806. package/esm/table/table.js +290 -0
  807. package/esm/table/types.d.ts +157 -0
  808. package/esm/table/types.js +26 -0
  809. package/esm/tabs/index.d.ts +7 -0
  810. package/esm/tabs/index.js +7 -0
  811. package/esm/tabs/tab/index.d.ts +10 -0
  812. package/esm/tabs/tab/index.js +14 -0
  813. package/esm/tabs/tab/tab-adapter.d.ts +54 -0
  814. package/esm/tabs/tab/tab-adapter.js +103 -0
  815. package/esm/tabs/tab/tab-constants.d.ts +32 -0
  816. package/esm/tabs/tab/tab-constants.js +32 -0
  817. package/esm/tabs/tab/tab-foundation.d.ts +43 -0
  818. package/esm/tabs/tab/tab-foundation.js +98 -0
  819. package/esm/tabs/tab/tab.d.ts +42 -0
  820. package/esm/tabs/tab/tab.js +79 -0
  821. package/esm/tabs/tab-bar/index.d.ts +10 -0
  822. package/esm/tabs/tab-bar/index.js +14 -0
  823. package/esm/tabs/tab-bar/tab-bar-adapter.d.ts +98 -0
  824. package/esm/tabs/tab-bar/tab-bar-adapter.js +223 -0
  825. package/esm/tabs/tab-bar/tab-bar-constants.d.ts +64 -0
  826. package/esm/tabs/tab-bar/tab-bar-constants.js +79 -0
  827. package/esm/tabs/tab-bar/tab-bar-foundation.d.ts +96 -0
  828. package/esm/tabs/tab-bar/tab-bar-foundation.js +385 -0
  829. package/esm/tabs/tab-bar/tab-bar.d.ts +64 -0
  830. package/esm/tabs/tab-bar/tab-bar.js +123 -0
  831. package/esm/text-field/index.d.ts +11 -0
  832. package/esm/text-field/index.js +15 -0
  833. package/esm/text-field/text-field-adapter.d.ts +34 -0
  834. package/esm/text-field/text-field-adapter.js +109 -0
  835. package/esm/text-field/text-field-component-delegate.d.ts +45 -0
  836. package/esm/text-field/text-field-component-delegate.js +125 -0
  837. package/esm/text-field/text-field-constants.d.ts +21 -0
  838. package/esm/text-field/text-field-constants.js +25 -0
  839. package/esm/text-field/text-field-foundation.d.ts +14 -0
  840. package/esm/text-field/text-field-foundation.js +16 -0
  841. package/esm/text-field/text-field.d.ts +17 -0
  842. package/esm/text-field/text-field.js +26 -0
  843. package/esm/theme/color-constants.d.ts +313 -0
  844. package/esm/theme/color-constants.js +363 -0
  845. package/esm/theme/index.d.ts +7 -0
  846. package/esm/theme/index.js +7 -0
  847. package/esm/theme/theme-utils.d.ts +9 -0
  848. package/esm/theme/theme-utils.js +68 -0
  849. package/esm/time-picker/index.d.ts +12 -0
  850. package/esm/time-picker/index.js +16 -0
  851. package/esm/time-picker/time-picker-adapter.d.ts +80 -0
  852. package/esm/time-picker/time-picker-adapter.js +208 -0
  853. package/esm/time-picker/time-picker-component-delegate.d.ts +33 -0
  854. package/esm/time-picker/time-picker-component-delegate.js +68 -0
  855. package/esm/time-picker/time-picker-constants.d.ts +59 -0
  856. package/esm/time-picker/time-picker-constants.js +48 -0
  857. package/esm/time-picker/time-picker-foundation.d.ts +146 -0
  858. package/esm/time-picker/time-picker-foundation.js +814 -0
  859. package/esm/time-picker/time-picker-utils.d.ts +25 -0
  860. package/esm/time-picker/time-picker-utils.js +122 -0
  861. package/esm/time-picker/time-picker.d.ts +76 -0
  862. package/esm/time-picker/time-picker.js +198 -0
  863. package/esm/toast/index.d.ts +10 -0
  864. package/esm/toast/index.js +14 -0
  865. package/esm/toast/toast-adapter.d.ts +83 -0
  866. package/esm/toast/toast-adapter.js +146 -0
  867. package/esm/toast/toast-constants.d.ts +58 -0
  868. package/esm/toast/toast-constants.js +63 -0
  869. package/esm/toast/toast-foundation.d.ts +67 -0
  870. package/esm/toast/toast-foundation.js +150 -0
  871. package/esm/toast/toast.d.ts +49 -0
  872. package/esm/toast/toast.js +93 -0
  873. package/esm/toolbar/index.d.ts +8 -0
  874. package/esm/toolbar/index.js +12 -0
  875. package/esm/toolbar/toolbar-constants.d.ts +25 -0
  876. package/esm/toolbar/toolbar-constants.js +30 -0
  877. package/esm/toolbar/toolbar.d.ts +26 -0
  878. package/esm/toolbar/toolbar.js +58 -0
  879. package/esm/tooltip/index.d.ts +11 -0
  880. package/esm/tooltip/index.js +15 -0
  881. package/esm/tooltip/tooltip-adapter.d.ts +74 -0
  882. package/esm/tooltip/tooltip-adapter.js +127 -0
  883. package/esm/tooltip/tooltip-constants.d.ts +35 -0
  884. package/esm/tooltip/tooltip-constants.js +41 -0
  885. package/esm/tooltip/tooltip-foundation.d.ts +104 -0
  886. package/esm/tooltip/tooltip-foundation.js +251 -0
  887. package/esm/tooltip/tooltip-utils.d.ts +13 -0
  888. package/esm/tooltip/tooltip-utils.js +53 -0
  889. package/esm/tooltip/tooltip.d.ts +47 -0
  890. package/esm/tooltip/tooltip.js +80 -0
  891. package/esm/utils/color-utils.d.ts +14 -0
  892. package/esm/utils/color-utils.js +35 -0
  893. package/esm/utils/index.d.ts +6 -0
  894. package/esm/utils/index.js +6 -0
  895. package/esm/view-switcher/index.d.ts +11 -0
  896. package/esm/view-switcher/index.js +15 -0
  897. package/esm/view-switcher/view/index.d.ts +8 -0
  898. package/esm/view-switcher/view/index.js +12 -0
  899. package/esm/view-switcher/view/view-constants.d.ts +8 -0
  900. package/esm/view-switcher/view/view-constants.js +10 -0
  901. package/esm/view-switcher/view/view.d.ts +16 -0
  902. package/esm/view-switcher/view/view.js +23 -0
  903. package/esm/view-switcher/view-switcher-adapter.d.ts +93 -0
  904. package/esm/view-switcher/view-switcher-adapter.js +281 -0
  905. package/esm/view-switcher/view-switcher-constants.d.ts +38 -0
  906. package/esm/view-switcher/view-switcher-constants.js +43 -0
  907. package/esm/view-switcher/view-switcher-foundation.d.ts +38 -0
  908. package/esm/view-switcher/view-switcher-foundation.js +122 -0
  909. package/esm/view-switcher/view-switcher.d.ts +40 -0
  910. package/esm/view-switcher/view-switcher.js +73 -0
  911. package/package.json +22 -0
  912. package/styles/app-bar/_mixins.scss +242 -0
  913. package/styles/app-bar/_variables.scss +34 -0
  914. package/styles/app-bar/app-bar.scss +22 -0
  915. package/styles/app-bar/search/_mixins.scss +238 -0
  916. package/styles/app-bar/search/_variables.scss +18 -0
  917. package/styles/app-bar/search/app-bar-search.scss +16 -0
  918. package/styles/autocomplete/autocomplete.scss +12 -0
  919. package/styles/avatar/_mixins.scss +46 -0
  920. package/styles/avatar/_variables.scss +16 -0
  921. package/styles/avatar/avatar.scss +16 -0
  922. package/styles/backdrop/_mixins.scss +31 -0
  923. package/styles/backdrop/_variables.scss +12 -0
  924. package/styles/backdrop/backdrop.scss +32 -0
  925. package/styles/badge/_mixins.scss +121 -0
  926. package/styles/badge/_variables.scss +87 -0
  927. package/styles/badge/badge.scss +40 -0
  928. package/styles/banner/_mixins.scss +219 -0
  929. package/styles/banner/_variables.scss +88 -0
  930. package/styles/banner/banner.scss +24 -0
  931. package/styles/bottom-sheet/_mixins.scss +98 -0
  932. package/styles/bottom-sheet/_variables.scss +7 -0
  933. package/styles/bottom-sheet/bottom-sheet.scss +21 -0
  934. package/styles/busy-indicator/_mixins.scss +184 -0
  935. package/styles/busy-indicator/_variables.scss +9 -0
  936. package/styles/busy-indicator/busy-indicator.scss +23 -0
  937. package/styles/busy-indicator/forge-busy-indicator.scss +8 -0
  938. package/styles/button/_button-base.scss +183 -0
  939. package/styles/button/_button-filled-theme.scss +60 -0
  940. package/styles/button/_button-filled.scss +71 -0
  941. package/styles/button/_button-outlined-theme.scss +175 -0
  942. package/styles/button/_button-outlined.scss +76 -0
  943. package/styles/button/_button-protected-theme.scss +60 -0
  944. package/styles/button/_button-protected.scss +88 -0
  945. package/styles/button/_button-ripple.scss +69 -0
  946. package/styles/button/_button-shared-theme.scss +447 -0
  947. package/styles/button/_button-text-theme.scss +60 -0
  948. package/styles/button/_button-text.scss +57 -0
  949. package/styles/button/_button.mixins.scss +148 -0
  950. package/styles/button/_mixins.scss +183 -0
  951. package/styles/button/forge-button.scss +9 -0
  952. package/styles/button-toggle/button-toggle/_mixins.scss +98 -0
  953. package/styles/button-toggle/button-toggle/button-toggle.scss +35 -0
  954. package/styles/button-toggle/button-toggle-group/_mixins.scss +79 -0
  955. package/styles/button-toggle/button-toggle-group/button-toggle-group.scss +16 -0
  956. package/styles/calendar/_mixins.scss +440 -0
  957. package/styles/calendar/_variables.scss +79 -0
  958. package/styles/calendar/calendar-menu/_mixins.scss +419 -0
  959. package/styles/calendar/calendar-menu/_variables.scss +10 -0
  960. package/styles/calendar/calendar-menu/calendar-menu.scss +22 -0
  961. package/styles/calendar/calendar.scss +26 -0
  962. package/styles/card/_mixins.scss +45 -0
  963. package/styles/card/_variables.scss +9 -0
  964. package/styles/card/card.scss +16 -0
  965. package/styles/checkbox/_checkbox-custom-properties.scss +11 -0
  966. package/styles/checkbox/_checkbox-theme.scss +577 -0
  967. package/styles/checkbox/_checkbox.mixins.scss +595 -0
  968. package/styles/checkbox/checkbox.scss +19 -0
  969. package/styles/chip-field/_base.scss +298 -0
  970. package/styles/chip-field/_core.scss +25 -0
  971. package/styles/chip-field/_mixins.scss +26 -0
  972. package/styles/chip-field/_selector.scss +229 -0
  973. package/styles/chip-field/_variables.scss +76 -0
  974. package/styles/chip-field/chip-field.scss +16 -0
  975. package/styles/chips/chip/_mixins.scss +277 -0
  976. package/styles/chips/chip/_variables.scss +7 -0
  977. package/styles/chips/chip/chip.scss +22 -0
  978. package/styles/chips/chip-set/_mixins.scss +40 -0
  979. package/styles/chips/chip-set/_variables.scss +6 -0
  980. package/styles/chips/chip-set/chip-set.scss +16 -0
  981. package/styles/circular-progress/_keyframes.scss +185 -0
  982. package/styles/circular-progress/_mixins.scss +320 -0
  983. package/styles/circular-progress/_variables.scss +50 -0
  984. package/styles/circular-progress/circular-progress.scss +9 -0
  985. package/styles/color-picker/_mixins.scss +231 -0
  986. package/styles/color-picker/_variables.scss +6 -0
  987. package/styles/color-picker/color-picker.scss +21 -0
  988. package/styles/date-picker/date-picker.scss +12 -0
  989. package/styles/date-range-picker/date-range-picker.scss +12 -0
  990. package/styles/dialog/_mixins.scss +199 -0
  991. package/styles/dialog/_variables.scss +22 -0
  992. package/styles/dialog/dialog.scss +16 -0
  993. package/styles/dialog/forge-dialog-utils.scss +31 -0
  994. package/styles/dialog/forge-dialog.scss +8 -0
  995. package/styles/divider/_mixins.scss +47 -0
  996. package/styles/divider/_variables.scss +7 -0
  997. package/styles/divider/divider.scss +31 -0
  998. package/styles/drawer/base/_mixins.scss +137 -0
  999. package/styles/drawer/base/_variables.scss +11 -0
  1000. package/styles/drawer/drawer/_mixins.scss +10 -0
  1001. package/styles/drawer/drawer/_variables.scss +12 -0
  1002. package/styles/drawer/drawer/drawer.scss +25 -0
  1003. package/styles/drawer/mini-drawer/_mixins.scss +66 -0
  1004. package/styles/drawer/mini-drawer/_variables.scss +7 -0
  1005. package/styles/drawer/mini-drawer/mini-drawer.scss +40 -0
  1006. package/styles/drawer/modal-drawer/_mixins.scss +69 -0
  1007. package/styles/drawer/modal-drawer/modal-drawer.scss +8 -0
  1008. package/styles/expansion-panel/_mixins.scss +87 -0
  1009. package/styles/expansion-panel/expansion-panel.scss +16 -0
  1010. package/styles/expansion-panel/forge-expansion-panel.scss +16 -0
  1011. package/styles/field/_base.scss +622 -0
  1012. package/styles/field/_core.scss +61 -0
  1013. package/styles/field/_selector.scss +560 -0
  1014. package/styles/field/_utils.scss +48 -0
  1015. package/styles/field/_variables.scss +126 -0
  1016. package/styles/file-picker/_mixins.scss +153 -0
  1017. package/styles/file-picker/_variables.scss +8 -0
  1018. package/styles/file-picker/file-picker.scss +16 -0
  1019. package/styles/floating-action-button/_extended-fab-theme.scss +238 -0
  1020. package/styles/floating-action-button/_fab-custom-properties.scss +29 -0
  1021. package/styles/floating-action-button/_fab-theme.scss +541 -0
  1022. package/styles/floating-action-button/_fab.mixins.scss +351 -0
  1023. package/styles/floating-action-button/forge-floating-action-button.scss +16 -0
  1024. package/styles/floating-label/_mixins.scss +291 -0
  1025. package/styles/floating-label/_variables.scss +15 -0
  1026. package/styles/floating-label/forge-floating-label.scss +8 -0
  1027. package/styles/forge-core.scss +14 -0
  1028. package/styles/forge-dark.scss +10 -0
  1029. package/styles/forge.scss +26 -0
  1030. package/styles/form-field/_mixins.scss +71 -0
  1031. package/styles/form-field/forge-form-field.scss +8 -0
  1032. package/styles/icon/_mixins.scss +37 -0
  1033. package/styles/icon/_variables.scss +10 -0
  1034. package/styles/icon/icon.scss +26 -0
  1035. package/styles/icon-button/_mixins.scss +345 -0
  1036. package/styles/icon-button/_variables.scss +42 -0
  1037. package/styles/icon-button/forge-icon-button.scss +8 -0
  1038. package/styles/inline-message/_mixins.scss +82 -0
  1039. package/styles/inline-message/_variables.scss +67 -0
  1040. package/styles/inline-message/inline-message.scss +18 -0
  1041. package/styles/label-value/_base.scss +252 -0
  1042. package/styles/label-value/_core.scss +15 -0
  1043. package/styles/label-value/_mixins.scss +15 -0
  1044. package/styles/label-value/_selector.scss +167 -0
  1045. package/styles/label-value/_variables.scss +37 -0
  1046. package/styles/label-value/label-value.scss +17 -0
  1047. package/styles/linear-progress/_mixins.scss +11 -0
  1048. package/styles/linear-progress/_variables.scss +15 -0
  1049. package/styles/linear-progress/linear-progress.scss +40 -0
  1050. package/styles/list/list/_mixins.scss +45 -0
  1051. package/styles/list/list/list.scss +16 -0
  1052. package/styles/list/list-item/_mixins.scss +392 -0
  1053. package/styles/list/list-item/_variables.scss +25 -0
  1054. package/styles/list/list-item/list-item.scss +30 -0
  1055. package/styles/menu/menu.scss +12 -0
  1056. package/styles/open-icon/_mixins.scss +39 -0
  1057. package/styles/open-icon/_variables.scss +8 -0
  1058. package/styles/open-icon/open-icon.scss +16 -0
  1059. package/styles/page-state/_mixins.scss +123 -0
  1060. package/styles/page-state/_variables.scss +9 -0
  1061. package/styles/page-state/page-state.scss +17 -0
  1062. package/styles/paginator/_mixins.scss +136 -0
  1063. package/styles/paginator/_variables.scss +6 -0
  1064. package/styles/paginator/paginator.scss +21 -0
  1065. package/styles/popup/_mixins.scss +86 -0
  1066. package/styles/popup/_variables.scss +7 -0
  1067. package/styles/popup/forge-popup.scss +8 -0
  1068. package/styles/popup/popup.scss +16 -0
  1069. package/styles/product-icon/_mixins.scss +49 -0
  1070. package/styles/product-icon/_variables.scss +7 -0
  1071. package/styles/product-icon/product-icon.scss +16 -0
  1072. package/styles/profile-card/_mixins.scss +83 -0
  1073. package/styles/profile-card/profile-card.scss +22 -0
  1074. package/styles/quantity-field/_mixins.scss +116 -0
  1075. package/styles/quantity-field/forge-quantity-field.scss +18 -0
  1076. package/styles/quantity-field/quantity-field.scss +16 -0
  1077. package/styles/radio/_mixins.scss +309 -0
  1078. package/styles/radio/_radio-theme.scss +314 -0
  1079. package/styles/radio/radio.scss +19 -0
  1080. package/styles/ripple/forge-ripple.scss +17 -0
  1081. package/styles/scaffold/_mixins.scss +194 -0
  1082. package/styles/scaffold/forge-scaffold.scss +43 -0
  1083. package/styles/scaffold/scaffold.scss +21 -0
  1084. package/styles/select/select/_base.scss +84 -0
  1085. package/styles/select/select/_core.scss +23 -0
  1086. package/styles/select/select/_mixins.scss +25 -0
  1087. package/styles/select/select/_selector.scss +88 -0
  1088. package/styles/select/select/_variables.scss +16 -0
  1089. package/styles/select/select/select.scss +17 -0
  1090. package/styles/select/select-dropdown/select-dropdown.scss +8 -0
  1091. package/styles/skeleton/_mixins.scss +132 -0
  1092. package/styles/skeleton/_variables.scss +45 -0
  1093. package/styles/skeleton/skeleton.scss +18 -0
  1094. package/styles/slider/slider.scss +33 -0
  1095. package/styles/stepper/step/_mixins.scss +416 -0
  1096. package/styles/stepper/step/_variables.scss +21 -0
  1097. package/styles/stepper/step/step.scss +164 -0
  1098. package/styles/stepper/stepper/_mixins.scss +113 -0
  1099. package/styles/stepper/stepper/stepper.scss +22 -0
  1100. package/styles/switch/_switch-mixins.scss +301 -0
  1101. package/styles/switch/_switch-theme.scss +701 -0
  1102. package/styles/switch/switch.scss +80 -0
  1103. package/styles/table/_mixins.scss +527 -0
  1104. package/styles/table/_variables.scss +57 -0
  1105. package/styles/table/forge-table.scss +12 -0
  1106. package/styles/tabs/tab/_mixins.scss +165 -0
  1107. package/styles/tabs/tab/_variables.scss +9 -0
  1108. package/styles/tabs/tab/tab.scss +30 -0
  1109. package/styles/tabs/tab-bar/_mixins.scss +78 -0
  1110. package/styles/tabs/tab-bar/tab-bar.scss +19 -0
  1111. package/styles/text-field/_base.scss +76 -0
  1112. package/styles/text-field/_core.scss +19 -0
  1113. package/styles/text-field/_mixins.scss +28 -0
  1114. package/styles/text-field/_selector.scss +57 -0
  1115. package/styles/text-field/_variables.scss +20 -0
  1116. package/styles/text-field/text-field.scss +17 -0
  1117. package/styles/theme/_custom-properties.scss +311 -0
  1118. package/styles/theme/_icon-mixins.scss +62 -0
  1119. package/styles/theme/_index.scss +7 -0
  1120. package/styles/theme/_keys.scss +477 -0
  1121. package/styles/theme/_theme-dark.scss +47 -0
  1122. package/styles/theme/_theme-utils.scss +23 -0
  1123. package/styles/theme/_theme-values.scss +244 -0
  1124. package/styles/theme/_theme.scss +353 -0
  1125. package/styles/theme/forge-material-icons.scss +19 -0
  1126. package/styles/theme/forge-theme.scss +9 -0
  1127. package/styles/time-picker/time-picker.scss +12 -0
  1128. package/styles/toast/_mixins.scss +242 -0
  1129. package/styles/toast/_variables.scss +52 -0
  1130. package/styles/toast/toast.scss +18 -0
  1131. package/styles/toolbar/_mixins.scss +79 -0
  1132. package/styles/toolbar/_variables.scss +10 -0
  1133. package/styles/toolbar/toolbar.scss +28 -0
  1134. package/styles/tooltip/_mixins.scss +98 -0
  1135. package/styles/tooltip/_variables.scss +18 -0
  1136. package/styles/tooltip/forge-tooltip.scss +12 -0
  1137. package/styles/typography/_index.scss +7 -0
  1138. package/styles/typography/_mixins.scss +93 -0
  1139. package/styles/typography/_variables.scss +100 -0
  1140. package/styles/typography/forge-form.scss +67 -0
  1141. package/styles/typography/forge-typography.scss +9 -0
  1142. package/styles/utils/_functions-grid.scss +8 -0
  1143. package/styles/utils/_mixins-animation.scss +37 -0
  1144. package/styles/utils/_mixins-core.scss +18 -0
  1145. package/styles/utils/_mixins-flex.scss +53 -0
  1146. package/styles/utils/_mixins-grid.scss +29 -0
  1147. package/styles/utils/_mixins-media.scss +38 -0
  1148. package/styles/utils/_mixins.scss +45 -0
  1149. package/styles/utils/_variables-flex.scss +30 -0
  1150. package/styles/utils/_variables-grid.scss +9 -0
  1151. package/styles/utils/_variables-media.scss +11 -0
  1152. package/styles/utils/forge-flex.scss +30 -0
  1153. package/styles/utils/forge-grid.scss +54 -0
  1154. package/styles/utils/forge-utils.scss +45 -0
  1155. package/styles/view-switcher/_mixins.scss +49 -0
  1156. package/styles/view-switcher/_variables.scss +6 -0
  1157. package/styles/view-switcher/view/view.scss +12 -0
  1158. package/styles/view-switcher/view-switcher.scss +32 -0
@@ -0,0 +1,1415 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022 Tyler Technologies, Inc.
4
+ * License: Apache-2.0
5
+ */
6
+ import { addClass, createPredicate, debounce, findWhere, getPropertyValue, isDefined, isFunction, isNumber, isObject, isString, removeAllChildren, removeClass, removeElement, replaceElement, safeCssWidth, toggleClass } from '@tylertech/forge-core';
7
+ import { CHECKBOX_CONSTANTS } from '../checkbox';
8
+ import { EXPANSION_PANEL_CONSTANTS } from '../expansion-panel';
9
+ import { TOOLTIP_CONSTANTS } from '../tooltip';
10
+ import { TABLE_CONSTANTS } from './table-constants';
11
+ import { CellAlign, SortDirection } from './types';
12
+ import { ICON_CONSTANTS } from '../icon';
13
+ import { FormFieldComponentDelegate } from '../core/delegates/form-field-component-delegate';
14
+ function isTemplateResultObject(val) {
15
+ return val && typeof val === 'object' && 'content' in val;
16
+ }
17
+ /**
18
+ * Provides facilities for creating and manipulating a table component.
19
+ */
20
+ export class TableUtils {
21
+ /**
22
+ * Creates a table using the provided configuration.
23
+ * @param {ITableConfiguration} configuration The table configuration.
24
+ */
25
+ static createTable(configuration) {
26
+ // Reset the table back to its original unpopulated state
27
+ TableUtils._resetTable(configuration.tableElement);
28
+ // Create the header and body rows
29
+ const thead = TableUtils._createTableHead(configuration);
30
+ const tbody = TableUtils._createTableBody(configuration);
31
+ // If we are allowing click events on the table rows then attach the row click listeners and attributes
32
+ if (configuration.clickListener) {
33
+ TableUtils._attachRowClickListeners(tbody, configuration.clickListener, configuration.doubleClickListener);
34
+ TableUtils._addRowClickAttributes(tbody);
35
+ }
36
+ // Set the fixed state
37
+ if (configuration.fixedHeaders) {
38
+ TableUtils.setFixedHeaders(configuration);
39
+ }
40
+ // Set the resizable state
41
+ if (configuration.resizable) {
42
+ TableUtils.setResizable(configuration);
43
+ }
44
+ // Set the dense state
45
+ if (configuration.dense) {
46
+ TableUtils.setDenseState(configuration.tableElement, configuration.dense);
47
+ }
48
+ // Set the wrap state
49
+ if (configuration.wrapContent) {
50
+ TableUtils.setWrapContentState(configuration.tableElement, configuration.wrapContent);
51
+ }
52
+ // Add the select column
53
+ if (configuration.selectListener) {
54
+ TableUtils._addSelectColumn(thead, tbody, configuration.selectListener, configuration.selectAllListener, configuration.selectAllTemplate, configuration.selectCheckboxAlignment, configuration.data, configuration.tooltipSelect, configuration.tooltipSelectAll);
55
+ }
56
+ if (configuration.resizable || configuration.columnConfigurations.some(c => !!c.sortable)) {
57
+ TableUtils._attachHeadRowMouseDownListener(thead, configuration.headRowMouseDownListener);
58
+ if (TableUtils._isMac()) {
59
+ TableUtils._attachHeadRowContextMenuListener(thead, configuration.headRowContextMenuListener);
60
+ }
61
+ }
62
+ TableUtils.setLayoutType(configuration);
63
+ TableUtils._setTableHead(configuration.tableElement, thead);
64
+ // Add the filter row (must come after adding the select column and table head)
65
+ if (configuration.filter) {
66
+ TableUtils.setFilterRow(configuration);
67
+ }
68
+ TableUtils._setTableBody(configuration.tableElement, tbody);
69
+ }
70
+ static _setTableHead(tableElement, thead) {
71
+ if (tableElement.tHead) {
72
+ replaceElement(thead, tableElement.tHead);
73
+ }
74
+ else {
75
+ tableElement.appendChild(thead);
76
+ }
77
+ }
78
+ static _setTableBody(tableElement, tbody) {
79
+ if (tableElement.tBodies.length) {
80
+ replaceElement(tbody, tableElement.tBodies[0]);
81
+ }
82
+ else {
83
+ tableElement.appendChild(tbody);
84
+ }
85
+ }
86
+ /**
87
+ * Destroys and recreates the table body section only.
88
+ * @param {ITableConfiguration} configuration The table configuration.
89
+ */
90
+ static recreateTableBody(configuration) {
91
+ // Create the table body
92
+ const tbody = TableUtils._createTableBody(configuration);
93
+ // If we are allowing click events on the table rows then attach the row click listeners
94
+ if (configuration.clickListener) {
95
+ TableUtils._attachRowClickListeners(tbody, configuration.clickListener, configuration.doubleClickListener);
96
+ }
97
+ // Add the select column if necessary
98
+ if (configuration.selectListener) {
99
+ TableUtils._createBodySelectColumn(tbody, configuration.selectCheckboxAlignment, configuration.data, configuration.tooltipSelect, configuration.tooltipSelectAll);
100
+ TableUtils._attachRowSelectListeners(tbody, configuration.selectListener);
101
+ }
102
+ TableUtils._setTableBody(configuration.tableElement, tbody);
103
+ }
104
+ /**
105
+ * Removes all DOM nodes from the table.
106
+ * @param {HTMLTableElement} tableElement The table element to remove all children from.
107
+ */
108
+ static _resetTable(tableElement) {
109
+ removeAllChildren(tableElement);
110
+ }
111
+ /**
112
+ * Creates a `forge-tooltip` for multi sort column headers
113
+ */
114
+ static _createMultisortTooltip() {
115
+ const tooltip = document.createElement(TOOLTIP_CONSTANTS.elementName);
116
+ tooltip.textContent = 'Ctrl + click to sort multiple columns';
117
+ tooltip.position = 'bottom';
118
+ tooltip.delay = 0;
119
+ return tooltip;
120
+ }
121
+ /**
122
+ * Creates the table header section by adding a row for the column headers based on column configuration.
123
+ * @param columnDataMap The column based data map.
124
+ * @param tableElement The table element.
125
+ */
126
+ static _createTableHead(tableConfiguration) {
127
+ const thead = document.createElement('thead');
128
+ // Create the table head row for our column headers with required class
129
+ const tr = thead.insertRow();
130
+ addClass([TABLE_CONSTANTS.classes.TABLE_ROW, TABLE_CONSTANTS.classes.TABLE_HEAD_ROW], tr);
131
+ // We use this to determine if the initial sort column has already been set during the loop.
132
+ // We set the initial sort to the first column that requests it.
133
+ let setInitialSort = false;
134
+ // Create a header cell for each column in our column data map
135
+ for (let i = 0; i < tableConfiguration.columnConfigurations.length; i++) {
136
+ const columnConfig = tableConfiguration.columnConfigurations[i];
137
+ // Create the th element with required classes
138
+ const th = document.createElement('th');
139
+ th.scope = 'col';
140
+ addClass([TABLE_CONSTANTS.classes.TABLE_CELL, TABLE_CONSTANTS.classes.TABLE_HEAD_CELL], th);
141
+ // We wrap the header text in a div for ease of alignment
142
+ const cellContainer = document.createElement('div');
143
+ cellContainer.classList.add(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_CONTAINER);
144
+ // Add tooltip for multisort
145
+ if (tableConfiguration.multiColumnSort) {
146
+ const tooltip = TableUtils._createMultisortTooltip();
147
+ cellContainer.appendChild(tooltip);
148
+ }
149
+ // Set the cell alignment from config
150
+ if (columnConfig.align) {
151
+ TableUtils._setCellAlignmentClass(cellContainer, columnConfig.align);
152
+ }
153
+ // Check if width was specified
154
+ if (isDefined(columnConfig.width)) {
155
+ const width = safeCssWidth(columnConfig.width);
156
+ if (width) {
157
+ th.style.width = width;
158
+ }
159
+ }
160
+ // Check if the resizable column handle should be appended
161
+ if (tableConfiguration.resizable && columnConfig.resizable !== false) {
162
+ const resizeHandle = document.createElement('div');
163
+ resizeHandle.classList.add(TABLE_CONSTANTS.classes.TABLE_RESIZE_HANDLE);
164
+ th.appendChild(resizeHandle);
165
+ }
166
+ // Check if we were provided any inline style declarations and apply to th AND wrapper content div
167
+ if (isDefined(columnConfig.headerCellStyle) && isObject(columnConfig.headerCellStyle)) {
168
+ Object.assign(th.style, columnConfig.headerCellStyle);
169
+ Object.assign(cellContainer.style, columnConfig.headerCellStyle);
170
+ }
171
+ const span = document.createElement('span');
172
+ span.classList.add(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_TEXT);
173
+ span.textContent = columnConfig.header && typeof columnConfig.header === 'string' ? columnConfig.header.trim() : '';
174
+ // Add the sort icon if this column is sortable
175
+ if (columnConfig.sortable) {
176
+ th.classList.add(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORTABLE);
177
+ const sortOrderElement = document.createElement('span');
178
+ addClass([TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORT_ORDER_HIDDEN, TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORT_ORDER], sortOrderElement);
179
+ const iconElement = document.createElement(ICON_CONSTANTS.elementName);
180
+ iconElement.name = TABLE_CONSTANTS.icons.SORT_DOWN;
181
+ addClass([TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORT_ICON], iconElement);
182
+ // Ignore the initial sort when multi column sort is enabled
183
+ if (tableConfiguration.multiColumnSort) {
184
+ if (typeof columnConfig.initialSort === 'object' && columnConfig.initialSort.sortOrder) {
185
+ sortOrderElement.textContent = columnConfig.initialSort.sortOrder.toString();
186
+ if (tableConfiguration.columnConfigurations.filter(c => typeof c.initialSort === 'object').length > 1) {
187
+ removeClass(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORT_ORDER_HIDDEN, sortOrderElement);
188
+ }
189
+ th.classList.add(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORTED_DESCENDING);
190
+ iconElement.classList.add(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORT_ICON_ACTIVE);
191
+ TableUtils._setColumnSortDirection(th, columnConfig.initialSort.direction);
192
+ }
193
+ }
194
+ else {
195
+ if (tableConfiguration.sortedColumn === i && !setInitialSort && !tableConfiguration.multiColumnSort) {
196
+ th.classList.add(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORTED_DESCENDING);
197
+ iconElement.classList.add(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORT_ICON_ACTIVE);
198
+ TableUtils._setColumnSortDirection(th, tableConfiguration.sortDirection);
199
+ setInitialSort = true;
200
+ }
201
+ }
202
+ cellContainer.appendChild(iconElement);
203
+ cellContainer.appendChild(sortOrderElement);
204
+ }
205
+ if (typeof columnConfig.headerTemplate === 'function') {
206
+ Promise.resolve(columnConfig.headerTemplate(i, cellContainer, columnConfig)).then(element => {
207
+ if (element) {
208
+ const node = document.createElement('div');
209
+ addClass(TABLE_CONSTANTS.classes.TABLE_CELL_CONTAINER, node);
210
+ if (typeof element === 'string') {
211
+ node.innerHTML = element;
212
+ }
213
+ else {
214
+ TableUtils._prepend(element, node);
215
+ }
216
+ node.setAttribute(TABLE_CONSTANTS.attributes.CUSTOM_CELL_TEMPLATE, '');
217
+ TableUtils._prepend(node, cellContainer);
218
+ }
219
+ });
220
+ }
221
+ else {
222
+ TableUtils._prepend(span, cellContainer);
223
+ }
224
+ th.appendChild(cellContainer);
225
+ tr.appendChild(th);
226
+ }
227
+ return thead;
228
+ }
229
+ /**
230
+ * Sets the sort direction on the table to the provided column.
231
+ * @param tableElement
232
+ * @param columnIndex
233
+ * @param sortDirection
234
+ */
235
+ static setSortDirection(tableElement, columnIndex, sortDirection) {
236
+ const cell = TableUtils._getHeaderCellByIndex(tableElement, columnIndex);
237
+ TableUtils._setColumnSortDirection(cell, sortDirection);
238
+ }
239
+ /**
240
+ * Sets the sort direction on the provided table header cell element.
241
+ * @param thElement
242
+ * @param sortDirection
243
+ */
244
+ static _setColumnSortDirection(thElement, sortDirection) {
245
+ if (thElement.classList.contains(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORTED_ASCENDING)) {
246
+ thElement.classList.remove(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORTED_ASCENDING);
247
+ }
248
+ if (thElement.classList.contains(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORTED_DESCENDING)) {
249
+ thElement.classList.remove(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORTED_DESCENDING);
250
+ }
251
+ if (!sortDirection || sortDirection === SortDirection.Descending) {
252
+ thElement.classList.add(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORTED_DESCENDING);
253
+ }
254
+ else {
255
+ thElement.classList.add(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORTED_ASCENDING);
256
+ }
257
+ }
258
+ /**
259
+ * Creates the table body section by adding rows/cells for our data/column configuration.
260
+ * @param columnDataMap The column based data map.
261
+ * @param tableElement The table element.
262
+ */
263
+ static _createTableBody(configuration) {
264
+ const tbody = document.createElement('tbody');
265
+ const rowData = TableUtils._getOrderedRowData(configuration.columnConfigurations, configuration.data);
266
+ // Create the rows
267
+ rowData.forEach((cellData, rowIndex) => {
268
+ const tr = tbody.insertRow();
269
+ addClass([TABLE_CONSTANTS.classes.TABLE_ROW, TABLE_CONSTANTS.classes.TABLE_BODY_ROW], tr);
270
+ // Create the row data cells
271
+ TableUtils._populateRowCells(configuration, tr, cellData, rowIndex);
272
+ // Check if we need to call the row created callback to give consumers a chance to modify the new row element
273
+ if (typeof configuration.rowCreatedCallback === 'function') {
274
+ configuration.rowCreatedCallback(tr, rowIndex, Object.assign({}, configuration.data[rowIndex].data));
275
+ }
276
+ });
277
+ return tbody;
278
+ }
279
+ /**
280
+ * Populates a table row element with provided data.
281
+ * @param configuration
282
+ * @param tr
283
+ * @param cellData
284
+ * @param rowIndex
285
+ */
286
+ static _populateRowCells(configuration, tr, cellData, rowIndex) {
287
+ for (let i = 0; i < cellData.length; i++) {
288
+ // Find the configuration for this column
289
+ const columnConfig = configuration.columnConfigurations[i];
290
+ // Create the row data cell with required classes
291
+ const td = tr.insertCell();
292
+ addClass([TABLE_CONSTANTS.classes.TABLE_CELL, TABLE_CONSTANTS.classes.TABLE_BODY_CELL], td);
293
+ // Check if width was specified
294
+ if (isDefined(columnConfig.width)) {
295
+ const width = safeCssWidth(columnConfig.width);
296
+ if (width) {
297
+ td.style.width = width;
298
+ }
299
+ }
300
+ // We wrap the value in a div to allow for flex styling
301
+ const div = document.createElement('div');
302
+ div.classList.add(TABLE_CONSTANTS.classes.TABLE_CELL_CONTAINER);
303
+ // Check if we were provided any inline style declarations and apply to BOTH td and content wrapper div
304
+ if (isDefined(columnConfig.cellStyle) && isObject(columnConfig.cellStyle)) {
305
+ Object.assign(td.style, columnConfig.cellStyle);
306
+ Object.assign(div.style, columnConfig.cellStyle);
307
+ }
308
+ // Add the cell content. If there is a template function, then use that.
309
+ // Otherwise use the property to go get the value from the row data...
310
+ if (columnConfig.template && typeof columnConfig.template === 'function') {
311
+ const rowData = configuration.data[rowIndex] ? configuration.data[rowIndex].data : undefined;
312
+ Promise.resolve(columnConfig.template(rowIndex, div, rowData)).then(result => {
313
+ const config = isTemplateResultObject(result) ? result : { content: result, stopClickPropagation: columnConfig.stopCellTemplateClickPropagation };
314
+ if (!config.content) {
315
+ return;
316
+ }
317
+ if (typeof config.content === 'string') {
318
+ div.innerHTML = config.content;
319
+ }
320
+ else {
321
+ div.appendChild(config.content);
322
+ }
323
+ div.setAttribute(TABLE_CONSTANTS.attributes.CUSTOM_CELL_TEMPLATE, '');
324
+ if (config.stopClickPropagation) {
325
+ div.setAttribute(TABLE_CONSTANTS.attributes.CUSTOM_CELL_TEMPLATE_STOP_PROPAGATION, '');
326
+ }
327
+ });
328
+ }
329
+ else if (columnConfig.property) {
330
+ // Place the text content in a span
331
+ const span = document.createElement('span');
332
+ span.classList.add(TABLE_CONSTANTS.classes.TABLE_CELL_CONTAINER_TEXT);
333
+ div.appendChild(span);
334
+ if (columnConfig.transform && typeof columnConfig.transform === 'function') {
335
+ Promise.resolve(columnConfig.transform(cellData[i])).then(value => span.textContent = value);
336
+ }
337
+ else {
338
+ if (cellData[i] === undefined || cellData[i] === null) {
339
+ span.textContent = '';
340
+ }
341
+ else {
342
+ span.textContent = cellData[i].toString();
343
+ }
344
+ }
345
+ }
346
+ // Set the cell alignment from config
347
+ if (columnConfig.align) {
348
+ TableUtils._setCellAlignmentClass(div, columnConfig.align);
349
+ }
350
+ td.appendChild(div);
351
+ // Check for column span
352
+ if (isDefined(columnConfig.columnSpan)) {
353
+ if (columnConfig.columnSpan === 'all') {
354
+ td.colSpan = cellData.length - i;
355
+ break;
356
+ }
357
+ else if (typeof columnConfig.columnSpan === 'number' && columnConfig.columnSpan > 0) {
358
+ let colspan = columnConfig.columnSpan;
359
+ if (columnConfig.columnSpan > cellData.length - i) {
360
+ colspan = cellData.length;
361
+ }
362
+ td.colSpan = colspan;
363
+ i = i + (colspan - 1);
364
+ }
365
+ }
366
+ // Check if we need to call the cell created callback to give consumers a chance to modify the new cell element
367
+ if (typeof configuration.cellCreatedCallback === 'function') {
368
+ configuration.cellCreatedCallback(td, rowIndex, i);
369
+ }
370
+ }
371
+ }
372
+ /**
373
+ * Sets the proper alignment class on the provided element.
374
+ * @param el The element to add the class to.
375
+ * @param align The alignment value.
376
+ */
377
+ static _setCellAlignmentClass(el, align) {
378
+ switch (align) {
379
+ case CellAlign.Center:
380
+ el.classList.add(TABLE_CONSTANTS.classes.TABLE_CELL_CENTER);
381
+ break;
382
+ case CellAlign.Right:
383
+ el.classList.add(TABLE_CONSTANTS.classes.TABLE_CELL_RIGHT);
384
+ break;
385
+ }
386
+ }
387
+ /**
388
+ * Returns all non-expanded rows in a tbody.
389
+ * @param rows All rows in the tbody.
390
+ */
391
+ static _getNonExpandedRows(rows) {
392
+ return Array.from(rows).filter(row => !row.classList.contains(TABLE_CONSTANTS.classes.TABLE_ROW_EXPANDABLE_CONTENT));
393
+ }
394
+ /**
395
+ * Returns all expanded rows in a tbody.
396
+ * @param rows All rows in the tbody.
397
+ */
398
+ static _getExpandedRows(rows) {
399
+ return Array.from(rows).filter(row => row.classList.contains(TABLE_CONSTANTS.classes.TABLE_ROW_EXPANDABLE_CONTENT));
400
+ }
401
+ /**
402
+ * Creates the column data map which organizes the data by column.
403
+ * @param {IColumnConfiguration[]} columnConfigurations The column configurations.
404
+ * @param {IColumnData[]} data The row data.
405
+ */
406
+ static _createColumnDataMap(columnConfigurations, data) {
407
+ return columnConfigurations.map(columnConfig => {
408
+ return {
409
+ config: columnConfig,
410
+ data: data.map(item => {
411
+ if (columnConfig.property) {
412
+ const value = getPropertyValue(item.data, columnConfig.property);
413
+ return isDefined(value) ? value : null;
414
+ }
415
+ return null;
416
+ })
417
+ };
418
+ });
419
+ }
420
+ /**
421
+ * Returns the row data in a column ordered fashion.
422
+ * @param columnConfigurations
423
+ * @param data
424
+ */
425
+ static _getOrderedRowData(columnConfigurations, data) {
426
+ const columnDataMap = TableUtils._createColumnDataMap(columnConfigurations, data);
427
+ const rowData = [];
428
+ for (const columnData of columnDataMap) {
429
+ for (let j = 0; j < columnData.data.length; j++) {
430
+ if (!rowData[j]) {
431
+ rowData[j] = [];
432
+ }
433
+ rowData[j].push(columnData.data[j]);
434
+ }
435
+ }
436
+ return rowData;
437
+ }
438
+ /**
439
+ * Attaches a click listener to each row in the table.
440
+ * @param tbodyElement
441
+ * @param listener
442
+ */
443
+ static _attachRowClickListeners(tbodyElement, clickListener, doubleClickListener) {
444
+ const nonExpandedRows = TableUtils._getNonExpandedRows(tbodyElement.rows);
445
+ nonExpandedRows.forEach(row => {
446
+ row.addEventListener('click', clickListener);
447
+ if (doubleClickListener) {
448
+ row.addEventListener('dblclick', doubleClickListener);
449
+ }
450
+ });
451
+ }
452
+ /**
453
+ * Sets attributes for each row in the table.
454
+ * @param tbodyElement
455
+ * @param clickListener
456
+ */
457
+ static _addRowClickAttributes(tbodyElement) {
458
+ const nonExpandedRows = TableUtils._getNonExpandedRows(tbodyElement.rows);
459
+ nonExpandedRows.forEach(row => {
460
+ row.classList.add(TABLE_CONSTANTS.classes.TABLE_BODY_ROW_CLICKABLE);
461
+ });
462
+ }
463
+ /**
464
+ * Removes attributes for each row in the table.
465
+ * @param tbodyElement
466
+ * @param clickListener
467
+ */
468
+ static _removeRowClickAttributes(tbodyElement) {
469
+ const nonExpandedRows = TableUtils._getNonExpandedRows(tbodyElement.rows);
470
+ nonExpandedRows.forEach(row => {
471
+ row.classList.remove(TABLE_CONSTANTS.classes.TABLE_BODY_ROW_CLICKABLE);
472
+ });
473
+ }
474
+ /**
475
+ * Attaches a click listener to each row checkbox in the table for handling selections.
476
+ * @param tbodyElement
477
+ * @param listener
478
+ */
479
+ static _attachRowSelectListeners(tbodyElement, clickListener) {
480
+ const nonExpandedRows = TableUtils._getNonExpandedRows(tbodyElement.rows);
481
+ nonExpandedRows.forEach(row => TableUtils._attachRowSelectListener(row, clickListener));
482
+ }
483
+ static _attachRowSelectListener(row, clickListener) {
484
+ const checkboxElement = TableUtils._getCheckboxElement(row);
485
+ checkboxElement.addEventListener('click', clickListener);
486
+ }
487
+ /**
488
+ * Removes the select listeners from every table row.
489
+ * @param tbodyElement The table body element.
490
+ * @param listener The click listener.
491
+ */
492
+ static _detachRowSelectListeners(tbodyElement, clickListener) {
493
+ Array.from(tbodyElement.rows).forEach(row => {
494
+ const checkboxElement = TableUtils._getCheckboxElement(row);
495
+ if (checkboxElement) {
496
+ checkboxElement.removeEventListener('click', clickListener);
497
+ }
498
+ });
499
+ }
500
+ /**
501
+ * Removes the click listeners from every table row.
502
+ * @param tbodyElement The table body element.
503
+ * @param listener The click listener.
504
+ */
505
+ static _detachRowClickListeners(tbodyElement, clickListener, doubleClickListener) {
506
+ Array.from(tbodyElement.rows).forEach(row => {
507
+ row.removeEventListener('click', clickListener);
508
+ row.removeEventListener('dblclick', doubleClickListener);
509
+ });
510
+ }
511
+ /**
512
+ * Attaches a click listener to the last table header row select all cell.
513
+ */
514
+ static _attachSelectAllListener(theadElement, listener) {
515
+ const lastTheadRow = theadElement.rows[theadElement.rows.length - 1];
516
+ const checkboxElement = TableUtils._getCheckboxElement(lastTheadRow);
517
+ if (!checkboxElement) {
518
+ throw new Error('Checkbox element not found.');
519
+ }
520
+ checkboxElement.addEventListener('change', listener);
521
+ }
522
+ /**
523
+ * Attaches a click listener to the last table header row select all cell.
524
+ */
525
+ static _tryAttachSelectAllTemplateListener(theadElement, listener) {
526
+ const lastTheadRow = theadElement.rows[theadElement.rows.length - 1];
527
+ const checkboxElement = TableUtils._tryGetCheckboxElement(lastTheadRow);
528
+ if (checkboxElement) {
529
+ checkboxElement.addEventListener('change', listener);
530
+ }
531
+ }
532
+ /**
533
+ * Removes the select all click listener.
534
+ * @param theadElement The table head element.
535
+ * @param listener The click listener.
536
+ */
537
+ static _detachSelectAllListener(theadElement, listener) {
538
+ const lastTheadRow = theadElement.rows[theadElement.rows.length - 1];
539
+ const checkboxElement = TableUtils._tryGetCheckboxElement(lastTheadRow);
540
+ if (!checkboxElement) {
541
+ return;
542
+ }
543
+ checkboxElement.removeEventListener('change', listener);
544
+ }
545
+ /**
546
+ * Attaches a click listener to the first row of the table header to handle mouse events.
547
+ * @param theadElement
548
+ * @param listener
549
+ */
550
+ static _attachHeadRowMouseDownListener(theadElement, listener) {
551
+ const firstRow = theadElement.rows[0];
552
+ if (!firstRow) {
553
+ throw new Error('Missing table header row. Unable to attach sort listener.');
554
+ }
555
+ firstRow.addEventListener('mousedown', listener);
556
+ }
557
+ /**
558
+ * Attaches a click listener to the first row of the table header to handle context menu events.
559
+ * @param theadElement
560
+ * @param listener
561
+ */
562
+ static _attachHeadRowContextMenuListener(theadElement, listener) {
563
+ const firstRow = theadElement.rows[0];
564
+ if (!firstRow) {
565
+ throw new Error('Missing table header row. Unable to attach sort listener.');
566
+ }
567
+ firstRow.addEventListener('contextmenu', listener);
568
+ }
569
+ /**
570
+ * Creates the select column as the first column in the table.
571
+ * @param theadElement
572
+ * @param tbodyElement
573
+ */
574
+ static _createSelectColumn(theadElement, tbodyElement, showSelectAll, selectAllTemplate, registerListener, selectCheckboxAlignment, data, tooltipSelect, tooltipSelectAll) {
575
+ if (theadElement) {
576
+ TableUtils._createHeadSelectColumn(theadElement, showSelectAll, selectAllTemplate, registerListener, selectCheckboxAlignment, tooltipSelectAll);
577
+ }
578
+ if (tbodyElement) {
579
+ TableUtils._createBodySelectColumn(tbodyElement, selectCheckboxAlignment, data, tooltipSelect, tooltipSelectAll);
580
+ }
581
+ }
582
+ /**
583
+ * Creates the select column in the table head.
584
+ * @param {HTMLTableSectionElement} theadElement The table head element.
585
+ * @param {boolean} showSelectAll Whether to show the select all checkbox or not.
586
+ */
587
+ static _createHeadSelectColumn(theadElement, showSelectAll, selectAllTemplate, registerListener, selectCheckboxAlignment, tooltipSelectAll) {
588
+ var _a;
589
+ Array.from(theadElement.rows).forEach(row => {
590
+ const th = document.createElement('th');
591
+ addClass([TABLE_CONSTANTS.classes.TABLE_CELL, TABLE_CONSTANTS.classes.TABLE_HEAD_CELL], th);
592
+ row.insertBefore(th, row.cells.item(0));
593
+ });
594
+ if (showSelectAll) {
595
+ const lastRowFirstCell = (_a = theadElement.rows.item(theadElement.rows.length - 1)) === null || _a === void 0 ? void 0 : _a.cells.item(0);
596
+ lastRowFirstCell.classList.add(TABLE_CONSTANTS.classes.TABLE_CELL_SELECT);
597
+ if (typeof selectAllTemplate === 'function') {
598
+ TableUtils._renderSelectAllTemplate(selectAllTemplate, theadElement).then(() => {
599
+ if (typeof registerListener === 'function') {
600
+ registerListener();
601
+ }
602
+ });
603
+ }
604
+ else {
605
+ lastRowFirstCell === null || lastRowFirstCell === void 0 ? void 0 : lastRowFirstCell.appendChild(TableUtils._createCheckboxElement(true, selectCheckboxAlignment, null, null, null, tooltipSelectAll));
606
+ }
607
+ }
608
+ }
609
+ /**
610
+ * Creates the select column in the table body.
611
+ * @param {HTMLTableSectionElement} tbodyElement The table body element.
612
+ */
613
+ static _createBodySelectColumn(tbodyElement, selectCheckboxAlignment, data, tooltipSelect, tooltipSelectAll) {
614
+ const nonExpandedRows = TableUtils._getNonExpandedRows(tbodyElement.rows);
615
+ nonExpandedRows.forEach((row, rowIndex) => TableUtils._addRowSelectColumn(row, selectCheckboxAlignment, rowIndex, data[rowIndex], tooltipSelect, tooltipSelectAll));
616
+ // Update the colspan on the expanded rows
617
+ if (tbodyElement.rows.length) {
618
+ const firstRow = tbodyElement.rows.item(0);
619
+ if (firstRow) {
620
+ TableUtils._updateExpandedRowColspan(tbodyElement.rows, firstRow.cells.length);
621
+ }
622
+ }
623
+ }
624
+ static _addRowSelectColumn(row, selectCheckboxAlignment, rowIndex, rowData, tooltipSelect, tooltipSelectAll) {
625
+ const td = row.insertCell(0);
626
+ addClass([TABLE_CONSTANTS.classes.TABLE_CELL, TABLE_CONSTANTS.classes.TABLE_BODY_CELL, TABLE_CONSTANTS.classes.TABLE_CELL_SELECT], td);
627
+ td.appendChild(TableUtils._createCheckboxElement(false, selectCheckboxAlignment, rowIndex, rowData, tooltipSelect, tooltipSelectAll));
628
+ }
629
+ /**
630
+ * Removes the first cell (select cell) in every row in the table head and table body elements.
631
+ * @param {HTMLTableSectionElement} theadElement The table head element.
632
+ * @param {HTMLTableSectionElement} tbodyElement The table body element.
633
+ */
634
+ static _destroySelectColumn(theadElement, tbodyElement) {
635
+ const nonExpandedRows = TableUtils._getNonExpandedRows(tbodyElement.rows);
636
+ Array.from(theadElement.rows).forEach(row => row.removeChild(row.cells.item(0)));
637
+ Array.from(nonExpandedRows).forEach(row => row.removeChild(row.cells.item(0)));
638
+ // Update the colspan on the expanded rows
639
+ if (tbodyElement.rows.length) {
640
+ const firstRow = tbodyElement.rows.item(0);
641
+ if (firstRow) {
642
+ TableUtils._updateExpandedRowColspan(tbodyElement.rows, firstRow.cells.length);
643
+ }
644
+ }
645
+ }
646
+ /**
647
+ * Determines if the table has the select column being rendered currently.
648
+ */
649
+ static _hasSelectColumn(theadElement, tbodyElement) {
650
+ const tableRows = [...Array.from(theadElement.rows), ...Array.from(tbodyElement.rows)];
651
+ return tableRows.some(row => {
652
+ const firstCell = row.cells.item(0);
653
+ return firstCell.classList.contains(TABLE_CONSTANTS.classes.TABLE_CELL_SELECT);
654
+ });
655
+ }
656
+ /**
657
+ * Creates a checkbox element for the select column.
658
+ */
659
+ static _createCheckboxElement(isHeader, alignment, rowIndex, rowData, tooltipSelect, tooltipSelectAll) {
660
+ const checkboxContainer = document.createElement('div');
661
+ checkboxContainer.classList.add(TABLE_CONSTANTS.classes.TABLE_CELL_SELECT_CHECKBOX_CONTAINER);
662
+ if (alignment) {
663
+ switch (alignment) {
664
+ case CellAlign.Center:
665
+ checkboxContainer.classList.add(TABLE_CONSTANTS.classes.TABLE_CELL_SELECT_CHECKBOX_CONTAINER_ALIGN_CENTER);
666
+ break;
667
+ case CellAlign.Left:
668
+ checkboxContainer.classList.add(TABLE_CONSTANTS.classes.TABLE_CELL_SELECT_CHECKBOX_CONTAINER_ALIGN_LEFT);
669
+ break;
670
+ case CellAlign.Right:
671
+ checkboxContainer.classList.add(TABLE_CONSTANTS.classes.TABLE_CELL_SELECT_CHECKBOX_CONTAINER_ALIGN_RIGHT);
672
+ break;
673
+ }
674
+ }
675
+ const checkboxElement = document.createElement(CHECKBOX_CONSTANTS.elementName);
676
+ const checkboxInputElement = document.createElement('input');
677
+ checkboxInputElement.type = 'checkbox';
678
+ let tooltipText = tooltipSelect ? tooltipSelect : '';
679
+ if (rowData && typeof tooltipSelect === 'function') {
680
+ tooltipText = tooltipSelect.call(null, rowIndex, rowData.data);
681
+ }
682
+ const tooltip = document.createElement('forge-tooltip');
683
+ tooltip.position = 'left';
684
+ if (isHeader) {
685
+ tooltip.textContent = tooltipSelectAll ? tooltipSelectAll : '';
686
+ }
687
+ else {
688
+ tooltip.textContent = tooltipText;
689
+ }
690
+ checkboxInputElement.setAttribute('aria-label', 'Select row');
691
+ checkboxElement.appendChild(checkboxInputElement);
692
+ checkboxContainer.appendChild(tooltip);
693
+ checkboxContainer.appendChild(checkboxElement);
694
+ return checkboxContainer;
695
+ }
696
+ /**
697
+ * Retrieves the checkbox element from the given table row. Used in select mode only.
698
+ * @param rowElement
699
+ */
700
+ static _getCheckboxElement(rowElement) {
701
+ return rowElement.querySelector(TABLE_CONSTANTS.selectors.CHECKBOX_INPUT);
702
+ }
703
+ /**
704
+ * Retrieves the checkbox element from the given table row. Used in select mode only.
705
+ * @param rowElement
706
+ */
707
+ static _tryGetCheckboxElement(rowElement) {
708
+ return rowElement.querySelector(TABLE_CONSTANTS.selectors.CHECKBOX_INPUT) || rowElement.querySelector(TABLE_CONSTANTS.selectors.SELECT_ALL_TEMPLATE_CHECKBOX_INPUT);
709
+ }
710
+ /**
711
+ * Sets the checked state of the select checkbox.
712
+ * @param checkboxElement
713
+ * @param isSelected
714
+ */
715
+ static _setSelectedCheckboxState(checkboxElement, isSelected) {
716
+ if (checkboxElement) {
717
+ checkboxElement.checked = isSelected;
718
+ }
719
+ }
720
+ /**
721
+ * Sets the indeterminate state of the select checkbox.
722
+ * @param checkboxElement
723
+ * @param isIndeterminate
724
+ */
725
+ static _setIndeterminateCheckboxState(checkboxElement, isIndeterminate) {
726
+ if (checkboxElement) {
727
+ checkboxElement.indeterminate = isIndeterminate;
728
+ }
729
+ }
730
+ /**
731
+ * Updates the selected state on the provided table row element.
732
+ * @param rowElement
733
+ * @param isSelected
734
+ */
735
+ static _setRowSelectedState(rowElement, isSelected) {
736
+ if (isSelected) {
737
+ if (!rowElement.classList.contains(TABLE_CONSTANTS.classes.TABLE_BODY_ROW_SELECTED)) {
738
+ rowElement.classList.add(TABLE_CONSTANTS.classes.TABLE_BODY_ROW_SELECTED);
739
+ }
740
+ }
741
+ else {
742
+ rowElement.classList.remove(TABLE_CONSTANTS.classes.TABLE_BODY_ROW_SELECTED);
743
+ }
744
+ }
745
+ /**
746
+ * Resets the colspan on all expanded rows to the proper value.
747
+ */
748
+ static _updateExpandedRowColspan(rows, cellCount) {
749
+ const expandedRows = TableUtils._getExpandedRows(rows);
750
+ expandedRows.forEach(row => {
751
+ const cell = row.cells.item(0);
752
+ if (cell) {
753
+ cell.colSpan = cellCount;
754
+ }
755
+ });
756
+ }
757
+ /**
758
+ * Updates the state of a table row element to be selected or not.
759
+ * @param {HTMLTableRowElement} rowElement The row element.
760
+ * @param {boolean} isSelected Whether the row is selected or not.
761
+ */
762
+ static updateSelectedState(rowElement, isSelected) {
763
+ TableUtils._setRowSelectedState(rowElement, isSelected);
764
+ TableUtils._setSelectedCheckboxState(TableUtils._getCheckboxElement(rowElement), isSelected);
765
+ }
766
+ /**
767
+ * Get a row from the first table body by index.
768
+ */
769
+ static getRowByIndex(tableElement, index) {
770
+ return TableUtils._getNonExpandedRows(tableElement.tBodies[0].rows)[index];
771
+ }
772
+ /**
773
+ * Updates the state of the select all checkbox.
774
+ * @param {HTMLTableElement} tableElement The table element.
775
+ * @param {boolean} isAllSelected Whether the checkboxes should be checked or not.
776
+ */
777
+ static updateSelectAllState(tableElement, isAllSelected, isIndeterminate) {
778
+ if (!tableElement.tHead) {
779
+ return;
780
+ }
781
+ const lastTheadRow = tableElement.tHead.rows[tableElement.tHead.rows.length - 1];
782
+ const selectAllCheckboxElement = TableUtils._tryGetCheckboxElement(lastTheadRow);
783
+ if (selectAllCheckboxElement) {
784
+ TableUtils._setSelectedCheckboxState(selectAllCheckboxElement, isAllSelected);
785
+ TableUtils._setIndeterminateCheckboxState(selectAllCheckboxElement, !!isIndeterminate);
786
+ }
787
+ }
788
+ /**
789
+ * Sets the selected rows in the table.
790
+ * @param tableElement
791
+ * @param key
792
+ * @param data
793
+ * @param selectedRows
794
+ * @param preserveExisting
795
+ */
796
+ static setSelectedRows(tableElement, key, data, selectedRows, preserveExisting = false) {
797
+ if (!tableElement.tBodies.length) {
798
+ return;
799
+ }
800
+ if (!preserveExisting) {
801
+ TableUtils.clearSelectedRows(tableElement);
802
+ }
803
+ const rows = tableElement.tBodies[0].rows;
804
+ let selectedRowCount = 0;
805
+ if (selectedRows.length) {
806
+ Array.from(rows).forEach((row, index) => {
807
+ const rowData = data[index];
808
+ const existingSelection = findWhere(selectedRows, createPredicate(key, rowData));
809
+ if (existingSelection) {
810
+ TableUtils._setRowSelectedState(row, true);
811
+ TableUtils._setSelectedCheckboxState(TableUtils._getCheckboxElement(row), true);
812
+ selectedRowCount++;
813
+ }
814
+ });
815
+ }
816
+ TableUtils.updateSelectAllState(tableElement, selectedRowCount > 0 && rows.length === selectedRowCount);
817
+ }
818
+ /**
819
+ * Clears all selected rows in the table.
820
+ * @param tableElement
821
+ */
822
+ static clearSelectedRows(tableElement) {
823
+ if (!tableElement.tBodies.length) {
824
+ return;
825
+ }
826
+ const nonExpandedRows = TableUtils._getNonExpandedRows(tableElement.tBodies[0].rows);
827
+ nonExpandedRows.forEach(row => {
828
+ TableUtils._setRowSelectedState(row, false);
829
+ TableUtils._setSelectedCheckboxState(TableUtils._getCheckboxElement(row), false);
830
+ });
831
+ }
832
+ /**
833
+ * Sets the sorted column in the table.
834
+ * @param tableElement
835
+ * @param columnIndex
836
+ * @param sortDirection
837
+ */
838
+ static setSortedColumn(tableElement, columnIndex, sortDirection) {
839
+ const cell = TableUtils._getHeaderCellByIndex(tableElement, columnIndex);
840
+ // Set the active class on the icon
841
+ const iconElement = TableUtils._getSortIconElementFromHeaderCell(cell);
842
+ iconElement.classList.add(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORT_ICON_ACTIVE);
843
+ // Set the sort direction on the header cell
844
+ TableUtils._setColumnSortDirection(cell, sortDirection);
845
+ }
846
+ /**
847
+ * Sets the sorted column in the table.
848
+ * @param tableElement
849
+ * @param columnIndex
850
+ * @param sortOrder
851
+ */
852
+ static setMultiSortColumnSortNumber(tableElement, hasMultipleColumnsSorted, columnIndex, sortOrder) {
853
+ const cell = TableUtils._getHeaderCellByIndex(tableElement, columnIndex);
854
+ const cellContainer = cell.querySelector(`.${TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_CONTAINER}`);
855
+ const sortOrderElement = cellContainer.querySelector(`.${TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORT_ORDER}`);
856
+ if (sortOrderElement) {
857
+ toggleClass(sortOrderElement, typeof sortOrder !== 'number' || !hasMultipleColumnsSorted, TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORT_ORDER_HIDDEN);
858
+ if (sortOrder) {
859
+ sortOrderElement.textContent = sortOrder.toString();
860
+ }
861
+ }
862
+ }
863
+ /**
864
+ * Removes the sorted column in the table.
865
+ * @param tableElement
866
+ * @param columnIndex
867
+ */
868
+ static removeColumnSort(tableElement, columnIndex) {
869
+ const cell = TableUtils._getHeaderCellByIndex(tableElement, columnIndex);
870
+ // Remove any existing sort direction classes from the existing th element
871
+ if (cell.classList.contains(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORTED_ASCENDING)) {
872
+ cell.classList.remove(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORTED_ASCENDING);
873
+ }
874
+ if (cell.classList.contains(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORTED_DESCENDING)) {
875
+ cell.classList.remove(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORTED_DESCENDING);
876
+ }
877
+ // Remove the active class from the existing active sorted icon element
878
+ const existingIconElement = TableUtils._getSortIconElementFromHeaderCell(cell);
879
+ if (existingIconElement && existingIconElement.classList.contains(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORT_ICON_ACTIVE)) {
880
+ existingIconElement.classList.remove(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORT_ICON_ACTIVE);
881
+ }
882
+ }
883
+ /**
884
+ * Retrieves a header cell from the table based on index.
885
+ * @param {HTMLTableElement} tableElement The table element.
886
+ * @param {number} index The column index.
887
+ */
888
+ static _getHeaderCellByIndex(tableElement, index) {
889
+ if (!tableElement.tHead) {
890
+ throw new Error('Table head element cannot be null.');
891
+ }
892
+ const headerRow = tableElement.tHead.rows.item(0);
893
+ return headerRow.cells.item(index);
894
+ }
895
+ /**
896
+ * Gets the sort icon element from the table cell that contains the select all checkbox.
897
+ * @param {HTMLTableHeaderCellElement} cell The table header cell element.
898
+ */
899
+ static _getSortIconElementFromHeaderCell(cell) {
900
+ return cell.querySelector(`.${TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORT_ICON}`);
901
+ }
902
+ /**
903
+ * Adds/removes the select column on the table.
904
+ */
905
+ static setSelectColumnVisibility(tableElement, isVisible, selectListener, selectAllListener, selectAllTemplate, selectCheckboxAlignment, data, tooltipSelect, tooltipSelectAll) {
906
+ const theadElement = tableElement.tHead;
907
+ const tbodyElement = tableElement.tBodies[0];
908
+ if (!theadElement || !tbodyElement) {
909
+ return;
910
+ }
911
+ if (isVisible) {
912
+ TableUtils._addSelectColumn(theadElement, tbodyElement, selectListener, selectAllListener, selectAllTemplate, selectCheckboxAlignment, data, tooltipSelect, tooltipSelectAll);
913
+ }
914
+ else if (TableUtils._hasSelectColumn(theadElement, tbodyElement)) {
915
+ if (selectListener) {
916
+ TableUtils._detachRowSelectListeners(tbodyElement, selectListener);
917
+ }
918
+ if (selectAllListener) {
919
+ TableUtils._detachSelectAllListener(theadElement, selectAllListener);
920
+ }
921
+ TableUtils._destroySelectColumn(theadElement, tbodyElement);
922
+ }
923
+ }
924
+ /**
925
+ * Adds the select column to the thead/tbody elements and attaches the provided click listeners.
926
+ * @param theadElement The table head element.
927
+ * @param tbodyElement The table body element.
928
+ * @param selectListener The row select listener.
929
+ * @param selectAllListener The select all checkbox listener.
930
+ */
931
+ static _addSelectColumn(theadElement, tbodyElement, selectListener, selectAllListener, selectAllTemplate, selectCheckboxAlignment, data, tooltipSelect, tooltipSelectAll) {
932
+ TableUtils._createSelectColumn(theadElement, tbodyElement, !!selectAllListener, selectAllTemplate, () => {
933
+ if (selectAllListener) {
934
+ TableUtils._tryAttachSelectAllTemplateListener(theadElement, selectAllListener);
935
+ }
936
+ }, selectCheckboxAlignment, data, tooltipSelect, tooltipSelectAll);
937
+ if (selectListener) {
938
+ TableUtils._attachRowSelectListeners(tbodyElement, selectListener);
939
+ }
940
+ if (selectAllListener && !selectAllTemplate) {
941
+ TableUtils._tryAttachSelectAllTemplateListener(theadElement, selectAllListener);
942
+ }
943
+ }
944
+ /**
945
+ * Adds/removes the dense class on the table.
946
+ */
947
+ static setDenseState(tableElement, isDense) {
948
+ if (tableElement.classList.contains(TABLE_CONSTANTS.classes.TABLE_DENSE)) {
949
+ tableElement.classList.remove(TABLE_CONSTANTS.classes.TABLE_DENSE);
950
+ }
951
+ if (isDense) {
952
+ tableElement.classList.add(TABLE_CONSTANTS.classes.TABLE_DENSE);
953
+ }
954
+ }
955
+ /**
956
+ * Adds/removes the roomy class on the table.
957
+ */
958
+ static setRoomyState(tableElement, isRoomy) {
959
+ if (tableElement.classList.contains(TABLE_CONSTANTS.classes.TABLE_ROOMY)) {
960
+ tableElement.classList.remove(TABLE_CONSTANTS.classes.TABLE_ROOMY);
961
+ }
962
+ if (isRoomy) {
963
+ tableElement.classList.add(TABLE_CONSTANTS.classes.TABLE_ROOMY);
964
+ }
965
+ }
966
+ static setResizable(configuration) {
967
+ const thead = configuration.tableElement.tHead;
968
+ if (configuration.resizable) {
969
+ configuration.tableElement.classList.add(TABLE_CONSTANTS.classes.TABLE_RESIZABLE);
970
+ TableUtils._addResizeHandles(thead, configuration);
971
+ }
972
+ else {
973
+ configuration.tableElement.classList.remove(TABLE_CONSTANTS.classes.TABLE_RESIZABLE);
974
+ TableUtils._removeResizeHandles(thead);
975
+ }
976
+ }
977
+ static _addResizeHandles(thead, configuration) {
978
+ if (!thead) {
979
+ return;
980
+ }
981
+ const firstRow = thead.rows.item(0);
982
+ if (firstRow) {
983
+ let cells = Array.from(firstRow.cells);
984
+ // If the select column is on, we need to skip the first cell
985
+ if (configuration.selectListener) {
986
+ cells = cells.slice(1);
987
+ }
988
+ for (const cell of cells) {
989
+ const index = cells.indexOf(cell);
990
+ const columnConfig = configuration.columnConfigurations[index];
991
+ if (columnConfig.resizable !== false) {
992
+ const resizeHandle = document.createElement('div');
993
+ resizeHandle.classList.add(TABLE_CONSTANTS.classes.TABLE_RESIZE_HANDLE);
994
+ cell.appendChild(resizeHandle);
995
+ }
996
+ }
997
+ }
998
+ }
999
+ static _removeResizeHandles(thead) {
1000
+ if (!thead) {
1001
+ return;
1002
+ }
1003
+ const firstRow = thead.rows.item(0);
1004
+ if (firstRow) {
1005
+ const cells = Array.from(firstRow.cells);
1006
+ for (const cell of cells) {
1007
+ const resizeHandle = document.querySelector(`.${TABLE_CONSTANTS.classes.TABLE_RESIZE_HANDLE}`);
1008
+ if (resizeHandle) {
1009
+ cell.removeChild(resizeHandle);
1010
+ }
1011
+ }
1012
+ }
1013
+ }
1014
+ /**
1015
+ * Adds/removes the wrap class on the table.
1016
+ */
1017
+ static setWrapContentState(tableElement, wrapContent) {
1018
+ if (wrapContent) {
1019
+ tableElement.classList.remove(TABLE_CONSTANTS.classes.TABLE_NO_WRAP_CONTENT);
1020
+ }
1021
+ else {
1022
+ tableElement.classList.add(TABLE_CONSTANTS.classes.TABLE_NO_WRAP_CONTENT);
1023
+ }
1024
+ }
1025
+ /**
1026
+ *
1027
+ * @param {HTMLTableElement} tableElement The table element.
1028
+ * @param {boolean} isVisible Whether the select all option is visible or not.
1029
+ */
1030
+ static setSelectAllVisibility(tableElement, isVisible, listener, selectAllTemplate, selectCheckboxAlignment, tooltipSelectAll) {
1031
+ const theadElement = tableElement.tHead;
1032
+ if (!theadElement) {
1033
+ return;
1034
+ }
1035
+ if (!isVisible && listener) {
1036
+ TableUtils._detachSelectAllListener(theadElement, listener);
1037
+ }
1038
+ const lastTheadRow = theadElement.rows[theadElement.rows.length - 1];
1039
+ const selectAllCell = lastTheadRow.cells.item(0);
1040
+ if (isVisible) {
1041
+ // Only add the checkbox if it doesn't already exist
1042
+ if (!selectAllCell.childElementCount) {
1043
+ selectAllCell.classList.add(TABLE_CONSTANTS.classes.TABLE_CELL_SELECT);
1044
+ if (selectAllTemplate) {
1045
+ TableUtils._renderSelectAllTemplate(selectAllTemplate, theadElement).then(() => {
1046
+ if (listener) {
1047
+ TableUtils._tryAttachSelectAllTemplateListener(theadElement, listener);
1048
+ }
1049
+ });
1050
+ }
1051
+ else {
1052
+ selectAllCell.appendChild(TableUtils._createCheckboxElement(true, selectCheckboxAlignment || null, null, null, null, tooltipSelectAll));
1053
+ }
1054
+ if (listener && !selectAllTemplate) {
1055
+ TableUtils._attachSelectAllListener(theadElement, listener);
1056
+ }
1057
+ }
1058
+ }
1059
+ else {
1060
+ if (listener) {
1061
+ TableUtils._detachSelectAllListener(theadElement, listener);
1062
+ }
1063
+ removeAllChildren(selectAllCell);
1064
+ }
1065
+ }
1066
+ /**
1067
+ * Controls the visibility of the table filter row.
1068
+ * @param {ITableConfiguration} configuration The table configuration.
1069
+ */
1070
+ static setFilterRow(configuration) {
1071
+ if (!configuration.tableElement.tHead) {
1072
+ return;
1073
+ }
1074
+ const filterRowElement = TableUtils._getFilterRowElement(configuration.tableElement.tHead);
1075
+ let selectAllCell;
1076
+ // Toggle the filter visible class on the table element to control styles of rows/cells
1077
+ if (configuration.filter) {
1078
+ configuration.tableElement.classList.add(TABLE_CONSTANTS.classes.TABLE_FILTER_VISIBLE);
1079
+ }
1080
+ else {
1081
+ configuration.tableElement.classList.remove(TABLE_CONSTANTS.classes.TABLE_FILTER_VISIBLE);
1082
+ }
1083
+ if (configuration.filter && !filterRowElement) {
1084
+ // We can stop here if there are no filterable columns
1085
+ if (configuration.columnConfigurations.every(cc => !cc.filter)) {
1086
+ return;
1087
+ }
1088
+ // Gets the select all cell contents so it can be moved to the new filter row after creating the row element
1089
+ if (configuration.selectListener && configuration.selectAllListener) {
1090
+ const lastTheadRow = configuration.tableElement.tHead.rows[configuration.tableElement.tHead.rows.length - 1];
1091
+ selectAllCell = lastTheadRow.cells.item(0);
1092
+ }
1093
+ const rowElement = TableUtils._createFilterRowElement(configuration);
1094
+ // Move the select all cell to the new filter row
1095
+ if (rowElement && selectAllCell) {
1096
+ Array.from(selectAllCell.children).forEach(child => {
1097
+ var _a;
1098
+ (_a = rowElement.cells.item(0)) === null || _a === void 0 ? void 0 : _a.appendChild(child);
1099
+ });
1100
+ }
1101
+ }
1102
+ else if (!configuration.filter && filterRowElement) {
1103
+ // Move the select all cell to the previous row
1104
+ if (configuration.selectListener && configuration.selectAllListener) {
1105
+ selectAllCell = filterRowElement.cells.item(0);
1106
+ const previousRowElementIndex = Array.from(configuration.tableElement.tHead.rows).indexOf(filterRowElement) - 1;
1107
+ const previousRowElement = configuration.tableElement.tHead.rows.item(previousRowElementIndex);
1108
+ if (previousRowElement) {
1109
+ Array.from(selectAllCell.children).forEach(child => {
1110
+ var _a;
1111
+ (_a = previousRowElement.cells.item(0)) === null || _a === void 0 ? void 0 : _a.appendChild(child);
1112
+ });
1113
+ }
1114
+ }
1115
+ removeElement(filterRowElement);
1116
+ }
1117
+ }
1118
+ /**
1119
+ * Creates the table filter row element.
1120
+ * @param {ITableConfiguration} configuration The table configuration.
1121
+ */
1122
+ static _createFilterRowElement(configuration) {
1123
+ if (!configuration.tableElement.tHead) {
1124
+ throw new Error('Table head element cannot be null.');
1125
+ }
1126
+ const filterRow = configuration.tableElement.tHead.insertRow();
1127
+ addClass([TABLE_CONSTANTS.classes.TABLE_ROW, TABLE_CONSTANTS.classes.TABLE_HEAD_ROW_FILTER], filterRow);
1128
+ if (configuration.selectListener) {
1129
+ const th = document.createElement('th');
1130
+ addClass([TABLE_CONSTANTS.classes.TABLE_CELL, TABLE_CONSTANTS.classes.TABLE_HEAD_CELL], th);
1131
+ filterRow.insertBefore(th, filterRow.cells[0]);
1132
+ th.classList.add(TABLE_CONSTANTS.classes.TABLE_CELL_SELECT);
1133
+ }
1134
+ configuration.columnConfigurations.forEach((columnConfig, columnIndex) => {
1135
+ const th = document.createElement('th');
1136
+ addClass([TABLE_CONSTANTS.classes.TABLE_CELL, TABLE_CONSTANTS.classes.TABLE_HEAD_CELL], th);
1137
+ if (columnConfig.filter && isDefined(columnConfig.filterDelegate)) {
1138
+ const container = document.createElement('div');
1139
+ container.classList.add(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_CONTAINER);
1140
+ if (columnConfig.align) {
1141
+ TableUtils._setCellAlignmentClass(container, columnConfig.align);
1142
+ }
1143
+ const element = TableUtils._createFilterElement(columnConfig, columnIndex, configuration.filterListener);
1144
+ container.appendChild(element);
1145
+ th.appendChild(container);
1146
+ }
1147
+ filterRow.appendChild(th);
1148
+ });
1149
+ return filterRow;
1150
+ }
1151
+ /**
1152
+ * Creates the element that will be used as the filter for this column.
1153
+ * @param {IColumnConfiguration} columnConfig The column configuration.
1154
+ */
1155
+ static _createFilterElement(columnConfig, columnIndex, filterListener) {
1156
+ let delegate;
1157
+ if (isFunction(columnConfig.filterDelegate)) {
1158
+ delegate = columnConfig.filterDelegate();
1159
+ }
1160
+ else if (columnConfig.filterDelegate instanceof FormFieldComponentDelegate) {
1161
+ delegate = columnConfig.filterDelegate;
1162
+ }
1163
+ else {
1164
+ throw new Error('Invalid filter delegate.');
1165
+ }
1166
+ if (filterListener) {
1167
+ if (!isDefined(columnConfig.filterDebounceTime) || isNumber(columnConfig.filterDebounceTime)) {
1168
+ const debounceTime = isDefined(columnConfig.filterDebounceTime) ? columnConfig.filterDebounceTime : TABLE_CONSTANTS.numbers.DEFAULT_FILTER_DEBOUNCE_TIME;
1169
+ delegate.onChange(debounce((value) => filterListener(value, columnIndex), debounceTime));
1170
+ }
1171
+ else {
1172
+ delegate.onChange((value) => filterListener(value, columnIndex));
1173
+ }
1174
+ }
1175
+ return delegate.element;
1176
+ }
1177
+ /**
1178
+ * Gets the filter row from the table head element rows, or undefined if not found.
1179
+ * @param {HTMLTableRowElement | undefined} tHeadElement The thead element.
1180
+ */
1181
+ static _getFilterRowElement(tHeadElement) {
1182
+ if (!tHeadElement) {
1183
+ return;
1184
+ }
1185
+ return Array.from(tHeadElement.rows).find(r => r.classList.contains(TABLE_CONSTANTS.classes.TABLE_HEAD_ROW_FILTER));
1186
+ }
1187
+ /**
1188
+ * Expands a row by inserting a new row beneath it and displaying the provided template content.
1189
+ * @param configuration The table configuration.
1190
+ * @param rowIndex The index of the row to expand.
1191
+ * @param template The template for the expanded row content.
1192
+ */
1193
+ static async expandRow(configuration, rowIndex, template) {
1194
+ const tbody = configuration.tableElement.tBodies[0];
1195
+ const nonExpandedRows = TableUtils._getNonExpandedRows(tbody.rows);
1196
+ const requestedRow = nonExpandedRows[rowIndex];
1197
+ requestedRow.classList.add(TABLE_CONSTANTS.classes.TABLE_ROW_EXPANDED);
1198
+ const actualRowIndex = Array.from(tbody.rows).indexOf(requestedRow);
1199
+ const expandedRow = tbody.insertRow(actualRowIndex + 1);
1200
+ addClass([TABLE_CONSTANTS.classes.TABLE_ROW, TABLE_CONSTANTS.classes.TABLE_BODY_ROW, TABLE_CONSTANTS.classes.TABLE_ROW_EXPANDABLE_CONTENT], expandedRow);
1201
+ const td = expandedRow.insertCell();
1202
+ td.setAttribute('colspan', requestedRow.cells.length.toString());
1203
+ td.classList.add(TABLE_CONSTANTS.classes.TABLE_ROW_EXPANDABLE_CONTENT_CELL);
1204
+ const contentDiv = document.createElement('div');
1205
+ const expansionPanel = document.createElement(EXPANSION_PANEL_CONSTANTS.elementName);
1206
+ expansionPanel.appendChild(contentDiv);
1207
+ td.appendChild(expansionPanel);
1208
+ let content = template;
1209
+ if (isFunction(template)) {
1210
+ const rowData = configuration.data[rowIndex] ? configuration.data[rowIndex].data : undefined;
1211
+ const templateValue = template(rowIndex, contentDiv, rowData);
1212
+ try {
1213
+ const result = await Promise.resolve(templateValue);
1214
+ content = isTemplateResultObject(result) ? result.content : result;
1215
+ }
1216
+ catch (e) {
1217
+ console.error('Failed to load row template ' + e.message);
1218
+ content = '';
1219
+ }
1220
+ }
1221
+ if (content) {
1222
+ TableUtils._setRowTemplate(contentDiv, content);
1223
+ }
1224
+ window.requestAnimationFrame(() => expansionPanel.open = true);
1225
+ }
1226
+ /**
1227
+ * Sets the template content in the table row element.
1228
+ * @param {HTMLElement} element The element to the append the template to.
1229
+ * @param {string | HTMLElement} template The template content.
1230
+ */
1231
+ static _setRowTemplate(element, template) {
1232
+ if (isString(template)) {
1233
+ element.innerHTML = template;
1234
+ }
1235
+ else {
1236
+ element.appendChild(template);
1237
+ }
1238
+ }
1239
+ /**
1240
+ * Collapses an expanded table row.
1241
+ * @param configuration The table configuration.
1242
+ * @param rowIndex The index of the row to collapse.
1243
+ */
1244
+ static collapseRow(configuration, rowIndex) {
1245
+ if (!configuration.tableElement || !configuration.tableElement.tBodies.length || !configuration.tableElement.tBodies[0].rows.length) {
1246
+ return Promise.resolve();
1247
+ }
1248
+ const tbody = configuration.tableElement.tBodies[0];
1249
+ const nonExpandedRows = TableUtils._getNonExpandedRows(tbody.rows);
1250
+ const requestedRow = nonExpandedRows[rowIndex];
1251
+ const actualRowIndex = Array.from(tbody.rows).indexOf(requestedRow);
1252
+ if (requestedRow && requestedRow.classList.contains(TABLE_CONSTANTS.classes.TABLE_ROW_EXPANDED)) {
1253
+ const expandableRow = tbody.rows[actualRowIndex + 1];
1254
+ const expansionPanel = expandableRow.querySelector(EXPANSION_PANEL_CONSTANTS.elementName);
1255
+ if (expansionPanel && expansionPanel.open) {
1256
+ expansionPanel.open = false;
1257
+ return new Promise(resolve => {
1258
+ setTimeout(() => {
1259
+ requestedRow.classList.remove(TABLE_CONSTANTS.classes.TABLE_ROW_EXPANDED);
1260
+ removeElement(expandableRow);
1261
+ resolve();
1262
+ }, EXPANSION_PANEL_CONSTANTS.numbers.COLLAPSE_ANIMATION_DURATION);
1263
+ });
1264
+ }
1265
+ }
1266
+ return Promise.resolve();
1267
+ }
1268
+ /**
1269
+ * Checks if a row is expanded or not.
1270
+ * @param configuration The table configuration.
1271
+ * @param rowIndex The row index.
1272
+ * @returns {boolean}
1273
+ */
1274
+ static isRowExpanded(configuration, rowIndex) {
1275
+ const tbody = configuration.tableElement.tBodies[0];
1276
+ const nonExpandedRows = TableUtils._getNonExpandedRows(tbody.rows);
1277
+ const requestedRow = nonExpandedRows[rowIndex];
1278
+ return requestedRow && requestedRow.classList.contains(TABLE_CONSTANTS.classes.TABLE_ROW_EXPANDED);
1279
+ }
1280
+ /**
1281
+ * Sets the fixed class on the table element based on whether fixed headers were requested or not.
1282
+ * @param configuration The table configuration.
1283
+ */
1284
+ static setFixedHeaders(configuration) {
1285
+ if (configuration.fixedHeaders) {
1286
+ configuration.tableElement.classList.add(TABLE_CONSTANTS.classes.TABLE_FIXED);
1287
+ }
1288
+ else {
1289
+ configuration.tableElement.classList.remove(TABLE_CONSTANTS.classes.TABLE_FIXED);
1290
+ }
1291
+ }
1292
+ /**
1293
+ * Sets the table layout algorithm.
1294
+ * @param configuration The table configuration.
1295
+ */
1296
+ static setLayoutType(configuration) {
1297
+ if (configuration.layoutType === 'fixed') {
1298
+ configuration.tableElement.classList.add(TABLE_CONSTANTS.classes.TABLE_LAYOUT_FIXED);
1299
+ }
1300
+ else {
1301
+ configuration.tableElement.classList.remove(TABLE_CONSTANTS.classes.TABLE_LAYOUT_FIXED);
1302
+ }
1303
+ }
1304
+ /**
1305
+ * Ensures that any columns width styles are within the bounds of available space.
1306
+ * @param configuration The table configuration.
1307
+ */
1308
+ static normalizeColumnWidths(configuration) {
1309
+ const tableElement = configuration.tableElement;
1310
+ if (tableElement.tHead && tableElement.tHead.rows.length) {
1311
+ const cells = Array.from(tableElement.tHead.rows[0].cells);
1312
+ for (const cell of cells) {
1313
+ const expectedWidth = getComputedStyle(cell).width;
1314
+ if (cell.style.width && cell.style.width !== expectedWidth) {
1315
+ cell.style.width = expectedWidth;
1316
+ }
1317
+ }
1318
+ }
1319
+ }
1320
+ /**
1321
+ * Toggles the visibility of the resize cell indicator for all table cells.
1322
+ * @param configuration The table configuration.
1323
+ * @param columnIndex The cell index of the column being resized.
1324
+ * @param isVisible Whether to show the indicator or not.
1325
+ */
1326
+ static setColumnResizeIndicatorVisibility(configuration, columnIndex, isVisible) {
1327
+ const tableElement = configuration.tableElement;
1328
+ if (tableElement.tHead && tableElement.tHead.rows.length) {
1329
+ const rows = Array.from(tableElement.tHead.rows);
1330
+ for (const row of rows) {
1331
+ const cell = row.cells[columnIndex];
1332
+ if (cell) {
1333
+ if (isVisible) {
1334
+ cell.classList.add(TABLE_CONSTANTS.classes.TABLE_CELL_RESIZABLE);
1335
+ }
1336
+ else {
1337
+ cell.classList.remove(TABLE_CONSTANTS.classes.TABLE_CELL_RESIZABLE);
1338
+ }
1339
+ }
1340
+ }
1341
+ }
1342
+ if (tableElement.tBodies.length) {
1343
+ const rows = Array.from(tableElement.tBodies[0].rows);
1344
+ for (const row of rows) {
1345
+ const cell = row.cells[columnIndex];
1346
+ if (cell) {
1347
+ if (isVisible) {
1348
+ cell.classList.add(TABLE_CONSTANTS.classes.TABLE_CELL_RESIZABLE);
1349
+ }
1350
+ else {
1351
+ cell.classList.remove(TABLE_CONSTANTS.classes.TABLE_CELL_RESIZABLE);
1352
+ }
1353
+ }
1354
+ }
1355
+ }
1356
+ }
1357
+ static setRowClickListeners(tableElement, allowClick, clickListener, doubleClickListener) {
1358
+ const tbodyElement = tableElement.tBodies[0];
1359
+ if (!tbodyElement) {
1360
+ return;
1361
+ }
1362
+ if (allowClick) {
1363
+ TableUtils._attachRowClickListeners(tbodyElement, clickListener, doubleClickListener);
1364
+ }
1365
+ else {
1366
+ TableUtils._detachRowClickListeners(tbodyElement, clickListener, doubleClickListener);
1367
+ }
1368
+ }
1369
+ static setRowClickAttributes(tableElement, allowClick) {
1370
+ const tbodyElement = tableElement.tBodies[0];
1371
+ if (!tbodyElement) {
1372
+ return;
1373
+ }
1374
+ if (allowClick) {
1375
+ TableUtils._addRowClickAttributes(tbodyElement);
1376
+ }
1377
+ else {
1378
+ TableUtils._removeRowClickAttributes(tbodyElement);
1379
+ }
1380
+ }
1381
+ static getOwnerDocument(el) {
1382
+ return el.ownerDocument || document;
1383
+ }
1384
+ static _prepend(element, target) {
1385
+ const elementToSetBefore = target.childNodes.item(0);
1386
+ if (elementToSetBefore) {
1387
+ target.insertBefore(element, elementToSetBefore);
1388
+ }
1389
+ else {
1390
+ target.appendChild(element);
1391
+ }
1392
+ }
1393
+ static _isMac() {
1394
+ // Not checking for `MacIntel` because Apple Silicon
1395
+ return !!(navigator && navigator.platform && navigator.platform.substr(0, 3) === 'Mac');
1396
+ }
1397
+ static _renderSelectAllTemplate(selectAllTemplate, theadElement) {
1398
+ return Promise.resolve(selectAllTemplate()).then(element => {
1399
+ const lastTheadRow = theadElement.rows.item(theadElement.rows.length - 1);
1400
+ if (!lastTheadRow) {
1401
+ return;
1402
+ }
1403
+ const targetElement = lastTheadRow.cells.item(0);
1404
+ if (element && targetElement) {
1405
+ if (typeof element === 'string') {
1406
+ targetElement.innerHTML = element;
1407
+ }
1408
+ else if (element instanceof HTMLElement) {
1409
+ targetElement.appendChild(element);
1410
+ }
1411
+ targetElement.setAttribute(TABLE_CONSTANTS.attributes.CUSTOM_CELL_TEMPLATE, '');
1412
+ }
1413
+ });
1414
+ }
1415
+ }