@cloudscape-design/components 3.0.423 → 3.0.425
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/app-layout/drawer/index.d.ts +1 -1
- package/app-layout/drawer/index.d.ts.map +1 -1
- package/app-layout/drawer/index.js +6 -2
- package/app-layout/drawer/index.js.map +1 -1
- package/app-layout/drawer/interfaces.d.ts +3 -2
- package/app-layout/drawer/interfaces.d.ts.map +1 -1
- package/app-layout/drawer/interfaces.js.map +1 -1
- package/app-layout/index.d.ts.map +1 -1
- package/app-layout/index.js +5 -7
- package/app-layout/index.js.map +1 -1
- package/app-layout/interfaces.d.ts +4 -0
- package/app-layout/interfaces.d.ts.map +1 -1
- package/app-layout/interfaces.js.map +1 -1
- package/app-layout/utils/use-focus-control.d.ts +2 -1
- package/app-layout/utils/use-focus-control.d.ts.map +1 -1
- package/app-layout/utils/use-focus-control.js +18 -12
- package/app-layout/utils/use-focus-control.js.map +1 -1
- package/app-layout/utils/use-resize.d.ts +2 -2
- package/app-layout/utils/use-resize.d.ts.map +1 -1
- package/app-layout/utils/use-resize.js.map +1 -1
- package/app-layout/visual-refresh/context.d.ts +1 -2
- package/app-layout/visual-refresh/context.d.ts.map +1 -1
- package/app-layout/visual-refresh/context.js +3 -4
- package/app-layout/visual-refresh/context.js.map +1 -1
- package/autosuggest/autosuggest-option.js +1 -1
- package/autosuggest/autosuggest-option.js.map +1 -1
- package/autosuggest/plain-list.js +1 -1
- package/autosuggest/plain-list.js.map +1 -1
- package/autosuggest/virtual-list.js +1 -1
- package/autosuggest/virtual-list.js.map +1 -1
- package/internal/components/options-list/utils/use-highlight-option.d.ts +6 -2
- package/internal/components/options-list/utils/use-highlight-option.d.ts.map +1 -1
- package/internal/components/options-list/utils/use-highlight-option.js +13 -7
- package/internal/components/options-list/utils/use-highlight-option.js.map +1 -1
- package/internal/components/options-list/utils/use-open-state.d.ts +2 -1
- package/internal/components/options-list/utils/use-open-state.d.ts.map +1 -1
- package/internal/components/options-list/utils/use-open-state.js +5 -3
- package/internal/components/options-list/utils/use-open-state.js.map +1 -1
- package/internal/components/selectable-item/index.d.ts +1 -1
- package/internal/components/selectable-item/index.d.ts.map +1 -1
- package/internal/components/selectable-item/index.js.map +1 -1
- package/internal/environment.js +1 -1
- package/internal/environment.json +1 -1
- package/internal/manifest.json +1 -1
- package/package.json +1 -1
- package/select/parts/item.d.ts +1 -1
- package/select/parts/item.d.ts.map +1 -1
- package/select/parts/item.js.map +1 -1
- package/select/parts/multiselect-item.js +1 -1
- package/select/parts/multiselect-item.js.map +1 -1
- package/select/parts/plain-list.js +1 -1
- package/select/parts/plain-list.js.map +1 -1
- package/select/parts/virtual-list.js +1 -1
- package/select/parts/virtual-list.js.map +1 -1
- package/select/utils/render-options.js +1 -1
- package/select/utils/render-options.js.map +1 -1
- package/select/utils/use-select.d.ts.map +1 -1
- package/select/utils/use-select.js +22 -4
- package/select/utils/use-select.js.map +1 -1
- package/app-layout/utils/use-drawer-focus-control.d.ts +0 -21
- package/app-layout/utils/use-drawer-focus-control.d.ts.map +0 -1
- package/app-layout/utils/use-drawer-focus-control.js +0 -70
- package/app-layout/utils/use-drawer-focus-control.js.map +0 -1
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
import { useEffect, useRef, useCallback } from 'react';
|
|
4
|
-
export function useDrawerFocusControl(dependencies, isOpen, restoreFocus = false) {
|
|
5
|
-
const refs = {
|
|
6
|
-
toggle: useRef(null),
|
|
7
|
-
close: useRef(null),
|
|
8
|
-
slider: useRef(null),
|
|
9
|
-
};
|
|
10
|
-
const previousFocusedElement = useRef();
|
|
11
|
-
const shouldFocus = useRef(false);
|
|
12
|
-
const lastInteraction = useRef(null);
|
|
13
|
-
useEffect(() => {
|
|
14
|
-
var _a, _b, _c, _d;
|
|
15
|
-
switch ((_a = lastInteraction.current) === null || _a === void 0 ? void 0 : _a.type) {
|
|
16
|
-
case 'open':
|
|
17
|
-
if (refs.slider.current) {
|
|
18
|
-
(_b = refs.slider.current) === null || _b === void 0 ? void 0 : _b.focus();
|
|
19
|
-
}
|
|
20
|
-
else {
|
|
21
|
-
(_c = refs.close.current) === null || _c === void 0 ? void 0 : _c.focus();
|
|
22
|
-
}
|
|
23
|
-
break;
|
|
24
|
-
case 'close':
|
|
25
|
-
(_d = refs.toggle.current) === null || _d === void 0 ? void 0 : _d.focus();
|
|
26
|
-
break;
|
|
27
|
-
}
|
|
28
|
-
lastInteraction.current = null;
|
|
29
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
30
|
-
}, dependencies);
|
|
31
|
-
const doFocus = () => {
|
|
32
|
-
var _a, _b;
|
|
33
|
-
if (!shouldFocus.current) {
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
if (isOpen) {
|
|
37
|
-
previousFocusedElement.current =
|
|
38
|
-
document.activeElement !== document.body ? document.activeElement : undefined;
|
|
39
|
-
(_a = refs.close.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
if (restoreFocus && previousFocusedElement.current && document.contains(previousFocusedElement.current)) {
|
|
43
|
-
previousFocusedElement.current.focus();
|
|
44
|
-
previousFocusedElement.current = undefined;
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
(_b = refs.toggle.current) === null || _b === void 0 ? void 0 : _b.focus();
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
shouldFocus.current = false;
|
|
51
|
-
};
|
|
52
|
-
// We explictly want this effect to run when only `isOpen` changes
|
|
53
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
54
|
-
useEffect(doFocus, [isOpen]);
|
|
55
|
-
const loseFocus = useCallback(() => {
|
|
56
|
-
previousFocusedElement.current = undefined;
|
|
57
|
-
}, []);
|
|
58
|
-
return {
|
|
59
|
-
refs,
|
|
60
|
-
setFocus: force => {
|
|
61
|
-
shouldFocus.current = true;
|
|
62
|
-
if (force && isOpen) {
|
|
63
|
-
doFocus();
|
|
64
|
-
}
|
|
65
|
-
},
|
|
66
|
-
loseFocus,
|
|
67
|
-
setLastInteraction: (interaction) => (lastInteraction.current = interaction),
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
//# sourceMappingURL=use-drawer-focus-control.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-drawer-focus-control.js","sourceRoot":"lib/default/","sources":["app-layout/utils/use-drawer-focus-control.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAA6B,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAkBlF,MAAM,UAAU,qBAAqB,CACnC,YAA4B,EAC5B,MAAe,EACf,YAAY,GAAG,KAAK;IAEpB,MAAM,IAAI,GAAG;QACX,MAAM,EAAE,MAAM,CAAkB,IAAI,CAAC;QACrC,KAAK,EAAE,MAAM,CAAkB,IAAI,CAAC;QACpC,MAAM,EAAE,MAAM,CAAiB,IAAI,CAAC;KACrC,CAAC;IACF,MAAM,sBAAsB,GAAG,MAAM,EAAe,CAAC;IACrD,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,eAAe,GAAG,MAAM,CAA+B,IAAI,CAAC,CAAC;IAEnE,SAAS,CAAC,GAAG,EAAE;;QACb,QAAQ,MAAA,eAAe,CAAC,OAAO,0CAAE,IAAI,EAAE;YACrC,KAAK,MAAM;gBACT,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;oBACvB,MAAA,IAAI,CAAC,MAAM,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAC;iBAC9B;qBAAM;oBACL,MAAA,IAAI,CAAC,KAAK,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAC;iBAC7B;gBACD,MAAM;YACR,KAAK,OAAO;gBACV,MAAA,IAAI,CAAC,MAAM,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAC;gBAC7B,MAAM;SACT;QACD,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;QAC/B,uDAAuD;IACzD,CAAC,EAAE,YAAY,CAAC,CAAC;IAEjB,MAAM,OAAO,GAAG,GAAG,EAAE;;QACnB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YACxB,OAAO;SACR;QACD,IAAI,MAAM,EAAE;YACV,sBAAsB,CAAC,OAAO;gBAC5B,QAAQ,CAAC,aAAa,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAE,QAAQ,CAAC,aAA6B,CAAC,CAAC,CAAC,SAAS,CAAC;YACjG,MAAA,IAAI,CAAC,KAAK,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAC;SAC7B;aAAM;YACL,IAAI,YAAY,IAAI,sBAAsB,CAAC,OAAO,IAAI,QAAQ,CAAC,QAAQ,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAAE;gBACvG,sBAAsB,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACvC,sBAAsB,CAAC,OAAO,GAAG,SAAS,CAAC;aAC5C;iBAAM;gBACL,MAAA,IAAI,CAAC,MAAM,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAC;aAC9B;SACF;QACD,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;IAC9B,CAAC,CAAC;IAEF,kEAAkE;IAClE,uDAAuD;IACvD,SAAS,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAE7B,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;QACjC,sBAAsB,CAAC,OAAO,GAAG,SAAS,CAAC;IAC7C,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACL,IAAI;QACJ,QAAQ,EAAE,KAAK,CAAC,EAAE;YAChB,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;YAC3B,IAAI,KAAK,IAAI,MAAM,EAAE;gBACnB,OAAO,EAAE,CAAC;aACX;QACH,CAAC;QACD,SAAS;QACT,kBAAkB,EAAE,CAAC,WAAkC,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,OAAO,GAAG,WAAW,CAAC;KACpG,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { DependencyList, RefObject, useEffect, useRef, useCallback } from 'react';\nimport { ButtonProps } from '../../button/interfaces';\n\nexport type DrawerLastInteraction = { type: 'open' } | { type: 'close' };\n\nexport interface DrawerFocusControlRefs {\n toggle: RefObject<ButtonProps.Ref>;\n close: RefObject<ButtonProps.Ref>;\n slider: RefObject<HTMLDivElement>;\n}\n\ninterface FocusControlState {\n refs: DrawerFocusControlRefs;\n setFocus: (force?: boolean) => void;\n loseFocus: () => void;\n setLastInteraction: (interaction: DrawerLastInteraction) => void;\n}\n\nexport function useDrawerFocusControl(\n dependencies: DependencyList,\n isOpen: boolean,\n restoreFocus = false\n): FocusControlState {\n const refs = {\n toggle: useRef<ButtonProps.Ref>(null),\n close: useRef<ButtonProps.Ref>(null),\n slider: useRef<HTMLDivElement>(null),\n };\n const previousFocusedElement = useRef<HTMLElement>();\n const shouldFocus = useRef(false);\n const lastInteraction = useRef<DrawerLastInteraction | null>(null);\n\n useEffect(() => {\n switch (lastInteraction.current?.type) {\n case 'open':\n if (refs.slider.current) {\n refs.slider.current?.focus();\n } else {\n refs.close.current?.focus();\n }\n break;\n case 'close':\n refs.toggle.current?.focus();\n break;\n }\n lastInteraction.current = null;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, dependencies);\n\n const doFocus = () => {\n if (!shouldFocus.current) {\n return;\n }\n if (isOpen) {\n previousFocusedElement.current =\n document.activeElement !== document.body ? (document.activeElement as HTMLElement) : undefined;\n refs.close.current?.focus();\n } else {\n if (restoreFocus && previousFocusedElement.current && document.contains(previousFocusedElement.current)) {\n previousFocusedElement.current.focus();\n previousFocusedElement.current = undefined;\n } else {\n refs.toggle.current?.focus();\n }\n }\n shouldFocus.current = false;\n };\n\n // We explictly want this effect to run when only `isOpen` changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(doFocus, [isOpen]);\n\n const loseFocus = useCallback(() => {\n previousFocusedElement.current = undefined;\n }, []);\n\n return {\n refs,\n setFocus: force => {\n shouldFocus.current = true;\n if (force && isOpen) {\n doFocus();\n }\n },\n loseFocus,\n setLastInteraction: (interaction: DrawerLastInteraction) => (lastInteraction.current = interaction),\n };\n}\n"]}
|