@acusti/dropdown 0.34.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 +19 -23
- 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.flow +10 -10
- package/package.json +10 -9
- package/src/Dropdown.test.tsx +19 -19
- package/src/Dropdown.tsx +25 -30
- package/src/helpers.ts +1 -0
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
|
}
|
|
@@ -442,12 +443,9 @@ export default function Dropdown({ allowCreate, allowEmpty = true, children, cla
|
|
|
442
443
|
}
|
|
443
444
|
};
|
|
444
445
|
}, [closeDropdown, isOpenOnMount, isTriggerFromProps]);
|
|
445
|
-
const handleTriggerFocus = useCallback(() => {
|
|
446
|
-
setIsOpen(true);
|
|
447
|
-
}, []);
|
|
448
446
|
if (!isTriggerFromProps) {
|
|
449
447
|
if (isSearchable) {
|
|
450
|
-
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" }));
|
|
451
449
|
}
|
|
452
450
|
else {
|
|
453
451
|
trigger = (React.createElement("button", { className: TRIGGER_CLASS_NAME, tabIndex: 0 }, trigger));
|
|
@@ -458,7 +456,7 @@ export default function Dropdown({ allowCreate, allowEmpty = true, children, cla
|
|
|
458
456
|
React.createElement("div", { className: LABEL_TEXT_CLASS_NAME }, label),
|
|
459
457
|
trigger));
|
|
460
458
|
}
|
|
461
|
-
const style = useMemo(() => (Object.assign(Object.assign({}, (outOfBounds.maxHeight
|
|
459
|
+
const style = useMemo(() => (Object.assign(Object.assign(Object.assign({}, styleFromProps), (outOfBounds.maxHeight
|
|
462
460
|
? {
|
|
463
461
|
[BODY_MAX_HEIGHT_VAR]: `calc(${outOfBounds.maxHeight}px - var(--uktdd-body-buffer))`,
|
|
464
462
|
}
|
|
@@ -466,16 +464,14 @@ export default function Dropdown({ allowCreate, allowEmpty = true, children, cla
|
|
|
466
464
|
? {
|
|
467
465
|
[BODY_MAX_WIDTH_VAR]: `calc(${outOfBounds.maxWidth}px - var(--uktdd-body-buffer))`,
|
|
468
466
|
}
|
|
469
|
-
: null))), [outOfBounds.maxHeight, outOfBounds.maxWidth]);
|
|
467
|
+
: null))), [outOfBounds.maxHeight, outOfBounds.maxWidth, styleFromProps]);
|
|
470
468
|
return (React.createElement(Fragment, null,
|
|
471
469
|
React.createElement(Style, null, STYLES),
|
|
472
470
|
React.createElement("div", { className: clsx(ROOT_CLASS_NAME, className, {
|
|
473
471
|
disabled,
|
|
474
472
|
'is-open': isOpen,
|
|
475
473
|
'is-searchable': isSearchable,
|
|
476
|
-
}), onClick: onClick, onMouseDown: handleMouseDown,
|
|
477
|
-
? undefined
|
|
478
|
-
: 0 },
|
|
474
|
+
}), onClick: onClick, onMouseDown: handleMouseDown, onMouseMove: handleMouseMove, onMouseOut: handleMouseOut, onMouseOver: handleMouseOver, onMouseUp: handleMouseUp, ref: handleRef, style: style },
|
|
479
475
|
trigger,
|
|
480
476
|
isOpen ? (React.createElement("div", { className: clsx(BODY_CLASS_NAME, {
|
|
481
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.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/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
|
}
|
|
@@ -616,19 +619,15 @@ export default function Dropdown({
|
|
|
616
619
|
[closeDropdown, isOpenOnMount, isTriggerFromProps],
|
|
617
620
|
);
|
|
618
621
|
|
|
619
|
-
const handleTriggerFocus = useCallback(() => {
|
|
620
|
-
setIsOpen(true);
|
|
621
|
-
}, []);
|
|
622
|
-
|
|
623
622
|
if (!isTriggerFromProps) {
|
|
624
623
|
if (isSearchable) {
|
|
625
624
|
trigger = (
|
|
626
625
|
<InputText
|
|
627
626
|
className={TRIGGER_CLASS_NAME}
|
|
628
627
|
disabled={disabled}
|
|
629
|
-
initialValue={value
|
|
628
|
+
initialValue={value ?? ''}
|
|
630
629
|
name={name}
|
|
631
|
-
onFocus={
|
|
630
|
+
onFocus={setDropdownOpenRef.current}
|
|
632
631
|
placeholder={placeholder}
|
|
633
632
|
ref={inputElementRef}
|
|
634
633
|
selectTextOnFocus
|
|
@@ -654,8 +653,9 @@ export default function Dropdown({
|
|
|
654
653
|
);
|
|
655
654
|
}
|
|
656
655
|
|
|
657
|
-
const style = useMemo<
|
|
656
|
+
const style = useMemo<React.CSSProperties>(
|
|
658
657
|
() => ({
|
|
658
|
+
...styleFromProps,
|
|
659
659
|
...(outOfBounds.maxHeight
|
|
660
660
|
? {
|
|
661
661
|
[BODY_MAX_HEIGHT_VAR]: `calc(${outOfBounds.maxHeight}px - var(--uktdd-body-buffer))`,
|
|
@@ -667,7 +667,7 @@ export default function Dropdown({
|
|
|
667
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
|
|