@servicetitan/anvil2 1.50.1 → 1.50.2

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 (181) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/{Calendar-CAYitkfM.js → Calendar-BeFARXwq.js} +2 -2
  3. package/dist/{Calendar-CAYitkfM.js.map → Calendar-BeFARXwq.js.map} +1 -1
  4. package/dist/{Calendar-C9oxHTGG.js → Calendar-M9v994mm.js} +2 -2
  5. package/dist/{Calendar-C9oxHTGG.js.map → Calendar-M9v994mm.js.map} +1 -1
  6. package/dist/Calendar.js +2 -2
  7. package/dist/{Checkbox-DbBeuNdW.js → Checkbox-BwFY38z1.js} +3 -2
  8. package/dist/Checkbox-BwFY38z1.js.map +1 -0
  9. package/dist/{Checkbox-zAKOGEBl.js → Checkbox-Chck2V5C.js} +2 -2
  10. package/dist/{Checkbox-zAKOGEBl.js.map → Checkbox-Chck2V5C.js.map} +1 -1
  11. package/dist/Checkbox.js +2 -2
  12. package/dist/{Combobox-DGAa9vgU.js → Combobox-BTTWNSW1.js} +285 -175
  13. package/dist/Combobox-BTTWNSW1.js.map +1 -0
  14. package/dist/Combobox.js +1 -1
  15. package/dist/{DataTable-DQ9FFuV8.js → DataTable-hXWouflx.js} +6 -6
  16. package/dist/{DataTable-DQ9FFuV8.js.map → DataTable-hXWouflx.js.map} +1 -1
  17. package/dist/{DateField-BT9jJRp5.js → DateField-B8JdMu94.js} +6 -6
  18. package/dist/{DateField-BT9jJRp5.js.map → DateField-B8JdMu94.js.map} +1 -1
  19. package/dist/DateField.js +1 -1
  20. package/dist/{DateFieldRange-ZAic_9mt.js → DateFieldRange-DWAgi_T9.js} +7 -7
  21. package/dist/{DateFieldRange-ZAic_9mt.js.map → DateFieldRange-DWAgi_T9.js.map} +1 -1
  22. package/dist/DateFieldRange.js +1 -1
  23. package/dist/{DateFieldSingle-DAtR8ImE.js → DateFieldSingle-CQ6X-bVX.js} +7 -7
  24. package/dist/{DateFieldSingle-DAtR8ImE.js.map → DateFieldSingle-CQ6X-bVX.js.map} +1 -1
  25. package/dist/DateFieldSingle.js +1 -1
  26. package/dist/{DateFieldYearless-DXO_MPwA.js → DateFieldYearless-D6-NfIHu.js} +4 -4
  27. package/dist/{DateFieldYearless-DXO_MPwA.js.map → DateFieldYearless-D6-NfIHu.js.map} +1 -1
  28. package/dist/DateFieldYearless.js +1 -1
  29. package/dist/{DateFieldYearlessRange-Cg6bbPIi.js → DateFieldYearlessRange-CQM0vibm.js} +4 -4
  30. package/dist/{DateFieldYearlessRange-Cg6bbPIi.js.map → DateFieldYearlessRange-CQM0vibm.js.map} +1 -1
  31. package/dist/DateFieldYearlessRange.js +1 -1
  32. package/dist/{DaysOfTheWeek-9B9d7-hF.js → DaysOfTheWeek-BR-mg77X.js} +3 -3
  33. package/dist/{DaysOfTheWeek-9B9d7-hF.js.map → DaysOfTheWeek-BR-mg77X.js.map} +1 -1
  34. package/dist/DaysOfTheWeek.js +1 -1
  35. package/dist/{Dialog-BwabBKoZ.js → Dialog-Ba2oIATn.js} +8 -8
  36. package/dist/Dialog-Ba2oIATn.js.map +1 -0
  37. package/dist/Dialog.js +2 -2
  38. package/dist/{DialogCancelButton-sTEfx5kf.js → DialogCancelButton-CBHyI0CI.js} +2 -2
  39. package/dist/{DialogCancelButton-sTEfx5kf.js.map → DialogCancelButton-CBHyI0CI.js.map} +1 -1
  40. package/dist/{Drawer-GXeoK-r9.js → Drawer-CWogbC68.js} +7 -7
  41. package/dist/{Drawer-GXeoK-r9.js.map → Drawer-CWogbC68.js.map} +1 -1
  42. package/dist/Drawer.js +1 -1
  43. package/dist/{DrawerContext-Cs3k160L.js → DrawerContext-rJvgnn3O.js} +2 -2
  44. package/dist/{DrawerContext-Cs3k160L.js.map → DrawerContext-rJvgnn3O.js.map} +1 -1
  45. package/dist/FieldDialog-BHgkQOhh.js +519 -0
  46. package/dist/FieldDialog-BHgkQOhh.js.map +1 -0
  47. package/dist/{FieldLabel-jqlQ1Ldh.js → FieldLabel-BWOIFXgt.js} +7 -4
  48. package/dist/FieldLabel-BWOIFXgt.js.map +1 -0
  49. package/dist/FieldLabel.js +1 -1
  50. package/dist/{InputMask-CJC9xZHG.js → InputMask-BzY1DJoV.js} +3 -3
  51. package/dist/{InputMask-CJC9xZHG.js.map → InputMask-BzY1DJoV.js.map} +1 -1
  52. package/dist/InputMask.js +1 -1
  53. package/dist/{ListView-D8mfK8Lu.js → ListView-C5OBwbHe.js} +6 -4
  54. package/dist/ListView-C5OBwbHe.js.map +1 -0
  55. package/dist/ListView.js +1 -1
  56. package/dist/{Menu-Cn2JJe1Y.js → Menu-69JwGxYh.js} +2 -2
  57. package/dist/{Menu-Cn2JJe1Y.js.map → Menu-69JwGxYh.js.map} +1 -1
  58. package/dist/Menu.js +1 -1
  59. package/dist/MultiSelectField.d.ts +2 -0
  60. package/dist/MultiSelectField.js +2 -0
  61. package/dist/MultiSelectField.js.map +1 -0
  62. package/dist/MultiSelectFieldSync-B3HNQf7R.js +873 -0
  63. package/dist/MultiSelectFieldSync-B3HNQf7R.js.map +1 -0
  64. package/dist/MultiSelectFieldSync.css +259 -0
  65. package/dist/{NumberField-CjWLnD9X.js → NumberField-CcH25bnO.js} +3 -3
  66. package/dist/{NumberField-CjWLnD9X.js.map → NumberField-CcH25bnO.js.map} +1 -1
  67. package/dist/NumberField.js +1 -1
  68. package/dist/{Page-DEbpjQw0.js → Page-B5HZSjSl.js} +5 -5
  69. package/dist/{Page-DEbpjQw0.js.map → Page-B5HZSjSl.js.map} +1 -1
  70. package/dist/Page.js +1 -1
  71. package/dist/{Pagination-BR8MiRaA.js → Pagination-CkdBaQx6.js} +2 -2
  72. package/dist/{Pagination-BR8MiRaA.js.map → Pagination-CkdBaQx6.js.map} +1 -1
  73. package/dist/Pagination.js +1 -1
  74. package/dist/{Popover-CCXrzBul.js → Popover-D9SmGQTh.js} +6 -5
  75. package/dist/{Popover-CCXrzBul.js.map → Popover-D9SmGQTh.js.map} +1 -1
  76. package/dist/Popover.js +1 -1
  77. package/dist/{ProgressBar-BpKEr6cO.js → ProgressBar-BABkqVmW.js} +2 -2
  78. package/dist/{ProgressBar-BpKEr6cO.js.map → ProgressBar-BABkqVmW.js.map} +1 -1
  79. package/dist/ProgressBar.js +1 -1
  80. package/dist/{Radio-jj0-1dOg.js → Radio-Cds2laHA.js} +2 -2
  81. package/dist/{Radio-jj0-1dOg.js.map → Radio-Cds2laHA.js.map} +1 -1
  82. package/dist/Radio.js +2 -2
  83. package/dist/{RadioGroup-Bxy415eu.js → RadioGroup-COVlUmwy.js} +3 -3
  84. package/dist/{RadioGroup-Bxy415eu.js.map → RadioGroup-COVlUmwy.js.map} +1 -1
  85. package/dist/{SelectCard-CjbsPKZ4.js → SelectCard-C-Kjk5eS.js} +3 -3
  86. package/dist/{SelectCard-CjbsPKZ4.js.map → SelectCard-C-Kjk5eS.js.map} +1 -1
  87. package/dist/SelectCard.js +1 -1
  88. package/dist/SelectField.js +1 -1
  89. package/dist/SelectFieldSync-0CL0RTpg.js +679 -0
  90. package/dist/SelectFieldSync-0CL0RTpg.js.map +1 -0
  91. package/dist/{SelectTrigger-D4AjiMKp.js → SelectTrigger-C1U-PlLz.js} +6 -3
  92. package/dist/SelectTrigger-C1U-PlLz.js.map +1 -0
  93. package/dist/SelectTrigger.js +1 -1
  94. package/dist/{SelectTriggerBase-D9GuxPxR.js → SelectTriggerBase-RHD4FTQE.js} +3 -3
  95. package/dist/{SelectTriggerBase-D9GuxPxR.js.map → SelectTriggerBase-RHD4FTQE.js.map} +1 -1
  96. package/dist/SelectTriggerBase.css +65 -59
  97. package/dist/SelectTriggerBase.module-B0NFRlQP.js +36 -0
  98. package/dist/SelectTriggerBase.module-B0NFRlQP.js.map +1 -0
  99. package/dist/Table.js +1 -1
  100. package/dist/{TextField-Qv6OqiKQ.js → TextField-BYGSTwkL.js} +2 -2
  101. package/dist/{TextField-Qv6OqiKQ.js.map → TextField-BYGSTwkL.js.map} +1 -1
  102. package/dist/{TextField-DNuEXKyN.js → TextField-BZ3h2mqU.js} +3 -3
  103. package/dist/{TextField-DNuEXKyN.js.map → TextField-BZ3h2mqU.js.map} +1 -1
  104. package/dist/TextField.js +1 -1
  105. package/dist/{Textarea-DdLD4imO.js → Textarea-Cb0Qs2FH.js} +8 -3
  106. package/dist/Textarea-Cb0Qs2FH.js.map +1 -0
  107. package/dist/Textarea.js +1 -1
  108. package/dist/{TimeField-C39hYluo.js → TimeField-DBtJYC7t.js} +4 -4
  109. package/dist/{TimeField-C39hYluo.js.map → TimeField-DBtJYC7t.js.map} +1 -1
  110. package/dist/TimeField.js +1 -1
  111. package/dist/Toast.js +2 -2
  112. package/dist/{Toaster-DJ4tNy-0.js → Toaster-Cerf91qp.js} +2 -2
  113. package/dist/{Toaster-DJ4tNy-0.js.map → Toaster-Cerf91qp.js.map} +1 -1
  114. package/dist/{Toaster-DyDVYq4x.js → Toaster-DDrGllhh.js} +3 -3
  115. package/dist/{Toaster-DyDVYq4x.js.map → Toaster-DDrGllhh.js.map} +1 -1
  116. package/dist/{Toolbar-Vw9V1RHr.js → Toolbar-K9UFfyvX.js} +127 -41
  117. package/dist/Toolbar-K9UFfyvX.js.map +1 -0
  118. package/dist/Toolbar.js +1 -1
  119. package/dist/{Tooltip-CBy7srE2.js → Tooltip-CkfkiQPz.js} +2 -2
  120. package/dist/{Tooltip-CBy7srE2.js.map → Tooltip-CkfkiQPz.js.map} +1 -1
  121. package/dist/Tooltip.js +1 -1
  122. package/dist/{YearlessDateInputWithPicker-DMGx3gE2.js → YearlessDateInputWithPicker-BIkxKxPi.js} +4 -4
  123. package/dist/{YearlessDateInputWithPicker-DMGx3gE2.js.map → YearlessDateInputWithPicker-BIkxKxPi.js.map} +1 -1
  124. package/dist/beta/components/MultiSelectField/MultiSelectField.d.ts +27 -0
  125. package/dist/beta/components/MultiSelectField/MultiSelectFieldSync.d.ts +63 -0
  126. package/dist/beta/components/MultiSelectField/index.d.ts +3 -0
  127. package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldInput.d.ts +79 -0
  128. package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldList.d.ts +26 -0
  129. package/dist/beta/components/MultiSelectField/internal/useComboMultiple.d.ts +44 -0
  130. package/dist/beta/components/MultiSelectField/stories/MultiSelectField.stories.data.d.ts +19 -0
  131. package/dist/beta/components/MultiSelectField/types.d.ts +311 -0
  132. package/dist/beta/components/SelectField/internal/FieldDialog/FieldDialog.d.ts +3 -1
  133. package/dist/beta/components/SelectField/internal/FieldPopover/FieldPopover.d.ts +1 -0
  134. package/dist/beta/components/SelectField/internal/SelectFieldInput.d.ts +3 -1
  135. package/dist/beta/components/SelectField/internal/SelectFieldLabel.d.ts +11 -3
  136. package/dist/beta/components/SelectField/internal/SelectFieldListItem.d.ts +2 -1
  137. package/dist/beta/components/SelectField/types.d.ts +19 -1
  138. package/dist/beta/components/index.d.ts +1 -0
  139. package/dist/beta.js +7 -5
  140. package/dist/beta.js.map +1 -1
  141. package/dist/components/Button/Button.figma.d.ts +1 -0
  142. package/dist/components/Combobox/ComboboxTypes.d.ts +1 -1
  143. package/dist/components/Combobox/internal/ComboboxLegacy/ComboboxLegacyTrigger.d.ts +2 -2
  144. package/dist/components/FieldLabel/FieldLabel.d.ts +5 -1
  145. package/dist/components/FieldLabel/internal/FieldLabelMoreInfoIcon.d.ts +3 -1
  146. package/dist/components/Icon/Icons.figma.d.ts +11 -0
  147. package/dist/components/ListView/ListView.d.ts +2 -9
  148. package/dist/components/ListView/internal/types.d.ts +12 -0
  149. package/dist/components/SelectTrigger/SelectTrigger.d.ts +1 -1
  150. package/dist/components/Switch/Switch.figma.d.ts +1 -0
  151. package/dist/components/Textarea/Textarea.d.ts +1 -1
  152. package/dist/index.js +34 -34
  153. package/dist/internal/components/Label/Label.d.ts +13 -3
  154. package/dist/internal/hooks/useOnClickOutside/useOnClickOutside.d.ts +8 -7
  155. package/dist/types/props.d.ts +5 -0
  156. package/dist/{useInitialFocus-BpmW7pDB.js → useInitialFocus-D_ESGka7.js} +3 -3
  157. package/dist/{useInitialFocus-BpmW7pDB.js.map → useInitialFocus-D_ESGka7.js.map} +1 -1
  158. package/dist/useOnClickOutside-Zw5vzxSq.js +71 -0
  159. package/dist/useOnClickOutside-Zw5vzxSq.js.map +1 -0
  160. package/dist/useOpenCloseTransitionStates-CiTYrLGi.js +68 -0
  161. package/dist/useOpenCloseTransitionStates-CiTYrLGi.js.map +1 -0
  162. package/dist/{usePopoverSupport-CCSCHnit.js → usePopoverSupport-CldZmxFl.js} +2 -2
  163. package/dist/{usePopoverSupport-CCSCHnit.js.map → usePopoverSupport-CldZmxFl.js.map} +1 -1
  164. package/dist/{utils-Bkbn9cyk.js → utils-u8cyv323.js} +2 -2
  165. package/dist/{utils-Bkbn9cyk.js.map → utils-u8cyv323.js.map} +1 -1
  166. package/package.json +4 -3
  167. package/dist/Checkbox-DbBeuNdW.js.map +0 -1
  168. package/dist/Combobox-DGAa9vgU.js.map +0 -1
  169. package/dist/Dialog-BwabBKoZ.js.map +0 -1
  170. package/dist/FieldLabel-jqlQ1Ldh.js.map +0 -1
  171. package/dist/ListView-D8mfK8Lu.js.map +0 -1
  172. package/dist/SelectFieldSync-D4VdOXoY.js +0 -1134
  173. package/dist/SelectFieldSync-D4VdOXoY.js.map +0 -1
  174. package/dist/SelectTrigger-D4AjiMKp.js.map +0 -1
  175. package/dist/SelectTriggerBase.module-Ce49lamD.js +0 -35
  176. package/dist/SelectTriggerBase.module-Ce49lamD.js.map +0 -1
  177. package/dist/Textarea-DdLD4imO.js.map +0 -1
  178. package/dist/Toolbar-Vw9V1RHr.js.map +0 -1
  179. package/dist/useOnClickOutside-BDzuUjmY.js +0 -147
  180. package/dist/useOnClickOutside-BDzuUjmY.js.map +0 -1
  181. /package/dist/{SelectFieldSync.css → FieldDialog.css} +0 -0
@@ -2,7 +2,7 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
3
  import { useState, useEffect, useContext, createContext, useId, useRef, useCallback, forwardRef, useMemo } from 'react';
4
4
  import { B as Button } from './Button-92_FKAyV.js';
5
- import { T as Tooltip } from './Tooltip-CBy7srE2.js';
5
+ import { T as Tooltip } from './Tooltip-CkfkiQPz.js';
6
6
  import { g as getKeyboardFocusableElements } from './getKeyboardFocusableElements-QqcABz0D.js';
7
7
  import { c as cx } from './index-tZvMCc77.js';
8
8
  import { u as useIntersectionObserver } from './useIntersectionObserver-BEmMDO3P.js';
@@ -11,24 +11,25 @@ import { B as ButtonToggle } from './ButtonToggle--sKvhBoA.js';
11
11
  import { B as ButtonLink } from './ButtonLink-C0zR7Wnb.js';
12
12
  import { S as SvgArrowDropDown } from './arrow_drop_down-ChAdBDux.js';
13
13
  import { L as Listbox } from './Listbox-C-n4IVVj.js';
14
- import { P as Popover } from './Popover-CCXrzBul.js';
14
+ import { P as Popover } from './Popover-D9SmGQTh.js';
15
15
  import { F as Flex } from './Flex-CjPHUTeq.js';
16
16
  import { S as SvgMoreHoriz } from './more_horiz-DJgdQiy0.js';
17
17
  import { S as SvgMoreVert } from './more_vert-C_lJSyxt.js';
18
18
  import { I as Icon } from './Icon-BSuTVNaa.js';
19
19
  import { S as SvgClose } from './close-DZj38AEh.js';
20
+ import { t as tabbable } from './DrawerContext-rJvgnn3O.js';
20
21
  import { S as SvgKeyboardArrowDown } from './keyboard_arrow_down-C8WQ38p1.js';
21
22
  import { S as SvgEvent } from './event-BEJFimi3.js';
22
- import { D as DateTime } from './Calendar-CAYitkfM.js';
23
+ import { D as DateTime } from './Calendar-BeFARXwq.js';
23
24
  import { C as Chip } from './Chip-UqdorCE2.js';
24
- import { L as ListView } from './ListView-D8mfK8Lu.js';
25
+ import { L as ListView } from './ListView-C5OBwbHe.js';
25
26
  import { S as SearchField, a as SvgSearch } from './SearchField-CJAo8dE0.js';
26
- import { u as useDateFieldSingleConversion, a as useDateFieldSingleState, M as MaskedDateInput, b as DateFieldSingleCalendar, D as DateFieldSingle } from './DateFieldSingle-DAtR8ImE.js';
27
- import { u as useDateFieldRangeConversion, a as useDateFieldRangeState, M as MaskedDateRangeInput, b as DateFieldRangeCalendar, D as DateFieldRange } from './DateFieldRange-ZAic_9mt.js';
28
- import { C as Checkbox } from './Checkbox-zAKOGEBl.js';
29
- import { R as Radio } from './Radio-jj0-1dOg.js';
30
- import { C as Combobox } from './Combobox-DGAa9vgU.js';
31
- import { D as Drawer } from './Drawer-GXeoK-r9.js';
27
+ import { u as useDateFieldSingleConversion, a as useDateFieldSingleState, M as MaskedDateInput, b as DateFieldSingleCalendar, D as DateFieldSingle } from './DateFieldSingle-CQ6X-bVX.js';
28
+ import { u as useDateFieldRangeConversion, a as useDateFieldRangeState, M as MaskedDateRangeInput, b as DateFieldRangeCalendar, D as DateFieldRange } from './DateFieldRange-DWAgi_T9.js';
29
+ import { C as Checkbox } from './Checkbox-Chck2V5C.js';
30
+ import { R as Radio } from './Radio-Cds2laHA.js';
31
+ import { C as Combobox } from './Combobox-BTTWNSW1.js';
32
+ import { D as Drawer } from './Drawer-CWogbC68.js';
32
33
  import { d as BreakpointSm, c as BreakpointMd, b as BreakpointLg, a as BreakpointXl, B as BreakpointXxl } from './primitive-BByug0kD.js';
33
34
  import { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
34
35
  import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-BlIWftBb.js';
@@ -739,8 +740,9 @@ const getActiveFilters = (filters) => {
739
740
  case "multiSelect":
740
741
  return filter.selectedItems && filter.selectedItems.length > 0;
741
742
  case "date":
742
- case "dateRange":
743
743
  return filter.value !== null && filter.value !== void 0;
744
+ case "dateRange":
745
+ return filter.value !== null && filter.value !== void 0 && filter.value.startDate !== null && filter.value.endDate !== null;
744
746
  default:
745
747
  return false;
746
748
  }
@@ -912,11 +914,19 @@ const cloneFiltersWithItemRefs = (filters) => {
912
914
  ...filter,
913
915
  value: filter.value
914
916
  };
915
- case "custom":
916
- return {
917
- ...filter,
918
- value: filter.value ? { ...filter.value } : void 0
919
- };
917
+ case "custom": {
918
+ const { value } = filter;
919
+ if (value === void 0) {
920
+ return { ...filter, value: void 0 };
921
+ }
922
+ if (Array.isArray(value)) {
923
+ return { ...filter, value: [...value] };
924
+ }
925
+ if (typeof value === "object" && value !== null) {
926
+ return { ...filter, value: { ...value } };
927
+ }
928
+ return { ...filter, value };
929
+ }
920
930
  default:
921
931
  return { ...filter };
922
932
  }
@@ -954,6 +964,7 @@ const FilterSelect = ({
954
964
  onDraftChange
955
965
  }) => {
956
966
  const isMultiSelect = filter.type === "multiSelect";
967
+ const listRef = useRef(null);
957
968
  const handleSearch = useCallback(
958
969
  (e) => {
959
970
  filter.onSearch?.(e.target.value);
@@ -963,8 +974,20 @@ const FilterSelect = ({
963
974
  const handleSearchClear = useCallback(() => {
964
975
  filter.onSearchClear?.();
965
976
  }, [filter]);
977
+ const handleSearchKeyDown = useCallback(
978
+ (e) => {
979
+ if (e.key === "ArrowDown" && listRef.current) {
980
+ e.preventDefault();
981
+ const focusableElements = tabbable(listRef.current);
982
+ if (focusableElements.length > 0) {
983
+ focusableElements[0].focus();
984
+ }
985
+ }
986
+ },
987
+ []
988
+ );
966
989
  const singleSelectList = useMemo(
967
- () => /* @__PURE__ */ jsx(
990
+ () => /* @__PURE__ */ jsx("div", { ref: listRef, children: /* @__PURE__ */ jsx(
968
991
  Listbox,
969
992
  {
970
993
  items: filter.items,
@@ -974,14 +997,22 @@ const FilterSelect = ({
974
997
  },
975
998
  disableAutoSelectOnFocus: true,
976
999
  style: { paddingInline: "1rem", paddingBlockStart: "1rem" },
977
- children: ({ items }) => items.map((item) => /* @__PURE__ */ jsx(Listbox.Option, { item, disabled: item.disabled, children: item.label }, item.id))
1000
+ children: ({ items }) => items.map((item) => /* @__PURE__ */ jsx(
1001
+ Listbox.Option,
1002
+ {
1003
+ item,
1004
+ disabled: item.disabled,
1005
+ children: item.label
1006
+ },
1007
+ item.id
1008
+ ))
978
1009
  },
979
1010
  filter.id
980
- ),
1011
+ ) }),
981
1012
  [filter.id, filter.items, draftValue, onDraftChange]
982
1013
  );
983
1014
  const multiSelectList = useMemo(
984
- () => /* @__PURE__ */ jsx(
1015
+ () => /* @__PURE__ */ jsx("div", { ref: listRef, children: /* @__PURE__ */ jsx(
985
1016
  ListView,
986
1017
  {
987
1018
  items: filter.items,
@@ -994,7 +1025,7 @@ const FilterSelect = ({
994
1025
  children: ({ items }) => items.map((item) => /* @__PURE__ */ jsx(ListView.Option, { item, children: item.label }, item.id))
995
1026
  },
996
1027
  filter.id
997
- ),
1028
+ ) }),
998
1029
  [filter.id, filter.items, draftValue, onDraftChange]
999
1030
  );
1000
1031
  return /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -1005,6 +1036,7 @@ const FilterSelect = ({
1005
1036
  className: styles$2["filter-select-search"],
1006
1037
  onChange: handleSearch,
1007
1038
  onClear: handleSearchClear,
1039
+ onKeyDown: handleSearchKeyDown,
1008
1040
  "data-anv": "filter-select-search"
1009
1041
  }
1010
1042
  ),
@@ -1076,7 +1108,7 @@ const FilterDateRange = ({
1076
1108
  onChange: (change) => {
1077
1109
  const hasCompleteRange = change.startDate && change.endDate;
1078
1110
  const isClearingRange = change.isInputEmpty;
1079
- if (change.isInputValid && (hasCompleteRange || isClearingRange)) {
1111
+ if (change.isInputValid && hasCompleteRange || isClearingRange) {
1080
1112
  onChange({ ...change, isDateRangeValid: true });
1081
1113
  }
1082
1114
  }
@@ -1116,6 +1148,8 @@ const FilterButton = ({
1116
1148
  filter.type === "multiSelect" ? [] : void 0
1117
1149
  );
1118
1150
  const draftValueRef = useRef(draftValue);
1151
+ const triggerRef = useRef(null);
1152
+ const contentRef = useRef(null);
1119
1153
  useEffect(() => {
1120
1154
  draftValueRef.current = draftValue;
1121
1155
  }, [draftValue]);
@@ -1155,6 +1189,9 @@ const FilterButton = ({
1155
1189
  if (!controlledFiltering && filter.type !== "multiSelect") {
1156
1190
  updateFilter(filter.id, value, true);
1157
1191
  setIsOpen(false);
1192
+ requestAnimationFrame(() => {
1193
+ triggerRef.current?.focus();
1194
+ });
1158
1195
  }
1159
1196
  }
1160
1197
  },
@@ -1166,15 +1203,24 @@ const FilterButton = ({
1166
1203
  updateFilter(filter.id, draftValue, true);
1167
1204
  }
1168
1205
  setIsOpen(false);
1206
+ requestAnimationFrame(() => {
1207
+ triggerRef.current?.focus();
1208
+ });
1169
1209
  }, [draftValue, getCurrentFilterValue, filter.id, updateFilter]);
1170
1210
  const handleCancel = useCallback(() => {
1171
1211
  if (!controlledFiltering) {
1172
1212
  setIsOpen(false);
1213
+ requestAnimationFrame(() => {
1214
+ triggerRef.current?.focus();
1215
+ });
1173
1216
  return;
1174
1217
  }
1175
1218
  const originalValue = getCurrentFilterValue();
1176
1219
  setDraftValue(originalValue);
1177
1220
  setIsOpen(false);
1221
+ requestAnimationFrame(() => {
1222
+ triggerRef.current?.focus();
1223
+ });
1178
1224
  }, [controlledFiltering, getCurrentFilterValue]);
1179
1225
  const getButtonLabel = useMemo(() => {
1180
1226
  switch (filter.type) {
@@ -1211,7 +1257,7 @@ const FilterButton = ({
1211
1257
  }
1212
1258
  return filter.label;
1213
1259
  case "dateRange":
1214
- if (filter.value) {
1260
+ if (filter.value?.startDate && filter.value?.endDate) {
1215
1261
  const start = DateTime.fromISO(filter.value.startDate, {
1216
1262
  zone: "local"
1217
1263
  });
@@ -1306,9 +1352,37 @@ const FilterButton = ({
1306
1352
  if (e.key === "Escape") {
1307
1353
  handleOutsidePress();
1308
1354
  }
1355
+ if (e.key === "Tab" && contentRef.current) {
1356
+ const focusableElements = tabbable(contentRef.current);
1357
+ if (focusableElements.length === 0) return;
1358
+ const firstElement = focusableElements[0];
1359
+ const lastElement = focusableElements[focusableElements.length - 1];
1360
+ const activeElement = document.activeElement;
1361
+ if (e.shiftKey && activeElement === firstElement) {
1362
+ e.preventDefault();
1363
+ lastElement.focus();
1364
+ } else if (!e.shiftKey && activeElement === lastElement) {
1365
+ e.preventDefault();
1366
+ firstElement.focus();
1367
+ }
1368
+ }
1369
+ };
1370
+ const handleTriggerKeyDown = (e) => {
1371
+ if (e.key === "ArrowDown") {
1372
+ if (isOpen && contentRef.current) {
1373
+ e.preventDefault();
1374
+ requestAnimationFrame(() => {
1375
+ if (!contentRef.current) return;
1376
+ const focusableElements = tabbable(contentRef.current);
1377
+ if (focusableElements.length > 0) {
1378
+ focusableElements[0].focus();
1379
+ }
1380
+ });
1381
+ }
1382
+ }
1309
1383
  };
1310
1384
  const triggerClasses = cx(styles$2["filter-button-trigger"], {
1311
- [styles$2["filter-button-trigger--selected"]]: filter.type === "custom" && filter.value || filter.type === "singleSelect" && filter.selectedItem || filter.type === "multiSelect" && filter.selectedItems && filter.selectedItems.length > 0 || filter.type === "date" && filter.value || filter.type === "dateRange" && filter.value
1385
+ [styles$2["filter-button-trigger--selected"]]: filter.type === "custom" && filter.value || filter.type === "singleSelect" && filter.selectedItem || filter.type === "multiSelect" && filter.selectedItems && filter.selectedItems.length > 0 || filter.type === "date" && filter.value || filter.type === "dateRange" && filter.value?.startDate && filter.value?.endDate
1312
1386
  });
1313
1387
  const contentClasses = cx(styles$2["filter-button-content"], className);
1314
1388
  const iconOptions = filter.type === "date" || filter.type === "dateRange" ? { before: SvgEvent } : { after: SvgKeyboardArrowDown };
@@ -1323,7 +1397,11 @@ const FilterButton = ({
1323
1397
  /* @__PURE__ */ jsx(
1324
1398
  Popover.Button,
1325
1399
  {
1326
- onKeyDown: handleKeyDown,
1400
+ ref: triggerRef,
1401
+ onKeyDown: (e) => {
1402
+ handleTriggerKeyDown(e);
1403
+ handleKeyDown(e);
1404
+ },
1327
1405
  appearance: "ghost",
1328
1406
  size: "small",
1329
1407
  icon: iconOptions,
@@ -1336,21 +1414,29 @@ const FilterButton = ({
1336
1414
  children: getButtonLabel
1337
1415
  }
1338
1416
  ),
1339
- /* @__PURE__ */ jsxs(Popover.Content, { onKeyDown: handleKeyDown, className: contentClasses, children: [
1340
- getContent,
1341
- controlledFiltering && /* @__PURE__ */ jsxs(
1342
- Flex,
1343
- {
1344
- gap: 2,
1345
- justifyContent: "flex-end",
1346
- className: styles$2["filter-button-buttons"],
1347
- children: [
1348
- /* @__PURE__ */ jsx(Popover.Close, { size: "small", onClick: handleCancel, children: "Cancel" }),
1349
- /* @__PURE__ */ jsx(Button, { appearance: "primary", size: "small", onClick: handleSubmit, children: "Apply" })
1350
- ]
1351
- }
1352
- )
1353
- ] })
1417
+ /* @__PURE__ */ jsxs(
1418
+ Popover.Content,
1419
+ {
1420
+ ref: contentRef,
1421
+ onKeyDown: handleKeyDown,
1422
+ className: contentClasses,
1423
+ children: [
1424
+ getContent,
1425
+ controlledFiltering && /* @__PURE__ */ jsxs(
1426
+ Flex,
1427
+ {
1428
+ gap: 2,
1429
+ justifyContent: "flex-end",
1430
+ className: styles$2["filter-button-buttons"],
1431
+ children: [
1432
+ /* @__PURE__ */ jsx(Popover.Close, { size: "small", onClick: handleCancel, children: "Cancel" }),
1433
+ /* @__PURE__ */ jsx(Button, { appearance: "primary", size: "small", onClick: handleSubmit, children: "Apply" })
1434
+ ]
1435
+ }
1436
+ )
1437
+ ]
1438
+ }
1439
+ )
1354
1440
  ]
1355
1441
  }
1356
1442
  ) });
@@ -2190,4 +2276,4 @@ const Toolbar = Object.assign(ToolbarElement, {
2190
2276
  });
2191
2277
 
2192
2278
  export { Toolbar as T, ToolbarButton as a, ToolbarButtonToggle as b, ToolbarButtonLink as c, ToolbarSelect as d, ToolbarControlGroup as e, ToolbarSearchField as f, ToolbarElement as g };
2193
- //# sourceMappingURL=Toolbar-Vw9V1RHr.js.map
2279
+ //# sourceMappingURL=Toolbar-K9UFfyvX.js.map