@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
@@ -2,15 +2,19 @@
2
2
  .step-nav {
3
3
  display: flex;
4
4
  align-items: center;
5
+ min-width: 0;
5
6
  font-family: var(--text-body-medium-font-family);
6
7
  font-size: var(--text-body-medium-font-size);
7
8
  font-weight: var(--text-body-medium-font-weight);
8
9
  line-height: var(--text-body-medium-line-height);
9
10
  letter-spacing: var(--text-body-medium-letter-spacing);
10
11
  color: var(--color-text);
12
+ -webkit-user-select: none;
13
+ user-select: none;
11
14
 
12
15
  &::after {
13
16
  content: ' ';
17
+ flex-shrink: 0;
14
18
  position: sticky;
15
19
  top: 0;
16
20
  right: 0;
@@ -21,6 +25,7 @@
21
25
  a {
22
26
  display: flex;
23
27
  align-items: center;
28
+ min-width: 0;
24
29
  text-decoration: none;
25
30
  border-radius: var(--button-radius);
26
31
 
@@ -28,33 +33,78 @@
28
33
  cursor: pointer;
29
34
  }
30
35
  }
36
+ }
31
37
 
32
- span {
33
- max-width: calc(var(--spacer-6) * 4);
34
- text-overflow: ellipsis;
35
- overflow: hidden;
36
- white-space: nowrap;
38
+ .step-nav__item {
39
+ max-width: calc(var(--spacer-6) * 4);
40
+ text-overflow: ellipsis;
41
+ overflow: hidden;
42
+ white-space: nowrap;
43
+ }
37
44
 
38
- &:has(.dashboard-breadcrumb-dropdown, .dashboard-breadcrumb-dropdown__editing) {
39
- max-width: none;
40
- overflow: visible;
41
- white-space: normal;
42
- }
45
+ .step-nav__item .btn__content {
46
+ min-width: 0;
47
+ }
48
+
49
+ .step-nav__item .btn__label {
50
+ min-width: 0;
51
+ text-overflow: ellipsis;
52
+ overflow: hidden;
53
+ }
54
+
55
+ .step-nav__item:not(.step-nav__last) {
56
+ flex-shrink: 0;
57
+ }
58
+
59
+ .step-nav__last {
60
+ min-width: var(--spacer-5);
61
+ max-width: none;
62
+ color: var(--color-text-secondary);
63
+ }
64
+
65
+ .step-nav__item:has(.dashboard-breadcrumb-dropdown, .dashboard-breadcrumb-dropdown__editing) {
66
+ max-width: none;
67
+ overflow: visible;
68
+ white-space: normal;
69
+ }
70
+
71
+ .step-nav__collapsed {
72
+ flex-shrink: 0;
73
+ }
74
+
75
+ .step-nav__collapsed-toggle {
76
+ padding: 0 var(--spacer-1);
77
+ color: var(--color-text);
78
+ }
79
+
80
+ .step-nav__measurer-clip {
81
+ position: absolute;
82
+ width: 0;
83
+ height: 0;
84
+ overflow: hidden;
85
+ }
86
+
87
+ .step-nav__measurer {
88
+ position: absolute;
89
+ top: 0;
90
+ left: 0;
91
+ display: inline-flex;
92
+ padding-right: var(--spacer-3);
93
+
94
+ .step-nav__item {
95
+ max-width: none;
43
96
  }
44
97
  }
45
98
 
46
99
  .step-nav__separator {
47
100
  color: var(--color-text-tertiary);
48
101
  width: var(--spacer-2);
102
+ flex-shrink: 0;
49
103
  display: flex;
50
104
  align-items: center;
51
105
  justify-content: center;
52
106
  }
53
107
 
54
- .step-nav__last {
55
- color: var(--color-text-secondary);
56
- }
57
-
58
108
  .step-nav__item:not(.btn),
59
109
  .step-nav__item:has(.btn) {
60
110
  margin-left: var(--spacer-2);
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/StepNav/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAEvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAK7C,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,aAAa,CAAA;AAEpB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAI5C,QAAA,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B,CA2EA,CAAA;AAED,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/StepNav/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAgD,MAAM,OAAO,CAAA;AAEpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAM7C,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,aAAa,CAAA;AAEpB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAM5C,QAAA,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B,CA6KA,CAAA;AAED,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,CAAA"}
@@ -1,21 +1,20 @@
1
1
  'use client';
2
2
 
3
- import { c as _c } from "react/compiler-runtime";
4
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
4
  import { getTranslation } from '@payloadcms/translations';
6
- import React, { Fragment } from 'react';
5
+ import React, { Fragment, useEffect, useRef, useState } from 'react';
7
6
  import { useConfig } from '../../providers/Config/index.js';
8
7
  import { useTranslation } from '../../providers/Translation/index.js';
9
8
  import { Button } from '../Button/index.js';
9
+ import { Popup, PopupList } from '../Popup/index.js';
10
10
  import { StepNavProvider, useStepNav } from './context.js';
11
11
  import './index.css';
12
12
  export { SetStepNav } from './SetStepNav.js';
13
13
  const baseClass = 'step-nav';
14
- const StepNav = t0 => {
15
- const $ = _c(11);
16
- const {
17
- className
18
- } = t0;
14
+ const minItemsToCollapse = 4;
15
+ const StepNav = ({
16
+ className
17
+ }) => {
19
18
  const {
20
19
  i18n
21
20
  } = useTranslation();
@@ -23,75 +22,150 @@ const StepNav = t0 => {
23
22
  stepNav
24
23
  } = useStepNav();
25
24
  const {
26
- config: t1
25
+ config: {
26
+ routes: {
27
+ admin
28
+ }
29
+ }
27
30
  } = useConfig();
28
- const {
29
- routes: t2
30
- } = t1;
31
- const {
32
- admin
33
- } = t2;
34
31
  const {
35
32
  t
36
33
  } = useTranslation();
34
+ const navRef = useRef(null);
35
+ const measurerRef = useRef(null);
36
+ const [isCollapsed, setIsCollapsed] = useState(false);
37
+ // Check if first item is a dashboard dropdown (React element with no URL)
38
+ // In that case, it replaces the home element entirely
37
39
  const firstItem = stepNav[0];
38
- let t3;
39
- if ($[0] !== firstItem) {
40
- t3 = firstItem && !firstItem.url && typeof firstItem.label !== "string" && React.isValidElement(firstItem.label);
41
- $[0] = firstItem;
42
- $[1] = t3;
43
- } else {
44
- t3 = $[1];
45
- }
46
- const hasDashboardDropdown = t3;
47
- let t4;
48
- if ($[2] !== admin || $[3] !== className || $[4] !== hasDashboardDropdown || $[5] !== i18n || $[6] !== stepNav || $[7] !== t) {
49
- const stepNavItems = hasDashboardDropdown ? stepNav : [{
50
- label: t("general:dashboard"),
51
- url: admin
52
- }, ...stepNav];
53
- let t5;
54
- if ($[9] !== className) {
55
- t5 = [baseClass, className].filter(Boolean);
56
- $[9] = className;
57
- $[10] = t5;
58
- } else {
59
- t5 = $[10];
40
+ const hasDashboardDropdown = firstItem && !firstItem.url && typeof firstItem.label !== 'string' && /*#__PURE__*/React.isValidElement(firstItem.label);
41
+ const stepNavItems = hasDashboardDropdown ? stepNav : [{
42
+ label: t('general:dashboard'),
43
+ url: admin
44
+ }, ...stepNav];
45
+ const canCollapse = !hasDashboardDropdown && stepNavItems.length >= minItemsToCollapse;
46
+ // Collapse only when the expanded breadcrumbs (measured via the hidden
47
+ // measurer) can't fit the available width.
48
+ useEffect(() => {
49
+ if (!canCollapse) {
50
+ setIsCollapsed(false);
51
+ return;
60
52
  }
61
- t4 = _jsx("nav", {
62
- className: t5.join(" "),
63
- children: stepNavItems.map((item, i) => {
64
- const StepLabel = getTranslation(item.label, i18n);
65
- const isLast = stepNavItems.length === i + 1;
66
- const isFirst = i === 0;
67
- return _jsxs(Fragment, {
68
- children: [item.url ? _jsx(Button, {
69
- buttonStyle: "ghost",
70
- className: [`${baseClass}__item`, isLast ? `${baseClass}__last` : undefined, isFirst ? `${baseClass}__first` : undefined].filter(Boolean).join(" "),
71
- el: "link",
72
- url: item.url,
73
- children: StepLabel
74
- }) : _jsx("span", {
75
- className: [`${baseClass}__item`, isLast ? `${baseClass}__last` : undefined, isFirst ? `${baseClass}__first` : undefined].filter(Boolean).join(" "),
76
- children: StepLabel
77
- }), !isLast && _jsx("span", {
78
- className: `${baseClass}__separator`,
79
- children: "/"
80
- })]
81
- }, i);
82
- })
53
+ const nav = navRef.current;
54
+ const measurer = measurerRef.current;
55
+ const container = nav?.parentElement;
56
+ if (!nav || !measurer || !container) {
57
+ return;
58
+ }
59
+ const measure = () => {
60
+ const available = container.clientWidth;
61
+ const needed = measurer.getBoundingClientRect().width;
62
+ setIsCollapsed(needed - available > 1);
63
+ };
64
+ measure();
65
+ const observer = new ResizeObserver(measure);
66
+ observer.observe(container);
67
+ // A web font finishing loading can change the measured width without the
68
+ // container resizing, so the ResizeObserver alone won't catch it.
69
+ let isEffectActive = true;
70
+ void document.fonts?.ready.then(() => {
71
+ if (isEffectActive) {
72
+ measure();
73
+ }
74
+ });
75
+ return () => {
76
+ isEffectActive = false;
77
+ observer.disconnect();
78
+ };
79
+ }, [canCollapse, stepNav, i18n, admin, t]);
80
+ const renderItem = (item, {
81
+ isFirst,
82
+ isLast
83
+ }) => {
84
+ const StepLabel = getTranslation(item.label, i18n);
85
+ const itemClassName = [`${baseClass}__item`, isLast ? `${baseClass}__last` : undefined, isFirst ? `${baseClass}__first` : undefined].filter(Boolean).join(' ');
86
+ if (item.url) {
87
+ return /*#__PURE__*/_jsx(Button, {
88
+ buttonStyle: "ghost",
89
+ className: itemClassName,
90
+ el: "link",
91
+ url: item.url,
92
+ children: StepLabel
93
+ });
94
+ }
95
+ return /*#__PURE__*/_jsx("span", {
96
+ className: itemClassName,
97
+ children: StepLabel
83
98
  });
84
- $[2] = admin;
85
- $[3] = className;
86
- $[4] = hasDashboardDropdown;
87
- $[5] = i18n;
88
- $[6] = stepNav;
89
- $[7] = t;
90
- $[8] = t4;
91
- } else {
92
- t4 = $[8];
93
- }
94
- return t4;
99
+ };
100
+ const separator = /*#__PURE__*/_jsx("span", {
101
+ className: `${baseClass}__separator`,
102
+ children: "/"
103
+ });
104
+ const shouldCollapse = canCollapse && isCollapsed;
105
+ const collapsedItems = shouldCollapse ? stepNavItems.slice(1, -1) : [];
106
+ const lastItem = stepNavItems[stepNavItems.length - 1];
107
+ return /*#__PURE__*/_jsxs(Fragment, {
108
+ children: [/*#__PURE__*/_jsx("nav", {
109
+ className: [baseClass, className].filter(Boolean).join(' '),
110
+ ref: navRef,
111
+ children: shouldCollapse ? /*#__PURE__*/_jsxs(Fragment, {
112
+ children: [renderItem(stepNavItems[0], {
113
+ isFirst: true,
114
+ isLast: false
115
+ }), separator, /*#__PURE__*/_jsx(Popup, {
116
+ button: "…",
117
+ buttonAriaLabel: t('general:moreOptions'),
118
+ buttonClassName: `${baseClass}__collapsed-toggle`,
119
+ buttonType: "custom",
120
+ className: `${baseClass}__collapsed`,
121
+ horizontalAlign: "left",
122
+ noBackground: true,
123
+ render: ({
124
+ close
125
+ }) => /*#__PURE__*/_jsx(PopupList.ButtonGroup, {
126
+ className: `${baseClass}__collapsed-list`,
127
+ children: collapsedItems.map((item_0, i) => /*#__PURE__*/_jsx(PopupList.Button, {
128
+ href: item_0.url,
129
+ onClick: close,
130
+ children: getTranslation(item_0.label, i18n)
131
+ }, i))
132
+ }),
133
+ size: "fit-content",
134
+ verticalAlign: "bottom"
135
+ }), separator, renderItem(lastItem, {
136
+ isFirst: false,
137
+ isLast: true
138
+ })]
139
+ }) : stepNavItems.map((item_1, i_0) => {
140
+ const isLast_0 = stepNavItems.length === i_0 + 1;
141
+ const isFirst_0 = i_0 === 0;
142
+ return /*#__PURE__*/_jsxs(Fragment, {
143
+ children: [renderItem(item_1, {
144
+ isFirst: isFirst_0,
145
+ isLast: isLast_0
146
+ }), !isLast_0 && separator]
147
+ }, i_0);
148
+ })
149
+ }), canCollapse ? /*#__PURE__*/_jsx("span", {
150
+ "aria-hidden": "true",
151
+ className: `${baseClass}__measurer-clip`,
152
+ inert: true,
153
+ children: /*#__PURE__*/_jsx("div", {
154
+ className: `${baseClass}__measurer`,
155
+ ref: measurerRef,
156
+ children: stepNavItems.map((item_2, i_1) => {
157
+ const isLast_1 = stepNavItems.length === i_1 + 1;
158
+ const isFirst_1 = i_1 === 0;
159
+ return /*#__PURE__*/_jsxs(Fragment, {
160
+ children: [renderItem(item_2, {
161
+ isFirst: isFirst_1,
162
+ isLast: isLast_1
163
+ }), !isLast_1 && separator]
164
+ }, i_1);
165
+ })
166
+ })
167
+ }) : null]
168
+ });
95
169
  };
96
170
  export { StepNav, StepNavProvider, useStepNav };
97
171
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","getTranslation","React","Fragment","useConfig","useTranslation","Button","StepNavProvider","useStepNav","SetStepNav","baseClass","StepNav","t0","$","className","i18n","stepNav","config","t1","routes","t2","admin","t","firstItem","t3","url","label","isValidElement","hasDashboardDropdown","t4","stepNavItems","t5","filter","Boolean","_jsx","join","children","map","item","i","StepLabel","isLast","length","isFirst","_jsxs","buttonStyle","undefined","el"],"sources":["../../../src/elements/StepNav/index.tsx"],"sourcesContent":["'use client'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment } from 'react'\n\nimport type { StepNavItem } from './types.js'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { StepNavProvider, useStepNav } from './context.js'\nimport './index.css'\n\nexport { SetStepNav } from './SetStepNav.js'\n\nconst baseClass = 'step-nav'\n\nconst StepNav: React.FC<{\n readonly className?: string\n}> = ({ className }) => {\n const { i18n } = useTranslation()\n\n const { stepNav } = useStepNav()\n\n const {\n config: {\n routes: { admin },\n },\n } = useConfig()\n\n const { t } = useTranslation()\n\n // Check if first item is a dashboard dropdown (React element with no URL)\n // In that case, it replaces the home element entirely\n const firstItem = stepNav[0]\n const hasDashboardDropdown =\n firstItem &&\n !firstItem.url &&\n typeof firstItem.label !== 'string' &&\n React.isValidElement(firstItem.label)\n\n const stepNavItems = hasDashboardDropdown\n ? stepNav\n : [\n {\n label: t('general:dashboard'),\n url: admin,\n },\n ...stepNav,\n ]\n\n return (\n <nav className={[baseClass, className].filter(Boolean).join(' ')}>\n {stepNavItems.map((item, i) => {\n const StepLabel = getTranslation(item.label, i18n)\n const isLast = stepNavItems.length === i + 1\n const isFirst = i === 0\n\n return (\n <Fragment key={i}>\n {item.url ? (\n <Button\n buttonStyle=\"ghost\"\n className={[\n `${baseClass}__item`,\n isLast ? `${baseClass}__last` : undefined,\n isFirst ? `${baseClass}__first` : undefined,\n ]\n .filter(Boolean)\n .join(' ')}\n el=\"link\"\n url={item.url}\n >\n {StepLabel}\n </Button>\n ) : (\n <span\n className={[\n `${baseClass}__item`,\n isLast ? `${baseClass}__last` : undefined,\n isFirst ? `${baseClass}__first` : undefined,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n {StepLabel}\n </span>\n )}\n {!isLast && <span className={`${baseClass}__separator`}>/</span>}\n </Fragment>\n )\n })}\n </nav>\n )\n}\n\nexport { StepNav, StepNavItem, StepNavProvider, useStepNav }\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["getTranslation","React","Fragment","useEffect","useRef","useState","useConfig","useTranslation","Button","Popup","PopupList","StepNavProvider","useStepNav","SetStepNav","baseClass","minItemsToCollapse","StepNav","className","i18n","stepNav","config","routes","admin","t","navRef","measurerRef","isCollapsed","setIsCollapsed","firstItem","hasDashboardDropdown","url","label","isValidElement","stepNavItems","canCollapse","length","nav","current","measurer","container","parentElement","measure","available","clientWidth","needed","getBoundingClientRect","width","observer","ResizeObserver","observe","isEffectActive","document","fonts","ready","then","disconnect","renderItem","item","isFirst","isLast","StepLabel","itemClassName","undefined","filter","Boolean","join","_jsx","buttonStyle","el","separator","shouldCollapse","collapsedItems","slice","lastItem","_jsxs","ref","button","buttonAriaLabel","buttonClassName","buttonType","horizontalAlign","noBackground","render","close","ButtonGroup","map","i","href","onClick","size","verticalAlign","inert"],"sources":["../../../src/elements/StepNav/index.tsx"],"sourcesContent":["'use client'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useEffect, useRef, useState } from 'react'\n\nimport type { StepNavItem } from './types.js'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport { StepNavProvider, useStepNav } from './context.js'\nimport './index.css'\n\nexport { SetStepNav } from './SetStepNav.js'\n\nconst baseClass = 'step-nav'\n\nconst minItemsToCollapse = 4\n\nconst StepNav: React.FC<{\n readonly className?: string\n}> = ({ className }) => {\n const { i18n } = useTranslation()\n\n const { stepNav } = useStepNav()\n\n const {\n config: {\n routes: { admin },\n },\n } = useConfig()\n\n const { t } = useTranslation()\n\n const navRef = useRef<HTMLElement>(null)\n const measurerRef = useRef<HTMLDivElement>(null)\n const [isCollapsed, setIsCollapsed] = useState(false)\n\n // Check if first item is a dashboard dropdown (React element with no URL)\n // In that case, it replaces the home element entirely\n const firstItem = stepNav[0]\n const hasDashboardDropdown =\n firstItem &&\n !firstItem.url &&\n typeof firstItem.label !== 'string' &&\n React.isValidElement(firstItem.label)\n\n const stepNavItems = hasDashboardDropdown\n ? stepNav\n : [\n {\n label: t('general:dashboard'),\n url: admin,\n },\n ...stepNav,\n ]\n\n const canCollapse = !hasDashboardDropdown && stepNavItems.length >= minItemsToCollapse\n\n // Collapse only when the expanded breadcrumbs (measured via the hidden\n // measurer) can't fit the available width.\n useEffect(() => {\n if (!canCollapse) {\n setIsCollapsed(false)\n return\n }\n\n const nav = navRef.current\n const measurer = measurerRef.current\n const container = nav?.parentElement\n\n if (!nav || !measurer || !container) {\n return\n }\n\n const measure = () => {\n const available = container.clientWidth\n const needed = measurer.getBoundingClientRect().width\n setIsCollapsed(needed - available > 1)\n }\n\n measure()\n\n const observer = new ResizeObserver(measure)\n observer.observe(container)\n\n // A web font finishing loading can change the measured width without the\n // container resizing, so the ResizeObserver alone won't catch it.\n let isEffectActive = true\n void document.fonts?.ready.then(() => {\n if (isEffectActive) {\n measure()\n }\n })\n\n return () => {\n isEffectActive = false\n observer.disconnect()\n }\n }, [canCollapse, stepNav, i18n, admin, t])\n\n const renderItem = (\n item: StepNavItem,\n { isFirst, isLast }: { isFirst: boolean; isLast: boolean },\n ) => {\n const StepLabel = getTranslation(item.label, i18n)\n const itemClassName = [\n `${baseClass}__item`,\n isLast ? `${baseClass}__last` : undefined,\n isFirst ? `${baseClass}__first` : undefined,\n ]\n .filter(Boolean)\n .join(' ')\n\n if (item.url) {\n return (\n <Button buttonStyle=\"ghost\" className={itemClassName} el=\"link\" url={item.url}>\n {StepLabel}\n </Button>\n )\n }\n\n return <span className={itemClassName}>{StepLabel}</span>\n }\n\n const separator = <span className={`${baseClass}__separator`}>/</span>\n\n const shouldCollapse = canCollapse && isCollapsed\n const collapsedItems = shouldCollapse ? stepNavItems.slice(1, -1) : []\n const lastItem = stepNavItems[stepNavItems.length - 1]\n\n return (\n <Fragment>\n <nav className={[baseClass, className].filter(Boolean).join(' ')} ref={navRef}>\n {shouldCollapse ? (\n <Fragment>\n {renderItem(stepNavItems[0], { isFirst: true, isLast: false })}\n {separator}\n <Popup\n button=\"…\"\n buttonAriaLabel={t('general:moreOptions')}\n buttonClassName={`${baseClass}__collapsed-toggle`}\n buttonType=\"custom\"\n className={`${baseClass}__collapsed`}\n horizontalAlign=\"left\"\n noBackground\n render={({ close }) => (\n <PopupList.ButtonGroup className={`${baseClass}__collapsed-list`}>\n {collapsedItems.map((item, i) => (\n <PopupList.Button href={item.url} key={i} onClick={close}>\n {getTranslation(item.label, i18n)}\n </PopupList.Button>\n ))}\n </PopupList.ButtonGroup>\n )}\n size=\"fit-content\"\n verticalAlign=\"bottom\"\n />\n {separator}\n {renderItem(lastItem, { isFirst: false, isLast: true })}\n </Fragment>\n ) : (\n stepNavItems.map((item, i) => {\n const isLast = stepNavItems.length === i + 1\n const isFirst = i === 0\n\n return (\n <Fragment key={i}>\n {renderItem(item, { isFirst, isLast })}\n {!isLast && separator}\n </Fragment>\n )\n })\n )}\n </nav>\n {canCollapse ? (\n <span aria-hidden=\"true\" className={`${baseClass}__measurer-clip`} inert>\n <div className={`${baseClass}__measurer`} ref={measurerRef}>\n {stepNavItems.map((item, i) => {\n const isLast = stepNavItems.length === i + 1\n const isFirst = i === 0\n\n return (\n <Fragment key={i}>\n {renderItem(item, { isFirst, isLast })}\n {!isLast && separator}\n </Fragment>\n )\n })}\n </div>\n </span>\n ) : null}\n </Fragment>\n )\n}\n\nexport { StepNav, StepNavItem, StepNavProvider, useStepNav }\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Table/DefaultCell/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAqB,MAAM,SAAS,CAAA;AAI3E,OAAO,KAAK,MAAM,OAAO,CAAA;AAYzB,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAwL3D,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Table/DefaultCell/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAqB,MAAM,SAAS,CAAA;AAI3E,OAAO,KAAK,MAAM,OAAO,CAAA;AAYzB,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CA8K3D,CAAA"}
@@ -9,8 +9,8 @@ import { useConfig } from '../../../providers/Config/index.js';
9
9
  import { useTranslation } from '../../../providers/Translation/index.js';
10
10
  import { getDisplayedFieldValue } from '../../../utilities/getDisplayedFieldValue.js';
11
11
  import { isValidReactElement } from '../../../utilities/isValidReactElement.js';
12
+ import { IDLabel } from '../../IDLabel/index.js';
12
13
  import { Link } from '../../Link/index.js';
13
- import { CodeCell } from './fields/Code/index.js';
14
14
  import { HierarchyCell } from './fields/Hierarchy/index.js';
15
15
  import { cellComponents } from './fields/index.js';
16
16
  import { StatusCell } from './fields/Status/index.js';
@@ -85,16 +85,8 @@ export const DefaultCell = props => {
85
85
  if (fieldIsID(field)) {
86
86
  t4 = _jsx(WrapElement, {
87
87
  ...wrapElementProps,
88
- children: _jsx(CodeCell, {
89
- cellData: `ID: ${cellData}`,
90
- collectionConfig,
91
- collectionSlug,
92
- field: {
93
- ...field,
94
- type: "code"
95
- },
96
- nowrap: true,
97
- rowData
88
+ children: _jsx(IDLabel, {
89
+ id: cellData
98
90
  })
99
91
  });
100
92
  break bb0;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","getTranslation","fieldAffectsData","fieldIsID","formatAdminURL","React","useConfig","useTranslation","getDisplayedFieldValue","isValidReactElement","Link","CodeCell","HierarchyCell","cellComponents","StatusCell","DefaultCell","props","$","cellData","className","classNameFromProps","collectionSlug","field","t0","link","linkURL","onClick","onClickFromProps","rowData","viewType","admin","i18n","config","t1","getEntityConfig","routes","t2","adminRoute","t3","t4","Symbol","for","collectionConfig","classNameFromConfigContext","undefined","WrapElement","wrapElementProps","prefetch","href","slug","path","encodeURIComponent","id","type","_jsx","children","nowrap","displayedValue","isHierarchyField","relationTo","relatedCollection","Boolean","hierarchy","name","DefaultCellComponent","CellComponent","upload","FileCellComponent","File","_jsxs","t","label","JSON","stringify","options","length","classes","Array","isArray","map","_temp","join","className_0","filter","value"],"sources":["../../../../src/elements/Table/DefaultCell/index.tsx"],"sourcesContent":["'use client'\nimport type { DefaultCellComponentProps, UploadFieldClient } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { fieldAffectsData, fieldIsID, formatAdminURL } from 'payload/shared'\nimport React from 'react' // TODO: abstract this out to support all routers\n\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { getDisplayedFieldValue } from '../../../utilities/getDisplayedFieldValue.js'\nimport { isValidReactElement } from '../../../utilities/isValidReactElement.js'\nimport { Link } from '../../Link/index.js'\nimport { CodeCell } from './fields/Code/index.js'\nimport { HierarchyCell } from './fields/Hierarchy/index.js'\nimport { cellComponents } from './fields/index.js'\nimport { StatusCell } from './fields/Status/index.js'\n\nexport const DefaultCell: React.FC<DefaultCellComponentProps> = (props) => {\n const {\n cellData,\n className: classNameFromProps,\n collectionSlug,\n field,\n field: { admin },\n link,\n linkURL,\n onClick: onClickFromProps,\n rowData,\n viewType,\n } = props\n\n const { i18n } = useTranslation()\n\n const {\n config: {\n routes: { admin: adminRoute },\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n\n const classNameFromConfigContext = admin && 'className' in admin ? admin.className : undefined\n\n const className =\n classNameFromProps ||\n (field.admin && 'className' in field.admin ? field.admin.className : null) ||\n classNameFromConfigContext\n\n const onClick = onClickFromProps\n\n let WrapElement: React.ComponentType<any> | string = 'span'\n\n const wrapElementProps: {\n className?: string\n href?: string\n onClick?: () => void\n prefetch?: false\n type?: 'button'\n } = {\n className,\n }\n\n if (link) {\n wrapElementProps.prefetch = false\n WrapElement = Link\n\n // Use custom linkURL if provided, otherwise use default URL generation\n if (linkURL) {\n wrapElementProps.href = linkURL\n } else {\n wrapElementProps.href = collectionConfig?.slug\n ? formatAdminURL({\n adminRoute,\n path: `/collections/${collectionConfig?.slug}${viewType === 'trash' ? '/trash' : ''}/${encodeURIComponent(rowData.id)}`,\n })\n : ''\n }\n }\n\n if (typeof onClick === 'function') {\n WrapElement = 'button'\n wrapElementProps.type = 'button'\n wrapElementProps.onClick = () => {\n onClick({\n cellData,\n collectionSlug: collectionConfig?.slug,\n rowData,\n })\n }\n }\n\n if (fieldIsID(field)) {\n return (\n <WrapElement {...wrapElementProps}>\n <CodeCell\n cellData={`ID: ${cellData}`}\n collectionConfig={collectionConfig}\n collectionSlug={collectionSlug}\n field={{\n ...field,\n type: 'code',\n }}\n nowrap\n rowData={rowData}\n />\n </WrapElement>\n )\n }\n\n const displayedValue = getDisplayedFieldValue(cellData, field, i18n)\n\n // Check if this is a hierarchy relationship field by checking if the related collection has hierarchy config\n const isHierarchyField =\n field.type === 'relationship' &&\n (() => {\n const relationTo = 'relationTo' in field ? field.relationTo : undefined\n if (typeof relationTo !== 'string') {\n return false\n }\n const relatedCollection = getEntityConfig({ collectionSlug: relationTo })\n return Boolean(relatedCollection?.hierarchy)\n })()\n\n // For hierarchy fields, render the HierarchyCell directly (no wrapper needed)\n if (isHierarchyField && field.type === 'relationship') {\n return <HierarchyCell cellData={cellData} rowData={rowData} {...props} field={field} />\n }\n\n // For status fields, render the StatusCell directly\n if (field.type === 'select' && 'name' in field && field.name === '_status') {\n return (\n <WrapElement {...wrapElementProps}>\n <StatusCell cellData={cellData} rowData={rowData} {...props} field={field} />\n </WrapElement>\n )\n }\n\n const DefaultCellComponent: React.FC<DefaultCellComponentProps> =\n typeof cellData !== 'undefined' && cellComponents[field.type]\n\n let CellComponent: React.ReactNode = null\n\n // Handle JSX labels before using DefaultCellComponent\n if (isValidReactElement(displayedValue)) {\n CellComponent = displayedValue\n } else if (DefaultCellComponent) {\n CellComponent = <DefaultCellComponent cellData={cellData} rowData={rowData} {...props} />\n } else if (!DefaultCellComponent) {\n // DefaultCellComponent does not exist for certain field types like `text`\n if (\n collectionConfig?.upload &&\n fieldAffectsData(field) &&\n field.name === 'filename' &&\n field.type === 'text'\n ) {\n const FileCellComponent = cellComponents.File\n\n CellComponent = (\n <FileCellComponent\n cellData={cellData}\n rowData={rowData}\n {...(props as DefaultCellComponentProps<UploadFieldClient>)}\n collectionConfig={collectionConfig}\n field={field}\n />\n )\n } else {\n return (\n <WrapElement {...wrapElementProps}>\n {(displayedValue === '' ||\n typeof displayedValue === 'undefined' ||\n displayedValue === null) &&\n i18n.t('general:noLabel', {\n label: getTranslation(('label' in field ? field.label : null) || 'data', i18n),\n })}\n {typeof displayedValue === 'string' && displayedValue}\n {typeof displayedValue === 'number' && displayedValue}\n {typeof displayedValue === 'object' &&\n displayedValue !== null &&\n JSON.stringify(displayedValue)}\n </WrapElement>\n )\n }\n }\n\n if ((field.type === 'select' || field.type === 'radio') && field.options.length && cellData) {\n const classes = Array.isArray(cellData)\n ? cellData.map((value) => `selected--${value}`).join(' ')\n : `selected--${cellData}`\n\n const className = [wrapElementProps.className, classes].filter(Boolean).join(' ')\n\n return (\n <WrapElement {...wrapElementProps} className={className}>\n {CellComponent}\n </WrapElement>\n )\n }\n\n return <WrapElement {...wrapElementProps}>{CellComponent}</WrapElement>\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","getTranslation","fieldAffectsData","fieldIsID","formatAdminURL","React","useConfig","useTranslation","getDisplayedFieldValue","isValidReactElement","IDLabel","Link","HierarchyCell","cellComponents","StatusCell","DefaultCell","props","$","cellData","className","classNameFromProps","collectionSlug","field","t0","link","linkURL","onClick","onClickFromProps","rowData","viewType","admin","i18n","config","t1","getEntityConfig","routes","t2","adminRoute","t3","t4","Symbol","for","collectionConfig","classNameFromConfigContext","undefined","WrapElement","wrapElementProps","prefetch","href","slug","path","encodeURIComponent","id","type","_jsx","children","displayedValue","isHierarchyField","relationTo","relatedCollection","Boolean","hierarchy","name","DefaultCellComponent","CellComponent","upload","FileCellComponent","File","_jsxs","t","label","JSON","stringify","options","length","classes","Array","isArray","map","_temp","join","className_0","filter","value"],"sources":["../../../../src/elements/Table/DefaultCell/index.tsx"],"sourcesContent":["'use client'\nimport type { DefaultCellComponentProps, UploadFieldClient } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { fieldAffectsData, fieldIsID, formatAdminURL } from 'payload/shared'\nimport React from 'react' // TODO: abstract this out to support all routers\n\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { getDisplayedFieldValue } from '../../../utilities/getDisplayedFieldValue.js'\nimport { isValidReactElement } from '../../../utilities/isValidReactElement.js'\nimport { IDLabel } from '../../IDLabel/index.js'\nimport { Link } from '../../Link/index.js'\nimport { HierarchyCell } from './fields/Hierarchy/index.js'\nimport { cellComponents } from './fields/index.js'\nimport { StatusCell } from './fields/Status/index.js'\n\nexport const DefaultCell: React.FC<DefaultCellComponentProps> = (props) => {\n const {\n cellData,\n className: classNameFromProps,\n collectionSlug,\n field,\n field: { admin },\n link,\n linkURL,\n onClick: onClickFromProps,\n rowData,\n viewType,\n } = props\n\n const { i18n } = useTranslation()\n\n const {\n config: {\n routes: { admin: adminRoute },\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n\n const classNameFromConfigContext = admin && 'className' in admin ? admin.className : undefined\n\n const className =\n classNameFromProps ||\n (field.admin && 'className' in field.admin ? field.admin.className : null) ||\n classNameFromConfigContext\n\n const onClick = onClickFromProps\n\n let WrapElement: React.ComponentType<any> | string = 'span'\n\n const wrapElementProps: {\n className?: string\n href?: string\n onClick?: () => void\n prefetch?: false\n type?: 'button'\n } = {\n className,\n }\n\n if (link) {\n wrapElementProps.prefetch = false\n WrapElement = Link\n\n // Use custom linkURL if provided, otherwise use default URL generation\n if (linkURL) {\n wrapElementProps.href = linkURL\n } else {\n wrapElementProps.href = collectionConfig?.slug\n ? formatAdminURL({\n adminRoute,\n path: `/collections/${collectionConfig?.slug}${viewType === 'trash' ? '/trash' : ''}/${encodeURIComponent(rowData.id)}`,\n })\n : ''\n }\n }\n\n if (typeof onClick === 'function') {\n WrapElement = 'button'\n wrapElementProps.type = 'button'\n wrapElementProps.onClick = () => {\n onClick({\n cellData,\n collectionSlug: collectionConfig?.slug,\n rowData,\n })\n }\n }\n\n if (fieldIsID(field)) {\n return (\n <WrapElement {...wrapElementProps}>\n <IDLabel id={cellData} />\n </WrapElement>\n )\n }\n\n const displayedValue = getDisplayedFieldValue(cellData, field, i18n)\n\n // Check if this is a hierarchy relationship field by checking if the related collection has hierarchy config\n const isHierarchyField =\n field.type === 'relationship' &&\n (() => {\n const relationTo = 'relationTo' in field ? field.relationTo : undefined\n if (typeof relationTo !== 'string') {\n return false\n }\n const relatedCollection = getEntityConfig({ collectionSlug: relationTo })\n return Boolean(relatedCollection?.hierarchy)\n })()\n\n // For hierarchy fields, render the HierarchyCell directly (no wrapper needed)\n if (isHierarchyField && field.type === 'relationship') {\n return <HierarchyCell cellData={cellData} rowData={rowData} {...props} field={field} />\n }\n\n // For status fields, render the StatusCell directly\n if (field.type === 'select' && 'name' in field && field.name === '_status') {\n return (\n <WrapElement {...wrapElementProps}>\n <StatusCell cellData={cellData} rowData={rowData} {...props} field={field} />\n </WrapElement>\n )\n }\n\n const DefaultCellComponent: React.FC<DefaultCellComponentProps> =\n typeof cellData !== 'undefined' && cellComponents[field.type]\n\n let CellComponent: React.ReactNode = null\n\n // Handle JSX labels before using DefaultCellComponent\n if (isValidReactElement(displayedValue)) {\n CellComponent = displayedValue\n } else if (DefaultCellComponent) {\n CellComponent = <DefaultCellComponent cellData={cellData} rowData={rowData} {...props} />\n } else if (!DefaultCellComponent) {\n // DefaultCellComponent does not exist for certain field types like `text`\n if (\n collectionConfig?.upload &&\n fieldAffectsData(field) &&\n field.name === 'filename' &&\n field.type === 'text'\n ) {\n const FileCellComponent = cellComponents.File\n\n CellComponent = (\n <FileCellComponent\n cellData={cellData}\n rowData={rowData}\n {...(props as DefaultCellComponentProps<UploadFieldClient>)}\n collectionConfig={collectionConfig}\n field={field}\n />\n )\n } else {\n return (\n <WrapElement {...wrapElementProps}>\n {(displayedValue === '' ||\n typeof displayedValue === 'undefined' ||\n displayedValue === null) &&\n i18n.t('general:noLabel', {\n label: getTranslation(('label' in field ? field.label : null) || 'data', i18n),\n })}\n {typeof displayedValue === 'string' && displayedValue}\n {typeof displayedValue === 'number' && displayedValue}\n {typeof displayedValue === 'object' &&\n displayedValue !== null &&\n JSON.stringify(displayedValue)}\n </WrapElement>\n )\n }\n }\n\n if ((field.type === 'select' || field.type === 'radio') && field.options.length && cellData) {\n const classes = Array.isArray(cellData)\n ? cellData.map((value) => `selected--${value}`).join(' ')\n : `selected--${cellData}`\n\n const className = [wrapElementProps.className, classes].filter(Boolean).join(' ')\n\n return (\n <WrapElement {...wrapElementProps} className={className}>\n {CellComponent}\n </WrapElement>\n )\n }\n\n return <WrapElement {...wrapElementProps}>{CellComponent}</WrapElement>\n}\n"],"mappings":"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","ignoreList":[]}
@@ -16,6 +16,7 @@ type ArrayRowProps = {
16
16
  readonly moveRow: (fromIndex: number, toIndex: number) => void;
17
17
  readonly parentPath: string;
18
18
  readonly pasteRow: (rowIndex: number) => void;
19
+ readonly pasteRowBelow: (rowIndex: number) => void;
19
20
  readonly path: string;
20
21
  readonly permissions: SanitizedFieldPermissions;
21
22
  readonly readOnly?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"ArrayRow.d.ts","sourceRoot":"","sources":["../../../src/fields/Array/ArrayRow.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EACV,oBAAoB,EACpB,WAAW,EACX,GAAG,EACH,yBAAyB,EAC1B,MAAM,SAAS,CAAA;AAGhB,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,gEAAgE,CAAA;AAWhH,OAAO,aAAa,CAAA;AAIpB,KAAK,aAAa,GAAG;IACnB,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC3D,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,QAAQ,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzC,QAAQ,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACjD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,CAAA;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC9C,QAAQ,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,yBAAyB,CAAA;IAC/C,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9C,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAA;IACjB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAA;CAClE,GAAG,IAAI,CAAC,oBAAoB,EAAE,aAAa,CAAC,GAC3C,0BAA0B,CAAA;AAE5B,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAiI5C,CAAA"}
1
+ {"version":3,"file":"ArrayRow.d.ts","sourceRoot":"","sources":["../../../src/fields/Array/ArrayRow.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EACV,oBAAoB,EACpB,WAAW,EACX,GAAG,EACH,yBAAyB,EAC1B,MAAM,SAAS,CAAA;AAGhB,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,gEAAgE,CAAA;AAWhH,OAAO,aAAa,CAAA;AAIpB,KAAK,aAAa,GAAG;IACnB,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC3D,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,QAAQ,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzC,QAAQ,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACjD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,CAAA;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC9C,QAAQ,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7C,QAAQ,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAClD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,yBAAyB,CAAA;IAC/C,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9C,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAA;IACjB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAA;CAClE,GAAG,IAAI,CAAC,oBAAoB,EAAE,aAAa,CAAC,GAC3C,0BAA0B,CAAA;AAE5B,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAmI5C,CAAA"}
@@ -32,6 +32,7 @@ export const ArrayRow = ({
32
32
  moveRow,
33
33
  parentPath,
34
34
  pasteRow,
35
+ pasteRowBelow,
35
36
  path,
36
37
  permissions,
37
38
  readOnly,
@@ -77,6 +78,7 @@ export const ArrayRow = ({
77
78
  moveRow: moveRow,
78
79
  pasteData: pasteData,
79
80
  pasteRow: pasteRow,
81
+ pasteRowBelow: pasteRowBelow,
80
82
  removeRow: removeRow,
81
83
  rowCount: rowCount
82
84
  }) : undefined,
@@ -1 +1 @@
1
- {"version":3,"file":"ArrayRow.js","names":["getTranslation","React","ArrayAction","Collapsible","ErrorPill","ShimmerEffect","useFormSubmitted","RenderFields","RowLabel","useThrottledValue","useTranslation","baseClass","ArrayRow","addRow","attributes","copyRow","CustomRowLabel","duplicateRow","errorCount","fields","forceRender","hasMaxRows","isDragging","isLoading","isLoadingFromProps","isSortable","labels","listeners","moveRow","parentPath","pasteRow","path","permissions","readOnly","removeRow","row","rowCount","rowIndex","schemaPath","scrollIdPrefix","setCollapse","setNodeRef","transform","transition","i18n","hasSubmitted","pasteData","useMemo","schemaFields","fallbackLabel","singular","String","padStart","fieldHasErrors","classNames","filter","Boolean","join","_jsx","id","split","ref","style","zIndex","undefined","actions","index","className","collapsibleStyle","dragHandleProps","header","_jsxs","height","width","CustomComponent","label","rowNumber","count","withMessage","isCollapsed","collapsed","onToggle","parentIndexPath","parentSchemaPath"],"sources":["../../../src/fields/Array/ArrayRow.tsx"],"sourcesContent":["'use client'\nimport type {\n ArrayField,\n ClientComponentProps,\n ClientField,\n Row,\n SanitizedFieldPermissions,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport type { UseDraggableSortableReturn } from '../../elements/DraggableSortable/useDraggableSortable/types.js'\n\nimport { ArrayAction } from '../../elements/ArrayAction/index.js'\nimport { Collapsible } from '../../elements/Collapsible/index.js'\nimport { ErrorPill } from '../../elements/ErrorPill/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 './index.css'\n\nconst baseClass = 'array-field'\n\ntype ArrayRowProps = {\n readonly addRow: (rowIndex: number) => Promise<void> | void\n readonly copyRow: (rowIndex: number) => void\n readonly CustomRowLabel?: React.ReactNode\n readonly duplicateRow: (rowIndex: number) => void\n readonly errorCount: number\n readonly fields: ClientField[]\n readonly hasMaxRows?: boolean\n readonly isLoading?: boolean\n readonly isSortable?: boolean\n readonly labels: Partial<ArrayField['labels']>\n readonly moveRow: (fromIndex: number, toIndex: number) => void\n readonly parentPath: string\n readonly pasteRow: (rowIndex: number) => void\n readonly path: string\n readonly permissions: SanitizedFieldPermissions\n readonly readOnly?: boolean\n readonly removeRow: (rowIndex: number) => void\n readonly row: Row\n readonly rowCount: number\n readonly rowIndex: number\n readonly schemaPath: string\n readonly scrollIdPrefix: string\n readonly setCollapse: (rowID: string, collapsed: boolean) => void\n} & Pick<ClientComponentProps, 'forceRender'> &\n UseDraggableSortableReturn\n\nexport const ArrayRow: React.FC<ArrayRowProps> = ({\n addRow,\n attributes,\n copyRow,\n CustomRowLabel,\n duplicateRow,\n errorCount,\n fields,\n forceRender = false,\n hasMaxRows,\n isDragging,\n isLoading: isLoadingFromProps,\n isSortable,\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 scrollIdPrefix,\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(() => ({ path, schemaFields: fields }), [path, fields])\n\n const fallbackLabel = `${getTranslation(labels.singular, i18n)} ${String(rowIndex + 1).padStart(\n 2,\n '0',\n )}`\n\n const fieldHasErrors = errorCount > 0 && hasSubmitted\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 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 <ArrayAction\n addRow={addRow}\n copyRow={copyRow}\n duplicateRow={duplicateRow}\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 ) : undefined\n }\n className={classNames}\n collapsibleStyle={fieldHasErrors ? 'error' : 'default'}\n dragHandleProps={\n isSortable\n ? {\n id: row.id,\n attributes,\n listeners,\n }\n : undefined\n }\n header={\n <div className={`${baseClass}__row-header`} id={`${scrollIdPrefix}-row-${rowIndex}`}>\n {isLoading ? (\n <ShimmerEffect height=\"1rem\" width=\"8rem\" />\n ) : (\n <RowLabel\n CustomComponent={CustomRowLabel}\n label={fallbackLabel}\n path={path}\n rowNumber={rowIndex}\n />\n )}\n {fieldHasErrors && <ErrorPill count={errorCount} i18n={i18n} withMessage />}\n </div>\n }\n isCollapsed={row.collapsed}\n onToggle={(collapsed) => setCollapse(row.id, collapsed)}\n >\n {isLoading ? (\n <ShimmerEffect />\n ) : (\n <RenderFields\n className={`${baseClass}__fields`}\n fields={fields}\n forceRender={forceRender}\n parentIndexPath=\"\"\n parentPath={path}\n parentSchemaPath={schemaPath}\n permissions={permissions === true ? permissions : permissions?.fields}\n readOnly={readOnly}\n />\n )}\n </Collapsible>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ArrayRow.js","names":["getTranslation","React","ArrayAction","Collapsible","ErrorPill","ShimmerEffect","useFormSubmitted","RenderFields","RowLabel","useThrottledValue","useTranslation","baseClass","ArrayRow","addRow","attributes","copyRow","CustomRowLabel","duplicateRow","errorCount","fields","forceRender","hasMaxRows","isDragging","isLoading","isLoadingFromProps","isSortable","labels","listeners","moveRow","parentPath","pasteRow","pasteRowBelow","path","permissions","readOnly","removeRow","row","rowCount","rowIndex","schemaPath","scrollIdPrefix","setCollapse","setNodeRef","transform","transition","i18n","hasSubmitted","pasteData","useMemo","schemaFields","fallbackLabel","singular","String","padStart","fieldHasErrors","classNames","filter","Boolean","join","_jsx","id","split","ref","style","zIndex","undefined","actions","index","className","collapsibleStyle","dragHandleProps","header","_jsxs","height","width","CustomComponent","label","rowNumber","count","withMessage","isCollapsed","collapsed","onToggle","parentIndexPath","parentSchemaPath"],"sources":["../../../src/fields/Array/ArrayRow.tsx"],"sourcesContent":["'use client'\nimport type {\n ArrayField,\n ClientComponentProps,\n ClientField,\n Row,\n SanitizedFieldPermissions,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport type { UseDraggableSortableReturn } from '../../elements/DraggableSortable/useDraggableSortable/types.js'\n\nimport { ArrayAction } from '../../elements/ArrayAction/index.js'\nimport { Collapsible } from '../../elements/Collapsible/index.js'\nimport { ErrorPill } from '../../elements/ErrorPill/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 './index.css'\n\nconst baseClass = 'array-field'\n\ntype ArrayRowProps = {\n readonly addRow: (rowIndex: number) => Promise<void> | void\n readonly copyRow: (rowIndex: number) => void\n readonly CustomRowLabel?: React.ReactNode\n readonly duplicateRow: (rowIndex: number) => void\n readonly errorCount: number\n readonly fields: ClientField[]\n readonly hasMaxRows?: boolean\n readonly isLoading?: boolean\n readonly isSortable?: boolean\n readonly labels: Partial<ArrayField['labels']>\n readonly moveRow: (fromIndex: number, toIndex: number) => void\n readonly parentPath: string\n readonly pasteRow: (rowIndex: number) => void\n readonly pasteRowBelow: (rowIndex: number) => void\n readonly path: string\n readonly permissions: SanitizedFieldPermissions\n readonly readOnly?: boolean\n readonly removeRow: (rowIndex: number) => void\n readonly row: Row\n readonly rowCount: number\n readonly rowIndex: number\n readonly schemaPath: string\n readonly scrollIdPrefix: string\n readonly setCollapse: (rowID: string, collapsed: boolean) => void\n} & Pick<ClientComponentProps, 'forceRender'> &\n UseDraggableSortableReturn\n\nexport const ArrayRow: React.FC<ArrayRowProps> = ({\n addRow,\n attributes,\n copyRow,\n CustomRowLabel,\n duplicateRow,\n errorCount,\n fields,\n forceRender = false,\n hasMaxRows,\n isDragging,\n isLoading: isLoadingFromProps,\n isSortable,\n labels,\n listeners,\n moveRow,\n parentPath,\n pasteRow,\n pasteRowBelow,\n path,\n permissions,\n readOnly,\n removeRow,\n row,\n rowCount,\n rowIndex,\n schemaPath,\n scrollIdPrefix,\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(() => ({ path, schemaFields: fields }), [path, fields])\n\n const fallbackLabel = `${getTranslation(labels.singular, i18n)} ${String(rowIndex + 1).padStart(\n 2,\n '0',\n )}`\n\n const fieldHasErrors = errorCount > 0 && hasSubmitted\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 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 <ArrayAction\n addRow={addRow}\n copyRow={copyRow}\n duplicateRow={duplicateRow}\n hasMaxRows={hasMaxRows}\n index={rowIndex}\n isSortable={isSortable}\n moveRow={moveRow}\n pasteData={pasteData}\n pasteRow={pasteRow}\n pasteRowBelow={pasteRowBelow}\n removeRow={removeRow}\n rowCount={rowCount}\n />\n ) : undefined\n }\n className={classNames}\n collapsibleStyle={fieldHasErrors ? 'error' : 'default'}\n dragHandleProps={\n isSortable\n ? {\n id: row.id,\n attributes,\n listeners,\n }\n : undefined\n }\n header={\n <div className={`${baseClass}__row-header`} id={`${scrollIdPrefix}-row-${rowIndex}`}>\n {isLoading ? (\n <ShimmerEffect height=\"1rem\" width=\"8rem\" />\n ) : (\n <RowLabel\n CustomComponent={CustomRowLabel}\n label={fallbackLabel}\n path={path}\n rowNumber={rowIndex}\n />\n )}\n {fieldHasErrors && <ErrorPill count={errorCount} i18n={i18n} withMessage />}\n </div>\n }\n isCollapsed={row.collapsed}\n onToggle={(collapsed) => setCollapse(row.id, collapsed)}\n >\n {isLoading ? (\n <ShimmerEffect />\n ) : (\n <RenderFields\n className={`${baseClass}__fields`}\n fields={fields}\n forceRender={forceRender}\n parentIndexPath=\"\"\n parentPath={path}\n parentSchemaPath={schemaPath}\n permissions={permissions === true ? permissions : permissions?.fields}\n readOnly={readOnly}\n />\n )}\n </Collapsible>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Array/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,yBAAyB,EAG1B,MAAM,SAAS,CAAA;AAIhB,OAAO,KAAgD,MAAM,OAAO,CAAA;AAqCpE,OAAO,aAAa,CAAA;AAIpB,eAAO,MAAM,mBAAmB,EAAE,yBAmcjC,CAAA;AAED,eAAO,MAAM,UAAU;;;;+EAAqC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Array/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,yBAAyB,EAG1B,MAAM,SAAS,CAAA;AAIhB,OAAO,KAAgD,MAAM,OAAO,CAAA;AAsCpE,OAAO,aAAa,CAAA;AAIpB,eAAO,MAAM,mBAAmB,EAAE,yBAoejC,CAAA;AAED,eAAO,MAAM,UAAU;;;;+EAAqC,CAAA"}