@payloadcms/ui 3.0.0-beta.125 → 3.0.0-beta.126
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/FormsManager/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.js +26 -21
- package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
- package/dist/elements/Button/index.d.ts.map +1 -1
- package/dist/elements/Button/index.js +8 -4
- package/dist/elements/Button/index.js.map +1 -1
- package/dist/elements/Button/types.d.ts +3 -1
- package/dist/elements/Button/types.d.ts.map +1 -1
- package/dist/elements/Button/types.js.map +1 -1
- package/dist/elements/EditMany/index.js +3 -2
- package/dist/elements/EditMany/index.js.map +1 -1
- package/dist/elements/PublishButton/index.js +31 -18
- package/dist/elements/PublishButton/index.js.map +1 -1
- package/dist/exports/client/index.js +10 -10
- package/dist/exports/client/index.js.map +3 -3
- package/dist/providers/Config/createClientConfig/fields.js +2 -2
- package/dist/providers/Config/createClientConfig/fields.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAa,MAAM,SAAS,CAAA;AAInE,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAa,MAAM,SAAS,CAAA;AAInE,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAezC,KAAK,mBAAmB,GAAG;IACzB,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,CAAA;IAC1C,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACxD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,mBAAmB,CAAA;IAC7C,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IAC9B,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,CAAA;IAC3C,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAA;IACnC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAChG,QAAQ,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAChD,QAAQ,CAAC,sBAAsB,EAAE,CAAC,EAChC,UAAU,EACV,KAAK,GACN,EAAE;QACD,UAAU,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,MAAM,CAAA;KACd,KAAK,IAAI,CAAA;IACV,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,CAAA;IAChC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AA2BD,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,CAAA;AACD,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE,iBAAiB,qBAwWnE;AAED,wBAAgB,eAAe,wBAE9B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
4
|
import { useModal } from '@faceless-ui/modal';
|
|
5
5
|
import * as qs from 'qs-esm';
|
|
6
6
|
import React from 'react';
|
|
@@ -11,6 +11,7 @@ import { useLocale } from '../../../providers/Locale/index.js';
|
|
|
11
11
|
import { useTranslation } from '../../../providers/Translation/index.js';
|
|
12
12
|
import { getFormState } from '../../../utilities/getFormState.js';
|
|
13
13
|
import { hasSavePermission as getHasSavePermission } from '../../../utilities/hasSavePermission.js';
|
|
14
|
+
import { LoadingOverlay } from '../../Loading/index.js';
|
|
14
15
|
import { useLoadingOverlay } from '../../LoadingOverlay/index.js';
|
|
15
16
|
import { createThumbnail } from '../../Thumbnail/createThumbnail.js';
|
|
16
17
|
import { useBulkUpload } from '../index.js';
|
|
@@ -112,6 +113,8 @@ export function FormsManagerProvider({
|
|
|
112
113
|
initialFiles,
|
|
113
114
|
onSuccess
|
|
114
115
|
} = useBulkUpload();
|
|
116
|
+
const [isUploading, setIsUploading] = React.useState(false);
|
|
117
|
+
const [loadingText, setLoadingText] = React.useState('');
|
|
115
118
|
const hasInitializedWithFiles = React.useRef(false);
|
|
116
119
|
const initialStateRef = React.useRef(null);
|
|
117
120
|
const getFormDataRef = React.useRef(() => ({}));
|
|
@@ -237,13 +240,14 @@ export function FormsManagerProvider({
|
|
|
237
240
|
formState: currentFormsData_0
|
|
238
241
|
};
|
|
239
242
|
const newDocs = [];
|
|
240
|
-
|
|
243
|
+
setIsUploading(true);
|
|
244
|
+
for (let i_1 = 0; i_1 < currentForms.length; i_1++) {
|
|
241
245
|
try {
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
});
|
|
246
|
+
const form_0 = currentForms[i_1];
|
|
247
|
+
setLoadingText(t('general:uploadingBulk', {
|
|
248
|
+
current: i_1 + 1,
|
|
249
|
+
total: currentForms.length
|
|
250
|
+
}));
|
|
247
251
|
const req = await fetch(actionURL, {
|
|
248
252
|
body: createFormData(form_0.formState, overrides),
|
|
249
253
|
method: 'POST'
|
|
@@ -254,7 +258,7 @@ export function FormsManagerProvider({
|
|
|
254
258
|
}
|
|
255
259
|
// should expose some sort of helper for this
|
|
256
260
|
if (json_0?.errors?.length) {
|
|
257
|
-
const [fieldErrors
|
|
261
|
+
const [fieldErrors] = json_0.errors.reduce(([fieldErrs, nonFieldErrs], err) => {
|
|
258
262
|
const newFieldErrs = [];
|
|
259
263
|
const newNonFieldErrs = [];
|
|
260
264
|
if (err?.message) {
|
|
@@ -279,17 +283,13 @@ export function FormsManagerProvider({
|
|
|
279
283
|
})
|
|
280
284
|
};
|
|
281
285
|
}
|
|
282
|
-
} catch (
|
|
283
|
-
// swallow
|
|
284
|
-
} finally {
|
|
285
|
-
setHasSubmitted(true);
|
|
286
|
-
toggleLoadingOverlay({
|
|
287
|
-
isLoading: false,
|
|
288
|
-
key: 'saveAllDocs'
|
|
289
|
-
});
|
|
286
|
+
} catch (_) {
|
|
287
|
+
// swallow
|
|
290
288
|
}
|
|
291
|
-
}
|
|
292
|
-
|
|
289
|
+
}
|
|
290
|
+
setHasSubmitted(true);
|
|
291
|
+
setLoadingText('');
|
|
292
|
+
setIsUploading(false);
|
|
293
293
|
const remainingForms = currentForms.filter(({
|
|
294
294
|
errorCount: errorCount_0
|
|
295
295
|
}) => errorCount_0 > 0);
|
|
@@ -316,7 +316,7 @@ export function FormsManagerProvider({
|
|
|
316
316
|
}) => acc + errorCount_2, 0)
|
|
317
317
|
}
|
|
318
318
|
});
|
|
319
|
-
}, [actionURL, activeIndex, forms, onSuccess, t,
|
|
319
|
+
}, [actionURL, activeIndex, forms, onSuccess, t, closeModal, drawerSlug]);
|
|
320
320
|
React.useEffect(() => {
|
|
321
321
|
if (!collectionSlug) {
|
|
322
322
|
return;
|
|
@@ -340,7 +340,7 @@ export function FormsManagerProvider({
|
|
|
340
340
|
}
|
|
341
341
|
return;
|
|
342
342
|
}, [addFiles, initialFiles, initializeSharedFormState, initilizeSharedDocPermissions, collectionSlug, hasInitializedState, hasInitializedDocPermissions]);
|
|
343
|
-
return /*#__PURE__*/
|
|
343
|
+
return /*#__PURE__*/_jsxs(Context.Provider, {
|
|
344
344
|
value: {
|
|
345
345
|
activeIndex: state.activeIndex,
|
|
346
346
|
addFiles,
|
|
@@ -359,7 +359,12 @@ export function FormsManagerProvider({
|
|
|
359
359
|
thumbnailUrls: renderedThumbnails,
|
|
360
360
|
totalErrorCount
|
|
361
361
|
},
|
|
362
|
-
children:
|
|
362
|
+
children: [isUploading && /*#__PURE__*/_jsx(LoadingOverlay, {
|
|
363
|
+
animationDuration: "250ms",
|
|
364
|
+
loadingText: loadingText,
|
|
365
|
+
overlayType: "fullscreen",
|
|
366
|
+
show: true
|
|
367
|
+
}), children]
|
|
363
368
|
});
|
|
364
369
|
}
|
|
365
370
|
export function useFormsManager() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["useModal","qs","React","toast","fieldReducer","useConfig","useLocale","useTranslation","getFormState","hasSavePermission","getHasSavePermission","useLoadingOverlay","createThumbnail","useBulkUpload","createFormData","formsManagementReducer","Context","createContext","activeIndex","addFiles","Promise","resolve","collectionSlug","docPermissions","undefined","forms","getFormDataRef","current","hasPublishPermission","hasSubmitted","isInitializing","removeFile","saveAllDocs","setActiveIndex","setFormTotalErrorCount","thumbnailUrls","totalErrorCount","initialState","FormsManagerProvider","children","config","routes","api","serverURL","code","i18n","t","setHasSubmitted","useState","setDocPermissions","setHasSavePermission","setHasPublishPermission","hasInitializedState","setHasInitializedState","hasInitializedDocPermissions","setHasInitializedDocPermissions","setIsInitializing","state","dispatch","useReducer","formsRef","useRef","formsCount","length","thumbnailUrlsRef","processedFiles","Set","renderedThumbnails","setRenderedThumbnails","useEffect","newThumbnails","i","file","formState","value","has","add","thumbnailUrl","setTimeout","toggleLoadingOverlay","closeModal","drawerSlug","initialFiles","onSuccess","hasInitializedWithFiles","initialStateRef","actionURL","initilizeSharedDocPermissions","useCallback","params","locale","docAccessURL","res","fetch","stringify","credentials","headers","language","method","json","publishedAccessJSON","body","JSON","_status","then","isEditing","update","permission","initializeSharedFormState","abortController","signal","abort","formStateWithoutFiles","apiRoute","operation","schemaPath","error","index","currentFormsData","type","map","form","errorCount","files","isLoading","key","count","overrides","currentForms","newDocs","promises","loadingText","req","status","doc","push","errors","fieldErrors","nonFieldErrors","reduce","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","message","Array","isArray","data","forEach","dataError","field","all","remainingForms","filter","successCount","Math","max","success","acc","_jsx","Provider","useFormsManager","useContext"],"sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"sourcesContent":["'use client'\n\nimport type { Data, DocumentPermissions, FormState } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport * as qs from 'qs-esm'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport type { State } from './reducer.js'\n\nimport { fieldReducer } from '../../../forms/Form/fieldReducer.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { getFormState } from '../../../utilities/getFormState.js'\nimport { hasSavePermission as getHasSavePermission } from '../../../utilities/hasSavePermission.js'\nimport { useLoadingOverlay } from '../../LoadingOverlay/index.js'\nimport { createThumbnail } from '../../Thumbnail/createThumbnail.js'\nimport { useBulkUpload } from '../index.js'\nimport { createFormData } from './createFormData.js'\nimport { formsManagementReducer } from './reducer.js'\n\ntype FormsManagerContext = {\n readonly activeIndex: State['activeIndex']\n readonly addFiles: (filelist: FileList) => Promise<void>\n readonly collectionSlug: string\n readonly docPermissions?: DocumentPermissions\n readonly forms: State['forms']\n getFormDataRef: React.RefObject<() => Data>\n readonly hasPublishPermission: boolean\n readonly hasSavePermission: boolean\n readonly hasSubmitted: boolean\n readonly isInitializing: boolean\n readonly removeFile: (index: number) => void\n readonly saveAllDocs: ({ overrides }?: { overrides?: Record<string, unknown> }) => Promise<void>\n readonly setActiveIndex: (index: number) => void\n readonly setFormTotalErrorCount: ({\n errorCount,\n index,\n }: {\n errorCount: number\n index: number\n }) => void\n readonly thumbnailUrls: string[]\n readonly totalErrorCount?: number\n}\n\nconst Context = React.createContext<FormsManagerContext>({\n activeIndex: 0,\n addFiles: () => Promise.resolve(),\n collectionSlug: '',\n docPermissions: undefined,\n forms: [],\n getFormDataRef: { current: () => ({}) },\n hasPublishPermission: false,\n hasSavePermission: false,\n hasSubmitted: false,\n isInitializing: false,\n removeFile: () => {},\n saveAllDocs: () => Promise.resolve(),\n setActiveIndex: () => 0,\n setFormTotalErrorCount: () => {},\n thumbnailUrls: [],\n totalErrorCount: 0,\n})\n\nconst initialState: State = {\n activeIndex: 0,\n forms: [],\n totalErrorCount: 0,\n}\n\ntype FormsManagerProps = {\n readonly children: React.ReactNode\n}\nexport function FormsManagerProvider({ children }: FormsManagerProps) {\n const { config } = useConfig()\n const {\n routes: { api },\n serverURL,\n } = config\n const { code } = useLocale()\n const { i18n, t } = useTranslation()\n\n const [hasSubmitted, setHasSubmitted] = React.useState(false)\n const [docPermissions, setDocPermissions] = React.useState<DocumentPermissions>()\n const [hasSavePermission, setHasSavePermission] = React.useState(false)\n const [hasPublishPermission, setHasPublishPermission] = React.useState(false)\n const [hasInitializedState, setHasInitializedState] = React.useState(false)\n const [hasInitializedDocPermissions, setHasInitializedDocPermissions] = React.useState(false)\n const [isInitializing, setIsInitializing] = React.useState(false)\n const [state, dispatch] = React.useReducer(formsManagementReducer, initialState)\n const { activeIndex, forms, totalErrorCount } = state\n\n const formsRef = React.useRef(forms)\n formsRef.current = forms\n const formsCount = forms.length\n\n const thumbnailUrlsRef = React.useRef<string[]>([])\n const processedFiles = React.useRef(new Set()) // Track already-processed files\n const [renderedThumbnails, setRenderedThumbnails] = React.useState<string[]>([])\n\n React.useEffect(() => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n ;(async () => {\n const newThumbnails = [...thumbnailUrlsRef.current]\n\n for (let i = 0; i < formsCount; i++) {\n const file = formsRef.current[i].formState.file.value as File\n\n // Skip if already processed\n if (processedFiles.current.has(file) || !file) {\n continue\n }\n processedFiles.current.add(file)\n\n // Generate thumbnail and update ref\n const thumbnailUrl = await createThumbnail(file)\n newThumbnails[i] = thumbnailUrl\n thumbnailUrlsRef.current = newThumbnails\n\n // Trigger re-render in batches\n setRenderedThumbnails([...newThumbnails])\n await new Promise((resolve) => setTimeout(resolve, 100))\n }\n })()\n }, [formsCount, createThumbnail])\n\n const { toggleLoadingOverlay } = useLoadingOverlay()\n const { closeModal } = useModal()\n const { collectionSlug, drawerSlug, initialFiles, onSuccess } = useBulkUpload()\n\n const hasInitializedWithFiles = React.useRef(false)\n const initialStateRef = React.useRef<FormState>(null)\n const getFormDataRef = React.useRef<() => Data>(() => ({}))\n\n const actionURL = `${api}/${collectionSlug}`\n\n const initilizeSharedDocPermissions = React.useCallback(async () => {\n const params = {\n locale: code || undefined,\n }\n\n const docAccessURL = `/${collectionSlug}/access`\n const res = await fetch(`${serverURL}${api}${docAccessURL}?${qs.stringify(params)}`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'post',\n })\n\n const json: DocumentPermissions = await res.json()\n const publishedAccessJSON = await fetch(\n `${serverURL}${api}${docAccessURL}?${qs.stringify(params)}`,\n {\n body: JSON.stringify({\n _status: 'published',\n }),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n },\n ).then((res) => res.json())\n\n setDocPermissions(json)\n\n setHasSavePermission(\n getHasSavePermission({\n collectionSlug,\n docPermissions: json,\n isEditing: false,\n }),\n )\n\n setHasPublishPermission(publishedAccessJSON?.update?.permission)\n setHasInitializedDocPermissions(true)\n }, [api, code, collectionSlug, i18n.language, serverURL])\n\n const initializeSharedFormState = React.useCallback(\n async (abortController?: AbortController) => {\n if (abortController?.signal) {\n abortController.abort('aborting previous fetch for initial form state without files')\n }\n\n try {\n const { state: formStateWithoutFiles } = await getFormState({\n apiRoute: config.routes.api,\n body: {\n collectionSlug,\n locale: code,\n operation: 'create',\n schemaPath: collectionSlug,\n },\n // onError: onLoadError,\n serverURL: config.serverURL,\n signal: abortController?.signal,\n })\n initialStateRef.current = formStateWithoutFiles\n setHasInitializedState(true)\n } catch (error) {\n // swallow error\n }\n },\n [code, collectionSlug, config.routes.api, config.serverURL],\n )\n\n const setActiveIndex: FormsManagerContext['setActiveIndex'] = React.useCallback(\n (index: number) => {\n const currentFormsData = getFormDataRef.current()\n dispatch({\n type: 'REPLACE',\n state: {\n activeIndex: index,\n forms: forms.map((form, i) => {\n if (i === activeIndex) {\n return {\n errorCount: form.errorCount,\n formState: currentFormsData,\n }\n }\n return form\n }),\n },\n })\n },\n [forms, activeIndex],\n )\n\n const addFiles = React.useCallback(\n async (files: FileList) => {\n toggleLoadingOverlay({ isLoading: true, key: 'addingDocs' })\n if (!hasInitializedState) {\n await initializeSharedFormState()\n }\n dispatch({ type: 'ADD_FORMS', files, initialState: initialStateRef.current })\n toggleLoadingOverlay({ isLoading: false, key: 'addingDocs' })\n },\n [initializeSharedFormState, hasInitializedState, toggleLoadingOverlay],\n )\n\n const removeFile: FormsManagerContext['removeFile'] = React.useCallback((index) => {\n dispatch({ type: 'REMOVE_FORM', index })\n }, [])\n\n const setFormTotalErrorCount: FormsManagerContext['setFormTotalErrorCount'] = React.useCallback(\n ({ errorCount, index }) => {\n dispatch({\n type: 'UPDATE_ERROR_COUNT',\n count: errorCount,\n index,\n })\n },\n [],\n )\n\n const saveAllDocs: FormsManagerContext['saveAllDocs'] = React.useCallback(\n async ({ overrides } = {}) => {\n const currentFormsData = getFormDataRef.current()\n const currentForms = [...forms]\n currentForms[activeIndex] = {\n errorCount: currentForms[activeIndex].errorCount,\n formState: currentFormsData,\n }\n const newDocs = []\n const promises = currentForms.map(async (form, i) => {\n try {\n toggleLoadingOverlay({\n isLoading: true,\n key: 'saveAllDocs',\n loadingText: t('general:uploading'),\n })\n const req = await fetch(actionURL, {\n body: createFormData(form.formState, overrides),\n method: 'POST',\n })\n\n const json = await req.json()\n\n if (req.status === 201 && json?.doc) {\n newDocs.push(json.doc)\n }\n\n // should expose some sort of helper for this\n if (json?.errors?.length) {\n const [fieldErrors, nonFieldErrors] = json.errors.reduce(\n ([fieldErrs, nonFieldErrs], err) => {\n const newFieldErrs: any[] = []\n const newNonFieldErrs: any[] = []\n\n if (err?.message) {\n newNonFieldErrs.push(err)\n }\n\n if (Array.isArray(err?.data?.errors)) {\n err.data?.errors.forEach((dataError) => {\n if (dataError?.field) {\n newFieldErrs.push(dataError)\n } else {\n newNonFieldErrs.push(dataError)\n }\n })\n }\n\n return [\n [...fieldErrs, ...newFieldErrs],\n [...nonFieldErrs, ...newNonFieldErrs],\n ]\n },\n [[], []],\n )\n\n currentForms[i] = {\n errorCount: fieldErrors.length,\n formState: fieldReducer(currentForms[i].formState, {\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n }),\n }\n }\n } catch (error) {\n // swallow error\n } finally {\n setHasSubmitted(true)\n toggleLoadingOverlay({ isLoading: false, key: 'saveAllDocs' })\n }\n })\n\n await Promise.all(promises)\n\n const remainingForms = currentForms.filter(({ errorCount }) => errorCount > 0)\n const successCount = Math.max(0, currentForms.length - remainingForms.length)\n const errorCount = currentForms.length - successCount\n\n if (successCount) {\n toast.success(`Successfully saved ${successCount} files`)\n\n if (typeof onSuccess === 'function') {\n onSuccess(newDocs, errorCount)\n }\n }\n\n if (errorCount) {\n toast.error(`Failed to save ${errorCount} files`)\n } else {\n closeModal(drawerSlug)\n }\n\n dispatch({\n type: 'REPLACE',\n state: {\n activeIndex: 0,\n forms: remainingForms,\n totalErrorCount: remainingForms.reduce((acc, { errorCount }) => acc + errorCount, 0),\n },\n })\n },\n [actionURL, activeIndex, forms, onSuccess, t, toggleLoadingOverlay, closeModal, drawerSlug],\n )\n\n React.useEffect(() => {\n if (!collectionSlug) {\n return\n }\n if (!hasInitializedState) {\n void initializeSharedFormState()\n }\n\n if (!hasInitializedDocPermissions) {\n void initilizeSharedDocPermissions()\n }\n\n if (initialFiles) {\n if (!hasInitializedState || !hasInitializedDocPermissions) {\n setIsInitializing(true)\n } else {\n setIsInitializing(false)\n }\n }\n\n if (hasInitializedState && initialFiles && !hasInitializedWithFiles.current) {\n void addFiles(initialFiles)\n hasInitializedWithFiles.current = true\n }\n return\n }, [\n addFiles,\n initialFiles,\n initializeSharedFormState,\n initilizeSharedDocPermissions,\n collectionSlug,\n hasInitializedState,\n hasInitializedDocPermissions,\n ])\n\n return (\n <Context.Provider\n value={{\n activeIndex: state.activeIndex,\n addFiles,\n collectionSlug,\n docPermissions,\n forms,\n getFormDataRef,\n hasPublishPermission,\n hasSavePermission,\n hasSubmitted,\n isInitializing,\n removeFile,\n saveAllDocs,\n setActiveIndex,\n setFormTotalErrorCount,\n thumbnailUrls: renderedThumbnails,\n totalErrorCount,\n }}\n >\n {children}\n </Context.Provider>\n )\n}\n\nexport function useFormsManager() {\n return React.useContext(Context)\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["useModal","qs","React","toast","fieldReducer","useConfig","useLocale","useTranslation","getFormState","hasSavePermission","getHasSavePermission","LoadingOverlay","useLoadingOverlay","createThumbnail","useBulkUpload","createFormData","formsManagementReducer","Context","createContext","activeIndex","addFiles","Promise","resolve","collectionSlug","docPermissions","undefined","forms","getFormDataRef","current","hasPublishPermission","hasSubmitted","isInitializing","removeFile","saveAllDocs","setActiveIndex","setFormTotalErrorCount","thumbnailUrls","totalErrorCount","initialState","FormsManagerProvider","children","config","routes","api","serverURL","code","i18n","t","setHasSubmitted","useState","setDocPermissions","setHasSavePermission","setHasPublishPermission","hasInitializedState","setHasInitializedState","hasInitializedDocPermissions","setHasInitializedDocPermissions","setIsInitializing","state","dispatch","useReducer","formsRef","useRef","formsCount","length","thumbnailUrlsRef","processedFiles","Set","renderedThumbnails","setRenderedThumbnails","useEffect","newThumbnails","i","file","formState","value","has","add","thumbnailUrl","setTimeout","toggleLoadingOverlay","closeModal","drawerSlug","initialFiles","onSuccess","isUploading","setIsUploading","loadingText","setLoadingText","hasInitializedWithFiles","initialStateRef","actionURL","initilizeSharedDocPermissions","useCallback","params","locale","docAccessURL","res","fetch","stringify","credentials","headers","language","method","json","publishedAccessJSON","body","JSON","_status","then","isEditing","update","permission","initializeSharedFormState","abortController","signal","abort","formStateWithoutFiles","apiRoute","operation","schemaPath","error","index","currentFormsData","type","map","form","errorCount","files","isLoading","key","count","overrides","currentForms","newDocs","total","req","status","doc","push","errors","fieldErrors","reduce","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","message","Array","isArray","data","forEach","dataError","field","_","remainingForms","filter","successCount","Math","max","success","acc","_jsxs","Provider","_jsx","animationDuration","overlayType","show","useFormsManager","useContext"],"sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"sourcesContent":["'use client'\n\nimport type { Data, DocumentPermissions, FormState } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport * as qs from 'qs-esm'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport type { State } from './reducer.js'\n\nimport { fieldReducer } from '../../../forms/Form/fieldReducer.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { getFormState } from '../../../utilities/getFormState.js'\nimport { hasSavePermission as getHasSavePermission } from '../../../utilities/hasSavePermission.js'\nimport { LoadingOverlay } from '../../Loading/index.js'\nimport { useLoadingOverlay } from '../../LoadingOverlay/index.js'\nimport { createThumbnail } from '../../Thumbnail/createThumbnail.js'\nimport { useBulkUpload } from '../index.js'\nimport { createFormData } from './createFormData.js'\nimport { formsManagementReducer } from './reducer.js'\n\ntype FormsManagerContext = {\n readonly activeIndex: State['activeIndex']\n readonly addFiles: (filelist: FileList) => Promise<void>\n readonly collectionSlug: string\n readonly docPermissions?: DocumentPermissions\n readonly forms: State['forms']\n getFormDataRef: React.RefObject<() => Data>\n readonly hasPublishPermission: boolean\n readonly hasSavePermission: boolean\n readonly hasSubmitted: boolean\n readonly isInitializing: boolean\n readonly removeFile: (index: number) => void\n readonly saveAllDocs: ({ overrides }?: { overrides?: Record<string, unknown> }) => Promise<void>\n readonly setActiveIndex: (index: number) => void\n readonly setFormTotalErrorCount: ({\n errorCount,\n index,\n }: {\n errorCount: number\n index: number\n }) => void\n readonly thumbnailUrls: string[]\n readonly totalErrorCount?: number\n}\n\nconst Context = React.createContext<FormsManagerContext>({\n activeIndex: 0,\n addFiles: () => Promise.resolve(),\n collectionSlug: '',\n docPermissions: undefined,\n forms: [],\n getFormDataRef: { current: () => ({}) },\n hasPublishPermission: false,\n hasSavePermission: false,\n hasSubmitted: false,\n isInitializing: false,\n removeFile: () => {},\n saveAllDocs: () => Promise.resolve(),\n setActiveIndex: () => 0,\n setFormTotalErrorCount: () => {},\n thumbnailUrls: [],\n totalErrorCount: 0,\n})\n\nconst initialState: State = {\n activeIndex: 0,\n forms: [],\n totalErrorCount: 0,\n}\n\ntype FormsManagerProps = {\n readonly children: React.ReactNode\n}\nexport function FormsManagerProvider({ children }: FormsManagerProps) {\n const { config } = useConfig()\n const {\n routes: { api },\n serverURL,\n } = config\n const { code } = useLocale()\n const { i18n, t } = useTranslation()\n\n const [hasSubmitted, setHasSubmitted] = React.useState(false)\n const [docPermissions, setDocPermissions] = React.useState<DocumentPermissions>()\n const [hasSavePermission, setHasSavePermission] = React.useState(false)\n const [hasPublishPermission, setHasPublishPermission] = React.useState(false)\n const [hasInitializedState, setHasInitializedState] = React.useState(false)\n const [hasInitializedDocPermissions, setHasInitializedDocPermissions] = React.useState(false)\n const [isInitializing, setIsInitializing] = React.useState(false)\n const [state, dispatch] = React.useReducer(formsManagementReducer, initialState)\n const { activeIndex, forms, totalErrorCount } = state\n\n const formsRef = React.useRef(forms)\n formsRef.current = forms\n const formsCount = forms.length\n\n const thumbnailUrlsRef = React.useRef<string[]>([])\n const processedFiles = React.useRef(new Set()) // Track already-processed files\n const [renderedThumbnails, setRenderedThumbnails] = React.useState<string[]>([])\n\n React.useEffect(() => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n ;(async () => {\n const newThumbnails = [...thumbnailUrlsRef.current]\n\n for (let i = 0; i < formsCount; i++) {\n const file = formsRef.current[i].formState.file.value as File\n\n // Skip if already processed\n if (processedFiles.current.has(file) || !file) {\n continue\n }\n processedFiles.current.add(file)\n\n // Generate thumbnail and update ref\n const thumbnailUrl = await createThumbnail(file)\n newThumbnails[i] = thumbnailUrl\n thumbnailUrlsRef.current = newThumbnails\n\n // Trigger re-render in batches\n setRenderedThumbnails([...newThumbnails])\n await new Promise((resolve) => setTimeout(resolve, 100))\n }\n })()\n }, [formsCount, createThumbnail])\n\n const { toggleLoadingOverlay } = useLoadingOverlay()\n const { closeModal } = useModal()\n const { collectionSlug, drawerSlug, initialFiles, onSuccess } = useBulkUpload()\n\n const [isUploading, setIsUploading] = React.useState(false)\n const [loadingText, setLoadingText] = React.useState('')\n\n const hasInitializedWithFiles = React.useRef(false)\n const initialStateRef = React.useRef<FormState>(null)\n const getFormDataRef = React.useRef<() => Data>(() => ({}))\n\n const actionURL = `${api}/${collectionSlug}`\n\n const initilizeSharedDocPermissions = React.useCallback(async () => {\n const params = {\n locale: code || undefined,\n }\n\n const docAccessURL = `/${collectionSlug}/access`\n const res = await fetch(`${serverURL}${api}${docAccessURL}?${qs.stringify(params)}`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'post',\n })\n\n const json: DocumentPermissions = await res.json()\n const publishedAccessJSON = await fetch(\n `${serverURL}${api}${docAccessURL}?${qs.stringify(params)}`,\n {\n body: JSON.stringify({\n _status: 'published',\n }),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n },\n ).then((res) => res.json())\n\n setDocPermissions(json)\n\n setHasSavePermission(\n getHasSavePermission({\n collectionSlug,\n docPermissions: json,\n isEditing: false,\n }),\n )\n\n setHasPublishPermission(publishedAccessJSON?.update?.permission)\n setHasInitializedDocPermissions(true)\n }, [api, code, collectionSlug, i18n.language, serverURL])\n\n const initializeSharedFormState = React.useCallback(\n async (abortController?: AbortController) => {\n if (abortController?.signal) {\n abortController.abort('aborting previous fetch for initial form state without files')\n }\n\n try {\n const { state: formStateWithoutFiles } = await getFormState({\n apiRoute: config.routes.api,\n body: {\n collectionSlug,\n locale: code,\n operation: 'create',\n schemaPath: collectionSlug,\n },\n // onError: onLoadError,\n serverURL: config.serverURL,\n signal: abortController?.signal,\n })\n initialStateRef.current = formStateWithoutFiles\n setHasInitializedState(true)\n } catch (error) {\n // swallow error\n }\n },\n [code, collectionSlug, config.routes.api, config.serverURL],\n )\n\n const setActiveIndex: FormsManagerContext['setActiveIndex'] = React.useCallback(\n (index: number) => {\n const currentFormsData = getFormDataRef.current()\n dispatch({\n type: 'REPLACE',\n state: {\n activeIndex: index,\n forms: forms.map((form, i) => {\n if (i === activeIndex) {\n return {\n errorCount: form.errorCount,\n formState: currentFormsData,\n }\n }\n return form\n }),\n },\n })\n },\n [forms, activeIndex],\n )\n\n const addFiles = React.useCallback(\n async (files: FileList) => {\n toggleLoadingOverlay({ isLoading: true, key: 'addingDocs' })\n if (!hasInitializedState) {\n await initializeSharedFormState()\n }\n dispatch({ type: 'ADD_FORMS', files, initialState: initialStateRef.current })\n toggleLoadingOverlay({ isLoading: false, key: 'addingDocs' })\n },\n [initializeSharedFormState, hasInitializedState, toggleLoadingOverlay],\n )\n\n const removeFile: FormsManagerContext['removeFile'] = React.useCallback((index) => {\n dispatch({ type: 'REMOVE_FORM', index })\n }, [])\n\n const setFormTotalErrorCount: FormsManagerContext['setFormTotalErrorCount'] = React.useCallback(\n ({ errorCount, index }) => {\n dispatch({\n type: 'UPDATE_ERROR_COUNT',\n count: errorCount,\n index,\n })\n },\n [],\n )\n\n const saveAllDocs: FormsManagerContext['saveAllDocs'] = React.useCallback(\n async ({ overrides } = {}) => {\n const currentFormsData = getFormDataRef.current()\n const currentForms = [...forms]\n currentForms[activeIndex] = {\n errorCount: currentForms[activeIndex].errorCount,\n formState: currentFormsData,\n }\n const newDocs = []\n\n setIsUploading(true)\n\n for (let i = 0; i < currentForms.length; i++) {\n try {\n const form = currentForms[i]\n\n setLoadingText(t('general:uploadingBulk', { current: i + 1, total: currentForms.length }))\n\n const req = await fetch(actionURL, {\n body: createFormData(form.formState, overrides),\n method: 'POST',\n })\n\n const json = await req.json()\n\n if (req.status === 201 && json?.doc) {\n newDocs.push(json.doc)\n }\n\n // should expose some sort of helper for this\n if (json?.errors?.length) {\n const [fieldErrors] = json.errors.reduce(\n ([fieldErrs, nonFieldErrs], err) => {\n const newFieldErrs: any[] = []\n const newNonFieldErrs: any[] = []\n\n if (err?.message) {\n newNonFieldErrs.push(err)\n }\n\n if (Array.isArray(err?.data?.errors)) {\n err.data?.errors.forEach((dataError) => {\n if (dataError?.field) {\n newFieldErrs.push(dataError)\n } else {\n newNonFieldErrs.push(dataError)\n }\n })\n }\n\n return [\n [...fieldErrs, ...newFieldErrs],\n [...nonFieldErrs, ...newNonFieldErrs],\n ]\n },\n [[], []],\n )\n\n currentForms[i] = {\n errorCount: fieldErrors.length,\n formState: fieldReducer(currentForms[i].formState, {\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n }),\n }\n }\n } catch (_) {\n // swallow\n }\n }\n\n setHasSubmitted(true)\n setLoadingText('')\n setIsUploading(false)\n\n const remainingForms = currentForms.filter(({ errorCount }) => errorCount > 0)\n const successCount = Math.max(0, currentForms.length - remainingForms.length)\n const errorCount = currentForms.length - successCount\n\n if (successCount) {\n toast.success(`Successfully saved ${successCount} files`)\n\n if (typeof onSuccess === 'function') {\n onSuccess(newDocs, errorCount)\n }\n }\n\n if (errorCount) {\n toast.error(`Failed to save ${errorCount} files`)\n } else {\n closeModal(drawerSlug)\n }\n\n dispatch({\n type: 'REPLACE',\n state: {\n activeIndex: 0,\n forms: remainingForms,\n totalErrorCount: remainingForms.reduce((acc, { errorCount }) => acc + errorCount, 0),\n },\n })\n },\n [actionURL, activeIndex, forms, onSuccess, t, closeModal, drawerSlug],\n )\n\n React.useEffect(() => {\n if (!collectionSlug) {\n return\n }\n if (!hasInitializedState) {\n void initializeSharedFormState()\n }\n\n if (!hasInitializedDocPermissions) {\n void initilizeSharedDocPermissions()\n }\n\n if (initialFiles) {\n if (!hasInitializedState || !hasInitializedDocPermissions) {\n setIsInitializing(true)\n } else {\n setIsInitializing(false)\n }\n }\n\n if (hasInitializedState && initialFiles && !hasInitializedWithFiles.current) {\n void addFiles(initialFiles)\n hasInitializedWithFiles.current = true\n }\n return\n }, [\n addFiles,\n initialFiles,\n initializeSharedFormState,\n initilizeSharedDocPermissions,\n collectionSlug,\n hasInitializedState,\n hasInitializedDocPermissions,\n ])\n\n return (\n <Context.Provider\n value={{\n activeIndex: state.activeIndex,\n addFiles,\n collectionSlug,\n docPermissions,\n forms,\n getFormDataRef,\n hasPublishPermission,\n hasSavePermission,\n hasSubmitted,\n isInitializing,\n removeFile,\n saveAllDocs,\n setActiveIndex,\n setFormTotalErrorCount,\n thumbnailUrls: renderedThumbnails,\n totalErrorCount,\n }}\n >\n {isUploading && (\n <LoadingOverlay\n animationDuration=\"250ms\"\n loadingText={loadingText}\n overlayType=\"fullscreen\"\n show\n />\n )}\n {children}\n </Context.Provider>\n )\n}\n\nexport function useFormsManager() {\n return React.useContext(Context)\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Button/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAA+C,MAAM,OAAO,CAAA;AAEnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAUvC,OAAO,cAAc,CAAA;AAarB,eAAO,MAAM,cAAc;;;;;uBAqB1B,CAAA;AAED,eAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Button/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAA+C,MAAM,OAAO,CAAA;AAEnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAUvC,OAAO,cAAc,CAAA;AAarB,eAAO,MAAM,cAAc;;;;;uBAqB1B,CAAA;AAED,eAAO,MAAM,MAAM,qGAiJjB,CAAA"}
|
|
@@ -87,8 +87,8 @@ export const Button = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
87
87
|
className: !SubMenuPopupContent ? [classes, styleClasses].join(' ') : classes,
|
|
88
88
|
disabled,
|
|
89
89
|
onClick: !disabled ? handleClick : undefined,
|
|
90
|
-
|
|
91
|
-
|
|
90
|
+
onPointerEnter: tooltip ? () => setShowTooltip(true) : undefined,
|
|
91
|
+
onPointerLeave: tooltip ? () => setShowTooltip(false) : undefined,
|
|
92
92
|
rel: newTab ? 'noopener noreferrer' : undefined,
|
|
93
93
|
target: newTab ? '_blank' : undefined
|
|
94
94
|
};
|
|
@@ -158,9 +158,13 @@ export const Button = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
158
158
|
className: disabled ? `${baseClass}--popup-disabled` : '',
|
|
159
159
|
horizontalAlign: "right",
|
|
160
160
|
noBackground: true,
|
|
161
|
+
render: ({
|
|
162
|
+
close
|
|
163
|
+
}) => SubMenuPopupContent({
|
|
164
|
+
close: () => close()
|
|
165
|
+
}),
|
|
161
166
|
size: "large",
|
|
162
|
-
verticalAlign: "bottom"
|
|
163
|
-
children: SubMenuPopupContent
|
|
167
|
+
verticalAlign: "bottom"
|
|
164
168
|
})]
|
|
165
169
|
});
|
|
166
170
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","forwardRef","Fragment","isValidElement","ChevronIcon","EditIcon","LinkIcon","PlusIcon","SwapIcon","XIcon","Popup","Tooltip","icons","chevron","edit","link","plus","swap","x","baseClass","ButtonContents","children","icon","showTooltip","tooltip","BuiltInIcon","_jsxs","_jsx","className","show","Button","props","ref","id","type","ariaLabel","buttonStyle","disabled","el","iconPosition","iconStyle","Link","newTab","onClick","round","size","SubMenuPopupContent","to","url","setShowTooltip","useState","classes","filter","Boolean","join","handleClick","event","preventDefault","styleClasses","buttonProps","undefined","onMouseEnter","onMouseLeave","rel","target","buttonElement","prefetch","href","console","error","LinkTag","Tag","button","buttonSize","horizontalAlign","noBackground","verticalAlign"],"sources":["../../../src/elements/Button/index.tsx"],"sourcesContent":["'use client'\nimport React, { forwardRef, Fragment, isValidElement } from 'react'\n\nimport type { Props } from './types.js'\n\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { EditIcon } from '../../icons/Edit/index.js'\nimport { LinkIcon } from '../../icons/Link/index.js'\nimport { PlusIcon } from '../../icons/Plus/index.js'\nimport { SwapIcon } from '../../icons/Swap/index.js'\nimport { XIcon } from '../../icons/X/index.js'\nimport { Popup } from '../Popup/index.js'\nimport { Tooltip } from '../Tooltip/index.js'\nimport './index.scss'\n\nconst icons = {\n chevron: ChevronIcon,\n edit: EditIcon,\n link: LinkIcon,\n plus: PlusIcon,\n swap: SwapIcon,\n x: XIcon,\n}\n\nconst baseClass = 'btn'\n\nexport const ButtonContents = ({ children, icon, showTooltip, tooltip }) => {\n const BuiltInIcon = icons[icon]\n\n return (\n <Fragment>\n {tooltip && (\n <Tooltip className={`${baseClass}__tooltip`} show={showTooltip}>\n {tooltip}\n </Tooltip>\n )}\n <span className={`${baseClass}__content`}>\n {children && <span className={`${baseClass}__label`}>{children}</span>}\n {icon && (\n <span className={`${baseClass}__icon`}>\n {isValidElement(icon) && icon}\n {BuiltInIcon && <BuiltInIcon />}\n </span>\n )}\n </span>\n </Fragment>\n )\n}\n\nexport const Button = forwardRef<HTMLAnchorElement | HTMLButtonElement, Props>((props, ref) => {\n const {\n id,\n type = 'button',\n 'aria-label': ariaLabel,\n buttonStyle = 'primary',\n children,\n className,\n disabled,\n el = 'button',\n icon,\n iconPosition = 'right',\n iconStyle = 'without-border',\n Link,\n newTab,\n onClick,\n round,\n size = 'medium',\n SubMenuPopupContent,\n to,\n tooltip,\n url,\n } = props\n\n const [showTooltip, setShowTooltip] = React.useState(false)\n\n const classes = [\n baseClass,\n className && className,\n icon && `${baseClass}--icon`,\n iconStyle && `${baseClass}--icon-style-${iconStyle}`,\n icon && !children && `${baseClass}--icon-only`,\n size && `${baseClass}--size-${size}`,\n icon && iconPosition && `${baseClass}--icon-position-${iconPosition}`,\n tooltip && `${baseClass}--has-tooltip`,\n !SubMenuPopupContent && `${baseClass}--withoutPopup`,\n ]\n .filter(Boolean)\n .join(' ')\n\n function handleClick(event) {\n setShowTooltip(false)\n if (type !== 'submit' && onClick) {\n event.preventDefault()\n }\n if (onClick) {\n onClick(event)\n }\n }\n\n const styleClasses = [\n buttonStyle && `${baseClass}--style-${buttonStyle}`,\n disabled && `${baseClass}--disabled`,\n round && `${baseClass}--round`,\n SubMenuPopupContent ? `${baseClass}--withPopup` : `${baseClass}--withoutPopup`,\n ]\n .filter(Boolean)\n .join(' ')\n\n const buttonProps = {\n id,\n type,\n 'aria-disabled': disabled,\n 'aria-label': ariaLabel,\n className: !SubMenuPopupContent ? [classes, styleClasses].join(' ') : classes,\n disabled,\n onClick: !disabled ? handleClick : undefined,\n onMouseEnter: tooltip ? () => setShowTooltip(true) : undefined,\n onMouseLeave: tooltip ? () => setShowTooltip(false) : undefined,\n rel: newTab ? 'noopener noreferrer' : undefined,\n target: newTab ? '_blank' : undefined,\n }\n\n let buttonElement\n let prefetch\n\n switch (el) {\n case 'anchor':\n buttonElement = (\n <a\n {...buttonProps}\n href={!disabled ? url : undefined}\n ref={ref as React.Ref<HTMLAnchorElement>}\n >\n <ButtonContents icon={icon} showTooltip={showTooltip} tooltip={tooltip}>\n {children}\n </ButtonContents>\n </a>\n )\n break\n\n case 'link':\n if (!Link) {\n console.error('Link is required when using el=\"link\"', children)\n return null\n }\n\n let LinkTag = Link // eslint-disable-line no-case-declarations\n\n if (disabled) {\n LinkTag = 'div'\n } else {\n prefetch = false\n }\n\n buttonElement = (\n <LinkTag {...buttonProps} href={to || url} prefetch={prefetch} to={to || url}>\n <ButtonContents icon={icon} showTooltip={showTooltip} tooltip={tooltip}>\n {children}\n </ButtonContents>\n </LinkTag>\n )\n break\n\n default:\n const Tag = el // eslint-disable-line no-case-declarations\n\n buttonElement = (\n <Tag ref={ref} type=\"submit\" {...buttonProps}>\n <ButtonContents icon={icon} showTooltip={showTooltip} tooltip={tooltip}>\n {children}\n </ButtonContents>\n </Tag>\n )\n break\n }\n if (SubMenuPopupContent) {\n return (\n <div className={styleClasses}>\n {buttonElement}\n <Popup\n button={<ChevronIcon />}\n buttonSize={size}\n className={disabled ? `${baseClass}--popup-disabled` : ''}\n horizontalAlign=\"right\"\n noBackground\n size=\"large\"\n verticalAlign=\"bottom\"\n >\n {SubMenuPopupContent}\n </Popup>\n </div>\n )\n }\n\n return buttonElement\n})\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","forwardRef","Fragment","isValidElement","ChevronIcon","EditIcon","LinkIcon","PlusIcon","SwapIcon","XIcon","Popup","Tooltip","icons","chevron","edit","link","plus","swap","x","baseClass","ButtonContents","children","icon","showTooltip","tooltip","BuiltInIcon","_jsxs","_jsx","className","show","Button","props","ref","id","type","ariaLabel","buttonStyle","disabled","el","iconPosition","iconStyle","Link","newTab","onClick","round","size","SubMenuPopupContent","to","url","setShowTooltip","useState","classes","filter","Boolean","join","handleClick","event","preventDefault","styleClasses","buttonProps","undefined","onPointerEnter","onPointerLeave","rel","target","buttonElement","prefetch","href","console","error","LinkTag","Tag","button","buttonSize","horizontalAlign","noBackground","render","close","verticalAlign"],"sources":["../../../src/elements/Button/index.tsx"],"sourcesContent":["'use client'\nimport React, { forwardRef, Fragment, isValidElement } from 'react'\n\nimport type { Props } from './types.js'\n\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { EditIcon } from '../../icons/Edit/index.js'\nimport { LinkIcon } from '../../icons/Link/index.js'\nimport { PlusIcon } from '../../icons/Plus/index.js'\nimport { SwapIcon } from '../../icons/Swap/index.js'\nimport { XIcon } from '../../icons/X/index.js'\nimport { Popup } from '../Popup/index.js'\nimport { Tooltip } from '../Tooltip/index.js'\nimport './index.scss'\n\nconst icons = {\n chevron: ChevronIcon,\n edit: EditIcon,\n link: LinkIcon,\n plus: PlusIcon,\n swap: SwapIcon,\n x: XIcon,\n}\n\nconst baseClass = 'btn'\n\nexport const ButtonContents = ({ children, icon, showTooltip, tooltip }) => {\n const BuiltInIcon = icons[icon]\n\n return (\n <Fragment>\n {tooltip && (\n <Tooltip className={`${baseClass}__tooltip`} show={showTooltip}>\n {tooltip}\n </Tooltip>\n )}\n <span className={`${baseClass}__content`}>\n {children && <span className={`${baseClass}__label`}>{children}</span>}\n {icon && (\n <span className={`${baseClass}__icon`}>\n {isValidElement(icon) && icon}\n {BuiltInIcon && <BuiltInIcon />}\n </span>\n )}\n </span>\n </Fragment>\n )\n}\n\nexport const Button = forwardRef<HTMLAnchorElement | HTMLButtonElement, Props>((props, ref) => {\n const {\n id,\n type = 'button',\n 'aria-label': ariaLabel,\n buttonStyle = 'primary',\n children,\n className,\n disabled,\n el = 'button',\n icon,\n iconPosition = 'right',\n iconStyle = 'without-border',\n Link,\n newTab,\n onClick,\n round,\n size = 'medium',\n SubMenuPopupContent,\n to,\n tooltip,\n url,\n } = props\n\n const [showTooltip, setShowTooltip] = React.useState(false)\n\n const classes = [\n baseClass,\n className && className,\n icon && `${baseClass}--icon`,\n iconStyle && `${baseClass}--icon-style-${iconStyle}`,\n icon && !children && `${baseClass}--icon-only`,\n size && `${baseClass}--size-${size}`,\n icon && iconPosition && `${baseClass}--icon-position-${iconPosition}`,\n tooltip && `${baseClass}--has-tooltip`,\n !SubMenuPopupContent && `${baseClass}--withoutPopup`,\n ]\n .filter(Boolean)\n .join(' ')\n\n function handleClick(event) {\n setShowTooltip(false)\n if (type !== 'submit' && onClick) {\n event.preventDefault()\n }\n if (onClick) {\n onClick(event)\n }\n }\n\n const styleClasses = [\n buttonStyle && `${baseClass}--style-${buttonStyle}`,\n disabled && `${baseClass}--disabled`,\n round && `${baseClass}--round`,\n SubMenuPopupContent ? `${baseClass}--withPopup` : `${baseClass}--withoutPopup`,\n ]\n .filter(Boolean)\n .join(' ')\n\n const buttonProps = {\n id,\n type,\n 'aria-disabled': disabled,\n 'aria-label': ariaLabel,\n className: !SubMenuPopupContent ? [classes, styleClasses].join(' ') : classes,\n disabled,\n onClick: !disabled ? handleClick : undefined,\n onPointerEnter: tooltip ? () => setShowTooltip(true) : undefined,\n onPointerLeave: tooltip ? () => setShowTooltip(false) : undefined,\n rel: newTab ? 'noopener noreferrer' : undefined,\n target: newTab ? '_blank' : undefined,\n }\n\n let buttonElement\n let prefetch\n\n switch (el) {\n case 'anchor':\n buttonElement = (\n <a\n {...buttonProps}\n href={!disabled ? url : undefined}\n ref={ref as React.Ref<HTMLAnchorElement>}\n >\n <ButtonContents icon={icon} showTooltip={showTooltip} tooltip={tooltip}>\n {children}\n </ButtonContents>\n </a>\n )\n break\n\n case 'link':\n if (!Link) {\n console.error('Link is required when using el=\"link\"', children)\n return null\n }\n\n let LinkTag = Link // eslint-disable-line no-case-declarations\n\n if (disabled) {\n LinkTag = 'div'\n } else {\n prefetch = false\n }\n\n buttonElement = (\n <LinkTag {...buttonProps} href={to || url} prefetch={prefetch} to={to || url}>\n <ButtonContents icon={icon} showTooltip={showTooltip} tooltip={tooltip}>\n {children}\n </ButtonContents>\n </LinkTag>\n )\n break\n\n default:\n const Tag = el // eslint-disable-line no-case-declarations\n\n buttonElement = (\n <Tag ref={ref} type=\"submit\" {...buttonProps}>\n <ButtonContents icon={icon} showTooltip={showTooltip} tooltip={tooltip}>\n {children}\n </ButtonContents>\n </Tag>\n )\n break\n }\n if (SubMenuPopupContent) {\n return (\n <div className={styleClasses}>\n {buttonElement}\n <Popup\n button={<ChevronIcon />}\n buttonSize={size}\n className={disabled ? `${baseClass}--popup-disabled` : ''}\n horizontalAlign=\"right\"\n noBackground\n render={({ close }) => SubMenuPopupContent({ close: () => close() })}\n size=\"large\"\n verticalAlign=\"bottom\"\n />\n </div>\n )\n }\n\n return buttonElement\n})\n"],"mappings":"AAAA;;;AACA,OAAOA,KAAA,IAASC,UAAU,EAAEC,QAAQ,EAAEC,cAAc,QAAQ;AAI5D,SAASC,WAAW,QAAQ;AAC5B,SAASC,QAAQ,QAAQ;AACzB,SAASC,QAAQ,QAAQ;AACzB,SAASC,QAAQ,QAAQ;AACzB,SAASC,QAAQ,QAAQ;AACzB,SAASC,KAAK,QAAQ;AACtB,SAASC,KAAK,QAAQ;AACtB,SAASC,OAAO,QAAQ;AACxB,OAAO;AAEP,MAAMC,KAAA,GAAQ;EACZC,OAAA,EAAST,WAAA;EACTU,IAAA,EAAMT,QAAA;EACNU,IAAA,EAAMT,QAAA;EACNU,IAAA,EAAMT,QAAA;EACNU,IAAA,EAAMT,QAAA;EACNU,CAAA,EAAGT;AACL;AAEA,MAAMU,SAAA,GAAY;AAElB,OAAO,MAAMC,cAAA,GAAiBA,CAAC;EAAEC,QAAQ;EAAEC,IAAI;EAAEC,WAAW;EAAEC;AAAO,CAAE;EACrE,MAAMC,WAAA,GAAcb,KAAK,CAACU,IAAA,CAAK;EAE/B,oBACEI,KAAA,CAACxB,QAAA;eACEsB,OAAA,iBACCG,IAAA,CAAChB,OAAA;MAAQiB,SAAA,EAAW,GAAGT,SAAA,WAAoB;MAAEU,IAAA,EAAMN,WAAA;gBAChDC;qBAGLE,KAAA,CAAC;MAAKE,SAAA,EAAW,GAAGT,SAAA,WAAoB;iBACrCE,QAAA,iBAAYM,IAAA,CAAC;QAAKC,SAAA,EAAW,GAAGT,SAAA,SAAkB;kBAAGE;UACrDC,IAAA,iBACCI,KAAA,CAAC;QAAKE,SAAA,EAAW,GAAGT,SAAA,QAAiB;gCAClChB,cAAA,CAAemB,IAAA,KAASA,IAAA,EACxBG,WAAA,iBAAeE,IAAA,CAACF,WAAA;;;;AAM7B;AAEA,OAAO,MAAMK,MAAA,gBAAS7B,UAAA,CAAyD,CAAC8B,KAAA,EAAOC,GAAA;EACrF,MAAM;IACJC,EAAE;IACFC,IAAA,GAAO,QAAQ;IACf,cAAcC,SAAS;IACvBC,WAAA,GAAc,SAAS;IACvBf,QAAQ;IACRO,SAAS;IACTS,QAAQ;IACRC,EAAA,GAAK,QAAQ;IACbhB,IAAI;IACJiB,YAAA,GAAe,OAAO;IACtBC,SAAA,GAAY,gBAAgB;IAC5BC,IAAI;IACJC,MAAM;IACNC,OAAO;IACPC,KAAK;IACLC,IAAA,GAAO,QAAQ;IACfC,mBAAmB;IACnBC,EAAE;IACFvB,OAAO;IACPwB;EAAG,CACJ,GAAGjB,KAAA;EAEJ,MAAM,CAACR,WAAA,EAAa0B,cAAA,CAAe,GAAGjD,KAAA,CAAMkD,QAAQ,CAAC;EAErD,MAAMC,OAAA,GAAU,CACdhC,SAAA,EACAS,SAAA,IAAaA,SAAA,EACbN,IAAA,IAAQ,GAAGH,SAAA,QAAiB,EAC5BqB,SAAA,IAAa,GAAGrB,SAAA,gBAAyBqB,SAAA,EAAW,EACpDlB,IAAA,IAAQ,CAACD,QAAA,IAAY,GAAGF,SAAA,aAAsB,EAC9C0B,IAAA,IAAQ,GAAG1B,SAAA,UAAmB0B,IAAA,EAAM,EACpCvB,IAAA,IAAQiB,YAAA,IAAgB,GAAGpB,SAAA,mBAA4BoB,YAAA,EAAc,EACrEf,OAAA,IAAW,GAAGL,SAAA,eAAwB,EACtC,CAAC2B,mBAAA,IAAuB,GAAG3B,SAAA,gBAAyB,CACrD,CACEiC,MAAM,CAACC,OAAA,EACPC,IAAI,CAAC;EAER,SAASC,YAAYC,KAAK;IACxBP,cAAA,CAAe;IACf,IAAIf,IAAA,KAAS,YAAYS,OAAA,EAAS;MAChCa,KAAA,CAAMC,cAAc;IACtB;IACA,IAAId,OAAA,EAAS;MACXA,OAAA,CAAQa,KAAA;IACV;EACF;EAEA,MAAME,YAAA,GAAe,CACnBtB,WAAA,IAAe,GAAGjB,SAAA,WAAoBiB,WAAA,EAAa,EACnDC,QAAA,IAAY,GAAGlB,SAAA,YAAqB,EACpCyB,KAAA,IAAS,GAAGzB,SAAA,SAAkB,EAC9B2B,mBAAA,GAAsB,GAAG3B,SAAA,aAAsB,GAAG,GAAGA,SAAA,gBAAyB,CAC/E,CACEiC,MAAM,CAACC,OAAA,EACPC,IAAI,CAAC;EAER,MAAMK,WAAA,GAAc;IAClB1B,EAAA;IACAC,IAAA;IACA,iBAAiBG,QAAA;IACjB,cAAcF,SAAA;IACdP,SAAA,EAAW,CAACkB,mBAAA,GAAsB,CAACK,OAAA,EAASO,YAAA,CAAa,CAACJ,IAAI,CAAC,OAAOH,OAAA;IACtEd,QAAA;IACAM,OAAA,EAAS,CAACN,QAAA,GAAWkB,WAAA,GAAcK,SAAA;IACnCC,cAAA,EAAgBrC,OAAA,GAAU,MAAMyB,cAAA,CAAe,QAAQW,SAAA;IACvDE,cAAA,EAAgBtC,OAAA,GAAU,MAAMyB,cAAA,CAAe,SAASW,SAAA;IACxDG,GAAA,EAAKrB,MAAA,GAAS,wBAAwBkB,SAAA;IACtCI,MAAA,EAAQtB,MAAA,GAAS,WAAWkB;EAC9B;EAEA,IAAIK,aAAA;EACJ,IAAIC,QAAA;EAEJ,QAAQ5B,EAAA;IACN,KAAK;MACH2B,aAAA,gBACEtC,IAAA,CAAC;QACE,GAAGgC,WAAW;QACfQ,IAAA,EAAM,CAAC9B,QAAA,GAAWW,GAAA,GAAMY,SAAA;QACxB5B,GAAA,EAAKA,GAAA;kBAEL,aAAAL,IAAA,CAACP,cAAA;UAAeE,IAAA,EAAMA,IAAA;UAAMC,WAAA,EAAaA,WAAA;UAAaC,OAAA,EAASA,OAAA;oBAC5DH;;;MAIP;IAEF,KAAK;MACH,IAAI,CAACoB,IAAA,EAAM;QACT2B,OAAA,CAAQC,KAAK,CAAC,yCAAyChD,QAAA;QACvD,OAAO;MACT;MAEA,IAAIiD,OAAA,GAAU7B,IAAA,CAAK;MAAA;MAEnB,IAAIJ,QAAA,EAAU;QACZiC,OAAA,GAAU;MACZ,OAAO;QACLJ,QAAA,GAAW;MACb;MAEAD,aAAA,gBACEtC,IAAA,CAAC2C,OAAA;QAAS,GAAGX,WAAW;QAAEQ,IAAA,EAAMpB,EAAA,IAAMC,GAAA;QAAKkB,QAAA,EAAUA,QAAA;QAAUnB,EAAA,EAAIA,EAAA,IAAMC,GAAA;kBACvE,aAAArB,IAAA,CAACP,cAAA;UAAeE,IAAA,EAAMA,IAAA;UAAMC,WAAA,EAAaA,WAAA;UAAaC,OAAA,EAASA,OAAA;oBAC5DH;;;MAIP;IAEF;MACE,MAAMkD,GAAA,GAAMjC,EAAA,CAAG;MAAA;MAEf2B,aAAA,gBACEtC,IAAA,CAAC4C,GAAA;QAAIvC,GAAA,EAAKA,GAAA;QAAKE,IAAA,EAAK;QAAU,GAAGyB,WAAW;kBAC1C,aAAAhC,IAAA,CAACP,cAAA;UAAeE,IAAA,EAAMA,IAAA;UAAMC,WAAA,EAAaA,WAAA;UAAaC,OAAA,EAASA,OAAA;oBAC5DH;;;MAIP;EACJ;EACA,IAAIyB,mBAAA,EAAqB;IACvB,oBACEpB,KAAA,CAAC;MAAIE,SAAA,EAAW8B,YAAA;iBACbO,aAAA,E,aACDtC,IAAA,CAACjB,KAAA;QACC8D,MAAA,eAAQ7C,IAAA,CAACvB,WAAA;QACTqE,UAAA,EAAY5B,IAAA;QACZjB,SAAA,EAAWS,QAAA,GAAW,GAAGlB,SAAA,kBAA2B,GAAG;QACvDuD,eAAA,EAAgB;QAChBC,YAAY;QACZC,MAAA,EAAQA,CAAC;UAAEC;QAAK,CAAE,KAAK/B,mBAAA,CAAoB;UAAE+B,KAAA,EAAOA,CAAA,KAAMA,KAAA;QAAQ;QAClEhC,IAAA,EAAK;QACLiC,aAAA,EAAc;;;EAItB;EAEA,OAAOb,aAAA;AACT","ignoreList":[]}
|
|
@@ -22,7 +22,9 @@ export type Props = {
|
|
|
22
22
|
round?: boolean;
|
|
23
23
|
secondaryActions?: secondaryAction | secondaryAction[];
|
|
24
24
|
size?: 'large' | 'medium' | 'small';
|
|
25
|
-
SubMenuPopupContent?:
|
|
25
|
+
SubMenuPopupContent?: (props: {
|
|
26
|
+
close: () => void;
|
|
27
|
+
}) => React.ReactNode;
|
|
26
28
|
to?: string;
|
|
27
29
|
tooltip?: string;
|
|
28
30
|
type?: 'button' | 'submit';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/elements/Button/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AACpD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,KAAK,eAAe,GAAG;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAA;CACrC,CAAA;AACD,MAAM,MAAM,KAAK,GAAG;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,OAAO,GAAG,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,aAAa,CAAA;IAChG,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,EAAE,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAA;IACpC,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,CAAA;IAC5D,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,gBAAgB,CAAA;IACrD,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,KAAK,CAAC,WAAW,CAAA;IACxB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAA;IACrC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,gBAAgB,CAAC,EAAE,eAAe,GAAG,eAAe,EAAE,CAAA;IACtD,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAA;IACnC,mBAAmB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/elements/Button/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AACpD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,KAAK,eAAe,GAAG;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAA;CACrC,CAAA;AACD,MAAM,MAAM,KAAK,GAAG;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,OAAO,GAAG,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,aAAa,CAAA;IAChG,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,EAAE,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAA;IACpC,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,CAAA;IAC5D,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,gBAAgB,CAAA;IACrD,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,KAAK,CAAC,WAAW,CAAA;IACxB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAA;IACrC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,gBAAgB,CAAC,EAAE,eAAe,GAAG,eAAe,EAAE,CAAA;IACtD,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAA;IACnC,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,IAAI,CAAA;KAAE,KAAK,KAAK,CAAC,SAAS,CAAA;IACvE,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../../src/elements/Button/types.ts"],"sourcesContent":["import type { ElementType, MouseEvent } from 'react'\nimport type React from 'react'\n\ntype secondaryAction = {\n label: string\n onClick: (event: MouseEvent) => void\n}\nexport type Props = {\n 'aria-label'?: string\n buttonId?: string\n buttonStyle?: 'error' | 'icon-label' | 'none' | 'pill' | 'primary' | 'secondary' | 'transparent'\n children?: React.ReactNode\n className?: string\n disabled?: boolean\n el?: 'anchor' | 'link' | ElementType\n icon?: ['chevron' | 'edit' | 'plus' | 'x'] | React.ReactNode\n iconPosition?: 'left' | 'right'\n iconStyle?: 'none' | 'with-border' | 'without-border'\n id?: string\n Link?: React.ElementType\n newTab?: boolean\n onClick?: (event: MouseEvent) => void\n round?: boolean\n secondaryActions?: secondaryAction | secondaryAction[]\n size?: 'large' | 'medium' | 'small'\n SubMenuPopupContent?: React.ReactNode\n to?: string\n tooltip?: string\n type?: 'button' | 'submit'\n url?: string\n}\n"],"mappings":"AAOA","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../src/elements/Button/types.ts"],"sourcesContent":["import type { ElementType, MouseEvent } from 'react'\nimport type React from 'react'\n\ntype secondaryAction = {\n label: string\n onClick: (event: MouseEvent) => void\n}\nexport type Props = {\n 'aria-label'?: string\n buttonId?: string\n buttonStyle?: 'error' | 'icon-label' | 'none' | 'pill' | 'primary' | 'secondary' | 'transparent'\n children?: React.ReactNode\n className?: string\n disabled?: boolean\n el?: 'anchor' | 'link' | ElementType\n icon?: ['chevron' | 'edit' | 'plus' | 'x'] | React.ReactNode\n iconPosition?: 'left' | 'right'\n iconStyle?: 'none' | 'with-border' | 'without-border'\n id?: string\n Link?: React.ElementType\n newTab?: boolean\n onClick?: (event: MouseEvent) => void\n round?: boolean\n secondaryActions?: secondaryAction | secondaryAction[]\n size?: 'large' | 'medium' | 'small'\n SubMenuPopupContent?: (props: { close: () => void }) => React.ReactNode\n to?: string\n tooltip?: string\n type?: 'button' | 'submit'\n url?: string\n}\n"],"mappings":"AAOA","ignoreList":[]}
|
|
@@ -151,6 +151,7 @@ const SaveDraftButton = t0 => {
|
|
|
151
151
|
let t2;
|
|
152
152
|
if ($[3] !== t || $[4] !== disabled || $[5] !== save) {
|
|
153
153
|
t2 = _jsx(FormSubmit, {
|
|
154
|
+
buttonStyle: "secondary",
|
|
154
155
|
className: `${baseClass}__draft`,
|
|
155
156
|
disabled,
|
|
156
157
|
onClick: save,
|
|
@@ -403,10 +404,10 @@ export const EditMany = props => {
|
|
|
403
404
|
children: _jsx("div", {
|
|
404
405
|
className: `${baseClass}__document-actions`,
|
|
405
406
|
children: collection?.versions?.drafts ? _jsxs(React.Fragment, {
|
|
406
|
-
children: [_jsx(
|
|
407
|
+
children: [_jsx(SaveDraftButton, {
|
|
407
408
|
action: `${serverURL}${apiRoute}/${slug}${getQueryParams()}&draft=true`,
|
|
408
409
|
disabled: selected.length === 0
|
|
409
|
-
}), _jsx(
|
|
410
|
+
}), _jsx(PublishButton, {
|
|
410
411
|
action: `${serverURL}${apiRoute}/${slug}${getQueryParams()}&draft=true`,
|
|
411
412
|
disabled: selected.length === 0
|
|
412
413
|
})]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","useModal","getTranslation","useRouter","React","useCallback","useState","useForm","Form","RenderFields","FormSubmit","XIcon","useAuth","useConfig","DocumentInfoProvider","OperationContext","useRouteCache","useSearchParams","SelectAllStatus","useSelection","useTranslation","getFormState","Drawer","DrawerToggler","FieldSelect","baseClass","Submit","t0","$","action","disabled","submit","t","t1","method","skipValidation","save","t2","_jsx","className","onClick","children","PublishButton","overrides","_status","SaveDraftButton","EditMany","props","collection","fields","undefined","slug","labels","plural","permissions","closeModal","config","t3","routes","t4","serverURL","api","apiRoute","count","getQueryParams","selectAll","i18n","t5","Symbol","for","selected","setSelected","stringifyParams","router","initialState","setInitialState","hasInitializedState","useRef","clearRouteCache","collectionPermissions","collections","hasUpdatePermission","update","permission","drawerSlug","t6","current","getInitialState","state","result","body","collectionSlug","data","operation","schemaPath","t7","useEffect","t8","t9","formState","prevFormState","onChange","None","replace","params","page","AllAvailable","onSuccess","t10","versions","drafts","t11","t12","_jsxs","Header","id","Provider","value","label","type","length","path","readOnly","Fragment"],"sources":["../../../src/elements/EditMany/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, ClientField, FormState } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport React, { useCallback, useState } from 'react'\n\nimport type { FormProps } from '../../forms/Form/index.js'\n\nimport { useForm } from '../../forms/Form/context.js'\nimport { Form } from '../../forms/Form/index.js'\nimport { RenderFields } from '../../forms/RenderFields/index.js'\nimport { FormSubmit } from '../../forms/Submit/index.js'\nimport { XIcon } from '../../icons/X/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { DocumentInfoProvider } from '../../providers/DocumentInfo/index.js'\nimport { OperationContext } from '../../providers/Operation/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { useSearchParams } from '../../providers/SearchParams/index.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { getFormState } from '../../utilities/getFormState.js'\nimport { Drawer, DrawerToggler } from '../Drawer/index.js'\nimport { FieldSelect } from '../FieldSelect/index.js'\nimport './index.scss'\n\nconst baseClass = 'edit-many'\n\nexport type EditManyProps = {\n readonly collection: ClientCollectionConfig\n readonly fields: ClientField[]\n}\n\nconst Submit: React.FC<{\n readonly action: string\n readonly disabled: boolean\n}> = ({ action, disabled }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n skipValidation: true,\n })\n }, [action, submit])\n\n return (\n <FormSubmit className={`${baseClass}__save`} disabled={disabled} onClick={save}>\n {t('general:save')}\n </FormSubmit>\n )\n}\n\nconst PublishButton: React.FC<{ action: string; disabled: boolean }> = ({ action, disabled }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n overrides: {\n _status: 'published',\n },\n skipValidation: true,\n })\n }, [action, submit])\n\n return (\n <FormSubmit className={`${baseClass}__publish`} disabled={disabled} onClick={save}>\n {t('version:publishChanges')}\n </FormSubmit>\n )\n}\n\nconst SaveDraftButton: React.FC<{ action: string; disabled: boolean }> = ({ action, disabled }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n overrides: {\n _status: 'draft',\n },\n skipValidation: true,\n })\n }, [action, submit])\n\n return (\n <FormSubmit className={`${baseClass}__draft`} disabled={disabled} onClick={save}>\n {t('version:saveDraft')}\n </FormSubmit>\n )\n}\nexport const EditMany: React.FC<EditManyProps> = (props) => {\n const { collection: { slug, labels: { plural } } = {}, collection, fields } = props\n\n const { permissions } = useAuth()\n const { closeModal } = useModal()\n const {\n config: {\n routes: { api: apiRoute },\n serverURL,\n },\n } = useConfig()\n const { count, getQueryParams, selectAll } = useSelection()\n const { i18n, t } = useTranslation()\n const [selected, setSelected] = useState([])\n const { stringifyParams } = useSearchParams()\n const router = useRouter()\n const [initialState, setInitialState] = useState<FormState>()\n const hasInitializedState = React.useRef(false)\n const { clearRouteCache } = useRouteCache()\n\n const collectionPermissions = permissions?.collections?.[slug]\n const hasUpdatePermission = collectionPermissions?.update?.permission\n\n const drawerSlug = `edit-${slug}`\n\n React.useEffect(() => {\n if (!hasInitializedState.current) {\n const getInitialState = async () => {\n const { state: result } = await getFormState({\n apiRoute,\n body: {\n collectionSlug: slug,\n data: {},\n operation: 'update',\n schemaPath: slug,\n },\n serverURL,\n })\n\n setInitialState(result)\n hasInitializedState.current = true\n }\n\n void getInitialState()\n }\n }, [apiRoute, hasInitializedState, serverURL, slug])\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState }) => {\n const { state } = await getFormState({\n apiRoute,\n body: {\n collectionSlug: slug,\n formState: prevFormState,\n operation: 'update',\n schemaPath: slug,\n },\n serverURL,\n })\n\n return state\n },\n [serverURL, apiRoute, slug],\n )\n\n if (selectAll === SelectAllStatus.None || !hasUpdatePermission) {\n return null\n }\n\n const onSuccess = () => {\n router.replace(\n stringifyParams({\n params: { page: selectAll === SelectAllStatus.AllAvailable ? '1' : undefined },\n }),\n )\n clearRouteCache() // Use clearRouteCache instead of router.refresh, as we only need to clear the cache if the user has route caching enabled - clearRouteCache checks for this\n closeModal(drawerSlug)\n }\n\n return (\n <div className={baseClass}>\n <DrawerToggler\n aria-label={t('general:edit')}\n className={`${baseClass}__toggle`}\n onClick={() => {\n setSelected([])\n }}\n slug={drawerSlug}\n >\n {t('general:edit')}\n </DrawerToggler>\n <Drawer Header={null} slug={drawerSlug}>\n <DocumentInfoProvider collectionSlug={slug} id={null}>\n <OperationContext.Provider value=\"update\">\n <div className={`${baseClass}__main`}>\n <div className={`${baseClass}__header`}>\n <h2 className={`${baseClass}__header__title`}>\n {t('general:editingLabel', { count, label: getTranslation(plural, i18n) })}\n </h2>\n <button\n aria-label={t('general:close')}\n className={`${baseClass}__header__close`}\n id={`close-drawer__${drawerSlug}`}\n onClick={() => closeModal(drawerSlug)}\n type=\"button\"\n >\n <XIcon />\n </button>\n </div>\n <Form\n className={`${baseClass}__form`}\n initialState={initialState}\n onChange={[onChange]}\n onSuccess={onSuccess}\n >\n <FieldSelect fields={fields} setSelected={setSelected} />\n {selected.length === 0 ? null : (\n <RenderFields fields={selected} path=\"\" readOnly={false} schemaPath={slug} />\n )}\n <div className={`${baseClass}__sidebar-wrap`}>\n <div className={`${baseClass}__sidebar`}>\n <div className={`${baseClass}__sidebar-sticky-wrap`}>\n <div className={`${baseClass}__document-actions`}>\n {collection?.versions?.drafts ? (\n <React.Fragment>\n <PublishButton\n action={`${serverURL}${apiRoute}/${slug}${getQueryParams()}&draft=true`}\n disabled={selected.length === 0}\n />\n <SaveDraftButton\n action={`${serverURL}${apiRoute}/${slug}${getQueryParams()}&draft=true`}\n disabled={selected.length === 0}\n />\n </React.Fragment>\n ) : (\n <Submit\n action={`${serverURL}${apiRoute}/${slug}${getQueryParams()}`}\n disabled={selected.length === 0}\n />\n )}\n </div>\n </div>\n </div>\n </div>\n </Form>\n </div>\n </OperationContext.Provider>\n </DocumentInfoProvider>\n </Drawer>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","useModal","getTranslation","useRouter","React","useCallback","useState","useForm","Form","RenderFields","FormSubmit","XIcon","useAuth","useConfig","DocumentInfoProvider","OperationContext","useRouteCache","useSearchParams","SelectAllStatus","useSelection","useTranslation","getFormState","Drawer","DrawerToggler","FieldSelect","baseClass","Submit","t0","$","action","disabled","submit","t","t1","method","skipValidation","save","t2","_jsx","className","onClick","children","PublishButton","overrides","_status","SaveDraftButton","buttonStyle","EditMany","props","collection","fields","undefined","slug","labels","plural","permissions","closeModal","config","t3","routes","t4","serverURL","api","apiRoute","count","getQueryParams","selectAll","i18n","t5","Symbol","for","selected","setSelected","stringifyParams","router","initialState","setInitialState","hasInitializedState","useRef","clearRouteCache","collectionPermissions","collections","hasUpdatePermission","update","permission","drawerSlug","t6","current","getInitialState","state","result","body","collectionSlug","data","operation","schemaPath","t7","useEffect","t8","t9","formState","prevFormState","onChange","None","replace","params","page","AllAvailable","onSuccess","t10","versions","drafts","t11","t12","_jsxs","Header","id","Provider","value","label","type","length","path","readOnly","Fragment"],"sources":["../../../src/elements/EditMany/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, ClientField, FormState } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport React, { useCallback, useState } from 'react'\n\nimport type { FormProps } from '../../forms/Form/index.js'\n\nimport { useForm } from '../../forms/Form/context.js'\nimport { Form } from '../../forms/Form/index.js'\nimport { RenderFields } from '../../forms/RenderFields/index.js'\nimport { FormSubmit } from '../../forms/Submit/index.js'\nimport { XIcon } from '../../icons/X/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { DocumentInfoProvider } from '../../providers/DocumentInfo/index.js'\nimport { OperationContext } from '../../providers/Operation/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { useSearchParams } from '../../providers/SearchParams/index.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { getFormState } from '../../utilities/getFormState.js'\nimport { Drawer, DrawerToggler } from '../Drawer/index.js'\nimport { FieldSelect } from '../FieldSelect/index.js'\nimport './index.scss'\n\nconst baseClass = 'edit-many'\n\nexport type EditManyProps = {\n readonly collection: ClientCollectionConfig\n readonly fields: ClientField[]\n}\n\nconst Submit: React.FC<{\n readonly action: string\n readonly disabled: boolean\n}> = ({ action, disabled }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n skipValidation: true,\n })\n }, [action, submit])\n\n return (\n <FormSubmit className={`${baseClass}__save`} disabled={disabled} onClick={save}>\n {t('general:save')}\n </FormSubmit>\n )\n}\n\nconst PublishButton: React.FC<{ action: string; disabled: boolean }> = ({ action, disabled }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n overrides: {\n _status: 'published',\n },\n skipValidation: true,\n })\n }, [action, submit])\n\n return (\n <FormSubmit className={`${baseClass}__publish`} disabled={disabled} onClick={save}>\n {t('version:publishChanges')}\n </FormSubmit>\n )\n}\n\nconst SaveDraftButton: React.FC<{ action: string; disabled: boolean }> = ({ action, disabled }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n overrides: {\n _status: 'draft',\n },\n skipValidation: true,\n })\n }, [action, submit])\n\n return (\n <FormSubmit buttonStyle=\"secondary\" className={`${baseClass}__draft`} disabled={disabled} onClick={save}>\n {t('version:saveDraft')}\n </FormSubmit>\n )\n}\nexport const EditMany: React.FC<EditManyProps> = (props) => {\n const { collection: { slug, labels: { plural } } = {}, collection, fields } = props\n\n const { permissions } = useAuth()\n const { closeModal } = useModal()\n const {\n config: {\n routes: { api: apiRoute },\n serverURL,\n },\n } = useConfig()\n const { count, getQueryParams, selectAll } = useSelection()\n const { i18n, t } = useTranslation()\n const [selected, setSelected] = useState([])\n const { stringifyParams } = useSearchParams()\n const router = useRouter()\n const [initialState, setInitialState] = useState<FormState>()\n const hasInitializedState = React.useRef(false)\n const { clearRouteCache } = useRouteCache()\n\n const collectionPermissions = permissions?.collections?.[slug]\n const hasUpdatePermission = collectionPermissions?.update?.permission\n\n const drawerSlug = `edit-${slug}`\n\n React.useEffect(() => {\n if (!hasInitializedState.current) {\n const getInitialState = async () => {\n const { state: result } = await getFormState({\n apiRoute,\n body: {\n collectionSlug: slug,\n data: {},\n operation: 'update',\n schemaPath: slug,\n },\n serverURL,\n })\n\n setInitialState(result)\n hasInitializedState.current = true\n }\n\n void getInitialState()\n }\n }, [apiRoute, hasInitializedState, serverURL, slug])\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState }) => {\n const { state } = await getFormState({\n apiRoute,\n body: {\n collectionSlug: slug,\n formState: prevFormState,\n operation: 'update',\n schemaPath: slug,\n },\n serverURL,\n })\n\n return state\n },\n [serverURL, apiRoute, slug],\n )\n\n if (selectAll === SelectAllStatus.None || !hasUpdatePermission) {\n return null\n }\n\n const onSuccess = () => {\n router.replace(\n stringifyParams({\n params: { page: selectAll === SelectAllStatus.AllAvailable ? '1' : undefined },\n }),\n )\n clearRouteCache() // Use clearRouteCache instead of router.refresh, as we only need to clear the cache if the user has route caching enabled - clearRouteCache checks for this\n closeModal(drawerSlug)\n }\n\n return (\n <div className={baseClass}>\n <DrawerToggler\n aria-label={t('general:edit')}\n className={`${baseClass}__toggle`}\n onClick={() => {\n setSelected([])\n }}\n slug={drawerSlug}\n >\n {t('general:edit')}\n </DrawerToggler>\n <Drawer Header={null} slug={drawerSlug}>\n <DocumentInfoProvider collectionSlug={slug} id={null}>\n <OperationContext.Provider value=\"update\">\n <div className={`${baseClass}__main`}>\n <div className={`${baseClass}__header`}>\n <h2 className={`${baseClass}__header__title`}>\n {t('general:editingLabel', { count, label: getTranslation(plural, i18n) })}\n </h2>\n <button\n aria-label={t('general:close')}\n className={`${baseClass}__header__close`}\n id={`close-drawer__${drawerSlug}`}\n onClick={() => closeModal(drawerSlug)}\n type=\"button\"\n >\n <XIcon />\n </button>\n </div>\n <Form\n className={`${baseClass}__form`}\n initialState={initialState}\n onChange={[onChange]}\n onSuccess={onSuccess}\n >\n <FieldSelect fields={fields} setSelected={setSelected} />\n {selected.length === 0 ? null : (\n <RenderFields fields={selected} path=\"\" readOnly={false} schemaPath={slug} />\n )}\n <div className={`${baseClass}__sidebar-wrap`}>\n <div className={`${baseClass}__sidebar`}>\n <div className={`${baseClass}__sidebar-sticky-wrap`}>\n <div className={`${baseClass}__document-actions`}>\n {collection?.versions?.drafts ? (\n <React.Fragment>\n <SaveDraftButton\n action={`${serverURL}${apiRoute}/${slug}${getQueryParams()}&draft=true`}\n disabled={selected.length === 0}\n />\n <PublishButton\n action={`${serverURL}${apiRoute}/${slug}${getQueryParams()}&draft=true`}\n disabled={selected.length === 0}\n />\n </React.Fragment>\n ) : (\n <Submit\n action={`${serverURL}${apiRoute}/${slug}${getQueryParams()}`}\n disabled={selected.length === 0}\n />\n )}\n </div>\n </div>\n </div>\n </div>\n </Form>\n </div>\n </OperationContext.Provider>\n </DocumentInfoProvider>\n </Drawer>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -16,7 +16,7 @@ import { useOperation } from '../../providers/Operation/index.js';
|
|
|
16
16
|
import { useTranslation } from '../../providers/Translation/index.js';
|
|
17
17
|
import { PopupList } from '../Popup/index.js';
|
|
18
18
|
export const DefaultPublishButton = t0 => {
|
|
19
|
-
const $ = _c(
|
|
19
|
+
const $ = _c(38);
|
|
20
20
|
const {
|
|
21
21
|
label: labelProp
|
|
22
22
|
} = t0;
|
|
@@ -189,42 +189,55 @@ export const DefaultPublishButton = t0 => {
|
|
|
189
189
|
}
|
|
190
190
|
const t9 = !canPublish;
|
|
191
191
|
let t10;
|
|
192
|
-
if ($[27] !== localization || $[28] !== i18n || $[29] !== code || $[30] !== publishSpecificLocale || $[31] !== t
|
|
193
|
-
t10 =
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
SubMenuPopupContent: localization ? localization.locales.map(locale_1 => {
|
|
192
|
+
if ($[27] !== localization || $[28] !== i18n || $[29] !== code || $[30] !== publishSpecificLocale || $[31] !== t) {
|
|
193
|
+
t10 = t11 => {
|
|
194
|
+
const {
|
|
195
|
+
close
|
|
196
|
+
} = t11;
|
|
197
|
+
return localization ? localization.locales.map(locale_1 => {
|
|
199
198
|
const formattedLabel = typeof locale_1.label === "string" ? locale_1.label : locale_1.label && locale_1.label[i18n?.language];
|
|
200
199
|
const isActive = typeof locale_1 === "string" ? locale_1 === code : locale_1.code === code;
|
|
201
200
|
if (isActive) {
|
|
202
201
|
return _jsx(PopupList.ButtonGroup, {
|
|
203
202
|
children: _jsx(PopupList.Button, {
|
|
204
|
-
onClick: () => publishSpecificLocale(locale_1.code),
|
|
203
|
+
onClick: () => [publishSpecificLocale(locale_1.code), close()],
|
|
205
204
|
children: t("version:publishIn", {
|
|
206
205
|
locale: formattedLabel || locale_1.code
|
|
207
206
|
})
|
|
208
207
|
})
|
|
209
208
|
}, locale_1.code);
|
|
210
209
|
}
|
|
211
|
-
}) : null
|
|
212
|
-
|
|
213
|
-
children: label
|
|
214
|
-
});
|
|
210
|
+
}) : null;
|
|
211
|
+
};
|
|
215
212
|
$[27] = localization;
|
|
216
213
|
$[28] = i18n;
|
|
217
214
|
$[29] = code;
|
|
218
215
|
$[30] = publishSpecificLocale;
|
|
219
216
|
$[31] = t;
|
|
220
|
-
$[32] =
|
|
221
|
-
|
|
222
|
-
$[
|
|
217
|
+
$[32] = t10;
|
|
218
|
+
} else {
|
|
219
|
+
t10 = $[32];
|
|
220
|
+
}
|
|
221
|
+
let t11;
|
|
222
|
+
if ($[33] !== t9 || $[34] !== publish || $[35] !== t10 || $[36] !== label) {
|
|
223
|
+
t11 = _jsx(FormSubmit, {
|
|
224
|
+
buttonId: "action-save",
|
|
225
|
+
disabled: t9,
|
|
226
|
+
onClick: publish,
|
|
227
|
+
size: "medium",
|
|
228
|
+
SubMenuPopupContent: t10,
|
|
229
|
+
type: "button",
|
|
230
|
+
children: label
|
|
231
|
+
});
|
|
232
|
+
$[33] = t9;
|
|
233
|
+
$[34] = publish;
|
|
223
234
|
$[35] = t10;
|
|
235
|
+
$[36] = label;
|
|
236
|
+
$[37] = t11;
|
|
224
237
|
} else {
|
|
225
|
-
|
|
238
|
+
t11 = $[37];
|
|
226
239
|
}
|
|
227
|
-
return
|
|
240
|
+
return t11;
|
|
228
241
|
};
|
|
229
242
|
export const PublishButton = ({
|
|
230
243
|
CustomComponent
|