@servicetitan/anvil2 2.8.0 → 2.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/{AiMark-Cwc9KoyE.js → AiMark-DR-w6Nbm.js} +4 -4
  3. package/dist/{AiMark-Cwc9KoyE.js.map → AiMark-DR-w6Nbm.js.map} +1 -1
  4. package/dist/AiMark.js +1 -1
  5. package/dist/{Alert-5qhkSUN3.js → Alert-Dj61Bq8h.js} +3 -3
  6. package/dist/{Alert-5qhkSUN3.js.map → Alert-Dj61Bq8h.js.map} +1 -1
  7. package/dist/Alert.js +1 -1
  8. package/dist/{Announcement-fQmFNysn.js → Announcement-B9zm-_1S.js} +2 -2
  9. package/dist/{Announcement-fQmFNysn.js.map → Announcement-B9zm-_1S.js.map} +1 -1
  10. package/dist/Announcement.js +1 -1
  11. package/dist/{AnvilProvider-ClfmLl_6.js → AnvilProvider-DUPYyMc7.js} +2 -2
  12. package/dist/{AnvilProvider-ClfmLl_6.js.map → AnvilProvider-DUPYyMc7.js.map} +1 -1
  13. package/dist/AnvilProvider.js +1 -1
  14. package/dist/{Breadcrumbs-BXo2FO2n.js → Breadcrumbs-ojgYVZwe.js} +2 -2
  15. package/dist/{Breadcrumbs-BXo2FO2n.js.map → Breadcrumbs-ojgYVZwe.js.map} +1 -1
  16. package/dist/Breadcrumbs.js +1 -1
  17. package/dist/Button-BdrrhBTI.js +2185 -0
  18. package/dist/Button-BdrrhBTI.js.map +1 -0
  19. package/dist/Button.js +1 -1
  20. package/dist/{ButtonToggle-CmY77gUp.js → ButtonToggle-DaFQ3DBG.js} +2 -2
  21. package/dist/{ButtonToggle-CmY77gUp.js.map → ButtonToggle-DaFQ3DBG.js.map} +1 -1
  22. package/dist/ButtonToggle.js +1 -1
  23. package/dist/{Calendar-d2owsYe9.js → Calendar-Cka4unyi.js} +2 -2
  24. package/dist/{Calendar-d2owsYe9.js.map → Calendar-Cka4unyi.js.map} +1 -1
  25. package/dist/{Calendar-Bd_WELZC.js → Calendar-Dxl9QnfP.js} +3 -3
  26. package/dist/{Calendar-Bd_WELZC.js.map → Calendar-Dxl9QnfP.js.map} +1 -1
  27. package/dist/Calendar.js +2 -2
  28. package/dist/{Checkbox-BlFc6ZWy.js → Checkbox-B-XTVPbX.js} +3 -3
  29. package/dist/{Checkbox-BlFc6ZWy.js.map → Checkbox-B-XTVPbX.js.map} +1 -1
  30. package/dist/{Checkbox-DbaZrUE2.js → Checkbox-Cw1-KFvq.js} +2 -2
  31. package/dist/{Checkbox-DbaZrUE2.js.map → Checkbox-Cw1-KFvq.js.map} +1 -1
  32. package/dist/Checkbox.js +1 -1
  33. package/dist/{Chip-BnofwIUN.js → Chip-Ce0WGKAc.js} +2 -2
  34. package/dist/{Chip-BnofwIUN.js.map → Chip-Ce0WGKAc.js.map} +1 -1
  35. package/dist/Chip.js +1 -1
  36. package/dist/{Combobox-BOxAzG9v.js → Combobox-CNQUROyr.js} +4 -4
  37. package/dist/{Combobox-BOxAzG9v.js.map → Combobox-CNQUROyr.js.map} +1 -1
  38. package/dist/Combobox.js +1 -1
  39. package/dist/{DataTable-DK9xRjnq.js → DataTable-BCV_mtSy.js} +475 -67
  40. package/dist/DataTable-BCV_mtSy.js.map +1 -0
  41. package/dist/DataTable.css +64 -29
  42. package/dist/{DateFieldRange-5Jrz6dLl.js → DateFieldRange-D2hnF50O.js} +4 -4
  43. package/dist/{DateFieldRange-5Jrz6dLl.js.map → DateFieldRange-D2hnF50O.js.map} +1 -1
  44. package/dist/DateFieldRange.js +1 -1
  45. package/dist/{DateFieldSingle-DWFr6Ew4.js → DateFieldSingle-BuaB7RDr.js} +4 -4
  46. package/dist/{DateFieldSingle-DWFr6Ew4.js.map → DateFieldSingle-BuaB7RDr.js.map} +1 -1
  47. package/dist/DateFieldSingle.js +1 -1
  48. package/dist/{DateFieldYearless-UU22A5-E.js → DateFieldYearless-DLeMEutt.js} +4 -4
  49. package/dist/{DateFieldYearless-UU22A5-E.js.map → DateFieldYearless-DLeMEutt.js.map} +1 -1
  50. package/dist/DateFieldYearless.js +1 -1
  51. package/dist/{DateFieldYearlessRange-BoPLxm6t.js → DateFieldYearlessRange-BfPuYKKC.js} +3 -3
  52. package/dist/{DateFieldYearlessRange-BoPLxm6t.js.map → DateFieldYearlessRange-BfPuYKKC.js.map} +1 -1
  53. package/dist/DateFieldYearlessRange.js +1 -1
  54. package/dist/{DaysOfTheWeek-4cfTmjzm.js → DaysOfTheWeek-BW1T8sTU.js} +3 -3
  55. package/dist/{DaysOfTheWeek-4cfTmjzm.js.map → DaysOfTheWeek-BW1T8sTU.js.map} +1 -1
  56. package/dist/DaysOfTheWeek.js +1 -1
  57. package/dist/{Dialog-Dn836WQM.js → Dialog-Cewu2pd_.js} +38 -10
  58. package/dist/Dialog-Cewu2pd_.js.map +1 -0
  59. package/dist/Dialog.js +1 -1
  60. package/dist/{DialogCancelButton-B-jfihJr.js → DialogCancelButton-Czz4Wpse.js} +2 -2
  61. package/dist/{DialogCancelButton-B-jfihJr.js.map → DialogCancelButton-Czz4Wpse.js.map} +1 -1
  62. package/dist/{Drawer-CdDWt_Ba.js → Drawer-Cb5asXWf.js} +38 -10
  63. package/dist/Drawer-Cb5asXWf.js.map +1 -0
  64. package/dist/Drawer.js +1 -1
  65. package/dist/DrillDown.js +1 -1
  66. package/dist/DrillDown.module-C8VOhzaF.js.map +1 -1
  67. package/dist/{EditCard-CZibhEfS.js → EditCard-DlJE3LXN.js} +3 -3
  68. package/dist/{EditCard-CZibhEfS.js.map → EditCard-DlJE3LXN.js.map} +1 -1
  69. package/dist/EditCard.js +1 -1
  70. package/dist/{FieldLabel-Dr41PRxH.js → FieldLabel-HO2VP-4B.js} +2 -2
  71. package/dist/{FieldLabel-Dr41PRxH.js.map → FieldLabel-HO2VP-4B.js.map} +1 -1
  72. package/dist/FieldLabel.js +1 -1
  73. package/dist/{InputMask-CcXqzqdx.js → InputMask-CLLTehFI.js} +3 -3
  74. package/dist/{InputMask-CcXqzqdx.js.map → InputMask-CLLTehFI.js.map} +1 -1
  75. package/dist/InputMask.js +1 -1
  76. package/dist/{ListView-D9cZUVer.js → ListView-CPi-qG2w.js} +2 -2
  77. package/dist/{ListView-D9cZUVer.js.map → ListView-CPi-qG2w.js.map} +1 -1
  78. package/dist/ListView.js +1 -1
  79. package/dist/{Listbox-CgDwzRfz.js → Listbox-Bp4hqIpH.js} +2 -2
  80. package/dist/{Listbox-CgDwzRfz.js.map → Listbox-Bp4hqIpH.js.map} +1 -1
  81. package/dist/Listbox.js +1 -1
  82. package/dist/{Menu-CPbuIsqC.js → Menu-CCavGohP.js} +91 -93
  83. package/dist/Menu-CCavGohP.js.map +1 -0
  84. package/dist/Menu.js +1 -1
  85. package/dist/MultiSelectField.js +1 -1
  86. package/dist/{MultiSelectFieldSync-Ei7DXzvs.js → MultiSelectFieldSync-ChZCW4M9.js} +7 -7
  87. package/dist/{MultiSelectFieldSync-Ei7DXzvs.js.map → MultiSelectFieldSync-ChZCW4M9.js.map} +1 -1
  88. package/dist/MultiSelectMenu.js +1 -1
  89. package/dist/{MultiSelectMenuSync-B_mXpTEe.js → MultiSelectMenuSync-7C1wW4oO.js} +3 -3
  90. package/dist/{MultiSelectMenuSync-B_mXpTEe.js.map → MultiSelectMenuSync-7C1wW4oO.js.map} +1 -1
  91. package/dist/{NumberField-C5t47Obp.js → NumberField-CZSTHBeO.js} +4 -4
  92. package/dist/{NumberField-C5t47Obp.js.map → NumberField-CZSTHBeO.js.map} +1 -1
  93. package/dist/NumberField.js +1 -1
  94. package/dist/{Page-2hbQxUj6.js → Page-BHdvTlfE.js} +111 -62
  95. package/dist/Page-BHdvTlfE.js.map +1 -0
  96. package/dist/Page.css +76 -76
  97. package/dist/Page.js +1 -1
  98. package/dist/{Pagination-CjGmJ_rU.js → Pagination-DecGSuW4.js} +5 -5
  99. package/dist/{Pagination-CjGmJ_rU.js.map → Pagination-DecGSuW4.js.map} +1 -1
  100. package/dist/Pagination.js +1 -1
  101. package/dist/{Popover-CpU9VAcb.js → Popover-BbqTZw-1.js} +3 -3
  102. package/dist/{Popover-CpU9VAcb.js.map → Popover-BbqTZw-1.js.map} +1 -1
  103. package/dist/Popover.js +1 -1
  104. package/dist/{ProgressBar-FMuK8viJ.js → ProgressBar-CZcxkdX6.js} +2 -2
  105. package/dist/{ProgressBar-FMuK8viJ.js.map → ProgressBar-CZcxkdX6.js.map} +1 -1
  106. package/dist/ProgressBar.js +1 -1
  107. package/dist/{Radio-DmtVWAmN.js → Radio-BFr8AdHc.js} +2 -2
  108. package/dist/{Radio-DmtVWAmN.js.map → Radio-BFr8AdHc.js.map} +1 -1
  109. package/dist/{Radio-CZZd8phn.js → Radio-DJZVMCv0.js} +3 -3
  110. package/dist/{Radio-CZZd8phn.js.map → Radio-DJZVMCv0.js.map} +1 -1
  111. package/dist/Radio.js +1 -1
  112. package/dist/{SelectCard-8OmIDl1m.js → SelectCard-DVcWJRbX.js} +3 -3
  113. package/dist/{SelectCard-8OmIDl1m.js.map → SelectCard-DVcWJRbX.js.map} +1 -1
  114. package/dist/SelectCard.js +1 -1
  115. package/dist/SelectField.js +1 -1
  116. package/dist/{SelectFieldLabel-C8PrXxDU.js → SelectFieldLabel-kEBS8L4l.js} +2 -2
  117. package/dist/{SelectFieldLabel-C8PrXxDU.js.map → SelectFieldLabel-kEBS8L4l.js.map} +1 -1
  118. package/dist/{SelectFieldSync-DGK8F2G9.js → SelectFieldSync-o1Cp9UYC.js} +6 -6
  119. package/dist/{SelectFieldSync-DGK8F2G9.js.map → SelectFieldSync-o1Cp9UYC.js.map} +1 -1
  120. package/dist/SelectMenu.js +1 -1
  121. package/dist/{SelectMenuSync-CuZp9mnt.js → SelectMenuSync-DXrwecFt.js} +3 -3
  122. package/dist/{SelectMenuSync-CuZp9mnt.js.map → SelectMenuSync-DXrwecFt.js.map} +1 -1
  123. package/dist/{SelectOptions-CmElsiTd.js → SelectOptions-Dy2OWqxn.js} +2 -2
  124. package/dist/{SelectOptions-CmElsiTd.js.map → SelectOptions-Dy2OWqxn.js.map} +1 -1
  125. package/dist/{SelectTrigger-KF8w6Ynk.js → SelectTrigger-DhKYzEAr.js} +2 -2
  126. package/dist/{SelectTrigger-KF8w6Ynk.js.map → SelectTrigger-DhKYzEAr.js.map} +1 -1
  127. package/dist/SelectTrigger.js +1 -1
  128. package/dist/{SelectTriggerBase-Bxmv6oXk.js → SelectTriggerBase-Ni8WqeUx.js} +76 -63
  129. package/dist/SelectTriggerBase-Ni8WqeUx.js.map +1 -0
  130. package/dist/SelectTriggerBase.css +83 -66
  131. package/dist/SelectTriggerBase.module-CKoq6qzX.js +38 -0
  132. package/dist/SelectTriggerBase.module-CKoq6qzX.js.map +1 -0
  133. package/dist/{Stepper-_27Lmm2K.js → Stepper-Dt2xAXth.js} +2 -2
  134. package/dist/{Stepper-_27Lmm2K.js.map → Stepper-Dt2xAXth.js.map} +1 -1
  135. package/dist/Stepper.js +1 -1
  136. package/dist/{Switch-DPGz7wC_.js → Switch-C84MBChG.js} +2 -2
  137. package/dist/{Switch-DPGz7wC_.js.map → Switch-C84MBChG.js.map} +1 -1
  138. package/dist/Switch.js +1 -1
  139. package/dist/Table.js +1 -1
  140. package/dist/{Text-MVxRo6yx.js → Text-WiS8UZkY.js} +2 -2
  141. package/dist/{Text-MVxRo6yx.js.map → Text-WiS8UZkY.js.map} +1 -1
  142. package/dist/Text.js +1 -1
  143. package/dist/{TextField-BpSxZa0z.js → TextField-Bul_uln5.js} +3 -3
  144. package/dist/{TextField-BpSxZa0z.js.map → TextField-Bul_uln5.js.map} +1 -1
  145. package/dist/{TextField-D93iv_pk.js → TextField-OznkTx4e.js} +2 -2
  146. package/dist/{TextField-D93iv_pk.js.map → TextField-OznkTx4e.js.map} +1 -1
  147. package/dist/TextField.js +1 -1
  148. package/dist/{Textarea-1u2fSMTh.js → Textarea-CCYLsJ1x.js} +3 -3
  149. package/dist/{Textarea-1u2fSMTh.js.map → Textarea-CCYLsJ1x.js.map} +1 -1
  150. package/dist/Textarea.js +1 -1
  151. package/dist/{TimeField-B4gLlBQJ.js → TimeField-BPvPbD8H.js} +4 -4
  152. package/dist/{TimeField-B4gLlBQJ.js.map → TimeField-BPvPbD8H.js.map} +1 -1
  153. package/dist/TimeField.js +1 -1
  154. package/dist/Toast.js +2 -2
  155. package/dist/{Toaster-DbWYnF_t.js → Toaster-CIaIvwH6.js} +2 -2
  156. package/dist/{Toaster-DbWYnF_t.js.map → Toaster-CIaIvwH6.js.map} +1 -1
  157. package/dist/{Toaster-CSJfSOHx.js → Toaster-DYJm06Vb.js} +4 -4
  158. package/dist/{Toaster-CSJfSOHx.js.map → Toaster-DYJm06Vb.js.map} +1 -1
  159. package/dist/{Toolbar-CWRk523l.js → Toolbar-ByyI7SqG.js} +14 -14
  160. package/dist/{Toolbar-CWRk523l.js.map → Toolbar-ByyI7SqG.js.map} +1 -1
  161. package/dist/Toolbar.js +1 -1
  162. package/dist/{YearlessDateInputWithPicker-BSl5z2zo.js → YearlessDateInputWithPicker-C_twiQW5.js} +2 -2
  163. package/dist/{YearlessDateInputWithPicker-BSl5z2zo.js.map → YearlessDateInputWithPicker-C_twiQW5.js.map} +1 -1
  164. package/dist/beta/components/Table/DataTable/DataTable.d.ts +6 -3
  165. package/dist/beta/components/Table/DataTable/internal/DataTableFooter.d.ts +5 -5
  166. package/dist/beta/components/Table/DataTable/internal/cells/DataTableHeaderCell.d.ts +4 -4
  167. package/dist/beta/components/Table/DataTable/internal/util/getTanStackColumnDef.d.ts +13 -2
  168. package/dist/beta/components/Table/base/cells/TableHeaderCell.d.ts +4 -0
  169. package/dist/beta/components/Table/createColumnHelper.d.ts +17 -10
  170. package/dist/beta/components/Table/formatters/htmlFormatter.d.ts +13 -0
  171. package/dist/beta/components/Table/formatters/htmlToMarkdown.d.ts +11 -0
  172. package/dist/beta/components/Table/formatters/index.d.ts +2 -0
  173. package/dist/beta/components/Table/formatters/markdownFormatter.d.ts +11 -0
  174. package/dist/beta/components/Table/types.d.ts +41 -8
  175. package/dist/beta.js +9 -9
  176. package/dist/components/DrillDown/internal/DrillDownContext.d.ts +4 -0
  177. package/dist/components/DrillDown/internal/useDrillDownContextState.d.ts +4 -0
  178. package/dist/index.js +43 -44
  179. package/dist/index.js.map +1 -1
  180. package/dist/internal/flubber/a2c.d.ts +16 -0
  181. package/dist/internal/flubber/add.d.ts +3 -0
  182. package/dist/internal/flubber/arc.d.ts +26 -0
  183. package/dist/internal/flubber/bezier.d.ts +32 -0
  184. package/dist/internal/flubber/errors.d.ts +5 -0
  185. package/dist/internal/flubber/index.d.ts +6 -0
  186. package/dist/internal/flubber/interpolate.d.ts +7 -0
  187. package/dist/internal/flubber/linear.d.ts +27 -0
  188. package/dist/internal/flubber/math.d.ts +10 -0
  189. package/dist/internal/flubber/normalize.d.ts +4 -0
  190. package/dist/internal/flubber/parse.d.ts +7 -0
  191. package/dist/internal/flubber/path-properties.d.ts +23 -0
  192. package/dist/internal/flubber/rotate.d.ts +2 -0
  193. package/dist/internal/flubber/svg.d.ts +9 -0
  194. package/dist/internal/index.d.ts +1 -0
  195. package/dist/{stripInlineMarkdown-DyqLAQnf.js → stripInlineMarkdown-Cg1qlNwL.js} +2 -2
  196. package/dist/{stripInlineMarkdown-DyqLAQnf.js.map → stripInlineMarkdown-Cg1qlNwL.js.map} +1 -1
  197. package/dist/{syncFilterUtils-CsbCnI1-.js → syncFilterUtils-UR5Vgqkh.js} +7 -8
  198. package/dist/{syncFilterUtils-CsbCnI1-.js.map → syncFilterUtils-UR5Vgqkh.js.map} +1 -1
  199. package/dist/{useDrilldown-C7eMBl68.js → useDrilldown-D6VZNSCX.js} +46 -20
  200. package/dist/{useDrilldown-C7eMBl68.js.map → useDrilldown-D6VZNSCX.js.map} +1 -1
  201. package/dist/{useInitialFocus-DbaB-x5T.js → useInitialFocus-BUxEDMEG.js} +65 -23
  202. package/dist/useInitialFocus-BUxEDMEG.js.map +1 -0
  203. package/dist/{usePopoverTransitionStates-B1opfxxn.js → usePopoverTransitionStates-CDXCdyKa.js} +2 -1
  204. package/dist/{usePopoverTransitionStates-B1opfxxn.js.map → usePopoverTransitionStates-CDXCdyKa.js.map} +1 -1
  205. package/dist/{useToggleSelection-BM8asdFj.js → useToggleSelection-BBdrIVWs.js} +2 -2
  206. package/dist/{useToggleSelection-BM8asdFj.js.map → useToggleSelection-BBdrIVWs.js.map} +1 -1
  207. package/package.json +3 -5
  208. package/dist/Button-a_D7tUgM.js +0 -4517
  209. package/dist/Button-a_D7tUgM.js.map +0 -1
  210. package/dist/DataTable-DK9xRjnq.js.map +0 -1
  211. package/dist/Dialog-Dn836WQM.js.map +0 -1
  212. package/dist/Drawer-CdDWt_Ba.js.map +0 -1
  213. package/dist/Menu-CPbuIsqC.js.map +0 -1
  214. package/dist/Page-2hbQxUj6.js.map +0 -1
  215. package/dist/SelectTriggerBase-Bxmv6oXk.js.map +0 -1
  216. package/dist/SelectTriggerBase.module-B0NFRlQP.js +0 -36
  217. package/dist/SelectTriggerBase.module-B0NFRlQP.js.map +0 -1
  218. package/dist/useInitialFocus-DbaB-x5T.js.map +0 -1
  219. /package/dist/{anvil-fonts.css → AnvilProvider.css} +0 -0
@@ -1,56 +1,57 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
- import { C as Chip } from './Chip-BnofwIUN.js';
2
+ import { C as Chip } from './Chip-Ce0WGKAc.js';
3
3
  import { F as Flex } from './Flex-WyyZm1bf.js';
4
4
  import * as React from 'react';
5
- import { useRef, useState, useLayoutEffect, createContext, useContext, useCallback, forwardRef, useMemo, useImperativeHandle, useEffect, useId, Fragment as Fragment$1, useReducer } from 'react';
5
+ import { useRef, useState, useLayoutEffect, createContext, useContext, useCallback, forwardRef, useMemo, useImperativeHandle, useEffect, useId, Fragment as Fragment$1, isValidElement, useReducer } from 'react';
6
6
  import { c as cx } from './index-De1g9FRV.js';
7
7
  import { D as DateTime } from './luxon-wpz4A-OQ.js';
8
- import { C as Checkbox } from './Checkbox-DbaZrUE2.js';
9
- import { B as Button } from './Button-a_D7tUgM.js';
8
+ import { C as Checkbox } from './Checkbox-Cw1-KFvq.js';
9
+ import { B as Button } from './Button-BdrrhBTI.js';
10
10
  import { S as SvgChevronRight } from './chevron_right-BdpsxX7x.js';
11
11
  import { S as SvgEdit } from './edit-DQOiktcu.js';
12
12
  import { I as Icon } from './Icon-DuIlne4x.js';
13
13
  import { S as SrOnly } from './SrOnly-eUpYGpAT.js';
14
14
  import { u as useNumberField } from './useNumberField-eMyk7MB8.js';
15
15
  import { u as useMergeRefs, m as mergeRefs } from './useMergeRefs-Dfmtq9cI.js';
16
- import { a as SelectMenuSync, S as SelectMenu } from './SelectMenuSync-CuZp9mnt.js';
17
- import { a as MultiSelectMenuSync, M as MultiSelectMenu } from './MultiSelectMenuSync-B_mXpTEe.js';
16
+ import { a as SelectMenuSync, S as SelectMenu } from './SelectMenuSync-DXrwecFt.js';
17
+ import { a as MultiSelectMenuSync, M as MultiSelectMenu } from './MultiSelectMenuSync-7C1wW4oO.js';
18
+ import { F as FieldLabel } from './FieldLabel-HO2VP-4B.js';
18
19
  import { S as SvgError } from './error-DR_wWdYY.js';
19
20
  import { S as SvgWarning } from './warning-c4Wj1rI4.js';
20
21
  import { T as Tooltip } from './Tooltip-C1PBRnJv.js';
21
22
  import { flushSync } from 'react-dom';
22
23
  import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DMDdfIah.js';
23
- import './anvil-fonts.css';import './DataTable.css';/* empty css */
24
- import { P as Pagination } from './Pagination-CjGmJ_rU.js';
24
+ import { P as Pagination } from './Pagination-DecGSuW4.js';
25
25
  import { T as ThemeProviderContext } from './ThemeProviderContext-l52GohYT.js';
26
26
  import { S as Spinner } from './Spinner-BqmcE2pb.js';
27
27
  import { u as useOptionallyControlledState } from './useOptionallyControlledState-DbDuos5L.js';
28
28
  import { u as usePrefersColorScheme } from './usePrefersColorScheme-_hT7dK7_.js';
29
29
 
30
- const booleanFormatter = (value, { trueLabel = "True", falseLabel = "False" } = {}) => {
30
+ import './DataTable.css';const booleanFormatter = (value, { trueLabel = "True", falseLabel = "False" } = {}) => {
31
31
  if (value == null) {
32
32
  return null;
33
33
  }
34
34
  return value ? trueLabel : falseLabel;
35
35
  };
36
36
 
37
- const styles$e = {
38
- "table-header-cell": "_table-header-cell_1ffr7_2",
39
- "table-body-cell": "_table-body-cell_1ffr7_3",
40
- "table-footer-cell": "_table-footer-cell_1ffr7_4",
41
- "last-pinned-left-column": "_last-pinned-left-column_1ffr7_33",
42
- "first-pinned-right-column": "_first-pinned-right-column_1ffr7_33",
43
- "empty-cell": "_empty-cell_1ffr7_54",
44
- "table-cell-internal-select": "_table-cell-internal-select_1ffr7_71",
45
- "table-cell-internal-expand": "_table-cell-internal-expand_1ffr7_72",
46
- "table-header-cell-group": "_table-header-cell-group_1ffr7_91",
47
- "table-header-cell-sortable": "_table-header-cell-sortable_1ffr7_100"};
37
+ const styles$f = {
38
+ "table-header-cell": "_table-header-cell_nfkc_2",
39
+ "table-body-cell": "_table-body-cell_nfkc_3",
40
+ "table-footer-cell": "_table-footer-cell_nfkc_4",
41
+ "last-pinned-left-column": "_last-pinned-left-column_nfkc_33",
42
+ "first-pinned-right-column": "_first-pinned-right-column_nfkc_33",
43
+ "empty-cell": "_empty-cell_nfkc_54",
44
+ "table-cell-internal-select": "_table-cell-internal-select_nfkc_71",
45
+ "table-cell-internal-expand": "_table-cell-internal-expand_nfkc_72",
46
+ "table-header-cell-group": "_table-header-cell-group_nfkc_91",
47
+ "table-header-cell-sortable": "_table-header-cell-sortable_nfkc_100",
48
+ "table-header-cell-interactive": "_table-header-cell-interactive_nfkc_101"};
48
49
 
49
50
  const TableEmptyCellContent = () => {
50
- return /* @__PURE__ */ jsx("span", { "aria-label": "empty table cell", className: styles$e["empty-cell"], children: "—" });
51
+ return /* @__PURE__ */ jsx("span", { "aria-label": "empty table cell", className: styles$f["empty-cell"], children: "—" });
51
52
  };
52
53
 
53
- const styles$d = {
54
+ const styles$e = {
54
55
  "truncate-chips": "_truncate-chips_1lgyk_2"
55
56
  };
56
57
 
@@ -136,7 +137,7 @@ const TruncateChips = ({
136
137
  "div",
137
138
  {
138
139
  ref: containerRef,
139
- className: cx(styles$d["truncate-chips"], className),
140
+ className: cx(styles$e["truncate-chips"], className),
140
141
  style: {
141
142
  marginInlineEnd: plusChipWidth
142
143
  },
@@ -250,6 +251,238 @@ const dateTimeFormatter = (value, {
250
251
  return localizedDateTime.toLocaleString(formatOptions);
251
252
  };
252
253
 
254
+ const SUPPORTED_INLINE_TAGS = ["strong", "b", "em", "i", "code", "mark"];
255
+ const INLINE_TAG_REGEX = new RegExp(
256
+ `<(${SUPPORTED_INLINE_TAGS.join("|")})(\\s[^>]*)?>([\\s\\S]*?)</\\1>`,
257
+ "gi"
258
+ );
259
+ const INLINE_WRAPPERS = {
260
+ strong: ["**", "**"],
261
+ b: ["**", "**"],
262
+ em: ["*", "*"],
263
+ i: ["*", "*"],
264
+ code: ["`", "`"],
265
+ mark: ["==", "=="]
266
+ };
267
+ function convertInlineTags(html) {
268
+ let result = html;
269
+ let previous = "";
270
+ while (result !== previous) {
271
+ previous = result;
272
+ result = result.replace(INLINE_TAG_REGEX, (_, tag, _attrs, content) => {
273
+ const normalizedTag = tag.toLowerCase();
274
+ const wrapper = INLINE_WRAPPERS[normalizedTag];
275
+ if (!wrapper) return content;
276
+ return wrapper[0] + convertInlineTags(content) + wrapper[1];
277
+ });
278
+ }
279
+ return result;
280
+ }
281
+ const BR_REGEX = /<br\s*\/?>/gi;
282
+ const P_OPEN_REGEX = /<p(\s[^>]*)?>/gi;
283
+ const P_CLOSE_REGEX = /<\/p>/gi;
284
+ const NAMED_ENTITIES = {
285
+ amp: "&",
286
+ lt: "<",
287
+ gt: ">",
288
+ nbsp: " ",
289
+ quot: '"',
290
+ "#39": "'"
291
+ };
292
+ const ENTITY_REGEX = /&(#x[0-9a-fA-F]+|#\d+|[a-zA-Z]+);/g;
293
+ function decodeEntities(text) {
294
+ return text.replace(ENTITY_REGEX, (match, entity) => {
295
+ if (entity.startsWith("#x")) {
296
+ return String.fromCharCode(parseInt(entity.slice(2), 16));
297
+ }
298
+ if (entity.startsWith("#")) {
299
+ return String.fromCharCode(parseInt(entity.slice(1), 10));
300
+ }
301
+ return NAMED_ENTITIES[entity] ?? match;
302
+ });
303
+ }
304
+ const SUPPORTED_TAGS = [
305
+ "strong",
306
+ "b",
307
+ "em",
308
+ "i",
309
+ "code",
310
+ "mark",
311
+ "ul",
312
+ "ol",
313
+ "li",
314
+ "br",
315
+ "p"
316
+ ];
317
+ const UNSUPPORTED_TAG_REGEX = new RegExp(
318
+ `<(?!/?(?:${SUPPORTED_TAGS.join("|")})\\b)[a-zA-Z][^>]*>[\\s\\S]*?</[a-zA-Z][^>]*>`,
319
+ "gi"
320
+ );
321
+ const ORPHANED_CLOSE_TAG_REGEX = new RegExp(
322
+ `</(?!(?:${SUPPORTED_TAGS.join("|")})\\b)[a-zA-Z][^>]*>`,
323
+ "gi"
324
+ );
325
+ function removeUnsupportedTags(html) {
326
+ let result = html;
327
+ let previous = "";
328
+ while (result !== previous) {
329
+ previous = result;
330
+ result = result.replace(UNSUPPORTED_TAG_REGEX, "");
331
+ }
332
+ result = result.replace(ORPHANED_CLOSE_TAG_REGEX, "");
333
+ return result;
334
+ }
335
+ const UL_REGEX = /<ul(\s[^>]*)?>[\s\S]*?<\/ul>/gi;
336
+ const OL_REGEX = /<ol(\s[^>]*)?>[\s\S]*?<\/ol>/gi;
337
+ const LI_REGEX = /<li(\s[^>]*)?>[\s\S]*?<\/li>/gi;
338
+ const LI_CONTENT_REGEX = /^<li(\s[^>]*)?>|<\/li>$/gi;
339
+ function convertList(listHtml, ordered) {
340
+ const items = listHtml.match(LI_REGEX);
341
+ if (!items) return "";
342
+ return items.map((item, index) => {
343
+ const content = convertInlineTags(
344
+ item.replace(LI_CONTENT_REGEX, "").trim()
345
+ );
346
+ return ordered ? `${index + 1}. ${content}` : `- ${content}`;
347
+ }).join("\n");
348
+ }
349
+ function convertLists(html) {
350
+ let result = html;
351
+ result = result.replace(UL_REGEX, (match) => convertList(match, false));
352
+ result = result.replace(OL_REGEX, (match) => convertList(match, true));
353
+ return result;
354
+ }
355
+ function htmlToMarkdown(value) {
356
+ if (value == null || value === "") {
357
+ return "";
358
+ }
359
+ let result = value;
360
+ result = removeUnsupportedTags(result);
361
+ result = result.replace(P_OPEN_REGEX, "");
362
+ result = result.replace(P_CLOSE_REGEX, "\n");
363
+ result = convertLists(result);
364
+ result = result.replace(BR_REGEX, "\n");
365
+ result = convertInlineTags(result);
366
+ result = decodeEntities(result);
367
+ result = result.replace(/\n+$/, "");
368
+ return result;
369
+ }
370
+
371
+ const code = "_code_1u8e7_1";
372
+ const highlight = "_highlight_1u8e7_2";
373
+ const list = "_list_1u8e7_3";
374
+ const container = "_container_1u8e7_4";
375
+ const styles$d = {
376
+ code: code,
377
+ highlight: highlight,
378
+ list: list,
379
+ container: container
380
+ };
381
+
382
+ const INLINE_REGEX = /\*\*\*(.+?)\*\*\*|\*\*(.+?)\*\*|\*(.+?)\*|==(.+?)==|`(.+?)`/g;
383
+ const UNORDERED_LIST_REGEX = /^- (.+)$/;
384
+ const ORDERED_LIST_REGEX = /^\d+\. (.+)$/;
385
+ function parseInline(text) {
386
+ const parts = [];
387
+ let lastIndex = 0;
388
+ INLINE_REGEX.lastIndex = 0;
389
+ let match;
390
+ while ((match = INLINE_REGEX.exec(text)) !== null) {
391
+ if (match.index > lastIndex) {
392
+ parts.push(text.substring(lastIndex, match.index));
393
+ }
394
+ const key = match.index;
395
+ const savedIndex = INLINE_REGEX.lastIndex;
396
+ if (match[1]) {
397
+ parts.push(
398
+ /* @__PURE__ */ jsx("strong", { children: /* @__PURE__ */ jsx("em", { children: parseInline(match[1]) }) }, key)
399
+ );
400
+ } else if (match[2]) {
401
+ parts.push(/* @__PURE__ */ jsx("strong", { children: parseInline(match[2]) }, key));
402
+ } else if (match[3]) {
403
+ parts.push(/* @__PURE__ */ jsx("em", { children: parseInline(match[3]) }, key));
404
+ } else if (match[4]) {
405
+ parts.push(
406
+ /* @__PURE__ */ jsx("mark", { className: styles$d.highlight, children: parseInline(match[4]) }, key)
407
+ );
408
+ } else if (match[5]) {
409
+ parts.push(
410
+ /* @__PURE__ */ jsx("code", { className: styles$d.code, children: match[5] }, key)
411
+ );
412
+ }
413
+ INLINE_REGEX.lastIndex = savedIndex;
414
+ lastIndex = savedIndex;
415
+ }
416
+ if (lastIndex < text.length) {
417
+ parts.push(text.substring(lastIndex));
418
+ }
419
+ return parts;
420
+ }
421
+ function parseBlocks(text) {
422
+ const lines = text.split("\n");
423
+ const blocks = [];
424
+ let i = 0;
425
+ while (i < lines.length) {
426
+ const line = lines[i];
427
+ const ulMatch = line.match(UNORDERED_LIST_REGEX);
428
+ const olMatch = line.match(ORDERED_LIST_REGEX);
429
+ if (ulMatch) {
430
+ const items = [ulMatch[1]];
431
+ i++;
432
+ while (i < lines.length) {
433
+ const nextUl = lines[i].match(UNORDERED_LIST_REGEX);
434
+ if (!nextUl) break;
435
+ items.push(nextUl[1]);
436
+ i++;
437
+ }
438
+ blocks.push({ type: "ul", items });
439
+ } else if (olMatch) {
440
+ const items = [olMatch[1]];
441
+ i++;
442
+ while (i < lines.length) {
443
+ const nextOl = lines[i].match(ORDERED_LIST_REGEX);
444
+ if (!nextOl) break;
445
+ items.push(nextOl[1]);
446
+ i++;
447
+ }
448
+ blocks.push({ type: "ol", items });
449
+ } else {
450
+ if (line !== "") {
451
+ blocks.push({ type: "text", content: line });
452
+ }
453
+ i++;
454
+ }
455
+ }
456
+ return blocks;
457
+ }
458
+ function renderBlocks(blocks) {
459
+ return blocks.map((block, index) => {
460
+ switch (block.type) {
461
+ case "text":
462
+ return /* @__PURE__ */ jsx("span", { children: parseInline(block.content) }, index);
463
+ case "ul":
464
+ return /* @__PURE__ */ jsx("ul", { className: styles$d.list, children: block.items.map((item, i) => /* @__PURE__ */ jsx("li", { children: parseInline(item) }, i)) }, index);
465
+ case "ol":
466
+ return /* @__PURE__ */ jsx("ol", { className: styles$d.list, children: block.items.map((item, i) => /* @__PURE__ */ jsx("li", { children: parseInline(item) }, i)) }, index);
467
+ }
468
+ });
469
+ }
470
+ const markdownFormatter = (value) => {
471
+ if (value == null || value === "") {
472
+ return null;
473
+ }
474
+ const blocks = parseBlocks(value);
475
+ if (blocks.length === 1 && blocks[0].type === "text") {
476
+ return /* @__PURE__ */ jsx(Fragment, { children: parseInline(blocks[0].content) });
477
+ }
478
+ return /* @__PURE__ */ jsx("div", { className: styles$d.container, children: renderBlocks(blocks) });
479
+ };
480
+
481
+ const htmlFormatter = (value) => {
482
+ const markdown = htmlToMarkdown(value);
483
+ return markdownFormatter(markdown);
484
+ };
485
+
253
486
  const numberFormatter = (value, options = {}) => {
254
487
  const {
255
488
  locale = "en-US",
@@ -391,6 +624,14 @@ const COLUMN_TYPE_DEFAULTS = {
391
624
  value,
392
625
  options
393
626
  )
627
+ },
628
+ markdown: {
629
+ align: "start",
630
+ createRenderCell: () => (value) => markdownFormatter(value)
631
+ },
632
+ html: {
633
+ align: "start",
634
+ createRenderCell: () => (value) => htmlFormatter(value)
394
635
  }
395
636
  };
396
637
  function resolveColumnTypeConfig(config) {
@@ -3913,10 +4154,10 @@ const getCommonPinningClasses = (column) => {
3913
4154
  const isLastLeftPinnedColumn = isPinned === "left" && column.getIsLastColumn("left");
3914
4155
  const isFirstRightPinnedColumn = isPinned === "right" && column.getIsFirstColumn("right");
3915
4156
  if (isLastLeftPinnedColumn) {
3916
- return styles$e["last-pinned-left-column"];
4157
+ return styles$f["last-pinned-left-column"];
3917
4158
  }
3918
4159
  if (isFirstRightPinnedColumn) {
3919
- return styles$e["first-pinned-right-column"];
4160
+ return styles$f["first-pinned-right-column"];
3920
4161
  }
3921
4162
  };
3922
4163
 
@@ -3939,9 +4180,9 @@ const DataTableEditableCellEditIcon = () => {
3939
4180
  };
3940
4181
 
3941
4182
  const TableBodyCell = forwardRef(({ type, children, className, isExpandCell, isSelectCell, ...rest }, ref) => {
3942
- const classes = cx(styles$e["table-body-cell"], className, {
3943
- [styles$e["table-cell-internal-expand"]]: isExpandCell,
3944
- [styles$e["table-cell-internal-select"]]: isSelectCell
4183
+ const classes = cx(styles$f["table-body-cell"], className, {
4184
+ [styles$f["table-cell-internal-expand"]]: isExpandCell,
4185
+ [styles$f["table-cell-internal-select"]]: isSelectCell
3945
4186
  });
3946
4187
  const CellElement = type === "simple" ? "td" : "div";
3947
4188
  return /* @__PURE__ */ jsx(
@@ -4066,8 +4307,8 @@ function DataTableBodyImmutableCell(props) {
4066
4307
  [styles$9["data-table-body-cell-hovered"]]: isHovered,
4067
4308
  [styles$9["data-table-body-cell-error"]]: !!cellError,
4068
4309
  [styles$9["data-table-body-cell-warning"]]: !cellError && !!cellWarning,
4069
- [styles$e["table-cell-internal-expand"]]: isExpandCell,
4070
- [styles$e["table-cell-internal-select"]]: isSelectCell
4310
+ [styles$f["table-cell-internal-expand"]]: isExpandCell,
4311
+ [styles$f["table-cell-internal-select"]]: isSelectCell
4071
4312
  });
4072
4313
  const commonPinningStyles = useCommonPinningStyles(column);
4073
4314
  const { jumpFocus, moveFocus } = useDTFocusDispatchContext();
@@ -5570,7 +5811,7 @@ function TableFooter({ type, children, ...rest }) {
5570
5811
 
5571
5812
  const TableFooterCell = forwardRef((props, ref) => {
5572
5813
  const { type, children, className, ...rest } = props;
5573
- const classes = cx(styles$e["table-footer-cell"], className);
5814
+ const classes = cx(styles$f["table-footer-cell"], className);
5574
5815
  const CellElement = type === "simple" ? "td" : "div";
5575
5816
  return /* @__PURE__ */ jsx(
5576
5817
  CellElement,
@@ -5837,22 +6078,116 @@ function CellStatus({ status, variant }) {
5837
6078
  ] });
5838
6079
  }
5839
6080
 
6081
+ function resolveHeaderAlign(align, isGroup = false) {
6082
+ if (isGroup) {
6083
+ return "start";
6084
+ }
6085
+ return align ?? "start";
6086
+ }
6087
+ function getHeaderJustifyContent(align) {
6088
+ if (align === "center") {
6089
+ return "center";
6090
+ }
6091
+ if (align === "end") {
6092
+ return "flex-end";
6093
+ }
6094
+ return "flex-start";
6095
+ }
6096
+ function normalizeColumnHeader(columnDef) {
6097
+ return {
6098
+ label: columnDef.header?.label ?? columnDef.headerLabel ?? String(columnDef.id),
6099
+ required: columnDef.header?.required,
6100
+ moreInfo: columnDef.header?.moreInfo
6101
+ };
6102
+ }
6103
+ function renderColumnHeader(header, {
6104
+ align,
6105
+ isGroup = false
6106
+ }) {
6107
+ const resolvedAlign = resolveHeaderAlign(align, isGroup);
6108
+ return /* @__PURE__ */ jsx(
6109
+ "div",
6110
+ {
6111
+ "data-a2-datatable-header-wrapper": "true",
6112
+ "data-a2-datatable-header-align": resolvedAlign,
6113
+ "data-a2-datatable-header-kind": isGroup ? "group" : "leaf",
6114
+ style: {
6115
+ justifyContent: getHeaderJustifyContent(resolvedAlign),
6116
+ maxWidth: "100%",
6117
+ width: "fit-content"
6118
+ },
6119
+ children: /* @__PURE__ */ jsx(
6120
+ "div",
6121
+ {
6122
+ "data-a2-datatable-header-content": "true",
6123
+ style: { maxWidth: "100%", width: "fit-content" },
6124
+ children: /* @__PURE__ */ jsx(
6125
+ FieldLabel,
6126
+ {
6127
+ el: "div",
6128
+ required: header.required,
6129
+ moreInfo: header.moreInfo,
6130
+ style: {
6131
+ maxWidth: "100%",
6132
+ textAlign: resolvedAlign,
6133
+ width: "fit-content"
6134
+ },
6135
+ children: header.label
6136
+ }
6137
+ )
6138
+ }
6139
+ )
6140
+ }
6141
+ );
6142
+ }
6143
+ function renderRawCellValue(value) {
6144
+ if (value === null || value === void 0) {
6145
+ return null;
6146
+ }
6147
+ if (value === "") {
6148
+ return "";
6149
+ }
6150
+ if (typeof value === "string" || typeof value === "number" || typeof value === "bigint") {
6151
+ return value;
6152
+ }
6153
+ if (typeof value === "boolean") {
6154
+ return String(value);
6155
+ }
6156
+ if (typeof value === "symbol") {
6157
+ return value.toString();
6158
+ }
6159
+ if (typeof value === "object" && isValidElement(value)) {
6160
+ return value;
6161
+ }
6162
+ if (Array.isArray(value)) {
6163
+ return value.map((item, index) => /* @__PURE__ */ jsx(Fragment$1, { children: renderRawCellValue(item) }, index));
6164
+ }
6165
+ return String(value);
6166
+ }
5840
6167
  function getTanStackColumnDef({
5841
6168
  columnDef,
5842
6169
  emptyCellContent
5843
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
5844
6170
  }) {
5845
6171
  const columnHelper = createColumnHelper();
6172
+ const normalizedHeader = normalizeColumnHeader(columnDef);
5846
6173
  if (columnDef.columns && columnDef.columns.length > 0) {
5847
6174
  return columnHelper.group({
5848
6175
  id: columnDef.id,
5849
- header: columnDef.headerLabel,
6176
+ header: () => renderColumnHeader(normalizedHeader, {
6177
+ align: columnDef.align,
6178
+ isGroup: true
6179
+ }),
5850
6180
  columns: columnDef.columns.map(
5851
6181
  (column) => getTanStackColumnDef({
5852
6182
  columnDef: column,
5853
6183
  emptyCellContent
5854
6184
  })
5855
6185
  ),
6186
+ meta: {
6187
+ columnDef,
6188
+ headerAlign: resolveHeaderAlign(columnDef.align, true),
6189
+ isGroupHeader: true
6190
+ },
5856
6191
  footer: columnDef.footerContent ? () => columnDef.footerContent : void 0,
5857
6192
  enableResizing: columnDef.resizable
5858
6193
  });
@@ -5874,17 +6209,22 @@ function getTanStackColumnDef({
5874
6209
  }
5875
6210
  }
5876
6211
  const resolvedEmptyContent = columnDef.emptyCellContent ?? emptyCellContent ?? /* @__PURE__ */ jsx(TableEmptyCellContent, {});
6212
+ const metaColumnDef = {
6213
+ ...columnDef,
6214
+ headerLabel: normalizedHeader.label
6215
+ };
5877
6216
  return columnHelper.accessor((row) => row[columnDef.id], {
5878
6217
  id: columnDef.id,
5879
6218
  cell: (info) => {
6219
+ const rawCellValue = info.row.original[columnDef.id];
5880
6220
  let cellContent;
5881
6221
  if (resolvedRenderCell) {
5882
- cellContent = resolvedRenderCell(info.getValue(), {
6222
+ cellContent = resolvedRenderCell(rawCellValue, {
5883
6223
  row: info.row.original,
5884
6224
  depth: info.row.depth
5885
6225
  });
5886
6226
  } else {
5887
- cellContent = info.getValue();
6227
+ cellContent = renderRawCellValue(rawCellValue);
5888
6228
  }
5889
6229
  if (cellContent === "") {
5890
6230
  cellContent = resolvedEmptyContent;
@@ -5910,7 +6250,9 @@ function getTanStackColumnDef({
5910
6250
  }
5911
6251
  );
5912
6252
  },
5913
- header: () => /* @__PURE__ */ jsx(Flex, { justifyContent: resolvedAlign, wrap: "wrap", grow: 1, children: columnDef.headerLabel }),
6253
+ header: () => renderColumnHeader(normalizedHeader, {
6254
+ align: resolvedAlign
6255
+ }),
5914
6256
  footer: columnDef.footerContent ? () => columnDef.footerContent : void 0,
5915
6257
  minSize: columnDef.minWidth,
5916
6258
  maxSize: columnDef.maxWidth,
@@ -5919,8 +6261,10 @@ function getTanStackColumnDef({
5919
6261
  meta: {
5920
6262
  editMode: columnDef.editConfig?.mode,
5921
6263
  editConfig: columnDef.editConfig,
5922
- columnDef
6264
+ columnDef: metaColumnDef,
5923
6265
  // Store original for type narrowing
6266
+ headerAlign: resolveHeaderAlign(resolvedAlign),
6267
+ isGroupHeader: false
5924
6268
  },
5925
6269
  // If custom sorting function is provided, use it
5926
6270
  ...columnDef.sortable && typeof columnDef.sortable === "function" ? {
@@ -5966,15 +6310,17 @@ const TableHeaderCell = forwardRef(
5966
6310
  className,
5967
6311
  isGroup,
5968
6312
  isSortable,
6313
+ isInteractiveHeaderCell,
5969
6314
  isSelectCell,
5970
6315
  isExpandCell,
5971
6316
  ...rest
5972
6317
  }, ref) => {
5973
- const classes = cx(styles$e["table-header-cell"], className, {
5974
- [styles$e["table-header-cell-group"]]: isGroup,
5975
- [styles$e["table-header-cell-sortable"]]: isSortable,
5976
- [styles$e["table-cell-internal-expand"]]: isExpandCell,
5977
- [styles$e["table-cell-internal-select"]]: isSelectCell
6318
+ const classes = cx(styles$f["table-header-cell"], className, {
6319
+ [styles$f["table-header-cell-group"]]: isGroup,
6320
+ [styles$f["table-header-cell-sortable"]]: isSortable,
6321
+ [styles$f["table-header-cell-interactive"]]: isInteractiveHeaderCell,
6322
+ [styles$f["table-cell-internal-expand"]]: isExpandCell,
6323
+ [styles$f["table-cell-internal-select"]]: isSelectCell
5978
6324
  });
5979
6325
  const CellElement = type === "simple" ? "th" : "div";
5980
6326
  return /* @__PURE__ */ jsx(
@@ -5992,6 +6338,23 @@ const TableHeaderCell = forwardRef(
5992
6338
  );
5993
6339
  TableHeaderCell.displayName = "TableHeaderCell";
5994
6340
 
6341
+ const INTERACTIVE_DESCENDANT_SELECTOR = [
6342
+ "button",
6343
+ "a[href]",
6344
+ "input",
6345
+ "select",
6346
+ "textarea",
6347
+ '[role="button"]',
6348
+ '[role="link"]',
6349
+ '[contenteditable="true"]'
6350
+ ].join(", ");
6351
+ function isInteractiveDescendant(target, currentTarget) {
6352
+ if (!(target instanceof Element)) {
6353
+ return false;
6354
+ }
6355
+ const interactiveElement = target.closest(INTERACTIVE_DESCENDANT_SELECTOR);
6356
+ return !!interactiveElement && currentTarget.contains(interactiveElement);
6357
+ }
5995
6358
  function DataTableHeaderCellInner(props, forwardedRef) {
5996
6359
  const { cellPosition, children, header, className, ...rest } = props;
5997
6360
  const internalRef = useRef(null);
@@ -6019,7 +6382,7 @@ function DataTableHeaderCellInner(props, forwardedRef) {
6019
6382
  const columnId = header.column.id;
6020
6383
  const isExpandCell = columnId === INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID;
6021
6384
  const isSelectCell = columnId === INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID;
6022
- const isSortingCell = header.column.columnDef.enableSorting;
6385
+ const isSortingCell = header.column.getCanSort();
6023
6386
  const handleKeyDown = useCallback(
6024
6387
  (event) => {
6025
6388
  switch (event.key) {
@@ -6051,6 +6414,9 @@ function DataTableHeaderCellInner(props, forwardedRef) {
6051
6414
  }
6052
6415
  case " ":
6053
6416
  case "Enter": {
6417
+ if (isInteractiveDescendant(event.target, event.currentTarget)) {
6418
+ return;
6419
+ }
6054
6420
  const isDisabled = header.column.columnDef.meta?.disableHeaderAction;
6055
6421
  if (isSelectCell && !isDisabled) {
6056
6422
  event.preventDefault();
@@ -6083,18 +6449,20 @@ function DataTableHeaderCellInner(props, forwardedRef) {
6083
6449
  );
6084
6450
  const handleClick = useCallback(
6085
6451
  (event) => {
6086
- if (header.column.columnDef.enableSorting) {
6087
- const target = event.target;
6088
- const resizeHandle = target.closest(
6452
+ if (isSortingCell) {
6453
+ if (!(event.target instanceof Element)) {
6454
+ return;
6455
+ }
6456
+ const resizeHandle = event.target.closest(
6089
6457
  '[aria-roledescription="Resize handle"]'
6090
6458
  );
6091
- if (resizeHandle) {
6459
+ if (resizeHandle || isInteractiveDescendant(event.target, event.currentTarget)) {
6092
6460
  return;
6093
6461
  }
6094
6462
  header.column.getToggleSortingHandler()?.(event);
6095
6463
  }
6096
6464
  },
6097
- [header.column]
6465
+ [header.column, isSortingCell]
6098
6466
  );
6099
6467
  return /* @__PURE__ */ jsxs(
6100
6468
  TableHeaderCell,
@@ -6112,7 +6480,7 @@ function DataTableHeaderCellInner(props, forwardedRef) {
6112
6480
  "aria-sort": header.column.getIsSorted() === "asc" ? "ascending" : header.column.getIsSorted() === "desc" ? "descending" : void 0,
6113
6481
  children: [
6114
6482
  children,
6115
- header.column.columnDef.enableSorting && /* @__PURE__ */ jsxs(SrOnly, { children: [
6483
+ isSortingCell && /* @__PURE__ */ jsxs(SrOnly, { children: [
6116
6484
  header.column.getIsSorted() === "asc" ? "Sorted ascending." : header.column.getIsSorted() === "desc" ? "Sorted descending." : "Not sorted.",
6117
6485
  " ",
6118
6486
  "Click to toggle sort."
@@ -6167,6 +6535,15 @@ function useDTHoverDispatchContext() {
6167
6535
  return useContext(DTHoverDispatchContext);
6168
6536
  }
6169
6537
 
6538
+ function getHeaderContentAlign(align) {
6539
+ if (align === "center") {
6540
+ return "center";
6541
+ }
6542
+ if (align === "end") {
6543
+ return "flex-end";
6544
+ }
6545
+ return "flex-start";
6546
+ }
6170
6547
  function DataTableHeader({ table }) {
6171
6548
  const dispatch = useDTHoverDispatchContext();
6172
6549
  const handleHoverColumn = useCallback(
@@ -6224,6 +6601,13 @@ function DataTableHeader({ table }) {
6224
6601
  const isInternalSelectColumn = header.column.id === INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID;
6225
6602
  const isInternalExpandColumn = header.column.id === INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID;
6226
6603
  const gridColumn = header.colSpan > 1 ? `span ${header.colSpan}` : void 0;
6604
+ const headerContentAlign = getHeaderContentAlign(
6605
+ header.column.columnDef.meta?.headerAlign
6606
+ );
6607
+ const isGroupHeader = header.subHeaders.length > 0;
6608
+ const hasGroupDivider = isGroupHeader || Boolean(header.column.parent && isLastInParentGroup);
6609
+ const isHeaderActionDisabled = header.column.columnDef.meta?.disableHeaderAction === true;
6610
+ const headerCellInteractive = !isGroupHeader && (header.column.getCanSort() || (isInternalExpandColumn || isInternalSelectColumn) && !isHeaderActionDisabled);
6227
6611
  return /* @__PURE__ */ jsx(
6228
6612
  DataTableHeaderCell,
6229
6613
  {
@@ -6241,12 +6625,13 @@ function DataTableHeader({ table }) {
6241
6625
  ...getCommonPinningStyles(header.column)
6242
6626
  },
6243
6627
  "aria-colspan": header.colSpan,
6244
- isGroup: "columns" in header.column.columnDef || header.getContext().header.column.parent && isLastInParentGroup,
6245
- isSortable: header.column.columnDef.enableSorting,
6628
+ isGroup: hasGroupDivider,
6629
+ isSortable: header.column.getCanSort(),
6630
+ isInteractiveHeaderCell: headerCellInteractive,
6246
6631
  isSelectCell: isInternalSelectColumn,
6247
6632
  isExpandCell: isInternalExpandColumn,
6248
- onMouseEnter: isInternalExpandColumn || isInternalSelectColumn ? void 0 : () => handleHoverColumn(header.column.id),
6249
- onMouseLeave: isInternalExpandColumn || isInternalSelectColumn ? void 0 : () => handleHoverColumnLeave(header.column.id),
6633
+ onMouseEnter: headerCellInteractive ? () => handleHoverColumn(header.column.id) : void 0,
6634
+ onMouseLeave: headerCellInteractive ? () => handleHoverColumnLeave(header.column.id) : void 0,
6250
6635
  cellPosition: {
6251
6636
  rowIndex: index,
6252
6637
  columnIndex: columnOrder.indexOf(header.column.getIndex())
@@ -6255,22 +6640,46 @@ function DataTableHeader({ table }) {
6255
6640
  Flex,
6256
6641
  {
6257
6642
  direction: "row",
6258
- alignItems: "flex-end",
6643
+ alignItems: "center",
6259
6644
  gap: 2,
6260
6645
  style: {
6261
6646
  width: "100%"
6262
6647
  },
6263
6648
  children: [
6264
- /* @__PURE__ */ jsxs(Flex, { direction: "row", alignItems: "center", gap: 2, grow: 1, children: [
6265
- flexRender(
6266
- header.column.columnDef.header,
6267
- header.getContext()
6268
- ),
6649
+ /* @__PURE__ */ jsxs(
6650
+ Flex,
6269
6651
  {
6270
- asc: /* @__PURE__ */ jsx(Icon, { svg: SvgArrowUpward, size: "small" }),
6271
- desc: /* @__PURE__ */ jsx(Icon, { svg: SvgArrowDownward, size: "small" })
6272
- }[header.column.getIsSorted()] ?? null
6273
- ] }),
6652
+ direction: "row",
6653
+ alignItems: "center",
6654
+ justifyContent: headerContentAlign,
6655
+ gap: 2,
6656
+ grow: 1,
6657
+ style: {
6658
+ minWidth: 0,
6659
+ width: "100%"
6660
+ },
6661
+ children: [
6662
+ flexRender(
6663
+ header.column.columnDef.header,
6664
+ header.getContext()
6665
+ ),
6666
+ header.column.getIsSorted() ? /* @__PURE__ */ jsx(
6667
+ "span",
6668
+ {
6669
+ style: {
6670
+ alignItems: "center",
6671
+ display: "flex",
6672
+ flexShrink: 0
6673
+ },
6674
+ children: {
6675
+ asc: /* @__PURE__ */ jsx(Icon, { svg: SvgArrowUpward, size: "small" }),
6676
+ desc: /* @__PURE__ */ jsx(Icon, { svg: SvgArrowDownward, size: "small" })
6677
+ }[header.column.getIsSorted()] ?? null
6678
+ }
6679
+ ) : null
6680
+ ]
6681
+ }
6682
+ ),
6274
6683
  header.column.columnDef.enableResizing && /* @__PURE__ */ jsx(
6275
6684
  ResizeHandle,
6276
6685
  {
@@ -7126,8 +7535,7 @@ function DataTableInner(props, ref) {
7126
7535
  }).join(" ");
7127
7536
  vars["--a2-grid-template-columns"] = gridColumns;
7128
7537
  vars["--a2-table-width"] = allHaveMaxWidth ? "max-content" : "100%";
7129
- for (let i = 0; i < headers.length; i++) {
7130
- const header = headers[i];
7538
+ for (const header of headers) {
7131
7539
  vars[`--a2-table-col-${header.column.getIndex()}-size`] = header.column.getSize();
7132
7540
  }
7133
7541
  return vars;
@@ -7249,5 +7657,5 @@ function DataTableInner(props, ref) {
7249
7657
  }
7250
7658
  const DataTable = forwardRef(DataTableInner);
7251
7659
 
7252
- export { COLUMN_TYPE_DEFAULTS as C, DataTable as D, chipsFormatter as a, booleanFormatter as b, createColumnHelper$1 as c, currencyFormatter as d, dateFormatter as e, dateTimeFormatter as f, getColumnTypeDefaults as g, dateFormatPresets as h, timeFormatter as i, numberFormatter as n, percentFormatter as p, resolveColumnTypeConfig as r, timeFormatPresets as t, yearlessDateFormatter as y };
7253
- //# sourceMappingURL=DataTable-DK9xRjnq.js.map
7660
+ export { COLUMN_TYPE_DEFAULTS as C, DataTable as D, chipsFormatter as a, booleanFormatter as b, createColumnHelper$1 as c, currencyFormatter as d, dateFormatter as e, dateTimeFormatter as f, getColumnTypeDefaults as g, htmlFormatter as h, dateFormatPresets as i, timeFormatter as j, markdownFormatter as m, numberFormatter as n, percentFormatter as p, resolveColumnTypeConfig as r, timeFormatPresets as t, yearlessDateFormatter as y };
7661
+ //# sourceMappingURL=DataTable-BCV_mtSy.js.map