@acusti/dropdown 0.49.0 → 0.50.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 +9 -9
- package/dist/Dropdown.js +142 -166
- package/dist/Dropdown.js.map +1 -1
- package/package.json +2 -2
package/dist/Dropdown.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { CSSProperties, JSX, MouseEvent as ReactMouseEvent, ReactNode, SyntheticEvent } from 'react';
|
|
2
2
|
export type Item = {
|
|
3
3
|
element: MaybeHTMLElement;
|
|
4
|
-
event: Event |
|
|
4
|
+
event: Event | SyntheticEvent<HTMLElement>;
|
|
5
5
|
label: string;
|
|
6
6
|
value: string;
|
|
7
7
|
};
|
|
@@ -19,7 +19,7 @@ export type Props = {
|
|
|
19
19
|
/**
|
|
20
20
|
* Can take a single React element or exactly two renderable children.
|
|
21
21
|
*/
|
|
22
|
-
children: ChildrenTuple |
|
|
22
|
+
children: ChildrenTuple | JSX.Element;
|
|
23
23
|
className?: string;
|
|
24
24
|
disabled?: boolean;
|
|
25
25
|
/**
|
|
@@ -39,10 +39,10 @@ export type Props = {
|
|
|
39
39
|
* Used as search input’s name.
|
|
40
40
|
*/
|
|
41
41
|
name?: string;
|
|
42
|
-
onClick?: (event:
|
|
42
|
+
onClick?: (event: ReactMouseEvent<HTMLElement>) => unknown;
|
|
43
43
|
onClose?: () => unknown;
|
|
44
|
-
onMouseDown?: (event:
|
|
45
|
-
onMouseUp?: (event:
|
|
44
|
+
onMouseDown?: (event: ReactMouseEvent<HTMLElement>) => unknown;
|
|
45
|
+
onMouseUp?: (event: ReactMouseEvent<HTMLElement>) => unknown;
|
|
46
46
|
onOpen?: () => unknown;
|
|
47
47
|
onSubmitItem?: (payload: Item) => void;
|
|
48
48
|
/**
|
|
@@ -50,7 +50,7 @@ export type Props = {
|
|
|
50
50
|
* Used as search input’s placeholder.
|
|
51
51
|
*/
|
|
52
52
|
placeholder?: string;
|
|
53
|
-
style?:
|
|
53
|
+
style?: CSSProperties;
|
|
54
54
|
/**
|
|
55
55
|
* Only usable in conjunction with {isSearchable: true}.
|
|
56
56
|
* Used as search input’s tabIndex.
|
|
@@ -62,7 +62,7 @@ export type Props = {
|
|
|
62
62
|
*/
|
|
63
63
|
value?: string;
|
|
64
64
|
};
|
|
65
|
-
type ChildrenTuple = [
|
|
65
|
+
type ChildrenTuple = [ReactNode, ReactNode] | readonly [ReactNode, ReactNode];
|
|
66
66
|
type MaybeHTMLElement = HTMLElement | null;
|
|
67
|
-
export default function Dropdown({ allowCreate, allowEmpty, children, className, disabled, hasItems, isOpenOnMount, isSearchable, keepOpenOnSubmit, label, minHeightBody, minWidthBody, name, onClick, onClose, onMouseDown, onMouseUp, onOpen, onSubmitItem, placeholder, style: styleFromProps, tabIndex, value, }: Props):
|
|
67
|
+
export default function Dropdown({ allowCreate, allowEmpty, children, className, disabled, hasItems, isOpenOnMount, isSearchable, keepOpenOnSubmit, label, minHeightBody, minWidthBody, name, onClick, onClose, onMouseDown, onMouseUp, onOpen, onSubmitItem, placeholder, style: styleFromProps, tabIndex, value, }: Props): import("react/jsx-runtime").JSX.Element;
|
|
68
68
|
export {};
|
package/dist/Dropdown.js
CHANGED
|
@@ -4,7 +4,7 @@ import { SYSTEM_UI_FONT, Style } from "@acusti/styling";
|
|
|
4
4
|
import useBoundingClientRect from "@acusti/use-bounding-client-rect";
|
|
5
5
|
import useKeyboardEvents, { isEventTargetUsingKeyEvent } from "@acusti/use-keyboard-events";
|
|
6
6
|
import clsx from "clsx";
|
|
7
|
-
import
|
|
7
|
+
import { Children, isValidElement, useState, useRef, useEffect, Fragment } from "react";
|
|
8
8
|
import { getBestMatch } from "@acusti/matchmaking";
|
|
9
9
|
const ROOT_CLASS_NAME = "uktdropdown";
|
|
10
10
|
const ROOT_SELECTOR = `.${ROOT_CLASS_NAME}`;
|
|
@@ -212,20 +212,13 @@ const setActiveItem = ({
|
|
|
212
212
|
}
|
|
213
213
|
}
|
|
214
214
|
};
|
|
215
|
-
const {
|
|
216
|
-
Children,
|
|
217
|
-
Fragment,
|
|
218
|
-
useEffect,
|
|
219
|
-
useRef,
|
|
220
|
-
useState
|
|
221
|
-
} = React;
|
|
222
215
|
const noop = () => {
|
|
223
216
|
};
|
|
224
217
|
const CHILDREN_ERROR = "@acusti/dropdown requires either 1 child (the dropdown body) or 2 children: the dropdown trigger and the dropdown body.";
|
|
225
218
|
const TEXT_INPUT_SELECTOR = "input:not([type=radio]):not([type=checkbox]):not([type=range]),textarea";
|
|
226
219
|
let idCounter = 0;
|
|
227
220
|
function Dropdown(t0) {
|
|
228
|
-
const $ = c(
|
|
221
|
+
const $ = c(102);
|
|
229
222
|
const {
|
|
230
223
|
allowCreate,
|
|
231
224
|
allowEmpty: t1,
|
|
@@ -269,7 +262,7 @@ function Dropdown(t0) {
|
|
|
269
262
|
}
|
|
270
263
|
let t6;
|
|
271
264
|
if ($[0] !== trigger) {
|
|
272
|
-
t6 =
|
|
265
|
+
t6 = isValidElement(trigger);
|
|
273
266
|
$[0] = trigger;
|
|
274
267
|
$[1] = t6;
|
|
275
268
|
} else {
|
|
@@ -361,7 +354,7 @@ function Dropdown(t0) {
|
|
|
361
354
|
}
|
|
362
355
|
useEffect(t9, t10);
|
|
363
356
|
let t11;
|
|
364
|
-
if ($[17]
|
|
357
|
+
if ($[17] === Symbol.for("react.memo_cache_sentinel")) {
|
|
365
358
|
t11 = () => {
|
|
366
359
|
setIsOpen(false);
|
|
367
360
|
setIsOpening(false);
|
|
@@ -371,15 +364,13 @@ function Dropdown(t0) {
|
|
|
371
364
|
closingTimerRef.current = null;
|
|
372
365
|
}
|
|
373
366
|
};
|
|
374
|
-
$[17] =
|
|
375
|
-
$[18] = setIsOpening;
|
|
376
|
-
$[19] = t11;
|
|
367
|
+
$[17] = t11;
|
|
377
368
|
} else {
|
|
378
|
-
t11 = $[
|
|
369
|
+
t11 = $[17];
|
|
379
370
|
}
|
|
380
371
|
const closeDropdown = t11;
|
|
381
372
|
let t12;
|
|
382
|
-
if ($[
|
|
373
|
+
if ($[18] !== dropdownElement) {
|
|
383
374
|
t12 = (event) => {
|
|
384
375
|
var _a;
|
|
385
376
|
if (isOpenRef.current && !keepOpenOnSubmitRef.current) {
|
|
@@ -421,15 +412,14 @@ function Dropdown(t0) {
|
|
|
421
412
|
});
|
|
422
413
|
}
|
|
423
414
|
};
|
|
424
|
-
$[
|
|
425
|
-
$[
|
|
426
|
-
$[22] = t12;
|
|
415
|
+
$[18] = dropdownElement;
|
|
416
|
+
$[19] = t12;
|
|
427
417
|
} else {
|
|
428
|
-
t12 = $[
|
|
418
|
+
t12 = $[19];
|
|
429
419
|
}
|
|
430
420
|
const handleSubmitItem = t12;
|
|
431
421
|
let t13;
|
|
432
|
-
if ($[
|
|
422
|
+
if ($[20] === Symbol.for("react.memo_cache_sentinel")) {
|
|
433
423
|
t13 = (t142) => {
|
|
434
424
|
const {
|
|
435
425
|
clientX,
|
|
@@ -445,14 +435,13 @@ function Dropdown(t0) {
|
|
|
445
435
|
}
|
|
446
436
|
setIsOpening(false);
|
|
447
437
|
};
|
|
448
|
-
$[
|
|
449
|
-
$[24] = t13;
|
|
438
|
+
$[20] = t13;
|
|
450
439
|
} else {
|
|
451
|
-
t13 = $[
|
|
440
|
+
t13 = $[20];
|
|
452
441
|
}
|
|
453
442
|
const handleMouseMove = t13;
|
|
454
443
|
let t14;
|
|
455
|
-
if ($[
|
|
444
|
+
if ($[21] !== dropdownElement) {
|
|
456
445
|
t14 = (event_0) => {
|
|
457
446
|
if (!hasItemsRef.current) {
|
|
458
447
|
return;
|
|
@@ -480,14 +469,14 @@ function Dropdown(t0) {
|
|
|
480
469
|
}
|
|
481
470
|
}
|
|
482
471
|
};
|
|
483
|
-
$[
|
|
484
|
-
$[
|
|
472
|
+
$[21] = dropdownElement;
|
|
473
|
+
$[22] = t14;
|
|
485
474
|
} else {
|
|
486
|
-
t14 = $[
|
|
475
|
+
t14 = $[22];
|
|
487
476
|
}
|
|
488
477
|
const handleMouseOver = t14;
|
|
489
478
|
let t15;
|
|
490
|
-
if ($[
|
|
479
|
+
if ($[23] !== dropdownElement) {
|
|
491
480
|
t15 = (event_1) => {
|
|
492
481
|
if (!hasItemsRef.current) {
|
|
493
482
|
return;
|
|
@@ -502,14 +491,14 @@ function Dropdown(t0) {
|
|
|
502
491
|
}
|
|
503
492
|
delete activeItem.dataset.uktActive;
|
|
504
493
|
};
|
|
505
|
-
$[
|
|
506
|
-
$[
|
|
494
|
+
$[23] = dropdownElement;
|
|
495
|
+
$[24] = t15;
|
|
507
496
|
} else {
|
|
508
|
-
t15 = $[
|
|
497
|
+
t15 = $[24];
|
|
509
498
|
}
|
|
510
499
|
const handleMouseOut = t15;
|
|
511
500
|
let t16;
|
|
512
|
-
if ($[
|
|
501
|
+
if ($[25] !== onMouseDown) {
|
|
513
502
|
t16 = (event_2) => {
|
|
514
503
|
if (onMouseDown) {
|
|
515
504
|
onMouseDown(event_2);
|
|
@@ -528,16 +517,14 @@ function Dropdown(t0) {
|
|
|
528
517
|
isOpeningTimerRef.current = null;
|
|
529
518
|
}, 1e3);
|
|
530
519
|
};
|
|
531
|
-
$[
|
|
532
|
-
$[
|
|
533
|
-
$[31] = setIsOpening;
|
|
534
|
-
$[32] = t16;
|
|
520
|
+
$[25] = onMouseDown;
|
|
521
|
+
$[26] = t16;
|
|
535
522
|
} else {
|
|
536
|
-
t16 = $[
|
|
523
|
+
t16 = $[26];
|
|
537
524
|
}
|
|
538
525
|
const handleMouseDown = t16;
|
|
539
526
|
let t17;
|
|
540
|
-
if ($[
|
|
527
|
+
if ($[27] !== handleSubmitItem || $[28] !== onMouseUp) {
|
|
541
528
|
t17 = (event_3) => {
|
|
542
529
|
if (onMouseUp) {
|
|
543
530
|
onMouseUp(event_3);
|
|
@@ -557,16 +544,15 @@ function Dropdown(t0) {
|
|
|
557
544
|
}
|
|
558
545
|
handleSubmitItem(event_3);
|
|
559
546
|
};
|
|
560
|
-
$[
|
|
561
|
-
$[
|
|
562
|
-
$[
|
|
563
|
-
$[36] = t17;
|
|
547
|
+
$[27] = handleSubmitItem;
|
|
548
|
+
$[28] = onMouseUp;
|
|
549
|
+
$[29] = t17;
|
|
564
550
|
} else {
|
|
565
|
-
t17 = $[
|
|
551
|
+
t17 = $[29];
|
|
566
552
|
}
|
|
567
553
|
const handleMouseUp = t17;
|
|
568
554
|
let t18;
|
|
569
|
-
if ($[
|
|
555
|
+
if ($[30] !== dropdownElement || $[31] !== handleSubmitItem) {
|
|
570
556
|
t18 = (event_4) => {
|
|
571
557
|
const {
|
|
572
558
|
altKey,
|
|
@@ -666,30 +652,28 @@ function Dropdown(t0) {
|
|
|
666
652
|
}
|
|
667
653
|
}
|
|
668
654
|
};
|
|
669
|
-
$[
|
|
670
|
-
$[
|
|
671
|
-
$[
|
|
672
|
-
$[40] = setIsOpen;
|
|
673
|
-
$[41] = t18;
|
|
655
|
+
$[30] = dropdownElement;
|
|
656
|
+
$[31] = handleSubmitItem;
|
|
657
|
+
$[32] = t18;
|
|
674
658
|
} else {
|
|
675
|
-
t18 = $[
|
|
659
|
+
t18 = $[32];
|
|
676
660
|
}
|
|
677
661
|
const handleKeyDown = t18;
|
|
678
662
|
let t19;
|
|
679
|
-
if ($[
|
|
663
|
+
if ($[33] !== handleKeyDown) {
|
|
680
664
|
t19 = {
|
|
681
665
|
ignoreUsedKeyboardEvents: false,
|
|
682
666
|
onKeyDown: handleKeyDown
|
|
683
667
|
};
|
|
684
|
-
$[
|
|
685
|
-
$[
|
|
668
|
+
$[33] = handleKeyDown;
|
|
669
|
+
$[34] = t19;
|
|
686
670
|
} else {
|
|
687
|
-
t19 = $[
|
|
671
|
+
t19 = $[34];
|
|
688
672
|
}
|
|
689
673
|
useKeyboardEvents(t19);
|
|
690
674
|
const cleanupEventListenersRef = useRef(noop);
|
|
691
675
|
let t20;
|
|
692
|
-
if ($[
|
|
676
|
+
if ($[35] !== isOpenOnMount || $[36] !== isTriggerFromProps) {
|
|
693
677
|
t20 = (ref) => {
|
|
694
678
|
setDropdownElement(ref);
|
|
695
679
|
if (!ref) {
|
|
@@ -795,86 +779,80 @@ function Dropdown(t0) {
|
|
|
795
779
|
}
|
|
796
780
|
};
|
|
797
781
|
};
|
|
798
|
-
$[
|
|
799
|
-
$[
|
|
800
|
-
$[
|
|
801
|
-
$[47] = setDropdownElement;
|
|
802
|
-
$[48] = setIsOpen;
|
|
803
|
-
$[49] = setIsOpening;
|
|
804
|
-
$[50] = t20;
|
|
782
|
+
$[35] = isOpenOnMount;
|
|
783
|
+
$[36] = isTriggerFromProps;
|
|
784
|
+
$[37] = t20;
|
|
805
785
|
} else {
|
|
806
|
-
t20 = $[
|
|
786
|
+
t20 = $[37];
|
|
807
787
|
}
|
|
808
788
|
const handleRef = t20;
|
|
809
789
|
if (!isTriggerFromProps) {
|
|
810
790
|
if (isSearchable) {
|
|
811
791
|
const t212 = value ?? "";
|
|
812
792
|
let t222;
|
|
813
|
-
if ($[
|
|
793
|
+
if ($[38] === Symbol.for("react.memo_cache_sentinel")) {
|
|
814
794
|
t222 = () => setIsOpen(true);
|
|
815
|
-
$[
|
|
816
|
-
$[52] = t222;
|
|
795
|
+
$[38] = t222;
|
|
817
796
|
} else {
|
|
818
|
-
t222 = $[
|
|
797
|
+
t222 = $[38];
|
|
819
798
|
}
|
|
820
799
|
let t232;
|
|
821
|
-
if ($[
|
|
800
|
+
if ($[39] !== disabled || $[40] !== name || $[41] !== placeholder || $[42] !== t212 || $[43] !== tabIndex) {
|
|
822
801
|
t232 = /* @__PURE__ */ jsx("input", { autoComplete: "off", className: TRIGGER_CLASS_NAME, defaultValue: t212, disabled, name, onFocus: t222, placeholder, ref: inputElementRef, tabIndex, type: "text" });
|
|
823
|
-
$[
|
|
824
|
-
$[
|
|
825
|
-
$[
|
|
826
|
-
$[
|
|
827
|
-
$[
|
|
828
|
-
$[
|
|
829
|
-
$[59] = t232;
|
|
802
|
+
$[39] = disabled;
|
|
803
|
+
$[40] = name;
|
|
804
|
+
$[41] = placeholder;
|
|
805
|
+
$[42] = t212;
|
|
806
|
+
$[43] = tabIndex;
|
|
807
|
+
$[44] = t232;
|
|
830
808
|
} else {
|
|
831
|
-
t232 = $[
|
|
809
|
+
t232 = $[44];
|
|
832
810
|
}
|
|
833
811
|
trigger = t232;
|
|
834
812
|
} else {
|
|
835
813
|
let t212;
|
|
836
|
-
if ($[
|
|
814
|
+
if ($[45] !== trigger) {
|
|
837
815
|
t212 = /* @__PURE__ */ jsx("button", { className: TRIGGER_CLASS_NAME, tabIndex: 0, children: trigger });
|
|
838
|
-
$[
|
|
839
|
-
$[
|
|
816
|
+
$[45] = trigger;
|
|
817
|
+
$[46] = t212;
|
|
840
818
|
} else {
|
|
841
|
-
t212 = $[
|
|
819
|
+
t212 = $[46];
|
|
842
820
|
}
|
|
843
821
|
trigger = t212;
|
|
844
822
|
}
|
|
845
823
|
}
|
|
846
824
|
if (label) {
|
|
847
825
|
let t212;
|
|
848
|
-
if ($[
|
|
826
|
+
if ($[47] !== label) {
|
|
849
827
|
t212 = /* @__PURE__ */ jsx("div", { className: LABEL_TEXT_CLASS_NAME, children: label });
|
|
850
|
-
$[
|
|
851
|
-
$[
|
|
828
|
+
$[47] = label;
|
|
829
|
+
$[48] = t212;
|
|
852
830
|
} else {
|
|
853
|
-
t212 = $[
|
|
831
|
+
t212 = $[48];
|
|
854
832
|
}
|
|
855
833
|
let t222;
|
|
856
|
-
if ($[
|
|
834
|
+
if ($[49] !== t212 || $[50] !== trigger) {
|
|
857
835
|
t222 = /* @__PURE__ */ jsxs("label", { className: LABEL_CLASS_NAME, children: [
|
|
858
836
|
t212,
|
|
859
837
|
trigger
|
|
860
838
|
] });
|
|
861
|
-
$[
|
|
862
|
-
$[
|
|
863
|
-
$[
|
|
839
|
+
$[49] = t212;
|
|
840
|
+
$[50] = trigger;
|
|
841
|
+
$[51] = t222;
|
|
864
842
|
} else {
|
|
865
|
-
t222 = $[
|
|
843
|
+
t222 = $[51];
|
|
866
844
|
}
|
|
867
845
|
trigger = t222;
|
|
868
846
|
}
|
|
869
847
|
const dropdownRect = useBoundingClientRect(dropdownElement);
|
|
870
848
|
const dropdownBodyRect = useBoundingClientRect(dropdownBodyElement);
|
|
871
849
|
let t21;
|
|
872
|
-
if ($[
|
|
850
|
+
if ($[52] !== dropdownBodyElement) {
|
|
873
851
|
t21 = getBoundingAncestor(dropdownBodyElement);
|
|
874
|
-
$[
|
|
875
|
-
$[
|
|
852
|
+
$[52] = dropdownBodyElement;
|
|
853
|
+
$[53] = t21;
|
|
876
854
|
} else {
|
|
877
|
-
t21 = $[
|
|
855
|
+
t21 = $[53];
|
|
878
856
|
}
|
|
879
857
|
const boundingElement = t21;
|
|
880
858
|
const boundingElementRect = useBoundingClientRect(boundingElement);
|
|
@@ -884,67 +862,67 @@ function Dropdown(t0) {
|
|
|
884
862
|
const maxHeightUp = dropdownBodyRect.bottom - boundingElementRect.top;
|
|
885
863
|
const maxHeightDown = boundingElementRect.bottom - dropdownBodyRect.top;
|
|
886
864
|
let t222;
|
|
887
|
-
if ($[
|
|
865
|
+
if ($[54] !== dropdownBodyRect.top || $[55] !== dropdownRect.top || $[56] !== maxHeightDown || $[57] !== maxHeightUp) {
|
|
888
866
|
t222 = Math.round(dropdownBodyRect.top > dropdownRect.top ? maxHeightDown : maxHeightUp);
|
|
889
|
-
$[
|
|
890
|
-
$[
|
|
891
|
-
$[
|
|
892
|
-
$[
|
|
893
|
-
$[
|
|
867
|
+
$[54] = dropdownBodyRect.top;
|
|
868
|
+
$[55] = dropdownRect.top;
|
|
869
|
+
$[56] = maxHeightDown;
|
|
870
|
+
$[57] = maxHeightUp;
|
|
871
|
+
$[58] = t222;
|
|
894
872
|
} else {
|
|
895
|
-
t222 = $[
|
|
873
|
+
t222 = $[58];
|
|
896
874
|
}
|
|
897
875
|
maxHeight = t222;
|
|
898
876
|
const maxWidthLeft = dropdownBodyRect.right - boundingElementRect.left;
|
|
899
877
|
const maxWidthRight = boundingElementRect.right - dropdownBodyRect.left;
|
|
900
878
|
let t232;
|
|
901
|
-
if ($[
|
|
879
|
+
if ($[59] !== dropdownBodyRect.left || $[60] !== dropdownRect.left || $[61] !== maxWidthLeft || $[62] !== maxWidthRight) {
|
|
902
880
|
t232 = Math.round(dropdownBodyRect.left > dropdownRect.left ? maxWidthRight : maxWidthLeft);
|
|
903
|
-
$[
|
|
904
|
-
$[
|
|
905
|
-
$[
|
|
906
|
-
$[
|
|
907
|
-
$[
|
|
881
|
+
$[59] = dropdownBodyRect.left;
|
|
882
|
+
$[60] = dropdownRect.left;
|
|
883
|
+
$[61] = maxWidthLeft;
|
|
884
|
+
$[62] = maxWidthRight;
|
|
885
|
+
$[63] = t232;
|
|
908
886
|
} else {
|
|
909
|
-
t232 = $[
|
|
887
|
+
t232 = $[63];
|
|
910
888
|
}
|
|
911
889
|
maxWidth = t232;
|
|
912
890
|
}
|
|
913
891
|
let t22;
|
|
914
|
-
if ($[
|
|
892
|
+
if ($[64] !== maxHeight || $[65] !== minHeightBody) {
|
|
915
893
|
t22 = maxHeight != null && maxHeight > minHeightBody ? {
|
|
916
894
|
[BODY_MAX_HEIGHT_VAR]: `calc(${maxHeight}px - var(--uktdd-body-buffer))`
|
|
917
895
|
} : null;
|
|
918
|
-
$[
|
|
919
|
-
$[
|
|
920
|
-
$[
|
|
896
|
+
$[64] = maxHeight;
|
|
897
|
+
$[65] = minHeightBody;
|
|
898
|
+
$[66] = t22;
|
|
921
899
|
} else {
|
|
922
|
-
t22 = $[
|
|
900
|
+
t22 = $[66];
|
|
923
901
|
}
|
|
924
902
|
let t23;
|
|
925
|
-
if ($[
|
|
903
|
+
if ($[67] !== maxWidth || $[68] !== minWidthBody) {
|
|
926
904
|
t23 = maxWidth != null && maxWidth > minWidthBody ? {
|
|
927
905
|
[BODY_MAX_WIDTH_VAR]: `calc(${maxWidth}px - var(--uktdd-body-buffer))`
|
|
928
906
|
} : null;
|
|
929
|
-
$[
|
|
930
|
-
$[
|
|
931
|
-
$[
|
|
907
|
+
$[67] = maxWidth;
|
|
908
|
+
$[68] = minWidthBody;
|
|
909
|
+
$[69] = t23;
|
|
932
910
|
} else {
|
|
933
|
-
t23 = $[
|
|
911
|
+
t23 = $[69];
|
|
934
912
|
}
|
|
935
913
|
let t24;
|
|
936
|
-
if ($[
|
|
914
|
+
if ($[70] !== styleFromProps || $[71] !== t22 || $[72] !== t23) {
|
|
937
915
|
t24 = {
|
|
938
916
|
...styleFromProps,
|
|
939
917
|
...t22,
|
|
940
918
|
...t23
|
|
941
919
|
};
|
|
942
|
-
$[
|
|
943
|
-
$[
|
|
944
|
-
$[
|
|
945
|
-
$[
|
|
920
|
+
$[70] = styleFromProps;
|
|
921
|
+
$[71] = t22;
|
|
922
|
+
$[72] = t23;
|
|
923
|
+
$[73] = t24;
|
|
946
924
|
} else {
|
|
947
|
-
t24 = $[
|
|
925
|
+
t24 = $[73];
|
|
948
926
|
}
|
|
949
927
|
const style = t24;
|
|
950
928
|
const anchorStyles = `[data-ukt-id="${id}"] > :first-child {
|
|
@@ -954,82 +932,80 @@ function Dropdown(t0) {
|
|
|
954
932
|
position-anchor: --uktdd-anchor${id};
|
|
955
933
|
}`;
|
|
956
934
|
let t25;
|
|
957
|
-
if ($[
|
|
935
|
+
if ($[74] === Symbol.for("react.memo_cache_sentinel")) {
|
|
958
936
|
t25 = /* @__PURE__ */ jsx(Style, { href: "@acusti/dropdown/Dropdown", children: STYLES });
|
|
959
|
-
$[
|
|
937
|
+
$[74] = t25;
|
|
960
938
|
} else {
|
|
961
|
-
t25 = $[
|
|
939
|
+
t25 = $[74];
|
|
962
940
|
}
|
|
963
941
|
const t26 = `@acusti/dropdown/Dropdown/${id}`;
|
|
964
942
|
let t27;
|
|
965
|
-
if ($[
|
|
943
|
+
if ($[75] !== anchorStyles || $[76] !== t26) {
|
|
966
944
|
t27 = /* @__PURE__ */ jsx(Style, { href: t26, children: anchorStyles });
|
|
967
|
-
$[
|
|
968
|
-
$[
|
|
969
|
-
$[
|
|
945
|
+
$[75] = anchorStyles;
|
|
946
|
+
$[76] = t26;
|
|
947
|
+
$[77] = t27;
|
|
970
948
|
} else {
|
|
971
|
-
t27 = $[
|
|
949
|
+
t27 = $[77];
|
|
972
950
|
}
|
|
973
951
|
let t28;
|
|
974
|
-
if ($[
|
|
952
|
+
if ($[78] !== className || $[79] !== disabled || $[80] !== isOpen || $[81] !== isSearchable) {
|
|
975
953
|
t28 = clsx(ROOT_CLASS_NAME, className, {
|
|
976
954
|
disabled,
|
|
977
955
|
"is-open": isOpen,
|
|
978
956
|
"is-searchable": isSearchable
|
|
979
957
|
});
|
|
980
|
-
$[
|
|
981
|
-
$[
|
|
982
|
-
$[
|
|
983
|
-
$[
|
|
984
|
-
$[
|
|
958
|
+
$[78] = className;
|
|
959
|
+
$[79] = disabled;
|
|
960
|
+
$[80] = isOpen;
|
|
961
|
+
$[81] = isSearchable;
|
|
962
|
+
$[82] = t28;
|
|
985
963
|
} else {
|
|
986
|
-
t28 = $[
|
|
964
|
+
t28 = $[82];
|
|
987
965
|
}
|
|
988
966
|
let t29;
|
|
989
|
-
if ($[
|
|
967
|
+
if ($[83] !== children || $[84] !== childrenCount || $[85] !== isOpen) {
|
|
990
968
|
t29 = isOpen ? /* @__PURE__ */ jsx("div", { className: BODY_CLASS_NAME, ref: setDropdownBodyElement, children: childrenCount > 1 ? children[1] : children }) : null;
|
|
991
|
-
$[
|
|
992
|
-
$[
|
|
993
|
-
$[
|
|
994
|
-
$[
|
|
995
|
-
$[102] = t29;
|
|
969
|
+
$[83] = children;
|
|
970
|
+
$[84] = childrenCount;
|
|
971
|
+
$[85] = isOpen;
|
|
972
|
+
$[86] = t29;
|
|
996
973
|
} else {
|
|
997
|
-
t29 = $[
|
|
974
|
+
t29 = $[86];
|
|
998
975
|
}
|
|
999
976
|
let t30;
|
|
1000
|
-
if ($[
|
|
977
|
+
if ($[87] !== handleMouseDown || $[88] !== handleMouseOut || $[89] !== handleMouseOver || $[90] !== handleMouseUp || $[91] !== handleRef || $[92] !== id || $[93] !== onClick || $[94] !== style || $[95] !== t28 || $[96] !== t29 || $[97] !== trigger) {
|
|
1001
978
|
t30 = /* @__PURE__ */ jsxs("div", { className: t28, "data-ukt-id": id, onClick, onMouseDown: handleMouseDown, onMouseMove: handleMouseMove, onMouseOut: handleMouseOut, onMouseOver: handleMouseOver, onMouseUp: handleMouseUp, ref: handleRef, style, children: [
|
|
1002
979
|
trigger,
|
|
1003
980
|
t29
|
|
1004
981
|
] });
|
|
1005
|
-
$[
|
|
1006
|
-
$[
|
|
1007
|
-
$[
|
|
1008
|
-
$[
|
|
1009
|
-
$[
|
|
1010
|
-
$[
|
|
1011
|
-
$[
|
|
1012
|
-
$[
|
|
1013
|
-
$[
|
|
1014
|
-
$[
|
|
1015
|
-
$[
|
|
1016
|
-
$[
|
|
1017
|
-
$[115] = t30;
|
|
982
|
+
$[87] = handleMouseDown;
|
|
983
|
+
$[88] = handleMouseOut;
|
|
984
|
+
$[89] = handleMouseOver;
|
|
985
|
+
$[90] = handleMouseUp;
|
|
986
|
+
$[91] = handleRef;
|
|
987
|
+
$[92] = id;
|
|
988
|
+
$[93] = onClick;
|
|
989
|
+
$[94] = style;
|
|
990
|
+
$[95] = t28;
|
|
991
|
+
$[96] = t29;
|
|
992
|
+
$[97] = trigger;
|
|
993
|
+
$[98] = t30;
|
|
1018
994
|
} else {
|
|
1019
|
-
t30 = $[
|
|
995
|
+
t30 = $[98];
|
|
1020
996
|
}
|
|
1021
997
|
let t31;
|
|
1022
|
-
if ($[
|
|
998
|
+
if ($[99] !== t27 || $[100] !== t30) {
|
|
1023
999
|
t31 = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1024
1000
|
t25,
|
|
1025
1001
|
t27,
|
|
1026
1002
|
t30
|
|
1027
1003
|
] });
|
|
1028
|
-
$[
|
|
1029
|
-
$[
|
|
1030
|
-
$[
|
|
1004
|
+
$[99] = t27;
|
|
1005
|
+
$[100] = t30;
|
|
1006
|
+
$[101] = t31;
|
|
1031
1007
|
} else {
|
|
1032
|
-
t31 = $[
|
|
1008
|
+
t31 = $[101];
|
|
1033
1009
|
}
|
|
1034
1010
|
return t31;
|
|
1035
1011
|
}
|
package/dist/Dropdown.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dropdown.js","sources":["../src/styles.ts","../src/helpers.ts","../src/Dropdown.tsx"],"sourcesContent":["import { SYSTEM_UI_FONT } from '@acusti/styling';\n\nexport const ROOT_CLASS_NAME = 'uktdropdown';\nexport const ROOT_SELECTOR = `.${ROOT_CLASS_NAME}`;\n\nexport const BODY_CLASS_NAME = `${ROOT_CLASS_NAME}-body`;\nexport const LABEL_CLASS_NAME = `${ROOT_CLASS_NAME}-label`;\nexport const LABEL_TEXT_CLASS_NAME = `${ROOT_CLASS_NAME}-label-text`;\nexport const TRIGGER_CLASS_NAME = `${ROOT_CLASS_NAME}-trigger`;\n\nexport const BODY_SELECTOR = `.${BODY_CLASS_NAME}`;\nexport const LABEL_SELECTOR = `.${LABEL_CLASS_NAME}`;\nexport const LABEL_TEXT_SELECTOR = `.${LABEL_TEXT_CLASS_NAME}`;\nexport const TRIGGER_SELECTOR = `.${TRIGGER_CLASS_NAME}`;\n\nexport const BODY_MAX_HEIGHT_VAR = '--uktdd-body-max-height';\nexport const BODY_MAX_WIDTH_VAR = '--uktdd-body-max-width';\n\nexport const STYLES = `\n:root {\n --uktdd-font-family: ${SYSTEM_UI_FONT};\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 ${BODY_MAX_HEIGHT_VAR}: calc(100vh - var(--uktdd-body-buffer));\n ${BODY_MAX_WIDTH_VAR}: 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${ROOT_SELECTOR},\n${TRIGGER_SELECTOR} {\n font-family: var(--uktdd-font-family);\n}\n${ROOT_SELECTOR} {\n width: max-content;\n}\n${ROOT_SELECTOR}.disabled {\n pointer-events: none;\n}\n${ROOT_SELECTOR} > * {\n cursor: default;\n}\n${LABEL_SELECTOR} {\n display: flex;\n align-items: center;\n}\n${LABEL_TEXT_SELECTOR} {\n padding-right: var(--uktdd-label-pad-right);\n}\n${BODY_SELECTOR} {\n box-sizing: border-box;\n position: absolute;\n top: anchor(bottom);\n left: anchor(left);\n bottom: auto;\n right: auto;\n position-try-fallbacks: --uktdd-top-left, --uktdd-bottom-right, --uktdd-top-right;\n min-height: 50px;\n max-height: var(${BODY_MAX_HEIGHT_VAR});\n min-width: min(50px, 100%);\n max-width: var(${BODY_MAX_WIDTH_VAR});\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@position-try --uktdd-top-left {\n bottom: anchor(top);\n left: anchor(left);\n top: auto;\n right: auto;\n}\n@position-try --uktdd-bottom-right {\n top: anchor(bottom);\n right: anchor(right);\n bottom: auto;\n left: auto;\n}\n@position-try --uktdd-top-right {\n bottom: anchor(top);\n right: anchor(right);\n top: auto;\n left: auto;\n}\n${BODY_SELECTOR}.has-items {\n user-select: none;\n}\n${BODY_SELECTOR} [data-ukt-active] {\n background-color: var(--uktdd-body-bg-color-hover);\n color: var(--uktdd-body-color-hover);\n}\n`;\n","import { getBestMatch } from '@acusti/matchmaking';\n\nimport { BODY_SELECTOR } from './styles.js';\n\nexport const ITEM_SELECTOR = `[data-ukt-item], [data-ukt-value]`;\n\nexport const getItemElements = (dropdownElement: HTMLElement | null) => {\n if (!dropdownElement) return null;\n\n const bodyElement = dropdownElement.querySelector(BODY_SELECTOR);\n if (!bodyElement) return null;\n\n let items: HTMLCollection | NodeListOf<Element> =\n bodyElement.querySelectorAll(ITEM_SELECTOR);\n\n if (items.length) return items;\n // If no items found via [data-ukt-item] or [data-ukt-value] selector,\n // use first instance of multiple children found\n items = bodyElement.children;\n while (items.length === 1) {\n if (items[0].children == null) break;\n items = items[0].children;\n }\n // If unable to find an element with more than one child, treat direct child as items\n if (items.length === 1) {\n items = bodyElement.children;\n }\n return items;\n};\n\nexport const getActiveItemElement = (dropdownElement: HTMLElement | null) => {\n if (!dropdownElement) return null;\n return dropdownElement.querySelector('[data-ukt-active]') as HTMLElement | null;\n};\n\nconst clearItemElementsState = (itemElements: Array<HTMLElement>) => {\n itemElements.forEach((itemElement) => {\n if (itemElement.hasAttribute('data-ukt-active')) {\n delete itemElement.dataset.uktActive;\n }\n });\n};\n\nexport const setActiveItem = ({\n dropdownElement,\n element,\n index,\n indexAddend,\n isExactMatch,\n text,\n}:\n | {\n dropdownElement: HTMLElement;\n element: HTMLElement;\n index?: null;\n indexAddend?: null;\n isExactMatch?: null;\n text?: null;\n }\n | {\n dropdownElement: HTMLElement;\n element?: null;\n index: number;\n indexAddend?: null;\n isExactMatch?: null;\n text?: null;\n }\n | {\n dropdownElement: HTMLElement;\n element?: null;\n index?: null;\n indexAddend: number;\n isExactMatch?: null;\n text?: null;\n }\n | {\n dropdownElement: HTMLElement;\n element?: null;\n index?: null;\n indexAddend?: null;\n isExactMatch?: boolean;\n text: string;\n }) => {\n const items = getItemElements(dropdownElement);\n if (!items) return;\n\n const itemElements = Array.from(items) as Array<HTMLElement>;\n if (!itemElements.length) return;\n\n const lastIndex = itemElements.length - 1;\n const currentActiveIndex = itemElements.findIndex((itemElement) =>\n itemElement.hasAttribute('data-ukt-active'),\n );\n\n let nextActiveIndex = currentActiveIndex;\n if (typeof index === 'number') {\n // Negative index means count back from the end\n nextActiveIndex = index < 0 ? itemElements.length + index : index;\n }\n\n if (element) {\n nextActiveIndex = itemElements.findIndex(\n (itemElement) => itemElement === element,\n );\n } else if (typeof indexAddend === 'number') {\n // If there’s no currentActiveIndex and we are handling -1, start at lastIndex\n if (currentActiveIndex === -1 && indexAddend === -1) {\n nextActiveIndex = lastIndex;\n } else {\n nextActiveIndex += indexAddend;\n }\n // Keep it within the bounds of the items list\n if (nextActiveIndex < 0) {\n nextActiveIndex = 0;\n } else if (nextActiveIndex > lastIndex) {\n nextActiveIndex = lastIndex;\n }\n } else if (typeof text === 'string') {\n // If text is empty, clear existing active items and early return\n if (!text) {\n clearItemElementsState(itemElements);\n return;\n }\n\n const itemTexts = itemElements.map((itemElement) => itemElement.innerText);\n if (isExactMatch) {\n const textToCompare = text.toLowerCase();\n nextActiveIndex = itemTexts.findIndex((itemText) =>\n itemText.toLowerCase().startsWith(textToCompare),\n );\n // If isExactMatch is required and no exact match was found, clear active items\n if (nextActiveIndex === -1) {\n clearItemElementsState(itemElements);\n }\n } else {\n const bestMatch = getBestMatch({ items: itemTexts, text });\n nextActiveIndex = itemTexts.findIndex((itemText) => itemText === bestMatch);\n }\n }\n\n if (nextActiveIndex === -1 || nextActiveIndex === currentActiveIndex) return;\n\n // Clear any existing active dropdown body item state\n clearItemElementsState(itemElements);\n\n const nextActiveItem = items[nextActiveIndex];\n if (nextActiveItem != null) {\n nextActiveItem.setAttribute('data-ukt-active', '');\n // Find closest scrollable parent and ensure that next active item is visible\n let { parentElement } = nextActiveItem;\n let scrollableParent = null;\n while (!scrollableParent && parentElement && parentElement !== dropdownElement) {\n const isScrollable =\n parentElement.scrollHeight > parentElement.clientHeight + 15;\n if (isScrollable) {\n scrollableParent = parentElement;\n } else {\n parentElement = parentElement.parentElement;\n }\n }\n\n if (scrollableParent) {\n const parentRect = scrollableParent.getBoundingClientRect();\n const itemRect = nextActiveItem.getBoundingClientRect();\n const isAboveTop = itemRect.top < parentRect.top;\n const isBelowBottom = itemRect.bottom > parentRect.bottom;\n if (isAboveTop || isBelowBottom) {\n let { scrollTop } = scrollableParent;\n // Item isn’t fully visible; adjust scrollTop to put item within closest edge\n if (isAboveTop) {\n scrollTop -= parentRect.top - itemRect.top;\n } else {\n scrollTop += itemRect.bottom - parentRect.bottom;\n }\n scrollableParent.scrollTop = scrollTop;\n }\n }\n }\n};\n","/* eslint-disable jsx-a11y/click-events-have-key-events, jsx-a11y/mouse-events-have-key-events, jsx-a11y/no-static-element-interactions */\nimport { Style } from '@acusti/styling';\nimport useBoundingClientRect from '@acusti/use-bounding-client-rect';\nimport useKeyboardEvents, {\n isEventTargetUsingKeyEvent,\n} from '@acusti/use-keyboard-events';\nimport clsx from 'clsx';\nimport * as React from 'react';\n\nimport {\n getActiveItemElement,\n getItemElements,\n ITEM_SELECTOR,\n setActiveItem,\n} from './helpers.js';\nimport {\n BODY_CLASS_NAME,\n BODY_MAX_HEIGHT_VAR,\n BODY_MAX_WIDTH_VAR,\n BODY_SELECTOR,\n LABEL_CLASS_NAME,\n LABEL_TEXT_CLASS_NAME,\n ROOT_CLASS_NAME,\n STYLES,\n TRIGGER_CLASS_NAME,\n} from './styles.js';\n\nexport type Item = {\n element: MaybeHTMLElement;\n event: Event | React.SyntheticEvent<HTMLElement>;\n label: string;\n value: string;\n};\n\nexport type Props = {\n /**\n * Boolean indicating if the user can submit a value not already in the\n * dropdown.\n */\n allowCreate?: boolean;\n /**\n * Boolean indicating if the user can submit an empty value (i.e. clear\n * the value). Defaults to true.\n */\n allowEmpty?: boolean;\n /**\n * Can take a single React element or exactly two renderable children.\n */\n children: ChildrenTuple | React.JSX.Element;\n className?: string;\n disabled?: boolean;\n /**\n * Group identifier string links dropdowns together into a menu\n * (like macOS top menubar).\n */\n group?: string;\n hasItems?: boolean;\n isOpenOnMount?: boolean;\n isSearchable?: boolean;\n keepOpenOnSubmit?: boolean;\n label?: string;\n minHeightBody?: number;\n minWidthBody?: number;\n /**\n * Only usable in conjunction with {isSearchable: true}.\n * Used as search input’s name.\n */\n name?: string;\n onClick?: (event: React.MouseEvent<HTMLElement>) => unknown;\n onClose?: () => unknown;\n onMouseDown?: (event: React.MouseEvent<HTMLElement>) => unknown;\n onMouseUp?: (event: React.MouseEvent<HTMLElement>) => unknown;\n onOpen?: () => unknown;\n onSubmitItem?: (payload: Item) => void;\n /**\n * Only usable in conjunction with {isSearchable: true}.\n * Used as search input’s placeholder.\n */\n placeholder?: string;\n style?: React.CSSProperties;\n /**\n * Only usable in conjunction with {isSearchable: true}.\n * Used as search input’s tabIndex.\n */\n tabIndex?: number;\n /**\n * Used as search input’s value if props.isSearchable === true\n * Used to determine if value has changed to avoid triggering onSubmitItem if not\n */\n value?: string;\n};\n\ntype ChildrenTuple =\n | [React.ReactNode, React.ReactNode]\n | readonly [React.ReactNode, React.ReactNode];\n\ntype MaybeHTMLElement = HTMLElement | null;\n\ntype MousePosition = { clientX: number; clientY: number };\n\ntype TimeoutID = ReturnType<typeof setTimeout>;\n\nconst { Children, Fragment, useEffect, useRef, useState } = React;\n\nconst noop = () => {}; // eslint-disable-line @typescript-eslint/no-empty-function\n\nconst CHILDREN_ERROR =\n '@acusti/dropdown requires either 1 child (the dropdown body) or 2 children: the dropdown trigger and the dropdown body.';\nconst TEXT_INPUT_SELECTOR =\n 'input:not([type=radio]):not([type=checkbox]):not([type=range]),textarea';\n\nlet idCounter = 0;\n\nexport default function Dropdown({\n allowCreate,\n allowEmpty = true,\n children,\n className,\n disabled,\n hasItems = true,\n isOpenOnMount,\n isSearchable,\n keepOpenOnSubmit = !hasItems,\n label,\n minHeightBody = 30,\n minWidthBody = 100,\n name,\n onClick,\n onClose,\n onMouseDown,\n onMouseUp,\n onOpen,\n onSubmitItem,\n placeholder,\n style: styleFromProps,\n tabIndex,\n value,\n}: Props) {\n const childrenCount = Children.count(children);\n if (childrenCount !== 1 && childrenCount !== 2) {\n if (childrenCount === 0) {\n throw new Error(CHILDREN_ERROR + ' Received no children.');\n }\n console.error(`${CHILDREN_ERROR} Received ${childrenCount} children.`);\n }\n\n let trigger: React.ReactNode;\n if (childrenCount > 1) {\n trigger = (children as ChildrenTuple)[0];\n }\n const isTriggerFromProps = React.isValidElement(trigger);\n\n const [isOpen, setIsOpen] = useState<boolean>(isOpenOnMount ?? false);\n const [isOpening, setIsOpening] = useState<boolean>(!isOpenOnMount);\n const [dropdownElement, setDropdownElement] = useState<MaybeHTMLElement>(null);\n const [dropdownBodyElement, setDropdownBodyElement] =\n useState<MaybeHTMLElement>(null);\n const [id] = useState(() => {\n idCounter = idCounter >= 999_999 ? 0 : idCounter + 1;\n return idCounter;\n });\n\n const inputElementRef = useRef<HTMLInputElement | null>(null);\n const closingTimerRef = useRef<null | TimeoutID>(null);\n const isOpeningTimerRef = useRef<null | TimeoutID>(null);\n const currentInputMethodRef = useRef<'keyboard' | 'mouse'>('mouse');\n const clearEnteredCharactersTimerRef = useRef<null | TimeoutID>(null);\n const enteredCharactersRef = useRef<string>('');\n const mouseDownPositionRef = useRef<MousePosition | null>(null);\n\n const allowCreateRef = useRef(allowCreate);\n const allowEmptyRef = useRef(allowEmpty);\n const hasItemsRef = useRef(hasItems);\n const isOpenRef = useRef(isOpen);\n const isOpeningRef = useRef(isOpening);\n const keepOpenOnSubmitRef = useRef(keepOpenOnSubmit);\n const onCloseRef = useRef(onClose);\n const onOpenRef = useRef(onOpen);\n const onSubmitItemRef = useRef(onSubmitItem);\n const valueRef = useRef(value);\n\n useEffect(() => {\n allowCreateRef.current = allowCreate;\n allowEmptyRef.current = allowEmpty;\n hasItemsRef.current = hasItems;\n isOpenRef.current = isOpen;\n isOpeningRef.current = isOpening;\n keepOpenOnSubmitRef.current = keepOpenOnSubmit;\n onCloseRef.current = onClose;\n onOpenRef.current = onOpen;\n onSubmitItemRef.current = onSubmitItem;\n valueRef.current = value;\n }, [\n allowCreate,\n allowEmpty,\n hasItems,\n isOpen,\n isOpening,\n keepOpenOnSubmit,\n onClose,\n onOpen,\n onSubmitItem,\n value,\n ]);\n\n const isMountedRef = useRef(false);\n\n useEffect(() => {\n if (!isMountedRef.current) {\n isMountedRef.current = true;\n // If isOpenOnMount, trigger onOpen right away\n if (isOpenRef.current && onOpenRef.current) {\n onOpenRef.current();\n }\n return;\n }\n\n if (isOpen && onOpenRef.current) {\n onOpenRef.current();\n } else if (!isOpen && onCloseRef.current) {\n onCloseRef.current();\n }\n }, [isOpen]);\n\n const closeDropdown = () => {\n setIsOpen(false);\n setIsOpening(false);\n mouseDownPositionRef.current = null;\n if (closingTimerRef.current) {\n clearTimeout(closingTimerRef.current);\n closingTimerRef.current = null;\n }\n };\n\n const handleSubmitItem = (event: Event | React.SyntheticEvent<HTMLElement>) => {\n if (isOpenRef.current && !keepOpenOnSubmitRef.current) {\n // A short timeout before closing is better UX when user selects an item so dropdown\n // doesn’t close before expected. It also enables using <Link />s in the dropdown body.\n closingTimerRef.current = setTimeout(closeDropdown, 90);\n }\n\n if (!hasItemsRef.current) return;\n\n const element = getActiveItemElement(dropdownElement);\n if (!element && !allowCreateRef.current) {\n // If not allowEmpty, don’t allow submitting an empty item\n if (!allowEmptyRef.current) return;\n // If we have an input element as trigger & the user didn’t clear the text, do nothing\n if (inputElementRef.current?.value) return;\n }\n\n let itemLabel = element?.innerText ?? '';\n if (inputElementRef.current) {\n if (!element) {\n itemLabel = inputElementRef.current.value;\n } else {\n inputElementRef.current.value = itemLabel;\n }\n\n if (\n inputElementRef.current ===\n inputElementRef.current.ownerDocument.activeElement\n ) {\n inputElementRef.current.blur();\n }\n }\n\n const nextValue = element?.dataset.uktValue ?? itemLabel;\n // If parent is controlling Dropdown via props.value and nextValue is the same, do nothing\n if (valueRef.current && valueRef.current === nextValue) return;\n\n if (onSubmitItemRef.current) {\n onSubmitItemRef.current({\n element,\n event,\n label: itemLabel,\n value: nextValue,\n });\n }\n };\n\n const handleMouseMove = ({ clientX, clientY }: React.MouseEvent<HTMLElement>) => {\n currentInputMethodRef.current = 'mouse';\n const initialPosition = mouseDownPositionRef.current;\n if (!initialPosition) return;\n if (\n Math.abs(initialPosition.clientX - clientX) < 12 &&\n Math.abs(initialPosition.clientY - clientY) < 12\n ) {\n return;\n }\n setIsOpening(false);\n };\n\n const handleMouseOver = (event: React.MouseEvent<HTMLElement>) => {\n if (!hasItemsRef.current) return;\n\n // If user isn’t currently using the mouse to navigate the dropdown, do nothing\n if (currentInputMethodRef.current !== 'mouse') return;\n\n // Ensure we have the dropdown root HTMLElement\n if (!dropdownElement) return;\n\n const itemElements = getItemElements(dropdownElement);\n if (!itemElements) return;\n\n const eventTarget = event.target as HTMLElement;\n const item = eventTarget.closest(ITEM_SELECTOR) as MaybeHTMLElement;\n const element = item ?? eventTarget;\n for (const itemElement of itemElements) {\n if (itemElement === element) {\n setActiveItem({ dropdownElement, element });\n return;\n }\n }\n };\n\n const handleMouseOut = (event: React.MouseEvent<HTMLElement>) => {\n if (!hasItemsRef.current) return;\n const activeItem = getActiveItemElement(dropdownElement);\n if (!activeItem) return;\n const eventRelatedTarget = event.relatedTarget as HTMLElement;\n if (activeItem !== event.target || activeItem.contains(eventRelatedTarget)) {\n return;\n }\n // If user moused out of activeItem (not into a descendant), it’s no longer active\n delete activeItem.dataset.uktActive;\n };\n\n const handleMouseDown = (event: React.MouseEvent<HTMLElement>) => {\n if (onMouseDown) onMouseDown(event);\n if (isOpenRef.current) return;\n\n setIsOpen(true);\n setIsOpening(true);\n mouseDownPositionRef.current = {\n clientX: event.clientX,\n clientY: event.clientY,\n };\n isOpeningTimerRef.current = setTimeout(() => {\n setIsOpening(false);\n isOpeningTimerRef.current = null;\n }, 1000);\n };\n\n const handleMouseUp = (event: React.MouseEvent<HTMLElement>) => {\n if (onMouseUp) onMouseUp(event);\n // If dropdown is still opening or isn’t open or is closing, do nothing\n if (isOpeningRef.current || !isOpenRef.current || closingTimerRef.current) {\n return;\n }\n\n const eventTarget = event.target as HTMLElement;\n // If click was outside dropdown body, don’t trigger submit\n if (!eventTarget.closest(BODY_SELECTOR)) {\n // Don’t close dropdown if isOpening or search input is focused\n if (\n !isOpeningRef.current &&\n inputElementRef.current !== eventTarget.ownerDocument.activeElement\n ) {\n closeDropdown();\n }\n return;\n }\n\n // If dropdown has no items and click was within dropdown body, do nothing\n if (!hasItemsRef.current) return;\n\n handleSubmitItem(event);\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n const { altKey, ctrlKey, key, metaKey } = event;\n const eventTarget = event.target as HTMLElement;\n if (!dropdownElement) return;\n\n const onEventHandled = () => {\n event.stopPropagation();\n event.preventDefault();\n currentInputMethodRef.current = 'keyboard';\n };\n\n const isEventTargetingDropdown = dropdownElement.contains(eventTarget);\n\n if (!isOpenRef.current) {\n // If dropdown is closed, don’t handle key events if event target isn’t within dropdown\n if (!isEventTargetingDropdown) return;\n // Open the dropdown on spacebar, enter, or if isSearchable and user hits the ↑/↓ arrows\n if (\n key === ' ' ||\n key === 'Enter' ||\n (hasItemsRef.current && (key === 'ArrowUp' || key === 'ArrowDown'))\n ) {\n onEventHandled();\n setIsOpen(true);\n }\n return;\n }\n\n const isTargetUsingKeyEvents = isEventTargetUsingKeyEvent(event);\n\n // If dropdown isOpen + hasItems & eventTargetNotUsingKeyEvents, handle characters\n if (hasItemsRef.current && !isTargetUsingKeyEvents) {\n let isEditingCharacters = !ctrlKey && !metaKey && /^[A-Za-z0-9]$/.test(key);\n // User could also be editing characters if there are already characters entered\n // and they are hitting delete or spacebar\n if (!isEditingCharacters && enteredCharactersRef.current) {\n isEditingCharacters = key === ' ' || key === 'Backspace';\n }\n\n if (isEditingCharacters) {\n onEventHandled();\n if (key === 'Backspace') {\n enteredCharactersRef.current = enteredCharactersRef.current.slice(\n 0,\n -1,\n );\n } else {\n enteredCharactersRef.current += key;\n }\n\n setActiveItem({\n dropdownElement,\n // If props.allowCreate, only override the input’s value with an\n // exact text match so user can enter a value not in items\n isExactMatch: allowCreateRef.current,\n text: enteredCharactersRef.current,\n });\n\n if (clearEnteredCharactersTimerRef.current) {\n clearTimeout(clearEnteredCharactersTimerRef.current);\n }\n\n clearEnteredCharactersTimerRef.current = setTimeout(() => {\n enteredCharactersRef.current = '';\n clearEnteredCharactersTimerRef.current = null;\n }, 1500);\n\n return;\n }\n }\n\n // If dropdown isOpen, handle submitting the value\n if (key === 'Enter' || (key === ' ' && !inputElementRef.current)) {\n onEventHandled();\n handleSubmitItem(event);\n return;\n }\n\n // If dropdown isOpen, handle closing it on escape or spacebar if !hasItems\n if (\n key === 'Escape' ||\n (isEventTargetingDropdown && key === ' ' && !hasItemsRef.current)\n ) {\n // Close dropdown if hasItems or event target not using key events\n if (hasItemsRef.current || !isTargetUsingKeyEvents) {\n closeDropdown();\n }\n return;\n }\n\n // Handle ↑/↓ arrows\n if (hasItemsRef.current) {\n if (key === 'ArrowUp') {\n onEventHandled();\n if (altKey || metaKey) {\n setActiveItem({ dropdownElement, index: 0 });\n } else {\n setActiveItem({ dropdownElement, indexAddend: -1 });\n }\n return;\n }\n if (key === 'ArrowDown') {\n onEventHandled();\n if (altKey || metaKey) {\n // Using a negative index counts back from the end\n setActiveItem({ dropdownElement, index: -1 });\n } else {\n setActiveItem({ dropdownElement, indexAddend: 1 });\n }\n return;\n }\n }\n };\n\n useKeyboardEvents({ ignoreUsedKeyboardEvents: false, onKeyDown: handleKeyDown });\n\n const cleanupEventListenersRef = useRef<() => void>(noop);\n\n const handleRef = (ref: HTMLDivElement | null) => {\n setDropdownElement(ref);\n if (!ref) {\n // If component was unmounted, cleanup handlers\n cleanupEventListenersRef.current();\n cleanupEventListenersRef.current = noop;\n return;\n }\n\n const { ownerDocument } = ref;\n let inputElement = inputElementRef.current;\n // Check if trigger from props is a textual input or textarea element\n if (isTriggerFromProps && !inputElement && ref.firstElementChild) {\n if (ref.firstElementChild.matches(TEXT_INPUT_SELECTOR)) {\n inputElement = ref.firstElementChild as HTMLInputElement;\n } else {\n inputElement = ref.firstElementChild.querySelector(TEXT_INPUT_SELECTOR);\n }\n inputElementRef.current = inputElement;\n }\n\n const handleGlobalMouseDown = ({ target }: MouseEvent) => {\n const eventTarget = target as HTMLElement;\n if (!ref.contains(eventTarget)) {\n // Close dropdown on an outside click\n closeDropdown();\n }\n };\n\n const handleGlobalMouseUp = ({ target }: MouseEvent) => {\n if (!isOpenRef.current || closingTimerRef.current) return;\n\n // If still isOpening (gets set false 1s after open triggers), set it to false onMouseUp\n if (isOpeningRef.current) {\n setIsOpening(false);\n if (isOpeningTimerRef.current) {\n clearTimeout(isOpeningTimerRef.current);\n isOpeningTimerRef.current = null;\n }\n return;\n }\n\n const eventTarget = target as HTMLElement;\n // Only handle mouseup events from outside the dropdown here\n if (!ref.contains(eventTarget)) {\n closeDropdown();\n }\n };\n\n // Close dropdown if any element is focused outside of this dropdown\n const handleGlobalFocusIn = ({ target }: Event) => {\n if (!isOpenRef.current) return;\n\n const eventTarget = target as HTMLElement;\n // If focused element is a descendant or a parent of the dropdown, do nothing\n if (ref.contains(eventTarget) || eventTarget.contains(ref)) {\n return;\n }\n\n closeDropdown();\n };\n\n document.addEventListener('focusin', handleGlobalFocusIn);\n document.addEventListener('mousedown', handleGlobalMouseDown);\n document.addEventListener('mouseup', handleGlobalMouseUp);\n\n if (ownerDocument !== document) {\n ownerDocument.addEventListener('focusin', handleGlobalFocusIn);\n ownerDocument.addEventListener('mousedown', handleGlobalMouseDown);\n ownerDocument.addEventListener('mouseup', handleGlobalMouseUp);\n }\n\n // If dropdown should be open on mount, focus it\n if (isOpenOnMount) {\n ref.focus();\n }\n\n const handleInput = (event: Event) => {\n if (!isOpenRef.current) setIsOpen(true);\n\n const input = event.target as HTMLInputElement;\n const isDeleting = enteredCharactersRef.current.length > input.value.length;\n enteredCharactersRef.current = input.value;\n // When deleting text, if there’s already an active item and\n // input isn’t empty, preserve the active item, else update it\n if (isDeleting && input.value.length && getActiveItemElement(ref)) {\n return;\n }\n\n setActiveItem({\n dropdownElement: ref,\n // If props.allowCreate, only override the input’s value with an\n // exact text match so user can enter a value not in items\n isExactMatch: allowCreateRef.current,\n text: enteredCharactersRef.current,\n });\n };\n\n if (inputElement) {\n inputElement.addEventListener('input', handleInput);\n }\n\n cleanupEventListenersRef.current = () => {\n document.removeEventListener('focusin', handleGlobalFocusIn);\n document.removeEventListener('mousedown', handleGlobalMouseDown);\n document.removeEventListener('mouseup', handleGlobalMouseUp);\n\n if (ownerDocument !== document) {\n ownerDocument.removeEventListener('focusin', handleGlobalFocusIn);\n ownerDocument.removeEventListener('mousedown', handleGlobalMouseDown);\n ownerDocument.removeEventListener('mouseup', handleGlobalMouseUp);\n }\n\n if (inputElement) {\n inputElement.removeEventListener('input', handleInput);\n }\n };\n };\n\n if (!isTriggerFromProps) {\n if (isSearchable) {\n trigger = (\n <input\n autoComplete=\"off\"\n className={TRIGGER_CLASS_NAME}\n defaultValue={value ?? ''}\n disabled={disabled}\n name={name}\n onFocus={() => setIsOpen(true)}\n placeholder={placeholder}\n ref={inputElementRef}\n tabIndex={tabIndex}\n type=\"text\"\n />\n );\n } else {\n trigger = (\n <button className={TRIGGER_CLASS_NAME} tabIndex={0}>\n {trigger}\n </button>\n );\n }\n }\n\n if (label) {\n trigger = (\n <label className={LABEL_CLASS_NAME}>\n <div className={LABEL_TEXT_CLASS_NAME}>{label}</div>\n {trigger}\n </label>\n );\n }\n\n const dropdownRect = useBoundingClientRect(dropdownElement);\n const dropdownBodyRect = useBoundingClientRect(dropdownBodyElement);\n const boundingElement = getBoundingAncestor(dropdownBodyElement);\n const boundingElementRect = useBoundingClientRect(boundingElement);\n let maxHeight;\n let maxWidth;\n if (\n dropdownBodyRect.top != null &&\n dropdownRect.top != null &&\n boundingElementRect.top != null\n ) {\n const maxHeightUp = dropdownBodyRect.bottom - boundingElementRect.top;\n const maxHeightDown = boundingElementRect.bottom - dropdownBodyRect.top;\n maxHeight = Math.round(\n dropdownBodyRect.top > dropdownRect.top ? maxHeightDown : maxHeightUp,\n );\n const maxWidthLeft = dropdownBodyRect.right - boundingElementRect.left;\n const maxWidthRight = boundingElementRect.right - dropdownBodyRect.left;\n maxWidth = Math.round(\n dropdownBodyRect.left > dropdownRect.left ? maxWidthRight : maxWidthLeft,\n );\n }\n\n const style = {\n ...styleFromProps,\n ...(maxHeight != null && maxHeight > minHeightBody\n ? { [BODY_MAX_HEIGHT_VAR]: `calc(${maxHeight}px - var(--uktdd-body-buffer))` }\n : null),\n ...(maxWidth != null && maxWidth > minWidthBody\n ? { [BODY_MAX_WIDTH_VAR]: `calc(${maxWidth}px - var(--uktdd-body-buffer))` }\n : null),\n };\n\n const anchorStyles = `\\\n[data-ukt-id=\"${id}\"] > :first-child {\n anchor-name: --uktdd-anchor${id};\n}\n[data-ukt-id=\"${id}\"] ${BODY_SELECTOR} {\n position-anchor: --uktdd-anchor${id};\n}`;\n\n return (\n <Fragment>\n <Style href=\"@acusti/dropdown/Dropdown\">{STYLES}</Style>\n <Style href={`@acusti/dropdown/Dropdown/${id}`}>{anchorStyles}</Style>\n <div\n className={clsx(ROOT_CLASS_NAME, className, {\n disabled,\n 'is-open': isOpen,\n 'is-searchable': isSearchable,\n })}\n data-ukt-id={id}\n onClick={onClick}\n onMouseDown={handleMouseDown}\n onMouseMove={handleMouseMove}\n onMouseOut={handleMouseOut}\n onMouseOver={handleMouseOver}\n onMouseUp={handleMouseUp}\n ref={handleRef}\n style={style}\n >\n {trigger}\n {isOpen ? (\n <div className={BODY_CLASS_NAME} ref={setDropdownBodyElement}>\n {childrenCount > 1 ? (children as ChildrenTuple)[1] : children}\n </div>\n ) : null}\n </div>\n </Fragment>\n );\n}\n\nfunction getBoundingAncestor(element?: MaybeHTMLElement): MaybeHTMLElement {\n while (element?.parentElement) {\n // If we’ve reached the body, use that as boundingElement\n if (element.parentElement.tagName === 'BODY') return element.parentElement;\n // Only need to check one overflow direction, because if either direction\n // is not visible, neither can be visible\n if (getComputedStyle(element.parentElement).overflowX !== 'visible') {\n return element.parentElement;\n }\n\n element = element.parentElement as MaybeHTMLElement;\n }\n\n return null;\n}\n"],"names":["ROOT_CLASS_NAME","ROOT_SELECTOR","BODY_CLASS_NAME","LABEL_CLASS_NAME","LABEL_TEXT_CLASS_NAME","TRIGGER_CLASS_NAME","BODY_SELECTOR","LABEL_SELECTOR","LABEL_TEXT_SELECTOR","TRIGGER_SELECTOR","BODY_MAX_HEIGHT_VAR","BODY_MAX_WIDTH_VAR","STYLES","SYSTEM_UI_FONT","ITEM_SELECTOR","getItemElements","dropdownElement","bodyElement","querySelector","items","querySelectorAll","length","children","getActiveItemElement","clearItemElementsState","itemElements","forEach","itemElement","hasAttribute","dataset","uktActive","setActiveItem","element","index","indexAddend","isExactMatch","text","Array","from","lastIndex","currentActiveIndex","findIndex","nextActiveIndex","itemTexts","map","innerText","textToCompare","toLowerCase","itemText","startsWith","bestMatch","getBestMatch","nextActiveItem","setAttribute","parentElement","scrollableParent","isScrollable","scrollHeight","clientHeight","parentRect","getBoundingClientRect","itemRect","isAboveTop","top","isBelowBottom","bottom","scrollTop","Children","Fragment","useEffect","useRef","useState","React","noop","CHILDREN_ERROR","TEXT_INPUT_SELECTOR","idCounter","Dropdown","t0","$","_c","allowCreate","allowEmpty","t1","className","disabled","hasItems","t2","isOpenOnMount","isSearchable","keepOpenOnSubmit","t3","label","minHeightBody","t4","minWidthBody","t5","name","onClick","onClose","onMouseDown","onMouseUp","onOpen","onSubmitItem","placeholder","style","styleFromProps","tabIndex","value","undefined","childrenCount","count","Error","console","error","trigger","t6","isValidElement","isTriggerFromProps","isOpen","setIsOpen","isOpening","setIsOpening","setDropdownElement","dropdownBodyElement","setDropdownBodyElement","id","_temp","inputElementRef","closingTimerRef","isOpeningTimerRef","currentInputMethodRef","clearEnteredCharactersTimerRef","enteredCharactersRef","mouseDownPositionRef","allowCreateRef","allowEmptyRef","hasItemsRef","isOpenRef","isOpeningRef","keepOpenOnSubmitRef","onCloseRef","onOpenRef","onSubmitItemRef","valueRef","t7","t8","current","isMountedRef","t10","t9","t11","clearTimeout","closeDropdown","t12","event","setTimeout","itemLabel","ownerDocument","activeElement","blur","nextValue","uktValue","handleSubmitItem","t13","t14","clientX","clientY","initialPosition","Math","abs","handleMouseMove","event_0","eventTarget","target","item","closest","element_0","handleMouseOver","t15","event_1","activeItem","eventRelatedTarget","relatedTarget","contains","handleMouseOut","t16","event_2","handleMouseDown","t17","event_3","eventTarget_0","handleMouseUp","t18","event_4","altKey","ctrlKey","key","metaKey","eventTarget_1","onEventHandled","stopPropagation","preventDefault","isEventTargetingDropdown","isTargetUsingKeyEvents","isEventTargetUsingKeyEvent","isEditingCharacters","test","slice","handleKeyDown","t19","ignoreUsedKeyboardEvents","onKeyDown","useKeyboardEvents","cleanupEventListenersRef","t20","ref","inputElement","firstElementChild","matches","handleGlobalMouseDown","t21","eventTarget_2","handleGlobalMouseUp","t22","target_0","eventTarget_3","handleGlobalFocusIn","t23","target_1","eventTarget_4","addEventListener","document","focus","handleInput","event_5","input","isDeleting","removeEventListener","handleRef","dropdownRect","useBoundingClientRect","dropdownBodyRect","getBoundingAncestor","boundingElement","boundingElementRect","maxHeight","maxWidth","maxHeightUp","maxHeightDown","round","maxWidthLeft","right","left","maxWidthRight","t24","anchorStyles","t25","Symbol","for","t26","t27","t28","clsx","t29","t30","t31","tagName","getComputedStyle","overflowX"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Dropdown.js","sources":["../src/styles.ts","../src/helpers.ts","../src/Dropdown.tsx"],"sourcesContent":["import { SYSTEM_UI_FONT } from '@acusti/styling';\n\nexport const ROOT_CLASS_NAME = 'uktdropdown';\nexport const ROOT_SELECTOR = `.${ROOT_CLASS_NAME}`;\n\nexport const BODY_CLASS_NAME = `${ROOT_CLASS_NAME}-body`;\nexport const LABEL_CLASS_NAME = `${ROOT_CLASS_NAME}-label`;\nexport const LABEL_TEXT_CLASS_NAME = `${ROOT_CLASS_NAME}-label-text`;\nexport const TRIGGER_CLASS_NAME = `${ROOT_CLASS_NAME}-trigger`;\n\nexport const BODY_SELECTOR = `.${BODY_CLASS_NAME}`;\nexport const LABEL_SELECTOR = `.${LABEL_CLASS_NAME}`;\nexport const LABEL_TEXT_SELECTOR = `.${LABEL_TEXT_CLASS_NAME}`;\nexport const TRIGGER_SELECTOR = `.${TRIGGER_CLASS_NAME}`;\n\nexport const BODY_MAX_HEIGHT_VAR = '--uktdd-body-max-height';\nexport const BODY_MAX_WIDTH_VAR = '--uktdd-body-max-width';\n\nexport const STYLES = `\n:root {\n --uktdd-font-family: ${SYSTEM_UI_FONT};\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 ${BODY_MAX_HEIGHT_VAR}: calc(100vh - var(--uktdd-body-buffer));\n ${BODY_MAX_WIDTH_VAR}: 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${ROOT_SELECTOR},\n${TRIGGER_SELECTOR} {\n font-family: var(--uktdd-font-family);\n}\n${ROOT_SELECTOR} {\n width: max-content;\n}\n${ROOT_SELECTOR}.disabled {\n pointer-events: none;\n}\n${ROOT_SELECTOR} > * {\n cursor: default;\n}\n${LABEL_SELECTOR} {\n display: flex;\n align-items: center;\n}\n${LABEL_TEXT_SELECTOR} {\n padding-right: var(--uktdd-label-pad-right);\n}\n${BODY_SELECTOR} {\n box-sizing: border-box;\n position: absolute;\n top: anchor(bottom);\n left: anchor(left);\n bottom: auto;\n right: auto;\n position-try-fallbacks: --uktdd-top-left, --uktdd-bottom-right, --uktdd-top-right;\n min-height: 50px;\n max-height: var(${BODY_MAX_HEIGHT_VAR});\n min-width: min(50px, 100%);\n max-width: var(${BODY_MAX_WIDTH_VAR});\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@position-try --uktdd-top-left {\n bottom: anchor(top);\n left: anchor(left);\n top: auto;\n right: auto;\n}\n@position-try --uktdd-bottom-right {\n top: anchor(bottom);\n right: anchor(right);\n bottom: auto;\n left: auto;\n}\n@position-try --uktdd-top-right {\n bottom: anchor(top);\n right: anchor(right);\n top: auto;\n left: auto;\n}\n${BODY_SELECTOR}.has-items {\n user-select: none;\n}\n${BODY_SELECTOR} [data-ukt-active] {\n background-color: var(--uktdd-body-bg-color-hover);\n color: var(--uktdd-body-color-hover);\n}\n`;\n","import { getBestMatch } from '@acusti/matchmaking';\n\nimport { BODY_SELECTOR } from './styles.js';\n\nexport const ITEM_SELECTOR = `[data-ukt-item], [data-ukt-value]`;\n\nexport const getItemElements = (dropdownElement: HTMLElement | null) => {\n if (!dropdownElement) return null;\n\n const bodyElement = dropdownElement.querySelector(BODY_SELECTOR);\n if (!bodyElement) return null;\n\n let items: HTMLCollection | NodeListOf<Element> =\n bodyElement.querySelectorAll(ITEM_SELECTOR);\n\n if (items.length) return items;\n // If no items found via [data-ukt-item] or [data-ukt-value] selector,\n // use first instance of multiple children found\n items = bodyElement.children;\n while (items.length === 1) {\n if (items[0].children == null) break;\n items = items[0].children;\n }\n // If unable to find an element with more than one child, treat direct child as items\n if (items.length === 1) {\n items = bodyElement.children;\n }\n return items;\n};\n\nexport const getActiveItemElement = (dropdownElement: HTMLElement | null) => {\n if (!dropdownElement) return null;\n return dropdownElement.querySelector('[data-ukt-active]') as HTMLElement | null;\n};\n\nconst clearItemElementsState = (itemElements: Array<HTMLElement>) => {\n itemElements.forEach((itemElement) => {\n if (itemElement.hasAttribute('data-ukt-active')) {\n delete itemElement.dataset.uktActive;\n }\n });\n};\n\nexport const setActiveItem = ({\n dropdownElement,\n element,\n index,\n indexAddend,\n isExactMatch,\n text,\n}:\n | {\n dropdownElement: HTMLElement;\n element: HTMLElement;\n index?: null;\n indexAddend?: null;\n isExactMatch?: null;\n text?: null;\n }\n | {\n dropdownElement: HTMLElement;\n element?: null;\n index: number;\n indexAddend?: null;\n isExactMatch?: null;\n text?: null;\n }\n | {\n dropdownElement: HTMLElement;\n element?: null;\n index?: null;\n indexAddend: number;\n isExactMatch?: null;\n text?: null;\n }\n | {\n dropdownElement: HTMLElement;\n element?: null;\n index?: null;\n indexAddend?: null;\n isExactMatch?: boolean;\n text: string;\n }) => {\n const items = getItemElements(dropdownElement);\n if (!items) return;\n\n const itemElements = Array.from(items) as Array<HTMLElement>;\n if (!itemElements.length) return;\n\n const lastIndex = itemElements.length - 1;\n const currentActiveIndex = itemElements.findIndex((itemElement) =>\n itemElement.hasAttribute('data-ukt-active'),\n );\n\n let nextActiveIndex = currentActiveIndex;\n if (typeof index === 'number') {\n // Negative index means count back from the end\n nextActiveIndex = index < 0 ? itemElements.length + index : index;\n }\n\n if (element) {\n nextActiveIndex = itemElements.findIndex(\n (itemElement) => itemElement === element,\n );\n } else if (typeof indexAddend === 'number') {\n // If there’s no currentActiveIndex and we are handling -1, start at lastIndex\n if (currentActiveIndex === -1 && indexAddend === -1) {\n nextActiveIndex = lastIndex;\n } else {\n nextActiveIndex += indexAddend;\n }\n // Keep it within the bounds of the items list\n if (nextActiveIndex < 0) {\n nextActiveIndex = 0;\n } else if (nextActiveIndex > lastIndex) {\n nextActiveIndex = lastIndex;\n }\n } else if (typeof text === 'string') {\n // If text is empty, clear existing active items and early return\n if (!text) {\n clearItemElementsState(itemElements);\n return;\n }\n\n const itemTexts = itemElements.map((itemElement) => itemElement.innerText);\n if (isExactMatch) {\n const textToCompare = text.toLowerCase();\n nextActiveIndex = itemTexts.findIndex((itemText) =>\n itemText.toLowerCase().startsWith(textToCompare),\n );\n // If isExactMatch is required and no exact match was found, clear active items\n if (nextActiveIndex === -1) {\n clearItemElementsState(itemElements);\n }\n } else {\n const bestMatch = getBestMatch({ items: itemTexts, text });\n nextActiveIndex = itemTexts.findIndex((itemText) => itemText === bestMatch);\n }\n }\n\n if (nextActiveIndex === -1 || nextActiveIndex === currentActiveIndex) return;\n\n // Clear any existing active dropdown body item state\n clearItemElementsState(itemElements);\n\n const nextActiveItem = items[nextActiveIndex];\n if (nextActiveItem != null) {\n nextActiveItem.setAttribute('data-ukt-active', '');\n // Find closest scrollable parent and ensure that next active item is visible\n let { parentElement } = nextActiveItem;\n let scrollableParent = null;\n while (!scrollableParent && parentElement && parentElement !== dropdownElement) {\n const isScrollable =\n parentElement.scrollHeight > parentElement.clientHeight + 15;\n if (isScrollable) {\n scrollableParent = parentElement;\n } else {\n parentElement = parentElement.parentElement;\n }\n }\n\n if (scrollableParent) {\n const parentRect = scrollableParent.getBoundingClientRect();\n const itemRect = nextActiveItem.getBoundingClientRect();\n const isAboveTop = itemRect.top < parentRect.top;\n const isBelowBottom = itemRect.bottom > parentRect.bottom;\n if (isAboveTop || isBelowBottom) {\n let { scrollTop } = scrollableParent;\n // Item isn’t fully visible; adjust scrollTop to put item within closest edge\n if (isAboveTop) {\n scrollTop -= parentRect.top - itemRect.top;\n } else {\n scrollTop += itemRect.bottom - parentRect.bottom;\n }\n scrollableParent.scrollTop = scrollTop;\n }\n }\n }\n};\n","/* eslint-disable jsx-a11y/click-events-have-key-events, jsx-a11y/mouse-events-have-key-events, jsx-a11y/no-static-element-interactions */\nimport { Style } from '@acusti/styling';\nimport useBoundingClientRect from '@acusti/use-bounding-client-rect';\nimport useKeyboardEvents, {\n isEventTargetUsingKeyEvent,\n} from '@acusti/use-keyboard-events';\nimport clsx from 'clsx';\nimport {\n Children,\n type CSSProperties,\n Fragment,\n isValidElement,\n type JSX,\n type MouseEvent as ReactMouseEvent,\n type ReactNode,\n type SyntheticEvent,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nimport {\n getActiveItemElement,\n getItemElements,\n ITEM_SELECTOR,\n setActiveItem,\n} from './helpers.js';\nimport {\n BODY_CLASS_NAME,\n BODY_MAX_HEIGHT_VAR,\n BODY_MAX_WIDTH_VAR,\n BODY_SELECTOR,\n LABEL_CLASS_NAME,\n LABEL_TEXT_CLASS_NAME,\n ROOT_CLASS_NAME,\n STYLES,\n TRIGGER_CLASS_NAME,\n} from './styles.js';\n\nexport type Item = {\n element: MaybeHTMLElement;\n event: Event | SyntheticEvent<HTMLElement>;\n label: string;\n value: string;\n};\n\nexport type Props = {\n /**\n * Boolean indicating if the user can submit a value not already in the\n * dropdown.\n */\n allowCreate?: boolean;\n /**\n * Boolean indicating if the user can submit an empty value (i.e. clear\n * the value). Defaults to true.\n */\n allowEmpty?: boolean;\n /**\n * Can take a single React element or exactly two renderable children.\n */\n children: ChildrenTuple | JSX.Element;\n className?: string;\n disabled?: boolean;\n /**\n * Group identifier string links dropdowns together into a menu\n * (like macOS top menubar).\n */\n group?: string;\n hasItems?: boolean;\n isOpenOnMount?: boolean;\n isSearchable?: boolean;\n keepOpenOnSubmit?: boolean;\n label?: string;\n minHeightBody?: number;\n minWidthBody?: number;\n /**\n * Only usable in conjunction with {isSearchable: true}.\n * Used as search input’s name.\n */\n name?: string;\n onClick?: (event: ReactMouseEvent<HTMLElement>) => unknown;\n onClose?: () => unknown;\n onMouseDown?: (event: ReactMouseEvent<HTMLElement>) => unknown;\n onMouseUp?: (event: ReactMouseEvent<HTMLElement>) => unknown;\n onOpen?: () => unknown;\n onSubmitItem?: (payload: Item) => void;\n /**\n * Only usable in conjunction with {isSearchable: true}.\n * Used as search input’s placeholder.\n */\n placeholder?: string;\n style?: CSSProperties;\n /**\n * Only usable in conjunction with {isSearchable: true}.\n * Used as search input’s tabIndex.\n */\n tabIndex?: number;\n /**\n * Used as search input’s value if props.isSearchable === true\n * Used to determine if value has changed to avoid triggering onSubmitItem if not\n */\n value?: string;\n};\n\ntype ChildrenTuple = [ReactNode, ReactNode] | readonly [ReactNode, ReactNode];\n\ntype MaybeHTMLElement = HTMLElement | null;\n\ntype MousePosition = { clientX: number; clientY: number };\n\ntype TimeoutID = ReturnType<typeof setTimeout>;\n\nconst noop = () => {}; // eslint-disable-line @typescript-eslint/no-empty-function\n\nconst CHILDREN_ERROR =\n '@acusti/dropdown requires either 1 child (the dropdown body) or 2 children: the dropdown trigger and the dropdown body.';\nconst TEXT_INPUT_SELECTOR =\n 'input:not([type=radio]):not([type=checkbox]):not([type=range]),textarea';\n\nlet idCounter = 0;\n\nexport default function Dropdown({\n allowCreate,\n allowEmpty = true,\n children,\n className,\n disabled,\n hasItems = true,\n isOpenOnMount,\n isSearchable,\n keepOpenOnSubmit = !hasItems,\n label,\n minHeightBody = 30,\n minWidthBody = 100,\n name,\n onClick,\n onClose,\n onMouseDown,\n onMouseUp,\n onOpen,\n onSubmitItem,\n placeholder,\n style: styleFromProps,\n tabIndex,\n value,\n}: Props) {\n const childrenCount = Children.count(children);\n if (childrenCount !== 1 && childrenCount !== 2) {\n if (childrenCount === 0) {\n throw new Error(CHILDREN_ERROR + ' Received no children.');\n }\n console.error(`${CHILDREN_ERROR} Received ${childrenCount} children.`);\n }\n\n let trigger: React.ReactNode;\n if (childrenCount > 1) {\n trigger = (children as ChildrenTuple)[0];\n }\n const isTriggerFromProps = isValidElement(trigger);\n\n const [isOpen, setIsOpen] = useState<boolean>(isOpenOnMount ?? false);\n const [isOpening, setIsOpening] = useState<boolean>(!isOpenOnMount);\n const [dropdownElement, setDropdownElement] = useState<MaybeHTMLElement>(null);\n const [dropdownBodyElement, setDropdownBodyElement] =\n useState<MaybeHTMLElement>(null);\n const [id] = useState(() => {\n idCounter = idCounter >= 999_999 ? 0 : idCounter + 1;\n return idCounter;\n });\n\n const inputElementRef = useRef<HTMLInputElement | null>(null);\n const closingTimerRef = useRef<null | TimeoutID>(null);\n const isOpeningTimerRef = useRef<null | TimeoutID>(null);\n const currentInputMethodRef = useRef<'keyboard' | 'mouse'>('mouse');\n const clearEnteredCharactersTimerRef = useRef<null | TimeoutID>(null);\n const enteredCharactersRef = useRef<string>('');\n const mouseDownPositionRef = useRef<MousePosition | null>(null);\n\n const allowCreateRef = useRef(allowCreate);\n const allowEmptyRef = useRef(allowEmpty);\n const hasItemsRef = useRef(hasItems);\n const isOpenRef = useRef(isOpen);\n const isOpeningRef = useRef(isOpening);\n const keepOpenOnSubmitRef = useRef(keepOpenOnSubmit);\n const onCloseRef = useRef(onClose);\n const onOpenRef = useRef(onOpen);\n const onSubmitItemRef = useRef(onSubmitItem);\n const valueRef = useRef(value);\n\n useEffect(() => {\n allowCreateRef.current = allowCreate;\n allowEmptyRef.current = allowEmpty;\n hasItemsRef.current = hasItems;\n isOpenRef.current = isOpen;\n isOpeningRef.current = isOpening;\n keepOpenOnSubmitRef.current = keepOpenOnSubmit;\n onCloseRef.current = onClose;\n onOpenRef.current = onOpen;\n onSubmitItemRef.current = onSubmitItem;\n valueRef.current = value;\n }, [\n allowCreate,\n allowEmpty,\n hasItems,\n isOpen,\n isOpening,\n keepOpenOnSubmit,\n onClose,\n onOpen,\n onSubmitItem,\n value,\n ]);\n\n const isMountedRef = useRef(false);\n\n useEffect(() => {\n if (!isMountedRef.current) {\n isMountedRef.current = true;\n // If isOpenOnMount, trigger onOpen right away\n if (isOpenRef.current && onOpenRef.current) {\n onOpenRef.current();\n }\n return;\n }\n\n if (isOpen && onOpenRef.current) {\n onOpenRef.current();\n } else if (!isOpen && onCloseRef.current) {\n onCloseRef.current();\n }\n }, [isOpen]);\n\n const closeDropdown = () => {\n setIsOpen(false);\n setIsOpening(false);\n mouseDownPositionRef.current = null;\n if (closingTimerRef.current) {\n clearTimeout(closingTimerRef.current);\n closingTimerRef.current = null;\n }\n };\n\n const handleSubmitItem = (event: Event | React.SyntheticEvent<HTMLElement>) => {\n if (isOpenRef.current && !keepOpenOnSubmitRef.current) {\n // A short timeout before closing is better UX when user selects an item so dropdown\n // doesn’t close before expected. It also enables using <Link />s in the dropdown body.\n closingTimerRef.current = setTimeout(closeDropdown, 90);\n }\n\n if (!hasItemsRef.current) return;\n\n const element = getActiveItemElement(dropdownElement);\n if (!element && !allowCreateRef.current) {\n // If not allowEmpty, don’t allow submitting an empty item\n if (!allowEmptyRef.current) return;\n // If we have an input element as trigger & the user didn’t clear the text, do nothing\n if (inputElementRef.current?.value) return;\n }\n\n let itemLabel = element?.innerText ?? '';\n if (inputElementRef.current) {\n if (!element) {\n itemLabel = inputElementRef.current.value;\n } else {\n inputElementRef.current.value = itemLabel;\n }\n\n if (\n inputElementRef.current ===\n inputElementRef.current.ownerDocument.activeElement\n ) {\n inputElementRef.current.blur();\n }\n }\n\n const nextValue = element?.dataset.uktValue ?? itemLabel;\n // If parent is controlling Dropdown via props.value and nextValue is the same, do nothing\n if (valueRef.current && valueRef.current === nextValue) return;\n\n if (onSubmitItemRef.current) {\n onSubmitItemRef.current({\n element,\n event,\n label: itemLabel,\n value: nextValue,\n });\n }\n };\n\n const handleMouseMove = ({ clientX, clientY }: ReactMouseEvent<HTMLElement>) => {\n currentInputMethodRef.current = 'mouse';\n const initialPosition = mouseDownPositionRef.current;\n if (!initialPosition) return;\n if (\n Math.abs(initialPosition.clientX - clientX) < 12 &&\n Math.abs(initialPosition.clientY - clientY) < 12\n ) {\n return;\n }\n setIsOpening(false);\n };\n\n const handleMouseOver = (event: ReactMouseEvent<HTMLElement>) => {\n if (!hasItemsRef.current) return;\n\n // If user isn’t currently using the mouse to navigate the dropdown, do nothing\n if (currentInputMethodRef.current !== 'mouse') return;\n\n // Ensure we have the dropdown root HTMLElement\n if (!dropdownElement) return;\n\n const itemElements = getItemElements(dropdownElement);\n if (!itemElements) return;\n\n const eventTarget = event.target as HTMLElement;\n const item = eventTarget.closest(ITEM_SELECTOR) as MaybeHTMLElement;\n const element = item ?? eventTarget;\n for (const itemElement of itemElements) {\n if (itemElement === element) {\n setActiveItem({ dropdownElement, element });\n return;\n }\n }\n };\n\n const handleMouseOut = (event: ReactMouseEvent<HTMLElement>) => {\n if (!hasItemsRef.current) return;\n const activeItem = getActiveItemElement(dropdownElement);\n if (!activeItem) return;\n const eventRelatedTarget = event.relatedTarget as HTMLElement;\n if (activeItem !== event.target || activeItem.contains(eventRelatedTarget)) {\n return;\n }\n // If user moused out of activeItem (not into a descendant), it’s no longer active\n delete activeItem.dataset.uktActive;\n };\n\n const handleMouseDown = (event: ReactMouseEvent<HTMLElement>) => {\n if (onMouseDown) onMouseDown(event);\n if (isOpenRef.current) return;\n\n setIsOpen(true);\n setIsOpening(true);\n mouseDownPositionRef.current = {\n clientX: event.clientX,\n clientY: event.clientY,\n };\n isOpeningTimerRef.current = setTimeout(() => {\n setIsOpening(false);\n isOpeningTimerRef.current = null;\n }, 1000);\n };\n\n const handleMouseUp = (event: ReactMouseEvent<HTMLElement>) => {\n if (onMouseUp) onMouseUp(event);\n // If dropdown is still opening or isn’t open or is closing, do nothing\n if (isOpeningRef.current || !isOpenRef.current || closingTimerRef.current) {\n return;\n }\n\n const eventTarget = event.target as HTMLElement;\n // If click was outside dropdown body, don’t trigger submit\n if (!eventTarget.closest(BODY_SELECTOR)) {\n // Don’t close dropdown if isOpening or search input is focused\n if (\n !isOpeningRef.current &&\n inputElementRef.current !== eventTarget.ownerDocument.activeElement\n ) {\n closeDropdown();\n }\n return;\n }\n\n // If dropdown has no items and click was within dropdown body, do nothing\n if (!hasItemsRef.current) return;\n\n handleSubmitItem(event);\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n const { altKey, ctrlKey, key, metaKey } = event;\n const eventTarget = event.target as HTMLElement;\n if (!dropdownElement) return;\n\n const onEventHandled = () => {\n event.stopPropagation();\n event.preventDefault();\n currentInputMethodRef.current = 'keyboard';\n };\n\n const isEventTargetingDropdown = dropdownElement.contains(eventTarget);\n\n if (!isOpenRef.current) {\n // If dropdown is closed, don’t handle key events if event target isn’t within dropdown\n if (!isEventTargetingDropdown) return;\n // Open the dropdown on spacebar, enter, or if isSearchable and user hits the ↑/↓ arrows\n if (\n key === ' ' ||\n key === 'Enter' ||\n (hasItemsRef.current && (key === 'ArrowUp' || key === 'ArrowDown'))\n ) {\n onEventHandled();\n setIsOpen(true);\n }\n return;\n }\n\n const isTargetUsingKeyEvents = isEventTargetUsingKeyEvent(event);\n\n // If dropdown isOpen + hasItems & eventTargetNotUsingKeyEvents, handle characters\n if (hasItemsRef.current && !isTargetUsingKeyEvents) {\n let isEditingCharacters = !ctrlKey && !metaKey && /^[A-Za-z0-9]$/.test(key);\n // User could also be editing characters if there are already characters entered\n // and they are hitting delete or spacebar\n if (!isEditingCharacters && enteredCharactersRef.current) {\n isEditingCharacters = key === ' ' || key === 'Backspace';\n }\n\n if (isEditingCharacters) {\n onEventHandled();\n if (key === 'Backspace') {\n enteredCharactersRef.current = enteredCharactersRef.current.slice(\n 0,\n -1,\n );\n } else {\n enteredCharactersRef.current += key;\n }\n\n setActiveItem({\n dropdownElement,\n // If props.allowCreate, only override the input’s value with an\n // exact text match so user can enter a value not in items\n isExactMatch: allowCreateRef.current,\n text: enteredCharactersRef.current,\n });\n\n if (clearEnteredCharactersTimerRef.current) {\n clearTimeout(clearEnteredCharactersTimerRef.current);\n }\n\n clearEnteredCharactersTimerRef.current = setTimeout(() => {\n enteredCharactersRef.current = '';\n clearEnteredCharactersTimerRef.current = null;\n }, 1500);\n\n return;\n }\n }\n\n // If dropdown isOpen, handle submitting the value\n if (key === 'Enter' || (key === ' ' && !inputElementRef.current)) {\n onEventHandled();\n handleSubmitItem(event);\n return;\n }\n\n // If dropdown isOpen, handle closing it on escape or spacebar if !hasItems\n if (\n key === 'Escape' ||\n (isEventTargetingDropdown && key === ' ' && !hasItemsRef.current)\n ) {\n // Close dropdown if hasItems or event target not using key events\n if (hasItemsRef.current || !isTargetUsingKeyEvents) {\n closeDropdown();\n }\n return;\n }\n\n // Handle ↑/↓ arrows\n if (hasItemsRef.current) {\n if (key === 'ArrowUp') {\n onEventHandled();\n if (altKey || metaKey) {\n setActiveItem({ dropdownElement, index: 0 });\n } else {\n setActiveItem({ dropdownElement, indexAddend: -1 });\n }\n return;\n }\n if (key === 'ArrowDown') {\n onEventHandled();\n if (altKey || metaKey) {\n // Using a negative index counts back from the end\n setActiveItem({ dropdownElement, index: -1 });\n } else {\n setActiveItem({ dropdownElement, indexAddend: 1 });\n }\n return;\n }\n }\n };\n\n useKeyboardEvents({ ignoreUsedKeyboardEvents: false, onKeyDown: handleKeyDown });\n\n const cleanupEventListenersRef = useRef<() => void>(noop);\n\n const handleRef = (ref: HTMLDivElement | null) => {\n setDropdownElement(ref);\n if (!ref) {\n // If component was unmounted, cleanup handlers\n cleanupEventListenersRef.current();\n cleanupEventListenersRef.current = noop;\n return;\n }\n\n const { ownerDocument } = ref;\n let inputElement = inputElementRef.current;\n // Check if trigger from props is a textual input or textarea element\n if (isTriggerFromProps && !inputElement && ref.firstElementChild) {\n if (ref.firstElementChild.matches(TEXT_INPUT_SELECTOR)) {\n inputElement = ref.firstElementChild as HTMLInputElement;\n } else {\n inputElement = ref.firstElementChild.querySelector(TEXT_INPUT_SELECTOR);\n }\n inputElementRef.current = inputElement;\n }\n\n const handleGlobalMouseDown = ({ target }: MouseEvent) => {\n const eventTarget = target as HTMLElement;\n if (!ref.contains(eventTarget)) {\n // Close dropdown on an outside click\n closeDropdown();\n }\n };\n\n const handleGlobalMouseUp = ({ target }: MouseEvent) => {\n if (!isOpenRef.current || closingTimerRef.current) return;\n\n // If still isOpening (gets set false 1s after open triggers), set it to false onMouseUp\n if (isOpeningRef.current) {\n setIsOpening(false);\n if (isOpeningTimerRef.current) {\n clearTimeout(isOpeningTimerRef.current);\n isOpeningTimerRef.current = null;\n }\n return;\n }\n\n const eventTarget = target as HTMLElement;\n // Only handle mouseup events from outside the dropdown here\n if (!ref.contains(eventTarget)) {\n closeDropdown();\n }\n };\n\n // Close dropdown if any element is focused outside of this dropdown\n const handleGlobalFocusIn = ({ target }: Event) => {\n if (!isOpenRef.current) return;\n\n const eventTarget = target as HTMLElement;\n // If focused element is a descendant or a parent of the dropdown, do nothing\n if (ref.contains(eventTarget) || eventTarget.contains(ref)) {\n return;\n }\n\n closeDropdown();\n };\n\n document.addEventListener('focusin', handleGlobalFocusIn);\n document.addEventListener('mousedown', handleGlobalMouseDown);\n document.addEventListener('mouseup', handleGlobalMouseUp);\n\n if (ownerDocument !== document) {\n ownerDocument.addEventListener('focusin', handleGlobalFocusIn);\n ownerDocument.addEventListener('mousedown', handleGlobalMouseDown);\n ownerDocument.addEventListener('mouseup', handleGlobalMouseUp);\n }\n\n // If dropdown should be open on mount, focus it\n if (isOpenOnMount) {\n ref.focus();\n }\n\n const handleInput = (event: Event) => {\n if (!isOpenRef.current) setIsOpen(true);\n\n const input = event.target as HTMLInputElement;\n const isDeleting = enteredCharactersRef.current.length > input.value.length;\n enteredCharactersRef.current = input.value;\n // When deleting text, if there’s already an active item and\n // input isn’t empty, preserve the active item, else update it\n if (isDeleting && input.value.length && getActiveItemElement(ref)) {\n return;\n }\n\n setActiveItem({\n dropdownElement: ref,\n // If props.allowCreate, only override the input’s value with an\n // exact text match so user can enter a value not in items\n isExactMatch: allowCreateRef.current,\n text: enteredCharactersRef.current,\n });\n };\n\n if (inputElement) {\n inputElement.addEventListener('input', handleInput);\n }\n\n cleanupEventListenersRef.current = () => {\n document.removeEventListener('focusin', handleGlobalFocusIn);\n document.removeEventListener('mousedown', handleGlobalMouseDown);\n document.removeEventListener('mouseup', handleGlobalMouseUp);\n\n if (ownerDocument !== document) {\n ownerDocument.removeEventListener('focusin', handleGlobalFocusIn);\n ownerDocument.removeEventListener('mousedown', handleGlobalMouseDown);\n ownerDocument.removeEventListener('mouseup', handleGlobalMouseUp);\n }\n\n if (inputElement) {\n inputElement.removeEventListener('input', handleInput);\n }\n };\n };\n\n if (!isTriggerFromProps) {\n if (isSearchable) {\n trigger = (\n <input\n autoComplete=\"off\"\n className={TRIGGER_CLASS_NAME}\n defaultValue={value ?? ''}\n disabled={disabled}\n name={name}\n onFocus={() => setIsOpen(true)}\n placeholder={placeholder}\n ref={inputElementRef}\n tabIndex={tabIndex}\n type=\"text\"\n />\n );\n } else {\n trigger = (\n <button className={TRIGGER_CLASS_NAME} tabIndex={0}>\n {trigger}\n </button>\n );\n }\n }\n\n if (label) {\n trigger = (\n <label className={LABEL_CLASS_NAME}>\n <div className={LABEL_TEXT_CLASS_NAME}>{label}</div>\n {trigger}\n </label>\n );\n }\n\n const dropdownRect = useBoundingClientRect(dropdownElement);\n const dropdownBodyRect = useBoundingClientRect(dropdownBodyElement);\n const boundingElement = getBoundingAncestor(dropdownBodyElement);\n const boundingElementRect = useBoundingClientRect(boundingElement);\n let maxHeight;\n let maxWidth;\n if (\n dropdownBodyRect.top != null &&\n dropdownRect.top != null &&\n boundingElementRect.top != null\n ) {\n const maxHeightUp = dropdownBodyRect.bottom - boundingElementRect.top;\n const maxHeightDown = boundingElementRect.bottom - dropdownBodyRect.top;\n maxHeight = Math.round(\n dropdownBodyRect.top > dropdownRect.top ? maxHeightDown : maxHeightUp,\n );\n const maxWidthLeft = dropdownBodyRect.right - boundingElementRect.left;\n const maxWidthRight = boundingElementRect.right - dropdownBodyRect.left;\n maxWidth = Math.round(\n dropdownBodyRect.left > dropdownRect.left ? maxWidthRight : maxWidthLeft,\n );\n }\n\n const style = {\n ...styleFromProps,\n ...(maxHeight != null && maxHeight > minHeightBody\n ? { [BODY_MAX_HEIGHT_VAR]: `calc(${maxHeight}px - var(--uktdd-body-buffer))` }\n : null),\n ...(maxWidth != null && maxWidth > minWidthBody\n ? { [BODY_MAX_WIDTH_VAR]: `calc(${maxWidth}px - var(--uktdd-body-buffer))` }\n : null),\n };\n\n const anchorStyles = `\\\n[data-ukt-id=\"${id}\"] > :first-child {\n anchor-name: --uktdd-anchor${id};\n}\n[data-ukt-id=\"${id}\"] ${BODY_SELECTOR} {\n position-anchor: --uktdd-anchor${id};\n}`;\n\n return (\n <Fragment>\n <Style href=\"@acusti/dropdown/Dropdown\">{STYLES}</Style>\n <Style href={`@acusti/dropdown/Dropdown/${id}`}>{anchorStyles}</Style>\n <div\n className={clsx(ROOT_CLASS_NAME, className, {\n disabled,\n 'is-open': isOpen,\n 'is-searchable': isSearchable,\n })}\n data-ukt-id={id}\n onClick={onClick}\n onMouseDown={handleMouseDown}\n onMouseMove={handleMouseMove}\n onMouseOut={handleMouseOut}\n onMouseOver={handleMouseOver}\n onMouseUp={handleMouseUp}\n ref={handleRef}\n style={style}\n >\n {trigger}\n {/* TODO next version of Dropdown should use <Activity> for body https://react.dev/reference/react/Activity */}\n {isOpen ? (\n <div className={BODY_CLASS_NAME} ref={setDropdownBodyElement}>\n {childrenCount > 1 ? (children as ChildrenTuple)[1] : children}\n </div>\n ) : null}\n </div>\n </Fragment>\n );\n}\n\nfunction getBoundingAncestor(element?: MaybeHTMLElement): MaybeHTMLElement {\n while (element?.parentElement) {\n // If we’ve reached the body, use that as boundingElement\n if (element.parentElement.tagName === 'BODY') return element.parentElement;\n // Only need to check one overflow direction, because if either direction\n // is not visible, neither can be visible\n if (getComputedStyle(element.parentElement).overflowX !== 'visible') {\n return element.parentElement;\n }\n\n element = element.parentElement as MaybeHTMLElement;\n }\n\n return null;\n}\n"],"names":["ROOT_CLASS_NAME","ROOT_SELECTOR","BODY_CLASS_NAME","LABEL_CLASS_NAME","LABEL_TEXT_CLASS_NAME","TRIGGER_CLASS_NAME","BODY_SELECTOR","LABEL_SELECTOR","LABEL_TEXT_SELECTOR","TRIGGER_SELECTOR","BODY_MAX_HEIGHT_VAR","BODY_MAX_WIDTH_VAR","STYLES","SYSTEM_UI_FONT","ITEM_SELECTOR","getItemElements","dropdownElement","bodyElement","querySelector","items","querySelectorAll","length","children","getActiveItemElement","clearItemElementsState","itemElements","forEach","itemElement","hasAttribute","dataset","uktActive","setActiveItem","element","index","indexAddend","isExactMatch","text","Array","from","lastIndex","currentActiveIndex","findIndex","nextActiveIndex","itemTexts","map","innerText","textToCompare","toLowerCase","itemText","startsWith","bestMatch","getBestMatch","nextActiveItem","setAttribute","parentElement","scrollableParent","isScrollable","scrollHeight","clientHeight","parentRect","getBoundingClientRect","itemRect","isAboveTop","top","isBelowBottom","bottom","scrollTop","noop","CHILDREN_ERROR","TEXT_INPUT_SELECTOR","idCounter","Dropdown","t0","$","_c","allowCreate","allowEmpty","t1","className","disabled","hasItems","t2","isOpenOnMount","isSearchable","keepOpenOnSubmit","t3","label","minHeightBody","t4","minWidthBody","t5","name","onClick","onClose","onMouseDown","onMouseUp","onOpen","onSubmitItem","placeholder","style","styleFromProps","tabIndex","value","undefined","childrenCount","Children","count","Error","console","error","trigger","t6","isValidElement","isTriggerFromProps","isOpen","setIsOpen","useState","isOpening","setIsOpening","setDropdownElement","dropdownBodyElement","setDropdownBodyElement","id","_temp","inputElementRef","useRef","closingTimerRef","isOpeningTimerRef","currentInputMethodRef","clearEnteredCharactersTimerRef","enteredCharactersRef","mouseDownPositionRef","allowCreateRef","allowEmptyRef","hasItemsRef","isOpenRef","isOpeningRef","keepOpenOnSubmitRef","onCloseRef","onOpenRef","onSubmitItemRef","valueRef","t7","t8","current","useEffect","isMountedRef","t10","t9","t11","Symbol","for","clearTimeout","closeDropdown","t12","event","setTimeout","itemLabel","ownerDocument","activeElement","blur","nextValue","uktValue","handleSubmitItem","t13","t14","clientX","clientY","initialPosition","Math","abs","handleMouseMove","event_0","eventTarget","target","item","closest","element_0","handleMouseOver","t15","event_1","activeItem","eventRelatedTarget","relatedTarget","contains","handleMouseOut","t16","event_2","handleMouseDown","t17","event_3","eventTarget_0","handleMouseUp","t18","event_4","altKey","ctrlKey","key","metaKey","eventTarget_1","onEventHandled","stopPropagation","preventDefault","isEventTargetingDropdown","isTargetUsingKeyEvents","isEventTargetUsingKeyEvent","isEditingCharacters","test","slice","handleKeyDown","t19","ignoreUsedKeyboardEvents","onKeyDown","useKeyboardEvents","cleanupEventListenersRef","t20","ref","inputElement","firstElementChild","matches","handleGlobalMouseDown","t21","eventTarget_2","handleGlobalMouseUp","t22","target_0","eventTarget_3","handleGlobalFocusIn","t23","target_1","eventTarget_4","addEventListener","document","focus","handleInput","event_5","input","isDeleting","removeEventListener","handleRef","dropdownRect","useBoundingClientRect","dropdownBodyRect","getBoundingAncestor","boundingElement","boundingElementRect","maxHeight","maxWidth","maxHeightUp","maxHeightDown","round","maxWidthLeft","right","left","maxWidthRight","t24","anchorStyles","t25","t26","t27","t28","clsx","t29","t30","t31","tagName","getComputedStyle","overflowX"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@acusti/dropdown",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.50.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"exports": "./dist/Dropdown.js",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
59
|
"@acusti/matchmaking": "^0.10.0",
|
|
60
|
-
"@acusti/styling": "^2.0
|
|
60
|
+
"@acusti/styling": "^2.1.0",
|
|
61
61
|
"@acusti/use-bounding-client-rect": "^2.0.1",
|
|
62
62
|
"@acusti/use-keyboard-events": "^0.11.0",
|
|
63
63
|
"clsx": "^2"
|