@smwb/ui-react 2.7.0 → 2.9.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 (602) hide show
  1. package/AI_LESS_OVERRIDES.md +84 -21
  2. package/AI_THEMING.md +72 -28
  3. package/README.md +681 -0
  4. package/dist/assets/styles/less/components/appBar/appBar.entry.css +1 -1
  5. package/dist/assets/styles/less/components/avatar/avatar.entry.css +1 -1
  6. package/dist/assets/styles/less/components/button/button.entry.css +1 -1
  7. package/dist/assets/styles/less/components/card/card.entry.css +1 -1
  8. package/dist/assets/styles/less/components/checkbox/checkbox.entry.css +1 -1
  9. package/dist/assets/styles/less/components/chip/chip.entry.css +1 -1
  10. package/dist/assets/styles/less/components/commandPalette/commandPalette.entry.css +1 -0
  11. package/dist/assets/styles/less/components/composer/composer.entry.css +1 -0
  12. package/dist/assets/styles/less/components/dagView/dagView.entry.css +1 -0
  13. package/dist/assets/styles/less/components/diffStat/diffStat.entry.css +1 -0
  14. package/dist/assets/styles/less/components/kbd/kbd.entry.css +1 -0
  15. package/dist/assets/styles/less/components/list/list.entry.css +1 -1
  16. package/dist/assets/styles/less/components/menu/menu.entry.css +1 -1
  17. package/dist/assets/styles/less/components/personChip/personChip.entry.css +1 -1
  18. package/dist/assets/styles/less/components/qrCode/qrCode.entry.css +1 -0
  19. package/dist/assets/styles/less/components/radioButton/radioButton.entry.css +1 -1
  20. package/dist/assets/styles/less/components/rating/rating.entry.css +1 -1
  21. package/dist/assets/styles/less/components/selectField/selectField.entry.css +1 -1
  22. package/dist/assets/styles/less/components/sidebar/sidebar.entry.css +1 -1
  23. package/dist/assets/styles/less/components/statusDot/statusDot.entry.css +1 -0
  24. package/dist/assets/styles/less/components/swimlanes/swimlanes.entry.css +1 -0
  25. package/dist/assets/styles/less/components/tabGroups/tabGroups.entry.css +1 -0
  26. package/dist/assets/styles/less/components/table/table.entry.css +1 -1
  27. package/dist/assets/styles/less/components/tabs/tab/tab.entry.css +1 -1
  28. package/dist/assets/styles/less/components/tabs/tabPanel/tabPanel.entry.css +1 -0
  29. package/dist/assets/styles/less/components/tabs/tabs.entry.css +1 -1
  30. package/dist/assets/styles/less/components/textField/textField.entry.css +1 -1
  31. package/dist/assets/styles/less/components/thumbCard/thumbCard.entry.css +1 -1
  32. package/dist/assets/styles/less/components/toggle/toggle.entry.css +1 -1
  33. package/dist/assets/styles/less/components/treeView/treeView.entry.css +1 -1
  34. package/dist/assets/styles/less/components/typography/typography.entry.css +1 -1
  35. package/dist/assets/styles/less/connects/rt/table.entry.css +1 -1
  36. package/dist/assets/styles/less/tokens.entry.css +1 -1
  37. package/dist/components/base/icon/icon.d.ts +6 -2
  38. package/dist/components/base/icon/icon.js +49 -37
  39. package/dist/components/base/icon/icon.js.map +1 -1
  40. package/dist/components/base/ripple/ripple.d.ts +3 -0
  41. package/dist/components/base/ripple/ripple.js +38 -23
  42. package/dist/components/base/ripple/ripple.js.map +1 -1
  43. package/dist/components/dataDisplay/avatar/avatar.d.ts +4 -0
  44. package/dist/components/dataDisplay/avatar/avatar.js +50 -37
  45. package/dist/components/dataDisplay/avatar/avatar.js.map +1 -1
  46. package/dist/components/dataDisplay/badge/badge.js +37 -28
  47. package/dist/components/dataDisplay/badge/badge.js.map +1 -1
  48. package/dist/components/dataDisplay/card/card.d.ts +30 -2
  49. package/dist/components/dataDisplay/card/card.js +50 -23
  50. package/dist/components/dataDisplay/card/card.js.map +1 -1
  51. package/dist/components/dataDisplay/carousel/carousel.js +70 -70
  52. package/dist/components/dataDisplay/carousel/carousel.js.map +1 -1
  53. package/dist/components/dataDisplay/chart/chart.d.ts +2 -0
  54. package/dist/components/dataDisplay/chart/chart.js +66 -53
  55. package/dist/components/dataDisplay/chart/chart.js.map +1 -1
  56. package/dist/components/dataDisplay/chat/chat.d.ts +43 -1
  57. package/dist/components/dataDisplay/chat/chat.js +179 -150
  58. package/dist/components/dataDisplay/chat/chat.js.map +1 -1
  59. package/dist/components/dataDisplay/chat/chatComposer.d.ts +17 -0
  60. package/dist/components/dataDisplay/chat/chatComposer.js +31 -29
  61. package/dist/components/dataDisplay/chat/chatComposer.js.map +1 -1
  62. package/dist/components/dataDisplay/chat/chatIconButton.d.ts +1 -1
  63. package/dist/components/dataDisplay/chat/chatIconButton.js +30 -26
  64. package/dist/components/dataDisplay/chat/chatIconButton.js.map +1 -1
  65. package/dist/components/dataDisplay/chat/chatLayout.d.ts +3 -1
  66. package/dist/components/dataDisplay/chat/chatLayout.js +56 -55
  67. package/dist/components/dataDisplay/chat/chatLayout.js.map +1 -1
  68. package/dist/components/dataDisplay/chat/chatOverlayLayout.d.ts +3 -1
  69. package/dist/components/dataDisplay/chat/index.d.ts +1 -1
  70. package/dist/components/dataDisplay/chat/utils.d.ts +14 -0
  71. package/dist/components/dataDisplay/chat/utils.js.map +1 -1
  72. package/dist/components/dataDisplay/chip/chip.d.ts +31 -0
  73. package/dist/components/dataDisplay/chip/chip.js +110 -83
  74. package/dist/components/dataDisplay/chip/chip.js.map +1 -1
  75. package/dist/components/dataDisplay/chipGroup/chipGroup.js +34 -30
  76. package/dist/components/dataDisplay/chipGroup/chipGroup.js.map +1 -1
  77. package/dist/components/dataDisplay/dagView/dagLayout.d.ts +74 -0
  78. package/dist/components/dataDisplay/dagView/dagLayout.js +289 -0
  79. package/dist/components/dataDisplay/dagView/dagLayout.js.map +1 -0
  80. package/dist/components/dataDisplay/dagView/dagView.d.ts +157 -0
  81. package/dist/components/dataDisplay/dagView/dagView.js +543 -0
  82. package/dist/components/dataDisplay/dagView/dagView.js.map +1 -0
  83. package/dist/components/dataDisplay/dagView/index.d.ts +4 -0
  84. package/dist/components/dataDisplay/dagView/panZoom.d.ts +75 -0
  85. package/dist/components/dataDisplay/dagView/panZoom.js +171 -0
  86. package/dist/components/dataDisplay/dagView/panZoom.js.map +1 -0
  87. package/dist/components/dataDisplay/descriptionList/descriptionList.d.ts +11 -3
  88. package/dist/components/dataDisplay/descriptionList/descriptionList.js.map +1 -1
  89. package/dist/components/dataDisplay/diffStat/diffStat.d.ts +54 -0
  90. package/dist/components/dataDisplay/diffStat/diffStat.js +63 -0
  91. package/dist/components/dataDisplay/diffStat/diffStat.js.map +1 -0
  92. package/dist/components/dataDisplay/diffStat/index.d.ts +2 -0
  93. package/dist/components/dataDisplay/expansionPanel/expansionPanel.js +143 -98
  94. package/dist/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
  95. package/dist/components/dataDisplay/kanban/kanban.d.ts +6 -0
  96. package/dist/components/dataDisplay/kanban/kanban.js +46 -35
  97. package/dist/components/dataDisplay/kanban/kanban.js.map +1 -1
  98. package/dist/components/dataDisplay/kbd/index.d.ts +4 -0
  99. package/dist/components/dataDisplay/kbd/kbd.d.ts +40 -0
  100. package/dist/components/dataDisplay/kbd/kbd.js +27 -0
  101. package/dist/components/dataDisplay/kbd/kbd.js.map +1 -0
  102. package/dist/components/dataDisplay/kbd/kbdKeys.d.ts +18 -0
  103. package/dist/components/dataDisplay/kbd/kbdKeys.js +72 -0
  104. package/dist/components/dataDisplay/kbd/kbdKeys.js.map +1 -0
  105. package/dist/components/dataDisplay/lazyImage/lazyImage.js +31 -30
  106. package/dist/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
  107. package/dist/components/dataDisplay/list/list.d.ts +2 -0
  108. package/dist/components/dataDisplay/list/list.js +15 -14
  109. package/dist/components/dataDisplay/list/list.js.map +1 -1
  110. package/dist/components/dataDisplay/list/listItem.d.ts +34 -0
  111. package/dist/components/dataDisplay/list/listItem.js +47 -24
  112. package/dist/components/dataDisplay/list/listItem.js.map +1 -1
  113. package/dist/components/dataDisplay/meter/meter.d.ts +2 -0
  114. package/dist/components/dataDisplay/meter/meter.js +24 -23
  115. package/dist/components/dataDisplay/meter/meter.js.map +1 -1
  116. package/dist/components/dataDisplay/personChip/personChip.d.ts +2 -0
  117. package/dist/components/dataDisplay/personChip/personChip.js +39 -27
  118. package/dist/components/dataDisplay/personChip/personChip.js.map +1 -1
  119. package/dist/components/dataDisplay/qrCode/index.d.ts +2 -0
  120. package/dist/components/dataDisplay/qrCode/qrCode.d.ts +28 -0
  121. package/dist/components/dataDisplay/qrCode/qrCode.js +78 -0
  122. package/dist/components/dataDisplay/qrCode/qrCode.js.map +1 -0
  123. package/dist/components/dataDisplay/qrCode/qrCodePath.d.ts +7 -0
  124. package/dist/components/dataDisplay/qrCode/qrCodePath.js +20 -0
  125. package/dist/components/dataDisplay/qrCode/qrCodePath.js.map +1 -0
  126. package/dist/components/dataDisplay/stat/stat.d.ts +2 -0
  127. package/dist/components/dataDisplay/stat/stat.js +25 -13
  128. package/dist/components/dataDisplay/stat/stat.js.map +1 -1
  129. package/dist/components/dataDisplay/statusDot/index.d.ts +2 -0
  130. package/dist/components/dataDisplay/statusDot/statusDot.d.ts +35 -0
  131. package/dist/components/dataDisplay/statusDot/statusDot.js +30 -0
  132. package/dist/components/dataDisplay/statusDot/statusDot.js.map +1 -0
  133. package/dist/components/dataDisplay/swimlanes/index.d.ts +2 -0
  134. package/dist/components/dataDisplay/swimlanes/swimlanes.d.ts +53 -0
  135. package/dist/components/dataDisplay/swimlanes/swimlanes.js +357 -0
  136. package/dist/components/dataDisplay/swimlanes/swimlanes.js.map +1 -0
  137. package/dist/components/dataDisplay/table/table.d.ts +16 -1
  138. package/dist/components/dataDisplay/table/table.js +40 -36
  139. package/dist/components/dataDisplay/table/table.js.map +1 -1
  140. package/dist/components/dataDisplay/table/tableBody.js +10 -4
  141. package/dist/components/dataDisplay/table/tableBody.js.map +1 -1
  142. package/dist/components/dataDisplay/table/tableCell.d.ts +10 -2
  143. package/dist/components/dataDisplay/table/tableCell.js +20 -13
  144. package/dist/components/dataDisplay/table/tableCell.js.map +1 -1
  145. package/dist/components/dataDisplay/table/tableColumns.d.ts +83 -0
  146. package/dist/components/dataDisplay/table/tableColumns.js +112 -0
  147. package/dist/components/dataDisplay/table/tableColumns.js.map +1 -0
  148. package/dist/components/dataDisplay/table/tableHead.js +9 -3
  149. package/dist/components/dataDisplay/table/tableHead.js.map +1 -1
  150. package/dist/components/dataDisplay/table/tableHeadCell.d.ts +24 -3
  151. package/dist/components/dataDisplay/table/tableHeadCell.js +60 -65
  152. package/dist/components/dataDisplay/table/tableHeadCell.js.map +1 -1
  153. package/dist/components/dataDisplay/table/tableRow.d.ts +3 -1
  154. package/dist/components/dataDisplay/table/tableRow.js +28 -16
  155. package/dist/components/dataDisplay/table/tableRow.js.map +1 -1
  156. package/dist/components/dataDisplay/thumbCard/thumbCard.d.ts +44 -3
  157. package/dist/components/dataDisplay/thumbCard/thumbCard.js +79 -59
  158. package/dist/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
  159. package/dist/components/dataDisplay/treeView/treeView.d.ts +19 -1
  160. package/dist/components/dataDisplay/treeView/treeView.js +113 -91
  161. package/dist/components/dataDisplay/treeView/treeView.js.map +1 -1
  162. package/dist/components/feedBack/emptyState/emptyState.d.ts +2 -0
  163. package/dist/components/feedBack/emptyState/emptyState.js +22 -12
  164. package/dist/components/feedBack/emptyState/emptyState.js.map +1 -1
  165. package/dist/components/feedBack/message/message.d.ts +2 -0
  166. package/dist/components/feedBack/message/message.js +30 -19
  167. package/dist/components/feedBack/message/message.js.map +1 -1
  168. package/dist/components/feedBack/modal/modal.js +84 -63
  169. package/dist/components/feedBack/modal/modal.js.map +1 -1
  170. package/dist/components/feedBack/skeleton/skeleton.d.ts +10 -2
  171. package/dist/components/feedBack/skeleton/skeleton.js +37 -34
  172. package/dist/components/feedBack/skeleton/skeleton.js.map +1 -1
  173. package/dist/components/feedBack/snackbar/snackbar.js +104 -103
  174. package/dist/components/feedBack/snackbar/snackbar.js.map +1 -1
  175. package/dist/components/feedBack/tooltip/tooltip.d.ts +9 -1
  176. package/dist/components/feedBack/tooltip/tooltip.js +67 -47
  177. package/dist/components/feedBack/tooltip/tooltip.js.map +1 -1
  178. package/dist/components/inputs/button/button.d.ts +15 -1
  179. package/dist/components/inputs/button/button.js +73 -63
  180. package/dist/components/inputs/button/button.js.map +1 -1
  181. package/dist/components/inputs/buttonGroups/buttonGroup.d.ts +2 -0
  182. package/dist/components/inputs/buttonGroups/buttonGroup.js +40 -36
  183. package/dist/components/inputs/buttonGroups/buttonGroup.js.map +1 -1
  184. package/dist/components/inputs/checkbox/checkbox.d.ts +10 -0
  185. package/dist/components/inputs/checkbox/checkbox.js +84 -59
  186. package/dist/components/inputs/checkbox/checkbox.js.map +1 -1
  187. package/dist/components/inputs/composer/composer.d.ts +149 -0
  188. package/dist/components/inputs/composer/composer.js +219 -0
  189. package/dist/components/inputs/composer/composer.js.map +1 -0
  190. package/dist/components/inputs/composer/composerFiles.d.ts +26 -0
  191. package/dist/components/inputs/composer/composerFiles.js +19 -0
  192. package/dist/components/inputs/composer/composerFiles.js.map +1 -0
  193. package/dist/components/inputs/composer/composerKeys.d.ts +29 -0
  194. package/dist/components/inputs/composer/composerKeys.js +7 -0
  195. package/dist/components/inputs/composer/composerKeys.js.map +1 -0
  196. package/dist/components/inputs/composer/index.d.ts +3 -0
  197. package/dist/components/inputs/datePicker/datePicker.js +170 -164
  198. package/dist/components/inputs/datePicker/datePicker.js.map +1 -1
  199. package/dist/components/inputs/datePicker/datePickerDay.d.ts +1 -1
  200. package/dist/components/inputs/datePicker/datePickerDay.js +52 -44
  201. package/dist/components/inputs/datePicker/datePickerDay.js.map +1 -1
  202. package/dist/components/inputs/datePicker/datePickerIconButton.d.ts +1 -1
  203. package/dist/components/inputs/datePicker/datePickerIconButton.js +32 -28
  204. package/dist/components/inputs/datePicker/datePickerIconButton.js.map +1 -1
  205. package/dist/components/inputs/dateTimePicker/dateTimePicker.js +160 -154
  206. package/dist/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
  207. package/dist/components/inputs/floatingButton/floatingButton.js +32 -30
  208. package/dist/components/inputs/floatingButton/floatingButton.js.map +1 -1
  209. package/dist/components/inputs/radioButton/radioButton.d.ts +9 -0
  210. package/dist/components/inputs/radioButton/radioButton.js +77 -58
  211. package/dist/components/inputs/radioButton/radioButton.js.map +1 -1
  212. package/dist/components/inputs/rating/rating.d.ts +8 -0
  213. package/dist/components/inputs/rating/rating.js +85 -70
  214. package/dist/components/inputs/rating/rating.js.map +1 -1
  215. package/dist/components/inputs/selectField/dropdownMenu.d.ts +20 -1
  216. package/dist/components/inputs/selectField/dropdownMenu.js +266 -113
  217. package/dist/components/inputs/selectField/dropdownMenu.js.map +1 -1
  218. package/dist/components/inputs/selectField/optionNavigation.d.ts +17 -0
  219. package/dist/components/inputs/selectField/optionNavigation.js +38 -0
  220. package/dist/components/inputs/selectField/optionNavigation.js.map +1 -0
  221. package/dist/components/inputs/selectField/selectField.d.ts +31 -1
  222. package/dist/components/inputs/selectField/selectField.js +358 -218
  223. package/dist/components/inputs/selectField/selectField.js.map +1 -1
  224. package/dist/components/inputs/slider/slider.d.ts +22 -1
  225. package/dist/components/inputs/slider/slider.js +330 -261
  226. package/dist/components/inputs/slider/slider.js.map +1 -1
  227. package/dist/components/inputs/textField/textField.d.ts +7 -0
  228. package/dist/components/inputs/textField/textField.js +118 -100
  229. package/dist/components/inputs/textField/textField.js.map +1 -1
  230. package/dist/components/inputs/textField/textFieldWrapper.d.ts +15 -1
  231. package/dist/components/inputs/textField/textFieldWrapper.js +45 -34
  232. package/dist/components/inputs/textField/textFieldWrapper.js.map +1 -1
  233. package/dist/components/inputs/timePicker/timePicker.js +91 -85
  234. package/dist/components/inputs/timePicker/timePicker.js.map +1 -1
  235. package/dist/components/inputs/toggle/toggle.d.ts +4 -0
  236. package/dist/components/inputs/toggle/toggle.js +80 -61
  237. package/dist/components/inputs/toggle/toggle.js.map +1 -1
  238. package/dist/components/inputs/valueSlider/valueSlider.d.ts +12 -0
  239. package/dist/components/inputs/valueSlider/valueSlider.js +23 -22
  240. package/dist/components/inputs/valueSlider/valueSlider.js.map +1 -1
  241. package/dist/components/layout/appLayout/appLayout.d.ts +2 -0
  242. package/dist/components/layout/appLayout/appLayout.js +25 -24
  243. package/dist/components/layout/appLayout/appLayout.js.map +1 -1
  244. package/dist/components/layout/divider/divider.d.ts +2 -0
  245. package/dist/components/layout/divider/divider.js +23 -22
  246. package/dist/components/layout/divider/divider.js.map +1 -1
  247. package/dist/components/layout/floatingWindow/floatingWindow.d.ts +2 -0
  248. package/dist/components/layout/floatingWindow/floatingWindow.js +145 -139
  249. package/dist/components/layout/floatingWindow/floatingWindow.js.map +1 -1
  250. package/dist/components/layout/grid/grid.d.ts +12 -1
  251. package/dist/components/layout/grid/grid.js +51 -36
  252. package/dist/components/layout/grid/grid.js.map +1 -1
  253. package/dist/components/layout/page/page.d.ts +2 -0
  254. package/dist/components/layout/page/page.js +16 -8
  255. package/dist/components/layout/page/page.js.map +1 -1
  256. package/dist/components/layout/pageHeader/pageHeader.d.ts +2 -0
  257. package/dist/components/layout/pageHeader/pageHeader.js +22 -13
  258. package/dist/components/layout/pageHeader/pageHeader.js.map +1 -1
  259. package/dist/components/layout/sectionHeader/sectionHeader.d.ts +2 -0
  260. package/dist/components/layout/sectionHeader/sectionHeader.js +37 -27
  261. package/dist/components/layout/sectionHeader/sectionHeader.js.map +1 -1
  262. package/dist/components/layout/sheet/sheet.d.ts +14 -0
  263. package/dist/components/layout/sheet/sheet.js +148 -132
  264. package/dist/components/layout/sheet/sheet.js.map +1 -1
  265. package/dist/components/layout/stack/stack.d.ts +2 -0
  266. package/dist/components/layout/stack/stack.js +29 -17
  267. package/dist/components/layout/stack/stack.js.map +1 -1
  268. package/dist/components/layout/tabGroups/index.d.ts +4 -0
  269. package/dist/components/layout/tabGroups/tabGroups.d.ts +94 -0
  270. package/dist/components/layout/tabGroups/tabGroups.js +783 -0
  271. package/dist/components/layout/tabGroups/tabGroups.js.map +1 -0
  272. package/dist/components/layout/tabGroups/tabGroupsFocus.d.ts +55 -0
  273. package/dist/components/layout/tabGroups/tabGroupsFocus.js +199 -0
  274. package/dist/components/layout/tabGroups/tabGroupsFocus.js.map +1 -0
  275. package/dist/components/layout/tabGroups/tabGroupsLayout.d.ts +250 -0
  276. package/dist/components/layout/tabGroups/tabGroupsLayout.js +497 -0
  277. package/dist/components/layout/tabGroups/tabGroupsLayout.js.map +1 -0
  278. package/dist/components/navigation/appBar/appBar.d.ts +24 -0
  279. package/dist/components/navigation/appBar/appBar.js +39 -33
  280. package/dist/components/navigation/appBar/appBar.js.map +1 -1
  281. package/dist/components/navigation/bottomBar/bottomBar.js +81 -77
  282. package/dist/components/navigation/bottomBar/bottomBar.js.map +1 -1
  283. package/dist/components/navigation/breadcrumbs/breadcrumbs.d.ts +2 -0
  284. package/dist/components/navigation/breadcrumbs/breadcrumbs.js +29 -27
  285. package/dist/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
  286. package/dist/components/navigation/commandPalette/commandPalette.d.ts +111 -0
  287. package/dist/components/navigation/commandPalette/commandPalette.js +337 -0
  288. package/dist/components/navigation/commandPalette/commandPalette.js.map +1 -0
  289. package/dist/components/navigation/commandPalette/commandPaletteFilter.d.ts +11 -0
  290. package/dist/components/navigation/commandPalette/commandPaletteFilter.js +16 -0
  291. package/dist/components/navigation/commandPalette/commandPaletteFilter.js.map +1 -0
  292. package/dist/components/navigation/commandPalette/commandPaletteNavigation.d.ts +13 -0
  293. package/dist/components/navigation/commandPalette/commandPaletteNavigation.js +38 -0
  294. package/dist/components/navigation/commandPalette/commandPaletteNavigation.js.map +1 -0
  295. package/dist/components/navigation/commandPalette/commandPaletteTypes.d.ts +39 -0
  296. package/dist/components/navigation/commandPalette/index.d.ts +4 -0
  297. package/dist/components/navigation/menu/menu.d.ts +12 -0
  298. package/dist/components/navigation/menu/menu.js.map +1 -1
  299. package/dist/components/navigation/menu/menuContext.d.ts +2 -0
  300. package/dist/components/navigation/menu/menuContext.js.map +1 -1
  301. package/dist/components/navigation/menu/menuFloating.js +42 -30
  302. package/dist/components/navigation/menu/menuFloating.js.map +1 -1
  303. package/dist/components/navigation/menu/menuItem.d.ts +4 -0
  304. package/dist/components/navigation/menu/menuItem.js +60 -48
  305. package/dist/components/navigation/menu/menuItem.js.map +1 -1
  306. package/dist/components/navigation/menu/menuList.d.ts +5 -1
  307. package/dist/components/navigation/menu/menuList.js +30 -19
  308. package/dist/components/navigation/menu/menuList.js.map +1 -1
  309. package/dist/components/navigation/menu/menuSubmenu.js +53 -40
  310. package/dist/components/navigation/menu/menuSubmenu.js.map +1 -1
  311. package/dist/components/navigation/pagination/pagination.d.ts +2 -0
  312. package/dist/components/navigation/pagination/pagination.js +51 -49
  313. package/dist/components/navigation/pagination/pagination.js.map +1 -1
  314. package/dist/components/navigation/sidebar/sidebar.d.ts +10 -0
  315. package/dist/components/navigation/sidebar/sidebar.js +65 -62
  316. package/dist/components/navigation/sidebar/sidebar.js.map +1 -1
  317. package/dist/components/navigation/stepper/stepper.d.ts +2 -0
  318. package/dist/components/navigation/stepper/stepper.js +37 -28
  319. package/dist/components/navigation/stepper/stepper.js.map +1 -1
  320. package/dist/components/navigation/tabs/index.d.ts +3 -1
  321. package/dist/components/navigation/tabs/tab/tab.d.ts +88 -1
  322. package/dist/components/navigation/tabs/tab/tab.js +116 -35
  323. package/dist/components/navigation/tabs/tab/tab.js.map +1 -1
  324. package/dist/components/navigation/tabs/tabPanel/tabPanel.d.ts +19 -0
  325. package/dist/components/navigation/tabs/tabPanel/tabPanel.js +27 -0
  326. package/dist/components/navigation/tabs/tabPanel/tabPanel.js.map +1 -0
  327. package/dist/components/navigation/tabs/tabs.d.ts +80 -4
  328. package/dist/components/navigation/tabs/tabs.js +369 -148
  329. package/dist/components/navigation/tabs/tabs.js.map +1 -1
  330. package/dist/components/navigation/tabs/tabs.utils.d.ts +20 -0
  331. package/dist/components/navigation/tabs/tabs.utils.js +11 -0
  332. package/dist/components/navigation/tabs/tabs.utils.js.map +1 -0
  333. package/dist/components/navigation/tabs/tabsContext.d.ts +11 -0
  334. package/dist/components/navigation/tabs/tabsContext.js +6 -0
  335. package/dist/components/navigation/tabs/tabsContext.js.map +1 -0
  336. package/dist/connects/rt/table/headerCellRenderer.d.ts +4 -1
  337. package/dist/connects/rt/table/headerCellRenderer.js +45 -15
  338. package/dist/connects/rt/table/headerCellRenderer.js.map +1 -1
  339. package/dist/connects/rt/table/table.d.ts +15 -1
  340. package/dist/connects/rt/table/table.js +125 -131
  341. package/dist/connects/rt/table/table.js.map +1 -1
  342. package/dist/headless/components/base/icon/icon.js +49 -37
  343. package/dist/headless/components/base/icon/icon.js.map +1 -1
  344. package/dist/headless/components/base/ripple/ripple.js +42 -27
  345. package/dist/headless/components/base/ripple/ripple.js.map +1 -1
  346. package/dist/headless/components/dataDisplay/avatar/avatar.js +51 -38
  347. package/dist/headless/components/dataDisplay/avatar/avatar.js.map +1 -1
  348. package/dist/headless/components/dataDisplay/badge/badge.js +37 -28
  349. package/dist/headless/components/dataDisplay/badge/badge.js.map +1 -1
  350. package/dist/headless/components/dataDisplay/card/card.js +50 -23
  351. package/dist/headless/components/dataDisplay/card/card.js.map +1 -1
  352. package/dist/headless/components/dataDisplay/carousel/carousel.js +55 -55
  353. package/dist/headless/components/dataDisplay/carousel/carousel.js.map +1 -1
  354. package/dist/headless/components/dataDisplay/chat/chat.js +179 -150
  355. package/dist/headless/components/dataDisplay/chat/chat.js.map +1 -1
  356. package/dist/headless/components/dataDisplay/chat/chatComposer.js +31 -29
  357. package/dist/headless/components/dataDisplay/chat/chatComposer.js.map +1 -1
  358. package/dist/headless/components/dataDisplay/chat/chatIconButton.js +30 -26
  359. package/dist/headless/components/dataDisplay/chat/chatIconButton.js.map +1 -1
  360. package/dist/headless/components/dataDisplay/chat/chatLayout.js +56 -55
  361. package/dist/headless/components/dataDisplay/chat/chatLayout.js.map +1 -1
  362. package/dist/headless/components/dataDisplay/chat/utils.js.map +1 -1
  363. package/dist/headless/components/dataDisplay/chip/chip.js +108 -81
  364. package/dist/headless/components/dataDisplay/chip/chip.js.map +1 -1
  365. package/dist/headless/components/dataDisplay/chipGroup/chipGroup.js +35 -31
  366. package/dist/headless/components/dataDisplay/chipGroup/chipGroup.js.map +1 -1
  367. package/dist/headless/components/dataDisplay/dagView/dagLayout.js +289 -0
  368. package/dist/headless/components/dataDisplay/dagView/dagLayout.js.map +1 -0
  369. package/dist/headless/components/dataDisplay/dagView/dagView.js +541 -0
  370. package/dist/headless/components/dataDisplay/dagView/dagView.js.map +1 -0
  371. package/dist/headless/components/dataDisplay/dagView/panZoom.js +171 -0
  372. package/dist/headless/components/dataDisplay/dagView/panZoom.js.map +1 -0
  373. package/dist/headless/components/dataDisplay/descriptionList/descriptionList.js.map +1 -1
  374. package/dist/headless/components/dataDisplay/diffStat/diffStat.js +61 -0
  375. package/dist/headless/components/dataDisplay/diffStat/diffStat.js.map +1 -0
  376. package/dist/headless/components/dataDisplay/expansionPanel/expansionPanel.js +143 -98
  377. package/dist/headless/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
  378. package/dist/headless/components/dataDisplay/kanban/kanban.js +45 -34
  379. package/dist/headless/components/dataDisplay/kanban/kanban.js.map +1 -1
  380. package/dist/headless/components/dataDisplay/kbd/kbd.js +25 -0
  381. package/dist/headless/components/dataDisplay/kbd/kbd.js.map +1 -0
  382. package/dist/headless/components/dataDisplay/kbd/kbdKeys.js +72 -0
  383. package/dist/headless/components/dataDisplay/kbd/kbdKeys.js.map +1 -0
  384. package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js +30 -29
  385. package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
  386. package/dist/headless/components/dataDisplay/list/list.js +15 -14
  387. package/dist/headless/components/dataDisplay/list/list.js.map +1 -1
  388. package/dist/headless/components/dataDisplay/list/listItem.js +47 -24
  389. package/dist/headless/components/dataDisplay/list/listItem.js.map +1 -1
  390. package/dist/headless/components/dataDisplay/meter/meter.js +19 -18
  391. package/dist/headless/components/dataDisplay/meter/meter.js.map +1 -1
  392. package/dist/headless/components/dataDisplay/personChip/personChip.js +39 -27
  393. package/dist/headless/components/dataDisplay/personChip/personChip.js.map +1 -1
  394. package/dist/headless/components/dataDisplay/qrCode/qrCode.js +76 -0
  395. package/dist/headless/components/dataDisplay/qrCode/qrCode.js.map +1 -0
  396. package/dist/headless/components/dataDisplay/qrCode/qrCodePath.js +20 -0
  397. package/dist/headless/components/dataDisplay/qrCode/qrCodePath.js.map +1 -0
  398. package/dist/headless/components/dataDisplay/stat/stat.js +27 -15
  399. package/dist/headless/components/dataDisplay/stat/stat.js.map +1 -1
  400. package/dist/headless/components/dataDisplay/statusDot/statusDot.js +28 -0
  401. package/dist/headless/components/dataDisplay/statusDot/statusDot.js.map +1 -0
  402. package/dist/headless/components/dataDisplay/swimlanes/swimlanes.js +355 -0
  403. package/dist/headless/components/dataDisplay/swimlanes/swimlanes.js.map +1 -0
  404. package/dist/headless/components/dataDisplay/table/table.js +40 -36
  405. package/dist/headless/components/dataDisplay/table/table.js.map +1 -1
  406. package/dist/headless/components/dataDisplay/table/tableBody.js +10 -4
  407. package/dist/headless/components/dataDisplay/table/tableBody.js.map +1 -1
  408. package/dist/headless/components/dataDisplay/table/tableCell.js +20 -13
  409. package/dist/headless/components/dataDisplay/table/tableCell.js.map +1 -1
  410. package/dist/headless/components/dataDisplay/table/tableColumns.js +112 -0
  411. package/dist/headless/components/dataDisplay/table/tableColumns.js.map +1 -0
  412. package/dist/headless/components/dataDisplay/table/tableHead.js +9 -3
  413. package/dist/headless/components/dataDisplay/table/tableHead.js.map +1 -1
  414. package/dist/headless/components/dataDisplay/table/tableHeadCell.js +60 -65
  415. package/dist/headless/components/dataDisplay/table/tableHeadCell.js.map +1 -1
  416. package/dist/headless/components/dataDisplay/table/tableRow.js +28 -16
  417. package/dist/headless/components/dataDisplay/table/tableRow.js.map +1 -1
  418. package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js +78 -58
  419. package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
  420. package/dist/headless/components/dataDisplay/treeView/treeView.js +113 -91
  421. package/dist/headless/components/dataDisplay/treeView/treeView.js.map +1 -1
  422. package/dist/headless/components/feedBack/emptyState/emptyState.js +21 -11
  423. package/dist/headless/components/feedBack/emptyState/emptyState.js.map +1 -1
  424. package/dist/headless/components/feedBack/message/message.js +31 -20
  425. package/dist/headless/components/feedBack/message/message.js.map +1 -1
  426. package/dist/headless/components/feedBack/modal/modal.js +84 -63
  427. package/dist/headless/components/feedBack/modal/modal.js.map +1 -1
  428. package/dist/headless/components/feedBack/skeleton/skeleton.js +38 -35
  429. package/dist/headless/components/feedBack/skeleton/skeleton.js.map +1 -1
  430. package/dist/headless/components/feedBack/snackbar/snackbar.js +108 -107
  431. package/dist/headless/components/feedBack/snackbar/snackbar.js.map +1 -1
  432. package/dist/headless/components/feedBack/tooltip/tooltip.js +67 -47
  433. package/dist/headless/components/feedBack/tooltip/tooltip.js.map +1 -1
  434. package/dist/headless/components/inputs/button/button.js +73 -63
  435. package/dist/headless/components/inputs/button/button.js.map +1 -1
  436. package/dist/headless/components/inputs/buttonGroups/buttonGroup.js +40 -36
  437. package/dist/headless/components/inputs/buttonGroups/buttonGroup.js.map +1 -1
  438. package/dist/headless/components/inputs/checkbox/checkbox.js +85 -60
  439. package/dist/headless/components/inputs/checkbox/checkbox.js.map +1 -1
  440. package/dist/headless/components/inputs/composer/composer.js +217 -0
  441. package/dist/headless/components/inputs/composer/composer.js.map +1 -0
  442. package/dist/headless/components/inputs/composer/composerFiles.js +19 -0
  443. package/dist/headless/components/inputs/composer/composerFiles.js.map +1 -0
  444. package/dist/headless/components/inputs/composer/composerKeys.js +7 -0
  445. package/dist/headless/components/inputs/composer/composerKeys.js.map +1 -0
  446. package/dist/headless/components/inputs/datePicker/datePicker.js +170 -164
  447. package/dist/headless/components/inputs/datePicker/datePicker.js.map +1 -1
  448. package/dist/headless/components/inputs/datePicker/datePickerDay.js +52 -44
  449. package/dist/headless/components/inputs/datePicker/datePickerDay.js.map +1 -1
  450. package/dist/headless/components/inputs/datePicker/datePickerIconButton.js +32 -28
  451. package/dist/headless/components/inputs/datePicker/datePickerIconButton.js.map +1 -1
  452. package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js +160 -154
  453. package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
  454. package/dist/headless/components/inputs/floatingButton/floatingButton.js +32 -30
  455. package/dist/headless/components/inputs/floatingButton/floatingButton.js.map +1 -1
  456. package/dist/headless/components/inputs/radioButton/radioButton.js +77 -58
  457. package/dist/headless/components/inputs/radioButton/radioButton.js.map +1 -1
  458. package/dist/headless/components/inputs/rating/rating.js +85 -70
  459. package/dist/headless/components/inputs/rating/rating.js.map +1 -1
  460. package/dist/headless/components/inputs/selectField/dropdownMenu.js +266 -113
  461. package/dist/headless/components/inputs/selectField/dropdownMenu.js.map +1 -1
  462. package/dist/headless/components/inputs/selectField/optionNavigation.js +38 -0
  463. package/dist/headless/components/inputs/selectField/optionNavigation.js.map +1 -0
  464. package/dist/headless/components/inputs/selectField/selectField.js +358 -218
  465. package/dist/headless/components/inputs/selectField/selectField.js.map +1 -1
  466. package/dist/headless/components/inputs/slider/slider.js +330 -261
  467. package/dist/headless/components/inputs/slider/slider.js.map +1 -1
  468. package/dist/headless/components/inputs/textField/textField.js +118 -100
  469. package/dist/headless/components/inputs/textField/textField.js.map +1 -1
  470. package/dist/headless/components/inputs/textField/textFieldWrapper.js +45 -34
  471. package/dist/headless/components/inputs/textField/textFieldWrapper.js.map +1 -1
  472. package/dist/headless/components/inputs/timePicker/timePicker.js +91 -85
  473. package/dist/headless/components/inputs/timePicker/timePicker.js.map +1 -1
  474. package/dist/headless/components/inputs/toggle/toggle.js +79 -60
  475. package/dist/headless/components/inputs/toggle/toggle.js.map +1 -1
  476. package/dist/headless/components/inputs/valueSlider/valueSlider.js +25 -24
  477. package/dist/headless/components/inputs/valueSlider/valueSlider.js.map +1 -1
  478. package/dist/headless/components/layout/appLayout/appLayout.js +27 -26
  479. package/dist/headless/components/layout/appLayout/appLayout.js.map +1 -1
  480. package/dist/headless/components/layout/divider/divider.js +18 -17
  481. package/dist/headless/components/layout/divider/divider.js.map +1 -1
  482. package/dist/headless/components/layout/floatingWindow/floatingWindow.js +145 -139
  483. package/dist/headless/components/layout/floatingWindow/floatingWindow.js.map +1 -1
  484. package/dist/headless/components/layout/grid/grid.js +48 -33
  485. package/dist/headless/components/layout/grid/grid.js.map +1 -1
  486. package/dist/headless/components/layout/page/page.js +15 -7
  487. package/dist/headless/components/layout/page/page.js.map +1 -1
  488. package/dist/headless/components/layout/pageHeader/pageHeader.js +20 -11
  489. package/dist/headless/components/layout/pageHeader/pageHeader.js.map +1 -1
  490. package/dist/headless/components/layout/sectionHeader/sectionHeader.js +36 -26
  491. package/dist/headless/components/layout/sectionHeader/sectionHeader.js.map +1 -1
  492. package/dist/headless/components/layout/sheet/sheet.js +156 -140
  493. package/dist/headless/components/layout/sheet/sheet.js.map +1 -1
  494. package/dist/headless/components/layout/stack/stack.js +29 -17
  495. package/dist/headless/components/layout/stack/stack.js.map +1 -1
  496. package/dist/headless/components/layout/tabGroups/tabGroups.js +781 -0
  497. package/dist/headless/components/layout/tabGroups/tabGroups.js.map +1 -0
  498. package/dist/headless/components/layout/tabGroups/tabGroupsFocus.js +199 -0
  499. package/dist/headless/components/layout/tabGroups/tabGroupsFocus.js.map +1 -0
  500. package/dist/headless/components/layout/tabGroups/tabGroupsLayout.js +497 -0
  501. package/dist/headless/components/layout/tabGroups/tabGroupsLayout.js.map +1 -0
  502. package/dist/headless/components/navigation/appBar/appBar.js +35 -29
  503. package/dist/headless/components/navigation/appBar/appBar.js.map +1 -1
  504. package/dist/headless/components/navigation/bottomBar/bottomBar.js +81 -77
  505. package/dist/headless/components/navigation/bottomBar/bottomBar.js.map +1 -1
  506. package/dist/headless/components/navigation/breadcrumbs/breadcrumbs.js +32 -30
  507. package/dist/headless/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
  508. package/dist/headless/components/navigation/commandPalette/commandPalette.js +335 -0
  509. package/dist/headless/components/navigation/commandPalette/commandPalette.js.map +1 -0
  510. package/dist/headless/components/navigation/commandPalette/commandPaletteFilter.js +16 -0
  511. package/dist/headless/components/navigation/commandPalette/commandPaletteFilter.js.map +1 -0
  512. package/dist/headless/components/navigation/commandPalette/commandPaletteNavigation.js +38 -0
  513. package/dist/headless/components/navigation/commandPalette/commandPaletteNavigation.js.map +1 -0
  514. package/dist/headless/components/navigation/menu/menu.js.map +1 -1
  515. package/dist/headless/components/navigation/menu/menuContext.js.map +1 -1
  516. package/dist/headless/components/navigation/menu/menuFloating.js +42 -30
  517. package/dist/headless/components/navigation/menu/menuFloating.js.map +1 -1
  518. package/dist/headless/components/navigation/menu/menuItem.js +60 -48
  519. package/dist/headless/components/navigation/menu/menuItem.js.map +1 -1
  520. package/dist/headless/components/navigation/menu/menuList.js +30 -19
  521. package/dist/headless/components/navigation/menu/menuList.js.map +1 -1
  522. package/dist/headless/components/navigation/menu/menuSubmenu.js +53 -40
  523. package/dist/headless/components/navigation/menu/menuSubmenu.js.map +1 -1
  524. package/dist/headless/components/navigation/pagination/pagination.js +51 -49
  525. package/dist/headless/components/navigation/pagination/pagination.js.map +1 -1
  526. package/dist/headless/components/navigation/sidebar/sidebar.js +55 -52
  527. package/dist/headless/components/navigation/sidebar/sidebar.js.map +1 -1
  528. package/dist/headless/components/navigation/stepper/stepper.js +42 -33
  529. package/dist/headless/components/navigation/stepper/stepper.js.map +1 -1
  530. package/dist/headless/components/navigation/tabs/tab/tab.js +117 -36
  531. package/dist/headless/components/navigation/tabs/tab/tab.js.map +1 -1
  532. package/dist/headless/components/navigation/tabs/tabPanel/tabPanel.js +25 -0
  533. package/dist/headless/components/navigation/tabs/tabPanel/tabPanel.js.map +1 -0
  534. package/dist/headless/components/navigation/tabs/tabs.js +362 -141
  535. package/dist/headless/components/navigation/tabs/tabs.js.map +1 -1
  536. package/dist/headless/components/navigation/tabs/tabs.utils.js +11 -0
  537. package/dist/headless/components/navigation/tabs/tabs.utils.js.map +1 -0
  538. package/dist/headless/components/navigation/tabs/tabsContext.js +6 -0
  539. package/dist/headless/components/navigation/tabs/tabsContext.js.map +1 -0
  540. package/dist/headless/hooks/useDismissOnEscape.js +16 -0
  541. package/dist/headless/hooks/useDismissOnEscape.js.map +1 -0
  542. package/dist/headless/hooks/useFocusTrap.js +24 -20
  543. package/dist/headless/hooks/useFocusTrap.js.map +1 -1
  544. package/dist/headless/hooks/useHelperText.js +13 -0
  545. package/dist/headless/hooks/useHelperText.js.map +1 -0
  546. package/dist/headless/hooks/useKeyboardShortcut.js +19 -0
  547. package/dist/headless/hooks/useKeyboardShortcut.js.map +1 -0
  548. package/dist/headless/index.js +360 -316
  549. package/dist/headless/index.js.map +1 -1
  550. package/dist/headless/utils/controlProps.js +14 -0
  551. package/dist/headless/utils/controlProps.js.map +1 -0
  552. package/dist/headless/utils/keyboardShortcut.js +49 -0
  553. package/dist/headless/utils/keyboardShortcut.js.map +1 -0
  554. package/dist/headless/utils/linkAttrs.js +13 -0
  555. package/dist/headless/utils/linkAttrs.js.map +1 -0
  556. package/dist/headless/utils/overlayLayer.js +14 -7
  557. package/dist/headless/utils/overlayLayer.js.map +1 -1
  558. package/dist/headless/utils/ownClick.js +40 -0
  559. package/dist/headless/utils/ownClick.js.map +1 -0
  560. package/dist/headless/utils/readOnlyToggle.js +14 -0
  561. package/dist/headless/utils/readOnlyToggle.js.map +1 -0
  562. package/dist/headless/utils/restoreFocus.js +10 -0
  563. package/dist/headless/utils/restoreFocus.js.map +1 -0
  564. package/dist/hooks/useDismissOnEscape.d.ts +11 -0
  565. package/dist/hooks/useDismissOnEscape.js +16 -0
  566. package/dist/hooks/useDismissOnEscape.js.map +1 -0
  567. package/dist/hooks/useFocusTrap.d.ts +8 -1
  568. package/dist/hooks/useFocusTrap.js +24 -20
  569. package/dist/hooks/useFocusTrap.js.map +1 -1
  570. package/dist/hooks/useHelperText.d.ts +21 -0
  571. package/dist/hooks/useHelperText.js +13 -0
  572. package/dist/hooks/useHelperText.js.map +1 -0
  573. package/dist/hooks/useKeyboardShortcut.d.ts +30 -0
  574. package/dist/hooks/useKeyboardShortcut.js +19 -0
  575. package/dist/hooks/useKeyboardShortcut.js.map +1 -0
  576. package/dist/index.cjs +3 -2
  577. package/dist/index.cjs.map +1 -1
  578. package/dist/index.d.ts +24 -3
  579. package/dist/index.js +360 -316
  580. package/dist/index.js.map +1 -1
  581. package/dist/utils/controlProps.d.ts +16 -0
  582. package/dist/utils/controlProps.js +14 -0
  583. package/dist/utils/controlProps.js.map +1 -0
  584. package/dist/utils/keyboardShortcut.d.ts +12 -0
  585. package/dist/utils/keyboardShortcut.js +49 -0
  586. package/dist/utils/keyboardShortcut.js.map +1 -0
  587. package/dist/utils/linkAttrs.d.ts +13 -0
  588. package/dist/utils/linkAttrs.js +13 -0
  589. package/dist/utils/linkAttrs.js.map +1 -0
  590. package/dist/utils/overlayLayer.d.ts +15 -3
  591. package/dist/utils/overlayLayer.js +14 -7
  592. package/dist/utils/overlayLayer.js.map +1 -1
  593. package/dist/utils/ownClick.d.ts +16 -0
  594. package/dist/utils/ownClick.js +40 -0
  595. package/dist/utils/ownClick.js.map +1 -0
  596. package/dist/utils/readOnlyToggle.d.ts +15 -0
  597. package/dist/utils/readOnlyToggle.js +14 -0
  598. package/dist/utils/readOnlyToggle.js.map +1 -0
  599. package/dist/utils/restoreFocus.d.ts +8 -0
  600. package/dist/utils/restoreFocus.js +10 -0
  601. package/dist/utils/restoreFocus.js.map +1 -0
  602. package/package.json +5 -3
@@ -1 +1 @@
1
- {"version":3,"file":"tableHeadCell.js","sources":["../../../../../src/components/dataDisplay/table/tableHeadCell.tsx"],"sourcesContent":["import React, { PropsWithChildren, ThHTMLAttributes } from \"react\";\nimport cn from \"clsx\";\nimport Icon from \"../../base/icon/icon\";\n\nexport type SortDirection = \"asc\" | \"desc\" | false;\n\nexport interface TableHeadCellProps extends ThHTMLAttributes<HTMLTableCellElement> {\n className?: string;\n cellAlign?: \"left\" | \"right\" | \"center\";\n /** @deprecated use `sortDirection=\"desc\"`. */\n isSortedByDesc?: boolean;\n /** @deprecated use `sortDirection=\"asc\"`. */\n isSortedByAsc?: boolean;\n /**\n * Enables the interactive sort affordance with keyboard/aria support.\n *\n * The children sit inside the sort control, and controls among them keep\n * their own input: Enter and Space sort only while the sort control itself\n * has focus, and a click sorts unless it lands in a nested control (input,\n * button, link, label, anything focusable) or in a portal. Content that is not\n * a control, such as click-to-edit text, keeps its click from sorting by\n * calling `preventDefault()` on it. A nested control's name, or its value,\n * becomes part of the sort control's accessible name.\n */\n sortable?: boolean;\n /** Current sort direction for this column. */\n sortDirection?: SortDirection;\n /** Invoked when the user activates the sort control. */\n onSort?: () => void;\n}\n\n/**\n * Whatever takes a click of its own inside the sort control. The control\n * matches too (`role=\"button\"`), so it is the nearest match for a click on the\n * header's text or marker, and only then does the click sort.\n */\nconst INTERACTIVE = [\n \"a[href]\",\n \"button\",\n \"input\",\n \"select\",\n \"textarea\",\n \"label\",\n \"summary\",\n \"[tabindex]\",\n \"[contenteditable]:not([contenteditable='false'])\",\n ...[\n \"button\",\n \"link\",\n \"checkbox\",\n \"radio\",\n \"switch\",\n \"textbox\",\n \"searchbox\",\n \"combobox\",\n \"spinbutton\",\n \"slider\",\n \"menuitem\",\n \"menuitemcheckbox\",\n \"menuitemradio\",\n \"option\",\n \"tab\",\n ].map((role) => `[role='${role}']`),\n].join(\",\");\n\nconst TableHeadCell = ({\n children,\n className,\n cellAlign = \"left\",\n isSortedByAsc,\n isSortedByDesc,\n sortable,\n sortDirection,\n onSort,\n ...props\n}: PropsWithChildren<TableHeadCellProps>) => {\n const direction: SortDirection =\n sortDirection !== undefined ? sortDirection : isSortedByAsc ? \"asc\" : isSortedByDesc ? \"desc\" : false;\n\n const ariaSort = sortable\n ? direction === \"asc\"\n ? \"ascending\"\n : direction === \"desc\"\n ? \"descending\"\n : \"none\"\n : undefined;\n\n /**\n * A sortable column always shows a marker: the current direction once sorted,\n * and `unfold_more` before that — otherwise nothing tells the reader the column\n * can be sorted at all. A cell that is not sortable shows nothing; it used to\n * render an `<Icon name=\"\">`, which reserved a gap and warned about a missing\n * icon under `source: \"smwb\"`.\n */\n const iconName = direction === \"asc\" ? \"expand_more\" : direction === \"desc\" ? \"expand_less\" : \"unfold_more\";\n\n // Keys typed into an input or pressed on a button inside bubble up here too;\n // only the control's own keys sort.\n const onKeyDown = (event: React.KeyboardEvent<HTMLSpanElement>) => {\n if (event.target !== event.currentTarget) return;\n if (sortable && onSort && (event.key === \"Enter\" || event.key === \" \")) {\n event.preventDefault();\n onSort();\n }\n };\n\n // A click sorts only when the control is the nearest thing that takes it. A\n // click in a portal rendered inside fails that too: React delivers it here,\n // though it landed outside the control.\n const onClick = (event: React.MouseEvent<HTMLSpanElement>) => {\n if (event.defaultPrevented) return;\n if ((event.target as Element | null)?.closest(INTERACTIVE) !== event.currentTarget) return;\n onSort?.();\n };\n\n return (\n <th\n {...props}\n aria-sort={ariaSort}\n className={cn(\"smwb-table__cell\", \"smwb-head-cell\", className, {\n [`smwb-align_${cellAlign}`]: !!cellAlign,\n \"smwb-head-cell_sortable\": sortable,\n \"smwb-head-cell_sorted\": !!sortable && direction !== false,\n })}\n >\n <span\n className=\"smwb-head-cell__content\"\n onClick={sortable ? onClick : undefined}\n onKeyDown={sortable ? onKeyDown : undefined}\n role={sortable ? \"button\" : undefined}\n tabIndex={sortable ? 0 : undefined}\n >\n {children}\n {sortable && <Icon className=\"smwb-head-cell__icon\" name={iconName} size={18} weight={800} />}\n </span>\n </th>\n );\n};\n\nexport default TableHeadCell;\n"],"names":["INTERACTIVE","role","TableHeadCell","children","className","cellAlign","isSortedByAsc","isSortedByDesc","sortable","sortDirection","onSort","props","direction","ariaSort","iconName","onKeyDown","event","onClick","_a","jsx","cn","jsxs","Icon"],"mappings":";;;AAoCA,MAAMA,IAAc;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,EACA,IAAI,CAACC,MAAS,UAAUA,CAAI,IAAI;AACpC,EAAE,KAAK,GAAG,GAEJC,IAAgB,CAAC;AAAA,EACrB,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,eAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,eAAAC;AAAA,EACA,QAAAC;AAAA,EACA,GAAGC;AACL,MAA6C;AAC3C,QAAMC,IACJH,MAAkB,SAAYA,IAAgBH,IAAgB,QAAQC,IAAiB,SAAS,IAE5FM,IAAWL,IACbI,MAAc,QACZ,cACAA,MAAc,SACZ,eACA,SACJ,QASEE,IAAWF,MAAc,QAAQ,gBAAgBA,MAAc,SAAS,gBAAgB,eAIxFG,IAAY,CAACC,MAAgD;AACjE,IAAIA,EAAM,WAAWA,EAAM,iBACvBR,KAAYE,MAAWM,EAAM,QAAQ,WAAWA,EAAM,QAAQ,SAChEA,EAAM,eAAA,GACNN,EAAA;AAAA,EAEJ,GAKMO,IAAU,CAACD,MAA6C;;AAC5D,IAAIA,EAAM,sBACLE,IAAAF,EAAM,WAAN,gBAAAE,EAAiC,QAAQlB,QAAiBgB,EAAM,kBACrEN,KAAA,QAAAA;AAAA,EACF;AAEA,SACE,gBAAAS;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGR;AAAA,MACJ,aAAWE;AAAA,MACX,WAAWO,EAAG,oBAAoB,kBAAkBhB,GAAW;AAAA,QAC7D,CAAC,cAAcC,CAAS,EAAE,GAAG,CAAC,CAACA;AAAA,QAC/B,2BAA2BG;AAAA,QAC3B,yBAAyB,CAAC,CAACA,KAAYI,MAAc;AAAA,MAAA,CACtD;AAAA,MAED,UAAA,gBAAAS;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,SAASb,IAAWS,IAAU;AAAA,UAC9B,WAAWT,IAAWO,IAAY;AAAA,UAClC,MAAMP,IAAW,WAAW;AAAA,UAC5B,UAAUA,IAAW,IAAI;AAAA,UAExB,UAAA;AAAA,YAAAL;AAAA,YACAK,KAAY,gBAAAW,EAACG,GAAA,EAAK,WAAU,wBAAuB,MAAMR,GAAU,MAAM,IAAI,QAAQ,IAAA,CAAK;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAC7F;AAAA,EAAA;AAGN;"}
1
+ {"version":3,"file":"tableHeadCell.js","sources":["../../../../../src/components/dataDisplay/table/tableHeadCell.tsx"],"sourcesContent":["import React, { PropsWithChildren, ReactNode, ThHTMLAttributes, useContext, useEffect } from \"react\";\nimport cn from \"clsx\";\nimport { isOwnClick } from \"../../../utils/ownClick\";\nimport Icon from \"../../base/icon/icon\";\nimport { useId } from \"../../../hooks/useId\";\nimport { TableColumnContext, TableHeadContext, TableLabelsContext, cellSpan, textOf } from \"./tableColumns\";\n\nexport type SortDirection = \"asc\" | \"desc\" | false;\n\nexport interface TableHeadCellProps extends ThHTMLAttributes<HTMLTableCellElement> {\n className?: string;\n cellAlign?: \"left\" | \"right\" | \"center\";\n /** @deprecated use `sortDirection=\"desc\"`. */\n isSortedByDesc?: boolean;\n /** @deprecated use `sortDirection=\"asc\"`. */\n isSortedByAsc?: boolean;\n /**\n * Enables the interactive sort affordance with keyboard/aria support.\n *\n * The children sit inside the sort control, and controls among them keep\n * their own input: Enter and Space sort only while the sort control itself\n * has focus, and a click sorts unless it lands in a nested control (input,\n * button, link, label, anything focusable) or in a portal. Content that is not\n * a control, such as click-to-edit text, keeps its click from sorting by\n * calling `preventDefault()` on it. A nested control's name, or its value,\n * becomes part of the sort control's accessible name: put controls in\n * `actions` instead.\n */\n sortable?: boolean;\n /** Current sort direction for this column. */\n sortDirection?: SortDirection;\n /** Invoked when the user activates the sort control. */\n onSort?: () => void;\n /**\n * The column's controls — a filter field, a menu button, a column resizer —\n * drawn after the sort control, outside it. Their names and values stay out\n * of the sort control's accessible name, and their keys and clicks never\n * reach it. Rendered whether or not the cell is sortable.\n *\n * The column header is then named after the children alone: the cell's\n * `aria-labelledby` points at the sort control, unless the cell is given\n * `aria-label` or `aria-labelledby`. Named from its content, the header would\n * take in the controls' names and values too.\n */\n actions?: ReactNode;\n /**\n * The column's name for its body cells while the table stacks rows as cards\n * (`Table stackBelow`). Without it, the text of the children is the name; give\n * `label` where they hold no text of their own (an icon, a translated message\n * component) or more than the name. An empty `label` leaves the column's cells\n * unlabelled, so they fill the card's width.\n */\n label?: string;\n}\n\n/**\n * A head cell of a stacked table labels its column, for its own head row: the\n * lowest row's label wins. It writes the label while it renders, for the body\n * cells that render after it, and again from an effect: that also tells body\n * cells which rendered before a change.\n */\nfunction useColumnLabel(owner: string, colSpan: number | string | undefined, text: () => string): void {\n const labels = useContext(TableLabelsContext);\n const place = useContext(TableColumnContext);\n const inHead = useContext(TableHeadContext);\n const labelling = labels != null && place != null && inHead && cellSpan(colSpan) === 1;\n const column = place?.column ?? -1;\n const row = place?.row ?? -1;\n const label = labelling ? text() || undefined : undefined;\n // Written during render so the server markup has the labels: see ColumnLabels.\n if (labelling) labels.set(column, row, owner, label);\n useEffect(() => {\n if (!labelling) return;\n labels.set(column, row, owner, label);\n labels.notify();\n return () => {\n labels.remove(column, row, owner);\n labels.notify();\n };\n }, [labels, column, row, owner, labelling, label]);\n}\n\nconst TableHeadCell = ({\n children,\n className,\n cellAlign = \"left\",\n isSortedByAsc,\n isSortedByDesc,\n sortable,\n sortDirection,\n onSort,\n actions,\n label,\n ...props\n}: PropsWithChildren<TableHeadCellProps>) => {\n const id = useId();\n useColumnLabel(id, props.colSpan, () => label ?? textOf(children));\n\n const direction: SortDirection =\n sortDirection !== undefined ? sortDirection : isSortedByAsc ? \"asc\" : isSortedByDesc ? \"desc\" : false;\n\n // A sortable cell's sort state wins over the caller's aria-sort; a cell that\n // is not sortable keeps the caller's.\n const ariaSort = sortable\n ? direction === \"asc\"\n ? \"ascending\"\n : direction === \"desc\"\n ? \"descending\"\n : \"none\"\n : props[\"aria-sort\"];\n\n /**\n * A sortable column always shows a marker: the current direction once sorted,\n * and `unfold_more` before that — otherwise nothing tells the reader the column\n * can be sorted at all. A cell that is not sortable shows nothing; it used to\n * render an `<Icon name=\"\">`, which reserved a gap and warned about a missing\n * icon under `source: \"smwb\"`.\n */\n const iconName = direction === \"asc\" ? \"expand_more\" : direction === \"desc\" ? \"expand_less\" : \"unfold_more\";\n\n // Keys typed into an input or pressed on a button inside bubble up here too;\n // only the control's own keys sort.\n const onKeyDown = (event: React.KeyboardEvent<HTMLSpanElement>) => {\n if (event.target !== event.currentTarget) return;\n if (sortable && onSort && (event.key === \"Enter\" || event.key === \" \")) {\n event.preventDefault();\n onSort();\n }\n };\n\n // A click sorts only when the control is the nearest thing that takes it. A\n // click in a portal rendered inside fails that too: React delivers it here,\n // though it landed outside the control.\n const onClick = (event: React.MouseEvent<HTMLSpanElement>) => {\n if (!isOwnClick(event)) return;\n onSort?.();\n };\n\n // With actions drawn, the column header is named after the content of its\n // sort control, not after the whole cell: the controls' names and the text\n // typed into them would join the header's name.\n const labelId = `${id}-label`;\n const labelled = !!actions && props[\"aria-label\"] == null && props[\"aria-labelledby\"] == null;\n\n return (\n <th\n {...props}\n aria-labelledby={labelled ? labelId : props[\"aria-labelledby\"]}\n aria-sort={ariaSort}\n className={cn(\"smwb-table__cell\", \"smwb-head-cell\", className, {\n [`smwb-align_${cellAlign}`]: !!cellAlign,\n \"smwb-head-cell_sortable\": sortable,\n \"smwb-head-cell_sorted\": !!sortable && direction !== false,\n })}\n >\n <span\n id={labelled ? labelId : undefined}\n className=\"smwb-head-cell__content\"\n onClick={sortable ? onClick : undefined}\n onKeyDown={sortable ? onKeyDown : undefined}\n role={sortable ? \"button\" : undefined}\n tabIndex={sortable ? 0 : undefined}\n >\n {children}\n {sortable && <Icon className=\"smwb-head-cell__icon\" name={iconName} size={18} weight={800} />}\n </span>\n {actions ? <div className=\"smwb-head-cell__actions\">{actions}</div> : null}\n </th>\n );\n};\n\nexport default TableHeadCell;\n"],"names":["useColumnLabel","owner","colSpan","text","labels","useContext","TableLabelsContext","place","TableColumnContext","inHead","TableHeadContext","labelling","cellSpan","column","_a","row","_b","label","useEffect","TableHeadCell","children","className","cellAlign","isSortedByAsc","isSortedByDesc","sortable","sortDirection","onSort","actions","props","id","useId","textOf","direction","ariaSort","iconName","onKeyDown","event","onClick","isOwnClick","labelId","labelled","jsxs","cn","jsx","Icon"],"mappings":"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"}
@@ -1,20 +1,32 @@
1
- import { jsx as m } from "react/jsx-runtime";
1
+ import { jsx as n } from "react/jsx-runtime";
2
+ import { useContext as r } from "react";
2
3
  import w from "clsx";
3
- const s = ({ children: a, className: t, selected: r, expanded: o, ...b }) => /* @__PURE__ */ m(
4
- "tr",
5
- {
6
- "data-testid": "table-row",
7
- className: w("smwb-table__row", t, {
8
- "smwb-table__row_selected": r,
9
- "smwb-table__row_expanded": o
10
- }),
11
- "aria-selected": r != null ? r : void 0,
12
- "aria-expanded": o != null ? o : void 0,
13
- ...b,
14
- children: a
15
- }
16
- );
4
+ import { TableLabelsContext as c, TableRowPlaceContext as _, useCellPlaces as u, withColumns as f } from "./tableColumns.js";
5
+ const k = ({
6
+ children: e,
7
+ className: l,
8
+ selected: t,
9
+ expanded: a,
10
+ "data-testid": s = "table-row",
11
+ ...o
12
+ }) => {
13
+ const m = r(c) != null, i = r(_), b = u();
14
+ return /* @__PURE__ */ n(
15
+ "tr",
16
+ {
17
+ "data-testid": s,
18
+ className: w("smwb-table__row", l, {
19
+ "smwb-table__row_selected": t,
20
+ "smwb-table__row_expanded": a
21
+ }),
22
+ ...o,
23
+ "aria-selected": t != null ? t : o["aria-selected"],
24
+ "aria-expanded": a != null ? a : o["aria-expanded"],
25
+ children: f(e, m, i, b)
26
+ }
27
+ );
28
+ };
17
29
  export {
18
- s as default
30
+ k as default
19
31
  };
20
32
  //# sourceMappingURL=tableRow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tableRow.js","sources":["../../../../../src/components/dataDisplay/table/tableRow.tsx"],"sourcesContent":["import React, { HTMLAttributes, PropsWithChildren } from \"react\";\nimport cn from \"clsx\";\n\nexport interface TableRowProps extends HTMLAttributes<HTMLTableRowElement> {\n className?: string;\n /** Marks the row as selected (adds aria-selected + styling). */\n selected?: boolean;\n /** Reflects expandable-row state (adds aria-expanded + styling). */\n expanded?: boolean;\n}\n\nconst TableRow = ({ children, className, selected, expanded, ...props }: PropsWithChildren<TableRowProps>) => {\n return (\n <tr\n data-testid=\"table-row\"\n className={cn(\"smwb-table__row\", className, {\n \"smwb-table__row_selected\": selected,\n \"smwb-table__row_expanded\": expanded,\n })}\n aria-selected={selected ?? undefined}\n aria-expanded={expanded ?? undefined}\n {...props}\n >\n {children}\n </tr>\n );\n};\nexport default TableRow;\n"],"names":["TableRow","children","className","selected","expanded","props","jsx","cn"],"mappings":";;AAWA,MAAMA,IAAW,CAAC,EAAE,UAAAC,GAAU,WAAAC,GAAW,UAAAC,GAAU,UAAAC,GAAU,GAAGC,QAE5D,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,eAAY;AAAA,IACZ,WAAWC,EAAG,mBAAmBL,GAAW;AAAA,MAC1C,4BAA4BC;AAAA,MAC5B,4BAA4BC;AAAA,IAAA,CAC7B;AAAA,IACD,iBAAeD,KAAA,OAAAA,IAAY;AAAA,IAC3B,iBAAeC,KAAA,OAAAA,IAAY;AAAA,IAC1B,GAAGC;AAAA,IAEH,UAAAJ;AAAA,EAAA;AAAA;"}
1
+ {"version":3,"file":"tableRow.js","sources":["../../../../../src/components/dataDisplay/table/tableRow.tsx"],"sourcesContent":["import React, { HTMLAttributes, PropsWithChildren, useContext } from \"react\";\nimport cn from \"clsx\";\nimport { TableLabelsContext, TableRowPlaceContext, useCellPlaces, withColumns } from \"./tableColumns\";\n\nexport interface TableRowProps extends HTMLAttributes<HTMLTableRowElement> {\n className?: string;\n /** Marks the row as selected (adds aria-selected + styling). */\n selected?: boolean;\n /** Reflects expandable-row state (adds aria-expanded + styling). */\n expanded?: boolean;\n /** Test id of the `<tr>`; `table-row` unless given. */\n \"data-testid\"?: string;\n}\n\nconst TableRow = ({\n children,\n className,\n selected,\n expanded,\n \"data-testid\": dataTestId = \"table-row\",\n ...props\n}: PropsWithChildren<TableRowProps>) => {\n // In a stacked table each cell learns its column, by which a body cell finds\n // its label in the head.\n const stacked = useContext(TableLabelsContext) != null;\n const place = useContext(TableRowPlaceContext);\n const keep = useCellPlaces();\n return (\n <tr\n data-testid={dataTestId}\n className={cn(\"smwb-table__row\", className, {\n \"smwb-table__row_selected\": selected,\n \"smwb-table__row_expanded\": expanded,\n })}\n {...props}\n // `selected` and `expanded` win over the caller's aria-selected and\n // aria-expanded; without them, the caller's stay.\n aria-selected={selected ?? props[\"aria-selected\"]}\n aria-expanded={expanded ?? props[\"aria-expanded\"]}\n >\n {withColumns(children, stacked, place, keep)}\n </tr>\n );\n};\nexport default TableRow;\n"],"names":["TableRow","children","className","selected","expanded","dataTestId","props","stacked","useContext","TableLabelsContext","place","TableRowPlaceContext","keep","useCellPlaces","jsx","cn","withColumns"],"mappings":";;;;AAcA,MAAMA,IAAW,CAAC;AAAA,EAChB,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,eAAeC,IAAa;AAAA,EAC5B,GAAGC;AACL,MAAwC;AAGtC,QAAMC,IAAUC,EAAWC,CAAkB,KAAK,MAC5CC,IAAQF,EAAWG,CAAoB,GACvCC,IAAOC,EAAA;AACb,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,eAAaT;AAAA,MACb,WAAWU,EAAG,mBAAmBb,GAAW;AAAA,QAC1C,4BAA4BC;AAAA,QAC5B,4BAA4BC;AAAA,MAAA,CAC7B;AAAA,MACA,GAAGE;AAAA,MAGJ,iBAAeH,KAAA,OAAAA,IAAYG,EAAM,eAAe;AAAA,MAChD,iBAAeF,KAAA,OAAAA,IAAYE,EAAM,eAAe;AAAA,MAE/C,UAAAU,EAAYf,GAAUM,GAASG,GAAOE,CAAI;AAAA,IAAA;AAAA,EAAA;AAGjD;"}
@@ -1,71 +1,91 @@
1
- import { jsxs as p, jsx as s } from "react/jsx-runtime";
2
- import { forwardRef as L, useRef as _, useState as j, useEffect as D } from "react";
3
- import { createPortal as I } from "react-dom";
4
- import M from "clsx";
5
- import { useForkRef as z } from "../../../hooks/useForkRef.js";
6
- import { LazyImage as B } from "../lazyImage/lazyImage.js";
7
- const O = L(function({
8
- src: w,
9
- caption: c,
10
- selected: a,
1
+ import { jsxs as C, jsx as s } from "react/jsx-runtime";
2
+ import { forwardRef as J, useRef as w, useState as L, useEffect as Q } from "react";
3
+ import { createPortal as U } from "react-dom";
4
+ import V from "clsx";
5
+ import { useForkRef as W } from "../../../hooks/useForkRef.js";
6
+ import { isOwnClick as X } from "../../../utils/ownClick.js";
7
+ import { splitControlProps as Y } from "../../../utils/controlProps.js";
8
+ import { LazyImage as Z } from "../lazyImage/lazyImage.js";
9
+ const mt = J(function({
10
+ src: I,
11
+ caption: g,
12
+ selected: c,
11
13
  onSelect: r,
12
- fallback: v,
13
- hoverPreview: i,
14
- topStart: d,
15
- topEnd: l,
16
- lazy: y = !0,
17
- disabled: n,
18
- hoverDelay: g = 350,
19
- className: N,
20
- ...R
21
- }, x) {
22
- const f = _(null), T = z(x, f), [o, b] = j(null), u = _(null), e = () => {
23
- u.current && (clearTimeout(u.current), u.current = null);
24
- }, k = () => {
25
- i == null || n || (e(), u.current = setTimeout(() => {
26
- var h;
27
- const t = (h = f.current) == null ? void 0 : h.getBoundingClientRect();
28
- t && b({ top: t.top, left: t.right + 8 });
29
- }, g));
30
- }, C = () => {
31
- e(), b(null);
14
+ fallback: j,
15
+ hoverPreview: u,
16
+ topStart: x,
17
+ topEnd: N,
18
+ lazy: k = !0,
19
+ disabled: m,
20
+ hoverDelay: v = 350,
21
+ className: z,
22
+ // The card sets these on its root too; its own handlers call the caller's.
23
+ onClick: l,
24
+ onKeyDown: d,
25
+ onMouseEnter: f,
26
+ onMouseLeave: e,
27
+ ...B
28
+ }, F) {
29
+ var y;
30
+ const [a, O] = Y(B), R = w(null), b = w(null), q = W(F, R), [o, p] = L(null), n = w(null), h = () => {
31
+ n.current && (clearTimeout(n.current), n.current = null);
32
+ }, A = (t) => {
33
+ f == null || f(t), !(u == null || m) && (h(), n.current = setTimeout(() => {
34
+ var T;
35
+ const i = (T = R.current) == null ? void 0 : T.getBoundingClientRect();
36
+ i && p({ top: i.top, left: i.right + 8 });
37
+ }, v));
38
+ }, E = (t) => {
39
+ e == null || e(t), h(), p(null);
32
40
  };
33
- D(() => e, []);
34
- const m = !!r && !n, E = (t) => {
35
- m && (t.key === "Enter" || t.key === " ") && (t.preventDefault(), r == null || r());
41
+ Q(() => h, []);
42
+ const _ = !!r && !m, G = (t) => {
43
+ if (m) return;
44
+ const i = X(t, b.current);
45
+ l == null || l(t), i && (r == null || r());
46
+ }, H = (t) => {
47
+ d == null || d(t), !(!_ || t.target !== b.current) && (t.key === "Enter" || t.key === " ") && (t.preventDefault(), r == null || r());
36
48
  };
37
- return /* @__PURE__ */ p(
49
+ return /* @__PURE__ */ C(
38
50
  "div",
39
51
  {
40
- ...R,
41
- ref: T,
42
- className: M("smwb-thumb-card", N, {
43
- "smwb-thumb-card--selected": a,
44
- "smwb-thumb-card--disabled": n,
45
- "smwb-thumb-card--interactive": m
52
+ ...O,
53
+ ref: q,
54
+ className: V("smwb-thumb-card", z, {
55
+ "smwb-thumb-card--selected": c,
56
+ "smwb-thumb-card--disabled": m,
57
+ "smwb-thumb-card--interactive": _
46
58
  }),
47
- role: m ? "button" : void 0,
48
- tabIndex: m ? 0 : void 0,
49
- "aria-pressed": r ? a != null ? a : !1 : void 0,
50
- "aria-disabled": n || void 0,
51
- onClick: m ? () => r == null ? void 0 : r() : void 0,
52
- onKeyDown: E,
53
- onMouseEnter: k,
54
- onMouseLeave: C,
59
+ onClick: G,
60
+ onKeyDown: H,
61
+ onMouseEnter: A,
62
+ onMouseLeave: E,
55
63
  children: [
56
- /* @__PURE__ */ p("div", { className: "smwb-thumb-card__media", children: [
57
- /* @__PURE__ */ s(B, { src: w, lazy: y, fallback: v }),
58
- d ? /* @__PURE__ */ s("div", { className: "smwb-thumb-card__slot smwb-thumb-card__slot--start", children: d }) : null,
59
- l ? /* @__PURE__ */ s("div", { className: "smwb-thumb-card__slot smwb-thumb-card__slot--end", children: l }) : null
60
- ] }),
61
- c ? /* @__PURE__ */ s("div", { className: "smwb-thumb-card__caption", children: c }) : null,
62
- o && typeof document != "undefined" ? I(
64
+ /* @__PURE__ */ C(
65
+ "div",
66
+ {
67
+ ...a,
68
+ ref: b,
69
+ className: "smwb-thumb-card__content",
70
+ role: r ? "button" : a.role,
71
+ tabIndex: (y = a.tabIndex) != null ? y : _ ? 0 : void 0,
72
+ "aria-pressed": r ? c != null ? c : !1 : a["aria-pressed"],
73
+ "aria-disabled": m || a["aria-disabled"],
74
+ children: [
75
+ /* @__PURE__ */ s("div", { className: "smwb-thumb-card__media", children: /* @__PURE__ */ s(Z, { src: I, lazy: k, fallback: j }) }),
76
+ g ? /* @__PURE__ */ s("div", { className: "smwb-thumb-card__caption", children: g }) : null
77
+ ]
78
+ }
79
+ ),
80
+ x ? /* @__PURE__ */ s("div", { className: "smwb-thumb-card__slot smwb-thumb-card__slot--start", children: x }) : null,
81
+ N ? /* @__PURE__ */ s("div", { className: "smwb-thumb-card__slot smwb-thumb-card__slot--end", children: N }) : null,
82
+ o && typeof document != "undefined" ? U(
63
83
  /* @__PURE__ */ s(
64
84
  "div",
65
85
  {
66
86
  className: "smwb-thumb-card__preview",
67
87
  style: { position: "fixed", top: o.top, left: o.left },
68
- children: typeof i == "string" ? /* @__PURE__ */ s("img", { src: i, alt: "" }) : i
88
+ children: typeof u == "string" ? /* @__PURE__ */ s("img", { src: u, alt: "" }) : u
69
89
  }
70
90
  ),
71
91
  document.body
@@ -75,7 +95,7 @@ const O = L(function({
75
95
  );
76
96
  });
77
97
  export {
78
- O as ThumbCard,
79
- O as default
98
+ mt as ThumbCard,
99
+ mt as default
80
100
  };
81
101
  //# sourceMappingURL=thumbCard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"thumbCard.js","sources":["../../../../../src/components/dataDisplay/thumbCard/thumbCard.tsx"],"sourcesContent":["import React, { forwardRef, useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport cn from \"clsx\";\nimport { LazyImage } from \"../lazyImage\";\nimport { useForkRef } from \"../../../hooks/useForkRef\";\n\nexport interface ThumbCardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onSelect\"> {\n /** Thumbnail URL; falls back to `fallback` when missing / failed. */\n src?: string;\n caption?: React.ReactNode;\n selected?: boolean;\n /** Makes the card a selectable button (keyboard + `aria-pressed`). */\n onSelect?: () => void;\n /** Shown in place of the image when `src` is missing / fails. */\n fallback?: React.ReactNode;\n /** A larger preview shown in a floating popup after a hover delay. */\n hoverPreview?: React.ReactNode | string;\n /** Top-left overlay slot (e.g. a favourite star). */\n topStart?: React.ReactNode;\n /** Top-right overlay slot (e.g. a kebab menu). */\n topEnd?: React.ReactNode;\n lazy?: boolean;\n disabled?: boolean;\n /** Delay (ms) before the hover preview appears. Default 350. */\n hoverDelay?: number;\n}\n\n/**\n * A selectable gallery card: image with an `onError` fallback + optional lazy\n * load, keyboard/`aria-pressed` selection, corner action slots, and a delayed\n * floating hover-preview. The generic gallery-card behaviour every app rebuilds\n * on top of the primitives. SSR-safe — the hover preview is client-only.\n */\nexport const ThumbCard = forwardRef<HTMLDivElement, ThumbCardProps>(function ThumbCard(\n {\n src,\n caption,\n selected,\n onSelect,\n fallback,\n hoverPreview,\n topStart,\n topEnd,\n lazy = true,\n disabled,\n hoverDelay = 350,\n className,\n ...rest\n },\n ref\n) {\n const cardRef = useRef<HTMLDivElement | null>(null);\n const setRefs = useForkRef(ref, cardRef);\n const [preview, setPreview] = useState<{ top: number; left: number } | null>(null);\n const timer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const clearTimer = (): void => {\n if (timer.current) {\n clearTimeout(timer.current);\n timer.current = null;\n }\n };\n const onEnter = (): void => {\n if (hoverPreview == null || disabled) return;\n clearTimer();\n timer.current = setTimeout(() => {\n const rect = cardRef.current?.getBoundingClientRect();\n if (rect) setPreview({ top: rect.top, left: rect.right + 8 });\n }, hoverDelay);\n };\n const onLeave = (): void => {\n clearTimer();\n setPreview(null);\n };\n useEffect(() => clearTimer, []);\n\n const interactive = !!onSelect && !disabled;\n const onKeyDown = (event: React.KeyboardEvent<HTMLDivElement>): void => {\n if (interactive && (event.key === \"Enter\" || event.key === \" \")) {\n event.preventDefault();\n onSelect?.();\n }\n };\n\n return (\n <div\n {...rest}\n ref={setRefs}\n className={cn(\"smwb-thumb-card\", className, {\n \"smwb-thumb-card--selected\": selected,\n \"smwb-thumb-card--disabled\": disabled,\n \"smwb-thumb-card--interactive\": interactive,\n })}\n role={interactive ? \"button\" : undefined}\n tabIndex={interactive ? 0 : undefined}\n aria-pressed={onSelect ? (selected ?? false) : undefined}\n aria-disabled={disabled || undefined}\n onClick={interactive ? () => onSelect?.() : undefined}\n onKeyDown={onKeyDown}\n onMouseEnter={onEnter}\n onMouseLeave={onLeave}\n >\n <div className=\"smwb-thumb-card__media\">\n <LazyImage src={src} lazy={lazy} fallback={fallback} />\n {topStart ? <div className=\"smwb-thumb-card__slot smwb-thumb-card__slot--start\">{topStart}</div> : null}\n {topEnd ? <div className=\"smwb-thumb-card__slot smwb-thumb-card__slot--end\">{topEnd}</div> : null}\n </div>\n {caption ? <div className=\"smwb-thumb-card__caption\">{caption}</div> : null}\n {preview && typeof document !== \"undefined\"\n ? createPortal(\n <div\n className=\"smwb-thumb-card__preview\"\n style={{ position: \"fixed\", top: preview.top, left: preview.left }}\n >\n {typeof hoverPreview === \"string\" ? <img src={hoverPreview} alt=\"\" /> : hoverPreview}\n </div>,\n document.body\n )\n : null}\n </div>\n );\n});\n\nexport default ThumbCard;\n"],"names":["ThumbCard","forwardRef","src","caption","selected","onSelect","fallback","hoverPreview","topStart","topEnd","lazy","disabled","hoverDelay","className","rest","ref","cardRef","useRef","setRefs","useForkRef","preview","setPreview","useState","timer","clearTimer","onEnter","rect","_a","onLeave","useEffect","interactive","onKeyDown","event","jsxs","cn","jsx","LazyImage","createPortal"],"mappings":"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"}
1
+ {"version":3,"file":"thumbCard.js","sources":["../../../../../src/components/dataDisplay/thumbCard/thumbCard.tsx"],"sourcesContent":["import React, { forwardRef, useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport cn from \"clsx\";\nimport { LazyImage } from \"../lazyImage\";\nimport { useForkRef } from \"../../../hooks/useForkRef\";\nimport { isOwnClick } from \"../../../utils/ownClick\";\nimport { splitControlProps } from \"../../../utils/controlProps\";\n\nexport interface ThumbCardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onSelect\"> {\n /**\n * Class name(s) for the root `<div>`, the card's box. `style`, `id`, `data-*`, `aria-hidden`, `ref` and event\n * handlers go to the root too, but `role`, `tabIndex`, `onFocus`, `onBlur` and the other `aria-*` attributes go to\n * the card's content, `.smwb-thumb-card__content` (the image and the caption): that is the card's button when it has\n * `onSelect`, and the element to focus.\n */\n className?: string;\n /** Thumbnail URL; falls back to `fallback` when missing / failed. */\n src?: string;\n /**\n * Text under the image. With `onSelect` it is part of the card's button and names it, so keep controls out of it:\n * they go in `topStart` / `topEnd`.\n */\n caption?: React.ReactNode;\n /** Outlines the image; with `onSelect`, the card's button is also `aria-pressed=\"true\"`. */\n selected?: boolean;\n /**\n * Makes the card selectable: its content (the image and the caption) becomes a toggle button with `aria-pressed`,\n * selected by a click and by Enter / Space. The corner slots are not part of that button but its siblings, laid over\n * the image, so their controls keep their own names, clicks and keys.\n *\n * A click selects the card unless it lands in a control in a slot (button, link, input, anything focusable) or in a\n * portal opened from the card. Slot content that is not a control keeps its click from selecting the card by calling\n * `preventDefault()` on it.\n */\n onSelect?: () => void;\n /**\n * Runs on each click on the card, before `onSelect`, but not while the card is `disabled`.\n * A click on a control in a slot runs it too, without selecting the card.\n * Enter / Space select the card without a click, so they call only `onSelect`.\n */\n onClick?: React.MouseEventHandler<HTMLDivElement> | undefined;\n /** Shown in place of the image when `src` is missing / fails. */\n fallback?: React.ReactNode;\n /** A larger preview shown in a floating popup after a hover delay. */\n hoverPreview?: React.ReactNode | string;\n /**\n * Top-left overlay slot (e.g. a favourite star). It sits over the image, outside the card's button, so controls here\n * keep their own names, clicks and keys; see `onSelect`.\n */\n topStart?: React.ReactNode;\n /**\n * Top-right overlay slot (e.g. a kebab menu). It sits over the image, outside the card's button, so controls here\n * keep their own names, clicks and keys; see `onSelect`.\n */\n topEnd?: React.ReactNode;\n lazy?: boolean;\n /**\n * Dims the card and ignores clicks on it: neither `onClick` nor `onSelect` runs.\n * Keys do not select it either, and there is no hover preview. With `onSelect`\n * the card is still a button, `aria-disabled` and out of the tab order.\n */\n disabled?: boolean;\n /** Delay (ms) before the hover preview appears. Default 350. */\n hoverDelay?: number;\n}\n\n/**\n * A selectable gallery card: image with an `onError` fallback + optional lazy\n * load, keyboard/`aria-pressed` selection, corner action slots, and a delayed\n * floating hover-preview. The generic gallery-card behaviour every app rebuilds\n * on top of the primitives. SSR-safe — the hover preview is client-only.\n *\n * The root is a box around the card's content (the image and the caption, the\n * card's button when it is selectable) and the corner slots, which are laid\n * over the image beside that button rather than inside it.\n */\nexport const ThumbCard = forwardRef<HTMLDivElement, ThumbCardProps>(function ThumbCard(\n {\n src,\n caption,\n selected,\n onSelect,\n fallback,\n hoverPreview,\n topStart,\n topEnd,\n lazy = true,\n disabled,\n hoverDelay = 350,\n className,\n // The card sets these on its root too; its own handlers call the caller's.\n onClick: onClickProp,\n onKeyDown: onKeyDownProp,\n onMouseEnter: onMouseEnterProp,\n onMouseLeave: onMouseLeaveProp,\n ...rest\n },\n ref\n) {\n // What the card is to the keyboard and to assistive tech goes to its\n // content, the element that is its button; the rest stays on the root.\n const [control, box] = splitControlProps(rest);\n const cardRef = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const setRefs = useForkRef(ref, cardRef);\n const [preview, setPreview] = useState<{ top: number; left: number } | null>(null);\n const timer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const clearTimer = (): void => {\n if (timer.current) {\n clearTimeout(timer.current);\n timer.current = null;\n }\n };\n const onEnter = (event: React.MouseEvent<HTMLDivElement>): void => {\n onMouseEnterProp?.(event);\n if (hoverPreview == null || disabled) return;\n clearTimer();\n timer.current = setTimeout(() => {\n const rect = cardRef.current?.getBoundingClientRect();\n if (rect) setPreview({ top: rect.top, left: rect.right + 8 });\n }, hoverDelay);\n };\n const onLeave = (event: React.MouseEvent<HTMLDivElement>): void => {\n onMouseLeaveProp?.(event);\n clearTimer();\n setPreview(null);\n };\n useEffect(() => clearTimer, []);\n\n const interactive = !!onSelect && !disabled;\n // A disabled card ignores clicks, the caller's onClick included: it says\n // aria-disabled, and its styles turn pointer events off. The caller's onClick\n // sees every other click, those in the slots too, but only clicks on the\n // card's content and on what is not a control in a slot select it: not one\n // on a control in a slot, nor one in a portal opened from the card. That is\n // settled before onClick runs, so what onClick does to the event or the DOM\n // does not change it.\n const onClick = (event: React.MouseEvent<HTMLDivElement>): void => {\n if (disabled) return;\n const selects = isOwnClick(event, contentRef.current);\n onClickProp?.(event);\n if (selects) onSelect?.();\n };\n // Keys pressed on a control in a slot bubble up here too; only the keys of\n // the card's button select it.\n const onKeyDown = (event: React.KeyboardEvent<HTMLDivElement>): void => {\n onKeyDownProp?.(event);\n if (!interactive || event.target !== contentRef.current) return;\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n onSelect?.();\n }\n };\n\n return (\n <div\n {...box}\n ref={setRefs}\n className={cn(\"smwb-thumb-card\", className, {\n \"smwb-thumb-card--selected\": selected,\n \"smwb-thumb-card--disabled\": disabled,\n \"smwb-thumb-card--interactive\": interactive,\n })}\n onClick={onClick}\n onKeyDown={onKeyDown}\n onMouseEnter={onEnter}\n onMouseLeave={onLeave}\n >\n <div\n {...control}\n ref={contentRef}\n className=\"smwb-thumb-card__content\"\n // With onSelect the content is the card's button and says whether it is\n // pressed, and a disabled card says so: these win over the caller's, and\n // where the card sets none, the caller's stay. Its tabIndex is a\n // default: the caller's wins, e.g. for roving focus.\n role={onSelect ? \"button\" : control.role}\n tabIndex={control.tabIndex ?? (interactive ? 0 : undefined)}\n aria-pressed={onSelect ? (selected ?? false) : control[\"aria-pressed\"]}\n aria-disabled={disabled || control[\"aria-disabled\"]}\n >\n <div className=\"smwb-thumb-card__media\">\n <LazyImage src={src} lazy={lazy} fallback={fallback} />\n </div>\n {caption ? <div className=\"smwb-thumb-card__caption\">{caption}</div> : null}\n </div>\n {/* Beside the button, not in it: controls here keep their names and input. */}\n {topStart ? <div className=\"smwb-thumb-card__slot smwb-thumb-card__slot--start\">{topStart}</div> : null}\n {topEnd ? <div className=\"smwb-thumb-card__slot smwb-thumb-card__slot--end\">{topEnd}</div> : null}\n {preview && typeof document !== \"undefined\"\n ? createPortal(\n <div\n className=\"smwb-thumb-card__preview\"\n style={{ position: \"fixed\", top: preview.top, left: preview.left }}\n >\n {typeof hoverPreview === \"string\" ? <img src={hoverPreview} alt=\"\" /> : hoverPreview}\n </div>,\n document.body\n )\n : null}\n </div>\n );\n});\n\nexport default ThumbCard;\n"],"names":["ThumbCard","forwardRef","src","caption","selected","onSelect","fallback","hoverPreview","topStart","topEnd","lazy","disabled","hoverDelay","className","onClickProp","onKeyDownProp","onMouseEnterProp","onMouseLeaveProp","rest","ref","control","box","splitControlProps","cardRef","useRef","contentRef","setRefs","useForkRef","preview","setPreview","useState","timer","clearTimer","onEnter","event","rect","_a","onLeave","useEffect","interactive","onClick","selects","isOwnClick","onKeyDown","jsxs","cn","jsx","LazyImage","createPortal"],"mappings":"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"}
@@ -1,118 +1,140 @@
1
- import { jsx as n, jsxs as b } from "react/jsx-runtime";
2
- import { forwardRef as v, useState as D, useRef as I, useMemo as ee } from "react";
3
- import O from "clsx";
4
- import { Icon as N } from "../../base/icon/icon.js";
5
- import { useControllableState as K } from "../../../hooks/useControllableState.js";
6
- const ie = v(function({
7
- className: M,
1
+ import { jsx as r, jsxs as y } from "react/jsx-runtime";
2
+ import { forwardRef as le, useState as q, useRef as ne, useMemo as ie } from "react";
3
+ import A from "clsx";
4
+ import { Icon as u } from "../../base/icon/icon.js";
5
+ import { useControllableState as B } from "../../../hooks/useControllableState.js";
6
+ import { useId as oe } from "../../../hooks/useId.js";
7
+ import { isOwnClick as de } from "../../../utils/ownClick.js";
8
+ const ge = le(function({
9
+ className: F,
8
10
  listIcon: k = "draft",
9
- nodeIcon: a = { closed: "folder", opened: "folder_open" },
11
+ nodeIcon: o = { closed: "folder", opened: "folder_open" },
10
12
  data: x = [],
11
- expanded: P,
12
- defaultExpanded: S = [],
13
- onExpandedChange: q,
14
- selected: B,
15
- defaultSelected: F = [],
16
- onSelectedChange: d,
17
- selectable: f = !1,
18
- checkboxes: u = !1,
19
- renderLabel: m,
20
- loadChildren: _,
21
- ...G
22
- }, H) {
23
- const [o, J] = D({}), [y, L] = D([]), [z, C] = K({
13
+ expanded: G,
14
+ defaultExpanded: H = [],
15
+ onExpandedChange: J,
16
+ selected: P,
17
+ defaultSelected: Q = [],
18
+ onSelectedChange: _,
19
+ selectable: c = !1,
20
+ checkboxes: m = !1,
21
+ toggleOnRowClick: $ = !c,
22
+ renderLabel: h,
23
+ renderActions: w,
24
+ loadingText: z = "Loading…",
25
+ loadChildren: p,
26
+ "data-testid": U = "tree-view",
27
+ ...W
28
+ }, X) {
29
+ const [f, Y] = q({}), [L, R] = q([]), V = oe(), [C, E] = B({
30
+ value: G,
31
+ defaultValue: H,
32
+ onChange: J
33
+ }), g = ne(), [b, Z] = B({
24
34
  value: P,
25
- defaultValue: S,
26
- onChange: q
27
- }), h = I(), [p, Q] = K({
28
- value: B,
29
- defaultValue: F,
30
- onChange: (e) => {
31
- const t = h.current;
32
- h.current = void 0, d == null || d(e, t);
35
+ defaultValue: Q,
36
+ onChange: (s) => {
37
+ const t = g.current;
38
+ g.current = void 0, _ == null || _(s, t);
33
39
  }
34
- }), U = (e) => {
35
- C((t) => t.includes(e) ? t.filter((s) => s !== e) : [...t, e]);
36
- }, R = (e, t) => {
37
- C((s) => {
38
- const l = s.includes(e);
39
- return t && !l ? [...s, e] : !t && l ? s.filter((w) => w !== e) : s;
40
+ }), I = (s) => {
41
+ E((t) => t.includes(s) ? t.filter((e) => e !== s) : [...t, s]);
42
+ }, T = (s, t) => {
43
+ E((e) => {
44
+ const l = e.includes(s);
45
+ return t && !l ? [...e, s] : !t && l ? e.filter((i) => i !== s) : e;
40
46
  });
41
- }, V = (e) => {
42
- h.current = { id: e, selected: !p.includes(e) }, Q((t) => t.includes(e) ? t.filter((s) => s !== e) : [...t, e]);
43
- }, E = (e, t) => {
44
- !_ || o[t] || e.children && e.children.length > 0 || (L((s) => s.includes(t) ? s : [...s, t]), _(e, t).then((s) => {
45
- J((l) => ({ ...l, [t]: s }));
47
+ }, j = (s) => {
48
+ g.current = { id: s, selected: !b.includes(s) }, Z((t) => t.includes(s) ? t.filter((e) => e !== s) : [...t, s]);
49
+ }, D = (s, t) => {
50
+ !p || f[t] || s.children && s.children.length > 0 || (R((e) => e.includes(t) ? e : [...e, t]), p(s, t).then((e) => {
51
+ Y((l) => ({ ...l, [t]: e }));
46
52
  }).finally(() => {
47
- L((s) => s.filter((l) => l !== t));
53
+ R((e) => e.filter((l) => l !== t));
48
54
  }));
49
- }, T = (e, t) => {
50
- var j, A;
51
- const s = (j = e.id) != null ? j : t, l = (A = e.children) != null ? A : o[s], w = !!_ && (e.hasChildren || !!o[s]), i = !!l && l.length > 0 || w, c = z.includes(s), g = p.includes(s), X = y.includes(s), $ = () => {
52
- i && (c || E(e, s), U(s)), f && V(s);
53
- }, Y = (r) => {
54
- r.key === "Enter" || r.key === " " ? (r.preventDefault(), $()) : r.key === "ArrowRight" && i ? (E(e, s), R(s, !0)) : r.key === "ArrowLeft" && i && R(s, !1);
55
+ }, O = (s, t) => {
56
+ var M, S;
57
+ const e = (M = s.id) != null ? M : t, l = `${V}-${e}`, i = (S = s.children) != null ? S : f[e], se = !!p && (s.hasChildren || !!f[e]), n = !!i && i.length > 0 || se, d = C.includes(e), N = b.includes(e), te = L.includes(e), v = () => {
58
+ d || D(s, e), I(e);
59
+ }, K = () => {
60
+ $ && n && v(), c && j(e);
61
+ }, re = (a) => {
62
+ a.target === a.currentTarget && (a.key === "Enter" || a.key === " " ? (a.preventDefault(), K()) : a.key === "ArrowRight" && n ? (D(s, e), T(e, !0)) : a.key === "ArrowLeft" && n && T(e, !1));
55
63
  };
56
- return /* @__PURE__ */ b(
64
+ return /* @__PURE__ */ y(
57
65
  "div",
58
66
  {
59
- className: O("smwb-tree__node", { "smwb-tree__node_selected": g }),
67
+ className: A("smwb-tree__node", { "smwb-tree__node_selected": N }),
60
68
  role: "treeitem",
61
- "aria-expanded": i ? c : void 0,
62
- "aria-selected": f || u ? g : void 0,
69
+ "aria-labelledby": l,
70
+ "aria-expanded": n ? d : void 0,
71
+ "aria-selected": c || m ? N : void 0,
63
72
  children: [
64
- /* @__PURE__ */ b(
65
- "span",
66
- {
67
- className: "smwb-tree__node__content",
68
- onClick: $,
69
- onKeyDown: Y,
70
- tabIndex: 0,
71
- role: "button",
72
- children: [
73
- u && /* @__PURE__ */ n(
74
- "input",
75
- {
76
- type: "checkbox",
77
- className: "smwb-tree__node__checkbox",
78
- checked: g,
79
- onClick: (r) => r.stopPropagation(),
80
- onChange: () => V(s),
81
- "aria-label": e.label
82
- }
83
- ),
84
- /* @__PURE__ */ b("span", { className: "smwb-tree__node__label", children: [
85
- i && c ? /* @__PURE__ */ n(N, { name: a == null ? void 0 : a.opened, fill: 1, size: 20 }) : i ? /* @__PURE__ */ n(N, { name: a == null ? void 0 : a.closed, fill: 1, size: 20 }) : /* @__PURE__ */ n(N, { name: k, size: 20 }),
86
- m ? m(e, s) : e.label
73
+ /* @__PURE__ */ y("div", { className: "smwb-tree__node__row", children: [
74
+ /* @__PURE__ */ r("span", { className: "smwb-tree__node__toggle", "aria-hidden": "true", onClick: n ? v : void 0, children: n && /* @__PURE__ */ r(u, { name: d ? "expand_more" : "chevron_right", size: 20 }) }),
75
+ m && /* @__PURE__ */ r(
76
+ "input",
77
+ {
78
+ type: "checkbox",
79
+ className: "smwb-tree__node__checkbox",
80
+ checked: N,
81
+ onChange: () => j(e),
82
+ "aria-label": s.label
83
+ }
84
+ ),
85
+ /* @__PURE__ */ r(
86
+ "span",
87
+ {
88
+ className: "smwb-tree__node__content",
89
+ onClick: (a) => {
90
+ de(a) && K();
91
+ },
92
+ onKeyDown: re,
93
+ tabIndex: 0,
94
+ role: "button",
95
+ children: /* @__PURE__ */ y("span", { className: "smwb-tree__node__label", id: l, children: [
96
+ n && d ? /* @__PURE__ */ r(u, { name: o == null ? void 0 : o.opened, fill: 1, size: 20 }) : n ? /* @__PURE__ */ r(u, { name: o == null ? void 0 : o.closed, fill: 1, size: 20 }) : /* @__PURE__ */ r(u, { name: k, size: 20 }),
97
+ h ? h(s, e) : s.label
87
98
  ] })
88
- ]
89
- }
90
- ),
91
- i && c && /* @__PURE__ */ n("div", { role: "group", children: X && !l ? /* @__PURE__ */ n("div", { className: "smwb-tree__node__loading", role: "status", children: "Загрузка…" }) : l == null ? void 0 : l.map((r, Z) => T(r, `${t}.${Z}`)) })
99
+ }
100
+ ),
101
+ w && /* @__PURE__ */ r("span", { className: "smwb-tree__node__actions", children: w(s, e) })
102
+ ] }),
103
+ n && d && /* @__PURE__ */ r("div", { role: "group", children: te && !i ? /* @__PURE__ */ r("div", { className: "smwb-tree__node__loading", role: "status", children: z }) : i == null ? void 0 : i.map((a, ae) => O(a, `${t}.${ae}`)) })
92
104
  ]
93
105
  },
94
- s
106
+ e
95
107
  );
96
- }, W = ee(
97
- () => x.map((e, t) => T(e, `${t}`)),
108
+ }, ee = ie(
109
+ () => x.map((s, t) => {
110
+ var e;
111
+ return (
112
+ // Keyed by node id, not position: a node that moves or gains a sibling keeps its DOM and focus.
113
+ /* @__PURE__ */ r("div", { className: "smwb-tree__wrapper", role: "presentation", children: O(s, `${t}`) }, (e = s.id) != null ? e : `${t}`)
114
+ );
115
+ }),
98
116
  // eslint-disable-next-line react-hooks/exhaustive-deps
99
117
  [
100
118
  x,
101
- z,
102
- p,
103
- f,
104
- u,
105
- k,
106
- a,
119
+ V,
120
+ C,
121
+ b,
122
+ c,
107
123
  m,
124
+ $,
125
+ k,
108
126
  o,
109
- y
127
+ h,
128
+ w,
129
+ z,
130
+ f,
131
+ L
110
132
  ]
111
133
  );
112
- return /* @__PURE__ */ n("div", { "data-testid": "tree-view", ...G, ref: H, role: "tree", className: O("smwb-tree", M), children: W.map((e, t) => /* @__PURE__ */ n("div", { className: "smwb-tree__wrapper", role: "presentation", children: e }, t)) });
134
+ return /* @__PURE__ */ r("div", { "data-testid": U, ...W, ref: X, role: "tree", className: A("smwb-tree", F), children: ee });
113
135
  });
114
136
  export {
115
- ie as TreeView,
116
- ie as default
137
+ ge as TreeView,
138
+ ge as default
117
139
  };
118
140
  //# sourceMappingURL=treeView.js.map