@xplortech/apollo-core 2.5.0 → 2.7.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 (492) hide show
  1. package/.typings/apollo-components.html-data.json +1156 -115
  2. package/build/style.css +12151 -5333
  3. package/dist/apollo-core/apollo-core.css +68 -37
  4. package/dist/apollo-core/apollo-core.esm.js +1 -1
  5. package/dist/apollo-core/{p-f4c2626d.entry.js → p-084d26ed.entry.js} +1 -1
  6. package/dist/apollo-core/p-146d5d55.entry.js +1 -0
  7. package/dist/apollo-core/p-16742606.entry.js +1 -0
  8. package/dist/apollo-core/{p-0ac33b3a.entry.js → p-28d12fd3.entry.js} +1 -1
  9. package/dist/apollo-core/{p-7d245bf0.entry.js → p-3eb5eb7c.entry.js} +1 -1
  10. package/dist/apollo-core/p-4882f0bd.entry.js +1 -0
  11. package/dist/apollo-core/p-64b34268.entry.js +1 -0
  12. package/dist/apollo-core/p-6c956d4e.entry.js +1 -0
  13. package/dist/apollo-core/p-71b75f36.entry.js +1 -0
  14. package/dist/apollo-core/p-7eb86c63.entry.js +1 -0
  15. package/dist/apollo-core/{p-0e1877a2.entry.js → p-84254a24.entry.js} +1 -1
  16. package/dist/apollo-core/p-9f2a0321.entry.js +1 -0
  17. package/dist/apollo-core/p-C7bgJs6C.js +2 -0
  18. package/dist/apollo-core/p-cde83ab0.entry.js +1 -0
  19. package/dist/apollo-core/p-e7363036.entry.js +1 -0
  20. package/dist/cjs/apollo-core.cjs.js +3 -3
  21. package/dist/cjs/{index-D__N_vw2.js → index-BQ97-AWw.js} +149 -96
  22. package/dist/cjs/loader.cjs.js +2 -2
  23. package/dist/cjs/xpl-accordion.cjs.entry.js +5 -5
  24. package/dist/cjs/xpl-application-shell.cjs.entry.js +4 -4
  25. package/dist/cjs/{xpl-avatar_41.cjs.entry.js → xpl-avatar_61.cjs.entry.js} +9154 -1989
  26. package/dist/cjs/xpl-button-row.cjs.entry.js +4 -4
  27. package/dist/cjs/xpl-calendar.cjs.entry.js +4 -4
  28. package/dist/cjs/xpl-dynamic-table-cell.cjs.entry.js +5 -5
  29. package/dist/cjs/xpl-dynamic-table-row.cjs.entry.js +5 -5
  30. package/dist/cjs/xpl-dynamic-table.cjs.entry.js +4 -4
  31. package/dist/cjs/xpl-grid-item.cjs.entry.js +4 -4
  32. package/dist/cjs/xpl-grid.cjs.entry.js +4 -4
  33. package/dist/cjs/xpl-large-card.cjs.entry.js +4 -4
  34. package/dist/cjs/xpl-main-nav.cjs.entry.js +4 -4
  35. package/dist/cjs/xpl-toggle.cjs.entry.js +6 -6
  36. package/dist/cjs/xpl-toolbar.cjs.entry.js +5 -5
  37. package/dist/collection/collection-manifest.json +26 -8
  38. package/dist/collection/components/xpl-accordion/accordion.stories.js +4 -0
  39. package/dist/collection/components/xpl-accordion/xpl-accordion.js +3 -3
  40. package/dist/collection/components/xpl-application-shell/application-shell.stories.js +4 -0
  41. package/dist/collection/components/xpl-application-shell/xpl-application-shell.js +2 -2
  42. package/dist/collection/components/xpl-avatar/avatar.stories.js +122 -103
  43. package/dist/collection/components/xpl-avatar/xpl-avatar.js +250 -16
  44. package/dist/collection/components/xpl-backdrop/backdrop.stories.js +4 -0
  45. package/dist/collection/components/xpl-backdrop/xpl-backdrop.js +2 -2
  46. package/dist/collection/components/xpl-badge/badge.stories.js +76 -33
  47. package/dist/collection/components/xpl-badge/xpl-badge.js +122 -14
  48. package/dist/collection/components/xpl-banner/banner.stories.js +64 -0
  49. package/dist/collection/components/xpl-banner/xpl-banner.js +296 -0
  50. package/dist/collection/components/xpl-breadcrumbs/breadcrumbs.stories.js +4 -0
  51. package/dist/collection/components/xpl-breadcrumbs/xpl-breadcrumb-item/xpl-breadcrumb-item.js +2 -2
  52. package/dist/collection/components/xpl-breadcrumbs/xpl-breadcrumbs/xpl-breadcrumbs.js +2 -2
  53. package/dist/collection/components/xpl-button/button.stories.js +102 -98
  54. package/dist/collection/components/xpl-button/xpl-button.js +201 -93
  55. package/dist/collection/components/xpl-button-row/xpl-button-row.js +2 -2
  56. package/dist/collection/components/xpl-calendar/calendar.stories.js +4 -0
  57. package/dist/collection/components/xpl-calendar/xpl-calendar.js +2 -2
  58. package/dist/collection/components/xpl-checkbox/checkbox.stories.js +4 -0
  59. package/dist/collection/components/xpl-checkbox/xpl-checkbox.js +48 -26
  60. package/dist/collection/components/xpl-choicelist/choicelist.stories.js +4 -0
  61. package/dist/collection/components/xpl-choicelist/xpl-choicelist.js +2 -2
  62. package/dist/collection/components/xpl-content-area/xpl-content-area.js +2 -2
  63. package/dist/collection/components/xpl-dashboard/xpl-dashboard.js +2 -2
  64. package/dist/collection/components/xpl-data-card/data-card.stories.js +4 -0
  65. package/dist/collection/components/xpl-data-card/xpl-data-card.js +3 -3
  66. package/dist/collection/components/xpl-divider/divider.stories.js +4 -0
  67. package/dist/collection/components/xpl-divider/xpl-divider.js +2 -2
  68. package/dist/collection/components/xpl-dropdown/xpl-dropdown-group/xpl-dropdown-group.js +2 -2
  69. package/dist/collection/components/xpl-dropdown/xpl-dropdown-heading/xpl-dropdown-heading.js +2 -2
  70. package/dist/collection/components/xpl-dropdown/xpl-dropdown-option/xpl-dropdown-option.js +29 -4
  71. package/dist/collection/components/xpl-dropdown/xpl-dropdown.js +120 -79
  72. package/dist/collection/components/xpl-dynamic-table/xpl-dynamic-table.js +2 -2
  73. package/dist/collection/components/xpl-dynamic-table-cell/xpl-dynamic-table-cell.js +3 -3
  74. package/dist/collection/components/xpl-dynamic-table-row/xpl-dynamic-table-row.js +3 -3
  75. package/dist/collection/components/xpl-grid/xpl-grid.js +2 -2
  76. package/dist/collection/components/xpl-grid-item/xpl-grid-item.js +2 -2
  77. package/dist/collection/components/xpl-header-accordion/xpl-header-accordion.js +47 -54
  78. package/dist/collection/components/xpl-icon/xpl-icon.js +3 -3
  79. package/dist/collection/components/xpl-input/input.stories.js +170 -9
  80. package/dist/collection/components/xpl-input/xpl-input-color/xpl-input-color.js +9 -9
  81. package/dist/collection/components/xpl-input/xpl-input-date/xpl-input-date.js +55 -17
  82. package/dist/collection/components/xpl-input/xpl-input-file/xpl-input-file.js +5 -5
  83. package/dist/collection/components/xpl-input/xpl-input-phone/phone-country-data.js +58 -0
  84. package/dist/collection/components/xpl-input/xpl-input-phone/phone-format.js +219 -0
  85. package/dist/collection/components/xpl-input/xpl-input-phone/xpl-input-phone.js +469 -0
  86. package/dist/collection/components/xpl-input/xpl-input-search/xpl-input-search.js +485 -0
  87. package/dist/collection/components/xpl-input/xpl-input-time/xpl-input-time.js +3 -3
  88. package/dist/collection/components/xpl-input/xpl-input.js +223 -17
  89. package/dist/collection/components/xpl-large-card/large-card.stories.js +4 -0
  90. package/dist/collection/components/xpl-large-card/xpl-large-card.js +2 -2
  91. package/dist/collection/components/xpl-list/list.stories.js +300 -63
  92. package/dist/collection/components/xpl-list/xpl-list-item/xpl-list-item.js +818 -0
  93. package/dist/collection/components/xpl-list/xpl-list.js +580 -22
  94. package/dist/collection/components/xpl-main-nav/xpl-main-nav.js +2 -2
  95. package/dist/collection/components/xpl-modal/modal.stories.js +4 -0
  96. package/dist/collection/components/xpl-modal/xpl-modal.js +2 -2
  97. package/dist/collection/components/xpl-nav-item/xpl-nav-item.js +3 -3
  98. package/dist/collection/components/xpl-pagination/pagination.stories.js +4 -0
  99. package/dist/collection/components/xpl-pagination/xpl-pagination.js +4 -4
  100. package/dist/collection/components/xpl-panel/panel.stories.js +53 -0
  101. package/dist/collection/components/xpl-panel/xpl-panel.js +60 -0
  102. package/dist/collection/components/xpl-popover/popover.stories.js +4 -0
  103. package/dist/collection/components/xpl-popover/xpl-popover.js +5 -5
  104. package/dist/collection/components/xpl-progress-bar/progress-bar.stories.js +96 -0
  105. package/dist/collection/components/xpl-progress-bar/xpl-progress-bar.js +158 -0
  106. package/dist/collection/components/xpl-progress-indicator/progress-indicator.stories.js +118 -0
  107. package/dist/collection/components/xpl-progress-indicator/xpl-progress-indicator.js +171 -0
  108. package/dist/collection/components/xpl-radio/xpl-radio.js +4 -4
  109. package/dist/collection/components/xpl-secondary-nav/xpl-secondary-nav.js +2 -2
  110. package/dist/collection/components/xpl-select/xpl-select.js +7 -7
  111. package/dist/collection/components/xpl-side-nav/side-nav.stories.js +519 -0
  112. package/dist/collection/components/xpl-side-nav/xpl-side-nav-item/xpl-side-nav-item.js +259 -0
  113. package/dist/collection/components/xpl-side-nav/xpl-side-nav.js +32 -0
  114. package/dist/collection/components/xpl-skeleton/xpl-skeleton.js +2 -2
  115. package/dist/collection/components/xpl-slideout/xpl-slideout.js +2 -2
  116. package/dist/collection/components/xpl-spotlight/spotlight.stories.js +385 -0
  117. package/dist/collection/components/xpl-spotlight/xpl-spotlight.js +1085 -0
  118. package/dist/collection/components/xpl-tab/xpl-tab.js +262 -9
  119. package/dist/collection/components/xpl-tab-panel/xpl-tab-panel.js +23 -16
  120. package/dist/collection/components/xpl-table/table.stories.js +319 -67
  121. package/dist/collection/components/xpl-table/utils/move-row-dom.js +50 -0
  122. package/dist/collection/components/xpl-table/utils/table-internal.js +58 -0
  123. package/dist/collection/components/xpl-table/xpl-table-body/xpl-table-body.js +7 -0
  124. package/dist/collection/components/xpl-table/xpl-table-cell/xpl-table-cell.js +155 -0
  125. package/dist/collection/components/xpl-table/xpl-table-footer/xpl-table-footer.js +7 -0
  126. package/dist/collection/components/xpl-table/xpl-table-footer-cell/xpl-table-footer-cell.js +37 -0
  127. package/dist/collection/components/xpl-table/xpl-table-header/table-header.stories.js +131 -0
  128. package/dist/collection/components/xpl-table/xpl-table-header/xpl-table-header.js +7 -0
  129. package/dist/collection/components/xpl-table/xpl-table-header-cell/table-header-cell.stories.js +105 -0
  130. package/dist/collection/components/xpl-table/xpl-table-header-cell/xpl-table-header-cell.js +402 -0
  131. package/dist/collection/components/xpl-table/xpl-table-row/xpl-table-row.js +121 -0
  132. package/dist/collection/components/xpl-table/xpl-table.js +1449 -144
  133. package/dist/collection/components/xpl-tabs/segment-control.stories.js +31 -0
  134. package/dist/collection/components/xpl-tabs/tabs.shared.js +156 -0
  135. package/dist/collection/components/xpl-tabs/tabs.stories.js +10 -60
  136. package/dist/collection/components/xpl-tabs/xpl-tabs.js +339 -63
  137. package/dist/collection/components/xpl-tag/tag.stories.js +153 -0
  138. package/dist/collection/components/xpl-tag/xpl-tag.js +313 -10
  139. package/dist/collection/components/xpl-toast/xpl-toast.js +3 -3
  140. package/dist/collection/components/xpl-toggle/xpl-toggle.js +4 -4
  141. package/dist/collection/components/xpl-toolbar/xpl-toolbar.js +3 -3
  142. package/dist/collection/components/xpl-tooltip/xpl-tooltip.js +2 -2
  143. package/dist/collection/components/xpl-top-nav/top-nav.stories.js +625 -0
  144. package/dist/collection/components/xpl-top-nav/xpl-nav-header-menu/xpl-nav-header-menu.js +122 -0
  145. package/dist/collection/components/xpl-top-nav/xpl-top-nav-item/xpl-top-nav-item.js +481 -0
  146. package/dist/collection/components/xpl-top-nav/xpl-top-nav.js +433 -0
  147. package/dist/collection/components/xpl-utility-bar/xpl-utility-bar.js +2 -2
  148. package/dist/collection/utils/layout-ancestors.js +22 -0
  149. package/dist/collection/utils/lifecycle.js +79 -0
  150. package/dist/collection/utils/tab-a11y-ids.js +22 -0
  151. package/dist/components/floating-ui.dom.js +1 -0
  152. package/dist/components/index.js +1 -1
  153. package/dist/components/lifecycle.js +1 -0
  154. package/dist/components/tab-a11y-ids.js +1 -0
  155. package/dist/components/xpl-accordion.js +1 -1
  156. package/dist/components/xpl-application-shell.js +1 -1
  157. package/dist/components/xpl-avatar.js +1 -1
  158. package/dist/components/xpl-avatar2.js +1 -1
  159. package/dist/components/xpl-backdrop.js +1 -1
  160. package/dist/components/xpl-backdrop2.js +1 -1
  161. package/dist/components/xpl-badge.js +1 -1
  162. package/dist/components/xpl-badge2.js +1 -1
  163. package/dist/components/xpl-banner.d.ts +11 -0
  164. package/dist/components/xpl-banner.js +1 -0
  165. package/dist/components/xpl-breadcrumb-item.js +1 -1
  166. package/dist/components/xpl-breadcrumbs.js +1 -1
  167. package/dist/components/xpl-button-row.js +1 -1
  168. package/dist/components/xpl-button.js +1 -1
  169. package/dist/components/xpl-button2.js +1 -1
  170. package/dist/components/xpl-calendar.js +1 -1
  171. package/dist/components/xpl-checkbox.js +1 -1
  172. package/dist/components/xpl-checkbox2.js +1 -1
  173. package/dist/components/xpl-choicelist.js +1 -1
  174. package/dist/components/xpl-content-area.js +1 -1
  175. package/dist/components/xpl-dashboard.js +1 -1
  176. package/dist/components/xpl-data-card.js +1 -1
  177. package/dist/components/xpl-divider.js +1 -1
  178. package/dist/components/xpl-divider2.js +1 -1
  179. package/dist/components/xpl-dropdown-group.js +1 -1
  180. package/dist/components/xpl-dropdown-group2.js +1 -1
  181. package/dist/components/xpl-dropdown-heading.js +1 -1
  182. package/dist/components/xpl-dropdown-heading2.js +1 -1
  183. package/dist/components/xpl-dropdown-option.js +1 -1
  184. package/dist/components/xpl-dropdown-option2.js +1 -1
  185. package/dist/components/xpl-dropdown.js +1 -1
  186. package/dist/components/xpl-dropdown2.js +1 -1
  187. package/dist/components/xpl-dynamic-table-cell.js +1 -1
  188. package/dist/components/xpl-dynamic-table-row.js +1 -1
  189. package/dist/components/xpl-dynamic-table.js +1 -1
  190. package/dist/components/xpl-grid-item.js +1 -1
  191. package/dist/components/xpl-grid.js +1 -1
  192. package/dist/components/xpl-header-accordion.js +1 -1
  193. package/dist/components/xpl-icon.js +1 -1
  194. package/dist/components/xpl-icon2.js +1 -1
  195. package/dist/components/xpl-input-date.js +1 -1
  196. package/dist/components/xpl-input-date2.js +1 -1
  197. package/dist/components/xpl-input-file.js +1 -1
  198. package/dist/components/xpl-input-file2.js +1 -1
  199. package/dist/components/xpl-input-phone.d.ts +11 -0
  200. package/dist/components/xpl-input-phone.js +1 -0
  201. package/dist/components/xpl-input-search.d.ts +11 -0
  202. package/dist/components/xpl-input-search.js +1 -0
  203. package/dist/components/xpl-input-search2.js +1 -0
  204. package/dist/components/xpl-input-time.js +1 -1
  205. package/dist/components/xpl-input.js +1 -1
  206. package/dist/components/xpl-input2.js +1 -1
  207. package/dist/components/xpl-large-card.js +1 -1
  208. package/dist/components/{xpl-progress.d.ts → xpl-list-item.d.ts} +4 -4
  209. package/dist/components/xpl-list-item.js +1 -0
  210. package/dist/components/xpl-list-item2.js +1 -0
  211. package/dist/components/xpl-list.js +1 -1
  212. package/dist/components/xpl-main-nav.js +1 -1
  213. package/dist/components/xpl-modal.js +1 -1
  214. package/dist/components/xpl-nav-header-menu.d.ts +11 -0
  215. package/dist/components/xpl-nav-header-menu.js +1 -0
  216. package/dist/components/xpl-nav-item.js +1 -1
  217. package/dist/components/xpl-pagination.js +1 -1
  218. package/dist/components/xpl-panel.d.ts +11 -0
  219. package/dist/components/xpl-panel.js +1 -0
  220. package/dist/components/xpl-popover.js +1 -1
  221. package/dist/components/xpl-popover2.js +1 -1
  222. package/dist/components/xpl-progress-bar.d.ts +11 -0
  223. package/dist/components/xpl-progress-bar.js +1 -0
  224. package/dist/components/xpl-progress-indicator.d.ts +11 -0
  225. package/dist/components/xpl-progress-indicator.js +1 -0
  226. package/dist/components/xpl-radio.js +1 -1
  227. package/dist/components/xpl-radio2.js +1 -1
  228. package/dist/components/xpl-secondary-nav.js +1 -1
  229. package/dist/components/xpl-select.js +1 -1
  230. package/dist/components/xpl-select2.js +1 -1
  231. package/dist/components/xpl-side-nav-item.d.ts +11 -0
  232. package/dist/components/xpl-side-nav-item.js +1 -0
  233. package/dist/components/xpl-side-nav.d.ts +11 -0
  234. package/dist/components/xpl-side-nav.js +1 -0
  235. package/dist/components/xpl-skeleton.js +1 -1
  236. package/dist/components/xpl-slideout.js +1 -1
  237. package/dist/components/xpl-spotlight.d.ts +11 -0
  238. package/dist/components/xpl-spotlight.js +1 -0
  239. package/dist/components/xpl-tab-panel.js +1 -1
  240. package/dist/components/xpl-tab.js +1 -1
  241. package/dist/components/xpl-table-body.d.ts +11 -0
  242. package/dist/components/xpl-table-body.js +1 -0
  243. package/dist/components/xpl-table-cell.d.ts +11 -0
  244. package/dist/components/xpl-table-cell.js +1 -0
  245. package/dist/components/xpl-table-cell2.js +1 -0
  246. package/dist/components/xpl-table-footer-cell.d.ts +11 -0
  247. package/dist/components/xpl-table-footer-cell.js +1 -0
  248. package/dist/components/xpl-table-footer-cell2.js +1 -0
  249. package/dist/components/xpl-table-footer.d.ts +11 -0
  250. package/dist/components/xpl-table-footer.js +1 -0
  251. package/dist/components/xpl-table-header-cell.js +1 -1
  252. package/dist/components/xpl-table-header-cell2.js +1 -0
  253. package/dist/components/xpl-table-header.js +1 -1
  254. package/dist/components/xpl-table-row.d.ts +11 -0
  255. package/dist/components/xpl-table-row.js +1 -0
  256. package/dist/components/xpl-table.js +1 -1
  257. package/dist/components/xpl-tabs.js +1 -1
  258. package/dist/components/xpl-tag.js +1 -1
  259. package/dist/components/xpl-tag2.js +1 -1
  260. package/dist/components/xpl-toast.js +1 -1
  261. package/dist/components/xpl-toggle.js +1 -1
  262. package/dist/components/xpl-toolbar.js +1 -1
  263. package/dist/components/xpl-tooltip.js +1 -1
  264. package/dist/components/xpl-tooltip2.js +1 -1
  265. package/dist/components/xpl-top-nav-item.d.ts +11 -0
  266. package/dist/components/xpl-top-nav-item.js +1 -0
  267. package/dist/components/xpl-top-nav-item2.js +1 -0
  268. package/dist/components/xpl-top-nav.d.ts +11 -0
  269. package/dist/components/xpl-top-nav.js +1 -0
  270. package/dist/components/xpl-utility-bar.js +1 -1
  271. package/dist/docs/xpl-accordion/readme.md +4 -0
  272. package/dist/docs/xpl-avatar/readme.md +291 -12
  273. package/dist/docs/xpl-backdrop/readme.md +1 -1
  274. package/dist/docs/xpl-badge/readme.md +104 -6
  275. package/dist/docs/xpl-banner/readme.md +203 -0
  276. package/dist/docs/xpl-button/readme.md +161 -14
  277. package/dist/docs/xpl-button-row/readme.md +1 -0
  278. package/dist/docs/xpl-calendar/readme.md +2 -1
  279. package/dist/docs/xpl-checkbox/readme.md +19 -14
  280. package/dist/docs/xpl-choicelist/readme.md +1 -0
  281. package/dist/docs/xpl-data-card/readme.md +2 -2
  282. package/dist/docs/xpl-divider/readme.md +6 -4
  283. package/dist/docs/xpl-dropdown/readme.md +15 -12
  284. package/dist/docs/xpl-dropdown/xpl-dropdown-group/readme.md +1 -0
  285. package/dist/docs/xpl-dropdown/xpl-dropdown-option/readme.md +6 -0
  286. package/dist/docs/xpl-dynamic-table/readme.md +22 -19
  287. package/dist/docs/xpl-dynamic-table-cell/readme.md +20 -18
  288. package/dist/docs/xpl-dynamic-table-row/readme.md +21 -19
  289. package/dist/docs/xpl-icon/readme.md +27 -3
  290. package/dist/docs/xpl-input/readme.md +72 -37
  291. package/dist/docs/xpl-input/xpl-input-color/readme.md +5 -0
  292. package/dist/docs/xpl-input/xpl-input-phone/readme.md +168 -0
  293. package/dist/docs/xpl-input/xpl-input-search/readme.md +175 -0
  294. package/dist/docs/xpl-input/xpl-input-time/readme.md +5 -0
  295. package/dist/docs/xpl-large-card/readme.md +1 -1
  296. package/dist/docs/xpl-list/readme.md +320 -10
  297. package/dist/docs/xpl-list/xpl-list-item/readme.md +99 -0
  298. package/dist/docs/xpl-modal/readme.md +3 -0
  299. package/dist/docs/xpl-pagination/readme.md +4 -0
  300. package/dist/docs/xpl-panel/readme.md +174 -0
  301. package/dist/docs/xpl-popover/readme.md +3 -1
  302. package/dist/docs/xpl-progress-bar/readme.md +145 -0
  303. package/dist/docs/xpl-progress-indicator/readme.md +234 -0
  304. package/dist/docs/xpl-radio/readme.md +6 -4
  305. package/dist/docs/xpl-select/readme.md +3 -1
  306. package/dist/docs/xpl-side-nav/readme.md +71 -0
  307. package/dist/docs/xpl-side-nav/xpl-side-nav-item/readme.md +115 -0
  308. package/dist/docs/xpl-slideout/readme.md +2 -1
  309. package/dist/docs/xpl-spotlight/readme.md +235 -0
  310. package/dist/docs/xpl-tab/readme.md +43 -7
  311. package/dist/docs/xpl-tab-panel/readme.md +42 -0
  312. package/dist/docs/xpl-table/readme.md +110 -46
  313. package/dist/docs/xpl-table/xpl-table-body/readme.md +10 -0
  314. package/dist/docs/xpl-table/xpl-table-cell/readme.md +33 -0
  315. package/dist/docs/xpl-table/xpl-table-footer/readme.md +10 -0
  316. package/dist/docs/xpl-table/xpl-table-footer-cell/readme.md +30 -0
  317. package/dist/docs/{xpl-table-header → xpl-table/xpl-table-header}/readme.md +13 -13
  318. package/dist/docs/xpl-table/xpl-table-header-cell/readme.md +66 -0
  319. package/dist/docs/xpl-table/xpl-table-row/readme.md +19 -0
  320. package/dist/docs/xpl-tabs/readme.md +63 -8
  321. package/dist/docs/xpl-tag/readme.md +379 -4
  322. package/dist/docs/xpl-toast/readme.md +56 -1
  323. package/dist/docs/xpl-top-nav/readme.md +179 -0
  324. package/dist/docs/xpl-top-nav/xpl-nav-header-menu/readme.md +81 -0
  325. package/dist/docs/xpl-top-nav/xpl-top-nav-item/readme.md +87 -0
  326. package/dist/esm/apollo-core.js +4 -4
  327. package/dist/esm/{index-DhZas3eX.js → index-C7bgJs6C.js} +149 -97
  328. package/dist/esm/loader.js +3 -3
  329. package/dist/esm/xpl-accordion.entry.js +5 -5
  330. package/dist/esm/xpl-application-shell.entry.js +4 -4
  331. package/dist/esm/{xpl-avatar_41.entry.js → xpl-avatar_61.entry.js} +9087 -1942
  332. package/dist/esm/xpl-button-row.entry.js +4 -4
  333. package/dist/esm/xpl-calendar.entry.js +4 -4
  334. package/dist/esm/xpl-dynamic-table-cell.entry.js +5 -5
  335. package/dist/esm/xpl-dynamic-table-row.entry.js +5 -5
  336. package/dist/esm/xpl-dynamic-table.entry.js +4 -4
  337. package/dist/esm/xpl-grid-item.entry.js +4 -4
  338. package/dist/esm/xpl-grid.entry.js +4 -4
  339. package/dist/esm/xpl-large-card.entry.js +4 -4
  340. package/dist/esm/xpl-main-nav.entry.js +4 -4
  341. package/dist/esm/xpl-toggle.entry.js +6 -6
  342. package/dist/esm/xpl-toolbar.entry.js +5 -5
  343. package/dist/types/components/xpl-accordion/xpl-accordion.d.ts +1 -1
  344. package/dist/types/components/xpl-application-shell/application-shell.stories.d.ts +4 -0
  345. package/dist/types/components/xpl-application-shell/xpl-application-shell.d.ts +1 -1
  346. package/dist/types/components/xpl-avatar/avatar.stories.d.ts +90 -27
  347. package/dist/types/components/xpl-avatar/xpl-avatar.d.ts +30 -3
  348. package/dist/types/components/xpl-backdrop/backdrop.stories.d.ts +4 -0
  349. package/dist/types/components/xpl-backdrop/xpl-backdrop.d.ts +1 -1
  350. package/dist/types/components/xpl-badge/badge.stories.d.ts +47 -11
  351. package/dist/types/components/xpl-badge/xpl-badge.d.ts +9 -2
  352. package/dist/types/components/xpl-banner/banner.stories.d.ts +77 -0
  353. package/dist/types/components/xpl-banner/xpl-banner.d.ts +20 -0
  354. package/dist/types/components/xpl-breadcrumbs/breadcrumbs.stories.d.ts +4 -0
  355. package/dist/types/components/xpl-breadcrumbs/xpl-breadcrumb-item/xpl-breadcrumb-item.d.ts +1 -1
  356. package/dist/types/components/xpl-breadcrumbs/xpl-breadcrumbs/xpl-breadcrumbs.d.ts +1 -1
  357. package/dist/types/components/xpl-button/button.stories.d.ts +68 -30
  358. package/dist/types/components/xpl-button/xpl-button.d.ts +21 -8
  359. package/dist/types/components/xpl-button-row/xpl-button-row.d.ts +1 -1
  360. package/dist/types/components/xpl-calendar/calendar.stories.d.ts +4 -0
  361. package/dist/types/components/xpl-calendar/xpl-calendar.d.ts +1 -1
  362. package/dist/types/components/xpl-checkbox/checkbox.stories.d.ts +4 -0
  363. package/dist/types/components/xpl-checkbox/xpl-checkbox.d.ts +5 -4
  364. package/dist/types/components/xpl-choicelist/choicelist.stories.d.ts +4 -0
  365. package/dist/types/components/xpl-choicelist/xpl-choicelist.d.ts +1 -1
  366. package/dist/types/components/xpl-content-area/xpl-content-area.d.ts +1 -1
  367. package/dist/types/components/xpl-dashboard/xpl-dashboard.d.ts +1 -1
  368. package/dist/types/components/xpl-data-card/data-card.stories.d.ts +4 -0
  369. package/dist/types/components/xpl-data-card/xpl-data-card.d.ts +1 -1
  370. package/dist/types/components/xpl-divider/divider.stories.d.ts +4 -0
  371. package/dist/types/components/xpl-divider/xpl-divider.d.ts +1 -1
  372. package/dist/types/components/xpl-dropdown/dropdown-option.d.ts +1 -0
  373. package/dist/types/components/xpl-dropdown/dropdown.stories.d.ts +1 -1
  374. package/dist/types/components/xpl-dropdown/xpl-dropdown-group/xpl-dropdown-group.d.ts +1 -1
  375. package/dist/types/components/xpl-dropdown/xpl-dropdown-heading/xpl-dropdown-heading.d.ts +1 -1
  376. package/dist/types/components/xpl-dropdown/xpl-dropdown-option/xpl-dropdown-option.d.ts +3 -2
  377. package/dist/types/components/xpl-dropdown/xpl-dropdown.d.ts +11 -8
  378. package/dist/types/components/xpl-dynamic-table/xpl-dynamic-table.d.ts +1 -1
  379. package/dist/types/components/xpl-dynamic-table-cell/xpl-dynamic-table-cell.d.ts +1 -1
  380. package/dist/types/components/xpl-dynamic-table-row/xpl-dynamic-table-row.d.ts +1 -1
  381. package/dist/types/components/xpl-grid/xpl-grid.d.ts +1 -1
  382. package/dist/types/components/xpl-grid-item/xpl-grid-item.d.ts +1 -1
  383. package/dist/types/components/xpl-header-accordion/xpl-header-accordion.d.ts +10 -11
  384. package/dist/types/components/xpl-icon/xpl-icon.d.ts +1 -1
  385. package/dist/types/components/xpl-input/input.stories.d.ts +37 -7
  386. package/dist/types/components/xpl-input/xpl-input-color/xpl-input-color.d.ts +1 -1
  387. package/dist/types/components/xpl-input/xpl-input-date/xpl-input-date.d.ts +10 -3
  388. package/dist/types/components/xpl-input/xpl-input-file/xpl-input-file.d.ts +1 -1
  389. package/dist/types/components/xpl-input/xpl-input-phone/phone-country-data.d.ts +13 -0
  390. package/dist/types/components/xpl-input/xpl-input-phone/phone-format.d.ts +5 -0
  391. package/dist/types/components/xpl-input/xpl-input-phone/xpl-input-phone.d.ts +48 -0
  392. package/dist/types/components/xpl-input/xpl-input-search/xpl-input-search.d.ts +39 -0
  393. package/dist/types/components/xpl-input/xpl-input-time/xpl-input-time.d.ts +1 -1
  394. package/dist/types/components/xpl-input/xpl-input.d.ts +23 -5
  395. package/dist/types/components/xpl-large-card/large-card.stories.d.ts +4 -0
  396. package/dist/types/components/xpl-large-card/xpl-large-card.d.ts +1 -1
  397. package/dist/types/components/xpl-list/list.stories.d.ts +299 -13
  398. package/dist/types/components/xpl-list/listitem.d.ts +13 -0
  399. package/dist/types/components/xpl-list/xpl-list-item/xpl-list-item.d.ts +71 -0
  400. package/dist/types/components/xpl-list/xpl-list.d.ts +56 -3
  401. package/dist/types/components/xpl-main-nav/xpl-main-nav.d.ts +1 -1
  402. package/dist/types/components/xpl-modal/modal.stories.d.ts +4 -0
  403. package/dist/types/components/xpl-modal/xpl-modal.d.ts +1 -1
  404. package/dist/types/components/xpl-nav-item/xpl-nav-item.d.ts +1 -1
  405. package/dist/types/components/xpl-pagination/pagination.stories.d.ts +4 -0
  406. package/dist/types/components/xpl-pagination/xpl-pagination.d.ts +1 -1
  407. package/dist/types/components/xpl-panel/panel.stories.d.ts +22 -0
  408. package/dist/types/components/xpl-panel/xpl-panel.d.ts +5 -0
  409. package/dist/types/components/xpl-popover/xpl-popover.d.ts +1 -1
  410. package/dist/types/components/xpl-progress-bar/progress-bar.stories.d.ts +73 -0
  411. package/dist/types/components/xpl-progress-bar/xpl-progress-bar.d.ts +15 -0
  412. package/dist/types/components/xpl-progress-indicator/progress-indicator.stories.d.ts +62 -0
  413. package/dist/types/components/xpl-progress-indicator/xpl-progress-indicator.d.ts +11 -0
  414. package/dist/types/components/xpl-radio/xpl-radio.d.ts +1 -1
  415. package/dist/types/components/xpl-secondary-nav/xpl-secondary-nav.d.ts +1 -1
  416. package/dist/types/components/xpl-select/xpl-select.d.ts +1 -1
  417. package/dist/types/components/xpl-side-nav/side-nav.stories.d.ts +80 -0
  418. package/dist/types/components/xpl-side-nav/xpl-side-nav-item/xpl-side-nav-item.d.ts +20 -0
  419. package/dist/types/components/xpl-side-nav/xpl-side-nav.d.ts +4 -0
  420. package/dist/types/components/xpl-skeleton/xpl-skeleton.d.ts +1 -1
  421. package/dist/types/components/xpl-slideout/xpl-slideout.d.ts +1 -1
  422. package/dist/types/components/xpl-spotlight/spotlight.stories.d.ts +197 -0
  423. package/dist/types/components/xpl-spotlight/xpl-spotlight.d.ts +101 -0
  424. package/dist/types/components/xpl-tab/xpl-tab.d.ts +15 -2
  425. package/dist/types/components/xpl-tab-panel/xpl-tab-panel.d.ts +3 -2
  426. package/dist/types/components/xpl-table/table.stories.d.ts +161 -19
  427. package/dist/types/components/xpl-table/utils/move-row-dom.d.ts +3 -0
  428. package/dist/types/components/xpl-table/utils/table-internal.d.ts +8 -0
  429. package/dist/types/components/xpl-table/xpl-table-body/xpl-table-body.d.ts +3 -0
  430. package/dist/types/components/xpl-table/xpl-table-cell/xpl-table-cell.d.ts +11 -0
  431. package/dist/types/components/xpl-table/xpl-table-footer/xpl-table-footer.d.ts +3 -0
  432. package/dist/types/components/xpl-table/xpl-table-footer-cell/xpl-table-footer-cell.d.ts +4 -0
  433. package/dist/types/components/{xpl-table-header → xpl-table/xpl-table-header}/table-header.stories.d.ts +13 -16
  434. package/dist/types/components/xpl-table/xpl-table-header/xpl-table-header.d.ts +3 -0
  435. package/dist/types/components/{xpl-table-header-cell → xpl-table/xpl-table-header-cell}/table-header-cell.stories.d.ts +24 -20
  436. package/dist/types/components/xpl-table/xpl-table-header-cell/xpl-table-header-cell.d.ts +32 -0
  437. package/dist/types/components/xpl-table/xpl-table-row/xpl-table-row.d.ts +13 -0
  438. package/dist/types/components/xpl-table/xpl-table.d.ts +124 -22
  439. package/dist/types/components/xpl-tabs/segment-control.stories.d.ts +112 -0
  440. package/dist/types/components/xpl-tabs/tabs.shared.d.ts +156 -0
  441. package/dist/types/components/xpl-tabs/tabs.stories.d.ts +65 -12
  442. package/dist/types/components/xpl-tabs/xpl-tabs.d.ts +38 -19
  443. package/dist/types/components/xpl-tag/tag.stories.d.ts +65 -0
  444. package/dist/types/components/xpl-tag/xpl-tag.d.ts +37 -2
  445. package/dist/types/components/xpl-toast/xpl-toast.d.ts +1 -1
  446. package/dist/types/components/xpl-toggle/xpl-toggle.d.ts +1 -1
  447. package/dist/types/components/xpl-toolbar/xpl-toolbar.d.ts +1 -1
  448. package/dist/types/components/xpl-tooltip/xpl-tooltip.d.ts +1 -1
  449. package/dist/types/components/xpl-top-nav/top-nav.stories.d.ts +471 -0
  450. package/dist/types/components/xpl-top-nav/xpl-nav-header-menu/xpl-nav-header-menu.d.ts +18 -0
  451. package/dist/types/components/xpl-top-nav/xpl-top-nav-item/xpl-top-nav-item.d.ts +48 -0
  452. package/dist/types/components/xpl-top-nav/xpl-top-nav.d.ts +51 -0
  453. package/dist/types/components/xpl-utility-bar/xpl-utility-bar.d.ts +1 -1
  454. package/dist/types/components.d.ts +3059 -278
  455. package/dist/types/stencil-public-runtime.d.ts +23 -2
  456. package/dist/types/utils/layout-ancestors.d.ts +2 -0
  457. package/dist/types/utils/lifecycle.d.ts +16 -0
  458. package/dist/types/utils/tab-a11y-ids.d.ts +4 -0
  459. package/package.json +42 -28
  460. package/dist/apollo-core/p-1c2e4034.entry.js +0 -1
  461. package/dist/apollo-core/p-3b5f8989.entry.js +0 -1
  462. package/dist/apollo-core/p-4fab8172.entry.js +0 -1
  463. package/dist/apollo-core/p-576ce90f.entry.js +0 -1
  464. package/dist/apollo-core/p-5ec45742.entry.js +0 -1
  465. package/dist/apollo-core/p-77f0fd4a.entry.js +0 -1
  466. package/dist/apollo-core/p-7b7db57a.entry.js +0 -1
  467. package/dist/apollo-core/p-7c22b842.entry.js +0 -1
  468. package/dist/apollo-core/p-812bb0e4.entry.js +0 -1
  469. package/dist/apollo-core/p-845eef0d.entry.js +0 -1
  470. package/dist/apollo-core/p-9853028c.entry.js +0 -1
  471. package/dist/apollo-core/p-9d65ece7.entry.js +0 -1
  472. package/dist/apollo-core/p-DhZas3eX.js +0 -2
  473. package/dist/apollo-core/p-be292555.entry.js +0 -1
  474. package/dist/cjs/xpl-list.cjs.entry.js +0 -32
  475. package/dist/cjs/xpl-table-header-cell.cjs.entry.js +0 -57
  476. package/dist/cjs/xpl-table-header.cjs.entry.js +0 -14
  477. package/dist/collection/components/xpl-progress/progress.stories.js +0 -106
  478. package/dist/collection/components/xpl-progress/xpl-progress.js +0 -60
  479. package/dist/collection/components/xpl-table-header/table-header.stories.js +0 -126
  480. package/dist/collection/components/xpl-table-header/xpl-table-header.js +0 -7
  481. package/dist/collection/components/xpl-table-header-cell/table-header-cell.stories.js +0 -75
  482. package/dist/collection/components/xpl-table-header-cell/xpl-table-header-cell.js +0 -188
  483. package/dist/components/xpl-progress.js +0 -1
  484. package/dist/docs/xpl-progress/readme.md +0 -22
  485. package/dist/docs/xpl-table-header-cell/readme.md +0 -47
  486. package/dist/esm/xpl-list.entry.js +0 -30
  487. package/dist/esm/xpl-table-header-cell.entry.js +0 -55
  488. package/dist/esm/xpl-table-header.entry.js +0 -12
  489. package/dist/types/components/xpl-progress/progress.stories.d.ts +0 -38
  490. package/dist/types/components/xpl-progress/xpl-progress.d.ts +0 -6
  491. package/dist/types/components/xpl-table-header/xpl-table-header.d.ts +0 -3
  492. package/dist/types/components/xpl-table-header-cell/xpl-table-header-cell.d.ts +0 -13
@@ -1,19 +1,107 @@
1
1
  import { v4 as uuid } from "uuid";
2
+ const SLOT_TABLE_WRAPPER_STYLE = 'box-sizing: border-box; display: block; width: 100%; max-width: min(100vw - 2rem, 960px); overflow: auto;';
3
+ const PLACEHOLDER_AVATAR_SRC = 'https://placebear.com/128/128';
2
4
  export default {
3
5
  title: 'Components/Table',
4
- argTypes: {
5
- freeze: { control: { type: 'boolean' } },
6
- multiselect: { control: { type: 'boolean' } },
7
- striped: { control: { type: 'boolean' } },
8
- columns: { control: { type: 'object' } },
9
- data: { control: { type: 'object' } },
10
- footer: { control: { type: 'object' } },
11
- isSortable: { control: { type: 'boolean' } },
12
- sortableColumns: { control: { type: 'object' } },
13
- },
14
6
  parameters: {
7
+ controls: {
8
+ sort: 'none',
9
+ },
15
10
  actions: {
16
- handles: ['tableSelect', 'sortChanged'],
11
+ handles: ['tableSelect', 'sortChanged', 'rowSelectionChange', 'rowOrderChange'],
12
+ },
13
+ docs: {
14
+ description: {
15
+ component: 'Use **Slot based** for compositional `xpl-table` (`xpl-table-header`, `xpl-table-body`, …). Use **Legacy** for the deprecated `columns` / `data` API (native `<table>`). Compositional mode: `selectable`, `row-reorderable`, toolbar slots, and **header sort** (`sortable` on `xpl-table-header-cell` + `sortChanged` on the table — the story script reorders rows for demo only).',
16
+ },
17
+ },
18
+ },
19
+ argTypes: {
20
+ type: {
21
+ name: 'Type',
22
+ control: { type: 'select' },
23
+ options: ['Legacy', 'Slot based'],
24
+ table: { category: '00 — Mode' },
25
+ },
26
+ freeze: {
27
+ control: { type: 'boolean' },
28
+ table: { category: 'Shared' },
29
+ },
30
+ striped: {
31
+ control: { type: 'boolean' },
32
+ table: { category: 'Shared' },
33
+ },
34
+ multiselect: {
35
+ control: { type: 'boolean' },
36
+ if: { arg: 'type', eq: 'Legacy' },
37
+ table: { category: '01 — Legacy' },
38
+ },
39
+ columns: {
40
+ control: { type: 'object' },
41
+ if: { arg: 'type', eq: 'Legacy' },
42
+ table: { category: '01 — Legacy' },
43
+ },
44
+ data: {
45
+ control: { type: 'object' },
46
+ if: { arg: 'type', eq: 'Legacy' },
47
+ table: { category: '01 — Legacy' },
48
+ },
49
+ footer: {
50
+ control: { type: 'object' },
51
+ if: { arg: 'type', eq: 'Legacy' },
52
+ table: { category: '01 — Legacy' },
53
+ },
54
+ isSortable: {
55
+ control: { type: 'boolean' },
56
+ if: { arg: 'type', eq: 'Legacy' },
57
+ table: { category: '01 — Legacy' },
58
+ },
59
+ sortableColumns: {
60
+ control: { type: 'object' },
61
+ if: { arg: 'type', eq: 'Legacy' },
62
+ table: { category: '01 — Legacy' },
63
+ },
64
+ selectedValues: {
65
+ control: { type: 'object' },
66
+ if: { arg: 'type', eq: 'Legacy' },
67
+ description: '**Legacy only** (`columns` / `data` + `multiselect`). Per-row checkbox values. Not used in slot-based mode.',
68
+ table: { category: '01 — Legacy' },
69
+ },
70
+ tableLabel: {
71
+ control: 'text',
72
+ if: { arg: 'type', eq: 'Slot based' },
73
+ description: 'Sets `label` / `aria-label` on `xpl-table`.',
74
+ table: { category: '02 — Slot: Table' },
75
+ },
76
+ showSelectable: {
77
+ control: 'boolean',
78
+ if: { arg: 'type', eq: 'Slot based' },
79
+ description: 'Adds `selectable` and a checkbox column (you must author header + row checkboxes).',
80
+ table: { category: '02 — Slot: Table' },
81
+ },
82
+ showRowReorderable: {
83
+ control: 'boolean',
84
+ if: { arg: 'type', eq: 'Slot based' },
85
+ description: 'Adds `row-reorderable`; Apollo injects the reorder column (grip).',
86
+ table: { category: '02 — Slot: Table' },
87
+ },
88
+ showToolbar: {
89
+ control: 'boolean',
90
+ if: { arg: 'type', eq: 'Slot based' },
91
+ description: 'Renders `slot="toolbar-actions-left"` on the bulk toolbar. Requires **`showSelectable`**: without `selectable`, those slots are not rendered by `xpl-table` and toolbar nodes would break the grid — the story skips them when selection is off.',
92
+ table: { category: '02 — Slot: Table' },
93
+ },
94
+ sortableNameColumn: {
95
+ control: 'boolean',
96
+ if: { arg: 'type', eq: 'Slot based' },
97
+ description: 'Name column uses `sortable` + `sort-key="name"`. Compositional tables emit `sortChanged` only; the story script reorders rows by the active sort-key in `event.detail` (same slug rules as `xpl-table`).',
98
+ table: { category: '02 — Slot: Table' },
99
+ },
100
+ showRichCells: {
101
+ control: 'boolean',
102
+ if: { arg: 'type', eq: 'Slot based' },
103
+ description: 'Name column shows avatar + caption (like the index.html rich demo).',
104
+ table: { category: '03 — Slot: Row content' },
17
105
  },
18
106
  },
19
107
  };
@@ -41,7 +129,7 @@ const selectedValuesDefault = [
41
129
  ];
42
130
  const sortableColumnsDefault = [false, false, false, false, false, false];
43
131
  const footerDefault = [['Total', '676.5', '159.75', 'All Seasons', '26', '106']];
44
- const script = ({ columns, data, footer, id, selectedValues, isSortable, sortableColumns }) => `
132
+ const legacyScript = ({ columns, data, footer, id, selectedValues, isSortable, sortableColumns, }) => `
45
133
  (function() {
46
134
  const table = document.getElementById("${id}");
47
135
  table.columns = ${JSON.stringify(columns)};
@@ -52,8 +140,206 @@ const script = ({ columns, data, footer, id, selectedValues, isSortable, sortabl
52
140
  table.isSortable = ${isSortable};
53
141
  })();
54
142
  `;
55
- export const Table = ({ columns, data, footer, freeze, multiselect, selectedValues, striped, isSortable, sortableColumns, }) => {
143
+ function slotBasedSortScript(tableId) {
144
+ const idLiteral = JSON.stringify(tableId);
145
+ return `
146
+ <script>
147
+ (function () {
148
+ const table = document.getElementById(${idLiteral});
149
+ if (!table) return;
150
+
151
+ function sortKeySlug(h, columnIndex) {
152
+ var sk = h.getAttribute('sort-key');
153
+ var lab = (h.getAttribute('label') || '').trim();
154
+ var raw = (sk || lab || '').trim();
155
+ if (raw.length > 0) return raw.replace(/ /g, '-').toLowerCase();
156
+ return 'column-' + columnIndex;
157
+ }
158
+
159
+ table.addEventListener('sortChanged', function (e) {
160
+ const detail = e.detail;
161
+ if (!detail || typeof detail !== 'object') return;
162
+
163
+ var activeKey = null;
164
+ var dir = null;
165
+ Object.keys(detail).forEach(function (k) {
166
+ var v = detail[k];
167
+ if (v === 'asc' || v === 'desc') {
168
+ activeKey = k;
169
+ dir = v;
170
+ }
171
+ });
172
+
173
+ const body = table.querySelector('xpl-table-body');
174
+ const headerRow = table.querySelector('xpl-table-header xpl-table-row');
175
+ if (!body || !headerRow) return;
176
+ const headers = Array.from(headerRow.querySelectorAll('xpl-table-header-cell'));
177
+ const rows = Array.from(body.querySelectorAll('xpl-table-row'));
178
+
179
+ function defaultOrder(row) {
180
+ const rid = row.getAttribute('row-id') || '';
181
+ const m = rid.match(/-(\\d+)$/);
182
+ return m ? parseInt(m[1], 10) : 0;
183
+ }
184
+
185
+ if (!activeKey) {
186
+ rows.sort(function (a, b) {
187
+ return defaultOrder(a) - defaultOrder(b);
188
+ });
189
+ rows.forEach(function (r) {
190
+ body.appendChild(r);
191
+ });
192
+ return;
193
+ }
194
+
195
+ var sortColIdx = headers.findIndex(function (h, i) {
196
+ return sortKeySlug(h, i) === activeKey;
197
+ });
198
+ if (sortColIdx < 0) return;
199
+
200
+ function rowKey(row) {
201
+ const cells = row.querySelectorAll('xpl-table-cell');
202
+ const c = cells[sortColIdx];
203
+ return (c && c.textContent ? c.textContent : '')
204
+ .replace(/\\s+/g, ' ')
205
+ .trim()
206
+ .toLowerCase();
207
+ }
208
+ rows.sort(function (a, b) {
209
+ const cmp = rowKey(a).localeCompare(rowKey(b));
210
+ return dir === 'asc' ? cmp : -cmp;
211
+ });
212
+ rows.forEach(function (r) {
213
+ body.appendChild(r);
214
+ });
215
+ });
216
+ })();
217
+ </script>`;
218
+ }
219
+ function slotBasedNameCell(showRichCells, rowIndex, name) {
220
+ if (!showRichCells) {
221
+ return `<xpl-table-cell>${name}</xpl-table-cell>`;
222
+ }
223
+ return `<xpl-table-cell>
224
+ <div style="display: flex; align-items: center; gap: var(--xpl-space-12);">
225
+ <xpl-avatar name="${name}" src="${PLACEHOLDER_AVATAR_SRC}" size="sm"></xpl-avatar>
226
+ <div style="display: flex; flex-direction: column; gap: var(--xpl-space-4); min-width: 0;">
227
+ <span style="font-weight: var(--xpl-font-weight-semibold)">${name}</span>
228
+ <span class="xpl-text-caption">player${rowIndex}@example.com</span>
229
+ </div>
230
+ </div>
231
+ </xpl-table-cell>`;
232
+ }
233
+ function renderSlotBasedTable(props) {
234
+ const tableId = uuid();
235
+ const label = props.tableLabel != null && String(props.tableLabel).trim() !== ''
236
+ ? String(props.tableLabel)
237
+ : 'Team directory';
238
+ const labelAttr = ` label="${label.replace(/"/g, '&quot;')}"`;
239
+ const attrs = [
240
+ ` id="${tableId}"`,
241
+ labelAttr,
242
+ props.striped ? ' striped' : '',
243
+ props.freeze ? ' freeze' : '',
244
+ props.showSelectable ? ' selectable' : '',
245
+ props.showRowReorderable ? ' row-reorderable' : '',
246
+ ].join('');
247
+ const toolbar = props.showSelectable && props.showToolbar
248
+ ? `
249
+ <div slot="toolbar-actions-left" style="display: inline-flex; align-items: center; gap: var(--xpl-space-8)">
250
+ <xpl-button size="sm" variant="secondary" type="button">Bulk action</xpl-button>
251
+ </div>`
252
+ : '';
253
+ const headerCheckbox = props.showSelectable
254
+ ? `<xpl-table-header-cell type="checkbox" width="48"></xpl-table-header-cell>`
255
+ : '';
256
+ const nameSort = props.sortableNameColumn ? ' sortable sort-key="name"' : '';
257
+ const names = ['Boston Rob Mariano', 'Parvati Shallow', 'Ozzy Lusth'];
258
+ const bodyRows = [1, 2, 3]
259
+ .map((i) => {
260
+ var _a;
261
+ const rowCheckbox = props.showSelectable
262
+ ? `<xpl-table-cell><xpl-checkbox></xpl-checkbox></xpl-table-cell>`
263
+ : '';
264
+ const name = (_a = names[i - 1]) !== null && _a !== void 0 ? _a : `Player ${i}`;
265
+ return `
266
+ <xpl-table-row row-id="story-row-${i}">
267
+ ${rowCheckbox}
268
+ ${slotBasedNameCell(Boolean(props.showRichCells), i, name)}
269
+ <xpl-table-cell>${90 + i * 7}</xpl-table-cell>
270
+ <xpl-table-cell>S${10 + i}, S${20 + i}</xpl-table-cell>
271
+ </xpl-table-row>`;
272
+ })
273
+ .join('');
274
+ return `
275
+ <div style="${SLOT_TABLE_WRAPPER_STYLE}">
276
+ <xpl-table${attrs}>
277
+ ${toolbar}
278
+ <xpl-table-header>
279
+ <xpl-table-row>
280
+ ${headerCheckbox}
281
+ <xpl-table-header-cell label="Name"${nameSort} width="280"></xpl-table-header-cell>
282
+ <xpl-table-header-cell label="Days" align="right" width="96"></xpl-table-header-cell>
283
+ <xpl-table-header-cell label="Seasons"></xpl-table-header-cell>
284
+ </xpl-table-row>
285
+ </xpl-table-header>
286
+ <xpl-table-body>
287
+ ${bodyRows}
288
+ </xpl-table-body>
289
+ </xpl-table>
290
+ </div>${slotBasedSortScript(tableId)}`;
291
+ }
292
+ const slotBasedExample = `<div style="${SLOT_TABLE_WRAPPER_STYLE}">
293
+ <xpl-table label="Team directory" selectable striped freeze row-reorderable>
294
+ <div slot="toolbar-actions-left" style="display: inline-flex; align-items: center; gap: var(--xpl-space-8)">
295
+ <xpl-button size="sm" variant="secondary" type="button">Bulk action</xpl-button>
296
+ </div>
297
+ <xpl-table-header>
298
+ <xpl-table-row>
299
+ <xpl-table-header-cell type="checkbox" width="48"></xpl-table-header-cell>
300
+ <xpl-table-header-cell label="Name" sortable sort-key="name" width="280"></xpl-table-header-cell>
301
+ <xpl-table-header-cell label="Days" align="right" width="96"></xpl-table-header-cell>
302
+ <xpl-table-header-cell label="Seasons"></xpl-table-header-cell>
303
+ </xpl-table-row>
304
+ </xpl-table-header>
305
+ <xpl-table-body>
306
+ <xpl-table-row row-id="example-1">
307
+ <xpl-table-cell><xpl-checkbox></xpl-checkbox></xpl-table-cell>
308
+ <xpl-table-cell>
309
+ <div style="display: flex; align-items: center; gap: var(--xpl-space-12);">
310
+ <xpl-avatar name="Boston Rob" src="https://placebear.com/128/128" size="sm"></xpl-avatar>
311
+ <div style="display: flex; flex-direction: column; gap: var(--xpl-space-4); min-width: 0;">
312
+ <span style="font-weight: var(--xpl-font-weight-semibold)">Boston Rob Mariano</span>
313
+ <span class="xpl-text-caption">boston@example.com</span>
314
+ </div>
315
+ </div>
316
+ </xpl-table-cell>
317
+ <xpl-table-cell align="right">152</xpl-table-cell>
318
+ <xpl-table-cell>S4, S8, S20</xpl-table-cell>
319
+ </xpl-table-row>
320
+ <xpl-table-row row-id="example-2">
321
+ <xpl-table-cell><xpl-checkbox></xpl-checkbox></xpl-table-cell>
322
+ <xpl-table-cell>
323
+ <div style="display: flex; align-items: center; gap: var(--xpl-space-12);">
324
+ <xpl-avatar name="Parvati Shallow" size="sm" color="green"></xpl-avatar>
325
+ <div style="display: flex; flex-direction: column; gap: var(--xpl-space-4); min-width: 0;">
326
+ <span style="font-weight: var(--xpl-font-weight-semibold)">Parvati Shallow</span>
327
+ <span class="xpl-text-caption">parvati@example.com</span>
328
+ </div>
329
+ </div>
330
+ </xpl-table-cell>
331
+ <xpl-table-cell align="right">149</xpl-table-cell>
332
+ <xpl-table-cell>S13, S16, S20</xpl-table-cell>
333
+ </xpl-table-row>
334
+ </xpl-table-body>
335
+ </xpl-table>
336
+ </div>`;
337
+ export const Table = (props) => {
338
+ if (props.type === 'Slot based') {
339
+ return renderSlotBasedTable(props);
340
+ }
56
341
  const id = uuid();
342
+ const { columns, data, footer, freeze, multiselect, selectedValues, striped, isSortable, sortableColumns, } = props;
57
343
  let attrs = '';
58
344
  if (freeze)
59
345
  attrs += ' freeze';
@@ -68,77 +354,43 @@ export const Table = ({ columns, data, footer, freeze, multiselect, selectedValu
68
354
  <xpl-table id="${id}"${attrs}></xpl-table>
69
355
  </div>
70
356
  <script>
71
- ${script({ id, columns, data, footer, selectedValues, sortableColumns, isSortable })}
357
+ ${legacyScript({
358
+ id,
359
+ columns,
360
+ data,
361
+ footer,
362
+ selectedValues,
363
+ sortableColumns,
364
+ isSortable,
365
+ })}
72
366
  </script>
73
367
  `;
74
368
  };
75
369
  Table.args = {
370
+ type: 'Slot based',
76
371
  freeze: true,
372
+ striped: true,
77
373
  multiselect: false,
78
- striped: false,
79
374
  columns: columnsDefault,
80
375
  data: dataDefault,
81
376
  footer: footerDefault,
82
377
  selectedValues: selectedValuesDefault,
83
378
  isSortable: false,
84
379
  sortableColumns: sortableColumnsDefault,
380
+ tableLabel: 'Team directory',
381
+ showSelectable: true,
382
+ showRowReorderable: true,
383
+ showToolbar: true,
384
+ sortableNameColumn: true,
385
+ showRichCells: true,
85
386
  };
86
387
  Table.parameters = {
87
- layout: 'centered',
388
+ layout: 'padded',
88
389
  'web-component': {
89
- render: (({ freeze, multiselect, striped }) => {
90
- let attrs = '';
91
- if (freeze)
92
- attrs += ' freeze';
93
- if (multiselect)
94
- attrs += ' multiselect';
95
- if (striped)
96
- attrs += ' striped';
97
- return [
98
- `<xpl-table${attrs}></xpl-table>`,
99
- `table.columns = [
100
- "Name", "Total Days Played", ...
101
- ];`,
102
- `table.data = [
103
- ["Boston Rob Mariano", ...],
104
- ["Parvati Shallow", ...],
105
- ...
106
- ];`,
107
- ];
108
- })(Table.args),
390
+ render: [slotBasedExample],
109
391
  },
110
392
  html: {
111
- render: (({ freeze, striped }) => {
112
- let className = 'xpl-table';
113
- if (striped)
114
- className += ' xpl-table--striped';
115
- if (freeze)
116
- className += ' xpl-table--freeze';
117
- return [
118
- `WARNING: For \`multiselect\` tables, there is JS interactivity that is provided only by the web component. The code shown below does not reflect the additional \`multiselect\` table markup and interactivity.`,
119
- `<div class="xpl-table-container">
120
- <table class="${className}">
121
- <thead>
122
- <th>Name</th>
123
- <th>Total Days Played</th>
124
- ...
125
- </thead>
126
- <tbody>
127
- <tr>
128
- <td>Boston Rob Mariano</td>
129
- <td>152</td>
130
- ...
131
- </tr>
132
- <tr>
133
- <td>Parvati Shallow</td>
134
- <td>149</td>
135
- ...
136
- </tr>
137
- </tbody>
138
- </table>
139
- </div>`,
140
- ];
141
- })(Table.args),
393
+ render: slotBasedExample,
142
394
  },
143
395
  design: {
144
396
  type: 'figma',
@@ -0,0 +1,50 @@
1
+ export function getNearestTableBodyRowFromNode(node) {
2
+ const el = node instanceof HTMLElement ? node : null;
3
+ if (!el) {
4
+ return null;
5
+ }
6
+ const row = el.closest('xpl-table-row');
7
+ return row != null ? row : null;
8
+ }
9
+ export function getNextVisibleTableBodyRowAfter(element) {
10
+ const parent = element.parentElement;
11
+ if (!parent)
12
+ return null;
13
+ const siblings = Array.from(parent.children);
14
+ const idx = siblings.indexOf(element);
15
+ if (idx === -1)
16
+ return null;
17
+ for (let i = idx + 1; i < siblings.length; i += 1) {
18
+ const n = siblings[i];
19
+ if (n.tagName.toLowerCase() === 'xpl-table-row' && !n.hasAttribute('hidden')) {
20
+ return n;
21
+ }
22
+ }
23
+ return null;
24
+ }
25
+ export function moveRowInTableBody(body, draggedRow, dropTargetRow) {
26
+ if (draggedRow === dropTargetRow || draggedRow.parentElement !== body) {
27
+ return;
28
+ }
29
+ if (dropTargetRow.parentElement !== body) {
30
+ return;
31
+ }
32
+ const visible = Array.from(body.children).filter((c) => c.tagName.toLowerCase() === 'xpl-table-row' && !c.hasAttribute('hidden'));
33
+ const fromIndex = visible.indexOf(draggedRow);
34
+ const toIndex = visible.indexOf(dropTargetRow);
35
+ if (fromIndex === -1 || toIndex === -1 || fromIndex === toIndex) {
36
+ return;
37
+ }
38
+ if (fromIndex < toIndex) {
39
+ const nextVisible = getNextVisibleTableBodyRowAfter(dropTargetRow);
40
+ if (nextVisible) {
41
+ body.insertBefore(draggedRow, nextVisible);
42
+ }
43
+ else {
44
+ body.insertBefore(draggedRow, null);
45
+ }
46
+ }
47
+ else {
48
+ body.insertBefore(draggedRow, dropTargetRow);
49
+ }
50
+ }
@@ -0,0 +1,58 @@
1
+ export const XPL_TABLE_COLUMN_WIDTHS_CHANGE_EVENT = 'xplTableColumnWidthsChange';
2
+ export const TABLE_HEADER_CELL_MIN_WIDTH_PX = 48;
3
+ export const getGridColumnWidthFromHeaderCell = (cell) => {
4
+ var _a, _b;
5
+ if (cell.tagName.toLowerCase() !== 'xpl-table-header-cell') {
6
+ return 'auto';
7
+ }
8
+ const host = cell;
9
+ const fromProp = typeof host.columnWidth === 'string' ? host.columnWidth.trim() : '';
10
+ const fromAttr = (_b = (_a = cell.getAttribute('column-width')) === null || _a === void 0 ? void 0 : _a.trim()) !== null && _b !== void 0 ? _b : '';
11
+ const columnTrack = fromProp || fromAttr;
12
+ if (columnTrack.length > 0) {
13
+ return columnTrack;
14
+ }
15
+ const w = host.width;
16
+ if (typeof w === 'number' && Number.isFinite(w) && w > 0) {
17
+ return `${Math.max(TABLE_HEADER_CELL_MIN_WIDTH_PX, w)}px`;
18
+ }
19
+ const raw = cell.getAttribute('width');
20
+ if (raw === null || raw === '') {
21
+ return 'auto';
22
+ }
23
+ if (/^\s*\d+(\.\d+)?\s*$/.test(raw)) {
24
+ const n = Number.parseFloat(raw);
25
+ if (Number.isFinite(n) && n > 0) {
26
+ return `${Math.max(TABLE_HEADER_CELL_MIN_WIDTH_PX, n)}px`;
27
+ }
28
+ return 'auto';
29
+ }
30
+ return raw.trim();
31
+ };
32
+ export const SELECTION_MARK = 'data-xpl-selection-managed';
33
+ export const ROW_REORDER_MARK = 'data-xpl-row-reorder-managed';
34
+ export const getSortAffordanceIconName = (sortDirection) => {
35
+ if (sortDirection === 'asc')
36
+ return 'arrow-up';
37
+ return 'arrow-down';
38
+ };
39
+ export const cycleSortDirection = (current) => {
40
+ switch (current) {
41
+ case 'asc':
42
+ return 'desc';
43
+ case 'desc':
44
+ return null;
45
+ default:
46
+ return 'asc';
47
+ }
48
+ };
49
+ export const getIconType = (sortType) => {
50
+ switch (sortType) {
51
+ case 'asc':
52
+ return 'arrow-up';
53
+ case 'desc':
54
+ return 'arrow-down';
55
+ default:
56
+ return 'dash';
57
+ }
58
+ };
@@ -0,0 +1,7 @@
1
+ import { Host, h } from "@stencil/core";
2
+ export class XplTableBody {
3
+ render() {
4
+ return (h(Host, { key: '7320d9e105bbd49c3ce38b8c199b965a3863440c', role: "rowgroup", class: "xpl-table-body" }, h("slot", { key: '3df8f5a49bca0c8b50126cb41e59e1209e57fc6b' })));
5
+ }
6
+ static get is() { return "xpl-table-body"; }
7
+ }