@payloadcms/plugin-import-export 3.83.0-canary.0 → 3.83.0-canary.1
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.
- package/dist/components/FieldsToExport/reduceFields.d.ts +2 -1
- package/dist/components/FieldsToExport/reduceFields.d.ts.map +1 -1
- package/dist/components/FieldsToExport/reduceFields.js +6 -3
- package/dist/components/FieldsToExport/reduceFields.js.map +1 -1
- package/dist/components/FieldsToExport/reduceFields.spec.js +239 -0
- package/dist/components/FieldsToExport/reduceFields.spec.js.map +1 -0
- package/dist/components/SortBy/index.js +1 -0
- package/dist/components/SortBy/index.js.map +1 -1
- package/package.json +7 -7
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { ClientField } from 'payload';
|
|
2
2
|
import React from 'react';
|
|
3
|
-
export declare const reduceFields: ({ disabledFields, fields, labelPrefix, path, }: {
|
|
3
|
+
export declare const reduceFields: ({ disabledFields, excludeUnsortable, fields, labelPrefix, path, }: {
|
|
4
4
|
disabledFields?: string[];
|
|
5
|
+
excludeUnsortable?: boolean;
|
|
5
6
|
fields: ClientField[];
|
|
6
7
|
labelPrefix?: React.ReactNode;
|
|
7
8
|
path?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reduceFields.d.ts","sourceRoot":"","sources":["../../../src/components/FieldsToExport/reduceFields.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAG1C,OAAO,KAAmB,MAAM,OAAO,CAAA;AAyCvC,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"reduceFields.d.ts","sourceRoot":"","sources":["../../../src/components/FieldsToExport/reduceFields.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAG1C,OAAO,KAAmB,MAAM,OAAO,CAAA;AAyCvC,eAAO,MAAM,YAAY,sEAMtB;IACD,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,KAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAoFxD,CAAA"}
|
|
@@ -36,20 +36,22 @@ const combineLabel = ({ field, prefix })=>{
|
|
|
36
36
|
]
|
|
37
37
|
});
|
|
38
38
|
};
|
|
39
|
-
export const reduceFields = ({ disabledFields = [], fields, labelPrefix = null, path = '' })=>{
|
|
39
|
+
export const reduceFields = ({ disabledFields = [], excludeUnsortable = false, fields, labelPrefix = null, path = '' })=>{
|
|
40
40
|
if (!fields) {
|
|
41
41
|
return [];
|
|
42
42
|
}
|
|
43
43
|
return fields.reduce((fieldsToUse, field)=>{
|
|
44
|
+
const isArrayOrBlocks = field.type === 'array' || field.type === 'blocks';
|
|
44
45
|
// escape for a variety of reasons, include ui fields as they have `name`.
|
|
45
|
-
if (field.type === 'ui') {
|
|
46
|
+
if (field.type === 'ui' || excludeUnsortable && isArrayOrBlocks) {
|
|
46
47
|
return fieldsToUse;
|
|
47
48
|
}
|
|
48
|
-
if (!
|
|
49
|
+
if (!isArrayOrBlocks && fieldHasSubFields(field)) {
|
|
49
50
|
return [
|
|
50
51
|
...fieldsToUse,
|
|
51
52
|
...reduceFields({
|
|
52
53
|
disabledFields,
|
|
54
|
+
excludeUnsortable,
|
|
53
55
|
fields: field.fields,
|
|
54
56
|
labelPrefix: combineLabel({
|
|
55
57
|
field,
|
|
@@ -70,6 +72,7 @@ export const reduceFields = ({ disabledFields = [], fields, labelPrefix = null,
|
|
|
70
72
|
...tabFields,
|
|
71
73
|
...reduceFields({
|
|
72
74
|
disabledFields,
|
|
75
|
+
excludeUnsortable,
|
|
73
76
|
fields: tab.fields,
|
|
74
77
|
labelPrefix: isNamedTab ? combineLabel({
|
|
75
78
|
field: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/FieldsToExport/reduceFields.tsx"],"sourcesContent":["import type { ClientField } from 'payload'\n\nimport { fieldAffectsData, fieldHasSubFields } from 'payload/shared'\nimport React, { Fragment } from 'react'\n\nconst createNestedClientFieldPath = (parentPath: string, field: ClientField): string => {\n if (parentPath) {\n if (fieldAffectsData(field)) {\n return `${parentPath}.${field.name}`\n }\n return parentPath\n }\n\n if (fieldAffectsData(field)) {\n return field.name\n }\n\n return ''\n}\n\nconst combineLabel = ({\n field,\n prefix,\n}: {\n field: ClientField\n prefix?: React.ReactNode\n}): React.ReactNode => {\n return (\n <Fragment>\n {prefix ? (\n <Fragment>\n <span style={{ display: 'inline-block' }}>{prefix}</span>\n {' > '}\n </Fragment>\n ) : null}\n <span style={{ display: 'inline-block' }}>\n {'label' in field && typeof field.label === 'string'\n ? field.label\n : (('name' in field && field.name) ?? 'unnamed field')}\n </span>\n </Fragment>\n )\n}\n\nexport const reduceFields = ({\n disabledFields = [],\n fields,\n labelPrefix = null,\n path = '',\n}: {\n disabledFields?: string[]\n fields: ClientField[]\n labelPrefix?: React.ReactNode\n path?: string\n}): { id: string; label: React.ReactNode; value: string }[] => {\n if (!fields) {\n return []\n }\n\n return fields.reduce<{ id: string; label: React.ReactNode; value: string }[]>(\n (fieldsToUse, field) => {\n // escape for a variety of reasons, include ui fields as they have `name`.\n if (field.type === 'ui') {\n return fieldsToUse\n }\n\n if (!
|
|
1
|
+
{"version":3,"sources":["../../../src/components/FieldsToExport/reduceFields.tsx"],"sourcesContent":["import type { ClientField } from 'payload'\n\nimport { fieldAffectsData, fieldHasSubFields } from 'payload/shared'\nimport React, { Fragment } from 'react'\n\nconst createNestedClientFieldPath = (parentPath: string, field: ClientField): string => {\n if (parentPath) {\n if (fieldAffectsData(field)) {\n return `${parentPath}.${field.name}`\n }\n return parentPath\n }\n\n if (fieldAffectsData(field)) {\n return field.name\n }\n\n return ''\n}\n\nconst combineLabel = ({\n field,\n prefix,\n}: {\n field: ClientField\n prefix?: React.ReactNode\n}): React.ReactNode => {\n return (\n <Fragment>\n {prefix ? (\n <Fragment>\n <span style={{ display: 'inline-block' }}>{prefix}</span>\n {' > '}\n </Fragment>\n ) : null}\n <span style={{ display: 'inline-block' }}>\n {'label' in field && typeof field.label === 'string'\n ? field.label\n : (('name' in field && field.name) ?? 'unnamed field')}\n </span>\n </Fragment>\n )\n}\n\nexport const reduceFields = ({\n disabledFields = [],\n excludeUnsortable = false,\n fields,\n labelPrefix = null,\n path = '',\n}: {\n disabledFields?: string[]\n excludeUnsortable?: boolean\n fields: ClientField[]\n labelPrefix?: React.ReactNode\n path?: string\n}): { id: string; label: React.ReactNode; value: string }[] => {\n if (!fields) {\n return []\n }\n\n return fields.reduce<{ id: string; label: React.ReactNode; value: string }[]>(\n (fieldsToUse, field) => {\n const isArrayOrBlocks = field.type === 'array' || field.type === 'blocks'\n\n // escape for a variety of reasons, include ui fields as they have `name`.\n if (field.type === 'ui' || (excludeUnsortable && isArrayOrBlocks)) {\n return fieldsToUse\n }\n\n if (!isArrayOrBlocks && fieldHasSubFields(field)) {\n return [\n ...fieldsToUse,\n ...reduceFields({\n disabledFields,\n excludeUnsortable,\n fields: field.fields,\n labelPrefix: combineLabel({ field, prefix: labelPrefix }),\n path: createNestedClientFieldPath(path, field),\n }),\n ]\n }\n\n if (field.type === 'tabs' && 'tabs' in field) {\n return [\n ...fieldsToUse,\n ...field.tabs.reduce<{ id: string; label: React.ReactNode; value: string }[]>(\n (tabFields, tab) => {\n if ('fields' in tab) {\n const isNamedTab = 'name' in tab && tab.name\n\n const newPath = isNamedTab ? `${path}${path ? '.' : ''}${tab.name}` : path\n\n return [\n ...tabFields,\n ...reduceFields({\n disabledFields,\n excludeUnsortable,\n fields: tab.fields,\n labelPrefix: isNamedTab\n ? combineLabel({\n field: {\n name: tab.name,\n label: tab.label ?? tab.name,\n } as any,\n prefix: labelPrefix,\n })\n : labelPrefix,\n path: newPath,\n }),\n ]\n }\n return tabFields\n },\n [],\n ),\n ]\n }\n\n const val = createNestedClientFieldPath(path, field)\n\n // If the field is disabled, skip it\n if (\n disabledFields.some(\n (disabledField) => val === disabledField || val.startsWith(`${disabledField}.`),\n )\n ) {\n return fieldsToUse\n }\n\n const formattedField = {\n id: val,\n label: combineLabel({ field, prefix: labelPrefix }),\n value: val,\n }\n\n return [...fieldsToUse, formattedField]\n },\n [],\n )\n}\n"],"names":["fieldAffectsData","fieldHasSubFields","React","Fragment","createNestedClientFieldPath","parentPath","field","name","combineLabel","prefix","span","style","display","label","reduceFields","disabledFields","excludeUnsortable","fields","labelPrefix","path","reduce","fieldsToUse","isArrayOrBlocks","type","tabs","tabFields","tab","isNamedTab","newPath","val","some","disabledField","startsWith","formattedField","id","value"],"mappings":";AAEA,SAASA,gBAAgB,EAAEC,iBAAiB,QAAQ,iBAAgB;AACpE,OAAOC,SAASC,QAAQ,QAAQ,QAAO;AAEvC,MAAMC,8BAA8B,CAACC,YAAoBC;IACvD,IAAID,YAAY;QACd,IAAIL,iBAAiBM,QAAQ;YAC3B,OAAO,GAAGD,WAAW,CAAC,EAAEC,MAAMC,IAAI,EAAE;QACtC;QACA,OAAOF;IACT;IAEA,IAAIL,iBAAiBM,QAAQ;QAC3B,OAAOA,MAAMC,IAAI;IACnB;IAEA,OAAO;AACT;AAEA,MAAMC,eAAe,CAAC,EACpBF,KAAK,EACLG,MAAM,EAIP;IACC,qBACE,MAACN;;YACEM,uBACC,MAACN;;kCACC,KAACO;wBAAKC,OAAO;4BAAEC,SAAS;wBAAe;kCAAIH;;oBAC1C;;iBAED;0BACJ,KAACC;gBAAKC,OAAO;oBAAEC,SAAS;gBAAe;0BACpC,WAAWN,SAAS,OAAOA,MAAMO,KAAK,KAAK,WACxCP,MAAMO,KAAK,GACV,AAAC,CAAA,UAAUP,SAASA,MAAMC,IAAI,AAAD,KAAM;;;;AAIhD;AAEA,OAAO,MAAMO,eAAe,CAAC,EAC3BC,iBAAiB,EAAE,EACnBC,oBAAoB,KAAK,EACzBC,MAAM,EACNC,cAAc,IAAI,EAClBC,OAAO,EAAE,EAOV;IACC,IAAI,CAACF,QAAQ;QACX,OAAO,EAAE;IACX;IAEA,OAAOA,OAAOG,MAAM,CAClB,CAACC,aAAaf;QACZ,MAAMgB,kBAAkBhB,MAAMiB,IAAI,KAAK,WAAWjB,MAAMiB,IAAI,KAAK;QAEjE,0EAA0E;QAC1E,IAAIjB,MAAMiB,IAAI,KAAK,QAASP,qBAAqBM,iBAAkB;YACjE,OAAOD;QACT;QAEA,IAAI,CAACC,mBAAmBrB,kBAAkBK,QAAQ;YAChD,OAAO;mBACFe;mBACAP,aAAa;oBACdC;oBACAC;oBACAC,QAAQX,MAAMW,MAAM;oBACpBC,aAAaV,aAAa;wBAAEF;wBAAOG,QAAQS;oBAAY;oBACvDC,MAAMf,4BAA4Be,MAAMb;gBAC1C;aACD;QACH;QAEA,IAAIA,MAAMiB,IAAI,KAAK,UAAU,UAAUjB,OAAO;YAC5C,OAAO;mBACFe;mBACAf,MAAMkB,IAAI,CAACJ,MAAM,CAClB,CAACK,WAAWC;oBACV,IAAI,YAAYA,KAAK;wBACnB,MAAMC,aAAa,UAAUD,OAAOA,IAAInB,IAAI;wBAE5C,MAAMqB,UAAUD,aAAa,GAAGR,OAAOA,OAAO,MAAM,KAAKO,IAAInB,IAAI,EAAE,GAAGY;wBAEtE,OAAO;+BACFM;+BACAX,aAAa;gCACdC;gCACAC;gCACAC,QAAQS,IAAIT,MAAM;gCAClBC,aAAaS,aACTnB,aAAa;oCACXF,OAAO;wCACLC,MAAMmB,IAAInB,IAAI;wCACdM,OAAOa,IAAIb,KAAK,IAAIa,IAAInB,IAAI;oCAC9B;oCACAE,QAAQS;gCACV,KACAA;gCACJC,MAAMS;4BACR;yBACD;oBACH;oBACA,OAAOH;gBACT,GACA,EAAE;aAEL;QACH;QAEA,MAAMI,MAAMzB,4BAA4Be,MAAMb;QAE9C,oCAAoC;QACpC,IACES,eAAee,IAAI,CACjB,CAACC,gBAAkBF,QAAQE,iBAAiBF,IAAIG,UAAU,CAAC,GAAGD,cAAc,CAAC,CAAC,IAEhF;YACA,OAAOV;QACT;QAEA,MAAMY,iBAAiB;YACrBC,IAAIL;YACJhB,OAAOL,aAAa;gBAAEF;gBAAOG,QAAQS;YAAY;YACjDiB,OAAON;QACT;QAEA,OAAO;eAAIR;YAAaY;SAAe;IACzC,GACA,EAAE;AAEN,EAAC"}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { reduceFields } from './reduceFields.js';
|
|
3
|
+
const values = (result)=>result.map((f)=>f.value);
|
|
4
|
+
describe('reduceFields', ()=>{
|
|
5
|
+
describe('excludeUnsortable', ()=>{
|
|
6
|
+
it('should include array and blocks fields by default', ()=>{
|
|
7
|
+
const fields = [
|
|
8
|
+
{
|
|
9
|
+
name: 'title',
|
|
10
|
+
type: 'text'
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
name: 'items',
|
|
14
|
+
type: 'array',
|
|
15
|
+
fields: [
|
|
16
|
+
{
|
|
17
|
+
name: 'text',
|
|
18
|
+
type: 'text'
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: 'layout',
|
|
24
|
+
type: 'blocks',
|
|
25
|
+
blocks: []
|
|
26
|
+
}
|
|
27
|
+
];
|
|
28
|
+
const result = values(reduceFields({
|
|
29
|
+
fields
|
|
30
|
+
}));
|
|
31
|
+
expect(result).toContain('title');
|
|
32
|
+
expect(result).toContain('items');
|
|
33
|
+
expect(result).toContain('layout');
|
|
34
|
+
});
|
|
35
|
+
it('should exclude array fields when excludeUnsortable is true', ()=>{
|
|
36
|
+
const fields = [
|
|
37
|
+
{
|
|
38
|
+
name: 'title',
|
|
39
|
+
type: 'text'
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'items',
|
|
43
|
+
type: 'array',
|
|
44
|
+
fields: [
|
|
45
|
+
{
|
|
46
|
+
name: 'text',
|
|
47
|
+
type: 'text'
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
];
|
|
52
|
+
const result = values(reduceFields({
|
|
53
|
+
excludeUnsortable: true,
|
|
54
|
+
fields
|
|
55
|
+
}));
|
|
56
|
+
expect(result).toContain('title');
|
|
57
|
+
expect(result).not.toContain('items');
|
|
58
|
+
});
|
|
59
|
+
it('should exclude blocks fields when excludeUnsortable is true', ()=>{
|
|
60
|
+
const fields = [
|
|
61
|
+
{
|
|
62
|
+
name: 'title',
|
|
63
|
+
type: 'text'
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: 'layout',
|
|
67
|
+
type: 'blocks',
|
|
68
|
+
blocks: []
|
|
69
|
+
}
|
|
70
|
+
];
|
|
71
|
+
const result = values(reduceFields({
|
|
72
|
+
excludeUnsortable: true,
|
|
73
|
+
fields
|
|
74
|
+
}));
|
|
75
|
+
expect(result).toContain('title');
|
|
76
|
+
expect(result).not.toContain('layout');
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
describe('disabledFields', ()=>{
|
|
80
|
+
it('should include all fields when disabledFields is empty', ()=>{
|
|
81
|
+
const fields = [
|
|
82
|
+
{
|
|
83
|
+
name: 'title',
|
|
84
|
+
type: 'text'
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
name: 'slug',
|
|
88
|
+
type: 'text'
|
|
89
|
+
}
|
|
90
|
+
];
|
|
91
|
+
const result = values(reduceFields({
|
|
92
|
+
disabledFields: [],
|
|
93
|
+
fields
|
|
94
|
+
}));
|
|
95
|
+
expect(result).toContain('title');
|
|
96
|
+
expect(result).toContain('slug');
|
|
97
|
+
});
|
|
98
|
+
it('should exclude a field whose path is in disabledFields', ()=>{
|
|
99
|
+
const fields = [
|
|
100
|
+
{
|
|
101
|
+
name: 'title',
|
|
102
|
+
type: 'text'
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
name: 'slug',
|
|
106
|
+
type: 'text'
|
|
107
|
+
}
|
|
108
|
+
];
|
|
109
|
+
const result = values(reduceFields({
|
|
110
|
+
disabledFields: [
|
|
111
|
+
'slug'
|
|
112
|
+
],
|
|
113
|
+
fields
|
|
114
|
+
}));
|
|
115
|
+
expect(result).toContain('title');
|
|
116
|
+
expect(result).not.toContain('slug');
|
|
117
|
+
});
|
|
118
|
+
it('should exclude nested fields whose paths start with a disabled parent path', ()=>{
|
|
119
|
+
const fields = [
|
|
120
|
+
{
|
|
121
|
+
name: 'meta',
|
|
122
|
+
type: 'group',
|
|
123
|
+
fields: [
|
|
124
|
+
{
|
|
125
|
+
name: 'title',
|
|
126
|
+
type: 'text'
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
name: 'description',
|
|
130
|
+
type: 'text'
|
|
131
|
+
}
|
|
132
|
+
]
|
|
133
|
+
}
|
|
134
|
+
];
|
|
135
|
+
const result = values(reduceFields({
|
|
136
|
+
disabledFields: [
|
|
137
|
+
'meta.description'
|
|
138
|
+
],
|
|
139
|
+
fields
|
|
140
|
+
}));
|
|
141
|
+
expect(result).toContain('meta.title');
|
|
142
|
+
expect(result).not.toContain('meta.description');
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
describe('combined excludeUnsortable and disabledFields', ()=>{
|
|
146
|
+
it('should apply both filters simultaneously', ()=>{
|
|
147
|
+
const fields = [
|
|
148
|
+
{
|
|
149
|
+
name: 'title',
|
|
150
|
+
type: 'text'
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
name: 'slug',
|
|
154
|
+
type: 'text'
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
name: 'items',
|
|
158
|
+
type: 'array',
|
|
159
|
+
fields: [
|
|
160
|
+
{
|
|
161
|
+
name: 'text',
|
|
162
|
+
type: 'text'
|
|
163
|
+
}
|
|
164
|
+
]
|
|
165
|
+
}
|
|
166
|
+
];
|
|
167
|
+
const result = values(reduceFields({
|
|
168
|
+
disabledFields: [
|
|
169
|
+
'slug'
|
|
170
|
+
],
|
|
171
|
+
excludeUnsortable: true,
|
|
172
|
+
fields
|
|
173
|
+
}));
|
|
174
|
+
expect(result).toContain('title');
|
|
175
|
+
expect(result).not.toContain('slug');
|
|
176
|
+
expect(result).not.toContain('items');
|
|
177
|
+
});
|
|
178
|
+
});
|
|
179
|
+
describe('recursive propagation through group sub-fields', ()=>{
|
|
180
|
+
it('should propagate excludeUnsortable into group sub-fields', ()=>{
|
|
181
|
+
const fields = [
|
|
182
|
+
{
|
|
183
|
+
name: 'meta',
|
|
184
|
+
type: 'group',
|
|
185
|
+
fields: [
|
|
186
|
+
{
|
|
187
|
+
name: 'title',
|
|
188
|
+
type: 'text'
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
name: 'tags',
|
|
192
|
+
type: 'array',
|
|
193
|
+
fields: [
|
|
194
|
+
{
|
|
195
|
+
name: 'tag',
|
|
196
|
+
type: 'text'
|
|
197
|
+
}
|
|
198
|
+
]
|
|
199
|
+
}
|
|
200
|
+
]
|
|
201
|
+
}
|
|
202
|
+
];
|
|
203
|
+
const result = values(reduceFields({
|
|
204
|
+
excludeUnsortable: true,
|
|
205
|
+
fields
|
|
206
|
+
}));
|
|
207
|
+
expect(result).toContain('meta.title');
|
|
208
|
+
expect(result).not.toContain('meta.tags');
|
|
209
|
+
});
|
|
210
|
+
it('should propagate disabledFields into group sub-fields', ()=>{
|
|
211
|
+
const fields = [
|
|
212
|
+
{
|
|
213
|
+
name: 'meta',
|
|
214
|
+
type: 'group',
|
|
215
|
+
fields: [
|
|
216
|
+
{
|
|
217
|
+
name: 'title',
|
|
218
|
+
type: 'text'
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
name: 'description',
|
|
222
|
+
type: 'text'
|
|
223
|
+
}
|
|
224
|
+
]
|
|
225
|
+
}
|
|
226
|
+
];
|
|
227
|
+
const result = values(reduceFields({
|
|
228
|
+
disabledFields: [
|
|
229
|
+
'meta.description'
|
|
230
|
+
],
|
|
231
|
+
fields
|
|
232
|
+
}));
|
|
233
|
+
expect(result).toContain('meta.title');
|
|
234
|
+
expect(result).not.toContain('meta.description');
|
|
235
|
+
});
|
|
236
|
+
});
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
//# sourceMappingURL=reduceFields.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/FieldsToExport/reduceFields.spec.ts"],"sourcesContent":["import type { ClientField } from 'payload'\n\nimport { describe, expect, it } from 'vitest'\n\nimport { reduceFields } from './reduceFields.js'\n\nconst values = (result: ReturnType<typeof reduceFields>) => result.map((f) => f.value)\n\ndescribe('reduceFields', () => {\n describe('excludeUnsortable', () => {\n it('should include array and blocks fields by default', () => {\n const fields: ClientField[] = [\n { name: 'title', type: 'text' },\n { name: 'items', type: 'array', fields: [{ name: 'text', type: 'text' }] },\n { name: 'layout', type: 'blocks', blocks: [] },\n ]\n\n const result = values(reduceFields({ fields }))\n\n expect(result).toContain('title')\n expect(result).toContain('items')\n expect(result).toContain('layout')\n })\n\n it('should exclude array fields when excludeUnsortable is true', () => {\n const fields: ClientField[] = [\n { name: 'title', type: 'text' },\n { name: 'items', type: 'array', fields: [{ name: 'text', type: 'text' }] },\n ]\n\n const result = values(reduceFields({ excludeUnsortable: true, fields }))\n\n expect(result).toContain('title')\n expect(result).not.toContain('items')\n })\n\n it('should exclude blocks fields when excludeUnsortable is true', () => {\n const fields: ClientField[] = [\n { name: 'title', type: 'text' },\n { name: 'layout', type: 'blocks', blocks: [] },\n ]\n\n const result = values(reduceFields({ excludeUnsortable: true, fields }))\n\n expect(result).toContain('title')\n expect(result).not.toContain('layout')\n })\n })\n\n describe('disabledFields', () => {\n it('should include all fields when disabledFields is empty', () => {\n const fields: ClientField[] = [\n { name: 'title', type: 'text' },\n { name: 'slug', type: 'text' },\n ]\n\n const result = values(reduceFields({ disabledFields: [], fields }))\n\n expect(result).toContain('title')\n expect(result).toContain('slug')\n })\n\n it('should exclude a field whose path is in disabledFields', () => {\n const fields: ClientField[] = [\n { name: 'title', type: 'text' },\n { name: 'slug', type: 'text' },\n ]\n\n const result = values(reduceFields({ disabledFields: ['slug'], fields }))\n\n expect(result).toContain('title')\n expect(result).not.toContain('slug')\n })\n\n it('should exclude nested fields whose paths start with a disabled parent path', () => {\n const fields: ClientField[] = [\n {\n name: 'meta',\n type: 'group',\n fields: [\n { name: 'title', type: 'text' },\n { name: 'description', type: 'text' },\n ],\n },\n ]\n\n const result = values(reduceFields({ disabledFields: ['meta.description'], fields }))\n\n expect(result).toContain('meta.title')\n expect(result).not.toContain('meta.description')\n })\n })\n\n describe('combined excludeUnsortable and disabledFields', () => {\n it('should apply both filters simultaneously', () => {\n const fields: ClientField[] = [\n { name: 'title', type: 'text' },\n { name: 'slug', type: 'text' },\n { name: 'items', type: 'array', fields: [{ name: 'text', type: 'text' }] },\n ]\n\n const result = values(\n reduceFields({ disabledFields: ['slug'], excludeUnsortable: true, fields }),\n )\n\n expect(result).toContain('title')\n expect(result).not.toContain('slug')\n expect(result).not.toContain('items')\n })\n })\n\n describe('recursive propagation through group sub-fields', () => {\n it('should propagate excludeUnsortable into group sub-fields', () => {\n const fields: ClientField[] = [\n {\n name: 'meta',\n type: 'group',\n fields: [\n { name: 'title', type: 'text' },\n { name: 'tags', type: 'array', fields: [{ name: 'tag', type: 'text' }] },\n ],\n },\n ]\n\n const result = values(reduceFields({ excludeUnsortable: true, fields }))\n\n expect(result).toContain('meta.title')\n expect(result).not.toContain('meta.tags')\n })\n\n it('should propagate disabledFields into group sub-fields', () => {\n const fields: ClientField[] = [\n {\n name: 'meta',\n type: 'group',\n fields: [\n { name: 'title', type: 'text' },\n { name: 'description', type: 'text' },\n ],\n },\n ]\n\n const result = values(reduceFields({ disabledFields: ['meta.description'], fields }))\n\n expect(result).toContain('meta.title')\n expect(result).not.toContain('meta.description')\n })\n })\n})\n"],"names":["describe","expect","it","reduceFields","values","result","map","f","value","fields","name","type","blocks","toContain","excludeUnsortable","not","disabledFields"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/SortBy/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SelectFieldClientComponent } from 'payload'\nimport type { ReactNode } from 'react'\n\nimport {\n FieldLabel,\n ReactSelect,\n useConfig,\n useDocumentInfo,\n useField,\n useListQuery,\n} from '@payloadcms/ui'\nimport React, { useEffect, useMemo, useRef, useState } from 'react'\n\nimport { applySortOrder, normalizeQueryParam, stripSortDash } from '../../utilities/sortHelpers.js'\nimport { reduceFields } from '../FieldsToExport/reduceFields.js'\nimport { useImportExport } from '../ImportExportProvider/index.js'\nimport './index.scss'\n\nconst baseClass = 'sort-by-fields'\n\nexport const SortBy: SelectFieldClientComponent = (props) => {\n const { id } = useDocumentInfo()\n\n // The \"sort\" text field that stores 'title' or '-title'\n const { setValue: setSort, value: sortRaw } = useField<string>()\n\n // Sibling order field ('asc' | 'desc') used when writing sort on change\n const { value: sortOrder = 'asc' } = useField<string>({ path: 'sortOrder' })\n // Needed so we can initialize sortOrder when SortOrder component is hidden\n const { setValue: setSortOrder } = useField<'asc' | 'desc'>({ path: 'sortOrder' })\n\n const { value: collectionSlug } = useField<string>({ path: 'collectionSlug' })\n const { query } = useListQuery()\n const { getEntityConfig } = useConfig()\n const { collection } = useImportExport()\n\n // ReactSelect's displayed option\n const [displayedValue, setDisplayedValue] = useState<{\n id: string\n label: ReactNode\n value: string\n } | null>(null)\n\n const collectionConfig = getEntityConfig({ collectionSlug: collectionSlug ?? collection })\n const fieldOptions = useMemo(\n () => reduceFields({ fields: collectionConfig?.fields }),\n [collectionConfig?.fields],\n )\n\n // Normalize the stored value for display (strip the '-') and pick the option\n useEffect(() => {\n const clean = stripSortDash(sortRaw)\n if (!clean) {\n setDisplayedValue(null)\n return\n }\n\n const option = fieldOptions.find((f) => f.value === clean)\n if (option && (!displayedValue || displayedValue.value !== clean)) {\n setDisplayedValue(option)\n }\n }, [sortRaw, fieldOptions, displayedValue])\n\n // One-time init guard so clearing `sort` doesn't rehydrate from query again\n const didInitRef = useRef(false)\n\n // Sync the visible select from list-view query sort (preferred) or groupBy (fallback)\n // and initialize both `sort` and `sortOrder` here as SortOrder may be hidden by admin.condition.\n useEffect(() => {\n if (didInitRef.current) {\n return\n }\n if (id) {\n didInitRef.current = true\n return\n }\n if (typeof sortRaw === 'string' && sortRaw.length > 0) {\n // Already initialized elsewhere\n didInitRef.current = true\n return\n }\n\n const qsSort = normalizeQueryParam(query?.sort)\n const qsGroupBy = normalizeQueryParam(query?.groupBy)\n\n const source = qsSort ?? qsGroupBy\n if (!source) {\n didInitRef.current = true\n return\n }\n\n const isDesc = !!qsSort && qsSort.startsWith('-')\n const base = stripSortDash(source)\n const order: 'asc' | 'desc' = isDesc ? 'desc' : 'asc'\n\n // Write BOTH fields so preview/export have the right values even if SortOrder is hidden\n setSort(applySortOrder(base, order))\n setSortOrder(order)\n\n const option = fieldOptions.find((f) => f.value === base)\n if (option) {\n setDisplayedValue(option)\n }\n\n didInitRef.current = true\n }, [id, query?.groupBy, query?.sort, sortRaw, fieldOptions, setSort, setSortOrder])\n\n // When user selects a different field, store it with the current order applied\n const onChange = (option: { id: string; label: ReactNode; value: string } | null) => {\n if (!option) {\n setSort('')\n setDisplayedValue(null)\n } else {\n setDisplayedValue(option)\n const next = applySortOrder(option.value, String(sortOrder) as 'asc' | 'desc')\n setSort(next)\n }\n }\n\n return (\n <div className={baseClass}>\n <FieldLabel label={props.field.label} path={props.path} />\n <ReactSelect\n className={baseClass}\n disabled={props.readOnly}\n getOptionValue={(option) => String(option.value)}\n inputId={`field-${props.path.replace(/\\./g, '__')}`}\n isClearable={true}\n isSortable={true}\n // @ts-expect-error react select option\n onChange={onChange}\n options={fieldOptions}\n // @ts-expect-error react select\n value={displayedValue}\n />\n </div>\n )\n}\n"],"names":["FieldLabel","ReactSelect","useConfig","useDocumentInfo","useField","useListQuery","React","useEffect","useMemo","useRef","useState","applySortOrder","normalizeQueryParam","stripSortDash","reduceFields","useImportExport","baseClass","SortBy","props","id","setValue","setSort","value","sortRaw","sortOrder","path","setSortOrder","collectionSlug","query","getEntityConfig","collection","displayedValue","setDisplayedValue","collectionConfig","fieldOptions","fields","clean","option","find","f","didInitRef","current","length","qsSort","sort","qsGroupBy","groupBy","source","isDesc","startsWith","base","order","onChange","next","String","div","className","label","field","disabled","readOnly","getOptionValue","inputId","replace","isClearable","isSortable","options"],"mappings":"AAAA;;AAKA,SACEA,UAAU,EACVC,WAAW,EACXC,SAAS,EACTC,eAAe,EACfC,QAAQ,EACRC,YAAY,QACP,iBAAgB;AACvB,OAAOC,SAASC,SAAS,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,QAAO;AAEnE,SAASC,cAAc,EAAEC,mBAAmB,EAAEC,aAAa,QAAQ,iCAAgC;AACnG,SAASC,YAAY,QAAQ,oCAAmC;AAChE,SAASC,eAAe,QAAQ,mCAAkC;AAClE,OAAO,eAAc;AAErB,MAAMC,YAAY;AAElB,OAAO,MAAMC,SAAqC,CAACC;IACjD,MAAM,EAAEC,EAAE,EAAE,GAAGhB;IAEf,wDAAwD;IACxD,MAAM,EAAEiB,UAAUC,OAAO,EAAEC,OAAOC,OAAO,EAAE,GAAGnB;IAE9C,wEAAwE;IACxE,MAAM,EAAEkB,OAAOE,YAAY,KAAK,EAAE,GAAGpB,SAAiB;QAAEqB,MAAM;IAAY;IAC1E,2EAA2E;IAC3E,MAAM,EAAEL,UAAUM,YAAY,EAAE,GAAGtB,SAAyB;QAAEqB,MAAM;IAAY;IAEhF,MAAM,EAAEH,OAAOK,cAAc,EAAE,GAAGvB,SAAiB;QAAEqB,MAAM;IAAiB;IAC5E,MAAM,EAAEG,KAAK,EAAE,GAAGvB;IAClB,MAAM,EAAEwB,eAAe,EAAE,GAAG3B;IAC5B,MAAM,EAAE4B,UAAU,EAAE,GAAGf;IAEvB,iCAAiC;IACjC,MAAM,CAACgB,gBAAgBC,kBAAkB,GAAGtB,SAIlC;IAEV,MAAMuB,mBAAmBJ,gBAAgB;QAAEF,gBAAgBA,kBAAkBG;IAAW;IACxF,MAAMI,eAAe1B,QACnB,IAAMM,aAAa;YAAEqB,
|
|
1
|
+
{"version":3,"sources":["../../../src/components/SortBy/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SelectFieldClientComponent } from 'payload'\nimport type { ReactNode } from 'react'\n\nimport {\n FieldLabel,\n ReactSelect,\n useConfig,\n useDocumentInfo,\n useField,\n useListQuery,\n} from '@payloadcms/ui'\nimport React, { useEffect, useMemo, useRef, useState } from 'react'\n\nimport { applySortOrder, normalizeQueryParam, stripSortDash } from '../../utilities/sortHelpers.js'\nimport { reduceFields } from '../FieldsToExport/reduceFields.js'\nimport { useImportExport } from '../ImportExportProvider/index.js'\nimport './index.scss'\n\nconst baseClass = 'sort-by-fields'\n\nexport const SortBy: SelectFieldClientComponent = (props) => {\n const { id } = useDocumentInfo()\n\n // The \"sort\" text field that stores 'title' or '-title'\n const { setValue: setSort, value: sortRaw } = useField<string>()\n\n // Sibling order field ('asc' | 'desc') used when writing sort on change\n const { value: sortOrder = 'asc' } = useField<string>({ path: 'sortOrder' })\n // Needed so we can initialize sortOrder when SortOrder component is hidden\n const { setValue: setSortOrder } = useField<'asc' | 'desc'>({ path: 'sortOrder' })\n\n const { value: collectionSlug } = useField<string>({ path: 'collectionSlug' })\n const { query } = useListQuery()\n const { getEntityConfig } = useConfig()\n const { collection } = useImportExport()\n\n // ReactSelect's displayed option\n const [displayedValue, setDisplayedValue] = useState<{\n id: string\n label: ReactNode\n value: string\n } | null>(null)\n\n const collectionConfig = getEntityConfig({ collectionSlug: collectionSlug ?? collection })\n const fieldOptions = useMemo(\n () => reduceFields({ excludeUnsortable: true, fields: collectionConfig?.fields }),\n [collectionConfig?.fields],\n )\n\n // Normalize the stored value for display (strip the '-') and pick the option\n useEffect(() => {\n const clean = stripSortDash(sortRaw)\n if (!clean) {\n setDisplayedValue(null)\n return\n }\n\n const option = fieldOptions.find((f) => f.value === clean)\n if (option && (!displayedValue || displayedValue.value !== clean)) {\n setDisplayedValue(option)\n }\n }, [sortRaw, fieldOptions, displayedValue])\n\n // One-time init guard so clearing `sort` doesn't rehydrate from query again\n const didInitRef = useRef(false)\n\n // Sync the visible select from list-view query sort (preferred) or groupBy (fallback)\n // and initialize both `sort` and `sortOrder` here as SortOrder may be hidden by admin.condition.\n useEffect(() => {\n if (didInitRef.current) {\n return\n }\n if (id) {\n didInitRef.current = true\n return\n }\n if (typeof sortRaw === 'string' && sortRaw.length > 0) {\n // Already initialized elsewhere\n didInitRef.current = true\n return\n }\n\n const qsSort = normalizeQueryParam(query?.sort)\n const qsGroupBy = normalizeQueryParam(query?.groupBy)\n\n const source = qsSort ?? qsGroupBy\n if (!source) {\n didInitRef.current = true\n return\n }\n\n const isDesc = !!qsSort && qsSort.startsWith('-')\n const base = stripSortDash(source)\n const order: 'asc' | 'desc' = isDesc ? 'desc' : 'asc'\n\n // Write BOTH fields so preview/export have the right values even if SortOrder is hidden\n setSort(applySortOrder(base, order))\n setSortOrder(order)\n\n const option = fieldOptions.find((f) => f.value === base)\n if (option) {\n setDisplayedValue(option)\n }\n\n didInitRef.current = true\n }, [id, query?.groupBy, query?.sort, sortRaw, fieldOptions, setSort, setSortOrder])\n\n // When user selects a different field, store it with the current order applied\n const onChange = (option: { id: string; label: ReactNode; value: string } | null) => {\n if (!option) {\n setSort('')\n setDisplayedValue(null)\n } else {\n setDisplayedValue(option)\n const next = applySortOrder(option.value, String(sortOrder) as 'asc' | 'desc')\n setSort(next)\n }\n }\n\n return (\n <div className={baseClass}>\n <FieldLabel label={props.field.label} path={props.path} />\n <ReactSelect\n className={baseClass}\n disabled={props.readOnly}\n getOptionValue={(option) => String(option.value)}\n inputId={`field-${props.path.replace(/\\./g, '__')}`}\n isClearable={true}\n isSortable={true}\n // @ts-expect-error react select option\n onChange={onChange}\n options={fieldOptions}\n // @ts-expect-error react select\n value={displayedValue}\n />\n </div>\n )\n}\n"],"names":["FieldLabel","ReactSelect","useConfig","useDocumentInfo","useField","useListQuery","React","useEffect","useMemo","useRef","useState","applySortOrder","normalizeQueryParam","stripSortDash","reduceFields","useImportExport","baseClass","SortBy","props","id","setValue","setSort","value","sortRaw","sortOrder","path","setSortOrder","collectionSlug","query","getEntityConfig","collection","displayedValue","setDisplayedValue","collectionConfig","fieldOptions","excludeUnsortable","fields","clean","option","find","f","didInitRef","current","length","qsSort","sort","qsGroupBy","groupBy","source","isDesc","startsWith","base","order","onChange","next","String","div","className","label","field","disabled","readOnly","getOptionValue","inputId","replace","isClearable","isSortable","options"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payloadcms/plugin-import-export",
|
|
3
|
-
"version": "3.83.0-canary.
|
|
3
|
+
"version": "3.83.0-canary.1",
|
|
4
4
|
"description": "Import-Export plugin for Payload",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"payload",
|
|
@@ -64,17 +64,17 @@
|
|
|
64
64
|
"csv-parse": "5.6.0",
|
|
65
65
|
"csv-stringify": "6.5.2",
|
|
66
66
|
"qs-esm": "8.0.1",
|
|
67
|
-
"@payloadcms/
|
|
68
|
-
"@payloadcms/
|
|
67
|
+
"@payloadcms/translations": "3.83.0-canary.1",
|
|
68
|
+
"@payloadcms/ui": "3.83.0-canary.1"
|
|
69
69
|
},
|
|
70
70
|
"devDependencies": {
|
|
71
71
|
"@payloadcms/eslint-config": "3.28.0",
|
|
72
|
-
"
|
|
73
|
-
"
|
|
72
|
+
"payload": "3.83.0-canary.1",
|
|
73
|
+
"@payloadcms/ui": "3.83.0-canary.1"
|
|
74
74
|
},
|
|
75
75
|
"peerDependencies": {
|
|
76
|
-
"@payloadcms/ui": "3.83.0-canary.
|
|
77
|
-
"payload": "3.83.0-canary.
|
|
76
|
+
"@payloadcms/ui": "3.83.0-canary.1",
|
|
77
|
+
"payload": "3.83.0-canary.1"
|
|
78
78
|
},
|
|
79
79
|
"homepage:": "https://payloadcms.com",
|
|
80
80
|
"scripts": {
|