Skip to content

Commit f3ddd00

Browse files
authored
Merge pull request #4 from fogboat/dev
Dev
2 parents 2b52122 + 5c8cf9e commit f3ddd00

File tree

3 files changed

+23
-23
lines changed

3 files changed

+23
-23
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# ui-tool
22

3-
headless ui tool for
3+
headless ui tool for React
44

55
## Usage
66

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@fogboat/ui-tool",
3-
"version": "0.0.2",
3+
"version": "0.0.3",
44
"type": "module",
55
"description": "Headless UI tool for react",
66
"keywords": [

src/lib/useDialogs/index.tsx

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ interface DialogStackEntry<P, R> {
6767

6868
export interface DialogProviderProps {
6969
children?: ReactNode;
70-
70+
domRoot?: HTMLElement;
7171
/**
7272
* 关闭后组件卸载时间ms 给关闭动画使用
7373
* @default 1000
@@ -81,7 +81,7 @@ export const DialogsContext = createContext<{
8181
} | null>(null);
8282

8383
export function DialogsProvider(props: DialogProviderProps) {
84-
const { children, unmountAfter = 1000 } = props;
84+
const { children, unmountAfter = 1000, domRoot } = props;
8585
const [stack, setStack] = useState<DialogStackEntry<any, any>[]>([]);
8686
const keyPrefix = useId();
8787
const nextId = useRef(0);
@@ -149,28 +149,28 @@ export function DialogsProvider(props: DialogProviderProps) {
149149
() => ({ open: requestDialog, close: closeDialog }),
150150
[requestDialog, closeDialog]
151151
);
152-
152+
const stackItem = stack.map(({ key, open, Component, payload, promise }) => (
153+
<Component
154+
key={key}
155+
payload={payload}
156+
open={open}
157+
resolve={(result) => {
158+
closeDialog(promise, true, result);
159+
}}
160+
reject={(result) => {
161+
closeDialog(promise, false, result);
162+
}}
163+
164+
165+
/>
166+
))
153167
return (
154168
<DialogsContext.Provider value={contextValue}>
155169
{children}
156-
{createPortal(
157-
stack.map(({ key, open, Component, payload, promise }) => (
158-
<Component
159-
key={key}
160-
payload={payload}
161-
open={open}
162-
resolve={(result) => {
163-
closeDialog(promise, true, result);
164-
}}
165-
reject={(result) => {
166-
closeDialog(promise, false, result);
167-
}}
168-
169-
170-
/>
171-
)),
172-
document.body
173-
)}
170+
{domRoot ? createPortal(
171+
stackItem,
172+
domRoot
173+
) : stackItem}
174174
</DialogsContext.Provider>
175175
);
176176
}

0 commit comments

Comments
 (0)