@payloadcms/ui 3.44.0-internal.6b79dc2 → 3.45.0-canary.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/dist/elements/BulkUpload/FileSidebar/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FileSidebar/index.js +74 -29
- package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
- package/dist/elements/BulkUpload/FileSidebar/index.scss +5 -4
- package/dist/elements/BulkUpload/FormsManager/index.d.ts +0 -1
- package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.js +37 -64
- package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/reducer.d.ts +1 -0
- package/dist/elements/BulkUpload/FormsManager/reducer.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/reducer.js +1 -0
- package/dist/elements/BulkUpload/FormsManager/reducer.js.map +1 -1
- package/dist/elements/Button/index.d.ts.map +1 -1
- package/dist/elements/Button/index.js +2 -1
- package/dist/elements/Button/index.js.map +1 -1
- package/dist/elements/Button/index.scss +2 -2
- package/dist/elements/DocumentControls/index.d.ts +1 -0
- package/dist/elements/DocumentControls/index.d.ts.map +1 -1
- package/dist/elements/DocumentControls/index.js +26 -11
- package/dist/elements/DocumentControls/index.js.map +1 -1
- package/dist/elements/DocumentFields/index.d.ts.map +1 -1
- package/dist/elements/DocumentFields/index.js.map +1 -1
- package/dist/elements/LeaveWithoutSaving/usePreventLeave.d.ts.map +1 -1
- package/dist/elements/LeaveWithoutSaving/usePreventLeave.js +14 -10
- package/dist/elements/LeaveWithoutSaving/usePreventLeave.js.map +1 -1
- package/dist/elements/LivePreview/Device/index.d.ts +5 -0
- package/dist/elements/LivePreview/Device/index.d.ts.map +1 -0
- package/dist/elements/LivePreview/Device/index.js +92 -0
- package/dist/elements/LivePreview/Device/index.js.map +1 -0
- package/dist/elements/LivePreview/DeviceContainer/index.d.ts +5 -0
- package/dist/elements/LivePreview/DeviceContainer/index.d.ts.map +1 -0
- package/dist/elements/LivePreview/DeviceContainer/index.js +55 -0
- package/dist/elements/LivePreview/DeviceContainer/index.js.map +1 -0
- package/dist/elements/LivePreview/IFrame/index.d.ts +10 -0
- package/dist/elements/LivePreview/IFrame/index.d.ts.map +1 -0
- package/dist/elements/LivePreview/IFrame/index.js +30 -0
- package/dist/elements/LivePreview/IFrame/index.js.map +1 -0
- package/dist/elements/LivePreview/IFrame/index.scss +9 -0
- package/dist/elements/LivePreview/Toggler/index.d.ts +4 -0
- package/dist/elements/LivePreview/Toggler/index.d.ts.map +1 -0
- package/dist/elements/LivePreview/Toggler/index.js +30 -0
- package/dist/elements/LivePreview/Toggler/index.js.map +1 -0
- package/dist/elements/LivePreview/Toggler/index.scss +48 -0
- package/dist/elements/LivePreview/Toolbar/Controls/index.d.ts +5 -0
- package/dist/elements/LivePreview/Toolbar/Controls/index.d.ts.map +1 -0
- package/dist/elements/LivePreview/Toolbar/Controls/index.js +157 -0
- package/dist/elements/LivePreview/Toolbar/Controls/index.js.map +1 -0
- package/dist/elements/LivePreview/Toolbar/Controls/index.scss +61 -0
- package/dist/elements/LivePreview/Toolbar/SizeInput/index.d.ts +6 -0
- package/dist/elements/LivePreview/Toolbar/SizeInput/index.d.ts.map +1 -0
- package/dist/elements/LivePreview/Toolbar/SizeInput/index.js +101 -0
- package/dist/elements/LivePreview/Toolbar/SizeInput/index.js.map +1 -0
- package/dist/elements/LivePreview/Toolbar/SizeInput/index.scss +12 -0
- package/dist/elements/LivePreview/Toolbar/index.d.ts +7 -0
- package/dist/elements/LivePreview/Toolbar/index.d.ts.map +1 -0
- package/dist/elements/LivePreview/Toolbar/index.js +97 -0
- package/dist/elements/LivePreview/Toolbar/index.js.map +1 -0
- package/dist/elements/LivePreview/Toolbar/index.scss +43 -0
- package/dist/elements/LivePreview/ToolbarArea/index.d.ts +6 -0
- package/dist/elements/LivePreview/ToolbarArea/index.d.ts.map +1 -0
- package/dist/elements/LivePreview/ToolbarArea/index.js +41 -0
- package/dist/elements/LivePreview/ToolbarArea/index.js.map +1 -0
- package/dist/elements/LivePreview/ToolbarArea/index.scss +6 -0
- package/dist/elements/LivePreview/Window/index.d.ts +5 -0
- package/dist/elements/LivePreview/Window/index.d.ts.map +1 -0
- package/dist/elements/LivePreview/Window/index.js +182 -0
- package/dist/elements/LivePreview/Window/index.js.map +1 -0
- package/dist/elements/LivePreview/Window/index.scss +48 -0
- package/dist/elements/PreviewButton/index.d.ts +1 -0
- package/dist/elements/PreviewButton/index.d.ts.map +1 -1
- package/dist/elements/PreviewButton/index.js +13 -10
- package/dist/elements/PreviewButton/index.js.map +1 -1
- package/dist/elements/PreviewButton/index.scss +39 -0
- package/dist/elements/PreviewButton/usePreviewURL.d.ts.map +1 -1
- package/dist/elements/PreviewButton/usePreviewURL.js +1 -1
- package/dist/elements/PreviewButton/usePreviewURL.js.map +1 -1
- package/dist/elements/RelationshipTable/AddNewButton.d.ts +17 -0
- package/dist/elements/RelationshipTable/AddNewButton.d.ts.map +1 -0
- package/dist/elements/RelationshipTable/AddNewButton.js +64 -0
- package/dist/elements/RelationshipTable/AddNewButton.js.map +1 -0
- package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
- package/dist/elements/RelationshipTable/index.js +35 -49
- package/dist/elements/RelationshipTable/index.js.map +1 -1
- package/dist/elements/RelationshipTable/index.scss +4 -0
- package/dist/elements/ShimmerEffect/index.d.ts +2 -0
- package/dist/elements/ShimmerEffect/index.d.ts.map +1 -1
- package/dist/elements/ShimmerEffect/index.js +5 -3
- package/dist/elements/ShimmerEffect/index.js.map +1 -1
- package/dist/elements/Table/index.scss +1 -0
- package/dist/elements/Thumbnail/createThumbnail.d.ts.map +1 -1
- package/dist/elements/Thumbnail/createThumbnail.js +8 -2
- package/dist/elements/Thumbnail/createThumbnail.js.map +1 -1
- package/dist/exports/client/{CodeEditor-Z3ZZJH7C.js → CodeEditor-YP63NRLU.js} +2 -2
- package/dist/exports/client/{chunk-CNCOIY3Y.js → chunk-5EP6VERX.js} +4 -4
- package/dist/exports/client/{chunk-CNCOIY3Y.js.map → chunk-5EP6VERX.js.map} +3 -3
- package/dist/exports/client/index.d.ts +3 -2
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +22 -22
- package/dist/exports/client/index.js.map +4 -4
- package/dist/exports/shared/index.js +1 -1
- package/dist/exports/shared/index.js.map +2 -2
- package/dist/fields/DateTime/index.d.ts.map +1 -1
- package/dist/fields/DateTime/index.js +1 -0
- package/dist/fields/DateTime/index.js.map +1 -1
- package/dist/forms/Form/index.d.ts.map +1 -1
- package/dist/forms/Form/index.js +1 -1
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/forms/Form/mergeServerFormState.js +1 -1
- package/dist/forms/Form/mergeServerFormState.js.map +1 -1
- package/dist/hooks/usePopupWindow.d.ts +20 -0
- package/dist/hooks/usePopupWindow.d.ts.map +1 -0
- package/dist/hooks/usePopupWindow.js +144 -0
- package/dist/hooks/usePopupWindow.js.map +1 -0
- package/dist/icons/ExternalLink/index.d.ts.map +1 -0
- package/dist/icons/ExternalLink/index.js.map +1 -0
- package/dist/icons/Eye/index.d.ts +7 -0
- package/dist/icons/Eye/index.d.ts.map +1 -0
- package/dist/icons/Eye/index.js +28 -0
- package/dist/icons/Eye/index.js.map +1 -0
- package/dist/icons/Eye/index.scss +20 -0
- package/dist/providers/ListQuery/types.d.ts +2 -2
- package/dist/providers/ListQuery/types.d.ts.map +1 -1
- package/dist/providers/ListQuery/types.js.map +1 -1
- package/dist/providers/LivePreview/collisionDetection.d.ts +3 -0
- package/dist/providers/LivePreview/collisionDetection.d.ts.map +1 -0
- package/dist/providers/LivePreview/collisionDetection.js +29 -0
- package/dist/providers/LivePreview/collisionDetection.js.map +1 -0
- package/dist/providers/LivePreview/context.d.ts +55 -0
- package/dist/providers/LivePreview/context.d.ts.map +1 -0
- package/dist/providers/LivePreview/context.js +44 -0
- package/dist/providers/LivePreview/context.js.map +1 -0
- package/dist/providers/LivePreview/index.d.ts +16 -0
- package/dist/providers/LivePreview/index.d.ts.map +1 -0
- package/dist/providers/LivePreview/index.js +206 -0
- package/dist/providers/LivePreview/index.js.map +1 -0
- package/dist/providers/LivePreview/index.scss +68 -0
- package/dist/providers/LivePreview/sizeReducer.d.ts +20 -0
- package/dist/providers/LivePreview/sizeReducer.d.ts.map +1 -0
- package/dist/providers/LivePreview/sizeReducer.js +30 -0
- package/dist/providers/LivePreview/sizeReducer.js.map +1 -0
- package/dist/providers/TableColumns/buildColumnState/index.d.ts +3 -3
- package/dist/providers/TableColumns/buildColumnState/index.d.ts.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/index.js.map +1 -1
- package/dist/providers/TableColumns/getInitialColumns.d.ts +2 -2
- package/dist/providers/TableColumns/getInitialColumns.d.ts.map +1 -1
- package/dist/providers/TableColumns/getInitialColumns.js.map +1 -1
- package/dist/providers/TableColumns/types.d.ts +2 -2
- package/dist/providers/TableColumns/types.d.ts.map +1 -1
- package/dist/providers/TableColumns/types.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/utilities/buildTableState.d.ts +2 -2
- package/dist/utilities/buildTableState.d.ts.map +1 -1
- package/dist/utilities/buildTableState.js +4 -4
- package/dist/utilities/buildTableState.js.map +1 -1
- package/dist/utilities/formatDocTitle/index.js +2 -2
- package/dist/utilities/formatDocTitle/index.js.map +1 -1
- package/dist/utilities/renderTable.d.ts +3 -3
- package/dist/utilities/renderTable.d.ts.map +1 -1
- package/dist/utilities/renderTable.js.map +1 -1
- package/dist/views/Edit/index.d.ts.map +1 -1
- package/dist/views/Edit/index.js +52 -41
- package/dist/views/Edit/index.js.map +1 -1
- package/dist/views/Edit/index.scss +39 -1
- package/package.json +4 -4
- package/dist/elements/BulkUpload/index.scss +0 -0
- package/dist/graphics/ExternalLink/index.d.ts.map +0 -1
- package/dist/graphics/ExternalLink/index.js.map +0 -1
- /package/dist/exports/client/{CodeEditor-Z3ZZJH7C.js.map → CodeEditor-YP63NRLU.js.map} +0 -0
- /package/dist/{graphics → icons}/ExternalLink/index.d.ts +0 -0
- /package/dist/{graphics → icons}/ExternalLink/index.js +0 -0
- /package/dist/{graphics → icons}/ExternalLink/index.scss +0 -0
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { c as _c } from "react/compiler-runtime";
|
|
4
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
5
|
+
import { reduceFieldsToValues } from 'payload/shared';
|
|
6
|
+
import React, { useEffect } from 'react';
|
|
7
|
+
import { useAllFormFields } from '../../../forms/Form/context.js';
|
|
8
|
+
import { useDocumentEvents } from '../../../providers/DocumentEvents/index.js';
|
|
9
|
+
import { useLivePreviewContext } from '../../../providers/LivePreview/context.js';
|
|
10
|
+
import { useLocale } from '../../../providers/Locale/index.js';
|
|
11
|
+
import { ShimmerEffect } from '../../ShimmerEffect/index.js';
|
|
12
|
+
import { DeviceContainer } from '../Device/index.js';
|
|
13
|
+
import { IFrame } from '../IFrame/index.js';
|
|
14
|
+
import { LivePreviewToolbar } from '../Toolbar/index.js';
|
|
15
|
+
import './index.scss';
|
|
16
|
+
const baseClass = 'live-preview-window';
|
|
17
|
+
export const LivePreviewWindow = props => {
|
|
18
|
+
const $ = _c(46);
|
|
19
|
+
const {
|
|
20
|
+
appIsReady,
|
|
21
|
+
breakpoint,
|
|
22
|
+
fieldSchemaJSON,
|
|
23
|
+
iframeHasLoaded,
|
|
24
|
+
iframeRef,
|
|
25
|
+
isLivePreviewing,
|
|
26
|
+
popupRef,
|
|
27
|
+
previewWindowType,
|
|
28
|
+
setIframeHasLoaded,
|
|
29
|
+
url
|
|
30
|
+
} = useLivePreviewContext();
|
|
31
|
+
const locale = useLocale();
|
|
32
|
+
const {
|
|
33
|
+
mostRecentUpdate
|
|
34
|
+
} = useDocumentEvents();
|
|
35
|
+
const prevWindowType = React.useRef(undefined);
|
|
36
|
+
const [formState] = useAllFormFields();
|
|
37
|
+
let t0;
|
|
38
|
+
if ($[0] !== appIsReady || $[1] !== fieldSchemaJSON || $[2] !== formState || $[3] !== iframeRef || $[4] !== isLivePreviewing || $[5] !== locale || $[6] !== mostRecentUpdate || $[7] !== popupRef || $[8] !== previewWindowType || $[9] !== url) {
|
|
39
|
+
t0 = () => {
|
|
40
|
+
if (!isLivePreviewing) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (formState && window && "postMessage" in window && appIsReady) {
|
|
44
|
+
const values = reduceFieldsToValues(formState, true);
|
|
45
|
+
const shouldSendSchema = !prevWindowType.current || prevWindowType.current !== previewWindowType;
|
|
46
|
+
prevWindowType.current = previewWindowType;
|
|
47
|
+
const message = {
|
|
48
|
+
type: "payload-live-preview",
|
|
49
|
+
data: values,
|
|
50
|
+
externallyUpdatedRelationship: mostRecentUpdate,
|
|
51
|
+
fieldSchemaJSON: shouldSendSchema ? fieldSchemaJSON : undefined,
|
|
52
|
+
locale: locale.code
|
|
53
|
+
};
|
|
54
|
+
if (previewWindowType === "popup" && popupRef.current) {
|
|
55
|
+
popupRef.current.postMessage(message, url);
|
|
56
|
+
}
|
|
57
|
+
if (previewWindowType === "iframe" && iframeRef.current) {
|
|
58
|
+
iframeRef.current.contentWindow?.postMessage(message, url);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
$[0] = appIsReady;
|
|
63
|
+
$[1] = fieldSchemaJSON;
|
|
64
|
+
$[2] = formState;
|
|
65
|
+
$[3] = iframeRef;
|
|
66
|
+
$[4] = isLivePreviewing;
|
|
67
|
+
$[5] = locale;
|
|
68
|
+
$[6] = mostRecentUpdate;
|
|
69
|
+
$[7] = popupRef;
|
|
70
|
+
$[8] = previewWindowType;
|
|
71
|
+
$[9] = url;
|
|
72
|
+
$[10] = t0;
|
|
73
|
+
} else {
|
|
74
|
+
t0 = $[10];
|
|
75
|
+
}
|
|
76
|
+
let t1;
|
|
77
|
+
if ($[11] !== appIsReady || $[12] !== fieldSchemaJSON || $[13] !== formState || $[14] !== iframeHasLoaded || $[15] !== iframeRef || $[16] !== isLivePreviewing || $[17] !== locale || $[18] !== mostRecentUpdate || $[19] !== popupRef || $[20] !== previewWindowType || $[21] !== setIframeHasLoaded || $[22] !== url) {
|
|
78
|
+
t1 = [formState, url, iframeHasLoaded, previewWindowType, popupRef, appIsReady, iframeRef, setIframeHasLoaded, fieldSchemaJSON, mostRecentUpdate, locale, isLivePreviewing];
|
|
79
|
+
$[11] = appIsReady;
|
|
80
|
+
$[12] = fieldSchemaJSON;
|
|
81
|
+
$[13] = formState;
|
|
82
|
+
$[14] = iframeHasLoaded;
|
|
83
|
+
$[15] = iframeRef;
|
|
84
|
+
$[16] = isLivePreviewing;
|
|
85
|
+
$[17] = locale;
|
|
86
|
+
$[18] = mostRecentUpdate;
|
|
87
|
+
$[19] = popupRef;
|
|
88
|
+
$[20] = previewWindowType;
|
|
89
|
+
$[21] = setIframeHasLoaded;
|
|
90
|
+
$[22] = url;
|
|
91
|
+
$[23] = t1;
|
|
92
|
+
} else {
|
|
93
|
+
t1 = $[23];
|
|
94
|
+
}
|
|
95
|
+
useEffect(t0, t1);
|
|
96
|
+
let t2;
|
|
97
|
+
if ($[24] !== iframeRef || $[25] !== isLivePreviewing || $[26] !== popupRef || $[27] !== previewWindowType || $[28] !== url) {
|
|
98
|
+
t2 = () => {
|
|
99
|
+
if (!isLivePreviewing) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const message_0 = {
|
|
103
|
+
type: "payload-document-event"
|
|
104
|
+
};
|
|
105
|
+
if (previewWindowType === "popup" && popupRef.current) {
|
|
106
|
+
popupRef.current.postMessage(message_0, url);
|
|
107
|
+
}
|
|
108
|
+
if (previewWindowType === "iframe" && iframeRef.current) {
|
|
109
|
+
iframeRef.current.contentWindow?.postMessage(message_0, url);
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
$[24] = iframeRef;
|
|
113
|
+
$[25] = isLivePreviewing;
|
|
114
|
+
$[26] = popupRef;
|
|
115
|
+
$[27] = previewWindowType;
|
|
116
|
+
$[28] = url;
|
|
117
|
+
$[29] = t2;
|
|
118
|
+
} else {
|
|
119
|
+
t2 = $[29];
|
|
120
|
+
}
|
|
121
|
+
let t3;
|
|
122
|
+
if ($[30] !== iframeRef || $[31] !== isLivePreviewing || $[32] !== mostRecentUpdate || $[33] !== popupRef || $[34] !== previewWindowType || $[35] !== url) {
|
|
123
|
+
t3 = [mostRecentUpdate, iframeRef, popupRef, previewWindowType, url, isLivePreviewing];
|
|
124
|
+
$[30] = iframeRef;
|
|
125
|
+
$[31] = isLivePreviewing;
|
|
126
|
+
$[32] = mostRecentUpdate;
|
|
127
|
+
$[33] = popupRef;
|
|
128
|
+
$[34] = previewWindowType;
|
|
129
|
+
$[35] = url;
|
|
130
|
+
$[36] = t3;
|
|
131
|
+
} else {
|
|
132
|
+
t3 = $[36];
|
|
133
|
+
}
|
|
134
|
+
useEffect(t2, t3);
|
|
135
|
+
if (previewWindowType === "iframe") {
|
|
136
|
+
const t4 = isLivePreviewing && `${baseClass}--is-live-previewing`;
|
|
137
|
+
const t5 = breakpoint && breakpoint !== "responsive" && `${baseClass}--has-breakpoint`;
|
|
138
|
+
let t6;
|
|
139
|
+
if ($[37] !== t4 || $[38] !== t5) {
|
|
140
|
+
t6 = [baseClass, t4, t5].filter(Boolean);
|
|
141
|
+
$[37] = t4;
|
|
142
|
+
$[38] = t5;
|
|
143
|
+
$[39] = t6;
|
|
144
|
+
} else {
|
|
145
|
+
t6 = $[39];
|
|
146
|
+
}
|
|
147
|
+
const t7 = t6.join(" ");
|
|
148
|
+
let t8;
|
|
149
|
+
if ($[40] !== iframeRef || $[41] !== props || $[42] !== setIframeHasLoaded || $[43] !== t7 || $[44] !== url) {
|
|
150
|
+
t8 = _jsx("div", {
|
|
151
|
+
className: t7,
|
|
152
|
+
children: _jsxs("div", {
|
|
153
|
+
className: `${baseClass}__wrapper`,
|
|
154
|
+
children: [_jsx(LivePreviewToolbar, {
|
|
155
|
+
...props
|
|
156
|
+
}), _jsx("div", {
|
|
157
|
+
className: `${baseClass}__main`,
|
|
158
|
+
children: _jsx(DeviceContainer, {
|
|
159
|
+
children: url ? _jsx(IFrame, {
|
|
160
|
+
ref: iframeRef,
|
|
161
|
+
setIframeHasLoaded,
|
|
162
|
+
url
|
|
163
|
+
}) : _jsx(ShimmerEffect, {
|
|
164
|
+
height: "100%"
|
|
165
|
+
})
|
|
166
|
+
})
|
|
167
|
+
})]
|
|
168
|
+
})
|
|
169
|
+
});
|
|
170
|
+
$[40] = iframeRef;
|
|
171
|
+
$[41] = props;
|
|
172
|
+
$[42] = setIframeHasLoaded;
|
|
173
|
+
$[43] = t7;
|
|
174
|
+
$[44] = url;
|
|
175
|
+
$[45] = t8;
|
|
176
|
+
} else {
|
|
177
|
+
t8 = $[45];
|
|
178
|
+
}
|
|
179
|
+
return t8;
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","reduceFieldsToValues","React","useEffect","useAllFormFields","useDocumentEvents","useLivePreviewContext","useLocale","ShimmerEffect","DeviceContainer","IFrame","LivePreviewToolbar","baseClass","LivePreviewWindow","props","$","appIsReady","breakpoint","fieldSchemaJSON","iframeHasLoaded","iframeRef","isLivePreviewing","popupRef","previewWindowType","setIframeHasLoaded","url","locale","mostRecentUpdate","prevWindowType","useRef","undefined","formState","t0","window","values","shouldSendSchema","current","message","type","data","externallyUpdatedRelationship","code","postMessage","contentWindow","t1","t2","message_0","t3","t4","t5","t6","filter","Boolean","t7","join","t8","_jsx","className","children","_jsxs","ref","height"],"sources":["../../../../src/elements/LivePreview/Window/index.tsx"],"sourcesContent":["'use client'\n\nimport type { EditViewProps } from 'payload'\n\nimport { reduceFieldsToValues } from 'payload/shared'\nimport React, { useEffect } from 'react'\n\nimport { useAllFormFields } from '../../../forms/Form/context.js'\nimport { useDocumentEvents } from '../../../providers/DocumentEvents/index.js'\nimport { useLivePreviewContext } from '../../../providers/LivePreview/context.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { ShimmerEffect } from '../../ShimmerEffect/index.js'\nimport { DeviceContainer } from '../Device/index.js'\nimport { IFrame } from '../IFrame/index.js'\nimport { LivePreviewToolbar } from '../Toolbar/index.js'\nimport './index.scss'\n\nconst baseClass = 'live-preview-window'\n\nexport const LivePreviewWindow: React.FC<EditViewProps> = (props) => {\n const {\n appIsReady,\n breakpoint,\n fieldSchemaJSON,\n iframeHasLoaded,\n iframeRef,\n isLivePreviewing,\n popupRef,\n previewWindowType,\n setIframeHasLoaded,\n url,\n } = useLivePreviewContext()\n\n const locale = useLocale()\n\n const { mostRecentUpdate } = useDocumentEvents()\n\n const prevWindowType =\n React.useRef<ReturnType<typeof useLivePreviewContext>['previewWindowType']>(undefined)\n\n const [formState] = useAllFormFields()\n\n // For client-side apps, send data through `window.postMessage`\n // The preview could either be an iframe embedded on the page\n // Or it could be a separate popup window\n // We need to transmit data to both accordingly\n useEffect(() => {\n if (!isLivePreviewing) {\n return\n }\n\n // For performance, do no reduce fields to values until after the iframe or popup has loaded\n if (formState && window && 'postMessage' in window && appIsReady) {\n const values = reduceFieldsToValues(formState, true)\n\n // To reduce on large `postMessage` payloads, only send `fieldSchemaToJSON` one time\n // To do this, the underlying JS function maintains a cache of this value\n // So we need to send it through each time the window type changes\n // But only once per window type change, not on every render, because this is a potentially large obj\n const shouldSendSchema =\n !prevWindowType.current || prevWindowType.current !== previewWindowType\n\n prevWindowType.current = previewWindowType\n\n const message = {\n type: 'payload-live-preview',\n data: values,\n externallyUpdatedRelationship: mostRecentUpdate,\n fieldSchemaJSON: shouldSendSchema ? fieldSchemaJSON : undefined,\n locale: locale.code,\n }\n\n // Post message to external popup window\n if (previewWindowType === 'popup' && popupRef.current) {\n popupRef.current.postMessage(message, url)\n }\n\n // Post message to embedded iframe\n if (previewWindowType === 'iframe' && iframeRef.current) {\n iframeRef.current.contentWindow?.postMessage(message, url)\n }\n }\n }, [\n formState,\n url,\n iframeHasLoaded,\n previewWindowType,\n popupRef,\n appIsReady,\n iframeRef,\n setIframeHasLoaded,\n fieldSchemaJSON,\n mostRecentUpdate,\n locale,\n isLivePreviewing,\n ])\n\n // To support SSR, we transmit a `window.postMessage` event without a payload\n // This is because the event will ultimately trigger a server-side roundtrip\n // i.e., save, save draft, autosave, etc. will fire `router.refresh()`\n useEffect(() => {\n if (!isLivePreviewing) {\n return\n }\n\n const message = {\n type: 'payload-document-event',\n }\n\n // Post message to external popup window\n if (previewWindowType === 'popup' && popupRef.current) {\n popupRef.current.postMessage(message, url)\n }\n\n // Post message to embedded iframe\n if (previewWindowType === 'iframe' && iframeRef.current) {\n iframeRef.current.contentWindow?.postMessage(message, url)\n }\n }, [mostRecentUpdate, iframeRef, popupRef, previewWindowType, url, isLivePreviewing])\n\n if (previewWindowType === 'iframe') {\n return (\n <div\n className={[\n baseClass,\n isLivePreviewing && `${baseClass}--is-live-previewing`,\n breakpoint && breakpoint !== 'responsive' && `${baseClass}--has-breakpoint`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <div className={`${baseClass}__wrapper`}>\n <LivePreviewToolbar {...props} />\n <div className={`${baseClass}__main`}>\n <DeviceContainer>\n {url ? (\n <IFrame ref={iframeRef} setIframeHasLoaded={setIframeHasLoaded} url={url} />\n ) : (\n <ShimmerEffect height=\"100%\" />\n )}\n </DeviceContainer>\n </div>\n </div>\n </div>\n )\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
@import '../../../scss/styles.scss';
|
|
2
|
+
|
|
3
|
+
@layer payload-default {
|
|
4
|
+
.live-preview-window {
|
|
5
|
+
background-color: var(--theme-bg);
|
|
6
|
+
display: none;
|
|
7
|
+
width: 60%;
|
|
8
|
+
flex-shrink: 0;
|
|
9
|
+
flex-grow: 0;
|
|
10
|
+
position: sticky;
|
|
11
|
+
top: var(--doc-controls-height);
|
|
12
|
+
height: calc(100vh - var(--doc-controls-height));
|
|
13
|
+
overflow: hidden;
|
|
14
|
+
|
|
15
|
+
&--is-live-previewing {
|
|
16
|
+
display: block;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
&__wrapper {
|
|
20
|
+
display: flex;
|
|
21
|
+
flex-direction: column;
|
|
22
|
+
height: 100%;
|
|
23
|
+
justify-content: flex-start;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
&__main {
|
|
27
|
+
flex-grow: 1;
|
|
28
|
+
height: 100%;
|
|
29
|
+
width: 100%;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
&--has-breakpoint {
|
|
33
|
+
.live-preview-iframe {
|
|
34
|
+
border: 1px solid var(--theme-elevation-100);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.live-preview-window {
|
|
38
|
+
&__main {
|
|
39
|
+
padding: var(--base);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
@include mid-break {
|
|
45
|
+
width: 100%;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/PreviewButton/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAEvD,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/PreviewButton/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAEvD,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,cAAc,CAAA;AAIrB,wBAAgB,aAAa,CAAC,KAAK,EAAE,wBAAwB,qBAmB5D"}
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
import { c as _c } from "react/compiler-runtime";
|
|
4
4
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
5
|
import React from 'react';
|
|
6
|
-
import {
|
|
6
|
+
import { ExternalLinkIcon } from '../../icons/ExternalLink/index.js';
|
|
7
7
|
import { usePreviewURL } from './usePreviewURL.js';
|
|
8
|
+
import './index.scss';
|
|
8
9
|
const baseClass = 'preview-btn';
|
|
9
10
|
export function PreviewButton(props) {
|
|
10
11
|
const $ = _c(5);
|
|
@@ -14,9 +15,11 @@ export function PreviewButton(props) {
|
|
|
14
15
|
} = usePreviewURL();
|
|
15
16
|
let t0;
|
|
16
17
|
if ($[0] !== generatePreviewURL) {
|
|
17
|
-
t0 = () =>
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
t0 = () => {
|
|
19
|
+
generatePreviewURL({
|
|
20
|
+
openPreviewWindow: true
|
|
21
|
+
});
|
|
22
|
+
};
|
|
20
23
|
$[0] = generatePreviewURL;
|
|
21
24
|
$[1] = t0;
|
|
22
25
|
} else {
|
|
@@ -24,14 +27,14 @@ export function PreviewButton(props) {
|
|
|
24
27
|
}
|
|
25
28
|
let t1;
|
|
26
29
|
if ($[2] !== label || $[3] !== t0) {
|
|
27
|
-
t1 = _jsx(
|
|
28
|
-
|
|
30
|
+
t1 = _jsx("button", {
|
|
31
|
+
"aria-label": label,
|
|
29
32
|
className: baseClass,
|
|
30
|
-
|
|
31
|
-
iconPosition: "left",
|
|
33
|
+
id: "preview-button",
|
|
32
34
|
onClick: t0,
|
|
33
|
-
|
|
34
|
-
|
|
35
|
+
title: label,
|
|
36
|
+
type: "button",
|
|
37
|
+
children: _jsx(ExternalLinkIcon, {})
|
|
35
38
|
});
|
|
36
39
|
$[2] = label;
|
|
37
40
|
$[3] = t0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","React","
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","React","ExternalLinkIcon","usePreviewURL","baseClass","PreviewButton","props","$","generatePreviewURL","label","t0","openPreviewWindow","t1","_jsx","className","id","onClick","title","type","children"],"sources":["../../../src/elements/PreviewButton/index.tsx"],"sourcesContent":["'use client'\nimport type { PreviewButtonClientProps } from 'payload'\n\nimport React from 'react'\n\nimport { ExternalLinkIcon } from '../../icons/ExternalLink/index.js'\nimport { usePreviewURL } from './usePreviewURL.js'\nimport './index.scss'\n\nconst baseClass = 'preview-btn'\n\nexport function PreviewButton(props: PreviewButtonClientProps) {\n const { generatePreviewURL, label } = usePreviewURL()\n\n return (\n <button\n aria-label={label}\n className={baseClass}\n id=\"preview-button\"\n onClick={() => {\n generatePreviewURL({\n openPreviewWindow: true,\n })\n }}\n title={label}\n type=\"button\"\n >\n <ExternalLinkIcon />\n </button>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,OAAOC,KAAA,MAAW;AAElB,SAASC,gBAAgB,QAAQ;AACjC,SAASC,aAAa,QAAQ;AAC9B,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB,OAAO,SAAAC,cAAAC,KAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EACL;IAAAQ,kBAAA;IAAAC;EAAA,IAAsCN,aAAA;EAAA,IAAAO,EAAA;EAAA,IAAAH,CAAA,QAAAC,kBAAA;IAOzBE,EAAA,GAAAA,CAAA;MACPF,kBAAA;QAAAG,iBAAA;MAAA,CAEA;IAAA;IACFJ,CAAA,MAAAC,kBAAA;IAAAD,CAAA,MAAAG,EAAA;EAAA;IAAAA,EAAA,GAAAH,CAAA;EAAA;EAAA,IAAAK,EAAA;EAAA,IAAAL,CAAA,QAAAE,KAAA,IAAAF,CAAA,QAAAG,EAAA;IARFE,EAAA,GAAAC,IAAA,CAAC;MAAA,cACaJ,KAAA;MAAAK,SAAA,EAAAV,SAAA;MAAAW,EAAA,EAET;MAAAC,OAAA,EACMN,EAIT;MAAAO,KAAA,EACOR,KAAA;MAAAS,IAAA,EACF;MAAAC,QAAA,EAELN,IAAA,CAAAX,gBAAA,IAAC;IAAA,C;;;;;;;SAZHU,E","ignoreList":[]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
@import '../../scss/styles.scss';
|
|
2
|
+
|
|
3
|
+
@layer payload-default {
|
|
4
|
+
.preview-btn {
|
|
5
|
+
background: none;
|
|
6
|
+
border: none;
|
|
7
|
+
border: 1px solid;
|
|
8
|
+
border-color: var(--theme-elevation-100);
|
|
9
|
+
border-radius: var(--style-radius-s);
|
|
10
|
+
line-height: var(--btn-line-height);
|
|
11
|
+
font-size: var(--base-body-size);
|
|
12
|
+
padding: calc(var(--base) * 0.2) calc(var(--base) * 0.4);
|
|
13
|
+
cursor: pointer;
|
|
14
|
+
transition-property: border, color, background;
|
|
15
|
+
transition-duration: 100ms;
|
|
16
|
+
transition-timing-function: cubic-bezier(0, 0.2, 0.2, 1);
|
|
17
|
+
height: calc(var(--base) * 1.6);
|
|
18
|
+
width: calc(var(--base) * 1.6);
|
|
19
|
+
position: relative;
|
|
20
|
+
|
|
21
|
+
.icon {
|
|
22
|
+
position: absolute;
|
|
23
|
+
top: 50%;
|
|
24
|
+
left: 50%;
|
|
25
|
+
transform: translate(-50%, -50%);
|
|
26
|
+
|
|
27
|
+
.stroke {
|
|
28
|
+
transition-property: stroke;
|
|
29
|
+
transition-duration: 100ms;
|
|
30
|
+
transition-timing-function: cubic-bezier(0, 0.2, 0.2, 1);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
&:hover {
|
|
35
|
+
border-color: var(--theme-elevation-300);
|
|
36
|
+
background-color: var(--theme-elevation-100);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePreviewURL.d.ts","sourceRoot":"","sources":["../../../src/elements/PreviewButton/usePreviewURL.tsx"],"names":[],"mappings":"AAUA,eAAO,MAAM,aAAa,QAAO;IAC/B,kBAAkB,EAAE,CAAC,EAAE,iBAAiB,EAAE,EAAE;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAA;IACpF,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"usePreviewURL.d.ts","sourceRoot":"","sources":["../../../src/elements/PreviewButton/usePreviewURL.tsx"],"names":[],"mappings":"AAUA,eAAO,MAAM,aAAa,QAAO;IAC/B,kBAAkB,EAAE,CAAC,EAAE,iBAAiB,EAAE,EAAE;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAA;IACpF,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;CAqFnB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePreviewURL.js","names":["qs","useCallback","useRef","useState","toast","useConfig","useDocumentInfo","useLocale","useTranslation","usePreviewURL","id","collectionSlug","globalSlug","versionCount","isLoading","setIsLoading","previewURL","setPreviewURL","code","locale","hasVersions","config","routes","api","serverURL","t","isGeneratingPreviewURL","generatePreviewURL","openPreviewWindow","current","url","params","draft","undefined","res","fetch","stringify","ok","Error","newPreviewURL","json","window","open","
|
|
1
|
+
{"version":3,"file":"usePreviewURL.js","names":["qs","useCallback","useRef","useState","toast","useConfig","useDocumentInfo","useLocale","useTranslation","usePreviewURL","id","collectionSlug","globalSlug","versionCount","isLoading","setIsLoading","previewURL","setPreviewURL","code","locale","hasVersions","config","routes","api","serverURL","t","isGeneratingPreviewURL","generatePreviewURL","openPreviewWindow","current","url","params","draft","undefined","res","fetch","stringify","ok","Error","newPreviewURL","json","window","open","_err","error","label"],"sources":["../../../src/elements/PreviewButton/usePreviewURL.tsx"],"sourcesContent":["'use client'\nimport * as qs from 'qs-esm'\nimport { useCallback, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\n\nexport const usePreviewURL = (): {\n generatePreviewURL: ({ openPreviewWindow }: { openPreviewWindow?: boolean }) => void\n isLoading: boolean\n label: string\n previewURL: string\n} => {\n const { id, collectionSlug, globalSlug, versionCount } = useDocumentInfo()\n\n const [isLoading, setIsLoading] = useState(false)\n const [previewURL, setPreviewURL] = useState('')\n const { code: locale } = useLocale()\n\n const hasVersions = versionCount > 0\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const { t } = useTranslation()\n\n const isGeneratingPreviewURL = useRef(false)\n\n // we need to regenerate the preview URL every time the button is clicked\n // to do this we need to fetch the document data fresh from the API\n // this will ensure the latest data is used when generating the preview URL\n const generatePreviewURL = useCallback(\n async ({ openPreviewWindow = false }) => {\n if (isGeneratingPreviewURL.current) {\n return\n }\n\n isGeneratingPreviewURL.current = true\n\n try {\n setIsLoading(true)\n\n let url = `${serverURL}${api}`\n\n if (collectionSlug) {\n url = `${url}/${collectionSlug}/${id}/preview`\n }\n\n if (globalSlug) {\n url = `${url}/globals/${globalSlug}/preview`\n }\n\n const params = {\n draft: hasVersions ? 'true' : 'false',\n locale: locale || undefined,\n }\n\n const res = await fetch(`${url}?${qs.stringify(params)}`)\n\n if (!res.ok) {\n throw new Error()\n }\n\n const newPreviewURL = await res.json()\n\n if (!newPreviewURL) {\n throw new Error()\n }\n\n setPreviewURL(newPreviewURL)\n setIsLoading(false)\n isGeneratingPreviewURL.current = false\n\n if (openPreviewWindow) {\n window.open(newPreviewURL, '_blank')\n }\n } catch (_err) {\n setIsLoading(false)\n isGeneratingPreviewURL.current = false\n toast.error(t('error:previewing'))\n }\n },\n [serverURL, api, collectionSlug, globalSlug, hasVersions, locale, id, t],\n )\n\n return {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n generatePreviewURL,\n isLoading,\n label: isLoading ? t('general:loading') : t('version:preview'),\n previewURL,\n }\n}\n"],"mappings":"AAAA;;AACA,YAAYA,EAAA,MAAQ;AACpB,SAASC,WAAW,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAC9C,SAASC,KAAK,QAAQ;AAEtB,SAASC,SAAS,QAAQ;AAC1B,SAASC,eAAe,QAAQ;AAChC,SAASC,SAAS,QAAQ;AAC1B,SAASC,cAAc,QAAQ;AAE/B,OAAO,MAAMC,aAAA,GAAgBA,CAAA;EAM3B,MAAM;IAAEC,EAAE;IAAEC,cAAc;IAAEC,UAAU;IAAEC;EAAY,CAAE,GAAGP,eAAA;EAEzD,MAAM,CAACQ,SAAA,EAAWC,YAAA,CAAa,GAAGZ,QAAA,CAAS;EAC3C,MAAM,CAACa,UAAA,EAAYC,aAAA,CAAc,GAAGd,QAAA,CAAS;EAC7C,MAAM;IAAEe,IAAA,EAAMC;EAAM,CAAE,GAAGZ,SAAA;EAEzB,MAAMa,WAAA,GAAcP,YAAA,GAAe;EAEnC,MAAM;IACJQ,MAAA,EAAQ;MACNC,MAAA,EAAQ;QAAEC;MAAG,CAAE;MACfC;IAAS;EACV,CACF,GAAGnB,SAAA;EAEJ,MAAM;IAAEoB;EAAC,CAAE,GAAGjB,cAAA;EAEd,MAAMkB,sBAAA,GAAyBxB,MAAA,CAAO;EAEtC;EACA;EACA;EACA,MAAMyB,kBAAA,GAAqB1B,WAAA,CACzB,OAAO;IAAE2B,iBAAA,GAAoB;EAAK,CAAE;IAClC,IAAIF,sBAAA,CAAuBG,OAAO,EAAE;MAClC;IACF;IAEAH,sBAAA,CAAuBG,OAAO,GAAG;IAEjC,IAAI;MACFd,YAAA,CAAa;MAEb,IAAIe,GAAA,GAAM,GAAGN,SAAA,GAAYD,GAAA,EAAK;MAE9B,IAAIZ,cAAA,EAAgB;QAClBmB,GAAA,GAAM,GAAGA,GAAA,IAAOnB,cAAA,IAAkBD,EAAA,UAAY;MAChD;MAEA,IAAIE,UAAA,EAAY;QACdkB,GAAA,GAAM,GAAGA,GAAA,YAAelB,UAAA,UAAoB;MAC9C;MAEA,MAAMmB,MAAA,GAAS;QACbC,KAAA,EAAOZ,WAAA,GAAc,SAAS;QAC9BD,MAAA,EAAQA,MAAA,IAAUc;MACpB;MAEA,MAAMC,GAAA,GAAM,MAAMC,KAAA,CAAM,GAAGL,GAAA,IAAO9B,EAAA,CAAGoC,SAAS,CAACL,MAAA,GAAS;MAExD,IAAI,CAACG,GAAA,CAAIG,EAAE,EAAE;QACX,MAAM,IAAIC,KAAA;MACZ;MAEA,MAAMC,aAAA,GAAgB,MAAML,GAAA,CAAIM,IAAI;MAEpC,IAAI,CAACD,aAAA,EAAe;QAClB,MAAM,IAAID,KAAA;MACZ;MAEArB,aAAA,CAAcsB,aAAA;MACdxB,YAAA,CAAa;MACbW,sBAAA,CAAuBG,OAAO,GAAG;MAEjC,IAAID,iBAAA,EAAmB;QACrBa,MAAA,CAAOC,IAAI,CAACH,aAAA,EAAe;MAC7B;IACF,EAAE,OAAOI,IAAA,EAAM;MACb5B,YAAA,CAAa;MACbW,sBAAA,CAAuBG,OAAO,GAAG;MACjCzB,KAAA,CAAMwC,KAAK,CAACnB,CAAA,CAAE;IAChB;EACF,GACA,CAACD,SAAA,EAAWD,GAAA,EAAKZ,cAAA,EAAgBC,UAAA,EAAYQ,WAAA,EAAaD,MAAA,EAAQT,EAAA,EAAIe,CAAA,CAAE;EAG1E,OAAO;IACL;IACAE,kBAAA;IACAb,SAAA;IACA+B,KAAA,EAAO/B,SAAA,GAAYW,CAAA,CAAE,qBAAqBA,CAAA,CAAE;IAC5CT;EACF;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { I18nClient } from '@payloadcms/translations';
|
|
2
|
+
import type { ClientCollectionConfig, SanitizedPermissions } from 'payload';
|
|
3
|
+
import type { Props as ButtonProps } from '../../elements/Button/types.js';
|
|
4
|
+
export declare const AddNewButton: ({ allowCreate, baseClass, buttonStyle, className, collections, i18n, icon, label, onClick, permissions, relationTo, }: {
|
|
5
|
+
allowCreate: boolean;
|
|
6
|
+
baseClass: string;
|
|
7
|
+
buttonStyle?: ButtonProps["buttonStyle"];
|
|
8
|
+
className?: string;
|
|
9
|
+
collections: ClientCollectionConfig[];
|
|
10
|
+
i18n: I18nClient;
|
|
11
|
+
icon?: ButtonProps["icon"];
|
|
12
|
+
label: string;
|
|
13
|
+
onClick: (selectedCollection?: string) => void;
|
|
14
|
+
permissions: SanitizedPermissions;
|
|
15
|
+
relationTo: string | string[];
|
|
16
|
+
}) => import("react").JSX.Element;
|
|
17
|
+
//# sourceMappingURL=AddNewButton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AddNewButton.d.ts","sourceRoot":"","sources":["../../../src/elements/RelationshipTable/AddNewButton.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAI3E,OAAO,KAAK,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,gCAAgC,CAAA;AAK1E,eAAO,MAAM,YAAY,0HAYtB;IACD,WAAW,EAAE,OAAO,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,WAAW,CAAC,aAAa,CAAC,CAAA;IACxC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,sBAAsB,EAAE,CAAA;IACrC,IAAI,EAAE,UAAU,CAAA;IAChB,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,CAAC,kBAAkB,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9C,WAAW,EAAE,oBAAoB,CAAA;IACjC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAC9B,gCAsDA,CAAA"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
4
|
+
import { getTranslation } from '@payloadcms/translations';
|
|
5
|
+
import { Button } from '../../elements/Button/index.js';
|
|
6
|
+
import { Popup, PopupList } from '../Popup/index.js';
|
|
7
|
+
export const AddNewButton = ({
|
|
8
|
+
allowCreate,
|
|
9
|
+
baseClass,
|
|
10
|
+
buttonStyle,
|
|
11
|
+
className,
|
|
12
|
+
collections,
|
|
13
|
+
i18n,
|
|
14
|
+
icon,
|
|
15
|
+
label,
|
|
16
|
+
onClick,
|
|
17
|
+
permissions,
|
|
18
|
+
relationTo
|
|
19
|
+
}) => {
|
|
20
|
+
if (!allowCreate) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
const isPolymorphic = Array.isArray(relationTo);
|
|
24
|
+
if (!isPolymorphic) {
|
|
25
|
+
return /*#__PURE__*/_jsx(Button, {
|
|
26
|
+
buttonStyle: buttonStyle,
|
|
27
|
+
className: className,
|
|
28
|
+
onClick: () => onClick(),
|
|
29
|
+
children: label
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
return /*#__PURE__*/_jsx("div", {
|
|
33
|
+
className: `${baseClass}__add-new-polymorphic-wrapper`,
|
|
34
|
+
children: /*#__PURE__*/_jsx(Popup, {
|
|
35
|
+
button: /*#__PURE__*/_jsx(Button, {
|
|
36
|
+
buttonStyle: buttonStyle,
|
|
37
|
+
className: className,
|
|
38
|
+
icon: icon,
|
|
39
|
+
children: label
|
|
40
|
+
}),
|
|
41
|
+
buttonType: "custom",
|
|
42
|
+
horizontalAlign: "center",
|
|
43
|
+
render: ({
|
|
44
|
+
close: closePopup
|
|
45
|
+
}) => /*#__PURE__*/_jsx(PopupList.ButtonGroup, {
|
|
46
|
+
children: relationTo.map(relatedCollection => {
|
|
47
|
+
if (permissions.collections[relatedCollection]?.create) {
|
|
48
|
+
return /*#__PURE__*/_jsx(PopupList.Button, {
|
|
49
|
+
className: `${baseClass}__relation-button--${relatedCollection}`,
|
|
50
|
+
onClick: () => {
|
|
51
|
+
closePopup();
|
|
52
|
+
onClick(relatedCollection);
|
|
53
|
+
},
|
|
54
|
+
children: getTranslation(collections.find(each => each.slug === relatedCollection).labels.singular, i18n)
|
|
55
|
+
}, relatedCollection);
|
|
56
|
+
}
|
|
57
|
+
return null;
|
|
58
|
+
})
|
|
59
|
+
}),
|
|
60
|
+
size: "medium"
|
|
61
|
+
})
|
|
62
|
+
});
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=AddNewButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AddNewButton.js","names":["getTranslation","Button","Popup","PopupList","AddNewButton","allowCreate","baseClass","buttonStyle","className","collections","i18n","icon","label","onClick","permissions","relationTo","isPolymorphic","Array","isArray","_jsx","button","buttonType","horizontalAlign","render","close","closePopup","ButtonGroup","map","relatedCollection","create","find","each","slug","labels","singular","size"],"sources":["../../../src/elements/RelationshipTable/AddNewButton.tsx"],"sourcesContent":["'use client'\nimport type { I18nClient } from '@payloadcms/translations'\nimport type { ClientCollectionConfig, SanitizedPermissions } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\n\nimport type { Props as ButtonProps } from '../../elements/Button/types.js'\n\nimport { Button } from '../../elements/Button/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\n\nexport const AddNewButton = ({\n allowCreate,\n baseClass,\n buttonStyle,\n className,\n collections,\n i18n,\n icon,\n label,\n onClick,\n permissions,\n relationTo,\n}: {\n allowCreate: boolean\n baseClass: string\n buttonStyle?: ButtonProps['buttonStyle']\n className?: string\n collections: ClientCollectionConfig[]\n i18n: I18nClient\n icon?: ButtonProps['icon']\n label: string\n onClick: (selectedCollection?: string) => void\n permissions: SanitizedPermissions\n relationTo: string | string[]\n}) => {\n if (!allowCreate) {\n return null\n }\n\n const isPolymorphic = Array.isArray(relationTo)\n\n if (!isPolymorphic) {\n return (\n <Button buttonStyle={buttonStyle} className={className} onClick={() => onClick()}>\n {label}\n </Button>\n )\n }\n\n return (\n <div className={`${baseClass}__add-new-polymorphic-wrapper`}>\n <Popup\n button={\n <Button buttonStyle={buttonStyle} className={className} icon={icon}>\n {label}\n </Button>\n }\n buttonType=\"custom\"\n horizontalAlign=\"center\"\n render={({ close: closePopup }) => (\n <PopupList.ButtonGroup>\n {relationTo.map((relatedCollection) => {\n if (permissions.collections[relatedCollection]?.create) {\n return (\n <PopupList.Button\n className={`${baseClass}__relation-button--${relatedCollection}`}\n key={relatedCollection}\n onClick={() => {\n closePopup()\n onClick(relatedCollection)\n }}\n >\n {getTranslation(\n collections.find((each) => each.slug === relatedCollection).labels.singular,\n i18n,\n )}\n </PopupList.Button>\n )\n }\n\n return null\n })}\n </PopupList.ButtonGroup>\n )}\n size=\"medium\"\n />\n </div>\n )\n}\n"],"mappings":"AAAA;;;AAIA,SAASA,cAAc,QAAQ;AAI/B,SAASC,MAAM,QAAQ;AACvB,SAASC,KAAK,EAAEC,SAAS,QAAQ;AAEjC,OAAO,MAAMC,YAAA,GAAeA,CAAC;EAC3BC,WAAW;EACXC,SAAS;EACTC,WAAW;EACXC,SAAS;EACTC,WAAW;EACXC,IAAI;EACJC,IAAI;EACJC,KAAK;EACLC,OAAO;EACPC,WAAW;EACXC;AAAU,CAaX;EACC,IAAI,CAACV,WAAA,EAAa;IAChB,OAAO;EACT;EAEA,MAAMW,aAAA,GAAgBC,KAAA,CAAMC,OAAO,CAACH,UAAA;EAEpC,IAAI,CAACC,aAAA,EAAe;IAClB,oBACEG,IAAA,CAAClB,MAAA;MAAOM,WAAA,EAAaA,WAAA;MAAaC,SAAA,EAAWA,SAAA;MAAWK,OAAA,EAASA,CAAA,KAAMA,OAAA;gBACpED;;EAGP;EAEA,oBACEO,IAAA,CAAC;IAAIX,SAAA,EAAW,GAAGF,SAAA,+BAAwC;cACzD,aAAAa,IAAA,CAACjB,KAAA;MACCkB,MAAA,eACED,IAAA,CAAClB,MAAA;QAAOM,WAAA,EAAaA,WAAA;QAAaC,SAAA,EAAWA,SAAA;QAAWG,IAAA,EAAMA,IAAA;kBAC3DC;;MAGLS,UAAA,EAAW;MACXC,eAAA,EAAgB;MAChBC,MAAA,EAAQA,CAAC;QAAEC,KAAA,EAAOC;MAAU,CAAE,kBAC5BN,IAAA,CAAChB,SAAA,CAAUuB,WAAW;kBACnBX,UAAA,CAAWY,GAAG,CAAEC,iBAAA;UACf,IAAId,WAAA,CAAYL,WAAW,CAACmB,iBAAA,CAAkB,EAAEC,MAAA,EAAQ;YACtD,oBACEV,IAAA,CAAChB,SAAA,CAAUF,MAAM;cACfO,SAAA,EAAW,GAAGF,SAAA,sBAA+BsB,iBAAA,EAAmB;cAEhEf,OAAA,EAASA,CAAA;gBACPY,UAAA;gBACAZ,OAAA,CAAQe,iBAAA;cACV;wBAEC5B,cAAA,CACCS,WAAA,CAAYqB,IAAI,CAAEC,IAAA,IAASA,IAAA,CAAKC,IAAI,KAAKJ,iBAAA,EAAmBK,MAAM,CAACC,QAAQ,EAC3ExB,IAAA;eARGkB,iBAAA;UAYX;UAEA,OAAO;QACT;;MAGJO,IAAA,EAAK;;;AAIb","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/RelationshipTable/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,eAAe,EAEpB,KAAK,aAAa,EAClB,KAAK,KAAK,EACX,MAAM,SAAS,CAAA;AAEhB,OAAO,KAAqD,MAAM,OAAO,CAAA;AAEzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/RelationshipTable/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,eAAe,EAEpB,KAAK,aAAa,EAClB,KAAK,KAAK,EACX,MAAM,SAAS,CAAA;AAEhB,OAAO,KAAqD,MAAM,OAAO,CAAA;AAEzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAiBrE,OAAO,cAAc,CAAA;AAKrB,KAAK,+BAA+B,GAAG;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAA;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,CAAA;IACpC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAA;IAC/D,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,cAAc,EAAE,cAAc,CAAA;QAC9B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;QACnB,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CACvC,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,+BAA+B,CA0SvE,CAAA"}
|