@payloadcms/ui 4.0.0-canary.22 → 4.0.0-canary.24

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.
Files changed (62) hide show
  1. package/dist/elements/AppHeader/index.css +1 -0
  2. package/dist/elements/ArrayAction/index.d.ts +1 -0
  3. package/dist/elements/ArrayAction/index.d.ts.map +1 -1
  4. package/dist/elements/ArrayAction/index.js +45 -32
  5. package/dist/elements/ArrayAction/index.js.map +1 -1
  6. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts +10 -0
  7. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts.map +1 -1
  8. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js +55 -0
  9. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js.map +1 -1
  10. package/dist/elements/Drawer/index.css +10 -4
  11. package/dist/elements/IDLabel/index.css +6 -0
  12. package/dist/elements/IDLabel/index.d.ts +1 -1
  13. package/dist/elements/IDLabel/index.d.ts.map +1 -1
  14. package/dist/elements/IDLabel/index.js +16 -21
  15. package/dist/elements/IDLabel/index.js.map +1 -1
  16. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts +1 -7
  17. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts.map +1 -1
  18. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js +26 -32
  19. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
  20. package/dist/elements/PublishButton/ScheduleDrawer/index.js +1 -1
  21. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  22. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  23. package/dist/elements/RelationshipTable/index.js +5 -2
  24. package/dist/elements/RelationshipTable/index.js.map +1 -1
  25. package/dist/elements/SortHeader/index.d.ts.map +1 -1
  26. package/dist/elements/SortHeader/index.js +29 -26
  27. package/dist/elements/SortHeader/index.js.map +1 -1
  28. package/dist/elements/StepNav/index.css +64 -14
  29. package/dist/elements/StepNav/index.d.ts.map +1 -1
  30. package/dist/elements/StepNav/index.js +143 -69
  31. package/dist/elements/StepNav/index.js.map +1 -1
  32. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  33. package/dist/elements/Table/DefaultCell/index.js +3 -11
  34. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  35. package/dist/fields/Array/ArrayRow.d.ts +1 -0
  36. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  37. package/dist/fields/Array/ArrayRow.js +2 -0
  38. package/dist/fields/Array/ArrayRow.js.map +1 -1
  39. package/dist/fields/Array/index.d.ts.map +1 -1
  40. package/dist/fields/Array/index.js +38 -10
  41. package/dist/fields/Array/index.js.map +1 -1
  42. package/dist/fields/Blocks/BlockRow.d.ts +1 -0
  43. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  44. package/dist/fields/Blocks/BlockRow.js +2 -0
  45. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  46. package/dist/fields/Blocks/RowActions.d.ts +1 -0
  47. package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
  48. package/dist/fields/Blocks/RowActions.js +22 -19
  49. package/dist/fields/Blocks/RowActions.js.map +1 -1
  50. package/dist/fields/Blocks/index.d.ts.map +1 -1
  51. package/dist/fields/Blocks/index.js +35 -7
  52. package/dist/fields/Blocks/index.js.map +1 -1
  53. package/dist/styles.css +1 -1
  54. package/dist/views/List/ListHeader/index.d.ts +1 -10
  55. package/dist/views/List/ListHeader/index.d.ts.map +1 -1
  56. package/dist/views/List/ListHeader/index.js +1 -3
  57. package/dist/views/List/ListHeader/index.js.map +1 -1
  58. package/dist/views/List/index.client.d.ts.map +1 -1
  59. package/dist/views/List/index.client.js +0 -14
  60. package/dist/views/List/index.client.js.map +1 -1
  61. package/dist/views/List/index.css +5 -0
  62. package/package.json +4 -4
@@ -60,6 +60,7 @@
60
60
  flex-grow: 0;
61
61
  gap: var(--spacer-1);
62
62
  width: 100%;
63
+ min-width: 0;
63
64
  }
64
65
 
65
66
  .app-header__controls-wrapper {
@@ -11,6 +11,7 @@ export type Props = {
11
11
  moveRow: (from: number, to: number) => void;
12
12
  pasteData: ClipboardPasteEligibilityArgs;
13
13
  pasteRow: (index: number) => void;
14
+ pasteRowBelow: (index: number) => void;
14
15
  removeRow: (index: number) => void;
15
16
  rowCount: number;
16
17
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ArrayAction/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAA;AAYhF,OAAO,aAAa,CAAA;AAIpB,MAAM,MAAM,KAAK,GAAG;IAClB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACrE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,UAAU,EAAE,OAAO,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3C,SAAS,EAAE,6BAA6B,CAAA;IACxC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAqHvC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ArrayAction/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAA;AAYhF,OAAO,aAAa,CAAA;AAIpB,MAAM,MAAM,KAAK,GAAG;IAClB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACrE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,UAAU,EAAE,OAAO,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3C,SAAS,EAAE,6BAA6B,CAAA;IACxC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAmIvC,CAAA"}
@@ -4,11 +4,11 @@ import { c as _c } from "react/compiler-runtime";
4
4
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
5
  import React from 'react';
6
6
  import { ArrowIcon } from '../../icons/Arrow/index.js';
7
- import { ClipboardIcon } from '../../icons/Clipboard/index.js';
8
7
  import { CopyIcon } from '../../icons/Copy/index.js';
9
8
  import { DuplicateIcon } from '../../icons/Duplicate/index.js';
10
9
  import { MoreIcon } from '../../icons/More/index.js';
11
10
  import { PlusIcon } from '../../icons/Plus/index.js';
11
+ import { SwapIcon } from '../../icons/Swap/index.js';
12
12
  import { XIcon } from '../../icons/X/index.js';
13
13
  import { useTranslation } from '../../providers/Translation/index.js';
14
14
  import { useCanPasteClipboard } from '../ClipboardAction/useCanPasteClipboard.js';
@@ -16,7 +16,7 @@ import { Popup, PopupList } from '../Popup/index.js';
16
16
  import './index.css';
17
17
  const baseClass = 'array-actions';
18
18
  export const ArrayAction = t0 => {
19
- const $ = _c(29);
19
+ const $ = _c(31);
20
20
  const {
21
21
  addRow,
22
22
  copyRow,
@@ -27,6 +27,7 @@ export const ArrayAction = t0 => {
27
27
  moveRow,
28
28
  pasteData,
29
29
  pasteRow,
30
+ pasteRowBelow,
30
31
  removeRow,
31
32
  rowCount
32
33
  } = t0;
@@ -38,21 +39,21 @@ export const ArrayAction = t0 => {
38
39
  refresh
39
40
  } = useCanPasteClipboard(pasteData);
40
41
  let t1;
41
- if ($[0] !== addRow || $[1] !== canPaste || $[2] !== copyRow || $[3] !== duplicateRow || $[4] !== hasMaxRows || $[5] !== index || $[6] !== isSortable || $[7] !== moveRow || $[8] !== pasteRow || $[9] !== refresh || $[10] !== removeRow || $[11] !== rowCount || $[12] !== t) {
42
+ if ($[0] !== addRow || $[1] !== canPaste || $[2] !== copyRow || $[3] !== duplicateRow || $[4] !== hasMaxRows || $[5] !== index || $[6] !== isSortable || $[7] !== moveRow || $[8] !== pasteRow || $[9] !== pasteRowBelow || $[10] !== refresh || $[11] !== removeRow || $[12] !== rowCount || $[13] !== t) {
42
43
  let t2;
43
- if ($[14] !== refresh) {
44
+ if ($[15] !== refresh) {
44
45
  t2 = active => {
45
46
  if (active) {
46
47
  refresh();
47
48
  }
48
49
  };
49
- $[14] = refresh;
50
- $[15] = t2;
50
+ $[15] = refresh;
51
+ $[16] = t2;
51
52
  } else {
52
- t2 = $[15];
53
+ t2 = $[16];
53
54
  }
54
55
  let t3;
55
- if ($[16] !== addRow || $[17] !== canPaste || $[18] !== copyRow || $[19] !== duplicateRow || $[20] !== hasMaxRows || $[21] !== index || $[22] !== isSortable || $[23] !== moveRow || $[24] !== pasteRow || $[25] !== removeRow || $[26] !== rowCount || $[27] !== t) {
56
+ if ($[17] !== addRow || $[18] !== canPaste || $[19] !== copyRow || $[20] !== duplicateRow || $[21] !== hasMaxRows || $[22] !== index || $[23] !== isSortable || $[24] !== moveRow || $[25] !== pasteRow || $[26] !== pasteRowBelow || $[27] !== removeRow || $[28] !== rowCount || $[29] !== t) {
56
57
  t3 = t4 => {
57
58
  const {
58
59
  close
@@ -112,17 +113,27 @@ export const ArrayAction = t0 => {
112
113
  close();
113
114
  },
114
115
  children: t("general:copyRow")
115
- }), _jsx(PopupList.Button, {
116
- className: `${baseClass}__action ${baseClass}__paste`,
116
+ }), !hasMaxRows && _jsx(PopupList.Button, {
117
+ className: `${baseClass}__action ${baseClass}__paste-below`,
117
118
  disabled: !canPaste,
118
- icon: _jsx(ClipboardIcon, {
119
+ icon: _jsx(ArrowIcon, {
120
+ direction: "down",
119
121
  size: 24
120
122
  }),
123
+ onClick: () => {
124
+ pasteRowBelow(index);
125
+ close();
126
+ },
127
+ children: t("general:pasteBelow")
128
+ }), _jsx(PopupList.Button, {
129
+ className: `${baseClass}__action ${baseClass}__paste`,
130
+ disabled: !canPaste,
131
+ icon: _jsx(SwapIcon, {}),
121
132
  onClick: () => {
122
133
  pasteRow(index);
123
134
  close();
124
135
  },
125
- children: t("general:pasteRow")
136
+ children: t("general:replaceRow")
126
137
  }), _jsx(PopupList.Button, {
127
138
  className: `${baseClass}__action ${baseClass}__remove`,
128
139
  icon: _jsx(XIcon, {
@@ -136,21 +147,22 @@ export const ArrayAction = t0 => {
136
147
  })]
137
148
  });
138
149
  };
139
- $[16] = addRow;
140
- $[17] = canPaste;
141
- $[18] = copyRow;
142
- $[19] = duplicateRow;
143
- $[20] = hasMaxRows;
144
- $[21] = index;
145
- $[22] = isSortable;
146
- $[23] = moveRow;
147
- $[24] = pasteRow;
148
- $[25] = removeRow;
149
- $[26] = rowCount;
150
- $[27] = t;
151
- $[28] = t3;
150
+ $[17] = addRow;
151
+ $[18] = canPaste;
152
+ $[19] = copyRow;
153
+ $[20] = duplicateRow;
154
+ $[21] = hasMaxRows;
155
+ $[22] = index;
156
+ $[23] = isSortable;
157
+ $[24] = moveRow;
158
+ $[25] = pasteRow;
159
+ $[26] = pasteRowBelow;
160
+ $[27] = removeRow;
161
+ $[28] = rowCount;
162
+ $[29] = t;
163
+ $[30] = t3;
152
164
  } else {
153
- t3 = $[28];
165
+ t3 = $[30];
154
166
  }
155
167
  t1 = _jsx(Popup, {
156
168
  button: _jsx(MoreIcon, {}),
@@ -171,13 +183,14 @@ export const ArrayAction = t0 => {
171
183
  $[6] = isSortable;
172
184
  $[7] = moveRow;
173
185
  $[8] = pasteRow;
174
- $[9] = refresh;
175
- $[10] = removeRow;
176
- $[11] = rowCount;
177
- $[12] = t;
178
- $[13] = t1;
186
+ $[9] = pasteRowBelow;
187
+ $[10] = refresh;
188
+ $[11] = removeRow;
189
+ $[12] = rowCount;
190
+ $[13] = t;
191
+ $[14] = t1;
179
192
  } else {
180
- t1 = $[13];
193
+ t1 = $[14];
181
194
  }
182
195
  return t1;
183
196
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","ArrowIcon","ClipboardIcon","CopyIcon","DuplicateIcon","MoreIcon","PlusIcon","XIcon","useTranslation","useCanPasteClipboard","Popup","PopupList","baseClass","ArrayAction","t0","$","addRow","copyRow","duplicateRow","hasMaxRows","index","isSortable","moveRow","pasteData","pasteRow","removeRow","rowCount","t","canPaste","refresh","t1","t2","active","t3","t4","close","_jsxs","MenuItem","children","_jsx","Button","className","icon","direction","size","Fragment","disabled","button","buttonAriaLabel","buttonClassName","caret","horizontalAlign","onToggleOpen","render"],"sources":["../../../src/elements/ArrayAction/index.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport type { ClipboardPasteEligibilityArgs } from '../ClipboardAction/types.js'\n\nimport { ArrowIcon } from '../../icons/Arrow/index.js'\nimport { ClipboardIcon } from '../../icons/Clipboard/index.js'\nimport { CopyIcon } from '../../icons/Copy/index.js'\nimport { DuplicateIcon } from '../../icons/Duplicate/index.js'\nimport { MoreIcon } from '../../icons/More/index.js'\nimport { PlusIcon } from '../../icons/Plus/index.js'\nimport { XIcon } from '../../icons/X/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useCanPasteClipboard } from '../ClipboardAction/useCanPasteClipboard.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport './index.css'\n\nconst baseClass = 'array-actions'\n\nexport type Props = {\n addRow: (current: number, blockType?: string) => Promise<void> | void\n copyRow: (index: number) => void\n duplicateRow: (current: number) => void\n hasMaxRows: boolean\n index: number\n isSortable?: boolean\n moveRow: (from: number, to: number) => void\n pasteData: ClipboardPasteEligibilityArgs\n pasteRow: (index: number) => void\n removeRow: (index: number) => void\n rowCount: number\n}\n\nexport const ArrayAction: React.FC<Props> = ({\n addRow,\n copyRow,\n duplicateRow,\n hasMaxRows,\n index,\n isSortable,\n moveRow,\n pasteData,\n pasteRow,\n removeRow,\n rowCount,\n}) => {\n const { t } = useTranslation()\n\n const { canPaste, refresh } = useCanPasteClipboard(pasteData)\n\n return (\n <Popup\n button={<MoreIcon />}\n buttonAriaLabel={t('general:moreOptions')}\n buttonClassName={`${baseClass}__button`}\n caret={false}\n className={baseClass}\n horizontalAlign=\"right\"\n onToggleOpen={(active) => {\n if (active) {\n refresh()\n }\n }}\n render={({ close }) => {\n return (\n <PopupList.MenuItem>\n {isSortable && index !== 0 && (\n <PopupList.Button\n className={`${baseClass}__action ${baseClass}__move-up`}\n icon={<ArrowIcon direction=\"up\" size={24} />}\n onClick={() => {\n moveRow(index, index - 1)\n close()\n }}\n >\n {t('general:moveUp')}\n </PopupList.Button>\n )}\n {isSortable && index < rowCount - 1 && (\n <PopupList.Button\n className={`${baseClass}__action`}\n icon={<ArrowIcon direction=\"down\" size={24} />}\n onClick={() => {\n moveRow(index, index + 1)\n close()\n }}\n >\n {t('general:moveDown')}\n </PopupList.Button>\n )}\n {!hasMaxRows && (\n <React.Fragment>\n <PopupList.Button\n className={`${baseClass}__action ${baseClass}__add`}\n icon={<PlusIcon size={24} />}\n onClick={() => {\n void addRow(index + 1)\n close()\n }}\n >\n {t('general:addBelow')}\n </PopupList.Button>\n <PopupList.Button\n className={`${baseClass}__action ${baseClass}__duplicate`}\n icon={<DuplicateIcon size={24} />}\n onClick={() => {\n duplicateRow(index)\n close()\n }}\n >\n {t('general:duplicate')}\n </PopupList.Button>\n </React.Fragment>\n )}\n <PopupList.Button\n className={`${baseClass}__action ${baseClass}__copy`}\n icon={<CopyIcon size={24} />}\n onClick={() => {\n copyRow(index)\n close()\n }}\n >\n {t('general:copyRow')}\n </PopupList.Button>\n <PopupList.Button\n className={`${baseClass}__action ${baseClass}__paste`}\n disabled={!canPaste}\n icon={<ClipboardIcon size={24} />}\n onClick={() => {\n pasteRow(index)\n close()\n }}\n >\n {t('general:pasteRow')}\n </PopupList.Button>\n <PopupList.Button\n className={`${baseClass}__action ${baseClass}__remove`}\n icon={<XIcon size={24} />}\n onClick={() => {\n removeRow(index)\n close()\n }}\n >\n {t('general:remove')}\n </PopupList.Button>\n </PopupList.MenuItem>\n )\n }}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","ArrowIcon","CopyIcon","DuplicateIcon","MoreIcon","PlusIcon","SwapIcon","XIcon","useTranslation","useCanPasteClipboard","Popup","PopupList","baseClass","ArrayAction","t0","$","addRow","copyRow","duplicateRow","hasMaxRows","index","isSortable","moveRow","pasteData","pasteRow","pasteRowBelow","removeRow","rowCount","t","canPaste","refresh","t1","t2","active","t3","t4","close","_jsxs","MenuItem","children","_jsx","Button","className","icon","direction","size","Fragment","disabled","onClick","button","buttonAriaLabel","buttonClassName","caret","horizontalAlign","onToggleOpen","render"],"sources":["../../../src/elements/ArrayAction/index.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport type { ClipboardPasteEligibilityArgs } from '../ClipboardAction/types.js'\n\nimport { ArrowIcon } from '../../icons/Arrow/index.js'\nimport { CopyIcon } from '../../icons/Copy/index.js'\nimport { DuplicateIcon } from '../../icons/Duplicate/index.js'\nimport { MoreIcon } from '../../icons/More/index.js'\nimport { PlusIcon } from '../../icons/Plus/index.js'\nimport { SwapIcon } from '../../icons/Swap/index.js'\nimport { XIcon } from '../../icons/X/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useCanPasteClipboard } from '../ClipboardAction/useCanPasteClipboard.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport './index.css'\n\nconst baseClass = 'array-actions'\n\nexport type Props = {\n addRow: (current: number, blockType?: string) => Promise<void> | void\n copyRow: (index: number) => void\n duplicateRow: (current: number) => void\n hasMaxRows: boolean\n index: number\n isSortable?: boolean\n moveRow: (from: number, to: number) => void\n pasteData: ClipboardPasteEligibilityArgs\n pasteRow: (index: number) => void\n pasteRowBelow: (index: number) => void\n removeRow: (index: number) => void\n rowCount: number\n}\n\nexport const ArrayAction: React.FC<Props> = ({\n addRow,\n copyRow,\n duplicateRow,\n hasMaxRows,\n index,\n isSortable,\n moveRow,\n pasteData,\n pasteRow,\n pasteRowBelow,\n removeRow,\n rowCount,\n}) => {\n const { t } = useTranslation()\n\n const { canPaste, refresh } = useCanPasteClipboard(pasteData)\n\n return (\n <Popup\n button={<MoreIcon />}\n buttonAriaLabel={t('general:moreOptions')}\n buttonClassName={`${baseClass}__button`}\n caret={false}\n className={baseClass}\n horizontalAlign=\"right\"\n onToggleOpen={(active) => {\n if (active) {\n refresh()\n }\n }}\n render={({ close }) => {\n return (\n <PopupList.MenuItem>\n {isSortable && index !== 0 && (\n <PopupList.Button\n className={`${baseClass}__action ${baseClass}__move-up`}\n icon={<ArrowIcon direction=\"up\" size={24} />}\n onClick={() => {\n moveRow(index, index - 1)\n close()\n }}\n >\n {t('general:moveUp')}\n </PopupList.Button>\n )}\n {isSortable && index < rowCount - 1 && (\n <PopupList.Button\n className={`${baseClass}__action`}\n icon={<ArrowIcon direction=\"down\" size={24} />}\n onClick={() => {\n moveRow(index, index + 1)\n close()\n }}\n >\n {t('general:moveDown')}\n </PopupList.Button>\n )}\n {!hasMaxRows && (\n <React.Fragment>\n <PopupList.Button\n className={`${baseClass}__action ${baseClass}__add`}\n icon={<PlusIcon size={24} />}\n onClick={() => {\n void addRow(index + 1)\n close()\n }}\n >\n {t('general:addBelow')}\n </PopupList.Button>\n <PopupList.Button\n className={`${baseClass}__action ${baseClass}__duplicate`}\n icon={<DuplicateIcon size={24} />}\n onClick={() => {\n duplicateRow(index)\n close()\n }}\n >\n {t('general:duplicate')}\n </PopupList.Button>\n </React.Fragment>\n )}\n <PopupList.Button\n className={`${baseClass}__action ${baseClass}__copy`}\n icon={<CopyIcon size={24} />}\n onClick={() => {\n copyRow(index)\n close()\n }}\n >\n {t('general:copyRow')}\n </PopupList.Button>\n {!hasMaxRows && (\n <PopupList.Button\n className={`${baseClass}__action ${baseClass}__paste-below`}\n disabled={!canPaste}\n icon={<ArrowIcon direction=\"down\" size={24} />}\n onClick={() => {\n pasteRowBelow(index)\n close()\n }}\n >\n {t('general:pasteBelow')}\n </PopupList.Button>\n )}\n <PopupList.Button\n className={`${baseClass}__action ${baseClass}__paste`}\n disabled={!canPaste}\n icon={<SwapIcon />}\n onClick={() => {\n pasteRow(index)\n close()\n }}\n >\n {t('general:replaceRow')}\n </PopupList.Button>\n <PopupList.Button\n className={`${baseClass}__action ${baseClass}__remove`}\n icon={<XIcon size={24} />}\n onClick={() => {\n removeRow(index)\n close()\n }}\n >\n {t('general:remove')}\n </PopupList.Button>\n </PopupList.MenuItem>\n )\n }}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -11,4 +11,14 @@ export declare function mergeFormStateFromClipboard({ dataFromClipboard: clipboa
11
11
  path: string;
12
12
  rowIndex?: number;
13
13
  }): FormState;
14
+ /**
15
+ * Inserts a new row at `rowIndex`, populated with clipboard data, without disturbing
16
+ * any existing rows. Existing rows at and after `rowIndex` are shifted down by one.
17
+ */
18
+ export declare function insertRowFromClipboard({ dataFromClipboard: clipboardData, formState, path, rowIndex, }: {
19
+ dataFromClipboard: ClipboardPasteData;
20
+ formState: FormState;
21
+ path: string;
22
+ rowIndex: number;
23
+ }): FormState;
14
24
  //# sourceMappingURL=mergeFormStateFromClipboard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mergeFormStateFromClipboard.d.ts","sourceRoot":"","sources":["../../../src/elements/ClipboardAction/mergeFormStateFromClipboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAIpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAIpD,wBAAgB,qBAAqB,CAAC,EACpC,SAAS,EACT,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,SAAS,EAAE,SAAS,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,8BAyBA;AAED,wBAAgB,2BAA2B,CAAC,EAC1C,iBAAiB,EAAE,aAAa,EAChC,SAAS,EACT,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,iBAAiB,EAAE,kBAAkB,CAAA;IACrC,SAAS,EAAE,SAAS,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,aA0IA"}
1
+ {"version":3,"file":"mergeFormStateFromClipboard.d.ts","sourceRoot":"","sources":["../../../src/elements/ClipboardAction/mergeFormStateFromClipboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAO,MAAM,SAAS,CAAA;AAIzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAMpD,wBAAgB,qBAAqB,CAAC,EACpC,SAAS,EACT,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,SAAS,EAAE,SAAS,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,8BAyBA;AAED,wBAAgB,2BAA2B,CAAC,EAC1C,iBAAiB,EAAE,aAAa,EAChC,SAAS,EACT,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,iBAAiB,EAAE,kBAAkB,CAAA;IACrC,SAAS,EAAE,SAAS,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,aA0IA;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,iBAAiB,EAAE,aAAa,EAChC,SAAS,EACT,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,iBAAiB,EAAE,kBAAkB,CAAA;IACrC,SAAS,EAAE,SAAS,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;CACjB,GAAG,SAAS,CAqCZ"}
@@ -1,4 +1,5 @@
1
1
  import ObjectIdImport from 'bson-objectid';
2
+ import { flattenRows, separateRows } from '../../forms/Form/rows.js';
2
3
  const ObjectId = 'default' in ObjectIdImport ? ObjectIdImport.default : ObjectIdImport;
3
4
  export function reduceFormStateByPath({
4
5
  formState,
@@ -147,4 +148,58 @@ export function mergeFormStateFromClipboard({
147
148
  }
148
149
  return formState;
149
150
  }
151
+ /**
152
+ * Inserts a new row at `rowIndex`, populated with clipboard data, without disturbing
153
+ * any existing rows. Existing rows at and after `rowIndex` are shifted down by one.
154
+ */
155
+ export function insertRowFromClipboard({
156
+ dataFromClipboard: clipboardData,
157
+ formState,
158
+ path,
159
+ rowIndex
160
+ }) {
161
+ const {
162
+ path: pathFromClipboard,
163
+ rowIndex: rowIndexFromClipboard
164
+ } = clipboardData;
165
+ const sourceRowPath = typeof rowIndexFromClipboard === 'number' ? `${pathFromClipboard}.${rowIndexFromClipboard}` : pathFromClipboard;
166
+ const blockType = clipboardData.data[`${sourceRowPath}.blockType`]?.value;
167
+ const newRowID = new ObjectId().toHexString();
168
+ const {
169
+ remainingFields,
170
+ rows
171
+ } = separateRows(path, formState);
172
+ rows.splice(rowIndex, 0, {
173
+ id: {
174
+ initialValue: newRowID,
175
+ valid: true,
176
+ value: newRowID
177
+ }
178
+ });
179
+ const newRows = [...(formState[path].rows || [])];
180
+ const newRow = {
181
+ id: newRowID,
182
+ isLoading: false
183
+ };
184
+ if (blockType) {
185
+ newRow.blockType = blockType;
186
+ }
187
+ newRows.splice(rowIndex, 0, newRow);
188
+ const formStateWithNewRow = {
189
+ ...remainingFields,
190
+ ...flattenRows(path, rows),
191
+ [path]: {
192
+ ...formState[path],
193
+ disableFormData: true,
194
+ rows: newRows,
195
+ value: rows.length
196
+ }
197
+ };
198
+ return mergeFormStateFromClipboard({
199
+ dataFromClipboard: clipboardData,
200
+ formState: formStateWithNewRow,
201
+ path,
202
+ rowIndex
203
+ });
204
+ }
150
205
  //# sourceMappingURL=mergeFormStateFromClipboard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mergeFormStateFromClipboard.js","names":["ObjectIdImport","ObjectId","default","reduceFormStateByPath","formState","path","rowIndex","filteredState","prefix","key","startsWith","customComponents","_","validate","__","field","Array","isArray","rows","map","row","serializableRow","mergeFormStateFromClipboard","dataFromClipboard","clipboardData","type","typeFromClipboard","data","pathFromClipboard","rowIndexFromClipboard","copyFromField","pasteIntoField","fromRowToField","pathToReplace","targetSegment","lastRenderedPath","rowIDFromClipboard","value","hasRows","length","id","isLoading","initialValue","disableFormData","fieldPath","idReplacements","Map","clipboardPath","newPath","replace","undefined","endsWith","oldID","isValid","newID","toHexString","set","relativePath","segments","split","parseInt","parentFieldPath","slice","join","fullParentPath","parentRows","isNaN","targetParts","lastPart","rowIndexFromTarget"],"sources":["../../../src/elements/ClipboardAction/mergeFormStateFromClipboard.ts"],"sourcesContent":["import type { FieldState, FormState } from 'payload'\n\nimport ObjectIdImport from 'bson-objectid'\n\nimport type { ClipboardPasteData } from './types.js'\n\nconst ObjectId = 'default' in ObjectIdImport ? ObjectIdImport.default : ObjectIdImport\n\nexport function reduceFormStateByPath({\n formState,\n path,\n rowIndex,\n}: {\n formState: FormState\n path: string\n rowIndex?: number\n}) {\n const filteredState: Record<string, FieldState> = {}\n const prefix = typeof rowIndex !== 'number' ? path : `${path}.${rowIndex}`\n\n for (const key in formState) {\n if (!key.startsWith(prefix)) {\n continue\n }\n\n const { customComponents: _, validate: __, ...field } = formState[key]\n\n if (Array.isArray(field.rows)) {\n field.rows = field.rows.map((row) => {\n if (!row || typeof row !== 'object') {\n return row\n }\n const { customComponents: _, ...serializableRow } = row\n return serializableRow\n })\n }\n\n filteredState[key] = field\n }\n\n return filteredState\n}\n\nexport function mergeFormStateFromClipboard({\n dataFromClipboard: clipboardData,\n formState,\n path,\n rowIndex,\n}: {\n dataFromClipboard: ClipboardPasteData\n formState: FormState\n path: string\n rowIndex?: number\n}) {\n const {\n type: typeFromClipboard,\n data: dataFromClipboard,\n path: pathFromClipboard,\n rowIndex: rowIndexFromClipboard,\n } = clipboardData\n\n const copyFromField = typeof rowIndexFromClipboard !== 'number'\n const pasteIntoField = typeof rowIndex !== 'number'\n const fromRowToField = !copyFromField && pasteIntoField\n const isArray = typeFromClipboard === 'array'\n\n let pathToReplace: string\n if (copyFromField && pasteIntoField) {\n pathToReplace = pathFromClipboard\n } else if (copyFromField) {\n pathToReplace = `${pathFromClipboard}.${rowIndex}`\n } else {\n pathToReplace = `${pathFromClipboard}.${rowIndexFromClipboard}`\n }\n\n let targetSegment: string\n if (!pasteIntoField) {\n targetSegment = `${path}.${rowIndex}`\n } else if (fromRowToField) {\n targetSegment = `${path}.0`\n } else {\n targetSegment = path\n }\n\n if (fromRowToField) {\n const lastRenderedPath = `${path}.0`\n const rowIDFromClipboard = dataFromClipboard[`${pathToReplace}.id`]?.value as string\n const hasRows = formState[path].rows?.length\n\n formState[path].rows = [\n {\n ...(hasRows && isArray ? formState[path].rows[0] : {}),\n id: rowIDFromClipboard,\n isLoading: false,\n lastRenderedPath,\n },\n ]\n formState[path].value = 1\n formState[path].initialValue = 1\n formState[path].disableFormData = true\n\n for (const fieldPath in formState) {\n if (\n fieldPath !== path &&\n !fieldPath.startsWith(lastRenderedPath) &&\n fieldPath.startsWith(path)\n ) {\n delete formState[fieldPath]\n }\n }\n }\n\n // Map to track old IDs to new IDs for regenerating nested IDs\n const idReplacements: Map<string, string> = new Map()\n\n for (const clipboardPath in dataFromClipboard) {\n // When pasting into a specific row, skip only the direct row ID to avoid overwriting\n // the target row's identity. Nested IDs (array item IDs within the block) should\n // still be processed so they get regenerated below, preventing server-side duplication.\n if (\n (!pasteIntoField && clipboardPath === `${pathToReplace}.id`) ||\n !clipboardPath.startsWith(pathToReplace)\n ) {\n continue\n }\n\n const newPath = clipboardPath.replace(pathToReplace, targetSegment)\n\n const customComponents = isArray ? formState[newPath]?.customComponents : undefined\n const validate = isArray ? formState[newPath]?.validate : undefined\n\n // If this is an ID field, generate a new ID to prevent duplicates\n if (clipboardPath.endsWith('.id') && dataFromClipboard[clipboardPath]?.value) {\n const oldID = dataFromClipboard[clipboardPath].value as string\n if (typeof oldID === 'string' && ObjectId.isValid(oldID)) {\n const newID = new ObjectId().toHexString()\n idReplacements.set(clipboardPath, newID)\n\n formState[newPath] = {\n customComponents,\n validate,\n ...dataFromClipboard[clipboardPath],\n initialValue: newID,\n value: newID,\n }\n continue\n }\n }\n\n formState[newPath] = {\n customComponents,\n validate,\n ...dataFromClipboard[clipboardPath],\n }\n }\n\n // Update parent field rows with new IDs\n for (const [clipboardPath, newID] of idReplacements) {\n const relativePath = clipboardPath.replace(`${pathToReplace}.`, '')\n const segments = relativePath.split('.')\n\n if (segments.length >= 2) {\n const rowIndex = parseInt(segments[segments.length - 2], 10)\n const parentFieldPath = segments.slice(0, segments.length - 2).join('.')\n const fullParentPath = parentFieldPath ? `${targetSegment}.${parentFieldPath}` : targetSegment\n\n if (formState[fullParentPath] && Array.isArray(formState[fullParentPath].rows)) {\n const parentRows = formState[fullParentPath].rows\n if (!isNaN(rowIndex) && parentRows[rowIndex]) {\n parentRows[rowIndex].id = newID\n }\n }\n } else if (segments.length === 1 && segments[0] === 'id') {\n // Top-level block ID - extract field path and row index from targetSegment\n const targetParts = targetSegment.split('.')\n const lastPart = targetParts[targetParts.length - 1]\n const rowIndexFromTarget = !isNaN(parseInt(lastPart, 10)) ? parseInt(lastPart, 10) : 0\n const fieldPath = !isNaN(parseInt(lastPart, 10))\n ? targetParts.slice(0, -1).join('.')\n : targetSegment\n\n if (formState[fieldPath] && Array.isArray(formState[fieldPath].rows)) {\n const rows = formState[fieldPath].rows\n if (rows[rowIndexFromTarget]) {\n rows[rowIndexFromTarget].id = newID\n }\n }\n }\n }\n\n return formState\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"mergeFormStateFromClipboard.js","names":["ObjectIdImport","flattenRows","separateRows","ObjectId","default","reduceFormStateByPath","formState","path","rowIndex","filteredState","prefix","key","startsWith","customComponents","_","validate","__","field","Array","isArray","rows","map","row","serializableRow","mergeFormStateFromClipboard","dataFromClipboard","clipboardData","type","typeFromClipboard","data","pathFromClipboard","rowIndexFromClipboard","copyFromField","pasteIntoField","fromRowToField","pathToReplace","targetSegment","lastRenderedPath","rowIDFromClipboard","value","hasRows","length","id","isLoading","initialValue","disableFormData","fieldPath","idReplacements","Map","clipboardPath","newPath","replace","undefined","endsWith","oldID","isValid","newID","toHexString","set","relativePath","segments","split","parseInt","parentFieldPath","slice","join","fullParentPath","parentRows","isNaN","targetParts","lastPart","rowIndexFromTarget","insertRowFromClipboard","sourceRowPath","blockType","newRowID","remainingFields","splice","valid","newRows","newRow","formStateWithNewRow"],"sources":["../../../src/elements/ClipboardAction/mergeFormStateFromClipboard.ts"],"sourcesContent":["import type { FieldState, FormState, Row } from 'payload'\n\nimport ObjectIdImport from 'bson-objectid'\n\nimport type { ClipboardPasteData } from './types.js'\n\nimport { flattenRows, separateRows } from '../../forms/Form/rows.js'\n\nconst ObjectId = 'default' in ObjectIdImport ? ObjectIdImport.default : ObjectIdImport\n\nexport function reduceFormStateByPath({\n formState,\n path,\n rowIndex,\n}: {\n formState: FormState\n path: string\n rowIndex?: number\n}) {\n const filteredState: Record<string, FieldState> = {}\n const prefix = typeof rowIndex !== 'number' ? path : `${path}.${rowIndex}`\n\n for (const key in formState) {\n if (!key.startsWith(prefix)) {\n continue\n }\n\n const { customComponents: _, validate: __, ...field } = formState[key]\n\n if (Array.isArray(field.rows)) {\n field.rows = field.rows.map((row) => {\n if (!row || typeof row !== 'object') {\n return row\n }\n const { customComponents: _, ...serializableRow } = row\n return serializableRow\n })\n }\n\n filteredState[key] = field\n }\n\n return filteredState\n}\n\nexport function mergeFormStateFromClipboard({\n dataFromClipboard: clipboardData,\n formState,\n path,\n rowIndex,\n}: {\n dataFromClipboard: ClipboardPasteData\n formState: FormState\n path: string\n rowIndex?: number\n}) {\n const {\n type: typeFromClipboard,\n data: dataFromClipboard,\n path: pathFromClipboard,\n rowIndex: rowIndexFromClipboard,\n } = clipboardData\n\n const copyFromField = typeof rowIndexFromClipboard !== 'number'\n const pasteIntoField = typeof rowIndex !== 'number'\n const fromRowToField = !copyFromField && pasteIntoField\n const isArray = typeFromClipboard === 'array'\n\n let pathToReplace: string\n if (copyFromField && pasteIntoField) {\n pathToReplace = pathFromClipboard\n } else if (copyFromField) {\n pathToReplace = `${pathFromClipboard}.${rowIndex}`\n } else {\n pathToReplace = `${pathFromClipboard}.${rowIndexFromClipboard}`\n }\n\n let targetSegment: string\n if (!pasteIntoField) {\n targetSegment = `${path}.${rowIndex}`\n } else if (fromRowToField) {\n targetSegment = `${path}.0`\n } else {\n targetSegment = path\n }\n\n if (fromRowToField) {\n const lastRenderedPath = `${path}.0`\n const rowIDFromClipboard = dataFromClipboard[`${pathToReplace}.id`]?.value as string\n const hasRows = formState[path].rows?.length\n\n formState[path].rows = [\n {\n ...(hasRows && isArray ? formState[path].rows[0] : {}),\n id: rowIDFromClipboard,\n isLoading: false,\n lastRenderedPath,\n },\n ]\n formState[path].value = 1\n formState[path].initialValue = 1\n formState[path].disableFormData = true\n\n for (const fieldPath in formState) {\n if (\n fieldPath !== path &&\n !fieldPath.startsWith(lastRenderedPath) &&\n fieldPath.startsWith(path)\n ) {\n delete formState[fieldPath]\n }\n }\n }\n\n // Map to track old IDs to new IDs for regenerating nested IDs\n const idReplacements: Map<string, string> = new Map()\n\n for (const clipboardPath in dataFromClipboard) {\n // When pasting into a specific row, skip only the direct row ID to avoid overwriting\n // the target row's identity. Nested IDs (array item IDs within the block) should\n // still be processed so they get regenerated below, preventing server-side duplication.\n if (\n (!pasteIntoField && clipboardPath === `${pathToReplace}.id`) ||\n !clipboardPath.startsWith(pathToReplace)\n ) {\n continue\n }\n\n const newPath = clipboardPath.replace(pathToReplace, targetSegment)\n\n const customComponents = isArray ? formState[newPath]?.customComponents : undefined\n const validate = isArray ? formState[newPath]?.validate : undefined\n\n // If this is an ID field, generate a new ID to prevent duplicates\n if (clipboardPath.endsWith('.id') && dataFromClipboard[clipboardPath]?.value) {\n const oldID = dataFromClipboard[clipboardPath].value as string\n if (typeof oldID === 'string' && ObjectId.isValid(oldID)) {\n const newID = new ObjectId().toHexString()\n idReplacements.set(clipboardPath, newID)\n\n formState[newPath] = {\n customComponents,\n validate,\n ...dataFromClipboard[clipboardPath],\n initialValue: newID,\n value: newID,\n }\n continue\n }\n }\n\n formState[newPath] = {\n customComponents,\n validate,\n ...dataFromClipboard[clipboardPath],\n }\n }\n\n // Update parent field rows with new IDs\n for (const [clipboardPath, newID] of idReplacements) {\n const relativePath = clipboardPath.replace(`${pathToReplace}.`, '')\n const segments = relativePath.split('.')\n\n if (segments.length >= 2) {\n const rowIndex = parseInt(segments[segments.length - 2], 10)\n const parentFieldPath = segments.slice(0, segments.length - 2).join('.')\n const fullParentPath = parentFieldPath ? `${targetSegment}.${parentFieldPath}` : targetSegment\n\n if (formState[fullParentPath] && Array.isArray(formState[fullParentPath].rows)) {\n const parentRows = formState[fullParentPath].rows\n if (!isNaN(rowIndex) && parentRows[rowIndex]) {\n parentRows[rowIndex].id = newID\n }\n }\n } else if (segments.length === 1 && segments[0] === 'id') {\n // Top-level block ID - extract field path and row index from targetSegment\n const targetParts = targetSegment.split('.')\n const lastPart = targetParts[targetParts.length - 1]\n const rowIndexFromTarget = !isNaN(parseInt(lastPart, 10)) ? parseInt(lastPart, 10) : 0\n const fieldPath = !isNaN(parseInt(lastPart, 10))\n ? targetParts.slice(0, -1).join('.')\n : targetSegment\n\n if (formState[fieldPath] && Array.isArray(formState[fieldPath].rows)) {\n const rows = formState[fieldPath].rows\n if (rows[rowIndexFromTarget]) {\n rows[rowIndexFromTarget].id = newID\n }\n }\n }\n }\n\n return formState\n}\n\n/**\n * Inserts a new row at `rowIndex`, populated with clipboard data, without disturbing\n * any existing rows. Existing rows at and after `rowIndex` are shifted down by one.\n */\nexport function insertRowFromClipboard({\n dataFromClipboard: clipboardData,\n formState,\n path,\n rowIndex,\n}: {\n dataFromClipboard: ClipboardPasteData\n formState: FormState\n path: string\n rowIndex: number\n}): FormState {\n const { path: pathFromClipboard, rowIndex: rowIndexFromClipboard } = clipboardData\n\n const sourceRowPath =\n typeof rowIndexFromClipboard === 'number'\n ? `${pathFromClipboard}.${rowIndexFromClipboard}`\n : pathFromClipboard\n\n const blockType = clipboardData.data[`${sourceRowPath}.blockType`]?.value as string | undefined\n\n const newRowID = new ObjectId().toHexString()\n\n const { remainingFields, rows } = separateRows(path, formState)\n\n rows.splice(rowIndex, 0, {\n id: { initialValue: newRowID, valid: true, value: newRowID },\n })\n\n const newRows = [...(formState[path].rows || [])]\n const newRow: Row = { id: newRowID, isLoading: false }\n if (blockType) {\n newRow.blockType = blockType\n }\n newRows.splice(rowIndex, 0, newRow)\n\n const formStateWithNewRow: FormState = {\n ...remainingFields,\n ...flattenRows(path, rows),\n [path]: { ...formState[path], disableFormData: true, rows: newRows, value: rows.length },\n }\n\n return mergeFormStateFromClipboard({\n dataFromClipboard: clipboardData,\n formState: formStateWithNewRow,\n path,\n rowIndex,\n })\n}\n"],"mappings":"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","ignoreList":[]}
@@ -6,13 +6,13 @@
6
6
  position: fixed;
7
7
  inset: 0;
8
8
 
9
- --gutter-h: var(--spacer-4);
9
+ --gutter-h: var(--spacer-3);
10
10
  --gutter-v: var(--spacer-4);
11
11
  }
12
12
 
13
- @media (max-width: 768px) {
13
+ @media (min-width: 768px) {
14
14
  .drawer {
15
- --gutter-h: var(--spacer-3);
15
+ --gutter-h: var(--spacer-4);
16
16
  }
17
17
  }
18
18
 
@@ -33,7 +33,7 @@
33
33
  position: relative;
34
34
  z-index: 2;
35
35
  width: clamp(600px, 40vw, 1080px);
36
- max-width: 100vw;
36
+ max-width: calc(100vw - var(--spacer-3));
37
37
  background-color: var(--color-bg);
38
38
  box-shadow: var(--elevation-400-menu-panel);
39
39
  container: drawer / inline-size;
@@ -41,6 +41,12 @@
41
41
  transition: transform 100ms ease-out;
42
42
  }
43
43
 
44
+ @media (min-width: 768px) {
45
+ .drawer__content {
46
+ max-width: 100vw;
47
+ }
48
+ }
49
+
44
50
  .drawer__content-children {
45
51
  position: relative;
46
52
  z-index: 1;
@@ -18,6 +18,12 @@
18
18
  white-space: nowrap;
19
19
  }
20
20
 
21
+ .id-label--is-link:hover,
22
+ a:not([aria-disabled='true']):hover > .id-label,
23
+ button:not(:disabled):hover > .id-label {
24
+ background: var(--color-bg-secondary-hover);
25
+ }
26
+
21
27
  .id-label__prefix {
22
28
  color: var(--color-text-secondary);
23
29
  }
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import './index.css';
3
3
  export declare const IDLabel: React.FC<{
4
4
  className?: string;
5
- id: string;
5
+ id: number | string;
6
6
  prefix?: string;
7
7
  }>;
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/IDLabel/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,OAAO,aAAa,CAAA;AAIpB,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAyCjF,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/IDLabel/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,OAAO,aAAa,CAAA;AAIpB,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAyCA,CAAA"}
@@ -12,7 +12,7 @@ import { useDrawerDepth } from '../Drawer/index.js';
12
12
  import './index.css';
13
13
  const baseClass = 'id-label';
14
14
  export const IDLabel = t0 => {
15
- const $ = _c(13);
15
+ const $ = _c(12);
16
16
  const {
17
17
  id,
18
18
  className,
@@ -40,22 +40,25 @@ export const IDLabel = t0 => {
40
40
  bb0: {
41
41
  const sanitizedID = sanitizeID(id);
42
42
  const shouldRenderLink = drawerDepth > 0 && (collectionSlug || globalSlug);
43
+ const t6 = shouldRenderLink && `${baseClass}--is-link`;
44
+ let t7;
45
+ if ($[9] !== className || $[10] !== t6) {
46
+ t7 = [baseClass, t6, className].filter(Boolean);
47
+ $[9] = className;
48
+ $[10] = t6;
49
+ $[11] = t7;
50
+ } else {
51
+ t7 = $[11];
52
+ }
53
+ const classes = t7.join(" ");
43
54
  if (shouldRenderLink) {
44
55
  const docPath = formatAdminURL({
45
56
  adminRoute,
46
57
  path: `/${collectionSlug ? `collections/${collectionSlug}` : `globals/${globalSlug}`}/${id}`
47
58
  });
48
- let t6;
49
- if ($[9] !== className) {
50
- t6 = [baseClass, className].filter(Boolean);
51
- $[9] = className;
52
- $[10] = t6;
53
- } else {
54
- t6 = $[10];
55
- }
56
59
  t5 = _jsxs("div", {
57
- className: t6.join(" "),
58
- title: id,
60
+ className: classes,
61
+ title: String(id),
59
62
  children: [_jsx("span", {
60
63
  className: `${baseClass}__prefix`,
61
64
  children: prefix
@@ -67,17 +70,9 @@ export const IDLabel = t0 => {
67
70
  });
68
71
  break bb0;
69
72
  }
70
- let t6;
71
- if ($[11] !== className) {
72
- t6 = [baseClass, className].filter(Boolean);
73
- $[11] = className;
74
- $[12] = t6;
75
- } else {
76
- t6 = $[12];
77
- }
78
73
  t4 = _jsxs("div", {
79
- className: t6.join(" "),
80
- title: id,
74
+ className: classes,
75
+ title: String(id),
81
76
  children: [_jsx("span", {
82
77
  className: `${baseClass}__prefix`,
83
78
  children: prefix
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","formatAdminURL","React","Link","useConfig","useDocumentInfo","sanitizeID","useDrawerDepth","baseClass","IDLabel","t0","$","id","className","prefix","t1","undefined","config","t2","routes","t3","admin","adminRoute","collectionSlug","globalSlug","drawerDepth","t4","t5","Symbol","for","sanitizedID","shouldRenderLink","docPath","path","t6","filter","Boolean","_jsxs","join","title","children","_jsx","href"],"sources":["../../../src/elements/IDLabel/index.tsx"],"sourcesContent":["'use client'\nimport { formatAdminURL } from 'payload/shared'\nimport React from 'react'\n\nimport { Link } from '../../elements/Link/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { sanitizeID } from '../../utilities/sanitizeID.js'\nimport { useDrawerDepth } from '../Drawer/index.js'\nimport './index.css'\n\nconst baseClass = 'id-label'\n\nexport const IDLabel: React.FC<{ className?: string; id: string; prefix?: string }> = ({\n id,\n className,\n prefix = 'ID',\n}) => {\n const {\n config: {\n routes: { admin: adminRoute },\n },\n } = useConfig()\n\n const { collectionSlug, globalSlug } = useDocumentInfo()\n const drawerDepth = useDrawerDepth()\n\n const sanitizedID = sanitizeID(id)\n\n // Only render as link if we're inside a drawer and have document context\n const shouldRenderLink = drawerDepth > 0 && (collectionSlug || globalSlug)\n\n if (shouldRenderLink) {\n const docPath = formatAdminURL({\n adminRoute,\n path: `/${collectionSlug ? `collections/${collectionSlug}` : `globals/${globalSlug}`}/${id}`,\n })\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')} title={id}>\n <span className={`${baseClass}__prefix`}>{prefix}</span>\n <Link className={`${baseClass}__link`} href={docPath}>\n {sanitizedID}\n </Link>\n </div>\n )\n }\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')} title={id}>\n <span className={`${baseClass}__prefix`}>{prefix}</span>\n <span className={`${baseClass}__value`}>{sanitizedID}</span>\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,SAASC,cAAc,QAAQ;AAC/B,OAAOC,KAAA,MAAW;AAElB,SAASC,IAAI,QAAQ;AACrB,SAASC,SAAS,QAAQ;AAC1B,SAASC,eAAe,QAAQ;AAChC,SAASC,UAAU,QAAQ;AAC3B,SAASC,cAAc,QAAQ;AAC/B,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,OAAA,GAAyEC,EAAA;EAAA,MAAAC,CAAA,GAAAX,EAAA;EAAC;IAAAY,EAAA;IAAAC,SAAA;IAAAC,MAAA,EAAAC;EAAA,IAAAL,EAItF;EADC,MAAAI,MAAA,GAAAC,EAAa,KAAAC,SAAA,GAAJ,IAAI,GAAbD,EAAa;EAEb;IAAAE,MAAA,EAAAC;EAAA,IAIId,SAAA;EAHM;IAAAe,MAAA,EAAAC;EAAA,IAAAF,EAEP;EADS;IAAAG,KAAA,EAAAC;EAAA,IAAAF,EAAqB;EAIjC;IAAAG,cAAA;IAAAC;EAAA,IAAuCnB,eAAA;EACvC,MAAAoB,WAAA,GAAoBlB,cAAA;EAAA,IAAAmB,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAhB,CAAA,QAAAW,UAAA,IAAAX,CAAA,QAAAE,SAAA,IAAAF,CAAA,QAAAY,cAAA,IAAAZ,CAAA,QAAAc,WAAA,IAAAd,CAAA,QAAAa,UAAA,IAAAb,CAAA,QAAAC,EAAA,IAAAD,CAAA,QAAAG,MAAA;IAchBa,EAAA,GAAAC,MAAA,CAAAC,GAAA,8B;;MAZJ,MAAAC,WAAA,GAAoBxB,UAAA,CAAWM,EAAA;MAG/B,MAAAmB,gBAAA,GAAyBN,WAAA,IAAc,KAAMF,cAAA,IAAkBC,UAAS;MAAA,IAEpEO,gBAAA;QACF,MAAAC,OAAA,GAAgB/B,cAAA;UAAAqB,UAAA;UAAAW,IAAA,EAER,IAAIV,cAAA,GAAiB,eAAeA,cAAA,EAAgB,GAAG,WAAWC,UAAA,EAAY,IAAIZ,EAAA;QAAI,CAC9F;QAAA,IAAAsB,EAAA;QAAA,IAAAvB,CAAA,QAAAE,SAAA;UAGkBqB,EAAA,IAAA1B,SAAA,EAAYK,SAAA,EAAAsB,MAAA,CAAAC,OAAkB;UAAAzB,CAAA,MAAAE,SAAA;UAAAF,CAAA,OAAAuB,EAAA;QAAA;UAAAA,EAAA,GAAAvB,CAAA;QAAA;QAA9CgB,EAAA,GAAAU,KAAA,CAAC;UAAAxB,SAAA,EAAeqB,EAA8B,CAAAI,IAAA,CAAc;UAAAC,KAAA,EAAa3B,EAAA;UAAA4B,QAAA,GACvEC,IAAA,CAAC;YAAA5B,SAAA,EAAgB,GAAAL,SAAA,UAAsB;YAAAgC,QAAA,EAAG1B;UAAA,C,GAC1C2B,IAAA,CAAAtC,IAAA;YAAAU,SAAA,EAAiB,GAAAL,SAAA,QAAoB;YAAAkC,IAAA,EAAQV,OAAA;YAAAQ,QAAA,EAC1CV;UAAA,C;;;;;;QAOSI,EAAA,IAAA1B,SAAA,EAAYK,SAAA,EAAAsB,MAAA,CAAAC,OAAkB;QAAAzB,CAAA,OAAAE,SAAA;QAAAF,CAAA,OAAAuB,EAAA;MAAA;QAAAA,EAAA,GAAAvB,CAAA;MAAA;MAA9Ce,EAAA,GAAAW,KAAA,CAAC;QAAAxB,SAAA,EAAeqB,EAA8B,CAAAI,IAAA,CAAc;QAAAC,KAAA,EAAa3B,EAAA;QAAA4B,QAAA,GACvEC,IAAA,CAAC;UAAA5B,SAAA,EAAgB,GAAAL,SAAA,UAAsB;UAAAgC,QAAA,EAAG1B;QAAA,C,GAC1C2B,IAAA,CAAC;UAAA5B,SAAA,EAAgB,GAAAL,SAAA,SAAqB;UAAAgC,QAAA,EAAGV;QAAA,C;;;;;;;;;;;;;;;;;;;SAF3CJ,E;CAKJ","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","formatAdminURL","React","Link","useConfig","useDocumentInfo","sanitizeID","useDrawerDepth","baseClass","IDLabel","t0","$","id","className","prefix","t1","undefined","config","t2","routes","t3","admin","adminRoute","collectionSlug","globalSlug","drawerDepth","t4","t5","Symbol","for","sanitizedID","shouldRenderLink","t6","t7","filter","Boolean","classes","join","docPath","path","_jsxs","title","String","children","_jsx","href"],"sources":["../../../src/elements/IDLabel/index.tsx"],"sourcesContent":["'use client'\nimport { formatAdminURL } from 'payload/shared'\nimport React from 'react'\n\nimport { Link } from '../../elements/Link/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { sanitizeID } from '../../utilities/sanitizeID.js'\nimport { useDrawerDepth } from '../Drawer/index.js'\nimport './index.css'\n\nconst baseClass = 'id-label'\n\nexport const IDLabel: React.FC<{\n className?: string\n id: number | string\n prefix?: string\n}> = ({ id, className, prefix = 'ID' }) => {\n const {\n config: {\n routes: { admin: adminRoute },\n },\n } = useConfig()\n\n const { collectionSlug, globalSlug } = useDocumentInfo()\n const drawerDepth = useDrawerDepth()\n\n const sanitizedID = sanitizeID(id)\n\n // Only render as link if we're inside a drawer and have document context\n const shouldRenderLink = drawerDepth > 0 && (collectionSlug || globalSlug)\n\n const classes = [baseClass, shouldRenderLink && `${baseClass}--is-link`, className]\n .filter(Boolean)\n .join(' ')\n\n if (shouldRenderLink) {\n const docPath = formatAdminURL({\n adminRoute,\n path: `/${collectionSlug ? `collections/${collectionSlug}` : `globals/${globalSlug}`}/${id}`,\n })\n\n return (\n <div className={classes} title={String(id)}>\n <span className={`${baseClass}__prefix`}>{prefix}</span>\n <Link className={`${baseClass}__link`} href={docPath}>\n {sanitizedID}\n </Link>\n </div>\n )\n }\n\n return (\n <div className={classes} title={String(id)}>\n <span className={`${baseClass}__prefix`}>{prefix}</span>\n <span className={`${baseClass}__value`}>{sanitizedID}</span>\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,SAASC,cAAc,QAAQ;AAC/B,OAAOC,KAAA,MAAW;AAElB,SAASC,IAAI,QAAQ;AACrB,SAASC,SAAS,QAAQ;AAC1B,SAASC,eAAe,QAAQ;AAChC,SAASC,UAAU,QAAQ;AAC3B,SAASC,cAAc,QAAQ;AAC/B,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,OAAA,GAIRC,EAAA;EAAA,MAAAC,CAAA,GAAAX,EAAA;EAAC;IAAAY,EAAA;IAAAC,SAAA;IAAAC,MAAA,EAAAC;EAAA,IAAAL,EAAgC;EAAf,MAAAI,MAAA,GAAAC,EAAa,KAAAC,SAAA,GAAJ,IAAI,GAAbD,EAAa;EAClC;IAAAE,MAAA,EAAAC;EAAA,IAIId,SAAA;EAHM;IAAAe,MAAA,EAAAC;EAAA,IAAAF,EAEP;EADS;IAAAG,KAAA,EAAAC;EAAA,IAAAF,EAAqB;EAIjC;IAAAG,cAAA;IAAAC;EAAA,IAAuCnB,eAAA;EACvC,MAAAoB,WAAA,GAAoBlB,cAAA;EAAA,IAAAmB,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAhB,CAAA,QAAAW,UAAA,IAAAX,CAAA,QAAAE,SAAA,IAAAF,CAAA,QAAAY,cAAA,IAAAZ,CAAA,QAAAc,WAAA,IAAAd,CAAA,QAAAa,UAAA,IAAAb,CAAA,QAAAC,EAAA,IAAAD,CAAA,QAAAG,MAAA;IAkBhBa,EAAA,GAAAC,MAAA,CAAAC,GAAA,8B;;MAhBJ,MAAAC,WAAA,GAAoBxB,UAAA,CAAWM,EAAA;MAG/B,MAAAmB,gBAAA,GAAyBN,WAAA,IAAc,KAAMF,cAAA,IAAkBC,UAAS;MAE5C,MAAAQ,EAAA,GAAAD,gBAAA,IAAoB,GAAAvB,SAAA,WAAuB;MAAA,IAAAyB,EAAA;MAAA,IAAAtB,CAAA,QAAAE,SAAA,IAAAF,CAAA,SAAAqB,EAAA;QAAvDC,EAAA,IAAAzB,SAAA,EAAYwB,EAA2C,EAAEnB,SAAA,EAAAqB,MAAA,CAAAC,OAC/D;QAAAxB,CAAA,MAAAE,SAAA;QAAAF,CAAA,OAAAqB,EAAA;QAAArB,CAAA,OAAAsB,EAAA;MAAA;QAAAA,EAAA,GAAAtB,CAAA;MAAA;MADV,MAAAyB,OAAA,GAAgBH,EACN,CAAAI,IAAA,CACF;MAAA,IAEJN,gBAAA;QACF,MAAAO,OAAA,GAAgBrC,cAAA;UAAAqB,UAAA;UAAAiB,IAAA,EAER,IAAIhB,cAAA,GAAiB,eAAeA,cAAA,EAAgB,GAAG,WAAWC,UAAA,EAAY,IAAIZ,EAAA;QAAI,CAC9F;QAGEe,EAAA,GAAAa,KAAA,CAAC;UAAA3B,SAAA,EAAeuB,OAAA;UAAAK,KAAA,EAAgBC,MAAA,CAAO9B,EAAA;UAAA+B,QAAA,GACrCC,IAAA,CAAC;YAAA/B,SAAA,EAAgB,GAAAL,SAAA,UAAsB;YAAAmC,QAAA,EAAG7B;UAAA,C,GAC1C8B,IAAA,CAAAzC,IAAA;YAAAU,SAAA,EAAiB,GAAAL,SAAA,QAAoB;YAAAqC,IAAA,EAAQP,OAAA;YAAAK,QAAA,EAC1Cb;UAAA,C;;;;MAOPJ,EAAA,GAAAc,KAAA,CAAC;QAAA3B,SAAA,EAAeuB,OAAA;QAAAK,KAAA,EAAgBC,MAAA,CAAO9B,EAAA;QAAA+B,QAAA,GACrCC,IAAA,CAAC;UAAA/B,SAAA,EAAgB,GAAAL,SAAA,UAAsB;UAAAmC,QAAA,EAAG7B;QAAA,C,GAC1C8B,IAAA,CAAC;UAAA/B,SAAA,EAAgB,GAAAL,SAAA,SAAqB;UAAAmC,QAAA,EAAGb;QAAA,C;;;;;;;;;;;;;;;;;;;SAF3CJ,E;CAKJ","ignoreList":[]}
@@ -1,15 +1,9 @@
1
1
  import type { CollectionSlug } from 'payload';
2
2
  import React from 'react';
3
- export declare function ListBulkUploadButton({ collectionSlug, hasCreatePermission, isBulkUploadEnabled, onBulkUploadSuccess, openBulkUpload: openBulkUploadFromProps, }: {
3
+ export declare function ListBulkUploadButton({ collectionSlug, hasCreatePermission, isBulkUploadEnabled, onBulkUploadSuccess, }: {
4
4
  collectionSlug: CollectionSlug;
5
5
  hasCreatePermission: boolean;
6
6
  isBulkUploadEnabled: boolean;
7
7
  onBulkUploadSuccess?: () => void;
8
- /**
9
- * @deprecated This prop will be removed in the next major version.
10
- *
11
- * Prefer using `onBulkUploadSuccess`
12
- */
13
- openBulkUpload?: () => void;
14
8
  }): React.JSX.Element;
15
9
  //# sourceMappingURL=ListBulkUploadButton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ListBulkUploadButton.d.ts","sourceRoot":"","sources":["../../../../src/elements/ListHeader/TitleActions/ListBulkUploadButton.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAG7C,OAAO,KAAK,MAAM,OAAO,CAAA;AAQzB,wBAAgB,oBAAoB,CAAC,EACnC,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EAAE,uBAAuB,GACxC,EAAE;IACD,cAAc,EAAE,cAAc,CAAA;IAC9B,mBAAmB,EAAE,OAAO,CAAA;IAC5B,mBAAmB,EAAE,OAAO,CAAA;IAC5B,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAA;IAChC;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAA;CAC5B,qBAuDA"}
1
+ {"version":3,"file":"ListBulkUploadButton.d.ts","sourceRoot":"","sources":["../../../../src/elements/ListHeader/TitleActions/ListBulkUploadButton.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAG7C,OAAO,KAAK,MAAM,OAAO,CAAA;AAQzB,wBAAgB,oBAAoB,CAAC,EACnC,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,GACpB,EAAE;IACD,cAAc,EAAE,cAAc,CAAA;IAC9B,mBAAmB,EAAE,OAAO,CAAA;IAC5B,mBAAmB,EAAE,OAAO,CAAA;IAC5B,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAA;CACjC,qBAkDA"}