@jobber/components 9.10.0 → 9.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/dist/Autocomplete/index.cjs +0 -2
  2. package/dist/Autocomplete/index.mjs +0 -2
  3. package/dist/Autocomplete-cjs.js +4 -5
  4. package/dist/Autocomplete-es.js +1 -2
  5. package/dist/Card/index.cjs +1 -2
  6. package/dist/Card/index.mjs +1 -2
  7. package/dist/Chip/index.cjs +0 -2
  8. package/dist/Chip/index.mjs +0 -2
  9. package/dist/Chips/InternalChipDismissible/hooks/index.cjs +0 -2
  10. package/dist/Chips/InternalChipDismissible/hooks/index.mjs +0 -2
  11. package/dist/Chips/InternalChipDismissible/index.cjs +0 -2
  12. package/dist/Chips/InternalChipDismissible/index.mjs +0 -2
  13. package/dist/Chips/index.cjs +0 -2
  14. package/dist/Chips/index.mjs +0 -2
  15. package/dist/Combobox/index.cjs +2 -4
  16. package/dist/Combobox/index.mjs +2 -4
  17. package/dist/ComboboxPrimitive-cjs.js +29 -30
  18. package/dist/ComboboxPrimitive-es.js +2 -3
  19. package/dist/{ComboboxChipRemove-cjs.js → ComboboxSeparator-cjs.js} +501 -455
  20. package/dist/{ComboboxChipRemove-es.js → ComboboxSeparator-es.js} +500 -456
  21. package/dist/ConfirmationModal/index.cjs +0 -2
  22. package/dist/ConfirmationModal/index.mjs +0 -2
  23. package/dist/DataDump/index.cjs +1 -2
  24. package/dist/DataDump/index.mjs +1 -2
  25. package/dist/DataList/components/DataListActions/index.cjs +0 -2
  26. package/dist/DataList/components/DataListActions/index.mjs +0 -2
  27. package/dist/DataList/components/DataListBulkActions/index.cjs +0 -2
  28. package/dist/DataList/components/DataListBulkActions/index.mjs +0 -2
  29. package/dist/DataList/components/DataListFilters/components/DataListSort/index.cjs +0 -2
  30. package/dist/DataList/components/DataListFilters/components/DataListSort/index.mjs +0 -2
  31. package/dist/DataList/components/DataListFilters/index.cjs +0 -2
  32. package/dist/DataList/components/DataListFilters/index.mjs +0 -2
  33. package/dist/DataList/components/DataListHeader/index.cjs +0 -2
  34. package/dist/DataList/components/DataListHeader/index.mjs +0 -2
  35. package/dist/DataList/components/DataListItem/index.cjs +0 -2
  36. package/dist/DataList/components/DataListItem/index.mjs +0 -2
  37. package/dist/DataList/components/DataListItemActions/index.cjs +0 -2
  38. package/dist/DataList/components/DataListItemActions/index.mjs +0 -2
  39. package/dist/DataList/components/DataListItemActionsOverflow/index.cjs +0 -2
  40. package/dist/DataList/components/DataListItemActionsOverflow/index.mjs +0 -2
  41. package/dist/DataList/components/DataListItems/index.cjs +0 -2
  42. package/dist/DataList/components/DataListItems/index.mjs +0 -2
  43. package/dist/DataList/components/DataListLayout/index.cjs +0 -2
  44. package/dist/DataList/components/DataListLayout/index.mjs +0 -2
  45. package/dist/DataList/components/DataListLayoutActions/index.cjs +0 -2
  46. package/dist/DataList/components/DataListLayoutActions/index.mjs +0 -2
  47. package/dist/DataList/index.cjs +0 -2
  48. package/dist/DataList/index.mjs +0 -2
  49. package/dist/DatePicker/index.cjs +0 -2
  50. package/dist/DatePicker/index.mjs +0 -2
  51. package/dist/DatePicker-cjs.js +4 -5
  52. package/dist/DatePicker-es.js +1 -2
  53. package/dist/Dialog/index.cjs +1 -2
  54. package/dist/Dialog/index.mjs +1 -2
  55. package/dist/DrawerDescription-cjs.js +268 -99
  56. package/dist/DrawerDescription-es.js +270 -103
  57. package/dist/DrawerTitle-cjs.js +2 -6
  58. package/dist/DrawerTitle-es.js +3 -7
  59. package/dist/FieldDescription-cjs.js +184 -181
  60. package/dist/FieldDescription-es.js +187 -184
  61. package/dist/FilterPicker/components/FilterPickerActivator/index.cjs +0 -2
  62. package/dist/FilterPicker/components/FilterPickerActivator/index.mjs +0 -2
  63. package/dist/FilterPicker/components/FilterPickerContent/index.cjs +0 -2
  64. package/dist/FilterPicker/components/FilterPickerContent/index.mjs +0 -2
  65. package/dist/FilterPicker/components/FilterPickerTrigger/index.cjs +0 -2
  66. package/dist/FilterPicker/components/FilterPickerTrigger/index.mjs +0 -2
  67. package/dist/FilterPicker/index.cjs +0 -2
  68. package/dist/FilterPicker/index.mjs +0 -2
  69. package/dist/FilterPickerContent-cjs.js +4 -5
  70. package/dist/FilterPickerContent-es.js +1 -2
  71. package/dist/FormatFile/index.cjs +0 -2
  72. package/dist/FormatFile/index.mjs +0 -2
  73. package/dist/Gallery/index.cjs +1 -2
  74. package/dist/Gallery/index.mjs +1 -2
  75. package/dist/InputDate/index.cjs +0 -2
  76. package/dist/InputDate/index.mjs +0 -2
  77. package/dist/InputNumber/index.cjs +1 -2
  78. package/dist/InputNumber/index.mjs +1 -2
  79. package/dist/LightBox/index.cjs +1 -2
  80. package/dist/LightBox/index.mjs +1 -2
  81. package/dist/Menu/index.cjs +1 -2
  82. package/dist/Menu/index.mjs +1 -2
  83. package/dist/Menu-cjs.js +4 -5
  84. package/dist/Menu-es.js +1 -2
  85. package/dist/MenuSubmenuTrigger-cjs.js +206 -164
  86. package/dist/MenuSubmenuTrigger-es.js +194 -152
  87. package/dist/Modal/index.cjs +0 -2
  88. package/dist/Modal/index.mjs +1 -3
  89. package/dist/NumberFieldInput-cjs.js +187 -308
  90. package/dist/NumberFieldInput-es.js +187 -308
  91. package/dist/Page/index.cjs +1 -2
  92. package/dist/Page/index.mjs +1 -2
  93. package/dist/Popover/index.cjs +0 -2
  94. package/dist/Popover/index.mjs +0 -2
  95. package/dist/Popover-cjs.js +7 -8
  96. package/dist/Popover-es.js +1 -2
  97. package/dist/ScrollAreaViewport-cjs.js +747 -1093
  98. package/dist/ScrollAreaViewport-es.js +734 -1081
  99. package/dist/Select/index.cjs +1 -2
  100. package/dist/Select/index.mjs +1 -2
  101. package/dist/SelectGroupLabel-cjs.js +207 -306
  102. package/dist/SelectGroupLabel-es.js +203 -302
  103. package/dist/Tooltip/index.cjs +0 -2
  104. package/dist/Tooltip/index.mjs +0 -2
  105. package/dist/Tooltip-cjs.js +6 -7
  106. package/dist/Tooltip-es.js +1 -2
  107. package/dist/dialogReturnFocus-cjs.js +1 -1
  108. package/dist/dialogReturnFocus-es.js +2 -2
  109. package/dist/floating-ui.react-cjs.js +2557 -185
  110. package/dist/floating-ui.react-es.js +2512 -149
  111. package/dist/index.cjs +3 -4
  112. package/dist/index.mjs +3 -4
  113. package/dist/primitives/BottomSheet/index.cjs +1 -1
  114. package/dist/primitives/BottomSheet/index.mjs +1 -1
  115. package/dist/primitives/ComboboxPrimitive/index.cjs +2 -4
  116. package/dist/primitives/ComboboxPrimitive/index.mjs +2 -4
  117. package/dist/primitives/SelectPrimitive/index.cjs +0 -2
  118. package/dist/primitives/SelectPrimitive/index.mjs +0 -2
  119. package/dist/primitives/index.cjs +2 -3
  120. package/dist/primitives/index.mjs +2 -3
  121. package/dist/scrollEdges-cjs.js +1 -11
  122. package/dist/scrollEdges-es.js +1 -11
  123. package/dist/scrollable-cjs.js +58 -0
  124. package/dist/scrollable-es.js +54 -0
  125. package/dist/unstyledPrimitives/index.cjs +720 -478
  126. package/dist/unstyledPrimitives/index.mjs +663 -421
  127. package/dist/useCompositeListItem-cjs.js +2108 -361
  128. package/dist/useCompositeListItem-es.js +2076 -331
  129. package/dist/useLabel-cjs.js +2 -3
  130. package/dist/useLabel-es.js +2 -3
  131. package/dist/useRenderElement-cjs.js +9 -7
  132. package/dist/useRenderElement-es.js +9 -7
  133. package/dist/useScrollLock-cjs.js +819 -344
  134. package/dist/useScrollLock-es.js +732 -296
  135. package/dist/useScrollToActive-cjs.js +4 -5
  136. package/dist/useScrollToActive-es.js +1 -2
  137. package/package.json +3 -3
  138. package/dist/floating-ui.react-dom-cjs.js +0 -2103
  139. package/dist/floating-ui.react-dom-es.js +0 -2072
  140. package/dist/floating-ui.utils-cjs.js +0 -342
  141. package/dist/floating-ui.utils-es.js +0 -300
package/dist/index.cjs CHANGED
@@ -104,10 +104,8 @@ require('./keysIn-cjs.js');
104
104
  require('./_isIterateeCall-cjs.js');
105
105
  require('./_setToString-cjs.js');
106
106
  require('./floating-ui.react-cjs.js');
107
- require('./floating-ui.utils-cjs.js');
108
107
  require('react/jsx-runtime');
109
108
  require('react-dom');
110
- require('./floating-ui.react-dom-cjs.js');
111
109
  require('./maxHeight-cjs.js');
112
110
  require('./mergeRefs-cjs.js');
113
111
  require('./filterDataAttributes-cjs.js');
@@ -119,12 +117,12 @@ require('./buttonRenderAdapter-cjs.js');
119
117
  require('./useRenderElement-cjs.js');
120
118
  require('./ComboboxPrimitive-cjs.js');
121
119
  require('./mergeClassName-cjs.js');
122
- require('./ComboboxChipRemove-cjs.js');
120
+ require('./ComboboxSeparator-cjs.js');
123
121
  require('./useScrollLock-cjs.js');
124
122
  require('./useCompositeListItem-cjs.js');
125
123
  require('./stringifyLocale-cjs.js');
124
+ require('./scrollable-cjs.js');
126
125
  require('./useLabel-cjs.js');
127
- require('./Separator-cjs.js');
128
126
  require('./HelperText-cjs.js');
129
127
  require('./FieldDescription-cjs.js');
130
128
  require('./useChildComponent-cjs.js');
@@ -186,6 +184,7 @@ require('./DataListStatusBar-cjs.js');
186
184
  require('./ScrollAreaViewport-cjs.js');
187
185
  require('./scrollEdges-cjs.js');
188
186
  require('./OverlaySeparator-cjs.js');
187
+ require('./Separator-cjs.js');
189
188
  require('./BottomSheet-cjs.js');
190
189
  require('./SelectPrimitive-cjs.js');
191
190
  require('./SelectGroupLabel-cjs.js');
package/dist/index.mjs CHANGED
@@ -102,10 +102,8 @@ import './keysIn-es.js';
102
102
  import './_isIterateeCall-es.js';
103
103
  import './_setToString-es.js';
104
104
  import './floating-ui.react-es.js';
105
- import './floating-ui.utils-es.js';
106
105
  import 'react/jsx-runtime';
107
106
  import 'react-dom';
108
- import './floating-ui.react-dom-es.js';
109
107
  import './maxHeight-es.js';
110
108
  import './mergeRefs-es.js';
111
109
  import './filterDataAttributes-es.js';
@@ -117,12 +115,12 @@ import './buttonRenderAdapter-es.js';
117
115
  import './useRenderElement-es.js';
118
116
  import './ComboboxPrimitive-es.js';
119
117
  import './mergeClassName-es.js';
120
- import './ComboboxChipRemove-es.js';
118
+ import './ComboboxSeparator-es.js';
121
119
  import './useScrollLock-es.js';
122
120
  import './useCompositeListItem-es.js';
123
121
  import './stringifyLocale-es.js';
122
+ import './scrollable-es.js';
124
123
  import './useLabel-es.js';
125
- import './Separator-es.js';
126
124
  import './HelperText-es.js';
127
125
  import './FieldDescription-es.js';
128
126
  import './useChildComponent-es.js';
@@ -184,6 +182,7 @@ import './DataListStatusBar-es.js';
184
182
  import './ScrollAreaViewport-es.js';
185
183
  import './scrollEdges-es.js';
186
184
  import './OverlaySeparator-es.js';
185
+ import './Separator-es.js';
187
186
  import './BottomSheet-es.js';
188
187
  import './SelectPrimitive-es.js';
189
188
  import './SelectGroupLabel-es.js';
@@ -13,10 +13,10 @@ require('../../Typography-cjs.js');
13
13
  require('../../useRenderElement-cjs.js');
14
14
  require('../../ScrollAreaViewport-cjs.js');
15
15
  require('../../useScrollLock-cjs.js');
16
- require('../../floating-ui.utils-cjs.js');
17
16
  require('react/jsx-runtime');
18
17
  require('react-dom');
19
18
  require('../../scrollEdges-cjs.js');
19
+ require('../../scrollable-cjs.js');
20
20
 
21
21
 
22
22
 
@@ -11,7 +11,7 @@ import '../../Typography-es.js';
11
11
  import '../../useRenderElement-es.js';
12
12
  import '../../ScrollAreaViewport-es.js';
13
13
  import '../../useScrollLock-es.js';
14
- import '../../floating-ui.utils-es.js';
15
14
  import 'react/jsx-runtime';
16
15
  import 'react-dom';
17
16
  import '../../scrollEdges-es.js';
17
+ import '../../scrollable-es.js';
@@ -12,16 +12,14 @@ require('@jobber/design');
12
12
  require('../../Typography-cjs.js');
13
13
  require('../../useRenderElement-cjs.js');
14
14
  require('../../mergeClassName-cjs.js');
15
- require('../../ComboboxChipRemove-cjs.js');
15
+ require('../../ComboboxSeparator-cjs.js');
16
16
  require('../../useScrollLock-cjs.js');
17
- require('../../floating-ui.utils-cjs.js');
18
17
  require('react/jsx-runtime');
19
18
  require('react-dom');
20
19
  require('../../useCompositeListItem-cjs.js');
21
- require('../../floating-ui.react-dom-cjs.js');
22
20
  require('../../stringifyLocale-cjs.js');
21
+ require('../../scrollable-cjs.js');
23
22
  require('../../useLabel-cjs.js');
24
- require('../../Separator-cjs.js');
25
23
 
26
24
 
27
25
 
@@ -10,13 +10,11 @@ import '@jobber/design';
10
10
  import '../../Typography-es.js';
11
11
  import '../../useRenderElement-es.js';
12
12
  import '../../mergeClassName-es.js';
13
- import '../../ComboboxChipRemove-es.js';
13
+ import '../../ComboboxSeparator-es.js';
14
14
  import '../../useScrollLock-es.js';
15
- import '../../floating-ui.utils-es.js';
16
15
  import 'react/jsx-runtime';
17
16
  import 'react-dom';
18
17
  import '../../useCompositeListItem-es.js';
19
- import '../../floating-ui.react-dom-es.js';
20
18
  import '../../stringifyLocale-es.js';
19
+ import '../../scrollable-es.js';
21
20
  import '../../useLabel-es.js';
22
- import '../../Separator-es.js';
@@ -12,11 +12,9 @@ require('../../Separator-cjs.js');
12
12
  require('../../useRenderElement-cjs.js');
13
13
  require('../../SelectGroupLabel-cjs.js');
14
14
  require('../../useScrollLock-cjs.js');
15
- require('../../floating-ui.utils-cjs.js');
16
15
  require('react/jsx-runtime');
17
16
  require('react-dom');
18
17
  require('../../useCompositeListItem-cjs.js');
19
- require('../../floating-ui.react-dom-cjs.js');
20
18
  require('../../scrollEdges-cjs.js');
21
19
 
22
20
 
@@ -10,9 +10,7 @@ import '../../Separator-es.js';
10
10
  import '../../useRenderElement-es.js';
11
11
  import '../../SelectGroupLabel-es.js';
12
12
  import '../../useScrollLock-es.js';
13
- import '../../floating-ui.utils-es.js';
14
13
  import 'react/jsx-runtime';
15
14
  import 'react-dom';
16
15
  import '../../useCompositeListItem-es.js';
17
- import '../../floating-ui.react-dom-es.js';
18
16
  import '../../scrollEdges-es.js';
@@ -18,15 +18,14 @@ require('@jobber/design');
18
18
  require('../Typography-cjs.js');
19
19
  require('../ScrollAreaViewport-cjs.js');
20
20
  require('../useScrollLock-cjs.js');
21
- require('../floating-ui.utils-cjs.js');
22
21
  require('react/jsx-runtime');
23
22
  require('react-dom');
24
23
  require('../scrollEdges-cjs.js');
24
+ require('../scrollable-cjs.js');
25
25
  require('../Text-cjs.js');
26
26
  require('../mergeClassName-cjs.js');
27
- require('../ComboboxChipRemove-cjs.js');
27
+ require('../ComboboxSeparator-cjs.js');
28
28
  require('../useCompositeListItem-cjs.js');
29
- require('../floating-ui.react-dom-cjs.js');
30
29
  require('../stringifyLocale-cjs.js');
31
30
  require('../useLabel-cjs.js');
32
31
  require('../SelectGroupLabel-cjs.js');
@@ -16,15 +16,14 @@ import '@jobber/design';
16
16
  import '../Typography-es.js';
17
17
  import '../ScrollAreaViewport-es.js';
18
18
  import '../useScrollLock-es.js';
19
- import '../floating-ui.utils-es.js';
20
19
  import 'react/jsx-runtime';
21
20
  import 'react-dom';
22
21
  import '../scrollEdges-es.js';
22
+ import '../scrollable-es.js';
23
23
  import '../Text-es.js';
24
24
  import '../mergeClassName-es.js';
25
- import '../ComboboxChipRemove-es.js';
25
+ import '../ComboboxSeparator-es.js';
26
26
  import '../useCompositeListItem-es.js';
27
- import '../floating-ui.react-dom-es.js';
28
27
  import '../stringifyLocale-es.js';
29
28
  import '../useLabel-es.js';
30
29
  import '../SelectGroupLabel-es.js';
@@ -28,10 +28,7 @@ const ARROW_LEFT = 'ArrowLeft';
28
28
  const ARROW_RIGHT = 'ArrowRight';
29
29
  const HOME = 'Home';
30
30
  const END = 'End';
31
- const HORIZONTAL_KEYS = new Set([ARROW_LEFT, ARROW_RIGHT]);
32
- const VERTICAL_KEYS = new Set([ARROW_UP, ARROW_DOWN]);
33
- const ARROW_KEYS = new Set([...HORIZONTAL_KEYS, ...VERTICAL_KEYS]);
34
- const COMPOSITE_KEYS = new Set([...ARROW_KEYS, HOME, END]);
31
+ const COMPOSITE_KEYS = new Set([ARROW_UP, ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, HOME, END]);
35
32
 
36
33
  function clamp(val, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {
37
34
  return Math.max(min, Math.min(val, max));
@@ -51,18 +48,11 @@ const styleDisableScrollbar = {
51
48
  };
52
49
  if (process.env.NODE_ENV !== "production") styleDisableScrollbar.getElement.displayName = "styleDisableScrollbar.getElement";
53
50
 
54
- /**
55
- * @internal
56
- */
57
51
  const CSPContext = /*#__PURE__*/React__namespace.createContext(undefined);
58
52
  if (process.env.NODE_ENV !== "production") CSPContext.displayName = "CSPContext";
59
53
  const DEFAULT_CSP_CONTEXT_VALUE = {
60
54
  disableStyleElements: false
61
55
  };
62
-
63
- /**
64
- * @internal
65
- */
66
56
  function useCSPContext() {
67
57
  return React__namespace.useContext(CSPContext) ?? DEFAULT_CSP_CONTEXT_VALUE;
68
58
  }
@@ -7,10 +7,7 @@ const ARROW_LEFT = 'ArrowLeft';
7
7
  const ARROW_RIGHT = 'ArrowRight';
8
8
  const HOME = 'Home';
9
9
  const END = 'End';
10
- const HORIZONTAL_KEYS = new Set([ARROW_LEFT, ARROW_RIGHT]);
11
- const VERTICAL_KEYS = new Set([ARROW_UP, ARROW_DOWN]);
12
- const ARROW_KEYS = new Set([...HORIZONTAL_KEYS, ...VERTICAL_KEYS]);
13
- const COMPOSITE_KEYS = new Set([...ARROW_KEYS, HOME, END]);
10
+ const COMPOSITE_KEYS = new Set([ARROW_UP, ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, HOME, END]);
14
11
 
15
12
  function clamp(val, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {
16
13
  return Math.max(min, Math.min(val, max));
@@ -30,18 +27,11 @@ const styleDisableScrollbar = {
30
27
  };
31
28
  if (process.env.NODE_ENV !== "production") styleDisableScrollbar.getElement.displayName = "styleDisableScrollbar.getElement";
32
29
 
33
- /**
34
- * @internal
35
- */
36
30
  const CSPContext = /*#__PURE__*/React.createContext(undefined);
37
31
  if (process.env.NODE_ENV !== "production") CSPContext.displayName = "CSPContext";
38
32
  const DEFAULT_CSP_CONTEXT_VALUE = {
39
33
  disableStyleElements: false
40
34
  };
41
-
42
- /**
43
- * @internal
44
- */
45
35
  function useCSPContext() {
46
36
  return React.useContext(CSPContext) ?? DEFAULT_CSP_CONTEXT_VALUE;
47
37
  }
@@ -0,0 +1,58 @@
1
+ 'use strict';
2
+
3
+ var useScrollLock = require('./useScrollLock-cjs.js');
4
+
5
+ function isScrollableY(element, allowOverflowIntent = false) {
6
+ const {
7
+ overflowY
8
+ } = useScrollLock.getComputedStyle(element);
9
+ if (overflowY !== 'auto' && overflowY !== 'scroll') {
10
+ return false;
11
+ }
12
+ // When `allowOverflowIntent` is true, a container that overflows only once extra space is
13
+ // added (e.g. drawer keyboard scroll slack) still counts, as long as it has layout size on
14
+ // the axis.
15
+ return allowOverflowIntent ? element.clientHeight > 0 : element.scrollHeight > element.clientHeight;
16
+ }
17
+ function isScrollableX(element, allowOverflowIntent = false) {
18
+ const {
19
+ overflowX
20
+ } = useScrollLock.getComputedStyle(element);
21
+ if (overflowX !== 'auto' && overflowX !== 'scroll') {
22
+ return false;
23
+ }
24
+ return allowOverflowIntent ? element.clientWidth > 0 : element.scrollWidth > element.clientWidth;
25
+ }
26
+ function isScrollable(element, axis, allowOverflowIntent = false) {
27
+ return axis === 'vertical' ? isScrollableY(element, allowOverflowIntent) : isScrollableX(element, allowOverflowIntent);
28
+ }
29
+ function hasScrollableAncestor(target, root, axes) {
30
+ // `getParentNode` crosses shadow boundaries (and slots), so a target inside a shadow root
31
+ // still walks up to scrollable ancestors in the light DOM.
32
+ let node = target;
33
+ while (useScrollLock.isHTMLElement(node) && node !== root && !useScrollLock.isLastTraversableNode(node)) {
34
+ for (const axis of axes) {
35
+ if (isScrollable(node, axis)) {
36
+ return true;
37
+ }
38
+ }
39
+ node = useScrollLock.getParentNode(node);
40
+ }
41
+ return false;
42
+ }
43
+ function findScrollableTouchTarget(target, root, axis = 'vertical', allowOverflowIntent = false) {
44
+ // `getParentNode` crosses shadow boundaries (and slots), so a target inside a shadow root
45
+ // still reaches a scrollable ancestor in the light DOM.
46
+ let node = useScrollLock.isHTMLElement(target) ? target : null;
47
+ while (useScrollLock.isHTMLElement(node) && node !== root && !useScrollLock.isLastTraversableNode(node)) {
48
+ if (isScrollable(node, axis, allowOverflowIntent)) {
49
+ return node;
50
+ }
51
+ node = useScrollLock.getParentNode(node);
52
+ }
53
+ return isScrollable(root, axis, allowOverflowIntent) ? root : null;
54
+ }
55
+
56
+ exports.findScrollableTouchTarget = findScrollableTouchTarget;
57
+ exports.hasScrollableAncestor = hasScrollableAncestor;
58
+ exports.isScrollableY = isScrollableY;
@@ -0,0 +1,54 @@
1
+ import { g as getComputedStyle, i as isHTMLElement, a as isLastTraversableNode, b as getParentNode } from './useScrollLock-es.js';
2
+
3
+ function isScrollableY(element, allowOverflowIntent = false) {
4
+ const {
5
+ overflowY
6
+ } = getComputedStyle(element);
7
+ if (overflowY !== 'auto' && overflowY !== 'scroll') {
8
+ return false;
9
+ }
10
+ // When `allowOverflowIntent` is true, a container that overflows only once extra space is
11
+ // added (e.g. drawer keyboard scroll slack) still counts, as long as it has layout size on
12
+ // the axis.
13
+ return allowOverflowIntent ? element.clientHeight > 0 : element.scrollHeight > element.clientHeight;
14
+ }
15
+ function isScrollableX(element, allowOverflowIntent = false) {
16
+ const {
17
+ overflowX
18
+ } = getComputedStyle(element);
19
+ if (overflowX !== 'auto' && overflowX !== 'scroll') {
20
+ return false;
21
+ }
22
+ return allowOverflowIntent ? element.clientWidth > 0 : element.scrollWidth > element.clientWidth;
23
+ }
24
+ function isScrollable(element, axis, allowOverflowIntent = false) {
25
+ return axis === 'vertical' ? isScrollableY(element, allowOverflowIntent) : isScrollableX(element, allowOverflowIntent);
26
+ }
27
+ function hasScrollableAncestor(target, root, axes) {
28
+ // `getParentNode` crosses shadow boundaries (and slots), so a target inside a shadow root
29
+ // still walks up to scrollable ancestors in the light DOM.
30
+ let node = target;
31
+ while (isHTMLElement(node) && node !== root && !isLastTraversableNode(node)) {
32
+ for (const axis of axes) {
33
+ if (isScrollable(node, axis)) {
34
+ return true;
35
+ }
36
+ }
37
+ node = getParentNode(node);
38
+ }
39
+ return false;
40
+ }
41
+ function findScrollableTouchTarget(target, root, axis = 'vertical', allowOverflowIntent = false) {
42
+ // `getParentNode` crosses shadow boundaries (and slots), so a target inside a shadow root
43
+ // still reaches a scrollable ancestor in the light DOM.
44
+ let node = isHTMLElement(target) ? target : null;
45
+ while (isHTMLElement(node) && node !== root && !isLastTraversableNode(node)) {
46
+ if (isScrollable(node, axis, allowOverflowIntent)) {
47
+ return node;
48
+ }
49
+ node = getParentNode(node);
50
+ }
51
+ return isScrollable(root, axis, allowOverflowIntent) ? root : null;
52
+ }
53
+
54
+ export { findScrollableTouchTarget as f, hasScrollableAncestor as h, isScrollableY as i };