@acusti/dropdown 0.12.1 → 0.15.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/README.md +1 -1
- package/dist/Dropdown.js +2 -1
- package/dist/Dropdown.js.flow +5 -5
- package/dist/Dropdown.js.map +1 -1
- package/dist/helpers.js.flow +10 -10
- package/dist/helpers.js.map +1 -1
- package/dist/styles.js.flow +2 -2
- package/package.json +9 -8
- package/src/Dropdown.tsx +584 -0
- package/src/helpers.ts +180 -0
- package/src/styles.ts +83 -0
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# @acusti/dropdown
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/@acusti/dropdown)
|
|
4
|
-
[](https://libraries.io/npm/@acusti%2Fdropdown/sourcerank)
|
|
5
5
|
[](https://bundlephobia.com/package/@acusti/dropdown)
|
|
6
6
|
[](https://www.npmjs.com/package/@acusti/dropdown)
|
|
7
7
|
|
package/dist/Dropdown.js
CHANGED
|
@@ -234,7 +234,8 @@ const Dropdown = ({ allowEmpty = true, children, className, disabled, hasItems =
|
|
|
234
234
|
if (isEditingCharacters) {
|
|
235
235
|
onEventHandled();
|
|
236
236
|
if (key === 'Backspace') {
|
|
237
|
-
enteredCharactersRef.current =
|
|
237
|
+
enteredCharactersRef.current =
|
|
238
|
+
enteredCharactersRef.current.slice(0, -1);
|
|
238
239
|
}
|
|
239
240
|
else {
|
|
240
241
|
enteredCharactersRef.current += key;
|
package/dist/Dropdown.js.flow
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Flowtype definitions for Dropdown
|
|
3
3
|
* Generated by Flowgen from a Typescript Definition
|
|
4
|
-
* Flowgen v1.
|
|
4
|
+
* Flowgen v1.14.1
|
|
5
5
|
* @flow
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import * as React from "react";
|
|
9
|
-
export type Item = {
|
|
9
|
+
export type Item = {|
|
|
10
10
|
element: HTMLElement | null,
|
|
11
11
|
value: string,
|
|
12
|
-
};
|
|
13
|
-
export type Props = {
|
|
12
|
+
|};
|
|
13
|
+
export type Props = {|
|
|
14
14
|
/**
|
|
15
15
|
* Boolean indicating if the user can submit an empty value (i.e. clear the value); defaults to true
|
|
16
16
|
*/
|
|
@@ -53,6 +53,6 @@ export type Props = {
|
|
|
53
53
|
* Used to determine if value has changed to avoid triggering onSubmitItem if not
|
|
54
54
|
*/
|
|
55
55
|
value?: string,
|
|
56
|
-
};
|
|
56
|
+
|};
|
|
57
57
|
declare var Dropdown: React.StatelessFunctionalComponent<Props>;
|
|
58
58
|
declare export default typeof Dropdown;
|
package/dist/Dropdown.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dropdown.js","sourceRoot":"","sources":["../src/Dropdown.tsx"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,gBAAgB,MAAM,8BAA8B,CAAC;AAC5D,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EACH,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,MAAM,EACN,kBAAkB,GACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EACH,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,aAAa,GAChB,MAAM,cAAc,CAAC;AAiCtB,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;AAErF,MAAM,IAAI,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;AAEtB,MAAM,cAAc,GAChB,yHAAyH,CAAC;AAE9H,MAAM,QAAQ,GAAoB,CAAC,EAC/B,UAAU,GAAG,IAAI,EACjB,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,QAAQ,GAAG,IAAI,EACf,aAAa,EACb,YAAY,EACZ,KAAK,EACL,IAAI,EACJ,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,KAAK,GACR,EAAE,EAAE;IACD,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI,aAAa,KAAK,CAAC,IAAI,aAAa,KAAK,CAAC,EAAE;QAC5C,IAAI,aAAa,KAAK,CAAC,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,cAAc,GAAG,wBAAwB,CAAC,CAAC;SAC9D;QACD,OAAO,CAAC,KAAK,CAAC,GAAG,cAAc,aAAa,aAAa,YAAY,CAAC,CAAC;KAC1E;IAED,IAAI,OAAO,GAAG,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrD,MAAM,kBAAkB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAU,aAAa,IAAI,KAAK,CAAC,CAAC;IACtE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAU,CAAC,aAAa,CAAC,CAAC;IACpE,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,QAAQ,CAC1D,IAAI,CACP,CAAC;IAEF,MAAM,kBAAkB,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IAC/D,MAAM,eAAe,GAAG,MAAM,CAA0B,IAAI,CAAC,CAAC;IAC9D,MAAM,eAAe,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;IACpD,MAAM,iBAAiB,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;IACtD,MAAM,qBAAqB,GAAG,MAAM,CAAuB,OAAO,CAAC,CAAC;IACpE,MAAM,8BAA8B,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;IACnE,MAAM,oBAAoB,GAAG,MAAM,CAAS,EAAE,CAAC,CAAC;IAChD,MAAM,oBAAoB,GAAG,MAAM,CAAuB,IAAI,CAAC,CAAC;IAChE,MAAM,WAAW,GAAG,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;IAE1D,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,qBAAqB,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAChD,MAAM,eAAe,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAE/B,eAAe,CAAC,GAAG,EAAE;QACjB,aAAa,CAAC,OAAO,GAAG,UAAU,CAAC;QACnC,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;QAC/B,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC;QAC3B,YAAY,CAAC,OAAO,GAAG,SAAS,CAAC;QACjC,qBAAqB,CAAC,OAAO,GAAG,kBAAkB,CAAC;QACnD,eAAe,CAAC,OAAO,GAAG,YAAY,CAAC;QACvC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;IAC7B,CAAC,EAAE;QACC,UAAU;QACV,QAAQ;QACR,MAAM;QACN,SAAS;QACT,kBAAkB;QAClB,YAAY;QACZ,KAAK;KACR,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,SAAS,CAAC,KAAK,CAAC,CAAC;QACjB,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,oBAAoB,CAAC,OAAO,GAAG,IAAI,CAAC;QACpC,IAAI,eAAe,CAAC,OAAO,EAAE;YACzB,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YACtC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;SAClC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,EAAE;;QACtC,IAAI,SAAS,CAAC,OAAO,EAAE;YACnB,oFAAoF;YACpF,uFAAuF;YACvF,eAAe,CAAC,OAAO,GAAG,UAAU,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;SAC3D;QAED,IAAI,CAAC,WAAW,CAAC,OAAO;YAAE,OAAO;QAEjC,MAAM,WAAW,GAAG,oBAAoB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACrE,IAAI,CAAC,WAAW,EAAE;YACd,0DAA0D;YAC1D,IAAI,CAAC,aAAa,CAAC,OAAO;gBAAE,OAAO;YACnC,sFAAsF;YACtF,IAAI,MAAA,eAAe,CAAC,OAAO,0CAAE,KAAK;gBAAE,OAAO;SAC9C;QAED,MAAM,KAAK,GAAG,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,SAAS,KAAI,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,CAAC,QAAQ,KAAI,KAAK,CAAC;QACzD,MAAM,QAAQ,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC5D,IAAI,eAAe,CAAC,OAAO,EAAE;YACzB,eAAe,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;YACtC,IACI,eAAe,CAAC,OAAO;gBACvB,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,EACrD;gBACE,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;aAClC;SACJ;QAED,0FAA0F;QAC1F,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS;YAAE,OAAO;QAE/D,IAAI,eAAe,CAAC,OAAO,EAAE;YACzB,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;SACrC;IACL,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,MAAM,eAAe,GAAG,WAAW,CAC/B,CAAC,EAAE,OAAO,EAAE,OAAO,EAAiC,EAAE,EAAE;QACpD,qBAAqB,CAAC,OAAO,GAAG,OAAO,CAAC;QACxC,MAAM,eAAe,GAAG,oBAAoB,CAAC,OAAO,CAAC;QACrD,IAAI,CAAC,eAAe;YAAE,OAAO;QAC7B,IACI,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE;YAChD,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,EAClD;YACE,OAAO;SACV;QACD,YAAY,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC,EACD,EAAE,CACL,CAAC;IAEF,MAAM,eAAe,GAAG,WAAW,CAAC,CAAC,KAAoC,EAAE,EAAE;QACzE,IAAI,CAAC,WAAW,CAAC,OAAO;YAAE,OAAO;QAEjC,+EAA+E;QAC/E,IAAI,qBAAqB,CAAC,OAAO,KAAK,OAAO;YAAE,OAAO;QAEtD,+CAA+C;QAC/C,MAAM,eAAe,GAAG,kBAAkB,CAAC,OAAO,CAAC;QACnD,IAAI,CAAC,eAAe;YAAE,OAAO;QAE7B,MAAM,YAAY,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC;QACtD,IAAI,CAAC,YAAY;YAAE,OAAO;QAE1B,MAAM,WAAW,GAAG,KAAK,CAAC,MAAqB,CAAC;QAChD,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,aAAa,CAAuB,CAAC;QACtE,MAAM,OAAO,GAAG,IAAI,IAAI,WAAW,CAAC;QACpC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACtD,IAAI,YAAY,CAAC,KAAK,CAAC,KAAK,OAAO,EAAE;gBACjC,aAAa,CAAC;oBACV,eAAe;oBACf,OAAO;iBACV,CAAC,CAAC;gBACH,OAAO;aACV;SACJ;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,wBAAwB,GAAG,MAAM,CAAa,IAAI,CAAC,CAAC;IAE1D,MAAM,SAAS,GAAG,WAAW,CACzB,CAAC,GAA0B,EAAE,EAAE;QAC3B,kBAAkB,CAAC,OAAO,GAAG,GAAG,CAAC;QACjC,IAAI,CAAC,GAAG,EAAE;YACN,+CAA+C;YAC/C,wBAAwB,CAAC,OAAO,EAAE,CAAC;YACnC,wBAAwB,CAAC,OAAO,GAAG,IAAI,CAAC;YACxC,OAAO;SACV;QAED,MAAM,EAAE,aAAa,EAAE,GAAG,GAAG,CAAC;QAC9B,IAAI,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC;QAC3C,8DAA8D;QAC9D,IAAI,kBAAkB,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC,iBAAiB,EAAE;YAC9D,YAAY,GAAG,GAAG,CAAC,iBAAiB,CAAC,aAAa,CAC9C,yEAAyE,CAC5E,CAAC;YACF,eAAe,CAAC,OAAO,GAAG,YAAY,CAAC;SAC1C;QAED,MAAM,eAAe,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAc,EAAE,EAAE;YACjE,MAAM,WAAW,GAAG,MAAqB,CAAC;YAC1C,IACI,kBAAkB,CAAC,OAAO;gBAC1B,CAAC,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EACnD;gBACE,qCAAqC;gBACrC,aAAa,EAAE,CAAC;gBAChB,OAAO;aACV;YAED,IAAI,SAAS,CAAC,OAAO;gBAAE,OAAO;YAE9B,SAAS,CAAC,IAAI,CAAC,CAAC;YAChB,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,oBAAoB,CAAC,OAAO,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;YACpD,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBACxC,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC;YACrC,CAAC,EAAE,IAAI,CAAC,CAAC;QACb,CAAC,CAAC;QAEF,MAAM,aAAa,GAAG,CAAC,EAAE,MAAM,EAAc,EAAE,EAAE;YAC7C,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,eAAe,CAAC,OAAO;gBAAE,OAAO;YAE1D,wFAAwF;YACxF,IAAI,YAAY,CAAC,OAAO,EAAE;gBACtB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,IAAI,iBAAiB,CAAC,OAAO,EAAE;oBAC3B,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;oBACxC,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC;iBACpC;gBACD,OAAO;aACV;YAED,MAAM,cAAc,GAAI,MAAsB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAEtE,kFAAkF;YAClF,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,cAAc;gBAAE,OAAO;YAEnD,yEAAyE;YACzE,IAAI,cAAc,EAAE;gBAChB,gBAAgB,EAAE,CAAC;aACtB;iBAAM,IACH,CAAC,eAAe,CAAC,OAAO;gBACxB,CAAC,kBAAkB,CAAC,OAAO;oBACvB,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,EACvE;gBACE,4EAA4E;gBAC5E,aAAa,EAAE,CAAC;aACnB;QACL,CAAC,CAAC;QAEF,MAAM,aAAa,GAAG,CAAC,KAAoB,EAAE,EAAE;YAC3C,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;YAChD,MAAM,WAAW,GAAG,KAAK,CAAC,MAAqB,CAAC;YAChD,MAAM,eAAe,GAAG,kBAAkB,CAAC,OAAO,CAAC;YACnD,IAAI,CAAC,eAAe;gBAAE,OAAO;YAE7B,MAAM,cAAc,GAAG,GAAG,EAAE;gBACxB,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,qBAAqB,CAAC,OAAO,GAAG,UAAU,CAAC;YAC/C,CAAC,CAAC;YAEF,MAAM,wBAAwB,GAAG,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAEvE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;gBACpB,uFAAuF;gBACvF,IAAI,CAAC,wBAAwB;oBAAE,OAAO;gBACtC,4FAA4F;gBAC5F,IACI,GAAG,KAAK,GAAG;oBACX,GAAG,KAAK,OAAO;oBACf,CAAC,WAAW,CAAC,OAAO;wBAChB,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,WAAW,CAAC,CAAC,EACjD;oBACE,cAAc,EAAE,CAAC;oBACjB,SAAS,CAAC,IAAI,CAAC,CAAC;oBAChB,OAAO;iBACV;gBAED,OAAO;aACV;YAED,iFAAiF;YACjF,IAAI,WAAW,CAAC,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE;gBACjD,IAAI,mBAAmB,GACnB,CAAC,OAAO,IAAI,CAAC,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtD,gFAAgF;gBAChF,0CAA0C;gBAC1C,IAAI,CAAC,mBAAmB,IAAI,oBAAoB,CAAC,OAAO,EAAE;oBACtD,mBAAmB,GAAG,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,WAAW,CAAC;iBAC5D;gBAED,IAAI,mBAAmB,EAAE;oBACrB,cAAc,EAAE,CAAC;oBACjB,IAAI,GAAG,KAAK,WAAW,EAAE;wBACrB,oBAAoB,CAAC,OAAO,GAAG,oBAAoB,CAAC,OAAO,CAAC,KAAK,CAC7D,CAAC,EACD,CAAC,CAAC,CACL,CAAC;qBACL;yBAAM;wBACH,oBAAoB,CAAC,OAAO,IAAI,GAAG,CAAC;qBACvC;oBAED,aAAa,CAAC;wBACV,eAAe;wBACf,oEAAoE;wBACpE,kEAAkE;wBAClE,YAAY,EAAE,qBAAqB,CAAC,OAAO;wBAC3C,IAAI,EAAE,oBAAoB,CAAC,OAAO;qBACrC,CAAC,CAAC;oBAEH,IAAI,8BAA8B,CAAC,OAAO,EAAE;wBACxC,YAAY,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;qBACxD;oBAED,8BAA8B,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;wBACrD,oBAAoB,CAAC,OAAO,GAAG,EAAE,CAAC;wBAClC,8BAA8B,CAAC,OAAO,GAAG,IAAI,CAAC;oBAClD,CAAC,EAAE,IAAI,CAAC,CAAC;oBAET,OAAO;iBACV;aACJ;YACD,kDAAkD;YAClD,IAAI,GAAG,KAAK,OAAO,IAAI,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;gBAC9D,cAAc,EAAE,CAAC;gBACjB,gBAAgB,EAAE,CAAC;gBACnB,OAAO;aACV;YACD,2EAA2E;YAC3E,IACI,GAAG,KAAK,QAAQ;gBAChB,CAAC,wBAAwB,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EACnE;gBACE,+EAA+E;gBAC/E,IACI,CAAC,WAAW,CAAC,OAAO;oBACpB,CAAC,WAAW,CAAC,iBAAiB;wBAC1B,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAClD;oBACE,OAAO;iBACV;gBACD,aAAa,EAAE,CAAC;gBAChB,OAAO;aACV;YACD,oBAAoB;YACpB,IAAI,WAAW,CAAC,OAAO,EAAE;gBACrB,IAAI,GAAG,KAAK,SAAS,EAAE;oBACnB,cAAc,EAAE,CAAC;oBACjB,IAAI,MAAM,IAAI,OAAO,EAAE;wBACnB,aAAa,CAAC;4BACV,eAAe;4BACf,KAAK,EAAE,CAAC;yBACX,CAAC,CAAC;qBACN;yBAAM;wBACH,aAAa,CAAC;4BACV,eAAe;4BACf,WAAW,EAAE,CAAC,CAAC;yBAClB,CAAC,CAAC;qBACN;oBACD,OAAO;iBACV;gBACD,IAAI,GAAG,KAAK,WAAW,EAAE;oBACrB,cAAc,EAAE,CAAC;oBACjB,IAAI,MAAM,IAAI,OAAO,EAAE;wBACnB,kDAAkD;wBAClD,aAAa,CAAC;4BACV,eAAe;4BACf,KAAK,EAAE,CAAC,CAAC;yBACZ,CAAC,CAAC;qBACN;yBAAM;wBACH,aAAa,CAAC;4BACV,eAAe;4BACf,WAAW,EAAE,CAAC;yBACjB,CAAC,CAAC;qBACN;oBACD,OAAO;iBACV;aACJ;QACL,CAAC,CAAC;QAEF,oEAAoE;QACpE,MAAM,aAAa,GAAG,CAAC,KAAY,EAAE,EAAE;YACnC,IAAI,CAAC,SAAS,CAAC,OAAO;gBAAE,OAAO;YAE/B,MAAM,WAAW,GAAG,KAAK,CAAC,MAAqB,CAAC;YAChD,6EAA6E;YAC7E,IACI,CAAC,kBAAkB,CAAC,OAAO;gBAC3B,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAChD,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAClD;gBACE,OAAO;aACV;YAED,aAAa,EAAE,CAAC;QACpB,CAAC,CAAC;QAEF,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACpD,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACpD,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QACxD,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAEpD,IAAI,aAAa,KAAK,QAAQ,EAAE;YAC5B,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YACzD,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YACzD,aAAa,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YAC7D,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;SAC5D;QAED,gDAAgD;QAChD,IAAI,aAAa,EAAE;YACf,GAAG,CAAC,KAAK,EAAE,CAAC;SACf;QAED,MAAM,WAAW,GAAG,CAAC,KAAY,EAAE,EAAE;YACjC,MAAM,eAAe,GAAG,kBAAkB,CAAC,OAAO,CAAC;YACnD,IAAI,CAAC,eAAe;gBAAE,OAAO;YAE7B,IAAI,CAAC,SAAS,CAAC,OAAO;gBAAE,SAAS,CAAC,IAAI,CAAC,CAAC;YAExC,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B,CAAC;YAC/C,MAAM,UAAU,GACZ,oBAAoB,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;YAC7D,oBAAoB,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;YAC3C,gFAAgF;YAChF,IAAI,UAAU,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM;gBAAE,OAAO;YAE7C,aAAa,CAAC;gBACV,eAAe;gBACf,oEAAoE;gBACpE,kEAAkE;gBAClE,YAAY,EAAE,qBAAqB,CAAC,OAAO;gBAC3C,IAAI,EAAE,oBAAoB,CAAC,OAAO;aACrC,CAAC,CAAC;QACP,CAAC,CAAC;QAEF,IAAI,YAAY,EAAE;YACd,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;SACvD;QAED,wBAAwB,CAAC,OAAO,GAAG,GAAG,EAAE;YACpC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YACvD,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YACvD,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YAC3D,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YAEvD,IAAI,aAAa,KAAK,QAAQ,EAAE;gBAC5B,aAAa,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;gBAC5D,aAAa,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;gBAC5D,aAAa,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;gBAChE,aAAa,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;aAC/D;YAED,IAAI,YAAY,EAAE;gBACd,YAAY,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;aAC1D;QACL,CAAC,CAAC;IACN,CAAC,EACD,CAAC,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,kBAAkB,CAAC,CACvE,CAAC;IAEF,MAAM,kBAAkB,GAAG,WAAW,CAAC,GAAG,EAAE;QACxC,SAAS,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAI,CAAC,kBAAkB,EAAE;QACrB,IAAI,YAAY,EAAE;YACd,OAAO,GAAG,CACN,oBAAC,SAAS,IACN,SAAS,EAAE,kBAAkB,EAC7B,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,KAAK,IAAI,EAAE,EACzB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,kBAAkB,EAC3B,WAAW,EAAE,WAAW,EACxB,GAAG,EAAE,eAAe,EACpB,iBAAiB,QACjB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAC,MAAM,GACb,CACL,CAAC;SACL;aAAM;YACH,OAAO,GAAG,CACN,gCAAQ,SAAS,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,IAC7C,OAAO,CACH,CACZ,CAAC;SACL;KACJ;IAED,IAAI,KAAK,EAAE;QACP,OAAO,GAAG,CACN,+BAAO,SAAS,EAAE,gBAAgB;YAC9B,6BAAK,SAAS,EAAE,qBAAqB,IAAG,KAAK,CAAO;YACnD,OAAO,CACJ,CACX,CAAC;KACL;IAED,OAAO,CACH,oBAAC,QAAQ;QACL,oBAAC,KAAK,QAAE,MAAM,CAAS;QACvB,6BACI,SAAS,EAAE,UAAU,CAAC,eAAe,EAAE,SAAS,EAAE;gBAC9C,QAAQ;gBACR,SAAS,EAAE,MAAM;gBACjB,eAAe,EAAE,YAAY;aAChC,CAAC,EACF,WAAW,EAAE,eAAe,EAC5B,WAAW,EAAE,eAAe,EAC5B,GAAG,EAAE,SAAS,EACd,QAAQ,EACJ,YAAY,IAAI,eAAe,CAAC,OAAO,IAAI,CAAC,kBAAkB;gBAC1D,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,CAAC;YAGV,OAAO;YACP,MAAM,CAAC,CAAC,CAAC,CACN,6BACI,SAAS,EAAE,UAAU,CAAC,eAAe,EAAE;oBACnC,sBAAsB,EAAE,CAAC,WAAW,CAAC,SAAS;oBAC9C,WAAW,EAAE,QAAQ;oBACrB,sBAAsB,EAAE,WAAW,CAAC,MAAM;oBAC1C,oBAAoB,EAAE,WAAW,CAAC,IAAI;oBACtC,qBAAqB,EAAE,WAAW,CAAC,KAAK;oBACxC,mBAAmB,EAAE,WAAW,CAAC,GAAG;iBACvC,CAAC,EACF,GAAG,EAAE,sBAAsB,IAE1B,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CACrC,CACT,CAAC,CAAC,CAAC,IAAI,CACN,CACC,CACd,CAAC;AACN,CAAC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"Dropdown.js","sourceRoot":"","sources":["../src/Dropdown.tsx"],"names":[],"mappings":"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"}
|
package/dist/helpers.js.flow
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Flowtype definitions for helpers
|
|
3
3
|
* Generated by Flowgen from a Typescript Definition
|
|
4
|
-
* Flowgen v1.
|
|
4
|
+
* Flowgen v1.14.1
|
|
5
5
|
* @flow
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
declare export var ITEM_SELECTOR:
|
|
8
|
+
declare export var ITEM_SELECTOR: "[data-ukt-item], [data-ukt-value]";
|
|
9
9
|
declare export var KEY_EVENT_ELEMENTS: Set<string>;
|
|
10
10
|
declare export var getItemElements: (
|
|
11
11
|
dropdownElement: HTMLElement | null
|
|
@@ -15,36 +15,36 @@ declare export var getActiveItemElement: (
|
|
|
15
15
|
) => HTMLElement | null;
|
|
16
16
|
declare export var setActiveItem: (
|
|
17
17
|
x:
|
|
18
|
-
| {
|
|
18
|
+
| {|
|
|
19
19
|
dropdownElement: HTMLElement,
|
|
20
20
|
element: HTMLElement,
|
|
21
21
|
index?: null | void,
|
|
22
22
|
indexAddend?: null | void,
|
|
23
23
|
isExactMatch?: null | void,
|
|
24
24
|
text?: null | void,
|
|
25
|
-
}
|
|
26
|
-
| {
|
|
25
|
+
|}
|
|
26
|
+
| {|
|
|
27
27
|
dropdownElement: HTMLElement,
|
|
28
28
|
element?: null | void,
|
|
29
29
|
index: number,
|
|
30
30
|
indexAddend?: null | void,
|
|
31
31
|
isExactMatch?: null | void,
|
|
32
32
|
text?: null | void,
|
|
33
|
-
}
|
|
34
|
-
| {
|
|
33
|
+
|}
|
|
34
|
+
| {|
|
|
35
35
|
dropdownElement: HTMLElement,
|
|
36
36
|
element?: null | void,
|
|
37
37
|
index?: null | void,
|
|
38
38
|
indexAddend: number,
|
|
39
39
|
isExactMatch?: null | void,
|
|
40
40
|
text?: null | void,
|
|
41
|
-
}
|
|
42
|
-
| {
|
|
41
|
+
|}
|
|
42
|
+
| {|
|
|
43
43
|
dropdownElement: HTMLElement,
|
|
44
44
|
element?: null | void,
|
|
45
45
|
index?: null | void,
|
|
46
46
|
indexAddend?: null | void,
|
|
47
47
|
isExactMatch?: boolean | void,
|
|
48
48
|
text: string,
|
|
49
|
-
}
|
|
49
|
+
|}
|
|
50
50
|
) => void;
|
package/dist/helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,CAAC,MAAM,aAAa,GAAG,mCAAmC,CAAC;AACjE,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;AAEjE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,eAAmC,EAAE,EAAE;IACnE,IAAI,CAAC,eAAe;QAAE,OAAO,IAAI,CAAC;IAElC,MAAM,WAAW,GAAG,eAAe,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IACjE,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAE9B,IAAI,KAAK,
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/styles.js.flow
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Flowtype definitions for styles
|
|
3
3
|
* Generated by Flowgen from a Typescript Definition
|
|
4
|
-
* Flowgen v1.
|
|
4
|
+
* Flowgen v1.14.1
|
|
5
5
|
* @flow
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
declare export var ROOT_CLASS_NAME:
|
|
8
|
+
declare export var ROOT_CLASS_NAME: "uktdropdown";
|
|
9
9
|
declare export var ROOT_SELECTOR: string;
|
|
10
10
|
declare export var BODY_CLASS_NAME: string;
|
|
11
11
|
declare export var LABEL_CLASS_NAME: string;
|
package/package.json
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@acusti/dropdown",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"exports": "./dist/Dropdown.js",
|
|
7
7
|
"main": "./dist/Dropdown.js",
|
|
8
8
|
"types": "./dist/Dropdown.d.ts",
|
|
9
9
|
"files": [
|
|
10
|
-
"dist"
|
|
10
|
+
"dist",
|
|
11
|
+
"src"
|
|
11
12
|
],
|
|
12
13
|
"repository": {
|
|
13
14
|
"type": "git",
|
|
14
15
|
"url": "git+https://github.com/acusti/uikit.git"
|
|
15
16
|
},
|
|
16
|
-
"author": "andrew patton <andrew@acusti.ca> (
|
|
17
|
+
"author": "andrew patton <andrew@acusti.ca> (https://www.acusti.ca)",
|
|
17
18
|
"license": "Unlicense",
|
|
18
19
|
"bugs": {
|
|
19
20
|
"url": "https://github.com/acusti/uikit/issues"
|
|
@@ -22,13 +23,13 @@
|
|
|
22
23
|
"devDependencies": {
|
|
23
24
|
"@types/classnames": "^2.2.11",
|
|
24
25
|
"@types/react": "^17.0.3",
|
|
25
|
-
"typescript": "^4.
|
|
26
|
+
"typescript": "^4.4.3"
|
|
26
27
|
},
|
|
27
28
|
"dependencies": {
|
|
28
|
-
"@acusti/input-text": "^0.
|
|
29
|
-
"@acusti/matchmaking": "^0.
|
|
30
|
-
"@acusti/styling": "^0.
|
|
31
|
-
"@acusti/use-is-out-of-bounds": "^0.
|
|
29
|
+
"@acusti/input-text": "^0.8.0",
|
|
30
|
+
"@acusti/matchmaking": "^0.3.0",
|
|
31
|
+
"@acusti/styling": "^0.4.0",
|
|
32
|
+
"@acusti/use-is-out-of-bounds": "^0.4.0"
|
|
32
33
|
},
|
|
33
34
|
"peerDependencies": {
|
|
34
35
|
"classnames": "^2",
|
package/src/Dropdown.tsx
ADDED
|
@@ -0,0 +1,584 @@
|
|
|
1
|
+
import InputText from '@acusti/input-text';
|
|
2
|
+
import { Style } from '@acusti/styling';
|
|
3
|
+
import useIsOutOfBounds from '@acusti/use-is-out-of-bounds';
|
|
4
|
+
import classnames from 'classnames';
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
|
|
7
|
+
import {
|
|
8
|
+
BODY_CLASS_NAME,
|
|
9
|
+
BODY_SELECTOR,
|
|
10
|
+
LABEL_CLASS_NAME,
|
|
11
|
+
LABEL_TEXT_CLASS_NAME,
|
|
12
|
+
ROOT_CLASS_NAME,
|
|
13
|
+
STYLES,
|
|
14
|
+
TRIGGER_CLASS_NAME,
|
|
15
|
+
} from './styles.js';
|
|
16
|
+
import {
|
|
17
|
+
getActiveItemElement,
|
|
18
|
+
getItemElements,
|
|
19
|
+
ITEM_SELECTOR,
|
|
20
|
+
KEY_EVENT_ELEMENTS,
|
|
21
|
+
setActiveItem,
|
|
22
|
+
} from './helpers.js';
|
|
23
|
+
|
|
24
|
+
export type Item = { element: HTMLElement | null; value: string };
|
|
25
|
+
|
|
26
|
+
export type Props = {
|
|
27
|
+
/** Boolean indicating if the user can submit an empty value (i.e. clear the value); defaults to true */
|
|
28
|
+
allowEmpty?: boolean;
|
|
29
|
+
/** Can take a single React element (e.g. ReactChild) or exactly two renderable children */
|
|
30
|
+
children: React.ReactChild | [React.ReactNode, React.ReactNode];
|
|
31
|
+
className?: string;
|
|
32
|
+
disabled?: boolean;
|
|
33
|
+
/** Group identifier string links dropdowns together into a menu (like macOS top menubar) */
|
|
34
|
+
group?: string;
|
|
35
|
+
hasItems?: boolean;
|
|
36
|
+
isOpenOnMount?: boolean;
|
|
37
|
+
isSearchable?: boolean;
|
|
38
|
+
label?: string;
|
|
39
|
+
/** Only usable in conjunction with {isSearchable: true}; used as search input’s name */
|
|
40
|
+
name?: string;
|
|
41
|
+
onSubmitItem?: (payload: Item) => void;
|
|
42
|
+
/** Only usable in conjunction with {isSearchable: true}; used as search input’s placeholder */
|
|
43
|
+
placeholder?: string;
|
|
44
|
+
/** Only usable in conjunction with {isSearchable: true}; used as search input’s tabIndex */
|
|
45
|
+
tabIndex?: number;
|
|
46
|
+
/**
|
|
47
|
+
* Used as search input’s value if props.isSearchable === true
|
|
48
|
+
* Used to determine if value has changed to avoid triggering onSubmitItem if not
|
|
49
|
+
*/
|
|
50
|
+
value?: string;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
type TimeoutID = ReturnType<typeof setTimeout>;
|
|
54
|
+
|
|
55
|
+
type MousePosition = { clientX: number; clientY: number };
|
|
56
|
+
|
|
57
|
+
const { Children, Fragment, useCallback, useLayoutEffect, useRef, useState } = React;
|
|
58
|
+
|
|
59
|
+
const noop = () => {};
|
|
60
|
+
|
|
61
|
+
const CHILDREN_ERROR =
|
|
62
|
+
'@acusti/dropdown requires either 1 child (the dropdown body) or 2 children: the dropdown trigger and the dropdown body.';
|
|
63
|
+
|
|
64
|
+
const Dropdown: React.FC<Props> = ({
|
|
65
|
+
allowEmpty = true,
|
|
66
|
+
children,
|
|
67
|
+
className,
|
|
68
|
+
disabled,
|
|
69
|
+
hasItems = true,
|
|
70
|
+
isOpenOnMount,
|
|
71
|
+
isSearchable,
|
|
72
|
+
label,
|
|
73
|
+
name,
|
|
74
|
+
onSubmitItem,
|
|
75
|
+
placeholder,
|
|
76
|
+
tabIndex,
|
|
77
|
+
value,
|
|
78
|
+
}) => {
|
|
79
|
+
const childrenCount = Children.count(children);
|
|
80
|
+
if (childrenCount !== 1 && childrenCount !== 2) {
|
|
81
|
+
if (childrenCount === 0) {
|
|
82
|
+
throw new Error(CHILDREN_ERROR + ' Received no children.');
|
|
83
|
+
}
|
|
84
|
+
console.error(`${CHILDREN_ERROR} Received ${childrenCount} children.`);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
let trigger = childrenCount > 1 ? children[0] : null;
|
|
88
|
+
const isTriggerFromProps = React.isValidElement(trigger);
|
|
89
|
+
const [isOpen, setIsOpen] = useState<boolean>(isOpenOnMount || false);
|
|
90
|
+
const [isOpening, setIsOpening] = useState<boolean>(!isOpenOnMount);
|
|
91
|
+
const [dropdownBodyElement, setDropdownBodyElement] = useState<HTMLDivElement | null>(
|
|
92
|
+
null,
|
|
93
|
+
);
|
|
94
|
+
|
|
95
|
+
const dropdownElementRef = useRef<HTMLDivElement | null>(null);
|
|
96
|
+
const inputElementRef = useRef<HTMLInputElement | null>(null);
|
|
97
|
+
const closingTimerRef = useRef<TimeoutID | null>(null);
|
|
98
|
+
const isOpeningTimerRef = useRef<TimeoutID | null>(null);
|
|
99
|
+
const currentInputMethodRef = useRef<'mouse' | 'keyboard'>('mouse');
|
|
100
|
+
const clearEnteredCharactersTimerRef = useRef<TimeoutID | null>(null);
|
|
101
|
+
const enteredCharactersRef = useRef<string>('');
|
|
102
|
+
const mouseDownPositionRef = useRef<MousePosition | null>(null);
|
|
103
|
+
const outOfBounds = useIsOutOfBounds(dropdownBodyElement);
|
|
104
|
+
|
|
105
|
+
const allowEmptyRef = useRef(allowEmpty);
|
|
106
|
+
const hasItemsRef = useRef(hasItems);
|
|
107
|
+
const isOpenRef = useRef(isOpen);
|
|
108
|
+
const isOpeningRef = useRef(isOpening);
|
|
109
|
+
const isTriggerFromPropsRef = useRef(isOpening);
|
|
110
|
+
const onSubmitItemRef = useRef(onSubmitItem);
|
|
111
|
+
const valueRef = useRef(value);
|
|
112
|
+
|
|
113
|
+
useLayoutEffect(() => {
|
|
114
|
+
allowEmptyRef.current = allowEmpty;
|
|
115
|
+
hasItemsRef.current = hasItems;
|
|
116
|
+
isOpenRef.current = isOpen;
|
|
117
|
+
isOpeningRef.current = isOpening;
|
|
118
|
+
isTriggerFromPropsRef.current = isTriggerFromProps;
|
|
119
|
+
onSubmitItemRef.current = onSubmitItem;
|
|
120
|
+
valueRef.current = value;
|
|
121
|
+
}, [
|
|
122
|
+
allowEmpty,
|
|
123
|
+
hasItems,
|
|
124
|
+
isOpen,
|
|
125
|
+
isOpening,
|
|
126
|
+
isTriggerFromProps,
|
|
127
|
+
onSubmitItem,
|
|
128
|
+
value,
|
|
129
|
+
]);
|
|
130
|
+
|
|
131
|
+
const closeDropdown = useCallback(() => {
|
|
132
|
+
setIsOpen(false);
|
|
133
|
+
setIsOpening(false);
|
|
134
|
+
mouseDownPositionRef.current = null;
|
|
135
|
+
if (closingTimerRef.current) {
|
|
136
|
+
clearTimeout(closingTimerRef.current);
|
|
137
|
+
closingTimerRef.current = null;
|
|
138
|
+
}
|
|
139
|
+
}, []);
|
|
140
|
+
|
|
141
|
+
const handleSubmitItem = useCallback(() => {
|
|
142
|
+
if (isOpenRef.current) {
|
|
143
|
+
// A short timeout before closing is better UX when user selects an item so dropdown
|
|
144
|
+
// doesn’t close before expected. It also enables using <Link />s in the dropdown body.
|
|
145
|
+
closingTimerRef.current = setTimeout(closeDropdown, 90);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
if (!hasItemsRef.current) return;
|
|
149
|
+
|
|
150
|
+
const nextElement = getActiveItemElement(dropdownElementRef.current);
|
|
151
|
+
if (!nextElement) {
|
|
152
|
+
// If not allowEmpty, don’t allow submitting an empty item
|
|
153
|
+
if (!allowEmptyRef.current) return;
|
|
154
|
+
// If we have an input element as trigger & the user didn’t clear the text, do nothing
|
|
155
|
+
if (inputElementRef.current?.value) return;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
const label = nextElement?.innerText || '';
|
|
159
|
+
const nextValue = nextElement?.dataset.uktValue || label;
|
|
160
|
+
const nextItem = { element: nextElement, value: nextValue };
|
|
161
|
+
if (inputElementRef.current) {
|
|
162
|
+
inputElementRef.current.value = label;
|
|
163
|
+
if (
|
|
164
|
+
inputElementRef.current ===
|
|
165
|
+
inputElementRef.current.ownerDocument.activeElement
|
|
166
|
+
) {
|
|
167
|
+
inputElementRef.current.blur();
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// If parent is controlling Dropdown via props.value and nextValue is the same, do nothing
|
|
172
|
+
if (valueRef.current && valueRef.current === nextValue) return;
|
|
173
|
+
|
|
174
|
+
if (onSubmitItemRef.current) {
|
|
175
|
+
onSubmitItemRef.current(nextItem);
|
|
176
|
+
}
|
|
177
|
+
}, [closeDropdown]);
|
|
178
|
+
|
|
179
|
+
const handleMouseMove = useCallback(
|
|
180
|
+
({ clientX, clientY }: React.MouseEvent<HTMLElement>) => {
|
|
181
|
+
currentInputMethodRef.current = 'mouse';
|
|
182
|
+
const initialPosition = mouseDownPositionRef.current;
|
|
183
|
+
if (!initialPosition) return;
|
|
184
|
+
if (
|
|
185
|
+
Math.abs(initialPosition.clientX - clientX) < 12 &&
|
|
186
|
+
Math.abs(initialPosition.clientY - clientY) < 12
|
|
187
|
+
) {
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
setIsOpening(false);
|
|
191
|
+
},
|
|
192
|
+
[],
|
|
193
|
+
);
|
|
194
|
+
|
|
195
|
+
const handleMouseOver = useCallback((event: React.MouseEvent<HTMLElement>) => {
|
|
196
|
+
if (!hasItemsRef.current) return;
|
|
197
|
+
|
|
198
|
+
// If user isn’t currently using the mouse to navigate the dropdown, do nothing
|
|
199
|
+
if (currentInputMethodRef.current !== 'mouse') return;
|
|
200
|
+
|
|
201
|
+
// Ensure we have the dropdown root HTMLElement
|
|
202
|
+
const dropdownElement = dropdownElementRef.current;
|
|
203
|
+
if (!dropdownElement) return;
|
|
204
|
+
|
|
205
|
+
const itemElements = getItemElements(dropdownElement);
|
|
206
|
+
if (!itemElements) return;
|
|
207
|
+
|
|
208
|
+
const eventTarget = event.target as HTMLElement;
|
|
209
|
+
const item = eventTarget.closest(ITEM_SELECTOR) as HTMLElement | null;
|
|
210
|
+
const element = item || eventTarget;
|
|
211
|
+
for (let index = 0; index < itemElements.length; index++) {
|
|
212
|
+
if (itemElements[index] === element) {
|
|
213
|
+
setActiveItem({
|
|
214
|
+
dropdownElement,
|
|
215
|
+
element,
|
|
216
|
+
});
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}, []);
|
|
221
|
+
|
|
222
|
+
const cleanupEventListenersRef = useRef<() => void>(noop);
|
|
223
|
+
|
|
224
|
+
const handleRef = useCallback(
|
|
225
|
+
(ref: HTMLDivElement | null) => {
|
|
226
|
+
dropdownElementRef.current = ref;
|
|
227
|
+
if (!ref) {
|
|
228
|
+
// If component was unmounted, cleanup handlers
|
|
229
|
+
cleanupEventListenersRef.current();
|
|
230
|
+
cleanupEventListenersRef.current = noop;
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
const { ownerDocument } = ref;
|
|
235
|
+
let inputElement = inputElementRef.current;
|
|
236
|
+
// Check if trigger from props is an input or textarea element
|
|
237
|
+
if (isTriggerFromProps && !inputElement && ref.firstElementChild) {
|
|
238
|
+
inputElement = ref.firstElementChild.querySelector(
|
|
239
|
+
'input:not([type=radio]):not([type=checkbox]):not([type=range]),textarea',
|
|
240
|
+
);
|
|
241
|
+
inputElementRef.current = inputElement;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
const handleMouseDown = ({ clientX, clientY, target }: MouseEvent) => {
|
|
245
|
+
const eventTarget = target as HTMLElement;
|
|
246
|
+
if (
|
|
247
|
+
dropdownElementRef.current &&
|
|
248
|
+
!dropdownElementRef.current.contains(eventTarget)
|
|
249
|
+
) {
|
|
250
|
+
// Close dropdown on an outside click
|
|
251
|
+
closeDropdown();
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
if (isOpenRef.current) return;
|
|
256
|
+
|
|
257
|
+
setIsOpen(true);
|
|
258
|
+
setIsOpening(true);
|
|
259
|
+
mouseDownPositionRef.current = { clientX, clientY };
|
|
260
|
+
isOpeningTimerRef.current = setTimeout(() => {
|
|
261
|
+
setIsOpening(false);
|
|
262
|
+
isOpeningTimerRef.current = null;
|
|
263
|
+
}, 1000);
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
const handleMouseUp = ({ target }: MouseEvent) => {
|
|
267
|
+
if (!isOpenRef.current || closingTimerRef.current) return;
|
|
268
|
+
|
|
269
|
+
// If still isOpening (gets set false 1s after open triggers), set it to false onMouseUp
|
|
270
|
+
if (isOpeningRef.current) {
|
|
271
|
+
setIsOpening(false);
|
|
272
|
+
if (isOpeningTimerRef.current) {
|
|
273
|
+
clearTimeout(isOpeningTimerRef.current);
|
|
274
|
+
isOpeningTimerRef.current = null;
|
|
275
|
+
}
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
const isTargetInBody = (target as HTMLElement).closest(BODY_SELECTOR);
|
|
280
|
+
|
|
281
|
+
// If mouseup is on dropdown body and there are no items, don’t close the dropdown
|
|
282
|
+
if (!hasItemsRef.current && isTargetInBody) return;
|
|
283
|
+
|
|
284
|
+
// If mouseup is on an item, trigger submit item, else close the dropdown
|
|
285
|
+
if (isTargetInBody) {
|
|
286
|
+
handleSubmitItem();
|
|
287
|
+
} else if (
|
|
288
|
+
!inputElementRef.current ||
|
|
289
|
+
(dropdownElementRef.current &&
|
|
290
|
+
dropdownElementRef.current.contains(ownerDocument.activeElement))
|
|
291
|
+
) {
|
|
292
|
+
// If dropdown is searchable and ref is still focused, this won’t be invoked
|
|
293
|
+
closeDropdown();
|
|
294
|
+
}
|
|
295
|
+
};
|
|
296
|
+
|
|
297
|
+
const handleKeyDown = (event: KeyboardEvent) => {
|
|
298
|
+
const { altKey, ctrlKey, key, metaKey } = event;
|
|
299
|
+
const eventTarget = event.target as HTMLElement;
|
|
300
|
+
const dropdownElement = dropdownElementRef.current;
|
|
301
|
+
if (!dropdownElement) return;
|
|
302
|
+
|
|
303
|
+
const onEventHandled = () => {
|
|
304
|
+
event.stopPropagation();
|
|
305
|
+
event.preventDefault();
|
|
306
|
+
currentInputMethodRef.current = 'keyboard';
|
|
307
|
+
};
|
|
308
|
+
|
|
309
|
+
const isEventTargetingDropdown = dropdownElement.contains(eventTarget);
|
|
310
|
+
|
|
311
|
+
if (!isOpenRef.current) {
|
|
312
|
+
// If dropdown is closed, don’t handle key events if event target isn’t within dropdown
|
|
313
|
+
if (!isEventTargetingDropdown) return;
|
|
314
|
+
// Open the dropdown on spacebar, enter, or if isSearchable and user hits the up/down arrows
|
|
315
|
+
if (
|
|
316
|
+
key === ' ' ||
|
|
317
|
+
key === 'Enter' ||
|
|
318
|
+
(hasItemsRef.current &&
|
|
319
|
+
(key === 'ArrowUp' || key === 'ArrowDown'))
|
|
320
|
+
) {
|
|
321
|
+
onEventHandled();
|
|
322
|
+
setIsOpen(true);
|
|
323
|
+
return;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
return;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
// If dropdown isOpen, hasItems, and not isSearchable, handle entering characters
|
|
330
|
+
if (hasItemsRef.current && !inputElementRef.current) {
|
|
331
|
+
let isEditingCharacters =
|
|
332
|
+
!ctrlKey && !metaKey && /^[A-Za-z0-9]$/.test(key);
|
|
333
|
+
// User could also be editing characters if there are already characters entered
|
|
334
|
+
// and they are hitting delete or spacebar
|
|
335
|
+
if (!isEditingCharacters && enteredCharactersRef.current) {
|
|
336
|
+
isEditingCharacters = key === ' ' || key === 'Backspace';
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
if (isEditingCharacters) {
|
|
340
|
+
onEventHandled();
|
|
341
|
+
if (key === 'Backspace') {
|
|
342
|
+
enteredCharactersRef.current =
|
|
343
|
+
enteredCharactersRef.current.slice(0, -1);
|
|
344
|
+
} else {
|
|
345
|
+
enteredCharactersRef.current += key;
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
setActiveItem({
|
|
349
|
+
dropdownElement,
|
|
350
|
+
// If input element came from props, only override the input’s value
|
|
351
|
+
// with an exact text match so user can enter a value not in items
|
|
352
|
+
isExactMatch: isTriggerFromPropsRef.current,
|
|
353
|
+
text: enteredCharactersRef.current,
|
|
354
|
+
});
|
|
355
|
+
|
|
356
|
+
if (clearEnteredCharactersTimerRef.current) {
|
|
357
|
+
clearTimeout(clearEnteredCharactersTimerRef.current);
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
clearEnteredCharactersTimerRef.current = setTimeout(() => {
|
|
361
|
+
enteredCharactersRef.current = '';
|
|
362
|
+
clearEnteredCharactersTimerRef.current = null;
|
|
363
|
+
}, 1500);
|
|
364
|
+
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
// If dropdown isOpen, handle submitting the value
|
|
369
|
+
if (key === 'Enter' || (key === ' ' && !inputElementRef.current)) {
|
|
370
|
+
onEventHandled();
|
|
371
|
+
handleSubmitItem();
|
|
372
|
+
return;
|
|
373
|
+
}
|
|
374
|
+
// If dropdown isOpen, handle closing it on escape or spacebar if !hasItems
|
|
375
|
+
if (
|
|
376
|
+
key === 'Escape' ||
|
|
377
|
+
(isEventTargetingDropdown && key === ' ' && !hasItemsRef.current)
|
|
378
|
+
) {
|
|
379
|
+
// If there are no items & event target element uses key events, don’t close it
|
|
380
|
+
if (
|
|
381
|
+
!hasItemsRef.current &&
|
|
382
|
+
(eventTarget.isContentEditable ||
|
|
383
|
+
KEY_EVENT_ELEMENTS.has(eventTarget.tagName))
|
|
384
|
+
) {
|
|
385
|
+
return;
|
|
386
|
+
}
|
|
387
|
+
closeDropdown();
|
|
388
|
+
return;
|
|
389
|
+
}
|
|
390
|
+
// Handle ↑/↓ arrows
|
|
391
|
+
if (hasItemsRef.current) {
|
|
392
|
+
if (key === 'ArrowUp') {
|
|
393
|
+
onEventHandled();
|
|
394
|
+
if (altKey || metaKey) {
|
|
395
|
+
setActiveItem({
|
|
396
|
+
dropdownElement,
|
|
397
|
+
index: 0,
|
|
398
|
+
});
|
|
399
|
+
} else {
|
|
400
|
+
setActiveItem({
|
|
401
|
+
dropdownElement,
|
|
402
|
+
indexAddend: -1,
|
|
403
|
+
});
|
|
404
|
+
}
|
|
405
|
+
return;
|
|
406
|
+
}
|
|
407
|
+
if (key === 'ArrowDown') {
|
|
408
|
+
onEventHandled();
|
|
409
|
+
if (altKey || metaKey) {
|
|
410
|
+
// Using a negative index counts back from the end
|
|
411
|
+
setActiveItem({
|
|
412
|
+
dropdownElement,
|
|
413
|
+
index: -1,
|
|
414
|
+
});
|
|
415
|
+
} else {
|
|
416
|
+
setActiveItem({
|
|
417
|
+
dropdownElement,
|
|
418
|
+
indexAddend: 1,
|
|
419
|
+
});
|
|
420
|
+
}
|
|
421
|
+
return;
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
};
|
|
425
|
+
|
|
426
|
+
// Close dropdown if any element is focused outside of this dropdown
|
|
427
|
+
const handleFocusIn = (event: Event) => {
|
|
428
|
+
if (!isOpenRef.current) return;
|
|
429
|
+
|
|
430
|
+
const eventTarget = event.target as HTMLElement;
|
|
431
|
+
// If focused element is a descendant or a parent of the dropdown, do nothing
|
|
432
|
+
if (
|
|
433
|
+
!dropdownElementRef.current ||
|
|
434
|
+
dropdownElementRef.current.contains(eventTarget) ||
|
|
435
|
+
eventTarget.contains(dropdownElementRef.current)
|
|
436
|
+
) {
|
|
437
|
+
return;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
closeDropdown();
|
|
441
|
+
};
|
|
442
|
+
|
|
443
|
+
document.addEventListener('focusin', handleFocusIn);
|
|
444
|
+
document.addEventListener('keydown', handleKeyDown);
|
|
445
|
+
document.addEventListener('mousedown', handleMouseDown);
|
|
446
|
+
document.addEventListener('mouseup', handleMouseUp);
|
|
447
|
+
|
|
448
|
+
if (ownerDocument !== document) {
|
|
449
|
+
ownerDocument.addEventListener('focusin', handleFocusIn);
|
|
450
|
+
ownerDocument.addEventListener('keydown', handleKeyDown);
|
|
451
|
+
ownerDocument.addEventListener('mousedown', handleMouseDown);
|
|
452
|
+
ownerDocument.addEventListener('mouseup', handleMouseUp);
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
// If dropdown should be open on mount, focus it
|
|
456
|
+
if (isOpenOnMount) {
|
|
457
|
+
ref.focus();
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
const handleInput = (event: Event) => {
|
|
461
|
+
const dropdownElement = dropdownElementRef.current;
|
|
462
|
+
if (!dropdownElement) return;
|
|
463
|
+
|
|
464
|
+
if (!isOpenRef.current) setIsOpen(true);
|
|
465
|
+
|
|
466
|
+
const input = event.target as HTMLInputElement;
|
|
467
|
+
const isDeleting =
|
|
468
|
+
enteredCharactersRef.current.length > input.value.length;
|
|
469
|
+
enteredCharactersRef.current = input.value;
|
|
470
|
+
// Don’t set a new active item if user is deleting text unless text is now empty
|
|
471
|
+
if (isDeleting && input.value.length) return;
|
|
472
|
+
|
|
473
|
+
setActiveItem({
|
|
474
|
+
dropdownElement,
|
|
475
|
+
// If input element came from props, only override the input’s value
|
|
476
|
+
// with an exact text match so user can enter a value not in items
|
|
477
|
+
isExactMatch: isTriggerFromPropsRef.current,
|
|
478
|
+
text: enteredCharactersRef.current,
|
|
479
|
+
});
|
|
480
|
+
};
|
|
481
|
+
|
|
482
|
+
if (inputElement) {
|
|
483
|
+
inputElement.addEventListener('input', handleInput);
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
cleanupEventListenersRef.current = () => {
|
|
487
|
+
document.removeEventListener('focusin', handleFocusIn);
|
|
488
|
+
document.removeEventListener('keydown', handleKeyDown);
|
|
489
|
+
document.removeEventListener('mousedown', handleMouseDown);
|
|
490
|
+
document.removeEventListener('mouseup', handleMouseUp);
|
|
491
|
+
|
|
492
|
+
if (ownerDocument !== document) {
|
|
493
|
+
ownerDocument.removeEventListener('focusin', handleFocusIn);
|
|
494
|
+
ownerDocument.removeEventListener('keydown', handleKeyDown);
|
|
495
|
+
ownerDocument.removeEventListener('mousedown', handleMouseDown);
|
|
496
|
+
ownerDocument.removeEventListener('mouseup', handleMouseUp);
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
if (inputElement) {
|
|
500
|
+
inputElement.removeEventListener('input', handleInput);
|
|
501
|
+
}
|
|
502
|
+
};
|
|
503
|
+
},
|
|
504
|
+
[closeDropdown, handleSubmitItem, isOpenOnMount, isTriggerFromProps],
|
|
505
|
+
);
|
|
506
|
+
|
|
507
|
+
const handleTriggerFocus = useCallback(() => {
|
|
508
|
+
setIsOpen(true);
|
|
509
|
+
}, []);
|
|
510
|
+
|
|
511
|
+
if (!isTriggerFromProps) {
|
|
512
|
+
if (isSearchable) {
|
|
513
|
+
trigger = (
|
|
514
|
+
<InputText
|
|
515
|
+
className={TRIGGER_CLASS_NAME}
|
|
516
|
+
disabled={disabled}
|
|
517
|
+
initialValue={value || ''}
|
|
518
|
+
name={name}
|
|
519
|
+
onFocus={handleTriggerFocus}
|
|
520
|
+
placeholder={placeholder}
|
|
521
|
+
ref={inputElementRef}
|
|
522
|
+
selectTextOnFocus
|
|
523
|
+
tabIndex={tabIndex}
|
|
524
|
+
type="text"
|
|
525
|
+
/>
|
|
526
|
+
);
|
|
527
|
+
} else {
|
|
528
|
+
trigger = (
|
|
529
|
+
<button className={TRIGGER_CLASS_NAME} tabIndex={0}>
|
|
530
|
+
{trigger}
|
|
531
|
+
</button>
|
|
532
|
+
);
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
if (label) {
|
|
537
|
+
trigger = (
|
|
538
|
+
<label className={LABEL_CLASS_NAME}>
|
|
539
|
+
<div className={LABEL_TEXT_CLASS_NAME}>{label}</div>
|
|
540
|
+
{trigger}
|
|
541
|
+
</label>
|
|
542
|
+
);
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
return (
|
|
546
|
+
<Fragment>
|
|
547
|
+
<Style>{STYLES}</Style>
|
|
548
|
+
<div
|
|
549
|
+
className={classnames(ROOT_CLASS_NAME, className, {
|
|
550
|
+
disabled,
|
|
551
|
+
'is-open': isOpen,
|
|
552
|
+
'is-searchable': isSearchable,
|
|
553
|
+
})}
|
|
554
|
+
onMouseMove={handleMouseMove}
|
|
555
|
+
onMouseOver={handleMouseOver}
|
|
556
|
+
ref={handleRef}
|
|
557
|
+
tabIndex={
|
|
558
|
+
isSearchable || inputElementRef.current || !isTriggerFromProps
|
|
559
|
+
? undefined
|
|
560
|
+
: 0
|
|
561
|
+
}
|
|
562
|
+
>
|
|
563
|
+
{trigger}
|
|
564
|
+
{isOpen ? (
|
|
565
|
+
<div
|
|
566
|
+
className={classnames(BODY_CLASS_NAME, {
|
|
567
|
+
'calculating-position': !outOfBounds.hasLayout,
|
|
568
|
+
'has-items': hasItems,
|
|
569
|
+
'out-of-bounds-bottom': outOfBounds.bottom,
|
|
570
|
+
'out-of-bounds-left': outOfBounds.left,
|
|
571
|
+
'out-of-bounds-right': outOfBounds.right,
|
|
572
|
+
'out-of-bounds-top': outOfBounds.top,
|
|
573
|
+
})}
|
|
574
|
+
ref={setDropdownBodyElement}
|
|
575
|
+
>
|
|
576
|
+
{children[1] || children[0] || children}
|
|
577
|
+
</div>
|
|
578
|
+
) : null}
|
|
579
|
+
</div>
|
|
580
|
+
</Fragment>
|
|
581
|
+
);
|
|
582
|
+
};
|
|
583
|
+
|
|
584
|
+
export default Dropdown;
|
package/src/helpers.ts
ADDED
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { getBestMatch } from '@acusti/matchmaking';
|
|
2
|
+
|
|
3
|
+
import { BODY_SELECTOR } from './styles.js';
|
|
4
|
+
|
|
5
|
+
export const ITEM_SELECTOR = `[data-ukt-item], [data-ukt-value]`;
|
|
6
|
+
export const KEY_EVENT_ELEMENTS = new Set(['INPUT', 'TEXTAREA']);
|
|
7
|
+
|
|
8
|
+
export const getItemElements = (dropdownElement: HTMLElement | null) => {
|
|
9
|
+
if (!dropdownElement) return null;
|
|
10
|
+
|
|
11
|
+
const bodyElement = dropdownElement.querySelector(BODY_SELECTOR);
|
|
12
|
+
if (!bodyElement) return null;
|
|
13
|
+
|
|
14
|
+
let items: NodeListOf<Element> | HTMLCollection =
|
|
15
|
+
bodyElement.querySelectorAll(ITEM_SELECTOR);
|
|
16
|
+
|
|
17
|
+
if (items.length) return items;
|
|
18
|
+
// If no items found via [data-ukt-item] or [data-ukt-value] selector,
|
|
19
|
+
// use first instance of multiple children found
|
|
20
|
+
items = bodyElement.children;
|
|
21
|
+
while (items.length === 1) {
|
|
22
|
+
if (!items[0].children) break;
|
|
23
|
+
items = items[0].children;
|
|
24
|
+
}
|
|
25
|
+
// If unable to find an element with more than one child, treat direct child as items
|
|
26
|
+
if (items.length === 1) {
|
|
27
|
+
items = bodyElement.children;
|
|
28
|
+
}
|
|
29
|
+
return items;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export const getActiveItemElement = (dropdownElement: HTMLElement | null) => {
|
|
33
|
+
if (!dropdownElement) return null;
|
|
34
|
+
return dropdownElement.querySelector('[data-ukt-active]') as HTMLElement | null;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
const clearItemElementsState = (itemElements: Array<HTMLElement>) => {
|
|
38
|
+
itemElements.forEach((itemElement) => {
|
|
39
|
+
if (itemElement.hasAttribute('data-ukt-active')) {
|
|
40
|
+
delete itemElement.dataset.uktActive;
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export const setActiveItem = ({
|
|
46
|
+
dropdownElement,
|
|
47
|
+
element,
|
|
48
|
+
index,
|
|
49
|
+
indexAddend,
|
|
50
|
+
isExactMatch,
|
|
51
|
+
text,
|
|
52
|
+
}:
|
|
53
|
+
| {
|
|
54
|
+
dropdownElement: HTMLElement;
|
|
55
|
+
element: HTMLElement;
|
|
56
|
+
index?: null;
|
|
57
|
+
indexAddend?: null;
|
|
58
|
+
isExactMatch?: null;
|
|
59
|
+
text?: null;
|
|
60
|
+
}
|
|
61
|
+
| {
|
|
62
|
+
dropdownElement: HTMLElement;
|
|
63
|
+
element?: null;
|
|
64
|
+
index: number;
|
|
65
|
+
indexAddend?: null;
|
|
66
|
+
isExactMatch?: null;
|
|
67
|
+
text?: null;
|
|
68
|
+
}
|
|
69
|
+
| {
|
|
70
|
+
dropdownElement: HTMLElement;
|
|
71
|
+
element?: null;
|
|
72
|
+
index?: null;
|
|
73
|
+
indexAddend: number;
|
|
74
|
+
isExactMatch?: null;
|
|
75
|
+
text?: null;
|
|
76
|
+
}
|
|
77
|
+
| {
|
|
78
|
+
dropdownElement: HTMLElement;
|
|
79
|
+
element?: null;
|
|
80
|
+
index?: null;
|
|
81
|
+
indexAddend?: null;
|
|
82
|
+
isExactMatch?: boolean;
|
|
83
|
+
text: string;
|
|
84
|
+
}) => {
|
|
85
|
+
const items = getItemElements(dropdownElement);
|
|
86
|
+
if (!items) return;
|
|
87
|
+
|
|
88
|
+
const itemElements = Array.from(items) as Array<HTMLElement>;
|
|
89
|
+
if (!itemElements.length) return;
|
|
90
|
+
|
|
91
|
+
const lastIndex = itemElements.length - 1;
|
|
92
|
+
const currentActiveIndex = itemElements.findIndex((itemElement) =>
|
|
93
|
+
itemElement.hasAttribute('data-ukt-active'),
|
|
94
|
+
);
|
|
95
|
+
|
|
96
|
+
let nextActiveIndex = currentActiveIndex;
|
|
97
|
+
if (typeof index === 'number') {
|
|
98
|
+
// Negative index means count back from the end
|
|
99
|
+
nextActiveIndex = index < 0 ? itemElements.length + index : index;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
if (element) {
|
|
103
|
+
nextActiveIndex = itemElements.findIndex(
|
|
104
|
+
(itemElement) => itemElement === element,
|
|
105
|
+
);
|
|
106
|
+
} else if (typeof indexAddend === 'number') {
|
|
107
|
+
// If there’s no currentActiveIndex and we are handling -1, start at lastIndex
|
|
108
|
+
if (currentActiveIndex === -1 && indexAddend === -1) {
|
|
109
|
+
nextActiveIndex = lastIndex;
|
|
110
|
+
} else {
|
|
111
|
+
nextActiveIndex += indexAddend;
|
|
112
|
+
}
|
|
113
|
+
// Keep it within the bounds of the items list
|
|
114
|
+
if (nextActiveIndex < 0) {
|
|
115
|
+
nextActiveIndex = 0;
|
|
116
|
+
} else if (nextActiveIndex > lastIndex) {
|
|
117
|
+
nextActiveIndex = lastIndex;
|
|
118
|
+
}
|
|
119
|
+
} else if (typeof text === 'string') {
|
|
120
|
+
// If text is empty, clear existing active items and early return
|
|
121
|
+
if (!text) {
|
|
122
|
+
clearItemElementsState(itemElements);
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
const itemTexts = itemElements.map((itemElement) => itemElement.innerText);
|
|
127
|
+
if (isExactMatch) {
|
|
128
|
+
const textToCompare = text.toLowerCase();
|
|
129
|
+
nextActiveIndex = itemTexts.findIndex((itemText) =>
|
|
130
|
+
itemText.toLowerCase().startsWith(textToCompare),
|
|
131
|
+
);
|
|
132
|
+
// If isExactMatch is required and no exact match was found, clear active items
|
|
133
|
+
if (nextActiveIndex === -1) {
|
|
134
|
+
clearItemElementsState(itemElements);
|
|
135
|
+
}
|
|
136
|
+
} else {
|
|
137
|
+
const bestMatch = getBestMatch({ items: itemTexts, text });
|
|
138
|
+
nextActiveIndex = itemTexts.findIndex((text) => text === bestMatch);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
if (nextActiveIndex === -1 || nextActiveIndex === currentActiveIndex) return;
|
|
143
|
+
|
|
144
|
+
// Clear any existing active dropdown body item state
|
|
145
|
+
clearItemElementsState(itemElements);
|
|
146
|
+
|
|
147
|
+
const nextActiveItem = items[nextActiveIndex];
|
|
148
|
+
if (nextActiveItem) {
|
|
149
|
+
nextActiveItem.setAttribute('data-ukt-active', '');
|
|
150
|
+
// Find closest scrollable parent and ensure that next active item is visible
|
|
151
|
+
let { parentElement } = nextActiveItem;
|
|
152
|
+
let scrollableParent = null;
|
|
153
|
+
while (!scrollableParent && parentElement && parentElement !== dropdownElement) {
|
|
154
|
+
const isScrollable =
|
|
155
|
+
parentElement.scrollHeight > parentElement.clientHeight + 15;
|
|
156
|
+
if (isScrollable) {
|
|
157
|
+
scrollableParent = parentElement;
|
|
158
|
+
} else {
|
|
159
|
+
parentElement = parentElement.parentElement;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
if (scrollableParent) {
|
|
164
|
+
const parentRect = scrollableParent.getBoundingClientRect();
|
|
165
|
+
const itemRect = nextActiveItem.getBoundingClientRect();
|
|
166
|
+
const isAboveTop = itemRect.top < parentRect.top;
|
|
167
|
+
const isBelowBottom = itemRect.bottom > parentRect.bottom;
|
|
168
|
+
if (isAboveTop || isBelowBottom) {
|
|
169
|
+
let { scrollTop } = scrollableParent;
|
|
170
|
+
// Item isn’t fully visible; adjust scrollTop to put item within closest edge
|
|
171
|
+
if (isAboveTop) {
|
|
172
|
+
scrollTop -= parentRect.top - itemRect.top;
|
|
173
|
+
} else {
|
|
174
|
+
scrollTop += itemRect.bottom - parentRect.bottom;
|
|
175
|
+
}
|
|
176
|
+
scrollableParent.scrollTop = scrollTop;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
};
|
package/src/styles.ts
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { SYSTEM_UI_FONT } from '@acusti/styling';
|
|
2
|
+
|
|
3
|
+
export const ROOT_CLASS_NAME = 'uktdropdown';
|
|
4
|
+
export const ROOT_SELECTOR = `.${ROOT_CLASS_NAME}`;
|
|
5
|
+
|
|
6
|
+
export const BODY_CLASS_NAME = `${ROOT_CLASS_NAME}-body`;
|
|
7
|
+
export const LABEL_CLASS_NAME = `${ROOT_CLASS_NAME}-label`;
|
|
8
|
+
export const LABEL_TEXT_CLASS_NAME = `${ROOT_CLASS_NAME}-label-text`;
|
|
9
|
+
export const TRIGGER_CLASS_NAME = `${ROOT_CLASS_NAME}-trigger`;
|
|
10
|
+
|
|
11
|
+
export const BODY_SELECTOR = `.${BODY_CLASS_NAME}`;
|
|
12
|
+
export const LABEL_SELECTOR = `.${LABEL_CLASS_NAME}`;
|
|
13
|
+
export const LABEL_TEXT_SELECTOR = `.${LABEL_TEXT_CLASS_NAME}`;
|
|
14
|
+
export const TRIGGER_SELECTOR = `.${TRIGGER_CLASS_NAME}`;
|
|
15
|
+
|
|
16
|
+
export const STYLES = `
|
|
17
|
+
:root {
|
|
18
|
+
--uktdd-font-family: ${SYSTEM_UI_FONT};
|
|
19
|
+
--uktdd-body-bg-color: #fff;
|
|
20
|
+
--uktdd-body-bg-color-hover: rgb(105,162,249);
|
|
21
|
+
--uktdd-body-color-hover: #fff;
|
|
22
|
+
--uktdd-body-pad-bottom: 10px;
|
|
23
|
+
--uktdd-body-pad-left: 12px;
|
|
24
|
+
--uktdd-body-pad-right: 12px;
|
|
25
|
+
--uktdd-body-pad-top: 10px;
|
|
26
|
+
--uktdd-label-pad-right: 10px;
|
|
27
|
+
}
|
|
28
|
+
${ROOT_SELECTOR},
|
|
29
|
+
${TRIGGER_SELECTOR} {
|
|
30
|
+
font-family: var(--uktdd-font-family);
|
|
31
|
+
}
|
|
32
|
+
${ROOT_SELECTOR} {
|
|
33
|
+
position: relative;
|
|
34
|
+
display: inline-block;
|
|
35
|
+
}
|
|
36
|
+
${ROOT_SELECTOR}.disabled {
|
|
37
|
+
pointer-events: none;
|
|
38
|
+
}
|
|
39
|
+
${ROOT_SELECTOR} > * {
|
|
40
|
+
cursor: default;
|
|
41
|
+
}
|
|
42
|
+
${LABEL_SELECTOR} {
|
|
43
|
+
display: flex;
|
|
44
|
+
}
|
|
45
|
+
${LABEL_TEXT_SELECTOR} {
|
|
46
|
+
padding-right: var(--uktdd-label-pad-right);
|
|
47
|
+
}
|
|
48
|
+
${BODY_SELECTOR} {
|
|
49
|
+
box-sizing: border-box;
|
|
50
|
+
position: absolute;
|
|
51
|
+
top: 100%;
|
|
52
|
+
max-height: calc(100vh - 50px);
|
|
53
|
+
min-height: 50px;
|
|
54
|
+
min-width: 100%;
|
|
55
|
+
overflow: auto;
|
|
56
|
+
z-index: 2;
|
|
57
|
+
padding: var(--uktdd-body-pad-top) var(--uktdd-body-pad-right) var(--uktdd-body-pad-bottom) var(--uktdd-body-pad-left);
|
|
58
|
+
background-color: var(--uktdd-body-bg-color);
|
|
59
|
+
box-shadow: 0 8px 18px rgba(0,0,0,0.25);
|
|
60
|
+
}
|
|
61
|
+
${BODY_SELECTOR}.calculating-position {
|
|
62
|
+
visibility: hidden;
|
|
63
|
+
}
|
|
64
|
+
${BODY_SELECTOR}.out-of-bounds-bottom:not(.out-of-bounds-top) {
|
|
65
|
+
top: auto;
|
|
66
|
+
bottom: 100%;
|
|
67
|
+
}
|
|
68
|
+
${BODY_SELECTOR}.out-of-bounds-right:not(.out-of-bounds-left) {
|
|
69
|
+
left: auto;
|
|
70
|
+
right: 0px;
|
|
71
|
+
}
|
|
72
|
+
${LABEL_SELECTOR} + ${BODY_SELECTOR} {
|
|
73
|
+
left: auto;
|
|
74
|
+
right: 0;
|
|
75
|
+
}
|
|
76
|
+
${BODY_SELECTOR}.has-items {
|
|
77
|
+
user-select: none;
|
|
78
|
+
}
|
|
79
|
+
${BODY_SELECTOR} [data-ukt-active] {
|
|
80
|
+
background-color: var(--uktdd-body-bg-color-hover);
|
|
81
|
+
color: var(--uktdd-body-color-hover);
|
|
82
|
+
}
|
|
83
|
+
`;
|