@payloadcms/ui 4.0.0-beta.1 → 4.0.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/css/preflight.css +21 -2
- package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.js +1 -34
- package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
- package/dist/elements/CloseModalOnRouteChange/index.d.ts.map +1 -1
- package/dist/elements/CloseModalOnRouteChange/index.js +27 -19
- package/dist/elements/CloseModalOnRouteChange/index.js.map +1 -1
- package/dist/elements/DatePicker/DatePicker.js +6 -2
- package/dist/elements/DatePicker/DatePicker.js.map +1 -1
- package/dist/elements/DatePicker/index.css +35 -25
- package/dist/elements/DocumentControls/index.js.map +1 -1
- package/dist/elements/DocumentFields/index.css +2 -2
- package/dist/elements/DocumentHeader/Tabs/tabs/index.js.map +1 -1
- package/dist/elements/FieldSelect/reduceFieldOptions.js.map +1 -1
- package/dist/elements/ListDrawer/Provider.d.ts.map +1 -1
- package/dist/elements/ListDrawer/Provider.js.map +1 -1
- package/dist/elements/LivePreview/Window/index.css +7 -1
- package/dist/elements/Nav/SidebarTabs/index.client.js +1 -1
- package/dist/elements/Nav/SidebarTabs/index.client.js.map +1 -1
- package/dist/elements/PublishButton/index.js.map +1 -1
- package/dist/elements/SchedulePublishButton/index.js.map +1 -1
- package/dist/elements/SegmentedControl/index.css +50 -7
- package/dist/elements/Table/DefaultCell/fields/File/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/File/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/index.js +6 -1
- package/dist/elements/Table/DefaultCell/index.js.map +1 -1
- package/dist/elements/Table/index.js.map +1 -1
- package/dist/exports/client/{CodeEditor-S7MOGZSR.js → CodeEditor-I6PL55BF.js} +2 -2
- package/dist/exports/client/{DatePicker-POZJVQP4.js → DatePicker-RFCB5VGD.js} +2 -2
- package/dist/exports/client/{chunk-2AY67NFV.js → chunk-O2RR6XEH.js} +2 -2
- package/dist/exports/client/chunk-O2RR6XEH.js.map +7 -0
- package/dist/exports/client/{chunk-Z42OBP5U.js → chunk-R7M6BG75.js} +1 -1
- package/dist/exports/client/{chunk-Z42OBP5U.js.map → chunk-R7M6BG75.js.map} +1 -1
- package/dist/exports/client/index.js +15 -15
- package/dist/exports/client/index.js.map +4 -4
- package/dist/exports/shared/index.js +2 -2
- package/dist/exports/shared/index.js.map +3 -3
- package/dist/fields/Upload/Input.d.ts.map +1 -1
- package/dist/fields/Upload/Input.js +3 -1
- package/dist/fields/Upload/Input.js.map +1 -1
- package/dist/forms/Form/reduceToSerializableFields.d.ts +9 -4
- package/dist/forms/Form/reduceToSerializableFields.d.ts.map +1 -1
- package/dist/forms/Form/reduceToSerializableFields.js +34 -7
- package/dist/forms/Form/reduceToSerializableFields.js.map +1 -1
- package/dist/icons/Table/index.css +5 -1
- package/dist/layouts/Root/index.d.ts +1 -1
- package/dist/layouts/Root/index.d.ts.map +1 -1
- package/dist/layouts/Root/index.js +4 -15
- package/dist/layouts/Root/index.js.map +1 -1
- package/dist/providers/RouteCache/index.d.ts.map +1 -1
- package/dist/providers/RouteCache/index.js +37 -25
- package/dist/providers/RouteCache/index.js.map +1 -1
- package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
- package/dist/providers/ServerFunctions/index.js +34 -23
- package/dist/providers/ServerFunctions/index.js.map +1 -1
- package/dist/styles.css +22 -3
- package/dist/templates/Default/index.css +0 -1
- package/dist/utilities/buildClientFieldSchemaMap/traverseFields.d.ts.map +1 -1
- package/dist/utilities/buildClientFieldSchemaMap/traverseFields.js +32 -6
- package/dist/utilities/buildClientFieldSchemaMap/traverseFields.js.map +1 -1
- package/dist/utilities/getDisplayedFieldValue.d.ts +8 -2
- package/dist/utilities/getDisplayedFieldValue.d.ts.map +1 -1
- package/dist/utilities/getDisplayedFieldValue.js +11 -1
- package/dist/utilities/getDisplayedFieldValue.js.map +1 -1
- package/dist/utilities/getHasScheduledPublish.js.map +1 -1
- package/dist/utilities/handleLivePreview.js.map +1 -1
- package/dist/utilities/handleServerFunctions.d.ts +2 -10
- package/dist/utilities/handleServerFunctions.d.ts.map +1 -1
- package/dist/utilities/handleServerFunctions.js +3 -7
- package/dist/utilities/handleServerFunctions.js.map +1 -1
- package/dist/utilities/hasSavePermission.js.map +1 -1
- package/dist/utilities/schedulePublishHandler.js.map +1 -1
- package/dist/utilities/serverFunctionRegistry.d.ts +2 -7
- package/dist/utilities/serverFunctionRegistry.d.ts.map +1 -1
- package/dist/utilities/serverFunctionRegistry.js +2 -7
- package/dist/utilities/serverFunctionRegistry.js.map +1 -1
- package/dist/views/Edit/index.js.map +1 -1
- package/dist/widgets/RecentlyViewed/getDocuments.d.ts.map +1 -1
- package/dist/widgets/RecentlyViewed/getDocuments.js +4 -1
- package/dist/widgets/RecentlyViewed/getDocuments.js.map +1 -1
- package/dist/widgets/RecentlyViewed/index.client.d.ts.map +1 -1
- package/dist/widgets/RecentlyViewed/index.client.js +7 -2
- package/dist/widgets/RecentlyViewed/index.client.js.map +1 -1
- package/package.json +16 -16
- package/dist/exports/client/chunk-2AY67NFV.js.map +0 -7
- /package/dist/exports/client/{CodeEditor-S7MOGZSR.js.map → CodeEditor-I6PL55BF.js.map} +0 -0
- /package/dist/exports/client/{DatePicker-POZJVQP4.js.map → DatePicker-RFCB5VGD.js.map} +0 -0
|
@@ -180,7 +180,7 @@
|
|
|
180
180
|
text-align: center;
|
|
181
181
|
cursor: pointer;
|
|
182
182
|
top: 0;
|
|
183
|
-
margin: var(--spacer-2);
|
|
183
|
+
margin: var(--spacer-2) var(--spacer-1-5);
|
|
184
184
|
border: none;
|
|
185
185
|
z-index: 1;
|
|
186
186
|
height: var(--spacer-4);
|
|
@@ -204,6 +204,10 @@
|
|
|
204
204
|
font-weight: 300;
|
|
205
205
|
}
|
|
206
206
|
|
|
207
|
+
.react-datepicker:has(.react-datepicker__monthPicker) .react-datepicker__navigation {
|
|
208
|
+
margin-inline: var(--spacer-2);
|
|
209
|
+
}
|
|
210
|
+
|
|
207
211
|
.react-datepicker__navigation-icon {
|
|
208
212
|
display: flex;
|
|
209
213
|
align-items: center;
|
|
@@ -235,8 +239,8 @@
|
|
|
235
239
|
}
|
|
236
240
|
|
|
237
241
|
.react-datepicker__navigation--next--with-time:not(
|
|
238
|
-
|
|
239
|
-
|
|
242
|
+
.react-datepicker__navigation--next--with-today-button
|
|
243
|
+
) {
|
|
240
244
|
right: var(--time-column-width);
|
|
241
245
|
}
|
|
242
246
|
|
|
@@ -376,6 +380,10 @@
|
|
|
376
380
|
position: relative;
|
|
377
381
|
}
|
|
378
382
|
|
|
383
|
+
.react-datepicker__month-container:has(.react-datepicker__day-names) {
|
|
384
|
+
width: calc(var(--spacer-5) * 8);
|
|
385
|
+
}
|
|
386
|
+
|
|
379
387
|
.react-datepicker__month {
|
|
380
388
|
margin: 0;
|
|
381
389
|
padding: var(--spacer-1);
|
|
@@ -430,13 +438,15 @@
|
|
|
430
438
|
white-space: nowrap;
|
|
431
439
|
margin-bottom: 0;
|
|
432
440
|
background-color: transparent;
|
|
433
|
-
padding: var(--spacer-2);
|
|
434
|
-
padding-bottom: 0;
|
|
441
|
+
padding: var(--spacer-2) var(--spacer-1) 0;
|
|
435
442
|
border-top: var(--stroke-width-small) solid var(--color-border);
|
|
436
443
|
width: 100%;
|
|
437
444
|
}
|
|
438
445
|
|
|
446
|
+
.react-datepicker__day-names,
|
|
439
447
|
.react-datepicker__week {
|
|
448
|
+
display: flex;
|
|
449
|
+
justify-content: space-between;
|
|
440
450
|
white-space: nowrap;
|
|
441
451
|
}
|
|
442
452
|
|
|
@@ -563,29 +573,29 @@
|
|
|
563
573
|
|
|
564
574
|
/* In-range selecting (partial selection) */
|
|
565
575
|
.react-datepicker__day--in-selecting-range:not(
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
576
|
+
.react-datepicker__day--in-range,
|
|
577
|
+
.react-datepicker__month-text--in-range,
|
|
578
|
+
.react-datepicker__quarter-text--in-range,
|
|
579
|
+
.react-datepicker__year-text--in-range
|
|
580
|
+
),
|
|
571
581
|
.react-datepicker__month-text--in-selecting-range:not(
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
582
|
+
.react-datepicker__day--in-range,
|
|
583
|
+
.react-datepicker__month-text--in-range,
|
|
584
|
+
.react-datepicker__quarter-text--in-range,
|
|
585
|
+
.react-datepicker__year-text--in-range
|
|
586
|
+
),
|
|
577
587
|
.react-datepicker__quarter-text--in-selecting-range:not(
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
588
|
+
.react-datepicker__day--in-range,
|
|
589
|
+
.react-datepicker__month-text--in-range,
|
|
590
|
+
.react-datepicker__quarter-text--in-range,
|
|
591
|
+
.react-datepicker__year-text--in-range
|
|
592
|
+
),
|
|
583
593
|
.react-datepicker__year-text--in-selecting-range:not(
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
594
|
+
.react-datepicker__day--in-range,
|
|
595
|
+
.react-datepicker__month-text--in-range,
|
|
596
|
+
.react-datepicker__quarter-text--in-range,
|
|
597
|
+
.react-datepicker__year-text--in-range
|
|
598
|
+
) {
|
|
589
599
|
background-color: var(--color-bg-selected);
|
|
590
600
|
}
|
|
591
601
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["getTranslation","formatAdminURL","hasAutosaveEnabled","hasDraftsEnabled","hasScheduledPublishEnabled","React","Fragment","useCallback","useEffect","useRef","useState","useFormInitializing","useFormProcessing","useElementHeightVariable","MoreIcon","useConfig","useDocumentInfo","useEditDepth","useLivePreviewContext","useTranslation","formatDate","formatTimeToNow","Autosave","Button","CopyLocaleData","DeleteDocument","DuplicateDocument","LivePreviewToggler","Locked","PermanentlyDeleteButton","Popup","PopupList","PreviewButton","PublishButton","RenderCustomComponent","RestoreButton","SaveButton","SaveDraftButton","SchedulePublishButton","Status","UnpublishButton","baseClass","DocumentControls","props","id","slug","BeforeDocumentControls","BeforeDocumentMeta","customComponents","CustomPreviewButton","CustomPublishButton","CustomSaveButton","CustomSaveDraftButton","CustomStatus","CustomUnpublishButton","data","disableActions","disableCreate","EditMenuItems","hasSavePermission","isAccountView","isEditing","isInDrawer","isTrashed","onDelete","onDrawerCreateNew","onDuplicate","onRestore","onTakeOver","permissions","readOnlyForIncomingUser","redirectAfterDelete","redirectAfterDuplicate","redirectAfterRestore","user","variant","i18n","t","editDepth","config","getEntityConfig","collectionConfig","collectionSlug","globalConfig","globalSlug","isLivePreviewEnabled","hasDeletePermission","docHasDeletePermission","hasTrashPermission","docHasTrashPermission","admin","dateFormat","localization","routes","adminRoute","updatedAt","setUpdatedAt","createdAt","setCreatedAt","relativeTime","setRelativeTime","processing","initializing","rootRef","i18nRef","cssVar","isEnabled","ref","current","updateRelativeTime","date","pattern","interval","setInterval","clearInterval","hasCreatePermission","create","collectionDeletePermission","delete","trash","unsavedDraftWithValidations","versions","drafts","validate","globalHasDraftsEnabled","collectionHasDraftsEnabled","showDotMenu","Boolean","collectionAutosaveEnabled","globalAutosaveEnabled","autosaveEnabled","showSaveDraftButton","autosave","showCopyToLocale","disableCopyToLocale","showLockedMetaIcon","_jsxs","className","filter","join","_jsx","label","labels","singular","CustomComponent","Fallback","collection","global","publishedDocUpdatedAt","timestamps","title","undefined","distance","preview","disabled","buttonId","toString","singularLabel","buttonStyle","onClick","size","type","buttonClassName","caret","horizontalAlign","popupType","renderButton","active","buttonProps","icon","selected","verticalAlign","ButtonGroup","href","path","disableDuplicate","_Fragment","selectLocales","useAsTitle"],"sources":["../../../src/elements/DocumentControls/index.tsx"],"sourcesContent":["'use client'\nimport type {\n Data,\n SanitizedCollectionConfig,\n SanitizedCollectionPermission,\n SanitizedGlobalPermission,\n User,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n formatAdminURL,\n hasAutosaveEnabled,\n hasDraftsEnabled,\n hasScheduledPublishEnabled,\n} from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js'\n\nimport { useFormInitializing, useFormProcessing } from '../../forms/Form/context.js'\nimport { useElementHeightVariable } from '../../hooks/useElementHeightVariable.js'\nimport { MoreIcon } from '../../icons/More/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useLivePreviewContext } from '../../providers/LivePreview/context.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { formatDate, formatTimeToNow } from '../../utilities/formatDocTitle/formatDateTitle.js'\nimport { Autosave } from '../Autosave/index.js'\nimport { Button } from '../Button/index.js'\nimport { CopyLocaleData } from '../CopyLocaleData/index.js'\nimport { DeleteDocument } from '../DeleteDocument/index.js'\nimport { DuplicateDocument } from '../DuplicateDocument/index.js'\nimport { LivePreviewToggler } from '../LivePreview/Toggler/index.js'\nimport { Locked } from '../Locked/index.js'\nimport { PermanentlyDeleteButton } from '../PermanentlyDeleteButton/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport { PreviewButton } from '../PreviewButton/index.js'\nimport { PublishButton } from '../PublishButton/index.js'\nimport { RenderCustomComponent } from '../RenderCustomComponent/index.js'\nimport { RestoreButton } from '../RestoreButton/index.js'\nimport { SaveButton } from '../SaveButton/index.js'\nimport { SaveDraftButton } from '../SaveDraftButton/index.js'\nimport { SchedulePublishButton } from '../SchedulePublishButton/index.js'\nimport { Status } from '../Status/index.js'\nimport { UnpublishButton } from '../UnpublishButton/index.js'\nimport './index.css'\n\nconst baseClass = 'doc-controls'\n\ntype DocumentControlsProps = {\n readonly apiURL: string\n readonly BeforeDocumentControls?: React.ReactNode\n readonly BeforeDocumentMeta?: React.ReactNode\n readonly customComponents?: {\n readonly PreviewButton?: React.ReactNode\n readonly PublishButton?: React.ReactNode\n readonly SaveButton?: React.ReactNode\n readonly SaveDraftButton?: React.ReactNode\n readonly Status?: React.ReactNode\n readonly UnpublishButton?: React.ReactNode\n }\n readonly data?: Data\n readonly disableActions?: boolean\n readonly disableCreate?: boolean\n readonly EditMenuItems?: React.ReactNode\n readonly hasPublishPermission?: boolean\n readonly hasSavePermission?: boolean\n readonly id?: number | string\n readonly isAccountView?: boolean\n readonly isEditing?: boolean\n readonly isInDrawer?: boolean\n readonly isTrashed?: boolean\n readonly onDelete?: DocumentDrawerContextType['onDelete']\n readonly onDrawerCreateNew?: () => void\n /* Only available if `redirectAfterDuplicate` is `false` */\n readonly onDuplicate?: DocumentDrawerContextType['onDuplicate']\n readonly onRestore?: DocumentDrawerContextType['onRestore']\n readonly onSave?: DocumentDrawerContextType['onSave']\n readonly onTakeOver?: () => void\n readonly permissions: null | SanitizedCollectionPermission | SanitizedGlobalPermission\n readonly readOnlyForIncomingUser?: boolean\n readonly redirectAfterDelete?: boolean\n readonly redirectAfterDuplicate?: boolean\n readonly redirectAfterRestore?: boolean\n readonly slug: SanitizedCollectionConfig['slug']\n readonly user?: User\n /**\n * Controls how the document controls render.\n * - `default`: full controls bar (meta + actions), used on the edit page.\n * - `drawerHeaderActions`: only the action buttons, rendered in the document drawer header.\n */\n readonly variant?: 'default' | 'drawerHeaderActions'\n}\n\nexport const DocumentControls: React.FC<DocumentControlsProps> = (props) => {\n const {\n id,\n slug,\n BeforeDocumentControls,\n BeforeDocumentMeta,\n customComponents: {\n PreviewButton: CustomPreviewButton,\n PublishButton: CustomPublishButton,\n SaveButton: CustomSaveButton,\n SaveDraftButton: CustomSaveDraftButton,\n Status: CustomStatus,\n UnpublishButton: CustomUnpublishButton,\n } = {},\n data,\n disableActions,\n disableCreate,\n EditMenuItems,\n hasSavePermission,\n isAccountView,\n isEditing,\n isInDrawer,\n isTrashed,\n onDelete,\n onDrawerCreateNew,\n onDuplicate,\n onRestore,\n onTakeOver,\n permissions,\n readOnlyForIncomingUser,\n redirectAfterDelete,\n redirectAfterDuplicate,\n redirectAfterRestore,\n user,\n variant = 'default',\n } = props\n\n const { i18n, t } = useTranslation()\n\n const editDepth = useEditDepth()\n\n const { config, getEntityConfig } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug: slug })\n\n const globalConfig = getEntityConfig({ globalSlug: slug })\n\n const { isLivePreviewEnabled } = useLivePreviewContext()\n\n const { hasDeletePermission: docHasDeletePermission, hasTrashPermission: docHasTrashPermission } =\n useDocumentInfo()\n\n const {\n admin: { dateFormat },\n localization,\n routes: { admin: adminRoute },\n } = config\n\n // Settings these in state to avoid hydration issues if there is a mismatch between the server and client\n const [updatedAt, setUpdatedAt] = React.useState<string>('')\n const [createdAt, setCreatedAt] = React.useState<string>('')\n const [relativeTime, setRelativeTime] = useState<string>('')\n\n const processing = useFormProcessing()\n const initializing = useFormInitializing()\n\n const rootRef = useRef<HTMLDivElement>(null)\n const i18nRef = useRef(i18n)\n\n // Only the page-level controls bar feeds the sticky layout offsets. Drawer instances\n // (variant=\"drawerHeaderActions\") must not publish the shared var or they'd clobber it.\n useElementHeightVariable({\n cssVar: '--doc-controls-height',\n isEnabled: variant === 'default',\n ref: rootRef,\n })\n i18nRef.current = i18n\n\n const updateRelativeTime = useCallback(() => {\n const date = data?.updatedAt || data?.createdAt\n if (date) {\n setRelativeTime(formatTimeToNow({ date, i18n: i18nRef.current }))\n }\n }, [data?.updatedAt, data?.createdAt])\n\n useEffect(() => {\n if (data?.updatedAt) {\n setUpdatedAt(formatDate({ date: data.updatedAt, i18n, pattern: dateFormat }))\n }\n if (data?.createdAt) {\n setCreatedAt(formatDate({ date: data.createdAt, i18n, pattern: dateFormat }))\n }\n updateRelativeTime()\n }, [data, i18n, dateFormat, updateRelativeTime])\n\n useEffect(() => {\n const interval = setInterval(updateRelativeTime, 60000)\n return () => clearInterval(interval)\n }, [updateRelativeTime])\n\n const hasCreatePermission = permissions && 'create' in permissions && permissions.create\n\n const collectionDeletePermission = permissions && 'delete' in permissions && permissions.delete\n\n const hasDeletePermission = collectionConfig?.trash\n ? docHasTrashPermission || docHasDeletePermission\n : collectionDeletePermission\n\n const unsavedDraftWithValidations =\n !id && collectionConfig?.versions?.drafts && collectionConfig.versions?.drafts.validate\n\n const globalHasDraftsEnabled = hasDraftsEnabled(globalConfig)\n const collectionHasDraftsEnabled = hasDraftsEnabled(collectionConfig)\n\n const showDotMenu = Boolean(\n !disableActions &&\n (EditMenuItems ||\n (collectionConfig && id && (hasCreatePermission || hasDeletePermission)) ||\n (globalConfig && (globalHasDraftsEnabled || localization))),\n )\n const collectionAutosaveEnabled = hasAutosaveEnabled(collectionConfig)\n const globalAutosaveEnabled = hasAutosaveEnabled(globalConfig)\n const autosaveEnabled = collectionAutosaveEnabled || globalAutosaveEnabled\n\n const showSaveDraftButton =\n (collectionAutosaveEnabled &&\n collectionConfig.versions.drafts.autosave !== false &&\n collectionConfig.versions.drafts.autosave.showSaveDraftButton === true) ||\n (globalAutosaveEnabled &&\n globalConfig.versions.drafts.autosave !== false &&\n globalConfig.versions.drafts.autosave.showSaveDraftButton === true)\n const showCopyToLocale = localization && !collectionConfig?.admin?.disableCopyToLocale\n\n const showLockedMetaIcon = user && readOnlyForIncomingUser\n\n return (\n <div\n className={[baseClass, variant !== 'default' && `${baseClass}--${variant}`]\n .filter(Boolean)\n .join(' ')}\n ref={rootRef}\n >\n {variant === 'default' && (\n <div className={`${baseClass}__content`}>\n {Boolean(showLockedMetaIcon || BeforeDocumentMeta) && (\n <div className={`${baseClass}__before-meta`}>\n {showLockedMetaIcon && (\n <Locked className={`${baseClass}__locked-controls`} user={user} />\n )}\n {BeforeDocumentMeta}\n </div>\n )}\n <ul className={`${baseClass}__meta`}>\n {collectionConfig && !isEditing && !isAccountView && (\n <li className={`${baseClass}__list-item`}>\n <p className={`${baseClass}__creating-new`}>\n {i18n.t('general:creatingNewLabel', {\n label: getTranslation(\n collectionConfig?.labels?.singular ?? i18n.t('general:document'),\n i18n,\n ),\n })}\n </p>\n </li>\n )}\n {(collectionHasDraftsEnabled || globalHasDraftsEnabled) && (\n <Fragment>\n {(globalConfig || (collectionConfig && isEditing)) && (\n <li className={`${baseClass}__status ${baseClass}__list-item`}>\n <RenderCustomComponent CustomComponent={CustomStatus} Fallback={<Status />} />\n </li>\n )}\n {hasSavePermission &&\n autosaveEnabled &&\n !unsavedDraftWithValidations &&\n !isTrashed && (\n <li className={`${baseClass}__list-item`}>\n <Autosave\n collection={collectionConfig}\n global={globalConfig}\n id={id}\n publishedDocUpdatedAt={data?.createdAt}\n />\n </li>\n )}\n </Fragment>\n )}\n {collectionConfig?.timestamps &&\n (isEditing || isAccountView) &&\n (data?.updatedAt || data?.createdAt) && (\n <li\n className={`${baseClass}__list-item ${baseClass}__value-wrap`}\n title={updatedAt || createdAt || undefined}\n >\n <p className={`${baseClass}__value`}>\n {relativeTime\n ? t(isTrashed ? 'general:deletedAgo' : 'general:updatedAgo', {\n distance: relativeTime,\n })\n : `${t('general:loading')}...`}\n </p>\n </li>\n )}\n </ul>\n </div>\n )}\n <div className={`${baseClass}__controls-wrapper`}>\n <div className={`${baseClass}__controls`}>\n {BeforeDocumentControls}\n <div className={`${baseClass}__icon-buttons`}>\n {isLivePreviewEnabled && !isInDrawer && <LivePreviewToggler />}\n {(collectionConfig?.admin.preview || globalConfig?.admin.preview) && (\n <RenderCustomComponent\n CustomComponent={CustomPreviewButton}\n Fallback={<PreviewButton />}\n />\n )}\n {hasScheduledPublishEnabled(collectionConfig || globalConfig) && !isTrashed && (\n <SchedulePublishButton disabled={readOnlyForIncomingUser} />\n )}\n </div>\n {hasSavePermission && !isTrashed && !readOnlyForIncomingUser && (\n <Fragment>\n {collectionHasDraftsEnabled || globalHasDraftsEnabled ? (\n <Fragment>\n {(unsavedDraftWithValidations ||\n !autosaveEnabled ||\n (autosaveEnabled && showSaveDraftButton)) && (\n <RenderCustomComponent\n CustomComponent={CustomSaveDraftButton}\n Fallback={<SaveDraftButton />}\n />\n )}\n <RenderCustomComponent\n CustomComponent={CustomPublishButton}\n Fallback={<PublishButton />}\n />\n </Fragment>\n ) : (\n <RenderCustomComponent\n CustomComponent={CustomSaveButton}\n Fallback={<SaveButton />}\n />\n )}\n </Fragment>\n )}\n {docHasDeletePermission && isTrashed && (\n <PermanentlyDeleteButton\n buttonId=\"action-permanently-delete\"\n collectionSlug={collectionConfig?.slug}\n id={id.toString()}\n onDelete={onDelete}\n redirectAfterDelete={redirectAfterDelete}\n singularLabel={collectionConfig?.labels?.singular}\n />\n )}\n {hasSavePermission && isTrashed && (\n <RestoreButton\n buttonId=\"action-restore\"\n collectionSlug={collectionConfig?.slug}\n id={id.toString()}\n onRestore={onRestore}\n redirectAfterRestore={redirectAfterRestore}\n singularLabel={collectionConfig?.labels?.singular}\n />\n )}\n {user && readOnlyForIncomingUser && (\n <Button\n buttonStyle=\"secondary\"\n id=\"take-over\"\n onClick={onTakeOver}\n size=\"medium\"\n type=\"button\"\n >\n {t('general:takeOver')}\n </Button>\n )}\n </div>\n {showDotMenu && !readOnlyForIncomingUser && (\n <Popup\n buttonClassName={`${baseClass}__popup-button`}\n caret={false}\n className={`${baseClass}__popup`}\n disabled={initializing || processing}\n horizontalAlign=\"right\"\n popupType=\"menu\"\n renderButton={({ active, ...buttonProps }) => (\n <Button\n {...buttonProps}\n aria-label={t('general:moreOptions')}\n buttonStyle=\"ghost\"\n className={`${baseClass}__popup-button`}\n icon={<MoreIcon />}\n selected={active}\n size=\"medium\"\n />\n )}\n verticalAlign=\"bottom\"\n >\n <PopupList.ButtonGroup>\n {showCopyToLocale && <CopyLocaleData />}\n {hasCreatePermission && (\n <React.Fragment>\n {!disableCreate && (\n <Fragment>\n {editDepth > 1 ? (\n <PopupList.Button id=\"action-create\" onClick={onDrawerCreateNew}>\n {i18n.t('general:createNew')}\n </PopupList.Button>\n ) : (\n <PopupList.Button\n href={formatAdminURL({\n adminRoute,\n path: `/collections/${collectionConfig?.slug}/create`,\n })}\n id=\"action-create\"\n >\n {i18n.t('general:createNew')}\n </PopupList.Button>\n )}\n </Fragment>\n )}\n {collectionConfig.disableDuplicate !== true && isEditing && (\n <>\n <DuplicateDocument\n id={id}\n onDuplicate={onDuplicate}\n redirectAfterDuplicate={redirectAfterDuplicate}\n singularLabel={collectionConfig?.labels?.singular}\n slug={collectionConfig?.slug}\n />\n {localization && (\n <DuplicateDocument\n id={id}\n onDuplicate={onDuplicate}\n redirectAfterDuplicate={redirectAfterDuplicate}\n selectLocales={true}\n singularLabel={collectionConfig?.labels?.singular}\n slug={collectionConfig?.slug}\n />\n )}\n </>\n )}\n </React.Fragment>\n )}\n {hasDeletePermission && id && (\n <DeleteDocument\n buttonId=\"action-delete\"\n collectionSlug={collectionConfig?.slug}\n id={id.toString()}\n onDelete={onDelete}\n redirectAfterDelete={redirectAfterDelete}\n singularLabel={collectionConfig?.labels?.singular}\n useAsTitle={collectionConfig?.admin?.useAsTitle}\n />\n )}\n <RenderCustomComponent\n CustomComponent={CustomUnpublishButton}\n Fallback={<UnpublishButton />}\n />\n {EditMenuItems}\n </PopupList.ButtonGroup>\n </Popup>\n )}\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["getTranslation","formatAdminURL","hasAutosaveEnabled","hasDraftsEnabled","hasScheduledPublishEnabled","React","Fragment","useCallback","useEffect","useRef","useState","useFormInitializing","useFormProcessing","useElementHeightVariable","MoreIcon","useConfig","useDocumentInfo","useEditDepth","useLivePreviewContext","useTranslation","formatDate","formatTimeToNow","Autosave","Button","CopyLocaleData","DeleteDocument","DuplicateDocument","LivePreviewToggler","Locked","PermanentlyDeleteButton","Popup","PopupList","PreviewButton","PublishButton","RenderCustomComponent","RestoreButton","SaveButton","SaveDraftButton","SchedulePublishButton","Status","UnpublishButton","baseClass","DocumentControls","props","id","slug","BeforeDocumentControls","BeforeDocumentMeta","customComponents","CustomPreviewButton","CustomPublishButton","CustomSaveButton","CustomSaveDraftButton","CustomStatus","CustomUnpublishButton","data","disableActions","disableCreate","EditMenuItems","hasSavePermission","isAccountView","isEditing","isInDrawer","isTrashed","onDelete","onDrawerCreateNew","onDuplicate","onRestore","onTakeOver","permissions","readOnlyForIncomingUser","redirectAfterDelete","redirectAfterDuplicate","redirectAfterRestore","user","variant","i18n","t","editDepth","config","getEntityConfig","collectionConfig","collectionSlug","globalConfig","globalSlug","isLivePreviewEnabled","hasDeletePermission","docHasDeletePermission","hasTrashPermission","docHasTrashPermission","admin","dateFormat","localization","routes","adminRoute","updatedAt","setUpdatedAt","createdAt","setCreatedAt","relativeTime","setRelativeTime","processing","initializing","rootRef","i18nRef","cssVar","isEnabled","ref","current","updateRelativeTime","date","pattern","interval","setInterval","clearInterval","hasCreatePermission","create","collectionDeletePermission","delete","trash","unsavedDraftWithValidations","versions","drafts","validate","globalHasDraftsEnabled","collectionHasDraftsEnabled","showDotMenu","Boolean","collectionAutosaveEnabled","globalAutosaveEnabled","autosaveEnabled","showSaveDraftButton","autosave","showCopyToLocale","disableCopyToLocale","showLockedMetaIcon","_jsxs","className","filter","join","_jsx","label","labels","singular","CustomComponent","Fallback","collection","global","publishedDocUpdatedAt","timestamps","title","undefined","distance","preview","disabled","buttonId","toString","singularLabel","buttonStyle","onClick","size","type","buttonClassName","caret","horizontalAlign","popupType","renderButton","active","buttonProps","icon","selected","verticalAlign","ButtonGroup","href","path","disableDuplicate","_Fragment","selectLocales","useAsTitle"],"sources":["../../../src/elements/DocumentControls/index.tsx"],"sourcesContent":["'use client'\nimport type {\n Data,\n SanitizedCollectionConfig,\n SanitizedCollectionPermission,\n SanitizedGlobalPermission,\n User,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n formatAdminURL,\n hasAutosaveEnabled,\n hasDraftsEnabled,\n hasScheduledPublishEnabled,\n} from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js'\n\nimport { useFormInitializing, useFormProcessing } from '../../forms/Form/context.js'\nimport { useElementHeightVariable } from '../../hooks/useElementHeightVariable.js'\nimport { MoreIcon } from '../../icons/More/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useLivePreviewContext } from '../../providers/LivePreview/context.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { formatDate, formatTimeToNow } from '../../utilities/formatDocTitle/formatDateTitle.js'\nimport { Autosave } from '../Autosave/index.js'\nimport { Button } from '../Button/index.js'\nimport { CopyLocaleData } from '../CopyLocaleData/index.js'\nimport { DeleteDocument } from '../DeleteDocument/index.js'\nimport { DuplicateDocument } from '../DuplicateDocument/index.js'\nimport { LivePreviewToggler } from '../LivePreview/Toggler/index.js'\nimport { Locked } from '../Locked/index.js'\nimport { PermanentlyDeleteButton } from '../PermanentlyDeleteButton/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport { PreviewButton } from '../PreviewButton/index.js'\nimport { PublishButton } from '../PublishButton/index.js'\nimport { RenderCustomComponent } from '../RenderCustomComponent/index.js'\nimport { RestoreButton } from '../RestoreButton/index.js'\nimport { SaveButton } from '../SaveButton/index.js'\nimport { SaveDraftButton } from '../SaveDraftButton/index.js'\nimport { SchedulePublishButton } from '../SchedulePublishButton/index.js'\nimport { Status } from '../Status/index.js'\nimport { UnpublishButton } from '../UnpublishButton/index.js'\nimport './index.css'\n\nconst baseClass = 'doc-controls'\n\ntype DocumentControlsProps = {\n readonly apiURL: string\n readonly BeforeDocumentControls?: React.ReactNode\n readonly BeforeDocumentMeta?: React.ReactNode\n readonly customComponents?: {\n readonly PreviewButton?: React.ReactNode\n readonly PublishButton?: React.ReactNode\n readonly SaveButton?: React.ReactNode\n readonly SaveDraftButton?: React.ReactNode\n readonly Status?: React.ReactNode\n readonly UnpublishButton?: React.ReactNode\n }\n readonly data?: Data\n readonly disableActions?: boolean\n readonly disableCreate?: boolean\n readonly EditMenuItems?: React.ReactNode\n readonly hasPublishPermission?: boolean\n readonly hasSavePermission?: boolean\n readonly id?: number | string\n readonly isAccountView?: boolean\n readonly isEditing?: boolean\n readonly isInDrawer?: boolean\n readonly isTrashed?: boolean\n readonly onDelete?: DocumentDrawerContextType['onDelete']\n readonly onDrawerCreateNew?: () => void\n /* Only available if `redirectAfterDuplicate` is `false` */\n readonly onDuplicate?: DocumentDrawerContextType['onDuplicate']\n readonly onRestore?: DocumentDrawerContextType['onRestore']\n readonly onSave?: DocumentDrawerContextType['onSave']\n readonly onTakeOver?: () => void\n readonly permissions: null | SanitizedCollectionPermission | SanitizedGlobalPermission\n readonly readOnlyForIncomingUser?: boolean\n readonly redirectAfterDelete?: boolean\n readonly redirectAfterDuplicate?: boolean\n readonly redirectAfterRestore?: boolean\n readonly slug: SanitizedCollectionConfig['slug']\n readonly user?: User\n /**\n * Controls how the document controls render.\n * - `default`: full controls bar (meta + actions), used on the edit page.\n * - `drawerHeaderActions`: only the action buttons, rendered in the document drawer header.\n */\n readonly variant?: 'default' | 'drawerHeaderActions'\n}\n\nexport const DocumentControls: React.FC<DocumentControlsProps> = (props) => {\n const {\n id,\n slug,\n BeforeDocumentControls,\n BeforeDocumentMeta,\n customComponents: {\n PreviewButton: CustomPreviewButton,\n PublishButton: CustomPublishButton,\n SaveButton: CustomSaveButton,\n SaveDraftButton: CustomSaveDraftButton,\n Status: CustomStatus,\n UnpublishButton: CustomUnpublishButton,\n } = {},\n data,\n disableActions,\n disableCreate,\n EditMenuItems,\n hasSavePermission,\n isAccountView,\n isEditing,\n isInDrawer,\n isTrashed,\n onDelete,\n onDrawerCreateNew,\n onDuplicate,\n onRestore,\n onTakeOver,\n permissions,\n readOnlyForIncomingUser,\n redirectAfterDelete,\n redirectAfterDuplicate,\n redirectAfterRestore,\n user,\n variant = 'default',\n } = props\n\n const { i18n, t } = useTranslation()\n\n const editDepth = useEditDepth()\n\n const { config, getEntityConfig } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug: slug })\n\n const globalConfig = getEntityConfig({ globalSlug: slug })\n\n const { isLivePreviewEnabled } = useLivePreviewContext()\n\n const { hasDeletePermission: docHasDeletePermission, hasTrashPermission: docHasTrashPermission } =\n useDocumentInfo()\n\n const {\n admin: { dateFormat },\n localization,\n routes: { admin: adminRoute },\n } = config\n\n // Settings these in state to avoid hydration issues if there is a mismatch between the server and client\n const [updatedAt, setUpdatedAt] = React.useState<string>('')\n const [createdAt, setCreatedAt] = React.useState<string>('')\n const [relativeTime, setRelativeTime] = useState<string>('')\n\n const processing = useFormProcessing()\n const initializing = useFormInitializing()\n\n const rootRef = useRef<HTMLDivElement>(null)\n const i18nRef = useRef(i18n)\n\n // Only the page-level controls bar feeds the sticky layout offsets. Drawer instances\n // (variant=\"drawerHeaderActions\") must not publish the shared var or they'd clobber it.\n useElementHeightVariable({\n cssVar: '--doc-controls-height',\n isEnabled: variant === 'default',\n ref: rootRef,\n })\n i18nRef.current = i18n\n\n const updateRelativeTime = useCallback(() => {\n const date = data?.updatedAt || data?.createdAt\n if (date) {\n setRelativeTime(formatTimeToNow({ date, i18n: i18nRef.current }))\n }\n }, [data?.updatedAt, data?.createdAt])\n\n useEffect(() => {\n if (data?.updatedAt) {\n setUpdatedAt(formatDate({ date: data.updatedAt, i18n, pattern: dateFormat }))\n }\n if (data?.createdAt) {\n setCreatedAt(formatDate({ date: data.createdAt, i18n, pattern: dateFormat }))\n }\n updateRelativeTime()\n }, [data, i18n, dateFormat, updateRelativeTime])\n\n useEffect(() => {\n const interval = setInterval(updateRelativeTime, 60000)\n return () => clearInterval(interval)\n }, [updateRelativeTime])\n\n const hasCreatePermission = permissions && 'create' in permissions && permissions.create\n\n const collectionDeletePermission = permissions && 'delete' in permissions && permissions.delete\n\n const hasDeletePermission = collectionConfig?.trash\n ? docHasTrashPermission || docHasDeletePermission\n : collectionDeletePermission\n\n const unsavedDraftWithValidations =\n !id && collectionConfig?.versions?.drafts && collectionConfig.versions?.drafts.validate\n\n const globalHasDraftsEnabled = hasDraftsEnabled(globalConfig)\n const collectionHasDraftsEnabled = hasDraftsEnabled(collectionConfig)\n\n const showDotMenu = Boolean(\n !disableActions &&\n (EditMenuItems ||\n (collectionConfig && id && (hasCreatePermission || hasDeletePermission)) ||\n (globalConfig && (globalHasDraftsEnabled || localization))),\n )\n const collectionAutosaveEnabled = hasAutosaveEnabled(collectionConfig)\n const globalAutosaveEnabled = hasAutosaveEnabled(globalConfig)\n const autosaveEnabled = collectionAutosaveEnabled || globalAutosaveEnabled\n\n const showSaveDraftButton =\n (collectionAutosaveEnabled &&\n collectionConfig.versions.drafts.autosave !== false &&\n collectionConfig.versions.drafts.autosave.showSaveDraftButton === true) ||\n (globalAutosaveEnabled &&\n globalConfig.versions.drafts.autosave !== false &&\n globalConfig.versions.drafts.autosave.showSaveDraftButton === true)\n const showCopyToLocale = localization && !collectionConfig?.admin?.disableCopyToLocale\n\n const showLockedMetaIcon = user && readOnlyForIncomingUser\n\n return (\n <div\n className={[baseClass, variant !== 'default' && `${baseClass}--${variant}`]\n .filter(Boolean)\n .join(' ')}\n ref={rootRef}\n >\n {variant === 'default' && (\n <div className={`${baseClass}__content`}>\n {Boolean(showLockedMetaIcon || BeforeDocumentMeta) && (\n <div className={`${baseClass}__before-meta`}>\n {showLockedMetaIcon && (\n <Locked className={`${baseClass}__locked-controls`} user={user} />\n )}\n {BeforeDocumentMeta}\n </div>\n )}\n <ul className={`${baseClass}__meta`}>\n {collectionConfig && !isEditing && !isAccountView && (\n <li className={`${baseClass}__list-item`}>\n <p className={`${baseClass}__creating-new`}>\n {i18n.t('general:creatingNewLabel', {\n label: getTranslation(\n collectionConfig?.labels?.singular ?? i18n.t('general:document'),\n i18n,\n ),\n })}\n </p>\n </li>\n )}\n {(collectionHasDraftsEnabled || globalHasDraftsEnabled) && (\n <Fragment>\n {(globalConfig || (collectionConfig && isEditing)) && (\n <li className={`${baseClass}__status ${baseClass}__list-item`}>\n <RenderCustomComponent CustomComponent={CustomStatus} Fallback={<Status />} />\n </li>\n )}\n {hasSavePermission &&\n autosaveEnabled &&\n !unsavedDraftWithValidations &&\n !isTrashed && (\n <li className={`${baseClass}__list-item`}>\n <Autosave\n collection={collectionConfig}\n global={globalConfig}\n id={id}\n publishedDocUpdatedAt={data?.createdAt}\n />\n </li>\n )}\n </Fragment>\n )}\n {collectionConfig?.timestamps &&\n (isEditing || isAccountView) &&\n (data?.updatedAt || data?.createdAt) && (\n <li\n className={`${baseClass}__list-item ${baseClass}__value-wrap`}\n title={updatedAt || createdAt || undefined}\n >\n <p className={`${baseClass}__value`}>\n {relativeTime\n ? t(isTrashed ? 'general:deletedAgo' : 'general:updatedAgo', {\n distance: relativeTime,\n })\n : `${t('general:loading')}...`}\n </p>\n </li>\n )}\n </ul>\n </div>\n )}\n <div className={`${baseClass}__controls-wrapper`}>\n <div className={`${baseClass}__controls`}>\n {BeforeDocumentControls}\n <div className={`${baseClass}__icon-buttons`}>\n {isLivePreviewEnabled && !isInDrawer && <LivePreviewToggler />}\n {(collectionConfig?.admin.preview || globalConfig?.admin.preview) && (\n <RenderCustomComponent\n CustomComponent={CustomPreviewButton}\n Fallback={<PreviewButton />}\n />\n )}\n {hasScheduledPublishEnabled(collectionConfig || globalConfig) && !isTrashed && (\n <SchedulePublishButton disabled={readOnlyForIncomingUser} />\n )}\n </div>\n {hasSavePermission && !isTrashed && !readOnlyForIncomingUser && (\n <Fragment>\n {collectionHasDraftsEnabled || globalHasDraftsEnabled ? (\n <Fragment>\n {(unsavedDraftWithValidations ||\n !autosaveEnabled ||\n (autosaveEnabled && showSaveDraftButton)) && (\n <RenderCustomComponent\n CustomComponent={CustomSaveDraftButton}\n Fallback={<SaveDraftButton />}\n />\n )}\n <RenderCustomComponent\n CustomComponent={CustomPublishButton}\n Fallback={<PublishButton />}\n />\n </Fragment>\n ) : (\n <RenderCustomComponent\n CustomComponent={CustomSaveButton}\n Fallback={<SaveButton />}\n />\n )}\n </Fragment>\n )}\n {docHasDeletePermission && isTrashed && (\n <PermanentlyDeleteButton\n buttonId=\"action-permanently-delete\"\n collectionSlug={collectionConfig?.slug}\n id={id.toString()}\n onDelete={onDelete}\n redirectAfterDelete={redirectAfterDelete}\n singularLabel={collectionConfig?.labels?.singular}\n />\n )}\n {hasSavePermission && isTrashed && (\n <RestoreButton\n buttonId=\"action-restore\"\n collectionSlug={collectionConfig?.slug}\n id={id.toString()}\n onRestore={onRestore}\n redirectAfterRestore={redirectAfterRestore}\n singularLabel={collectionConfig?.labels?.singular}\n />\n )}\n {user && readOnlyForIncomingUser && (\n <Button\n buttonStyle=\"secondary\"\n id=\"take-over\"\n onClick={onTakeOver}\n size=\"medium\"\n type=\"button\"\n >\n {t('general:takeOver')}\n </Button>\n )}\n </div>\n {showDotMenu && !readOnlyForIncomingUser && (\n <Popup\n buttonClassName={`${baseClass}__popup-button`}\n caret={false}\n className={`${baseClass}__popup`}\n disabled={initializing || processing}\n horizontalAlign=\"right\"\n popupType=\"menu\"\n renderButton={({ active, ...buttonProps }) => (\n <Button\n {...buttonProps}\n aria-label={t('general:moreOptions')}\n buttonStyle=\"ghost\"\n className={`${baseClass}__popup-button`}\n icon={<MoreIcon />}\n selected={active}\n size=\"medium\"\n />\n )}\n verticalAlign=\"bottom\"\n >\n <PopupList.ButtonGroup>\n {showCopyToLocale && <CopyLocaleData />}\n {hasCreatePermission && (\n <React.Fragment>\n {!disableCreate && (\n <Fragment>\n {editDepth > 1 ? (\n <PopupList.Button id=\"action-create\" onClick={onDrawerCreateNew}>\n {i18n.t('general:createNew')}\n </PopupList.Button>\n ) : (\n <PopupList.Button\n href={formatAdminURL({\n adminRoute,\n path: `/collections/${collectionConfig?.slug}/create`,\n })}\n id=\"action-create\"\n >\n {i18n.t('general:createNew')}\n </PopupList.Button>\n )}\n </Fragment>\n )}\n {collectionConfig.disableDuplicate !== true && isEditing && (\n <>\n <DuplicateDocument\n id={id}\n onDuplicate={onDuplicate}\n redirectAfterDuplicate={redirectAfterDuplicate}\n singularLabel={collectionConfig?.labels?.singular}\n slug={collectionConfig?.slug}\n />\n {localization && (\n <DuplicateDocument\n id={id}\n onDuplicate={onDuplicate}\n redirectAfterDuplicate={redirectAfterDuplicate}\n selectLocales={true}\n singularLabel={collectionConfig?.labels?.singular}\n slug={collectionConfig?.slug}\n />\n )}\n </>\n )}\n </React.Fragment>\n )}\n {hasDeletePermission && id && (\n <DeleteDocument\n buttonId=\"action-delete\"\n collectionSlug={collectionConfig?.slug}\n id={id.toString()}\n onDelete={onDelete}\n redirectAfterDelete={redirectAfterDelete}\n singularLabel={collectionConfig?.labels?.singular}\n useAsTitle={collectionConfig?.admin?.useAsTitle}\n />\n )}\n <RenderCustomComponent\n CustomComponent={CustomUnpublishButton}\n Fallback={<UnpublishButton />}\n />\n {EditMenuItems}\n </PopupList.ButtonGroup>\n </Popup>\n )}\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
.document-fields--has-sidebar:has(
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
.document-fields__sidebar-wrap .document-fields__sidebar-fields > .render-fields:empty
|
|
16
|
+
) {
|
|
17
17
|
--main-width: 100%;
|
|
18
18
|
--main-border: none;
|
|
19
19
|
--main-field-margin: initial;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["VersionsPill","documentViewKeys","getTabs","collectionConfig","globalConfig","customViews","admin","components","views","edit","tab","href","label","t","order","viewPath","condition","permissions","Boolean","versions","collections","slug","readVersions","globals","Pill_Component","concat","Object","entries","reduce","acc","key","value","includes","push","path","sort","a","b","undefined"],"sources":["../../../../../src/elements/DocumentHeader/Tabs/tabs/index.tsx"],"sourcesContent":["import type { DocumentTabConfig, SanitizedCollectionConfig, SanitizedGlobalConfig } from 'payload'\n\n// eslint-disable-next-line payload/no-imports-from-exports-dir -- Server component must reference exports dir for proper client boundary\nimport { VersionsPill } from '../../../../exports/client/index.js'\n\nexport const documentViewKeys = ['api', 'default', 'livePreview', 'versions']\n\nexport type DocumentViewKey = (typeof documentViewKeys)[number]\n\nexport const getTabs = ({\n collectionConfig,\n globalConfig,\n}: {\n collectionConfig?: SanitizedCollectionConfig\n globalConfig?: SanitizedGlobalConfig\n}): { tab: DocumentTabConfig; viewPath: string }[] => {\n const customViews =\n collectionConfig?.admin?.components?.views?.edit ||\n globalConfig?.admin?.components?.views?.edit ||\n {}\n\n return [\n {\n tab: {\n href: '',\n label: ({ t }) => t('general:edit'),\n order: 100,\n ...(customViews?.['default']?.tab || {}),\n },\n viewPath: '/',\n },\n {\n tab: {\n condition: ({ collectionConfig, globalConfig, permissions }) =>\n Boolean(\n (collectionConfig?.versions &&\n permissions?.collections?.[collectionConfig?.slug]?.readVersions) ||\n
|
|
1
|
+
{"version":3,"file":"index.js","names":["VersionsPill","documentViewKeys","getTabs","collectionConfig","globalConfig","customViews","admin","components","views","edit","tab","href","label","t","order","viewPath","condition","permissions","Boolean","versions","collections","slug","readVersions","globals","Pill_Component","concat","Object","entries","reduce","acc","key","value","includes","push","path","sort","a","b","undefined"],"sources":["../../../../../src/elements/DocumentHeader/Tabs/tabs/index.tsx"],"sourcesContent":["import type { DocumentTabConfig, SanitizedCollectionConfig, SanitizedGlobalConfig } from 'payload'\n\n// eslint-disable-next-line payload/no-imports-from-exports-dir -- Server component must reference exports dir for proper client boundary\nimport { VersionsPill } from '../../../../exports/client/index.js'\n\nexport const documentViewKeys = ['api', 'default', 'livePreview', 'versions']\n\nexport type DocumentViewKey = (typeof documentViewKeys)[number]\n\nexport const getTabs = ({\n collectionConfig,\n globalConfig,\n}: {\n collectionConfig?: SanitizedCollectionConfig\n globalConfig?: SanitizedGlobalConfig\n}): { tab: DocumentTabConfig; viewPath: string }[] => {\n const customViews =\n collectionConfig?.admin?.components?.views?.edit ||\n globalConfig?.admin?.components?.views?.edit ||\n {}\n\n return [\n {\n tab: {\n href: '',\n label: ({ t }) => t('general:edit'),\n order: 100,\n ...(customViews?.['default']?.tab || {}),\n },\n viewPath: '/',\n },\n {\n tab: {\n condition: ({ collectionConfig, globalConfig, permissions }) =>\n Boolean(\n (collectionConfig?.versions &&\n permissions?.collections?.[collectionConfig?.slug]?.readVersions) ||\n (globalConfig?.versions && permissions?.globals?.[globalConfig?.slug]?.readVersions),\n ),\n href: '/versions',\n label: ({ t }) => t('version:versions'),\n order: 300,\n Pill_Component: VersionsPill,\n ...(customViews?.['versions']?.tab || {}),\n },\n viewPath: '/versions',\n },\n {\n tab: {\n href: '/api',\n label: 'API',\n order: 400,\n ...(customViews?.['api']?.tab || {}),\n },\n viewPath: '/api',\n },\n ]\n .concat(\n Object.entries(customViews).reduce((acc, [key, value]) => {\n if (documentViewKeys.includes(key)) {\n return acc\n }\n\n if (value?.tab) {\n acc.push({\n tab: value.tab,\n viewPath: 'path' in value ? value.path : '',\n })\n }\n\n return acc\n }, []),\n )\n ?.sort(({ tab: a }, { tab: b }) => {\n if (a.order === undefined && b.order === undefined) {\n return 0\n } else if (a.order === undefined) {\n return 1\n } else if (b.order === undefined) {\n return -1\n }\n\n return a.order - b.order\n })\n}\n"],"mappings":"AAEA;AACA,SAASA,YAAY,QAAQ;AAE7B,OAAO,MAAMC,gBAAA,GAAmB,CAAC,OAAO,WAAW,eAAe,WAAW;AAI7E,OAAO,MAAMC,OAAA,GAAUA,CAAC;EACtBC,gBAAgB;EAChBC;AAAY,CAIb;EACC,MAAMC,WAAA,GACJF,gBAAA,EAAkBG,KAAA,EAAOC,UAAA,EAAYC,KAAA,EAAOC,IAAA,IAC5CL,YAAA,EAAcE,KAAA,EAAOC,UAAA,EAAYC,KAAA,EAAOC,IAAA,IACxC,CAAC;EAEH,OAAO,CACL;IACEC,GAAA,EAAK;MACHC,IAAA,EAAM;MACNC,KAAA,EAAOA,CAAC;QAAEC;MAAC,CAAE,KAAKA,CAAA,CAAE;MACpBC,KAAA,EAAO;MACP,IAAIT,WAAA,GAAc,UAAU,EAAEK,GAAA,IAAO,CAAC,CAAC;IACzC;IACAK,QAAA,EAAU;EACZ,GACA;IACEL,GAAA,EAAK;MACHM,SAAA,EAAWA,CAAC;QAAEb,gBAAgB;QAAEC,YAAY;QAAEa;MAAW,CAAE,KACzDC,OAAA,CACEf,gBAAC,EAAkBgB,QAAA,IACjBF,WAAA,EAAaG,WAAA,GAAcjB,gBAAA,EAAkBkB,IAAA,CAAK,EAAEC,YAAA,IACrDlB,YAAA,EAAce,QAAA,IAAYF,WAAA,EAAaM,OAAA,GAAUnB,YAAA,EAAciB,IAAA,CAAK,EAAEC,YAAA;MAE3EX,IAAA,EAAM;MACNC,KAAA,EAAOA,CAAC;QAAEC;MAAC,CAAE,KAAKA,CAAA,CAAE;MACpBC,KAAA,EAAO;MACPU,cAAA,EAAgBxB,YAAA;MAChB,IAAIK,WAAA,GAAc,WAAW,EAAEK,GAAA,IAAO,CAAC,CAAC;IAC1C;IACAK,QAAA,EAAU;EACZ,GACA;IACEL,GAAA,EAAK;MACHC,IAAA,EAAM;MACNC,KAAA,EAAO;MACPE,KAAA,EAAO;MACP,IAAIT,WAAA,GAAc,MAAM,EAAEK,GAAA,IAAO,CAAC,CAAC;IACrC;IACAK,QAAA,EAAU;EACZ,EACD,CACEU,MAAM,CACLC,MAAA,CAAOC,OAAO,CAACtB,WAAA,EAAauB,MAAM,CAAC,CAACC,GAAA,EAAK,CAACC,GAAA,EAAKC,KAAA,CAAM;IACnD,IAAI9B,gBAAA,CAAiB+B,QAAQ,CAACF,GAAA,GAAM;MAClC,OAAOD,GAAA;IACT;IAEA,IAAIE,KAAA,EAAOrB,GAAA,EAAK;MACdmB,GAAA,CAAII,IAAI,CAAC;QACPvB,GAAA,EAAKqB,KAAA,CAAMrB,GAAG;QACdK,QAAA,EAAU,UAAUgB,KAAA,GAAQA,KAAA,CAAMG,IAAI,GAAG;MAC3C;IACF;IAEA,OAAOL,GAAA;EACT,GAAG,EAAE,IAELM,IAAA,CAAK,CAAC;IAAEzB,GAAA,EAAK0B;EAAC,CAAE,EAAE;IAAE1B,GAAA,EAAK2B;EAAC,CAAE;IAC5B,IAAID,CAAA,CAAEtB,KAAK,KAAKwB,SAAA,IAAaD,CAAA,CAAEvB,KAAK,KAAKwB,SAAA,EAAW;MAClD,OAAO;IACT,OAAO,IAAIF,CAAA,CAAEtB,KAAK,KAAKwB,SAAA,EAAW;MAChC,OAAO;IACT,OAAO,IAAID,CAAA,CAAEvB,KAAK,KAAKwB,SAAA,EAAW;MAChC,OAAO,CAAC;IACV;IAEA,OAAOF,CAAA,CAAEtB,KAAK,GAAGuB,CAAA,CAAEvB,KAAK;EAC1B;AACJ","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reduceFieldOptions.js","names":["getTranslation","fieldAffectsData","fieldHasSubFields","fieldIsHiddenOrDisabled","getFieldPermissions","isFieldDisabled","toWords","createNestedClientFieldPath","combineFieldLabel","getPlainTextFieldLabel","field","i18n","label","name","ignoreFromBulkEdit","Boolean","type","unique","readOnly","reduceFieldOptions","fields","formState","labelPrefix","parentPath","path","permissions","plainTextLabelPrefix","CustomLabel","customComponents","Label","reduce","fieldsToUse","operation","hasOperationPermission","fieldPermissions","read","hasReadPermission","parentName","includes","split","length","fieldHasLabel","fieldPlainTextLabel","prefix","filter","join","tabs","tabFields","tab","isNamedTab","namedTabPermissions","undefined","tabPermissions","formattedField","plainTextLabel","value"],"sources":["../../../src/elements/FieldSelect/reduceFieldOptions.ts"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type { ClientField, FormState, SanitizedFieldPermissions } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n fieldAffectsData,\n fieldHasSubFields,\n fieldIsHiddenOrDisabled,\n getFieldPermissions,\n isFieldDisabled,\n toWords,\n} from 'payload/shared'\n\nimport { createNestedClientFieldPath } from '../../forms/Form/createNestedClientFieldPath.js'\nimport { combineFieldLabel } from '../../utilities/combineFieldLabel.js'\n\nexport type SelectedField = {\n field: ClientField\n fieldPermissions: SanitizedFieldPermissions\n path: string\n}\n\nexport type FieldOption = {\n label: React.ReactNode\n plainTextLabel: string\n value: SelectedField\n}\n\nconst getPlainTextFieldLabel = (field: ClientField, i18n?: I18nClient): string => {\n if ('label' in field && field.label) {\n if (typeof field.label === 'string') {\n return field.label\n }\n\n if (i18n) {\n return getTranslation(field.label, i18n)\n }\n }\n\n return 'name' in field && field.name ? toWords(field.name) : ''\n}\n\nexport const ignoreFromBulkEdit = (field: ClientField): boolean =>\n Boolean(\n (fieldAffectsData(field) || field.type === 'ui') &&\n
|
|
1
|
+
{"version":3,"file":"reduceFieldOptions.js","names":["getTranslation","fieldAffectsData","fieldHasSubFields","fieldIsHiddenOrDisabled","getFieldPermissions","isFieldDisabled","toWords","createNestedClientFieldPath","combineFieldLabel","getPlainTextFieldLabel","field","i18n","label","name","ignoreFromBulkEdit","Boolean","type","unique","readOnly","reduceFieldOptions","fields","formState","labelPrefix","parentPath","path","permissions","plainTextLabelPrefix","CustomLabel","customComponents","Label","reduce","fieldsToUse","operation","hasOperationPermission","fieldPermissions","read","hasReadPermission","parentName","includes","split","length","fieldHasLabel","fieldPlainTextLabel","prefix","filter","join","tabs","tabFields","tab","isNamedTab","namedTabPermissions","undefined","tabPermissions","formattedField","plainTextLabel","value"],"sources":["../../../src/elements/FieldSelect/reduceFieldOptions.ts"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type { ClientField, FormState, SanitizedFieldPermissions } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n fieldAffectsData,\n fieldHasSubFields,\n fieldIsHiddenOrDisabled,\n getFieldPermissions,\n isFieldDisabled,\n toWords,\n} from 'payload/shared'\n\nimport { createNestedClientFieldPath } from '../../forms/Form/createNestedClientFieldPath.js'\nimport { combineFieldLabel } from '../../utilities/combineFieldLabel.js'\n\nexport type SelectedField = {\n field: ClientField\n fieldPermissions: SanitizedFieldPermissions\n path: string\n}\n\nexport type FieldOption = {\n label: React.ReactNode\n plainTextLabel: string\n value: SelectedField\n}\n\nconst getPlainTextFieldLabel = (field: ClientField, i18n?: I18nClient): string => {\n if ('label' in field && field.label) {\n if (typeof field.label === 'string') {\n return field.label\n }\n\n if (i18n) {\n return getTranslation(field.label, i18n)\n }\n }\n\n return 'name' in field && field.name ? toWords(field.name) : ''\n}\n\nexport const ignoreFromBulkEdit = (field: ClientField): boolean =>\n Boolean(\n (fieldAffectsData(field) || field.type === 'ui') &&\n (isFieldDisabled(field, 'bulkEdit') ||\n field.unique ||\n fieldIsHiddenOrDisabled(field) ||\n ('readOnly' in field && field.readOnly)),\n )\n\nexport const reduceFieldOptions = ({\n fields,\n formState,\n i18n,\n labelPrefix = null,\n parentPath = '',\n path = '',\n permissions,\n plainTextLabelPrefix = '',\n}: {\n readonly fields: ClientField[]\n readonly formState?: FormState\n readonly i18n?: I18nClient\n readonly labelPrefix?: React.ReactNode\n readonly parentPath?: string\n readonly path?: string\n readonly permissions:\n | {\n [fieldName: string]: SanitizedFieldPermissions\n }\n | SanitizedFieldPermissions\n readonly plainTextLabelPrefix?: string\n}): FieldOption[] => {\n if (!fields) {\n return []\n }\n\n const CustomLabel = formState?.[path]?.customComponents?.Label\n\n return fields?.reduce((fieldsToUse, field) => {\n const {\n operation: hasOperationPermission,\n permissions: fieldPermissions,\n read: hasReadPermission,\n } = getFieldPermissions({\n field,\n operation: 'update',\n parentName: parentPath?.includes('.')\n ? parentPath.split('.')[parentPath.split('.').length - 1]\n : parentPath,\n permissions,\n })\n\n // escape for a variety of reasons, include ui fields as they have `name`.\n if (\n (fieldAffectsData(field) || field.type === 'ui') &&\n (isFieldDisabled(field, 'bulkEdit') ||\n field.unique ||\n fieldIsHiddenOrDisabled(field) ||\n ('readOnly' in field && field.readOnly) ||\n !hasOperationPermission ||\n !hasReadPermission)\n ) {\n return fieldsToUse\n }\n\n if (!(field.type === 'array' || field.type === 'blocks') && fieldHasSubFields(field)) {\n const fieldHasLabel = 'label' in field && field.label\n const fieldPlainTextLabel = getPlainTextFieldLabel(field, i18n)\n return [\n ...fieldsToUse,\n ...reduceFieldOptions({\n fields: field.fields,\n i18n,\n labelPrefix: fieldHasLabel\n ? combineFieldLabel({ CustomLabel, field, prefix: labelPrefix })\n : labelPrefix,\n parentPath: path,\n path: createNestedClientFieldPath(path, field),\n permissions: fieldPermissions,\n plainTextLabelPrefix: fieldHasLabel\n ? [plainTextLabelPrefix, fieldPlainTextLabel].filter(Boolean).join(' > ')\n : plainTextLabelPrefix,\n }),\n ]\n }\n\n if (field.type === 'tabs' && 'tabs' in field) {\n return [\n ...fieldsToUse,\n ...field.tabs.reduce((tabFields, tab) => {\n if ('fields' in tab) {\n const isNamedTab = 'name' in tab && tab.name\n\n const namedTabPermissions =\n isNamedTab && fieldPermissions && fieldPermissions !== true\n ? fieldPermissions[tab.name]\n : undefined\n\n const tabPermissions = isNamedTab\n ? namedTabPermissions === true\n ? true\n : (namedTabPermissions?.fields ?? fieldPermissions)\n : fieldPermissions\n\n return [\n ...tabFields,\n ...reduceFieldOptions({\n fields: tab.fields,\n i18n,\n labelPrefix,\n parentPath: path,\n path: isNamedTab ? createNestedClientFieldPath(path, tab as ClientField) : path,\n permissions: tabPermissions,\n plainTextLabelPrefix,\n }),\n ]\n }\n }, []),\n ]\n }\n\n const formattedField: FieldOption = {\n label: combineFieldLabel({ CustomLabel, field, prefix: labelPrefix }),\n plainTextLabel: [plainTextLabelPrefix, getPlainTextFieldLabel(field, i18n)]\n .filter(Boolean)\n .join(' > '),\n value: {\n field,\n fieldPermissions: fieldPermissions as SanitizedFieldPermissions,\n path: createNestedClientFieldPath(path, field),\n },\n }\n\n return [...fieldsToUse, formattedField]\n }, [])\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../src/elements/ListDrawer/Provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAI9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAA;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAErD,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IACrC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAA;IACjE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,cAAc,EAAE,CAAA;IAC9C,QAAQ,CAAC,YAAY,CAAC,EAAE,CACtB,QAAQ,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,UAAU,CAAC,EACrD,cAAc,CAAC,EAAE,cAAc,KAC5B,IAAI,CAAA;IACT,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAA;IACnD,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;
|
|
1
|
+
{"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../src/elements/ListDrawer/Provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAI9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAA;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAErD,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IACrC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAA;IACjE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,cAAc,EAAE,CAAA;IAC9C,QAAQ,CAAC,YAAY,CAAC,EAAE,CACtB,QAAQ,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,UAAU,CAAC,EACrD,cAAc,CAAC,EAAE,cAAc,KAC5B,IAAI,CAAA;IACT,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAA;IACnD,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,cAAc,EAAE,cAAc,CAAC;QAAC,GAAG,EAAE,IAAI,CAAA;KAAE,KAAK,IAAI,CAAA;IACjF,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,CAAA;IAChD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,KAAK,IAAI,CAAA;CACtE,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;IAC5B;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,cAAc,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACrE,GAAG,sBAAsB,CAAA;AAE1B,eAAO,MAAM,iBAAiB,gDAA6C,CAAA;AAE3E,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC,EAAE,CAC9C;IACE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,OAAO,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAA;CAC1C,GAAG,sBAAsB,CAO3B,CAAA;AAED,eAAO,MAAM,oBAAoB,QAAO,qBAQvC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Provider.js","names":["createContext","use","ListDrawerContext","ListDrawerContextProvider","children","rest","_jsx","value","isInDrawer","Boolean","drawerSlug","useListDrawerContext","context","Error"],"sources":["../../../src/elements/ListDrawer/Provider.tsx"],"sourcesContent":["import type { CollectionSlug, Data, ListQuery } from 'payload'\n\nimport { createContext, use } from 'react'\n\nimport type { useSelection } from '../../providers/Selection/index.js'\nimport type { UseDocumentDrawer } from '../DocumentDrawer/types.js'\nimport type { Option } from '../ReactSelect/index.js'\n\nexport type ListDrawerContextProps = {\n readonly allowCreate?: boolean\n readonly createNewDrawerSlug?: string\n readonly DocumentDrawerToggler?: ReturnType<UseDocumentDrawer>[1]\n readonly drawerSlug?: string\n readonly enabledCollections?: CollectionSlug[]\n readonly onBulkSelect?: (\n selected: ReturnType<typeof useSelection>['selected'],\n collectionSlug?: CollectionSlug,\n ) => void\n readonly onQueryChange?: (query: ListQuery) => void\n readonly onSelect?: (args: {
|
|
1
|
+
{"version":3,"file":"Provider.js","names":["createContext","use","ListDrawerContext","ListDrawerContextProvider","children","rest","_jsx","value","isInDrawer","Boolean","drawerSlug","useListDrawerContext","context","Error"],"sources":["../../../src/elements/ListDrawer/Provider.tsx"],"sourcesContent":["import type { CollectionSlug, Data, ListQuery } from 'payload'\n\nimport { createContext, use } from 'react'\n\nimport type { useSelection } from '../../providers/Selection/index.js'\nimport type { UseDocumentDrawer } from '../DocumentDrawer/types.js'\nimport type { Option } from '../ReactSelect/index.js'\n\nexport type ListDrawerContextProps = {\n readonly allowCreate?: boolean\n readonly createNewDrawerSlug?: string\n readonly DocumentDrawerToggler?: ReturnType<UseDocumentDrawer>[1]\n readonly drawerSlug?: string\n readonly enabledCollections?: CollectionSlug[]\n readonly onBulkSelect?: (\n selected: ReturnType<typeof useSelection>['selected'],\n collectionSlug?: CollectionSlug,\n ) => void\n readonly onQueryChange?: (query: ListQuery) => void\n readonly onSelect?: (args: { collectionSlug: CollectionSlug; doc: Data }) => void\n readonly selectedOption?: Option<CollectionSlug>\n readonly setSelectedOption?: (option: Option<CollectionSlug>) => void\n}\n\nexport type ListDrawerContextType = {\n readonly isInDrawer: boolean\n /**\n * When called, will either refresh the list view with its currently selected collection.\n * If an collection slug is provided, will use that instead of the currently selected one.\n */\n readonly refresh: (collectionSlug?: CollectionSlug) => Promise<void>\n} & ListDrawerContextProps\n\nexport const ListDrawerContext = createContext({} as ListDrawerContextType)\n\nexport const ListDrawerContextProvider: React.FC<\n {\n children: React.ReactNode\n refresh: ListDrawerContextType['refresh']\n } & ListDrawerContextProps\n> = ({ children, ...rest }) => {\n return (\n <ListDrawerContext value={{ isInDrawer: Boolean(rest.drawerSlug), ...rest }}>\n {children}\n </ListDrawerContext>\n )\n}\n\nexport const useListDrawerContext = (): ListDrawerContextType => {\n const context = use(ListDrawerContext)\n\n if (!context) {\n throw new Error('useListDrawerContext must be used within a ListDrawerContextProvider')\n }\n\n return context\n}\n"],"mappings":";AAEA,SAASA,aAAa,EAAEC,GAAG,QAAQ;AA+BnC,OAAO,MAAMC,iBAAA,gBAAoBF,aAAA,CAAc,CAAC;AAEhD,OAAO,MAAMG,yBAAA,GAKTA,CAAC;EAAEC,QAAQ;EAAE,GAAGC;AAAA,CAAM;EACxB,oBACEC,IAAA,CAACJ,iBAAA;IAAkBK,KAAA,EAAO;MAAEC,UAAA,EAAYC,OAAA,CAAQJ,IAAA,CAAKK,UAAU;MAAG,GAAGL;IAAK;cACvED;;AAGP;AAEA,OAAO,MAAMO,oBAAA,GAAuBA,CAAA;EAClC,MAAMC,OAAA,GAAUX,GAAA,CAAIC,iBAAA;EAEpB,IAAI,CAACU,OAAA,EAAS;IACZ,MAAM,IAAIC,KAAA,CAAM;EAClB;EAEA,OAAOD,OAAA;AACT","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
@layer payload-default {
|
|
2
2
|
.collection-edit:has(.live-preview-window--is-expanded) {
|
|
3
3
|
.document-fields {
|
|
4
|
-
|
|
4
|
+
display: none;
|
|
5
5
|
}
|
|
6
6
|
}
|
|
7
7
|
|
|
@@ -50,6 +50,12 @@
|
|
|
50
50
|
|
|
51
51
|
/* stylelint-disable-next-line plugin/no-max-width-media-query -- TODO: pre-existing; migrate to a mobile-first min-width query */
|
|
52
52
|
@media (max-width: 1024px) {
|
|
53
|
+
.collection-edit:has(.live-preview-window--is-live-previewing) {
|
|
54
|
+
.document-fields {
|
|
55
|
+
display: none;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
53
59
|
.live-preview-window {
|
|
54
60
|
width: 100%;
|
|
55
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.client.js","names":["PREFERENCE_KEYS","React","useCallback","useRef","useState","usePreferences","useServerFunctions","SidebarTabsProvider","DelayedSpinner","Tooltip","TabError","SidebarTabsClient","baseClass","initialActiveTabID","initialTabContents","loadingDelay","tabs","setPreference","serverFunction","activeTabID","setActiveTabID","tabContent","setTabContent","loadingTab","setLoadingTab","hoveredTab","setHoveredTab","loadingTabsRef","Set","tabContentRef","useEffect","current","prev","loadTabContent","tabSlug","revalidate","serverArgs","hasCachedContent","Boolean","has","add","result","name","args","newContent","component","error","errorMessage","Error","message","handleRetry","clearedContent","_jsx","onRetry","delete","reloadTabContent","handleTabChange","slug","NAV_SIDEBAR_ACTIVE_TAB","activeTab","tab","find","t","lazyLoadable","handleTabKeyDown","e","currentIndex","key","preventDefault","direction","newIndex","length","newTab","setTimeout","document","querySelector","focus","activeContent","_Fragment","activeTabSlug","_jsxs","className","role","map","index","isActive","onClick","onKeyDown","onMouseEnter","onMouseLeave","tabIndex","type","position","show","label","icon","delay","isLoading","content","style","undefined","display"],"sources":["../../../../src/elements/Nav/SidebarTabs/index.client.tsx"],"sourcesContent":["'use client'\n\nimport { PREFERENCE_KEYS } from 'payload/shared'\nimport React, { useCallback, useRef, useState } from 'react'\n\nimport type { RenderTabServerFnArgs, RenderTabServerFnReturnType } from './renderTabServerFn.js'\n\nimport { usePreferences } from '../../../providers/Preferences/index.js'\nimport { useServerFunctions } from '../../../providers/ServerFunctions/index.js'\nimport { SidebarTabsProvider } from '../../../providers/SidebarTabs/index.js'\nimport { DelayedSpinner } from '../../DelayedSpinner/index.js'\nimport { Tooltip } from '../../Tooltip/index.js'\nimport { TabError } from './TabError/index.js'\n\nexport type TabMetadata = {\n icon: React.ReactNode\n isDefaultActive?: boolean\n label: string\n /** Whether this tab can be loaded/revalidated via serverFunction */\n lazyLoadable?: boolean\n slug: string\n}\n\nexport type SidebarTabsClientProps = {\n baseClass: string\n initialActiveTabID: string\n initialTabContents: Record<string, React.ReactNode>\n /**\n * Delay before showing loading spinner (in ms), prevents flashing on fast loads\n * @default 200\n */\n loadingDelay?: number\n tabs: TabMetadata[]\n}\n\nexport const SidebarTabsClient: React.FC<SidebarTabsClientProps> = ({\n baseClass,\n initialActiveTabID,\n initialTabContents,\n loadingDelay = 200,\n tabs,\n}) => {\n const { setPreference } = usePreferences()\n const { serverFunction } = useServerFunctions()\n\n const [activeTabID, setActiveTabID] = useState(initialActiveTabID)\n const [tabContent, setTabContent] = useState<Record<string, React.ReactNode>>(initialTabContents)\n const [loadingTab, setLoadingTab] = useState<null | string>(null)\n const [hoveredTab, setHoveredTab] = useState<null | string>(null)\n const loadingTabsRef = useRef<Set<string>>(new Set())\n const tabContentRef = useRef(initialTabContents)\n\n // Update cached content when server provides new initialTabContents\n // This is needed because useState only uses initialValue on first mount\n React.useEffect(() => {\n tabContentRef.current = { ...tabContentRef.current, ...initialTabContents }\n setTabContent((prev) => ({ ...prev, ...initialTabContents }))\n }, [initialTabContents])\n\n const loadTabContent = useCallback(\n async (\n tabSlug: string,\n {\n revalidate = false,\n serverArgs,\n }: { revalidate?: boolean; serverArgs?: Partial<RenderTabServerFnArgs> } = {},\n ) => {\n const hasCachedContent = Boolean(tabContentRef.current[tabSlug])\n\n // Skip if already loaded (unless revalidating) or currently loading\n if ((hasCachedContent && !revalidate) || loadingTabsRef.current.has(tabSlug)) {\n return\n }\n\n // Mark as loading - only show spinner if no cached content\n loadingTabsRef.current.add(tabSlug)\n if (!hasCachedContent) {\n setLoadingTab(tabSlug)\n }\n\n try {\n const result = (await serverFunction({\n name: 'render-tab',\n args: { ...serverArgs, tabSlug } as RenderTabServerFnArgs,\n })) as RenderTabServerFnReturnType\n\n const newContent = {\n ...tabContentRef.current,\n [tabSlug]: result.component,\n }\n\n tabContentRef.current = newContent\n setTabContent(newContent)\n } catch (error) {\n // On revalidate failure, keep showing cached content\n if (hasCachedContent && revalidate) {\n return\n }\n\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n\n const handleRetry = () => {\n // Clear the error and retry loading, threading the original serverArgs through so the\n // retry doesn't silently fall back to req.query-based rendering (the stale-tree bug).\n const clearedContent = { ...tabContentRef.current }\n delete clearedContent[tabSlug]\n tabContentRef.current = clearedContent\n setTabContent(clearedContent)\n void loadTabContent(tabSlug, { serverArgs })\n }\n\n const newContent = {\n ...tabContentRef.current,\n [tabSlug]: <TabError message={errorMessage} onRetry={handleRetry} />,\n }\n\n tabContentRef.current = newContent\n setTabContent(newContent)\n } finally {\n loadingTabsRef.current.delete(tabSlug)\n setLoadingTab(null)\n }\n },\n [serverFunction],\n )\n\n const reloadTabContent = useCallback(\n (tabSlug: string, serverArgs?: Partial<RenderTabServerFnArgs>) => {\n // Clear cached content to force reload\n const clearedContent = { ...tabContentRef.current }\n delete clearedContent[tabSlug]\n tabContentRef.current = clearedContent\n setTabContent(clearedContent)\n\n void loadTabContent(tabSlug, { serverArgs })\n },\n [loadTabContent],\n )\n\n const handleTabChange = useCallback(\n (slug: string) => {\n setActiveTabID(slug)\n void setPreference(PREFERENCE_KEYS.NAV_SIDEBAR_ACTIVE_TAB, { activeTab: slug })\n // Only revalidate tabs that can be loaded via serverFunction\n // Pre-rendered React elements (like default nav) can't be revalidated\n const tab = tabs.find((t) => t.slug === slug)\n void loadTabContent(slug, { revalidate: tab?.lazyLoadable ?? false })\n },\n [setPreference, loadTabContent, tabs],\n )\n\n const handleTabKeyDown = useCallback(\n (e: React.KeyboardEvent, currentIndex: number) => {\n if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') {\n e.preventDefault()\n const direction = e.key === 'ArrowLeft' ? -1 : 1\n const newIndex = (currentIndex + direction + tabs.length) % tabs.length\n const newTab = tabs[newIndex]\n handleTabChange(newTab.slug)\n // Focus will be handled by the tabIndex change\n setTimeout(() => {\n document.querySelector<HTMLButtonElement>(`.${baseClass}__tab--active`)?.focus()\n }, 0)\n }\n },\n [baseClass, handleTabChange, tabs],\n )\n\n const activeContent = tabContent[activeTabID]\n\n // If there's only one tab (the default nav), render it without tab UI\n if (tabs.length === 1) {\n return <>{activeContent}</>\n }\n\n return (\n <SidebarTabsProvider activeTabSlug={activeTabID} reloadTabContent={reloadTabContent}>\n <div className={baseClass}>\n <div className={`${baseClass}__tabs scrollbar-thin`} role=\"tablist\">\n {tabs.map((tab, index) => {\n const isActive = tab.slug === activeTabID\n\n return (\n <button\n aria-selected={isActive}\n className={`${baseClass}__tab ${isActive ? `${baseClass}__tab--active` : ''}`}\n key={tab.slug}\n onClick={() => handleTabChange(tab.slug)}\n onKeyDown={(e) => handleTabKeyDown(e, index)}\n onMouseEnter={() => setHoveredTab(tab.slug)}\n onMouseLeave={() => setHoveredTab(null)}\n role=\"tab\"\n tabIndex={isActive ? 0 : -1}\n type=\"button\"\n >\n <Tooltip\n className={`${baseClass}__tooltip`}\n position=\"bottom\"\n show={hoveredTab === tab.slug}\n >\n {tab.label}\n </Tooltip>\n <span className={`${baseClass}__tab-icon`}>{tab.icon}</span>\n <span className={`${baseClass}__tab-label`}>{tab.label}</span>\n </button>\n )\n })}\n </div>\n <div className={`${baseClass}__content`} role=\"tabpanel\">\n <DelayedSpinner\n baseClass={baseClass}\n delay={loadingDelay}\n isLoading={loadingTab === activeTabID}\n />\n {tabs.map((tab) => {\n const content = tabContent[tab.slug]\n if (!content) {\n return null\n }\n const isActive = tab.slug === activeTabID && loadingTab !== activeTabID\n return (\n <div key={tab.slug} style={isActive ? undefined : { display: 'none' }}>\n {content}\n </div>\n )\n })}\n </div>\n </div>\n </SidebarTabsProvider>\n )\n}\n"],"mappings":"AAAA;;;AAEA,SAASA,eAAe,QAAQ;AAChC,OAAOC,KAAA,IAASC,WAAW,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAIrD,SAASC,cAAc,QAAQ;AAC/B,SAASC,kBAAkB,QAAQ;AACnC,SAASC,mBAAmB,QAAQ;AACpC,SAASC,cAAc,QAAQ;AAC/B,SAASC,OAAO,QAAQ;AACxB,SAASC,QAAQ,QAAQ;AAuBzB,OAAO,MAAMC,iBAAA,GAAsDA,CAAC;EAClEC,SAAS;EACTC,kBAAkB;EAClBC,kBAAkB;EAClBC,YAAA,GAAe,GAAG;EAClBC;AAAI,CACL;EACC,MAAM;IAAEC;EAAa,CAAE,GAAGZ,cAAA;EAC1B,MAAM;IAAEa;EAAc,CAAE,GAAGZ,kBAAA;EAE3B,MAAM,CAACa,WAAA,EAAaC,cAAA,CAAe,GAAGhB,QAAA,CAASS,kBAAA;EAC/C,MAAM,CAACQ,UAAA,EAAYC,aAAA,CAAc,GAAGlB,QAAA,CAA0CU,kBAAA;EAC9E,MAAM,CAACS,UAAA,EAAYC,aAAA,CAAc,GAAGpB,QAAA,CAAwB;EAC5D,MAAM,CAACqB,UAAA,EAAYC,aAAA,CAAc,GAAGtB,QAAA,CAAwB;EAC5D,MAAMuB,cAAA,GAAiBxB,MAAA,CAAoB,IAAIyB,GAAA;EAC/C,MAAMC,aAAA,GAAgB1B,MAAA,CAAOW,kBAAA;EAE7B;EACA;EACAb,KAAA,CAAM6B,SAAS,CAAC;IACdD,aAAA,CAAcE,OAAO,GAAG;MAAE,GAAGF,aAAA,CAAcE,OAAO;MAAE,GAAGjB;IAAmB;IAC1EQ,aAAA,CAAeU,IAAA,KAAU;MAAE,GAAGA,IAAI;MAAE,GAAGlB;IAAmB;EAC5D,GAAG,CAACA,kBAAA,CAAmB;EAEvB,MAAMmB,cAAA,GAAiB/B,WAAA,CACrB,OACEgC,OAAA,EACA;IACEC,UAAA,GAAa,KAAK;IAClBC;EAAU,CAC4D,GAAG,CAAC,CAAC;IAE7E,MAAMC,gBAAA,GAAmBC,OAAA,CAAQT,aAAA,CAAcE,OAAO,CAACG,OAAA,CAAQ;IAE/D;IACA,IAAIG,gBAAC,IAAoB,CAACF,UAAA,IAAeR,cAAA,CAAeI,OAAO,CAACQ,GAAG,CAACL,OAAA,GAAU;MAC5E;IACF;IAEA;IACAP,cAAA,CAAeI,OAAO,CAACS,GAAG,CAACN,OAAA;IAC3B,IAAI,CAACG,gBAAA,EAAkB;MACrBb,aAAA,CAAcU,OAAA;IAChB;IAEA,IAAI;MACF,MAAMO,MAAA,GAAU,MAAMvB,cAAA,CAAe;QACnCwB,IAAA,EAAM;QACNC,IAAA,EAAM;UAAE,GAAGP,UAAU;UAAEF;QAAQ;MACjC;MAEA,MAAMU,YAAA,GAAa;QACjB,GAAGf,aAAA,CAAcE,OAAO;QACxB,CAACG,OAAA,GAAUO,MAAA,CAAOI;MACpB;MAEAhB,aAAA,CAAcE,OAAO,GAAGa,YAAA;MACxBtB,aAAA,CAAcsB,YAAA;IAChB,EAAE,OAAOE,KAAA,EAAO;MACd;MACA,IAAIT,gBAAA,IAAoBF,UAAA,EAAY;QAClC;MACF;MAEA,MAAMY,YAAA,GAAeD,KAAA,YAAiBE,KAAA,GAAQF,KAAA,CAAMG,OAAO,GAAG;MAE9D,MAAMC,WAAA,GAAcA,CAAA;QAClB;QACA;QACA,MAAMC,cAAA,GAAiB;UAAE,GAAGtB,aAAA,CAAcE;QAAQ;QAClD,OAAOoB,cAAc,CAACjB,OAAA,CAAQ;QAC9BL,aAAA,CAAcE,OAAO,GAAGoB,cAAA;QACxB7B,aAAA,CAAc6B,cAAA;QACd,KAAKlB,cAAA,CAAeC,OAAA,EAAS;UAAEE;QAAW;MAC5C;MAEA,MAAMQ,UAAA,GAAa;QACjB,GAAGf,aAAA,CAAcE,OAAO;QACxB,CAACG,OAAA,GAAQ,aAAEkB,IAAA,CAAC1C,QAAA;UAASuC,OAAA,EAASF,YAAA;UAAcM,OAAA,EAASH;;MACvD;MAEArB,aAAA,CAAcE,OAAO,GAAGa,UAAA;MACxBtB,aAAA,CAAcsB,UAAA;IAChB,UAAU;MACRjB,cAAA,CAAeI,OAAO,CAACuB,MAAM,CAACpB,OAAA;MAC9BV,aAAA,CAAc;IAChB;EACF,GACA,CAACN,cAAA,CAAe;EAGlB,MAAMqC,gBAAA,GAAmBrD,WAAA,CACvB,CAACgC,SAAA,EAAiBE,YAAA;IAChB;IACA,MAAMe,gBAAA,GAAiB;MAAE,GAAGtB,aAAA,CAAcE;IAAQ;IAClD,OAAOoB,gBAAc,CAACjB,SAAA,CAAQ;IAC9BL,aAAA,CAAcE,OAAO,GAAGoB,gBAAA;IACxB7B,aAAA,CAAc6B,gBAAA;IAEd,KAAKlB,cAAA,CAAeC,SAAA,EAAS;MAAEE,UAAA,EAAAA;IAAW;EAC5C,GACA,CAACH,cAAA,CAAe;EAGlB,MAAMuB,eAAA,GAAkBtD,WAAA,CACrBuD,IAAA;IACCrC,cAAA,CAAeqC,IAAA;IACf,KAAKxC,aAAA,CAAcjB,eAAA,CAAgB0D,sBAAsB,EAAE;MAAEC,SAAA,EAAWF;IAAK;IAC7E;IACA;IACA,MAAMG,GAAA,GAAM5C,IAAA,CAAK6C,IAAI,CAAEC,CAAA,IAAMA,CAAA,CAAEL,IAAI,KAAKA,IAAA;IACxC,KAAKxB,cAAA,CAAewB,IAAA,EAAM;MAAEtB,UAAA,EAAYyB,GAAA,EAAKG,YAAA,IAAgB;IAAM;EACrE,GACA,CAAC9C,aAAA,EAAegB,cAAA,EAAgBjB,IAAA,CAAK;EAGvC,MAAMgD,gBAAA,GAAmB9D,WAAA,CACvB,CAAC+D,CAAA,EAAwBC,YAAA;IACvB,IAAID,CAAA,CAAEE,GAAG,KAAK,eAAeF,CAAA,CAAEE,GAAG,KAAK,cAAc;MACnDF,CAAA,CAAEG,cAAc;MAChB,MAAMC,SAAA,GAAYJ,CAAA,CAAEE,GAAG,KAAK,cAAc,CAAC,IAAI;MAC/C,MAAMG,QAAA,GAAW,CAACJ,YAAA,GAAeG,SAAA,GAAYrD,IAAA,CAAKuD,MAAM,IAAIvD,IAAA,CAAKuD,MAAM;MACvE,MAAMC,MAAA,GAASxD,IAAI,CAACsD,QAAA,CAAS;MAC7Bd,eAAA,CAAgBgB,MAAA,CAAOf,IAAI;MAC3B;MACAgB,UAAA,CAAW;QACTC,QAAA,CAASC,aAAa,CAAoB,IAAI/D,SAAA,eAAwB,GAAGgE,KAAA;MAC3E,GAAG;IACL;EACF,GACA,CAAChE,SAAA,EAAW4C,eAAA,EAAiBxC,IAAA,CAAK;EAGpC,MAAM6D,aAAA,GAAgBxD,UAAU,CAACF,WAAA,CAAY;EAE7C;EACA,IAAIH,IAAA,CAAKuD,MAAM,KAAK,GAAG;IACrB,oBAAOnB,IAAA,CAAA0B,SAAA;gBAAGD;;EACZ;EAEA,oBACEzB,IAAA,CAAC7C,mBAAA;IAAoBwE,aAAA,EAAe5D,WAAA;IAAaoC,gBAAA,EAAkBA,gBAAA;cACjE,aAAAyB,KAAA,CAAC;MAAIC,SAAA,EAAWrE,SAAA;8BACdwC,IAAA,CAAC;QAAI6B,SAAA,EAAW,GAAGrE,SAAA,uBAAgC;QAAEsE,IAAA,EAAK;kBACvDlE,IAAA,CAAKmE,GAAG,CAAC,CAACvB,KAAA,EAAKwB,KAAA;UACd,MAAMC,QAAA,GAAWzB,KAAA,CAAIH,IAAI,KAAKtC,WAAA;UAE9B,oBACE6D,KAAA,CAAC;YACC,iBAAeK,QAAA;YACfJ,SAAA,EAAW,GAAGrE,SAAA,SAAkByE,QAAA,GAAW,GAAGzE,SAAA,eAAwB,GAAG,IAAI;YAE7E0E,OAAA,EAASA,CAAA,KAAM9B,eAAA,CAAgBI,KAAA,CAAIH,IAAI;YACvC8B,SAAA,EAAYtB,GAAA,IAAMD,gBAAA,CAAiBC,GAAA,EAAGmB,KAAA;YACtCI,YAAA,EAAcA,CAAA,KAAM9D,aAAA,CAAckC,KAAA,CAAIH,IAAI;YAC1CgC,YAAA,EAAcA,CAAA,KAAM/D,aAAA,CAAc;YAClCwD,IAAA,EAAK;YACLQ,QAAA,EAAUL,QAAA,GAAW,IAAI,CAAC;YAC1BM,IAAA,EAAK;oCAELvC,IAAA,CAAC3C,OAAA;cACCwE,SAAA,EAAW,GAAGrE,SAAA,WAAoB;cAClCgF,QAAA,EAAS;cACTC,IAAA,EAAMpE,UAAA,KAAemC,KAAA,CAAIH,IAAI;wBAE5BG,KAAA,CAAIkC;6BAEP1C,IAAA,CAAC;cAAK6B,SAAA,EAAW,GAAGrE,SAAA,YAAqB;wBAAGgD,KAAA,CAAImC;6BAChD3C,IAAA,CAAC;cAAK6B,SAAA,EAAW,GAAGrE,SAAA,aAAsB;wBAAGgD,KAAA,CAAIkC;;aAjB5ClC,KAAA,CAAIH,IAAI;QAoBnB;uBAEFuB,KAAA,CAAC;QAAIC,SAAA,EAAW,GAAGrE,SAAA,WAAoB;QAAEsE,IAAA,EAAK;gCAC5C9B,IAAA,CAAC5C,cAAA;UACCI,SAAA,EAAWA,SAAA;UACXoF,KAAA,EAAOjF,YAAA;UACPkF,SAAA,EAAW1E,UAAA,KAAeJ;YAE3BH,IAAA,CAAKmE,GAAG,CAAEvB,KAAA;UACT,MAAMsC,OAAA,GAAU7E,UAAU,CAACuC,KAAA,CAAIH,IAAI,CAAC;UACpC,IAAI,CAACyC,OAAA,EAAS;YACZ,OAAO;UACT;UACA,MAAMb,UAAA,GAAWzB,KAAA,CAAIH,IAAI,KAAKtC,WAAA,IAAeI,UAAA,KAAeJ,WAAA;UAC5D,oBACEiC,IAAA,CAAC;YAAmB+C,KAAA,EAAOd,UAAA,GAAWe,SAAA,GAAY;cAAEC,OAAA,EAAS;YAAO;sBACjEH;aADOtC,KAAA,CAAIH,IAAI;QAItB;;;;AAKV","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.client.js","names":["PREFERENCE_KEYS","React","useCallback","useRef","useState","usePreferences","useServerFunctions","SidebarTabsProvider","DelayedSpinner","Tooltip","TabError","SidebarTabsClient","baseClass","initialActiveTabID","initialTabContents","loadingDelay","tabs","setPreference","serverFunction","activeTabID","setActiveTabID","tabContent","setTabContent","loadingTab","setLoadingTab","hoveredTab","setHoveredTab","loadingTabsRef","Set","tabContentRef","useEffect","current","prev","loadTabContent","tabSlug","revalidate","serverArgs","hasCachedContent","Boolean","has","add","result","name","args","searchParams","newContent","component","error","errorMessage","Error","message","handleRetry","clearedContent","_jsx","onRetry","delete","reloadTabContent","handleTabChange","slug","NAV_SIDEBAR_ACTIVE_TAB","activeTab","tab","find","t","lazyLoadable","handleTabKeyDown","e","currentIndex","key","preventDefault","direction","newIndex","length","newTab","setTimeout","document","querySelector","focus","activeContent","_Fragment","activeTabSlug","_jsxs","className","role","map","index","isActive","onClick","onKeyDown","onMouseEnter","onMouseLeave","tabIndex","type","position","show","label","icon","delay","isLoading","content","style","undefined","display"],"sources":["../../../../src/elements/Nav/SidebarTabs/index.client.tsx"],"sourcesContent":["'use client'\n\nimport { PREFERENCE_KEYS } from 'payload/shared'\nimport React, { useCallback, useRef, useState } from 'react'\n\nimport type { RenderTabServerFnArgs, RenderTabServerFnReturnType } from './renderTabServerFn.js'\n\nimport { usePreferences } from '../../../providers/Preferences/index.js'\nimport { useServerFunctions } from '../../../providers/ServerFunctions/index.js'\nimport { SidebarTabsProvider } from '../../../providers/SidebarTabs/index.js'\nimport { DelayedSpinner } from '../../DelayedSpinner/index.js'\nimport { Tooltip } from '../../Tooltip/index.js'\nimport { TabError } from './TabError/index.js'\n\nexport type TabMetadata = {\n icon: React.ReactNode\n isDefaultActive?: boolean\n label: string\n /** Whether this tab can be loaded/revalidated via serverFunction */\n lazyLoadable?: boolean\n slug: string\n}\n\nexport type SidebarTabsClientProps = {\n baseClass: string\n initialActiveTabID: string\n initialTabContents: Record<string, React.ReactNode>\n /**\n * Delay before showing loading spinner (in ms), prevents flashing on fast loads\n * @default 200\n */\n loadingDelay?: number\n tabs: TabMetadata[]\n}\n\nexport const SidebarTabsClient: React.FC<SidebarTabsClientProps> = ({\n baseClass,\n initialActiveTabID,\n initialTabContents,\n loadingDelay = 200,\n tabs,\n}) => {\n const { setPreference } = usePreferences()\n const { serverFunction } = useServerFunctions()\n\n const [activeTabID, setActiveTabID] = useState(initialActiveTabID)\n const [tabContent, setTabContent] = useState<Record<string, React.ReactNode>>(initialTabContents)\n const [loadingTab, setLoadingTab] = useState<null | string>(null)\n const [hoveredTab, setHoveredTab] = useState<null | string>(null)\n const loadingTabsRef = useRef<Set<string>>(new Set())\n const tabContentRef = useRef(initialTabContents)\n\n // Update cached content when server provides new initialTabContents\n // This is needed because useState only uses initialValue on first mount\n React.useEffect(() => {\n tabContentRef.current = { ...tabContentRef.current, ...initialTabContents }\n setTabContent((prev) => ({ ...prev, ...initialTabContents }))\n }, [initialTabContents])\n\n const loadTabContent = useCallback(\n async (\n tabSlug: string,\n {\n revalidate = false,\n serverArgs,\n }: { revalidate?: boolean; serverArgs?: Partial<RenderTabServerFnArgs> } = {},\n ) => {\n const hasCachedContent = Boolean(tabContentRef.current[tabSlug])\n\n // Skip if already loaded (unless revalidating) or currently loading\n if ((hasCachedContent && !revalidate) || loadingTabsRef.current.has(tabSlug)) {\n return\n }\n\n // Mark as loading - only show spinner if no cached content\n loadingTabsRef.current.add(tabSlug)\n if (!hasCachedContent) {\n setLoadingTab(tabSlug)\n }\n\n try {\n const result = (await serverFunction({\n name: 'render-tab',\n args: { searchParams: serverArgs?.searchParams, tabSlug } satisfies RenderTabServerFnArgs,\n })) as RenderTabServerFnReturnType\n\n const newContent = {\n ...tabContentRef.current,\n [tabSlug]: result.component,\n }\n\n tabContentRef.current = newContent\n setTabContent(newContent)\n } catch (error) {\n // On revalidate failure, keep showing cached content\n if (hasCachedContent && revalidate) {\n return\n }\n\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n\n const handleRetry = () => {\n // Clear the error and retry loading, threading the original serverArgs through so the\n // retry doesn't silently fall back to req.query-based rendering (the stale-tree bug).\n const clearedContent = { ...tabContentRef.current }\n delete clearedContent[tabSlug]\n tabContentRef.current = clearedContent\n setTabContent(clearedContent)\n void loadTabContent(tabSlug, { serverArgs })\n }\n\n const newContent = {\n ...tabContentRef.current,\n [tabSlug]: <TabError message={errorMessage} onRetry={handleRetry} />,\n }\n\n tabContentRef.current = newContent\n setTabContent(newContent)\n } finally {\n loadingTabsRef.current.delete(tabSlug)\n setLoadingTab(null)\n }\n },\n [serverFunction],\n )\n\n const reloadTabContent = useCallback(\n (tabSlug: string, serverArgs?: Partial<RenderTabServerFnArgs>) => {\n // Clear cached content to force reload\n const clearedContent = { ...tabContentRef.current }\n delete clearedContent[tabSlug]\n tabContentRef.current = clearedContent\n setTabContent(clearedContent)\n\n void loadTabContent(tabSlug, { serverArgs })\n },\n [loadTabContent],\n )\n\n const handleTabChange = useCallback(\n (slug: string) => {\n setActiveTabID(slug)\n void setPreference(PREFERENCE_KEYS.NAV_SIDEBAR_ACTIVE_TAB, { activeTab: slug })\n // Only revalidate tabs that can be loaded via serverFunction\n // Pre-rendered React elements (like default nav) can't be revalidated\n const tab = tabs.find((t) => t.slug === slug)\n void loadTabContent(slug, { revalidate: tab?.lazyLoadable ?? false })\n },\n [setPreference, loadTabContent, tabs],\n )\n\n const handleTabKeyDown = useCallback(\n (e: React.KeyboardEvent, currentIndex: number) => {\n if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') {\n e.preventDefault()\n const direction = e.key === 'ArrowLeft' ? -1 : 1\n const newIndex = (currentIndex + direction + tabs.length) % tabs.length\n const newTab = tabs[newIndex]\n handleTabChange(newTab.slug)\n // Focus will be handled by the tabIndex change\n setTimeout(() => {\n document.querySelector<HTMLButtonElement>(`.${baseClass}__tab--active`)?.focus()\n }, 0)\n }\n },\n [baseClass, handleTabChange, tabs],\n )\n\n const activeContent = tabContent[activeTabID]\n\n // If there's only one tab (the default nav), render it without tab UI\n if (tabs.length === 1) {\n return <>{activeContent}</>\n }\n\n return (\n <SidebarTabsProvider activeTabSlug={activeTabID} reloadTabContent={reloadTabContent}>\n <div className={baseClass}>\n <div className={`${baseClass}__tabs scrollbar-thin`} role=\"tablist\">\n {tabs.map((tab, index) => {\n const isActive = tab.slug === activeTabID\n\n return (\n <button\n aria-selected={isActive}\n className={`${baseClass}__tab ${isActive ? `${baseClass}__tab--active` : ''}`}\n key={tab.slug}\n onClick={() => handleTabChange(tab.slug)}\n onKeyDown={(e) => handleTabKeyDown(e, index)}\n onMouseEnter={() => setHoveredTab(tab.slug)}\n onMouseLeave={() => setHoveredTab(null)}\n role=\"tab\"\n tabIndex={isActive ? 0 : -1}\n type=\"button\"\n >\n <Tooltip\n className={`${baseClass}__tooltip`}\n position=\"bottom\"\n show={hoveredTab === tab.slug}\n >\n {tab.label}\n </Tooltip>\n <span className={`${baseClass}__tab-icon`}>{tab.icon}</span>\n <span className={`${baseClass}__tab-label`}>{tab.label}</span>\n </button>\n )\n })}\n </div>\n <div className={`${baseClass}__content`} role=\"tabpanel\">\n <DelayedSpinner\n baseClass={baseClass}\n delay={loadingDelay}\n isLoading={loadingTab === activeTabID}\n />\n {tabs.map((tab) => {\n const content = tabContent[tab.slug]\n if (!content) {\n return null\n }\n const isActive = tab.slug === activeTabID && loadingTab !== activeTabID\n return (\n <div key={tab.slug} style={isActive ? undefined : { display: 'none' }}>\n {content}\n </div>\n )\n })}\n </div>\n </div>\n </SidebarTabsProvider>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|