@payloadcms/ui 3.67.0-internal.8383bda → 3.67.0-internal.87c53da
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/AddNewRelation/index.d.ts.map +1 -1
- package/dist/elements/AddNewRelation/index.js +3 -3
- package/dist/elements/AddNewRelation/index.js.map +1 -1
- package/dist/elements/ArrayAction/index.d.ts +6 -6
- package/dist/elements/ArrayAction/index.d.ts.map +1 -1
- package/dist/elements/ArrayAction/index.js +8 -8
- package/dist/elements/ArrayAction/index.js.map +1 -1
- package/dist/elements/Autosave/index.d.ts.map +1 -1
- package/dist/elements/Autosave/index.js +5 -9
- package/dist/elements/Autosave/index.js.map +1 -1
- package/dist/elements/DocumentControls/index.d.ts.map +1 -1
- package/dist/elements/DocumentControls/index.js +9 -9
- package/dist/elements/DocumentControls/index.js.map +1 -1
- package/dist/elements/PublishButton/index.d.ts.map +1 -1
- package/dist/elements/PublishButton/index.js +5 -6
- package/dist/elements/PublishButton/index.js.map +1 -1
- package/dist/elements/QueryPresets/QueryPresetBar/index.d.ts.map +1 -1
- package/dist/elements/QueryPresets/QueryPresetBar/index.js +6 -1
- package/dist/elements/QueryPresets/QueryPresetBar/index.js.map +1 -1
- package/dist/elements/QueryPresets/cells/GroupByCell/index.d.ts +4 -0
- package/dist/elements/QueryPresets/cells/GroupByCell/index.d.ts.map +1 -0
- package/dist/elements/QueryPresets/cells/GroupByCell/index.js +57 -0
- package/dist/elements/QueryPresets/cells/GroupByCell/index.js.map +1 -0
- package/dist/elements/QueryPresets/fields/GroupByField/index.d.ts +4 -0
- package/dist/elements/QueryPresets/fields/GroupByField/index.d.ts.map +1 -0
- package/dist/elements/QueryPresets/fields/GroupByField/index.js +88 -0
- package/dist/elements/QueryPresets/fields/GroupByField/index.js.map +1 -0
- package/dist/elements/QueryPresets/fields/GroupByField/index.scss +17 -0
- package/dist/elements/SelectMany/index.d.ts.map +1 -1
- package/dist/elements/SelectMany/index.js +7 -6
- package/dist/elements/SelectMany/index.js.map +1 -1
- package/dist/elements/withMergedProps/index.d.ts +1 -1
- package/dist/elements/withMergedProps/index.js +1 -1
- package/dist/elements/withMergedProps/index.js.map +1 -1
- package/dist/exports/client/index.d.ts +4 -0
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +12 -12
- package/dist/exports/client/index.js.map +4 -4
- package/dist/exports/shared/index.js.map +1 -1
- package/dist/fields/Array/ArrayRow.d.ts +18 -7
- package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
- package/dist/fields/Array/ArrayRow.js +65 -133
- package/dist/fields/Array/ArrayRow.js.map +1 -1
- package/dist/fields/Array/index.d.ts.map +1 -1
- package/dist/fields/Array/index.js +10 -3
- package/dist/fields/Array/index.js.map +1 -1
- package/dist/forms/Form/index.d.ts.map +1 -1
- package/dist/forms/Form/index.js +2 -2
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/views/Edit/index.d.ts.map +1 -1
- package/dist/views/Edit/index.js +3 -3
- package/dist/views/Edit/index.js.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","getTranslation","formatAdminURL","React","Fragment","useEffect","useFormInitializing","useFormProcessing","useConfig","useEditDepth","useLivePreviewContext","useTranslation","formatDate","Autosave","Button","CopyLocaleData","DeleteDocument","DuplicateDocument","MoveDocToFolder","Gutter","LivePreviewToggler","Locked","PermanentlyDeleteButton","Popup","PopupList","PreviewButton","PublishButton","RenderCustomComponent","RestoreButton","SaveButton","SaveDraftButton","Status","baseClass","DocumentControls","props","$","id","slug","BeforeDocumentControls","customComponents","t0","data","disableActions","disableCreate","EditMenuItems","hasSavePermission","isAccountView","isEditing","isInDrawer","isTrashed","onDelete","onDrawerCreateNew","onDuplicate","onRestore","onTakeOver","permissions","readOnlyForIncomingUser","redirectAfterDelete","redirectAfterDuplicate","redirectAfterRestore","user","CustomPreviewButton","CustomPublishButton","CustomSaveButton","CustomSaveDraftButton","undefined","i18n","t","editDepth","config","getEntityConfig","collectionConfig","collectionSlug","globalConfig","globalSlug","isLivePreviewEnabled","admin","t1","localization","routes","t2","dateFormat","adminRoute","updatedAt","setUpdatedAt","useState","createdAt","setCreatedAt","processing","initializing","t3","t4","date","pattern","hasCreatePermission","create","hasDeletePermission","delete","showDotMenu","Boolean","unsavedDraftWithValidations","versions","drafts","validate","collectionConfigDrafts","globalConfigDrafts","autosaveEnabled","autosave","collectionAutosaveEnabled","globalAutosaveEnabled","showSaveDraftButton","showCopyToLocale","disableCopyToLocale","showFolderMetaIcon","folders","showLockedMetaIcon","_jsxs","className","children","_jsx","folderCollectionSlug","folderFieldName","fieldName","label","labels","singular","filter","join","collection","global","publishedDocUpdatedAt","timestamps","title","preview","CustomComponent","Fallback","buttonId","toString","singularLabel","buttonStyle","onClick","size","type","button","disabled","horizontalAlign","verticalAlign","ButtonGroup","href","path","disableDuplicate","_Fragment","selectLocales","useAsTitle"],"sources":["../../../src/elements/DocumentControls/index.tsx"],"sourcesContent":["'use client'\nimport type {\n ClientUser,\n Data,\n SanitizedCollectionConfig,\n SanitizedCollectionPermission,\n SanitizedGlobalPermission,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { Fragment, useEffect } from 'react'\n\nimport type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js'\n\nimport { useFormInitializing, useFormProcessing } from '../../forms/Form/context.js'\nimport { useConfig } from '../../providers/Config/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 } 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 { MoveDocToFolder } from '../FolderView/MoveDocToFolder/index.js'\nimport { Gutter } from '../Gutter/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 './index.scss'\nimport { SaveDraftButton } from '../SaveDraftButton/index.js'\nimport { Status } from '../Status/index.js'\n\nconst baseClass = 'doc-controls'\n\nexport const DocumentControls: React.FC<{\n readonly apiURL: string\n readonly BeforeDocumentControls?: 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 }\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?: ClientUser\n}> = (props) => {\n const {\n id,\n slug,\n BeforeDocumentControls,\n customComponents: {\n PreviewButton: CustomPreviewButton,\n PublishButton: CustomPublishButton,\n SaveButton: CustomSaveButton,\n SaveDraftButton: CustomSaveDraftButton,\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 } = 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 {\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\n const processing = useFormProcessing()\n const initializing = useFormInitializing()\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 }, [data, i18n, dateFormat])\n\n const hasCreatePermission = permissions && 'create' in permissions && permissions.create\n\n const hasDeletePermission = permissions && 'delete' in permissions && permissions.delete\n\n const showDotMenu = Boolean(\n collectionConfig && id && !disableActions && (hasCreatePermission || hasDeletePermission),\n )\n\n const unsavedDraftWithValidations =\n !id && collectionConfig?.versions?.drafts && collectionConfig.versions?.drafts.validate\n\n const collectionConfigDrafts = collectionConfig?.versions?.drafts\n const globalConfigDrafts = globalConfig?.versions?.drafts\n\n const autosaveEnabled =\n (collectionConfigDrafts && collectionConfigDrafts?.autosave) ||\n (globalConfigDrafts && globalConfigDrafts?.autosave)\n\n const collectionAutosaveEnabled = collectionConfigDrafts && collectionConfigDrafts?.autosave\n const globalAutosaveEnabled = globalConfigDrafts && globalConfigDrafts?.autosave\n\n const showSaveDraftButton =\n (collectionAutosaveEnabled &&\n collectionConfigDrafts.autosave !== false &&\n collectionConfigDrafts.autosave.showSaveDraftButton === true) ||\n (globalAutosaveEnabled &&\n globalConfigDrafts.autosave !== false &&\n globalConfigDrafts.autosave.showSaveDraftButton === true)\n\n const showCopyToLocale = localization && !collectionConfig?.admin?.disableCopyToLocale\n\n const showFolderMetaIcon = collectionConfig && collectionConfig.folders\n const showLockedMetaIcon = user && readOnlyForIncomingUser\n\n return (\n <Gutter className={baseClass}>\n <div className={`${baseClass}__wrapper`}>\n <div className={`${baseClass}__content`}>\n {showLockedMetaIcon || showFolderMetaIcon ? (\n <div className={`${baseClass}__meta-icons`}>\n {showLockedMetaIcon && (\n <Locked className={`${baseClass}__locked-controls`} user={user} />\n )}\n {showFolderMetaIcon && config.folders && !isTrashed && (\n <MoveDocToFolder\n folderCollectionSlug={config.folders.slug}\n folderFieldName={config.folders.fieldName}\n />\n )}\n </div>\n ) : null}\n <ul className={`${baseClass}__meta`}>\n {collectionConfig && !isEditing && !isAccountView && (\n <li className={`${baseClass}__list-item`}>\n <p className={`${baseClass}__value`}>\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 {(collectionConfig?.versions?.drafts || globalConfig?.versions?.drafts) && (\n <Fragment>\n {(globalConfig || (collectionConfig && isEditing)) && (\n <li\n className={[`${baseClass}__status`, `${baseClass}__list-item`]\n .filter(Boolean)\n .join(' ')}\n >\n <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 && (isEditing || isAccountView) && (\n <Fragment>\n <li\n className={[`${baseClass}__list-item`, `${baseClass}__value-wrap`]\n .filter(Boolean)\n .join(' ')}\n title={data?.updatedAt ? updatedAt : ''}\n >\n <p className={`${baseClass}__label`}>\n {i18n.t(isTrashed ? 'general:deleted' : 'general:lastModified')}: \n </p>\n\n {data?.updatedAt && <p className={`${baseClass}__value`}>{updatedAt}</p>}\n </li>\n <li\n className={[`${baseClass}__list-item`, `${baseClass}__value-wrap`]\n .filter(Boolean)\n .join(' ')}\n title={data?.createdAt ? createdAt : ''}\n >\n <p className={`${baseClass}__label`}>{i18n.t('general:created')}: </p>\n {data?.createdAt && <p className={`${baseClass}__value`}>{createdAt}</p>}\n </li>\n </Fragment>\n )}\n </ul>\n </div>\n <div className={`${baseClass}__controls-wrapper`}>\n <div className={`${baseClass}__controls`}>\n {BeforeDocumentControls}\n {isLivePreviewEnabled && !isInDrawer && <LivePreviewToggler />}\n {(collectionConfig?.admin.preview || globalConfig?.admin.preview) && (\n <RenderCustomComponent\n CustomComponent={CustomPreviewButton}\n Fallback={<PreviewButton />}\n />\n )}\n {hasSavePermission && !isTrashed && (\n <Fragment>\n {collectionConfig?.versions?.drafts || globalConfig?.versions?.drafts ? (\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 {hasDeletePermission && 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 button={\n <div className={`${baseClass}__dots`}>\n <div />\n <div />\n <div />\n </div>\n }\n className={`${baseClass}__popup`}\n disabled={initializing || processing}\n horizontalAlign=\"right\"\n size=\"large\"\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 && (\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 {EditMenuItems}\n </PopupList.ButtonGroup>\n </Popup>\n )}\n </div>\n </div>\n <div className={`${baseClass}__divider`} />\n </Gutter>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","getTranslation","formatAdminURL","hasAutosaveEnabled","hasDraftsEnabled","React","Fragment","useEffect","useFormInitializing","useFormProcessing","useConfig","useEditDepth","useLivePreviewContext","useTranslation","formatDate","Autosave","Button","CopyLocaleData","DeleteDocument","DuplicateDocument","MoveDocToFolder","Gutter","LivePreviewToggler","Locked","PermanentlyDeleteButton","Popup","PopupList","PreviewButton","PublishButton","RenderCustomComponent","RestoreButton","SaveButton","SaveDraftButton","Status","baseClass","DocumentControls","props","$","id","slug","BeforeDocumentControls","customComponents","t0","data","disableActions","disableCreate","EditMenuItems","hasSavePermission","isAccountView","isEditing","isInDrawer","isTrashed","onDelete","onDrawerCreateNew","onDuplicate","onRestore","onTakeOver","permissions","readOnlyForIncomingUser","redirectAfterDelete","redirectAfterDuplicate","redirectAfterRestore","user","CustomPreviewButton","CustomPublishButton","CustomSaveButton","CustomSaveDraftButton","undefined","i18n","t","editDepth","config","getEntityConfig","collectionConfig","collectionSlug","globalConfig","globalSlug","isLivePreviewEnabled","admin","t1","localization","routes","t2","dateFormat","adminRoute","updatedAt","setUpdatedAt","useState","createdAt","setCreatedAt","processing","initializing","t3","t4","date","pattern","hasCreatePermission","create","hasDeletePermission","delete","showDotMenu","Boolean","unsavedDraftWithValidations","versions","drafts","validate","globalHasDraftsEnabled","collectionHasDraftsEnabled","collectionAutosaveEnabled","globalAutosaveEnabled","autosaveEnabled","showSaveDraftButton","autosave","showCopyToLocale","disableCopyToLocale","showFolderMetaIcon","folders","showLockedMetaIcon","_jsxs","className","children","_jsx","folderCollectionSlug","folderFieldName","fieldName","label","labels","singular","filter","join","collection","global","publishedDocUpdatedAt","timestamps","title","preview","CustomComponent","Fallback","buttonId","toString","singularLabel","buttonStyle","onClick","size","type","button","disabled","horizontalAlign","verticalAlign","ButtonGroup","href","path","disableDuplicate","_Fragment","selectLocales","useAsTitle"],"sources":["../../../src/elements/DocumentControls/index.tsx"],"sourcesContent":["'use client'\nimport type {\n ClientUser,\n Data,\n SanitizedCollectionConfig,\n SanitizedCollectionPermission,\n SanitizedGlobalPermission,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { formatAdminURL, hasAutosaveEnabled, hasDraftsEnabled } from 'payload/shared'\nimport React, { Fragment, useEffect } from 'react'\n\nimport type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js'\n\nimport { useFormInitializing, useFormProcessing } from '../../forms/Form/context.js'\nimport { useConfig } from '../../providers/Config/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 } 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 { MoveDocToFolder } from '../FolderView/MoveDocToFolder/index.js'\nimport { Gutter } from '../Gutter/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 './index.scss'\nimport { SaveDraftButton } from '../SaveDraftButton/index.js'\nimport { Status } from '../Status/index.js'\n\nconst baseClass = 'doc-controls'\n\nexport const DocumentControls: React.FC<{\n readonly apiURL: string\n readonly BeforeDocumentControls?: 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 }\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?: ClientUser\n}> = (props) => {\n const {\n id,\n slug,\n BeforeDocumentControls,\n customComponents: {\n PreviewButton: CustomPreviewButton,\n PublishButton: CustomPublishButton,\n SaveButton: CustomSaveButton,\n SaveDraftButton: CustomSaveDraftButton,\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 } = 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 {\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\n const processing = useFormProcessing()\n const initializing = useFormInitializing()\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 }, [data, i18n, dateFormat])\n\n const hasCreatePermission = permissions && 'create' in permissions && permissions.create\n\n const hasDeletePermission = permissions && 'delete' in permissions && permissions.delete\n\n const showDotMenu = Boolean(\n collectionConfig && id && !disableActions && (hasCreatePermission || hasDeletePermission),\n )\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 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 showFolderMetaIcon = collectionConfig && collectionConfig.folders\n const showLockedMetaIcon = user && readOnlyForIncomingUser\n\n return (\n <Gutter className={baseClass}>\n <div className={`${baseClass}__wrapper`}>\n <div className={`${baseClass}__content`}>\n {showLockedMetaIcon || showFolderMetaIcon ? (\n <div className={`${baseClass}__meta-icons`}>\n {showLockedMetaIcon && (\n <Locked className={`${baseClass}__locked-controls`} user={user} />\n )}\n {showFolderMetaIcon && config.folders && !isTrashed && (\n <MoveDocToFolder\n folderCollectionSlug={config.folders.slug}\n folderFieldName={config.folders.fieldName}\n />\n )}\n </div>\n ) : null}\n <ul className={`${baseClass}__meta`}>\n {collectionConfig && !isEditing && !isAccountView && (\n <li className={`${baseClass}__list-item`}>\n <p className={`${baseClass}__value`}>\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\n className={[`${baseClass}__status`, `${baseClass}__list-item`]\n .filter(Boolean)\n .join(' ')}\n >\n <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 && (isEditing || isAccountView) && (\n <Fragment>\n <li\n className={[`${baseClass}__list-item`, `${baseClass}__value-wrap`]\n .filter(Boolean)\n .join(' ')}\n title={data?.updatedAt ? updatedAt : ''}\n >\n <p className={`${baseClass}__label`}>\n {i18n.t(isTrashed ? 'general:deleted' : 'general:lastModified')}: \n </p>\n\n {data?.updatedAt && <p className={`${baseClass}__value`}>{updatedAt}</p>}\n </li>\n <li\n className={[`${baseClass}__list-item`, `${baseClass}__value-wrap`]\n .filter(Boolean)\n .join(' ')}\n title={data?.createdAt ? createdAt : ''}\n >\n <p className={`${baseClass}__label`}>{i18n.t('general:created')}: </p>\n {data?.createdAt && <p className={`${baseClass}__value`}>{createdAt}</p>}\n </li>\n </Fragment>\n )}\n </ul>\n </div>\n <div className={`${baseClass}__controls-wrapper`}>\n <div className={`${baseClass}__controls`}>\n {BeforeDocumentControls}\n {isLivePreviewEnabled && !isInDrawer && <LivePreviewToggler />}\n {(collectionConfig?.admin.preview || globalConfig?.admin.preview) && (\n <RenderCustomComponent\n CustomComponent={CustomPreviewButton}\n Fallback={<PreviewButton />}\n />\n )}\n {hasSavePermission && !isTrashed && (\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 {hasDeletePermission && 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 button={\n <div className={`${baseClass}__dots`}>\n <div />\n <div />\n <div />\n </div>\n }\n className={`${baseClass}__popup`}\n disabled={initializing || processing}\n horizontalAlign=\"right\"\n size=\"large\"\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 && (\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 {EditMenuItems}\n </PopupList.ButtonGroup>\n </Popup>\n )}\n </div>\n </div>\n <div className={`${baseClass}__divider`} />\n </Gutter>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/PublishButton/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/PublishButton/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAKvD,OAAO,KAA2C,MAAM,OAAO,CAAA;AAe/D,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,wBAAwB,qBAyP3E"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
4
|
import { useModal } from '@faceless-ui/modal';
|
|
5
|
+
import { hasAutosaveEnabled, hasScheduledPublishEnabled } from 'payload/shared';
|
|
5
6
|
import * as qs from 'qs-esm';
|
|
6
7
|
import React, { useCallback, useEffect, useState } from 'react';
|
|
7
8
|
import { useForm, useFormModified } from '../../forms/Form/context.js';
|
|
@@ -22,7 +23,6 @@ export function PublishButton({
|
|
|
22
23
|
const {
|
|
23
24
|
id,
|
|
24
25
|
collectionSlug,
|
|
25
|
-
docConfig,
|
|
26
26
|
globalSlug,
|
|
27
27
|
hasPublishedDoc,
|
|
28
28
|
hasPublishPermission,
|
|
@@ -73,11 +73,10 @@ export function PublishButton({
|
|
|
73
73
|
}
|
|
74
74
|
}, [collectionSlug, globalSlug, getEntityConfig]);
|
|
75
75
|
const hasNewerVersions = unpublishedVersionCount > 0;
|
|
76
|
-
const schedulePublish = typeof entityConfig?.versions?.drafts === 'object' && entityConfig?.versions?.drafts.schedulePublish;
|
|
77
76
|
const canPublish = hasPublishPermission && (modified || hasNewerVersions || !hasPublishedDoc) && uploadStatus !== 'uploading';
|
|
78
|
-
const scheduledPublishEnabled =
|
|
77
|
+
const scheduledPublishEnabled = hasScheduledPublishEnabled(entityConfig);
|
|
79
78
|
// If autosave is enabled the modified will always be true so only conditionally check on modified state
|
|
80
|
-
const hasAutosave =
|
|
79
|
+
const hasAutosave = hasAutosaveEnabled(entityConfig);
|
|
81
80
|
const canSchedulePublish = Boolean(scheduledPublishEnabled && hasPublishPermission && (globalSlug || collectionSlug && id) && (hasAutosave || !modified));
|
|
82
81
|
const [hasLocalizedFields, setHasLocalizedFields] = useState(false);
|
|
83
82
|
useEffect(() => {
|
|
@@ -119,7 +118,7 @@ export function PublishButton({
|
|
|
119
118
|
}, e => {
|
|
120
119
|
e.preventDefault();
|
|
121
120
|
e.stopPropagation();
|
|
122
|
-
if (saveDraft &&
|
|
121
|
+
if (saveDraft && hasAutosave) {
|
|
123
122
|
void saveDraft();
|
|
124
123
|
}
|
|
125
124
|
});
|
|
@@ -198,7 +197,7 @@ export function PublishButton({
|
|
|
198
197
|
}) : label
|
|
199
198
|
}), canSchedulePublish && isModalOpen(drawerSlug) && /*#__PURE__*/_jsx(ScheduleDrawer, {
|
|
200
199
|
defaultType: !hasNewerVersions ? 'unpublish' : 'publish',
|
|
201
|
-
schedulePublishConfig: typeof schedulePublish === 'object'
|
|
200
|
+
schedulePublishConfig: scheduledPublishEnabled && typeof entityConfig.versions.drafts.schedulePublish === 'object' ? entityConfig.versions.drafts.schedulePublish : undefined,
|
|
202
201
|
slug: drawerSlug
|
|
203
202
|
})]
|
|
204
203
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["useModal","qs","React","useCallback","useEffect","useState","useForm","useFormModified","FormSubmit","useHotkey","useConfig","useDocumentInfo","useEditDepth","useLocale","useOperation","useTranslation","traverseForLocalizedFields","PopupList","ScheduleDrawer","PublishButton","label","labelProp","id","collectionSlug","docConfig","globalSlug","hasPublishedDoc","hasPublishPermission","setHasPublishedDoc","setMostRecentVersionIsAutosaved","setUnpublishedVersionCount","unpublishedVersionCount","uploadStatus","config","getEntityConfig","submit","modified","editDepth","code","localeCode","isModalOpen","toggleModal","drawerSlug","localization","routes","api","serverURL","t","entityConfig","useMemo","hasNewerVersions","schedulePublish","versions","drafts","canPublish","scheduledPublishEnabled","Boolean","hasAutosave","autosave","canSchedulePublish","hasLocalizedFields","setHasLocalizedFields","hasLocalizedField","fields","isSpecificLocalePublishEnabled","operation","disabled","saveDraft","search","action","method","overrides","_status","skipValidation","cmdCtrlKey","keyCodes","e","preventDefault","stopPropagation","publish","result","publishSpecificLocale","locale","params","stringify","depth","isDefaultPublishAll","defaultLocalePublishOption","activeLocale","locales","find","activeLocaleLabel","undefined","_jsxs","Fragment","_jsx","buttonId","enableSubMenu","onClick","size","SubMenuPopupContent","close","ButtonGroup","Button","type","defaultType","schedulePublishConfig","slug"],"sources":["../../../src/elements/PublishButton/index.tsx"],"sourcesContent":["'use client'\n\nimport type { PublishButtonClientProps } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport { useForm, useFormModified } from '../../forms/Form/context.js'\nimport { FormSubmit } from '../../forms/Submit/index.js'\nimport { useHotkey } from '../../hooks/useHotkey.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { traverseForLocalizedFields } from '../../utilities/traverseForLocalizedFields.js'\nimport { PopupList } from '../Popup/index.js'\nimport { ScheduleDrawer } from './ScheduleDrawer/index.js'\n\nexport function PublishButton({ label: labelProp }: PublishButtonClientProps) {\n const {\n id,\n collectionSlug,\n docConfig,\n globalSlug,\n hasPublishedDoc,\n hasPublishPermission,\n setHasPublishedDoc,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n unpublishedVersionCount,\n uploadStatus,\n } = useDocumentInfo()\n\n const { config, getEntityConfig } = useConfig()\n const { submit } = useForm()\n const modified = useFormModified()\n const editDepth = useEditDepth()\n const { code: localeCode } = useLocale()\n const { isModalOpen, toggleModal } = useModal()\n\n const drawerSlug = `schedule-publish-${id}`\n\n const {\n localization,\n routes: { api },\n serverURL,\n } = config\n\n const { t } = useTranslation()\n const label = labelProp || t('version:publishChanges')\n\n const entityConfig = React.useMemo(() => {\n if (collectionSlug) {\n return getEntityConfig({ collectionSlug })\n }\n\n if (globalSlug) {\n return getEntityConfig({ globalSlug })\n }\n }, [collectionSlug, globalSlug, getEntityConfig])\n\n const hasNewerVersions = unpublishedVersionCount > 0\n\n const schedulePublish =\n typeof entityConfig?.versions?.drafts === 'object' &&\n entityConfig?.versions?.drafts.schedulePublish\n\n const canPublish =\n hasPublishPermission &&\n (modified || hasNewerVersions || !hasPublishedDoc) &&\n uploadStatus !== 'uploading'\n\n const scheduledPublishEnabled = Boolean(schedulePublish)\n\n // If autosave is enabled the modified will always be true so only conditionally check on modified state\n const hasAutosave = Boolean(\n typeof entityConfig?.versions?.drafts === 'object' && entityConfig?.versions?.drafts.autosave,\n )\n\n const canSchedulePublish = Boolean(\n scheduledPublishEnabled &&\n hasPublishPermission &&\n (globalSlug || (collectionSlug && id)) &&\n (hasAutosave || !modified),\n )\n\n const [hasLocalizedFields, setHasLocalizedFields] = useState(false)\n\n useEffect(() => {\n const hasLocalizedField = traverseForLocalizedFields(entityConfig?.fields)\n setHasLocalizedFields(hasLocalizedField)\n }, [entityConfig?.fields])\n\n const isSpecificLocalePublishEnabled = localization && hasLocalizedFields && hasPublishPermission\n\n const operation = useOperation()\n\n const disabled = operation === 'update' && !modified\n\n const saveDraft = useCallback(async () => {\n if (disabled) {\n return\n }\n\n const search = `?locale=${localeCode}&depth=0&fallback-locale=null&draft=true`\n let action\n let method = 'POST'\n\n if (collectionSlug) {\n action = `${serverURL}${api}/${collectionSlug}${id ? `/${id}` : ''}${search}`\n if (id) {\n method = 'PATCH'\n }\n }\n\n if (globalSlug) {\n action = `${serverURL}${api}/globals/${globalSlug}${search}`\n }\n\n await submit({\n action,\n method,\n overrides: {\n _status: 'draft',\n },\n skipValidation: true,\n })\n }, [submit, collectionSlug, globalSlug, serverURL, api, localeCode, id, disabled])\n\n useHotkey({ cmdCtrlKey: true, editDepth, keyCodes: ['s'] }, (e) => {\n e.preventDefault()\n e.stopPropagation()\n\n if (saveDraft && docConfig.versions?.drafts && docConfig.versions?.drafts?.autosave) {\n void saveDraft()\n }\n })\n\n const publish = useCallback(async () => {\n if (uploadStatus === 'uploading') {\n return\n }\n\n const result = await submit({\n overrides: {\n _status: 'published',\n },\n })\n\n if (result) {\n setUnpublishedVersionCount(0)\n setMostRecentVersionIsAutosaved(false)\n setHasPublishedDoc(true)\n }\n }, [\n setHasPublishedDoc,\n submit,\n setUnpublishedVersionCount,\n uploadStatus,\n setMostRecentVersionIsAutosaved,\n ])\n\n const publishSpecificLocale = useCallback(\n async (locale) => {\n if (uploadStatus === 'uploading') {\n return\n }\n\n const params = qs.stringify({\n depth: 0,\n publishSpecificLocale: locale,\n })\n\n const action = `${serverURL}${api}${\n globalSlug ? `/globals/${globalSlug}` : `/${collectionSlug}${id ? `/${id}` : ''}`\n }${params ? '?' + params : ''}`\n\n const result = await submit({\n action,\n overrides: {\n _status: 'published',\n },\n })\n\n if (result) {\n setHasPublishedDoc(true)\n }\n },\n [api, collectionSlug, globalSlug, id, serverURL, setHasPublishedDoc, submit, uploadStatus],\n )\n\n // Publish to all locales unless there are localized fields AND defaultLocalePublishOption is 'active'\n const isDefaultPublishAll =\n !isSpecificLocalePublishEnabled ||\n (localization && localization?.defaultLocalePublishOption !== 'active')\n\n const activeLocale =\n localization &&\n localization?.locales.find((locale) =>\n typeof locale === 'string' ? locale === localeCode : locale.code === localeCode,\n )\n\n const activeLocaleLabel =\n activeLocale &&\n (typeof activeLocale.label === 'string'\n ? activeLocale.label\n : (activeLocale.label?.[localeCode] ?? undefined))\n\n if (!hasPublishPermission) {\n return null\n }\n\n return (\n <React.Fragment>\n <FormSubmit\n buttonId=\"action-save\"\n disabled={!canPublish}\n enableSubMenu={canSchedulePublish}\n onClick={isDefaultPublishAll ? publish : () => publishSpecificLocale(activeLocale.code)}\n size=\"medium\"\n SubMenuPopupContent={\n isSpecificLocalePublishEnabled || canSchedulePublish\n ? ({ close }) => {\n return (\n <React.Fragment>\n {canSchedulePublish && (\n <PopupList.ButtonGroup key=\"schedule-publish\">\n <PopupList.Button\n id=\"schedule-publish\"\n onClick={() => [toggleModal(drawerSlug), close()]}\n >\n {t('version:schedulePublish')}\n </PopupList.Button>\n </PopupList.ButtonGroup>\n )}\n {isSpecificLocalePublishEnabled && (\n <PopupList.ButtonGroup>\n <PopupList.Button\n id=\"publish-locale\"\n onClick={\n isDefaultPublishAll\n ? () => publishSpecificLocale(activeLocale.code)\n : publish\n }\n >\n {isDefaultPublishAll\n ? t('version:publishIn', { locale: activeLocaleLabel })\n : t('version:publishAllLocales')}\n </PopupList.Button>\n </PopupList.ButtonGroup>\n )}\n </React.Fragment>\n )\n }\n : undefined\n }\n type=\"button\"\n >\n {!isDefaultPublishAll ? t('version:publishIn', { locale: activeLocaleLabel }) : label}\n </FormSubmit>\n {canSchedulePublish && isModalOpen(drawerSlug) && (\n <ScheduleDrawer\n defaultType={!hasNewerVersions ? 'unpublish' : 'publish'}\n schedulePublishConfig={typeof schedulePublish === 'object' && schedulePublish}\n slug={drawerSlug}\n />\n )}\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["useModal","hasAutosaveEnabled","hasScheduledPublishEnabled","qs","React","useCallback","useEffect","useState","useForm","useFormModified","FormSubmit","useHotkey","useConfig","useDocumentInfo","useEditDepth","useLocale","useOperation","useTranslation","traverseForLocalizedFields","PopupList","ScheduleDrawer","PublishButton","label","labelProp","id","collectionSlug","globalSlug","hasPublishedDoc","hasPublishPermission","setHasPublishedDoc","setMostRecentVersionIsAutosaved","setUnpublishedVersionCount","unpublishedVersionCount","uploadStatus","config","getEntityConfig","submit","modified","editDepth","code","localeCode","isModalOpen","toggleModal","drawerSlug","localization","routes","api","serverURL","t","entityConfig","useMemo","hasNewerVersions","canPublish","scheduledPublishEnabled","hasAutosave","canSchedulePublish","Boolean","hasLocalizedFields","setHasLocalizedFields","hasLocalizedField","fields","isSpecificLocalePublishEnabled","operation","disabled","saveDraft","search","action","method","overrides","_status","skipValidation","cmdCtrlKey","keyCodes","e","preventDefault","stopPropagation","publish","result","publishSpecificLocale","locale","params","stringify","depth","isDefaultPublishAll","defaultLocalePublishOption","activeLocale","locales","find","activeLocaleLabel","undefined","_jsxs","Fragment","_jsx","buttonId","enableSubMenu","onClick","size","SubMenuPopupContent","close","ButtonGroup","Button","type","defaultType","schedulePublishConfig","versions","drafts","schedulePublish","slug"],"sources":["../../../src/elements/PublishButton/index.tsx"],"sourcesContent":["'use client'\n\nimport type { PublishButtonClientProps } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { hasAutosaveEnabled, hasScheduledPublishEnabled } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport { useForm, useFormModified } from '../../forms/Form/context.js'\nimport { FormSubmit } from '../../forms/Submit/index.js'\nimport { useHotkey } from '../../hooks/useHotkey.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { traverseForLocalizedFields } from '../../utilities/traverseForLocalizedFields.js'\nimport { PopupList } from '../Popup/index.js'\nimport { ScheduleDrawer } from './ScheduleDrawer/index.js'\n\nexport function PublishButton({ label: labelProp }: PublishButtonClientProps) {\n const {\n id,\n collectionSlug,\n globalSlug,\n hasPublishedDoc,\n hasPublishPermission,\n setHasPublishedDoc,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n unpublishedVersionCount,\n uploadStatus,\n } = useDocumentInfo()\n\n const { config, getEntityConfig } = useConfig()\n const { submit } = useForm()\n const modified = useFormModified()\n const editDepth = useEditDepth()\n const { code: localeCode } = useLocale()\n const { isModalOpen, toggleModal } = useModal()\n\n const drawerSlug = `schedule-publish-${id}`\n\n const {\n localization,\n routes: { api },\n serverURL,\n } = config\n\n const { t } = useTranslation()\n const label = labelProp || t('version:publishChanges')\n\n const entityConfig = React.useMemo(() => {\n if (collectionSlug) {\n return getEntityConfig({ collectionSlug })\n }\n\n if (globalSlug) {\n return getEntityConfig({ globalSlug })\n }\n }, [collectionSlug, globalSlug, getEntityConfig])\n\n const hasNewerVersions = unpublishedVersionCount > 0\n\n const canPublish =\n hasPublishPermission &&\n (modified || hasNewerVersions || !hasPublishedDoc) &&\n uploadStatus !== 'uploading'\n\n const scheduledPublishEnabled = hasScheduledPublishEnabled(entityConfig)\n\n // If autosave is enabled the modified will always be true so only conditionally check on modified state\n const hasAutosave = hasAutosaveEnabled(entityConfig)\n\n const canSchedulePublish = Boolean(\n scheduledPublishEnabled &&\n hasPublishPermission &&\n (globalSlug || (collectionSlug && id)) &&\n (hasAutosave || !modified),\n )\n\n const [hasLocalizedFields, setHasLocalizedFields] = useState(false)\n\n useEffect(() => {\n const hasLocalizedField = traverseForLocalizedFields(entityConfig?.fields)\n setHasLocalizedFields(hasLocalizedField)\n }, [entityConfig?.fields])\n\n const isSpecificLocalePublishEnabled = localization && hasLocalizedFields && hasPublishPermission\n\n const operation = useOperation()\n\n const disabled = operation === 'update' && !modified\n\n const saveDraft = useCallback(async () => {\n if (disabled) {\n return\n }\n\n const search = `?locale=${localeCode}&depth=0&fallback-locale=null&draft=true`\n let action\n let method = 'POST'\n\n if (collectionSlug) {\n action = `${serverURL}${api}/${collectionSlug}${id ? `/${id}` : ''}${search}`\n if (id) {\n method = 'PATCH'\n }\n }\n\n if (globalSlug) {\n action = `${serverURL}${api}/globals/${globalSlug}${search}`\n }\n\n await submit({\n action,\n method,\n overrides: {\n _status: 'draft',\n },\n skipValidation: true,\n })\n }, [submit, collectionSlug, globalSlug, serverURL, api, localeCode, id, disabled])\n\n useHotkey({ cmdCtrlKey: true, editDepth, keyCodes: ['s'] }, (e) => {\n e.preventDefault()\n e.stopPropagation()\n\n if (saveDraft && hasAutosave) {\n void saveDraft()\n }\n })\n\n const publish = useCallback(async () => {\n if (uploadStatus === 'uploading') {\n return\n }\n\n const result = await submit({\n overrides: {\n _status: 'published',\n },\n })\n\n if (result) {\n setUnpublishedVersionCount(0)\n setMostRecentVersionIsAutosaved(false)\n setHasPublishedDoc(true)\n }\n }, [\n setHasPublishedDoc,\n submit,\n setUnpublishedVersionCount,\n uploadStatus,\n setMostRecentVersionIsAutosaved,\n ])\n\n const publishSpecificLocale = useCallback(\n async (locale) => {\n if (uploadStatus === 'uploading') {\n return\n }\n\n const params = qs.stringify({\n depth: 0,\n publishSpecificLocale: locale,\n })\n\n const action = `${serverURL}${api}${\n globalSlug ? `/globals/${globalSlug}` : `/${collectionSlug}${id ? `/${id}` : ''}`\n }${params ? '?' + params : ''}`\n\n const result = await submit({\n action,\n overrides: {\n _status: 'published',\n },\n })\n\n if (result) {\n setHasPublishedDoc(true)\n }\n },\n [api, collectionSlug, globalSlug, id, serverURL, setHasPublishedDoc, submit, uploadStatus],\n )\n\n // Publish to all locales unless there are localized fields AND defaultLocalePublishOption is 'active'\n const isDefaultPublishAll =\n !isSpecificLocalePublishEnabled ||\n (localization && localization?.defaultLocalePublishOption !== 'active')\n\n const activeLocale =\n localization &&\n localization?.locales.find((locale) =>\n typeof locale === 'string' ? locale === localeCode : locale.code === localeCode,\n )\n\n const activeLocaleLabel =\n activeLocale &&\n (typeof activeLocale.label === 'string'\n ? activeLocale.label\n : (activeLocale.label?.[localeCode] ?? undefined))\n\n if (!hasPublishPermission) {\n return null\n }\n\n return (\n <React.Fragment>\n <FormSubmit\n buttonId=\"action-save\"\n disabled={!canPublish}\n enableSubMenu={canSchedulePublish}\n onClick={isDefaultPublishAll ? publish : () => publishSpecificLocale(activeLocale.code)}\n size=\"medium\"\n SubMenuPopupContent={\n isSpecificLocalePublishEnabled || canSchedulePublish\n ? ({ close }) => {\n return (\n <React.Fragment>\n {canSchedulePublish && (\n <PopupList.ButtonGroup key=\"schedule-publish\">\n <PopupList.Button\n id=\"schedule-publish\"\n onClick={() => [toggleModal(drawerSlug), close()]}\n >\n {t('version:schedulePublish')}\n </PopupList.Button>\n </PopupList.ButtonGroup>\n )}\n {isSpecificLocalePublishEnabled && (\n <PopupList.ButtonGroup>\n <PopupList.Button\n id=\"publish-locale\"\n onClick={\n isDefaultPublishAll\n ? () => publishSpecificLocale(activeLocale.code)\n : publish\n }\n >\n {isDefaultPublishAll\n ? t('version:publishIn', { locale: activeLocaleLabel })\n : t('version:publishAllLocales')}\n </PopupList.Button>\n </PopupList.ButtonGroup>\n )}\n </React.Fragment>\n )\n }\n : undefined\n }\n type=\"button\"\n >\n {!isDefaultPublishAll ? t('version:publishIn', { locale: activeLocaleLabel }) : label}\n </FormSubmit>\n {canSchedulePublish && isModalOpen(drawerSlug) && (\n <ScheduleDrawer\n defaultType={!hasNewerVersions ? 'unpublish' : 'publish'}\n schedulePublishConfig={\n scheduledPublishEnabled &&\n typeof entityConfig.versions.drafts.schedulePublish === 'object'\n ? entityConfig.versions.drafts.schedulePublish\n : undefined\n }\n slug={drawerSlug}\n />\n )}\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/QueryPresets/QueryPresetBar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,6BAA6B,EAAE,MAAM,SAAS,CAAA;AAKzE,OAAO,KAAyC,MAAM,OAAO,CAAA;AAc7D,OAAO,cAAc,CAAA;AAQrB,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC;IACpC,YAAY,EAAE,WAAW,CAAA;IACzB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,sBAAsB,EAAE,6BAA6B,CAAA;CACtD,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/QueryPresets/QueryPresetBar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,6BAA6B,EAAE,MAAM,SAAS,CAAA;AAKzE,OAAO,KAAyC,MAAM,OAAO,CAAA;AAc7D,OAAO,cAAc,CAAA;AAQrB,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC;IACpC,YAAY,EAAE,WAAW,CAAA;IACzB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,sBAAsB,EAAE,6BAA6B,CAAA;CACtD,CAiSA,CAAA"}
|
|
@@ -81,6 +81,7 @@ export const QueryPresetBar = ({
|
|
|
81
81
|
const handlePresetChange = useCallback(async preset => {
|
|
82
82
|
await refineListData({
|
|
83
83
|
columns: preset.columns ? transformColumnsToSearchParams(preset.columns) : undefined,
|
|
84
|
+
groupBy: preset.groupBy || '',
|
|
84
85
|
preset: preset.id,
|
|
85
86
|
where: preset.where
|
|
86
87
|
}, false);
|
|
@@ -88,6 +89,7 @@ export const QueryPresetBar = ({
|
|
|
88
89
|
const resetQueryPreset = useCallback(async () => {
|
|
89
90
|
await refineListData({
|
|
90
91
|
columns: [],
|
|
92
|
+
groupBy: '',
|
|
91
93
|
preset: '',
|
|
92
94
|
where: {}
|
|
93
95
|
}, false);
|
|
@@ -131,6 +133,7 @@ export const QueryPresetBar = ({
|
|
|
131
133
|
await fetch(`${apiRoute}/payload-query-presets/${activePreset.id}`, {
|
|
132
134
|
body: JSON.stringify({
|
|
133
135
|
columns: transformColumnsToPreferences(query.columns),
|
|
136
|
+
groupBy: query.groupBy,
|
|
134
137
|
where: query.where
|
|
135
138
|
}),
|
|
136
139
|
credentials: 'include',
|
|
@@ -160,7 +163,7 @@ export const QueryPresetBar = ({
|
|
|
160
163
|
} catch (_err) {
|
|
161
164
|
toast.error(t('error:unknown'));
|
|
162
165
|
}
|
|
163
|
-
}, [apiRoute, activePreset?.id, query.columns, query.where, t, presetConfig?.labels?.singular, i18n, setQueryModified]);
|
|
166
|
+
}, [apiRoute, activePreset?.id, query.columns, query.groupBy, query.where, t, presetConfig?.labels?.singular, i18n, setQueryModified]);
|
|
164
167
|
const hasModifiedPreset = activePreset && modified;
|
|
165
168
|
return /*#__PURE__*/_jsxs(Fragment, {
|
|
166
169
|
children: [/*#__PURE__*/_jsxs("div", {
|
|
@@ -190,6 +193,7 @@ export const QueryPresetBar = ({
|
|
|
190
193
|
onClick: async () => {
|
|
191
194
|
await refineListData({
|
|
192
195
|
columns: transformColumnsToSearchParams(activePreset.columns),
|
|
196
|
+
groupBy: activePreset.groupBy || '',
|
|
193
197
|
where: activePreset.where
|
|
194
198
|
}, false);
|
|
195
199
|
},
|
|
@@ -225,6 +229,7 @@ export const QueryPresetBar = ({
|
|
|
225
229
|
}), /*#__PURE__*/_jsx(CreateNewPresetDrawer, {
|
|
226
230
|
initialData: {
|
|
227
231
|
columns: transformColumnsToPreferences(query.columns),
|
|
232
|
+
groupBy: query.groupBy,
|
|
228
233
|
relatedCollection: collectionSlug,
|
|
229
234
|
where: query.where
|
|
230
235
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["useModal","getTranslation","transformColumnsToPreferences","transformColumnsToSearchParams","React","Fragment","useCallback","useMemo","toast","PlusIcon","useConfig","useListQuery","useTranslation","ConfirmationModal","useDocumentDrawer","useListDrawer","ListSelectionButton","Pill","Translation","QueryPresetToggler","confirmDeletePresetModalSlug","queryPresetsSlug","baseClass","QueryPresetBar","activePreset","collectionSlug","queryPresetPermissions","modified","query","refineListData","setModified","setQueryModified","i18n","t","openModal","config","routes","api","apiRoute","getEntityConfig","presetConfig","PresetDocumentDrawer","openDrawer","openDocumentDrawer","id","CreateNewPresetDrawer","closeDrawer","closeCreateNewDrawer","openCreateNewDrawer","filterOptions","isTemp","not_equals","relatedCollection","equals","ListDrawer","closeListDrawer","openListDrawer","collectionSlugs","selectedCollection","handlePresetChange","preset","columns","undefined","where","resetQueryPreset","handleDeletePreset","fetch","method","then","res","json","status","success","label","labels","singular","title","errors","forEach","error","message","_err","saveCurrentChanges","body","JSON","stringify","credentials","headers","hasModifiedPreset","_jsxs","className","_jsx","openPresetListDrawer","resetPreset","icon","onClick","size","type","update","isShared","delete","initialData","onSave","doc","redirectAfterCreate","elements","1","children","i18nKey","variables","confirmingLabel","heading","modalSlug","onConfirm","onDelete","onDuplicate","allowCreate","disableQueryPresets","onSelect"],"sources":["../../../../src/elements/QueryPresets/QueryPresetBar/index.tsx"],"sourcesContent":["import type { QueryPreset, SanitizedCollectionPermission } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { transformColumnsToPreferences, transformColumnsToSearchParams } from 'payload/shared'\nimport React, { Fragment, useCallback, useMemo } from 'react'\nimport { toast } from 'sonner'\n\nimport { PlusIcon } from '../../../icons/Plus/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useListQuery } from '../../../providers/ListQuery/context.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { ConfirmationModal } from '../../ConfirmationModal/index.js'\nimport { useDocumentDrawer } from '../../DocumentDrawer/index.js'\nimport { useListDrawer } from '../../ListDrawer/index.js'\nimport { ListSelectionButton } from '../../ListSelection/index.js'\nimport { Pill } from '../../Pill/index.js'\nimport { Translation } from '../../Translation/index.js'\nimport { QueryPresetToggler } from '../QueryPresetToggler/index.js'\nimport './index.scss'\n\nconst confirmDeletePresetModalSlug = 'confirm-delete-preset'\n\nconst queryPresetsSlug = 'payload-query-presets'\n\nconst baseClass = 'query-preset-bar'\n\nexport const QueryPresetBar: React.FC<{\n activePreset: QueryPreset\n collectionSlug?: string\n queryPresetPermissions: SanitizedCollectionPermission\n}> = ({ activePreset, collectionSlug, queryPresetPermissions }) => {\n const { modified, query, refineListData, setModified: setQueryModified } = useListQuery()\n\n const { i18n, t } = useTranslation()\n const { openModal } = useModal()\n\n const {\n config: {\n routes: { api: apiRoute },\n },\n getEntityConfig,\n } = useConfig()\n\n const presetConfig = getEntityConfig({ collectionSlug: queryPresetsSlug })\n\n const [PresetDocumentDrawer, , { openDrawer: openDocumentDrawer }] = useDocumentDrawer({\n id: activePreset?.id,\n collectionSlug: queryPresetsSlug,\n })\n\n const [\n CreateNewPresetDrawer,\n ,\n { closeDrawer: closeCreateNewDrawer, openDrawer: openCreateNewDrawer },\n ] = useDocumentDrawer({\n collectionSlug: queryPresetsSlug,\n })\n\n const filterOptions = useMemo(\n () => ({\n 'payload-query-presets': {\n isTemp: {\n not_equals: true,\n },\n relatedCollection: {\n equals: collectionSlug,\n },\n },\n }),\n [collectionSlug],\n )\n\n const [ListDrawer, , { closeDrawer: closeListDrawer, openDrawer: openListDrawer }] =\n useListDrawer({\n collectionSlugs: [queryPresetsSlug],\n filterOptions,\n selectedCollection: queryPresetsSlug,\n })\n\n const handlePresetChange = useCallback(\n async (preset: QueryPreset) => {\n await refineListData(\n {\n columns: preset.columns ? transformColumnsToSearchParams(preset.columns) : undefined,\n preset: preset.id,\n where: preset.where,\n },\n false,\n )\n },\n [refineListData],\n )\n\n const resetQueryPreset = useCallback(async () => {\n await refineListData(\n {\n columns: [],\n preset: '',\n where: {},\n },\n false,\n )\n }, [refineListData])\n\n const handleDeletePreset = useCallback(async () => {\n try {\n await fetch(`${apiRoute}/${queryPresetsSlug}/${activePreset.id}`, {\n method: 'DELETE',\n }).then(async (res) => {\n try {\n const json = await res.json()\n\n if (res.status < 400) {\n toast.success(\n t('general:titleDeleted', {\n label: getTranslation(presetConfig?.labels?.singular, i18n),\n title: activePreset.title,\n }),\n )\n\n await resetQueryPreset()\n } else {\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n toast.error(t('error:deletingTitle', { title: activePreset.title }))\n }\n }\n } catch (_err) {\n toast.error(t('error:deletingTitle', { title: activePreset.title }))\n }\n })\n } catch (_err) {\n toast.error(t('error:deletingTitle', { title: activePreset.title }))\n }\n }, [apiRoute, activePreset?.id, activePreset?.title, t, presetConfig, i18n, resetQueryPreset])\n\n const saveCurrentChanges = useCallback(async () => {\n try {\n await fetch(`${apiRoute}/payload-query-presets/${activePreset.id}`, {\n body: JSON.stringify({\n columns: transformColumnsToPreferences(query.columns),\n where: query.where,\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'PATCH',\n }).then(async (res) => {\n try {\n const json = await res.json()\n\n if (res.status < 400) {\n toast.success(\n t('general:updatedLabelSuccessfully', {\n label: getTranslation(presetConfig?.labels?.singular, i18n),\n }),\n )\n\n setQueryModified(false)\n } else {\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n toast.error(t('error:unknown'))\n }\n }\n } catch (_err) {\n toast.error(t('error:unknown'))\n }\n })\n } catch (_err) {\n toast.error(t('error:unknown'))\n }\n }, [\n apiRoute,\n activePreset?.id,\n query.columns,\n query.where,\n t,\n presetConfig?.labels?.singular,\n i18n,\n setQueryModified,\n ])\n\n const hasModifiedPreset = activePreset && modified\n\n return (\n <Fragment>\n <div className={baseClass}>\n <div className={`${baseClass}__menu`}>\n <QueryPresetToggler\n activePreset={activePreset}\n openPresetListDrawer={openListDrawer}\n resetPreset={resetQueryPreset}\n />\n <Pill\n aria-label={t('general:newLabel', { label: presetConfig?.labels?.singular })}\n className={`${baseClass}__create-new-preset`}\n icon={<PlusIcon />}\n id=\"create-new-preset\"\n onClick={() => {\n openCreateNewDrawer()\n }}\n size=\"small\"\n />\n </div>\n <div className={`${baseClass}__menu-items`}>\n {hasModifiedPreset && (\n <ListSelectionButton\n id=\"reset-preset\"\n key=\"reset\"\n onClick={async () => {\n await refineListData(\n {\n columns: transformColumnsToSearchParams(activePreset.columns),\n where: activePreset.where,\n },\n false,\n )\n }}\n type=\"button\"\n >\n {t('general:reset')}\n </ListSelectionButton>\n )}\n {hasModifiedPreset && queryPresetPermissions.update && (\n <ListSelectionButton\n id=\"save-preset\"\n key=\"save\"\n onClick={async () => {\n await saveCurrentChanges()\n }}\n type=\"button\"\n >\n {activePreset?.isShared ? t('general:updateForEveryone') : t('fields:saveChanges')}\n </ListSelectionButton>\n )}\n {activePreset && queryPresetPermissions?.delete && (\n <Fragment>\n <ListSelectionButton\n id=\"delete-preset\"\n onClick={() => openModal(confirmDeletePresetModalSlug)}\n type=\"button\"\n >\n {t('general:deleteLabel', { label: presetConfig?.labels?.singular })}\n </ListSelectionButton>\n <ListSelectionButton\n id=\"edit-preset\"\n onClick={() => {\n openDocumentDrawer()\n }}\n type=\"button\"\n >\n {t('general:editLabel', { label: presetConfig?.labels?.singular })}\n </ListSelectionButton>\n </Fragment>\n )}\n </div>\n </div>\n <CreateNewPresetDrawer\n initialData={{\n columns: transformColumnsToPreferences(query.columns),\n relatedCollection: collectionSlug,\n where: query.where,\n }}\n onSave={async ({ doc }) => {\n closeCreateNewDrawer()\n await handlePresetChange(doc as QueryPreset)\n }}\n redirectAfterCreate={false}\n />\n <ConfirmationModal\n body={\n <Translation\n elements={{\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"general:aboutToDelete\"\n t={t}\n variables={{\n label: presetConfig?.labels?.singular,\n title: activePreset?.title,\n }}\n />\n }\n confirmingLabel={t('general:deleting')}\n heading={t('general:confirmDeletion')}\n modalSlug={confirmDeletePresetModalSlug}\n onConfirm={handleDeletePreset}\n />\n <PresetDocumentDrawer\n onDelete={() => {\n // setSelectedPreset(undefined)\n }}\n onDuplicate={async ({ doc }) => {\n await handlePresetChange(doc as QueryPreset)\n }}\n onSave={async ({ doc }) => {\n await handlePresetChange(doc as QueryPreset)\n }}\n />\n <ListDrawer\n allowCreate={false}\n disableQueryPresets\n onSelect={async ({ doc }) => {\n closeListDrawer()\n await handlePresetChange(doc as QueryPreset)\n }}\n />\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["useModal","getTranslation","transformColumnsToPreferences","transformColumnsToSearchParams","React","Fragment","useCallback","useMemo","toast","PlusIcon","useConfig","useListQuery","useTranslation","ConfirmationModal","useDocumentDrawer","useListDrawer","ListSelectionButton","Pill","Translation","QueryPresetToggler","confirmDeletePresetModalSlug","queryPresetsSlug","baseClass","QueryPresetBar","activePreset","collectionSlug","queryPresetPermissions","modified","query","refineListData","setModified","setQueryModified","i18n","t","openModal","config","routes","api","apiRoute","getEntityConfig","presetConfig","PresetDocumentDrawer","openDrawer","openDocumentDrawer","id","CreateNewPresetDrawer","closeDrawer","closeCreateNewDrawer","openCreateNewDrawer","filterOptions","isTemp","not_equals","relatedCollection","equals","ListDrawer","closeListDrawer","openListDrawer","collectionSlugs","selectedCollection","handlePresetChange","preset","columns","undefined","groupBy","where","resetQueryPreset","handleDeletePreset","fetch","method","then","res","json","status","success","label","labels","singular","title","errors","forEach","error","message","_err","saveCurrentChanges","body","JSON","stringify","credentials","headers","hasModifiedPreset","_jsxs","className","_jsx","openPresetListDrawer","resetPreset","icon","onClick","size","type","update","isShared","delete","initialData","onSave","doc","redirectAfterCreate","elements","1","children","i18nKey","variables","confirmingLabel","heading","modalSlug","onConfirm","onDelete","onDuplicate","allowCreate","disableQueryPresets","onSelect"],"sources":["../../../../src/elements/QueryPresets/QueryPresetBar/index.tsx"],"sourcesContent":["import type { QueryPreset, SanitizedCollectionPermission } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { transformColumnsToPreferences, transformColumnsToSearchParams } from 'payload/shared'\nimport React, { Fragment, useCallback, useMemo } from 'react'\nimport { toast } from 'sonner'\n\nimport { PlusIcon } from '../../../icons/Plus/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useListQuery } from '../../../providers/ListQuery/context.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { ConfirmationModal } from '../../ConfirmationModal/index.js'\nimport { useDocumentDrawer } from '../../DocumentDrawer/index.js'\nimport { useListDrawer } from '../../ListDrawer/index.js'\nimport { ListSelectionButton } from '../../ListSelection/index.js'\nimport { Pill } from '../../Pill/index.js'\nimport { Translation } from '../../Translation/index.js'\nimport { QueryPresetToggler } from '../QueryPresetToggler/index.js'\nimport './index.scss'\n\nconst confirmDeletePresetModalSlug = 'confirm-delete-preset'\n\nconst queryPresetsSlug = 'payload-query-presets'\n\nconst baseClass = 'query-preset-bar'\n\nexport const QueryPresetBar: React.FC<{\n activePreset: QueryPreset\n collectionSlug?: string\n queryPresetPermissions: SanitizedCollectionPermission\n}> = ({ activePreset, collectionSlug, queryPresetPermissions }) => {\n const { modified, query, refineListData, setModified: setQueryModified } = useListQuery()\n\n const { i18n, t } = useTranslation()\n const { openModal } = useModal()\n\n const {\n config: {\n routes: { api: apiRoute },\n },\n getEntityConfig,\n } = useConfig()\n\n const presetConfig = getEntityConfig({ collectionSlug: queryPresetsSlug })\n\n const [PresetDocumentDrawer, , { openDrawer: openDocumentDrawer }] = useDocumentDrawer({\n id: activePreset?.id,\n collectionSlug: queryPresetsSlug,\n })\n\n const [\n CreateNewPresetDrawer,\n ,\n { closeDrawer: closeCreateNewDrawer, openDrawer: openCreateNewDrawer },\n ] = useDocumentDrawer({\n collectionSlug: queryPresetsSlug,\n })\n\n const filterOptions = useMemo(\n () => ({\n 'payload-query-presets': {\n isTemp: {\n not_equals: true,\n },\n relatedCollection: {\n equals: collectionSlug,\n },\n },\n }),\n [collectionSlug],\n )\n\n const [ListDrawer, , { closeDrawer: closeListDrawer, openDrawer: openListDrawer }] =\n useListDrawer({\n collectionSlugs: [queryPresetsSlug],\n filterOptions,\n selectedCollection: queryPresetsSlug,\n })\n\n const handlePresetChange = useCallback(\n async (preset: QueryPreset) => {\n await refineListData(\n {\n columns: preset.columns ? transformColumnsToSearchParams(preset.columns) : undefined,\n groupBy: preset.groupBy || '',\n preset: preset.id,\n where: preset.where,\n },\n false,\n )\n },\n [refineListData],\n )\n\n const resetQueryPreset = useCallback(async () => {\n await refineListData(\n {\n columns: [],\n groupBy: '',\n preset: '',\n where: {},\n },\n false,\n )\n }, [refineListData])\n\n const handleDeletePreset = useCallback(async () => {\n try {\n await fetch(`${apiRoute}/${queryPresetsSlug}/${activePreset.id}`, {\n method: 'DELETE',\n }).then(async (res) => {\n try {\n const json = await res.json()\n\n if (res.status < 400) {\n toast.success(\n t('general:titleDeleted', {\n label: getTranslation(presetConfig?.labels?.singular, i18n),\n title: activePreset.title,\n }),\n )\n\n await resetQueryPreset()\n } else {\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n toast.error(t('error:deletingTitle', { title: activePreset.title }))\n }\n }\n } catch (_err) {\n toast.error(t('error:deletingTitle', { title: activePreset.title }))\n }\n })\n } catch (_err) {\n toast.error(t('error:deletingTitle', { title: activePreset.title }))\n }\n }, [apiRoute, activePreset?.id, activePreset?.title, t, presetConfig, i18n, resetQueryPreset])\n\n const saveCurrentChanges = useCallback(async () => {\n try {\n await fetch(`${apiRoute}/payload-query-presets/${activePreset.id}`, {\n body: JSON.stringify({\n columns: transformColumnsToPreferences(query.columns),\n groupBy: query.groupBy,\n where: query.where,\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'PATCH',\n }).then(async (res) => {\n try {\n const json = await res.json()\n\n if (res.status < 400) {\n toast.success(\n t('general:updatedLabelSuccessfully', {\n label: getTranslation(presetConfig?.labels?.singular, i18n),\n }),\n )\n\n setQueryModified(false)\n } else {\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n toast.error(t('error:unknown'))\n }\n }\n } catch (_err) {\n toast.error(t('error:unknown'))\n }\n })\n } catch (_err) {\n toast.error(t('error:unknown'))\n }\n }, [\n apiRoute,\n activePreset?.id,\n query.columns,\n query.groupBy,\n query.where,\n t,\n presetConfig?.labels?.singular,\n i18n,\n setQueryModified,\n ])\n\n const hasModifiedPreset = activePreset && modified\n\n return (\n <Fragment>\n <div className={baseClass}>\n <div className={`${baseClass}__menu`}>\n <QueryPresetToggler\n activePreset={activePreset}\n openPresetListDrawer={openListDrawer}\n resetPreset={resetQueryPreset}\n />\n <Pill\n aria-label={t('general:newLabel', { label: presetConfig?.labels?.singular })}\n className={`${baseClass}__create-new-preset`}\n icon={<PlusIcon />}\n id=\"create-new-preset\"\n onClick={() => {\n openCreateNewDrawer()\n }}\n size=\"small\"\n />\n </div>\n <div className={`${baseClass}__menu-items`}>\n {hasModifiedPreset && (\n <ListSelectionButton\n id=\"reset-preset\"\n key=\"reset\"\n onClick={async () => {\n await refineListData(\n {\n columns: transformColumnsToSearchParams(activePreset.columns),\n groupBy: activePreset.groupBy || '',\n where: activePreset.where,\n },\n false,\n )\n }}\n type=\"button\"\n >\n {t('general:reset')}\n </ListSelectionButton>\n )}\n {hasModifiedPreset && queryPresetPermissions.update && (\n <ListSelectionButton\n id=\"save-preset\"\n key=\"save\"\n onClick={async () => {\n await saveCurrentChanges()\n }}\n type=\"button\"\n >\n {activePreset?.isShared ? t('general:updateForEveryone') : t('fields:saveChanges')}\n </ListSelectionButton>\n )}\n {activePreset && queryPresetPermissions?.delete && (\n <Fragment>\n <ListSelectionButton\n id=\"delete-preset\"\n onClick={() => openModal(confirmDeletePresetModalSlug)}\n type=\"button\"\n >\n {t('general:deleteLabel', { label: presetConfig?.labels?.singular })}\n </ListSelectionButton>\n <ListSelectionButton\n id=\"edit-preset\"\n onClick={() => {\n openDocumentDrawer()\n }}\n type=\"button\"\n >\n {t('general:editLabel', { label: presetConfig?.labels?.singular })}\n </ListSelectionButton>\n </Fragment>\n )}\n </div>\n </div>\n <CreateNewPresetDrawer\n initialData={{\n columns: transformColumnsToPreferences(query.columns),\n groupBy: query.groupBy,\n relatedCollection: collectionSlug,\n where: query.where,\n }}\n onSave={async ({ doc }) => {\n closeCreateNewDrawer()\n await handlePresetChange(doc as QueryPreset)\n }}\n redirectAfterCreate={false}\n />\n <ConfirmationModal\n body={\n <Translation\n elements={{\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"general:aboutToDelete\"\n t={t}\n variables={{\n label: presetConfig?.labels?.singular,\n title: activePreset?.title,\n }}\n />\n }\n confirmingLabel={t('general:deleting')}\n heading={t('general:confirmDeletion')}\n modalSlug={confirmDeletePresetModalSlug}\n onConfirm={handleDeletePreset}\n />\n <PresetDocumentDrawer\n onDelete={() => {\n // setSelectedPreset(undefined)\n }}\n onDuplicate={async ({ doc }) => {\n await handlePresetChange(doc as QueryPreset)\n }}\n onSave={async ({ doc }) => {\n await handlePresetChange(doc as QueryPreset)\n }}\n />\n <ListDrawer\n allowCreate={false}\n disableQueryPresets\n onSelect={async ({ doc }) => {\n closeListDrawer()\n await handlePresetChange(doc as QueryPreset)\n }}\n />\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/QueryPresets/cells/GroupByCell/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAGxD,OAAO,KAAkB,MAAM,OAAO,CAAA;AAOtC,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAoDvE,CAAA"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { toWords } from 'payload/shared';
|
|
3
|
+
import React, { useMemo } from 'react';
|
|
4
|
+
import { useAuth } from '../../../../providers/Auth/index.js';
|
|
5
|
+
import { useConfig } from '../../../../providers/Config/index.js';
|
|
6
|
+
import { useTranslation } from '../../../../providers/Translation/index.js';
|
|
7
|
+
import { reduceFieldsToOptions } from '../../../../utilities/reduceFieldsToOptions.js';
|
|
8
|
+
export const QueryPresetsGroupByCell = ({
|
|
9
|
+
cellData,
|
|
10
|
+
rowData
|
|
11
|
+
}) => {
|
|
12
|
+
const {
|
|
13
|
+
i18n
|
|
14
|
+
} = useTranslation();
|
|
15
|
+
const {
|
|
16
|
+
permissions
|
|
17
|
+
} = useAuth();
|
|
18
|
+
const {
|
|
19
|
+
config
|
|
20
|
+
} = useConfig();
|
|
21
|
+
// Get the related collection from the row data
|
|
22
|
+
const relatedCollection = rowData?.relatedCollection;
|
|
23
|
+
// Get the collection config for the related collection
|
|
24
|
+
const collectionConfig = useMemo(() => {
|
|
25
|
+
if (!relatedCollection) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
return config.collections?.find(col => col.slug === relatedCollection);
|
|
29
|
+
}, [relatedCollection, config.collections]);
|
|
30
|
+
// Reduce fields to options to get proper labels
|
|
31
|
+
const reducedFields = useMemo(() => {
|
|
32
|
+
if (!collectionConfig) {
|
|
33
|
+
return [];
|
|
34
|
+
}
|
|
35
|
+
const fieldPermissions = permissions?.collections?.[relatedCollection]?.fields;
|
|
36
|
+
return reduceFieldsToOptions({
|
|
37
|
+
fieldPermissions,
|
|
38
|
+
fields: collectionConfig.fields,
|
|
39
|
+
i18n
|
|
40
|
+
});
|
|
41
|
+
}, [collectionConfig, permissions, relatedCollection, i18n]);
|
|
42
|
+
if (!cellData || typeof cellData !== 'string') {
|
|
43
|
+
return /*#__PURE__*/_jsx("div", {
|
|
44
|
+
children: "No group by selected"
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
const isDescending = cellData.startsWith('-');
|
|
48
|
+
const fieldName = isDescending ? cellData.slice(1) : cellData;
|
|
49
|
+
const direction = isDescending ? 'descending' : 'ascending';
|
|
50
|
+
// Find the field option to get the proper label
|
|
51
|
+
const fieldOption = reducedFields.find(field => field.value === fieldName);
|
|
52
|
+
const displayLabel = fieldOption?.label || toWords(fieldName);
|
|
53
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
54
|
+
children: [displayLabel, " (", direction, ")"]
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["toWords","React","useMemo","useAuth","useConfig","useTranslation","reduceFieldsToOptions","QueryPresetsGroupByCell","cellData","rowData","i18n","permissions","config","relatedCollection","collectionConfig","collections","find","col","slug","reducedFields","fieldPermissions","fields","_jsx","isDescending","startsWith","fieldName","slice","direction","fieldOption","field","value","displayLabel","label","_jsxs"],"sources":["../../../../../src/elements/QueryPresets/cells/GroupByCell/index.tsx"],"sourcesContent":["import type { DefaultCellComponentProps } from 'payload'\n\nimport { toWords } from 'payload/shared'\nimport React, { useMemo } from 'react'\n\nimport { useAuth } from '../../../../providers/Auth/index.js'\nimport { useConfig } from '../../../../providers/Config/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { reduceFieldsToOptions } from '../../../../utilities/reduceFieldsToOptions.js'\n\nexport const QueryPresetsGroupByCell: React.FC<DefaultCellComponentProps> = ({\n cellData,\n rowData,\n}) => {\n const { i18n } = useTranslation()\n const { permissions } = useAuth()\n const { config } = useConfig()\n\n // Get the related collection from the row data\n const relatedCollection = rowData?.relatedCollection as string\n\n // Get the collection config for the related collection\n const collectionConfig = useMemo(() => {\n if (!relatedCollection) {\n return null\n }\n\n return config.collections?.find((col) => col.slug === relatedCollection)\n }, [relatedCollection, config.collections])\n\n // Reduce fields to options to get proper labels\n const reducedFields = useMemo(() => {\n if (!collectionConfig) {\n return []\n }\n\n const fieldPermissions = permissions?.collections?.[relatedCollection]?.fields\n\n return reduceFieldsToOptions({\n fieldPermissions,\n fields: collectionConfig.fields,\n i18n,\n })\n }, [collectionConfig, permissions, relatedCollection, i18n])\n\n if (!cellData || typeof cellData !== 'string') {\n return <div>No group by selected</div>\n }\n\n const isDescending = cellData.startsWith('-')\n const fieldName = isDescending ? cellData.slice(1) : cellData\n const direction = isDescending ? 'descending' : 'ascending'\n\n // Find the field option to get the proper label\n const fieldOption = reducedFields.find((field) => field.value === fieldName)\n const displayLabel = fieldOption?.label || toWords(fieldName)\n\n return (\n <div>\n {displayLabel} ({direction})\n </div>\n )\n}\n"],"mappings":";AAEA,SAASA,OAAO,QAAQ;AACxB,OAAOC,KAAA,IAASC,OAAO,QAAQ;AAE/B,SAASC,OAAO,QAAQ;AACxB,SAASC,SAAS,QAAQ;AAC1B,SAASC,cAAc,QAAQ;AAC/B,SAASC,qBAAqB,QAAQ;AAEtC,OAAO,MAAMC,uBAAA,GAA+DA,CAAC;EAC3EC,QAAQ;EACRC;AAAO,CACR;EACC,MAAM;IAAEC;EAAI,CAAE,GAAGL,cAAA;EACjB,MAAM;IAAEM;EAAW,CAAE,GAAGR,OAAA;EACxB,MAAM;IAAES;EAAM,CAAE,GAAGR,SAAA;EAEnB;EACA,MAAMS,iBAAA,GAAoBJ,OAAA,EAASI,iBAAA;EAEnC;EACA,MAAMC,gBAAA,GAAmBZ,OAAA,CAAQ;IAC/B,IAAI,CAACW,iBAAA,EAAmB;MACtB,OAAO;IACT;IAEA,OAAOD,MAAA,CAAOG,WAAW,EAAEC,IAAA,CAAMC,GAAA,IAAQA,GAAA,CAAIC,IAAI,KAAKL,iBAAA;EACxD,GAAG,CAACA,iBAAA,EAAmBD,MAAA,CAAOG,WAAW,CAAC;EAE1C;EACA,MAAMI,aAAA,GAAgBjB,OAAA,CAAQ;IAC5B,IAAI,CAACY,gBAAA,EAAkB;MACrB,OAAO,EAAE;IACX;IAEA,MAAMM,gBAAA,GAAmBT,WAAA,EAAaI,WAAA,GAAcF,iBAAA,CAAkB,EAAEQ,MAAA;IAExE,OAAOf,qBAAA,CAAsB;MAC3Bc,gBAAA;MACAC,MAAA,EAAQP,gBAAA,CAAiBO,MAAM;MAC/BX;IACF;EACF,GAAG,CAACI,gBAAA,EAAkBH,WAAA,EAAaE,iBAAA,EAAmBH,IAAA,CAAK;EAE3D,IAAI,CAACF,QAAA,IAAY,OAAOA,QAAA,KAAa,UAAU;IAC7C,oBAAOc,IAAA,CAAC;gBAAI;;EACd;EAEA,MAAMC,YAAA,GAAef,QAAA,CAASgB,UAAU,CAAC;EACzC,MAAMC,SAAA,GAAYF,YAAA,GAAef,QAAA,CAASkB,KAAK,CAAC,KAAKlB,QAAA;EACrD,MAAMmB,SAAA,GAAYJ,YAAA,GAAe,eAAe;EAEhD;EACA,MAAMK,WAAA,GAAcT,aAAA,CAAcH,IAAI,CAAEa,KAAA,IAAUA,KAAA,CAAMC,KAAK,KAAKL,SAAA;EAClE,MAAMM,YAAA,GAAeH,WAAA,EAAaI,KAAA,IAAShC,OAAA,CAAQyB,SAAA;EAEnD,oBACEQ,KAAA,CAAC;eACEF,YAAA,EAAa,MAAGJ,SAAA,EAAU;;AAGjC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/QueryPresets/fields/GroupByField/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAYvD,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,wBAAwB,EAAE,wBA8DtC,CAAA"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
|
+
import { toWords } from 'payload/shared';
|
|
5
|
+
import React, { useMemo } from 'react';
|
|
6
|
+
import { FieldLabel } from '../../../../fields/FieldLabel/index.js';
|
|
7
|
+
import { useField } from '../../../../forms/useField/index.js';
|
|
8
|
+
import { useAuth } from '../../../../providers/Auth/index.js';
|
|
9
|
+
import { useConfig } from '../../../../providers/Config/index.js';
|
|
10
|
+
import { useTranslation } from '../../../../providers/Translation/index.js';
|
|
11
|
+
import { reduceFieldsToOptions } from '../../../../utilities/reduceFieldsToOptions.js';
|
|
12
|
+
import { Pill } from '../../../Pill/index.js';
|
|
13
|
+
import './index.scss';
|
|
14
|
+
export const QueryPresetsGroupByField = ({
|
|
15
|
+
field: {
|
|
16
|
+
label,
|
|
17
|
+
required
|
|
18
|
+
}
|
|
19
|
+
}) => {
|
|
20
|
+
const {
|
|
21
|
+
path,
|
|
22
|
+
value
|
|
23
|
+
} = useField();
|
|
24
|
+
const {
|
|
25
|
+
i18n
|
|
26
|
+
} = useTranslation();
|
|
27
|
+
const {
|
|
28
|
+
permissions
|
|
29
|
+
} = useAuth();
|
|
30
|
+
const {
|
|
31
|
+
config
|
|
32
|
+
} = useConfig();
|
|
33
|
+
// Get the relatedCollection from the document data
|
|
34
|
+
const relatedCollectionField = useField({
|
|
35
|
+
path: 'relatedCollection'
|
|
36
|
+
});
|
|
37
|
+
const relatedCollection = relatedCollectionField.value;
|
|
38
|
+
// Get the collection config for the related collection
|
|
39
|
+
const collectionConfig = useMemo(() => {
|
|
40
|
+
if (!relatedCollection) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
return config.collections?.find(col => col.slug === relatedCollection);
|
|
44
|
+
}, [relatedCollection, config.collections]);
|
|
45
|
+
// Reduce fields to options to get proper labels
|
|
46
|
+
const reducedFields = useMemo(() => {
|
|
47
|
+
if (!collectionConfig) {
|
|
48
|
+
return [];
|
|
49
|
+
}
|
|
50
|
+
const fieldPermissions = permissions?.collections?.[relatedCollection]?.fields;
|
|
51
|
+
return reduceFieldsToOptions({
|
|
52
|
+
fieldPermissions,
|
|
53
|
+
fields: collectionConfig.fields,
|
|
54
|
+
i18n
|
|
55
|
+
});
|
|
56
|
+
}, [collectionConfig, permissions, relatedCollection, i18n]);
|
|
57
|
+
const renderGroupBy = groupByValue => {
|
|
58
|
+
if (!groupByValue) {
|
|
59
|
+
return 'No group by selected';
|
|
60
|
+
}
|
|
61
|
+
const isDescending = groupByValue.startsWith('-');
|
|
62
|
+
const fieldName = isDescending ? groupByValue.slice(1) : groupByValue;
|
|
63
|
+
const direction = isDescending ? 'descending' : 'ascending';
|
|
64
|
+
// Find the field option to get the proper label
|
|
65
|
+
const fieldOption = reducedFields.find(field => field.value === fieldName);
|
|
66
|
+
const displayLabel = fieldOption?.label || toWords(fieldName);
|
|
67
|
+
return /*#__PURE__*/_jsxs(Pill, {
|
|
68
|
+
pillStyle: "always-white",
|
|
69
|
+
size: "small",
|
|
70
|
+
children: [/*#__PURE__*/_jsx("b", {
|
|
71
|
+
children: displayLabel
|
|
72
|
+
}), " (", direction, ")"]
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
76
|
+
className: "field-type query-preset-group-by-field",
|
|
77
|
+
children: [/*#__PURE__*/_jsx(FieldLabel, {
|
|
78
|
+
as: "h3",
|
|
79
|
+
label: label,
|
|
80
|
+
path: path,
|
|
81
|
+
required: required
|
|
82
|
+
}), /*#__PURE__*/_jsx("div", {
|
|
83
|
+
className: "value-wrapper",
|
|
84
|
+
children: renderGroupBy(value)
|
|
85
|
+
})]
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
//# sourceMappingURL=index.js.map
|