@servicetitan/anvil2 2.0.4 → 2.2.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 (225) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/dist/{Calendar-jO-0jbbt.js → Calendar-D0CczOpQ.js} +3 -835
  3. package/dist/Calendar-D0CczOpQ.js.map +1 -0
  4. package/dist/{Calendar-DxLrWESu.js → Calendar-oNlBgZKB.js} +2 -2
  5. package/dist/{Calendar-DxLrWESu.js.map → Calendar-oNlBgZKB.js.map} +1 -1
  6. package/dist/Calendar.js +2 -2
  7. package/dist/{Checkbox-9VbydUcM.js → Checkbox-DIY-6agd.js} +12 -12
  8. package/dist/Checkbox-DIY-6agd.js.map +1 -0
  9. package/dist/{Checkbox-ZXftLNwB.js → Checkbox-DuzAqrE7.js} +2 -2
  10. package/dist/{Checkbox-ZXftLNwB.js.map → Checkbox-DuzAqrE7.js.map} +1 -1
  11. package/dist/Checkbox.js +1 -1
  12. package/dist/{Combobox-CNObHLjp.js → Combobox-CSGn20KQ.js} +14 -7
  13. package/dist/Combobox-CSGn20KQ.js.map +1 -0
  14. package/dist/Combobox.js +1 -1
  15. package/dist/{DataTable-CQpySyDq.js → DataTable-D30sE1Xt.js} +223 -19
  16. package/dist/DataTable-D30sE1Xt.js.map +1 -0
  17. package/dist/{DateFieldRange-BG86w0pX.js → DateFieldRange-DBOiqaML.js} +46 -36
  18. package/dist/DateFieldRange-DBOiqaML.js.map +1 -0
  19. package/dist/DateFieldRange.js +1 -1
  20. package/dist/{DateFieldSingle-Byu_jyye.js → DateFieldSingle-C4hU55MP.js} +38 -29
  21. package/dist/DateFieldSingle-C4hU55MP.js.map +1 -0
  22. package/dist/DateFieldSingle.js +1 -1
  23. package/dist/{DateFieldYearless-Dw1k3_PY.js → DateFieldYearless-BXkUiHIR.js} +14 -13
  24. package/dist/DateFieldYearless-BXkUiHIR.js.map +1 -0
  25. package/dist/DateFieldYearless.js +1 -1
  26. package/dist/{DateFieldYearlessRange--plyld10.js → DateFieldYearlessRange-CGffFnVT.js} +14 -13
  27. package/dist/DateFieldYearlessRange-CGffFnVT.js.map +1 -0
  28. package/dist/DateFieldYearlessRange.js +1 -1
  29. package/dist/{DaysOfTheWeek-vE310Rjp.js → DaysOfTheWeek-DJEDopC9.js} +9 -5
  30. package/dist/DaysOfTheWeek-DJEDopC9.js.map +1 -0
  31. package/dist/DaysOfTheWeek.js +1 -1
  32. package/dist/{Dialog-DZPaz84r.js → Dialog-BbsZMnCA.js} +4 -4
  33. package/dist/{Dialog-DZPaz84r.js.map → Dialog-BbsZMnCA.js.map} +1 -1
  34. package/dist/Dialog.js +1 -1
  35. package/dist/{Drawer-pMQOa2jH.js → Drawer-Dhq76ot3.js} +4 -4
  36. package/dist/{Drawer-pMQOa2jH.js.map → Drawer-Dhq76ot3.js.map} +1 -1
  37. package/dist/Drawer.js +1 -1
  38. package/dist/DrillDown.js +1 -1
  39. package/dist/{FieldDialog-Be54L3E-.js → FieldDialog-CAuhkCZY.js} +541 -142
  40. package/dist/FieldDialog-CAuhkCZY.js.map +1 -0
  41. package/dist/FieldDialog.css +58 -28
  42. package/dist/{FieldLabel-DSrHbw9U.js → FieldLabel-DL0D6fvc.js} +2 -2
  43. package/dist/{FieldLabel-DSrHbw9U.js.map → FieldLabel-DL0D6fvc.js.map} +1 -1
  44. package/dist/FieldLabel.js +1 -1
  45. package/dist/FieldMessage-DS0COrjp.js +132 -0
  46. package/dist/FieldMessage-DS0COrjp.js.map +1 -0
  47. package/dist/FieldMessage.css +18 -4
  48. package/dist/FieldMessage.js +2 -1
  49. package/dist/FieldMessage.js.map +1 -1
  50. package/dist/{Helper-CK-XjpR3.js → Helper-PNGm_U2X.js} +7 -4
  51. package/dist/Helper-PNGm_U2X.js.map +1 -0
  52. package/dist/{InputMask-DoqWRi3t.js → InputMask-Ds0W2fKy.js} +2 -2
  53. package/dist/{InputMask-DoqWRi3t.js.map → InputMask-Ds0W2fKy.js.map} +1 -1
  54. package/dist/InputMask.js +1 -1
  55. package/dist/{ListView-CtRhYAls.js → ListView-MMmJDM--.js} +2 -2
  56. package/dist/{ListView-CtRhYAls.js.map → ListView-MMmJDM--.js.map} +1 -1
  57. package/dist/ListView.js +1 -1
  58. package/dist/MultiSelectField.js +1 -1
  59. package/dist/{MultiSelectFieldSync-xj7jXas-.js → MultiSelectFieldSync-Bey99LzJ.js} +178 -58
  60. package/dist/MultiSelectFieldSync-Bey99LzJ.js.map +1 -0
  61. package/dist/NumberField-CDkEUfXW.js +237 -0
  62. package/dist/NumberField-CDkEUfXW.js.map +1 -0
  63. package/dist/NumberField.js +1 -1
  64. package/dist/{Page-vc7zs4tn.js → Page-BVxybI-j.js} +6 -6
  65. package/dist/{Page-vc7zs4tn.js.map → Page-BVxybI-j.js.map} +1 -1
  66. package/dist/Page.js +1 -1
  67. package/dist/{Popover-OOLK0hUz.js → Popover-4C5IVk8T.js} +7 -6
  68. package/dist/{Popover-OOLK0hUz.js.map → Popover-4C5IVk8T.js.map} +1 -1
  69. package/dist/Popover.css +15 -14
  70. package/dist/Popover.js +1 -1
  71. package/dist/{ProgressBar-HA9RPZfC.js → ProgressBar-BGwp-qnf.js} +16 -11
  72. package/dist/ProgressBar-BGwp-qnf.js.map +1 -0
  73. package/dist/ProgressBar.js +1 -1
  74. package/dist/{Radio-31wKzlZ4.js → Radio-BRcpSu-d.js} +12 -12
  75. package/dist/Radio-BRcpSu-d.js.map +1 -0
  76. package/dist/{Radio-BwWDJuLF.js → Radio-D7hNws2b.js} +2 -2
  77. package/dist/{Radio-BwWDJuLF.js.map → Radio-D7hNws2b.js.map} +1 -1
  78. package/dist/Radio.js +1 -1
  79. package/dist/{SelectCard-C91twG1S.js → SelectCard-Bag44PmE.js} +3 -3
  80. package/dist/{SelectCard-C91twG1S.js.map → SelectCard-Bag44PmE.js.map} +1 -1
  81. package/dist/SelectCard.js +1 -1
  82. package/dist/SelectField.js +1 -1
  83. package/dist/{SelectFieldSync-BFsJssdD.js → SelectFieldSync-CigqXq3T.js} +67 -50
  84. package/dist/SelectFieldSync-CigqXq3T.js.map +1 -0
  85. package/dist/{SelectTrigger-Cxhx9IVo.js → SelectTrigger-DgsvUfyl.js} +2 -2
  86. package/dist/{SelectTrigger-Cxhx9IVo.js.map → SelectTrigger-DgsvUfyl.js.map} +1 -1
  87. package/dist/SelectTrigger.js +1 -1
  88. package/dist/{SelectTriggerBase-aaOWep-V.js → SelectTriggerBase-OxfNqdIq.js} +12 -7
  89. package/dist/SelectTriggerBase-OxfNqdIq.js.map +1 -0
  90. package/dist/{Stepper-Jv9A3Ned.js → Stepper-D8lkCP8Y.js} +11 -2
  91. package/dist/Stepper-D8lkCP8Y.js.map +1 -0
  92. package/dist/Stepper.js +1 -1
  93. package/dist/{Switch-DQICcdAv.js → Switch-D0zwZCg4.js} +2 -2
  94. package/dist/{Switch-DQICcdAv.js.map → Switch-D0zwZCg4.js.map} +1 -1
  95. package/dist/Switch.js +1 -1
  96. package/dist/Table.js +1 -1
  97. package/dist/{TextField-CDiiYSlT.js → TextField-BycenT6H.js} +13 -12
  98. package/dist/TextField-BycenT6H.js.map +1 -0
  99. package/dist/{TextField-CnYxS52Y.js → TextField-Dfzn2HeL.js} +2 -2
  100. package/dist/{TextField-CnYxS52Y.js.map → TextField-Dfzn2HeL.js.map} +1 -1
  101. package/dist/TextField.js +1 -1
  102. package/dist/{Textarea-BnHIDj2P.js → Textarea-BwbwJP6z.js} +13 -12
  103. package/dist/Textarea-BwbwJP6z.js.map +1 -0
  104. package/dist/Textarea.js +1 -1
  105. package/dist/{TimeField-ChqK40k_.js → TimeField-B0WSzSfJ.js} +4 -4
  106. package/dist/{TimeField-ChqK40k_.js.map → TimeField-B0WSzSfJ.js.map} +1 -1
  107. package/dist/TimeField.js +1 -1
  108. package/dist/TimezoneMessage-Cnsl4cHT.js +84 -0
  109. package/dist/TimezoneMessage-Cnsl4cHT.js.map +1 -0
  110. package/dist/TimezoneMessage.css +7 -0
  111. package/dist/Toast.js +2 -2
  112. package/dist/{Toaster-BlycAc63.js → Toaster-9Q_yaKGu.js} +18 -18
  113. package/dist/Toaster-9Q_yaKGu.js.map +1 -0
  114. package/dist/{Toaster-DW_bi2L9.js → Toaster-DHo8dnWH.js} +2 -2
  115. package/dist/{Toaster-DW_bi2L9.js.map → Toaster-DHo8dnWH.js.map} +1 -1
  116. package/dist/{Toolbar-vBomnRKG.js → Toolbar-CVOenuCF.js} +70 -23
  117. package/dist/Toolbar-CVOenuCF.js.map +1 -0
  118. package/dist/Toolbar.js +1 -1
  119. package/dist/{Tooltip-CUiAJXak.js → Tooltip-Bt62hC5J.js} +5 -5
  120. package/dist/{Tooltip-CUiAJXak.js.map → Tooltip-Bt62hC5J.js.map} +1 -1
  121. package/dist/Tooltip.css +9 -8
  122. package/dist/Tooltip.js +1 -1
  123. package/dist/{YearlessDateInputWithPicker-DZSb8sPf.js → YearlessDateInputWithPicker-ztozRk-X.js} +3 -3
  124. package/dist/{YearlessDateInputWithPicker-DZSb8sPf.js.map → YearlessDateInputWithPicker-ztozRk-X.js.map} +1 -1
  125. package/dist/beta/components/MultiSelectField/MultiSelectField.d.ts +2 -0
  126. package/dist/beta/components/MultiSelectField/MultiSelectFieldSync.d.ts +43 -4
  127. package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldList.d.ts +5 -5
  128. package/dist/beta/components/MultiSelectField/internal/useComboMultiple.d.ts +13 -2
  129. package/dist/beta/components/MultiSelectField/stories/MultiSelectField.stories.data.d.ts +1 -0
  130. package/dist/beta/components/MultiSelectField/types.d.ts +52 -8
  131. package/dist/beta/components/SelectField/SelectFieldSync.d.ts +10 -3
  132. package/dist/beta/components/SelectField/internal/FieldListBase.d.ts +6 -5
  133. package/dist/beta/components/SelectField/internal/SelectFieldList.d.ts +4 -2
  134. package/dist/beta/components/SelectField/internal/SelectFieldListItem.d.ts +2 -1
  135. package/dist/beta/components/SelectField/internal/VirtualizedFieldListBase.d.ts +2 -0
  136. package/dist/beta/components/SelectField/internal/useCombo.d.ts +3 -1
  137. package/dist/beta/components/SelectField/internal/useFieldListSections.d.ts +55 -0
  138. package/dist/beta/components/SelectField/stories/SelectField.stories.data.d.ts +1 -0
  139. package/dist/beta/components/SelectField/types.d.ts +24 -6
  140. package/dist/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableNumberCell.d.ts +7 -0
  141. package/dist/beta/components/Table/DataTable/internal/util/getTanStackColumnDef.d.ts +1 -0
  142. package/dist/beta/components/Table/DataTable/stories/DataTable.story-data.d.ts +1 -0
  143. package/dist/beta/components/Table/createColumnHelper.d.ts +36 -9
  144. package/dist/beta/components/Table/types.d.ts +54 -4
  145. package/dist/beta/components/Toolbar/Filters/internal/utils/filter-state.d.ts +1 -0
  146. package/dist/beta.js +7 -7
  147. package/dist/components/ButtonToggle/ButtonToggle.d.ts +1 -1
  148. package/dist/components/Checkbox/Checkbox.d.ts +2 -1
  149. package/dist/components/Checkbox/CheckboxGroup.d.ts +16 -8
  150. package/dist/components/Checkbox/internal/Checkbox.d.ts +1 -1
  151. package/dist/components/DateFieldRange/DateFieldRange.d.ts +8 -1
  152. package/dist/components/DateFieldRange/internal/DateFieldRangeCalendar.d.ts +3 -1
  153. package/dist/components/DateFieldSingle/DateFieldSingle.d.ts +8 -1
  154. package/dist/components/DateFieldSingle/internal/DateFieldSingleCalendar.d.ts +3 -1
  155. package/dist/components/DateFieldSingle/internal/TimezoneMessage.d.ts +6 -0
  156. package/dist/components/DateFieldSingle/internal/utils.d.ts +11 -0
  157. package/dist/components/DateFieldYearless/DateFieldYearless.d.ts +8 -3
  158. package/dist/components/DateFieldYearlessRange/DateFieldYearlessRange.d.ts +12 -1
  159. package/dist/components/DaysOfTheWeek/DaysOfTheWeek.d.ts +20 -6
  160. package/dist/components/Dialog/internal/useInitialFocus.d.ts +5 -1
  161. package/dist/components/FieldMessage/FieldMessage.d.ts +39 -20
  162. package/dist/components/FieldMessage/index.d.ts +1 -0
  163. package/dist/components/FieldMessage/utils.d.ts +7 -0
  164. package/dist/components/NumberField/NumberField.d.ts +24 -2
  165. package/dist/components/Page/Page.d.ts +2 -2
  166. package/dist/components/ProgressBar/ProgressBar.d.ts +8 -3
  167. package/dist/components/Radio/Radio.d.ts +2 -1
  168. package/dist/components/Radio/RadioGroup.d.ts +16 -8
  169. package/dist/components/SelectTrigger/internal/SelectTriggerBase.d.ts +1 -1
  170. package/dist/components/Stepper/Stepper.d.ts +6 -2
  171. package/dist/components/TextField/internal/TextField.d.ts +12 -1
  172. package/dist/components/Textarea/Textarea.d.ts +8 -5
  173. package/dist/index-DXeGMe23.js +836 -0
  174. package/dist/index-DXeGMe23.js.map +1 -0
  175. package/dist/{index.esm-BMOZFPwN.js → index.esm-C2ZhC_8d.js} +2 -2
  176. package/dist/{index.esm-BMOZFPwN.js.map → index.esm-C2ZhC_8d.js.map} +1 -1
  177. package/dist/{useOnClickOutside-Cyqbe1n3.js → index.esm-K9kxJhLx.js} +88 -94
  178. package/dist/index.esm-K9kxJhLx.js.map +1 -0
  179. package/dist/index.js +31 -30
  180. package/dist/index.js.map +1 -1
  181. package/dist/internal/components/Helper/Helper.d.ts +12 -3
  182. package/dist/internal/components/StatusIcon/StatusIcon.d.ts +45 -0
  183. package/dist/internal/components/StatusIcon/index.d.ts +1 -0
  184. package/dist/internal/functions/index.d.ts +1 -0
  185. package/dist/internal/functions/warnOnce.d.ts +5 -0
  186. package/dist/internal/hooks/useNumberField/useNumberField.d.ts +1 -1
  187. package/dist/{useDrilldown-lAdB3FFW.js → useDrilldown-jbU4Cs5l.js} +2 -598
  188. package/dist/useDrilldown-jbU4Cs5l.js.map +1 -0
  189. package/dist/{useInitialFocus-nOW12jQ5.js → useInitialFocus-BRRbylek.js} +2 -2
  190. package/dist/{useInitialFocus-nOW12jQ5.js.map → useInitialFocus-BRRbylek.js.map} +1 -1
  191. package/dist/{NumberField-W1k8V5Qq.js → useNumberField-eMyk7MB8.js} +5 -235
  192. package/dist/useNumberField-eMyk7MB8.js.map +1 -0
  193. package/dist/useOnClickOutside-Zw5vzxSq.js +71 -0
  194. package/dist/useOnClickOutside-Zw5vzxSq.js.map +1 -0
  195. package/dist/utils-pudAMGnO.js +25 -0
  196. package/dist/utils-pudAMGnO.js.map +1 -0
  197. package/package.json +9 -8
  198. package/dist/Calendar-jO-0jbbt.js.map +0 -1
  199. package/dist/Checkbox-9VbydUcM.js.map +0 -1
  200. package/dist/Combobox-CNObHLjp.js.map +0 -1
  201. package/dist/DataTable-CQpySyDq.js.map +0 -1
  202. package/dist/DateFieldRange-BG86w0pX.js.map +0 -1
  203. package/dist/DateFieldSingle-Byu_jyye.js.map +0 -1
  204. package/dist/DateFieldYearless-Dw1k3_PY.js.map +0 -1
  205. package/dist/DateFieldYearlessRange--plyld10.js.map +0 -1
  206. package/dist/DaysOfTheWeek-vE310Rjp.js.map +0 -1
  207. package/dist/FieldDialog-Be54L3E-.js.map +0 -1
  208. package/dist/FieldMessage-tEr6rWXS.js +0 -54
  209. package/dist/FieldMessage-tEr6rWXS.js.map +0 -1
  210. package/dist/Helper-CK-XjpR3.js.map +0 -1
  211. package/dist/MultiSelectFieldSync-xj7jXas-.js.map +0 -1
  212. package/dist/NumberField-W1k8V5Qq.js.map +0 -1
  213. package/dist/ProgressBar-HA9RPZfC.js.map +0 -1
  214. package/dist/Radio-31wKzlZ4.js.map +0 -1
  215. package/dist/SelectFieldSync-BFsJssdD.js.map +0 -1
  216. package/dist/SelectTriggerBase-aaOWep-V.js.map +0 -1
  217. package/dist/Stepper-Jv9A3Ned.js.map +0 -1
  218. package/dist/TextField-CDiiYSlT.js.map +0 -1
  219. package/dist/Textarea-BnHIDj2P.js.map +0 -1
  220. package/dist/Toaster-BlycAc63.js.map +0 -1
  221. package/dist/Toolbar-vBomnRKG.js.map +0 -1
  222. package/dist/useDrilldown-lAdB3FFW.js.map +0 -1
  223. package/dist/useOnClickOutside-Cyqbe1n3.js.map +0 -1
  224. package/dist/utils-BHKRoLps.js +0 -60
  225. package/dist/utils-BHKRoLps.js.map +0 -1
@@ -2,22 +2,24 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { C as Chip } from './Chip-Bc7jiIJ1.js';
3
3
  import { F as Flex } from './Flex-CUtXN-C0.js';
4
4
  import * as React from 'react';
5
- import { useRef, useState, useLayoutEffect, createContext, useContext, useCallback, forwardRef, useMemo, useImperativeHandle, useEffect, Fragment as Fragment$1, useReducer } from 'react';
5
+ import { useRef, useState, useLayoutEffect, createContext, useContext, useCallback, forwardRef, useMemo, useImperativeHandle, useEffect, useId, Fragment as Fragment$1, useReducer } from 'react';
6
6
  import { c as cx } from './index-SvGbrGuT.js';
7
7
  import { D as DateTime } from './luxon-wpz4A-OQ.js';
8
- import { C as Checkbox } from './Checkbox-ZXftLNwB.js';
8
+ import { a as warnOnce } from './utils-pudAMGnO.js';
9
+ import { C as Checkbox } from './Checkbox-DuzAqrE7.js';
9
10
  import { B as Button } from './Button-l7pTJdPc.js';
10
11
  import { S as SvgChevronRight } from './chevron_right-BdpsxX7x.js';
11
12
  import { S as SvgEdit } from './edit-DQOiktcu.js';
12
13
  import { I as Icon } from './Icon-Bcil6aBo.js';
13
14
  import { S as SrOnly } from './SrOnly-CrdBTl6E.js';
15
+ import { u as useNumberField } from './useNumberField-eMyk7MB8.js';
16
+ import { u as useMergeRefs, m as mergeRefs } from './useMergeRefs-Dfmtq9cI.js';
14
17
  import { M as Menu } from './Menu-3LIfRdTk.js';
15
- import { m as mergeRefs } from './useMergeRefs-Dfmtq9cI.js';
16
- import { P as Popover } from './Popover-OOLK0hUz.js';
18
+ import { P as Popover } from './Popover-4C5IVk8T.js';
17
19
  import { S as SearchField } from './SearchField-CoeaOip5.js';
18
- import { L as ListView } from './ListView-CtRhYAls.js';
20
+ import { L as ListView } from './ListView-MMmJDM--.js';
19
21
  import { S as SvgError } from './error-DR_wWdYY.js';
20
- import { T as Tooltip } from './Tooltip-CUiAJXak.js';
22
+ import { T as Tooltip } from './Tooltip-Bt62hC5J.js';
21
23
  import { flushSync } from 'react-dom';
22
24
  import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-loxbyklF.js';
23
25
  import './anvil-fonts.css';import './DataTable.css';/* empty css */
@@ -402,22 +404,19 @@ function getColumnTypeDefaults(type) {
402
404
  }
403
405
 
404
406
  function logDeprecationWarnings(id, column) {
405
- if (process.env.NODE_ENV === "production") {
406
- return;
407
- }
408
407
  const columnId = typeof id === "object" && "group" in id ? id.group : String(id);
409
408
  if ("editMode" in column && column.editMode && !("editConfig" in column && column.editConfig)) {
410
- console.warn(
409
+ warnOnce(
411
410
  `[Anvil2 DataTable] Column "${columnId}" uses deprecated \`editMode\` prop. Migrate to \`editConfig: { mode: "${column.editMode}", onChange: ... }\``
412
411
  );
413
412
  }
414
413
  if ("onChange" in column && column.onChange && !("editConfig" in column && column.editConfig)) {
415
- console.warn(
414
+ warnOnce(
416
415
  `[Anvil2 DataTable] Column "${columnId}" uses deprecated top-level \`onChange\`. Move \`onChange\` inside \`editConfig\`.`
417
416
  );
418
417
  }
419
418
  if ("options" in column && column.options && !("editConfig" in column && column.editConfig)) {
420
- console.warn(
419
+ warnOnce(
421
420
  `[Anvil2 DataTable] Column "${columnId}" uses deprecated top-level \`options\`. Move \`options\` inside \`editConfig\`.`
422
421
  );
423
422
  }
@@ -431,9 +430,12 @@ function transformEditConfig(column) {
431
430
  editMode: editConfig.mode,
432
431
  onChange: editConfig.onChange
433
432
  };
434
- if ("options" in editConfig) {
435
- result.options = editConfig.options;
433
+ if (editConfig.mode === "select" || editConfig.mode === "multiselect") {
434
+ if ("options" in editConfig) {
435
+ result.options = editConfig.options;
436
+ }
436
437
  }
438
+ result.editConfig = editConfig;
437
439
  return result;
438
440
  }
439
441
  function createColumnHelper$1() {
@@ -4170,9 +4172,6 @@ function DataTableEditableTextCellInner(props, ref) {
4170
4172
  case "string":
4171
4173
  value = cellValue;
4172
4174
  break;
4173
- case "number":
4174
- value = String(cellValue);
4175
- break;
4176
4175
  case "boolean":
4177
4176
  value = String(cellValue);
4178
4177
  break;
@@ -4344,6 +4343,204 @@ const DataTableEditableTextCell = Object.assign(
4344
4343
  { displayName: "DataTableEditableTextCell" }
4345
4344
  );
4346
4345
 
4346
+ function DataTableEditableNumberCellInner(props, ref) {
4347
+ const { cell, cellProps, cellPosition, children } = props;
4348
+ const { onKeyDown: onCellKeyDown } = cellProps;
4349
+ const cellRef = useRef(null);
4350
+ const localInputRef = useRef(null);
4351
+ const rowId = cell.row.id;
4352
+ const [isEditing, setIsEditing] = useState(false);
4353
+ const columnId = getColumnId(cell);
4354
+ const cellValue = getCellValue(cell);
4355
+ const [initialValue, isValidValueType] = useMemo(() => {
4356
+ let value;
4357
+ let isValid = true;
4358
+ if (cellValue === void 0 || cellValue === null) {
4359
+ value = null;
4360
+ isValid = true;
4361
+ return [value, isValid];
4362
+ }
4363
+ if (typeof cellValue === "number") {
4364
+ value = cellValue;
4365
+ } else {
4366
+ value = null;
4367
+ isValid = false;
4368
+ }
4369
+ if (!isValid) {
4370
+ logWarningForInvalidCellValueType({
4371
+ columnId: String(columnId),
4372
+ editMode: "number",
4373
+ expectedType: "number",
4374
+ receivedType: Array.isArray(cellValue) ? "array" : typeof cellValue
4375
+ });
4376
+ }
4377
+ return [value, isValid];
4378
+ }, [cellValue, columnId]);
4379
+ const editConfig = cell.column.columnDef.meta?.editConfig;
4380
+ const numberEditOptions = useMemo(() => {
4381
+ if (editConfig && editConfig.mode === "number") {
4382
+ const { mode: _, onChange: __, ...options } = editConfig;
4383
+ return options;
4384
+ }
4385
+ return {};
4386
+ }, [editConfig]);
4387
+ const [draftValue, setDraftValue] = useState(initialValue);
4388
+ const { inputRef: numberFieldInputRef, inputProps } = useNumberField({
4389
+ value: draftValue,
4390
+ onChange: setDraftValue,
4391
+ ...numberEditOptions
4392
+ });
4393
+ const combinedInputRef = useMergeRefs([localInputRef, numberFieldInputRef]);
4394
+ const [tabIndex, setTabIndex] = useState(-1);
4395
+ const { moveFocusToCell } = useDTFocusDispatchContext();
4396
+ const instructionsId = useId();
4397
+ const headerLabel = cell.column.columnDef.meta?.columnDef?.headerLabel ?? String(columnId);
4398
+ const inputAriaLabel = `${headerLabel}, row ${cellPosition.rowIndex + 1}`;
4399
+ const skipCommitOnBlur = useRef(false);
4400
+ const onChange = getCellOnChange(cell);
4401
+ const commitValue = useCallback(() => {
4402
+ if (draftValue !== initialValue) {
4403
+ onChange?.(draftValue, rowId);
4404
+ }
4405
+ setIsEditing(false);
4406
+ }, [rowId, draftValue, onChange, initialValue]);
4407
+ const resetValue = useCallback(() => {
4408
+ setDraftValue(initialValue);
4409
+ skipCommitOnBlur.current = true;
4410
+ cellRef.current?.focus();
4411
+ setIsEditing(false);
4412
+ }, [initialValue]);
4413
+ const beginEditing = useCallback(() => {
4414
+ setDraftValue(initialValue);
4415
+ setIsEditing(true);
4416
+ }, [initialValue]);
4417
+ useImperativeHandle(ref, () => ({
4418
+ invoke: beginEditing,
4419
+ focus: () => {
4420
+ cellRef.current?.focus();
4421
+ setTabIndex(0);
4422
+ }
4423
+ }));
4424
+ const handleInputKeyDown = useCallback(
4425
+ (event) => {
4426
+ if (event.key === "Enter" || event.key === "F2") {
4427
+ event.preventDefault();
4428
+ skipCommitOnBlur.current = true;
4429
+ cellRef.current?.focus();
4430
+ commitValue();
4431
+ return;
4432
+ } else if (event.key === "Escape") {
4433
+ event.preventDefault();
4434
+ resetValue();
4435
+ return;
4436
+ }
4437
+ },
4438
+ [commitValue, resetValue]
4439
+ );
4440
+ const handleInputBlur = useCallback(() => {
4441
+ if (skipCommitOnBlur.current) {
4442
+ skipCommitOnBlur.current = false;
4443
+ return;
4444
+ }
4445
+ commitValue();
4446
+ }, [commitValue]);
4447
+ const classes = cx(
4448
+ styles$a["data-table-body-cell-editable"],
4449
+ cellProps.className,
4450
+ {
4451
+ [styles$9["data-table-body-cell-editing"]]: isEditing
4452
+ }
4453
+ );
4454
+ const handleCellKeyDown = useCallback(
4455
+ (event) => {
4456
+ if (isEditing) {
4457
+ return;
4458
+ }
4459
+ onCellKeyDown?.(event);
4460
+ },
4461
+ [onCellKeyDown, isEditing]
4462
+ );
4463
+ const handleCellFocus = useCallback(
4464
+ (event) => {
4465
+ if (event.target !== cellRef.current) {
4466
+ return;
4467
+ }
4468
+ event.preventDefault();
4469
+ setTabIndex(0);
4470
+ },
4471
+ [setTabIndex]
4472
+ );
4473
+ const handleCellBlur = useCallback(
4474
+ (e) => {
4475
+ if (cellRef.current?.contains(e.relatedTarget)) {
4476
+ return;
4477
+ }
4478
+ setTabIndex(-1);
4479
+ },
4480
+ [setTabIndex, cellRef]
4481
+ );
4482
+ const handleCellMouseDown = useCallback(
4483
+ (e) => {
4484
+ e.preventDefault();
4485
+ e.stopPropagation();
4486
+ beginEditing();
4487
+ moveFocusToCell(cellPosition);
4488
+ },
4489
+ [beginEditing, cellPosition, moveFocusToCell]
4490
+ );
4491
+ const cellFocusContextValue = useMemo(
4492
+ () => ({ isCellFocused: tabIndex === 0 && !isEditing }),
4493
+ [tabIndex, isEditing]
4494
+ );
4495
+ useEffect(() => {
4496
+ if (isEditing) {
4497
+ localInputRef.current?.focus();
4498
+ }
4499
+ }, [isEditing]);
4500
+ if (!isValidValueType) {
4501
+ const { cellProps: _cellProps, ...immutableCellProps } = props;
4502
+ return /* @__PURE__ */ jsx(DataTableBodyImmutableCell, { ...immutableCellProps });
4503
+ }
4504
+ return /* @__PURE__ */ jsxs(
4505
+ TableBodyCell,
4506
+ {
4507
+ ref: cellRef,
4508
+ type: "data-table",
4509
+ className: classes,
4510
+ style: cellProps.style,
4511
+ onMouseDown: handleCellMouseDown,
4512
+ onKeyDown: handleCellKeyDown,
4513
+ tabIndex,
4514
+ onFocus: handleCellFocus,
4515
+ onBlur: handleCellBlur,
4516
+ "data-cell-pos": formatCellPositionString(cellPosition),
4517
+ children: [
4518
+ isEditing ? /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(
4519
+ "input",
4520
+ {
4521
+ ref: combinedInputRef,
4522
+ ...inputProps,
4523
+ name: `${cell.column.id}-row-${cellPosition.rowIndex}`,
4524
+ "aria-label": inputAriaLabel,
4525
+ "aria-describedby": instructionsId,
4526
+ className: styles$a["data-table-body-cell-input"],
4527
+ onBlur: handleInputBlur,
4528
+ onKeyDown: handleInputKeyDown
4529
+ }
4530
+ ) }) : /* @__PURE__ */ jsxs(CellFocusContext.Provider, { value: cellFocusContextValue, children: [
4531
+ children,
4532
+ !isEditing && /* @__PURE__ */ jsx(DataTableEditableCellEditIcon, {})
4533
+ ] }),
4534
+ /* @__PURE__ */ jsx(SrOnly, { id: instructionsId, children: isEditing ? "Press Enter or F2 to save cell value." : "Press Enter or F2 to edit cell value. Press Escape to cancel." })
4535
+ ]
4536
+ }
4537
+ );
4538
+ }
4539
+ const DataTableEditableNumberCell = Object.assign(
4540
+ forwardRef(DataTableEditableNumberCellInner),
4541
+ { displayName: "DataTableEditableNumberCell" }
4542
+ );
4543
+
4347
4544
  function DataTableEditableSelectCellInner(props, ref) {
4348
4545
  const { cell, cellProps, cellPosition, children } = props;
4349
4546
  const { onKeyDown: onCellKeyDown } = cellProps;
@@ -4890,6 +5087,9 @@ function DataTableBodyMutableCell(props) {
4890
5087
  if (editMode === "text") {
4891
5088
  return DataTableEditableTextCell;
4892
5089
  }
5090
+ if (editMode === "number") {
5091
+ return DataTableEditableNumberCell;
5092
+ }
4893
5093
  if (editMode === "select") {
4894
5094
  return DataTableEditableSelectCell;
4895
5095
  }
@@ -5384,7 +5584,10 @@ function getTanStackColumnDef({
5384
5584
  cell: (info) => {
5385
5585
  let cellContent;
5386
5586
  if (resolvedRenderCell) {
5387
- cellContent = resolvedRenderCell(info.getValue(), info.row.depth);
5587
+ cellContent = resolvedRenderCell(info.getValue(), {
5588
+ row: info.row.original,
5589
+ depth: info.row.depth
5590
+ });
5388
5591
  } else {
5389
5592
  cellContent = info.getValue();
5390
5593
  }
@@ -5417,6 +5620,7 @@ function getTanStackColumnDef({
5417
5620
  enableSorting: !!columnDef.sortable,
5418
5621
  meta: {
5419
5622
  editMode: columnDef.editMode,
5623
+ editConfig: columnDef.editConfig,
5420
5624
  onChange: columnDef.onChange,
5421
5625
  options: columnDef.options,
5422
5626
  columnDef
@@ -6633,4 +6837,4 @@ function DataTableInner(props, ref) {
6633
6837
  const DataTable = forwardRef(DataTableInner);
6634
6838
 
6635
6839
  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 };
6636
- //# sourceMappingURL=DataTable-CQpySyDq.js.map
6840
+ //# sourceMappingURL=DataTable-D30sE1Xt.js.map