@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.
@@ -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 || false);
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 = (_b = element === null || element === void 0 ? void 0 : element.dataset.uktValue) !== null && _b !== void 0 ? _b : label;
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 || eventTarget;
169
- for (let index = 0; index < itemElements.length; index++) {
170
- if (itemElements[index] === element) {
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 already closing, do nothing
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
- // If still isOpening, only trigger submit with an active element
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 || '', name: name, onFocus: handleTriggerFocus, placeholder: placeholder, ref: inputElementRef, selectTextOnFocus: true, tabIndex: tabIndex, type: "text" }));
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
- ? { [BODY_MAX_HEIGHT_VAR]: `${outOfBounds.maxHeight}px` }
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
- ? { [BODY_MAX_WIDTH_VAR]: `${outOfBounds.maxWidth}px` }
468
- : null))), [outOfBounds.maxHeight, outOfBounds.maxWidth]);
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, onMouseUp: handleMouseUp, onMouseMove: handleMouseMove, onMouseOut: handleMouseOut, onMouseOver: handleMouseOver, ref: handleRef, style: style, tabIndex: isSearchable || inputElementRef.current || !isTriggerFromProps
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,
@@ -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$Node;
72
+ declare export default function Dropdown(x: Props): React.JSX.Element;
@@ -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,6 @@
1
+ /**
2
+ * Flowtype definitions for Dropdown.test
3
+ * Generated by Flowgen from a Typescript Definition
4
+ * Flowgen v1.20.1
5
+ * @flow
6
+ */
@@ -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) => {
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"}
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: string;
3
- export declare const BODY_CLASS_NAME: string;
4
- export declare const LABEL_CLASS_NAME: string;
5
- export declare const LABEL_TEXT_CLASS_NAME: string;
6
- export declare const TRIGGER_CLASS_NAME: string;
7
- export declare const BODY_SELECTOR: string;
8
- export declare const LABEL_SELECTOR: string;
9
- export declare const LABEL_TEXT_SELECTOR: string;
10
- export declare const TRIGGER_SELECTOR: string;
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: string;
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
- ${BODY_MAX_HEIGHT_VAR}: calc(100vh - 30px);
21
- ${BODY_MAX_WIDTH_VAR}: calc(100vw - 30px);
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;
@@ -6,15 +6,15 @@
6
6
  */
7
7
 
8
8
  declare export var ROOT_CLASS_NAME: "uktdropdown";
9
- declare export var ROOT_SELECTOR: string;
10
- declare export var BODY_CLASS_NAME: string;
11
- declare export var LABEL_CLASS_NAME: string;
12
- declare export var LABEL_TEXT_CLASS_NAME: string;
13
- declare export var TRIGGER_CLASS_NAME: string;
14
- declare export var BODY_SELECTOR: string;
15
- declare export var LABEL_SELECTOR: string;
16
- declare export var LABEL_TEXT_SELECTOR: string;
17
- declare export var TRIGGER_SELECTOR: string;
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: string;
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';
@@ -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;;;;IAInC,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"}
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.33.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.0.25",
46
- "jsdom": "^22.1.0",
45
+ "@types/react": "^18.2.45",
46
+ "happy-dom": "^12.10.3",
47
47
  "react": "^18",
48
48
  "react-dom": "^18",
49
- "typescript": "^5.1.6"
49
+ "typescript": "^5.3.3",
50
+ "vitest": "^1.1.0"
50
51
  },
51
52
  "dependencies": {
52
- "@acusti/input-text": "^1.2.1",
53
- "@acusti/matchmaking": "^0.5.1",
54
- "@acusti/styling": "^0.6.0",
55
- "@acusti/use-is-out-of-bounds": "^0.7.0",
56
- "@acusti/use-keyboard-events": "^0.4.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": {
@@ -1,17 +1,17 @@
1
- // @vitest-environment jsdom
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', async () => {
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
- const { getByRole, getByTestId } = render(
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
- const { getByRole, getByTestId } = render(
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
- const { getByRole, queryByTestId } = render(
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(queryByTestId('file-menu')).toBeTruthy();
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
- const { getByRole, queryByTestId } = render(
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(queryByTestId('dropdown')).toBeTruthy();
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 || false);
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 || eventTarget;
287
- for (let index = 0; index < itemElements.length; index++) {
288
- if (itemElements[index] === element) {
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 already closing, do nothing
333
- if (!isOpenRef.current || closingTimerRef.current) return;
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
- // If still isOpening, only trigger submit with an active element
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={handleTriggerFocus}
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<{ [key: string]: string }>(
656
+ const style = useMemo<React.CSSProperties>(
662
657
  () => ({
658
+ ...styleFromProps,
663
659
  ...(outOfBounds.maxHeight
664
- ? { [BODY_MAX_HEIGHT_VAR]: `${outOfBounds.maxHeight}px` }
660
+ ? {
661
+ [BODY_MAX_HEIGHT_VAR]: `calc(${outOfBounds.maxHeight}px - var(--uktdd-body-buffer))`,
662
+ }
665
663
  : null),
666
664
  ...(outOfBounds.maxWidth
667
- ? { [BODY_MAX_WIDTH_VAR]: `${outOfBounds.maxWidth}px` }
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
- ${BODY_MAX_HEIGHT_VAR}: calc(100vh - 30px);
26
- ${BODY_MAX_WIDTH_VAR}: calc(100vw - 30px);
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;