@payloadcms/ui 3.0.0-beta.47 → 3.0.0-beta.48
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/DocumentControls/index.d.ts.map +1 -1
- package/dist/elements/DocumentControls/index.js +28 -21
- package/dist/elements/DocumentControls/index.js.map +1 -1
- package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
- package/dist/elements/ListDrawer/DrawerContent.js +1 -1
- package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
- package/dist/elements/ReactSelect/index.d.ts +1 -1
- package/dist/elements/ReactSelect/index.d.ts.map +1 -1
- package/dist/elements/ReactSelect/index.js.map +1 -1
- package/dist/elements/ReactSelect/types.d.ts +4 -4
- package/dist/elements/ReactSelect/types.d.ts.map +1 -1
- package/dist/elements/ReactSelect/types.js.map +1 -1
- package/dist/elements/SortComplex/index.d.ts.map +1 -1
- package/dist/elements/SortComplex/index.js.map +1 -1
- package/dist/elements/TableColumns/index.d.ts +0 -2
- package/dist/elements/TableColumns/index.d.ts.map +1 -1
- package/dist/elements/TableColumns/index.js +83 -85
- package/dist/elements/TableColumns/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js +3 -3
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/index.d.ts +2 -1
- 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.map +1 -1
- package/dist/elements/WhereBuilder/index.js.map +1 -1
- package/dist/fields/Array/index.js +2 -2
- package/dist/fields/Array/index.js.map +1 -1
- package/dist/fields/Blocks/index.js +1 -1
- package/dist/fields/Blocks/index.js.map +1 -1
- package/dist/fields/Checkbox/index.js +1 -1
- package/dist/fields/Checkbox/index.js.map +1 -1
- package/dist/fields/Code/index.js +1 -1
- package/dist/fields/Code/index.js.map +1 -1
- package/dist/fields/Collapsible/index.js +1 -1
- package/dist/fields/Collapsible/index.js.map +1 -1
- package/dist/fields/DateTime/index.d.ts +1 -1
- package/dist/fields/DateTime/index.d.ts.map +1 -1
- package/dist/fields/DateTime/index.js +1 -1
- package/dist/fields/DateTime/index.js.map +1 -1
- package/dist/fields/Email/index.d.ts.map +1 -1
- package/dist/fields/Email/index.js +1 -1
- package/dist/fields/Email/index.js.map +1 -1
- package/dist/fields/JSON/index.d.ts +1 -1
- package/dist/fields/JSON/index.d.ts.map +1 -1
- package/dist/fields/JSON/index.js +1 -1
- package/dist/fields/JSON/index.js.map +1 -1
- package/dist/fields/Number/index.js +1 -1
- package/dist/fields/Number/index.js.map +1 -1
- package/dist/fields/Point/index.js +1 -1
- package/dist/fields/Point/index.js.map +1 -1
- package/dist/fields/RadioGroup/index.js +1 -1
- package/dist/fields/RadioGroup/index.js.map +1 -1
- package/dist/fields/Relationship/index.js +4 -4
- package/dist/fields/Relationship/index.js.map +1 -1
- package/dist/fields/Select/Input.d.ts +3 -1
- package/dist/fields/Select/Input.d.ts.map +1 -1
- package/dist/fields/Select/Input.js.map +1 -1
- package/dist/fields/Select/index.d.ts +1 -1
- package/dist/fields/Select/index.d.ts.map +1 -1
- package/dist/fields/Select/index.js +4 -6
- package/dist/fields/Select/index.js.map +1 -1
- package/dist/fields/Tabs/index.js +1 -1
- package/dist/fields/Tabs/index.js.map +1 -1
- package/dist/fields/Text/Input.d.ts.map +1 -1
- package/dist/fields/Text/Input.js.map +1 -1
- package/dist/fields/Text/index.js +1 -1
- package/dist/fields/Text/index.js.map +1 -1
- package/dist/fields/Text/types.d.ts +9 -4
- package/dist/fields/Text/types.d.ts.map +1 -1
- package/dist/fields/Text/types.js.map +1 -1
- package/dist/fields/Textarea/index.js +1 -1
- package/dist/fields/Textarea/index.js.map +1 -1
- package/dist/fields/Upload/index.js +1 -1
- package/dist/fields/Upload/index.js.map +1 -1
- package/dist/forms/FieldError/index.js +1 -1
- package/dist/forms/FieldError/index.js.map +1 -1
- package/dist/forms/FieldPropsProvider/index.js +4 -4
- package/dist/forms/FieldPropsProvider/index.js.map +1 -1
- package/dist/forms/Form/index.js +1 -1
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/forms/Form/types.d.ts +1 -1
- package/dist/forms/Form/types.d.ts.map +1 -1
- package/dist/forms/Form/types.js.map +1 -1
- package/dist/forms/withCondition/index.js +1 -1
- package/dist/forms/withCondition/index.js.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/fields.d.ts.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/fields.js +2 -1
- package/dist/providers/ComponentMap/buildComponentMap/fields.js.map +1 -1
- package/package.json +4 -4
- package/dist/elements/TableColumns/columnReducer.d.ts +0 -24
- package/dist/elements/TableColumns/columnReducer.d.ts.map +0 -1
- package/dist/elements/TableColumns/columnReducer.js +0 -59
- package/dist/elements/TableColumns/columnReducer.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentControls/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC1E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAA;AAG9D,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentControls/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC1E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAA;AAG9D,OAAO,KAA8B,MAAM,OAAO,CAAA;AAgBlD,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC;IACtC,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,GAAG,CAAA;IACV,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,EAAE,oBAAoB,GAAG,gBAAgB,GAAG,IAAI,CAAA;IAC3D,IAAI,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAA;CACxC,CAqMA,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { getTranslation } from '@payloadcms/translations';
|
|
4
|
-
import React, { Fragment } from 'react';
|
|
4
|
+
import React, { Fragment, useEffect } from 'react';
|
|
5
5
|
import { useComponentMap } from '../../providers/ComponentMap/index.js';
|
|
6
6
|
import { useConfig } from '../../providers/Config/index.js';
|
|
7
7
|
import { useTranslation } from '../../providers/Translation/index.js';
|
|
@@ -29,6 +29,29 @@ export const DocumentControls = (props)=>{
|
|
|
29
29
|
globalSlug: globalConfig?.slug
|
|
30
30
|
});
|
|
31
31
|
const { admin: { dateFormat }, routes: { admin: adminRoute } } = config;
|
|
32
|
+
// Settings these in state to avoid hydration issues if there is a mismatch between the server and client
|
|
33
|
+
const [updatedAt, setUpdatedAt] = React.useState('');
|
|
34
|
+
const [createdAt, setCreatedAt] = React.useState('');
|
|
35
|
+
useEffect(()=>{
|
|
36
|
+
if (data?.updatedAt) {
|
|
37
|
+
setUpdatedAt(formatDate({
|
|
38
|
+
date: data.updatedAt,
|
|
39
|
+
i18n,
|
|
40
|
+
pattern: dateFormat
|
|
41
|
+
}));
|
|
42
|
+
}
|
|
43
|
+
if (data?.createdAt) {
|
|
44
|
+
setCreatedAt(formatDate({
|
|
45
|
+
date: data.createdAt,
|
|
46
|
+
i18n,
|
|
47
|
+
pattern: dateFormat
|
|
48
|
+
}));
|
|
49
|
+
}
|
|
50
|
+
}, [
|
|
51
|
+
data,
|
|
52
|
+
i18n,
|
|
53
|
+
dateFormat
|
|
54
|
+
]);
|
|
32
55
|
const hasCreatePermission = permissions && 'create' in permissions && permissions.create?.permission;
|
|
33
56
|
const hasDeletePermission = permissions && 'delete' in permissions && permissions.delete?.permission;
|
|
34
57
|
const showDotMenu = Boolean(collectionConfig && id && !disableActions && (hasCreatePermission || hasDeletePermission));
|
|
@@ -80,11 +103,7 @@ export const DocumentControls = (props)=>{
|
|
|
80
103
|
`${baseClass}__list-item`,
|
|
81
104
|
`${baseClass}__value-wrap`
|
|
82
105
|
].filter(Boolean).join(' '),
|
|
83
|
-
title: data?.updatedAt ?
|
|
84
|
-
date: data?.updatedAt,
|
|
85
|
-
i18n,
|
|
86
|
-
pattern: dateFormat
|
|
87
|
-
}) : '',
|
|
106
|
+
title: data?.updatedAt ? updatedAt : '',
|
|
88
107
|
children: [
|
|
89
108
|
/*#__PURE__*/ _jsxs("p", {
|
|
90
109
|
className: `${baseClass}__label`,
|
|
@@ -95,11 +114,7 @@ export const DocumentControls = (props)=>{
|
|
|
95
114
|
}),
|
|
96
115
|
data?.updatedAt && /*#__PURE__*/ _jsx("p", {
|
|
97
116
|
className: `${baseClass}__value`,
|
|
98
|
-
children:
|
|
99
|
-
date: data?.updatedAt,
|
|
100
|
-
i18n,
|
|
101
|
-
pattern: dateFormat
|
|
102
|
-
})
|
|
117
|
+
children: updatedAt
|
|
103
118
|
})
|
|
104
119
|
]
|
|
105
120
|
}),
|
|
@@ -108,11 +123,7 @@ export const DocumentControls = (props)=>{
|
|
|
108
123
|
`${baseClass}__list-item`,
|
|
109
124
|
`${baseClass}__value-wrap`
|
|
110
125
|
].filter(Boolean).join(' '),
|
|
111
|
-
title: data?.createdAt ?
|
|
112
|
-
date: data?.createdAt,
|
|
113
|
-
i18n,
|
|
114
|
-
pattern: dateFormat
|
|
115
|
-
}) : '',
|
|
126
|
+
title: data?.createdAt ? createdAt : '',
|
|
116
127
|
children: [
|
|
117
128
|
/*#__PURE__*/ _jsxs("p", {
|
|
118
129
|
className: `${baseClass}__label`,
|
|
@@ -123,11 +134,7 @@ export const DocumentControls = (props)=>{
|
|
|
123
134
|
}),
|
|
124
135
|
data?.createdAt && /*#__PURE__*/ _jsx("p", {
|
|
125
136
|
className: `${baseClass}__value`,
|
|
126
|
-
children:
|
|
127
|
-
date: data?.createdAt,
|
|
128
|
-
i18n,
|
|
129
|
-
pattern: dateFormat
|
|
130
|
-
})
|
|
137
|
+
children: createdAt
|
|
131
138
|
})
|
|
132
139
|
]
|
|
133
140
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/DocumentControls/index.tsx"],"sourcesContent":["'use client'\nimport type { CollectionPermission, GlobalPermission } from 'payload/auth'\nimport type { SanitizedCollectionConfig } from 'payload/types'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment } from 'react'\n\nimport { useComponentMap } from '../../providers/ComponentMap/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { formatDate } from '../../utilities/formatDate.js'\nimport { Autosave } from '../Autosave/index.js'\nimport { DeleteDocument } from '../DeleteDocument/index.js'\nimport { DuplicateDocument } from '../DuplicateDocument/index.js'\nimport { Gutter } from '../Gutter/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport { PreviewButton } from '../PreviewButton/index.js'\nimport { PublishButton } from '../PublishButton/index.js'\nimport { SaveButton } from '../SaveButton/index.js'\nimport { SaveDraftButton } from '../SaveDraftButton/index.js'\nimport { Status } from '../Status/index.js'\nimport './index.scss'\n\nconst baseClass = 'doc-controls'\n\nexport const DocumentControls: React.FC<{\n apiURL: string\n data?: any\n disableActions?: boolean\n hasPublishPermission?: boolean\n hasSavePermission?: boolean\n id?: number | string\n isAccountView?: boolean\n isEditing?: boolean\n permissions: CollectionPermission | GlobalPermission | null\n slug: SanitizedCollectionConfig['slug']\n}> = (props) => {\n const {\n id,\n slug,\n data,\n disableActions,\n hasSavePermission,\n isAccountView,\n isEditing,\n permissions,\n } = props\n\n const { i18n } = useTranslation()\n\n const config = useConfig()\n const { getComponentMap } = useComponentMap()\n\n const collectionConfig = config.collections.find((coll) => coll.slug === slug)\n const globalConfig = config.globals.find((global) => global.slug === slug)\n\n const componentMap = getComponentMap({\n collectionSlug: collectionConfig?.slug,\n globalSlug: globalConfig?.slug,\n })\n\n const {\n admin: { dateFormat },\n routes: { admin: adminRoute },\n } = config\n\n const hasCreatePermission =\n permissions && 'create' in permissions && permissions.create?.permission\n\n const hasDeletePermission =\n permissions && 'delete' in permissions && permissions.delete?.permission\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 return (\n <Gutter className={baseClass}>\n <div className={`${baseClass}__wrapper`}>\n <div className={`${baseClass}__content`}>\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 {((collectionConfig?.versions?.drafts &&\n collectionConfig?.versions?.drafts?.autosave &&\n !unsavedDraftWithValidations) ||\n (globalConfig?.versions?.drafts && globalConfig?.versions?.drafts?.autosave)) &&\n hasSavePermission && (\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={\n data?.updatedAt\n ? formatDate({ date: data?.updatedAt, i18n, pattern: dateFormat })\n : ''\n }\n >\n <p className={`${baseClass}__label`}>{i18n.t('general:lastModified')}: </p>\n {data?.updatedAt && (\n <p className={`${baseClass}__value`}>\n {formatDate({ date: data?.updatedAt, i18n, pattern: dateFormat })}\n </p>\n )}\n </li>\n <li\n className={[`${baseClass}__list-item`, `${baseClass}__value-wrap`]\n .filter(Boolean)\n .join(' ')}\n title={\n data?.createdAt\n ? formatDate({ date: data?.createdAt, i18n, pattern: dateFormat })\n : ''\n }\n >\n <p className={`${baseClass}__label`}>{i18n.t('general:created')}: </p>\n {data?.createdAt && (\n <p className={`${baseClass}__value`}>\n {formatDate({ date: data?.createdAt, i18n, pattern: dateFormat })}\n </p>\n )}\n </li>\n </Fragment>\n )}\n </ul>\n </div>\n <div className={`${baseClass}__controls-wrapper`}>\n <div className={`${baseClass}__controls`}>\n {componentMap?.isPreviewEnabled && (\n <PreviewButton CustomComponent={componentMap.PreviewButton} />\n )}\n {hasSavePermission && (\n <React.Fragment>\n {collectionConfig?.versions?.drafts || globalConfig?.versions?.drafts ? (\n <React.Fragment>\n {((collectionConfig?.versions?.drafts &&\n !collectionConfig?.versions?.drafts?.autosave) ||\n unsavedDraftWithValidations ||\n (globalConfig?.versions?.drafts &&\n !globalConfig?.versions?.drafts?.autosave)) && (\n <SaveDraftButton CustomComponent={componentMap.SaveDraftButton} />\n )}\n <PublishButton CustomComponent={componentMap.PublishButton} />\n </React.Fragment>\n ) : (\n <SaveButton CustomComponent={componentMap.SaveButton} />\n )}\n </React.Fragment>\n )}\n </div>\n {showDotMenu && (\n <Popup\n button={\n <div className={`${baseClass}__dots`}>\n <div />\n <div />\n <div />\n </div>\n }\n className={`${baseClass}__popup`}\n horizontalAlign=\"right\"\n size=\"large\"\n verticalAlign=\"bottom\"\n >\n <PopupList.ButtonGroup>\n {hasCreatePermission && (\n <React.Fragment>\n <PopupList.Button\n href={`${adminRoute}/collections/${collectionConfig?.slug}/create`}\n id=\"action-create\"\n >\n {i18n.t('general:createNew')}\n </PopupList.Button>\n {!collectionConfig.disableDuplicate && isEditing && (\n <DuplicateDocument\n id={id.toString()}\n singularLabel={collectionConfig?.labels?.singular}\n slug={collectionConfig?.slug}\n />\n )}\n </React.Fragment>\n )}\n {hasDeletePermission && (\n <DeleteDocument\n buttonId=\"action-delete\"\n collectionSlug={collectionConfig?.slug}\n id={id.toString()}\n singularLabel={collectionConfig?.labels?.singular}\n useAsTitle={collectionConfig?.admin?.useAsTitle}\n />\n )}\n </PopupList.ButtonGroup>\n </Popup>\n )}\n </div>\n </div>\n <div className={`${baseClass}__divider`} />\n </Gutter>\n )\n}\n"],"names":["getTranslation","React","Fragment","useComponentMap","useConfig","useTranslation","formatDate","Autosave","DeleteDocument","DuplicateDocument","Gutter","Popup","PopupList","PreviewButton","PublishButton","SaveButton","SaveDraftButton","Status","baseClass","DocumentControls","props","id","slug","data","disableActions","hasSavePermission","isAccountView","isEditing","permissions","i18n","config","getComponentMap","collectionConfig","collections","find","coll","globalConfig","globals","global","componentMap","collectionSlug","globalSlug","admin","dateFormat","routes","adminRoute","hasCreatePermission","create","permission","hasDeletePermission","delete","showDotMenu","Boolean","unsavedDraftWithValidations","versions","drafts","validate","className","div","ul","li","p","t","label","labels","singular","filter","join","autosave","collection","publishedDocUpdatedAt","createdAt","timestamps","title","updatedAt","date","pattern","isPreviewEnabled","CustomComponent","button","horizontalAlign","size","verticalAlign","ButtonGroup","Button","href","disableDuplicate","toString","singularLabel","buttonId","useAsTitle"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/DocumentControls/index.tsx"],"sourcesContent":["'use client'\nimport type { CollectionPermission, GlobalPermission } from 'payload/auth'\nimport type { SanitizedCollectionConfig } from 'payload/types'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useEffect } from 'react'\n\nimport { useComponentMap } from '../../providers/ComponentMap/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { formatDate } from '../../utilities/formatDate.js'\nimport { Autosave } from '../Autosave/index.js'\nimport { DeleteDocument } from '../DeleteDocument/index.js'\nimport { DuplicateDocument } from '../DuplicateDocument/index.js'\nimport { Gutter } from '../Gutter/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport { PreviewButton } from '../PreviewButton/index.js'\nimport { PublishButton } from '../PublishButton/index.js'\nimport { SaveButton } from '../SaveButton/index.js'\nimport { SaveDraftButton } from '../SaveDraftButton/index.js'\nimport { Status } from '../Status/index.js'\nimport './index.scss'\n\nconst baseClass = 'doc-controls'\n\nexport const DocumentControls: React.FC<{\n apiURL: string\n data?: any\n disableActions?: boolean\n hasPublishPermission?: boolean\n hasSavePermission?: boolean\n id?: number | string\n isAccountView?: boolean\n isEditing?: boolean\n permissions: CollectionPermission | GlobalPermission | null\n slug: SanitizedCollectionConfig['slug']\n}> = (props) => {\n const {\n id,\n slug,\n data,\n disableActions,\n hasSavePermission,\n isAccountView,\n isEditing,\n permissions,\n } = props\n\n const { i18n } = useTranslation()\n\n const config = useConfig()\n const { getComponentMap } = useComponentMap()\n\n const collectionConfig = config.collections.find((coll) => coll.slug === slug)\n const globalConfig = config.globals.find((global) => global.slug === slug)\n\n const componentMap = getComponentMap({\n collectionSlug: collectionConfig?.slug,\n globalSlug: globalConfig?.slug,\n })\n\n const {\n admin: { dateFormat },\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 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 =\n permissions && 'create' in permissions && permissions.create?.permission\n\n const hasDeletePermission =\n permissions && 'delete' in permissions && permissions.delete?.permission\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 return (\n <Gutter className={baseClass}>\n <div className={`${baseClass}__wrapper`}>\n <div className={`${baseClass}__content`}>\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 {((collectionConfig?.versions?.drafts &&\n collectionConfig?.versions?.drafts?.autosave &&\n !unsavedDraftWithValidations) ||\n (globalConfig?.versions?.drafts && globalConfig?.versions?.drafts?.autosave)) &&\n hasSavePermission && (\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`}>{i18n.t('general:lastModified')}: </p>\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 {componentMap?.isPreviewEnabled && (\n <PreviewButton CustomComponent={componentMap.PreviewButton} />\n )}\n {hasSavePermission && (\n <React.Fragment>\n {collectionConfig?.versions?.drafts || globalConfig?.versions?.drafts ? (\n <React.Fragment>\n {((collectionConfig?.versions?.drafts &&\n !collectionConfig?.versions?.drafts?.autosave) ||\n unsavedDraftWithValidations ||\n (globalConfig?.versions?.drafts &&\n !globalConfig?.versions?.drafts?.autosave)) && (\n <SaveDraftButton CustomComponent={componentMap.SaveDraftButton} />\n )}\n <PublishButton CustomComponent={componentMap.PublishButton} />\n </React.Fragment>\n ) : (\n <SaveButton CustomComponent={componentMap.SaveButton} />\n )}\n </React.Fragment>\n )}\n </div>\n {showDotMenu && (\n <Popup\n button={\n <div className={`${baseClass}__dots`}>\n <div />\n <div />\n <div />\n </div>\n }\n className={`${baseClass}__popup`}\n horizontalAlign=\"right\"\n size=\"large\"\n verticalAlign=\"bottom\"\n >\n <PopupList.ButtonGroup>\n {hasCreatePermission && (\n <React.Fragment>\n <PopupList.Button\n href={`${adminRoute}/collections/${collectionConfig?.slug}/create`}\n id=\"action-create\"\n >\n {i18n.t('general:createNew')}\n </PopupList.Button>\n {!collectionConfig.disableDuplicate && isEditing && (\n <DuplicateDocument\n id={id.toString()}\n singularLabel={collectionConfig?.labels?.singular}\n slug={collectionConfig?.slug}\n />\n )}\n </React.Fragment>\n )}\n {hasDeletePermission && (\n <DeleteDocument\n buttonId=\"action-delete\"\n collectionSlug={collectionConfig?.slug}\n id={id.toString()}\n singularLabel={collectionConfig?.labels?.singular}\n useAsTitle={collectionConfig?.admin?.useAsTitle}\n />\n )}\n </PopupList.ButtonGroup>\n </Popup>\n )}\n </div>\n </div>\n <div className={`${baseClass}__divider`} />\n </Gutter>\n )\n}\n"],"names":["getTranslation","React","Fragment","useEffect","useComponentMap","useConfig","useTranslation","formatDate","Autosave","DeleteDocument","DuplicateDocument","Gutter","Popup","PopupList","PreviewButton","PublishButton","SaveButton","SaveDraftButton","Status","baseClass","DocumentControls","props","id","slug","data","disableActions","hasSavePermission","isAccountView","isEditing","permissions","i18n","config","getComponentMap","collectionConfig","collections","find","coll","globalConfig","globals","global","componentMap","collectionSlug","globalSlug","admin","dateFormat","routes","adminRoute","updatedAt","setUpdatedAt","useState","createdAt","setCreatedAt","date","pattern","hasCreatePermission","create","permission","hasDeletePermission","delete","showDotMenu","Boolean","unsavedDraftWithValidations","versions","drafts","validate","className","div","ul","li","p","t","label","labels","singular","filter","join","autosave","collection","publishedDocUpdatedAt","timestamps","title","isPreviewEnabled","CustomComponent","button","horizontalAlign","size","verticalAlign","ButtonGroup","Button","href","disableDuplicate","toString","singularLabel","buttonId","useAsTitle"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrawerContent.d.ts","sourceRoot":"","sources":["../../../src/elements/ListDrawer/DrawerContent.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DrawerContent.d.ts","sourceRoot":"","sources":["../../../src/elements/ListDrawer/DrawerContent.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAuD,MAAM,OAAO,CAAA;AAE3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAoCjD,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAyQvD,CAAA"}
|
|
@@ -88,7 +88,7 @@ export const ListDrawerContent = ({ collectionSlugs, customHeader, drawerSlug, f
|
|
|
88
88
|
collectionSlug: selectedCollectionConfig.slug
|
|
89
89
|
});
|
|
90
90
|
useEffect(()=>{
|
|
91
|
-
if (selectedOption) {
|
|
91
|
+
if (selectedOption && !Array.isArray(selectedOption)) {
|
|
92
92
|
setSelectedCollectionConfig(enabledCollectionConfigs.find(({ slug })=>selectedOption.value === slug));
|
|
93
93
|
}
|
|
94
94
|
}, [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/ListDrawer/DrawerContent.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig } from 'payload/types'\nimport type { Where } from 'payload/types'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback, useEffect, useReducer, useState } from 'react'\n\nimport type { ListDrawerProps } from './types.js'\n\nimport { FieldLabel } from '../../forms/FieldLabel/index.js'\nimport usePayloadAPI from '../../hooks/usePayloadAPI.js'\nimport { X } from '../../icons/X/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useComponentMap } from '../../providers/ComponentMap/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { ListInfoProvider } from '../../providers/ListInfo/index.js'\nimport { ListQueryProvider } from '../../providers/ListQuery/index.js'\nimport { usePreferences } from '../../providers/Preferences/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useDocumentDrawer } from '../DocumentDrawer/index.js'\nimport { LoadingOverlay } from '../Loading/index.js'\nimport { Pill } from '../Pill/index.js'\nimport { ReactSelect } from '../ReactSelect/index.js'\nimport { TableColumnsProvider } from '../TableColumns/index.js'\nimport { ViewDescription } from '../ViewDescription/index.js'\nimport { baseClass } from './index.js'\n\nconst hoistQueryParamsToAnd = (where: Where, queryParams: Where) => {\n if ('and' in where) {\n where.and.push(queryParams)\n } else if ('or' in where) {\n where = {\n and: [where, queryParams],\n }\n } else {\n where = {\n and: [where, queryParams],\n }\n }\n\n return where\n}\n\nexport const ListDrawerContent: React.FC<ListDrawerProps> = ({\n collectionSlugs,\n customHeader,\n drawerSlug,\n filterOptions,\n onSelect,\n selectedCollection,\n}) => {\n const { i18n, t } = useTranslation()\n const { permissions } = useAuth()\n const { setPreference } = usePreferences()\n const { closeModal, isModalOpen } = useModal()\n const [limit, setLimit] = useState<number>()\n const [sort, setSort] = useState<string>(null)\n const [page, setPage] = useState<number>(1)\n const [where, setWhere] = useState<Where>(null)\n const [search, setSearch] = useState<string>('')\n\n const { componentMap } = useComponentMap()\n\n const {\n collections,\n routes: { api },\n serverURL,\n } = useConfig()\n\n const enabledCollectionConfigs = collections.filter(({ slug }) => {\n return collectionSlugs.includes(slug)\n })\n\n const [selectedCollectionConfig, setSelectedCollectionConfig] = useState<ClientCollectionConfig>(\n () => {\n return (\n enabledCollectionConfigs.find(({ slug }) => slug === selectedCollection) ||\n enabledCollectionConfigs?.[0]\n )\n },\n )\n\n const { List } = componentMap.collections?.[selectedCollectionConfig?.slug] || {}\n\n const [selectedOption, setSelectedOption] = useState<{ label: string; value: string }>(() =>\n selectedCollectionConfig\n ? {\n label: getTranslation(selectedCollectionConfig.labels.singular, i18n),\n value: selectedCollectionConfig.slug,\n }\n : undefined,\n )\n\n // const [fields, setFields] = useState<Field[]>(() => formatFields(selectedCollectionConfig))\n\n useEffect(() => {\n // setFields(formatFields(selectedCollectionConfig))\n }, [selectedCollectionConfig])\n\n // allow external control of selected collection, same as the initial state logic above\n useEffect(() => {\n if (selectedCollection) {\n // if passed a selection, find it and check if it's enabled\n const selectedConfig =\n enabledCollectionConfigs.find(({ slug }) => slug === selectedCollection) ||\n enabledCollectionConfigs?.[0]\n setSelectedCollectionConfig(selectedConfig)\n }\n }, [selectedCollection, enabledCollectionConfigs, onSelect, t])\n\n const preferenceKey = `${selectedCollectionConfig.slug}-list`\n\n // this is the 'create new' drawer\n const [DocumentDrawer, DocumentDrawerToggler, { drawerSlug: documentDrawerSlug }] =\n useDocumentDrawer({\n collectionSlug: selectedCollectionConfig.slug,\n })\n\n useEffect(() => {\n if (selectedOption) {\n setSelectedCollectionConfig(\n enabledCollectionConfigs.find(({ slug }) => selectedOption.value === slug),\n )\n }\n }, [selectedOption, enabledCollectionConfigs])\n\n const collectionPermissions = permissions?.collections?.[selectedCollectionConfig?.slug]\n const hasCreatePermission = collectionPermissions?.create?.permission\n\n // If modal is open, get active page of upload gallery\n const isOpen = isModalOpen(drawerSlug)\n const apiURL = isOpen ? `${serverURL}${api}/${selectedCollectionConfig.slug}` : null\n const [cacheBust, dispatchCacheBust] = useReducer((state) => state + 1, 0) // used to force a re-fetch even when apiURL is unchanged\n const [{ data, isError, isLoading: isLoadingList }, { setParams }] = usePayloadAPI(apiURL, {})\n const moreThanOneAvailableCollection = enabledCollectionConfigs.length > 1\n\n useEffect(() => {\n const {\n slug,\n admin: { listSearchableFields, useAsTitle } = {},\n versions,\n } = selectedCollectionConfig\n const params: {\n cacheBust?: number\n draft?: string\n limit?: number\n page?: number\n search?: string\n sort?: string\n where?: unknown\n } = {}\n\n let copyOfWhere = { ...(where || {}) }\n const filterOption = filterOptions?.[slug]\n\n if (filterOptions && typeof filterOption !== 'boolean') {\n copyOfWhere = hoistQueryParamsToAnd(copyOfWhere, filterOption)\n }\n\n if (search) {\n const searchAsConditions = (listSearchableFields || [useAsTitle]).map((fieldName) => {\n return {\n [fieldName]: {\n like: search,\n },\n }\n }, [])\n\n if (searchAsConditions.length > 0) {\n const searchFilter: Where = {\n or: [...searchAsConditions],\n }\n\n copyOfWhere = hoistQueryParamsToAnd(copyOfWhere, searchFilter)\n }\n }\n\n if (page) params.page = page\n if (sort) params.sort = sort\n if (cacheBust) params.cacheBust = cacheBust\n if (copyOfWhere) params.where = copyOfWhere\n if (versions?.drafts) params.draft = 'true'\n\n setParams(params)\n }, [page, sort, where, search, cacheBust, filterOptions, selectedCollectionConfig, t, setParams])\n\n useEffect(() => {\n const newPreferences = {\n limit,\n sort,\n }\n\n void setPreference(preferenceKey, newPreferences, true)\n }, [sort, limit, setPreference, preferenceKey])\n\n const onCreateNew = useCallback(\n ({ doc }) => {\n if (typeof onSelect === 'function') {\n onSelect({\n collectionSlug: selectedCollectionConfig.slug,\n docID: doc.id,\n })\n }\n dispatchCacheBust()\n closeModal(documentDrawerSlug)\n closeModal(drawerSlug)\n },\n [closeModal, documentDrawerSlug, drawerSlug, onSelect, selectedCollectionConfig],\n )\n\n if (!selectedCollectionConfig || isError) {\n return null\n }\n\n if (isLoadingList) {\n return <LoadingOverlay />\n }\n\n return (\n <ListInfoProvider\n Header={\n <header className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-wrap`}>\n <div className={`${baseClass}__header-content`}>\n <h2 className={`${baseClass}__header-text`}>\n {!customHeader\n ? getTranslation(selectedCollectionConfig?.labels?.plural, i18n)\n : customHeader}\n </h2>\n {hasCreatePermission && (\n <DocumentDrawerToggler className={`${baseClass}__create-new-button`}>\n <Pill>{t('general:createNew')}</Pill>\n </DocumentDrawerToggler>\n )}\n </div>\n <button\n aria-label={t('general:close')}\n className={`${baseClass}__header-close`}\n onClick={() => {\n closeModal(drawerSlug)\n }}\n type=\"button\"\n >\n <X />\n </button>\n </div>\n {selectedCollectionConfig?.admin?.description && (\n <div className={`${baseClass}__sub-header`}>\n <ViewDescription description={selectedCollectionConfig.admin.description} />\n </div>\n )}\n {moreThanOneAvailableCollection && (\n <div className={`${baseClass}__select-collection-wrap`}>\n <FieldLabel label={t('upload:selectCollectionToBrowse')} />\n <ReactSelect\n className={`${baseClass}__select-collection`}\n onChange={setSelectedOption} // this is only changing the options which is not rerunning my effect\n options={enabledCollectionConfigs.map((coll) => ({\n label: getTranslation(coll.labels.singular, i18n),\n value: coll.slug,\n }))}\n value={selectedOption}\n />\n </div>\n )}\n </header>\n }\n collectionConfig={selectedCollectionConfig}\n collectionSlug={selectedCollectionConfig.slug}\n hasCreatePermission={hasCreatePermission}\n newDocumentURL={null}\n >\n <ListQueryProvider\n data={data}\n defaultLimit={limit || selectedCollectionConfig?.admin?.pagination?.defaultLimit}\n defaultSort={sort}\n handlePageChange={setPage}\n handlePerPageChange={setLimit}\n handleSearchChange={setSearch}\n handleSortChange={setSort}\n handleWhereChange={setWhere}\n modifySearchParams={false}\n preferenceKey={preferenceKey}\n >\n <TableColumnsProvider\n cellProps={[\n {\n className: `${baseClass}__first-cell`,\n link: false,\n onClick: ({ collectionSlug: rowColl, rowData }) => {\n if (typeof onSelect === 'function') {\n onSelect({\n collectionSlug: rowColl,\n docID: rowData.id as string,\n })\n }\n },\n },\n ]}\n collectionSlug={selectedCollectionConfig.slug}\n preferenceKey={preferenceKey}\n >\n {List}\n <DocumentDrawer onSave={onCreateNew} />\n </TableColumnsProvider>\n </ListQueryProvider>\n </ListInfoProvider>\n )\n}\n"],"names":["useModal","getTranslation","React","useCallback","useEffect","useReducer","useState","FieldLabel","usePayloadAPI","X","useAuth","useComponentMap","useConfig","ListInfoProvider","ListQueryProvider","usePreferences","useTranslation","useDocumentDrawer","LoadingOverlay","Pill","ReactSelect","TableColumnsProvider","ViewDescription","baseClass","hoistQueryParamsToAnd","where","queryParams","and","push","ListDrawerContent","collectionSlugs","customHeader","drawerSlug","filterOptions","onSelect","selectedCollection","i18n","t","permissions","setPreference","closeModal","isModalOpen","limit","setLimit","sort","setSort","page","setPage","setWhere","search","setSearch","componentMap","collections","routes","api","serverURL","enabledCollectionConfigs","filter","slug","includes","selectedCollectionConfig","setSelectedCollectionConfig","find","List","selectedOption","setSelectedOption","label","labels","singular","value","undefined","selectedConfig","preferenceKey","DocumentDrawer","DocumentDrawerToggler","documentDrawerSlug","collectionSlug","collectionPermissions","hasCreatePermission","create","permission","isOpen","apiURL","cacheBust","dispatchCacheBust","state","data","isError","isLoading","isLoadingList","setParams","moreThanOneAvailableCollection","length","admin","listSearchableFields","useAsTitle","versions","params","copyOfWhere","filterOption","searchAsConditions","map","fieldName","like","searchFilter","or","drafts","draft","newPreferences","onCreateNew","doc","docID","id","Header","header","className","div","h2","plural","button","aria-label","onClick","type","description","onChange","options","coll","collectionConfig","newDocumentURL","defaultLimit","pagination","defaultSort","handlePageChange","handlePerPageChange","handleSearchChange","handleSortChange","handleWhereChange","modifySearchParams","cellProps","link","rowColl","rowData","onSave"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/ListDrawer/DrawerContent.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, Where } from 'payload/types'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback, useEffect, useReducer, useState } from 'react'\n\nimport type { ListDrawerProps } from './types.js'\n\nimport { FieldLabel } from '../../forms/FieldLabel/index.js'\nimport usePayloadAPI from '../../hooks/usePayloadAPI.js'\nimport { X } from '../../icons/X/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useComponentMap } from '../../providers/ComponentMap/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { ListInfoProvider } from '../../providers/ListInfo/index.js'\nimport { ListQueryProvider } from '../../providers/ListQuery/index.js'\nimport { usePreferences } from '../../providers/Preferences/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useDocumentDrawer } from '../DocumentDrawer/index.js'\nimport { LoadingOverlay } from '../Loading/index.js'\nimport { Pill } from '../Pill/index.js'\nimport { type Option, ReactSelect } from '../ReactSelect/index.js'\nimport { TableColumnsProvider } from '../TableColumns/index.js'\nimport { ViewDescription } from '../ViewDescription/index.js'\nimport { baseClass } from './index.js'\n\nconst hoistQueryParamsToAnd = (where: Where, queryParams: Where) => {\n if ('and' in where) {\n where.and.push(queryParams)\n } else if ('or' in where) {\n where = {\n and: [where, queryParams],\n }\n } else {\n where = {\n and: [where, queryParams],\n }\n }\n\n return where\n}\n\nexport const ListDrawerContent: React.FC<ListDrawerProps> = ({\n collectionSlugs,\n customHeader,\n drawerSlug,\n filterOptions,\n onSelect,\n selectedCollection,\n}) => {\n const { i18n, t } = useTranslation()\n const { permissions } = useAuth()\n const { setPreference } = usePreferences()\n const { closeModal, isModalOpen } = useModal()\n const [limit, setLimit] = useState<number>()\n const [sort, setSort] = useState<string>(null)\n const [page, setPage] = useState<number>(1)\n const [where, setWhere] = useState<Where>(null)\n const [search, setSearch] = useState<string>('')\n\n const { componentMap } = useComponentMap()\n\n const {\n collections,\n routes: { api },\n serverURL,\n } = useConfig()\n\n const enabledCollectionConfigs = collections.filter(({ slug }) => {\n return collectionSlugs.includes(slug)\n })\n\n const [selectedCollectionConfig, setSelectedCollectionConfig] = useState<ClientCollectionConfig>(\n () => {\n return (\n enabledCollectionConfigs.find(({ slug }) => slug === selectedCollection) ||\n enabledCollectionConfigs?.[0]\n )\n },\n )\n\n const { List } = componentMap.collections?.[selectedCollectionConfig?.slug] || {}\n\n const [selectedOption, setSelectedOption] = useState<Option | Option[]>(() =>\n selectedCollectionConfig\n ? {\n label: getTranslation(selectedCollectionConfig.labels.singular, i18n),\n value: selectedCollectionConfig.slug,\n }\n : undefined,\n )\n\n // const [fields, setFields] = useState<Field[]>(() => formatFields(selectedCollectionConfig))\n\n useEffect(() => {\n // setFields(formatFields(selectedCollectionConfig))\n }, [selectedCollectionConfig])\n\n // allow external control of selected collection, same as the initial state logic above\n useEffect(() => {\n if (selectedCollection) {\n // if passed a selection, find it and check if it's enabled\n const selectedConfig =\n enabledCollectionConfigs.find(({ slug }) => slug === selectedCollection) ||\n enabledCollectionConfigs?.[0]\n setSelectedCollectionConfig(selectedConfig)\n }\n }, [selectedCollection, enabledCollectionConfigs, onSelect, t])\n\n const preferenceKey = `${selectedCollectionConfig.slug}-list`\n\n // this is the 'create new' drawer\n const [DocumentDrawer, DocumentDrawerToggler, { drawerSlug: documentDrawerSlug }] =\n useDocumentDrawer({\n collectionSlug: selectedCollectionConfig.slug,\n })\n\n useEffect(() => {\n if (selectedOption && !Array.isArray(selectedOption)) {\n setSelectedCollectionConfig(\n enabledCollectionConfigs.find(({ slug }) => selectedOption.value === slug),\n )\n }\n }, [selectedOption, enabledCollectionConfigs])\n\n const collectionPermissions = permissions?.collections?.[selectedCollectionConfig?.slug]\n const hasCreatePermission = collectionPermissions?.create?.permission\n\n // If modal is open, get active page of upload gallery\n const isOpen = isModalOpen(drawerSlug)\n const apiURL = isOpen ? `${serverURL}${api}/${selectedCollectionConfig.slug}` : null\n const [cacheBust, dispatchCacheBust] = useReducer((state) => state + 1, 0) // used to force a re-fetch even when apiURL is unchanged\n const [{ data, isError, isLoading: isLoadingList }, { setParams }] = usePayloadAPI(apiURL, {})\n const moreThanOneAvailableCollection = enabledCollectionConfigs.length > 1\n\n useEffect(() => {\n const {\n slug,\n admin: { listSearchableFields, useAsTitle } = {},\n versions,\n } = selectedCollectionConfig\n const params: {\n cacheBust?: number\n draft?: string\n limit?: number\n page?: number\n search?: string\n sort?: string\n where?: unknown\n } = {}\n\n let copyOfWhere = { ...(where || {}) }\n const filterOption = filterOptions?.[slug]\n\n if (filterOptions && typeof filterOption !== 'boolean') {\n copyOfWhere = hoistQueryParamsToAnd(copyOfWhere, filterOption)\n }\n\n if (search) {\n const searchAsConditions = (listSearchableFields || [useAsTitle]).map((fieldName) => {\n return {\n [fieldName]: {\n like: search,\n },\n }\n }, [])\n\n if (searchAsConditions.length > 0) {\n const searchFilter: Where = {\n or: [...searchAsConditions],\n }\n\n copyOfWhere = hoistQueryParamsToAnd(copyOfWhere, searchFilter)\n }\n }\n\n if (page) params.page = page\n if (sort) params.sort = sort\n if (cacheBust) params.cacheBust = cacheBust\n if (copyOfWhere) params.where = copyOfWhere\n if (versions?.drafts) params.draft = 'true'\n\n setParams(params)\n }, [page, sort, where, search, cacheBust, filterOptions, selectedCollectionConfig, t, setParams])\n\n useEffect(() => {\n const newPreferences = {\n limit,\n sort,\n }\n\n void setPreference(preferenceKey, newPreferences, true)\n }, [sort, limit, setPreference, preferenceKey])\n\n const onCreateNew = useCallback(\n ({ doc }) => {\n if (typeof onSelect === 'function') {\n onSelect({\n collectionSlug: selectedCollectionConfig.slug,\n docID: doc.id,\n })\n }\n dispatchCacheBust()\n closeModal(documentDrawerSlug)\n closeModal(drawerSlug)\n },\n [closeModal, documentDrawerSlug, drawerSlug, onSelect, selectedCollectionConfig],\n )\n\n if (!selectedCollectionConfig || isError) {\n return null\n }\n\n if (isLoadingList) {\n return <LoadingOverlay />\n }\n\n return (\n <ListInfoProvider\n Header={\n <header className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-wrap`}>\n <div className={`${baseClass}__header-content`}>\n <h2 className={`${baseClass}__header-text`}>\n {!customHeader\n ? getTranslation(selectedCollectionConfig?.labels?.plural, i18n)\n : customHeader}\n </h2>\n {hasCreatePermission && (\n <DocumentDrawerToggler className={`${baseClass}__create-new-button`}>\n <Pill>{t('general:createNew')}</Pill>\n </DocumentDrawerToggler>\n )}\n </div>\n <button\n aria-label={t('general:close')}\n className={`${baseClass}__header-close`}\n onClick={() => {\n closeModal(drawerSlug)\n }}\n type=\"button\"\n >\n <X />\n </button>\n </div>\n {selectedCollectionConfig?.admin?.description && (\n <div className={`${baseClass}__sub-header`}>\n <ViewDescription description={selectedCollectionConfig.admin.description} />\n </div>\n )}\n {moreThanOneAvailableCollection && (\n <div className={`${baseClass}__select-collection-wrap`}>\n <FieldLabel label={t('upload:selectCollectionToBrowse')} />\n <ReactSelect\n className={`${baseClass}__select-collection`}\n onChange={setSelectedOption} // this is only changing the options which is not rerunning my effect\n options={enabledCollectionConfigs.map((coll) => ({\n label: getTranslation(coll.labels.singular, i18n),\n value: coll.slug,\n }))}\n value={selectedOption}\n />\n </div>\n )}\n </header>\n }\n collectionConfig={selectedCollectionConfig}\n collectionSlug={selectedCollectionConfig.slug}\n hasCreatePermission={hasCreatePermission}\n newDocumentURL={null}\n >\n <ListQueryProvider\n data={data}\n defaultLimit={limit || selectedCollectionConfig?.admin?.pagination?.defaultLimit}\n defaultSort={sort}\n handlePageChange={setPage}\n handlePerPageChange={setLimit}\n handleSearchChange={setSearch}\n handleSortChange={setSort}\n handleWhereChange={setWhere}\n modifySearchParams={false}\n preferenceKey={preferenceKey}\n >\n <TableColumnsProvider\n cellProps={[\n {\n className: `${baseClass}__first-cell`,\n link: false,\n onClick: ({ collectionSlug: rowColl, rowData }) => {\n if (typeof onSelect === 'function') {\n onSelect({\n collectionSlug: rowColl,\n docID: rowData.id as string,\n })\n }\n },\n },\n ]}\n collectionSlug={selectedCollectionConfig.slug}\n preferenceKey={preferenceKey}\n >\n {List}\n <DocumentDrawer onSave={onCreateNew} />\n </TableColumnsProvider>\n </ListQueryProvider>\n </ListInfoProvider>\n )\n}\n"],"names":["useModal","getTranslation","React","useCallback","useEffect","useReducer","useState","FieldLabel","usePayloadAPI","X","useAuth","useComponentMap","useConfig","ListInfoProvider","ListQueryProvider","usePreferences","useTranslation","useDocumentDrawer","LoadingOverlay","Pill","ReactSelect","TableColumnsProvider","ViewDescription","baseClass","hoistQueryParamsToAnd","where","queryParams","and","push","ListDrawerContent","collectionSlugs","customHeader","drawerSlug","filterOptions","onSelect","selectedCollection","i18n","t","permissions","setPreference","closeModal","isModalOpen","limit","setLimit","sort","setSort","page","setPage","setWhere","search","setSearch","componentMap","collections","routes","api","serverURL","enabledCollectionConfigs","filter","slug","includes","selectedCollectionConfig","setSelectedCollectionConfig","find","List","selectedOption","setSelectedOption","label","labels","singular","value","undefined","selectedConfig","preferenceKey","DocumentDrawer","DocumentDrawerToggler","documentDrawerSlug","collectionSlug","Array","isArray","collectionPermissions","hasCreatePermission","create","permission","isOpen","apiURL","cacheBust","dispatchCacheBust","state","data","isError","isLoading","isLoadingList","setParams","moreThanOneAvailableCollection","length","admin","listSearchableFields","useAsTitle","versions","params","copyOfWhere","filterOption","searchAsConditions","map","fieldName","like","searchFilter","or","drafts","draft","newPreferences","onCreateNew","doc","docID","id","Header","header","className","div","h2","plural","button","aria-label","onClick","type","description","onChange","options","coll","collectionConfig","newDocumentURL","defaultLimit","pagination","defaultSort","handlePageChange","handlePerPageChange","handleSearchChange","handleSortChange","handleWhereChange","modifySearchParams","cellProps","link","rowColl","rowData","onSave"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type {
|
|
2
|
+
import type { ReactSelectAdapterProps } from './types.js';
|
|
3
3
|
export type { Option } from './types.js';
|
|
4
4
|
import './index.scss';
|
|
5
5
|
export declare const ReactSelect: React.FC<ReactSelectAdapterProps>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ReactSelect/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA2B,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ReactSelect/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA2B,MAAM,OAAO,CAAA;AAI/C,OAAO,KAAK,EAAU,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACjE,YAAY,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAcxC,OAAO,cAAc,CAAA;AA+LrB,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAQzD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/ReactSelect/index.tsx"],"sourcesContent":["'use client'\nimport type { KeyboardEventHandler } from 'react'\n\nimport { arrayMove } from '@dnd-kit/sortable'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useEffect, useId } from 'react'\nimport Select from 'react-select'\nimport CreatableSelect from 'react-select/creatable'\n\nimport type { Option } from './types.js'\nimport type { Props as ReactSelectAdapterProps } from './types.js'\nexport type { Option } from './types.js'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { DraggableSortable } from '../DraggableSortable/index.js'\nimport { ShimmerEffect } from '../ShimmerEffect/index.js'\nimport { ClearIndicator } from './ClearIndicator/index.js'\nimport { Control } from './Control/index.js'\nimport { DropdownIndicator } from './DropdownIndicator/index.js'\nimport { Input } from './Input/index.js'\nimport { MultiValue, generateMultiValueDraggableID } from './MultiValue/index.js'\nimport { MultiValueLabel } from './MultiValueLabel/index.js'\nimport { MultiValueRemove } from './MultiValueRemove/index.js'\nimport { SingleValue } from './SingleValue/index.js'\nimport { ValueContainer } from './ValueContainer/index.js'\nimport './index.scss'\n\nconst createOption = (label: string) => ({\n label,\n value: label,\n})\n\nconst SelectAdapter: React.FC<ReactSelectAdapterProps> = (props) => {\n const { i18n, t } = useTranslation()\n const [inputValue, setInputValue] = React.useState('') // for creatable select\n const uuid = useId()\n const [hasMounted, setHasMounted] = React.useState(false)\n\n useEffect(() => {\n setHasMounted(true)\n }, [])\n\n const {\n className,\n components,\n customProps,\n disabled = false,\n filterOption = undefined,\n getOptionValue,\n isClearable = true,\n isCreatable,\n isLoading,\n isSearchable = true,\n noOptionsMessage = () => t('general:noOptions'),\n numberOnly = false,\n onChange,\n onMenuClose,\n onMenuOpen,\n options,\n placeholder = t('general:selectValue'),\n showError,\n value,\n } = props\n\n const loadingMessage = () => t('general:loading') + '...'\n\n const classes = [className, 'react-select', showError && 'react-select--error']\n .filter(Boolean)\n .join(' ')\n\n if (!hasMounted) {\n return <ShimmerEffect height=\"calc(var(--base) * 2 + 2px)\" />\n }\n\n if (!isCreatable) {\n return (\n <Select\n captureMenuScroll\n customProps={customProps}\n isLoading={isLoading}\n placeholder={getTranslation(placeholder, i18n)}\n {...props}\n className={classes}\n classNamePrefix=\"rs\"\n components={{\n ClearIndicator,\n Control,\n DropdownIndicator,\n Input,\n MultiValue,\n MultiValueLabel,\n MultiValueRemove,\n SingleValue,\n ValueContainer,\n ...components,\n }}\n filterOption={filterOption}\n getOptionValue={getOptionValue}\n instanceId={uuid}\n isClearable={isClearable}\n isDisabled={disabled}\n isSearchable={isSearchable}\n loadingMessage={loadingMessage}\n menuPlacement=\"auto\"\n noOptionsMessage={noOptionsMessage}\n onChange={onChange}\n onMenuClose={onMenuClose}\n onMenuOpen={onMenuOpen}\n options={options}\n value={value}\n />\n )\n }\n const handleKeyDown: KeyboardEventHandler = (event) => {\n // eslint-disable-next-line no-restricted-globals\n if (numberOnly === true) {\n const acceptableKeys = [\n 'Tab',\n 'Escape',\n 'Backspace',\n 'Enter',\n 'ArrowRight',\n 'ArrowLeft',\n 'ArrowUp',\n 'ArrowDown',\n ]\n const isNumber = !/\\D/.test(event.key)\n const isActionKey = acceptableKeys.includes(event.key)\n if (!isNumber && !isActionKey) {\n event.preventDefault()\n return\n }\n }\n if (!value || !inputValue || inputValue.trim() === '') return\n if (filterOption && !filterOption(null, inputValue)) {\n return\n }\n switch (event.key) {\n case 'Enter':\n case 'Tab':\n onChange([...(value as Option[]), createOption(inputValue)])\n setInputValue('')\n event.preventDefault()\n break\n default:\n break\n }\n }\n\n return (\n <CreatableSelect\n captureMenuScroll\n isLoading={isLoading}\n placeholder={getTranslation(placeholder, i18n)}\n {...props}\n className={classes}\n classNamePrefix=\"rs\"\n components={{\n ClearIndicator,\n Control,\n DropdownIndicator,\n Input,\n MultiValue,\n MultiValueLabel,\n MultiValueRemove,\n SingleValue,\n ValueContainer,\n ...components,\n }}\n filterOption={filterOption}\n inputValue={inputValue}\n instanceId={uuid}\n isClearable={isClearable}\n isDisabled={disabled}\n isSearchable={isSearchable}\n loadingMessage={loadingMessage}\n menuPlacement=\"auto\"\n noOptionsMessage={noOptionsMessage}\n onChange={onChange}\n onInputChange={(newValue) => setInputValue(newValue)}\n onKeyDown={handleKeyDown}\n onMenuClose={onMenuClose}\n onMenuOpen={onMenuOpen}\n options={options}\n value={value}\n />\n )\n}\n\nconst SortableSelect: React.FC<ReactSelectAdapterProps> = (props) => {\n const { getOptionValue, onChange, value } = props\n\n let draggableIDs: string[] = []\n if (value) {\n draggableIDs = (Array.isArray(value) ? value : [value]).map((optionValue) => {\n return generateMultiValueDraggableID(optionValue, getOptionValue)\n })\n }\n\n return (\n <DraggableSortable\n className=\"react-select-container\"\n ids={draggableIDs}\n onDragEnd={({ moveFromIndex, moveToIndex }) => {\n let sorted = value\n if (value && Array.isArray(value)) {\n sorted = arrayMove(value, moveFromIndex, moveToIndex)\n }\n onChange(sorted)\n }}\n >\n <SelectAdapter {...props} />\n </DraggableSortable>\n )\n}\n\nexport const ReactSelect: React.FC<ReactSelectAdapterProps> = (props) => {\n const { isMulti, isSortable } = props\n\n if (isMulti && isSortable) {\n return <SortableSelect {...props} />\n }\n\n return <SelectAdapter {...props} />\n}\n"],"names":["arrayMove","getTranslation","React","useEffect","useId","Select","CreatableSelect","useTranslation","DraggableSortable","ShimmerEffect","ClearIndicator","Control","DropdownIndicator","Input","MultiValue","generateMultiValueDraggableID","MultiValueLabel","MultiValueRemove","SingleValue","ValueContainer","createOption","label","value","SelectAdapter","props","i18n","t","inputValue","setInputValue","useState","uuid","hasMounted","setHasMounted","className","components","customProps","disabled","filterOption","undefined","getOptionValue","isClearable","isCreatable","isLoading","isSearchable","noOptionsMessage","numberOnly","onChange","onMenuClose","onMenuOpen","options","placeholder","showError","loadingMessage","classes","filter","Boolean","join","height","captureMenuScroll","classNamePrefix","instanceId","isDisabled","menuPlacement","handleKeyDown","event","acceptableKeys","isNumber","test","key","isActionKey","includes","preventDefault","trim","onInputChange","newValue","onKeyDown","SortableSelect","draggableIDs","Array","isArray","map","optionValue","ids","onDragEnd","moveFromIndex","moveToIndex","sorted","ReactSelect","isMulti","isSortable"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/ReactSelect/index.tsx"],"sourcesContent":["'use client'\nimport type { KeyboardEventHandler } from 'react'\n\nimport { arrayMove } from '@dnd-kit/sortable'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useEffect, useId } from 'react'\nimport Select from 'react-select'\nimport CreatableSelect from 'react-select/creatable'\n\nimport type { Option, ReactSelectAdapterProps } from './types.js'\nexport type { Option } from './types.js'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { DraggableSortable } from '../DraggableSortable/index.js'\nimport { ShimmerEffect } from '../ShimmerEffect/index.js'\nimport { ClearIndicator } from './ClearIndicator/index.js'\nimport { Control } from './Control/index.js'\nimport { DropdownIndicator } from './DropdownIndicator/index.js'\nimport { Input } from './Input/index.js'\nimport { MultiValue, generateMultiValueDraggableID } from './MultiValue/index.js'\nimport { MultiValueLabel } from './MultiValueLabel/index.js'\nimport { MultiValueRemove } from './MultiValueRemove/index.js'\nimport { SingleValue } from './SingleValue/index.js'\nimport { ValueContainer } from './ValueContainer/index.js'\nimport './index.scss'\n\nconst createOption = (label: string) => ({\n label,\n value: label,\n})\n\nconst SelectAdapter: React.FC<ReactSelectAdapterProps> = (props) => {\n const { i18n, t } = useTranslation()\n const [inputValue, setInputValue] = React.useState('') // for creatable select\n const uuid = useId()\n const [hasMounted, setHasMounted] = React.useState(false)\n\n useEffect(() => {\n setHasMounted(true)\n }, [])\n\n const {\n className,\n components,\n customProps,\n disabled = false,\n filterOption = undefined,\n getOptionValue,\n isClearable = true,\n isCreatable,\n isLoading,\n isSearchable = true,\n noOptionsMessage = () => t('general:noOptions'),\n numberOnly = false,\n onChange,\n onMenuClose,\n onMenuOpen,\n options,\n placeholder = t('general:selectValue'),\n showError,\n value,\n } = props\n\n const loadingMessage = () => t('general:loading') + '...'\n\n const classes = [className, 'react-select', showError && 'react-select--error']\n .filter(Boolean)\n .join(' ')\n\n if (!hasMounted) {\n return <ShimmerEffect height=\"calc(var(--base) * 2 + 2px)\" />\n }\n\n if (!isCreatable) {\n return (\n <Select\n captureMenuScroll\n customProps={customProps}\n isLoading={isLoading}\n placeholder={getTranslation(placeholder, i18n)}\n {...props}\n className={classes}\n classNamePrefix=\"rs\"\n components={{\n ClearIndicator,\n Control,\n DropdownIndicator,\n Input,\n MultiValue,\n MultiValueLabel,\n MultiValueRemove,\n SingleValue,\n ValueContainer,\n ...components,\n }}\n filterOption={filterOption}\n getOptionValue={getOptionValue}\n instanceId={uuid}\n isClearable={isClearable}\n isDisabled={disabled}\n isSearchable={isSearchable}\n loadingMessage={loadingMessage}\n menuPlacement=\"auto\"\n noOptionsMessage={noOptionsMessage}\n onChange={onChange}\n onMenuClose={onMenuClose}\n onMenuOpen={onMenuOpen}\n options={options}\n value={value}\n />\n )\n }\n const handleKeyDown: KeyboardEventHandler = (event) => {\n // eslint-disable-next-line no-restricted-globals\n if (numberOnly === true) {\n const acceptableKeys = [\n 'Tab',\n 'Escape',\n 'Backspace',\n 'Enter',\n 'ArrowRight',\n 'ArrowLeft',\n 'ArrowUp',\n 'ArrowDown',\n ]\n const isNumber = !/\\D/.test(event.key)\n const isActionKey = acceptableKeys.includes(event.key)\n if (!isNumber && !isActionKey) {\n event.preventDefault()\n return\n }\n }\n if (!value || !inputValue || inputValue.trim() === '') return\n if (filterOption && !filterOption(null, inputValue)) {\n return\n }\n switch (event.key) {\n case 'Enter':\n case 'Tab':\n onChange([...(value as Option[]), createOption(inputValue)])\n setInputValue('')\n event.preventDefault()\n break\n default:\n break\n }\n }\n\n return (\n <CreatableSelect\n captureMenuScroll\n isLoading={isLoading}\n placeholder={getTranslation(placeholder, i18n)}\n {...props}\n className={classes}\n classNamePrefix=\"rs\"\n components={{\n ClearIndicator,\n Control,\n DropdownIndicator,\n Input,\n MultiValue,\n MultiValueLabel,\n MultiValueRemove,\n SingleValue,\n ValueContainer,\n ...components,\n }}\n filterOption={filterOption}\n inputValue={inputValue}\n instanceId={uuid}\n isClearable={isClearable}\n isDisabled={disabled}\n isSearchable={isSearchable}\n loadingMessage={loadingMessage}\n menuPlacement=\"auto\"\n noOptionsMessage={noOptionsMessage}\n onChange={onChange}\n onInputChange={(newValue) => setInputValue(newValue)}\n onKeyDown={handleKeyDown}\n onMenuClose={onMenuClose}\n onMenuOpen={onMenuOpen}\n options={options}\n value={value}\n />\n )\n}\n\nconst SortableSelect: React.FC<ReactSelectAdapterProps> = (props) => {\n const { getOptionValue, onChange, value } = props\n\n let draggableIDs: string[] = []\n if (value) {\n draggableIDs = (Array.isArray(value) ? value : [value]).map((optionValue) => {\n return generateMultiValueDraggableID(optionValue, getOptionValue)\n })\n }\n\n return (\n <DraggableSortable\n className=\"react-select-container\"\n ids={draggableIDs}\n onDragEnd={({ moveFromIndex, moveToIndex }) => {\n let sorted = value\n if (value && Array.isArray(value)) {\n sorted = arrayMove(value, moveFromIndex, moveToIndex)\n }\n onChange(sorted)\n }}\n >\n <SelectAdapter {...props} />\n </DraggableSortable>\n )\n}\n\nexport const ReactSelect: React.FC<ReactSelectAdapterProps> = (props) => {\n const { isMulti, isSortable } = props\n\n if (isMulti && isSortable) {\n return <SortableSelect {...props} />\n }\n\n return <SelectAdapter {...props} />\n}\n"],"names":["arrayMove","getTranslation","React","useEffect","useId","Select","CreatableSelect","useTranslation","DraggableSortable","ShimmerEffect","ClearIndicator","Control","DropdownIndicator","Input","MultiValue","generateMultiValueDraggableID","MultiValueLabel","MultiValueRemove","SingleValue","ValueContainer","createOption","label","value","SelectAdapter","props","i18n","t","inputValue","setInputValue","useState","uuid","hasMounted","setHasMounted","className","components","customProps","disabled","filterOption","undefined","getOptionValue","isClearable","isCreatable","isLoading","isSearchable","noOptionsMessage","numberOnly","onChange","onMenuClose","onMenuOpen","options","placeholder","showError","loadingMessage","classes","filter","Boolean","join","height","captureMenuScroll","classNamePrefix","instanceId","isDisabled","menuPlacement","handleKeyDown","event","acceptableKeys","isNumber","test","key","isActionKey","includes","preventDefault","trim","onInputChange","newValue","onKeyDown","SortableSelect","draggableIDs","Array","isArray","map","optionValue","ids","onDragEnd","moveFromIndex","moveToIndex","sorted","ReactSelect","isMulti","isSortable"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -19,16 +19,16 @@ declare module 'react-select/dist/declarations/src' {
|
|
|
19
19
|
customProps?: ReactSelectStateManagerProps<Option, IsMulti, Group> & CustomSelectProps;
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
export type Option = {
|
|
22
|
+
export type Option<TValue = unknown> = {
|
|
23
23
|
[key: string]: unknown;
|
|
24
24
|
id?: string;
|
|
25
|
-
value:
|
|
25
|
+
value: TValue;
|
|
26
26
|
};
|
|
27
27
|
export type OptionGroup = {
|
|
28
28
|
label: string;
|
|
29
29
|
options: Option[];
|
|
30
30
|
};
|
|
31
|
-
export type
|
|
31
|
+
export type ReactSelectAdapterProps = {
|
|
32
32
|
backspaceRemovesValue?: boolean;
|
|
33
33
|
blurInputOnSelect?: boolean;
|
|
34
34
|
className?: string;
|
|
@@ -57,7 +57,7 @@ export type Props = {
|
|
|
57
57
|
inputValue: string;
|
|
58
58
|
}) => string;
|
|
59
59
|
numberOnly?: boolean;
|
|
60
|
-
onChange?: (value:
|
|
60
|
+
onChange?: (value: Option | Option[]) => void;
|
|
61
61
|
onInputChange?: (val: string) => void;
|
|
62
62
|
onMenuClose?: () => void;
|
|
63
63
|
onMenuOpen?: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/elements/ReactSelect/types.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,IAAI,4BAA4B,EAAE,MAAM,cAAc,CAAA;AAEjG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAErE,KAAK,iBAAiB,GAAG;IACvB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,cAAc,CAAC,EAAE,GAAG,CAAA;IACpB,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAA;IACrD,MAAM,CAAC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IACtC,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;CAC5C,CAAA;AAKD,OAAO,QAAQ,2CAA2C,CAAC;IACzD,UAAiB,KAAK,CAAC,MAAM,EAAE,OAAO,SAAS,OAAO,EAAE,KAAK,SAAS,SAAS,CAAC,MAAM,CAAC;QACrF,WAAW,CAAC,EAAE,iBAAiB,CAAA;KAChC;CACF;AAKD,OAAO,QAAQ,oCAAoC,CAAC;IAClD,UAAiB,uBAAuB,CACtC,MAAM,EACN,OAAO,SAAS,OAAO,EACvB,KAAK,SAAS,SAAS,CAAC,MAAM,CAAC,CAC/B,SAAQ,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;QAC3C,WAAW,CAAC,EAAE,4BAA4B,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,iBAAiB,CAAA;KACvF;CACF;AAED,MAAM,MAAM,MAAM,GAAG;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/elements/ReactSelect/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/ReactSelect/types.ts"],"sourcesContent":["import type { CommonProps, GroupBase, Props as ReactSelectStateManagerProps } from 'react-select'\n\nimport type { DocumentDrawerProps } from '../DocumentDrawer/types.js'\n\ntype CustomSelectProps = {\n disableKeyDown?: boolean\n disableMouseDown?: boolean\n draggableProps?: any\n droppableRef?: React.RefObject<HTMLDivElement | null>\n onSave?: DocumentDrawerProps['onSave']\n setDrawerIsOpen?: (isOpen: boolean) => void\n}\n\n// augment the types for the `Select` component from `react-select`\n// this is to include the `selectProps` prop at the top-level `Select` component\n// @ts-expect-error-next-line // TODO Fix this - moduleResolution 16 breaks our declare module\ndeclare module 'react-select/dist/declarations/src/Select' {\n export interface Props<Option, IsMulti extends boolean, Group extends GroupBase<Option>> {\n customProps?: CustomSelectProps\n }\n}\n\n// augment the types for the `CommonPropsAndClassName` from `react-select`\n// this will include the `selectProps` prop to every `react-select` component automatically\n// @ts-expect-error-next-line // TODO Fix this - moduleResolution 16 breaks our declare module\ndeclare module 'react-select/dist/declarations/src' {\n export interface CommonPropsAndClassName<\n Option,\n IsMulti extends boolean,\n Group extends GroupBase<Option>,\n > extends CommonProps<Option, IsMulti, Group> {\n customProps?: ReactSelectStateManagerProps<Option, IsMulti, Group> & CustomSelectProps\n }\n}\n\nexport type Option = {\n [key: string]: unknown\n //* The ID is used to identify the option in the UI. If it doesn't exist and value cannot be transformed into a string, sorting won't work */\n id?: string\n value:
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/ReactSelect/types.ts"],"sourcesContent":["import type { CommonProps, GroupBase, Props as ReactSelectStateManagerProps } from 'react-select'\n\nimport type { DocumentDrawerProps } from '../DocumentDrawer/types.js'\n\ntype CustomSelectProps = {\n disableKeyDown?: boolean\n disableMouseDown?: boolean\n draggableProps?: any\n droppableRef?: React.RefObject<HTMLDivElement | null>\n onSave?: DocumentDrawerProps['onSave']\n setDrawerIsOpen?: (isOpen: boolean) => void\n}\n\n// augment the types for the `Select` component from `react-select`\n// this is to include the `selectProps` prop at the top-level `Select` component\n// @ts-expect-error-next-line // TODO Fix this - moduleResolution 16 breaks our declare module\ndeclare module 'react-select/dist/declarations/src/Select' {\n export interface Props<Option, IsMulti extends boolean, Group extends GroupBase<Option>> {\n customProps?: CustomSelectProps\n }\n}\n\n// augment the types for the `CommonPropsAndClassName` from `react-select`\n// this will include the `selectProps` prop to every `react-select` component automatically\n// @ts-expect-error-next-line // TODO Fix this - moduleResolution 16 breaks our declare module\ndeclare module 'react-select/dist/declarations/src' {\n export interface CommonPropsAndClassName<\n Option,\n IsMulti extends boolean,\n Group extends GroupBase<Option>,\n > extends CommonProps<Option, IsMulti, Group> {\n customProps?: ReactSelectStateManagerProps<Option, IsMulti, Group> & CustomSelectProps\n }\n}\n\nexport type Option<TValue = unknown> = {\n [key: string]: unknown\n //* The ID is used to identify the option in the UI. If it doesn't exist and value cannot be transformed into a string, sorting won't work */\n id?: string\n value: TValue\n}\n\nexport type OptionGroup = {\n label: string\n options: Option[]\n}\n\nexport type ReactSelectAdapterProps = {\n backspaceRemovesValue?: boolean\n blurInputOnSelect?: boolean\n className?: string\n components?: {\n [key: string]: React.FC<any>\n }\n customProps?: CustomSelectProps\n disabled?: boolean\n filterOption?:\n | ((\n { data, label, value }: { data: Option; label: string; value: string },\n search: string,\n ) => boolean)\n | undefined\n getOptionValue?: ReactSelectStateManagerProps<\n Option,\n boolean,\n GroupBase<Option>\n >['getOptionValue']\n inputId?: string\n isClearable?: boolean\n /** Allows you to create own values in the UI despite them not being pre-specified */\n isCreatable?: boolean\n isLoading?: boolean\n /** Allows you to specify multiple values instead of just one */\n isMulti?: boolean\n isOptionSelected?: any\n isSearchable?: boolean\n isSortable?: boolean\n noOptionsMessage?: (obj: { inputValue: string }) => string\n numberOnly?: boolean\n onChange?: (value: Option | Option[]) => void // eslint-disable-line @typescript-eslint/no-explicit-any\n onInputChange?: (val: string) => void\n onMenuClose?: () => void\n onMenuOpen?: () => void\n onMenuScrollToBottom?: () => void\n options: Option[] | OptionGroup[]\n placeholder?: string\n showError?: boolean\n value?: Option | Option[]\n}\n"],"names":[],"rangeMappings":"","mappings":"AA+CA,WAyCC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/SortComplex/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/SortComplex/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAgB,yBAAyB,EAAE,MAAM,eAAe,CAAA;AAQ5E,OAAO,KAA8B,MAAM,OAAO,CAAA;AAElD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,EAAE,yBAAyB,CAAA;IACrC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAOD,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA0ElD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/SortComplex/index.tsx"],"sourcesContent":["'use client'\nimport type { OptionObject
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/SortComplex/index.tsx"],"sourcesContent":["'use client'\nimport type { OptionObject, SanitizedCollectionConfig } from 'payload/types'\n\nimport { getTranslation } from '@payloadcms/translations'\n// TODO: abstract the `next/navigation` dependency out from this component\nimport { usePathname, useRouter } from 'next/navigation.js'\nimport { sortableFieldTypes } from 'payload/fields/index'\nimport { fieldAffectsData } from 'payload/types'\nimport queryString from 'qs'\nimport React, { useEffect, useState } from 'react'\n\nexport type SortComplexProps = {\n collection: SanitizedCollectionConfig\n handleChange?: (sort: string) => void\n modifySearchQuery?: boolean\n sort?: string\n}\n\nimport type { Option } from '../ReactSelect/index.js'\n\nimport { useSearchParams } from '../../providers/SearchParams/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { ReactSelect } from '../ReactSelect/index.js'\nimport './index.scss'\n\nconst baseClass = 'sort-complex'\n\nexport const SortComplex: React.FC<SortComplexProps> = (props) => {\n const { collection, handleChange, modifySearchQuery = true } = props\n\n const router = useRouter()\n const pathname = usePathname()\n const { searchParams } = useSearchParams()\n const { i18n, t } = useTranslation()\n const [sortOptions, setSortOptions] = useState<OptionObject[]>()\n\n const [sortFields] = useState(() =>\n collection.fields.reduce((fields, field) => {\n if (fieldAffectsData(field) && sortableFieldTypes.indexOf(field.type) > -1) {\n return [\n ...fields,\n { label: getTranslation(field.label || field.name, i18n), value: field.name },\n ]\n }\n return fields\n }, []),\n )\n\n const [sortField, setSortField] = useState(sortFields[0])\n const [initialSort] = useState<Option>(() => ({ label: t('general:descending'), value: '-' }))\n const [sortOrder, setSortOrder] = useState(initialSort)\n\n useEffect(() => {\n if (sortField?.value) {\n const newSortValue = `${sortOrder.value}${sortField.value}`\n\n if (handleChange) handleChange(newSortValue)\n\n if (searchParams.sort !== newSortValue && modifySearchQuery) {\n const search = queryString.stringify(\n {\n ...searchParams,\n sort: newSortValue,\n },\n { addQueryPrefix: true },\n )\n\n router.replace(`${pathname}${search}`)\n }\n }\n }, [pathname, router, searchParams, sortField, sortOrder, modifySearchQuery, handleChange])\n\n useEffect(() => {\n setSortOptions([\n { label: t('general:ascending'), value: '' },\n { label: t('general:descending'), value: '-' },\n ])\n }, [i18n, t])\n\n return (\n <div className={baseClass}>\n <React.Fragment>\n <div className={`${baseClass}__wrap`}>\n <div className={`${baseClass}__select`}>\n <div className={`${baseClass}__label`}>{t('general:columnToSort')}</div>\n <ReactSelect onChange={setSortField} options={sortFields} value={sortField} />\n </div>\n <div className={`${baseClass}__select`}>\n <div className={`${baseClass}__label`}>{t('general:order')}</div>\n <ReactSelect\n onChange={(incomingSort: Option) => {\n setSortOrder(incomingSort || initialSort)\n }}\n options={sortOptions}\n value={sortOrder}\n />\n </div>\n </div>\n </React.Fragment>\n </div>\n )\n}\n"],"names":["getTranslation","usePathname","useRouter","sortableFieldTypes","fieldAffectsData","queryString","React","useEffect","useState","useSearchParams","useTranslation","ReactSelect","baseClass","SortComplex","props","collection","handleChange","modifySearchQuery","router","pathname","searchParams","i18n","t","sortOptions","setSortOptions","sortFields","fields","reduce","field","indexOf","type","label","name","value","sortField","setSortField","initialSort","sortOrder","setSortOrder","newSortValue","sort","search","stringify","addQueryPrefix","replace","div","className","Fragment","onChange","options","incomingSort"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -2,10 +2,8 @@ import type { CellComponentProps } from 'payload/types';
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import type { ColumnPreferences } from '../../providers/ListInfo/index.js';
|
|
4
4
|
import type { Column } from '../Table/index.js';
|
|
5
|
-
import type { Action } from './columnReducer.js';
|
|
6
5
|
export interface ITableColumns {
|
|
7
6
|
columns: Column[];
|
|
8
|
-
dispatchTableColumns: React.Dispatch<Action>;
|
|
9
7
|
moveColumn: (args: {
|
|
10
8
|
fromIndex: number;
|
|
11
9
|
toIndex: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/TableColumns/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/TableColumns/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAA6B,MAAM,eAAe,CAAA;AAElF,OAAO,KAA2D,MAAM,OAAO,CAAA;AAE/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAS/C,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,UAAU,EAAE,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAClE,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;IAC7C,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;CACvC;AAED,eAAO,MAAM,kBAAkB,8BAAoD,CAAA;AAEnF,eAAO,MAAM,eAAe,QAAO,aAA+C,CAAA;AAElF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,iBAAiB,CAAA;CAC3B,CAAA;AAED,KAAK,KAAK,GAAG;IACX,SAAS,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAA;IACzC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,cAAc,EAAE,MAAM,CAAA;IACtB,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA0KhD,CAAA"}
|