@peculiar/react-components 0.0.2-alpha.263 → 0.0.2-alpha.268
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/dist/cjs/Autocomplete/autocomplete.js +239 -0
- package/dist/cjs/Autocomplete/autocomplete.js.map +1 -0
- package/dist/cjs/Autocomplete/index.js +6 -0
- package/dist/cjs/Autocomplete/index.js.map +1 -0
- package/dist/cjs/Chip/chip.js +41 -12
- package/dist/cjs/Chip/chip.js.map +1 -1
- package/dist/cjs/Fab/fab.js +2 -0
- package/dist/cjs/Fab/fab.js.map +1 -1
- package/dist/cjs/IconButton/icon_button.js +3 -0
- package/dist/cjs/IconButton/icon_button.js.map +1 -1
- package/dist/cjs/Modal/modal.js +3 -3
- package/dist/cjs/Modal/modal.js.map +1 -1
- package/dist/cjs/Popover/popover.js +23 -2
- package/dist/cjs/Popover/popover.js.map +1 -1
- package/dist/cjs/Popper/popper.js +23 -2
- package/dist/cjs/Popper/popper.js.map +1 -1
- package/dist/cjs/Tabs/tabs.js.map +1 -1
- package/dist/cjs/hooks/index.js +5 -1
- package/dist/cjs/hooks/index.js.map +1 -1
- package/dist/cjs/hooks/use_autocomplete.js +344 -0
- package/dist/cjs/hooks/use_autocomplete.js.map +1 -0
- package/dist/cjs/hooks/use_event_callback.js +44 -0
- package/dist/cjs/hooks/use_event_callback.js.map +1 -0
- package/dist/cjs/index.js +1 -1
- package/dist/esm/Autocomplete/autocomplete.js +232 -0
- package/dist/esm/Autocomplete/autocomplete.js.map +1 -0
- package/dist/esm/Autocomplete/index.js +2 -0
- package/dist/esm/Autocomplete/index.js.map +1 -0
- package/dist/esm/Chip/chip.js +41 -12
- package/dist/esm/Chip/chip.js.map +1 -1
- package/dist/esm/Fab/fab.js +2 -0
- package/dist/esm/Fab/fab.js.map +1 -1
- package/dist/esm/IconButton/icon_button.js +3 -0
- package/dist/esm/IconButton/icon_button.js.map +1 -1
- package/dist/esm/Modal/modal.js +3 -3
- package/dist/esm/Modal/modal.js.map +1 -1
- package/dist/esm/Popover/popover.js +23 -2
- package/dist/esm/Popover/popover.js.map +1 -1
- package/dist/esm/Popper/popper.js +23 -2
- package/dist/esm/Popper/popper.js.map +1 -1
- package/dist/esm/Tabs/tabs.js.map +1 -1
- package/dist/esm/hooks/index.js +2 -0
- package/dist/esm/hooks/index.js.map +1 -1
- package/dist/esm/hooks/use_autocomplete.js +337 -0
- package/dist/esm/hooks/use_autocomplete.js.map +1 -0
- package/dist/esm/hooks/use_event_callback.js +21 -0
- package/dist/esm/hooks/use_event_callback.js.map +1 -0
- package/dist/esm/index.js +1 -1
- package/dist/esnext/Autocomplete/autocomplete.js +236 -0
- package/dist/esnext/Autocomplete/autocomplete.js.map +1 -0
- package/dist/esnext/Autocomplete/index.js +2 -0
- package/dist/esnext/Autocomplete/index.js.map +1 -0
- package/dist/esnext/Chip/chip.js +54 -5
- package/dist/esnext/Chip/chip.js.map +1 -1
- package/dist/esnext/Fab/fab.js +2 -0
- package/dist/esnext/Fab/fab.js.map +1 -1
- package/dist/esnext/IconButton/icon_button.js +3 -0
- package/dist/esnext/IconButton/icon_button.js.map +1 -1
- package/dist/esnext/Modal/modal.js +3 -3
- package/dist/esnext/Modal/modal.js.map +1 -1
- package/dist/esnext/Popover/popover.js +21 -2
- package/dist/esnext/Popover/popover.js.map +1 -1
- package/dist/esnext/Popper/popper.js +21 -2
- package/dist/esnext/Popper/popper.js.map +1 -1
- package/dist/esnext/Tabs/tabs.js.map +1 -1
- package/dist/esnext/hooks/index.js +2 -0
- package/dist/esnext/hooks/index.js.map +1 -1
- package/dist/esnext/hooks/use_autocomplete.js +332 -0
- package/dist/esnext/hooks/use_autocomplete.js.map +1 -0
- package/dist/esnext/hooks/use_event_callback.js +16 -0
- package/dist/esnext/hooks/use_event_callback.js.map +1 -0
- package/dist/esnext/index.js +1 -1
- package/dist/types/Autocomplete/autocomplete.d.ts +72 -0
- package/dist/types/Autocomplete/index.d.ts +1 -0
- package/dist/types/Chip/chip.d.ts +1 -1
- package/dist/types/Modal/modal.d.ts +1 -1
- package/dist/types/Popover/popover.d.ts +7 -3
- package/dist/types/Popper/popper.d.ts +6 -2
- package/dist/types/hooks/index.d.ts +2 -0
- package/dist/types/hooks/use_autocomplete.d.ts +90 -0
- package/dist/types/hooks/use_event_callback.d.ts +4 -0
- package/dist/types/index.d.ts +1 -1
- package/package.json +24 -24
- package/dist/cjs/ComboBox/combo_box.js +0 -262
- package/dist/cjs/ComboBox/combo_box.js.map +0 -1
- package/dist/cjs/ComboBox/index.js +0 -6
- package/dist/cjs/ComboBox/index.js.map +0 -1
- package/dist/cjs/SelectPicker/index.js +0 -6
- package/dist/cjs/SelectPicker/index.js.map +0 -1
- package/dist/cjs/SelectPicker/select_picker.js +0 -445
- package/dist/cjs/SelectPicker/select_picker.js.map +0 -1
- package/dist/esm/ComboBox/combo_box.js +0 -240
- package/dist/esm/ComboBox/combo_box.js.map +0 -1
- package/dist/esm/ComboBox/index.js +0 -2
- package/dist/esm/ComboBox/index.js.map +0 -1
- package/dist/esm/SelectPicker/index.js +0 -2
- package/dist/esm/SelectPicker/index.js.map +0 -1
- package/dist/esm/SelectPicker/select_picker.js +0 -422
- package/dist/esm/SelectPicker/select_picker.js.map +0 -1
- package/dist/esnext/ComboBox/combo_box.js +0 -214
- package/dist/esnext/ComboBox/combo_box.js.map +0 -1
- package/dist/esnext/ComboBox/index.js +0 -2
- package/dist/esnext/ComboBox/index.js.map +0 -1
- package/dist/esnext/SelectPicker/index.js +0 -2
- package/dist/esnext/SelectPicker/index.js.map +0 -1
- package/dist/esnext/SelectPicker/select_picker.js +0 -418
- package/dist/esnext/SelectPicker/select_picker.js.map +0 -1
- package/dist/types/ComboBox/combo_box.d.ts +0 -19
- package/dist/types/ComboBox/index.d.ts +0 -1
- package/dist/types/SelectPicker/index.d.ts +0 -1
- package/dist/types/SelectPicker/select_picker.d.ts +0 -89
package/dist/esnext/Chip/chip.js
CHANGED
|
@@ -5,6 +5,7 @@ import { CloseSmallIcon } from '../icons';
|
|
|
5
5
|
const stylesBase = () => css({
|
|
6
6
|
label: 'Chip',
|
|
7
7
|
display: 'inline-flex',
|
|
8
|
+
maxWidth: '100%',
|
|
8
9
|
fontFamily: 'inherit',
|
|
9
10
|
outline: '0',
|
|
10
11
|
boxSizing: 'border-box',
|
|
@@ -32,7 +33,7 @@ const stylesClickable = () => css({
|
|
|
32
33
|
userSelect: 'none',
|
|
33
34
|
WebkitTapHighlightColor: 'transparent',
|
|
34
35
|
});
|
|
35
|
-
const
|
|
36
|
+
const stylesVariantContainedColorNotDefault = (props) => css({
|
|
36
37
|
label: 'contained',
|
|
37
38
|
backgroundColor: `var(--pv-color-${props.color})`,
|
|
38
39
|
color: 'var(--pv-color-white)',
|
|
@@ -53,7 +54,27 @@ const stylesVariantContained = (props) => css({
|
|
|
53
54
|
backgroundColor: 'var(--pv-color-gray-4)',
|
|
54
55
|
}),
|
|
55
56
|
});
|
|
56
|
-
const
|
|
57
|
+
const stylesVariantContainedColorDefault = (props) => css({
|
|
58
|
+
label: 'contained-default',
|
|
59
|
+
backgroundColor: 'var(--pv-color-gray-4)',
|
|
60
|
+
color: 'var(--pv-color-black)',
|
|
61
|
+
...(typeof props.onClick === 'function' && !props.disabled && {
|
|
62
|
+
'&:hover': {
|
|
63
|
+
backgroundColor: 'var(--pv-color-gray-7)',
|
|
64
|
+
},
|
|
65
|
+
'&:focus': {
|
|
66
|
+
backgroundColor: 'var(--pv-color-gray-6)',
|
|
67
|
+
},
|
|
68
|
+
'&:active': {
|
|
69
|
+
backgroundColor: 'var(--pv-color-gray-5)',
|
|
70
|
+
},
|
|
71
|
+
}),
|
|
72
|
+
...(props.disabled && {
|
|
73
|
+
color: 'var(--pv-color-gray-8)',
|
|
74
|
+
backgroundColor: 'var(--pv-color-gray-4)',
|
|
75
|
+
}),
|
|
76
|
+
});
|
|
77
|
+
const stylesVariantOutlinedColorNotDefault = (props) => css({
|
|
57
78
|
label: 'outlined',
|
|
58
79
|
backgroundColor: 'transparent',
|
|
59
80
|
color: `var(--pv-color-${props.color})`,
|
|
@@ -74,6 +95,27 @@ const stylesVariantOutlined = (props) => css({
|
|
|
74
95
|
borderColor: 'var(--pv-color-gray-4)',
|
|
75
96
|
}),
|
|
76
97
|
});
|
|
98
|
+
const stylesVariantOutlinedColorDefault = (props) => css({
|
|
99
|
+
label: 'outlined-default',
|
|
100
|
+
backgroundColor: 'transparent',
|
|
101
|
+
color: 'var(--pv-color-gray-10)',
|
|
102
|
+
borderColor: 'var(--pv-color-gray-6)',
|
|
103
|
+
...(typeof props.onClick === 'function' && !props.disabled && {
|
|
104
|
+
'&:hover': {
|
|
105
|
+
backgroundColor: 'var(--pv-color-gray-3)',
|
|
106
|
+
},
|
|
107
|
+
'&:focus': {
|
|
108
|
+
backgroundColor: 'var(--pv-color-gray-4)',
|
|
109
|
+
},
|
|
110
|
+
'&:active': {
|
|
111
|
+
backgroundColor: 'var(--pv-color-gray-5)',
|
|
112
|
+
},
|
|
113
|
+
}),
|
|
114
|
+
...(props.disabled && {
|
|
115
|
+
color: 'var(--pv-color-gray-8)',
|
|
116
|
+
borderColor: 'var(--pv-color-gray-4)',
|
|
117
|
+
}),
|
|
118
|
+
});
|
|
77
119
|
const stylesDeleteAction = () => css({
|
|
78
120
|
label: 'delete',
|
|
79
121
|
width: '24px',
|
|
@@ -83,6 +125,7 @@ const stylesDeleteAction = () => css({
|
|
|
83
125
|
margin: '0px calc(var(--pv-size-base) * -1) 0 var(--pv-size-base)',
|
|
84
126
|
transition: 'opacity 200ms',
|
|
85
127
|
opacity: '0.6',
|
|
128
|
+
flexShrink: 0,
|
|
86
129
|
'&:hover': {
|
|
87
130
|
opacity: '1',
|
|
88
131
|
},
|
|
@@ -121,11 +164,17 @@ export const Chip = React.forwardRef((props, ref) => {
|
|
|
121
164
|
[stylesBase()]: true,
|
|
122
165
|
[stylesDisabled()]: disabled,
|
|
123
166
|
[stylesClickable()]: clickable && !disabled,
|
|
124
|
-
|
|
125
|
-
|
|
167
|
+
...(color !== 'default' && {
|
|
168
|
+
[stylesVariantContainedColorNotDefault(props)]: variant === 'contained',
|
|
169
|
+
[stylesVariantOutlinedColorNotDefault(props)]: variant === 'outlined',
|
|
170
|
+
}),
|
|
171
|
+
...(color === 'default' && {
|
|
172
|
+
[stylesVariantContainedColorDefault(props)]: variant === 'contained',
|
|
173
|
+
[stylesVariantOutlinedColorDefault(props)]: variant === 'outlined',
|
|
174
|
+
}),
|
|
126
175
|
[className]: !!className,
|
|
127
176
|
}) }),
|
|
128
|
-
React.createElement(Typography, { variant: "b3", component: "span", color: "inherit" }, children),
|
|
177
|
+
React.createElement(Typography, { variant: "b3", component: "span", color: "inherit", noWrap: true }, children),
|
|
129
178
|
renderDeleteAction()));
|
|
130
179
|
});
|
|
131
180
|
Chip.displayName = 'Chip';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chip.js","sourceRoot":"","sources":["../../../src/Chip/chip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAwC1C,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;IAC3B,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,aAAa;IACtB,UAAU,EAAE,SAAS;IACrB,OAAO,EAAE,GAAG;IACZ,SAAS,EAAE,YAAY;IACvB,YAAY,EAAE,uBAAuB;IACrC,OAAO,EAAE,yBAAyB;IAClC,MAAM,EAAE,uBAAuB;IAC/B,eAAe,EAAE,aAAa;IAC9B,UAAU,EAAE,2EAA2E;IACvF,MAAM,EAAE,uBAAuB;IAC/B,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,uBAAuB;IAC/B,aAAa,EAAE,QAAQ;IACvB,cAAc,EAAE,QAAQ;IACxB,UAAU,EAAE,QAAQ;IACpB,UAAU,EAAE,QAAQ;IACpB,cAAc,EAAE,MAAM;CACvB,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;IAC/B,KAAK,EAAE,UAAU;IACjB,aAAa,EAAE,MAAM;CACtB,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;IAChC,KAAK,EAAE,WAAW;IAClB,MAAM,EAAE,SAAS;IACjB,UAAU,EAAE,MAAM;IAClB,uBAAuB,EAAE,aAAa;CACvC,CAAC,CAAC;AAEH,MAAM,
|
|
1
|
+
{"version":3,"file":"chip.js","sourceRoot":"","sources":["../../../src/Chip/chip.tsx"],"names":[],"mappings":"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"}
|
package/dist/esnext/Fab/fab.js
CHANGED
|
@@ -17,8 +17,10 @@ export const Fab = React.forwardRef((props, ref) => {
|
|
|
17
17
|
});
|
|
18
18
|
Fab.displayName = 'Fab';
|
|
19
19
|
Fab.defaultProps = {
|
|
20
|
+
// eslint-disable-next-line react/default-props-match-prop-types
|
|
20
21
|
disabled: false,
|
|
21
22
|
variant: 'contained',
|
|
23
|
+
// eslint-disable-next-line react/default-props-match-prop-types
|
|
22
24
|
color: 'primary',
|
|
23
25
|
};
|
|
24
26
|
//# sourceMappingURL=fab.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fab.js","sourceRoot":"","sources":["../../../src/Fab/fab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAmB,MAAM,eAAe,CAAC;AAc5D,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;IAC3B,KAAK,EAAE,KAAK;IACZ,YAAY,EAAE,KAAK;IACnB,MAAM,EAAE,wBAAwB;IAChC,KAAK,EAAE,wBAAwB;IAC/B,OAAO,EAAE,uBAAuB;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAA8B,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAC9E,MAAM,EACJ,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,GAAG,KAAK,CAAC;IAEV,OAAO,CACL,oBAAC,UAAU,oBACL,KAAK,IACT,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC;YACZ,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI;YACpB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,SAAS;SACzB,CAAC,EACF,IAAI,EAAC,OAAO,KAEX,QAAQ,CACE,CACd,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC;AAExB,GAAG,CAAC,YAAY,GAAG;IACjB,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,WAAW;IACpB,KAAK,EAAE,SAAS;CACjB,CAAC"}
|
|
1
|
+
{"version":3,"file":"fab.js","sourceRoot":"","sources":["../../../src/Fab/fab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAmB,MAAM,eAAe,CAAC;AAc5D,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;IAC3B,KAAK,EAAE,KAAK;IACZ,YAAY,EAAE,KAAK;IACnB,MAAM,EAAE,wBAAwB;IAChC,KAAK,EAAE,wBAAwB;IAC/B,OAAO,EAAE,uBAAuB;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAA8B,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAC9E,MAAM,EACJ,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,GAAG,KAAK,CAAC;IAEV,OAAO,CACL,oBAAC,UAAU,oBACL,KAAK,IACT,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC;YACZ,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI;YACpB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,SAAS;SACzB,CAAC,EACF,IAAI,EAAC,OAAO,KAEX,QAAQ,CACE,CACd,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC;AAExB,GAAG,CAAC,YAAY,GAAG;IACjB,gEAAgE;IAChE,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,WAAW;IACpB,gEAAgE;IAChE,KAAK,EAAE,SAAS;CACjB,CAAC"}
|
|
@@ -18,8 +18,11 @@ export const IconButton = React.forwardRef((props, ref) => {
|
|
|
18
18
|
});
|
|
19
19
|
IconButton.displayName = 'IconButton';
|
|
20
20
|
IconButton.defaultProps = {
|
|
21
|
+
// eslint-disable-next-line react/default-props-match-prop-types
|
|
21
22
|
disabled: false,
|
|
23
|
+
// eslint-disable-next-line react/default-props-match-prop-types
|
|
22
24
|
color: 'default',
|
|
25
|
+
// eslint-disable-next-line react/default-props-match-prop-types
|
|
23
26
|
size: 'medium',
|
|
24
27
|
};
|
|
25
28
|
//# sourceMappingURL=icon_button.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon_button.js","sourceRoot":"","sources":["../../../src/IconButton/icon_button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAe,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAWpC,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;IAC3B,kBAAkB,EAAE,wBAAwB;CAC7C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAqC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAC5F,MAAM,EACJ,KAAK,EACL,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,GAAG,KAAK,CAAC;IAEV,MAAM,SAAS,GAAG,CAChB,oBAAC,MAAM,gCACO,KAAK,EACjB,QAAQ,EAAE,QAAQ,IACd,KAAK,IACT,GAAG,EAAE,GAAG,EACR,cAAc,QACd,SAAS,EAAE,EAAE,CAAC;YACZ,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI;YACpB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,SAAS;SACzB,CAAC,IACF,CACH,CAAC;IAEF,IAAI,CAAC,KAAK,IAAI,QAAQ,EAAE;QACtB,OAAO,SAAS,CAAC;KAClB;IAED,OAAO,CACL,oBAAC,OAAO,IACN,KAAK,EAAE,KAAK,EACZ,KAAK,EAAC,OAAO,EACb,IAAI,EAAC,OAAO,IAEX,SAAS,CACF,CACX,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,UAAU,CAAC,WAAW,GAAG,YAAY,CAAC;AAEtC,UAAU,CAAC,YAAY,GAAG;IACxB,QAAQ,EAAE,KAAK;IACf,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,QAAQ;CACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"icon_button.js","sourceRoot":"","sources":["../../../src/IconButton/icon_button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAe,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAWpC,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;IAC3B,kBAAkB,EAAE,wBAAwB;CAC7C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAqC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAC5F,MAAM,EACJ,KAAK,EACL,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,GAAG,KAAK,CAAC;IAEV,MAAM,SAAS,GAAG,CAChB,oBAAC,MAAM,gCACO,KAAK,EACjB,QAAQ,EAAE,QAAQ,IACd,KAAK,IACT,GAAG,EAAE,GAAG,EACR,cAAc,QACd,SAAS,EAAE,EAAE,CAAC;YACZ,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI;YACpB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,SAAS;SACzB,CAAC,IACF,CACH,CAAC;IAEF,IAAI,CAAC,KAAK,IAAI,QAAQ,EAAE;QACtB,OAAO,SAAS,CAAC;KAClB;IAED,OAAO,CACL,oBAAC,OAAO,IACN,KAAK,EAAE,KAAK,EACZ,KAAK,EAAC,OAAO,EACb,IAAI,EAAC,OAAO,IAEX,SAAS,CACF,CACX,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,UAAU,CAAC,WAAW,GAAG,YAAY,CAAC;AAEtC,UAAU,CAAC,YAAY,GAAG;IACxB,gEAAgE;IAChE,QAAQ,EAAE,KAAK;IACf,gEAAgE;IAChE,KAAK,EAAE,SAAS;IAChB,gEAAgE;IAChE,IAAI,EAAE,QAAQ;CACf,CAAC"}
|
|
@@ -22,12 +22,12 @@ export const Modal = React.forwardRef((props, ref) => {
|
|
|
22
22
|
if (!keepMounted && !open) {
|
|
23
23
|
return null;
|
|
24
24
|
}
|
|
25
|
-
const handleBackdropClick = () => {
|
|
25
|
+
const handleBackdropClick = (event) => {
|
|
26
26
|
if (disableBackdropClick) {
|
|
27
27
|
return;
|
|
28
28
|
}
|
|
29
29
|
if (onClose) {
|
|
30
|
-
onClose();
|
|
30
|
+
onClose(event);
|
|
31
31
|
}
|
|
32
32
|
};
|
|
33
33
|
const handleKeyDown = (event) => {
|
|
@@ -39,7 +39,7 @@ export const Modal = React.forwardRef((props, ref) => {
|
|
|
39
39
|
}
|
|
40
40
|
event.stopPropagation();
|
|
41
41
|
if (onClose) {
|
|
42
|
-
onClose();
|
|
42
|
+
onClose(event);
|
|
43
43
|
}
|
|
44
44
|
};
|
|
45
45
|
return (React.createElement(Portal, null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modal.js","sourceRoot":"","sources":["../../../src/Modal/modal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAiB,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAsDpC,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;IAC3B,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,OAAO;IACjB,MAAM,EAAE,IAAI;IACZ,GAAG,EAAE,CAAC;IACN,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;CACR,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;IAC7B,KAAK,EAAE,QAAQ;IACf,UAAU,EAAE,QAAQ;CACrB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAA6B,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAC/E,MAAM,EACJ,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,OAAO,EACP,GAAG,KAAK,EACT,GAAG,KAAK,CAAC;IACV,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEjD,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE;QACzB,OAAO,IAAI,CAAC;KACb;IAED,MAAM,mBAAmB,GAAG,
|
|
1
|
+
{"version":3,"file":"modal.js","sourceRoot":"","sources":["../../../src/Modal/modal.tsx"],"names":[],"mappings":"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"}
|
|
@@ -14,9 +14,27 @@ const stylesBase = () => css({
|
|
|
14
14
|
boxShadow: 'var(--pv-shadow-light-low)',
|
|
15
15
|
});
|
|
16
16
|
export const Popover = React.forwardRef((props, ref) => {
|
|
17
|
-
const { open, children, anchorEl, placement, onClose, className, modalProps, ...other } = props;
|
|
17
|
+
const { open, children, anchorEl, placement, onClose, className, modalProps, allowUseSameWidth, ...other } = props;
|
|
18
18
|
const [popperElement, setPopperElement] = React.useState(null);
|
|
19
|
-
const
|
|
19
|
+
const sameWidthModifier = React.useMemo(() => ({
|
|
20
|
+
name: 'sameWidth',
|
|
21
|
+
enabled: allowUseSameWidth,
|
|
22
|
+
phase: 'beforeWrite',
|
|
23
|
+
requires: ['computeStyles'],
|
|
24
|
+
fn: ({ state }) => {
|
|
25
|
+
// eslint-disable-next-line no-param-reassign
|
|
26
|
+
state.styles.popper.width = `${state.rects.reference.width}px`;
|
|
27
|
+
},
|
|
28
|
+
effect: ({ state }) => {
|
|
29
|
+
// @ts-ignore
|
|
30
|
+
// eslint-disable-next-line no-param-reassign
|
|
31
|
+
state.elements.popper.style.width = `${state.elements.reference.offsetWidth}px`;
|
|
32
|
+
},
|
|
33
|
+
}), []);
|
|
34
|
+
const { styles, attributes } = usePopper(anchorEl, popperElement, {
|
|
35
|
+
placement,
|
|
36
|
+
modifiers: [sameWidthModifier],
|
|
37
|
+
});
|
|
20
38
|
return (React.createElement(Modal, Object.assign({}, modalProps, { ref: ref, open: open, onClose: onClose, backdropProps: {
|
|
21
39
|
invisible: true,
|
|
22
40
|
} }),
|
|
@@ -29,5 +47,6 @@ export const Popover = React.forwardRef((props, ref) => {
|
|
|
29
47
|
Popover.displayName = 'Popover';
|
|
30
48
|
Popover.defaultProps = {
|
|
31
49
|
placement: 'bottom-end',
|
|
50
|
+
allowUseSameWidth: false,
|
|
32
51
|
};
|
|
33
52
|
//# sourceMappingURL=popover.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popover.js","sourceRoot":"","sources":["../../../src/Popover/popover.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"popover.js","sourceRoot":"","sources":["../../../src/Popover/popover.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,9 +2,27 @@ import React from 'react';
|
|
|
2
2
|
import { usePopper } from 'react-popper';
|
|
3
3
|
import { Portal } from '../Portal';
|
|
4
4
|
export const Popper = (props) => {
|
|
5
|
-
const { children, anchorEl, placement, open, disablePortal, ...other } = props;
|
|
5
|
+
const { children, anchorEl, placement, open, disablePortal, allowUseSameWidth, ...other } = props;
|
|
6
6
|
const [popperElement, setPopperElement] = React.useState(null);
|
|
7
|
-
const
|
|
7
|
+
const sameWidthModifier = React.useMemo(() => ({
|
|
8
|
+
name: 'sameWidth',
|
|
9
|
+
enabled: allowUseSameWidth,
|
|
10
|
+
phase: 'beforeWrite',
|
|
11
|
+
requires: ['computeStyles'],
|
|
12
|
+
fn: ({ state }) => {
|
|
13
|
+
// eslint-disable-next-line no-param-reassign
|
|
14
|
+
state.styles.popper.width = `${state.rects.reference.width}px`;
|
|
15
|
+
},
|
|
16
|
+
effect: ({ state }) => {
|
|
17
|
+
// @ts-ignore
|
|
18
|
+
// eslint-disable-next-line no-param-reassign
|
|
19
|
+
state.elements.popper.style.width = `${state.elements.reference.offsetWidth}px`;
|
|
20
|
+
},
|
|
21
|
+
}), []);
|
|
22
|
+
const { styles, attributes } = usePopper(anchorEl, popperElement, {
|
|
23
|
+
placement,
|
|
24
|
+
modifiers: [sameWidthModifier],
|
|
25
|
+
});
|
|
8
26
|
const tooltip = (React.createElement("div", Object.assign({}, other, { ref: setPopperElement, style: styles.popper, role: "tooltip" }, attributes.popper), children));
|
|
9
27
|
const render = () => {
|
|
10
28
|
if (!disablePortal) {
|
|
@@ -17,5 +35,6 @@ export const Popper = (props) => {
|
|
|
17
35
|
Popper.displayName = 'Popper';
|
|
18
36
|
Popper.defaultProps = {
|
|
19
37
|
placement: 'bottom',
|
|
38
|
+
allowUseSameWidth: false,
|
|
20
39
|
};
|
|
21
40
|
//# sourceMappingURL=popper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popper.js","sourceRoot":"","sources":["../../../src/Popper/popper.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"popper.js","sourceRoot":"","sources":["../../../src/Popper/popper.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAA6C,MAAM,cAAc,CAAC;AACpF,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AA+BnC,MAAM,CAAC,MAAM,MAAM,GAA0B,CAAC,KAAK,EAAE,EAAE;IACrD,MAAM,EACJ,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,aAAa,EACb,iBAAiB,EACjB,GAAG,KAAK,EACT,GAAG,KAAK,CAAC;IACV,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,iBAAiB,GAA0B,KAAK,CAAC,OAAO,CAC5D,GAAG,EAAE,CAAC,CAAC;QACL,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,iBAAiB;QAC1B,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,CAAC,eAAe,CAAC;QAC3B,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;YAChB,6CAA6C;YAC7C,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;QACjE,CAAC;QACD,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;YACpB,aAAa;YACb,6CAA6C;YAC7C,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,IAAI,CAAC;QAClF,CAAC;KACF,CAAC,EACF,EAAE,CACH,CAAC;IACF,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,SAAS,CACtC,QAAQ,EACR,aAAa,EACb;QACE,SAAS;QACT,SAAS,EAAE,CAAC,iBAAiB,CAAC;KAC/B,CACF,CAAC;IAEF,MAAM,OAAO,GAAG,CACd,6CACM,KAAK,IACT,GAAG,EAAE,gBAAgB,EACrB,KAAK,EAAE,MAAM,CAAC,MAAM,EACpB,IAAI,EAAC,SAAS,IACV,UAAU,CAAC,MAAM,GAEpB,QAAQ,CACL,CACP,CAAC;IAEF,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,IAAI,CAAC,aAAa,EAAE;YAClB,OAAO,CACL,oBAAC,MAAM,QACJ,OAAO,CACD,CACV,CAAC;SACH;QAED,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IAEF,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC;AAE9B,MAAM,CAAC,YAAY,GAAG;IACpB,SAAS,EAAE,QAAQ;IACnB,iBAAiB,EAAE,KAAK;CACzB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../../src/Tabs/tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAwBpC,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;IAC3B,KAAK,EAAE,MAAM;IACb,UAAU,EAAE,QAAQ;IACpB,SAAS,EAAE,MAAM;CAClB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAgC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACjF,MAAM,EACJ,QAAQ,EAAE,YAAY,EACtB,SAAS,EACT,QAAQ,EACR,KAAK,EACL,GAAG,KAAK,EACT,GAAG,KAAK,CAAC;IAEV,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../../src/Tabs/tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAwBpC,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;IAC3B,KAAK,EAAE,MAAM;IACb,UAAU,EAAE,QAAQ;IACpB,SAAS,EAAE,MAAM;CAClB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAgC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACjF,MAAM,EACJ,QAAQ,EAAE,YAAY,EACtB,SAAS,EACT,QAAQ,EACR,KAAK,EACL,GAAG,KAAK,EACT,GAAG,KAAK,CAAC;IAEV,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CACjC,YAAY,EACZ,CAAC,KAAmD,EAAE,EAAE;QACtD,IAAI,CAAC,KAAK,CAAC,cAAc,CAAa,KAAK,CAAC,EAAE;YAC5C,OAAO,IAAI,CAAC;SACb;QAED,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,KAAK,KAAK,EAAE;YACpC,OAAO,CAAC,KAAK,CAAC,yEAAyE,CAAC,CAAC;YAEzF,OAAO,IAAI,CAAC;SACb;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,UAAU,KAAK,KAAK,CAAC;QAEtC,OAAO,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE;YAC/B,aAAa;YACb,QAAQ;YACR,QAAQ;SACT,CAAC,CAAC;IACL,CAAC,CACF,CAAC;IAEF,OAAO,CACL,6CACM,KAAK,IACT,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,SAAS,EACd,SAAS,EAAE,EAAE,CAAC;YACZ,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI;YACpB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,SAAS;SACzB,CAAC,KAED,QAAQ,CACL,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -5,4 +5,6 @@ export { useControllableState } from './use_controllable';
|
|
|
5
5
|
export { useId } from './use_id';
|
|
6
6
|
export { useImage } from './use_image';
|
|
7
7
|
export { useWindowEventListener } from './use_window_event_listener';
|
|
8
|
+
export { useAutocomplete, } from './use_autocomplete';
|
|
9
|
+
export { useEventCallback } from './use_event_callback';
|
|
8
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAuB,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAA6B,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAuB,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAA6B,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EACL,eAAe,GAKhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useId } from './use_id';
|
|
3
|
+
import { useControllableState } from './use_controllable';
|
|
4
|
+
import { useEventCallback } from './use_event_callback';
|
|
5
|
+
/**
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
8
|
+
const defaultFilterOptions = (options, value, getOptionLabel) => {
|
|
9
|
+
if (!options || !options.length) {
|
|
10
|
+
return [];
|
|
11
|
+
}
|
|
12
|
+
return options.filter((option) => {
|
|
13
|
+
const labelValue = getOptionLabel(option).trim().toLowerCase();
|
|
14
|
+
const searchValue = value.trim().toLowerCase();
|
|
15
|
+
return labelValue.includes(searchValue);
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
export function useAutocomplete(props) {
|
|
19
|
+
const { id: idProp, options, defaultValue = props.multiple ? [] : null, value: valueProp, disableCloseOnSelect = false, multiple = false, groupBy,
|
|
20
|
+
// @ts-ignore
|
|
21
|
+
getOptionLabel = (option) => option.label ?? option, filterOptions = defaultFilterOptions, onOpen, onClose, onInputChange, onChange, } = props;
|
|
22
|
+
const id = useId(idProp);
|
|
23
|
+
const anchorEl = React.useRef(null);
|
|
24
|
+
const listboxRef = React.useRef(null);
|
|
25
|
+
const highlightedIndexRef = React.useRef(-1);
|
|
26
|
+
const [popupOpen, setPopupOpen] = React.useState(false);
|
|
27
|
+
const [searchValue, setSearchValue] = React.useState('');
|
|
28
|
+
const [value, setValue] = useControllableState({
|
|
29
|
+
value: valueProp,
|
|
30
|
+
defaultValue,
|
|
31
|
+
});
|
|
32
|
+
const filteredOptions = popupOpen
|
|
33
|
+
? filterOptions(options, searchValue, getOptionLabel)
|
|
34
|
+
: [];
|
|
35
|
+
const validOptionIndex = (index, direction) => {
|
|
36
|
+
if (!listboxRef.current || index === -1) {
|
|
37
|
+
return -1;
|
|
38
|
+
}
|
|
39
|
+
let nextFocus = index;
|
|
40
|
+
while (true) {
|
|
41
|
+
// Out of range
|
|
42
|
+
if ((direction === 'next' && nextFocus === filteredOptions.length)
|
|
43
|
+
|| (direction === 'previous' && nextFocus === -1)) {
|
|
44
|
+
return -1;
|
|
45
|
+
}
|
|
46
|
+
const option = listboxRef.current.querySelector(`[data-option-index="${nextFocus}"]`);
|
|
47
|
+
if ((option && !option.hasAttribute('tabindex'))) {
|
|
48
|
+
// Move to the next element.
|
|
49
|
+
nextFocus += direction === 'next' ? 1 : -1;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
return nextFocus;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
const setHighlightedIndex = useEventCallback((index, reason = 'auto') => {
|
|
57
|
+
highlightedIndexRef.current = index;
|
|
58
|
+
const listboxNode = listboxRef.current;
|
|
59
|
+
if (!listboxNode) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const prevOptionNode = listboxNode.querySelector('[role="option"][data-focused="true"]');
|
|
63
|
+
if (prevOptionNode) {
|
|
64
|
+
prevOptionNode.setAttribute('data-focused', 'false');
|
|
65
|
+
}
|
|
66
|
+
if (index === -1) {
|
|
67
|
+
listboxNode.scrollTop = 0;
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
const option = listboxNode.querySelector(`[data-option-index="${index}"]`);
|
|
71
|
+
if (!option) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
option.setAttribute('data-focused', 'true');
|
|
75
|
+
// Scroll active descendant into view.
|
|
76
|
+
// Logic copied from https://www.w3.org/TR/wai-aria-practices/examples/listbox/js/listbox.js
|
|
77
|
+
//
|
|
78
|
+
// Consider this API instead once it has a better browser support:
|
|
79
|
+
// .scrollIntoView({ scrollMode: 'if-needed', block: 'nearest' });
|
|
80
|
+
if (listboxNode.scrollHeight > listboxNode.clientHeight && reason !== 'mouse') {
|
|
81
|
+
const element = option;
|
|
82
|
+
const scrollBottom = listboxNode.clientHeight + listboxNode.scrollTop;
|
|
83
|
+
const elementBottom = element.offsetTop + element.offsetHeight;
|
|
84
|
+
if (elementBottom > scrollBottom) {
|
|
85
|
+
listboxNode.scrollTop = elementBottom - listboxNode.clientHeight;
|
|
86
|
+
}
|
|
87
|
+
else if (element.offsetTop - element.offsetHeight * (groupBy ? 1.3 : 0) < listboxNode.scrollTop) {
|
|
88
|
+
listboxNode.scrollTop = element.offsetTop - element.offsetHeight * (groupBy ? 1.3 : 0);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
const changeHighlightedIndex = useEventCallback((diff, direction = 'next', reason = 'auto') => {
|
|
93
|
+
if (!popupOpen) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const getNextIndex = () => {
|
|
97
|
+
const maxIndex = filteredOptions.length - 1;
|
|
98
|
+
if (diff === 'reset') {
|
|
99
|
+
return -1;
|
|
100
|
+
}
|
|
101
|
+
if (diff === 'start') {
|
|
102
|
+
return 0;
|
|
103
|
+
}
|
|
104
|
+
if (diff === 'end') {
|
|
105
|
+
return maxIndex;
|
|
106
|
+
}
|
|
107
|
+
const newIndex = highlightedIndexRef.current + diff;
|
|
108
|
+
if (newIndex < 0) {
|
|
109
|
+
if (newIndex === -1) {
|
|
110
|
+
return -1;
|
|
111
|
+
}
|
|
112
|
+
if ((highlightedIndexRef.current !== -1) || Math.abs(diff) > 1) {
|
|
113
|
+
return 0;
|
|
114
|
+
}
|
|
115
|
+
return maxIndex;
|
|
116
|
+
}
|
|
117
|
+
if (newIndex > maxIndex) {
|
|
118
|
+
if (newIndex === maxIndex + 1) {
|
|
119
|
+
return -1;
|
|
120
|
+
}
|
|
121
|
+
if (Math.abs(diff) > 1) {
|
|
122
|
+
return maxIndex;
|
|
123
|
+
}
|
|
124
|
+
return 0;
|
|
125
|
+
}
|
|
126
|
+
return newIndex;
|
|
127
|
+
};
|
|
128
|
+
const nextIndex = validOptionIndex(getNextIndex(), direction);
|
|
129
|
+
setHighlightedIndex(nextIndex, reason);
|
|
130
|
+
});
|
|
131
|
+
const syncHighlightedIndex = React.useCallback(() => {
|
|
132
|
+
if (!popupOpen) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
const valueItem = Array.isArray(value) ? value[0] : value;
|
|
136
|
+
if (filteredOptions.length === 0 || valueItem == null) {
|
|
137
|
+
changeHighlightedIndex('reset');
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
if (!listboxRef.current) {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
if (valueItem != null) {
|
|
144
|
+
const itemIndex = filteredOptions.findIndex((o) => o === valueItem);
|
|
145
|
+
if (itemIndex === -1) {
|
|
146
|
+
changeHighlightedIndex('reset');
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
setHighlightedIndex(itemIndex);
|
|
150
|
+
}
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
// Prevent the highlighted index to leak outside the boundaries.
|
|
154
|
+
if (highlightedIndexRef.current >= filteredOptions.length - 1) {
|
|
155
|
+
setHighlightedIndex(filteredOptions.length - 1);
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
setHighlightedIndex(highlightedIndexRef.current);
|
|
159
|
+
}, [
|
|
160
|
+
filteredOptions.length,
|
|
161
|
+
multiple ? false : value,
|
|
162
|
+
changeHighlightedIndex,
|
|
163
|
+
setHighlightedIndex,
|
|
164
|
+
popupOpen,
|
|
165
|
+
searchValue,
|
|
166
|
+
multiple,
|
|
167
|
+
]);
|
|
168
|
+
const handleListboxRef = useEventCallback((node) => {
|
|
169
|
+
listboxRef.current = node;
|
|
170
|
+
if (!node) {
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
syncHighlightedIndex();
|
|
174
|
+
});
|
|
175
|
+
React.useEffect(() => {
|
|
176
|
+
syncHighlightedIndex();
|
|
177
|
+
}, [syncHighlightedIndex]);
|
|
178
|
+
const handleOpen = (event) => {
|
|
179
|
+
if (popupOpen) {
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
setPopupOpen(true);
|
|
183
|
+
if (onOpen) {
|
|
184
|
+
onOpen(event);
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
const handleClick = (event) => {
|
|
188
|
+
handleOpen(event);
|
|
189
|
+
};
|
|
190
|
+
const handleClose = (event) => {
|
|
191
|
+
if (!popupOpen) {
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
setPopupOpen(false);
|
|
195
|
+
setSearchValue('');
|
|
196
|
+
if (onClose) {
|
|
197
|
+
onClose(event);
|
|
198
|
+
}
|
|
199
|
+
};
|
|
200
|
+
const selectNewValue = (event, option) => {
|
|
201
|
+
let newValue = option;
|
|
202
|
+
if (multiple) {
|
|
203
|
+
newValue = Array.isArray(value) ? value.slice() : [];
|
|
204
|
+
const itemIndex = newValue.findIndex((v) => option === v);
|
|
205
|
+
if (itemIndex === -1) {
|
|
206
|
+
newValue.push(option);
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
newValue.splice(itemIndex, 1);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
setValue(newValue);
|
|
213
|
+
if (!disableCloseOnSelect) {
|
|
214
|
+
handleClose(event);
|
|
215
|
+
}
|
|
216
|
+
if (onChange) {
|
|
217
|
+
onChange(event, newValue);
|
|
218
|
+
}
|
|
219
|
+
};
|
|
220
|
+
const handleInputChange = (event) => {
|
|
221
|
+
const { value: valueInput } = event.target;
|
|
222
|
+
setSearchValue(valueInput);
|
|
223
|
+
if (onInputChange) {
|
|
224
|
+
onInputChange(event, valueInput);
|
|
225
|
+
}
|
|
226
|
+
};
|
|
227
|
+
const handleKeyDown = (event) => {
|
|
228
|
+
// Wait until IME is settled.
|
|
229
|
+
if (event.which !== 229) {
|
|
230
|
+
switch (event.key) {
|
|
231
|
+
case 'ArrowDown':
|
|
232
|
+
// Prevent cursor move
|
|
233
|
+
event.preventDefault();
|
|
234
|
+
changeHighlightedIndex(1, 'next', 'keyboard');
|
|
235
|
+
break;
|
|
236
|
+
case 'ArrowUp':
|
|
237
|
+
// Prevent cursor move
|
|
238
|
+
event.preventDefault();
|
|
239
|
+
changeHighlightedIndex(-1, 'previous', 'keyboard');
|
|
240
|
+
break;
|
|
241
|
+
case 'Enter':
|
|
242
|
+
// Avoid early form validation, let the end-users continue filling the form.
|
|
243
|
+
event.preventDefault();
|
|
244
|
+
if (highlightedIndexRef.current !== -1 && popupOpen) {
|
|
245
|
+
const option = filteredOptions[highlightedIndexRef.current];
|
|
246
|
+
selectNewValue(event, option);
|
|
247
|
+
}
|
|
248
|
+
break;
|
|
249
|
+
default:
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
};
|
|
253
|
+
const handleOptionClick = (event) => {
|
|
254
|
+
const index = Number(event.currentTarget.getAttribute('data-option-index'));
|
|
255
|
+
const option = filteredOptions[index];
|
|
256
|
+
selectNewValue(event, option);
|
|
257
|
+
};
|
|
258
|
+
const handleTagDelete = (option) => (event) => {
|
|
259
|
+
selectNewValue(event, option);
|
|
260
|
+
};
|
|
261
|
+
let groupedOptions = filteredOptions;
|
|
262
|
+
if (groupBy) {
|
|
263
|
+
groupedOptions = filteredOptions.reduce((acc, option, index) => {
|
|
264
|
+
const group = groupBy(option);
|
|
265
|
+
if (acc.length > 0 && acc[acc.length - 1].group === group) {
|
|
266
|
+
acc[acc.length - 1].options.push(option);
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
acc.push({
|
|
270
|
+
key: index,
|
|
271
|
+
index,
|
|
272
|
+
group,
|
|
273
|
+
options: [option],
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
return acc;
|
|
277
|
+
}, []);
|
|
278
|
+
}
|
|
279
|
+
return {
|
|
280
|
+
getRootProps: () => ({
|
|
281
|
+
ref: anchorEl,
|
|
282
|
+
'aria-expanded': popupOpen,
|
|
283
|
+
'aria-haspopup': 'listbox',
|
|
284
|
+
onClick: handleClick,
|
|
285
|
+
}),
|
|
286
|
+
getListboxProps: () => ({
|
|
287
|
+
ref: handleListboxRef,
|
|
288
|
+
role: 'listbox',
|
|
289
|
+
tabIndex: -1,
|
|
290
|
+
id: `${id}-listbox`,
|
|
291
|
+
}),
|
|
292
|
+
getInputProps: () => ({
|
|
293
|
+
type: 'search',
|
|
294
|
+
value: searchValue,
|
|
295
|
+
autoComplete: 'off',
|
|
296
|
+
autoCapitalize: 'none',
|
|
297
|
+
autoCorrect: 'false',
|
|
298
|
+
spellCheck: 'false',
|
|
299
|
+
onChange: handleInputChange,
|
|
300
|
+
}),
|
|
301
|
+
getOptionProps: (option, index) => {
|
|
302
|
+
const selected = (Array.isArray(value) ? value : [value]).some((v) => v != null && option === v);
|
|
303
|
+
return {
|
|
304
|
+
key: getOptionLabel(option),
|
|
305
|
+
tabIndex: -1,
|
|
306
|
+
role: 'option',
|
|
307
|
+
id: `${id}-option-${index}`,
|
|
308
|
+
'data-option-index': index,
|
|
309
|
+
'aria-selected': selected,
|
|
310
|
+
onClick: handleOptionClick,
|
|
311
|
+
};
|
|
312
|
+
},
|
|
313
|
+
getPopoverProps: () => ({
|
|
314
|
+
open: popupOpen,
|
|
315
|
+
anchorEl: anchorEl.current,
|
|
316
|
+
onClose: handleClose,
|
|
317
|
+
onKeyDown: handleKeyDown,
|
|
318
|
+
}),
|
|
319
|
+
getTagProps: (option, index) => ({
|
|
320
|
+
key: index,
|
|
321
|
+
'data-tag-index': index,
|
|
322
|
+
tabIndex: -1,
|
|
323
|
+
onDelete: handleTagDelete(option),
|
|
324
|
+
}),
|
|
325
|
+
getOptionLabel,
|
|
326
|
+
groupedOptions,
|
|
327
|
+
popupOpen,
|
|
328
|
+
value,
|
|
329
|
+
id,
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
//# sourceMappingURL=use_autocomplete.js.map
|