@payloadcms/ui 3.47.0-internal.554048f → 3.47.0

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.
@@ -2,10 +2,11 @@ import type { FormStateWithoutComponents } from 'payload';
2
2
  import { type FC } from 'react';
3
3
  import type { ClipboardCopyData, OnPasteFn } from './types.js';
4
4
  type Props = {
5
+ allowCopy?: boolean;
6
+ allowPaste?: boolean;
5
7
  className?: string;
6
8
  copyClassName?: string;
7
- disableCopy?: boolean;
8
- disablePaste?: boolean;
9
+ disabled?: boolean;
9
10
  getDataToCopy: () => FormStateWithoutComponents;
10
11
  isRow?: boolean;
11
12
  onPaste: OnPasteFn;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ClipboardAction/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAA;AAEzD,OAAO,EAAE,KAAK,EAAE,EAAe,MAAM,OAAO,CAAA;AAG5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAU9D,KAAK,KAAK,GAAG;IACX,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,aAAa,EAAE,MAAM,0BAA0B,CAAA;IAC/C,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,SAAS,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,GAAG,iBAAiB,CAAA;AAErB;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,KAAK,CAoFrC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ClipboardAction/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAA;AAEzD,OAAO,EAAE,KAAK,EAAE,EAAe,MAAM,OAAO,CAAA;AAG5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAU9D,KAAK,KAAK,GAAG;IACX,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,aAAa,EAAE,MAAM,0BAA0B,CAAA;IAC/C,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,SAAS,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,GAAG,iBAAiB,CAAA;AAErB;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,KAAK,CA0FrC,CAAA"}
@@ -15,11 +15,12 @@ const baseClass = 'clipboard-action';
15
15
  * @note This component doesn't use the Clipboard API, but localStorage. See rationale in #11513
16
16
  */
17
17
  export const ClipboardAction = t0 => {
18
- const $ = _c(38);
18
+ const $ = _c(40);
19
+ let allowCopy;
20
+ let allowPaste;
19
21
  let className;
20
22
  let copyClassName;
21
- let disableCopy;
22
- let disablePaste;
23
+ let disabled;
23
24
  let isRow;
24
25
  let onPaste;
25
26
  let pasteClassName;
@@ -27,10 +28,11 @@ export const ClipboardAction = t0 => {
27
28
  let rest;
28
29
  if ($[0] !== t0) {
29
30
  ({
31
+ allowCopy,
32
+ allowPaste,
30
33
  className,
31
34
  copyClassName,
32
- disableCopy,
33
- disablePaste,
35
+ disabled,
34
36
  isRow,
35
37
  onPaste,
36
38
  pasteClassName,
@@ -38,40 +40,42 @@ export const ClipboardAction = t0 => {
38
40
  ...rest
39
41
  } = t0);
40
42
  $[0] = t0;
41
- $[1] = className;
42
- $[2] = copyClassName;
43
- $[3] = disableCopy;
44
- $[4] = disablePaste;
45
- $[5] = isRow;
46
- $[6] = onPaste;
47
- $[7] = pasteClassName;
48
- $[8] = path;
49
- $[9] = rest;
43
+ $[1] = allowCopy;
44
+ $[2] = allowPaste;
45
+ $[3] = className;
46
+ $[4] = copyClassName;
47
+ $[5] = disabled;
48
+ $[6] = isRow;
49
+ $[7] = onPaste;
50
+ $[8] = pasteClassName;
51
+ $[9] = path;
52
+ $[10] = rest;
50
53
  } else {
51
- className = $[1];
52
- copyClassName = $[2];
53
- disableCopy = $[3];
54
- disablePaste = $[4];
55
- isRow = $[5];
56
- onPaste = $[6];
57
- pasteClassName = $[7];
58
- path = $[8];
59
- rest = $[9];
54
+ allowCopy = $[1];
55
+ allowPaste = $[2];
56
+ className = $[3];
57
+ copyClassName = $[4];
58
+ disabled = $[5];
59
+ isRow = $[6];
60
+ onPaste = $[7];
61
+ pasteClassName = $[8];
62
+ path = $[9];
63
+ rest = $[10];
60
64
  }
61
65
  const {
62
66
  t
63
67
  } = useTranslation();
64
68
  let t1;
65
- if ($[10] !== className) {
69
+ if ($[11] !== className) {
66
70
  t1 = [`${baseClass}__popup`, className].filter(Boolean);
67
- $[10] = className;
68
- $[11] = t1;
71
+ $[11] = className;
72
+ $[12] = t1;
69
73
  } else {
70
- t1 = $[11];
74
+ t1 = $[12];
71
75
  }
72
76
  const classes = t1.join(" ");
73
77
  let t2;
74
- if ($[12] !== path || $[13] !== rest || $[14] !== t) {
78
+ if ($[13] !== path || $[14] !== rest || $[15] !== t) {
75
79
  t2 = () => {
76
80
  const clipboardResult = clipboardCopy({
77
81
  path,
@@ -84,16 +88,16 @@ export const ClipboardAction = t0 => {
84
88
  toast.success(t("general:copied"));
85
89
  }
86
90
  };
87
- $[12] = path;
88
- $[13] = rest;
89
- $[14] = t;
90
- $[15] = t2;
91
+ $[13] = path;
92
+ $[14] = rest;
93
+ $[15] = t;
94
+ $[16] = t2;
91
95
  } else {
92
- t2 = $[15];
96
+ t2 = $[16];
93
97
  }
94
98
  const handleCopy = t2;
95
99
  let t3;
96
- if ($[16] !== onPaste || $[17] !== path || $[18] !== rest || $[19] !== t) {
100
+ if ($[17] !== onPaste || $[18] !== path || $[19] !== rest || $[20] !== t) {
97
101
  t3 = () => {
98
102
  const clipboardResult_0 = clipboardPaste(rest.type === "array" ? {
99
103
  onPaste,
@@ -110,19 +114,22 @@ export const ClipboardAction = t0 => {
110
114
  toast.error(clipboardResult_0);
111
115
  }
112
116
  };
113
- $[16] = onPaste;
114
- $[17] = path;
115
- $[18] = rest;
116
- $[19] = t;
117
- $[20] = t3;
117
+ $[17] = onPaste;
118
+ $[18] = path;
119
+ $[19] = rest;
120
+ $[20] = t;
121
+ $[21] = t3;
118
122
  } else {
119
- t3 = $[20];
123
+ t3 = $[21];
120
124
  }
121
125
  const handlePaste = t3;
126
+ if (!allowPaste && !allowCopy) {
127
+ return null;
128
+ }
122
129
  let t4;
123
- if ($[21] !== classes || $[22] !== copyClassName || $[23] !== disableCopy || $[24] !== disablePaste || $[25] !== handleCopy || $[26] !== handlePaste || $[27] !== isRow || $[28] !== pasteClassName) {
130
+ if ($[22] !== allowCopy || $[23] !== allowPaste || $[24] !== classes || $[25] !== copyClassName || $[26] !== disabled || $[27] !== handleCopy || $[28] !== handlePaste || $[29] !== isRow || $[30] !== pasteClassName) {
124
131
  let t5;
125
- if ($[30] !== copyClassName || $[31] !== disableCopy || $[32] !== disablePaste || $[33] !== handleCopy || $[34] !== handlePaste || $[35] !== isRow || $[36] !== pasteClassName) {
132
+ if ($[32] !== allowCopy || $[33] !== allowPaste || $[34] !== copyClassName || $[35] !== handleCopy || $[36] !== handlePaste || $[37] !== isRow || $[38] !== pasteClassName) {
126
133
  t5 = t6 => {
127
134
  const {
128
135
  close
@@ -130,7 +137,7 @@ export const ClipboardAction = t0 => {
130
137
  return _jsxs(PopupList.ButtonGroup, {
131
138
  children: [_jsx(PopupList.Button, {
132
139
  className: copyClassName,
133
- disabled: disableCopy,
140
+ disabled: !allowCopy,
134
141
  onClick: () => {
135
142
  handleCopy();
136
143
  close();
@@ -140,7 +147,7 @@ export const ClipboardAction = t0 => {
140
147
  })
141
148
  }), _jsx(PopupList.Button, {
142
149
  className: pasteClassName,
143
- disabled: disablePaste,
150
+ disabled: !allowPaste,
144
151
  onClick: () => {
145
152
  handlePaste();
146
153
  close();
@@ -152,36 +159,38 @@ export const ClipboardAction = t0 => {
152
159
  })]
153
160
  });
154
161
  };
155
- $[30] = copyClassName;
156
- $[31] = disableCopy;
157
- $[32] = disablePaste;
158
- $[33] = handleCopy;
159
- $[34] = handlePaste;
160
- $[35] = isRow;
161
- $[36] = pasteClassName;
162
- $[37] = t5;
162
+ $[32] = allowCopy;
163
+ $[33] = allowPaste;
164
+ $[34] = copyClassName;
165
+ $[35] = handleCopy;
166
+ $[36] = handlePaste;
167
+ $[37] = isRow;
168
+ $[38] = pasteClassName;
169
+ $[39] = t5;
163
170
  } else {
164
- t5 = $[37];
171
+ t5 = $[39];
165
172
  }
166
173
  t4 = _jsx(Popup, {
167
174
  button: _jsx(MoreIcon, {}),
168
175
  className: classes,
176
+ disabled,
169
177
  horizontalAlign: "center",
170
178
  render: t5,
171
179
  size: "large",
172
180
  verticalAlign: "bottom"
173
181
  });
174
- $[21] = classes;
175
- $[22] = copyClassName;
176
- $[23] = disableCopy;
177
- $[24] = disablePaste;
178
- $[25] = handleCopy;
179
- $[26] = handlePaste;
180
- $[27] = isRow;
181
- $[28] = pasteClassName;
182
- $[29] = t4;
182
+ $[22] = allowCopy;
183
+ $[23] = allowPaste;
184
+ $[24] = classes;
185
+ $[25] = copyClassName;
186
+ $[26] = disabled;
187
+ $[27] = handleCopy;
188
+ $[28] = handlePaste;
189
+ $[29] = isRow;
190
+ $[30] = pasteClassName;
191
+ $[31] = t4;
183
192
  } else {
184
- t4 = $[29];
193
+ t4 = $[31];
185
194
  }
186
195
  return t4;
187
196
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useCallback","toast","MoreIcon","useTranslation","Popup","PopupList","ClipboardActionLabel","clipboardCopy","clipboardPaste","baseClass","ClipboardAction","t0","$","className","copyClassName","disableCopy","disablePaste","isRow","onPaste","pasteClassName","path","rest","t","t1","filter","Boolean","classes","join","t2","clipboardResult","error","success","handleCopy","t3","clipboardResult_0","type","schemaFields","fields","schemaBlocks","blocks","handlePaste","t4","t5","t6","close","_jsxs","ButtonGroup","children","_jsx","Button","disabled","onClick","isPaste","button","horizontalAlign","render","verticalAlign"],"sources":["../../../src/elements/ClipboardAction/index.tsx"],"sourcesContent":["'use client'\n\nimport type { FormStateWithoutComponents } from 'payload'\n\nimport { type FC, useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport type { ClipboardCopyData, OnPasteFn } from './types.js'\n\nimport { MoreIcon } from '../../icons/More/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport { ClipboardActionLabel } from './ClipboardActionLabel.js'\nimport { clipboardCopy, clipboardPaste } from './clipboardUtilities.js'\n\nconst baseClass = 'clipboard-action'\n\ntype Props = {\n className?: string\n copyClassName?: string\n disableCopy?: boolean\n disablePaste?: boolean\n getDataToCopy: () => FormStateWithoutComponents\n isRow?: boolean\n onPaste: OnPasteFn\n pasteClassName?: string\n} & ClipboardCopyData\n\n/**\n * Menu actions for copying and pasting fields. Currently, this is only used in Arrays and Blocks.\n * @note This component doesn't use the Clipboard API, but localStorage. See rationale in #11513\n */\nexport const ClipboardAction: FC<Props> = ({\n className,\n copyClassName,\n disableCopy,\n disablePaste,\n isRow,\n onPaste,\n pasteClassName,\n path,\n ...rest\n}) => {\n const { t } = useTranslation()\n\n const classes = [`${baseClass}__popup`, className].filter(Boolean).join(' ')\n\n const handleCopy = useCallback(() => {\n const clipboardResult = clipboardCopy({\n path,\n t,\n ...rest,\n })\n\n if (typeof clipboardResult === 'string') {\n toast.error(clipboardResult)\n } else {\n toast.success(t('general:copied'))\n }\n }, [t, rest, path])\n\n const handlePaste = useCallback(() => {\n const clipboardResult = clipboardPaste(\n rest.type === 'array'\n ? {\n onPaste,\n path,\n schemaFields: rest.fields,\n t,\n }\n : {\n onPaste,\n path,\n schemaBlocks: rest.blocks,\n t,\n },\n )\n\n if (typeof clipboardResult === 'string') {\n toast.error(clipboardResult)\n }\n }, [onPaste, rest, path, t])\n\n return (\n <Popup\n button={<MoreIcon />}\n className={classes}\n horizontalAlign=\"center\"\n render={({ close }) => (\n <PopupList.ButtonGroup>\n <PopupList.Button\n className={copyClassName}\n disabled={disableCopy}\n onClick={() => {\n void handleCopy()\n close()\n }}\n >\n <ClipboardActionLabel isRow={isRow} />\n </PopupList.Button>\n <PopupList.Button\n className={pasteClassName}\n disabled={disablePaste}\n onClick={() => {\n void handlePaste()\n close()\n }}\n >\n <ClipboardActionLabel isPaste isRow={isRow} />\n </PopupList.Button>\n </PopupList.ButtonGroup>\n )}\n size=\"large\"\n verticalAlign=\"bottom\"\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useCallback","toast","MoreIcon","useTranslation","Popup","PopupList","ClipboardActionLabel","clipboardCopy","clipboardPaste","baseClass","ClipboardAction","t0","$","allowCopy","allowPaste","className","copyClassName","disabled","isRow","onPaste","pasteClassName","path","rest","t","t1","filter","Boolean","classes","join","t2","clipboardResult","error","success","handleCopy","t3","clipboardResult_0","type","schemaFields","fields","schemaBlocks","blocks","handlePaste","t4","t5","t6","close","_jsxs","ButtonGroup","children","_jsx","Button","onClick","isPaste","button","horizontalAlign","render","verticalAlign"],"sources":["../../../src/elements/ClipboardAction/index.tsx"],"sourcesContent":["'use client'\n\nimport type { FormStateWithoutComponents } from 'payload'\n\nimport { type FC, useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport type { ClipboardCopyData, OnPasteFn } from './types.js'\n\nimport { MoreIcon } from '../../icons/More/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport { ClipboardActionLabel } from './ClipboardActionLabel.js'\nimport { clipboardCopy, clipboardPaste } from './clipboardUtilities.js'\n\nconst baseClass = 'clipboard-action'\n\ntype Props = {\n allowCopy?: boolean\n allowPaste?: boolean\n className?: string\n copyClassName?: string\n disabled?: boolean\n getDataToCopy: () => FormStateWithoutComponents\n isRow?: boolean\n onPaste: OnPasteFn\n pasteClassName?: string\n} & ClipboardCopyData\n\n/**\n * Menu actions for copying and pasting fields. Currently, this is only used in Arrays and Blocks.\n * @note This component doesn't use the Clipboard API, but localStorage. See rationale in #11513\n */\nexport const ClipboardAction: FC<Props> = ({\n allowCopy,\n allowPaste,\n className,\n copyClassName,\n disabled,\n isRow,\n onPaste,\n pasteClassName,\n path,\n ...rest\n}) => {\n const { t } = useTranslation()\n\n const classes = [`${baseClass}__popup`, className].filter(Boolean).join(' ')\n\n const handleCopy = useCallback(() => {\n const clipboardResult = clipboardCopy({\n path,\n t,\n ...rest,\n })\n\n if (typeof clipboardResult === 'string') {\n toast.error(clipboardResult)\n } else {\n toast.success(t('general:copied'))\n }\n }, [t, rest, path])\n\n const handlePaste = useCallback(() => {\n const clipboardResult = clipboardPaste(\n rest.type === 'array'\n ? {\n onPaste,\n path,\n schemaFields: rest.fields,\n t,\n }\n : {\n onPaste,\n path,\n schemaBlocks: rest.blocks,\n t,\n },\n )\n\n if (typeof clipboardResult === 'string') {\n toast.error(clipboardResult)\n }\n }, [onPaste, rest, path, t])\n\n if (!allowPaste && !allowCopy) {\n return null\n }\n\n return (\n <Popup\n button={<MoreIcon />}\n className={classes}\n disabled={disabled}\n horizontalAlign=\"center\"\n render={({ close }) => (\n <PopupList.ButtonGroup>\n <PopupList.Button\n className={copyClassName}\n disabled={!allowCopy}\n onClick={() => {\n void handleCopy()\n close()\n }}\n >\n <ClipboardActionLabel isRow={isRow} />\n </PopupList.Button>\n <PopupList.Button\n className={pasteClassName}\n disabled={!allowPaste}\n onClick={() => {\n void handlePaste()\n close()\n }}\n >\n <ClipboardActionLabel isPaste isRow={isRow} />\n </PopupList.Button>\n </PopupList.ButtonGroup>\n )}\n size=\"large\"\n verticalAlign=\"bottom\"\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}