@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.
- package/cjs/components/Combobox/Combobox.context.js +13 -0
- package/cjs/components/Combobox/Combobox.context.js.map +1 -0
- package/cjs/components/Combobox/Combobox.js +139 -0
- package/cjs/components/Combobox/Combobox.js.map +1 -0
- package/cjs/components/Combobox/Combobox.module.css.js +8 -0
- package/cjs/components/Combobox/Combobox.module.css.js.map +1 -0
- package/cjs/components/Combobox/ComboboxChevron/ComboboxChevron.js +39 -19
- package/cjs/components/Combobox/ComboboxChevron/ComboboxChevron.js.map +1 -1
- package/cjs/components/Combobox/ComboboxDropdown/ComboboxDropdown.js +70 -0
- package/cjs/components/Combobox/ComboboxDropdown/ComboboxDropdown.js.map +1 -0
- package/cjs/components/Combobox/ComboboxEmpty/ComboboxEmpty.js +63 -0
- package/cjs/components/Combobox/ComboboxEmpty/ComboboxEmpty.js.map +1 -0
- package/cjs/components/Combobox/ComboboxOption/ComboboxOption.js +119 -0
- package/cjs/components/Combobox/ComboboxOption/ComboboxOption.js.map +1 -0
- package/cjs/components/Combobox/ComboboxOptions/ComboboxOptions.js +75 -0
- package/cjs/components/Combobox/ComboboxOptions/ComboboxOptions.js.map +1 -0
- package/cjs/components/Combobox/ComboboxSearch/ComboboxSearch.js +92 -0
- package/cjs/components/Combobox/ComboboxSearch/ComboboxSearch.js.map +1 -0
- package/cjs/components/Combobox/ComboboxTarget/ComboboxTarget.js +74 -0
- package/cjs/components/Combobox/ComboboxTarget/ComboboxTarget.js.map +1 -0
- package/cjs/components/Combobox/use-combobox/get-index/get-index.js +47 -0
- package/cjs/components/Combobox/use-combobox/get-index/get-index.js.map +1 -0
- package/cjs/components/Combobox/use-combobox/get-index/get-virtualized-index.js +57 -0
- package/cjs/components/Combobox/use-combobox/get-index/get-virtualized-index.js.map +1 -0
- package/cjs/components/Combobox/use-combobox/use-combobox.js +152 -0
- package/cjs/components/Combobox/use-combobox/use-combobox.js.map +1 -0
- package/cjs/components/Combobox/use-combobox/use-virtualized-combobox.js +125 -0
- package/cjs/components/Combobox/use-combobox/use-virtualized-combobox.js.map +1 -0
- package/cjs/components/Combobox/use-combobox-target-props/use-combobox-target-props.js +80 -0
- package/cjs/components/Combobox/use-combobox-target-props/use-combobox-target-props.js.map +1 -0
- package/cjs/components/Drawer/Drawer.context.js +13 -0
- package/cjs/components/Drawer/Drawer.context.js.map +1 -0
- package/cjs/components/Drawer/Drawer.js +95 -0
- package/cjs/components/Drawer/Drawer.js.map +1 -0
- package/cjs/components/Drawer/Drawer.module.css.js +8 -0
- package/cjs/components/Drawer/Drawer.module.css.js.map +1 -0
- package/cjs/components/Drawer/DrawerBody.js +60 -0
- package/cjs/components/Drawer/DrawerBody.js.map +1 -0
- package/cjs/components/Drawer/DrawerCloseButton.js +60 -0
- package/cjs/components/Drawer/DrawerCloseButton.js.map +1 -0
- package/cjs/components/Drawer/DrawerContent.js +67 -0
- package/cjs/components/Drawer/DrawerContent.js.map +1 -0
- package/cjs/components/Drawer/DrawerHeader.js +60 -0
- package/cjs/components/Drawer/DrawerHeader.js.map +1 -0
- package/cjs/components/Drawer/DrawerOverlay.js +60 -0
- package/cjs/components/Drawer/DrawerOverlay.js.map +1 -0
- package/cjs/components/Drawer/DrawerRoot.js +128 -0
- package/cjs/components/Drawer/DrawerRoot.js.map +1 -0
- package/cjs/components/Drawer/DrawerTitle.js +60 -0
- package/cjs/components/Drawer/DrawerTitle.js.map +1 -0
- package/cjs/components/Modal/Modal.js.map +1 -1
- package/cjs/components/Modal/ModalRoot.js +6 -3
- package/cjs/components/Modal/ModalRoot.js.map +1 -1
- package/cjs/components/ModalBase/ModalBase.js +7 -5
- package/cjs/components/ModalBase/ModalBase.js.map +1 -1
- package/cjs/components/Popover/Popover.js +1 -1
- package/cjs/core/MantineProvider/use-mantine-color-scheme/use-mantine-color-scheme.js +1 -1
- package/cjs/core/MantineProvider/use-mantine-color-scheme/use-mantine-color-scheme.js.map +1 -1
- package/cjs/core/styles-api/use-styles/get-style/resolve-styles/resolve-styles.js +23 -2
- package/cjs/core/styles-api/use-styles/get-style/resolve-styles/resolve-styles.js.map +1 -1
- package/cjs/index.css +283 -158
- package/cjs/index.js +44 -0
- package/cjs/index.js.map +1 -1
- package/esm/components/Combobox/Combobox.context.js +8 -0
- package/esm/components/Combobox/Combobox.context.js.map +1 -0
- package/esm/components/Combobox/Combobox.js +131 -0
- package/esm/components/Combobox/Combobox.js.map +1 -0
- package/esm/components/Combobox/Combobox.module.css.js +4 -0
- package/esm/components/Combobox/Combobox.module.css.js.map +1 -0
- package/esm/components/Combobox/ComboboxChevron/ComboboxChevron.js +39 -18
- package/esm/components/Combobox/ComboboxChevron/ComboboxChevron.js.map +1 -1
- package/esm/components/Combobox/ComboboxDropdown/ComboboxDropdown.js +62 -0
- package/esm/components/Combobox/ComboboxDropdown/ComboboxDropdown.js.map +1 -0
- package/esm/components/Combobox/ComboboxEmpty/ComboboxEmpty.js +55 -0
- package/esm/components/Combobox/ComboboxEmpty/ComboboxEmpty.js.map +1 -0
- package/esm/components/Combobox/ComboboxOption/ComboboxOption.js +111 -0
- package/esm/components/Combobox/ComboboxOption/ComboboxOption.js.map +1 -0
- package/esm/components/Combobox/ComboboxOptions/ComboboxOptions.js +67 -0
- package/esm/components/Combobox/ComboboxOptions/ComboboxOptions.js.map +1 -0
- package/esm/components/Combobox/ComboboxSearch/ComboboxSearch.js +84 -0
- package/esm/components/Combobox/ComboboxSearch/ComboboxSearch.js.map +1 -0
- package/esm/components/Combobox/ComboboxTarget/ComboboxTarget.js +66 -0
- package/esm/components/Combobox/ComboboxTarget/ComboboxTarget.js.map +1 -0
- package/esm/components/Combobox/use-combobox/get-index/get-index.js +41 -0
- package/esm/components/Combobox/use-combobox/get-index/get-index.js.map +1 -0
- package/esm/components/Combobox/use-combobox/get-index/get-virtualized-index.js +51 -0
- package/esm/components/Combobox/use-combobox/get-index/get-virtualized-index.js.map +1 -0
- package/esm/components/Combobox/use-combobox/use-combobox.js +148 -0
- package/esm/components/Combobox/use-combobox/use-combobox.js.map +1 -0
- package/esm/components/Combobox/use-combobox/use-virtualized-combobox.js +121 -0
- package/esm/components/Combobox/use-combobox/use-virtualized-combobox.js.map +1 -0
- package/esm/components/Combobox/use-combobox-target-props/use-combobox-target-props.js +76 -0
- package/esm/components/Combobox/use-combobox-target-props/use-combobox-target-props.js.map +1 -0
- package/esm/components/Drawer/Drawer.context.js +8 -0
- package/esm/components/Drawer/Drawer.context.js.map +1 -0
- package/esm/components/Drawer/Drawer.js +87 -0
- package/esm/components/Drawer/Drawer.js.map +1 -0
- package/esm/components/Drawer/Drawer.module.css.js +4 -0
- package/esm/components/Drawer/Drawer.module.css.js.map +1 -0
- package/esm/components/Drawer/DrawerBody.js +52 -0
- package/esm/components/Drawer/DrawerBody.js.map +1 -0
- package/esm/components/Drawer/DrawerCloseButton.js +52 -0
- package/esm/components/Drawer/DrawerCloseButton.js.map +1 -0
- package/esm/components/Drawer/DrawerContent.js +59 -0
- package/esm/components/Drawer/DrawerContent.js.map +1 -0
- package/esm/components/Drawer/DrawerHeader.js +52 -0
- package/esm/components/Drawer/DrawerHeader.js.map +1 -0
- package/esm/components/Drawer/DrawerOverlay.js +52 -0
- package/esm/components/Drawer/DrawerOverlay.js.map +1 -0
- package/esm/components/Drawer/DrawerRoot.js +120 -0
- package/esm/components/Drawer/DrawerRoot.js.map +1 -0
- package/esm/components/Drawer/DrawerTitle.js +52 -0
- package/esm/components/Drawer/DrawerTitle.js.map +1 -0
- package/esm/components/Modal/Modal.js.map +1 -1
- package/esm/components/Modal/ModalRoot.js +6 -3
- package/esm/components/Modal/ModalRoot.js.map +1 -1
- package/esm/components/ModalBase/ModalBase.js +7 -5
- package/esm/components/ModalBase/ModalBase.js.map +1 -1
- package/esm/components/Popover/Popover.js +1 -1
- package/esm/core/MantineProvider/use-mantine-color-scheme/use-mantine-color-scheme.js +1 -1
- package/esm/core/MantineProvider/use-mantine-color-scheme/use-mantine-color-scheme.js.map +1 -1
- package/esm/core/styles-api/use-styles/get-style/resolve-styles/resolve-styles.js +23 -2
- package/esm/core/styles-api/use-styles/get-style/resolve-styles/resolve-styles.js.map +1 -1
- package/esm/index.css +283 -158
- package/esm/index.js +22 -0
- package/esm/index.js.map +1 -1
- package/lib/components/Combobox/Combobox.context.d.ts +15 -0
- package/lib/components/Combobox/Combobox.d.ts +89 -0
- package/lib/components/Combobox/ComboboxChevron/ComboboxChevron.d.ts +20 -6
- package/lib/components/Combobox/ComboboxDropdown/ComboboxDropdown.d.ts +19 -0
- package/lib/components/Combobox/ComboboxEmpty/ComboboxEmpty.d.ts +16 -0
- package/lib/components/Combobox/ComboboxOption/ComboboxOption.d.ts +24 -0
- package/lib/components/Combobox/ComboboxOptions/ComboboxOptions.d.ts +16 -0
- package/lib/components/Combobox/ComboboxSearch/ComboboxSearch.d.ts +19 -0
- package/lib/components/Combobox/ComboboxTarget/ComboboxTarget.d.ts +22 -0
- package/lib/components/Combobox/index.d.ts +19 -0
- package/lib/components/Combobox/use-combobox/get-index/get-index.d.ts +3 -0
- package/lib/components/Combobox/use-combobox/get-index/get-virtualized-index.d.ts +14 -0
- package/lib/components/Combobox/use-combobox/use-combobox.d.ts +37 -0
- package/lib/components/Combobox/use-combobox/use-virtualized-combobox.d.ts +25 -0
- package/lib/components/Combobox/use-combobox-target-props/use-combobox-target-props.d.ts +24 -0
- package/lib/components/Drawer/Drawer.context.d.ts +13 -0
- package/lib/components/Drawer/Drawer.d.ts +59 -0
- package/lib/components/Drawer/DrawerBody.d.ts +17 -0
- package/lib/components/Drawer/DrawerCloseButton.d.ts +17 -0
- package/lib/components/Drawer/DrawerContent.d.ts +17 -0
- package/lib/components/Drawer/DrawerHeader.d.ts +17 -0
- package/lib/components/Drawer/DrawerOverlay.d.ts +17 -0
- package/lib/components/Drawer/DrawerRoot.d.ts +32 -0
- package/lib/components/Drawer/DrawerTitle.d.ts +17 -0
- package/lib/components/Drawer/index.d.ts +16 -0
- package/lib/components/Modal/Modal.d.ts +3 -2
- package/lib/components/Modal/ModalRoot.d.ts +1 -0
- package/lib/components/index.d.ts +2 -0
- package/lib/core/styles-api/index.d.ts +2 -0
- package/lib/core/styles-api/use-styles/get-style/get-theme-styles/get-theme-styles.d.ts +1 -2
- package/lib/core/styles-api/use-styles/get-style/resolve-styles/resolve-styles.d.ts +2 -3
- 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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"}
|