@acusti/dropdown 0.33.0 → 0.35.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/dist/Dropdown.d.ts +2 -1
- package/dist/Dropdown.js +29 -32
- package/dist/Dropdown.js.flow +2 -1
- package/dist/Dropdown.js.map +1 -1
- package/dist/Dropdown.test.d.ts +1 -0
- package/dist/Dropdown.test.js +102 -0
- package/dist/Dropdown.test.js.flow +6 -0
- package/dist/Dropdown.test.js.map +1 -0
- package/dist/helpers.js +1 -0
- package/dist/helpers.js.map +1 -1
- package/dist/styles.d.ts +10 -10
- package/dist/styles.js +3 -2
- package/dist/styles.js.flow +10 -10
- package/dist/styles.js.map +1 -1
- package/package.json +10 -9
- package/src/Dropdown.test.tsx +19 -19
- package/src/Dropdown.tsx +36 -41
- package/src/helpers.ts +1 -0
- package/src/styles.ts +3 -2
package/dist/Dropdown.d.ts
CHANGED
|
@@ -32,6 +32,7 @@ export type Props = {
|
|
|
32
32
|
onSubmitItem?: (payload: Item) => void;
|
|
33
33
|
/** Only usable in conjunction with {isSearchable: true}; used as search input’s placeholder */
|
|
34
34
|
placeholder?: string;
|
|
35
|
+
style?: React.CSSProperties;
|
|
35
36
|
/** Only usable in conjunction with {isSearchable: true}; used as search input’s tabIndex */
|
|
36
37
|
tabIndex?: number;
|
|
37
38
|
/**
|
|
@@ -40,5 +41,5 @@ export type Props = {
|
|
|
40
41
|
*/
|
|
41
42
|
value?: string;
|
|
42
43
|
};
|
|
43
|
-
export default function Dropdown({ allowCreate, allowEmpty, children, className, disabled, hasItems, isOpenOnMount, isSearchable, keepOpenOnSubmit, label, name, onClick, onClose, onMouseDown, onMouseUp, onOpen, onSubmitItem, placeholder, tabIndex, value, }: Props): JSX.Element;
|
|
44
|
+
export default function Dropdown({ allowCreate, allowEmpty, children, className, disabled, hasItems, isOpenOnMount, isSearchable, keepOpenOnSubmit, label, name, onClick, onClose, onMouseDown, onMouseUp, onOpen, onSubmitItem, placeholder, style: styleFromProps, tabIndex, value, }: Props): React.JSX.Element;
|
|
44
45
|
export {};
|
package/dist/Dropdown.js
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
|
+
/* eslint-disable jsx-a11y/click-events-have-key-events, jsx-a11y/mouse-events-have-key-events, jsx-a11y/no-static-element-interactions */
|
|
1
2
|
import InputText from '@acusti/input-text';
|
|
2
3
|
import { Style } from '@acusti/styling';
|
|
3
4
|
import useIsOutOfBounds from '@acusti/use-is-out-of-bounds';
|
|
4
5
|
import useKeyboardEvents, { isEventTargetUsingKeyEvent, } from '@acusti/use-keyboard-events';
|
|
5
6
|
import clsx from 'clsx';
|
|
6
7
|
import * as React from 'react';
|
|
7
|
-
import { BODY_CLASS_NAME, BODY_MAX_HEIGHT_VAR, BODY_MAX_WIDTH_VAR, BODY_SELECTOR, LABEL_CLASS_NAME, LABEL_TEXT_CLASS_NAME, ROOT_CLASS_NAME, STYLES, TRIGGER_CLASS_NAME, } from './styles.js';
|
|
8
8
|
import { getActiveItemElement, getItemElements, ITEM_SELECTOR, setActiveItem, } from './helpers.js';
|
|
9
|
+
import { BODY_CLASS_NAME, BODY_MAX_HEIGHT_VAR, BODY_MAX_WIDTH_VAR, BODY_SELECTOR, LABEL_CLASS_NAME, LABEL_TEXT_CLASS_NAME, ROOT_CLASS_NAME, STYLES, TRIGGER_CLASS_NAME, } from './styles.js';
|
|
9
10
|
const { Children, Fragment, useCallback, useEffect, useMemo, useRef, useState } = React;
|
|
10
|
-
const noop = () => { };
|
|
11
|
+
const noop = () => { }; // eslint-disable-line @typescript-eslint/no-empty-function
|
|
11
12
|
const CHILDREN_ERROR = '@acusti/dropdown requires either 1 child (the dropdown body) or 2 children: the dropdown trigger and the dropdown body.';
|
|
12
13
|
const TEXT_INPUT_SELECTOR = 'input:not([type=radio]):not([type=checkbox]):not([type=range]),textarea';
|
|
13
|
-
export default function Dropdown({ allowCreate, allowEmpty = true, children, className, disabled, hasItems = true, isOpenOnMount, isSearchable, keepOpenOnSubmit = !hasItems, label, name, onClick, onClose, onMouseDown, onMouseUp, onOpen, onSubmitItem, placeholder, tabIndex, value, }) {
|
|
14
|
+
export default function Dropdown({ allowCreate, allowEmpty = true, children, className, disabled, hasItems = true, isOpenOnMount, isSearchable, keepOpenOnSubmit = !hasItems, label, name, onClick, onClose, onMouseDown, onMouseUp, onOpen, onSubmitItem, placeholder, style: styleFromProps, tabIndex, value, }) {
|
|
14
15
|
const childrenCount = Children.count(children);
|
|
15
16
|
if (childrenCount !== 1 && childrenCount !== 2) {
|
|
16
17
|
if (childrenCount === 0) {
|
|
@@ -23,7 +24,7 @@ export default function Dropdown({ allowCreate, allowEmpty = true, children, cla
|
|
|
23
24
|
trigger = children[0];
|
|
24
25
|
}
|
|
25
26
|
const isTriggerFromProps = React.isValidElement(trigger);
|
|
26
|
-
const [isOpen, setIsOpen] = useState(isOpenOnMount
|
|
27
|
+
const [isOpen, setIsOpen] = useState(isOpenOnMount !== null && isOpenOnMount !== void 0 ? isOpenOnMount : false);
|
|
27
28
|
const [isOpening, setIsOpening] = useState(!isOpenOnMount);
|
|
28
29
|
const [dropdownBodyElement, setDropdownBodyElement] = useState(null);
|
|
29
30
|
const dropdownElementRef = useRef(null);
|
|
@@ -35,6 +36,7 @@ export default function Dropdown({ allowCreate, allowEmpty = true, children, cla
|
|
|
35
36
|
const enteredCharactersRef = useRef('');
|
|
36
37
|
const mouseDownPositionRef = useRef(null);
|
|
37
38
|
const outOfBounds = useIsOutOfBounds(dropdownBodyElement);
|
|
39
|
+
const setDropdownOpenRef = useRef(() => setIsOpen(true));
|
|
38
40
|
const allowCreateRef = useRef(allowCreate);
|
|
39
41
|
const allowEmptyRef = useRef(allowEmpty);
|
|
40
42
|
const hasItemsRef = useRef(hasItems);
|
|
@@ -95,9 +97,10 @@ export default function Dropdown({ allowCreate, allowEmpty = true, children, cla
|
|
|
95
97
|
}
|
|
96
98
|
}, []);
|
|
97
99
|
const handleSubmitItem = useCallback((event) => {
|
|
98
|
-
var _a, _b;
|
|
100
|
+
var _a, _b, _c;
|
|
99
101
|
const eventTarget = event.target;
|
|
100
102
|
if (isOpenRef.current && !keepOpenOnSubmitRef.current) {
|
|
103
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
101
104
|
const keepOpen = eventTarget.closest('[data-ukt-keep-open]');
|
|
102
105
|
// Don’t close dropdown if event occurs w/in data-ukt-keep-open element
|
|
103
106
|
if (!(keepOpen === null || keepOpen === void 0 ? void 0 : keepOpen.dataset.uktKeepOpen) ||
|
|
@@ -118,7 +121,7 @@ export default function Dropdown({ allowCreate, allowEmpty = true, children, cla
|
|
|
118
121
|
if ((_a = inputElementRef.current) === null || _a === void 0 ? void 0 : _a.value)
|
|
119
122
|
return;
|
|
120
123
|
}
|
|
121
|
-
let label = (element === null || element === void 0 ? void 0 : element.innerText)
|
|
124
|
+
let label = (_b = element === null || element === void 0 ? void 0 : element.innerText) !== null && _b !== void 0 ? _b : '';
|
|
122
125
|
if (inputElementRef.current) {
|
|
123
126
|
if (!element) {
|
|
124
127
|
label = inputElementRef.current.value;
|
|
@@ -131,7 +134,7 @@ export default function Dropdown({ allowCreate, allowEmpty = true, children, cla
|
|
|
131
134
|
inputElementRef.current.blur();
|
|
132
135
|
}
|
|
133
136
|
}
|
|
134
|
-
const nextValue = (
|
|
137
|
+
const nextValue = (_c = element === null || element === void 0 ? void 0 : element.dataset.uktValue) !== null && _c !== void 0 ? _c : label;
|
|
135
138
|
// If parent is controlling Dropdown via props.value and nextValue is the same, do nothing
|
|
136
139
|
if (valueRef.current && valueRef.current === nextValue)
|
|
137
140
|
return;
|
|
@@ -164,14 +167,12 @@ export default function Dropdown({ allowCreate, allowEmpty = true, children, cla
|
|
|
164
167
|
if (!itemElements)
|
|
165
168
|
return;
|
|
166
169
|
const eventTarget = event.target;
|
|
170
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
167
171
|
const item = eventTarget.closest(ITEM_SELECTOR);
|
|
168
|
-
const element = item
|
|
169
|
-
for (
|
|
170
|
-
if (
|
|
171
|
-
setActiveItem({
|
|
172
|
-
dropdownElement,
|
|
173
|
-
element,
|
|
174
|
-
});
|
|
172
|
+
const element = item !== null && item !== void 0 ? item : eventTarget;
|
|
173
|
+
for (const itemElement of itemElements) {
|
|
174
|
+
if (itemElement === element) {
|
|
175
|
+
setActiveItem({ dropdownElement, element });
|
|
175
176
|
return;
|
|
176
177
|
}
|
|
177
178
|
}
|
|
@@ -208,9 +209,10 @@ export default function Dropdown({ allowCreate, allowEmpty = true, children, cla
|
|
|
208
209
|
const handleMouseUp = useCallback((event) => {
|
|
209
210
|
if (onMouseUp)
|
|
210
211
|
onMouseUp(event);
|
|
211
|
-
// If dropdown isn’t open or is
|
|
212
|
-
if (!isOpenRef.current || closingTimerRef.current)
|
|
212
|
+
// If dropdown is still opening or isn’t open or is closing, do nothing
|
|
213
|
+
if (isOpeningRef.current || !isOpenRef.current || closingTimerRef.current) {
|
|
213
214
|
return;
|
|
215
|
+
}
|
|
214
216
|
const eventTarget = event.target;
|
|
215
217
|
// If click was outside dropdown body, don’t trigger submit
|
|
216
218
|
if (!eventTarget.closest(BODY_SELECTOR)) {
|
|
@@ -224,11 +226,7 @@ export default function Dropdown({ allowCreate, allowEmpty = true, children, cla
|
|
|
224
226
|
// If dropdown has no items and click was within dropdown body, do nothing
|
|
225
227
|
if (!hasItemsRef.current)
|
|
226
228
|
return;
|
|
227
|
-
|
|
228
|
-
if (!isOpeningRef.current ||
|
|
229
|
-
getActiveItemElement(dropdownElementRef.current)) {
|
|
230
|
-
handleSubmitItem(event);
|
|
231
|
-
}
|
|
229
|
+
handleSubmitItem(event);
|
|
232
230
|
}, [closeDropdown, handleSubmitItem, onMouseUp]);
|
|
233
231
|
const handleKeyDown = useCallback((event) => {
|
|
234
232
|
const { altKey, ctrlKey, key, metaKey } = event;
|
|
@@ -445,12 +443,9 @@ export default function Dropdown({ allowCreate, allowEmpty = true, children, cla
|
|
|
445
443
|
}
|
|
446
444
|
};
|
|
447
445
|
}, [closeDropdown, isOpenOnMount, isTriggerFromProps]);
|
|
448
|
-
const handleTriggerFocus = useCallback(() => {
|
|
449
|
-
setIsOpen(true);
|
|
450
|
-
}, []);
|
|
451
446
|
if (!isTriggerFromProps) {
|
|
452
447
|
if (isSearchable) {
|
|
453
|
-
trigger = (React.createElement(InputText, { className: TRIGGER_CLASS_NAME, disabled: disabled, initialValue: value
|
|
448
|
+
trigger = (React.createElement(InputText, { className: TRIGGER_CLASS_NAME, disabled: disabled, initialValue: value !== null && value !== void 0 ? value : '', name: name, onFocus: setDropdownOpenRef.current, placeholder: placeholder, ref: inputElementRef, selectTextOnFocus: true, tabIndex: tabIndex, type: "text" }));
|
|
454
449
|
}
|
|
455
450
|
else {
|
|
456
451
|
trigger = (React.createElement("button", { className: TRIGGER_CLASS_NAME, tabIndex: 0 }, trigger));
|
|
@@ -461,20 +456,22 @@ export default function Dropdown({ allowCreate, allowEmpty = true, children, cla
|
|
|
461
456
|
React.createElement("div", { className: LABEL_TEXT_CLASS_NAME }, label),
|
|
462
457
|
trigger));
|
|
463
458
|
}
|
|
464
|
-
const style = useMemo(() => (Object.assign(Object.assign({}, (outOfBounds.maxHeight
|
|
465
|
-
? {
|
|
459
|
+
const style = useMemo(() => (Object.assign(Object.assign(Object.assign({}, styleFromProps), (outOfBounds.maxHeight
|
|
460
|
+
? {
|
|
461
|
+
[BODY_MAX_HEIGHT_VAR]: `calc(${outOfBounds.maxHeight}px - var(--uktdd-body-buffer))`,
|
|
462
|
+
}
|
|
466
463
|
: null)), (outOfBounds.maxWidth
|
|
467
|
-
? {
|
|
468
|
-
|
|
464
|
+
? {
|
|
465
|
+
[BODY_MAX_WIDTH_VAR]: `calc(${outOfBounds.maxWidth}px - var(--uktdd-body-buffer))`,
|
|
466
|
+
}
|
|
467
|
+
: null))), [outOfBounds.maxHeight, outOfBounds.maxWidth, styleFromProps]);
|
|
469
468
|
return (React.createElement(Fragment, null,
|
|
470
469
|
React.createElement(Style, null, STYLES),
|
|
471
470
|
React.createElement("div", { className: clsx(ROOT_CLASS_NAME, className, {
|
|
472
471
|
disabled,
|
|
473
472
|
'is-open': isOpen,
|
|
474
473
|
'is-searchable': isSearchable,
|
|
475
|
-
}), onClick: onClick, onMouseDown: handleMouseDown,
|
|
476
|
-
? undefined
|
|
477
|
-
: 0 },
|
|
474
|
+
}), onClick: onClick, onMouseDown: handleMouseDown, onMouseMove: handleMouseMove, onMouseOut: handleMouseOut, onMouseOver: handleMouseOver, onMouseUp: handleMouseUp, ref: handleRef, style: style },
|
|
478
475
|
trigger,
|
|
479
476
|
isOpen ? (React.createElement("div", { className: clsx(BODY_CLASS_NAME, {
|
|
480
477
|
'calculating-position': !outOfBounds.hasLayout,
|
package/dist/Dropdown.js.flow
CHANGED
|
@@ -56,6 +56,7 @@ export type Props = {|
|
|
|
56
56
|
* Only usable in conjunction with {isSearchable: true}; used as search input’s placeholder
|
|
57
57
|
*/
|
|
58
58
|
placeholder?: string,
|
|
59
|
+
style?: React.CSSProperties,
|
|
59
60
|
|
|
60
61
|
/**
|
|
61
62
|
* Only usable in conjunction with {isSearchable: true}; used as search input’s tabIndex
|
|
@@ -68,4 +69,4 @@ export type Props = {|
|
|
|
68
69
|
*/
|
|
69
70
|
value?: string,
|
|
70
71
|
|};
|
|
71
|
-
declare export default function Dropdown(x: Props): React
|
|
72
|
+
declare export default function Dropdown(x: Props): React.JSX.Element;
|
package/dist/Dropdown.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dropdown.js","sourceRoot":"","sources":["../src/Dropdown.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Dropdown.js","sourceRoot":"","sources":["../src/Dropdown.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
// @vitest-environment happy-dom
|
|
2
|
+
import { cleanup, render, screen } from '@testing-library/react';
|
|
3
|
+
import userEvent from '@testing-library/user-event';
|
|
4
|
+
import React from 'react'; // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
5
|
+
import { afterEach, describe, expect, it } from 'vitest';
|
|
6
|
+
import Dropdown from './Dropdown.js';
|
|
7
|
+
afterEach(cleanup);
|
|
8
|
+
describe('Dropdown.js', () => {
|
|
9
|
+
it('renders its contents as a dropdown menu with an empty button to trigger it when it’s rendered with a single child', async () => {
|
|
10
|
+
const user = userEvent.setup();
|
|
11
|
+
render(React.createElement(Dropdown, null,
|
|
12
|
+
React.createElement("ul", { "data-testid": "dropdown-list" },
|
|
13
|
+
React.createElement("li", null, "0px"),
|
|
14
|
+
React.createElement("li", null, "4px"),
|
|
15
|
+
React.createElement("li", null, "9px"),
|
|
16
|
+
React.createElement("li", null, "18px"),
|
|
17
|
+
React.createElement("li", null, "36px"),
|
|
18
|
+
React.createElement("li", null, "54px"),
|
|
19
|
+
React.createElement("li", null, "72px"),
|
|
20
|
+
React.createElement("li", null, "144px"),
|
|
21
|
+
React.createElement("li", null, "167px"),
|
|
22
|
+
React.createElement("li", null, "198px"))));
|
|
23
|
+
const trigger = screen.getByRole('button');
|
|
24
|
+
expect(trigger.innerHTML).toBe('');
|
|
25
|
+
await user.click(trigger);
|
|
26
|
+
expect(screen.getByTestId('dropdown-list')).toBeTruthy();
|
|
27
|
+
});
|
|
28
|
+
it('renders the first child as a trigger and the second child as a dropdown when given two children', async () => {
|
|
29
|
+
const user = userEvent.setup();
|
|
30
|
+
render(React.createElement(Dropdown, null,
|
|
31
|
+
"File",
|
|
32
|
+
React.createElement("ul", { "data-testid": "file-menu" },
|
|
33
|
+
React.createElement("li", null, "New Window"),
|
|
34
|
+
React.createElement("li", null, "New Private Window"),
|
|
35
|
+
React.createElement("li", null, "New Tab"),
|
|
36
|
+
React.createElement("li", null, "New Empty Tab Group"),
|
|
37
|
+
React.createElement("li", null, "Open File\u2026"),
|
|
38
|
+
React.createElement("li", null, "Open Location\u2026"),
|
|
39
|
+
React.createElement("li", { className: "separator" }),
|
|
40
|
+
React.createElement("li", null, "Close Window"),
|
|
41
|
+
React.createElement("li", null, "Close All Window"),
|
|
42
|
+
React.createElement("li", null, "Close Tab"),
|
|
43
|
+
React.createElement("li", null, "Save As\u2026"),
|
|
44
|
+
React.createElement("li", { className: "separator" }),
|
|
45
|
+
React.createElement("li", null, "Print\u2026"))));
|
|
46
|
+
const trigger = screen.getByRole('button');
|
|
47
|
+
expect(trigger.innerHTML).toBe('File');
|
|
48
|
+
await user.click(trigger);
|
|
49
|
+
expect(screen.getByTestId('file-menu')).toBeTruthy();
|
|
50
|
+
});
|
|
51
|
+
it('triggers props.onClose and props.onOpen at the appropriate times', async () => {
|
|
52
|
+
let closedCount = 0;
|
|
53
|
+
const handleClose = () => closedCount++;
|
|
54
|
+
let openedCount = 0;
|
|
55
|
+
const handleOpen = () => openedCount++;
|
|
56
|
+
const user = userEvent.setup();
|
|
57
|
+
render(React.createElement(Dropdown, { onClose: handleClose, onOpen: handleOpen },
|
|
58
|
+
"File",
|
|
59
|
+
React.createElement("ul", { "data-testid": "file-menu" },
|
|
60
|
+
React.createElement("li", null, "New Window"),
|
|
61
|
+
React.createElement("li", null, "New Private Window"),
|
|
62
|
+
React.createElement("li", null, "New Tab"),
|
|
63
|
+
React.createElement("li", null, "New Empty Tab Group"),
|
|
64
|
+
React.createElement("li", null, "Open File\u2026"),
|
|
65
|
+
React.createElement("li", null, "Open Location\u2026"),
|
|
66
|
+
React.createElement("li", { className: "separator" }),
|
|
67
|
+
React.createElement("li", null, "Close Window"),
|
|
68
|
+
React.createElement("li", null, "Close All Window"),
|
|
69
|
+
React.createElement("li", null, "Close Tab"),
|
|
70
|
+
React.createElement("li", null, "Save As\u2026"),
|
|
71
|
+
React.createElement("li", { className: "separator" }),
|
|
72
|
+
React.createElement("li", null, "Print\u2026"))));
|
|
73
|
+
const trigger = screen.getByRole('button');
|
|
74
|
+
expect(closedCount).toBe(0);
|
|
75
|
+
expect(openedCount).toBe(0);
|
|
76
|
+
await user.click(trigger);
|
|
77
|
+
expect(closedCount).toBe(0);
|
|
78
|
+
expect(openedCount).toBe(1);
|
|
79
|
+
expect(screen.getByTestId('file-menu')).toBeTruthy();
|
|
80
|
+
await user.type(trigger, '{Esc}');
|
|
81
|
+
expect(closedCount).toBe(1);
|
|
82
|
+
expect(openedCount).toBe(1);
|
|
83
|
+
expect(screen.queryByTestId('file-menu')).toBe(null);
|
|
84
|
+
});
|
|
85
|
+
it('triggers props.onOpen immediately if props.isOpenOnMount', async () => {
|
|
86
|
+
let closedCount = 0;
|
|
87
|
+
const handleClose = () => closedCount++;
|
|
88
|
+
let openedCount = 0;
|
|
89
|
+
const handleOpen = () => openedCount++;
|
|
90
|
+
const user = userEvent.setup();
|
|
91
|
+
render(React.createElement(Dropdown, { isOpenOnMount: true, onClose: handleClose, onOpen: handleOpen },
|
|
92
|
+
React.createElement("p", { "data-testid": "dropdown-body" }, "this is the dropdown contents")));
|
|
93
|
+
const trigger = screen.getByRole('button');
|
|
94
|
+
expect(screen.getByTestId('dropdown-body')).toBeTruthy();
|
|
95
|
+
expect(openedCount).toBe(1);
|
|
96
|
+
await user.click(trigger);
|
|
97
|
+
expect(closedCount).toBe(1);
|
|
98
|
+
expect(openedCount).toBe(1);
|
|
99
|
+
expect(screen.queryByTestId('dropdown-body')).toBe(null);
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
//# sourceMappingURL=Dropdown.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dropdown.test.js","sourceRoot":"","sources":["../src/Dropdown.test.tsx"],"names":[],"mappings":"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"}
|
package/dist/helpers.js
CHANGED
|
@@ -27,6 +27,7 @@ export const getItemElements = (dropdownElement) => {
|
|
|
27
27
|
export const getActiveItemElement = (dropdownElement) => {
|
|
28
28
|
if (!dropdownElement)
|
|
29
29
|
return null;
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
30
31
|
return dropdownElement.querySelector('[data-ukt-active]');
|
|
31
32
|
};
|
|
32
33
|
const clearItemElementsState = (itemElements) => {
|
package/dist/helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,CAAC,MAAM,aAAa,GAAG,mCAAmC,CAAC;AAEjE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,eAAmC,EAAE,EAAE;IACnE,IAAI,CAAC,eAAe;QAAE,OAAO,IAAI,CAAC;IAElC,MAAM,WAAW,GAAG,eAAe,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IACjE,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAE9B,IAAI,KAAK,GACL,WAAW,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAEhD,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC/B,sEAAsE;IACtE,gDAAgD;IAChD,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC;IAC7B,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/styles.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
export declare const ROOT_CLASS_NAME = "uktdropdown";
|
|
2
|
-
export declare const ROOT_SELECTOR
|
|
3
|
-
export declare const BODY_CLASS_NAME
|
|
4
|
-
export declare const LABEL_CLASS_NAME
|
|
5
|
-
export declare const LABEL_TEXT_CLASS_NAME
|
|
6
|
-
export declare const TRIGGER_CLASS_NAME
|
|
7
|
-
export declare const BODY_SELECTOR
|
|
8
|
-
export declare const LABEL_SELECTOR
|
|
9
|
-
export declare const LABEL_TEXT_SELECTOR
|
|
10
|
-
export declare const TRIGGER_SELECTOR
|
|
2
|
+
export declare const ROOT_SELECTOR = ".uktdropdown";
|
|
3
|
+
export declare const BODY_CLASS_NAME = "uktdropdown-body";
|
|
4
|
+
export declare const LABEL_CLASS_NAME = "uktdropdown-label";
|
|
5
|
+
export declare const LABEL_TEXT_CLASS_NAME = "uktdropdown-label-text";
|
|
6
|
+
export declare const TRIGGER_CLASS_NAME = "uktdropdown-trigger";
|
|
7
|
+
export declare const BODY_SELECTOR = ".uktdropdown-body";
|
|
8
|
+
export declare const LABEL_SELECTOR = ".uktdropdown-label";
|
|
9
|
+
export declare const LABEL_TEXT_SELECTOR = ".uktdropdown-label-text";
|
|
10
|
+
export declare const TRIGGER_SELECTOR = ".uktdropdown-trigger";
|
|
11
11
|
export declare const BODY_MAX_HEIGHT_VAR = "--uktdd-body-max-height";
|
|
12
12
|
export declare const BODY_MAX_WIDTH_VAR = "--uktdd-body-max-width";
|
|
13
|
-
export declare const STYLES:
|
|
13
|
+
export declare const STYLES = "\n:root {\n --uktdd-font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n --uktdd-body-bg-color: #fff;\n --uktdd-body-bg-color-hover: rgb(105,162,249);\n --uktdd-body-color-hover: #fff;\n --uktdd-body-buffer: 10px;\n --uktdd-body-max-height: calc(100vh - var(--uktdd-body-buffer));\n --uktdd-body-max-width: calc(100vw - var(--uktdd-body-buffer));\n --uktdd-body-pad-bottom: 9px;\n --uktdd-body-pad-left: 12px;\n --uktdd-body-pad-right: 12px;\n --uktdd-body-pad-top: 9px;\n --uktdd-label-pad-right: 10px;\n}\n.uktdropdown,\n.uktdropdown-trigger {\n font-family: var(--uktdd-font-family);\n}\n.uktdropdown {\n position: relative;\n display: inline-block;\n}\n.uktdropdown.disabled {\n pointer-events: none;\n}\n.uktdropdown > * {\n cursor: default;\n}\n.uktdropdown-label {\n display: flex;\n}\n.uktdropdown-label-text {\n padding-right: var(--uktdd-label-pad-right);\n}\n.uktdropdown-body {\n box-sizing: border-box;\n position: absolute;\n top: 100%;\n max-height: var(--uktdd-body-max-height);\n min-height: 50px;\n max-width: var(--uktdd-body-max-width);\n min-width: 100%;\n overflow: auto;\n z-index: 2;\n padding: var(--uktdd-body-pad-top) var(--uktdd-body-pad-right) var(--uktdd-body-pad-bottom) var(--uktdd-body-pad-left);\n background-color: var(--uktdd-body-bg-color);\n box-shadow: 0 8px 18px rgba(0,0,0,0.25);\n}\n.uktdropdown-body.calculating-position {\n visibility: hidden;\n}\n.uktdropdown-body.out-of-bounds-bottom:not(.out-of-bounds-top) {\n top: auto;\n bottom: 100%;\n}\n.uktdropdown-body.out-of-bounds-right:not(.out-of-bounds-left) {\n left: auto;\n right: 0px;\n}\n.uktdropdown-label + .uktdropdown-body {\n left: auto;\n right: 0;\n}\n.uktdropdown-body.has-items {\n user-select: none;\n}\n.uktdropdown-body [data-ukt-active] {\n background-color: var(--uktdd-body-bg-color-hover);\n color: var(--uktdd-body-color-hover);\n}\n";
|
package/dist/styles.js
CHANGED
|
@@ -17,8 +17,9 @@ export const STYLES = `
|
|
|
17
17
|
--uktdd-body-bg-color: #fff;
|
|
18
18
|
--uktdd-body-bg-color-hover: rgb(105,162,249);
|
|
19
19
|
--uktdd-body-color-hover: #fff;
|
|
20
|
-
|
|
21
|
-
${
|
|
20
|
+
--uktdd-body-buffer: 10px;
|
|
21
|
+
${BODY_MAX_HEIGHT_VAR}: calc(100vh - var(--uktdd-body-buffer));
|
|
22
|
+
${BODY_MAX_WIDTH_VAR}: calc(100vw - var(--uktdd-body-buffer));
|
|
22
23
|
--uktdd-body-pad-bottom: 9px;
|
|
23
24
|
--uktdd-body-pad-left: 12px;
|
|
24
25
|
--uktdd-body-pad-right: 12px;
|
package/dist/styles.js.flow
CHANGED
|
@@ -6,15 +6,15 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
declare export var ROOT_CLASS_NAME: "uktdropdown";
|
|
9
|
-
declare export var ROOT_SELECTOR:
|
|
10
|
-
declare export var BODY_CLASS_NAME:
|
|
11
|
-
declare export var LABEL_CLASS_NAME:
|
|
12
|
-
declare export var LABEL_TEXT_CLASS_NAME:
|
|
13
|
-
declare export var TRIGGER_CLASS_NAME:
|
|
14
|
-
declare export var BODY_SELECTOR:
|
|
15
|
-
declare export var LABEL_SELECTOR:
|
|
16
|
-
declare export var LABEL_TEXT_SELECTOR:
|
|
17
|
-
declare export var TRIGGER_SELECTOR:
|
|
9
|
+
declare export var ROOT_SELECTOR: ".uktdropdown";
|
|
10
|
+
declare export var BODY_CLASS_NAME: "uktdropdown-body";
|
|
11
|
+
declare export var LABEL_CLASS_NAME: "uktdropdown-label";
|
|
12
|
+
declare export var LABEL_TEXT_CLASS_NAME: "uktdropdown-label-text";
|
|
13
|
+
declare export var TRIGGER_CLASS_NAME: "uktdropdown-trigger";
|
|
14
|
+
declare export var BODY_SELECTOR: ".uktdropdown-body";
|
|
15
|
+
declare export var LABEL_SELECTOR: ".uktdropdown-label";
|
|
16
|
+
declare export var LABEL_TEXT_SELECTOR: ".uktdropdown-label-text";
|
|
17
|
+
declare export var TRIGGER_SELECTOR: ".uktdropdown-trigger";
|
|
18
18
|
declare export var BODY_MAX_HEIGHT_VAR: "--uktdd-body-max-height";
|
|
19
19
|
declare export var BODY_MAX_WIDTH_VAR: "--uktdd-body-max-width";
|
|
20
|
-
declare export var STYLES:
|
|
20
|
+
declare export var STYLES: '\n:root {\n --uktdd-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;\n --uktdd-body-bg-color: #fff;\n --uktdd-body-bg-color-hover: rgb(105,162,249);\n --uktdd-body-color-hover: #fff;\n --uktdd-body-buffer: 10px;\n --uktdd-body-max-height: calc(100vh - var(--uktdd-body-buffer));\n --uktdd-body-max-width: calc(100vw - var(--uktdd-body-buffer));\n --uktdd-body-pad-bottom: 9px;\n --uktdd-body-pad-left: 12px;\n --uktdd-body-pad-right: 12px;\n --uktdd-body-pad-top: 9px;\n --uktdd-label-pad-right: 10px;\n}\n.uktdropdown,\n.uktdropdown-trigger {\n font-family: var(--uktdd-font-family);\n}\n.uktdropdown {\n position: relative;\n display: inline-block;\n}\n.uktdropdown.disabled {\n pointer-events: none;\n}\n.uktdropdown > * {\n cursor: default;\n}\n.uktdropdown-label {\n display: flex;\n}\n.uktdropdown-label-text {\n padding-right: var(--uktdd-label-pad-right);\n}\n.uktdropdown-body {\n box-sizing: border-box;\n position: absolute;\n top: 100%;\n max-height: var(--uktdd-body-max-height);\n min-height: 50px;\n max-width: var(--uktdd-body-max-width);\n min-width: 100%;\n overflow: auto;\n z-index: 2;\n padding: var(--uktdd-body-pad-top) var(--uktdd-body-pad-right) var(--uktdd-body-pad-bottom) var(--uktdd-body-pad-left);\n background-color: var(--uktdd-body-bg-color);\n box-shadow: 0 8px 18px rgba(0,0,0,0.25);\n}\n.uktdropdown-body.calculating-position {\n visibility: hidden;\n}\n.uktdropdown-body.out-of-bounds-bottom:not(.out-of-bounds-top) {\n top: auto;\n bottom: 100%;\n}\n.uktdropdown-body.out-of-bounds-right:not(.out-of-bounds-left) {\n left: auto;\n right: 0px;\n}\n.uktdropdown-label + .uktdropdown-body {\n left: auto;\n right: 0;\n}\n.uktdropdown-body.has-items {\n user-select: none;\n}\n.uktdropdown-body [data-ukt-active] {\n background-color: var(--uktdd-body-bg-color-hover);\n color: var(--uktdd-body-color-hover);\n}\n';
|
package/dist/styles.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC;AAC7C,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,eAAe,EAAE,CAAC;AAEnD,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,eAAe,OAAO,CAAC;AACzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,eAAe,QAAQ,CAAC;AAC3D,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,eAAe,aAAa,CAAC;AACrE,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,eAAe,UAAU,CAAC;AAE/D,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,eAAe,EAAE,CAAC;AACnD,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,gBAAgB,EAAE,CAAC;AACrD,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,qBAAqB,EAAE,CAAC;AAC/D,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,kBAAkB,EAAE,CAAC;AAEzD,MAAM,CAAC,MAAM,mBAAmB,GAAG,yBAAyB,CAAC;AAC7D,MAAM,CAAC,MAAM,kBAAkB,GAAG,wBAAwB,CAAC;AAE3D,MAAM,CAAC,MAAM,MAAM,GAAG;;yBAEG,cAAc
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC;AAC7C,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,eAAe,EAAE,CAAC;AAEnD,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,eAAe,OAAO,CAAC;AACzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,eAAe,QAAQ,CAAC;AAC3D,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,eAAe,aAAa,CAAC;AACrE,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,eAAe,UAAU,CAAC;AAE/D,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,eAAe,EAAE,CAAC;AACnD,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,gBAAgB,EAAE,CAAC;AACrD,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,qBAAqB,EAAE,CAAC;AAC/D,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,kBAAkB,EAAE,CAAC;AAEzD,MAAM,CAAC,MAAM,mBAAmB,GAAG,yBAAyB,CAAC;AAC7D,MAAM,CAAC,MAAM,kBAAkB,GAAG,wBAAwB,CAAC;AAE3D,MAAM,CAAC,MAAM,MAAM,GAAG;;yBAEG,cAAc;;;;;IAKnC,mBAAmB;IACnB,kBAAkB;;;;;;;EAOpB,aAAa;EACb,gBAAgB;;;EAGhB,aAAa;;;;EAIb,aAAa;;;EAGb,aAAa;;;EAGb,cAAc;;;EAGd,mBAAmB;;;EAGnB,aAAa;;;;oBAIK,mBAAmB;;mBAEpB,kBAAkB;;;;;;;;EAQnC,aAAa;;;EAGb,aAAa;;;;EAIb,aAAa;;;;EAIb,cAAc,MAAM,aAAa;;;;EAIjC,aAAa;;;EAGb,aAAa;;;;CAId,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@acusti/dropdown",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.35.0",
|
|
4
4
|
"description": "React component that renders a dropdown with a trigger and supports searching, keyboard access, and more",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -42,18 +42,19 @@
|
|
|
42
42
|
"@testing-library/dom": "^9.3.1",
|
|
43
43
|
"@testing-library/react": "^14.0.0",
|
|
44
44
|
"@testing-library/user-event": "^14.4.3",
|
|
45
|
-
"@types/react": "^18.
|
|
46
|
-
"
|
|
45
|
+
"@types/react": "^18.2.45",
|
|
46
|
+
"happy-dom": "^12.10.3",
|
|
47
47
|
"react": "^18",
|
|
48
48
|
"react-dom": "^18",
|
|
49
|
-
"typescript": "^5.
|
|
49
|
+
"typescript": "^5.3.3",
|
|
50
|
+
"vitest": "^1.1.0"
|
|
50
51
|
},
|
|
51
52
|
"dependencies": {
|
|
52
|
-
"@acusti/input-text": "^1.
|
|
53
|
-
"@acusti/matchmaking": "^0.
|
|
54
|
-
"@acusti/styling": "^0.
|
|
55
|
-
"@acusti/use-is-out-of-bounds": "^0.
|
|
56
|
-
"@acusti/use-keyboard-events": "^0.
|
|
53
|
+
"@acusti/input-text": "^1.3.0",
|
|
54
|
+
"@acusti/matchmaking": "^0.6.0",
|
|
55
|
+
"@acusti/styling": "^0.7.0",
|
|
56
|
+
"@acusti/use-is-out-of-bounds": "^0.9.0",
|
|
57
|
+
"@acusti/use-keyboard-events": "^0.5.0",
|
|
57
58
|
"clsx": "^2"
|
|
58
59
|
},
|
|
59
60
|
"peerDependencies": {
|
package/src/Dropdown.test.tsx
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
// @vitest-environment
|
|
2
|
-
import { cleanup, render } from '@testing-library/react';
|
|
1
|
+
// @vitest-environment happy-dom
|
|
2
|
+
import { cleanup, render, screen } from '@testing-library/react';
|
|
3
3
|
import userEvent from '@testing-library/user-event';
|
|
4
|
-
import React from 'react';
|
|
4
|
+
import React from 'react'; // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
5
5
|
import { afterEach, describe, expect, it } from 'vitest';
|
|
6
6
|
|
|
7
7
|
import Dropdown from './Dropdown.js';
|
|
8
8
|
|
|
9
9
|
afterEach(cleanup);
|
|
10
10
|
|
|
11
|
-
describe('Dropdown.js',
|
|
11
|
+
describe('Dropdown.js', () => {
|
|
12
12
|
it('renders its contents as a dropdown menu with an empty button to trigger it when it’s rendered with a single child', async () => {
|
|
13
13
|
const user = userEvent.setup();
|
|
14
|
-
|
|
14
|
+
render(
|
|
15
15
|
<Dropdown>
|
|
16
16
|
<ul data-testid="dropdown-list">
|
|
17
17
|
<li>0px</li>
|
|
@@ -28,15 +28,15 @@ describe('Dropdown.js', async () => {
|
|
|
28
28
|
</Dropdown>,
|
|
29
29
|
);
|
|
30
30
|
|
|
31
|
-
const trigger = getByRole('button');
|
|
31
|
+
const trigger = screen.getByRole('button');
|
|
32
32
|
expect(trigger.innerHTML).toBe('');
|
|
33
33
|
await user.click(trigger);
|
|
34
|
-
expect(getByTestId('dropdown-list')).toBeTruthy();
|
|
34
|
+
expect(screen.getByTestId('dropdown-list')).toBeTruthy();
|
|
35
35
|
});
|
|
36
36
|
|
|
37
37
|
it('renders the first child as a trigger and the second child as a dropdown when given two children', async () => {
|
|
38
38
|
const user = userEvent.setup();
|
|
39
|
-
|
|
39
|
+
render(
|
|
40
40
|
<Dropdown>
|
|
41
41
|
File
|
|
42
42
|
<ul data-testid="file-menu">
|
|
@@ -57,10 +57,10 @@ describe('Dropdown.js', async () => {
|
|
|
57
57
|
</Dropdown>,
|
|
58
58
|
);
|
|
59
59
|
|
|
60
|
-
const trigger = getByRole('button');
|
|
60
|
+
const trigger = screen.getByRole('button');
|
|
61
61
|
expect(trigger.innerHTML).toBe('File');
|
|
62
62
|
await user.click(trigger);
|
|
63
|
-
expect(getByTestId('file-menu')).toBeTruthy();
|
|
63
|
+
expect(screen.getByTestId('file-menu')).toBeTruthy();
|
|
64
64
|
});
|
|
65
65
|
|
|
66
66
|
it('triggers props.onClose and props.onOpen at the appropriate times', async () => {
|
|
@@ -70,7 +70,7 @@ describe('Dropdown.js', async () => {
|
|
|
70
70
|
const handleOpen = () => openedCount++;
|
|
71
71
|
|
|
72
72
|
const user = userEvent.setup();
|
|
73
|
-
|
|
73
|
+
render(
|
|
74
74
|
<Dropdown onClose={handleClose} onOpen={handleOpen}>
|
|
75
75
|
File
|
|
76
76
|
<ul data-testid="file-menu">
|
|
@@ -91,17 +91,17 @@ describe('Dropdown.js', async () => {
|
|
|
91
91
|
</Dropdown>,
|
|
92
92
|
);
|
|
93
93
|
|
|
94
|
-
const trigger = getByRole('button');
|
|
94
|
+
const trigger = screen.getByRole('button');
|
|
95
95
|
expect(closedCount).toBe(0);
|
|
96
96
|
expect(openedCount).toBe(0);
|
|
97
97
|
await user.click(trigger);
|
|
98
98
|
expect(closedCount).toBe(0);
|
|
99
99
|
expect(openedCount).toBe(1);
|
|
100
|
-
expect(
|
|
100
|
+
expect(screen.getByTestId('file-menu')).toBeTruthy();
|
|
101
101
|
await user.type(trigger, '{Esc}');
|
|
102
102
|
expect(closedCount).toBe(1);
|
|
103
103
|
expect(openedCount).toBe(1);
|
|
104
|
-
expect(queryByTestId('file-menu')).toBe(null);
|
|
104
|
+
expect(screen.queryByTestId('file-menu')).toBe(null);
|
|
105
105
|
});
|
|
106
106
|
|
|
107
107
|
it('triggers props.onOpen immediately if props.isOpenOnMount', async () => {
|
|
@@ -111,18 +111,18 @@ describe('Dropdown.js', async () => {
|
|
|
111
111
|
const handleOpen = () => openedCount++;
|
|
112
112
|
|
|
113
113
|
const user = userEvent.setup();
|
|
114
|
-
|
|
114
|
+
render(
|
|
115
115
|
<Dropdown isOpenOnMount onClose={handleClose} onOpen={handleOpen}>
|
|
116
|
-
<p data-testid="dropdown">this is the dropdown contents</p>
|
|
116
|
+
<p data-testid="dropdown-body">this is the dropdown contents</p>
|
|
117
117
|
</Dropdown>,
|
|
118
118
|
);
|
|
119
119
|
|
|
120
|
-
const trigger = getByRole('button');
|
|
121
|
-
expect(
|
|
120
|
+
const trigger = screen.getByRole('button');
|
|
121
|
+
expect(screen.getByTestId('dropdown-body')).toBeTruthy();
|
|
122
122
|
expect(openedCount).toBe(1);
|
|
123
123
|
await user.click(trigger);
|
|
124
124
|
expect(closedCount).toBe(1);
|
|
125
125
|
expect(openedCount).toBe(1);
|
|
126
|
-
expect(queryByTestId('dropdown')).toBe(null);
|
|
126
|
+
expect(screen.queryByTestId('dropdown-body')).toBe(null);
|
|
127
127
|
});
|
|
128
128
|
});
|
package/src/Dropdown.tsx
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable jsx-a11y/click-events-have-key-events, jsx-a11y/mouse-events-have-key-events, jsx-a11y/no-static-element-interactions */
|
|
1
2
|
import InputText from '@acusti/input-text';
|
|
2
3
|
import { Style } from '@acusti/styling';
|
|
3
4
|
import useIsOutOfBounds from '@acusti/use-is-out-of-bounds';
|
|
@@ -7,6 +8,12 @@ import useKeyboardEvents, {
|
|
|
7
8
|
import clsx from 'clsx';
|
|
8
9
|
import * as React from 'react';
|
|
9
10
|
|
|
11
|
+
import {
|
|
12
|
+
getActiveItemElement,
|
|
13
|
+
getItemElements,
|
|
14
|
+
ITEM_SELECTOR,
|
|
15
|
+
setActiveItem,
|
|
16
|
+
} from './helpers.js';
|
|
10
17
|
import {
|
|
11
18
|
BODY_CLASS_NAME,
|
|
12
19
|
BODY_MAX_HEIGHT_VAR,
|
|
@@ -18,12 +25,6 @@ import {
|
|
|
18
25
|
STYLES,
|
|
19
26
|
TRIGGER_CLASS_NAME,
|
|
20
27
|
} from './styles.js';
|
|
21
|
-
import {
|
|
22
|
-
getActiveItemElement,
|
|
23
|
-
getItemElements,
|
|
24
|
-
ITEM_SELECTOR,
|
|
25
|
-
setActiveItem,
|
|
26
|
-
} from './helpers.js';
|
|
27
28
|
|
|
28
29
|
type ChildrenTuple = [React.ReactNode, React.ReactNode];
|
|
29
30
|
|
|
@@ -60,6 +61,7 @@ export type Props = {
|
|
|
60
61
|
onSubmitItem?: (payload: Item) => void;
|
|
61
62
|
/** Only usable in conjunction with {isSearchable: true}; used as search input’s placeholder */
|
|
62
63
|
placeholder?: string;
|
|
64
|
+
style?: React.CSSProperties;
|
|
63
65
|
/** Only usable in conjunction with {isSearchable: true}; used as search input’s tabIndex */
|
|
64
66
|
tabIndex?: number;
|
|
65
67
|
/**
|
|
@@ -75,7 +77,7 @@ type MousePosition = { clientX: number; clientY: number };
|
|
|
75
77
|
|
|
76
78
|
const { Children, Fragment, useCallback, useEffect, useMemo, useRef, useState } = React;
|
|
77
79
|
|
|
78
|
-
const noop = () => {};
|
|
80
|
+
const noop = () => {}; // eslint-disable-line @typescript-eslint/no-empty-function
|
|
79
81
|
|
|
80
82
|
const CHILDREN_ERROR =
|
|
81
83
|
'@acusti/dropdown requires either 1 child (the dropdown body) or 2 children: the dropdown trigger and the dropdown body.';
|
|
@@ -101,6 +103,7 @@ export default function Dropdown({
|
|
|
101
103
|
onOpen,
|
|
102
104
|
onSubmitItem,
|
|
103
105
|
placeholder,
|
|
106
|
+
style: styleFromProps,
|
|
104
107
|
tabIndex,
|
|
105
108
|
value,
|
|
106
109
|
}: Props) {
|
|
@@ -117,7 +120,7 @@ export default function Dropdown({
|
|
|
117
120
|
trigger = (children as ChildrenTuple)[0];
|
|
118
121
|
}
|
|
119
122
|
const isTriggerFromProps = React.isValidElement(trigger);
|
|
120
|
-
const [isOpen, setIsOpen] = useState<boolean>(isOpenOnMount
|
|
123
|
+
const [isOpen, setIsOpen] = useState<boolean>(isOpenOnMount ?? false);
|
|
121
124
|
const [isOpening, setIsOpening] = useState<boolean>(!isOpenOnMount);
|
|
122
125
|
const [dropdownBodyElement, setDropdownBodyElement] = useState<HTMLDivElement | null>(
|
|
123
126
|
null,
|
|
@@ -133,6 +136,7 @@ export default function Dropdown({
|
|
|
133
136
|
const mouseDownPositionRef = useRef<MousePosition | null>(null);
|
|
134
137
|
const outOfBounds = useIsOutOfBounds(dropdownBodyElement);
|
|
135
138
|
|
|
139
|
+
const setDropdownOpenRef = useRef(() => setIsOpen(true));
|
|
136
140
|
const allowCreateRef = useRef(allowCreate);
|
|
137
141
|
const allowEmptyRef = useRef(allowEmpty);
|
|
138
142
|
const hasItemsRef = useRef(hasItems);
|
|
@@ -201,6 +205,7 @@ export default function Dropdown({
|
|
|
201
205
|
(event: Event | React.SyntheticEvent<HTMLElement>) => {
|
|
202
206
|
const eventTarget = event.target as HTMLElement;
|
|
203
207
|
if (isOpenRef.current && !keepOpenOnSubmitRef.current) {
|
|
208
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
204
209
|
const keepOpen = eventTarget.closest(
|
|
205
210
|
'[data-ukt-keep-open]',
|
|
206
211
|
) as HTMLElement | null;
|
|
@@ -225,7 +230,7 @@ export default function Dropdown({
|
|
|
225
230
|
if (inputElementRef.current?.value) return;
|
|
226
231
|
}
|
|
227
232
|
|
|
228
|
-
let label = element?.innerText
|
|
233
|
+
let label = element?.innerText ?? '';
|
|
229
234
|
if (inputElementRef.current) {
|
|
230
235
|
if (!element) {
|
|
231
236
|
label = inputElementRef.current.value;
|
|
@@ -282,14 +287,12 @@ export default function Dropdown({
|
|
|
282
287
|
if (!itemElements) return;
|
|
283
288
|
|
|
284
289
|
const eventTarget = event.target as HTMLElement;
|
|
290
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
285
291
|
const item = eventTarget.closest(ITEM_SELECTOR) as HTMLElement | null;
|
|
286
|
-
const element = item
|
|
287
|
-
for (
|
|
288
|
-
if (
|
|
289
|
-
setActiveItem({
|
|
290
|
-
dropdownElement,
|
|
291
|
-
element,
|
|
292
|
-
});
|
|
292
|
+
const element = item ?? eventTarget;
|
|
293
|
+
for (const itemElement of itemElements) {
|
|
294
|
+
if (itemElement === element) {
|
|
295
|
+
setActiveItem({ dropdownElement, element });
|
|
293
296
|
return;
|
|
294
297
|
}
|
|
295
298
|
}
|
|
@@ -329,8 +332,10 @@ export default function Dropdown({
|
|
|
329
332
|
const handleMouseUp = useCallback(
|
|
330
333
|
(event: React.MouseEvent<HTMLElement>) => {
|
|
331
334
|
if (onMouseUp) onMouseUp(event);
|
|
332
|
-
// If dropdown isn’t open or is
|
|
333
|
-
if (!isOpenRef.current || closingTimerRef.current)
|
|
335
|
+
// If dropdown is still opening or isn’t open or is closing, do nothing
|
|
336
|
+
if (isOpeningRef.current || !isOpenRef.current || closingTimerRef.current) {
|
|
337
|
+
return;
|
|
338
|
+
}
|
|
334
339
|
|
|
335
340
|
const eventTarget = event.target as HTMLElement;
|
|
336
341
|
// If click was outside dropdown body, don’t trigger submit
|
|
@@ -348,13 +353,7 @@ export default function Dropdown({
|
|
|
348
353
|
// If dropdown has no items and click was within dropdown body, do nothing
|
|
349
354
|
if (!hasItemsRef.current) return;
|
|
350
355
|
|
|
351
|
-
|
|
352
|
-
if (
|
|
353
|
-
!isOpeningRef.current ||
|
|
354
|
-
getActiveItemElement(dropdownElementRef.current)
|
|
355
|
-
) {
|
|
356
|
-
handleSubmitItem(event);
|
|
357
|
-
}
|
|
356
|
+
handleSubmitItem(event);
|
|
358
357
|
},
|
|
359
358
|
[closeDropdown, handleSubmitItem, onMouseUp],
|
|
360
359
|
);
|
|
@@ -620,19 +619,15 @@ export default function Dropdown({
|
|
|
620
619
|
[closeDropdown, isOpenOnMount, isTriggerFromProps],
|
|
621
620
|
);
|
|
622
621
|
|
|
623
|
-
const handleTriggerFocus = useCallback(() => {
|
|
624
|
-
setIsOpen(true);
|
|
625
|
-
}, []);
|
|
626
|
-
|
|
627
622
|
if (!isTriggerFromProps) {
|
|
628
623
|
if (isSearchable) {
|
|
629
624
|
trigger = (
|
|
630
625
|
<InputText
|
|
631
626
|
className={TRIGGER_CLASS_NAME}
|
|
632
627
|
disabled={disabled}
|
|
633
|
-
initialValue={value
|
|
628
|
+
initialValue={value ?? ''}
|
|
634
629
|
name={name}
|
|
635
|
-
onFocus={
|
|
630
|
+
onFocus={setDropdownOpenRef.current}
|
|
636
631
|
placeholder={placeholder}
|
|
637
632
|
ref={inputElementRef}
|
|
638
633
|
selectTextOnFocus
|
|
@@ -658,16 +653,21 @@ export default function Dropdown({
|
|
|
658
653
|
);
|
|
659
654
|
}
|
|
660
655
|
|
|
661
|
-
const style = useMemo<
|
|
656
|
+
const style = useMemo<React.CSSProperties>(
|
|
662
657
|
() => ({
|
|
658
|
+
...styleFromProps,
|
|
663
659
|
...(outOfBounds.maxHeight
|
|
664
|
-
? {
|
|
660
|
+
? {
|
|
661
|
+
[BODY_MAX_HEIGHT_VAR]: `calc(${outOfBounds.maxHeight}px - var(--uktdd-body-buffer))`,
|
|
662
|
+
}
|
|
665
663
|
: null),
|
|
666
664
|
...(outOfBounds.maxWidth
|
|
667
|
-
? {
|
|
665
|
+
? {
|
|
666
|
+
[BODY_MAX_WIDTH_VAR]: `calc(${outOfBounds.maxWidth}px - var(--uktdd-body-buffer))`,
|
|
667
|
+
}
|
|
668
668
|
: null),
|
|
669
669
|
}),
|
|
670
|
-
[outOfBounds.maxHeight, outOfBounds.maxWidth],
|
|
670
|
+
[outOfBounds.maxHeight, outOfBounds.maxWidth, styleFromProps],
|
|
671
671
|
);
|
|
672
672
|
|
|
673
673
|
return (
|
|
@@ -681,17 +681,12 @@ export default function Dropdown({
|
|
|
681
681
|
})}
|
|
682
682
|
onClick={onClick}
|
|
683
683
|
onMouseDown={handleMouseDown}
|
|
684
|
-
onMouseUp={handleMouseUp}
|
|
685
684
|
onMouseMove={handleMouseMove}
|
|
686
685
|
onMouseOut={handleMouseOut}
|
|
687
686
|
onMouseOver={handleMouseOver}
|
|
687
|
+
onMouseUp={handleMouseUp}
|
|
688
688
|
ref={handleRef}
|
|
689
689
|
style={style}
|
|
690
|
-
tabIndex={
|
|
691
|
-
isSearchable || inputElementRef.current || !isTriggerFromProps
|
|
692
|
-
? undefined
|
|
693
|
-
: 0
|
|
694
|
-
}
|
|
695
690
|
>
|
|
696
691
|
{trigger}
|
|
697
692
|
{isOpen ? (
|
package/src/helpers.ts
CHANGED
|
@@ -30,6 +30,7 @@ export const getItemElements = (dropdownElement: HTMLElement | null) => {
|
|
|
30
30
|
|
|
31
31
|
export const getActiveItemElement = (dropdownElement: HTMLElement | null) => {
|
|
32
32
|
if (!dropdownElement) return null;
|
|
33
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
33
34
|
return dropdownElement.querySelector('[data-ukt-active]') as HTMLElement | null;
|
|
34
35
|
};
|
|
35
36
|
|
package/src/styles.ts
CHANGED
|
@@ -22,8 +22,9 @@ export const STYLES = `
|
|
|
22
22
|
--uktdd-body-bg-color: #fff;
|
|
23
23
|
--uktdd-body-bg-color-hover: rgb(105,162,249);
|
|
24
24
|
--uktdd-body-color-hover: #fff;
|
|
25
|
-
|
|
26
|
-
${
|
|
25
|
+
--uktdd-body-buffer: 10px;
|
|
26
|
+
${BODY_MAX_HEIGHT_VAR}: calc(100vh - var(--uktdd-body-buffer));
|
|
27
|
+
${BODY_MAX_WIDTH_VAR}: calc(100vw - var(--uktdd-body-buffer));
|
|
27
28
|
--uktdd-body-pad-bottom: 9px;
|
|
28
29
|
--uktdd-body-pad-left: 12px;
|
|
29
30
|
--uktdd-body-pad-right: 12px;
|