@quillsql/react 1.6.0 → 1.6.3
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/lib/AddToDashboardButton.d.ts +1 -0
- package/lib/AddToDashboardButton.js +2 -0
- package/lib/AddToDashboardButton.js.map +1 -0
- package/lib/AddToDashboardModal.d.ts +22 -0
- package/lib/AddToDashboardModal.js +638 -0
- package/lib/AddToDashboardModal.js.map +1 -0
- package/lib/BarList.js +28 -28
- package/lib/BarList.js.map +1 -1
- package/lib/Chart.js +30 -114
- package/lib/Chart.js.map +1 -1
- package/lib/Context.d.ts +3 -3
- package/lib/Context.js +3 -3
- package/lib/Context.js.map +1 -1
- package/lib/Dashboard.js +31 -16
- package/lib/Dashboard.js.map +1 -1
- package/lib/Dialog.d.ts +68 -0
- package/lib/Dialog.js +407 -0
- package/lib/Dialog.js.map +1 -0
- package/lib/Portal.d.ts +32 -0
- package/lib/Portal.js +171 -0
- package/lib/Portal.js.map +1 -0
- package/lib/Props.d.ts +0 -0
- package/lib/Props.js +2 -0
- package/lib/Props.js.map +1 -0
- package/lib/QuillProvider.d.ts +32 -14
- package/lib/QuillProvider.js +15 -2
- package/lib/QuillProvider.js.map +1 -1
- package/lib/ReportBuilder.d.ts +26 -2
- package/lib/ReportBuilder.js +220 -492
- package/lib/ReportBuilder.js.map +1 -1
- package/lib/SQLEditor.d.ts +35 -1
- package/lib/SQLEditor.js +264 -211
- package/lib/SQLEditor.js.map +1 -1
- package/lib/Table.js +2 -10
- package/lib/Table.js.map +1 -1
- package/lib/components/BigModal/BigModal.d.ts +14 -0
- package/lib/components/BigModal/BigModal.js +85 -0
- package/lib/components/BigModal/BigModal.js.map +1 -0
- package/lib/components/BigModal/Modal.d.ts +14 -0
- package/lib/components/BigModal/Modal.js +109 -0
- package/lib/components/BigModal/Modal.js.map +1 -0
- package/lib/components/Modal/Modal.d.ts +1 -1
- package/lib/hooks/useQuill.js +14 -24
- package/lib/hooks/useQuill.js.map +1 -1
- package/lib/hooks/useSyncRefs.d.ts +5 -0
- package/lib/hooks/useSyncRefs.js +38 -0
- package/lib/hooks/useSyncRefs.js.map +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/types/Props.d.ts +0 -0
- package/lib/types/Props.js +2 -0
- package/lib/types/Props.js.map +1 -0
- package/lib/types.d.ts +27 -0
- package/lib/types.js +6 -0
- package/lib/types.js.map +1 -0
- package/package.json +2 -1
- package/src/AddToDashboardModal.tsx +1213 -0
- package/src/BarList.tsx +28 -28
- package/src/Chart.tsx +31 -107
- package/src/Context.tsx +8 -5
- package/src/Dashboard.tsx +29 -2
- package/src/QuillProvider.tsx +52 -10
- package/src/ReportBuilder.tsx +433 -652
- package/src/SQLEditor.tsx +578 -235
- package/src/Table.tsx +9 -21
- package/src/components/BigModal/BigModal.tsx +108 -0
- package/src/components/Modal/Modal.tsx +1 -1
- package/src/continue_logs.txt +75 -0
- package/src/hooks/useQuill.ts +2 -16
- package/src/index.ts +1 -0
package/lib/Dialog.js
ADDED
|
@@ -0,0 +1,407 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
13
|
+
var t = {};
|
|
14
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
15
|
+
t[p] = s[p];
|
|
16
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
17
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
18
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
19
|
+
t[p[i]] = s[p[i]];
|
|
20
|
+
}
|
|
21
|
+
return t;
|
|
22
|
+
};
|
|
23
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
24
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
25
|
+
if (ar || !(i in from)) {
|
|
26
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
27
|
+
ar[i] = from[i];
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
31
|
+
};
|
|
32
|
+
var _a;
|
|
33
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
34
|
+
import { createContext, createRef, useCallback, useContext, useEffect, useMemo, useReducer, useRef, useState, } from 'react';
|
|
35
|
+
import { match } from '../../utils/match';
|
|
36
|
+
import { forwardRefWithAs, render, Features, } from '../../utils/render';
|
|
37
|
+
import { useSyncRefs } from '../../hooks/use-sync-refs';
|
|
38
|
+
import { Keys } from '../keyboard';
|
|
39
|
+
import { isDisabledReactIssue7711 } from '../../utils/bugs';
|
|
40
|
+
import { useId } from '../../hooks/use-id';
|
|
41
|
+
import { FocusTrap } from '../../components/focus-trap/focus-trap';
|
|
42
|
+
import { Portal, useNestedPortals } from '../../components/portal/portal';
|
|
43
|
+
import { ForcePortalRoot } from '../../internal/portal-force-root';
|
|
44
|
+
import { Description, useDescriptions, } from '../description/description';
|
|
45
|
+
import { useOpenClosed, State } from '../../internal/open-closed';
|
|
46
|
+
import { useServerHandoffComplete } from '../../hooks/use-server-handoff-complete';
|
|
47
|
+
import { StackProvider, StackMessage } from '../../internal/stack-context';
|
|
48
|
+
import { useOutsideClick } from '../../hooks/use-outside-click';
|
|
49
|
+
import { useOwnerDocument } from '../../hooks/use-owner';
|
|
50
|
+
import { useEventListener } from '../../hooks/use-event-listener';
|
|
51
|
+
import { useEvent } from '../../hooks/use-event';
|
|
52
|
+
import { useDocumentOverflowLockedEffect } from '../../hooks/document-overflow/use-document-overflow';
|
|
53
|
+
import { useInert } from '../../hooks/use-inert';
|
|
54
|
+
import { useRootContainers } from '../../hooks/use-root-containers';
|
|
55
|
+
var DialogStates;
|
|
56
|
+
(function (DialogStates) {
|
|
57
|
+
DialogStates[DialogStates["Open"] = 0] = "Open";
|
|
58
|
+
DialogStates[DialogStates["Closed"] = 1] = "Closed";
|
|
59
|
+
})(DialogStates || (DialogStates = {}));
|
|
60
|
+
var ActionTypes;
|
|
61
|
+
(function (ActionTypes) {
|
|
62
|
+
ActionTypes[ActionTypes["SetTitleId"] = 0] = "SetTitleId";
|
|
63
|
+
})(ActionTypes || (ActionTypes = {}));
|
|
64
|
+
var reducers = (_a = {},
|
|
65
|
+
_a[ActionTypes.SetTitleId] = function (state, action) {
|
|
66
|
+
if (state.titleId === action.id)
|
|
67
|
+
return state;
|
|
68
|
+
return __assign(__assign({}, state), { titleId: action.id });
|
|
69
|
+
},
|
|
70
|
+
_a);
|
|
71
|
+
var DialogContext = createContext(null);
|
|
72
|
+
DialogContext.displayName = 'DialogContext';
|
|
73
|
+
function useDialogContext(component) {
|
|
74
|
+
var context = useContext(DialogContext);
|
|
75
|
+
if (context === null) {
|
|
76
|
+
var err = new Error("<".concat(component, " /> is missing a parent <Dialog /> component."));
|
|
77
|
+
if (Error.captureStackTrace)
|
|
78
|
+
Error.captureStackTrace(err, useDialogContext);
|
|
79
|
+
throw err;
|
|
80
|
+
}
|
|
81
|
+
return context;
|
|
82
|
+
}
|
|
83
|
+
function useScrollLock(ownerDocument, enabled, resolveAllowedContainers) {
|
|
84
|
+
if (resolveAllowedContainers === void 0) { resolveAllowedContainers = function () { return [document.body]; }; }
|
|
85
|
+
useDocumentOverflowLockedEffect(ownerDocument, enabled, function (meta) {
|
|
86
|
+
var _a;
|
|
87
|
+
return ({
|
|
88
|
+
containers: __spreadArray(__spreadArray([], ((_a = meta.containers) !== null && _a !== void 0 ? _a : []), true), [resolveAllowedContainers], false),
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
function stateReducer(state, action) {
|
|
93
|
+
return match(action.type, reducers, state, action);
|
|
94
|
+
}
|
|
95
|
+
// ---
|
|
96
|
+
var DEFAULT_DIALOG_TAG = 'div';
|
|
97
|
+
var DialogRenderFeatures = Features.RenderStrategy | Features.Static;
|
|
98
|
+
function DialogFn(props, ref) {
|
|
99
|
+
var _a;
|
|
100
|
+
var internalId = useId();
|
|
101
|
+
var _b = props.id, id = _b === void 0 ? "headlessui-dialog-".concat(internalId) : _b, open = props.open, onClose = props.onClose, initialFocus = props.initialFocus, _c = props.__demoMode, __demoMode = _c === void 0 ? false : _c, theirProps = __rest(props, ["id", "open", "onClose", "initialFocus", "__demoMode"]);
|
|
102
|
+
var _d = useState(0), nestedDialogCount = _d[0], setNestedDialogCount = _d[1];
|
|
103
|
+
var usesOpenClosedState = useOpenClosed();
|
|
104
|
+
if (open === undefined && usesOpenClosedState !== null) {
|
|
105
|
+
// Update the `open` prop based on the open closed state
|
|
106
|
+
open = (usesOpenClosedState & State.Open) === State.Open;
|
|
107
|
+
}
|
|
108
|
+
var internalDialogRef = useRef(null);
|
|
109
|
+
var dialogRef = useSyncRefs(internalDialogRef, ref);
|
|
110
|
+
var ownerDocument = useOwnerDocument(internalDialogRef);
|
|
111
|
+
// Validations
|
|
112
|
+
var hasOpen = props.hasOwnProperty('open') || usesOpenClosedState !== null;
|
|
113
|
+
var hasOnClose = props.hasOwnProperty('onClose');
|
|
114
|
+
if (!hasOpen && !hasOnClose) {
|
|
115
|
+
throw new Error("You have to provide an `open` and an `onClose` prop to the `Dialog` component.");
|
|
116
|
+
}
|
|
117
|
+
if (!hasOpen) {
|
|
118
|
+
throw new Error("You provided an `onClose` prop to the `Dialog`, but forgot an `open` prop.");
|
|
119
|
+
}
|
|
120
|
+
if (!hasOnClose) {
|
|
121
|
+
throw new Error("You provided an `open` prop to the `Dialog`, but forgot an `onClose` prop.");
|
|
122
|
+
}
|
|
123
|
+
if (typeof open !== 'boolean') {
|
|
124
|
+
throw new Error("You provided an `open` prop to the `Dialog`, but the value is not a boolean. Received: ".concat(open));
|
|
125
|
+
}
|
|
126
|
+
if (typeof onClose !== 'function') {
|
|
127
|
+
throw new Error("You provided an `onClose` prop to the `Dialog`, but the value is not a function. Received: ".concat(onClose));
|
|
128
|
+
}
|
|
129
|
+
var dialogState = open ? DialogStates.Open : DialogStates.Closed;
|
|
130
|
+
var _e = useReducer(stateReducer, {
|
|
131
|
+
titleId: null,
|
|
132
|
+
descriptionId: null,
|
|
133
|
+
panelRef: createRef(),
|
|
134
|
+
}), state = _e[0], dispatch = _e[1];
|
|
135
|
+
var close = useEvent(function () { return onClose(false); });
|
|
136
|
+
var setTitleId = useEvent(function (id) {
|
|
137
|
+
return dispatch({ type: ActionTypes.SetTitleId, id: id });
|
|
138
|
+
});
|
|
139
|
+
var ready = useServerHandoffComplete();
|
|
140
|
+
var enabled = ready
|
|
141
|
+
? __demoMode
|
|
142
|
+
? false
|
|
143
|
+
: dialogState === DialogStates.Open
|
|
144
|
+
: false;
|
|
145
|
+
var hasNestedDialogs = nestedDialogCount > 1; // 1 is the current dialog
|
|
146
|
+
var hasParentDialog = useContext(DialogContext) !== null;
|
|
147
|
+
var _f = useNestedPortals(), portals = _f[0], PortalWrapper = _f[1];
|
|
148
|
+
var _g = useRootContainers({
|
|
149
|
+
portals: portals,
|
|
150
|
+
defaultContainers: [(_a = state.panelRef.current) !== null && _a !== void 0 ? _a : internalDialogRef.current],
|
|
151
|
+
}), resolveRootContainers = _g.resolveContainers, mainTreeNodeRef = _g.mainTreeNodeRef, MainTreeNode = _g.MainTreeNode;
|
|
152
|
+
// If there are multiple dialogs, then you can be the root, the leaf or one
|
|
153
|
+
// in between. We only care abou whether you are the top most one or not.
|
|
154
|
+
var position = !hasNestedDialogs ? 'leaf' : 'parent';
|
|
155
|
+
// When the `Dialog` is wrapped in a `Transition` (or another Headless UI component that exposes
|
|
156
|
+
// the OpenClosed state) then we get some information via context about its state. When the
|
|
157
|
+
// `Transition` is about to close, then the `State.Closing` state will be exposed. This allows us
|
|
158
|
+
// to enable/disable certain functionality in the `Dialog` upfront instead of waiting until the
|
|
159
|
+
// `Transition` is done transitioning.
|
|
160
|
+
var isClosing = usesOpenClosedState !== null
|
|
161
|
+
? (usesOpenClosedState & State.Closing) === State.Closing
|
|
162
|
+
: false;
|
|
163
|
+
// Ensure other elements can't be interacted with
|
|
164
|
+
var inertOthersEnabled = (function () {
|
|
165
|
+
// Nested dialogs should not modify the `inert` property, only the root one should.
|
|
166
|
+
if (hasParentDialog)
|
|
167
|
+
return false;
|
|
168
|
+
if (isClosing)
|
|
169
|
+
return false;
|
|
170
|
+
return enabled;
|
|
171
|
+
})();
|
|
172
|
+
var resolveRootOfMainTreeNode = useCallback(function () {
|
|
173
|
+
var _a, _b;
|
|
174
|
+
return ((_b = Array.from((_a = ownerDocument === null || ownerDocument === void 0 ? void 0 : ownerDocument.querySelectorAll('body > *')) !== null && _a !== void 0 ? _a : []).find(function (root) {
|
|
175
|
+
// Skip the portal root, we don't want to make that one inert
|
|
176
|
+
if (root.id === 'headlessui-portal-root')
|
|
177
|
+
return false;
|
|
178
|
+
// Find the root of the main tree node
|
|
179
|
+
return (root.contains(mainTreeNodeRef.current) && root instanceof HTMLElement);
|
|
180
|
+
})) !== null && _b !== void 0 ? _b : null);
|
|
181
|
+
}, [mainTreeNodeRef]);
|
|
182
|
+
useInert(resolveRootOfMainTreeNode, inertOthersEnabled);
|
|
183
|
+
// This would mark the parent dialogs as inert
|
|
184
|
+
var inertParentDialogs = (function () {
|
|
185
|
+
if (hasNestedDialogs)
|
|
186
|
+
return true;
|
|
187
|
+
return enabled;
|
|
188
|
+
})();
|
|
189
|
+
var resolveRootOfParentDialog = useCallback(function () {
|
|
190
|
+
var _a, _b;
|
|
191
|
+
return ((_b = Array.from((_a = ownerDocument === null || ownerDocument === void 0 ? void 0 : ownerDocument.querySelectorAll('[data-headlessui-portal]')) !== null && _a !== void 0 ? _a : []).find(function (root) {
|
|
192
|
+
return root.contains(mainTreeNodeRef.current) && root instanceof HTMLElement;
|
|
193
|
+
})) !== null && _b !== void 0 ? _b : null);
|
|
194
|
+
}, [mainTreeNodeRef]);
|
|
195
|
+
useInert(resolveRootOfParentDialog, inertParentDialogs);
|
|
196
|
+
// Close Dialog on outside click
|
|
197
|
+
var outsideClickEnabled = (function () {
|
|
198
|
+
if (!enabled)
|
|
199
|
+
return false;
|
|
200
|
+
if (hasNestedDialogs)
|
|
201
|
+
return false;
|
|
202
|
+
return true;
|
|
203
|
+
})();
|
|
204
|
+
useOutsideClick(resolveRootContainers, close, outsideClickEnabled);
|
|
205
|
+
// Handle `Escape` to close
|
|
206
|
+
var escapeToCloseEnabled = (function () {
|
|
207
|
+
if (hasNestedDialogs)
|
|
208
|
+
return false;
|
|
209
|
+
if (dialogState !== DialogStates.Open)
|
|
210
|
+
return false;
|
|
211
|
+
return true;
|
|
212
|
+
})();
|
|
213
|
+
useEventListener(ownerDocument === null || ownerDocument === void 0 ? void 0 : ownerDocument.defaultView, 'keydown', function (event) {
|
|
214
|
+
if (!escapeToCloseEnabled)
|
|
215
|
+
return;
|
|
216
|
+
if (event.defaultPrevented)
|
|
217
|
+
return;
|
|
218
|
+
if (event.key !== Keys.Escape)
|
|
219
|
+
return;
|
|
220
|
+
event.preventDefault();
|
|
221
|
+
event.stopPropagation();
|
|
222
|
+
close();
|
|
223
|
+
});
|
|
224
|
+
// Scroll lock
|
|
225
|
+
var scrollLockEnabled = (function () {
|
|
226
|
+
if (isClosing)
|
|
227
|
+
return false;
|
|
228
|
+
if (dialogState !== DialogStates.Open)
|
|
229
|
+
return false;
|
|
230
|
+
if (hasParentDialog)
|
|
231
|
+
return false;
|
|
232
|
+
return true;
|
|
233
|
+
})();
|
|
234
|
+
useScrollLock(ownerDocument, scrollLockEnabled, resolveRootContainers);
|
|
235
|
+
// Trigger close when the FocusTrap gets hidden
|
|
236
|
+
useEffect(function () {
|
|
237
|
+
if (dialogState !== DialogStates.Open)
|
|
238
|
+
return;
|
|
239
|
+
if (!internalDialogRef.current)
|
|
240
|
+
return;
|
|
241
|
+
var observer = new ResizeObserver(function (entries) {
|
|
242
|
+
for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {
|
|
243
|
+
var entry = entries_1[_i];
|
|
244
|
+
var rect = entry.target.getBoundingClientRect();
|
|
245
|
+
if (rect.x === 0 &&
|
|
246
|
+
rect.y === 0 &&
|
|
247
|
+
rect.width === 0 &&
|
|
248
|
+
rect.height === 0) {
|
|
249
|
+
close();
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
observer.observe(internalDialogRef.current);
|
|
254
|
+
return function () { return observer.disconnect(); };
|
|
255
|
+
}, [dialogState, internalDialogRef, close]);
|
|
256
|
+
var _h = useDescriptions(), describedby = _h[0], DescriptionProvider = _h[1];
|
|
257
|
+
var contextBag = useMemo(function () { return [{ dialogState: dialogState, close: close, setTitleId: setTitleId }, state]; }, [dialogState, state, close, setTitleId]);
|
|
258
|
+
var slot = useMemo(function () { return ({ open: dialogState === DialogStates.Open }); }, [dialogState]);
|
|
259
|
+
var ourProps = {
|
|
260
|
+
ref: dialogRef,
|
|
261
|
+
id: id,
|
|
262
|
+
role: 'dialog',
|
|
263
|
+
'aria-modal': dialogState === DialogStates.Open ? true : undefined,
|
|
264
|
+
'aria-labelledby': state.titleId,
|
|
265
|
+
'aria-describedby': describedby,
|
|
266
|
+
};
|
|
267
|
+
return (_jsxs(StackProvider, __assign({ type: "Dialog", enabled: dialogState === DialogStates.Open, element: internalDialogRef, onUpdate: useEvent(function (message, type) {
|
|
268
|
+
var _a;
|
|
269
|
+
if (type !== 'Dialog')
|
|
270
|
+
return;
|
|
271
|
+
match(message, (_a = {},
|
|
272
|
+
_a[StackMessage.Add] = function () { return setNestedDialogCount(function (count) { return count + 1; }); },
|
|
273
|
+
_a[StackMessage.Remove] = function () { return setNestedDialogCount(function (count) { return count - 1; }); },
|
|
274
|
+
_a));
|
|
275
|
+
}) }, { children: [_jsx(ForcePortalRoot, __assign({ force: true }, { children: _jsx(Portal, { children: _jsx(DialogContext.Provider, __assign({ value: contextBag }, { children: _jsx(Portal.Group, __assign({ target: internalDialogRef }, { children: _jsx(ForcePortalRoot, __assign({ force: false }, { children: _jsx(DescriptionProvider, __assign({ slot: slot, name: "Dialog.Description" }, { children: _jsx(FocusTrap, __assign({ initialFocus: initialFocus, containers: resolveRootContainers, features: enabled
|
|
276
|
+
? match(position, {
|
|
277
|
+
parent: FocusTrap.features.RestoreFocus,
|
|
278
|
+
leaf: FocusTrap.features.All &
|
|
279
|
+
~FocusTrap.features.FocusLock,
|
|
280
|
+
})
|
|
281
|
+
: FocusTrap.features.None }, { children: _jsx(PortalWrapper, { children: render({
|
|
282
|
+
ourProps: ourProps,
|
|
283
|
+
theirProps: theirProps,
|
|
284
|
+
slot: slot,
|
|
285
|
+
defaultTag: DEFAULT_DIALOG_TAG,
|
|
286
|
+
features: DialogRenderFeatures,
|
|
287
|
+
visible: dialogState === DialogStates.Open,
|
|
288
|
+
name: 'Dialog',
|
|
289
|
+
}) }) })) })) })) })) })) }) })), _jsx(MainTreeNode, {})] })));
|
|
290
|
+
}
|
|
291
|
+
// ---
|
|
292
|
+
var DEFAULT_OVERLAY_TAG = 'div';
|
|
293
|
+
function OverlayFn(props, ref) {
|
|
294
|
+
var internalId = useId();
|
|
295
|
+
var _a = props.id, id = _a === void 0 ? "headlessui-dialog-overlay-".concat(internalId) : _a, theirProps = __rest(props, ["id"]);
|
|
296
|
+
var _b = useDialogContext('Dialog.Overlay')[0], dialogState = _b.dialogState, close = _b.close;
|
|
297
|
+
var overlayRef = useSyncRefs(ref);
|
|
298
|
+
var handleClick = useEvent(function (event) {
|
|
299
|
+
if (event.target !== event.currentTarget)
|
|
300
|
+
return;
|
|
301
|
+
if (isDisabledReactIssue7711(event.currentTarget))
|
|
302
|
+
return event.preventDefault();
|
|
303
|
+
event.preventDefault();
|
|
304
|
+
event.stopPropagation();
|
|
305
|
+
close();
|
|
306
|
+
});
|
|
307
|
+
var slot = useMemo(function () { return ({ open: dialogState === DialogStates.Open }); }, [dialogState]);
|
|
308
|
+
var ourProps = {
|
|
309
|
+
ref: overlayRef,
|
|
310
|
+
id: id,
|
|
311
|
+
'aria-hidden': true,
|
|
312
|
+
onClick: handleClick,
|
|
313
|
+
};
|
|
314
|
+
return render({
|
|
315
|
+
ourProps: ourProps,
|
|
316
|
+
theirProps: theirProps,
|
|
317
|
+
slot: slot,
|
|
318
|
+
defaultTag: DEFAULT_OVERLAY_TAG,
|
|
319
|
+
name: 'Dialog.Overlay',
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
// ---
|
|
323
|
+
var DEFAULT_BACKDROP_TAG = 'div';
|
|
324
|
+
function BackdropFn(props, ref) {
|
|
325
|
+
var internalId = useId();
|
|
326
|
+
var _a = props.id, id = _a === void 0 ? "headlessui-dialog-backdrop-".concat(internalId) : _a, theirProps = __rest(props, ["id"]);
|
|
327
|
+
var _b = useDialogContext('Dialog.Backdrop'), dialogState = _b[0].dialogState, state = _b[1];
|
|
328
|
+
var backdropRef = useSyncRefs(ref);
|
|
329
|
+
useEffect(function () {
|
|
330
|
+
if (state.panelRef.current === null) {
|
|
331
|
+
throw new Error("A <Dialog.Backdrop /> component is being used, but a <Dialog.Panel /> component is missing.");
|
|
332
|
+
}
|
|
333
|
+
}, [state.panelRef]);
|
|
334
|
+
var slot = useMemo(function () { return ({ open: dialogState === DialogStates.Open }); }, [dialogState]);
|
|
335
|
+
var ourProps = {
|
|
336
|
+
ref: backdropRef,
|
|
337
|
+
id: id,
|
|
338
|
+
'aria-hidden': true,
|
|
339
|
+
};
|
|
340
|
+
return (_jsx(ForcePortalRoot, __assign({ force: true }, { children: _jsx(Portal, { children: render({
|
|
341
|
+
ourProps: ourProps,
|
|
342
|
+
theirProps: theirProps,
|
|
343
|
+
slot: slot,
|
|
344
|
+
defaultTag: DEFAULT_BACKDROP_TAG,
|
|
345
|
+
name: 'Dialog.Backdrop',
|
|
346
|
+
}) }) })));
|
|
347
|
+
}
|
|
348
|
+
// ---
|
|
349
|
+
var DEFAULT_PANEL_TAG = 'div';
|
|
350
|
+
function PanelFn(props, ref) {
|
|
351
|
+
var internalId = useId();
|
|
352
|
+
var _a = props.id, id = _a === void 0 ? "headlessui-dialog-panel-".concat(internalId) : _a, theirProps = __rest(props, ["id"]);
|
|
353
|
+
var _b = useDialogContext('Dialog.Panel'), dialogState = _b[0].dialogState, state = _b[1];
|
|
354
|
+
var panelRef = useSyncRefs(ref, state.panelRef);
|
|
355
|
+
var slot = useMemo(function () { return ({ open: dialogState === DialogStates.Open }); }, [dialogState]);
|
|
356
|
+
// Prevent the click events inside the Dialog.Panel from bubbling through the React Tree which
|
|
357
|
+
// could submit wrapping <form> elements even if we portalled the Dialog.
|
|
358
|
+
var handleClick = useEvent(function (event) {
|
|
359
|
+
event.stopPropagation();
|
|
360
|
+
});
|
|
361
|
+
var ourProps = {
|
|
362
|
+
ref: panelRef,
|
|
363
|
+
id: id,
|
|
364
|
+
onClick: handleClick,
|
|
365
|
+
};
|
|
366
|
+
return render({
|
|
367
|
+
ourProps: ourProps,
|
|
368
|
+
theirProps: theirProps,
|
|
369
|
+
slot: slot,
|
|
370
|
+
defaultTag: DEFAULT_PANEL_TAG,
|
|
371
|
+
name: 'Dialog.Panel',
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
// ---
|
|
375
|
+
var DEFAULT_TITLE_TAG = 'h2';
|
|
376
|
+
function TitleFn(props, ref) {
|
|
377
|
+
var internalId = useId();
|
|
378
|
+
var _a = props.id, id = _a === void 0 ? "headlessui-dialog-title-".concat(internalId) : _a, theirProps = __rest(props, ["id"]);
|
|
379
|
+
var _b = useDialogContext('Dialog.Title')[0], dialogState = _b.dialogState, setTitleId = _b.setTitleId;
|
|
380
|
+
var titleRef = useSyncRefs(ref);
|
|
381
|
+
useEffect(function () {
|
|
382
|
+
setTitleId(id);
|
|
383
|
+
return function () { return setTitleId(null); };
|
|
384
|
+
}, [id, setTitleId]);
|
|
385
|
+
var slot = useMemo(function () { return ({ open: dialogState === DialogStates.Open }); }, [dialogState]);
|
|
386
|
+
var ourProps = { ref: titleRef, id: id };
|
|
387
|
+
return render({
|
|
388
|
+
ourProps: ourProps,
|
|
389
|
+
theirProps: theirProps,
|
|
390
|
+
slot: slot,
|
|
391
|
+
defaultTag: DEFAULT_TITLE_TAG,
|
|
392
|
+
name: 'Dialog.Title',
|
|
393
|
+
});
|
|
394
|
+
}
|
|
395
|
+
var DialogRoot = forwardRefWithAs(DialogFn);
|
|
396
|
+
var Backdrop = forwardRefWithAs(BackdropFn);
|
|
397
|
+
var Panel = forwardRefWithAs(PanelFn);
|
|
398
|
+
var Overlay = forwardRefWithAs(OverlayFn);
|
|
399
|
+
var Title = forwardRefWithAs(TitleFn);
|
|
400
|
+
export var Dialog = Object.assign(DialogRoot, {
|
|
401
|
+
Backdrop: Backdrop,
|
|
402
|
+
Panel: Panel,
|
|
403
|
+
Overlay: Overlay,
|
|
404
|
+
Title: Title,
|
|
405
|
+
Description: Description,
|
|
406
|
+
});
|
|
407
|
+
//# sourceMappingURL=Dialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dialog.js","sourceRoot":"","sources":["../src/Dialog.tsx"],"names":[],"mappings":"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"}
|
package/lib/Portal.d.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React, { ElementType, MutableRefObject, Ref } from 'react';
|
|
2
|
+
import { Props } from './types';
|
|
3
|
+
import { RefProp, HasDisplayName } from './utils/render';
|
|
4
|
+
declare let DEFAULT_PORTAL_TAG: React.ExoticComponent<{
|
|
5
|
+
children?: React.ReactNode;
|
|
6
|
+
}>;
|
|
7
|
+
interface PortalRenderPropArg {
|
|
8
|
+
}
|
|
9
|
+
export type PortalProps<TTag extends ElementType> = Props<TTag, PortalRenderPropArg>;
|
|
10
|
+
declare function PortalFn<TTag extends ElementType = typeof DEFAULT_PORTAL_TAG>(props: PortalProps<TTag>, ref: Ref<HTMLElement>): React.ReactPortal | null;
|
|
11
|
+
declare let DEFAULT_GROUP_TAG: React.ExoticComponent<{
|
|
12
|
+
children?: React.ReactNode;
|
|
13
|
+
}>;
|
|
14
|
+
interface GroupRenderPropArg {
|
|
15
|
+
}
|
|
16
|
+
export type PortalGroupProps<TTag extends ElementType> = Props<TTag, GroupRenderPropArg> & {
|
|
17
|
+
target: MutableRefObject<HTMLElement | null>;
|
|
18
|
+
};
|
|
19
|
+
declare function GroupFn<TTag extends ElementType = typeof DEFAULT_GROUP_TAG>(props: PortalGroupProps<TTag>, ref: Ref<HTMLElement>): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
export declare function useNestedPortals(): readonly [React.MutableRefObject<HTMLElement[]>, ({ children, }: {
|
|
21
|
+
children: React.ReactNode;
|
|
22
|
+
}) => import("react/jsx-runtime").JSX.Element];
|
|
23
|
+
interface ComponentPortal extends HasDisplayName {
|
|
24
|
+
<TTag extends ElementType = typeof DEFAULT_PORTAL_TAG>(props: PortalProps<TTag> & RefProp<typeof PortalFn>): JSX.Element;
|
|
25
|
+
}
|
|
26
|
+
interface ComponentPortalGroup extends HasDisplayName {
|
|
27
|
+
<TTag extends ElementType = typeof DEFAULT_GROUP_TAG>(props: PortalGroupProps<TTag> & RefProp<typeof GroupFn>): JSX.Element;
|
|
28
|
+
}
|
|
29
|
+
export declare let Portal: ComponentPortal & {
|
|
30
|
+
Group: ComponentPortalGroup;
|
|
31
|
+
};
|
|
32
|
+
export {};
|
package/lib/Portal.js
ADDED
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
13
|
+
var t = {};
|
|
14
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
15
|
+
t[p] = s[p];
|
|
16
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
17
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
18
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
19
|
+
t[p[i]] = s[p[i]];
|
|
20
|
+
}
|
|
21
|
+
return t;
|
|
22
|
+
};
|
|
23
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
24
|
+
import { Fragment, createContext, useContext, useEffect, useRef, useState, useMemo, } from 'react';
|
|
25
|
+
import { createPortal } from 'react-dom';
|
|
26
|
+
import { forwardRefWithAs, render, } from './utils/render';
|
|
27
|
+
import { useIsoMorphicEffect } from './hooks/useIsoMorphicEffect';
|
|
28
|
+
import { usePortalRoot } from './internal/portalForceRoot';
|
|
29
|
+
import { useServerHandoffComplete } from './hooks/useServerHandoffComplete';
|
|
30
|
+
import { optionalRef, useSyncRefs } from './hooks/useSyncRefs';
|
|
31
|
+
import { useOnUnmount } from './hooks/useOnUnmount';
|
|
32
|
+
import { useOwnerDocument } from './hooks/useOwner';
|
|
33
|
+
import { env } from './utils/env';
|
|
34
|
+
import { useEvent } from './hooks/useEvent';
|
|
35
|
+
function usePortalTarget(ref) {
|
|
36
|
+
var forceInRoot = usePortalRoot();
|
|
37
|
+
var groupTarget = useContext(PortalGroupContext);
|
|
38
|
+
var ownerDocument = useOwnerDocument(ref);
|
|
39
|
+
var _a = useState(function () {
|
|
40
|
+
// Group context is used, but still null
|
|
41
|
+
if (!forceInRoot && groupTarget !== null)
|
|
42
|
+
return null;
|
|
43
|
+
// No group context is used, let's create a default portal root
|
|
44
|
+
if (env.isServer)
|
|
45
|
+
return null;
|
|
46
|
+
var existingRoot = ownerDocument === null || ownerDocument === void 0 ? void 0 : ownerDocument.getElementById('headlessui-portal-root');
|
|
47
|
+
if (existingRoot)
|
|
48
|
+
return existingRoot;
|
|
49
|
+
if (ownerDocument === null)
|
|
50
|
+
return null;
|
|
51
|
+
var root = ownerDocument.createElement('div');
|
|
52
|
+
root.setAttribute('id', 'headlessui-portal-root');
|
|
53
|
+
return ownerDocument.body.appendChild(root);
|
|
54
|
+
}), target = _a[0], setTarget = _a[1];
|
|
55
|
+
// Ensure the portal root is always in the DOM
|
|
56
|
+
useEffect(function () {
|
|
57
|
+
if (target === null)
|
|
58
|
+
return;
|
|
59
|
+
if (!(ownerDocument === null || ownerDocument === void 0 ? void 0 : ownerDocument.body.contains(target))) {
|
|
60
|
+
ownerDocument === null || ownerDocument === void 0 ? void 0 : ownerDocument.body.appendChild(target);
|
|
61
|
+
}
|
|
62
|
+
}, [target, ownerDocument]);
|
|
63
|
+
useEffect(function () {
|
|
64
|
+
if (forceInRoot)
|
|
65
|
+
return;
|
|
66
|
+
if (groupTarget === null)
|
|
67
|
+
return;
|
|
68
|
+
setTarget(groupTarget.current);
|
|
69
|
+
}, [groupTarget, setTarget, forceInRoot]);
|
|
70
|
+
return target;
|
|
71
|
+
}
|
|
72
|
+
// ---
|
|
73
|
+
var DEFAULT_PORTAL_TAG = Fragment;
|
|
74
|
+
function PortalFn(props, ref) {
|
|
75
|
+
var theirProps = props;
|
|
76
|
+
var internalPortalRootRef = useRef(null);
|
|
77
|
+
var portalRef = useSyncRefs(optionalRef(function (ref) {
|
|
78
|
+
internalPortalRootRef.current = ref;
|
|
79
|
+
}), ref);
|
|
80
|
+
var ownerDocument = useOwnerDocument(internalPortalRootRef);
|
|
81
|
+
var target = usePortalTarget(internalPortalRootRef);
|
|
82
|
+
var element = useState(function () { var _a; return env.isServer ? null : (_a = ownerDocument === null || ownerDocument === void 0 ? void 0 : ownerDocument.createElement('div')) !== null && _a !== void 0 ? _a : null; })[0];
|
|
83
|
+
var parent = useContext(PortalParentContext);
|
|
84
|
+
var ready = useServerHandoffComplete();
|
|
85
|
+
useIsoMorphicEffect(function () {
|
|
86
|
+
if (!target || !element)
|
|
87
|
+
return;
|
|
88
|
+
// Element already exists in target, always calling target.appendChild(element) will cause a
|
|
89
|
+
// brief unmount/remount.
|
|
90
|
+
if (!target.contains(element)) {
|
|
91
|
+
element.setAttribute('data-headlessui-portal', '');
|
|
92
|
+
target.appendChild(element);
|
|
93
|
+
}
|
|
94
|
+
}, [target, element]);
|
|
95
|
+
useIsoMorphicEffect(function () {
|
|
96
|
+
if (!element)
|
|
97
|
+
return;
|
|
98
|
+
if (!parent)
|
|
99
|
+
return;
|
|
100
|
+
return parent.register(element);
|
|
101
|
+
}, [parent, element]);
|
|
102
|
+
useOnUnmount(function () {
|
|
103
|
+
var _a;
|
|
104
|
+
if (!target || !element)
|
|
105
|
+
return;
|
|
106
|
+
if (element instanceof Node && target.contains(element)) {
|
|
107
|
+
target.removeChild(element);
|
|
108
|
+
}
|
|
109
|
+
if (target.childNodes.length <= 0) {
|
|
110
|
+
(_a = target.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(target);
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
if (!ready)
|
|
114
|
+
return null;
|
|
115
|
+
var ourProps = { ref: portalRef };
|
|
116
|
+
return !target || !element
|
|
117
|
+
? null
|
|
118
|
+
: createPortal(render({
|
|
119
|
+
ourProps: ourProps,
|
|
120
|
+
theirProps: theirProps,
|
|
121
|
+
defaultTag: DEFAULT_PORTAL_TAG,
|
|
122
|
+
name: 'Portal',
|
|
123
|
+
}), element);
|
|
124
|
+
}
|
|
125
|
+
// ---
|
|
126
|
+
var DEFAULT_GROUP_TAG = Fragment;
|
|
127
|
+
var PortalGroupContext = createContext(null);
|
|
128
|
+
function GroupFn(props, ref) {
|
|
129
|
+
var target = props.target, theirProps = __rest(props, ["target"]);
|
|
130
|
+
var groupRef = useSyncRefs(ref);
|
|
131
|
+
var ourProps = { ref: groupRef };
|
|
132
|
+
return (_jsx(PortalGroupContext.Provider, __assign({ value: target }, { children: render({
|
|
133
|
+
ourProps: ourProps,
|
|
134
|
+
theirProps: theirProps,
|
|
135
|
+
defaultTag: DEFAULT_GROUP_TAG,
|
|
136
|
+
name: 'Popover.Group',
|
|
137
|
+
}) })));
|
|
138
|
+
}
|
|
139
|
+
// ---
|
|
140
|
+
var PortalParentContext = createContext(null);
|
|
141
|
+
export function useNestedPortals() {
|
|
142
|
+
var parent = useContext(PortalParentContext);
|
|
143
|
+
var portals = useRef([]);
|
|
144
|
+
var register = useEvent(function (portal) {
|
|
145
|
+
portals.current.push(portal);
|
|
146
|
+
if (parent)
|
|
147
|
+
parent.register(portal);
|
|
148
|
+
return function () { return unregister(portal); };
|
|
149
|
+
});
|
|
150
|
+
var unregister = useEvent(function (portal) {
|
|
151
|
+
var idx = portals.current.indexOf(portal);
|
|
152
|
+
if (idx !== -1)
|
|
153
|
+
portals.current.splice(idx, 1);
|
|
154
|
+
if (parent)
|
|
155
|
+
parent.unregister(portal);
|
|
156
|
+
});
|
|
157
|
+
var api = useMemo(function () { return ({ register: register, unregister: unregister, portals: portals }); }, [register, unregister, portals]);
|
|
158
|
+
return [
|
|
159
|
+
portals,
|
|
160
|
+
useMemo(function () {
|
|
161
|
+
return function PortalWrapper(_a) {
|
|
162
|
+
var children = _a.children;
|
|
163
|
+
return (_jsx(PortalParentContext.Provider, __assign({ value: api }, { children: children })));
|
|
164
|
+
};
|
|
165
|
+
}, [api]),
|
|
166
|
+
];
|
|
167
|
+
}
|
|
168
|
+
var PortalRoot = forwardRefWithAs(PortalFn);
|
|
169
|
+
var Group = forwardRefWithAs(GroupFn);
|
|
170
|
+
export var Portal = Object.assign(PortalRoot, { Group: Group });
|
|
171
|
+
//# sourceMappingURL=Portal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Portal.js","sourceRoot":"","sources":["../src/Portal.tsx"],"names":[],"mappings":"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"}
|
package/lib/Props.d.ts
ADDED
|
File without changes
|
package/lib/Props.js
ADDED
package/lib/Props.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Props.js","sourceRoot":"","sources":["../src/Props.js"],"names":[],"mappings":""}
|