@pixum/combobox 4.0.0-alpha.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +870 -647
- package/lib/ComboBox.d.ts +5 -5
- package/lib/ComboBox.js +75 -76
- package/lib/ComboBox.js.map +1 -1
- package/lib/ComboboxOptions/Options.d.ts +12 -12
- package/lib/ComboboxOptions/Options.js +15 -15
- package/lib/ComboboxOptions/Options.js.map +1 -1
- package/lib/ComboboxOptions/OptionsGroup.d.ts +13 -13
- package/lib/ComboboxOptions/OptionsGroup.js +7 -7
- package/lib/ComboboxOptions/index.d.ts +4 -4
- package/lib/ComboboxOptions/index.js +21 -21
- package/lib/ComboboxOptions/index.js.map +1 -1
- package/lib/helper/calculateListMaxHeight.d.ts +1 -1
- package/lib/helper/calculateListMaxHeight.js +7 -7
- package/lib/helper/scrollOptionToViewport.d.ts +1 -1
- package/lib/helper/scrollOptionToViewport.js +18 -17
- package/lib/helper/scrollOptionToViewport.js.map +1 -1
- package/lib/helper/useIsDesktopScreenWidth.d.ts +2 -2
- package/lib/helper/useIsDesktopScreenWidth.js +19 -19
- package/lib/helper/useIsDesktopScreenWidth.js.map +1 -1
- package/lib/index.d.ts +3 -3
- package/lib/index.js +3 -3
- package/lib/styles.css +1 -1
- package/lib/types.d.ts +36 -34
- package/lib/types.js +1 -1
- package/package.json +14 -10
package/lib/ComboBox.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { ComboBoxProps } from './types';
|
|
3
|
-
import './styles.css';
|
|
4
|
-
declare const ComboBox: React.FC<ComboBoxProps>;
|
|
5
|
-
export default ComboBox;
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ComboBoxProps } from './types';
|
|
3
|
+
import './styles.css';
|
|
4
|
+
declare const ComboBox: React.FC<ComboBoxProps>;
|
|
5
|
+
export default ComboBox;
|
package/lib/ComboBox.js
CHANGED
|
@@ -1,77 +1,76 @@
|
|
|
1
|
-
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
2
|
-
import BottomSheet from '@pixum/bottom-sheet';
|
|
3
|
-
import Text, { TextVariant } from '@pixum/text';
|
|
4
|
-
import {
|
|
5
|
-
import ComboBoxOptions from './ComboboxOptions';
|
|
6
|
-
import
|
|
7
|
-
import '
|
|
8
|
-
import
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
};
|
|
28
|
-
const
|
|
29
|
-
setSearchQuery('');
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
React.createElement(
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
React.createElement(
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
export default ComboBox;
|
|
1
|
+
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
2
|
+
import BottomSheet from '@pixum/bottom-sheet';
|
|
3
|
+
import Text, { TextVariant } from '@pixum/text';
|
|
4
|
+
import { useEscapeKeyPress } from '@pixum/utils';
|
|
5
|
+
import ComboBoxOptions from './ComboboxOptions';
|
|
6
|
+
import { SearchInput } from '@pixum/web-input';
|
|
7
|
+
import { SelectInput } from '@pixum/user-input';
|
|
8
|
+
import useIsDesktopScreenWidth from './helper/useIsDesktopScreenWidth';
|
|
9
|
+
import './styles.css';
|
|
10
|
+
import clsx from 'clsx';
|
|
11
|
+
import ThemeProvider, { DEFAULT_THEME } from '@pixum/theme-provider';
|
|
12
|
+
const ComboBox = ({ className = '', name, headline, label, searchPattern = '', id, isOpen, options, placeholder, value, inputMode, noResultsText, leadingType, optionDetails, withSearch = true, theme = DEFAULT_THEME, setIsOpen, onClick, onChange, onOutsideClick, onOptionItemClick, onSheetClose, }) => {
|
|
13
|
+
const comboBoxRef = useRef(null);
|
|
14
|
+
const bottomSheetRef = useRef(null);
|
|
15
|
+
const [searchQuery, setSearchQuery] = useState('');
|
|
16
|
+
const [inputPlaceholder, setPlaceholder] = useState(placeholder);
|
|
17
|
+
const isDesktop = useIsDesktopScreenWidth();
|
|
18
|
+
const optionsExist = Object.keys(options).length > 0;
|
|
19
|
+
const showSelectField = !withSearch || (isDesktop && !isOpen) || !isDesktop;
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
!isOpen && (onSheetClose === null || onSheetClose === void 0 ? void 0 : onSheetClose());
|
|
22
|
+
}, [isOpen]);
|
|
23
|
+
const handleChange = (e) => {
|
|
24
|
+
const { value: searchValue } = e.target;
|
|
25
|
+
setSearchQuery(searchValue);
|
|
26
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(searchValue);
|
|
27
|
+
};
|
|
28
|
+
const handleClearInput = () => {
|
|
29
|
+
setSearchQuery('');
|
|
30
|
+
};
|
|
31
|
+
const clearAndClose = () => {
|
|
32
|
+
setSearchQuery('');
|
|
33
|
+
setIsOpen(false);
|
|
34
|
+
};
|
|
35
|
+
useEscapeKeyPress(clearAndClose, isOpen);
|
|
36
|
+
const handleClickOutside = useCallback((event) => {
|
|
37
|
+
var _a;
|
|
38
|
+
const node = event === null || event === void 0 ? void 0 : event.target;
|
|
39
|
+
const isOutside = !((_a = comboBoxRef.current) === null || _a === void 0 ? void 0 : _a.contains(node));
|
|
40
|
+
setPlaceholder(placeholder);
|
|
41
|
+
isOutside && isDesktop && clearAndClose();
|
|
42
|
+
isOutside && isDesktop && (onOutsideClick === null || onOutsideClick === void 0 ? void 0 : onOutsideClick());
|
|
43
|
+
}, [comboBoxRef, bottomSheetRef, placeholder]);
|
|
44
|
+
const handleOptionItemClick = (optionValue) => {
|
|
45
|
+
onOptionItemClick === null || onOptionItemClick === void 0 ? void 0 : onOptionItemClick(optionValue);
|
|
46
|
+
};
|
|
47
|
+
const handleOnClick = () => {
|
|
48
|
+
onClick === null || onClick === void 0 ? void 0 : onClick();
|
|
49
|
+
};
|
|
50
|
+
const NoResultsTextComponent = () => {
|
|
51
|
+
return (React.createElement(Text, { variant: TextVariant.SUBHEADLINE, className: "combobox--no-results-text" }, noResultsText));
|
|
52
|
+
};
|
|
53
|
+
const removePlaceholder = () => {
|
|
54
|
+
setPlaceholder('');
|
|
55
|
+
};
|
|
56
|
+
const handleKeyDown = (e) => {
|
|
57
|
+
var _a;
|
|
58
|
+
if (e.key === 'Tab') {
|
|
59
|
+
e.preventDefault();
|
|
60
|
+
(_a = document.querySelector('.combobox__options .menu-item')) === null || _a === void 0 ? void 0 : _a.focus();
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
return (React.createElement(ThemeProvider, { theme: theme },
|
|
64
|
+
showSelectField && (React.createElement(SelectInput, { className: clsx(isOpen && 'active', className), name: name, label: label, value: value, onClick: handleOnClick, onOutsideClick: handleClickOutside, isCompact: true, id: id, readOnly: true })),
|
|
65
|
+
isDesktop && isOpen && (React.createElement("div", { className: "combobox", ref: comboBoxRef },
|
|
66
|
+
withSearch && (React.createElement(SearchInput, { name: name, value: searchQuery, pattern: searchPattern, label: label, onChange: handleChange, onClear: handleClearInput, onKeyDown: handleKeyDown, onOutsideClick: handleClickOutside, displayLeadingIcon: isOpen, isCompact: true, inputMode: inputMode, autoFocus: true })),
|
|
67
|
+
optionsExist ? (React.createElement(ComboBoxOptions, { options: options, onClick: handleOptionItemClick, selectedOption: value, leadingType: leadingType, optionDetails: optionDetails })) : (React.createElement(NoResultsTextComponent, null)),
|
|
68
|
+
React.createElement("div", null))),
|
|
69
|
+
!isDesktop && isOpen && (React.createElement(BottomSheet, { open: isOpen, onClose: clearAndClose, ref: bottomSheetRef },
|
|
70
|
+
React.createElement("div", { className: "combobox--header" },
|
|
71
|
+
React.createElement(Text, { variant: TextVariant.HEADLINE, className: "combobox--headline" }, headline),
|
|
72
|
+
withSearch && (React.createElement(SearchInput, { name: name, value: searchQuery, pattern: searchPattern, onChange: handleChange, onClear: handleClearInput, onFocus: removePlaceholder, placeholder: inputPlaceholder, isCompact: true, inputMode: inputMode, displayLeadingIcon: isOpen }))),
|
|
73
|
+
React.createElement("div", { className: "combobox__options scrollable" }, optionsExist ? (React.createElement(ComboBoxOptions, { options: options, onClick: handleOptionItemClick, selectedOption: value, leadingType: leadingType, optionDetails: optionDetails })) : (React.createElement(NoResultsTextComponent, null)))))));
|
|
74
|
+
};
|
|
75
|
+
export default ComboBox;
|
|
77
76
|
//# sourceMappingURL=ComboBox.js.map
|
package/lib/ComboBox.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboBox.js","sourceRoot":"","sources":["../src/ComboBox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"ComboBox.js","sourceRoot":"","sources":["../src/ComboBox.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { LeadingType } from '@pixum/menu-item';
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import { ComboBoxOptionProps } from '../types';
|
|
4
|
-
interface OptionsProps {
|
|
5
|
-
items: ComboBoxOptionProps[];
|
|
6
|
-
selectedOption?: string;
|
|
7
|
-
onClick?: (value: string) => void;
|
|
8
|
-
onKeyDown: (e: React.KeyboardEvent, value: string) => void;
|
|
9
|
-
leadingType?: LeadingType;
|
|
10
|
-
}
|
|
11
|
-
declare const Options: React.FC<OptionsProps>;
|
|
12
|
-
export default Options;
|
|
1
|
+
import { LeadingType } from '@pixum/menu-item';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { ComboBoxOptionProps } from '../types';
|
|
4
|
+
interface OptionsProps {
|
|
5
|
+
items: ComboBoxOptionProps[];
|
|
6
|
+
selectedOption?: string;
|
|
7
|
+
onClick?: (value: string) => void;
|
|
8
|
+
onKeyDown: (e: React.KeyboardEvent, value: string) => void;
|
|
9
|
+
leadingType?: LeadingType;
|
|
10
|
+
}
|
|
11
|
+
declare const Options: React.FC<OptionsProps>;
|
|
12
|
+
export default Options;
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import MenuItem from '@pixum/menu-item';
|
|
2
|
-
import clsx from 'clsx';
|
|
3
|
-
import React from 'react';
|
|
4
|
-
const Options = ({ items, selectedOption, onClick, onKeyDown, leadingType, }) => (React.createElement(React.Fragment, null, items.map((item
|
|
5
|
-
var _a;
|
|
6
|
-
return (React.createElement(MenuItem, { key: `combobox-item-${item.text}`, tabIndex:
|
|
7
|
-
? {
|
|
8
|
-
name: item.text,
|
|
9
|
-
type: leadingType,
|
|
10
|
-
}
|
|
11
|
-
: undefined, selected: selectedOption === item.text, text: item.text, subtext: item.subtext, subItemProps: {
|
|
12
|
-
text: (_a = item.subItemProps) === null || _a === void 0 ? void 0 : _a.text,
|
|
13
|
-
} }));
|
|
14
|
-
})));
|
|
15
|
-
export default Options;
|
|
1
|
+
import MenuItem from '@pixum/menu-item';
|
|
2
|
+
import clsx from 'clsx';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
const Options = ({ items, selectedOption, onClick, onKeyDown, leadingType, }) => (React.createElement(React.Fragment, null, items.map((item) => {
|
|
5
|
+
var _a;
|
|
6
|
+
return (React.createElement(MenuItem, { key: `combobox-item-${item.text}`, tabIndex: 0, className: clsx(selectedOption === item.text && 'selected'), onClick: () => onClick === null || onClick === void 0 ? void 0 : onClick(item.text), onKeyDown: e => onKeyDown(e, item.text), onMouseEnter: item.onMouseEnter, leadingProps: leadingType
|
|
7
|
+
? {
|
|
8
|
+
name: item.text,
|
|
9
|
+
type: leadingType,
|
|
10
|
+
}
|
|
11
|
+
: undefined, selected: selectedOption === item.text, text: item.text, subtext: item.subtext, subItemProps: {
|
|
12
|
+
text: (_a = item.subItemProps) === null || _a === void 0 ? void 0 : _a.text,
|
|
13
|
+
} }));
|
|
14
|
+
})));
|
|
15
|
+
export default Options;
|
|
16
16
|
//# sourceMappingURL=Options.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Options.js","sourceRoot":"","sources":["../../src/ComboboxOptions/Options.tsx"],"names":[],"mappings":"AAAA,OAAO,QAAwC,MAAM,kBAAkB,CAAA;AACvE,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,KAAK,MAAM,OAAO,CAAA;AAWzB,MAAM,OAAO,GAA2B,CAAC,EACvC,KAAK,EACL,cAAc,EACd,OAAO,EACP,SAAS,EACT,WAAW,GACZ,EAAE,EAAE,CAAC,CACJ,0CACG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"Options.js","sourceRoot":"","sources":["../../src/ComboboxOptions/Options.tsx"],"names":[],"mappings":"AAAA,OAAO,QAAwC,MAAM,kBAAkB,CAAA;AACvE,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,KAAK,MAAM,OAAO,CAAA;AAWzB,MAAM,OAAO,GAA2B,CAAC,EACvC,KAAK,EACL,cAAc,EACd,OAAO,EACP,SAAS,EACT,WAAW,GACZ,EAAE,EAAE,CAAC,CACJ,0CACG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAmB,EAAE,EAAE;;IAAC,OAAA,CAClC,oBAAC,QAAQ,IACP,GAAG,EAAE,iBAAiB,IAAI,CAAC,IAAI,EAAE,EACjC,QAAQ,EAAE,CAAC,EACX,SAAS,EAAE,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,IAAI,IAAI,UAAU,CAAC,EAC3D,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,IAAI,CAAC,IAAI,CAAC,EACnC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EACvC,YAAY,EAAE,IAAI,CAAC,YAAY,EAC/B,YAAY,EACV,WAAW;YACT,CAAC,CAAC;gBACE,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,WAAW;aAClB;YACH,CAAC,CAAC,SAAS,EAEf,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC,IAAI,EACtC,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,YAAY,EAAE;YACZ,IAAI,EAAE,MAAA,IAAI,CAAC,YAAY,0CAAE,IAAI;SAC9B,GACD,CACH,CAAA;CAAA,CAAC,CACD,CACJ,CAAA;AAED,eAAe,OAAO,CAAA"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { LeadingType } from '@pixum/menu-item';
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import { ComboBoxOptionProps } from '../types';
|
|
4
|
-
interface OptionsGroupProps {
|
|
5
|
-
group: string;
|
|
6
|
-
items: ComboBoxOptionProps[];
|
|
7
|
-
selectedOption?: string;
|
|
8
|
-
onClick?: (value: string) => void;
|
|
9
|
-
onKeyDown: (e: React.KeyboardEvent, value: string) => void;
|
|
10
|
-
leadingType?: LeadingType;
|
|
11
|
-
}
|
|
12
|
-
declare const OptionsGroup: React.FC<OptionsGroupProps>;
|
|
13
|
-
export default OptionsGroup;
|
|
1
|
+
import { LeadingType } from '@pixum/menu-item';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { ComboBoxOptionProps } from '../types';
|
|
4
|
+
interface OptionsGroupProps {
|
|
5
|
+
group: string;
|
|
6
|
+
items: ComboBoxOptionProps[];
|
|
7
|
+
selectedOption?: string;
|
|
8
|
+
onClick?: (value: string) => void;
|
|
9
|
+
onKeyDown: (e: React.KeyboardEvent, value: string) => void;
|
|
10
|
+
leadingType?: LeadingType;
|
|
11
|
+
}
|
|
12
|
+
declare const OptionsGroup: React.FC<OptionsGroupProps>;
|
|
13
|
+
export default OptionsGroup;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import Text, { TextVariant } from '@pixum/text';
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import Options from './Options';
|
|
4
|
-
const OptionsGroup = ({ group, items, selectedOption, onClick, onKeyDown, leadingType, }) => (React.createElement("div", { className: "combobox__options-group", key: `combobox__options-group-${group}` },
|
|
5
|
-
React.createElement(Text, { variant: TextVariant.HEADLINE, className: "combobox__sticky-header" }, group),
|
|
6
|
-
React.createElement(Options, { items: items, selectedOption: selectedOption, onClick: onClick, onKeyDown: onKeyDown, leadingType: leadingType })));
|
|
7
|
-
export default OptionsGroup;
|
|
1
|
+
import Text, { TextVariant } from '@pixum/text';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import Options from './Options';
|
|
4
|
+
const OptionsGroup = ({ group, items, selectedOption, onClick, onKeyDown, leadingType, }) => (React.createElement("div", { className: "combobox__options-group", key: `combobox__options-group-${group}` },
|
|
5
|
+
React.createElement(Text, { variant: TextVariant.HEADLINE, className: "combobox__sticky-header" }, group),
|
|
6
|
+
React.createElement(Options, { items: items, selectedOption: selectedOption, onClick: onClick, onKeyDown: onKeyDown, leadingType: leadingType })));
|
|
7
|
+
export default OptionsGroup;
|
|
8
8
|
//# sourceMappingURL=OptionsGroup.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { ComboBoxOptionsProps } from '../types';
|
|
3
|
-
declare const ComboBoxOptions: React.FC<ComboBoxOptionsProps>;
|
|
4
|
-
export default ComboBoxOptions;
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ComboBoxOptionsProps } from '../types';
|
|
3
|
+
declare const ComboBoxOptions: React.FC<ComboBoxOptionsProps>;
|
|
4
|
+
export default ComboBoxOptions;
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import React, { useEffect } from 'react';
|
|
2
|
-
import Menu from '@pixum/menu';
|
|
3
|
-
import { scrollOptionToViewport } from '../helper/scrollOptionToViewport';
|
|
4
|
-
import OptionsGroup from './OptionsGroup';
|
|
5
|
-
import Options from './Options';
|
|
6
|
-
import useIsDesktopScreenWidth from '../helper/useIsDesktopScreenWidth';
|
|
7
|
-
const ComboBoxOptions = ({ options, onClick, selectedOption, leadingType, optionDetails, }) => {
|
|
8
|
-
const isDesktop = useIsDesktopScreenWidth();
|
|
9
|
-
const handleOnKeyDown = (e, value) => {
|
|
10
|
-
if (e.key === 'Enter') {
|
|
11
|
-
onClick === null || onClick === void 0 ? void 0 : onClick(value);
|
|
12
|
-
}
|
|
13
|
-
};
|
|
14
|
-
useEffect(() => {
|
|
15
|
-
scrollOptionToViewport(isDesktop);
|
|
16
|
-
}, [isDesktop]);
|
|
17
|
-
return (React.createElement(Menu, { className: "combobox__options" },
|
|
18
|
-
Array.isArray(options) ? (React.createElement(Options, { items: options, selectedOption: selectedOption, onClick: onClick, onKeyDown: handleOnKeyDown, leadingType: leadingType })) : (React.createElement(React.Fragment, null, Object.entries(options).map(([group, items]) => (React.createElement(OptionsGroup, { group: group, items: items, selectedOption: selectedOption, onClick: onClick, onKeyDown: handleOnKeyDown, leadingType: leadingType }))))),
|
|
19
|
-
optionDetails && (React.createElement("div", { className: "combobox__option-details text--caption" }, optionDetails))));
|
|
20
|
-
};
|
|
21
|
-
export default ComboBoxOptions;
|
|
1
|
+
import React, { useEffect } from 'react';
|
|
2
|
+
import Menu from '@pixum/menu';
|
|
3
|
+
import { scrollOptionToViewport } from '../helper/scrollOptionToViewport';
|
|
4
|
+
import OptionsGroup from './OptionsGroup';
|
|
5
|
+
import Options from './Options';
|
|
6
|
+
import useIsDesktopScreenWidth from '../helper/useIsDesktopScreenWidth';
|
|
7
|
+
const ComboBoxOptions = ({ options, onClick, selectedOption, leadingType, optionDetails, }) => {
|
|
8
|
+
const isDesktop = useIsDesktopScreenWidth();
|
|
9
|
+
const handleOnKeyDown = (e, value) => {
|
|
10
|
+
if (e.key === 'Enter') {
|
|
11
|
+
onClick === null || onClick === void 0 ? void 0 : onClick(value);
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
scrollOptionToViewport(isDesktop);
|
|
16
|
+
}, [isDesktop]);
|
|
17
|
+
return (React.createElement(Menu, { className: "combobox__options" },
|
|
18
|
+
Array.isArray(options) ? (React.createElement(Options, { items: options, selectedOption: selectedOption, onClick: onClick, onKeyDown: handleOnKeyDown, leadingType: leadingType })) : (React.createElement(React.Fragment, null, Object.entries(options).map(([group, items]) => (React.createElement(OptionsGroup, { group: group, items: items, selectedOption: selectedOption, onClick: onClick, onKeyDown: handleOnKeyDown, leadingType: leadingType }))))),
|
|
19
|
+
optionDetails && (React.createElement("div", { className: "combobox__option-details text--caption" }, optionDetails))));
|
|
20
|
+
};
|
|
21
|
+
export default ComboBoxOptions;
|
|
22
22
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ComboboxOptions/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAW,MAAM,OAAO,CAAA;AACjD,OAAO,IAAI,MAAM,aAAa,CAAA;AAC9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AAEzE,OAAO,YAAY,MAAM,gBAAgB,CAAA;AACzC,OAAO,OAAO,MAAM,WAAW,CAAA;AAC/B,OAAO,uBAAuB,MAAM,mCAAmC,CAAA;AAEvE,MAAM,eAAe,GAAmC,CAAC,EACvD,OAAO,EACP,OAAO,EACP,cAAc,EACd,WAAW,EACX,aAAa,GACd,EAAE,EAAE;IACH,MAAM,SAAS,GAAG,uBAAuB,EAAE,CAAA;IAE3C,MAAM,eAAe,GAAG,CAAC,CAAsB,EAAE,KAAa,EAAE,EAAE;QAChE,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ComboboxOptions/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAW,MAAM,OAAO,CAAA;AACjD,OAAO,IAAI,MAAM,aAAa,CAAA;AAC9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AAEzE,OAAO,YAAY,MAAM,gBAAgB,CAAA;AACzC,OAAO,OAAO,MAAM,WAAW,CAAA;AAC/B,OAAO,uBAAuB,MAAM,mCAAmC,CAAA;AAEvE,MAAM,eAAe,GAAmC,CAAC,EACvD,OAAO,EACP,OAAO,EACP,cAAc,EACd,WAAW,EACX,aAAa,GACd,EAAE,EAAE;IACH,MAAM,SAAS,GAAG,uBAAuB,EAAE,CAAA;IAE3C,MAAM,eAAe,GAAG,CAAC,CAAsB,EAAE,KAAa,EAAE,EAAE;QAChE,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;YACtB,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,KAAK,CAAC,CAAA;QAClB,CAAC;IACH,CAAC,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,sBAAsB,CAAC,SAAS,CAAC,CAAA;IACnC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IAEf,OAAO,CACL,oBAAC,IAAI,IAAC,SAAS,EAAC,mBAAmB;QAChC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CACxB,oBAAC,OAAO,IACN,KAAK,EAAE,OAAO,EACd,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,eAAe,EAC1B,WAAW,EAAE,WAAW,GACxB,CACH,CAAC,CAAC,CAAC,CACF,0CACG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAC/C,oBAAC,YAAY,IACX,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,EACZ,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,eAAe,EAC1B,WAAW,EAAE,WAAW,GACxB,CACH,CAAC,CACD,CACJ;QACA,aAAa,IAAI,CAChB,6BAAK,SAAS,EAAC,wCAAwC,IACpD,aAAa,CACV,CACP,CACI,CACR,CAAA;AACH,CAAC,CAAA;AAED,eAAe,eAAe,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const calculateListMaxHeight: () => number;
|
|
1
|
+
export declare const calculateListMaxHeight: () => number;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export const calculateListMaxHeight = () => {
|
|
2
|
-
const windowHeight = window.innerHeight;
|
|
3
|
-
const headerHeight = 50;
|
|
4
|
-
const inputFieldHeight = 35;
|
|
5
|
-
const maxListHeight = windowHeight - headerHeight - inputFieldHeight;
|
|
6
|
-
return maxListHeight;
|
|
7
|
-
};
|
|
1
|
+
export const calculateListMaxHeight = () => {
|
|
2
|
+
const windowHeight = window.innerHeight;
|
|
3
|
+
const headerHeight = 50;
|
|
4
|
+
const inputFieldHeight = 35;
|
|
5
|
+
const maxListHeight = windowHeight - headerHeight - inputFieldHeight;
|
|
6
|
+
return maxListHeight;
|
|
7
|
+
};
|
|
8
8
|
//# sourceMappingURL=calculateListMaxHeight.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const scrollOptionToViewport: (isDesktop: boolean) => void;
|
|
1
|
+
export declare const scrollOptionToViewport: (isDesktop: boolean) => void;
|
|
@@ -1,18 +1,19 @@
|
|
|
1
|
-
export const scrollOptionToViewport = (isDesktop) => {
|
|
2
|
-
const comboboxOptions = isDesktop
|
|
3
|
-
document.querySelector('.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
1
|
+
export const scrollOptionToViewport = (isDesktop) => {
|
|
2
|
+
const comboboxOptions = isDesktop
|
|
3
|
+
? document.querySelector('.menu')
|
|
4
|
+
: document.querySelector('.combobox__options');
|
|
5
|
+
const selectedItem = document.querySelector('.menu-item.selected');
|
|
6
|
+
if (selectedItem && comboboxOptions) {
|
|
7
|
+
let comboboxOptionsGroup = selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.parentElement;
|
|
8
|
+
if (comboboxOptionsGroup) {
|
|
9
|
+
const stickyHeader = comboboxOptionsGroup === null || comboboxOptionsGroup === void 0 ? void 0 : comboboxOptionsGroup.querySelector('.sticky-header');
|
|
10
|
+
const stickyHeaderOffset = stickyHeader === null || stickyHeader === void 0 ? void 0 : stickyHeader.offsetTop;
|
|
11
|
+
comboboxOptions === null || comboboxOptions === void 0 ? void 0 : comboboxOptions.scrollTo({ top: stickyHeaderOffset });
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
const selectedItemOffset = selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.offsetTop;
|
|
15
|
+
comboboxOptions === null || comboboxOptions === void 0 ? void 0 : comboboxOptions.scrollTo({ top: selectedItemOffset });
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
};
|
|
18
19
|
//# sourceMappingURL=scrollOptionToViewport.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scrollOptionToViewport.js","sourceRoot":"","sources":["../../src/helper/scrollOptionToViewport.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,SAAkB,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"scrollOptionToViewport.js","sourceRoot":"","sources":["../../src/helper/scrollOptionToViewport.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,SAAkB,EAAE,EAAE;IAC3D,MAAM,eAAe,GAAG,SAAS;QAC/B,CAAC,CAAE,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAiB;QAClD,CAAC,CAAE,QAAQ,CAAC,aAAa,CAAC,oBAAoB,CAAiB,CAAA;IACjE,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CACzC,qBAAqB,CACP,CAAA;IAEhB,IAAI,YAAY,IAAI,eAAe,EAAE,CAAC;QACpC,IAAI,oBAAoB,GAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,aAAa,CAAA;QAEtD,IAAI,oBAAoB,EAAE,CAAC;YACzB,MAAM,YAAY,GAAG,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,aAAa,CACtD,gBAAgB,CACF,CAAA;YAChB,MAAM,kBAAkB,GAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,SAAS,CAAA;YAElD,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,kBAAkB,EAAE,CAAC,CAAA;QACxD,CAAC;aAAM,CAAC;YACN,MAAM,kBAAkB,GAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,SAAS,CAAA;YAElD,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,kBAAkB,EAAE,CAAC,CAAA;QACxD,CAAC;IACH,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const useIsDesktopScreenWidth: () => boolean;
|
|
2
|
-
export default useIsDesktopScreenWidth;
|
|
1
|
+
declare const useIsDesktopScreenWidth: () => boolean;
|
|
2
|
+
export default useIsDesktopScreenWidth;
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import { useState, useEffect } from 'react';
|
|
2
|
-
const useIsDesktopScreenWidth = () => {
|
|
3
|
-
const hasWindowObject = typeof window !== 'undefined';
|
|
4
|
-
if (hasWindowObject) {
|
|
5
|
-
const [screenWidth, setScreenWidth] = useState(window.innerWidth);
|
|
6
|
-
useEffect(() => {
|
|
7
|
-
const handleResize = () => {
|
|
8
|
-
setScreenWidth(window.innerWidth);
|
|
9
|
-
};
|
|
10
|
-
window.addEventListener('resize', handleResize);
|
|
11
|
-
return () => {
|
|
12
|
-
window.removeEventListener('resize', handleResize);
|
|
13
|
-
};
|
|
14
|
-
}, []);
|
|
15
|
-
return screenWidth > 960;
|
|
16
|
-
}
|
|
17
|
-
return false;
|
|
18
|
-
};
|
|
19
|
-
export default useIsDesktopScreenWidth;
|
|
1
|
+
import { useState, useEffect } from 'react';
|
|
2
|
+
const useIsDesktopScreenWidth = () => {
|
|
3
|
+
const hasWindowObject = typeof window !== 'undefined';
|
|
4
|
+
if (hasWindowObject) {
|
|
5
|
+
const [screenWidth, setScreenWidth] = useState(window.innerWidth);
|
|
6
|
+
useEffect(() => {
|
|
7
|
+
const handleResize = () => {
|
|
8
|
+
setScreenWidth(window.innerWidth);
|
|
9
|
+
};
|
|
10
|
+
window.addEventListener('resize', handleResize);
|
|
11
|
+
return () => {
|
|
12
|
+
window.removeEventListener('resize', handleResize);
|
|
13
|
+
};
|
|
14
|
+
}, []);
|
|
15
|
+
return screenWidth > 960;
|
|
16
|
+
}
|
|
17
|
+
return false;
|
|
18
|
+
};
|
|
19
|
+
export default useIsDesktopScreenWidth;
|
|
20
20
|
//# sourceMappingURL=useIsDesktopScreenWidth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useIsDesktopScreenWidth.js","sourceRoot":"","sources":["../../src/helper/useIsDesktopScreenWidth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAE3C,MAAM,uBAAuB,GAAG,GAAG,EAAE;IACnC,MAAM,eAAe,GAAG,OAAO,MAAM,KAAK,WAAW,CAAA;IAErD,IAAI,eAAe,EAAE;
|
|
1
|
+
{"version":3,"file":"useIsDesktopScreenWidth.js","sourceRoot":"","sources":["../../src/helper/useIsDesktopScreenWidth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAE3C,MAAM,uBAAuB,GAAG,GAAG,EAAE;IACnC,MAAM,eAAe,GAAG,OAAO,MAAM,KAAK,WAAW,CAAA;IAErD,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAEjE,SAAS,CAAC,GAAG,EAAE;YACb,MAAM,YAAY,GAAG,GAAG,EAAE;gBACxB,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;YACnC,CAAC,CAAA;YAED,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;YAE/C,OAAO,GAAG,EAAE;gBACV,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;YACpD,CAAC,CAAA;QACH,CAAC,EAAE,EAAE,CAAC,CAAA;QAEN,OAAO,WAAW,GAAG,GAAG,CAAA;IAC1B,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,eAAe,uBAAuB,CAAA"}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import ComboBox from './ComboBox';
|
|
2
|
-
export default ComboBox;
|
|
3
|
-
export * from './types';
|
|
1
|
+
import ComboBox from './ComboBox';
|
|
2
|
+
export default ComboBox;
|
|
3
|
+
export * from './types';
|
package/lib/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import ComboBox from './ComboBox';
|
|
2
|
-
export default ComboBox;
|
|
3
|
-
export * from './types';
|
|
1
|
+
import ComboBox from './ComboBox';
|
|
2
|
+
export default ComboBox;
|
|
3
|
+
export * from './types';
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
package/lib/styles.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.combobox{width:100%;position:relative}.combobox--headline[class*=text--]+*{margin-top:var(--spacing-2)}.combobox--header,.combobox__options{position:relative}.combobox--header{width:100%;align-items:flex-start;flex-direction:column;gap:var(--spacing-1_5);height:auto;padding:var(--spacing-3) var(--spacing) var(--spacing-2)}.combobox__options{width:100%;max-height:none;display:flex;flex-direction:column;overflow:scroll}.combobox .user-input__label-container{align-self:baseline;padding-left:var(--spacing-2)}.combobox__options .combobox__sticky-header,.combobox__options .menu-item[data-background-color=default]{padding-left:0}.combobox .search.user-input__compact{margin-bottom:var(--spacing-2)}.combobox__options .combobox__sticky-header{position
|
|
1
|
+
.combobox{width:100%;position:relative}.combobox--headline[class*=text--]+*{margin-top:var(--spacing-2)}.combobox--header,.combobox__options{position:relative}.combobox--header{width:100%;align-items:flex-start;flex-direction:column;gap:var(--spacing-1_5);height:auto;padding:var(--spacing-3) var(--spacing) var(--spacing-2)}.combobox__options{width:100%;max-height:none;display:flex;flex-direction:column;overflow:scroll}.combobox .input-outer-container .input-inner-container.input-inner-container--compact{height:32px}.combobox .user-input__label-container{align-self:baseline;padding-left:var(--spacing-2)}.combobox .user-input__label-container label.user-input__label{font-size:12px;padding:var(--spacing-0_5)}.combobox__options .combobox__sticky-header,.combobox__options .menu-item[data-background-color=default]{padding-left:0}.combobox .search.user-input__compact{margin-bottom:var(--spacing-2)}.combobox__options .combobox__sticky-header{position:sticky;top:0;padding-left:var(--spacing);padding-right:var(--spacing);background-color:var(--color-surface)}.combobox__options .menu-item[data-background-color=default]{padding:var(--spacing)}.combobox__options .menu-item:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-ring-offset)}.combobox__options .text--caption{color:var(--color-on-secondary)}.combobox__options .item-header{display:flex;justify-content:space-between}.combobox .combobox__options .combobox__option-details{position:sticky;bottom:0;padding-left:var(--spacing);padding-right:var(--spacing);background-color:var(--color-surface)}.combobox .user-input__label.user-input__label--active{color:var(--color-on)}.combobox--no-results-text{text-align:center;padding:var(--spacing-2) var(--spacing)}.combobox .input-outer-container label{padding-top:0;padding-bottom:0;padding-left:0}@media screen and (min-width:960px){.combobox .input-inner-container,.combobox .user-input__container.search{border-radius:var(--spacing-0_5) var(--spacing-0_5) 0 0}.combobox__options{position:absolute;overflow-x:auto;max-height:330px}.combobox .user-input__label-container{padding-left:0}.combobox .search.user-input__compact{margin-bottom:0}.combobox .user-input__label-container label.user-input__label{font-size:14px}}
|
package/lib/types.d.ts
CHANGED
|
@@ -1,34 +1,36 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
interface ComboBoxOptionsProps {
|
|
5
|
-
options: Record<string, ComboBoxOptionProps[]> | ComboBoxOptionProps[];
|
|
6
|
-
selectedOption?: string;
|
|
7
|
-
onClick?: (value: string) => void;
|
|
8
|
-
leadingType?: LeadingType;
|
|
9
|
-
optionDetails?: React.ReactNode;
|
|
10
|
-
}
|
|
11
|
-
interface ComboBoxProps extends ComboBoxOptionsProps {
|
|
12
|
-
className?: string;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
1
|
+
import { LeadingType, MenuItemProps } from '@pixum/menu-item';
|
|
2
|
+
import { ThemeType } from '@pixum/theme-provider';
|
|
3
|
+
import { InputModesType } from '@pixum/web-input';
|
|
4
|
+
interface ComboBoxOptionsProps {
|
|
5
|
+
options: Record<string, ComboBoxOptionProps[]> | ComboBoxOptionProps[];
|
|
6
|
+
selectedOption?: string;
|
|
7
|
+
onClick?: (value: string) => void;
|
|
8
|
+
leadingType?: LeadingType;
|
|
9
|
+
optionDetails?: React.ReactNode;
|
|
10
|
+
}
|
|
11
|
+
interface ComboBoxProps extends ComboBoxOptionsProps {
|
|
12
|
+
className?: string;
|
|
13
|
+
name?: string;
|
|
14
|
+
headline?: string;
|
|
15
|
+
helperText?: string;
|
|
16
|
+
id?: string;
|
|
17
|
+
label?: string;
|
|
18
|
+
isOpen: boolean;
|
|
19
|
+
setIsOpen: React.Dispatch<React.SetStateAction<boolean>>;
|
|
20
|
+
onChange?: (value: string) => void;
|
|
21
|
+
onOptionItemClick?: (value: string) => void;
|
|
22
|
+
onOutsideClick?: () => void;
|
|
23
|
+
onClick?: () => void;
|
|
24
|
+
onSheetClose?: () => void;
|
|
25
|
+
placeholder?: string;
|
|
26
|
+
searchPattern?: string;
|
|
27
|
+
value?: string;
|
|
28
|
+
noResultsText?: string;
|
|
29
|
+
inputMode?: InputModesType;
|
|
30
|
+
withSearch?: boolean;
|
|
31
|
+
theme?: ThemeType;
|
|
32
|
+
}
|
|
33
|
+
interface ComboBoxOptionProps extends MenuItemProps {
|
|
34
|
+
key?: string;
|
|
35
|
+
}
|
|
36
|
+
export { ComboBoxProps, ComboBoxOptionProps, ComboBoxOptionsProps };
|