Skip to content

Commit a32dd7e

Browse files
jcfrancobenelan
authored andcommitted
fix(dialog, modal, popover, sheet): restore focusTrapDisabled reactiveness (#11586)
1 parent acf5824 commit a32dd7e

File tree

1 file changed

+17
-9
lines changed

1 file changed

+17
-9
lines changed

packages/calcite-components/src/controllers/useFocusTrap.ts

+17-9
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,13 @@ import { createFocusTrapOptions } from "../utils/focusTrapComponent";
66
export interface UseFocusTrap {
77
/**
88
* Activates the focus trap.
9-
*
10-
* @see https://github.com/focus-trap/focus-trap#trapactivate
119
*/
12-
activate: (options?: Parameters<FocusTrap["activate"]>[0]) => void;
10+
activate: () => void;
1311

1412
/**
1513
* Deactivates the focus trap.
16-
*
17-
* @see https://github.com/focus-trap/focus-trap#trapdeactivate
1814
*/
19-
deactivate: (options?: Parameters<FocusTrap["deactivate"]>[0]) => void;
15+
deactivate: () => void;
2016

2117
/**
2218
* By default, the host element will be used as the focus-trap element, but if the focus-trap element needs to be a different element, use this method prior to activating to set the focus-trap element.
@@ -110,13 +106,23 @@ export const useFocusTrap = <T extends FocusTrapComponent>(
110106

111107
controller.onConnected(() => {
112108
if (component[options.triggerProp] && focusTrap) {
113-
focusTrap.activate();
109+
utils.activate();
114110
}
115111
});
116112

117-
controller.onDisconnected(() => focusTrap?.deactivate());
113+
controller.onUpdate((changes) => {
114+
if (component.hasUpdated && changes.has("focusTrapDisabled")) {
115+
if (component.focusTrapDisabled) {
116+
utils.deactivate();
117+
} else {
118+
utils.activate();
119+
}
120+
}
121+
});
122+
123+
controller.onDisconnected(() => utils.deactivate());
118124

119-
return {
125+
const utils: UseFocusTrap = {
120126
activate: () => {
121127
const targetEl = focusTrapEl || component.el;
122128

@@ -158,5 +164,7 @@ export const useFocusTrap = <T extends FocusTrapComponent>(
158164
return focusTrap?.updateContainerElements(effectiveContainers);
159165
},
160166
};
167+
168+
return utils;
161169
});
162170
};

0 commit comments

Comments
 (0)