@mantine/core 7.0.0-alpha.13 → 7.0.0-alpha.14

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 (158) hide show
  1. package/cjs/components/Combobox/Combobox.context.js +13 -0
  2. package/cjs/components/Combobox/Combobox.context.js.map +1 -0
  3. package/cjs/components/Combobox/Combobox.js +139 -0
  4. package/cjs/components/Combobox/Combobox.js.map +1 -0
  5. package/cjs/components/Combobox/Combobox.module.css.js +8 -0
  6. package/cjs/components/Combobox/Combobox.module.css.js.map +1 -0
  7. package/cjs/components/Combobox/ComboboxChevron/ComboboxChevron.js +39 -19
  8. package/cjs/components/Combobox/ComboboxChevron/ComboboxChevron.js.map +1 -1
  9. package/cjs/components/Combobox/ComboboxDropdown/ComboboxDropdown.js +70 -0
  10. package/cjs/components/Combobox/ComboboxDropdown/ComboboxDropdown.js.map +1 -0
  11. package/cjs/components/Combobox/ComboboxEmpty/ComboboxEmpty.js +63 -0
  12. package/cjs/components/Combobox/ComboboxEmpty/ComboboxEmpty.js.map +1 -0
  13. package/cjs/components/Combobox/ComboboxOption/ComboboxOption.js +119 -0
  14. package/cjs/components/Combobox/ComboboxOption/ComboboxOption.js.map +1 -0
  15. package/cjs/components/Combobox/ComboboxOptions/ComboboxOptions.js +75 -0
  16. package/cjs/components/Combobox/ComboboxOptions/ComboboxOptions.js.map +1 -0
  17. package/cjs/components/Combobox/ComboboxSearch/ComboboxSearch.js +92 -0
  18. package/cjs/components/Combobox/ComboboxSearch/ComboboxSearch.js.map +1 -0
  19. package/cjs/components/Combobox/ComboboxTarget/ComboboxTarget.js +74 -0
  20. package/cjs/components/Combobox/ComboboxTarget/ComboboxTarget.js.map +1 -0
  21. package/cjs/components/Combobox/use-combobox/get-index/get-index.js +47 -0
  22. package/cjs/components/Combobox/use-combobox/get-index/get-index.js.map +1 -0
  23. package/cjs/components/Combobox/use-combobox/get-index/get-virtualized-index.js +57 -0
  24. package/cjs/components/Combobox/use-combobox/get-index/get-virtualized-index.js.map +1 -0
  25. package/cjs/components/Combobox/use-combobox/use-combobox.js +152 -0
  26. package/cjs/components/Combobox/use-combobox/use-combobox.js.map +1 -0
  27. package/cjs/components/Combobox/use-combobox/use-virtualized-combobox.js +125 -0
  28. package/cjs/components/Combobox/use-combobox/use-virtualized-combobox.js.map +1 -0
  29. package/cjs/components/Combobox/use-combobox-target-props/use-combobox-target-props.js +80 -0
  30. package/cjs/components/Combobox/use-combobox-target-props/use-combobox-target-props.js.map +1 -0
  31. package/cjs/components/Drawer/Drawer.context.js +13 -0
  32. package/cjs/components/Drawer/Drawer.context.js.map +1 -0
  33. package/cjs/components/Drawer/Drawer.js +95 -0
  34. package/cjs/components/Drawer/Drawer.js.map +1 -0
  35. package/cjs/components/Drawer/Drawer.module.css.js +8 -0
  36. package/cjs/components/Drawer/Drawer.module.css.js.map +1 -0
  37. package/cjs/components/Drawer/DrawerBody.js +60 -0
  38. package/cjs/components/Drawer/DrawerBody.js.map +1 -0
  39. package/cjs/components/Drawer/DrawerCloseButton.js +60 -0
  40. package/cjs/components/Drawer/DrawerCloseButton.js.map +1 -0
  41. package/cjs/components/Drawer/DrawerContent.js +67 -0
  42. package/cjs/components/Drawer/DrawerContent.js.map +1 -0
  43. package/cjs/components/Drawer/DrawerHeader.js +60 -0
  44. package/cjs/components/Drawer/DrawerHeader.js.map +1 -0
  45. package/cjs/components/Drawer/DrawerOverlay.js +60 -0
  46. package/cjs/components/Drawer/DrawerOverlay.js.map +1 -0
  47. package/cjs/components/Drawer/DrawerRoot.js +128 -0
  48. package/cjs/components/Drawer/DrawerRoot.js.map +1 -0
  49. package/cjs/components/Drawer/DrawerTitle.js +60 -0
  50. package/cjs/components/Drawer/DrawerTitle.js.map +1 -0
  51. package/cjs/components/Modal/Modal.js.map +1 -1
  52. package/cjs/components/Modal/ModalRoot.js +6 -3
  53. package/cjs/components/Modal/ModalRoot.js.map +1 -1
  54. package/cjs/components/ModalBase/ModalBase.js +7 -5
  55. package/cjs/components/ModalBase/ModalBase.js.map +1 -1
  56. package/cjs/components/Popover/Popover.js +1 -1
  57. package/cjs/core/MantineProvider/use-mantine-color-scheme/use-mantine-color-scheme.js +1 -1
  58. package/cjs/core/MantineProvider/use-mantine-color-scheme/use-mantine-color-scheme.js.map +1 -1
  59. package/cjs/core/styles-api/use-styles/get-style/resolve-styles/resolve-styles.js +23 -2
  60. package/cjs/core/styles-api/use-styles/get-style/resolve-styles/resolve-styles.js.map +1 -1
  61. package/cjs/index.css +283 -158
  62. package/cjs/index.js +44 -0
  63. package/cjs/index.js.map +1 -1
  64. package/esm/components/Combobox/Combobox.context.js +8 -0
  65. package/esm/components/Combobox/Combobox.context.js.map +1 -0
  66. package/esm/components/Combobox/Combobox.js +131 -0
  67. package/esm/components/Combobox/Combobox.js.map +1 -0
  68. package/esm/components/Combobox/Combobox.module.css.js +4 -0
  69. package/esm/components/Combobox/Combobox.module.css.js.map +1 -0
  70. package/esm/components/Combobox/ComboboxChevron/ComboboxChevron.js +39 -18
  71. package/esm/components/Combobox/ComboboxChevron/ComboboxChevron.js.map +1 -1
  72. package/esm/components/Combobox/ComboboxDropdown/ComboboxDropdown.js +62 -0
  73. package/esm/components/Combobox/ComboboxDropdown/ComboboxDropdown.js.map +1 -0
  74. package/esm/components/Combobox/ComboboxEmpty/ComboboxEmpty.js +55 -0
  75. package/esm/components/Combobox/ComboboxEmpty/ComboboxEmpty.js.map +1 -0
  76. package/esm/components/Combobox/ComboboxOption/ComboboxOption.js +111 -0
  77. package/esm/components/Combobox/ComboboxOption/ComboboxOption.js.map +1 -0
  78. package/esm/components/Combobox/ComboboxOptions/ComboboxOptions.js +67 -0
  79. package/esm/components/Combobox/ComboboxOptions/ComboboxOptions.js.map +1 -0
  80. package/esm/components/Combobox/ComboboxSearch/ComboboxSearch.js +84 -0
  81. package/esm/components/Combobox/ComboboxSearch/ComboboxSearch.js.map +1 -0
  82. package/esm/components/Combobox/ComboboxTarget/ComboboxTarget.js +66 -0
  83. package/esm/components/Combobox/ComboboxTarget/ComboboxTarget.js.map +1 -0
  84. package/esm/components/Combobox/use-combobox/get-index/get-index.js +41 -0
  85. package/esm/components/Combobox/use-combobox/get-index/get-index.js.map +1 -0
  86. package/esm/components/Combobox/use-combobox/get-index/get-virtualized-index.js +51 -0
  87. package/esm/components/Combobox/use-combobox/get-index/get-virtualized-index.js.map +1 -0
  88. package/esm/components/Combobox/use-combobox/use-combobox.js +148 -0
  89. package/esm/components/Combobox/use-combobox/use-combobox.js.map +1 -0
  90. package/esm/components/Combobox/use-combobox/use-virtualized-combobox.js +121 -0
  91. package/esm/components/Combobox/use-combobox/use-virtualized-combobox.js.map +1 -0
  92. package/esm/components/Combobox/use-combobox-target-props/use-combobox-target-props.js +76 -0
  93. package/esm/components/Combobox/use-combobox-target-props/use-combobox-target-props.js.map +1 -0
  94. package/esm/components/Drawer/Drawer.context.js +8 -0
  95. package/esm/components/Drawer/Drawer.context.js.map +1 -0
  96. package/esm/components/Drawer/Drawer.js +87 -0
  97. package/esm/components/Drawer/Drawer.js.map +1 -0
  98. package/esm/components/Drawer/Drawer.module.css.js +4 -0
  99. package/esm/components/Drawer/Drawer.module.css.js.map +1 -0
  100. package/esm/components/Drawer/DrawerBody.js +52 -0
  101. package/esm/components/Drawer/DrawerBody.js.map +1 -0
  102. package/esm/components/Drawer/DrawerCloseButton.js +52 -0
  103. package/esm/components/Drawer/DrawerCloseButton.js.map +1 -0
  104. package/esm/components/Drawer/DrawerContent.js +59 -0
  105. package/esm/components/Drawer/DrawerContent.js.map +1 -0
  106. package/esm/components/Drawer/DrawerHeader.js +52 -0
  107. package/esm/components/Drawer/DrawerHeader.js.map +1 -0
  108. package/esm/components/Drawer/DrawerOverlay.js +52 -0
  109. package/esm/components/Drawer/DrawerOverlay.js.map +1 -0
  110. package/esm/components/Drawer/DrawerRoot.js +120 -0
  111. package/esm/components/Drawer/DrawerRoot.js.map +1 -0
  112. package/esm/components/Drawer/DrawerTitle.js +52 -0
  113. package/esm/components/Drawer/DrawerTitle.js.map +1 -0
  114. package/esm/components/Modal/Modal.js.map +1 -1
  115. package/esm/components/Modal/ModalRoot.js +6 -3
  116. package/esm/components/Modal/ModalRoot.js.map +1 -1
  117. package/esm/components/ModalBase/ModalBase.js +7 -5
  118. package/esm/components/ModalBase/ModalBase.js.map +1 -1
  119. package/esm/components/Popover/Popover.js +1 -1
  120. package/esm/core/MantineProvider/use-mantine-color-scheme/use-mantine-color-scheme.js +1 -1
  121. package/esm/core/MantineProvider/use-mantine-color-scheme/use-mantine-color-scheme.js.map +1 -1
  122. package/esm/core/styles-api/use-styles/get-style/resolve-styles/resolve-styles.js +23 -2
  123. package/esm/core/styles-api/use-styles/get-style/resolve-styles/resolve-styles.js.map +1 -1
  124. package/esm/index.css +283 -158
  125. package/esm/index.js +22 -0
  126. package/esm/index.js.map +1 -1
  127. package/lib/components/Combobox/Combobox.context.d.ts +15 -0
  128. package/lib/components/Combobox/Combobox.d.ts +89 -0
  129. package/lib/components/Combobox/ComboboxChevron/ComboboxChevron.d.ts +20 -6
  130. package/lib/components/Combobox/ComboboxDropdown/ComboboxDropdown.d.ts +19 -0
  131. package/lib/components/Combobox/ComboboxEmpty/ComboboxEmpty.d.ts +16 -0
  132. package/lib/components/Combobox/ComboboxOption/ComboboxOption.d.ts +24 -0
  133. package/lib/components/Combobox/ComboboxOptions/ComboboxOptions.d.ts +16 -0
  134. package/lib/components/Combobox/ComboboxSearch/ComboboxSearch.d.ts +19 -0
  135. package/lib/components/Combobox/ComboboxTarget/ComboboxTarget.d.ts +22 -0
  136. package/lib/components/Combobox/index.d.ts +19 -0
  137. package/lib/components/Combobox/use-combobox/get-index/get-index.d.ts +3 -0
  138. package/lib/components/Combobox/use-combobox/get-index/get-virtualized-index.d.ts +14 -0
  139. package/lib/components/Combobox/use-combobox/use-combobox.d.ts +37 -0
  140. package/lib/components/Combobox/use-combobox/use-virtualized-combobox.d.ts +25 -0
  141. package/lib/components/Combobox/use-combobox-target-props/use-combobox-target-props.d.ts +24 -0
  142. package/lib/components/Drawer/Drawer.context.d.ts +13 -0
  143. package/lib/components/Drawer/Drawer.d.ts +59 -0
  144. package/lib/components/Drawer/DrawerBody.d.ts +17 -0
  145. package/lib/components/Drawer/DrawerCloseButton.d.ts +17 -0
  146. package/lib/components/Drawer/DrawerContent.d.ts +17 -0
  147. package/lib/components/Drawer/DrawerHeader.d.ts +17 -0
  148. package/lib/components/Drawer/DrawerOverlay.d.ts +17 -0
  149. package/lib/components/Drawer/DrawerRoot.d.ts +32 -0
  150. package/lib/components/Drawer/DrawerTitle.d.ts +17 -0
  151. package/lib/components/Drawer/index.d.ts +16 -0
  152. package/lib/components/Modal/Modal.d.ts +3 -2
  153. package/lib/components/Modal/ModalRoot.d.ts +1 -0
  154. package/lib/components/index.d.ts +2 -0
  155. package/lib/core/styles-api/index.d.ts +2 -0
  156. package/lib/core/styles-api/use-styles/get-style/get-theme-styles/get-theme-styles.d.ts +1 -2
  157. package/lib/core/styles-api/use-styles/get-style/resolve-styles/resolve-styles.d.ts +2 -3
  158. package/package.json +4 -4
@@ -0,0 +1,75 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+ var hooks = require('@mantine/hooks');
7
+ var Combobox_context = require('../Combobox.context.js');
8
+ var Combobox_module = require('../Combobox.module.css.js');
9
+ var factory = require('../../../core/factory/factory.js');
10
+ var useProps = require('../../../core/MantineProvider/use-props/use-props.js');
11
+ var Box = require('../../../core/Box/Box.js');
12
+
13
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e['default'] : e; }
14
+
15
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
16
+
17
+ var __defProp = Object.defineProperty;
18
+ var __defProps = Object.defineProperties;
19
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
20
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
21
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
22
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
23
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
24
+ var __spreadValues = (a, b) => {
25
+ for (var prop in b || (b = {}))
26
+ if (__hasOwnProp.call(b, prop))
27
+ __defNormalProp(a, prop, b[prop]);
28
+ if (__getOwnPropSymbols)
29
+ for (var prop of __getOwnPropSymbols(b)) {
30
+ if (__propIsEnum.call(b, prop))
31
+ __defNormalProp(a, prop, b[prop]);
32
+ }
33
+ return a;
34
+ };
35
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
36
+ var __objRest = (source, exclude) => {
37
+ var target = {};
38
+ for (var prop in source)
39
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
40
+ target[prop] = source[prop];
41
+ if (source != null && __getOwnPropSymbols)
42
+ for (var prop of __getOwnPropSymbols(source)) {
43
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
44
+ target[prop] = source[prop];
45
+ }
46
+ return target;
47
+ };
48
+ const defaultProps = {};
49
+ const ComboboxOptions = factory.factory((_props, ref) => {
50
+ const props = useProps.useProps("ComboboxOptions", defaultProps, _props);
51
+ const _a = props, { classNames, className, style, styles, unstyled, id, onMouseDown } = _a, others = __objRest(_a, ["classNames", "className", "style", "styles", "unstyled", "id", "onMouseDown"]);
52
+ const ctx = Combobox_context.useComboboxContext();
53
+ const _id = hooks.useId(id);
54
+ React.useEffect(() => {
55
+ ctx.store.setListId(_id);
56
+ }, [_id]);
57
+ return /* @__PURE__ */ React__default.createElement(
58
+ Box.Box,
59
+ __spreadProps(__spreadValues(__spreadValues({
60
+ ref
61
+ }, ctx.getStyles("options", { className, style, classNames, styles })), others), {
62
+ id: _id,
63
+ role: "listbox",
64
+ onMouseDown: (event) => {
65
+ event.preventDefault();
66
+ onMouseDown == null ? void 0 : onMouseDown(event);
67
+ }
68
+ })
69
+ );
70
+ });
71
+ ComboboxOptions.classes = Combobox_module['default'];
72
+ ComboboxOptions.displayName = "@mantine/core/ComboboxOptions";
73
+
74
+ exports.ComboboxOptions = ComboboxOptions;
75
+ //# sourceMappingURL=ComboboxOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComboboxOptions.js","sources":["../../../../src/components/Combobox/ComboboxOptions/ComboboxOptions.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport { useId } from '@mantine/hooks';\nimport {\n Box,\n BoxProps,\n StylesApiProps,\n factory,\n ElementProps,\n useProps,\n Factory,\n} from '../../../core';\nimport { useComboboxContext } from '../Combobox.context';\nimport classes from '../Combobox.module.css';\n\nexport type ComboboxOptionsStylesNames = 'options';\n\nexport interface ComboboxOptionsProps\n extends BoxProps,\n StylesApiProps<ComboboxOptionsFactory>,\n ElementProps<'div'> {}\n\nexport type ComboboxOptionsFactory = Factory<{\n props: ComboboxOptionsProps;\n ref: HTMLDivElement;\n stylesNames: ComboboxOptionsStylesNames;\n compound: true;\n}>;\n\nconst defaultProps: Partial<ComboboxOptionsProps> = {};\n\nexport const ComboboxOptions = factory<ComboboxOptionsFactory>((_props, ref) => {\n const props = useProps('ComboboxOptions', defaultProps, _props);\n const { classNames, className, style, styles, unstyled, id, onMouseDown, ...others } = props;\n const ctx = useComboboxContext();\n const _id = useId(id);\n\n useEffect(() => {\n ctx.store.setListId(_id);\n }, [_id]);\n\n return (\n <Box\n ref={ref}\n {...ctx.getStyles('options', { className, style, classNames, styles })}\n {...others}\n id={_id}\n role=\"listbox\"\n onMouseDown={(event) => {\n event.preventDefault();\n onMouseDown?.(event);\n }}\n />\n );\n});\n\nComboboxOptions.classes = classes;\nComboboxOptions.displayName = '@mantine/core/ComboboxOptions';\n"],"names":["factory","useProps","useComboboxContext","useId","useEffect","React","Box","classes"],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+ var hooks = require('@mantine/hooks');
7
+ var Input = require('../../Input/Input.js');
8
+ var Combobox_context = require('../Combobox.context.js');
9
+ var useComboboxTargetProps = require('../use-combobox-target-props/use-combobox-target-props.js');
10
+ var Combobox_module = require('../Combobox.module.css.js');
11
+ var factory = require('../../../core/factory/factory.js');
12
+ var useProps = require('../../../core/MantineProvider/use-props/use-props.js');
13
+
14
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e['default'] : e; }
15
+
16
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
17
+
18
+ var __defProp = Object.defineProperty;
19
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
20
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
21
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
22
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
23
+ var __spreadValues = (a, b) => {
24
+ for (var prop in b || (b = {}))
25
+ if (__hasOwnProp.call(b, prop))
26
+ __defNormalProp(a, prop, b[prop]);
27
+ if (__getOwnPropSymbols)
28
+ for (var prop of __getOwnPropSymbols(b)) {
29
+ if (__propIsEnum.call(b, prop))
30
+ __defNormalProp(a, prop, b[prop]);
31
+ }
32
+ return a;
33
+ };
34
+ var __objRest = (source, exclude) => {
35
+ var target = {};
36
+ for (var prop in source)
37
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
38
+ target[prop] = source[prop];
39
+ if (source != null && __getOwnPropSymbols)
40
+ for (var prop of __getOwnPropSymbols(source)) {
41
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
42
+ target[prop] = source[prop];
43
+ }
44
+ return target;
45
+ };
46
+ const defaultProps = {
47
+ withAriaAttributes: true,
48
+ withKeyboardNavigation: true
49
+ };
50
+ const ComboboxSearch = factory.factory((_props, ref) => {
51
+ const props = useProps.useProps("ComboboxSearch", defaultProps, _props);
52
+ const _a = props, {
53
+ classNames,
54
+ styles,
55
+ unstyled,
56
+ vars,
57
+ withAriaAttributes,
58
+ onKeyDown,
59
+ withKeyboardNavigation,
60
+ size
61
+ } = _a, others = __objRest(_a, [
62
+ "classNames",
63
+ "styles",
64
+ "unstyled",
65
+ "vars",
66
+ "withAriaAttributes",
67
+ "onKeyDown",
68
+ "withKeyboardNavigation",
69
+ "size"
70
+ ]);
71
+ const ctx = Combobox_context.useComboboxContext();
72
+ const _styles = ctx.getStyles("search");
73
+ const targetProps = useComboboxTargetProps.useComboboxTargetProps({
74
+ withAriaAttributes,
75
+ withKeyboardNavigation,
76
+ onKeyDown
77
+ });
78
+ return /* @__PURE__ */ React__default.createElement(
79
+ Input.Input,
80
+ __spreadValues(__spreadValues({
81
+ ref: hooks.useMergedRef(ref, ctx.store.searchRef),
82
+ classNames: [{ input: _styles.className }, classNames],
83
+ styles: [{ input: _styles.style }, styles],
84
+ size: size || ctx.size
85
+ }, targetProps), others)
86
+ );
87
+ });
88
+ ComboboxSearch.classes = Combobox_module['default'];
89
+ ComboboxSearch.displayName = "@mantine/core/ComboboxSearch";
90
+
91
+ exports.ComboboxSearch = ComboboxSearch;
92
+ //# sourceMappingURL=ComboboxSearch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComboboxSearch.js","sources":["../../../../src/components/Combobox/ComboboxSearch/ComboboxSearch.tsx"],"sourcesContent":["import React from 'react';\nimport { useMergedRef } from '@mantine/hooks';\nimport { factory, ElementProps, useProps, Factory } from '../../../core';\nimport { Input, InputProps, InputStylesNames } from '../../Input/Input';\nimport { useComboboxContext } from '../Combobox.context';\nimport { useComboboxTargetProps } from '../use-combobox-target-props/use-combobox-target-props';\nimport classes from '../Combobox.module.css';\n\nexport type ComboboxSearchStylesNames = InputStylesNames;\n\nexport interface ComboboxSearchProps extends InputProps, ElementProps<'input', 'size'> {\n /** Determines whether the search input should have `aria-` attribute, `true` by default */\n withAriaAttributes?: boolean;\n\n /** Determines whether the search input should handle keyboard navigation, `true` by default */\n withKeyboardNavigation?: boolean;\n}\n\nexport type ComboboxSearchFactory = Factory<{\n props: ComboboxSearchProps;\n ref: HTMLInputElement;\n stylesNames: ComboboxSearchStylesNames;\n}>;\n\nconst defaultProps: Partial<ComboboxSearchProps> = {\n withAriaAttributes: true,\n withKeyboardNavigation: true,\n};\n\nexport const ComboboxSearch = factory<ComboboxSearchFactory>((_props, ref) => {\n const props = useProps('ComboboxSearch', defaultProps, _props);\n const {\n classNames,\n styles,\n unstyled,\n vars,\n withAriaAttributes,\n onKeyDown,\n withKeyboardNavigation,\n size,\n ...others\n } = props;\n\n const ctx = useComboboxContext();\n const _styles = ctx.getStyles('search');\n\n const targetProps = useComboboxTargetProps({\n withAriaAttributes,\n withKeyboardNavigation,\n onKeyDown,\n });\n\n return (\n <Input\n ref={useMergedRef(ref, ctx.store.searchRef)}\n classNames={[{ input: _styles.className }, classNames] as any}\n styles={[{ input: _styles.style }, styles] as any}\n size={size || ctx.size}\n {...targetProps}\n {...others}\n />\n );\n});\n\nComboboxSearch.classes = classes;\nComboboxSearch.displayName = '@mantine/core/ComboboxSearch';\n"],"names":["factory","useProps","useComboboxContext","useComboboxTargetProps","React","Input","useMergedRef","classes"],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+ var hooks = require('@mantine/hooks');
7
+ var Combobox_context = require('../Combobox.context.js');
8
+ var useComboboxTargetProps = require('../use-combobox-target-props/use-combobox-target-props.js');
9
+ var Popover = require('../../Popover/Popover.js');
10
+ var factory = require('../../../core/factory/factory.js');
11
+ var useProps = require('../../../core/MantineProvider/use-props/use-props.js');
12
+ var isElement = require('../../../core/utils/is-element/is-element.js');
13
+
14
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e['default'] : e; }
15
+
16
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
17
+
18
+ var __defProp = Object.defineProperty;
19
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
20
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
21
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
22
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
23
+ var __spreadValues = (a, b) => {
24
+ for (var prop in b || (b = {}))
25
+ if (__hasOwnProp.call(b, prop))
26
+ __defNormalProp(a, prop, b[prop]);
27
+ if (__getOwnPropSymbols)
28
+ for (var prop of __getOwnPropSymbols(b)) {
29
+ if (__propIsEnum.call(b, prop))
30
+ __defNormalProp(a, prop, b[prop]);
31
+ }
32
+ return a;
33
+ };
34
+ var __objRest = (source, exclude) => {
35
+ var target = {};
36
+ for (var prop in source)
37
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
38
+ target[prop] = source[prop];
39
+ if (source != null && __getOwnPropSymbols)
40
+ for (var prop of __getOwnPropSymbols(source)) {
41
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
42
+ target[prop] = source[prop];
43
+ }
44
+ return target;
45
+ };
46
+ const defaultProps = {
47
+ refProp: "ref",
48
+ withKeyboardNavigation: true,
49
+ withAriaAttributes: true
50
+ };
51
+ const ComboboxTarget = factory.factory((props, ref) => {
52
+ const _a = useProps.useProps(
53
+ "ComboboxTarget",
54
+ defaultProps,
55
+ props
56
+ ), { children, refProp, withKeyboardNavigation, withAriaAttributes } = _a, others = __objRest(_a, ["children", "refProp", "withKeyboardNavigation", "withAriaAttributes"]);
57
+ if (!isElement.isElement(children)) {
58
+ throw new Error(
59
+ "Combobox.Target component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported"
60
+ );
61
+ }
62
+ const ctx = Combobox_context.useComboboxContext();
63
+ const targetProps = useComboboxTargetProps.useComboboxTargetProps({
64
+ withAriaAttributes,
65
+ withKeyboardNavigation,
66
+ onKeyDown: children.props.onKeyDown
67
+ });
68
+ const clonedElement = React.cloneElement(children, __spreadValues(__spreadValues({}, targetProps), others));
69
+ return /* @__PURE__ */ React__default.createElement(Popover.Popover.Target, { ref: hooks.useMergedRef(ref, ctx.store.targetRef) }, clonedElement);
70
+ });
71
+ ComboboxTarget.displayName = "@mantine/core/ComboboxTarget";
72
+
73
+ exports.ComboboxTarget = ComboboxTarget;
74
+ //# sourceMappingURL=ComboboxTarget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComboboxTarget.js","sources":["../../../../src/components/Combobox/ComboboxTarget/ComboboxTarget.tsx"],"sourcesContent":["import React, { cloneElement } from 'react';\nimport { useMergedRef } from '@mantine/hooks';\nimport { Popover } from '../../Popover';\nimport { isElement, useProps, factory, Factory } from '../../../core';\nimport { useComboboxContext } from '../Combobox.context';\nimport { useComboboxTargetProps } from '../use-combobox-target-props/use-combobox-target-props';\n\nexport interface ComboboxTargetProps {\n /** Target element */\n children: React.ReactNode;\n\n /** Key of the prop that should be used to access element ref */\n refProp?: string;\n\n /** Determines whether component should respond to keyboard events, `true` by default */\n withKeyboardNavigation?: boolean;\n\n /** Determines whether the target should have `aria-` attributes, `true` by default */\n withAriaAttributes?: boolean;\n}\n\nconst defaultProps: Partial<ComboboxTargetProps> = {\n refProp: 'ref',\n withKeyboardNavigation: true,\n withAriaAttributes: true,\n};\n\nexport type ComboboxTargetFactory = Factory<{\n props: ComboboxTargetProps;\n ref: HTMLElement;\n compound: true;\n}>;\n\nexport const ComboboxTarget = factory<ComboboxTargetFactory>((props, ref) => {\n const { children, refProp, withKeyboardNavigation, withAriaAttributes, ...others } = useProps(\n 'ComboboxTarget',\n defaultProps,\n props\n );\n\n if (!isElement(children)) {\n throw new Error(\n 'Combobox.Target component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported'\n );\n }\n\n const ctx = useComboboxContext();\n\n const targetProps = useComboboxTargetProps({\n withAriaAttributes,\n withKeyboardNavigation,\n onKeyDown: children.props.onKeyDown,\n });\n\n const clonedElement = cloneElement(children, {\n ...targetProps,\n ...others,\n });\n\n return (\n <Popover.Target ref={useMergedRef(ref, ctx.store.targetRef)}>{clonedElement}</Popover.Target>\n );\n});\n\nComboboxTarget.displayName = '@mantine/core/ComboboxTarget';\n"],"names":["factory","useProps","isElement","useComboboxContext","useComboboxTargetProps","cloneElement","React","Popover","useMergedRef"],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ function getPreviousIndex(currentIndex, elements, loop) {
6
+ for (let i = currentIndex - 1; i >= 0; i -= 1) {
7
+ if (!elements[i].hasAttribute("data-combobox-disabled")) {
8
+ return i;
9
+ }
10
+ }
11
+ if (loop) {
12
+ for (let i = elements.length - 1; i > -1; i -= 1) {
13
+ if (!elements[i].hasAttribute("data-combobox-disabled")) {
14
+ return i;
15
+ }
16
+ }
17
+ }
18
+ return currentIndex;
19
+ }
20
+ function getNextIndex(currentIndex, elements, loop) {
21
+ for (let i = currentIndex + 1; i < elements.length; i += 1) {
22
+ if (!elements[i].hasAttribute("data-combobox-disabled")) {
23
+ return i;
24
+ }
25
+ }
26
+ if (loop) {
27
+ for (let i = 0; i < elements.length; i += 1) {
28
+ if (!elements[i].hasAttribute("data-combobox-disabled")) {
29
+ return i;
30
+ }
31
+ }
32
+ }
33
+ return currentIndex;
34
+ }
35
+ function getFirstIndex(elements) {
36
+ for (let i = 0; i < elements.length; i += 1) {
37
+ if (!elements[i].hasAttribute("data-combobox-disabled")) {
38
+ return i;
39
+ }
40
+ }
41
+ return -1;
42
+ }
43
+
44
+ exports.getFirstIndex = getFirstIndex;
45
+ exports.getNextIndex = getNextIndex;
46
+ exports.getPreviousIndex = getPreviousIndex;
47
+ //# sourceMappingURL=get-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-index.js","sources":["../../../../../src/components/Combobox/use-combobox/get-index/get-index.ts"],"sourcesContent":["export function getPreviousIndex(\n currentIndex: number,\n elements: NodeListOf<HTMLDivElement> | HTMLDivElement[],\n loop: boolean\n) {\n for (let i = currentIndex - 1; i >= 0; i -= 1) {\n if (!elements[i].hasAttribute('data-combobox-disabled')) {\n return i;\n }\n }\n\n if (loop) {\n for (let i = elements.length - 1; i > -1; i -= 1) {\n if (!elements[i].hasAttribute('data-combobox-disabled')) {\n return i;\n }\n }\n }\n\n return currentIndex;\n}\n\nexport function getNextIndex(\n currentIndex: number,\n elements: NodeListOf<HTMLDivElement> | HTMLDivElement[],\n loop: boolean\n) {\n for (let i = currentIndex + 1; i < elements.length; i += 1) {\n if (!elements[i].hasAttribute('data-combobox-disabled')) {\n return i;\n }\n }\n\n if (loop) {\n for (let i = 0; i < elements.length; i += 1) {\n if (!elements[i].hasAttribute('data-combobox-disabled')) {\n return i;\n }\n }\n }\n\n return currentIndex;\n}\n\nexport function getFirstIndex(elements: NodeListOf<HTMLDivElement> | HTMLDivElement[]) {\n for (let i = 0; i < elements.length; i += 1) {\n if (!elements[i].hasAttribute('data-combobox-disabled')) {\n return i;\n }\n }\n\n return -1;\n}\n"],"names":[],"mappings":";;;;AAAO,SAAS,gBAAgB,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE;AAC/D,EAAE,KAAK,IAAI,CAAC,GAAG,YAAY,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACjD,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,wBAAwB,CAAC,EAAE;AAC7D,MAAM,OAAO,CAAC,CAAC;AACf,KAAK;AACL,GAAG;AACH,EAAE,IAAI,IAAI,EAAE;AACZ,IAAI,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACtD,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,wBAAwB,CAAC,EAAE;AAC/D,QAAQ,OAAO,CAAC,CAAC;AACjB,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAE,OAAO,YAAY,CAAC;AACtB,CAAC;AACM,SAAS,YAAY,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE;AAC3D,EAAE,KAAK,IAAI,CAAC,GAAG,YAAY,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC9D,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,wBAAwB,CAAC,EAAE;AAC7D,MAAM,OAAO,CAAC,CAAC;AACf,KAAK;AACL,GAAG;AACH,EAAE,IAAI,IAAI,EAAE;AACZ,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACjD,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,wBAAwB,CAAC,EAAE;AAC/D,QAAQ,OAAO,CAAC,CAAC;AACjB,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAE,OAAO,YAAY,CAAC;AACtB,CAAC;AACM,SAAS,aAAa,CAAC,QAAQ,EAAE;AACxC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,wBAAwB,CAAC,EAAE;AAC7D,MAAM,OAAO,CAAC,CAAC;AACf,KAAK;AACL,GAAG;AACH,EAAE,OAAO,CAAC,CAAC,CAAC;AACZ;;;;;;"}
@@ -0,0 +1,57 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ function getPreviousIndex({
6
+ currentIndex,
7
+ isOptionDisabled,
8
+ totalOptionsCount,
9
+ loop
10
+ }) {
11
+ for (let i = currentIndex - 1; i >= 0; i -= 1) {
12
+ if (!isOptionDisabled(i)) {
13
+ return i;
14
+ }
15
+ }
16
+ if (loop) {
17
+ for (let i = totalOptionsCount - 1; i > -1; i -= 1) {
18
+ if (!isOptionDisabled(i)) {
19
+ return i;
20
+ }
21
+ }
22
+ }
23
+ return currentIndex;
24
+ }
25
+ function getNextIndex({
26
+ currentIndex,
27
+ isOptionDisabled,
28
+ totalOptionsCount,
29
+ loop
30
+ }) {
31
+ for (let i = currentIndex + 1; i < totalOptionsCount; i += 1) {
32
+ if (!isOptionDisabled(i)) {
33
+ return i;
34
+ }
35
+ }
36
+ if (loop) {
37
+ for (let i = 0; i < totalOptionsCount; i += 1) {
38
+ if (!isOptionDisabled(i)) {
39
+ return i;
40
+ }
41
+ }
42
+ }
43
+ return currentIndex;
44
+ }
45
+ function getFirstIndex({ totalOptionsCount, isOptionDisabled }) {
46
+ for (let i = 0; i < totalOptionsCount; i += 1) {
47
+ if (!isOptionDisabled(i)) {
48
+ return i;
49
+ }
50
+ }
51
+ return -1;
52
+ }
53
+
54
+ exports.getFirstIndex = getFirstIndex;
55
+ exports.getNextIndex = getNextIndex;
56
+ exports.getPreviousIndex = getPreviousIndex;
57
+ //# sourceMappingURL=get-virtualized-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-virtualized-index.js","sources":["../../../../../src/components/Combobox/use-combobox/get-index/get-virtualized-index.ts"],"sourcesContent":["interface GetIndexProps {\n currentIndex: number;\n isOptionDisabled: (index: number) => boolean;\n totalOptionsCount: number;\n loop: boolean;\n}\n\nexport function getPreviousIndex({\n currentIndex,\n isOptionDisabled,\n totalOptionsCount,\n loop,\n}: GetIndexProps) {\n for (let i = currentIndex - 1; i >= 0; i -= 1) {\n if (!isOptionDisabled(i)) {\n return i;\n }\n }\n\n if (loop) {\n for (let i = totalOptionsCount - 1; i > -1; i -= 1) {\n if (!isOptionDisabled(i)) {\n return i;\n }\n }\n }\n\n return currentIndex;\n}\n\nexport function getNextIndex({\n currentIndex,\n isOptionDisabled,\n totalOptionsCount,\n loop,\n}: GetIndexProps) {\n for (let i = currentIndex + 1; i < totalOptionsCount; i += 1) {\n if (!isOptionDisabled(i)) {\n return i;\n }\n }\n\n if (loop) {\n for (let i = 0; i < totalOptionsCount; i += 1) {\n if (!isOptionDisabled(i)) {\n return i;\n }\n }\n }\n\n return currentIndex;\n}\n\ninterface GetFirstIndexOptions {\n totalOptionsCount: number;\n isOptionDisabled: (index: number) => boolean;\n}\n\nexport function getFirstIndex({ totalOptionsCount, isOptionDisabled }: GetFirstIndexOptions) {\n for (let i = 0; i < totalOptionsCount; i += 1) {\n if (!isOptionDisabled(i)) {\n return i;\n }\n }\n\n return -1;\n}\n"],"names":[],"mappings":";;;;AAAO,SAAS,gBAAgB,CAAC;AACjC,EAAE,YAAY;AACd,EAAE,gBAAgB;AAClB,EAAE,iBAAiB;AACnB,EAAE,IAAI;AACN,CAAC,EAAE;AACH,EAAE,KAAK,IAAI,CAAC,GAAG,YAAY,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACjD,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;AAC9B,MAAM,OAAO,CAAC,CAAC;AACf,KAAK;AACL,GAAG;AACH,EAAE,IAAI,IAAI,EAAE;AACZ,IAAI,KAAK,IAAI,CAAC,GAAG,iBAAiB,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACxD,MAAM,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;AAChC,QAAQ,OAAO,CAAC,CAAC;AACjB,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAE,OAAO,YAAY,CAAC;AACtB,CAAC;AACM,SAAS,YAAY,CAAC;AAC7B,EAAE,YAAY;AACd,EAAE,gBAAgB;AAClB,EAAE,iBAAiB;AACnB,EAAE,IAAI;AACN,CAAC,EAAE;AACH,EAAE,KAAK,IAAI,CAAC,GAAG,YAAY,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,EAAE,CAAC,IAAI,CAAC,EAAE;AAChE,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;AAC9B,MAAM,OAAO,CAAC,CAAC;AACf,KAAK;AACL,GAAG;AACH,EAAE,IAAI,IAAI,EAAE;AACZ,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,EAAE,CAAC,IAAI,CAAC,EAAE;AACnD,MAAM,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;AAChC,QAAQ,OAAO,CAAC,CAAC;AACjB,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAE,OAAO,YAAY,CAAC;AACtB,CAAC;AACM,SAAS,aAAa,CAAC,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,EAAE;AACvE,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,EAAE,CAAC,IAAI,CAAC,EAAE;AACjD,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;AAC9B,MAAM,OAAO,CAAC,CAAC;AACf,KAAK;AACL,GAAG;AACH,EAAE,OAAO,CAAC,CAAC,CAAC;AACZ;;;;;;"}
@@ -0,0 +1,152 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+ var hooks = require('@mantine/hooks');
7
+ var getIndex = require('./get-index/get-index.js');
8
+
9
+ function useCombobox({
10
+ defaultOpened,
11
+ opened,
12
+ onOpenedChange,
13
+ onDropdownClose,
14
+ onDropdownOpen,
15
+ loop = true
16
+ } = {}) {
17
+ const [dropdownOpened, setDropdownOpened] = hooks.useUncontrolled({
18
+ value: opened,
19
+ defaultValue: defaultOpened,
20
+ finalValue: false,
21
+ onChange: onOpenedChange
22
+ });
23
+ const listId = React.useRef(null);
24
+ const selectedOptionIndex = React.useRef(-1);
25
+ const searchRef = React.useRef(null);
26
+ const targetRef = React.useRef(null);
27
+ const focusSearchTimeout = React.useRef(-1);
28
+ const focusTargetTimeout = React.useRef(-1);
29
+ const openDropdown = () => {
30
+ if (!dropdownOpened) {
31
+ setDropdownOpened(true);
32
+ onDropdownOpen == null ? void 0 : onDropdownOpen();
33
+ }
34
+ };
35
+ const closeDropdown = () => {
36
+ if (dropdownOpened) {
37
+ setDropdownOpened(false);
38
+ onDropdownClose == null ? void 0 : onDropdownClose();
39
+ }
40
+ };
41
+ const toggleDropdown = () => {
42
+ if (dropdownOpened) {
43
+ closeDropdown();
44
+ } else {
45
+ openDropdown();
46
+ }
47
+ };
48
+ const clearSelectedItem = () => {
49
+ const selected = document.querySelector(`#${listId.current} [data-combobox-selected]`);
50
+ selected == null ? void 0 : selected.removeAttribute("data-combobox-selected");
51
+ selected == null ? void 0 : selected.removeAttribute("aria-selected");
52
+ };
53
+ const selectOption = (index) => {
54
+ const list = document.getElementById(listId.current);
55
+ const items = list == null ? void 0 : list.querySelectorAll("[data-combobox-option]");
56
+ if (!items) {
57
+ return null;
58
+ }
59
+ const nextIndex = index >= items.length ? 0 : index < 0 ? items.length - 1 : index;
60
+ selectedOptionIndex.current = nextIndex;
61
+ if ((items == null ? void 0 : items[nextIndex]) && !items[nextIndex].hasAttribute("data-combobox-disabled")) {
62
+ clearSelectedItem();
63
+ items[nextIndex].setAttribute("data-combobox-selected", "true");
64
+ items[nextIndex].setAttribute("aria-selected", "true");
65
+ items[nextIndex].scrollIntoView({ block: "nearest" });
66
+ return items[nextIndex].id;
67
+ }
68
+ return null;
69
+ };
70
+ const selectActiveOption = () => {
71
+ const activeOption = document.querySelector(
72
+ `#${listId.current} [data-combobox-active]`
73
+ );
74
+ if (activeOption) {
75
+ const items = document.querySelectorAll(
76
+ `#${listId.current} [data-combobox-option]`
77
+ );
78
+ const index = Array.from(items).findIndex((option) => option === activeOption);
79
+ return selectOption(index);
80
+ }
81
+ return selectOption(0);
82
+ };
83
+ const selectNextOption = () => selectOption(
84
+ getIndex.getNextIndex(
85
+ selectedOptionIndex.current,
86
+ document.querySelectorAll(`#${listId.current} [data-combobox-option]`),
87
+ loop
88
+ )
89
+ );
90
+ const selectPreviousOption = () => selectOption(
91
+ getIndex.getPreviousIndex(
92
+ selectedOptionIndex.current,
93
+ document.querySelectorAll(`#${listId.current} [data-combobox-option]`),
94
+ loop
95
+ )
96
+ );
97
+ const selectFirstOption = () => selectOption(
98
+ getIndex.getFirstIndex(
99
+ document.querySelectorAll(`#${listId.current} [data-combobox-option]`)
100
+ )
101
+ );
102
+ const resetSelectedOption = () => {
103
+ selectedOptionIndex.current = -1;
104
+ clearSelectedItem();
105
+ };
106
+ const clickSelectedOption = () => {
107
+ const items = document.querySelectorAll(
108
+ `#${listId.current} [data-combobox-option]`
109
+ );
110
+ const item = items == null ? void 0 : items[selectedOptionIndex.current];
111
+ item == null ? void 0 : item.click();
112
+ };
113
+ const setListId = (id) => {
114
+ listId.current = id;
115
+ };
116
+ const focusSearchInput = () => {
117
+ focusSearchTimeout.current = window.setTimeout(() => searchRef.current.focus(), 0);
118
+ };
119
+ const focusTarget = () => {
120
+ focusTargetTimeout.current = window.setTimeout(() => targetRef.current.focus(), 0);
121
+ };
122
+ React.useEffect(
123
+ () => () => {
124
+ window.clearTimeout(focusSearchTimeout.current);
125
+ window.clearTimeout(focusTargetTimeout.current);
126
+ },
127
+ []
128
+ );
129
+ return {
130
+ dropdownOpened,
131
+ openDropdown,
132
+ closeDropdown,
133
+ toggleDropdown,
134
+ selectedOptionIndex: selectedOptionIndex.current,
135
+ selectOption,
136
+ selectFirstOption,
137
+ selectActiveOption,
138
+ selectNextOption,
139
+ selectPreviousOption,
140
+ resetSelectedOption,
141
+ listId: listId.current,
142
+ setListId,
143
+ clickSelectedOption,
144
+ searchRef,
145
+ focusSearchInput,
146
+ targetRef,
147
+ focusTarget
148
+ };
149
+ }
150
+
151
+ exports.useCombobox = useCombobox;
152
+ //# sourceMappingURL=use-combobox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-combobox.js","sources":["../../../../src/components/Combobox/use-combobox/use-combobox.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport { useUncontrolled } from '@mantine/hooks';\nimport { getPreviousIndex, getNextIndex, getFirstIndex } from './get-index/get-index';\n\nexport interface ComboboxStore {\n dropdownOpened: boolean;\n openDropdown(): void;\n closeDropdown(): void;\n toggleDropdown(): void;\n\n selectedOptionIndex: number;\n selectOption(index: number): void;\n selectActiveOption(): string | null;\n selectFirstOption(): string | null;\n selectNextOption(): string | null;\n selectPreviousOption(): string | null;\n resetSelectedOption(): void;\n clickSelectedOption(): void;\n\n listId: string | null;\n setListId(id: string): void;\n\n searchRef: React.MutableRefObject<HTMLInputElement | null>;\n focusSearchInput(): void;\n\n targetRef: React.MutableRefObject<HTMLElement | null>;\n focusTarget(): void;\n}\n\ninterface UseComboboxOptions {\n /** Default value for `dropdownOpened`, `false` by default */\n defaultOpened?: boolean;\n\n /** Controlled `dropdownOpened` state */\n opened?: boolean;\n\n /** Called when `dropdownOpened` state changes */\n onOpenedChange?(opened: boolean): void;\n\n /** Called when dropdown closes */\n onDropdownClose?(): void;\n\n /** Called when dropdown opens */\n onDropdownOpen?(): void;\n\n /** Determines whether arrow key presses should loop though items (first to last and last to first), `true` by default */\n loop?: boolean;\n}\n\nexport function useCombobox({\n defaultOpened,\n opened,\n onOpenedChange,\n onDropdownClose,\n onDropdownOpen,\n loop = true,\n}: UseComboboxOptions = {}): ComboboxStore {\n const [dropdownOpened, setDropdownOpened] = useUncontrolled({\n value: opened,\n defaultValue: defaultOpened,\n finalValue: false,\n onChange: onOpenedChange,\n });\n\n const listId = useRef<string | null>(null);\n const selectedOptionIndex = useRef<number>(-1);\n const searchRef = useRef<HTMLInputElement | null>(null);\n const targetRef = useRef<HTMLElement | null>(null);\n const focusSearchTimeout = useRef<number>(-1);\n const focusTargetTimeout = useRef<number>(-1);\n\n const openDropdown = () => {\n if (!dropdownOpened) {\n setDropdownOpened(true);\n onDropdownOpen?.();\n }\n };\n\n const closeDropdown = () => {\n if (dropdownOpened) {\n setDropdownOpened(false);\n onDropdownClose?.();\n }\n };\n\n const toggleDropdown = () => {\n if (dropdownOpened) {\n closeDropdown();\n } else {\n openDropdown();\n }\n };\n\n const clearSelectedItem = () => {\n const selected = document.querySelector(`#${listId.current} [data-combobox-selected]`);\n selected?.removeAttribute('data-combobox-selected');\n selected?.removeAttribute('aria-selected');\n };\n\n const selectOption = (index: number) => {\n const list = document.getElementById(listId.current!);\n const items = list?.querySelectorAll('[data-combobox-option]');\n\n if (!items) {\n return null;\n }\n\n const nextIndex = index >= items!.length ? 0 : index < 0 ? items!.length - 1 : index;\n selectedOptionIndex.current = nextIndex;\n\n if (items?.[nextIndex] && !items[nextIndex].hasAttribute('data-combobox-disabled')) {\n clearSelectedItem();\n items[nextIndex].setAttribute('data-combobox-selected', 'true');\n items[nextIndex].setAttribute('aria-selected', 'true');\n items[nextIndex].scrollIntoView({ block: 'nearest' });\n return items[nextIndex].id;\n }\n\n return null;\n };\n\n const selectActiveOption = () => {\n const activeOption = document.querySelector<HTMLDivElement>(\n `#${listId.current} [data-combobox-active]`\n );\n\n if (activeOption) {\n const items = document.querySelectorAll<HTMLDivElement>(\n `#${listId.current} [data-combobox-option]`\n );\n const index = Array.from(items).findIndex((option) => option === activeOption);\n return selectOption(index);\n }\n\n return selectOption(0);\n };\n\n const selectNextOption = () =>\n selectOption(\n getNextIndex(\n selectedOptionIndex.current,\n document.querySelectorAll<HTMLDivElement>(`#${listId.current} [data-combobox-option]`),\n loop\n )\n );\n\n const selectPreviousOption = () =>\n selectOption(\n getPreviousIndex(\n selectedOptionIndex.current,\n document.querySelectorAll<HTMLDivElement>(`#${listId.current} [data-combobox-option]`),\n loop\n )\n );\n\n const selectFirstOption = () =>\n selectOption(\n getFirstIndex(\n document.querySelectorAll<HTMLDivElement>(`#${listId.current} [data-combobox-option]`)\n )\n );\n\n const resetSelectedOption = () => {\n selectedOptionIndex.current = -1;\n clearSelectedItem();\n };\n\n const clickSelectedOption = () => {\n const items = document.querySelectorAll<HTMLDivElement>(\n `#${listId.current} [data-combobox-option]`\n );\n const item = items?.[selectedOptionIndex.current];\n item?.click();\n };\n\n const setListId = (id: string) => {\n listId.current = id;\n };\n\n const focusSearchInput = () => {\n focusSearchTimeout.current = window.setTimeout(() => searchRef.current!.focus(), 0);\n };\n\n const focusTarget = () => {\n focusTargetTimeout.current = window.setTimeout(() => targetRef.current!.focus(), 0);\n };\n\n useEffect(\n () => () => {\n window.clearTimeout(focusSearchTimeout.current);\n window.clearTimeout(focusTargetTimeout.current);\n },\n []\n );\n\n return {\n dropdownOpened,\n openDropdown,\n closeDropdown,\n toggleDropdown,\n\n selectedOptionIndex: selectedOptionIndex.current,\n selectOption,\n selectFirstOption,\n selectActiveOption,\n selectNextOption,\n selectPreviousOption,\n resetSelectedOption,\n\n listId: listId.current,\n setListId,\n clickSelectedOption,\n\n searchRef,\n focusSearchInput,\n\n targetRef,\n focusTarget,\n };\n}\n"],"names":["useUncontrolled","useRef","getNextIndex","getPreviousIndex","getFirstIndex","useEffect"],"mappings":"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"}