@payloadcms/ui 4.0.0-internal.e55ccef → 4.0.0-internal.e7d4ebc

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 (98) hide show
  1. package/dist/css/spacing.css +1 -0
  2. package/dist/elements/ArrayAction/index.d.ts +2 -0
  3. package/dist/elements/ArrayAction/index.d.ts.map +1 -1
  4. package/dist/elements/ArrayAction/index.js +65 -24
  5. package/dist/elements/ArrayAction/index.js.map +1 -1
  6. package/dist/elements/BulkUpload/FileSidebar/index.css +4 -0
  7. package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts +2 -2
  8. package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts.map +1 -1
  9. package/dist/elements/BulkUpload/FormsManager/createFormData.js +4 -15
  10. package/dist/elements/BulkUpload/FormsManager/createFormData.js.map +1 -1
  11. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  12. package/dist/elements/BulkUpload/FormsManager/index.js +1 -1
  13. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  14. package/dist/elements/ClipboardAction/clipboardUtilities.d.ts +8 -1
  15. package/dist/elements/ClipboardAction/clipboardUtilities.d.ts.map +1 -1
  16. package/dist/elements/ClipboardAction/clipboardUtilities.js +40 -8
  17. package/dist/elements/ClipboardAction/clipboardUtilities.js.map +1 -1
  18. package/dist/elements/ClipboardAction/clipboardUtilities.spec.js +120 -0
  19. package/dist/elements/ClipboardAction/clipboardUtilities.spec.js.map +1 -0
  20. package/dist/elements/ClipboardAction/index.d.ts.map +1 -1
  21. package/dist/elements/ClipboardAction/index.js +17 -1
  22. package/dist/elements/ClipboardAction/index.js.map +1 -1
  23. package/dist/elements/ClipboardAction/isClipboardDataValid.spec.js +144 -0
  24. package/dist/elements/ClipboardAction/isClipboardDataValid.spec.js.map +1 -0
  25. package/dist/elements/ClipboardAction/types.d.ts +3 -0
  26. package/dist/elements/ClipboardAction/types.d.ts.map +1 -1
  27. package/dist/elements/ClipboardAction/types.js.map +1 -1
  28. package/dist/elements/ClipboardAction/useCanPasteClipboard.d.ts +10 -0
  29. package/dist/elements/ClipboardAction/useCanPasteClipboard.d.ts.map +1 -0
  30. package/dist/elements/ClipboardAction/useCanPasteClipboard.js +21 -0
  31. package/dist/elements/ClipboardAction/useCanPasteClipboard.js.map +1 -0
  32. package/dist/elements/FileManager/FilePreview/index.css +3 -3
  33. package/dist/elements/FileManager/index.css +36 -23
  34. package/dist/elements/FileManager/index.d.ts +1 -1
  35. package/dist/elements/FileManager/index.d.ts.map +1 -1
  36. package/dist/elements/FileManager/index.js +14 -4
  37. package/dist/elements/FileManager/index.js.map +1 -1
  38. package/dist/elements/MiniCarousel/index.css +39 -37
  39. package/dist/elements/ReactSelect/MultiValueLabel/index.css +2 -2
  40. package/dist/elements/RelationshipTable/index.css +0 -2
  41. package/dist/elements/RenderTitle/index.css +4 -0
  42. package/dist/elements/RenderTitle/index.d.ts.map +1 -1
  43. package/dist/elements/RenderTitle/index.js +18 -13
  44. package/dist/elements/RenderTitle/index.js.map +1 -1
  45. package/dist/elements/Table/index.css +1 -0
  46. package/dist/elements/Thumbnail/index.d.ts +1 -1
  47. package/dist/elements/Thumbnail/index.d.ts.map +1 -1
  48. package/dist/elements/Thumbnail/index.js.map +1 -1
  49. package/dist/elements/TimezonePicker/index.d.ts.map +1 -1
  50. package/dist/elements/TimezonePicker/index.js +5 -1
  51. package/dist/elements/TimezonePicker/index.js.map +1 -1
  52. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  53. package/dist/fields/Array/ArrayRow.js +97 -160
  54. package/dist/fields/Array/ArrayRow.js.map +1 -1
  55. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  56. package/dist/fields/Blocks/BlockRow.js +134 -195
  57. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  58. package/dist/fields/Blocks/RowActions.d.ts +2 -0
  59. package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
  60. package/dist/fields/Blocks/RowActions.js +23 -20
  61. package/dist/fields/Blocks/RowActions.js.map +1 -1
  62. package/dist/fields/Relationship/select-components/MultiValueLabel/index.css +1 -1
  63. package/dist/fields/Slug/index.d.ts.map +1 -1
  64. package/dist/fields/Slug/index.js +33 -24
  65. package/dist/fields/Slug/index.js.map +1 -1
  66. package/dist/fields/Upload/index.css +19 -4
  67. package/dist/forms/Form/index.d.ts.map +1 -1
  68. package/dist/forms/Form/index.js +3 -14
  69. package/dist/forms/Form/index.js.map +1 -1
  70. package/dist/forms/RenderFields/index.css +16 -2
  71. package/dist/providers/DocumentTitle/index.d.ts +1 -0
  72. package/dist/providers/DocumentTitle/index.d.ts.map +1 -1
  73. package/dist/providers/DocumentTitle/index.js +2 -0
  74. package/dist/providers/DocumentTitle/index.js.map +1 -1
  75. package/dist/providers/TableColumns/buildColumnState/index.d.ts.map +1 -1
  76. package/dist/providers/TableColumns/buildColumnState/index.js +1 -1
  77. package/dist/providers/TableColumns/buildColumnState/index.js.map +1 -1
  78. package/dist/providers/TableColumns/buildColumnState/index.spec.js +40 -0
  79. package/dist/providers/TableColumns/buildColumnState/index.spec.js.map +1 -0
  80. package/dist/providers/UploadHandlers/index.d.ts +2 -7
  81. package/dist/providers/UploadHandlers/index.d.ts.map +1 -1
  82. package/dist/providers/UploadHandlers/index.js +102 -42
  83. package/dist/providers/UploadHandlers/index.js.map +1 -1
  84. package/dist/styles.css +2 -1
  85. package/dist/utilities/handleServerFunctions.d.ts +32 -8
  86. package/dist/utilities/handleServerFunctions.d.ts.map +1 -1
  87. package/dist/utilities/handleServerFunctions.js +17 -37
  88. package/dist/utilities/handleServerFunctions.js.map +1 -1
  89. package/dist/utilities/serverFunctionRegistry.d.ts +12 -7
  90. package/dist/utilities/serverFunctionRegistry.d.ts.map +1 -1
  91. package/dist/utilities/serverFunctionRegistry.js +25 -7
  92. package/dist/utilities/serverFunctionRegistry.js.map +1 -1
  93. package/dist/views/Edit/index.css +61 -53
  94. package/dist/views/Root/index.d.ts +12 -1
  95. package/dist/views/Root/index.d.ts.map +1 -1
  96. package/dist/views/Root/index.js +10 -3
  97. package/dist/views/Root/index.js.map +1 -1
  98. package/package.json +4 -4
@@ -1,6 +1,5 @@
1
1
  'use client';
2
2
 
3
- import { c as _c } from "react/compiler-runtime";
4
3
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
5
4
  import { getTranslation } from '@payloadcms/translations';
6
5
  import React from 'react';
@@ -16,214 +15,154 @@ import { useTranslation } from '../../providers/Translation/index.js';
16
15
  import { RowActions } from './RowActions.js';
17
16
  import { SectionTitle } from './SectionTitle/index.js';
18
17
  const baseClass = 'blocks-field';
19
- export const BlockRow = t0 => {
20
- const $ = _c(45);
21
- const {
22
- addRow,
23
- attributes,
24
- block,
25
- blocks,
26
- copyRow,
27
- duplicateRow,
28
- errorCount,
29
- fields,
30
- hasMaxRows,
31
- isDragging,
32
- isLoading: isLoadingFromProps,
33
- isSortable,
34
- Label,
35
- labels,
36
- listeners,
37
- moveRow,
38
- parentPath,
39
- pasteRow,
40
- path,
41
- permissions,
42
- readOnly,
43
- removeRow,
44
- row,
45
- rowCount,
46
- rowIndex,
47
- schemaPath,
48
- setCollapse,
49
- setNodeRef,
50
- transform,
51
- transition
52
- } = t0;
18
+ export const BlockRow = ({
19
+ addRow,
20
+ attributes,
21
+ block,
22
+ blocks,
23
+ copyRow,
24
+ duplicateRow,
25
+ errorCount,
26
+ fields,
27
+ hasMaxRows,
28
+ isDragging,
29
+ isLoading: isLoadingFromProps,
30
+ isSortable,
31
+ Label,
32
+ labels,
33
+ listeners,
34
+ moveRow,
35
+ parentPath,
36
+ pasteRow,
37
+ path,
38
+ permissions,
39
+ readOnly,
40
+ removeRow,
41
+ row,
42
+ rowCount,
43
+ rowIndex,
44
+ schemaPath,
45
+ setCollapse,
46
+ setNodeRef,
47
+ transform,
48
+ transition
49
+ }) => {
53
50
  const isLoading = useThrottledValue(isLoadingFromProps, 500);
54
51
  const {
55
52
  i18n
56
53
  } = useTranslation();
57
54
  const hasSubmitted = useFormSubmitted();
55
+ const pasteData = React.useMemo(() => ({
56
+ path,
57
+ schemaBlocks: blocks
58
+ }), [path, blocks]);
58
59
  const fieldHasErrors = hasSubmitted && errorCount > 0;
59
60
  const showBlockName = !block.admin?.disableBlockName;
60
- const t1 = fieldHasErrors ? `${baseClass}__row--has-errors` : `${baseClass}__row--no-errors`;
61
- const t2 = isDragging && `${baseClass}__row--is-dragging`;
62
- let t3;
63
- if ($[0] !== t1 || $[1] !== t2) {
64
- t3 = [`${baseClass}__row`, t1, t2].filter(Boolean);
65
- $[0] = t1;
66
- $[1] = t2;
67
- $[2] = t3;
61
+ const classNames = [`${baseClass}__row`, fieldHasErrors ? `${baseClass}__row--has-errors` : `${baseClass}__row--no-errors`, isDragging && `${baseClass}__row--is-dragging`].filter(Boolean).join(' ');
62
+ let blockPermissions = true;
63
+ if (permissions === true) {
64
+ blockPermissions = true;
68
65
  } else {
69
- t3 = $[2];
70
- }
71
- const classNames = t3.join(" ");
72
- let t4;
73
- if ($[3] !== Label || $[4] !== addRow || $[5] !== attributes || $[6] !== block.fields || $[7] !== block.labels || $[8] !== block.slug || $[9] !== blocks || $[10] !== classNames || $[11] !== copyRow || $[12] !== duplicateRow || $[13] !== errorCount || $[14] !== fieldHasErrors || $[15] !== fields || $[16] !== hasMaxRows || $[17] !== i18n || $[18] !== isDragging || $[19] !== isLoading || $[20] !== isSortable || $[21] !== labels || $[22] !== listeners || $[23] !== moveRow || $[24] !== parentPath || $[25] !== pasteRow || $[26] !== path || $[27] !== permissions || $[28] !== readOnly || $[29] !== removeRow || $[30] !== row.blockType || $[31] !== row.collapsed || $[32] !== row.id || $[33] !== rowCount || $[34] !== rowIndex || $[35] !== schemaPath || $[36] !== setCollapse || $[37] !== setNodeRef || $[38] !== showBlockName || $[39] !== transform || $[40] !== transition) {
74
- let blockPermissions;
75
- if (permissions === true) {
66
+ const permissionsBlockSpecific = permissions?.blocks?.[block.slug] || permissions?.blocks;
67
+ if (permissionsBlockSpecific === true) {
76
68
  blockPermissions = true;
69
+ } else if (permissionsBlockSpecific?.fields) {
70
+ blockPermissions = permissionsBlockSpecific.fields;
77
71
  } else {
78
- const permissionsBlockSpecific = permissions?.blocks?.[block.slug] || permissions?.blocks;
79
- if (permissionsBlockSpecific === true) {
80
- blockPermissions = true;
81
- } else {
82
- if (permissionsBlockSpecific?.fields) {
83
- blockPermissions = permissionsBlockSpecific.fields;
72
+ // Check if we should fall back to read-only mode based on permission structure
73
+ // This handles cases where field-level access control exists but block permissions were sanitized
74
+ if (typeof permissions === 'object' && permissions && !permissionsBlockSpecific) {
75
+ // If permissions object exists but has no block-specific permissions,
76
+ // check if it has any restrictive characteristics
77
+ const hasReadPermission = permissions.read === true;
78
+ const missingCreateOrUpdate = !permissions.create || !permissions.update;
79
+ const hasRestrictiveStructure = hasReadPermission && (missingCreateOrUpdate || typeof permissions === 'object' && Object.keys(permissions).length === 1 && permissions.read);
80
+ if (hasRestrictiveStructure) {
81
+ blockPermissions = {
82
+ read: true
83
+ };
84
84
  } else {
85
- if (typeof permissions === "object" && permissions && !permissionsBlockSpecific) {
86
- const hasReadPermission = permissions.read === true;
87
- const missingCreateOrUpdate = !permissions.create || !permissions.update;
88
- const hasRestrictiveStructure = hasReadPermission && (missingCreateOrUpdate || typeof permissions === "object" && Object.keys(permissions).length === 1 && permissions.read);
89
- if (hasRestrictiveStructure) {
90
- blockPermissions = {
91
- read: true
92
- };
93
- } else {
94
- blockPermissions = permissionsBlockSpecific?.fields;
95
- }
96
- } else {
97
- blockPermissions = permissionsBlockSpecific?.fields;
98
- }
85
+ blockPermissions = permissionsBlockSpecific?.fields;
99
86
  }
87
+ } else {
88
+ blockPermissions = permissionsBlockSpecific?.fields;
100
89
  }
101
90
  }
102
- let t5;
103
- if ($[42] !== row.id || $[43] !== setCollapse) {
104
- t5 = collapsed => setCollapse(row.id, collapsed);
105
- $[42] = row.id;
106
- $[43] = setCollapse;
107
- $[44] = t5;
108
- } else {
109
- t5 = $[44];
110
- }
111
- t4 = _jsx("div", {
112
- id: `${parentPath?.split(".").join("-")}-row-${rowIndex}`,
113
- ref: setNodeRef,
114
- style: {
115
- transform,
116
- transition,
117
- zIndex: isDragging ? 1 : undefined
118
- },
119
- children: _jsx(Collapsible, {
120
- actions: !readOnly ? _jsx(RowActions, {
121
- addRow,
122
- blocks,
123
- blockType: row.blockType,
124
- copyRow,
125
- duplicateRow,
126
- fields: block.fields,
127
- hasMaxRows,
128
- isSortable,
129
- labels,
130
- moveRow,
131
- pasteRow,
132
- removeRow,
133
- rowCount,
134
- rowIndex
135
- }) : undefined,
136
- className: classNames,
137
- collapsibleStyle: fieldHasErrors ? "error" : "default",
138
- dragHandleProps: isSortable && !readOnly ? {
139
- id: row.id,
140
- attributes,
141
- listeners
142
- } : undefined,
143
- header: isLoading ? _jsx(ShimmerEffect, {
144
- height: "1rem",
145
- width: "8rem"
146
- }) : _jsxs("div", {
147
- className: `${baseClass}__block-header`,
148
- children: [_jsx(RowLabel, {
149
- CustomComponent: Label,
150
- label: _jsxs(_Fragment, {
151
- children: [_jsx("span", {
152
- className: `${baseClass}__block-number`,
153
- children: String(rowIndex + 1).padStart(2, "0")
154
- }), _jsx(Pill, {
155
- className: `${baseClass}__block-pill ${baseClass}__block-pill-${row.blockType}`,
156
- pillStyle: "white",
157
- size: "small",
158
- children: getTranslation(block.labels.singular, i18n)
159
- }), showBlockName && _jsx(SectionTitle, {
160
- path: `${path}.blockName`,
161
- readOnly
162
- })]
163
- }),
164
- path,
165
- rowNumber: rowIndex
166
- }), fieldHasErrors && _jsx(ErrorPill, {
167
- count: errorCount,
168
- i18n,
169
- withMessage: true
170
- })]
171
- }),
172
- isCollapsed: row.collapsed,
173
- onToggle: t5,
174
- children: isLoading ? _jsx(ShimmerEffect, {}) : _jsx(RenderFields, {
175
- className: `${baseClass}__fields`,
176
- fields,
177
- parentIndexPath: "",
178
- parentPath: path,
179
- parentSchemaPath: schemaPath,
180
- permissions: blockPermissions,
181
- readOnly
182
- })
183
- }, row.id)
184
- }, `${parentPath}-row-${row.id}`);
185
- $[3] = Label;
186
- $[4] = addRow;
187
- $[5] = attributes;
188
- $[6] = block.fields;
189
- $[7] = block.labels;
190
- $[8] = block.slug;
191
- $[9] = blocks;
192
- $[10] = classNames;
193
- $[11] = copyRow;
194
- $[12] = duplicateRow;
195
- $[13] = errorCount;
196
- $[14] = fieldHasErrors;
197
- $[15] = fields;
198
- $[16] = hasMaxRows;
199
- $[17] = i18n;
200
- $[18] = isDragging;
201
- $[19] = isLoading;
202
- $[20] = isSortable;
203
- $[21] = labels;
204
- $[22] = listeners;
205
- $[23] = moveRow;
206
- $[24] = parentPath;
207
- $[25] = pasteRow;
208
- $[26] = path;
209
- $[27] = permissions;
210
- $[28] = readOnly;
211
- $[29] = removeRow;
212
- $[30] = row.blockType;
213
- $[31] = row.collapsed;
214
- $[32] = row.id;
215
- $[33] = rowCount;
216
- $[34] = rowIndex;
217
- $[35] = schemaPath;
218
- $[36] = setCollapse;
219
- $[37] = setNodeRef;
220
- $[38] = showBlockName;
221
- $[39] = transform;
222
- $[40] = transition;
223
- $[41] = t4;
224
- } else {
225
- t4 = $[41];
226
91
  }
227
- return t4;
92
+ return /*#__PURE__*/_jsx("div", {
93
+ id: `${parentPath?.split('.').join('-')}-row-${rowIndex}`,
94
+ ref: setNodeRef,
95
+ style: {
96
+ transform,
97
+ transition,
98
+ zIndex: isDragging ? 1 : undefined
99
+ },
100
+ children: /*#__PURE__*/_jsx(Collapsible, {
101
+ actions: !readOnly ? /*#__PURE__*/_jsx(RowActions, {
102
+ addRow: addRow,
103
+ blocks: blocks,
104
+ blockType: row.blockType,
105
+ copyRow: copyRow,
106
+ duplicateRow: duplicateRow,
107
+ fields: block.fields,
108
+ hasMaxRows: hasMaxRows,
109
+ isSortable: isSortable,
110
+ labels: labels,
111
+ moveRow: moveRow,
112
+ pasteData: pasteData,
113
+ pasteRow: pasteRow,
114
+ removeRow: removeRow,
115
+ rowCount: rowCount,
116
+ rowIndex: rowIndex
117
+ }) : undefined,
118
+ className: classNames,
119
+ collapsibleStyle: fieldHasErrors ? 'error' : 'default',
120
+ dragHandleProps: isSortable && !readOnly ? {
121
+ id: row.id,
122
+ attributes,
123
+ listeners
124
+ } : undefined,
125
+ header: isLoading ? /*#__PURE__*/_jsx(ShimmerEffect, {
126
+ height: "1rem",
127
+ width: "8rem"
128
+ }) : /*#__PURE__*/_jsxs("div", {
129
+ className: `${baseClass}__block-header`,
130
+ children: [/*#__PURE__*/_jsx(RowLabel, {
131
+ CustomComponent: Label,
132
+ label: /*#__PURE__*/_jsxs(_Fragment, {
133
+ children: [/*#__PURE__*/_jsx("span", {
134
+ className: `${baseClass}__block-number`,
135
+ children: String(rowIndex + 1).padStart(2, '0')
136
+ }), /*#__PURE__*/_jsx(Pill, {
137
+ className: `${baseClass}__block-pill ${baseClass}__block-pill-${row.blockType}`,
138
+ pillStyle: "white",
139
+ size: "small",
140
+ children: getTranslation(block.labels.singular, i18n)
141
+ }), showBlockName && /*#__PURE__*/_jsx(SectionTitle, {
142
+ path: `${path}.blockName`,
143
+ readOnly: readOnly
144
+ })]
145
+ }),
146
+ path: path,
147
+ rowNumber: rowIndex
148
+ }), fieldHasErrors && /*#__PURE__*/_jsx(ErrorPill, {
149
+ count: errorCount,
150
+ i18n: i18n,
151
+ withMessage: true
152
+ })]
153
+ }),
154
+ isCollapsed: row.collapsed,
155
+ onToggle: collapsed => setCollapse(row.id, collapsed),
156
+ children: isLoading ? /*#__PURE__*/_jsx(ShimmerEffect, {}) : /*#__PURE__*/_jsx(RenderFields, {
157
+ className: `${baseClass}__fields`,
158
+ fields: fields,
159
+ parentIndexPath: "",
160
+ parentPath: path,
161
+ parentSchemaPath: schemaPath,
162
+ permissions: blockPermissions,
163
+ readOnly: readOnly
164
+ })
165
+ }, row.id)
166
+ }, `${parentPath}-row-${row.id}`);
228
167
  };
229
168
  //# sourceMappingURL=BlockRow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BlockRow.js","names":["c","_c","getTranslation","React","Collapsible","ErrorPill","Pill","ShimmerEffect","useFormSubmitted","RenderFields","RowLabel","useThrottledValue","useTranslation","RowActions","SectionTitle","baseClass","BlockRow","t0","$","addRow","attributes","block","blocks","copyRow","duplicateRow","errorCount","fields","hasMaxRows","isDragging","isLoading","isLoadingFromProps","isSortable","Label","labels","listeners","moveRow","parentPath","pasteRow","path","permissions","readOnly","removeRow","row","rowCount","rowIndex","schemaPath","setCollapse","setNodeRef","transform","transition","i18n","hasSubmitted","fieldHasErrors","showBlockName","admin","disableBlockName","t1","t2","t3","filter","Boolean","classNames","join","t4","slug","blockType","collapsed","id","blockPermissions","permissionsBlockSpecific","hasReadPermission","read","missingCreateOrUpdate","create","update","hasRestrictiveStructure","Object","keys","length","t5","_jsx","split","ref","style","zIndex","undefined","children","actions","className","collapsibleStyle","dragHandleProps","header","height","width","_jsxs","CustomComponent","label","_Fragment","String","padStart","pillStyle","size","singular","count","withMessage","onToggle","parentIndexPath","parentSchemaPath"],"sources":["../../../src/fields/Blocks/BlockRow.tsx"],"sourcesContent":["'use client'\nimport type { ClientBlock, ClientField, Labels, Row, SanitizedFieldPermissions } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport type { UseDraggableSortableReturn } from '../../elements/DraggableSortable/useDraggableSortable/types.js'\nimport type { RenderFieldsProps } from '../../forms/RenderFields/types.js'\n\nimport { Collapsible } from '../../elements/Collapsible/index.js'\nimport { ErrorPill } from '../../elements/ErrorPill/index.js'\nimport { Pill } from '../../elements/Pill/index.js'\nimport { ShimmerEffect } from '../../elements/ShimmerEffect/index.js'\nimport { useFormSubmitted } from '../../forms/Form/context.js'\nimport { RenderFields } from '../../forms/RenderFields/index.js'\nimport { RowLabel } from '../../forms/RowLabel/index.js'\nimport { useThrottledValue } from '../../hooks/useThrottledValue.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { RowActions } from './RowActions.js'\nimport { SectionTitle } from './SectionTitle/index.js'\n\nconst baseClass = 'blocks-field'\n\ntype BlocksFieldProps = {\n addRow: (rowIndex: number, blockType: string) => Promise<void> | void\n block: ClientBlock\n blocks: (ClientBlock | string)[] | ClientBlock[]\n copyRow: (rowIndex: number) => void\n duplicateRow: (rowIndex: number) => void\n errorCount: number\n fields: ClientField[]\n hasMaxRows?: boolean\n isLoading?: boolean\n isSortable?: boolean\n Label?: React.ReactNode\n labels: Labels\n moveRow: (fromIndex: number, toIndex: number) => void\n parentPath: string\n pasteRow: (rowIndex: number) => void\n path: string\n permissions: SanitizedFieldPermissions\n readOnly: boolean\n removeRow: (rowIndex: number) => void\n row: Row\n rowCount: number\n rowIndex: number\n schemaPath: string\n setCollapse: (id: string, collapsed: boolean) => void\n} & UseDraggableSortableReturn\n\nexport const BlockRow: React.FC<BlocksFieldProps> = ({\n addRow,\n attributes,\n block,\n blocks,\n copyRow,\n duplicateRow,\n errorCount,\n fields,\n hasMaxRows,\n isDragging,\n isLoading: isLoadingFromProps,\n isSortable,\n Label,\n labels,\n listeners,\n moveRow,\n parentPath,\n pasteRow,\n path,\n permissions,\n readOnly,\n removeRow,\n row,\n rowCount,\n rowIndex,\n schemaPath,\n setCollapse,\n setNodeRef,\n transform,\n transition,\n}) => {\n const isLoading = useThrottledValue(isLoadingFromProps, 500)\n\n const { i18n } = useTranslation()\n const hasSubmitted = useFormSubmitted()\n\n const fieldHasErrors = hasSubmitted && errorCount > 0\n\n const showBlockName = !block.admin?.disableBlockName\n\n const classNames = [\n `${baseClass}__row`,\n fieldHasErrors ? `${baseClass}__row--has-errors` : `${baseClass}__row--no-errors`,\n isDragging && `${baseClass}__row--is-dragging`,\n ]\n .filter(Boolean)\n .join(' ')\n\n let blockPermissions: RenderFieldsProps['permissions'] = true\n\n if (permissions === true) {\n blockPermissions = true\n } else {\n const permissionsBlockSpecific = permissions?.blocks?.[block.slug] || permissions?.blocks\n if (permissionsBlockSpecific === true) {\n blockPermissions = true\n } else if (permissionsBlockSpecific?.fields) {\n blockPermissions = permissionsBlockSpecific.fields\n } else {\n // Check if we should fall back to read-only mode based on permission structure\n // This handles cases where field-level access control exists but block permissions were sanitized\n if (typeof permissions === 'object' && permissions && !permissionsBlockSpecific) {\n // If permissions object exists but has no block-specific permissions,\n // check if it has any restrictive characteristics\n const hasReadPermission = permissions.read === true\n const missingCreateOrUpdate = !permissions.create || !permissions.update\n const hasRestrictiveStructure =\n hasReadPermission &&\n (missingCreateOrUpdate ||\n (typeof permissions === 'object' &&\n Object.keys(permissions).length === 1 &&\n permissions.read))\n\n if (hasRestrictiveStructure) {\n blockPermissions = { read: true }\n } else {\n blockPermissions = permissionsBlockSpecific?.fields\n }\n } else {\n blockPermissions = permissionsBlockSpecific?.fields\n }\n }\n }\n\n return (\n <div\n id={`${parentPath?.split('.').join('-')}-row-${rowIndex}`}\n key={`${parentPath}-row-${row.id}`}\n ref={setNodeRef}\n style={{\n transform,\n transition,\n zIndex: isDragging ? 1 : undefined,\n }}\n >\n <Collapsible\n actions={\n !readOnly ? (\n <RowActions\n addRow={addRow}\n blocks={blocks}\n blockType={row.blockType}\n copyRow={copyRow}\n duplicateRow={duplicateRow}\n fields={block.fields}\n hasMaxRows={hasMaxRows}\n isSortable={isSortable}\n labels={labels}\n moveRow={moveRow}\n pasteRow={pasteRow}\n removeRow={removeRow}\n rowCount={rowCount}\n rowIndex={rowIndex}\n />\n ) : undefined\n }\n className={classNames}\n collapsibleStyle={fieldHasErrors ? 'error' : 'default'}\n dragHandleProps={\n isSortable && !readOnly\n ? {\n id: row.id,\n attributes,\n listeners,\n }\n : undefined\n }\n header={\n isLoading ? (\n <ShimmerEffect height=\"1rem\" width=\"8rem\" />\n ) : (\n <div className={`${baseClass}__block-header`}>\n <RowLabel\n CustomComponent={Label}\n label={\n <>\n <span className={`${baseClass}__block-number`}>\n {String(rowIndex + 1).padStart(2, '0')}\n </span>\n <Pill\n className={`${baseClass}__block-pill ${baseClass}__block-pill-${row.blockType}`}\n pillStyle=\"white\"\n size=\"small\"\n >\n {getTranslation(block.labels.singular, i18n)}\n </Pill>\n {showBlockName && (\n <SectionTitle path={`${path}.blockName`} readOnly={readOnly} />\n )}\n </>\n }\n path={path}\n rowNumber={rowIndex}\n />\n {fieldHasErrors && <ErrorPill count={errorCount} i18n={i18n} withMessage />}\n </div>\n )\n }\n isCollapsed={row.collapsed}\n key={row.id}\n onToggle={(collapsed) => setCollapse(row.id, collapsed)}\n >\n {isLoading ? (\n <ShimmerEffect />\n ) : (\n <RenderFields\n className={`${baseClass}__fields`}\n fields={fields}\n parentIndexPath=\"\"\n parentPath={path}\n parentSchemaPath={schemaPath}\n permissions={blockPermissions}\n readOnly={readOnly}\n />\n )}\n </Collapsible>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"BlockRow.js","names":["getTranslation","React","Collapsible","ErrorPill","Pill","ShimmerEffect","useFormSubmitted","RenderFields","RowLabel","useThrottledValue","useTranslation","RowActions","SectionTitle","baseClass","BlockRow","addRow","attributes","block","blocks","copyRow","duplicateRow","errorCount","fields","hasMaxRows","isDragging","isLoading","isLoadingFromProps","isSortable","Label","labels","listeners","moveRow","parentPath","pasteRow","path","permissions","readOnly","removeRow","row","rowCount","rowIndex","schemaPath","setCollapse","setNodeRef","transform","transition","i18n","hasSubmitted","pasteData","useMemo","schemaBlocks","fieldHasErrors","showBlockName","admin","disableBlockName","classNames","filter","Boolean","join","blockPermissions","permissionsBlockSpecific","slug","hasReadPermission","read","missingCreateOrUpdate","create","update","hasRestrictiveStructure","Object","keys","length","_jsx","id","split","ref","style","zIndex","undefined","actions","blockType","className","collapsibleStyle","dragHandleProps","header","height","width","_jsxs","CustomComponent","label","_Fragment","String","padStart","pillStyle","size","singular","rowNumber","count","withMessage","isCollapsed","collapsed","onToggle","parentIndexPath","parentSchemaPath"],"sources":["../../../src/fields/Blocks/BlockRow.tsx"],"sourcesContent":["'use client'\nimport type { ClientBlock, ClientField, Labels, Row, SanitizedFieldPermissions } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport type { UseDraggableSortableReturn } from '../../elements/DraggableSortable/useDraggableSortable/types.js'\nimport type { RenderFieldsProps } from '../../forms/RenderFields/types.js'\n\nimport { Collapsible } from '../../elements/Collapsible/index.js'\nimport { ErrorPill } from '../../elements/ErrorPill/index.js'\nimport { Pill } from '../../elements/Pill/index.js'\nimport { ShimmerEffect } from '../../elements/ShimmerEffect/index.js'\nimport { useFormSubmitted } from '../../forms/Form/context.js'\nimport { RenderFields } from '../../forms/RenderFields/index.js'\nimport { RowLabel } from '../../forms/RowLabel/index.js'\nimport { useThrottledValue } from '../../hooks/useThrottledValue.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { RowActions } from './RowActions.js'\nimport { SectionTitle } from './SectionTitle/index.js'\n\nconst baseClass = 'blocks-field'\n\ntype BlocksFieldProps = {\n addRow: (rowIndex: number, blockType: string) => Promise<void> | void\n block: ClientBlock\n blocks: (ClientBlock | string)[] | ClientBlock[]\n copyRow: (rowIndex: number) => void\n duplicateRow: (rowIndex: number) => void\n errorCount: number\n fields: ClientField[]\n hasMaxRows?: boolean\n isLoading?: boolean\n isSortable?: boolean\n Label?: React.ReactNode\n labels: Labels\n moveRow: (fromIndex: number, toIndex: number) => void\n parentPath: string\n pasteRow: (rowIndex: number) => void\n path: string\n permissions: SanitizedFieldPermissions\n readOnly: boolean\n removeRow: (rowIndex: number) => void\n row: Row\n rowCount: number\n rowIndex: number\n schemaPath: string\n setCollapse: (id: string, collapsed: boolean) => void\n} & UseDraggableSortableReturn\n\nexport const BlockRow: React.FC<BlocksFieldProps> = ({\n addRow,\n attributes,\n block,\n blocks,\n copyRow,\n duplicateRow,\n errorCount,\n fields,\n hasMaxRows,\n isDragging,\n isLoading: isLoadingFromProps,\n isSortable,\n Label,\n labels,\n listeners,\n moveRow,\n parentPath,\n pasteRow,\n path,\n permissions,\n readOnly,\n removeRow,\n row,\n rowCount,\n rowIndex,\n schemaPath,\n setCollapse,\n setNodeRef,\n transform,\n transition,\n}) => {\n const isLoading = useThrottledValue(isLoadingFromProps, 500)\n\n const { i18n } = useTranslation()\n const hasSubmitted = useFormSubmitted()\n\n const pasteData = React.useMemo(\n () => ({ path, schemaBlocks: blocks as ClientBlock[] }),\n [path, blocks],\n )\n\n const fieldHasErrors = hasSubmitted && errorCount > 0\n\n const showBlockName = !block.admin?.disableBlockName\n\n const classNames = [\n `${baseClass}__row`,\n fieldHasErrors ? `${baseClass}__row--has-errors` : `${baseClass}__row--no-errors`,\n isDragging && `${baseClass}__row--is-dragging`,\n ]\n .filter(Boolean)\n .join(' ')\n\n let blockPermissions: RenderFieldsProps['permissions'] = true\n\n if (permissions === true) {\n blockPermissions = true\n } else {\n const permissionsBlockSpecific = permissions?.blocks?.[block.slug] || permissions?.blocks\n if (permissionsBlockSpecific === true) {\n blockPermissions = true\n } else if (permissionsBlockSpecific?.fields) {\n blockPermissions = permissionsBlockSpecific.fields\n } else {\n // Check if we should fall back to read-only mode based on permission structure\n // This handles cases where field-level access control exists but block permissions were sanitized\n if (typeof permissions === 'object' && permissions && !permissionsBlockSpecific) {\n // If permissions object exists but has no block-specific permissions,\n // check if it has any restrictive characteristics\n const hasReadPermission = permissions.read === true\n const missingCreateOrUpdate = !permissions.create || !permissions.update\n const hasRestrictiveStructure =\n hasReadPermission &&\n (missingCreateOrUpdate ||\n (typeof permissions === 'object' &&\n Object.keys(permissions).length === 1 &&\n permissions.read))\n\n if (hasRestrictiveStructure) {\n blockPermissions = { read: true }\n } else {\n blockPermissions = permissionsBlockSpecific?.fields\n }\n } else {\n blockPermissions = permissionsBlockSpecific?.fields\n }\n }\n }\n\n return (\n <div\n id={`${parentPath?.split('.').join('-')}-row-${rowIndex}`}\n key={`${parentPath}-row-${row.id}`}\n ref={setNodeRef}\n style={{\n transform,\n transition,\n zIndex: isDragging ? 1 : undefined,\n }}\n >\n <Collapsible\n actions={\n !readOnly ? (\n <RowActions\n addRow={addRow}\n blocks={blocks}\n blockType={row.blockType}\n copyRow={copyRow}\n duplicateRow={duplicateRow}\n fields={block.fields}\n hasMaxRows={hasMaxRows}\n isSortable={isSortable}\n labels={labels}\n moveRow={moveRow}\n pasteData={pasteData}\n pasteRow={pasteRow}\n removeRow={removeRow}\n rowCount={rowCount}\n rowIndex={rowIndex}\n />\n ) : undefined\n }\n className={classNames}\n collapsibleStyle={fieldHasErrors ? 'error' : 'default'}\n dragHandleProps={\n isSortable && !readOnly\n ? {\n id: row.id,\n attributes,\n listeners,\n }\n : undefined\n }\n header={\n isLoading ? (\n <ShimmerEffect height=\"1rem\" width=\"8rem\" />\n ) : (\n <div className={`${baseClass}__block-header`}>\n <RowLabel\n CustomComponent={Label}\n label={\n <>\n <span className={`${baseClass}__block-number`}>\n {String(rowIndex + 1).padStart(2, '0')}\n </span>\n <Pill\n className={`${baseClass}__block-pill ${baseClass}__block-pill-${row.blockType}`}\n pillStyle=\"white\"\n size=\"small\"\n >\n {getTranslation(block.labels.singular, i18n)}\n </Pill>\n {showBlockName && (\n <SectionTitle path={`${path}.blockName`} readOnly={readOnly} />\n )}\n </>\n }\n path={path}\n rowNumber={rowIndex}\n />\n {fieldHasErrors && <ErrorPill count={errorCount} i18n={i18n} withMessage />}\n </div>\n )\n }\n isCollapsed={row.collapsed}\n key={row.id}\n onToggle={(collapsed) => setCollapse(row.id, collapsed)}\n >\n {isLoading ? (\n <ShimmerEffect />\n ) : (\n <RenderFields\n className={`${baseClass}__fields`}\n fields={fields}\n parentIndexPath=\"\"\n parentPath={path}\n parentSchemaPath={schemaPath}\n permissions={blockPermissions}\n readOnly={readOnly}\n />\n )}\n </Collapsible>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,6 @@
1
1
  import type { ClientBlock, ClientField, Labels } from 'payload';
2
2
  import React from 'react';
3
+ import type { ClipboardPasteEligibilityArgs } from '../../elements/ClipboardAction/types.js';
3
4
  export declare const RowActions: React.FC<{
4
5
  readonly addRow: (rowIndex: number, blockType: string) => Promise<void> | void;
5
6
  readonly blocks: (ClientBlock | string)[];
@@ -11,6 +12,7 @@ export declare const RowActions: React.FC<{
11
12
  readonly isSortable?: boolean;
12
13
  readonly labels: Labels;
13
14
  readonly moveRow: (fromIndex: number, toIndex: number) => void;
15
+ readonly pasteData: ClipboardPasteEligibilityArgs;
14
16
  readonly pasteRow: (rowIndex: number) => void;
15
17
  readonly removeRow: (rowIndex: number) => void;
16
18
  readonly rowCount: number;
@@ -1 +1 @@
1
- {"version":3,"file":"RowActions.d.ts","sourceRoot":"","sources":["../../../src/fields/Blocks/RowActions.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAG/D,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC9E,QAAQ,CAAC,MAAM,EAAE,CAAC,WAAW,GAAG,MAAM,CAAC,EAAE,CAAA;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,QAAQ,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IACpE,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,CAAA;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9D,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7C,QAAQ,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B,CAqDA,CAAA"}
1
+ {"version":3,"file":"RowActions.d.ts","sourceRoot":"","sources":["../../../src/fields/Blocks/RowActions.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAG/D,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,yCAAyC,CAAA;AAM5F,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC9E,QAAQ,CAAC,MAAM,EAAE,CAAC,WAAW,GAAG,MAAM,CAAC,EAAE,CAAA;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,QAAQ,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IACpE,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,CAAA;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9D,QAAQ,CAAC,SAAS,EAAE,6BAA6B,CAAA;IACjD,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7C,QAAQ,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B,CAuDA,CAAA"}
@@ -8,7 +8,7 @@ import { ArrayAction } from '../../elements/ArrayAction/index.js';
8
8
  import { useDrawerSlug } from '../../elements/Drawer/useDrawerSlug.js';
9
9
  import { BlocksDrawer } from './BlocksDrawer/index.js';
10
10
  export const RowActions = props => {
11
- const $ = _c(28);
11
+ const $ = _c(29);
12
12
  const {
13
13
  addRow,
14
14
  blocks,
@@ -19,6 +19,7 @@ export const RowActions = props => {
19
19
  isSortable,
20
20
  labels,
21
21
  moveRow,
22
+ pasteData,
22
23
  pasteRow,
23
24
  removeRow,
24
25
  rowCount,
@@ -47,28 +48,28 @@ export const RowActions = props => {
47
48
  t0 = $[4];
48
49
  }
49
50
  let t1;
50
- if ($[5] !== blockType || $[6] !== blocks || $[7] !== copyRow || $[8] !== drawerSlug || $[9] !== duplicateRow || $[10] !== hasMaxRows || $[11] !== isSortable || $[12] !== labels || $[13] !== moveRow || $[14] !== openModal || $[15] !== pasteRow || $[16] !== removeRow || $[17] !== rowCount || $[18] !== rowIndex || $[19] !== t0) {
51
+ if ($[5] !== blockType || $[6] !== blocks || $[7] !== copyRow || $[8] !== drawerSlug || $[9] !== duplicateRow || $[10] !== hasMaxRows || $[11] !== isSortable || $[12] !== labels || $[13] !== moveRow || $[14] !== openModal || $[15] !== pasteData || $[16] !== pasteRow || $[17] !== removeRow || $[18] !== rowCount || $[19] !== rowIndex || $[20] !== t0) {
51
52
  let t2;
52
- if ($[21] !== drawerSlug || $[22] !== openModal) {
53
+ if ($[22] !== drawerSlug || $[23] !== openModal) {
53
54
  t2 = index => {
54
55
  setIndexToAdd(index);
55
56
  openModal(drawerSlug);
56
57
  };
57
- $[21] = drawerSlug;
58
- $[22] = openModal;
59
- $[23] = t2;
58
+ $[22] = drawerSlug;
59
+ $[23] = openModal;
60
+ $[24] = t2;
60
61
  } else {
61
- t2 = $[23];
62
+ t2 = $[24];
62
63
  }
63
64
  let t3;
64
- if ($[24] !== blockType || $[25] !== duplicateRow || $[26] !== rowIndex) {
65
+ if ($[25] !== blockType || $[26] !== duplicateRow || $[27] !== rowIndex) {
65
66
  t3 = () => duplicateRow(rowIndex, blockType);
66
- $[24] = blockType;
67
- $[25] = duplicateRow;
68
- $[26] = rowIndex;
69
- $[27] = t3;
67
+ $[25] = blockType;
68
+ $[26] = duplicateRow;
69
+ $[27] = rowIndex;
70
+ $[28] = t3;
70
71
  } else {
71
- t3 = $[27];
72
+ t3 = $[28];
72
73
  }
73
74
  t1 = _jsxs(React.Fragment, {
74
75
  children: [_jsx(BlocksDrawer, {
@@ -85,6 +86,7 @@ export const RowActions = props => {
85
86
  index: rowIndex,
86
87
  isSortable,
87
88
  moveRow,
89
+ pasteData,
88
90
  pasteRow,
89
91
  removeRow,
90
92
  rowCount
@@ -100,14 +102,15 @@ export const RowActions = props => {
100
102
  $[12] = labels;
101
103
  $[13] = moveRow;
102
104
  $[14] = openModal;
103
- $[15] = pasteRow;
104
- $[16] = removeRow;
105
- $[17] = rowCount;
106
- $[18] = rowIndex;
107
- $[19] = t0;
108
- $[20] = t1;
105
+ $[15] = pasteData;
106
+ $[16] = pasteRow;
107
+ $[17] = removeRow;
108
+ $[18] = rowCount;
109
+ $[19] = rowIndex;
110
+ $[20] = t0;
111
+ $[21] = t1;
109
112
  } else {
110
- t1 = $[20];
113
+ t1 = $[21];
111
114
  }
112
115
  return t1;
113
116
  };
@@ -1 +1 @@
1
- {"version":3,"file":"RowActions.js","names":["c","_c","useModal","React","ArrayAction","useDrawerSlug","BlocksDrawer","RowActions","props","$","addRow","blocks","blockType","copyRow","duplicateRow","hasMaxRows","isSortable","labels","moveRow","pasteRow","removeRow","rowCount","rowIndex","closeModal","openModal","drawerSlug","indexToAdd","setIndexToAdd","useState","t0","_","rowBlockType","t1","t2","index","t3","_jsxs","Fragment","children","_jsx","addRowIndex"],"sources":["../../../src/fields/Blocks/RowActions.tsx"],"sourcesContent":["'use client'\nimport type { ClientBlock, ClientField, Labels } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport React from 'react'\n\nimport { ArrayAction } from '../../elements/ArrayAction/index.js'\nimport { useDrawerSlug } from '../../elements/Drawer/useDrawerSlug.js'\nimport { BlocksDrawer } from './BlocksDrawer/index.js'\n\nexport const RowActions: React.FC<{\n readonly addRow: (rowIndex: number, blockType: string) => Promise<void> | void\n readonly blocks: (ClientBlock | string)[]\n readonly blockType: string\n readonly copyRow: (rowIndex: number) => void\n readonly duplicateRow: (rowIndex: number, blockType: string) => void\n readonly fields: ClientField[]\n readonly hasMaxRows?: boolean\n readonly isSortable?: boolean\n readonly labels: Labels\n readonly moveRow: (fromIndex: number, toIndex: number) => void\n readonly pasteRow: (rowIndex: number) => void\n readonly removeRow: (rowIndex: number) => void\n readonly rowCount: number\n readonly rowIndex: number\n}> = (props) => {\n const {\n addRow,\n blocks,\n blockType,\n copyRow,\n duplicateRow,\n hasMaxRows,\n isSortable,\n labels,\n moveRow,\n pasteRow,\n removeRow,\n rowCount,\n rowIndex,\n } = props\n\n const { closeModal, openModal } = useModal()\n const drawerSlug = useDrawerSlug('blocks-drawer')\n\n const [indexToAdd, setIndexToAdd] = React.useState<null | number>(null)\n\n return (\n <React.Fragment>\n <BlocksDrawer\n addRow={(_, rowBlockType) => {\n if (typeof addRow === 'function') {\n void addRow(indexToAdd, rowBlockType)\n }\n closeModal(drawerSlug)\n }}\n addRowIndex={rowIndex}\n blocks={blocks}\n drawerSlug={drawerSlug}\n labels={labels}\n />\n <ArrayAction\n addRow={(index) => {\n setIndexToAdd(index)\n openModal(drawerSlug)\n }}\n copyRow={copyRow}\n duplicateRow={() => duplicateRow(rowIndex, blockType)}\n hasMaxRows={hasMaxRows}\n index={rowIndex}\n isSortable={isSortable}\n moveRow={moveRow}\n pasteRow={pasteRow}\n removeRow={removeRow}\n rowCount={rowCount}\n />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"RowActions.js","names":["c","_c","useModal","React","ArrayAction","useDrawerSlug","BlocksDrawer","RowActions","props","$","addRow","blocks","blockType","copyRow","duplicateRow","hasMaxRows","isSortable","labels","moveRow","pasteData","pasteRow","removeRow","rowCount","rowIndex","closeModal","openModal","drawerSlug","indexToAdd","setIndexToAdd","useState","t0","_","rowBlockType","t1","t2","index","t3","_jsxs","Fragment","children","_jsx","addRowIndex"],"sources":["../../../src/fields/Blocks/RowActions.tsx"],"sourcesContent":["'use client'\nimport type { ClientBlock, ClientField, Labels } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport React from 'react'\n\nimport type { ClipboardPasteEligibilityArgs } from '../../elements/ClipboardAction/types.js'\n\nimport { ArrayAction } from '../../elements/ArrayAction/index.js'\nimport { useDrawerSlug } from '../../elements/Drawer/useDrawerSlug.js'\nimport { BlocksDrawer } from './BlocksDrawer/index.js'\n\nexport const RowActions: React.FC<{\n readonly addRow: (rowIndex: number, blockType: string) => Promise<void> | void\n readonly blocks: (ClientBlock | string)[]\n readonly blockType: string\n readonly copyRow: (rowIndex: number) => void\n readonly duplicateRow: (rowIndex: number, blockType: string) => void\n readonly fields: ClientField[]\n readonly hasMaxRows?: boolean\n readonly isSortable?: boolean\n readonly labels: Labels\n readonly moveRow: (fromIndex: number, toIndex: number) => void\n readonly pasteData: ClipboardPasteEligibilityArgs\n readonly pasteRow: (rowIndex: number) => void\n readonly removeRow: (rowIndex: number) => void\n readonly rowCount: number\n readonly rowIndex: number\n}> = (props) => {\n const {\n addRow,\n blocks,\n blockType,\n copyRow,\n duplicateRow,\n hasMaxRows,\n isSortable,\n labels,\n moveRow,\n pasteData,\n pasteRow,\n removeRow,\n rowCount,\n rowIndex,\n } = props\n\n const { closeModal, openModal } = useModal()\n const drawerSlug = useDrawerSlug('blocks-drawer')\n\n const [indexToAdd, setIndexToAdd] = React.useState<null | number>(null)\n\n return (\n <React.Fragment>\n <BlocksDrawer\n addRow={(_, rowBlockType) => {\n if (typeof addRow === 'function') {\n void addRow(indexToAdd, rowBlockType)\n }\n closeModal(drawerSlug)\n }}\n addRowIndex={rowIndex}\n blocks={blocks}\n drawerSlug={drawerSlug}\n labels={labels}\n />\n <ArrayAction\n addRow={(index) => {\n setIndexToAdd(index)\n openModal(drawerSlug)\n }}\n copyRow={copyRow}\n duplicateRow={() => duplicateRow(rowIndex, blockType)}\n hasMaxRows={hasMaxRows}\n index={rowIndex}\n isSortable={isSortable}\n moveRow={moveRow}\n pasteData={pasteData}\n pasteRow={pasteRow}\n removeRow={removeRow}\n rowCount={rowCount}\n />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  @layer payload-default {
2
2
  .relationship--multi-value-label {
3
3
  display: flex;
4
- padding-inline-start: var(--spacer-2);
4
+ padding-inline-start: var(--spacer-1-5);
5
5
  gap: var(--spacer-1);
6
6
  }
7
7
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Slug/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAG9C,OAAO,KAAgC,MAAM,OAAO,CAAA;AAepD,OAAO,aAAa,CAAA;AAIpB,KAAK,cAAc,GAAG;IACpB,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAwJD,eAAO,MAAM,SAAS,0BAAoC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Slug/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAG9C,OAAO,KAAgC,MAAM,OAAO,CAAA;AAgBpD,OAAO,aAAa,CAAA;AAIpB,KAAK,cAAc,GAAG;IACpB,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAgKD,eAAO,MAAM,SAAS,0BAAoC,CAAA"}