payload 1.1.10 → 1.1.12

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.
@@ -25,11 +25,18 @@ const Duplicate = ({ slug, collection, id }) => {
25
25
  return;
26
26
  }
27
27
  const create = async (locale = '') => {
28
+ var _a;
28
29
  const response = await requests.get(`${serverURL}${api}/${slug}/${id}`, {
29
30
  locale,
30
31
  depth: 0,
31
32
  });
32
- const data = await response.json();
33
+ let data = await response.json();
34
+ if (typeof ((_a = collection.admin.hooks) === null || _a === void 0 ? void 0 : _a.beforeDuplicate) === 'function') {
35
+ data = await collection.admin.hooks.beforeDuplicate({
36
+ data,
37
+ locale,
38
+ });
39
+ }
33
40
  const result = await requests.post(`${serverURL}${api}/${slug}`, {
34
41
  headers: {
35
42
  'Content-Type': 'application/json',
@@ -50,12 +57,19 @@ const Duplicate = ({ slug, collection, id }) => {
50
57
  localization.locales
51
58
  .filter((locale) => locale !== localization.defaultLocale)
52
59
  .forEach(async (locale) => {
60
+ var _a;
53
61
  if (!abort) {
54
62
  const res = await requests.get(`${serverURL}${api}/${slug}/${id}`, {
55
63
  locale,
56
64
  depth: 0,
57
65
  });
58
- const localizedDoc = await res.json();
66
+ let localizedDoc = await res.json();
67
+ if (typeof ((_a = collection.admin.hooks) === null || _a === void 0 ? void 0 : _a.beforeDuplicate) === 'function') {
68
+ localizedDoc = await collection.admin.hooks.beforeDuplicate({
69
+ data: localizedDoc,
70
+ locale,
71
+ });
72
+ }
59
73
  const patchResult = await requests.patch(`${serverURL}${api}/${slug}/${duplicateID}?locale=${locale}`, {
60
74
  headers: {
61
75
  'Content-Type': 'application/json',
@@ -84,7 +98,7 @@ const Duplicate = ({ slug, collection, id }) => {
84
98
  pathname: `${admin}/collections/${slug}/${duplicateID}`,
85
99
  });
86
100
  }, 10);
87
- }, [modified, localization, collection.labels.singular, setModified, toggleModal, modalSlug, serverURL, api, slug, id, push, admin]);
101
+ }, [modified, localization, collection, setModified, toggleModal, modalSlug, serverURL, api, slug, id, push, admin]);
88
102
  const confirm = useCallback(async () => {
89
103
  setHasClicked(false);
90
104
  await handleClick(true);
@@ -51,7 +51,7 @@ const ArrayFieldType = (props) => {
51
51
  const memoizedValidate = useCallback((value, options) => {
52
52
  return validate(value, { ...options, minRows, maxRows, required });
53
53
  }, [maxRows, minRows, required, validate]);
54
- const [disableFormData, setDisableFormData] = useState(false);
54
+ const [disableFormData, setDisableFormData] = useState(true);
55
55
  const { showError, errorMessage, value, setValue, } = useField({
56
56
  path,
57
57
  validate: memoizedValidate,
@@ -31,7 +31,7 @@ const labelDefaults = {
31
31
  singular: 'Block',
32
32
  plural: 'Blocks',
33
33
  };
34
- const Index = (props) => {
34
+ const BlocksField = (props) => {
35
35
  const { label, name, path: pathFromProps, blocks, labels = labelDefaults, fieldTypes, maxRows, minRows, required, validate = blocksValidator, permissions, admin: { readOnly, description, condition, initCollapsed, className, }, } = props;
36
36
  const path = pathFromProps || name;
37
37
  const { preferencesKey } = useDocumentInfo();
@@ -47,7 +47,7 @@ const Index = (props) => {
47
47
  const memoizedValidate = useCallback((value, options) => {
48
48
  return validate(value, { ...options, minRows, maxRows, required });
49
49
  }, [maxRows, minRows, required, validate]);
50
- const [disableFormData, setDisableFormData] = useState(false);
50
+ const [disableFormData, setDisableFormData] = useState(true);
51
51
  const [selectorIndexOpen, setSelectorIndexOpen] = useState();
52
52
  const { showError, errorMessage, value, setValue, } = useField({
53
53
  path,
@@ -215,4 +215,4 @@ const Index = (props) => {
215
215
  (!readOnly && !hasMaxRows) && (React.createElement("div", { className: `${baseClass}__add-button-wrap` },
216
216
  React.createElement(Popup, { buttonType: "custom", size: "large", horizontalAlign: "left", button: (React.createElement(Button, { buttonStyle: "icon-label", icon: "plus", iconPosition: "left", iconStyle: "with-border" }, `Add ${labels.singular}`)), render: ({ close }) => (React.createElement(BlockSelector, { blocks: blocks, addRow: addRow, addRowIndex: value, close: close })) }))))));
217
217
  };
218
- export default withCondition(Index);
218
+ export default withCondition(BlocksField);
@@ -32,6 +32,9 @@ const collectionSchema = joi_1.default.object().keys({
32
32
  listSearchableFields: joi_1.default.array().items(joi_1.default.string()),
33
33
  group: joi_1.default.string(),
34
34
  description: joi_1.default.alternatives().try(joi_1.default.string(), componentSchema_1.componentSchema),
35
+ hooks: joi_1.default.object({
36
+ beforeDuplicate: joi_1.default.func(),
37
+ }),
35
38
  enableRichTextRelationship: joi_1.default.boolean(),
36
39
  components: joi_1.default.object({
37
40
  views: joi_1.default.object({
@@ -135,4 +138,4 @@ const collectionSchema = joi_1.default.object().keys({
135
138
  }), joi_1.default.boolean()),
136
139
  });
137
140
  exports.default = collectionSchema;
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbGxlY3Rpb25zL2NvbmZpZy9zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4Q0FBc0I7QUFDdEIscUVBQWtFO0FBQ2xFLGdEQUFzRDtBQUV0RCxNQUFNLGtCQUFrQixHQUFHLGFBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDM0MsT0FBTyxFQUFFLGFBQUcsQ0FBQyxPQUFPLEVBQUU7SUFDdEIsTUFBTSxFQUFFLGFBQUcsQ0FBQyxPQUFPLEVBQUU7Q0FDdEIsQ0FBQyxDQUFDO0FBRUgsTUFBTSxnQkFBZ0IsR0FBRyxhQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ3pDLElBQUksRUFBRSxhQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzdCLE1BQU0sRUFBRSxhQUFHLENBQUMsTUFBTSxDQUFDO1FBQ2pCLFFBQVEsRUFBRSxhQUFHLENBQUMsTUFBTSxFQUFFO1FBQ3RCLE1BQU0sRUFBRSxhQUFHLENBQUMsTUFBTSxFQUFFO0tBQ3JCLENBQUM7SUFDRixNQUFNLEVBQUUsYUFBRyxDQUFDLE1BQU0sQ0FBQztRQUNqQixNQUFNLEVBQUUsYUFBRyxDQUFDLElBQUksRUFBRTtRQUNsQixJQUFJLEVBQUUsYUFBRyxDQUFDLElBQUksRUFBRTtRQUNoQixZQUFZLEVBQUUsYUFBRyxDQUFDLElBQUksRUFBRTtRQUN4QixNQUFNLEVBQUUsYUFBRyxDQUFDLElBQUksRUFBRTtRQUNsQixNQUFNLEVBQUUsYUFBRyxDQUFDLElBQUksRUFBRTtRQUNsQixNQUFNLEVBQUUsYUFBRyxDQUFDLElBQUksRUFBRTtRQUNsQixLQUFLLEVBQUUsYUFBRyxDQUFDLElBQUksRUFBRTtLQUNsQixDQUFDO0lBQ0YsVUFBVSxFQUFFLGFBQUcsQ0FBQyxPQUFPLEVBQUU7SUFDekIsS0FBSyxFQUFFLGFBQUcsQ0FBQyxNQUFNLENBQUM7UUFDaEIsVUFBVSxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUU7UUFDeEIsY0FBYyxFQUFFLGFBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsYUFBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQy9DLG9CQUFvQixFQUFFLGFBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsYUFBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3JELEtBQUssRUFBRSxhQUFHLENBQUMsTUFBTSxFQUFFO1FBQ25CLFdBQVcsRUFBRSxhQUFHLENBQUMsWUFBWSxFQUFFLENBQUMsR0FBRyxDQUNqQyxhQUFHLENBQUMsTUFBTSxFQUFFLEVBQ1osaUNBQWUsQ0FDaEI7UUFDRCwwQkFBMEIsRUFBRSxhQUFHLENBQUMsT0FBTyxFQUFFO1FBQ3pDLFVBQVUsRUFBRSxhQUFHLENBQUMsTUFBTSxDQUFDO1lBQ3JCLEtBQUssRUFBRSxhQUFHLENBQUMsTUFBTSxDQUFDO2dCQUNoQixJQUFJLEVBQUUsaUNBQWU7Z0JBQ3JCLElBQUksRUFBRSxpQ0FBZTthQUN0QixDQUFDO1NBQ0gsQ0FBQztRQUNGLFVBQVUsRUFBRSxhQUFHLENBQUMsTUFBTSxDQUFDO1lBQ3JCLFlBQVksRUFBRSxhQUFHLENBQUMsTUFBTSxFQUFFO1lBQzFCLE1BQU0sRUFBRSxhQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLGFBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUN4QyxDQUFDO1FBQ0YsT0FBTyxFQUFFLGFBQUcsQ0FBQyxJQUFJLEVBQUU7UUFDbkIsZ0JBQWdCLEVBQUUsYUFBRyxDQUFDLElBQUksRUFBRTtRQUM1QixVQUFVLEVBQUUsYUFBRyxDQUFDLElBQUksRUFBRTtLQUN2QixDQUFDO0lBQ0YsTUFBTSxFQUFFLGFBQUcsQ0FBQyxLQUFLLEVBQUU7SUFDbkIsS0FBSyxFQUFFLGFBQUcsQ0FBQyxNQUFNLENBQUM7UUFDaEIsZUFBZSxFQUFFLGFBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsYUFBRyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlDLGNBQWMsRUFBRSxhQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLGFBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM3QyxZQUFZLEVBQUUsYUFBRyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0MsV0FBVyxFQUFFLGFBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsYUFBRyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFDLFVBQVUsRUFBRSxhQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLGFBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QyxTQUFTLEVBQUUsYUFBRyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEMsWUFBWSxFQUFFLGFBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsYUFBRyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNDLFdBQVcsRUFBRSxhQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLGFBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQyxXQUFXLEVBQUUsYUFBRyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUMsVUFBVSxFQUFFLGFBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsYUFBRyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pDLFdBQVcsRUFBRSxhQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLGFBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQyxPQUFPLEVBQUUsYUFBRyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEMsWUFBWSxFQUFFLGFBQUcsQ0FBQyxLQUFLLEVBQUUs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
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbGxlY3Rpb25zL2NvbmZpZy9zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4Q0FBc0I7QUFDdEIscUVBQWtFO0FBQ2xFLGdEQUFzRDtBQUV0RCxNQUFNLGtCQUFrQixHQUFHLGFBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDM0MsT0FBTyxFQUFFLGFBQUcsQ0FBQyxPQUFPLEVBQUU7SUFDdEIsTUFBTSxFQUFFLGFBQUcsQ0FBQyxPQUFPLEVBQUU7Q0FDdEIsQ0FBQyxDQUFDO0FBRUgsTUFBTSxnQkFBZ0IsR0FBRyxhQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ3pDLElBQUksRUFBRSxhQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzdCLE1BQU0sRUFBRSxhQUFHLENBQUMsTUFBTSxDQUFDO1FBQ2pCLFFBQVEsRUFBRSxhQUFHLENBQUMsTUFBTSxFQUFFO1FBQ3RCLE1BQU0sRUFBRSxhQUFHLENBQUMsTUFBTSxFQUFFO0tBQ3JCLENBQUM7SUFDRixNQUFNLEVBQUUsYUFBRyxDQUFDLE1BQU0sQ0FBQztRQUNqQixNQUFNLEVBQUUsYUFBRyxDQUFDLElBQUksRUFBRTtRQUNsQixJQUFJLEVBQUUsYUFBRyxDQUFDLElBQUksRUFBRTtRQUNoQixZQUFZLEVBQUUsYUFBRyxDQUFDLElBQUksRUFBRTtRQUN4QixNQUFNLEVBQUUsYUFBRyxDQUFDLElBQUksRUFBRTtRQUNsQixNQUFNLEVBQUUsYUFBRyxDQUFDLElBQUksRUFBRTtRQUNsQixNQUFNLEVBQUUsYUFBRyxDQUFDLElBQUksRUFBRTtRQUNsQixLQUFLLEVBQUUsYUFBRyxDQUFDLElBQUksRUFBRTtLQUNsQixDQUFDO0lBQ0YsVUFBVSxFQUFFLGFBQUcsQ0FBQyxPQUFPLEVBQUU7SUFDekIsS0FBSyxFQUFFLGFBQUcsQ0FB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
@@ -120,6 +120,11 @@ export declare type AfterRefreshHook<T extends TypeWithID = any> = (args: {
120
120
  export declare type AfterForgotPasswordHook = (args: {
121
121
  args?: any;
122
122
  }) => any;
123
+ declare type BeforeDuplicateArgs<T> = {
124
+ data: T;
125
+ locale?: string;
126
+ };
127
+ export declare type BeforeDuplicate<T = any> = (args: BeforeDuplicateArgs<T>) => T | Promise<T>;
123
128
  export declare type CollectionAdminOptions = {
124
129
  /**
125
130
  * Field to use as title in Edit view and first column in List view
@@ -133,6 +138,12 @@ export declare type CollectionAdminOptions = {
133
138
  * Additional fields to be searched via the full text search
134
139
  */
135
140
  listSearchableFields?: string[];
141
+ hooks?: {
142
+ /**
143
+ * Function that allows you to modify a document's data before it is duplicated
144
+ */
145
+ beforeDuplicate?: BeforeDuplicate;
146
+ };
136
147
  /**
137
148
  * Place collections into a navigational group
138
149
  * */
@@ -52,7 +52,7 @@ const generateFileData = async ({ config, collection: { config: collectionConfig
52
52
  }
53
53
  const fileBuffer = resized ? (await resized.toBuffer()) : file.data;
54
54
  const bufferInfo = await (0, file_type_1.fromBuffer)(fileBuffer);
55
- const mime = (_a = bufferInfo.mime) !== null && _a !== void 0 ? _a : file.mimetype;
55
+ const mime = (_a = bufferInfo === null || bufferInfo === void 0 ? void 0 : bufferInfo.mime) !== null && _a !== void 0 ? _a : file.mimetype;
56
56
  const ext = resized ? bufferInfo.ext : file.name.split('.').pop();
57
57
  const fileSize = fileBuffer.length;
58
58
  const baseFilename = (0, sanitize_filename_1.default)(file.name.substring(0, file.name.lastIndexOf('.')) || file.name);
@@ -98,4 +98,4 @@ const generateFileData = async ({ config, collection: { config: collectionConfig
98
98
  };
99
99
  };
100
100
  exports.generateFileData = generateFileData;
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVGaWxlRGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cGxvYWRzL2dlbmVyYXRlRmlsZURhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEseUNBQXVDO0FBQ3ZDLG9EQUE0QjtBQUM1QixnREFBd0I7QUFDeEIsMEVBQXlDO0FBQ3pDLGtEQUFxQztBQUdyQyxzQ0FBeUQ7QUFFekQsa0VBQStEO0FBQy9ELHdFQUFnRDtBQUNoRCxrRUFBMkM7QUFFM0Msc0VBQThDO0FBZ0J2QyxNQUFNLGdCQUFnQixHQUFHLEtBQUssRUFBRSxFQUNyQyxNQUFNLEVBQ04sVUFBVSxFQUFFLEVBQ1YsTUFBTSxFQUFFLGdCQUFnQixFQUN4QixLQUFLLEdBQ04sRUFDRCxHQUFHLEVBQ0gsSUFBSSxFQUNKLGtCQUFrQixFQUNsQixzQkFBc0IsR0FDakIsRUFBVSxFQUFFOztJQUNqQixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDbkIsTUFBTSxXQUFXLEdBQWlCLEVBQUUsQ0FBQztJQUVyQyxJQUFJLGdCQUFnQixDQUFDLE1BQU0sRUFBRTtRQUMzQixNQUFNLFFBQVEsR0FBc0IsRUFBRSxDQUFDO1FBRXZDLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7UUFFN0csTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBRWpDLElBQUksa0JBQWtCLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDL0IsTUFBTSxJQUFJLG9CQUFXLEVBQUUsQ0FBQztTQUN6QjtRQUVELElBQUksVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUUzQixJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2hDLFVBQVUsR0FBRyxjQUFJLENBQUMs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
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVGaWxlRGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cGxvYWRzL2dlbmVyYXRlRmlsZURhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEseUNBQXVDO0FBQ3ZDLG9EQUE0QjtBQUM1QixnREFBd0I7QUFDeEIsMEVBQXlDO0FBQ3pDLGtEQUFxQztBQUdyQyxzQ0FBeUQ7QUFFekQsa0VBQStEO0FBQy9ELHdFQUFnRDtBQUNoRCxrRUFBMkM7QUFFM0Msc0VBQThDO0FBZ0J2QyxNQUFNLGdCQUFnQixHQUFHLEtBQUssRUFBRSxFQUNyQyxNQUFNLEVBQ04sVUFBVSxFQUFFLEVBQ1YsTUFBTSxFQUFFLGdCQUFnQixFQUN4QixLQUFLLEdBQ04sRUFDRCxHQUFHLEVBQ0gsSUFBSSxFQUNKLGtCQUFrQixFQUNsQixzQkFBc0IsR0FDakIsRUFBVSxFQUFFOztJQUNqQixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDbkIsTUFBTSxXQUFXLEdBQWlCLEVBQUUsQ0FBQztJQUVyQyxJQUFJLGdCQUFnQixDQUFDLE1BQU0sRUFBRTtRQUMzQixNQUFNLFFBQVEsR0FBc0IsRUFBRSxDQUFDO1FBRXZDLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7UUFFN0csTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBRWpDLElBQUksa0JBQWtCLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDL0IsTUFBTSxJQUFJLG9CQUFXLEVBQUUsQ0FBQztTQUN6QjtRQUVELElBQUksVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUUzQixJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2hDLFVBQVUsR0FBRyxjQUFJLENBQUMs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
@@ -62,6 +62,7 @@ You can customize the way that the Admin panel behaves on a collection-by-collec
62
62
  | Option | Description |
63
63
  | ---------------------------- | -------------|
64
64
  | `group` | Text used as a label for grouping collection links together in the navigation. |
65
+ | `hooks` | Admin-specific hooks for this collection. [More](#admin-hooks) |
65
66
  | `useAsTitle` | Specify a top-level field to use for a document title throughout the Admin panel. If no field is defined, the ID of the document is used as the title. |
66
67
  | `description` | Text or React component to display below the Collection label in the List view to give editors more information. |
67
68
  | `defaultColumns` | Array of field names that correspond to which columns to show by default in this collection's List view. |
@@ -131,6 +132,50 @@ For example, let's say you have a Posts collection with `title`, `metaDescriptio
131
132
  If you are adding <strong>listSearchableFields</strong>, make sure you index each of these fields so your admin queries can remain performant.
132
133
  </Banner>
133
134
 
135
+ ### Admin Hooks
136
+
137
+ In addition to collection hooks themselves, Payload provides for admin UI-specific hooks that you can leverage.
138
+
139
+ **`beforeDuplicate`**
140
+
141
+ The `beforeDuplicate` hook is an async function that accepts an object containing the data to duplicate, as well as the locale of the doc to duplicate. Within this hook, you can modify the data to be duplicated, which is useful in cases where you have unique fields that need to be incremented or similar, as well as if you want to automatically modify a document's `title`.
142
+
143
+ Example:
144
+
145
+ ```ts
146
+ import { BeforeDuplicate, CollectionConfig } from 'payload/types';
147
+ // Your auto-generated Page type
148
+ import { Page } from '../payload-types.ts';
149
+
150
+ const beforeDuplicate: BeforeDuplicate<Page> = ({ data }) => {
151
+ return {
152
+ ...data,
153
+ title: `${data.title} Copy`,
154
+ uniqueField: data.uniqueField ? `${data.uniqueField}-copy` : '',
155
+ };
156
+ };
157
+
158
+ export const Page: CollectionConfig = {
159
+ slug: 'pages',
160
+ admin: {
161
+ hooks: {
162
+ beforeDuplicate,
163
+ }
164
+ },
165
+ fields: [
166
+ {
167
+ name: 'title',
168
+ type: 'text',
169
+ },
170
+ {
171
+ name: 'uniqueField',
172
+ type: 'text',
173
+ unique: true,
174
+ }
175
+ ]
176
+ }
177
+ ```
178
+
134
179
  ### TypeScript
135
180
 
136
181
  You can import collection types as follows:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "payload",
3
- "version": "1.1.10",
3
+ "version": "1.1.12",
4
4
  "description": "Node, React and MongoDB Headless CMS and Application Framework",
5
5
  "license": "MIT",
6
6
  "author": {
package/types.d.ts CHANGED
@@ -18,6 +18,7 @@ export {
18
18
  BeforeLoginHook as CollectionBeforeLoginHook,
19
19
  AfterLoginHook as CollectionAfterLoginHook,
20
20
  AfterForgotPasswordHook as CollectionAfterForgotPasswordHook,
21
+ BeforeDuplicate,
21
22
  } from './dist/collections/config/types';
22
23
 
23
24
  export {