@payloadcms/ui 3.78.0-canary.0 → 3.78.0-canary.2
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/DeleteDocument/index.d.ts.map +1 -1
- package/dist/elements/DeleteDocument/index.js +16 -5
- package/dist/elements/DeleteDocument/index.js.map +1 -1
- package/dist/elements/DeleteMany/index.d.ts +21 -1
- package/dist/elements/DeleteMany/index.d.ts.map +1 -1
- package/dist/elements/DeleteMany/index.js +25 -11
- package/dist/elements/DeleteMany/index.js.map +1 -1
- package/dist/elements/DocumentControls/index.d.ts.map +1 -1
- package/dist/elements/DocumentControls/index.js +8 -2
- package/dist/elements/DocumentControls/index.js.map +1 -1
- package/dist/elements/GroupByBuilder/index.d.ts +4 -1
- package/dist/elements/GroupByBuilder/index.d.ts.map +1 -1
- package/dist/elements/GroupByBuilder/index.js +81 -39
- package/dist/elements/GroupByBuilder/index.js.map +1 -1
- package/dist/elements/QueryPresets/fields/ColumnsField/index.d.ts.map +1 -1
- package/dist/elements/QueryPresets/fields/ColumnsField/index.js +100 -37
- package/dist/elements/QueryPresets/fields/ColumnsField/index.js.map +1 -1
- package/dist/elements/QueryPresets/fields/GroupByField/index.d.ts.map +1 -1
- package/dist/elements/QueryPresets/fields/GroupByField/index.js +24 -48
- package/dist/elements/QueryPresets/fields/GroupByField/index.js.map +1 -1
- package/dist/elements/QueryPresets/fields/WhereField/index.d.ts.map +1 -1
- package/dist/elements/QueryPresets/fields/WhereField/index.js +73 -94
- package/dist/elements/QueryPresets/fields/WhereField/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/DefaultFilter/index.d.ts +1 -1
- package/dist/elements/WhereBuilder/Condition/DefaultFilter/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/DefaultFilter/index.js +2 -2
- package/dist/elements/WhereBuilder/Condition/DefaultFilter/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Text/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Text/index.js +30 -32
- package/dist/elements/WhereBuilder/Condition/Text/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/index.d.ts +2 -2
- package/dist/elements/WhereBuilder/Condition/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/index.js.map +1 -1
- package/dist/elements/WhereBuilder/index.d.ts +3 -2
- package/dist/elements/WhereBuilder/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/index.js +33 -18
- package/dist/elements/WhereBuilder/index.js.map +1 -1
- package/dist/elements/WhereBuilder/types.d.ts +4 -1
- package/dist/elements/WhereBuilder/types.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/types.js.map +1 -1
- package/dist/exports/client/{DatePicker-YF5TBW3N.js → DatePicker-CL2EGBVQ.js} +2 -2
- package/dist/exports/client/{chunk-ZPLD37T2.js → chunk-SH42NW5R.js} +2 -2
- package/dist/exports/client/{chunk-ZPLD37T2.js.map → chunk-SH42NW5R.js.map} +4 -4
- package/dist/exports/client/index.js +12 -12
- package/dist/exports/client/index.js.map +4 -4
- package/dist/providers/DocumentInfo/types.d.ts +7 -0
- package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/types.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/utilities/getColumns.d.ts.map +1 -1
- package/dist/utilities/getColumns.js +1 -2
- package/dist/utilities/getColumns.js.map +1 -1
- package/dist/utilities/shouldPermanentlyDelete.d.ts +13 -0
- package/dist/utilities/shouldPermanentlyDelete.d.ts.map +1 -0
- package/dist/utilities/shouldPermanentlyDelete.js +11 -0
- package/dist/utilities/shouldPermanentlyDelete.js.map +1 -0
- package/dist/views/CollectionFolder/ListSelection/index.d.ts.map +1 -1
- package/dist/views/CollectionFolder/ListSelection/index.js +1 -0
- package/dist/views/CollectionFolder/ListSelection/index.js.map +1 -1
- package/dist/views/List/ListHeader/index.d.ts +1 -0
- package/dist/views/List/ListHeader/index.d.ts.map +1 -1
- package/dist/views/List/ListHeader/index.js +3 -0
- package/dist/views/List/ListHeader/index.js.map +1 -1
- package/dist/views/List/ListSelection/index.d.ts +2 -0
- package/dist/views/List/ListSelection/index.d.ts.map +1 -1
- package/dist/views/List/ListSelection/index.js +22 -16
- package/dist/views/List/ListSelection/index.js.map +1 -1
- package/dist/views/List/index.d.ts.map +1 -1
- package/dist/views/List/index.js +2 -0
- package/dist/views/List/index.js.map +1 -1
- package/package.json +4 -4
- /package/dist/exports/client/{DatePicker-YF5TBW3N.js.map → DatePicker-CL2EGBVQ.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
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","UnpublishButton","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","CustomStatus","CustomUnpublishButton","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","CustomComponent","Fallback","collection","global","publishedDocUpdatedAt","timestamps","title","preview","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'\nimport { UnpublishButton } from '../UnpublishButton/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 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?: 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 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 } = 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 serverURL,\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 <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 && (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 <RenderCustomComponent\n CustomComponent={CustomUnpublishButton}\n Fallback={<UnpublishButton />}\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","useDocumentInfo","useEditDepth","useLivePreviewContext","useTranslation","formatDate","Autosave","Button","CopyLocaleData","DeleteDocument","DuplicateDocument","MoveDocToFolder","Gutter","LivePreviewToggler","Locked","PermanentlyDeleteButton","Popup","PopupList","PreviewButton","PublishButton","RenderCustomComponent","RestoreButton","SaveButton","SaveDraftButton","Status","UnpublishButton","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","CustomStatus","CustomUnpublishButton","undefined","i18n","t","editDepth","config","getEntityConfig","collectionConfig","collectionSlug","globalConfig","globalSlug","isLivePreviewEnabled","hasDeletePermission","docHasDeletePermission","hasTrashPermission","docHasTrashPermission","admin","t1","localization","routes","t2","dateFormat","adminRoute","updatedAt","setUpdatedAt","useState","createdAt","setCreatedAt","processing","initializing","t3","t4","date","pattern","hasCreatePermission","create","collectionDeletePermission","delete","trash","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","CustomComponent","Fallback","collection","global","publishedDocUpdatedAt","timestamps","title","preview","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 { 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 } 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'\nimport { UnpublishButton } from '../UnpublishButton/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 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?: 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 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 } = 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 serverURL,\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 collectionDeletePermission = permissions && 'delete' in permissions && permissions.delete\n\n const hasDeletePermission = collectionConfig?.trash\n ? docHasTrashPermission || docHasDeletePermission\n : collectionDeletePermission\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 <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 && (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 {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 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 <RenderCustomComponent\n CustomComponent={CustomUnpublishButton}\n Fallback={<UnpublishButton />}\n />\n {EditMenuItems}\n </PopupList.ButtonGroup>\n </Popup>\n )}\n </div>\n </div>\n <div className={`${baseClass}__divider`} />\n </Gutter>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AASA,SAASC,cAAc,QAAQ;AAC/B,SAASC,cAAc,EAAEC,kBAAkB,EAAEC,gBAAgB,QAAQ;AACrE,OAAOC,KAAA,IAASC,QAAQ,EAAEC,SAAS,QAAQ;AAI3C,SAASC,mBAAmB,EAAEC,iBAAiB,QAAQ;AACvD,SAASC,SAAS,QAAQ;AAC1B,SAASC,eAAe,QAAQ;AAChC,SAASC,YAAY,QAAQ;AAC7B,SAASC,qBAAqB,QAAQ;AACtC,SAASC,cAAc,QAAQ;AAC/B,SAASC,UAAU,QAAQ;AAC3B,SAASC,QAAQ,QAAQ;AACzB,SAASC,MAAM,QAAQ;AACvB,SAASC,cAAc,QAAQ;AAC/B,SAASC,cAAc,QAAQ;AAC/B,SAASC,iBAAiB,QAAQ;AAClC,SAASC,eAAe,QAAQ;AAChC,SAASC,MAAM,QAAQ;AACvB,SAASC,kBAAkB,QAAQ;AACnC,SAASC,MAAM,QAAQ;AACvB,SAASC,uBAAuB,QAAQ;AACxC,SAASC,KAAK,EAAEC,SAAS,QAAQ;AACjC,SAASC,aAAa,QAAQ;AAC9B,SAASC,aAAa,QAAQ;AAC9B,SAASC,qBAAqB,QAAQ;AACtC,SAASC,aAAa,QAAQ;AAC9B,SAASC,UAAU,QAAQ;AAC3B,OAAO;AACP,SAASC,eAAe,QAAQ;AAChC,SAASC,MAAM,QAAQ;AACvB,SAASC,eAAe,QAAQ;AAEhC,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,gBAAA,GAoCRC,KAAA;EAAA,MAAAC,CAAA,GAAAvC,EAAA;EACH;IAAAwC,EAAA;IAAAC,IAAA;IAAAC,sBAAA;IAAAC,gBAAA,EAAAC,EAAA;IAAAC,IAAA;IAAAC,cAAA;IAAAC,aAAA;IAAAC,aAAA;IAAAC,iBAAA;IAAAC,aAAA;IAAAC,SAAA;IAAAC,UAAA;IAAAC,SAAA;IAAAC,QAAA;IAAAC,iBAAA;IAAAC,WAAA;IAAAC,SAAA;IAAAC,UAAA;IAAAC,WAAA;IAAAC,uBAAA;IAAAC,mBAAA;IAAAC,sBAAA;IAAAC,oBAAA;IAAAC;EAAA,IAgCI1B,KAAA;EA5BgB;IAAAV,aAAA,EAAAqC,mBAAA;IAAApC,aAAA,EAAAqC,mBAAA;IAAAlC,UAAA,EAAAmC,gBAAA;IAAAlC,eAAA,EAAAmC,qBAAA;IAAAlC,MAAA,EAAAmC,YAAA;IAAAlC,eAAA,EAAAmC;EAAA,IAAA1B,EAOZ,KAAA2B,SAAA,QAPY3B,EAOZ;EAuBR;IAAA4B,IAAA;IAAAC;EAAA,IAAoB3D,cAAA;EAEpB,MAAA4D,SAAA,GAAkB9D,YAAA;EAElB;IAAA+D,MAAA;IAAAC;EAAA,IAAoClE,SAAA;EAEpC,MAAAmE,gBAAA,GAAyBD,eAAA;IAAAE,cAAA,EAAkCrC;EAAA,CAAK;EAEhE,MAAAsC,YAAA,GAAqBH,eAAA;IAAAI,UAAA,EAA8BvC;EAAA,CAAK;EAExD;IAAAwC;EAAA,IAAiCpE,qBAAA;EAEjC;IAAAqE,mBAAA,EAAAC,sBAAA;IAAAC,kBAAA,EAAAC;EAAA,IACE1E,eAAA;EAEF;IAAA2E,KAAA,EAAAC,EAAA;IAAAC,YAAA;IAAAC,MAAA,EAAAC;EAAA,IAKIf,MAAA;EAJK;IAAAgB;EAAA,IAAAJ,EAAc;EAEb;IAAAD,KAAA,EAAAM;EAAA,IAAAF,EAAqB;EAK/B,OAAAG,SAAA,EAAAC,YAAA,IAAkCzF,KAAA,CAAA0F,QAAA,CAAuB;EACzD,OAAAC,SAAA,EAAAC,YAAA,IAAkC5F,KAAA,CAAA0F,QAAA,CAAuB;EAEzD,MAAAG,UAAA,GAAmBzF,iBAAA;EACnB,MAAA0F,YAAA,GAAqB3F,mBAAA;EAAA,IAAA4F,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAA9D,CAAA,QAAAM,IAAA,IAAAN,CAAA,QAAAoD,UAAA,IAAApD,CAAA,QAAAiC,IAAA;IAEX4B,EAAA,GAAAA,CAAA;MAAA,IACJvD,IAAA,EAAAgD,SAAA;QACFC,YAAA,CAAa/E,UAAA;UAAAuF,IAAA,EAAmBzD,IAAA,CAAAgD,SAAA;UAAArB,IAAA;UAAA+B,OAAA,EAA+BZ;QAAA,CAAW;MAAA;MAAA,IAExE9C,IAAA,EAAAmD,SAAA;QACFC,YAAA,CAAalF,UAAA;UAAAuF,IAAA,EAAmBzD,IAAA,CAAAmD,SAAA;UAAAxB,IAAA;UAAA+B,OAAA,EAA+BZ;QAAA,CAAW;MAAA;IAAA;IAE3EU,EAAA,IAACxD,IAAA,EAAM2B,IAAA,EAAMmB,UAAA;IAAWpD,CAAA,MAAAM,IAAA;IAAAN,CAAA,MAAAoD,UAAA;IAAApD,CAAA,MAAAiC,IAAA;IAAAjC,CAAA,MAAA6D,EAAA;IAAA7D,CAAA,MAAA8D,EAAA;EAAA;IAAAD,EAAA,GAAA7D,CAAA;IAAA8D,EAAA,GAAA9D,CAAA;EAAA;EAP3BhC,SAAA,CAAU6F,EAOV,EAAGC,EAAwB;EAE3B,MAAAG,mBAAA,GAA4B7C,WAAA,IAAe,YAAYA,WAAA,IAAeA,WAAA,CAAA8C,MAAkB;EAExF,MAAAC,0BAAA,GAAmC/C,WAAA,IAAe,YAAYA,WAAA,IAAeA,WAAA,CAAAgD,MAAkB;EAE/F,MAAAzB,mBAAA,GAA4BL,gBAAA,EAAA+B,KAAA,GACxBvB,qBAAA,IAAyBF,sBAAA,GACzBuB,0BAAA;EAEJ,MAAAG,WAAA,GAAoBC,OAAA,CAClBjC,gBAAA,IAAoBrC,EAAA,KAAOM,cAAA,KAAmB0D,mBAAA,IAAuBtB,mBAAkB;EAGzF,MAAA6B,2BAAA,GACE,CAACvE,EAAA,IAAMqC,gBAAA,EAAAmC,QAAA,EAAAC,MAA4B,IAAUpC,gBAAA,CAAAmC,QAAA,EAAAC,MAAA,CAAAC,QAAkC;EAEjF,MAAAC,sBAAA,GAA+B/G,gBAAA,CAAiB2E,YAAA;EAChD,MAAAqC,0BAAA,GAAmChH,gBAAA,CAAiByE,gBAAA;EACpD,MAAAwC,yBAAA,GAAkClH,kBAAA,CAAmB0E,gBAAA;EACrD,MAAAyC,qBAAA,GAA8BnH,kBAAA,CAAmB4E,YAAA;EACjD,MAAAwC,eAAA,GAAwBF,yBAAA,IAA6BC,qBAAA;EAErD,MAAAE,mBAAA,GACEH,yBAAC,IACCxC,gBAAA,CAAAmC,QAAA,CAAAC,MAAA,CAAAQ,QAAA,UAA8C,IAC9C5C,gBAAA,CAAAmC,QAAA,CAAAC,MAAA,CAAAQ,QAAA,CAAAD,mBAAA,SAAkE,IACnEF,qBAAA,IACCvC,YAAA,CAAAiC,QAAA,CAAAC,MAAA,CAAAQ,QAAA,UAA0C,IAC1C1C,YAAA,CAAAiC,QAAA,CAAAC,MAAA,CAAAQ,QAAA,CAAAD,mBAAA,SAA8D;EAClE,MAAAE,gBAAA,GAAyBlC,YAAA,KAAiBX,gBAAA,EAAAS,KAAA,EAAAqC,mBAAyB;EAEnE,MAAAC,kBAAA,GAA2B/C,gBAAA,IAAoBA,gBAAA,CAAAgD,OAAwB;EACvE,MAAAC,kBAAA,GAA2B9D,IAAA,IAAQJ,uBAAA;EAAA,OAGjCmE,KAAA,CAAAzG,MAAA;IAAA0G,SAAA,EAAA5F,SAAA;IAAA6F,QAAA,GACEF,KAAA,CAAC;MAAAC,SAAA,EAAe,GAAA5F,SAAA,WAAuB;MAAA6F,QAAA,GACrCF,KAAA,CAAC;QAAAC,SAAA,EAAe,GAAA5F,SAAA,WAAuB;QAAA6F,QAAA,GACpCH,kBAAA,IAAsBF,kBAAA,GACrBG,KAAA,CAAC;UAAAC,SAAA,EAAe,GAAA5F,SAAA,cAA0B;UAAA6F,QAAA,GACvCH,kBAAA,IACCI,IAAA,CAAA1G,MAAA;YAAAwG,SAAA,EAAmB,GAAA5F,SAAA,mBAA+B;YAAA4B;UAAA,C,GAEnD4D,kBAAA,IAAsBjD,MAAA,CAAAkD,OAAc,KAAKxE,SAAA,IACxC6E,IAAA,CAAA7G,eAAA;YAAA8G,oBAAA,EACwBxD,MAAA,CAAAkD,OAAA,CAAApF,IAAA;YAAA2F,eAAA,EACLzD,MAAA,CAAAkD,OAAA,CAAAQ;UAAA,C;iBAIrB,EACJN,KAAA,CAAC;UAAAC,SAAA,EAAc,GAAA5F,SAAA,QAAoB;UAAA6F,QAAA,GAChCpD,gBAAA,KAAqB1B,SAAA,KAAcD,aAAA,IAClCgF,IAAA,CAAC;YAAAF,SAAA,EAAc,GAAA5F,SAAA,aAAyB;YAAA6F,QAAA,EACtCC,IAAA,CAAC;cAAAF,SAAA,EAAa,GAAA5F,SAAA,SAAqB;cAAA6F,QAAA,EAChCzD,IAAA,CAAAC,CAAA,CAAO;gBAAA6D,KAAA,EACCrI,cAAA,CACL4E,gBAAA,EAAA0D,MAAA,EAAAC,QAAA,IAAsChE,IAAA,CAAAC,CAAA,CAAO,qBAC7CD,IAAA;cAAA,CAEJ;YAAA,C;cAIJ,CAAA4C,0BAAA,IAA8BD,sBAAqB,KACnDY,KAAA,CAAAzH,QAAA;YAAA2H,QAAA,GACI,CAAAlD,YAAA,IAAiBF,gBAAA,IAAoB1B,SAAS,KAC9C+E,IAAA,CAAC;cAAAF,SAAA,EACY,CAAC,GAAA5F,SAAA,UAAsB,EAAE,GAAAA,SAAA,aAAyB,EAAAqG,MAAA,CAAA3B,OACnD,EAAA4B,IAAA,CACF;cAAAT,QAAA,EAERC,IAAA,CAAApG,qBAAA;gBAAA6G,eAAA,EAAwCtE,YAAA;gBAAAuE,QAAA,EAAwBV,IAAA,CAAAhG,MAAA,IAAC;cAAA,C;gBAGpEe,iBAAA,IACCsE,eAAA,KACCR,2BAAA,KACA1D,SAAA,IACC6E,IAAA,CAAC;cAAAF,SAAA,EAAc,GAAA5F,SAAA,aAAyB;cAAA6F,QAAA,EACtCC,IAAA,CAAAlH,QAAA;gBAAA6H,UAAA,EACchE,gBAAA;gBAAAiE,MAAA,EACJ/D,YAAA;gBAAAvC,EAAA;gBAAAuG,qBAAA,EAEelG,IAAA,EAAAmD;cAAA,C;;cAMlCnB,gBAAA,EAAAmE,UAAA,KAAiC7F,SAAA,IAAaD,aAAY,KACzD6E,KAAA,CAAAzH,QAAA;YAAA2H,QAAA,GACEF,KAAA,CAAC;cAAAC,SAAA,EACY,CAAC,GAAA5F,SAAA,aAAyB,EAAE,GAAAA,SAAA,cAA0B,EAAAqG,MAAA,CAAA3B,OACvD,EAAA4B,IAAA,CACF;cAAAO,KAAA,EACDpG,IAAA,EAAAgD,SAAA,GAAkBA,SAAA,GAAY;cAAAoC,QAAA,GAErCF,KAAA,CAAC;gBAAAC,SAAA,EAAa,GAAA5F,SAAA,SAAqB;gBAAA6F,QAAA,GAChCzD,IAAA,CAAAC,CAAA,CAAOpB,SAAA,GAAY,oBAAoB,yBAAwB;cAAA,C,GAGjER,IAAA,EAAAgD,SAAA,IAAmBqC,IAAA,CAAC;gBAAAF,SAAA,EAAa,GAAA5F,SAAA,SAAqB;gBAAA6F,QAAA,EAAGpC;cAAA,C;gBAE5DkC,KAAA,CAAC;cAAAC,SAAA,EACY,CAAC,GAAA5F,SAAA,aAAyB,EAAE,GAAAA,SAAA,cAA0B,EAAAqG,MAAA,CAAA3B,OACvD,EAAA4B,IAAA,CACF;cAAAO,KAAA,EACDpG,IAAA,EAAAmD,SAAA,GAAkBA,SAAA,GAAY;cAAAiC,QAAA,GAErCF,KAAA,CAAC;gBAAAC,SAAA,EAAa,GAAA5F,SAAA,SAAqB;gBAAA6F,QAAA,GAAGzD,IAAA,CAAAC,CAAA,CAAO,oBAAmB;cAAA,C,GAC/D5B,IAAA,EAAAmD,SAAA,IAAmBkC,IAAA,CAAC;gBAAAF,SAAA,EAAa,GAAA5F,SAAA,SAAqB;gBAAA6F,QAAA,EAAGjC;cAAA,C;;;;UAMpE+B,KAAA,CAAC;QAAAC,SAAA,EAAe,GAAA5F,SAAA,oBAAgC;QAAA6F,QAAA,GAC9CF,KAAA,CAAC;UAAAC,SAAA,EAAe,GAAA5F,SAAA,YAAwB;UAAA6F,QAAA,GACrCvF,sBAAA,EACAuC,oBAAA,KAAyB7B,UAAA,IAAc8E,IAAA,CAAA3G,kBAAA,IAAC,GACvC,CAAAsD,gBAAA,EAAAS,KAAA,CAAA4D,OAAA,IAAmCnE,YAAA,EAAAO,KAAA,CAAA4D,OAA0B,KAC7DhB,IAAA,CAAApG,qBAAA;YAAA6G,eAAA,EACmB1E,mBAAA;YAAA2E,QAAA,EACPV,IAAA,CAAAtG,aAAA,IAAC;UAAA,C,GAGdqB,iBAAA,KAAsBI,SAAA,IACrB6E,IAAA,CAAA5H,QAAA;YAAA2H,QAAA,EACGb,0BAAA,IAA8BD,sBAAA,GAC7BY,KAAA,CAAAzH,QAAA;cAAA2H,QAAA,GACI,CAAAlB,2BAAA,KACCQ,eAAA,IACAA,eAAA,IAAmBC,mBAAmB,KACvCU,IAAA,CAAApG,qBAAA;gBAAA6G,eAAA,EACmBvE,qBAAA;gBAAAwE,QAAA,EACPV,IAAA,CAAAjG,eAAA,IAAC;cAAA,C,GAGfiG,IAAA,CAAApG,qBAAA;gBAAA6G,eAAA,EACmBzE,mBAAA;gBAAA0E,QAAA,EACPV,IAAA,CAAArG,aAAA,IAAC;cAAA,C;iBAIfqG,IAAA,CAAApG,qBAAA;cAAA6G,eAAA,EACmBxE,gBAAA;cAAAyE,QAAA,EACPV,IAAA,CAAAlG,UAAA,IAAC;YAAA,C;cAKlBmD,sBAAA,IAA0B9B,SAAA,IACzB6E,IAAA,CAAAzG,uBAAA;YAAA0H,QAAA,EACW;YAAArE,cAAA,EACOD,gBAAA,EAAApC,IAAA;YAAAD,EAAA,EACZA,EAAA,CAAA4G,QAAA,CAAW;YAAA9F,QAAA;YAAAO,mBAAA;YAAAwF,aAAA,EAGAxE,gBAAA,EAAA0D,MAAA,EAAAC;UAAA,C,GAGlBvF,iBAAA,IAAqBI,SAAA,IACpB6E,IAAA,CAAAnG,aAAA;YAAAoH,QAAA,EACW;YAAArE,cAAA,EACOD,gBAAA,EAAApC,IAAA;YAAAD,EAAA,EACZA,EAAA,CAAA4G,QAAA,CAAW;YAAA3F,SAAA;YAAAM,oBAAA;YAAAsF,aAAA,EAGAxE,gBAAA,EAAA0D,MAAA,EAAAC;UAAA,C,GAGlBxE,IAAA,IAAQJ,uBAAA,IACPsE,IAAA,CAAAjH,MAAA;YAAAqI,WAAA,EACc;YAAA9G,EAAA,EACT;YAAA+G,OAAA,EACM7F,UAAA;YAAA8F,IAAA,EACJ;YAAAC,IAAA,EACA;YAAAxB,QAAA,EAEJxD,CAAA,CAAE;UAAA,C;YAIRoC,WAAA,KAAgBjD,uBAAA,IACfsE,IAAA,CAAAxG,KAAA;UAAAgI,MAAA,EAEI3B,KAAA,CAAC;YAAAC,SAAA,EAAe,GAAA5F,SAAA,QAAoB;YAAA6F,QAAA,GAClCC,IAAA,CAAC,YACDA,IAAA,CAAC,YACDA,IAAA,CAAC;UAAA,C;qBAGM,GAAA9F,SAAA,SAAqB;UAAAuH,QAAA,EACtBxD,YAAA,IAAgBD,UAAA;UAAA0D,eAAA,EACV;UAAAJ,IAAA,EACX;UAAAK,aAAA,EACS;UAAA5B,QAAA,EAEdF,KAAA,CAAApG,SAAA,CAAAmI,WAAA;YAAA7B,QAAA,GACGP,gBAAA,IAAoBQ,IAAA,CAAAhH,cAAA,IAAC,GACrBsF,mBAAA,IACCuB,KAAA,CAAA1H,KAAA,CAAAC,QAAA;cAAA2H,QAAA,GACG,CAAClF,aAAA,IACAmF,IAAA,CAAA5H,QAAA;gBAAA2H,QAAA,EACGvD,SAAA,IAAY,GACXwD,IAAA,CAAAvG,SAAA,CAAAV,MAAA;kBAAAuB,EAAA,EAAqB;kBAAA+G,OAAA,EAAyBhG,iBAAA;kBAAA0E,QAAA,EAC3CzD,IAAA,CAAAC,CAAA,CAAO;gBAAA,C,IAGVyD,IAAA,CAAAvG,SAAA,CAAAV,MAAA;kBAAA8I,IAAA,EACQ7J,cAAA;oBAAA0F,UAAA;oBAAAoE,IAAA,EAEE,gBAAgBnF,gBAAA,EAAApC,IAAA;kBAA+B,CACvD;kBAAAD,EAAA,EACG;kBAAAyF,QAAA,EAEFzD,IAAA,CAAAC,CAAA,CAAO;gBAAA,C;kBAKfI,gBAAA,CAAAoF,gBAAA,SAAsC,IAAQ9G,SAAA,IAC7C4E,KAAA,CAAAmC,SAAA;gBAAAjC,QAAA,GACEC,IAAA,CAAA9G,iBAAA;kBAAAoB,EAAA;kBAAAgB,WAAA;kBAAAM,sBAAA;kBAAAuF,aAAA,EAIiBxE,gBAAA,EAAA0D,MAAA,EAAAC,QAAA;kBAAA/F,IAAA,EACToC,gBAAA,EAAApC;gBAAA,C,GAEP+C,YAAA,IACC0C,IAAA,CAAA9G,iBAAA;kBAAAoB,EAAA;kBAAAgB,WAAA;kBAAAM,sBAAA;kBAAAqG,aAAA;kBAAAd,aAAA,EAKiBxE,gBAAA,EAAA0D,MAAA,EAAAC,QAAA;kBAAA/F,IAAA,EACToC,gBAAA,EAAApC;gBAAA,C;;gBAOjByC,mBAAA,IACCgD,IAAA,CAAA/G,cAAA;cAAAgI,QAAA,EACW;cAAArE,cAAA,EACOD,gBAAA,EAAApC,IAAA;cAAAD,EAAA,EACZA,EAAA,CAAA4G,QAAA,CAAW;cAAA9F,QAAA;cAAAO,mBAAA;cAAAwF,aAAA,EAGAxE,gBAAA,EAAA0D,MAAA,EAAAC,QAAA;cAAA4B,UAAA,EACHvF,gBAAA,EAAAS,KAAA,EAAA8E;YAAA,C,GAGhBlC,IAAA,CAAApG,qBAAA;cAAA6G,eAAA,EACmBrE,qBAAA;cAAAsE,QAAA,EACPV,IAAA,CAAA/F,eAAA,IAAC;YAAA,C,GAEZa,aAAA;UAAA,C;;;QAMXkF,IAAA,CAAC;MAAAF,SAAA,EAAe,GAAA5F,SAAA;IAAuB,C;;CAG7C","ignoreList":[]}
|
|
@@ -3,7 +3,10 @@ import './index.scss';
|
|
|
3
3
|
import React from 'react';
|
|
4
4
|
export type Props = {
|
|
5
5
|
readonly collectionSlug: SanitizedCollectionConfig['slug'];
|
|
6
|
-
fields: ClientField[];
|
|
6
|
+
readonly fields: ClientField[];
|
|
7
|
+
/** When set, GroupByBuilder is controlled by the form (value + onChange) instead of list query. */
|
|
8
|
+
readonly onChange?: (groupBy: string) => void;
|
|
9
|
+
readonly value?: string;
|
|
7
10
|
};
|
|
8
11
|
export declare const GroupByBuilder: React.FC<Props>;
|
|
9
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/GroupByBuilder/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAS,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAE5E,OAAO,cAAc,CAAA;AAErB,OAAO,KAAkB,MAAM,OAAO,CAAA;AAStC,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,cAAc,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAA;IAC1D,MAAM,EAAE,WAAW,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/GroupByBuilder/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAS,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAE5E,OAAO,cAAc,CAAA;AAErB,OAAO,KAAkB,MAAM,OAAO,CAAA;AAStC,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,cAAc,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAA;IAC1D,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,CAAA;IAC9B,mGAAmG;IACnG,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAyBD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA6J1C,CAAA"}
|
|
@@ -20,7 +20,9 @@ const baseClass = 'group-by-builder';
|
|
|
20
20
|
const supportedFieldTypes = ['text', 'textarea', 'number', 'select', 'relationship', 'date', 'checkbox', 'radio', 'email', 'number', 'upload'];
|
|
21
21
|
export const GroupByBuilder = ({
|
|
22
22
|
collectionSlug,
|
|
23
|
-
fields
|
|
23
|
+
fields,
|
|
24
|
+
onChange,
|
|
25
|
+
value: valueProp
|
|
24
26
|
}) => {
|
|
25
27
|
const {
|
|
26
28
|
i18n,
|
|
@@ -29,18 +31,85 @@ export const GroupByBuilder = ({
|
|
|
29
31
|
const {
|
|
30
32
|
permissions
|
|
31
33
|
} = useAuth();
|
|
34
|
+
const listQuery = useListQuery();
|
|
35
|
+
const isFormMode = typeof onChange === 'function';
|
|
36
|
+
const groupByRaw = isFormMode ? valueProp : listQuery.query?.groupBy;
|
|
37
|
+
const groupByFieldName = groupByRaw?.replace(/^-/, '');
|
|
32
38
|
const fieldPermissions = permissions?.collections?.[collectionSlug]?.fields;
|
|
33
39
|
const reducedFields = useMemo(() => reduceFieldsToOptions({
|
|
34
40
|
fieldPermissions,
|
|
35
41
|
fields,
|
|
36
42
|
i18n
|
|
37
43
|
}), [fields, fieldPermissions, i18n]);
|
|
38
|
-
const {
|
|
39
|
-
query,
|
|
40
|
-
refineListData
|
|
41
|
-
} = useListQuery();
|
|
42
|
-
const groupByFieldName = query.groupBy?.replace(/^-/, '');
|
|
43
44
|
const groupByField = reducedFields.find(field => field.value === groupByFieldName);
|
|
45
|
+
const handleFieldChange = useMemo(() => {
|
|
46
|
+
if (isFormMode) {
|
|
47
|
+
return v => {
|
|
48
|
+
const value = v === null ? undefined : v.value;
|
|
49
|
+
const newGroupBy = value ? groupByRaw?.startsWith('-') ? `-${value}` : value : '';
|
|
50
|
+
onChange?.(newGroupBy);
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
return v_0 => {
|
|
54
|
+
void (async () => {
|
|
55
|
+
if (typeof listQuery.refineListData !== 'function') {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const value_0 = v_0 === null ? undefined : v_0.value;
|
|
59
|
+
if (v_0 === null) {
|
|
60
|
+
await listQuery.refineListData({
|
|
61
|
+
groupBy: '',
|
|
62
|
+
page: 1
|
|
63
|
+
});
|
|
64
|
+
} else {
|
|
65
|
+
await listQuery.refineListData({
|
|
66
|
+
groupBy: value_0 ? listQuery.query?.groupBy?.startsWith('-') ? `-${value_0}` : value_0 : undefined,
|
|
67
|
+
page: 1
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
})();
|
|
71
|
+
};
|
|
72
|
+
}, [isFormMode, groupByRaw, listQuery, onChange]);
|
|
73
|
+
const handleClear = useMemo(() => {
|
|
74
|
+
if (isFormMode) {
|
|
75
|
+
return () => onChange?.('');
|
|
76
|
+
}
|
|
77
|
+
return () => {
|
|
78
|
+
void (async () => {
|
|
79
|
+
if (typeof listQuery.refineListData === 'function') {
|
|
80
|
+
await listQuery.refineListData({
|
|
81
|
+
groupBy: ''
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
})();
|
|
85
|
+
};
|
|
86
|
+
}, [isFormMode, listQuery, onChange]);
|
|
87
|
+
const handleDirectionChange = useMemo(() => {
|
|
88
|
+
if (isFormMode) {
|
|
89
|
+
return ({
|
|
90
|
+
value: value_1
|
|
91
|
+
}) => {
|
|
92
|
+
if (!groupByFieldName) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
onChange?.(value_1 === 'asc' ? groupByFieldName : `-${groupByFieldName}`);
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
return ({
|
|
99
|
+
value: value_2
|
|
100
|
+
}) => {
|
|
101
|
+
void (async () => {
|
|
102
|
+
if (!groupByFieldName || typeof listQuery.refineListData !== 'function') {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
await listQuery.refineListData({
|
|
106
|
+
groupBy: value_2 === 'asc' ? groupByFieldName : `-${groupByFieldName}`,
|
|
107
|
+
page: 1
|
|
108
|
+
});
|
|
109
|
+
})();
|
|
110
|
+
};
|
|
111
|
+
}, [groupByFieldName, isFormMode, listQuery, onChange]);
|
|
112
|
+
const directionValue = !groupByRaw || typeof groupByRaw !== 'string' ? 'asc' : groupByRaw.startsWith('-') ? 'desc' : 'asc';
|
|
44
113
|
return /*#__PURE__*/_jsxs("div", {
|
|
45
114
|
className: baseClass,
|
|
46
115
|
children: [/*#__PURE__*/_jsxs("div", {
|
|
@@ -49,14 +118,10 @@ export const GroupByBuilder = ({
|
|
|
49
118
|
children: t('general:groupByLabel', {
|
|
50
119
|
label: ''
|
|
51
120
|
})
|
|
52
|
-
}),
|
|
121
|
+
}), groupByRaw && /*#__PURE__*/_jsx("button", {
|
|
53
122
|
className: `${baseClass}__clear-button`,
|
|
54
123
|
id: "group-by--reset",
|
|
55
|
-
onClick:
|
|
56
|
-
await refineListData({
|
|
57
|
-
groupBy: ''
|
|
58
|
-
});
|
|
59
|
-
},
|
|
124
|
+
onClick: () => void handleClear(),
|
|
60
125
|
type: "button",
|
|
61
126
|
children: t('general:clear')
|
|
62
127
|
})]
|
|
@@ -67,21 +132,8 @@ export const GroupByBuilder = ({
|
|
|
67
132
|
id: "group-by--field-select",
|
|
68
133
|
isClearable: true,
|
|
69
134
|
isMulti: false,
|
|
70
|
-
onChange:
|
|
71
|
-
|
|
72
|
-
// value is being cleared
|
|
73
|
-
if (v === null) {
|
|
74
|
-
await refineListData({
|
|
75
|
-
groupBy: '',
|
|
76
|
-
page: 1
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
await refineListData({
|
|
80
|
-
groupBy: value ? query.groupBy?.startsWith('-') ? `-${value}` : value : undefined,
|
|
81
|
-
page: 1
|
|
82
|
-
});
|
|
83
|
-
},
|
|
84
|
-
options: reducedFields.filter(field_0 => !field_0.field.admin.disableGroupBy && field_0.value !== 'id' && supportedFieldTypes.includes(field_0.field.type)),
|
|
135
|
+
onChange: handleFieldChange,
|
|
136
|
+
options: reducedFields.filter(field_0 => !field_0.field.admin?.disableGroupBy && field_0.value !== 'id' && supportedFieldTypes.includes(field_0.field.type)),
|
|
85
137
|
value: {
|
|
86
138
|
label: groupByField?.label || t('general:selectValue'),
|
|
87
139
|
value: groupByFieldName || ''
|
|
@@ -90,17 +142,7 @@ export const GroupByBuilder = ({
|
|
|
90
142
|
id: "group-by--sort",
|
|
91
143
|
isClearable: false,
|
|
92
144
|
name: "direction",
|
|
93
|
-
onChange:
|
|
94
|
-
value: value_0
|
|
95
|
-
}) => {
|
|
96
|
-
if (!groupByFieldName) {
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
await refineListData({
|
|
100
|
-
groupBy: value_0 === 'asc' ? groupByFieldName : `-${groupByFieldName}`,
|
|
101
|
-
page: 1
|
|
102
|
-
});
|
|
103
|
-
},
|
|
145
|
+
onChange: handleDirectionChange,
|
|
104
146
|
options: [{
|
|
105
147
|
label: t('general:ascending'),
|
|
106
148
|
value: 'asc'
|
|
@@ -110,7 +152,7 @@ export const GroupByBuilder = ({
|
|
|
110
152
|
}],
|
|
111
153
|
path: "direction",
|
|
112
154
|
readOnly: !groupByFieldName,
|
|
113
|
-
value:
|
|
155
|
+
value: directionValue
|
|
114
156
|
})]
|
|
115
157
|
})]
|
|
116
158
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","useMemo","SelectInput","useAuth","useListQuery","useTranslation","reduceFieldsToOptions","ReactSelect","baseClass","supportedFieldTypes","GroupByBuilder","collectionSlug","fields","i18n","t","permissions","fieldPermissions","collections","reducedFields","query","refineListData","groupByFieldName","groupBy","replace","groupByField","find","field","value","_jsxs","className","_jsx","label","id","onClick","type","filterOption","option","inputValue","data","plainTextLabel","toLowerCase","includes","isClearable","isMulti","onChange","v","undefined","page","startsWith","options","filter","admin","disableGroupBy","name","path","readOnly"],"sources":["../../../src/elements/GroupByBuilder/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientField, Field, SanitizedCollectionConfig } from 'payload'\n\nimport './index.scss'\n\nimport React, { useMemo } from 'react'\n\nimport { SelectInput } from '../../fields/Select/Input.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { reduceFieldsToOptions } from '../../utilities/reduceFieldsToOptions.js'\nimport { ReactSelect } from '../ReactSelect/index.js'\n\nexport type Props = {\n readonly collectionSlug: SanitizedCollectionConfig['slug']\n fields: ClientField[]\n}\n\nconst baseClass = 'group-by-builder'\n\n/**\n * Note: Some fields are already omitted from the list of fields:\n * - fields with nested field, e.g. `tabs`, `groups`, etc.\n * - fields that don't affect data, i.e. `row`, `collapsible`, `ui`, etc.\n * So we don't technically need to omit them here, but do anyway.\n * But some remaining fields still need an additional check, e.g. `richText`, etc.\n */\nconst supportedFieldTypes: Field['type'][] = [\n 'text',\n 'textarea',\n 'number',\n 'select',\n 'relationship',\n 'date',\n 'checkbox',\n 'radio',\n 'email',\n 'number',\n 'upload',\n]\n\nexport const GroupByBuilder: React.FC<Props> = ({ collectionSlug, fields }) => {\n const { i18n, t } = useTranslation()\n const { permissions } = useAuth()\n\n const fieldPermissions = permissions?.collections?.[collectionSlug]?.fields\n\n const reducedFields = useMemo(\n () =>\n reduceFieldsToOptions({\n fieldPermissions,\n fields,\n i18n,\n }),\n [fields, fieldPermissions, i18n],\n )\n\n const { query, refineListData } = useListQuery()\n\n const groupByFieldName = query.groupBy?.replace(/^-/, '')\n\n const groupByField = reducedFields.find((field) => field.value === groupByFieldName)\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__header`}>\n <p>\n {t('general:groupByLabel', {\n label: '',\n })}\n </p>\n {query.groupBy && (\n <button\n className={`${baseClass}__clear-button`}\n id=\"group-by--reset\"\n onClick={async () => {\n await refineListData({\n groupBy: '',\n })\n }}\n type=\"button\"\n >\n {t('general:clear')}\n </button>\n )}\n </div>\n <div className={`${baseClass}__inputs`}>\n <ReactSelect\n filterOption={(option, inputValue) =>\n ((option?.data?.plainTextLabel as string) || option.label)\n .toLowerCase()\n .includes(inputValue.toLowerCase())\n }\n id=\"group-by--field-select\"\n isClearable\n isMulti={false}\n onChange={async (v: { value: string } | null) => {\n const value = v === null ? undefined : v.value\n\n // value is being cleared\n if (v === null) {\n await refineListData({\n groupBy: '',\n page: 1,\n })\n }\n\n await refineListData({\n groupBy: value ? (query.groupBy?.startsWith('-') ? `-${value}` : value) : undefined,\n page: 1,\n })\n }}\n options={reducedFields.filter(\n (field) =>\n !field.field.admin.disableGroupBy &&\n field.value !== 'id' &&\n supportedFieldTypes.includes(field.field.type),\n )}\n value={{\n label: groupByField?.label || t('general:selectValue'),\n value: groupByFieldName || '',\n }}\n />\n <SelectInput\n id=\"group-by--sort\"\n isClearable={false}\n name=\"direction\"\n onChange={async ({ value }: { value: string }) => {\n if (!groupByFieldName) {\n return\n }\n\n await refineListData({\n groupBy: value === 'asc' ? groupByFieldName : `-${groupByFieldName}`,\n page: 1,\n })\n }}\n options={[\n { label: t('general:ascending'), value: 'asc' },\n { label: t('general:descending'), value: 'desc' },\n ]}\n path=\"direction\"\n readOnly={!groupByFieldName}\n value={\n !query.groupBy\n ? 'asc'\n : typeof query.groupBy === 'string'\n ? `${query.groupBy.startsWith('-') ? 'desc' : 'asc'}`\n : ''\n }\n />\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","useMemo","SelectInput","useAuth","useListQuery","useTranslation","reduceFieldsToOptions","ReactSelect","baseClass","supportedFieldTypes","GroupByBuilder","collectionSlug","fields","onChange","value","valueProp","i18n","t","permissions","listQuery","isFormMode","groupByRaw","query","groupBy","groupByFieldName","replace","fieldPermissions","collections","reducedFields","groupByField","find","field","handleFieldChange","v","undefined","newGroupBy","startsWith","refineListData","page","handleClear","handleDirectionChange","directionValue","_jsxs","className","_jsx","label","id","onClick","type","filterOption","option","inputValue","data","plainTextLabel","toLowerCase","includes","isClearable","isMulti","options","filter","admin","disableGroupBy","name","path","readOnly"],"sources":["../../../src/elements/GroupByBuilder/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientField, Field, SanitizedCollectionConfig } from 'payload'\n\nimport './index.scss'\n\nimport React, { useMemo } from 'react'\n\nimport { SelectInput } from '../../fields/Select/Input.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { reduceFieldsToOptions } from '../../utilities/reduceFieldsToOptions.js'\nimport { ReactSelect } from '../ReactSelect/index.js'\n\nexport type Props = {\n readonly collectionSlug: SanitizedCollectionConfig['slug']\n readonly fields: ClientField[]\n /** When set, GroupByBuilder is controlled by the form (value + onChange) instead of list query. */\n readonly onChange?: (groupBy: string) => void\n readonly value?: string\n}\n\nconst baseClass = 'group-by-builder'\n\n/**\n * Note: Some fields are already omitted from the list of fields:\n * - fields with nested field, e.g. `tabs`, `groups`, etc.\n * - fields that don't affect data, i.e. `row`, `collapsible`, `ui`, etc.\n * So we don't technically need to omit them here, but do anyway.\n * But some remaining fields still need an additional check, e.g. `richText`, etc.\n */\nconst supportedFieldTypes: Field['type'][] = [\n 'text',\n 'textarea',\n 'number',\n 'select',\n 'relationship',\n 'date',\n 'checkbox',\n 'radio',\n 'email',\n 'number',\n 'upload',\n]\n\nexport const GroupByBuilder: React.FC<Props> = ({\n collectionSlug,\n fields,\n onChange,\n value: valueProp,\n}) => {\n const { i18n, t } = useTranslation()\n const { permissions } = useAuth()\n const listQuery = useListQuery()\n\n const isFormMode = typeof onChange === 'function'\n const groupByRaw = isFormMode ? valueProp : listQuery.query?.groupBy\n const groupByFieldName = groupByRaw?.replace(/^-/, '')\n\n const fieldPermissions = permissions?.collections?.[collectionSlug]?.fields\n\n const reducedFields = useMemo(\n () =>\n reduceFieldsToOptions({\n fieldPermissions,\n fields,\n i18n,\n }),\n [fields, fieldPermissions, i18n],\n )\n\n const groupByField = reducedFields.find((field) => field.value === groupByFieldName)\n\n const handleFieldChange = useMemo(() => {\n if (isFormMode) {\n return (v: { value: string } | null) => {\n const value = v === null ? undefined : v.value\n const newGroupBy = value ? (groupByRaw?.startsWith('-') ? `-${value}` : value) : ''\n onChange?.(newGroupBy)\n }\n }\n return (v: { value: string } | null) => {\n void (async () => {\n if (typeof listQuery.refineListData !== 'function') {\n return\n }\n const value = v === null ? undefined : v.value\n if (v === null) {\n await listQuery.refineListData({ groupBy: '', page: 1 })\n } else {\n await listQuery.refineListData({\n groupBy: value\n ? listQuery.query?.groupBy?.startsWith('-')\n ? `-${value}`\n : value\n : undefined,\n page: 1,\n })\n }\n })()\n }\n }, [isFormMode, groupByRaw, listQuery, onChange])\n\n const handleClear = useMemo(() => {\n if (isFormMode) {\n return () => onChange?.('')\n }\n return () => {\n void (async () => {\n if (typeof listQuery.refineListData === 'function') {\n await listQuery.refineListData({ groupBy: '' })\n }\n })()\n }\n }, [isFormMode, listQuery, onChange])\n\n const handleDirectionChange = useMemo(() => {\n if (isFormMode) {\n return ({ value }: { value: string }) => {\n if (!groupByFieldName) {\n return\n }\n onChange?.(value === 'asc' ? groupByFieldName : `-${groupByFieldName}`)\n }\n }\n return ({ value }: { value: string }) => {\n void (async () => {\n if (!groupByFieldName || typeof listQuery.refineListData !== 'function') {\n return\n }\n await listQuery.refineListData({\n groupBy: value === 'asc' ? groupByFieldName : `-${groupByFieldName}`,\n page: 1,\n })\n })()\n }\n }, [groupByFieldName, isFormMode, listQuery, onChange])\n\n const directionValue =\n !groupByRaw || typeof groupByRaw !== 'string'\n ? 'asc'\n : groupByRaw.startsWith('-')\n ? 'desc'\n : 'asc'\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__header`}>\n <p>\n {t('general:groupByLabel', {\n label: '',\n })}\n </p>\n {groupByRaw && (\n <button\n className={`${baseClass}__clear-button`}\n id=\"group-by--reset\"\n onClick={() => void handleClear()}\n type=\"button\"\n >\n {t('general:clear')}\n </button>\n )}\n </div>\n <div className={`${baseClass}__inputs`}>\n <ReactSelect\n filterOption={(option, inputValue) =>\n ((option?.data?.plainTextLabel as string) || option.label)\n .toLowerCase()\n .includes(inputValue.toLowerCase())\n }\n id=\"group-by--field-select\"\n isClearable\n isMulti={false}\n onChange={handleFieldChange}\n options={reducedFields.filter(\n (field) =>\n !field.field.admin?.disableGroupBy &&\n field.value !== 'id' &&\n supportedFieldTypes.includes(field.field.type),\n )}\n value={{\n label: groupByField?.label || t('general:selectValue'),\n value: groupByFieldName || '',\n }}\n />\n <SelectInput\n id=\"group-by--sort\"\n isClearable={false}\n name=\"direction\"\n onChange={handleDirectionChange}\n options={[\n { label: t('general:ascending'), value: 'asc' },\n { label: t('general:descending'), value: 'desc' },\n ]}\n path=\"direction\"\n readOnly={!groupByFieldName}\n value={directionValue}\n />\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/QueryPresets/fields/ColumnsField/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAoB,wBAAwB,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/QueryPresets/fields/ColumnsField/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAoB,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAYzE,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,uBAAuB,EAAE,wBA+FrC,CAAA"}
|
|
@@ -1,56 +1,119 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import { c as _c } from "react/compiler-runtime";
|
|
4
3
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
5
|
-
import {
|
|
6
|
-
import React from 'react';
|
|
4
|
+
import React, { useId, useMemo } from 'react';
|
|
7
5
|
import { FieldLabel } from '../../../../fields/FieldLabel/index.js';
|
|
8
6
|
import { useField } from '../../../../forms/useField/index.js';
|
|
9
|
-
import {
|
|
7
|
+
import { useAuth } from '../../../../providers/Auth/index.js';
|
|
8
|
+
import { useConfig } from '../../../../providers/Config/index.js';
|
|
9
|
+
import { useTranslation } from '../../../../providers/Translation/index.js';
|
|
10
|
+
import { getColumns } from '../../../../utilities/getColumns.js';
|
|
11
|
+
import { reduceFieldsToOptions } from '../../../../utilities/reduceFieldsToOptions.js';
|
|
12
|
+
import { PillSelector } from '../../../PillSelector/index.js';
|
|
10
13
|
import './index.scss';
|
|
11
|
-
export const QueryPresetsColumnField =
|
|
12
|
-
|
|
13
|
-
const {
|
|
14
|
-
field: t1
|
|
15
|
-
} = t0;
|
|
16
|
-
const {
|
|
14
|
+
export const QueryPresetsColumnField = ({
|
|
15
|
+
field: {
|
|
17
16
|
label,
|
|
18
17
|
required
|
|
19
|
-
}
|
|
18
|
+
}
|
|
19
|
+
}) => {
|
|
20
20
|
const {
|
|
21
21
|
path,
|
|
22
|
+
setValue,
|
|
22
23
|
value
|
|
23
24
|
} = useField();
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
const relatedCollectionField = useField({
|
|
26
|
+
path: 'relatedCollection'
|
|
27
|
+
});
|
|
28
|
+
const relatedCollection = relatedCollectionField.value;
|
|
29
|
+
const {
|
|
30
|
+
config,
|
|
31
|
+
getEntityConfig
|
|
32
|
+
} = useConfig();
|
|
33
|
+
const {
|
|
34
|
+
i18n
|
|
35
|
+
} = useTranslation();
|
|
36
|
+
const {
|
|
37
|
+
permissions
|
|
38
|
+
} = useAuth();
|
|
39
|
+
const uuid = useId();
|
|
40
|
+
const collectionConfig = useMemo(() => relatedCollection ? getEntityConfig({
|
|
41
|
+
collectionSlug: relatedCollection
|
|
42
|
+
}) : null, [relatedCollection, getEntityConfig]);
|
|
43
|
+
const columns = useMemo(() => {
|
|
44
|
+
if (!relatedCollection || !collectionConfig) {
|
|
45
|
+
return [];
|
|
46
|
+
}
|
|
47
|
+
return getColumns({
|
|
48
|
+
clientConfig: config,
|
|
49
|
+
collectionConfig,
|
|
50
|
+
collectionSlug: relatedCollection,
|
|
51
|
+
columns: value ?? [],
|
|
52
|
+
i18n,
|
|
53
|
+
permissions
|
|
54
|
+
});
|
|
55
|
+
}, [config, collectionConfig, relatedCollection, value, i18n, permissions]);
|
|
56
|
+
const reducedFields = useMemo(() => {
|
|
57
|
+
if (!collectionConfig?.fields) {
|
|
58
|
+
return [];
|
|
59
|
+
}
|
|
60
|
+
return reduceFieldsToOptions({
|
|
61
|
+
fieldPermissions: permissions?.collections?.[relatedCollection]?.fields ?? true,
|
|
62
|
+
fields: collectionConfig.fields,
|
|
63
|
+
i18n
|
|
64
|
+
});
|
|
65
|
+
}, [collectionConfig, i18n, permissions, relatedCollection]);
|
|
66
|
+
const accessorToLabel = useMemo(() => {
|
|
67
|
+
const map = {};
|
|
68
|
+
for (const f of reducedFields) {
|
|
69
|
+
map[String(f.value)] = f.label;
|
|
70
|
+
}
|
|
71
|
+
return map;
|
|
72
|
+
}, [reducedFields]);
|
|
73
|
+
const pills = useMemo(() => columns.map((col, i) => ({
|
|
74
|
+
name: col.accessor,
|
|
75
|
+
key: `${relatedCollection}-${col.accessor}-${i}-${uuid}`,
|
|
76
|
+
Label: accessorToLabel[col.accessor] ?? col.accessor,
|
|
77
|
+
selected: col.active
|
|
78
|
+
})), [accessorToLabel, columns, relatedCollection, uuid]);
|
|
79
|
+
const currentColumns = value ?? columns;
|
|
80
|
+
const handleClick = React.useCallback(({
|
|
81
|
+
pill
|
|
82
|
+
}) => {
|
|
83
|
+
const newColumns = currentColumns.map(col_0 => col_0.accessor === pill.name ? {
|
|
84
|
+
...col_0,
|
|
85
|
+
active: !col_0.active
|
|
86
|
+
} : col_0);
|
|
87
|
+
setValue(newColumns.length ? newColumns : undefined);
|
|
88
|
+
}, [currentColumns, setValue]);
|
|
89
|
+
if (!relatedCollection) {
|
|
90
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
27
91
|
className: "field-type query-preset-columns-field",
|
|
28
|
-
children: [_jsx(FieldLabel, {
|
|
92
|
+
children: [/*#__PURE__*/_jsx(FieldLabel, {
|
|
29
93
|
as: "h3",
|
|
30
|
-
label,
|
|
31
|
-
path,
|
|
32
|
-
required
|
|
33
|
-
}), _jsx("
|
|
34
|
-
className: "
|
|
35
|
-
children:
|
|
94
|
+
label: label,
|
|
95
|
+
path: path,
|
|
96
|
+
required: required
|
|
97
|
+
}), /*#__PURE__*/_jsx("p", {
|
|
98
|
+
className: "query-preset-columns-field__hint",
|
|
99
|
+
children: "Select the related collection to configure columns."
|
|
36
100
|
})]
|
|
37
101
|
});
|
|
38
|
-
$[0] = label;
|
|
39
|
-
$[1] = path;
|
|
40
|
-
$[2] = required;
|
|
41
|
-
$[3] = value;
|
|
42
|
-
$[4] = t2;
|
|
43
|
-
} else {
|
|
44
|
-
t2 = $[4];
|
|
45
102
|
}
|
|
46
|
-
return
|
|
103
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
104
|
+
className: "field-type query-preset-columns-field",
|
|
105
|
+
children: [/*#__PURE__*/_jsx(FieldLabel, {
|
|
106
|
+
as: "h3",
|
|
107
|
+
label: label,
|
|
108
|
+
path: path,
|
|
109
|
+
required: required
|
|
110
|
+
}), pills.length > 0 ? /*#__PURE__*/_jsx(PillSelector, {
|
|
111
|
+
onClick: handleClick,
|
|
112
|
+
pills: pills
|
|
113
|
+
}) : /*#__PURE__*/_jsx("p", {
|
|
114
|
+
className: "query-preset-columns-field__hint",
|
|
115
|
+
children: "No columns available for this collection."
|
|
116
|
+
})]
|
|
117
|
+
});
|
|
47
118
|
};
|
|
48
|
-
function _temp(column, i) {
|
|
49
|
-
const isColumnActive = !column.startsWith("-");
|
|
50
|
-
return _jsx(Pill, {
|
|
51
|
-
pillStyle: isColumnActive ? "always-white" : "light-gray",
|
|
52
|
-
size: "small",
|
|
53
|
-
children: toWords(column)
|
|
54
|
-
}, i);
|
|
55
|
-
}
|
|
56
119
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","useId","useMemo","FieldLabel","useField","useAuth","useConfig","useTranslation","getColumns","reduceFieldsToOptions","PillSelector","QueryPresetsColumnField","field","label","required","path","setValue","value","relatedCollectionField","relatedCollection","config","getEntityConfig","i18n","permissions","uuid","collectionConfig","collectionSlug","columns","clientConfig","reducedFields","fields","fieldPermissions","collections","accessorToLabel","map","f","String","pills","col","i","name","accessor","key","Label","selected","active","currentColumns","handleClick","useCallback","pill","newColumns","length","undefined","_jsxs","className","_jsx","as","onClick"],"sources":["../../../../../src/elements/QueryPresets/fields/ColumnsField/index.tsx"],"sourcesContent":["'use client'\nimport type { ColumnPreference, JSONFieldClientComponent } from 'payload'\n\nimport React, { useId, useMemo } from 'react'\n\nimport { FieldLabel } from '../../../../fields/FieldLabel/index.js'\nimport { useField } from '../../../../forms/useField/index.js'\nimport { useAuth } from '../../../../providers/Auth/index.js'\nimport { useConfig } from '../../../../providers/Config/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { getColumns } from '../../../../utilities/getColumns.js'\nimport { reduceFieldsToOptions } from '../../../../utilities/reduceFieldsToOptions.js'\nimport { PillSelector, type SelectablePill } from '../../../PillSelector/index.js'\nimport './index.scss'\n\nexport const QueryPresetsColumnField: JSONFieldClientComponent = ({\n field: { label, required },\n}) => {\n const { path, setValue, value } = useField<ColumnPreference[]>()\n const relatedCollectionField = useField({ path: 'relatedCollection' })\n const relatedCollection = relatedCollectionField.value as string | undefined\n const { config, getEntityConfig } = useConfig()\n const { i18n } = useTranslation()\n const { permissions } = useAuth()\n const uuid = useId()\n\n const collectionConfig = useMemo(\n () => (relatedCollection ? getEntityConfig({ collectionSlug: relatedCollection }) : null),\n [relatedCollection, getEntityConfig],\n )\n\n const columns = useMemo(() => {\n if (!relatedCollection || !collectionConfig) {\n return []\n }\n return getColumns({\n clientConfig: config,\n collectionConfig,\n collectionSlug: relatedCollection,\n columns: value ?? [],\n i18n,\n permissions,\n })\n }, [config, collectionConfig, relatedCollection, value, i18n, permissions])\n\n const reducedFields = useMemo(() => {\n if (!collectionConfig?.fields) {\n return []\n }\n return reduceFieldsToOptions({\n fieldPermissions: permissions?.collections?.[relatedCollection]?.fields ?? true,\n fields: collectionConfig.fields,\n i18n,\n })\n }, [collectionConfig, i18n, permissions, relatedCollection])\n\n const accessorToLabel = useMemo(() => {\n const map: Record<string, React.ReactNode> = {}\n for (const f of reducedFields) {\n map[String(f.value)] = f.label\n }\n return map\n }, [reducedFields])\n\n const pills: SelectablePill[] = useMemo(\n () =>\n columns.map((col, i) => ({\n name: col.accessor,\n key: `${relatedCollection}-${col.accessor}-${i}-${uuid}`,\n Label: accessorToLabel[col.accessor] ?? col.accessor,\n selected: col.active,\n })),\n [accessorToLabel, columns, relatedCollection, uuid],\n )\n\n const currentColumns = value ?? columns\n\n const handleClick = React.useCallback(\n ({ pill }: { pill: SelectablePill }) => {\n const newColumns = currentColumns.map((col) =>\n col.accessor === pill.name ? { ...col, active: !col.active } : col,\n )\n setValue(newColumns.length ? newColumns : undefined)\n },\n [currentColumns, setValue],\n )\n\n if (!relatedCollection) {\n return (\n <div className=\"field-type query-preset-columns-field\">\n <FieldLabel as=\"h3\" label={label} path={path} required={required} />\n <p className=\"query-preset-columns-field__hint\">\n Select the related collection to configure columns.\n </p>\n </div>\n )\n }\n\n return (\n <div className=\"field-type query-preset-columns-field\">\n <FieldLabel as=\"h3\" label={label} path={path} required={required} />\n {pills.length > 0 ? (\n <PillSelector onClick={handleClick} pills={pills} />\n ) : (\n <p className=\"query-preset-columns-field__hint\">\n No columns available for this collection.\n </p>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +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;
|
|
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;AAQvD,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,wBAAwB,EAAE,wBAuCtC,CAAA"}
|