@persona/design-system 0.9.1 → 0.10.1

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 (594) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/README.md +1 -1
  3. package/dist/Accordion.d.mts +1 -1
  4. package/dist/AccordionItem.d.mts +1 -1
  5. package/dist/{Action-BleGvmsy.d.mts → Action-DT8WqfEg.d.mts} +3 -3
  6. package/dist/Action.d.mts +1 -1
  7. package/dist/AdvancedFilterRuleRow.d.mts +2 -2
  8. package/dist/AdvancedFilterRulesPopover.d.mts +2 -2
  9. package/dist/ArrayValueControl.d.mts +1 -1
  10. package/dist/Attribute.d.mts +4 -4
  11. package/dist/{Badge-BYa-iqNE.mjs → Badge-Bvn3afds.mjs} +2 -2
  12. package/dist/{Badge-BYa-iqNE.mjs.map → Badge-Bvn3afds.mjs.map} +1 -1
  13. package/dist/BooleanValueControl.d.mts +1 -1
  14. package/dist/{Breadcrumb-CEHEUe8l.d.mts → Breadcrumb-BDbY1Ffu.d.mts} +1 -1
  15. package/dist/Breadcrumb.d.mts +1 -1
  16. package/dist/{Breadcrumbs-BQ-Gj6UV.d.mts → Breadcrumbs-C2ThOYJ-.d.mts} +2 -2
  17. package/dist/{Breadcrumbs-BmlndU4V.mjs → Breadcrumbs-CQUe9VTM.mjs} +8 -8
  18. package/dist/{Breadcrumbs-BmlndU4V.mjs.map → Breadcrumbs-CQUe9VTM.mjs.map} +1 -1
  19. package/dist/Breadcrumbs.d.mts +1 -1
  20. package/dist/{Button-Dx7mHjWC.d.mts → Button-CyjqQa5v.d.mts} +5 -5
  21. package/dist/Button.d.mts +1 -1
  22. package/dist/{Calendar-BvsTQ3e1.d.mts → Calendar-CkjYG7Mj.d.mts} +1 -1
  23. package/dist/Calendar.d.mts +1 -1
  24. package/dist/CalendarBase.d.mts +1 -1
  25. package/dist/{Card-BPY0OU7e.d.mts → Card-CzRHVUFo.d.mts} +4 -4
  26. package/dist/Card.d.mts +1 -1
  27. package/dist/Card2.d.mts +1 -1
  28. package/dist/CardGrouping.d.mts +2 -2
  29. package/dist/{CardV2-Cq4QODeE.mjs → CardV2-Dp4eHSE-.mjs} +11 -11
  30. package/dist/{CardV2-Cq4QODeE.mjs.map → CardV2-Dp4eHSE-.mjs.map} +1 -1
  31. package/dist/{Checkbox-CVa8WOf2.d.mts → Checkbox-B2MZShdu.d.mts} +1 -1
  32. package/dist/{Checkbox-Cttn1t8T.mjs → Checkbox-BaJ-dGdX.mjs} +5 -5
  33. package/dist/{Checkbox-Cttn1t8T.mjs.map → Checkbox-BaJ-dGdX.mjs.map} +1 -1
  34. package/dist/Checkbox.d.mts +1 -1
  35. package/dist/{CheckboxGroupField-BpHN_2QP.d.mts → CheckboxGroupField-4dc7YXJY.d.mts} +3 -3
  36. package/dist/CheckboxGroupField.d.mts +1 -1
  37. package/dist/ChoicesValueControl.d.mts +1 -1
  38. package/dist/{Combobox-C4C2P8lF.d.mts → Combobox-Bm2eSg56.d.mts} +3 -3
  39. package/dist/{Combobox-CsXnJKvB.mjs → Combobox-CcFJo68g.mjs} +19 -11
  40. package/dist/Combobox-CcFJo68g.mjs.map +1 -0
  41. package/dist/Combobox.d.mts +2 -2
  42. package/dist/{ComboboxBase-2nVpt8oj.d.mts → ComboboxBase-B7ZcqU9p.d.mts} +7 -7
  43. package/dist/ComboboxBase.d.mts +1 -1
  44. package/dist/{ComboboxMultiSelect-BvJ--m6z.d.mts → ComboboxMultiSelect-BkdRrH6K.d.mts} +2 -2
  45. package/dist/ComboboxMultiSelect.d.mts +1 -1
  46. package/dist/{ComboboxSingleSelect-BWrnRA2x.d.mts → ComboboxSingleSelect-DIBRZmvS.d.mts} +4 -4
  47. package/dist/ComboboxSingleSelect.d.mts +1 -1
  48. package/dist/{CompactBar-CmTT9iuT.d.mts → CompactBar-CfrrZ69k.d.mts} +3 -3
  49. package/dist/CompactBar.d.mts +1 -1
  50. package/dist/{ConfigFormGroup-C0orlWwb.mjs → ConfigFormGroup-CidT_cE9.mjs} +2 -2
  51. package/dist/{ConfigFormGroup-C0orlWwb.mjs.map → ConfigFormGroup-CidT_cE9.mjs.map} +1 -1
  52. package/dist/{ControlBar-Cg36sjz3.d.mts → ControlBar-D9KflqmH.d.mts} +22 -9
  53. package/dist/ControlBar.d.mts +1 -1
  54. package/dist/DataTable--_f1Obhj.d.mts +441 -0
  55. package/dist/DataTable-BoAAKhVH.mjs +1547 -0
  56. package/dist/DataTable-BoAAKhVH.mjs.map +1 -0
  57. package/dist/DataTable.d.mts +2 -396
  58. package/dist/{DateField-BXUuqbnb.d.mts → DateField-CwSq77Ri.d.mts} +2 -2
  59. package/dist/DateField.d.mts +1 -1
  60. package/dist/{DatePicker-DQHVCGnP.mjs → DatePicker-D0cvVbzq.mjs} +374 -374
  61. package/dist/DatePicker-D0cvVbzq.mjs.map +1 -0
  62. package/dist/{DatePicker-Cmn1vViU.d.mts → DatePicker-DRhY_0st.d.mts} +2 -2
  63. package/dist/DatePicker.d.mts +1 -1
  64. package/dist/{DateRangePicker-CKhp9Obv.d.mts → DateRangePicker-CLuBLF1q.d.mts} +3 -3
  65. package/dist/DateRangePicker.d.mts +1 -1
  66. package/dist/DateRangeValueControl.d.mts +2 -2
  67. package/dist/DateValueControl.d.mts +1 -1
  68. package/dist/{DropdownButton-C9wWnB5w.mjs → DropdownButton-5oNcpsOq.mjs} +3 -3
  69. package/dist/{DropdownButton-C9wWnB5w.mjs.map → DropdownButton-5oNcpsOq.mjs.map} +1 -1
  70. package/dist/DropdownButton.d.mts +2 -2
  71. package/dist/{DropdownMenu-BZ62b8Cv.d.mts → DropdownMenu-Bie2cWjb.d.mts} +3 -3
  72. package/dist/{DropdownMenu-CPE8Q56k.mjs → DropdownMenu-CedsmO5h.mjs} +2 -2
  73. package/dist/{DropdownMenu-CPE8Q56k.mjs.map → DropdownMenu-CedsmO5h.mjs.map} +1 -1
  74. package/dist/DropdownMenu.d.mts +1 -1
  75. package/dist/{ErrorProps-oCHtJzEB.d.mts → ErrorProps-DH0fzeGf.d.mts} +1 -1
  76. package/dist/ErrorProps.d.mts +1 -1
  77. package/dist/{FieldRegistry-DAk_3PhH.d.mts → FieldRegistry-B5E-GN91.d.mts} +2 -2
  78. package/dist/FieldRegistry.d.mts +1 -1
  79. package/dist/{FilterBar-C7ch6kYM.d.mts → FilterBar-BQWpTi2b.d.mts} +4 -4
  80. package/dist/FilterBar.d.mts +1 -1
  81. package/dist/FilterPickerMenu.d.mts +2 -2
  82. package/dist/FilterPill.d.mts +1 -1
  83. package/dist/FilterPopover.d.mts +1 -1
  84. package/dist/FloatValueControl.d.mts +1 -1
  85. package/dist/FloatingActionBar-CpvLefPm.d.mts +41 -0
  86. package/dist/FloatingActionBar.d.mts +2 -41
  87. package/dist/{FormControl-CD_FdAXA.mjs → FormControl-C4CiA0H-.mjs} +4 -4
  88. package/dist/{FormControl-CD_FdAXA.mjs.map → FormControl-C4CiA0H-.mjs.map} +1 -1
  89. package/dist/{FormControl-DX4vtUp6.d.mts → FormControl-DEG_0oXt.d.mts} +3 -3
  90. package/dist/FormControl.d.mts +1 -1
  91. package/dist/FormControlLabel.d.mts +2 -2
  92. package/dist/{FormField-DjysBTKn.mjs → FormField-C4B2qFgh.mjs} +15 -15
  93. package/dist/{FormField-DjysBTKn.mjs.map → FormField-C4B2qFgh.mjs.map} +1 -1
  94. package/dist/{FormField-C80kGAIV.d.mts → FormField-mLbXDJ9B.d.mts} +2 -2
  95. package/dist/FormField.d.mts +1 -1
  96. package/dist/{Grid-D0mlxk8_.mjs → Grid-DXVkhyNQ.mjs} +1 -1
  97. package/dist/{Grid-D0mlxk8_.mjs.map → Grid-DXVkhyNQ.mjs.map} +1 -1
  98. package/dist/{Header-C-a5fL3k.d.mts → Header-ayDu4VWE.d.mts} +2 -2
  99. package/dist/Header.d.mts +1 -1
  100. package/dist/{HelperTooltip-hhMFkKmn.d.mts → HelperTooltip-BB9Vznnx.d.mts} +2 -2
  101. package/dist/HelperTooltip.d.mts +1 -1
  102. package/dist/HighlightedText.d.mts +3 -3
  103. package/dist/{HoverCopyableField-Cgu3W31s.mjs → HoverCopyableField-D-BubaRd.mjs} +4 -4
  104. package/dist/{HoverCopyableField-Cgu3W31s.mjs.map → HoverCopyableField-D-BubaRd.mjs.map} +1 -1
  105. package/dist/{I18nContext-ioYM_vqG.d.mts → I18nContext-TXS9M8t5.d.mts} +2 -2
  106. package/dist/I18nContext.d.mts +1 -1
  107. package/dist/{IconButton-DJ3L_ZqN.d.mts → IconButton-Bigvu1Q4.d.mts} +2 -2
  108. package/dist/{IconButton-D4awF770.mjs → IconButton-HWx5Hlmi.mjs} +14 -11
  109. package/dist/{IconButton-D4awF770.mjs.map → IconButton-HWx5Hlmi.mjs.map} +1 -1
  110. package/dist/IconButton.d.mts +1 -1
  111. package/dist/ImageTile.d.mts +4 -3
  112. package/dist/IndexTableLayout.d.mts +45 -0
  113. package/dist/InlineCombobox.d.mts +1 -1
  114. package/dist/InlineInput.d.mts +1 -1
  115. package/dist/{Input-D3lXfJHq.d.mts → Input-Bg4bi6VZ.d.mts} +4 -4
  116. package/dist/{Input-DD4jzJhK.mjs → Input-Dap055xf.mjs} +5 -5
  117. package/dist/{Input-DD4jzJhK.mjs.map → Input-Dap055xf.mjs.map} +1 -1
  118. package/dist/Input.d.mts +1 -1
  119. package/dist/{InputProps-BU9iiBBz.d.mts → InputProps-Bl-G826g.d.mts} +2 -2
  120. package/dist/InputProps.d.mts +1 -1
  121. package/dist/Inserter-BKVrJ4M5.d.mts +12 -0
  122. package/dist/Inserter.d.mts +2 -12
  123. package/dist/IntegerValueControl.d.mts +1 -1
  124. package/dist/{Link-DGZu4J0x.mjs → Link-Cf__H8gD.mjs} +4 -4
  125. package/dist/{Link-DGZu4J0x.mjs.map → Link-Cf__H8gD.mjs.map} +1 -1
  126. package/dist/Link.d.mts +1 -1
  127. package/dist/{ListBox-CjGb0mMY.d.mts → ListBox-DIk8suJM.d.mts} +3 -3
  128. package/dist/{ListBox-BhWLad_L.mjs → ListBox-eoyBHtnJ.mjs} +12 -12
  129. package/dist/{ListBox-BhWLad_L.mjs.map → ListBox-eoyBHtnJ.mjs.map} +1 -1
  130. package/dist/ListBox.d.mts +1 -1
  131. package/dist/{ListBoxField-BUkPeLiB.d.mts → ListBoxField-DF8rqPsu.d.mts} +4 -4
  132. package/dist/ListBoxField.d.mts +1 -1
  133. package/dist/LoadingShimmer.d.mts +2 -2
  134. package/dist/{LogicRow-Bt6NPLOd.d.mts → LogicRow-uxpe1vZ1.d.mts} +3 -3
  135. package/dist/LogicRow.d.mts +1 -1
  136. package/dist/MaskedInput.d.mts +2 -2
  137. package/dist/MatchHighlight.d.mts +1 -1
  138. package/dist/{Menu-BMrsN-Jz.d.mts → Menu-CrThaUX2.d.mts} +4 -4
  139. package/dist/{Menu-DlN0A5Nb.mjs → Menu-Dw6Rcpk6.mjs} +4 -4
  140. package/dist/{Menu-DlN0A5Nb.mjs.map → Menu-Dw6Rcpk6.mjs.map} +1 -1
  141. package/dist/Menu.d.mts +1 -1
  142. package/dist/{Modal-BoeGuR-h.d.mts → Modal-BuxggahW.d.mts} +7 -3
  143. package/dist/{Modal-Cs5cZpEr.mjs → Modal-kjUptzg1.mjs} +8 -6
  144. package/dist/Modal-kjUptzg1.mjs.map +1 -0
  145. package/dist/Modal.d.mts +1 -1
  146. package/dist/PageHeader-Czj42pyK.d.mts +40 -0
  147. package/dist/{PageHeader-CCoAJUwJ.mjs → PageHeader-DJF7nxgN.mjs} +2 -2
  148. package/dist/{PageHeader-CCoAJUwJ.mjs.map → PageHeader-DJF7nxgN.mjs.map} +1 -1
  149. package/dist/PageHeader.d.mts +2 -40
  150. package/dist/{PageLayout-BlCo4hN4.d.mts → PageLayout-TBemv7oL.d.mts} +2 -2
  151. package/dist/{PageLayout-C7ZC7GBA.mjs → PageLayout-fXJW7daI.mjs} +2 -2
  152. package/dist/{PageLayout-C7ZC7GBA.mjs.map → PageLayout-fXJW7daI.mjs.map} +1 -1
  153. package/dist/PageLayout.d.mts +1 -1
  154. package/dist/{PageLayoutFrame--HlvI4Pp.d.mts → PageLayoutFrame-DzwlkNZ1.d.mts} +1 -1
  155. package/dist/PageLayoutFrame.d.mts +1 -1
  156. package/dist/{PageSelector-BmevrorJ.d.mts → PageSelector-DXCeBUoU.d.mts} +3 -3
  157. package/dist/PageSelector.d.mts +1 -1
  158. package/dist/{Pagination-C67fsrxl.d.mts → Pagination-COcFWlha.d.mts} +2 -2
  159. package/dist/{Pagination-Du2CPW2l.mjs → Pagination-DtK-jbEY.mjs} +5 -5
  160. package/dist/{Pagination-Du2CPW2l.mjs.map → Pagination-DtK-jbEY.mjs.map} +1 -1
  161. package/dist/Pagination.d.mts +1 -1
  162. package/dist/{Pii-CFVWZ_Yx.mjs → Pii-DueIK287.mjs} +2 -2
  163. package/dist/{Pii-CFVWZ_Yx.mjs.map → Pii-DueIK287.mjs.map} +1 -1
  164. package/dist/{PillShell-jr6OyAd3.d.mts → PillShell-DqglbFHe.d.mts} +2 -2
  165. package/dist/PillShell.d.mts +1 -1
  166. package/dist/{Popover-DewrGOJB.mjs → Popover-BcII7usF.mjs} +2 -2
  167. package/dist/{Popover-DewrGOJB.mjs.map → Popover-BcII7usF.mjs.map} +1 -1
  168. package/dist/{ProgressIndicator-CdhC2LVI.d.mts → ProgressIndicator-C5sbFQcd.d.mts} +1 -1
  169. package/dist/{ProgressIndicator-xV5Cl2Bw.mjs → ProgressIndicator-CM37EU1B.mjs} +3 -3
  170. package/dist/{ProgressIndicator-xV5Cl2Bw.mjs.map → ProgressIndicator-CM37EU1B.mjs.map} +1 -1
  171. package/dist/ProgressIndicator.d.mts +1 -1
  172. package/dist/{PseudoClassProps-CverE9Ni.d.mts → PseudoClassProps-BFFh2-u8.d.mts} +1 -1
  173. package/dist/PseudoClassProps.d.mts +1 -1
  174. package/dist/{Radio-i7AEQZHb.mjs → Radio-BstZg3DI.mjs} +4 -4
  175. package/dist/{Radio-i7AEQZHb.mjs.map → Radio-BstZg3DI.mjs.map} +1 -1
  176. package/dist/{RadioGroup-CDEfCg-b.d.mts → RadioGroup-BxEmipHa.d.mts} +1 -1
  177. package/dist/{RadioGroup-B0KcQpS7.mjs → RadioGroup-erKerwSt.mjs} +2 -2
  178. package/dist/{RadioGroup-B0KcQpS7.mjs.map → RadioGroup-erKerwSt.mjs.map} +1 -1
  179. package/dist/RadioGroup.d.mts +1 -1
  180. package/dist/{RangeCalendar-BOt59kTG.d.mts → RangeCalendar-CK5ArbIQ.d.mts} +2 -2
  181. package/dist/RangeCalendar.d.mts +1 -1
  182. package/dist/RangeCalendarPresets.d.mts +1 -1
  183. package/dist/{RouterContext-D7HBESqO.d.mts → RouterContext-CoDbEb_X.d.mts} +2 -2
  184. package/dist/RouterContext.d.mts +1 -1
  185. package/dist/{RouterLink-dppNWLgP.d.mts → RouterLink-BnIEi8d4.d.mts} +2 -2
  186. package/dist/RouterLink.d.mts +1 -1
  187. package/dist/RuleEditorFields.d.mts +2 -2
  188. package/dist/RulesPill.d.mts +1 -1
  189. package/dist/{SearchInput-B7JYHJZI.d.mts → SearchInput-DLC7-A7K.d.mts} +2 -2
  190. package/dist/SearchInput.d.mts +1 -1
  191. package/dist/SectionHeading.d.mts +1 -1
  192. package/dist/{SegmentedControl-B2_bS806.mjs → SegmentedControl-DQjIO6iX.mjs} +2 -2
  193. package/dist/{SegmentedControl-B2_bS806.mjs.map → SegmentedControl-DQjIO6iX.mjs.map} +1 -1
  194. package/dist/{SegmentedControl-C_7mTcuL.d.mts → SegmentedControl-xjU-2IsJ.d.mts} +1 -1
  195. package/dist/SegmentedControl.d.mts +1 -1
  196. package/dist/{Select-oVJ0uLa7.mjs → Select-BJ9ACmRD.mjs} +8 -8
  197. package/dist/{Select-oVJ0uLa7.mjs.map → Select-BJ9ACmRD.mjs.map} +1 -1
  198. package/dist/{Select-BpAA5ETS.d.mts → Select-CsxK6A5m.d.mts} +3 -3
  199. package/dist/Select.d.mts +1 -1
  200. package/dist/{SingleColumnLayout-ByWxiD7d.d.mts → SingleColumnLayout-CBynMc76.d.mts} +2 -2
  201. package/dist/SingleColumnLayout.d.mts +1 -1
  202. package/dist/SmartTextInput.d.mts +23 -6
  203. package/dist/SmartTextInputField.d.mts +2 -2
  204. package/dist/SmartTextInputFunctionDialog.d.mts +4 -4
  205. package/dist/SmartTextInputListbox.d.mts +2 -2
  206. package/dist/SmartTextInputPopover.d.mts +2 -2
  207. package/dist/{Spinner-0Vqw_68r.mjs → Spinner-uVZyOh1T.mjs} +2 -2
  208. package/dist/{Spinner-0Vqw_68r.mjs.map → Spinner-uVZyOh1T.mjs.map} +1 -1
  209. package/dist/{SplitColumnLayout-DYyJabQ3.d.mts → SplitColumnLayout-BVzGbEDC.d.mts} +2 -2
  210. package/dist/SplitColumnLayout.d.mts +1 -1
  211. package/dist/{Stack-DpWl6orU.d.mts → Stack-BZyboHQl.d.mts} +2 -2
  212. package/dist/Stack.d.mts +1 -1
  213. package/dist/{StatusIndicator-QsVgjRrt.mjs → StatusIndicator-Bunn9YLV.mjs} +3 -3
  214. package/dist/{StatusIndicator-QsVgjRrt.mjs.map → StatusIndicator-Bunn9YLV.mjs.map} +1 -1
  215. package/dist/{Sticker-C260e6kl.d.mts → Sticker-CsUSNIH-.d.mts} +5 -5
  216. package/dist/{Sticker-CUqHa9Mo.mjs → Sticker-yhxtIYH8.mjs} +5 -5
  217. package/dist/{Sticker-CUqHa9Mo.mjs.map → Sticker-yhxtIYH8.mjs.map} +1 -1
  218. package/dist/Sticker.d.mts +1 -1
  219. package/dist/StringValueControl.d.mts +1 -1
  220. package/dist/Tab.d.mts +2 -2
  221. package/dist/{TabBar-w_gxXSwA.mjs → TabBar-SX8E9-Bk.mjs} +5 -5
  222. package/dist/{TabBar-w_gxXSwA.mjs.map → TabBar-SX8E9-Bk.mjs.map} +1 -1
  223. package/dist/{Table-PbYGf3PG.mjs → Table--o4ZLRbb.mjs} +8 -8
  224. package/dist/{Table-PbYGf3PG.mjs.map → Table--o4ZLRbb.mjs.map} +1 -1
  225. package/dist/{Table-BtNYI6QX.d.mts → Table-CadXF71E.d.mts} +1 -1
  226. package/dist/Table.d.mts +1 -1
  227. package/dist/{TableBody-DQ7pivxP.d.mts → TableBody-BKSHNSTo.d.mts} +1 -1
  228. package/dist/TableBody.d.mts +1 -1
  229. package/dist/{TableBox-DMYLTIpr.mjs → TableBox-3qunC9Nl.mjs} +13 -13
  230. package/dist/{TableBox-DMYLTIpr.mjs.map → TableBox-3qunC9Nl.mjs.map} +1 -1
  231. package/dist/TableBox.d.mts +2 -2
  232. package/dist/{TableBoxCell-DwAOA-oO.d.mts → TableBoxCell-okcOQ5Ec.d.mts} +7 -7
  233. package/dist/TableBoxCell.d.mts +1 -1
  234. package/dist/{TableBoxField-Bdj_nY7j.d.mts → TableBoxField-DR-SJY9z.d.mts} +5 -5
  235. package/dist/TableBoxField.d.mts +1 -1
  236. package/dist/{TableBoxRow-5WBwyAyn.d.mts → TableBoxRow-DiuAB_rV.d.mts} +3 -3
  237. package/dist/TableBoxRow.d.mts +1 -1
  238. package/dist/{TableBoxRowActions-Dq_Z2ted.d.mts → TableBoxRowActions-Cm4KJsAD.d.mts} +2 -2
  239. package/dist/TableBoxRowActions.d.mts +1 -1
  240. package/dist/{TableCell-DXBHZ52E.d.mts → TableCell-4u5_BgTC.d.mts} +3 -3
  241. package/dist/TableCell.d.mts +1 -1
  242. package/dist/{TableControls-Cw7LDHWj.d.mts → TableControls-B9bvsNUc.d.mts} +20 -8
  243. package/dist/{TableControls-C1MF2JvY.mjs → TableControls-n16XKO9S.mjs} +973 -469
  244. package/dist/TableControls-n16XKO9S.mjs.map +1 -0
  245. package/dist/TableControls.d.mts +2 -2
  246. package/dist/{TableControlsContext-DgoZhMpQ.d.mts → TableControlsContext-CZThYoj5.d.mts} +4 -4
  247. package/dist/TableControlsContext.d.mts +1 -1
  248. package/dist/{TableHead-BGUg_aXc.d.mts → TableHead-BuCQeDAq.d.mts} +1 -1
  249. package/dist/TableHead.d.mts +1 -1
  250. package/dist/{TableHeaderCell-DcZcMQyR.d.mts → TableHeaderCell-DIcQlZps.d.mts} +1 -1
  251. package/dist/TableHeaderCell.d.mts +1 -1
  252. package/dist/{TableLayout-CwYQaZlA.d.mts → TableLayout-ScEVdvvA.d.mts} +1 -1
  253. package/dist/TableLayout.d.mts +1 -1
  254. package/dist/{TableRow-Dad6_CoD.d.mts → TableRow-lCsvG0a-.d.mts} +2 -2
  255. package/dist/TableRow.d.mts +1 -1
  256. package/dist/TableTH.d.mts +1 -1
  257. package/dist/{TableViewConfigurationDropdown-BGuWAarQ.d.mts → TableViewConfigurationDropdown-CvN7tE98.d.mts} +2 -2
  258. package/dist/TableViewConfigurationDropdown.d.mts +1 -1
  259. package/dist/{TechnicalSticker-RQ-4_Tdr.mjs → TechnicalSticker-CALVwnrT.mjs} +5 -5
  260. package/dist/{TechnicalSticker-RQ-4_Tdr.mjs.map → TechnicalSticker-CALVwnrT.mjs.map} +1 -1
  261. package/dist/{Text-BBMau410.d.mts → Text-RSzei6Se.d.mts} +4 -4
  262. package/dist/Text.d.mts +1 -1
  263. package/dist/{TextArea-BaA8H7s7.mjs → TextArea-CaIEBz8d.mjs} +2 -2
  264. package/dist/{TextArea-BaA8H7s7.mjs.map → TextArea-CaIEBz8d.mjs.map} +1 -1
  265. package/dist/{TextArea-Djd1uT3B.d.mts → TextArea-DFn4XuG-.d.mts} +2 -2
  266. package/dist/TextArea.d.mts +1 -1
  267. package/dist/{TextUnderlineTooltip-C4N0bqbh.d.mts → TextUnderlineTooltip-B0iYaPM1.d.mts} +3 -3
  268. package/dist/TextUnderlineTooltip.d.mts +1 -1
  269. package/dist/Tile.d.mts +1 -1
  270. package/dist/Toast.d.mts +1 -1
  271. package/dist/{Toggle-C9cZnajR.mjs → Toggle-BsqSNYok.mjs} +6 -6
  272. package/dist/{Toggle-C9cZnajR.mjs.map → Toggle-BsqSNYok.mjs.map} +1 -1
  273. package/dist/{Toggle-EYpW34LO.d.mts → Toggle-xtPgGaGD.d.mts} +1 -1
  274. package/dist/Toggle.d.mts +1 -1
  275. package/dist/{Tooltip-DogEteGl.mjs → Tooltip-B-0VRuKT.mjs} +2 -2
  276. package/dist/{Tooltip-DogEteGl.mjs.map → Tooltip-B-0VRuKT.mjs.map} +1 -1
  277. package/dist/{Tooltip-Dj-DtGKz.d.mts → Tooltip-Blfhi2gT.d.mts} +3 -3
  278. package/dist/Tooltip.d.mts +1 -1
  279. package/dist/{TruncatedText-BDNFUuhG.d.mts → TruncatedText-BMQmveJG.d.mts} +2 -2
  280. package/dist/VersionHistory.d.mts +1 -1
  281. package/dist/{VersionHistoryItem-iUabmk_y.d.mts → VersionHistoryItem-BExp7oSr.d.mts} +1 -1
  282. package/dist/VersionHistoryItem.d.mts +1 -1
  283. package/dist/WizardModal.d.mts +2 -2
  284. package/dist/{accordionTitleTypography-C7VVJvlx.d.mts → accordionTitleTypography-PMKnfoy0.d.mts} +2 -2
  285. package/dist/accordionTitleTypography.d.mts +1 -1
  286. package/dist/{chainTypes-DT-9j_sG.d.mts → chainTypes-Cjp0zZ4E.d.mts} +4 -4
  287. package/dist/clientFilterUtils-BXEpzorX.d.mts +20 -0
  288. package/dist/clientFilterUtils.d.mts +2 -0
  289. package/dist/{codec-CGj8cwcj.d.mts → codec-KAvQRjTW.d.mts} +2 -2
  290. package/dist/codec.d.mts +1 -1
  291. package/dist/{color-BOm5A1Si.d.mts → color-C5B1pN1D.d.mts} +2 -2
  292. package/dist/components/Accordion/index.d.mts +1 -1
  293. package/dist/components/Accordion/index.mjs +4 -4
  294. package/dist/components/Attribute/index.mjs +4 -4
  295. package/dist/components/Badge/index.mjs +1 -1
  296. package/dist/components/Banner/index.mjs +3 -3
  297. package/dist/components/BottomPanel/index.mjs +4 -4
  298. package/dist/components/Breadcrumbs/index.d.mts +1 -1
  299. package/dist/components/Breadcrumbs/index.mjs +1 -1
  300. package/dist/components/Button/index.d.mts +2 -2
  301. package/dist/components/Button/index.mjs +1 -1
  302. package/dist/components/ButtonGroup/index.mjs +2 -2
  303. package/dist/components/Card/index.d.mts +2 -2
  304. package/dist/components/CardV2/index.d.mts +1 -1
  305. package/dist/components/CardV2/index.mjs +1 -1
  306. package/dist/components/Checkbox/index.d.mts +1 -1
  307. package/dist/components/Checkbox/index.mjs +1 -1
  308. package/dist/components/CodeHighlight/index.mjs +3 -3
  309. package/dist/components/Combobox/index.d.mts +2 -2
  310. package/dist/components/Combobox/index.mjs +1 -1
  311. package/dist/components/ConfigFormGroup/index.mjs +2 -2
  312. package/dist/components/DataTable/TableControls/index.d.mts +22 -20
  313. package/dist/components/DataTable/TableControls/index.mjs +2 -2
  314. package/dist/components/DataTable/index.d.mts +9 -8
  315. package/dist/components/DataTable/index.mjs +2 -1474
  316. package/dist/components/DataTable/types.d.mts +2 -166
  317. package/dist/components/DatePicker/index.d.mts +5 -5
  318. package/dist/components/DatePicker/index.mjs +1 -1
  319. package/dist/components/DropdownButton/index.mjs +1 -1
  320. package/dist/components/DropdownMenu/index.d.mts +1 -1
  321. package/dist/components/DropdownMenu/index.mjs +1 -1
  322. package/dist/components/FloatingPanel/index.mjs +5 -5
  323. package/dist/components/FormControl/index.d.mts +2 -2
  324. package/dist/components/FormControl/index.mjs +2 -2
  325. package/dist/components/FormField/index.d.mts +5 -5
  326. package/dist/components/FormField/index.mjs +1 -1
  327. package/dist/components/Grid/index.mjs +1 -1
  328. package/dist/components/HoverCopyableField/index.mjs +1 -1
  329. package/dist/components/ImageTile/index.mjs +30 -17
  330. package/dist/components/ImageTile/index.mjs.map +1 -1
  331. package/dist/components/Input/index.d.mts +1 -1
  332. package/dist/components/Input/index.mjs +1 -1
  333. package/dist/components/Link/index.mjs +1 -1
  334. package/dist/components/ListBox/index.d.mts +3 -3
  335. package/dist/components/ListBox/index.mjs +1 -1
  336. package/dist/components/MaskedInput/index.mjs +1 -1
  337. package/dist/components/Menu/index.d.mts +1 -1
  338. package/dist/components/Menu/index.mjs +1 -1
  339. package/dist/components/Modal/index.d.mts +1 -1
  340. package/dist/components/Modal/index.mjs +1 -1
  341. package/dist/components/PageHeader/index.d.mts +1 -1
  342. package/dist/components/PageHeader/index.mjs +1 -1
  343. package/dist/components/Pagination/index.d.mts +3 -3
  344. package/dist/components/Pagination/index.mjs +1 -1
  345. package/dist/components/Pii/index.mjs +1 -1
  346. package/dist/components/Popover/index.mjs +1 -1
  347. package/dist/components/ProgressBar/index.mjs +1 -1
  348. package/dist/components/ProgressIndicator/index.d.mts +1 -1
  349. package/dist/components/ProgressIndicator/index.mjs +1 -1
  350. package/dist/components/Radio/index.mjs +1 -1
  351. package/dist/components/RadioGroup/index.d.mts +1 -1
  352. package/dist/components/RadioGroup/index.mjs +1 -1
  353. package/dist/components/RightPanel/index.mjs +2 -2
  354. package/dist/components/SegmentedControl/index.d.mts +1 -1
  355. package/dist/components/SegmentedControl/index.mjs +1 -1
  356. package/dist/components/Select/index.d.mts +1 -1
  357. package/dist/components/Select/index.mjs +1 -1
  358. package/dist/components/Slider/index.mjs +2 -2
  359. package/dist/components/SmartTextInput/index.d.mts +2 -2
  360. package/dist/components/SmartTextInput/index.mjs +17 -8
  361. package/dist/components/SmartTextInput/index.mjs.map +1 -1
  362. package/dist/components/SmartTextInput/parser/method-chain/types.d.mts +1 -1
  363. package/dist/components/SmartTextInput/parser/smart-text/types.d.mts +2 -2
  364. package/dist/components/Spinner/index.mjs +1 -1
  365. package/dist/components/Stack/index.d.mts +1 -1
  366. package/dist/components/StatusIndicator/index.mjs +1 -1
  367. package/dist/components/Sticker/index.d.mts +1 -1
  368. package/dist/components/Sticker/index.mjs +1 -1
  369. package/dist/components/TabBar/index.mjs +1 -1
  370. package/dist/components/Table/index.d.mts +8 -8
  371. package/dist/components/Table/index.mjs +1 -1
  372. package/dist/components/TableBox/index.d.mts +2 -2
  373. package/dist/components/TableBox/index.mjs +1 -1
  374. package/dist/components/TechnicalSticker/index.mjs +1 -1
  375. package/dist/components/Text/index.d.mts +1 -1
  376. package/dist/components/TextArea/index.d.mts +1 -1
  377. package/dist/components/TextArea/index.mjs +1 -1
  378. package/dist/components/Tile/index.mjs +2 -2
  379. package/dist/components/Toast/index.mjs +4 -4
  380. package/dist/components/Toggle/index.d.mts +1 -1
  381. package/dist/components/Toggle/index.mjs +1 -1
  382. package/dist/components/Tooltip/index.d.mts +3 -3
  383. package/dist/components/Tooltip/index.mjs +1 -1
  384. package/dist/components/VersionHistory/index.d.mts +1 -1
  385. package/dist/components/VersionHistory/index.mjs +7 -7
  386. package/dist/compound-expression.d.mts +1 -1
  387. package/dist/{constants-CwzbyAdc.d.mts → constants-4rSh8e5G.d.mts} +1 -1
  388. package/dist/constants-BaMvTUbS.d.mts +10 -0
  389. package/dist/constants.d.mts +1 -1
  390. package/dist/constants2.d.mts +2 -10
  391. package/dist/{createPath-C4jIHe68.d.mts → createPath-B_CLq82C.d.mts} +2 -2
  392. package/dist/createPath.d.mts +1 -1
  393. package/dist/{date-filter-CWgCXz85.mjs → date-filter-D0ys8s0D.mjs} +1 -1
  394. package/dist/{date-filter-CWgCXz85.mjs.map → date-filter-D0ys8s0D.mjs.map} +1 -1
  395. package/dist/{date-range-rule-value-BkbGpLNH.d.mts → date-range-rule-value-Dk6pZHnD.d.mts} +2 -2
  396. package/dist/date-range-rule-value.d.mts +1 -1
  397. package/dist/{date-rule-intent-zdKP-tW_.d.mts → date-rule-intent-C5C8HB1v.d.mts} +3 -3
  398. package/dist/date-rule-intent.d.mts +1 -1
  399. package/dist/display.d.mts +2 -2
  400. package/dist/fieldPickerOptions.d.mts +2 -2
  401. package/dist/{filter-size-context-CW1guBfI.d.mts → filter-size-context-5xQ3ycnC.d.mts} +2 -2
  402. package/dist/filter-size-context.d.mts +1 -1
  403. package/dist/filters-ogUUmLEf.d.mts +22 -0
  404. package/dist/filters.d.mts +2 -0
  405. package/dist/{formatDateTime-zyRMjfH8.d.mts → formatDateTime-Dd9inM5H.d.mts} +1 -1
  406. package/dist/formatDateTime.d.mts +1 -1
  407. package/dist/helpers-Dqw5PEva.d.mts +90 -0
  408. package/dist/helpers.d.mts +2 -90
  409. package/dist/{i18n-CeRarJIa.mjs → i18n-BscB9FUy.mjs} +14 -2
  410. package/dist/i18n-BscB9FUy.mjs.map +1 -0
  411. package/dist/{index-DxFh2ArY.d.mts → index-Ck939aXd.d.mts} +3 -3
  412. package/dist/{index-C7hEdRqK.d.mts → index-DTAcGzW4.d.mts} +2 -2
  413. package/dist/{index-B7KIL3U6.d.mts → index-EGvEhP1j.d.mts} +2 -2
  414. package/dist/index-NKYLt_R9.d.mts +1 -0
  415. package/dist/index-VWno75SQ.d.mts +1 -0
  416. package/dist/index-uMNhmxEh.d.mts +1 -0
  417. package/dist/index.d.mts +1 -1
  418. package/dist/index2.d.mts +1 -1
  419. package/dist/index3.d.mts +3 -3
  420. package/dist/index4.d.mts +1 -1
  421. package/dist/index5.d.mts +14 -14
  422. package/dist/{input-DMPo8gRT.d.mts → input-CKhARTlS.d.mts} +3 -3
  423. package/dist/{inputFields-BCNC1FWx.d.mts → inputFields-DVLg_2wz.d.mts} +11 -11
  424. package/dist/inputFields.d.mts +1 -1
  425. package/dist/{intersperse-B8s6clcc.mjs → intersperse-ObkRVOag.mjs} +1 -1
  426. package/dist/{intersperse-B8s6clcc.mjs.map → intersperse-ObkRVOag.mjs.map} +1 -1
  427. package/dist/{jsonSchema-6mcLrVG3.d.mts → jsonSchema-DmOA0Lnu.d.mts} +2 -2
  428. package/dist/lib/PDSProvider.d.mts +11 -3
  429. package/dist/lib/PDSProvider.mjs +16 -12
  430. package/dist/lib/PDSProvider.mjs.map +1 -1
  431. package/dist/lib/TruncatedText.d.mts +1 -1
  432. package/dist/lib/TruncatedTextWithTooltip.d.mts +1 -1
  433. package/dist/lib/TruncatedTextWithTooltip.mjs +1 -1
  434. package/dist/lib/chainTypes.d.mts +1 -1
  435. package/dist/lib/color.d.mts +1 -1
  436. package/dist/lib/colorMode.d.mts +30 -0
  437. package/dist/lib/colorMode.mjs +71 -0
  438. package/dist/lib/colorMode.mjs.map +1 -0
  439. package/dist/lib/customFunctionSchema.d.mts +1 -1
  440. package/dist/lib/date-filter/index.d.mts +2 -2
  441. package/dist/lib/date-filter/index.mjs +1 -1
  442. package/dist/lib/i18n/index.d.mts +3 -3
  443. package/dist/lib/i18n/index.mjs +1 -1
  444. package/dist/lib/jsonSchema.d.mts +1 -1
  445. package/dist/lib/jsonSchema.mjs.map +1 -1
  446. package/dist/lib/jsonSchemaType.d.mts +1 -1
  447. package/dist/lib/message.d.mts +1 -1
  448. package/dist/lib/methodChain.d.mts +2 -2
  449. package/dist/lib/methodChainNormalize.d.mts +2 -2
  450. package/dist/lib/methodChainTypes.d.mts +1 -1
  451. package/dist/lib/objectSchemaTypes.d.mts +1 -1
  452. package/dist/lib/platformObject.d.mts +1 -1
  453. package/dist/lib/pseudoClass.d.mts +1 -1
  454. package/dist/lib/router/adapters/reactRouter.d.mts +1 -1
  455. package/dist/lib/router/adapters/tanstack.d.mts +1 -1
  456. package/dist/lib/router/index.d.mts +5 -5
  457. package/dist/lib/schemaOptions.d.mts +2 -2
  458. package/dist/lib/schemaOptions.mjs +20 -2
  459. package/dist/lib/schemaOptions.mjs.map +1 -1
  460. package/dist/lib/semanticColor.d.mts +1 -1
  461. package/dist/lib/useChain.d.mts +1 -1
  462. package/dist/{listbox-options-yLjqZp4H.d.mts → listbox-options-DCmqWWgy.d.mts} +3 -3
  463. package/dist/listbox-options.d.mts +1 -1
  464. package/dist/{message-C5n7wFiN.d.mts → message-Dti22dmx.d.mts} +1 -1
  465. package/dist/{methodChain-BNDytoaD.d.mts → methodChain-DaDvXsHF.d.mts} +4 -4
  466. package/dist/{methodChainTypes-BuwpPC73.d.mts → methodChainTypes-a7kHYhs7.d.mts} +2 -2
  467. package/dist/mixins/focus.d.mts +1 -1
  468. package/dist/mixins/focus.mjs +1 -1
  469. package/dist/mixins/hoverable.d.mts +2 -2
  470. package/dist/mixins/hoverable.mjs +1 -1
  471. package/dist/mixins/input.d.mts +1 -1
  472. package/dist/mixins/input.mjs +2 -2
  473. package/dist/mixins/menuItem.d.mts +2 -2
  474. package/dist/mixins/scrollbar.d.mts +1 -1
  475. package/dist/mixins/text.d.mts +1 -1
  476. package/dist/{operators-C34nhBuK.d.mts → operators-Seez5p9U.d.mts} +3 -3
  477. package/dist/operators.d.mts +1 -1
  478. package/dist/{palette-BCszfY7I.d.mts → palette-Bp5G-S_5.d.mts} +3 -3
  479. package/dist/palette.d.mts +1 -1
  480. package/dist/patterns/CardGrouping/index.mjs +8 -8
  481. package/dist/patterns/IndexTableLayout/index.d.mts +3 -0
  482. package/dist/patterns/IndexTableLayout/index.mjs +87 -0
  483. package/dist/patterns/IndexTableLayout/index.mjs.map +1 -0
  484. package/dist/patterns/LayoutLoadingShimmer/index.mjs +3 -3
  485. package/dist/patterns/PageLayout/index.d.mts +4 -4
  486. package/dist/patterns/PageLayout/index.mjs +1 -1
  487. package/dist/patterns/WizardModal/index.mjs +3 -3
  488. package/dist/reactRouterFallback.d.mts +1 -1
  489. package/dist/relative-date-label.d.mts +1 -1
  490. package/dist/safe-parse.d.mts +1 -1
  491. package/dist/{schemaOptions-DBOUChxi.d.mts → schemaOptions-BQgLOgtD.d.mts} +9 -4
  492. package/dist/{semantic-Duoh2Pxp.d.mts → semantic-DjKvtUi8.d.mts} +1 -1
  493. package/dist/{semanticColor-BuG977_M.d.mts → semanticColor-CmGmGRj8.d.mts} +3 -3
  494. package/dist/{strings-CUZrwL-Q.d.mts → strings-FWNWdSn1.d.mts} +14 -2
  495. package/dist/strings.d.mts +1 -1
  496. package/dist/{text-B7hx6G99.d.mts → text-BNfECpa5.d.mts} +1 -1
  497. package/dist/{theme-BKg55Zk1.d.mts → theme-VNhXxAF3.d.mts} +3 -3
  498. package/dist/theme.d.mts +1 -1
  499. package/dist/tone.d.mts +3 -3
  500. package/dist/tree.d.mts +1 -1
  501. package/dist/{types-BjMJFNYH.d.mts → types-39QvBZuZ.d.mts} +1 -1
  502. package/dist/types-BQP14Fng.d.mts +180 -0
  503. package/dist/types-Bdi8Y7ll.d.mts +95 -0
  504. package/dist/{types-6QeQmbFm.d.mts → types-CFe4tA8Q.d.mts} +1 -1
  505. package/dist/{types-CEQWndtF.d.mts → types-DWU0Dmy9.d.mts} +4 -4
  506. package/dist/{types-VgGkS4JB.d.mts → types-DfpVVjso.d.mts} +2 -2
  507. package/dist/{types-DEzlAdZW.d.mts → types-EodOhsjw.d.mts} +2 -2
  508. package/dist/{types-CgKSEQyB.d.mts → types-HxiGiwQN.d.mts} +1 -1
  509. package/dist/{types-4wnr5R9P.d.mts → types-Kmnood9Y.d.mts} +1 -1
  510. package/dist/{types-C_ZEgHNa.d.mts → types-SOkNtcBq.d.mts} +2 -2
  511. package/dist/types.d.mts +1 -1
  512. package/dist/types2.d.mts +2 -2
  513. package/dist/types3.d.mts +1 -1
  514. package/dist/types4.d.mts +1 -1
  515. package/dist/types5.d.mts +2 -2
  516. package/dist/types6.d.mts +2 -2
  517. package/dist/types7.d.mts +1 -1
  518. package/dist/{url-state-B_gTQ9uu.d.mts → url-state-CwaRVyXR.d.mts} +2 -2
  519. package/dist/url-state.d.mts +1 -1
  520. package/dist/{useChain-DPRVMwX8.d.mts → useChain-DXkKKe-J.d.mts} +6 -6
  521. package/dist/useChainAtCursor.d.mts +6 -6
  522. package/dist/useCodeChainFunctionPanel.d.mts +1 -1
  523. package/dist/useColumnConfiguration.d.mts +34 -0
  524. package/dist/useComboboxFooterAction.d.mts +1 -1
  525. package/dist/{useFilterStateV2-BQZppUR0.d.mts → useFilterStateV2-Bzo27PR-.d.mts} +3 -3
  526. package/dist/useFilterStateV2.d.mts +1 -1
  527. package/dist/{useFormField-DAwApAKK.d.mts → useFormField-Ba8rh1CH.d.mts} +2 -2
  528. package/dist/{useFormField-BAmkdxtA.mjs → useFormField-CbNYbDdp.mjs} +2 -2
  529. package/dist/{useFormField-BAmkdxtA.mjs.map → useFormField-CbNYbDdp.mjs.map} +1 -1
  530. package/dist/useFormField.d.mts +1 -1
  531. package/dist/{useFormGroup-BZayb9fZ.mjs → useFormGroup-CsKC93Pt.mjs} +1 -1
  532. package/dist/{useFormGroup-BZayb9fZ.mjs.map → useFormGroup-CsKC93Pt.mjs.map} +1 -1
  533. package/dist/{useLocationPathname-BHL0pgiu.d.mts → useLocationPathname-OsvI7mH5.d.mts} +1 -1
  534. package/dist/useLocationPathname.d.mts +1 -1
  535. package/dist/{useTableBoxDragAndDrop-Dq30b6yY.d.mts → useTableBoxDragAndDrop-CKPIY98e.d.mts} +1 -1
  536. package/dist/useTableBoxDragAndDrop.d.mts +1 -1
  537. package/dist/useTableColumns-DdU0CLcU.d.mts +72 -0
  538. package/dist/useTableColumns.d.mts +2 -72
  539. package/dist/useTruncation.d.mts +1 -1
  540. package/dist/{utilities-B2ry7_20.d.mts → utilities-BrEUGFGq.d.mts} +1 -1
  541. package/dist/utilities.d.mts +1 -1
  542. package/dist/utils/testing.d.mts +1 -1
  543. package/dist/utils.d.mts +1 -1
  544. package/dist/utils4.d.mts +5 -5
  545. package/dist/{validation-BODkbEvr.d.mts → validation-D6NPueNk.d.mts} +3 -3
  546. package/dist/validation.d.mts +1 -1
  547. package/dist/validation2.d.mts +4 -4
  548. package/dist/{value-control-resolver-BcZiReQ7.d.mts → value-control-resolver-C-UrXVlB.d.mts} +2 -2
  549. package/dist/value-control-resolver.d.mts +1 -1
  550. package/dist/variables/effect.d.mts +1 -1
  551. package/dist/variables/semantic.d.mts +1 -1
  552. package/llms.txt +14 -2
  553. package/package.json +7 -3
  554. package/skills/ui-authoring/COMPONENTS.md +2 -1
  555. package/skills/ui-authoring/PATTERNS.md +4 -2
  556. package/skills/ui-authoring/SKILL.md +9 -2
  557. package/skills/ui-authoring/TOKENS.md +467 -119
  558. package/dist/Combobox-CsXnJKvB.mjs.map +0 -1
  559. package/dist/DatePicker-DQHVCGnP.mjs.map +0 -1
  560. package/dist/Modal-Cs5cZpEr.mjs.map +0 -1
  561. package/dist/TableControls-C1MF2JvY.mjs.map +0 -1
  562. package/dist/components/DataTable/index.mjs.map +0 -1
  563. package/dist/i18n-CeRarJIa.mjs.map +0 -1
  564. package/dist/types-CwzwClJx.d.mts +0 -27
  565. /package/dist/{index-7in8TPrM.d.mts → index-AnhM47-e2.d.mts} +0 -0
  566. /package/dist/{index-8SLBz2NH.d.mts → index-B33elXxm.d.mts} +0 -0
  567. /package/dist/{index-B24gUwOx.d.mts → index-B4woaFSm.d.mts} +0 -0
  568. /package/dist/{index-B8M0Grl_2.d.mts → index-B6T7ov8p.d.mts} +0 -0
  569. /package/dist/{index-BFnNtGdX.d.mts → index-BNRXMhlr.d.mts} +0 -0
  570. /package/dist/{index-BjgW3E7y.d.mts → index-BOaE2xDE.d.mts} +0 -0
  571. /package/dist/{index-BwFl_eS0.d.mts → index-BPiqSRRl.d.mts} +0 -0
  572. /package/dist/{index-C3kE54DD.d.mts → index-BcsXXrHq.d.mts} +0 -0
  573. /package/dist/{index-C3usUse7.d.mts → index-Bo9LXG4r.d.mts} +0 -0
  574. /package/dist/{index-C6HcjJiY.d.mts → index-BrGZHEgX.d.mts} +0 -0
  575. /package/dist/{index-CP2eJYlK.d.mts → index-Bt4QNofW.d.mts} +0 -0
  576. /package/dist/{index-CSf15oCd.d.mts → index-CFuHCx9T.d.mts} +0 -0
  577. /package/dist/{index-CX869wwk.d.mts → index-CLTQPxoD.d.mts} +0 -0
  578. /package/dist/{index-CXaDbCtw.d.mts → index-CaqYCRmZ.d.mts} +0 -0
  579. /package/dist/{index-D4DUvwPf.d.mts → index-CjDodOH2.d.mts} +0 -0
  580. /package/dist/{index-DB7t8whN.d.mts → index-CjmAoxrR2.d.mts} +0 -0
  581. /package/dist/{index-Deol7ZWO.d.mts → index-Cx0vQ6ld.d.mts} +0 -0
  582. /package/dist/{index-DhiymMxa.d.mts → index-CzItj62a.d.mts} +0 -0
  583. /package/dist/{index-DjOaHFU3.d.mts → index-CzUpNo0e.d.mts} +0 -0
  584. /package/dist/{index-DkrC-i1D.d.mts → index-DBGd4WeR.d.mts} +0 -0
  585. /package/dist/{index-DvwPIy8X.d.mts → index-DMRtRo7y.d.mts} +0 -0
  586. /package/dist/{index-Oio5ygqN.d.mts → index-DNjQe1D8.d.mts} +0 -0
  587. /package/dist/{index-Wc1llEvP.d.mts → index-DW3xeuzq.d.mts} +0 -0
  588. /package/dist/{index-bHnO4ZKt.d.mts → index-DZlqSwCF.d.mts} +0 -0
  589. /package/dist/{index-dzI_9J-Z.d.mts → index-De7MV8-j.d.mts} +0 -0
  590. /package/dist/{index-gpCH5158.d.mts → index-DjG1RCY5.d.mts} +0 -0
  591. /package/dist/{index-lIMqGGJz.d.mts → index-Dlcv6Ku22.d.mts} +0 -0
  592. /package/dist/{index-luywJTzJ.d.mts → index-DrK1_jKY.d.mts} +0 -0
  593. /package/dist/{index-sViox9YW.d.mts → index-DztUdPP_.d.mts} +0 -0
  594. /package/dist/{index-xAZnxq0d2.d.mts → index-K614ZhWK.d.mts} +0 -0
@@ -1,36 +1,37 @@
1
1
  import { a as styled, n as createGlobalStyle, r as css } from "./styledComponentsInterop-NxwFjeA4.mjs";
2
- import { isActive, isDisabled, isFocused, isHovered, isNotDisabled } from "./lib/pseudoClass.mjs";
2
+ import { c as usePDSLocale, i as formatDateTime, l as usePDSStrings, u as DEFAULT_COMMON_STRINGS } from "./i18n-BscB9FUy.mjs";
3
+ import { TruncatedText } from "./lib/TruncatedText.mjs";
3
4
  import { semanticColor, semanticOnly, semanticTokens } from "./lib/semanticColor.mjs";
4
- import { focusOutline, focusWithinOutline } from "./mixins/focus.mjs";
5
- import "./variables/transitions.mjs";
6
- import { transparent, withAlpha } from "./lib/color.mjs";
7
- import { semanticScrollbar } from "./mixins/scrollbar.mjs";
8
5
  import { paragraphMixins } from "./mixins/text.mjs";
9
- import { c as usePDSLocale, i as formatDateTime, l as usePDSStrings, u as DEFAULT_COMMON_STRINGS } from "./i18n-CeRarJIa.mjs";
10
- import { TruncatedText } from "./lib/TruncatedText.mjs";
11
6
  import { t as Card_default } from "./Card-BXNxWX5C.mjs";
12
7
  import { t as Spacer_default } from "./Spacer-J_HuhxX2.mjs";
13
8
  import { i as Paragraph, r as Label$1 } from "./Text-CSwFifQF.mjs";
14
- import { a as Tooltip } from "./Tooltip-DogEteGl.mjs";
9
+ import "./variables/transitions.mjs";
10
+ import { a as Tooltip } from "./Tooltip-B-0VRuKT.mjs";
11
+ import { transparent, withAlpha } from "./lib/color.mjs";
15
12
  import { letPointerDownReachDocument } from "./lib/letPointerDownReachDocument.mjs";
13
+ import { isActive, isDisabled, isFocused, isHovered, isNotDisabled } from "./lib/pseudoClass.mjs";
16
14
  import { moveItemByIndex } from "./lib/reorderItems.mjs";
17
15
  import { useScrollOverflow } from "./lib/useScrollOverflow.mjs";
18
16
  import { Z_INDICES } from "./lib/zindex.mjs";
17
+ import { focusOutline, focusWithinOutline } from "./mixins/focus.mjs";
18
+ import { semanticScrollbar } from "./mixins/scrollbar.mjs";
19
19
  import { n as Stack, t as HStack } from "./Stack-BkC7FCdF.mjs";
20
- import { n as Button, t as IconButton } from "./IconButton-D4awF770.mjs";
21
- import { i as TabBar, n as StyledTab, r as Tab } from "./TabBar-w_gxXSwA.mjs";
22
- import { r as InputGroup } from "./Input-DD4jzJhK.mjs";
20
+ import { n as Button, t as IconButton } from "./IconButton-HWx5Hlmi.mjs";
21
+ import { i as TabBar, n as StyledTab, r as Tab } from "./TabBar-SX8E9-Bk.mjs";
22
+ import { r as InputGroup } from "./Input-Dap055xf.mjs";
23
23
  import Input_default from "./components/Input/index.mjs";
24
- import { c as MenuList, s as MenuItem } from "./Menu-DlN0A5Nb.mjs";
25
- import { n as DropdownMenu_default } from "./DropdownMenu-CPE8Q56k.mjs";
26
- import { t as Combobox } from "./Combobox-CsXnJKvB.mjs";
27
- import { s as Popover_default } from "./Popover-DewrGOJB.mjs";
28
- import { i as Modal_default } from "./Modal-Cs5cZpEr.mjs";
29
- import { t as Toggle } from "./Toggle-C9cZnajR.mjs";
30
- import { i as selectedPresetFor, n as parseDateFilterValue, r as resolveDateFilterValue, t as formatDateFilterValue } from "./date-filter-CWgCXz85.mjs";
31
- import { t as ListBox } from "./ListBox-BhWLad_L.mjs";
32
- import { m as FormField, o as ComboboxField } from "./FormField-DjysBTKn.mjs";
33
- import { r as DatePicker, t as DateRangePicker } from "./DatePicker-DQHVCGnP.mjs";
24
+ import { c as MenuList, s as MenuItem } from "./Menu-Dw6Rcpk6.mjs";
25
+ import { n as DropdownMenu_default } from "./DropdownMenu-CedsmO5h.mjs";
26
+ import { t as Combobox } from "./Combobox-CcFJo68g.mjs";
27
+ import { n as Select, r as SelectHeader, t as Option } from "./Select-BJ9ACmRD.mjs";
28
+ import { s as Popover_default } from "./Popover-BcII7usF.mjs";
29
+ import { i as Modal_default } from "./Modal-kjUptzg1.mjs";
30
+ import { r as DateRangePicker, t as DatePicker } from "./DatePicker-D0cvVbzq.mjs";
31
+ import { t as ListBox } from "./ListBox-eoyBHtnJ.mjs";
32
+ import { i as selectedPresetFor, n as parseDateFilterValue, r as resolveDateFilterValue, t as formatDateFilterValue } from "./date-filter-D0ys8s0D.mjs";
33
+ import { m as FormField, o as ComboboxField } from "./FormField-C4B2qFgh.mjs";
34
+ import { t as Toggle } from "./Toggle-BsqSNYok.mjs";
34
35
  import { BorderRadius, Color, Spacing, Typography } from "@persona/design-tokens";
35
36
  import { Fragment, createContext, createElement, forwardRef, useCallback, useContext, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
36
37
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -45,9 +46,9 @@ import { DragIcon as DragIcon$1 } from "@persona/icons/24px";
45
46
  import * as PopoverPrimitive from "@radix-ui/react-popover";
46
47
  import { DndContext, PointerSensor, closestCenter, pointerWithin, useSensor, useSensors } from "@dnd-kit/core";
47
48
  import { SortableContext, horizontalListSortingStrategy, useSortable } from "@dnd-kit/sortable";
48
- import { DragDropContext, Draggable, Droppable } from "@hello-pangea/dnd";
49
49
  import { parseAbsolute, parseDate, toCalendarDate, toZoned } from "@internationalized/date";
50
50
  import { v4 } from "uuid";
51
+ import { DragDropContext, Draggable, Droppable } from "@hello-pangea/dnd";
51
52
  //#region components/DataTable/FormControlLabel/FormControlLabel.ts
52
53
  const FormControlLabel = styled(Label$1).attrs(() => ({
53
54
  size: "md",
@@ -403,9 +404,10 @@ const TabOverflowContainer = styled.div`
403
404
  position: absolute;
404
405
  height: 32px;
405
406
  `;
406
- const SavedViewTab = ({ view, selected, tabIdPrefix = TAB_ID_PREFIX, canEditViews, handleNameChange, onDuplicateView, onRequestDeleteView, onSelectView, onResetCurrentView, onSaveView, onSetDefaultView, onViewHiddenChange, onHideView, onKeyboardMove, isHidden = false, isViewDirty, showTabContextMenu, setShowTabContextMenu, className, ...rest }) => {
407
+ const SavedViewTab = ({ view, selected, tabIdPrefix = TAB_ID_PREFIX, canEditViews, handleNameChange, onDuplicateView, onRequestDeleteView, onSelectView, onResetCurrentView, onSaveView, onRequestSetDefaultView, onRequestUnsetDefaultView, onViewHiddenChange, onHideView, onKeyboardMove, isHidden = false, isViewDirty, showTabContextMenu, setShowTabContextMenu, className, ...rest }) => {
407
408
  const strings = usePDSStrings();
408
409
  const showMenu = selected && (canEditViews || !!onViewHiddenChange);
410
+ const onRequestDefaultViewChange = view.isDefault ? onRequestUnsetDefaultView : onRequestSetDefaultView;
409
411
  const inputRef = useRef(null);
410
412
  const lastSubmittedNameRef = useRef(null);
411
413
  const submitNameChange = (newName) => {
@@ -491,16 +493,15 @@ const SavedViewTab = ({ view, selected, tabIdPrefix = TAB_ID_PREFIX, canEditView
491
493
  onKeyDown: enterProxiesClick,
492
494
  children: strings.saveViewMenuItem
493
495
  }),
494
- canEditViews && onSetDefaultView && /* @__PURE__ */ jsx(MenuItem, {
495
- id: "table-controls__view__menu-set-default",
496
+ canEditViews && onRequestDefaultViewChange && /* @__PURE__ */ jsx(MenuItem, {
497
+ id: `table-controls__view__menu-${view.isDefault ? "unset" : "set"}-default`,
496
498
  prefixIcon: /* @__PURE__ */ jsx(StarIcon, {}),
497
- disabled: view.isDefault,
498
- onClick: async () => {
499
- await onSetDefaultView(view.id);
499
+ onClick: () => {
500
500
  setShowTabContextMenu(false);
501
+ onRequestDefaultViewChange(view);
501
502
  },
502
503
  onKeyDown: enterProxiesClick,
503
- children: view.isDefault ? strings.alreadyDefaultView : strings.setAsDefaultView
504
+ children: view.isDefault ? strings.unsetDefaultView : strings.setAsDefaultView
504
505
  }),
505
506
  onViewHiddenChange && /* @__PURE__ */ jsx(MenuItem, {
506
507
  id: "table-controls__view__menu-toggle-hidden",
@@ -670,24 +671,26 @@ const ProductTourStyles = createGlobalStyle`
670
671
  }
671
672
  }
672
673
  `;
673
- const ControlBar = ({ presetViews, currentView, onSelectView, views, hiddenViewIds, onAddView, onDuplicateView, onDeleteView, onViewNameChange, onReorderViews, onViewHiddenChange, onSaveView, onSetDefaultView, isViewDirty, canEditViews, showFilters, setShowFilters, searchProps, filtersId, propertiesButton, tableActions, isLoading, isFilterPanelLoading, showViews, selectedRows = [], bulkActions, onResetCurrentView, onClearSelection, title, "data-tour-target": dataTourTarget, compact, onError, filterPanel }) => {
674
+ const ControlBar = ({ presetViews, currentView, onSelectView, views, hiddenViewIds, onAddView, onDuplicateView, onDeleteView, onViewNameChange, onReorderViews, onViewHiddenChange, onSaveView, onSetDefaultView, onUnsetDefaultView, isViewDirty, canEditViews, showFilters, setShowFilters, searchProps, filtersId, propertiesButton, tableActions, isLoading, isFilterPanelLoading, showViews, selectedRows = [], bulkActions, onResetCurrentView, onClearSelection, title, "data-tour-target": dataTourTarget, compact, onError, filterPanel }) => {
674
675
  const strings = usePDSStrings();
675
676
  const tabListRef = useRef(null);
676
677
  const tabOverflowRef = useRef(null);
677
678
  const [overflowViews, setOverflowViews] = useState([]);
678
679
  const [showTabContextMenu, setShowTabContextMenu] = useState(false);
679
- const [pendingDeleteView, setPendingDeleteView] = useState(null);
680
- const previousPendingDeleteViewRef = useRef(null);
681
- const [isDeletingView, setIsDeletingView] = useState(false);
680
+ const [viewAction, setViewAction] = useState(null);
681
+ const pendingViewAction = viewAction?.isOpen ? viewAction : null;
682
+ const previousPendingViewRef = useRef(null);
683
+ const isChangingViewRef = useRef(false);
684
+ const [isChangingView, setIsChangingView] = useState(false);
682
685
  const [isAddingView, setIsAddingView] = useState(false);
683
686
  const [overflowLeft, setOverflowLeft] = useState(null);
684
687
  const [tabOverflowWidth, setTabOverflowWidth] = useState(null);
685
688
  const [isAddViewOverflowing, setIsAddViewOverflowing] = useState(false);
686
689
  useEffect(() => {
687
- const previousPendingDeleteView = previousPendingDeleteViewRef.current;
688
- if (!pendingDeleteView && previousPendingDeleteView) (document.getElementById(`${OVERFLOW_TAB_ID_PREFIX}${previousPendingDeleteView.id}`) ?? document.getElementById(`${TAB_ID_PREFIX}${previousPendingDeleteView.id}`))?.focus({ preventScroll: true });
689
- previousPendingDeleteViewRef.current = pendingDeleteView;
690
- }, [pendingDeleteView]);
690
+ const previousPendingView = previousPendingViewRef.current;
691
+ if (!pendingViewAction && previousPendingView) (document.getElementById(`${OVERFLOW_TAB_ID_PREFIX}${previousPendingView.id}`) ?? document.getElementById(`${TAB_ID_PREFIX}${previousPendingView.id}`))?.focus({ preventScroll: true });
692
+ previousPendingViewRef.current = pendingViewAction?.view ?? null;
693
+ }, [pendingViewAction]);
691
694
  const [shownViews, hiddenViews] = useMemo(() => {
692
695
  const hiddenIds = new Set(hiddenViewIds);
693
696
  const allViews = views ?? [];
@@ -826,15 +829,65 @@ const ControlBar = ({ presetViews, currentView, onSelectView, views, hiddenViewI
826
829
  const handleNameChange = (view, newName) => {
827
830
  if (canEditViews && view.name !== newName) onViewNameChange?.(view.id, newName);
828
831
  };
829
- const onRequestDeleteView = onDeleteView ? (view) => setPendingDeleteView(view) : void 0;
830
- const confirmDeleteView = async () => {
831
- if (!pendingDeleteView || !onDeleteView) return;
832
- setIsDeletingView(true);
832
+ const onRequestDeleteView = onDeleteView ? (view) => setViewAction({
833
+ view,
834
+ action: "delete",
835
+ isOpen: true
836
+ }) : void 0;
837
+ const onRequestSetDefaultView = onSetDefaultView ? (view) => setViewAction({
838
+ view,
839
+ action: "set-default",
840
+ isOpen: true
841
+ }) : void 0;
842
+ const onRequestUnsetDefaultView = onUnsetDefaultView ? (view) => setViewAction({
843
+ view,
844
+ action: "unset-default",
845
+ isOpen: true
846
+ }) : void 0;
847
+ const getViewActionConfig = (action) => {
848
+ switch (action) {
849
+ case "set-default": return {
850
+ title: strings.setDefaultViewTitle,
851
+ confirmation: strings.setDefaultViewConfirmation,
852
+ label: strings.setAsDefaultView,
853
+ onConfirm: onSetDefaultView
854
+ };
855
+ case "unset-default": return {
856
+ title: strings.unsetDefaultViewTitle,
857
+ confirmation: strings.unsetDefaultViewConfirmation,
858
+ label: strings.unsetDefaultView,
859
+ onConfirm: onUnsetDefaultView
860
+ };
861
+ case "delete": return {
862
+ title: strings.deleteViewTitle,
863
+ confirmation: strings.deleteViewConfirmation,
864
+ label: strings.delete,
865
+ onConfirm: onDeleteView
866
+ };
867
+ }
868
+ };
869
+ const displayedActionConfig = getViewActionConfig(viewAction?.action ?? "delete");
870
+ const closeViewAction = () => {
871
+ setViewAction((previous) => previous && {
872
+ ...previous,
873
+ isOpen: false
874
+ });
875
+ };
876
+ const confirmViewAction = async () => {
877
+ if (!pendingViewAction || isChangingViewRef.current) return;
878
+ const onConfirm = getViewActionConfig(pendingViewAction.action).onConfirm;
879
+ if (!onConfirm) {
880
+ closeViewAction();
881
+ return;
882
+ }
883
+ isChangingViewRef.current = true;
884
+ setIsChangingView(true);
833
885
  try {
834
- await onDeleteView(pendingDeleteView.id);
835
- setPendingDeleteView(null);
886
+ await onConfirm(pendingViewAction.view.id);
887
+ closeViewAction();
836
888
  } catch {} finally {
837
- setIsDeletingView(false);
889
+ isChangingViewRef.current = false;
890
+ setIsChangingView(false);
838
891
  }
839
892
  };
840
893
  if (compact) return /* @__PURE__ */ jsx(CompactBar, {
@@ -891,7 +944,8 @@ const ControlBar = ({ presetViews, currentView, onSelectView, views, hiddenViewI
891
944
  onSelectView,
892
945
  onResetCurrentView,
893
946
  onSaveView,
894
- onSetDefaultView,
947
+ onRequestSetDefaultView,
948
+ onRequestUnsetDefaultView,
895
949
  onViewHiddenChange,
896
950
  isViewDirty: isViewDirty ?? false,
897
951
  selected: view.id === currentView,
@@ -968,7 +1022,8 @@ const ControlBar = ({ presetViews, currentView, onSelectView, views, hiddenViewI
968
1022
  onRequestDeleteView,
969
1023
  onResetCurrentView,
970
1024
  onSaveView,
971
- onSetDefaultView,
1025
+ onRequestSetDefaultView,
1026
+ onRequestUnsetDefaultView,
972
1027
  onViewHiddenChange,
973
1028
  onHideView: hideView,
974
1029
  isViewDirty: isViewDirty ?? false,
@@ -1019,444 +1074,438 @@ const ControlBar = ({ presetViews, currentView, onSelectView, views, hiddenViewI
1019
1074
  }),
1020
1075
  showFilters && filterPanel,
1021
1076
  /* @__PURE__ */ jsx(Modal_default, {
1022
- open: pendingDeleteView != null,
1077
+ open: pendingViewAction != null,
1023
1078
  onOpenChange: (open) => {
1024
- if (!open && !isDeletingView) setPendingDeleteView(null);
1079
+ if (!open && !isChangingViewRef.current) closeViewAction();
1025
1080
  },
1026
- isKeyboardDismissDisabled: isDeletingView,
1027
- contentProps: isDeletingView ? { showCloseButton: false } : void 0,
1028
- title: strings.deleteViewTitle,
1081
+ isKeyboardDismissDisabled: isChangingView,
1082
+ contentProps: isChangingView ? { showCloseButton: false } : void 0,
1083
+ title: displayedActionConfig.title,
1029
1084
  footer: /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Button, {
1030
1085
  variant: "basic",
1031
1086
  width: "auto",
1032
- disabled: isDeletingView,
1033
- onClick: () => setPendingDeleteView(null),
1087
+ disabled: isChangingView,
1088
+ onClick: () => {
1089
+ if (!isChangingViewRef.current) closeViewAction();
1090
+ },
1034
1091
  children: strings.cancel
1035
1092
  }), /* @__PURE__ */ jsx(Button, {
1036
- id: "table-controls__view__delete-confirm",
1037
- variant: "danger",
1093
+ id: `table-controls__view__${viewAction?.action ?? "delete"}-confirm`,
1094
+ variant: viewAction?.action === "delete" ? "danger" : "primary",
1038
1095
  width: "auto",
1039
- isPending: isDeletingView,
1040
- onClick: confirmDeleteView,
1041
- children: strings.delete
1096
+ isPending: isChangingView,
1097
+ onClick: confirmViewAction,
1098
+ children: displayedActionConfig.label
1042
1099
  })] }),
1043
- children: /* @__PURE__ */ jsx(Paragraph, { children: strings.deleteViewConfirmation(pendingDeleteView?.name ?? "") })
1100
+ children: /* @__PURE__ */ jsx(Paragraph, { children: displayedActionConfig.confirmation(viewAction?.view.name ?? "") })
1044
1101
  })
1045
1102
  ] });
1046
1103
  };
1047
1104
  //#endregion
1048
- //#region components/DataTable/TableControls/TableControls.tsx
1049
- const TableControls = ({ filterPanel, searchProps, defaultShowFilters, showFilters: controlledShowFilters, setShowFilters: controlledSetShowFilters, className, tableActions, propertiesButton, isLoading, isFilterPanelLoading, showViews, canEditViews, onSelectView, views, hiddenViewIds, currentView, onAddView, onViewNameChange, onReorderViews, onViewHiddenChange, onDuplicateView, onDeleteView, onSaveView, onSetDefaultView, isViewDirty, selectedRows, bulkActions, onClearSelection, title, presetViews, compact, columnConfigurationProps, showFiltersAlways = false, onError, "data-tour-target": dataTourTarget }) => {
1050
- const filtersId = useId();
1051
- const [internalShowFilters, internalSetShowFilters] = useState(defaultShowFilters ?? false);
1052
- const showFilters = controlledShowFilters != null ? controlledShowFilters : internalShowFilters;
1053
- const setShowFilters = controlledSetShowFilters != null ? controlledSetShowFilters : internalSetShowFilters;
1054
- const enhancedPropertiesButton = useMemo(() => {
1055
- if (!columnConfigurationProps && !propertiesButton) return;
1056
- const elements = [];
1057
- if (propertiesButton) elements.push(propertiesButton);
1058
- if (columnConfigurationProps) elements.push(/* @__PURE__ */ jsx(TableViewConfigurationDropdown, {
1059
- disabled: false,
1060
- ...columnConfigurationProps
1061
- }, "column-config"));
1062
- if (elements.length === 1) return elements[0];
1063
- return /* @__PURE__ */ jsx(StyledEnhancedPropertiesButton, { children: elements });
1064
- }, [columnConfigurationProps, propertiesButton]);
1065
- return /* @__PURE__ */ jsx(Container, {
1066
- className,
1067
- children: /* @__PURE__ */ jsx(ControlBar, {
1068
- showViews: compact ? false : showViews,
1069
- views: compact ? void 0 : views,
1070
- hiddenViewIds: compact ? void 0 : hiddenViewIds,
1071
- onSelectView: compact ? void 0 : onSelectView,
1072
- currentView: compact ? void 0 : currentView,
1073
- onAddView: compact ? void 0 : onAddView,
1074
- onDeleteView: compact ? void 0 : onDeleteView,
1075
- onDuplicateView: compact ? void 0 : onDuplicateView,
1076
- onViewNameChange: compact ? void 0 : onViewNameChange,
1077
- onReorderViews: compact ? void 0 : onReorderViews,
1078
- onViewHiddenChange: compact ? void 0 : onViewHiddenChange,
1079
- onSaveView: compact ? void 0 : onSaveView,
1080
- onSetDefaultView: compact ? void 0 : onSetDefaultView,
1081
- isViewDirty,
1082
- canEditViews: compact ? false : canEditViews,
1083
- showFilters: showFilters && (showFiltersAlways || !isFilterPanelLoading),
1084
- setShowFilters: (filterPanel != null || isFilterPanelLoading) && !showFiltersAlways ? setShowFilters : void 0,
1085
- filtersId,
1086
- searchProps,
1087
- propertiesButton: enhancedPropertiesButton,
1088
- tableActions,
1089
- isLoading,
1090
- isFilterPanelLoading,
1091
- selectedRows,
1092
- bulkActions,
1093
- onClearSelection,
1094
- title,
1095
- "data-tour-target": dataTourTarget,
1096
- presetViews: compact ? void 0 : presetViews,
1097
- compact,
1098
- onError,
1099
- filterPanel
1100
- })
1101
- });
1102
- };
1103
- const Container = styled(Stack)`
1104
- margin-bottom: ${Spacing[2]};
1105
- `;
1106
- const StyledEnhancedPropertiesButton = styled.div`
1107
- display: flex;
1108
- gap: ${Spacing[1]};
1109
- `;
1105
+ //#region components/DataTable/TableControls/TableControlsContext.ts
1106
+ const TableControlsContext = createContext({
1107
+ filters: [],
1108
+ activeFilters: [],
1109
+ setActiveFilters: () => {}
1110
+ });
1111
+ function useTableControls() {
1112
+ return useContext(TableControlsContext);
1113
+ }
1114
+ function TableControlsProvider({ children, ...value }) {
1115
+ return createElement(TableControlsContext.Provider, { value }, children);
1116
+ }
1110
1117
  //#endregion
1111
- //#region components/DataTable/dnd/StyledIconDrag.tsx
1112
- const StyledIconDrag = styled(DragIcon$1)`
1113
- display: ${({ $shouldHide = false }) => $shouldHide ? "none" : "inline"};
1114
-
1115
- ${({ $horizontal = false }) => $horizontal ? css`
1116
- transform: rotate(90deg);
1117
- ` : ""}
1118
+ //#region components/DataTable/TableControls/filters.tsx
1119
+ const SegmentedControl = styled.div`
1120
+ display: grid;
1121
+ grid-template-columns: min-content minmax(auto, max-content);
1118
1122
 
1119
- ${({ $active = false, $hover = false }) => $active ? css`
1120
- cursor: grabbing;
1121
- opacity: 1;
1122
- ` : $hover ? css`
1123
- cursor: grab;
1124
- opacity: 1;
1125
- ` : css`
1126
- cursor: normal;
1127
- opacity: 0.4;
1128
- `}
1123
+ > *:first-child:not(:last-child) {
1124
+ border-top-right-radius: 0;
1125
+ border-bottom-right-radius: 0;
1126
+ }
1129
1127
 
1130
- transition: opacity 0.2s ease-in-out;
1128
+ > *:last-child:not(:first-child) {
1129
+ border-top-left-radius: 0;
1130
+ border-bottom-left-radius: 0;
1131
+ margin-left: -1px;
1132
+ }
1131
1133
 
1132
- path {
1133
- stroke: ${({ theme }) => semanticColor(theme, "FgPrimary", Color.CoreSlate1000)};
1134
- stroke-width: 1px;
1134
+ /* Segments overlap by a pixel, so lift the focused one to keep its outline on top. */
1135
+ > *:focus-visible,
1136
+ > *:has(:focus-visible) {
1137
+ position: relative;
1138
+ z-index: 1;
1135
1139
  }
1136
1140
  `;
1137
- //#endregion
1138
- //#region components/DataTable/dnd/utils.ts
1139
- /**
1140
- * reorder returns a reordered version of the inputed list by swapping the element
1141
- * at startIndex with the one at endIndex
1142
- */
1143
- function reorder(list, startIndex, endIndex) {
1144
- const result = Array.from(list);
1145
- const [removed] = result.splice(startIndex, 1);
1146
- result.splice(endIndex, 0, removed);
1147
- return result;
1148
- }
1149
- /**
1150
- * Translates a drag result into indices into the full list. dnd reports positions among the
1151
- * rendered rows, which diverge from the full list as soon as the view is filtered.
1152
- *
1153
- * Returns null when either end cannot be resolved, in which case the drag should be ignored
1154
- * rather than applied at the wrong position.
1155
- */
1156
- function resolveDragIndices(listKeys, renderedKeys, draggableId, destinationIndex) {
1157
- const destinationKey = renderedKeys[destinationIndex];
1158
- if (destinationKey == null) return null;
1159
- const from = listKeys.indexOf(draggableId);
1160
- const to = listKeys.indexOf(destinationKey);
1161
- return from === -1 || to === -1 ? null : {
1162
- from,
1163
- to
1164
- };
1165
- }
1166
- //#endregion
1167
- //#region components/DataTable/TableControls/TableViewConfigurationDropdown.tsx
1168
- const SHOWN_DROPPABLE_ID = "cases-view__configure-shown-columns";
1169
- const startsCapitalized = (label) => {
1170
- const first = label.charAt(0);
1171
- return first !== "" && first === first.toUpperCase() && first !== first.toLowerCase();
1172
- };
1173
- const byLabel = (a, b) => {
1174
- const aCapitalized = startsCapitalized(a.label);
1175
- if (aCapitalized !== startsCapitalized(b.label)) return aCapitalized ? -1 : 1;
1176
- return a.label.localeCompare(b.label, void 0, { numeric: true });
1177
- };
1178
- const DndSection = styled("div")`
1179
- max-height: 400px;
1141
+ const AddFilterButton = styled(Button)`
1142
+ opacity: 0;
1143
+ color: ${({ theme }) => theme.color.text.secondary};
1180
1144
 
1181
- overflow: scroll;
1182
- ::-webkit-scrollbar {
1183
- display: none;
1145
+ @media (hover: none) {
1146
+ opacity: 1;
1184
1147
  }
1185
- `;
1186
- const DndItemWrapper = styled("div")`
1187
- background: white;
1188
- ${semanticOnly((tokens) => `background: ${tokens.SurfacePrimary};`)}
1189
- width: 100%;
1190
- border-bottom: 1px solid ${({ theme }) => semanticColor(theme, "BorderSubtle", theme.color.border.secondary)};
1191
- padding: ${Spacing[2]} ${Spacing[2]};
1192
1148
 
1193
- display: flex;
1194
- flex-direction: row;
1195
- align-items: center;
1196
- justify-content: left;
1197
- `;
1198
- const SuffixContainer = styled("div")`
1199
- padding-left: ${Spacing[2]};
1200
- margin-left: auto;
1201
- align-self: center;
1149
+ &:focus-visible {
1150
+ opacity: 1;
1151
+ }
1202
1152
  `;
1203
- const SearchContainer = styled.div`
1153
+ const FiltersContainer = styled.div`
1204
1154
  display: flex;
1205
- `;
1206
- const StyledSearchInput = styled(SearchInput)`
1155
+ flex-wrap: wrap;
1156
+ gap: ${Spacing[2]};
1207
1157
  width: 100%;
1158
+
1159
+ &:hover {
1160
+ ${AddFilterButton} {
1161
+ opacity: 1;
1162
+ }
1163
+ }
1208
1164
  `;
1209
- const PopoverCard$1 = styled(Card_default)`
1210
- width: 300px;
1211
- padding: ${Spacing[4]};
1165
+ const FilterCombobox = styled.div`
1166
+ min-width: ${({ $compact }) => $compact ? "150px" : "200px"};
1167
+ max-width: ${({ $compact, $multiple }) => $compact && !$multiple ? "150px" : "250px"};
1168
+
1169
+ ${({ $isFilterSelectSibling }) => $isFilterSelectSibling && css`
1170
+ input[role='combobox'] {
1171
+ border-top-left-radius: 0;
1172
+ border-bottom-left-radius: 0;
1173
+ }
1174
+ `}
1212
1175
  `;
1213
- const TriggerIconButton = forwardRef(function TriggerIconButton({ disabled, ...elemProps }, ref) {
1214
- const strings = usePDSStrings();
1215
- return /* @__PURE__ */ jsx(Button, {
1216
- disabled,
1217
- width: "icon",
1218
- variant: "basic",
1219
- size: "md",
1220
- ...elemProps,
1221
- ref,
1222
- "data-tour-target": "table-properties-button",
1223
- "aria-label": strings.tableProperties,
1224
- children: /* @__PURE__ */ jsx(SettingsIcon, {})
1176
+ const InputFilter = ({ config, compact, onActiveChange }) => {
1177
+ const [value, setValue] = useState(config.value);
1178
+ const onChangeRef = useRef(config.onChange);
1179
+ onChangeRef.current = config.onChange;
1180
+ const onActiveChangeRef = useRef(onActiveChange);
1181
+ onActiveChangeRef.current = onActiveChange;
1182
+ const debouncedOnChange = useMemo(() => debounce((nextValue) => {
1183
+ onActiveChangeRef.current(nextValue.length > 0);
1184
+ onChangeRef.current(nextValue);
1185
+ }, 300), []);
1186
+ useEffect(() => setValue(config.value), [config.value]);
1187
+ useEffect(() => () => debouncedOnChange.cancel(), [debouncedOnChange]);
1188
+ return /* @__PURE__ */ jsx(Input_default, {
1189
+ "aria-label": config.name,
1190
+ placeholder: config.placeholder,
1191
+ size: compact ? "sm" : void 0,
1192
+ value,
1193
+ onChange: ({ target: { value: nextValue } }) => {
1194
+ setValue(nextValue);
1195
+ debouncedOnChange(nextValue);
1196
+ }
1225
1197
  });
1226
- });
1227
- const TooltipButtonWrapper = styled("div")`
1228
- display: inline-block;
1229
- `;
1230
- const TableViewConfigurationDropdown = ({ disabled = false, disabledTooltipMessage, size = "md", variant = "basic", ...props }) => {
1231
- const strings = usePDSStrings();
1232
- return disabled ? /* @__PURE__ */ jsx(Tooltip, {
1233
- trigger: /* @__PURE__ */ jsx(TooltipButtonWrapper, { children: /* @__PURE__ */ jsx(TriggerIconButton, {
1234
- disabled: true,
1235
- size,
1236
- variant
1237
- }) }),
1238
- children: disabledTooltipMessage ?? strings.configureViewPermissionDenied
1239
- }) : /* @__PURE__ */ jsxs(Popover_default, { children: [/* @__PURE__ */ jsx(Popover_default.Trigger, {
1240
- asChild: true,
1241
- children: /* @__PURE__ */ jsx(TriggerIconButton, {
1242
- disabled: false,
1243
- size,
1244
- variant
1245
- })
1246
- }), /* @__PURE__ */ jsx(Popover_default.Content, {
1247
- style: { zIndex: Z_INDICES.dropdown },
1248
- sideOffset: 8,
1249
- side: "bottom",
1250
- align: "end",
1251
- children: /* @__PURE__ */ jsx(PopoverCard$1, {
1252
- elevated: true,
1253
- children: /* @__PURE__ */ jsx(TableViewConfiguration, { ...props })
1254
- })
1255
- })] });
1256
1198
  };
1257
- const TableViewConfiguration = ({ columnConfiguration, attributeOptions, updateColumnConfiguration, getColumnDisabled, sortByRelevance = false }) => {
1199
+ const SelectFilter = ({ config, compact, onActiveChange }) => {
1258
1200
  const strings = usePDSStrings();
1259
- const [searchTerm, setSearchTerm] = useState("");
1260
- const fuse = useMemo(() => {
1261
- return new Fuse(attributeOptions, sortByRelevance ? {
1262
- shouldSort: true,
1263
- threshold: .3,
1264
- ignoreLocation: true,
1265
- includeScore: true,
1266
- minMatchCharLength: 1,
1267
- keys: [{
1268
- name: "label",
1269
- weight: 1
1270
- }]
1271
- } : {
1272
- shouldSort: false,
1273
- threshold: .4,
1274
- location: 0,
1275
- distance: 100,
1276
- minMatchCharLength: 1,
1277
- keys: [{
1278
- name: "label",
1279
- weight: 1
1280
- }]
1201
+ return /* @__PURE__ */ jsx(Select, {
1202
+ "aria-label": config.name,
1203
+ placeholder: config.placeholder ?? strings.selectFilterOption,
1204
+ value: config.value,
1205
+ width: "auto",
1206
+ minWidth: 150,
1207
+ size: compact ? "sm" : void 0,
1208
+ onValueChange: (value) => {
1209
+ onActiveChange(Boolean(value));
1210
+ config.onChange(value);
1211
+ },
1212
+ portal: true,
1213
+ children: config.options.map((option) => /* @__PURE__ */ jsx(Option, {
1214
+ value: option.value,
1215
+ children: option.label ?? option.value
1216
+ }, option.value))
1217
+ });
1218
+ };
1219
+ const builtInDefinitions = {
1220
+ input: {
1221
+ render: ({ config, compact, onActiveChange }) => {
1222
+ if (config.type !== "input") return null;
1223
+ return /* @__PURE__ */ jsx(InputFilter, {
1224
+ config,
1225
+ compact,
1226
+ onActiveChange
1227
+ }, config.id);
1228
+ },
1229
+ isActive: (config) => config.type === "input" && Boolean(config.value),
1230
+ clear: (config) => {
1231
+ if (config.type === "input") if (config.onDelete) config.onDelete();
1232
+ else config.onChange("");
1233
+ }
1234
+ },
1235
+ select: {
1236
+ render: ({ config, compact, onActiveChange }) => {
1237
+ if (config.type !== "select") return null;
1238
+ return /* @__PURE__ */ jsx(SelectFilter, {
1239
+ config,
1240
+ compact,
1241
+ onActiveChange
1242
+ });
1243
+ },
1244
+ isActive: (config) => config.type === "select" && Boolean(config.value),
1245
+ clear: (config) => config.type === "select" && config.onChange("")
1246
+ },
1247
+ multiselect: {
1248
+ render: ({ config, compact, isFilterSelectSibling, onActiveChange }) => {
1249
+ if (config.type !== "multiselect") return null;
1250
+ return /* @__PURE__ */ jsx(FilterCombobox, {
1251
+ $compact: compact,
1252
+ $isFilterSelectSibling: isFilterSelectSibling,
1253
+ $multiple: true,
1254
+ children: /* @__PURE__ */ jsx(Combobox, {
1255
+ "aria-label": config.name,
1256
+ multiple: true,
1257
+ options: config.options.map((option) => ({
1258
+ ...option,
1259
+ label: option.label ?? option.value
1260
+ })),
1261
+ values: config.value,
1262
+ onValuesChange: (values) => {
1263
+ onActiveChange(values.length > 0);
1264
+ config.onChange(values);
1265
+ },
1266
+ placeholder: config.placeholder,
1267
+ size: compact ? "sm" : void 0,
1268
+ truncate: true
1269
+ })
1270
+ });
1271
+ },
1272
+ isActive: (config) => config.type === "multiselect" && config.value.length > 0,
1273
+ clear: (config) => config.type === "multiselect" && config.onChange([])
1274
+ },
1275
+ combobox: {
1276
+ render: ({ config, compact, isFilterSelectSibling, onActiveChange }) => {
1277
+ if (config.type !== "combobox") return null;
1278
+ return /* @__PURE__ */ jsx(ComboboxFilter, {
1279
+ config,
1280
+ compact,
1281
+ isFilterSelectSibling,
1282
+ onActiveChange
1283
+ });
1284
+ },
1285
+ isActive: (config) => config.type === "combobox" && (config.multiple ? Boolean(config.values?.length) : Boolean(config.value)),
1286
+ clear: (config) => {
1287
+ if (config.type === "combobox") if (config.multiple) config.onValuesChange?.([]);
1288
+ else config.onChange?.(null);
1289
+ }
1290
+ },
1291
+ daterange: {
1292
+ render: ({ config, compact, onActiveChange }) => {
1293
+ if (config.type !== "daterange") return null;
1294
+ return /* @__PURE__ */ jsx(DateRangePicker, {
1295
+ "aria-label": config.name,
1296
+ dateRange: config.value,
1297
+ label: null,
1298
+ onChange: (range) => {
1299
+ onActiveChange(range != null);
1300
+ config.onChange(range);
1301
+ },
1302
+ showClear: false,
1303
+ size: compact ? "sm" : void 0
1304
+ });
1305
+ },
1306
+ isActive: (config) => config.type === "daterange" && Boolean(config.value?.startDate || config.value?.endDate),
1307
+ clear: (config) => config.type === "daterange" && config.onChange(null)
1308
+ }
1309
+ };
1310
+ const ComboboxFilter = ({ config, compact, isFilterSelectSibling, onActiveChange }) => {
1311
+ if (config.multiple) {
1312
+ const { id: _id, name: _name, type: _type, enabled: _enabled, disabledReason: _disabledReason, required: _required, onFilterSelect: _onFilterSelect, defaultVisible: _defaultVisible, group: _group, htmlId: _htmlId, ...comboboxProps } = config;
1313
+ return /* @__PURE__ */ jsx(FilterCombobox, {
1314
+ $compact: compact,
1315
+ $isFilterSelectSibling: isFilterSelectSibling,
1316
+ $multiple: true,
1317
+ children: /* @__PURE__ */ jsx(Combobox, {
1318
+ ...comboboxProps,
1319
+ "aria-label": config.name,
1320
+ size: compact ? "sm" : void 0,
1321
+ onValuesChange: (values) => {
1322
+ onActiveChange(values.length > 0);
1323
+ config.onValuesChange?.(values);
1324
+ }
1325
+ })
1281
1326
  });
1282
- }, [attributeOptions, sortByRelevance]);
1283
- const allOptions = useMemo(() => union(attributeOptions, columnConfiguration), [attributeOptions, columnConfiguration]);
1284
- const filteredSearchOptions = useMemo(() => {
1285
- if (searchTerm === "") return allOptions;
1286
- const results = fuse.search(searchTerm);
1287
- if (!sortByRelevance) return results.map(({ item }) => item);
1288
- return [...results].sort((a, b) => (a.score ?? 0) - (b.score ?? 0) || byLabel(a.item, b.item)).map(({ item }) => item);
1289
- }, [
1290
- allOptions,
1291
- fuse,
1292
- searchTerm,
1293
- sortByRelevance
1294
- ]);
1295
- const hiddenAttributes = useMemo(() => {
1296
- const columnConfigurationKeys = new Set(columnConfiguration.map((c) => c.key));
1297
- const hidden = filteredSearchOptions.filter((attribute) => !columnConfigurationKeys.has(attribute.key));
1298
- if (!sortByRelevance || searchTerm !== "") return hidden;
1299
- const [systemColumns, customFields] = partition(hidden, (a) => !a.isCustomField);
1300
- return [...systemColumns, ...[...customFields].sort(byLabel)];
1301
- }, [
1302
- columnConfiguration,
1303
- filteredSearchOptions,
1304
- sortByRelevance,
1305
- searchTerm
1306
- ]);
1307
- const filteredShownAttributes = useMemo(() => {
1308
- return columnConfiguration.filter((column) => filteredSearchOptions.map((o) => o.key).includes(column.key));
1309
- }, [columnConfiguration, filteredSearchOptions]);
1310
- const handleDragEnd = (result, _provided) => {
1311
- const { destination, source } = result;
1312
- if (!destination || destination.droppableId === source.droppableId && destination.index === source.index) return;
1313
- const indices = resolveDragIndices(columnConfiguration.map((c) => c.key), filteredShownAttributes.map((c) => c.key), result.draggableId, destination.index);
1314
- if (!indices) return;
1315
- updateColumnConfiguration(reorder(columnConfiguration, indices.from, indices.to));
1316
- };
1317
- const generateShownAttributesToggle = (column) => () => {
1318
- updateColumnConfiguration(columnConfiguration.filter((a) => a.key !== column.key));
1319
- };
1320
- const generateHiddenAttributesToggle = (column) => () => {
1321
- updateColumnConfiguration(columnConfiguration.concat({
1322
- key: column.key,
1323
- label: column.label
1324
- }));
1325
- };
1326
- const shownColumnIds = useMemo(() => {
1327
- return columnConfiguration.map((c) => c.key);
1328
- }, [columnConfiguration]);
1329
- const shownDndItemProps = filteredShownAttributes.map((column, index) => {
1330
- const isDisabledByDefault = columnConfiguration.length === 1;
1331
- const isDisabledByCustom = getColumnDisabled?.(column.key, shownColumnIds) ?? false;
1332
- const shouldDisableDragForColumn = isDisabledByCustom && index === filteredShownAttributes.length - 1;
1333
- return {
1334
- column,
1335
- index,
1336
- isDisabled: isDisabledByDefault || isDisabledByCustom,
1337
- isToggled: true,
1338
- shouldDisableDrag: shouldDisableDragForColumn,
1339
- handleToggle: generateShownAttributesToggle(column)
1340
- };
1327
+ }
1328
+ const { id: _id, name: _name, type: _type, enabled: _enabled, disabledReason: _disabledReason, required: _required, onFilterSelect: _onFilterSelect, defaultVisible: _defaultVisible, group: _group, htmlId: _htmlId, ...comboboxProps } = config;
1329
+ return /* @__PURE__ */ jsx(FilterCombobox, {
1330
+ $compact: compact,
1331
+ $isFilterSelectSibling: isFilterSelectSibling,
1332
+ $multiple: false,
1333
+ children: /* @__PURE__ */ jsx(Combobox, {
1334
+ ...comboboxProps,
1335
+ "aria-label": config.name,
1336
+ size: compact ? "sm" : void 0,
1337
+ onChange: (value) => {
1338
+ onActiveChange(Boolean(value));
1339
+ config.onChange?.(value);
1340
+ }
1341
+ })
1341
1342
  });
1342
- const hiddenDndItemProps = hiddenAttributes.map((column, index) => {
1343
+ };
1344
+ function resolveFilterTypeDefinition(config, filterResolver) {
1345
+ return filterResolver?.(config) ?? builtInDefinitions[config.type];
1346
+ }
1347
+ function isFilterActive(config, filterResolver) {
1348
+ return config.required === true || resolveFilterTypeDefinition(config, filterResolver)?.isActive(config) === true;
1349
+ }
1350
+ const getHighestId = (activeFilters) => activeFilters.reduce((highestId, filter) => Math.max(highestId, filter.id), 0);
1351
+ const getActiveFilters = (filters, activeFilters = [], includeDefaultVisible = false, filterResolver) => {
1352
+ let currentId = getHighestId(activeFilters);
1353
+ const activeByConfigId = new Map(activeFilters.flatMap((filter) => filter.config ? [[filter.config.id, filter]] : []));
1354
+ return filters.filter((filter) => isFilterActive(filter, filterResolver) || includeDefaultVisible && filter.defaultVisible).map((filter) => {
1343
1355
  return {
1344
- column,
1345
- index,
1346
- isToggled: false,
1347
- shouldDisableDrag: true,
1348
- handleToggle: generateHiddenAttributesToggle(column)
1356
+ id: activeByConfigId.get(filter.id)?.id ?? ++currentId,
1357
+ config: filter,
1358
+ isConfiguring: false
1349
1359
  };
1360
+ }).sort((first, second) => first.id - second.id);
1361
+ };
1362
+ const createUnsetFilter = (activeFilters) => ({
1363
+ id: getHighestId(activeFilters) + 1,
1364
+ isConfiguring: true
1365
+ });
1366
+ const synchronizeActiveFilters = (filters, activeFilters, filterResolver) => {
1367
+ if (filters.length === 0) return activeFilters.length === 0 ? activeFilters : [];
1368
+ const refreshed = activeFilters.flatMap((active) => {
1369
+ if (!active.config) return [active];
1370
+ const config = filters.find((filter) => filter.id === active.config?.id);
1371
+ if (config) return [{
1372
+ ...active,
1373
+ config
1374
+ }];
1375
+ return active.isConfiguring ? [active] : [];
1350
1376
  });
1351
- return /* @__PURE__ */ jsxs("div", { children: [
1352
- /* @__PURE__ */ jsx(Label$1, {
1353
- size: "lg",
1354
- weight: "bold",
1355
- children: strings.configureColumns
1356
- }),
1357
- /* @__PURE__ */ jsx(Spacer_default, { height: 2 }),
1358
- /* @__PURE__ */ jsx(SearchContainer, { children: /* @__PURE__ */ jsx(StyledSearchInput, {
1359
- title: null,
1360
- value: searchTerm,
1361
- handleInput: setSearchTerm,
1362
- size: "md",
1363
- placeholder: strings.searchColumns,
1364
- dataTest: "checklist-item-panel-item-table__search"
1365
- }) }),
1366
- /* @__PURE__ */ jsx(Spacer_default, { height: 2 }),
1367
- shownDndItemProps.length > 0 || hiddenDndItemProps.length > 0 ? /* @__PURE__ */ jsxs(DndSection, { children: [
1368
- shownDndItemProps.length > 0 && /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx(Paragraph, { children: strings.shownColumns }), /* @__PURE__ */ jsx(DragDropContext, {
1369
- onDragEnd: handleDragEnd,
1370
- children: /* @__PURE__ */ jsx(Droppable, {
1371
- droppableId: SHOWN_DROPPABLE_ID,
1372
- renderClone: (provided, _snapshot, rubric) => {
1373
- return /* @__PURE__ */ jsx("div", {
1374
- ...provided.draggableProps,
1375
- ...provided.dragHandleProps,
1376
- ref: provided.innerRef,
1377
- children: /* @__PURE__ */ jsx(AttributeDnd, { ...shownDndItemProps[rubric.source.index] })
1378
- });
1379
- },
1380
- children: (provided) => {
1381
- return /* @__PURE__ */ jsxs("div", {
1382
- ref: provided.innerRef,
1383
- ...provided.droppableProps,
1384
- children: [shownDndItemProps.map((props, idx) => {
1385
- return /* @__PURE__ */ jsx(Draggable, {
1386
- draggableId: props.column.key,
1387
- index: idx,
1388
- isDragDisabled: props.shouldDisableDrag,
1389
- children: (provided) => {
1390
- return /* @__PURE__ */ jsx("div", {
1391
- ref: provided.innerRef,
1392
- ...provided.draggableProps,
1393
- ...provided.dragHandleProps,
1394
- children: /* @__PURE__ */ jsx(AttributeDnd, { ...props })
1395
- });
1396
- }
1397
- }, `${props.column.key}`);
1398
- }), provided.placeholder]
1399
- });
1400
- }
1401
- })
1402
- })] }),
1403
- /* @__PURE__ */ jsx(Spacer_default, { height: 2 }),
1404
- hiddenDndItemProps.length > 0 && /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx(Paragraph, { children: strings.hiddenColumns }), hiddenDndItemProps.map((props) => /* @__PURE__ */ jsx(AttributeDnd, { ...props }, props.column.key))] })
1405
- ] }) : /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(Paragraph, { children: strings.noMatchingColumns }) })
1406
- ] });
1377
+ const activeFromConfig = getActiveFilters(filters, refreshed, false, filterResolver);
1378
+ const activeConfigIds = new Set(activeFromConfig.flatMap((active) => active.config ? [active.config.id] : []));
1379
+ const retainedDefaultVisible = refreshed.filter((active) => active.config?.defaultVisible && !activeConfigIds.has(active.config.id));
1380
+ const configuring = refreshed.filter((active) => active.isConfiguring && (!active.config || !activeConfigIds.has(active.config.id)));
1381
+ const next = [
1382
+ ...activeFromConfig,
1383
+ ...retainedDefaultVisible,
1384
+ ...configuring
1385
+ ].sort((first, second) => first.id - second.id);
1386
+ return next.length === 0 ? [createUnsetFilter(activeFilters)] : next;
1407
1387
  };
1408
- const OverflowText = styled("div")`
1409
- max-width: 160px;
1410
- flex-wrap: wrap;
1411
- display: flex;
1412
- `;
1413
- const AttributeDnd = ({ column, index, isDisabled = false, isToggled, shouldDisableDrag, handleToggle }) => {
1388
+ const Filter = ({ config, compact, hideFilterSelection, filterResolver }) => {
1389
+ const { activeFilters, setActiveFilters } = useTableControls();
1414
1390
  const strings = usePDSStrings();
1415
- return /* @__PURE__ */ jsxs(DndItemWrapper, { children: [
1416
- /* @__PURE__ */ jsx(StyledIconDrag, {
1417
- $active: true,
1418
- $shouldHide: shouldDisableDrag
1419
- }),
1420
- /* @__PURE__ */ jsx(OverflowText, { children: /* @__PURE__ */ jsx(Paragraph, {
1421
- color: "primary",
1422
- size: "sm",
1423
- children: column.label
1424
- }) }),
1425
- /* @__PURE__ */ jsx(SuffixContainer, { children: /* @__PURE__ */ jsx(Toggle, {
1426
- value: isToggled,
1427
- disabled: isDisabled,
1428
- onChange: handleToggle,
1429
- "aria-label": isToggled ? strings.hideColumn(column.label) : strings.showColumn(column.label)
1430
- }) })
1431
- ] }, `${column.key}-${index}`);
1391
+ const definition = config ? resolveFilterTypeDefinition(config, filterResolver) : void 0;
1392
+ const onActiveChange = (active) => {
1393
+ setActiveFilters(activeFilters.map((filter) => filter.config?.id === config?.id ? {
1394
+ ...filter,
1395
+ isConfiguring: !active
1396
+ } : filter));
1397
+ };
1398
+ const content = config && definition?.render({
1399
+ config,
1400
+ compact,
1401
+ isFilterSelectSibling: !hideFilterSelection,
1402
+ onActiveChange
1403
+ });
1404
+ if (hideFilterSelection) return /* @__PURE__ */ jsx(Fragment$1, { children: content });
1405
+ return /* @__PURE__ */ jsxs(SegmentedControl, {
1406
+ id: config?.htmlId,
1407
+ role: "group",
1408
+ "aria-label": config?.name ? strings.filterGroupLabel(config.name) : strings.filter,
1409
+ children: [/* @__PURE__ */ jsx(FilterSelection, {
1410
+ value: config?.id,
1411
+ disabled: config?.required,
1412
+ compact,
1413
+ filterResolver
1414
+ }), content]
1415
+ });
1432
1416
  };
1433
- //#endregion
1434
- //#region components/DataTable/TableControls/TableControlsContext.ts
1435
- const TableControlsContext = createContext({
1436
- filters: [],
1437
- activeFilters: [],
1438
- setActiveFilters: () => {}
1439
- });
1440
- function useTableControls() {
1441
- return useContext(TableControlsContext);
1442
- }
1443
- function TableControlsProvider({ children, ...value }) {
1444
- return createElement(TableControlsContext.Provider, { value }, children);
1445
- }
1446
- //#endregion
1447
- //#region components/DataTable/TableControls/FiltersV2/date-rule-intent.ts
1448
- function dateRuleIntent(change, writesEnabled) {
1449
- if (change.source === "clear") return { kind: "clear" };
1450
- if (change.source === "calendar" || !writesEnabled) return change.range == null ? { kind: "clear" } : {
1451
- kind: "absolute",
1452
- range: change.range
1417
+ const FilterSelection = ({ value, disabled, compact, filterResolver }) => {
1418
+ const strings = usePDSStrings();
1419
+ const { filters, activeFilters, setActiveFilters } = useTableControls();
1420
+ const options = useMemo(() => filters.filter((filter) => filter.id === value || !activeFilters.some((active) => active.config?.id === filter.id)).filter((filter) => !filter.group || filter.id === value || !activeFilters.some((active) => active.config?.group === filter.group && active.config?.id !== value)), [
1421
+ activeFilters,
1422
+ filters,
1423
+ value
1424
+ ]);
1425
+ const replaceFilter = (nextId) => {
1426
+ const next = filters.find((filter) => filter.id === nextId);
1427
+ const previous = filters.find((filter) => filter.id === value);
1428
+ if (!next) return;
1429
+ if (!value) {
1430
+ setActiveFilters(activeFilters.map((active) => active.config ? active : {
1431
+ ...active,
1432
+ config: next
1433
+ }));
1434
+ next.onFilterSelect?.();
1435
+ return;
1436
+ }
1437
+ if (previous) resolveFilterTypeDefinition(previous, filterResolver)?.clear(previous);
1438
+ setActiveFilters(activeFilters.map((active) => active.config?.id === value ? {
1439
+ ...active,
1440
+ config: next,
1441
+ isConfiguring: true
1442
+ } : active));
1443
+ next.onFilterSelect?.();
1453
1444
  };
1454
- return {
1455
- kind: "relative",
1456
- preset: change.preset,
1457
- range: change.range
1445
+ const removeFilter = () => {
1446
+ const current = filters.find((filter) => filter.id === value);
1447
+ if (current) resolveFilterTypeDefinition(current, filterResolver)?.clear(current);
1448
+ setActiveFilters(activeFilters.filter((active) => active.config?.id !== value));
1458
1449
  };
1459
- }
1450
+ return /* @__PURE__ */ jsx(Select, {
1451
+ "aria-label": strings.filterType,
1452
+ width: "auto",
1453
+ minWidth: 120,
1454
+ placeholder: strings.selectFilterType,
1455
+ value,
1456
+ size: compact ? "sm" : void 0,
1457
+ disabled,
1458
+ onValueChange: replaceFilter,
1459
+ portal: true,
1460
+ header: /* @__PURE__ */ jsx(SelectHeader, {
1461
+ title: strings.filterType,
1462
+ menuTriggerLabel: strings.filterActions,
1463
+ menuItems: /* @__PURE__ */ jsx(DropdownMenu_default.Item, {
1464
+ onClick: removeFilter,
1465
+ children: strings.deleteFilter
1466
+ })
1467
+ }),
1468
+ children: options.map((filter) => {
1469
+ const isDisabled = Boolean(filter.disabledReason) && filter.id !== value;
1470
+ const option = /* @__PURE__ */ jsx(Option, {
1471
+ value: filter.id,
1472
+ disabled: isDisabled,
1473
+ style: isDisabled ? { pointerEvents: "auto" } : void 0,
1474
+ children: filter.name
1475
+ }, filter.id);
1476
+ return isDisabled ? /* @__PURE__ */ jsx(Tooltip, {
1477
+ trigger: option,
1478
+ side: "top",
1479
+ children: filter.disabledReason
1480
+ }, filter.id) : option;
1481
+ })
1482
+ });
1483
+ };
1484
+ const Filters = ({ compact, filterResolver, ...props }) => {
1485
+ const strings = usePDSStrings();
1486
+ const { filters, activeFilters, setActiveFilters } = useTableControls();
1487
+ const hasNewFilter = activeFilters.some((filter) => !filter.config);
1488
+ const hideFilterSelection = Boolean(compact && filters.length > 0 && filters.every((filter) => filter.required));
1489
+ return /* @__PURE__ */ jsxs(FiltersContainer, {
1490
+ ...props,
1491
+ children: [activeFilters.map((filter) => /* @__PURE__ */ jsx(Filter, {
1492
+ config: filter.config,
1493
+ compact,
1494
+ hideFilterSelection,
1495
+ filterResolver
1496
+ }, filter.id)), /* @__PURE__ */ jsx(AddFilterButton, {
1497
+ id: "table-controls__add-filter-button",
1498
+ type: "button",
1499
+ variant: "text",
1500
+ width: "icon",
1501
+ size: compact ? "sm" : "md",
1502
+ "aria-label": strings.addFilter,
1503
+ disabled: hasNewFilter || activeFilters.length >= filters.length,
1504
+ onClick: () => setActiveFilters([...activeFilters, createUnsetFilter(activeFilters)]),
1505
+ children: /* @__PURE__ */ jsx(CirclePlusIcon, {})
1506
+ })]
1507
+ });
1508
+ };
1460
1509
  //#endregion
1461
1510
  //#region components/DataTable/TableControls/FiltersV2/operators.ts
1462
1511
  /**
@@ -1799,27 +1848,8 @@ function reconcileValueForOperator(field, nextOperator, previousOperator, value)
1799
1848
  return value ?? emptyValueForRule(field, nextOperator);
1800
1849
  }
1801
1850
  //#endregion
1802
- //#region components/DataTable/TableControls/FiltersV2/date-range-rule-value.ts
1803
- /**
1804
- * The absolute bounds a rule should be queried with, or `null` when it does not
1805
- * carry a date range.
1806
- *
1807
- * Relative metadata wins over the stored snapshot: the snapshot is a picture of
1808
- * the window when it was saved, and the point of a relative rule is that the
1809
- * window moves. The operator gate is part of this rather than the caller's job —
1810
- * metadata only ever describes a range, so resolving it onto a scalar rule
1811
- * would put a `{ startDate, endDate }` object where the wire expects a day.
1812
- */
1813
- function resolveDateRangeRuleValue(rule, fieldType) {
1814
- if (!carriesDateRange(rule.operator, fieldType)) return null;
1815
- const relative = parseDateFilterValue(rule.relativeDate);
1816
- if (relative?.kind === "relative") return resolveDateFilterValue(relative);
1817
- const parsed = parseDateFilterValue(rule.value);
1818
- return parsed ? resolveDateFilterValue(parsed) : null;
1819
- }
1820
- //#endregion
1821
- //#region components/DataTable/TableControls/FiltersV2/format-date-value.ts
1822
- const TIME_COMPONENT = /T\d{2}:\d{2}/;
1851
+ //#region components/DataTable/TableControls/FiltersV2/format-date-value.ts
1852
+ const TIME_COMPONENT = /T\d{2}:\d{2}/;
1823
1853
  /**
1824
1854
  * Display form of a minute-precision filter value ("Oct 5, 2011 2:48 PM"). Date-only values are
1825
1855
  * returned untouched. Pass the `PDSProvider` locale (`usePDSLocale()`) to follow it; omitted or
@@ -2246,7 +2276,7 @@ const FILTER_SIZE_TOKENS = {
2246
2276
  const PopoverContent = styled(PopoverPrimitive.Content)`
2247
2277
  z-index: ${Z_INDICES.modalDropdown};
2248
2278
  `;
2249
- const PopoverCard = styled(Card_default)`
2279
+ const PopoverCard$1 = styled(Card_default)`
2250
2280
  width: ${({ $wide }) => $wide ? "520px" : "384px"};
2251
2281
  max-width: calc(100vw - ${Spacing[4]});
2252
2282
  margin-bottom: 0;
@@ -2480,7 +2510,7 @@ const AdvancedFilterRulesPopover = ({ registry, compound, onChange, trigger, ope
2480
2510
  event.preventDefault();
2481
2511
  handleOpenChange(false);
2482
2512
  },
2483
- children: /* @__PURE__ */ jsxs(PopoverCard, {
2513
+ children: /* @__PURE__ */ jsxs(PopoverCard$1, {
2484
2514
  elevated: true,
2485
2515
  $wide: wide,
2486
2516
  children: [/* @__PURE__ */ jsx(Header, { children: /* @__PURE__ */ jsx(Paragraph, {
@@ -2772,6 +2802,20 @@ function ChoicesValueControl({ field, operator, value, onChange, onCommit, ariaL
2772
2802
  });
2773
2803
  }
2774
2804
  //#endregion
2805
+ //#region components/DataTable/TableControls/FiltersV2/date-rule-intent.ts
2806
+ function dateRuleIntent(change, writesEnabled) {
2807
+ if (change.source === "clear") return { kind: "clear" };
2808
+ if (change.source === "calendar" || !writesEnabled) return change.range == null ? { kind: "clear" } : {
2809
+ kind: "absolute",
2810
+ range: change.range
2811
+ };
2812
+ return {
2813
+ kind: "relative",
2814
+ preset: change.preset,
2815
+ range: change.range
2816
+ };
2817
+ }
2818
+ //#endregion
2775
2819
  //#region components/DataTable/TableControls/FiltersV2/value-controls/DateRangeValueControl/DateRangeValueControl.tsx
2776
2820
  const CALENDAR_DATE = /^(\d{4}-\d{2}-\d{2})/;
2777
2821
  const DATE_ONLY$1 = /^\d{4}-\d{2}-\d{2}$/;
@@ -4726,6 +4770,466 @@ function deriveVisibleCustomFieldParents(registry, topLevelRules) {
4726
4770
  return hasActiveSelectorRule ? Array.from(allowedParents) : void 0;
4727
4771
  }
4728
4772
  //#endregion
4773
+ //#region components/DataTable/dnd/StyledIconDrag.tsx
4774
+ const StyledIconDrag = styled(DragIcon$1)`
4775
+ display: ${({ $shouldHide = false }) => $shouldHide ? "none" : "inline"};
4776
+
4777
+ ${({ $horizontal = false }) => $horizontal ? css`
4778
+ transform: rotate(90deg);
4779
+ ` : ""}
4780
+
4781
+ ${({ $active = false, $hover = false }) => $active ? css`
4782
+ cursor: grabbing;
4783
+ opacity: 1;
4784
+ ` : $hover ? css`
4785
+ cursor: grab;
4786
+ opacity: 1;
4787
+ ` : css`
4788
+ cursor: normal;
4789
+ opacity: 0.4;
4790
+ `}
4791
+
4792
+ transition: opacity 0.2s ease-in-out;
4793
+
4794
+ path {
4795
+ stroke: ${({ theme }) => semanticColor(theme, "FgPrimary", Color.CoreSlate1000)};
4796
+ stroke-width: 1px;
4797
+ }
4798
+ `;
4799
+ //#endregion
4800
+ //#region components/DataTable/dnd/utils.ts
4801
+ /**
4802
+ * reorder returns a reordered version of the inputed list by swapping the element
4803
+ * at startIndex with the one at endIndex
4804
+ */
4805
+ function reorder(list, startIndex, endIndex) {
4806
+ const result = Array.from(list);
4807
+ const [removed] = result.splice(startIndex, 1);
4808
+ result.splice(endIndex, 0, removed);
4809
+ return result;
4810
+ }
4811
+ /**
4812
+ * Translates a drag result into indices into the full list. dnd reports positions among the
4813
+ * rendered rows, which diverge from the full list as soon as the view is filtered.
4814
+ *
4815
+ * Returns null when either end cannot be resolved, in which case the drag should be ignored
4816
+ * rather than applied at the wrong position.
4817
+ */
4818
+ function resolveDragIndices(listKeys, renderedKeys, draggableId, destinationIndex) {
4819
+ const destinationKey = renderedKeys[destinationIndex];
4820
+ if (destinationKey == null) return null;
4821
+ const from = listKeys.indexOf(draggableId);
4822
+ const to = listKeys.indexOf(destinationKey);
4823
+ return from === -1 || to === -1 ? null : {
4824
+ from,
4825
+ to
4826
+ };
4827
+ }
4828
+ //#endregion
4829
+ //#region components/DataTable/TableControls/TableViewConfigurationDropdown.tsx
4830
+ const SHOWN_DROPPABLE_ID = "cases-view__configure-shown-columns";
4831
+ const startsCapitalized = (label) => {
4832
+ const first = label.charAt(0);
4833
+ return first !== "" && first === first.toUpperCase() && first !== first.toLowerCase();
4834
+ };
4835
+ const byLabel = (a, b) => {
4836
+ const aCapitalized = startsCapitalized(a.label);
4837
+ if (aCapitalized !== startsCapitalized(b.label)) return aCapitalized ? -1 : 1;
4838
+ return a.label.localeCompare(b.label, void 0, { numeric: true });
4839
+ };
4840
+ const DndSection = styled("div")`
4841
+ max-height: 400px;
4842
+
4843
+ overflow: scroll;
4844
+ ::-webkit-scrollbar {
4845
+ display: none;
4846
+ }
4847
+ `;
4848
+ const DndItemWrapper = styled("div")`
4849
+ background: white;
4850
+ ${semanticOnly((tokens) => `background: ${tokens.SurfacePrimary};`)}
4851
+ width: 100%;
4852
+ border-bottom: 1px solid ${({ theme }) => semanticColor(theme, "BorderSubtle", theme.color.border.secondary)};
4853
+ padding: ${Spacing[2]} ${Spacing[2]};
4854
+
4855
+ display: flex;
4856
+ flex-direction: row;
4857
+ align-items: center;
4858
+ justify-content: left;
4859
+ `;
4860
+ const SuffixContainer = styled("div")`
4861
+ padding-left: ${Spacing[2]};
4862
+ margin-left: auto;
4863
+ align-self: center;
4864
+ `;
4865
+ const SearchContainer = styled.div`
4866
+ display: flex;
4867
+ `;
4868
+ const StyledSearchInput = styled(SearchInput)`
4869
+ width: 100%;
4870
+ `;
4871
+ const PopoverCard = styled(Card_default)`
4872
+ width: 300px;
4873
+ padding: ${Spacing[4]};
4874
+ `;
4875
+ const TriggerIconButton = forwardRef(function TriggerIconButton({ disabled, ...elemProps }, ref) {
4876
+ const strings = usePDSStrings();
4877
+ return /* @__PURE__ */ jsx(Button, {
4878
+ disabled,
4879
+ width: "icon",
4880
+ variant: "basic",
4881
+ size: "md",
4882
+ ...elemProps,
4883
+ ref,
4884
+ "data-tour-target": "table-properties-button",
4885
+ "aria-label": strings.tableProperties,
4886
+ children: /* @__PURE__ */ jsx(SettingsIcon, {})
4887
+ });
4888
+ });
4889
+ const TooltipButtonWrapper = styled("div")`
4890
+ display: inline-block;
4891
+ `;
4892
+ const TableViewConfigurationDropdown = ({ disabled = false, disabledTooltipMessage, size = "md", variant = "basic", ...props }) => {
4893
+ const strings = usePDSStrings();
4894
+ return disabled ? /* @__PURE__ */ jsx(Tooltip, {
4895
+ trigger: /* @__PURE__ */ jsx(TooltipButtonWrapper, { children: /* @__PURE__ */ jsx(TriggerIconButton, {
4896
+ disabled: true,
4897
+ size,
4898
+ variant
4899
+ }) }),
4900
+ children: disabledTooltipMessage ?? strings.configureViewPermissionDenied
4901
+ }) : /* @__PURE__ */ jsxs(Popover_default, { children: [/* @__PURE__ */ jsx(Popover_default.Trigger, {
4902
+ asChild: true,
4903
+ children: /* @__PURE__ */ jsx(TriggerIconButton, {
4904
+ disabled: false,
4905
+ size,
4906
+ variant
4907
+ })
4908
+ }), /* @__PURE__ */ jsx(Popover_default.Content, {
4909
+ style: { zIndex: Z_INDICES.dropdown },
4910
+ sideOffset: 8,
4911
+ side: "bottom",
4912
+ align: "end",
4913
+ children: /* @__PURE__ */ jsx(PopoverCard, {
4914
+ elevated: true,
4915
+ children: /* @__PURE__ */ jsx(TableViewConfiguration, { ...props })
4916
+ })
4917
+ })] });
4918
+ };
4919
+ const TableViewConfiguration = ({ columnConfiguration, attributeOptions, updateColumnConfiguration, getColumnDisabled, sortByRelevance = false }) => {
4920
+ const strings = usePDSStrings();
4921
+ const [searchTerm, setSearchTerm] = useState("");
4922
+ const fuse = useMemo(() => {
4923
+ return new Fuse(attributeOptions, sortByRelevance ? {
4924
+ shouldSort: true,
4925
+ threshold: .3,
4926
+ ignoreLocation: true,
4927
+ includeScore: true,
4928
+ minMatchCharLength: 1,
4929
+ keys: [{
4930
+ name: "label",
4931
+ weight: 1
4932
+ }]
4933
+ } : {
4934
+ shouldSort: false,
4935
+ threshold: .4,
4936
+ location: 0,
4937
+ distance: 100,
4938
+ minMatchCharLength: 1,
4939
+ keys: [{
4940
+ name: "label",
4941
+ weight: 1
4942
+ }]
4943
+ });
4944
+ }, [attributeOptions, sortByRelevance]);
4945
+ const allOptions = useMemo(() => union(attributeOptions, columnConfiguration), [attributeOptions, columnConfiguration]);
4946
+ const filteredSearchOptions = useMemo(() => {
4947
+ if (searchTerm === "") return allOptions;
4948
+ const results = fuse.search(searchTerm);
4949
+ if (!sortByRelevance) return results.map(({ item }) => item);
4950
+ return [...results].sort((a, b) => (a.score ?? 0) - (b.score ?? 0) || byLabel(a.item, b.item)).map(({ item }) => item);
4951
+ }, [
4952
+ allOptions,
4953
+ fuse,
4954
+ searchTerm,
4955
+ sortByRelevance
4956
+ ]);
4957
+ const hiddenAttributes = useMemo(() => {
4958
+ const columnConfigurationKeys = new Set(columnConfiguration.map((c) => c.key));
4959
+ const hidden = filteredSearchOptions.filter((attribute) => !columnConfigurationKeys.has(attribute.key));
4960
+ if (!sortByRelevance || searchTerm !== "") return hidden;
4961
+ const [systemColumns, customFields] = partition(hidden, (a) => !a.isCustomField);
4962
+ return [...systemColumns, ...[...customFields].sort(byLabel)];
4963
+ }, [
4964
+ columnConfiguration,
4965
+ filteredSearchOptions,
4966
+ sortByRelevance,
4967
+ searchTerm
4968
+ ]);
4969
+ const filteredShownAttributes = useMemo(() => {
4970
+ return columnConfiguration.filter((column) => filteredSearchOptions.map((o) => o.key).includes(column.key));
4971
+ }, [columnConfiguration, filteredSearchOptions]);
4972
+ const handleDragEnd = (result, _provided) => {
4973
+ const { destination, source } = result;
4974
+ if (!destination || destination.droppableId === source.droppableId && destination.index === source.index) return;
4975
+ const indices = resolveDragIndices(columnConfiguration.map((c) => c.key), filteredShownAttributes.map((c) => c.key), result.draggableId, destination.index);
4976
+ if (!indices) return;
4977
+ updateColumnConfiguration(reorder(columnConfiguration, indices.from, indices.to));
4978
+ };
4979
+ const generateShownAttributesToggle = (column) => () => {
4980
+ updateColumnConfiguration(columnConfiguration.filter((a) => a.key !== column.key));
4981
+ };
4982
+ const generateHiddenAttributesToggle = (column) => () => {
4983
+ updateColumnConfiguration(columnConfiguration.concat({
4984
+ key: column.key,
4985
+ label: column.label
4986
+ }));
4987
+ };
4988
+ const shownColumnIds = useMemo(() => {
4989
+ return columnConfiguration.map((c) => c.key);
4990
+ }, [columnConfiguration]);
4991
+ const shownDndItemProps = filteredShownAttributes.map((column, index) => {
4992
+ const isDisabledByDefault = columnConfiguration.length === 1;
4993
+ const isDisabledByCustom = getColumnDisabled?.(column.key, shownColumnIds) ?? false;
4994
+ const shouldDisableDragForColumn = isDisabledByCustom && index === filteredShownAttributes.length - 1;
4995
+ return {
4996
+ column,
4997
+ index,
4998
+ isDisabled: isDisabledByDefault || isDisabledByCustom,
4999
+ isToggled: true,
5000
+ shouldDisableDrag: shouldDisableDragForColumn,
5001
+ handleToggle: generateShownAttributesToggle(column)
5002
+ };
5003
+ });
5004
+ const hiddenDndItemProps = hiddenAttributes.map((column, index) => {
5005
+ return {
5006
+ column,
5007
+ index,
5008
+ isToggled: false,
5009
+ shouldDisableDrag: true,
5010
+ handleToggle: generateHiddenAttributesToggle(column)
5011
+ };
5012
+ });
5013
+ return /* @__PURE__ */ jsxs("div", { children: [
5014
+ /* @__PURE__ */ jsx(Label$1, {
5015
+ size: "lg",
5016
+ weight: "bold",
5017
+ children: strings.configureColumns
5018
+ }),
5019
+ /* @__PURE__ */ jsx(Spacer_default, { height: 2 }),
5020
+ /* @__PURE__ */ jsx(SearchContainer, { children: /* @__PURE__ */ jsx(StyledSearchInput, {
5021
+ title: null,
5022
+ value: searchTerm,
5023
+ handleInput: setSearchTerm,
5024
+ size: "md",
5025
+ placeholder: strings.searchColumns,
5026
+ dataTest: "checklist-item-panel-item-table__search"
5027
+ }) }),
5028
+ /* @__PURE__ */ jsx(Spacer_default, { height: 2 }),
5029
+ shownDndItemProps.length > 0 || hiddenDndItemProps.length > 0 ? /* @__PURE__ */ jsxs(DndSection, { children: [
5030
+ shownDndItemProps.length > 0 && /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx(Paragraph, { children: strings.shownColumns }), /* @__PURE__ */ jsx(DragDropContext, {
5031
+ onDragEnd: handleDragEnd,
5032
+ children: /* @__PURE__ */ jsx(Droppable, {
5033
+ droppableId: SHOWN_DROPPABLE_ID,
5034
+ renderClone: (provided, _snapshot, rubric) => {
5035
+ return /* @__PURE__ */ jsx("div", {
5036
+ ...provided.draggableProps,
5037
+ ...provided.dragHandleProps,
5038
+ ref: provided.innerRef,
5039
+ children: /* @__PURE__ */ jsx(AttributeDnd, { ...shownDndItemProps[rubric.source.index] })
5040
+ });
5041
+ },
5042
+ children: (provided) => {
5043
+ return /* @__PURE__ */ jsxs("div", {
5044
+ ref: provided.innerRef,
5045
+ ...provided.droppableProps,
5046
+ children: [shownDndItemProps.map((props, idx) => {
5047
+ return /* @__PURE__ */ jsx(Draggable, {
5048
+ draggableId: props.column.key,
5049
+ index: idx,
5050
+ isDragDisabled: props.shouldDisableDrag,
5051
+ children: (provided) => {
5052
+ return /* @__PURE__ */ jsx("div", {
5053
+ ref: provided.innerRef,
5054
+ ...provided.draggableProps,
5055
+ ...provided.dragHandleProps,
5056
+ children: /* @__PURE__ */ jsx(AttributeDnd, { ...props })
5057
+ });
5058
+ }
5059
+ }, `${props.column.key}`);
5060
+ }), provided.placeholder]
5061
+ });
5062
+ }
5063
+ })
5064
+ })] }),
5065
+ /* @__PURE__ */ jsx(Spacer_default, { height: 2 }),
5066
+ hiddenDndItemProps.length > 0 && /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx(Paragraph, { children: strings.hiddenColumns }), hiddenDndItemProps.map((props) => /* @__PURE__ */ jsx(AttributeDnd, { ...props }, props.column.key))] })
5067
+ ] }) : /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(Paragraph, { children: strings.noMatchingColumns }) })
5068
+ ] });
5069
+ };
5070
+ const OverflowText = styled("div")`
5071
+ max-width: 160px;
5072
+ flex-wrap: wrap;
5073
+ display: flex;
5074
+ `;
5075
+ const AttributeDnd = ({ column, index, isDisabled = false, isToggled, shouldDisableDrag, handleToggle }) => {
5076
+ const strings = usePDSStrings();
5077
+ return /* @__PURE__ */ jsxs(DndItemWrapper, { children: [
5078
+ /* @__PURE__ */ jsx(StyledIconDrag, {
5079
+ $active: true,
5080
+ $shouldHide: shouldDisableDrag
5081
+ }),
5082
+ /* @__PURE__ */ jsx(OverflowText, { children: /* @__PURE__ */ jsx(Paragraph, {
5083
+ color: "primary",
5084
+ size: "sm",
5085
+ children: column.label
5086
+ }) }),
5087
+ /* @__PURE__ */ jsx(SuffixContainer, { children: /* @__PURE__ */ jsx(Toggle, {
5088
+ value: isToggled,
5089
+ disabled: isDisabled,
5090
+ onChange: handleToggle,
5091
+ "aria-label": isToggled ? strings.hideColumn(column.label) : strings.showColumn(column.label)
5092
+ }) })
5093
+ ] }, `${column.key}-${index}`);
5094
+ };
5095
+ //#endregion
5096
+ //#region components/DataTable/TableControls/TableControls.tsx
5097
+ const EMPTY_FILTERS = [];
5098
+ const resolveFilterArea = (filterPanel, filtersV2Panel, configuredFilterPanel) => filterPanel ?? filtersV2Panel ?? configuredFilterPanel;
5099
+ const hasNewFilterId = (currentIds, previousIds) => {
5100
+ const previous = new Set(previousIds.split("\0").filter(Boolean));
5101
+ return currentIds.split("\0").some((id) => id !== "" && !previous.has(id));
5102
+ };
5103
+ const TableControls = ({ filters = EMPTY_FILTERS, filterResolver, filtersV2, filterPanel, searchProps, defaultShowFilters, showFilters: controlledShowFilters, setShowFilters: controlledSetShowFilters, className, tableActions, propertiesButton, isLoading, isFilterPanelLoading, showViews, canEditViews, onSelectView, views, hiddenViewIds, currentView, onAddView, onViewNameChange, onReorderViews, onViewHiddenChange, onDuplicateView, onDeleteView, onSaveView, onSetDefaultView, onUnsetDefaultView, isViewDirty, selectedRows, bulkActions, onClearSelection, title, presetViews, compact, columnConfigurationProps, showFiltersAlways = false, onError, "data-tour-target": dataTourTarget }) => {
5104
+ const filtersId = useId();
5105
+ const enabledFilters = useMemo(() => filtersV2 != null ? EMPTY_FILTERS : filters.filter((filter) => filter.enabled !== false), [filters, filtersV2]);
5106
+ const [activeFilters, setActiveFilters] = useState(() => getActiveFilters(enabledFilters, [], true, filterResolver));
5107
+ const generatedFilterPanel = enabledFilters.length > 0 ? /* @__PURE__ */ jsx(TableControlsProvider, {
5108
+ filters: enabledFilters,
5109
+ activeFilters,
5110
+ setActiveFilters,
5111
+ children: /* @__PURE__ */ jsx(Filters, {
5112
+ id: filtersId,
5113
+ compact,
5114
+ filterResolver
5115
+ })
5116
+ }) : void 0;
5117
+ const usesFiltersV2 = filterPanel == null && filtersV2 != null;
5118
+ const resolvedFilterPanel = resolveFilterArea(filterPanel, filtersV2 != null ? /* @__PURE__ */ jsx("div", {
5119
+ id: filtersId,
5120
+ children: /* @__PURE__ */ jsx(FilterBar, {
5121
+ ...filtersV2,
5122
+ size: filtersV2.size ?? (compact ? "sm" : "md")
5123
+ })
5124
+ }) : void 0, generatedFilterPanel);
5125
+ const [internalShowFilters, internalSetShowFilters] = useState(defaultShowFilters ?? (filterPanel == null && (usesFiltersV2 || activeFilters.length > 0)));
5126
+ useEffect(() => {
5127
+ setActiveFilters((current) => synchronizeActiveFilters(enabledFilters, current, filterResolver));
5128
+ }, [enabledFilters, filterResolver]);
5129
+ const activeFilterIds = enabledFilters.filter((filter) => isFilterActive(filter, filterResolver)).map((filter) => filter.id).sort().join("\0");
5130
+ const configuredFilterIds = activeFilters.flatMap((filter) => filter.config ? [filter.config.id] : []).sort().join("\0");
5131
+ const previousActiveFilterIds = useRef(activeFilterIds);
5132
+ const previousConfiguredFilterIds = useRef(configuredFilterIds);
5133
+ const previouslyUsedFiltersV2 = useRef(usesFiltersV2);
5134
+ useEffect(() => {
5135
+ const becameActive = hasNewFilterId(activeFilterIds, previousActiveFilterIds.current);
5136
+ const newlyConfigured = hasNewFilterId(configuredFilterIds, previousConfiguredFilterIds.current);
5137
+ const enabledFiltersV2 = usesFiltersV2 && !previouslyUsedFiltersV2.current;
5138
+ previousActiveFilterIds.current = activeFilterIds;
5139
+ previousConfiguredFilterIds.current = configuredFilterIds;
5140
+ previouslyUsedFiltersV2.current = usesFiltersV2;
5141
+ if (defaultShowFilters == null && filterPanel == null && (enabledFiltersV2 || !usesFiltersV2 && (becameActive || newlyConfigured))) internalSetShowFilters(true);
5142
+ }, [
5143
+ activeFilterIds,
5144
+ configuredFilterIds,
5145
+ defaultShowFilters,
5146
+ filterPanel,
5147
+ usesFiltersV2
5148
+ ]);
5149
+ const showFilters = controlledShowFilters != null ? controlledShowFilters : internalShowFilters;
5150
+ const setShowFilters = controlledSetShowFilters != null ? controlledSetShowFilters : internalSetShowFilters;
5151
+ const enhancedPropertiesButton = useMemo(() => {
5152
+ if (!columnConfigurationProps && !propertiesButton) return;
5153
+ const elements = [];
5154
+ if (propertiesButton) elements.push(propertiesButton);
5155
+ if (columnConfigurationProps) elements.push(/* @__PURE__ */ jsx(TableViewConfigurationDropdown, {
5156
+ disabled: false,
5157
+ ...columnConfigurationProps
5158
+ }, "column-config"));
5159
+ if (elements.length === 1) return elements[0];
5160
+ return /* @__PURE__ */ jsx(StyledEnhancedPropertiesButton, { children: elements });
5161
+ }, [columnConfigurationProps, propertiesButton]);
5162
+ return /* @__PURE__ */ jsx(Container, {
5163
+ className,
5164
+ children: /* @__PURE__ */ jsx(ControlBar, {
5165
+ showViews: compact ? false : showViews,
5166
+ views: compact ? void 0 : views,
5167
+ hiddenViewIds: compact ? void 0 : hiddenViewIds,
5168
+ onSelectView: compact ? void 0 : onSelectView,
5169
+ currentView: compact ? void 0 : currentView,
5170
+ onAddView: compact ? void 0 : onAddView,
5171
+ onDeleteView: compact ? void 0 : onDeleteView,
5172
+ onDuplicateView: compact ? void 0 : onDuplicateView,
5173
+ onViewNameChange: compact ? void 0 : onViewNameChange,
5174
+ onReorderViews: compact ? void 0 : onReorderViews,
5175
+ onViewHiddenChange: compact ? void 0 : onViewHiddenChange,
5176
+ onSaveView: compact ? void 0 : onSaveView,
5177
+ ...!compact && onSetDefaultView ? {
5178
+ onSetDefaultView,
5179
+ onUnsetDefaultView
5180
+ } : {
5181
+ onSetDefaultView: void 0,
5182
+ onUnsetDefaultView: void 0
5183
+ },
5184
+ isViewDirty,
5185
+ canEditViews: compact ? false : canEditViews,
5186
+ showFilters: showFilters && (showFiltersAlways || !isFilterPanelLoading),
5187
+ setShowFilters: (resolvedFilterPanel != null || isFilterPanelLoading) && !showFiltersAlways ? setShowFilters : void 0,
5188
+ filtersId,
5189
+ searchProps,
5190
+ propertiesButton: enhancedPropertiesButton,
5191
+ tableActions,
5192
+ isLoading,
5193
+ isFilterPanelLoading,
5194
+ selectedRows,
5195
+ bulkActions,
5196
+ onClearSelection,
5197
+ title,
5198
+ "data-tour-target": dataTourTarget,
5199
+ presetViews: compact ? void 0 : presetViews,
5200
+ compact,
5201
+ onError,
5202
+ filterPanel: resolvedFilterPanel
5203
+ })
5204
+ });
5205
+ };
5206
+ const Container = styled(Stack)`
5207
+ margin-bottom: ${Spacing[2]};
5208
+ `;
5209
+ const StyledEnhancedPropertiesButton = styled.div`
5210
+ display: flex;
5211
+ gap: ${Spacing[1]};
5212
+ `;
5213
+ //#endregion
5214
+ //#region components/DataTable/TableControls/FiltersV2/date-range-rule-value.ts
5215
+ /**
5216
+ * The absolute bounds a rule should be queried with, or `null` when it does not
5217
+ * carry a date range.
5218
+ *
5219
+ * Relative metadata wins over the stored snapshot: the snapshot is a picture of
5220
+ * the window when it was saved, and the point of a relative rule is that the
5221
+ * window moves. The operator gate is part of this rather than the caller's job —
5222
+ * metadata only ever describes a range, so resolving it onto a scalar rule
5223
+ * would put a `{ startDate, endDate }` object where the wire expects a day.
5224
+ */
5225
+ function resolveDateRangeRuleValue(rule, fieldType) {
5226
+ if (!carriesDateRange(rule.operator, fieldType)) return null;
5227
+ const relative = parseDateFilterValue(rule.relativeDate);
5228
+ if (relative?.kind === "relative") return resolveDateFilterValue(relative);
5229
+ const parsed = parseDateFilterValue(rule.value);
5230
+ return parsed ? resolveDateFilterValue(parsed) : null;
5231
+ }
5232
+ //#endregion
4729
5233
  //#region components/DataTable/TableControls/FiltersV2/FilterBar/index.ts
4730
5234
  var FilterBar_default = FilterBar;
4731
5235
  //#endregion
@@ -4998,6 +5502,6 @@ function decodeBase64(input) {
4998
5502
  return decodeURIComponent(escape(atob(input)));
4999
5503
  }
5000
5504
  //#endregion
5001
- export { dateRuleIntent as A, getOperatorsForField as C, isRangeOperator as D, isNumericComparisonOperator as E, TableViewConfigurationDropdown as F, TableControls as I, ControlBar as L, TableControlsProvider as M, useTableControls as N, isValuelessOperator as O, TableViewConfiguration as P, DataTableCompactBar as R, getDefaultOperatorForType as S, isCompleteDateRange as T, FILTER_SIZE_TOKENS as _, encodeFilterStateToUrlParam as a, NUMERIC_COMPARISON_OPERATORS as b, FilterBar_default as c, isFilterStateV2 as d, pruneToRegistry as f, resolveValueControl as g, PillShell as h, decodeFilterStateFromUrl as i, TableControlsContext as j, reconcileValueForOperator as k, useFilterStateV2 as l, isEmptyState as m, applyFilterStateToSearchParams as n, FieldRegistry as o, EMPTY_FILTER_STATE as p, decodeFilterStateFromString as r, buildFieldRegistry as s, FILTER_STATE_URL_PARAM as t, hasCompleteValue as u, useFilterBarSize as v, getOperatorsForType as w, emptyValueForRule as x, resolveDateRangeRuleValue as y };
5505
+ export { isNumericComparisonOperator as A, useTableControls as B, useFilterBarSize as C, getOperatorsForField as D, getDefaultOperatorForType as E, getActiveFilters as F, DataTableCompactBar as H, isFilterActive as I, resolveFilterTypeDefinition as L, isValuelessOperator as M, reconcileValueForOperator as N, getOperatorsForType as O, FiltersContainer as P, TableControlsContext as R, FILTER_SIZE_TOKENS as S, emptyValueForRule as T, ControlBar as V, EMPTY_FILTER_STATE as _, encodeFilterStateToUrlParam as a, resolveValueControl as b, FilterBar_default as c, TableViewConfiguration as d, TableViewConfigurationDropdown as f, pruneToRegistry as g, isFilterStateV2 as h, decodeFilterStateFromUrl as i, isRangeOperator as j, isCompleteDateRange as k, resolveDateRangeRuleValue as l, hasCompleteValue as m, applyFilterStateToSearchParams as n, FieldRegistry as o, useFilterStateV2 as p, decodeFilterStateFromString as r, buildFieldRegistry as s, FILTER_STATE_URL_PARAM as t, TableControls as u, isEmptyState as v, NUMERIC_COMPARISON_OPERATORS as w, dateRuleIntent as x, PillShell as y, TableControlsProvider as z };
5002
5506
 
5003
- //# sourceMappingURL=TableControls-C1MF2JvY.mjs.map
5507
+ //# sourceMappingURL=TableControls-n16XKO9S.mjs.map