@payloadcms/plugin-import-export 3.91.0-internal.c1569dc → 3.91.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/FieldsToExport/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAA;AAkBzD,eAAO,MAAM,cAAc,EAAE,0BA2E5B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/FieldsToExport/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAA;AAkBzD,eAAO,MAAM,cAAc,EAAE,0BA+E5B,CAAA"}
@@ -1,9 +1,9 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { FieldLabel, ReactSelect, useConfig, useDocumentInfo, useField, useListQuery } from '@payloadcms/ui';
4
- import React, { useEffect } from 'react';
4
+ import React, { useEffect, useMemo } from 'react';
5
5
  import { useImportExport } from '../ImportExportProvider/index.js';
6
- import { reduceFields } from './reduceFields.js';
6
+ import { filterSelectableFieldValues, reduceFields } from './reduceFields.js';
7
7
  const baseClass = 'field-type fields-to-export';
8
8
  export const FieldsToExport = (props)=>{
9
9
  const { id } = useDocumentInfo();
@@ -17,29 +17,32 @@ export const FieldsToExport = (props)=>{
17
17
  const collectionConfig = getEntityConfig({
18
18
  collectionSlug: collectionSlug ?? collection
19
19
  });
20
- const disabledFields = collectionConfig?.admin?.custom?.['plugin-import-export']?.disabledFields ?? [];
21
- const fieldOptions = reduceFields({
22
- disabledFields,
23
- fields: collectionConfig?.fields
24
- });
20
+ const fieldOptions = useMemo(()=>{
21
+ const disabledFields = collectionConfig?.admin?.custom?.['plugin-import-export']?.disabledFields ?? [];
22
+ return reduceFields({
23
+ disabledFields,
24
+ fields: collectionConfig?.fields
25
+ });
26
+ }, [
27
+ collectionConfig?.admin?.custom,
28
+ collectionConfig?.fields
29
+ ]);
25
30
  useEffect(()=>{
26
31
  if (id || !collectionSlug) {
27
32
  return;
28
33
  }
29
34
  const queryColumns = query?.columns;
30
- if (Array.isArray(queryColumns)) {
31
- const cleanColumns = queryColumns.filter((col)=>typeof col === 'string' && !col.startsWith('-'));
32
- // If columns are specified in the query, use them
33
- setValue(cleanColumns);
34
- } else {
35
- // Fallback if no columns in query
36
- setValue(collectionConfig?.admin?.defaultColumns ?? []);
37
- }
35
+ const initialColumns = Array.isArray(queryColumns) ? queryColumns.filter((column)=>typeof column === 'string' && !column.startsWith('-')) : collectionConfig?.admin?.defaultColumns ?? [];
36
+ setValue(filterSelectableFieldValues({
37
+ fieldOptions,
38
+ values: initialColumns
39
+ }));
38
40
  }, [
39
41
  id,
40
42
  collectionSlug,
41
43
  query?.columns,
42
44
  collectionConfig?.admin?.defaultColumns,
45
+ fieldOptions,
43
46
  setValue
44
47
  ]);
45
48
  const onChange = (options)=>{
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/FieldsToExport/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 } from 'react'\n\nimport { useImportExport } from '../ImportExportProvider/index.js'\nimport { reduceFields } from './reduceFields.js'\n\nconst baseClass = 'field-type fields-to-export'\n\nexport const FieldsToExport: SelectFieldClientComponent = (props) => {\n const { id } = useDocumentInfo()\n const { setValue, value } = useField<string[]>()\n const { value: collectionSlug } = useField<string>({ path: 'collectionSlug' })\n const { getEntityConfig } = useConfig()\n const { collection } = useImportExport()\n const { query } = useListQuery()\n\n const collectionConfig = getEntityConfig({ collectionSlug: collectionSlug ?? collection })\n\n const disabledFields =\n collectionConfig?.admin?.custom?.['plugin-import-export']?.disabledFields ?? []\n\n const fieldOptions = reduceFields({\n disabledFields,\n fields: collectionConfig?.fields,\n })\n\n useEffect(() => {\n if (id || !collectionSlug) {\n return\n }\n\n const queryColumns = query?.columns\n\n if (Array.isArray(queryColumns)) {\n const cleanColumns = queryColumns.filter(\n (col): col is string => typeof col === 'string' && !col.startsWith('-'),\n )\n // If columns are specified in the query, use them\n setValue(cleanColumns)\n } else {\n // Fallback if no columns in query\n setValue(collectionConfig?.admin?.defaultColumns ?? [])\n }\n }, [id, collectionSlug, query?.columns, collectionConfig?.admin?.defaultColumns, setValue])\n\n const onChange = (options: { id: string; label: ReactNode; value: string }[]) => {\n if (!options) {\n setValue([])\n return\n }\n\n const updatedValue = options.map((option) =>\n typeof option === 'object' ? option.value : option,\n )\n\n setValue(updatedValue)\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 isMulti={true}\n isSortable={true}\n // @ts-expect-error react select option\n onChange={onChange}\n options={fieldOptions}\n value={\n Array.isArray(value)\n ? value.map((val) => {\n const match = fieldOptions.find((opt) => opt.value === val)\n return match ? { ...match, id: val } : { id: val, label: val, value: val }\n })\n : []\n }\n />\n </div>\n )\n}\n"],"names":["FieldLabel","ReactSelect","useConfig","useDocumentInfo","useField","useListQuery","React","useEffect","useImportExport","reduceFields","baseClass","FieldsToExport","props","id","setValue","value","collectionSlug","path","getEntityConfig","collection","query","collectionConfig","disabledFields","admin","custom","fieldOptions","fields","queryColumns","columns","Array","isArray","cleanColumns","filter","col","startsWith","defaultColumns","onChange","options","updatedValue","map","option","div","className","label","field","disabled","readOnly","getOptionValue","String","inputId","replace","isClearable","isMulti","isSortable","val","match","find","opt"],"mappings":"AAAA;;AAKA,SACEA,UAAU,EACVC,WAAW,EACXC,SAAS,EACTC,eAAe,EACfC,QAAQ,EACRC,YAAY,QACP,iBAAgB;AACvB,OAAOC,SAASC,SAAS,QAAQ,QAAO;AAExC,SAASC,eAAe,QAAQ,mCAAkC;AAClE,SAASC,YAAY,QAAQ,oBAAmB;AAEhD,MAAMC,YAAY;AAElB,OAAO,MAAMC,iBAA6C,CAACC;IACzD,MAAM,EAAEC,EAAE,EAAE,GAAGV;IACf,MAAM,EAAEW,QAAQ,EAAEC,KAAK,EAAE,GAAGX;IAC5B,MAAM,EAAEW,OAAOC,cAAc,EAAE,GAAGZ,SAAiB;QAAEa,MAAM;IAAiB;IAC5E,MAAM,EAAEC,eAAe,EAAE,GAAGhB;IAC5B,MAAM,EAAEiB,UAAU,EAAE,GAAGX;IACvB,MAAM,EAAEY,KAAK,EAAE,GAAGf;IAElB,MAAMgB,mBAAmBH,gBAAgB;QAAEF,gBAAgBA,kBAAkBG;IAAW;IAExF,MAAMG,iBACJD,kBAAkBE,OAAOC,QAAQ,CAAC,uBAAuB,EAAEF,kBAAkB,EAAE;IAEjF,MAAMG,eAAehB,aAAa;QAChCa;QACAI,QAAQL,kBAAkBK;IAC5B;IAEAnB,UAAU;QACR,IAAIM,MAAM,CAACG,gBAAgB;YACzB;QACF;QAEA,MAAMW,eAAeP,OAAOQ;QAE5B,IAAIC,MAAMC,OAAO,CAACH,eAAe;YAC/B,MAAMI,eAAeJ,aAAaK,MAAM,CACtC,CAACC,MAAuB,OAAOA,QAAQ,YAAY,CAACA,IAAIC,UAAU,CAAC;YAErE,kDAAkD;YAClDpB,SAASiB;QACX,OAAO;YACL,kCAAkC;YAClCjB,SAASO,kBAAkBE,OAAOY,kBAAkB,EAAE;QACxD;IACF,GAAG;QAACtB;QAAIG;QAAgBI,OAAOQ;QAASP,kBAAkBE,OAAOY;QAAgBrB;KAAS;IAE1F,MAAMsB,WAAW,CAACC;QAChB,IAAI,CAACA,SAAS;YACZvB,SAAS,EAAE;YACX;QACF;QAEA,MAAMwB,eAAeD,QAAQE,GAAG,CAAC,CAACC,SAChC,OAAOA,WAAW,WAAWA,OAAOzB,KAAK,GAAGyB;QAG9C1B,SAASwB;IACX;IAEA,qBACE,MAACG;QAAIC,WAAWhC;;0BACd,KAACV;gBAAW2C,OAAO/B,MAAMgC,KAAK,CAACD,KAAK;gBAAE1B,MAAML,MAAMK,IAAI;;0BACtD,KAAChB;gBACCyC,WAAWhC;gBACXmC,UAAUjC,MAAMkC,QAAQ;gBACxBC,gBAAgB,CAACP,SAAWQ,OAAOR,OAAOzB,KAAK;gBAC/CkC,SAAS,CAAC,MAAM,EAAErC,MAAMK,IAAI,CAACiC,OAAO,CAAC,OAAO,OAAO;gBACnDC,aAAa;gBACbC,SAAS;gBACTC,YAAY;gBACZ,uCAAuC;gBACvCjB,UAAUA;gBACVC,SAASZ;gBACTV,OACEc,MAAMC,OAAO,CAACf,SACVA,MAAMwB,GAAG,CAAC,CAACe;oBACT,MAAMC,QAAQ9B,aAAa+B,IAAI,CAAC,CAACC,MAAQA,IAAI1C,KAAK,KAAKuC;oBACvD,OAAOC,QAAQ;wBAAE,GAAGA,KAAK;wBAAE1C,IAAIyC;oBAAI,IAAI;wBAAEzC,IAAIyC;wBAAKX,OAAOW;wBAAKvC,OAAOuC;oBAAI;gBAC3E,KACA,EAAE;;;;AAKhB,EAAC"}
1
+ {"version":3,"sources":["../../../src/components/FieldsToExport/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 } from 'react'\n\nimport { useImportExport } from '../ImportExportProvider/index.js'\nimport { filterSelectableFieldValues, reduceFields } from './reduceFields.js'\n\nconst baseClass = 'field-type fields-to-export'\n\nexport const FieldsToExport: SelectFieldClientComponent = (props) => {\n const { id } = useDocumentInfo()\n const { setValue, value } = useField<string[]>()\n const { value: collectionSlug } = useField<string>({ path: 'collectionSlug' })\n const { getEntityConfig } = useConfig()\n const { collection } = useImportExport()\n const { query } = useListQuery()\n\n const collectionConfig = getEntityConfig({ collectionSlug: collectionSlug ?? collection })\n\n const fieldOptions = useMemo(() => {\n const disabledFields =\n collectionConfig?.admin?.custom?.['plugin-import-export']?.disabledFields ?? []\n\n return reduceFields({\n disabledFields,\n fields: collectionConfig?.fields,\n })\n }, [collectionConfig?.admin?.custom, collectionConfig?.fields])\n useEffect(() => {\n if (id || !collectionSlug) {\n return\n }\n\n const queryColumns = query?.columns\n const initialColumns = Array.isArray(queryColumns)\n ? queryColumns.filter(\n (column): column is string => typeof column === 'string' && !column.startsWith('-'),\n )\n : (collectionConfig?.admin?.defaultColumns ?? [])\n\n setValue(filterSelectableFieldValues({ fieldOptions, values: initialColumns }))\n }, [\n id,\n collectionSlug,\n query?.columns,\n collectionConfig?.admin?.defaultColumns,\n fieldOptions,\n setValue,\n ])\n\n const onChange = (options: { id: string; label: ReactNode; value: string }[]) => {\n if (!options) {\n setValue([])\n return\n }\n\n const updatedValue = options.map((option) =>\n typeof option === 'object' ? option.value : option,\n )\n\n setValue(updatedValue)\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 isMulti={true}\n isSortable={true}\n // @ts-expect-error react select option\n onChange={onChange}\n options={fieldOptions}\n value={\n Array.isArray(value)\n ? value.map((val) => {\n const match = fieldOptions.find((opt) => opt.value === val)\n return match ? { ...match, id: val } : { id: val, label: val, value: val }\n })\n : []\n }\n />\n </div>\n )\n}\n"],"names":["FieldLabel","ReactSelect","useConfig","useDocumentInfo","useField","useListQuery","React","useEffect","useMemo","useImportExport","filterSelectableFieldValues","reduceFields","baseClass","FieldsToExport","props","id","setValue","value","collectionSlug","path","getEntityConfig","collection","query","collectionConfig","fieldOptions","disabledFields","admin","custom","fields","queryColumns","columns","initialColumns","Array","isArray","filter","column","startsWith","defaultColumns","values","onChange","options","updatedValue","map","option","div","className","label","field","disabled","readOnly","getOptionValue","String","inputId","replace","isClearable","isMulti","isSortable","val","match","find","opt"],"mappings":"AAAA;;AAKA,SACEA,UAAU,EACVC,WAAW,EACXC,SAAS,EACTC,eAAe,EACfC,QAAQ,EACRC,YAAY,QACP,iBAAgB;AACvB,OAAOC,SAASC,SAAS,EAAEC,OAAO,QAAQ,QAAO;AAEjD,SAASC,eAAe,QAAQ,mCAAkC;AAClE,SAASC,2BAA2B,EAAEC,YAAY,QAAQ,oBAAmB;AAE7E,MAAMC,YAAY;AAElB,OAAO,MAAMC,iBAA6C,CAACC;IACzD,MAAM,EAAEC,EAAE,EAAE,GAAGZ;IACf,MAAM,EAAEa,QAAQ,EAAEC,KAAK,EAAE,GAAGb;IAC5B,MAAM,EAAEa,OAAOC,cAAc,EAAE,GAAGd,SAAiB;QAAEe,MAAM;IAAiB;IAC5E,MAAM,EAAEC,eAAe,EAAE,GAAGlB;IAC5B,MAAM,EAAEmB,UAAU,EAAE,GAAGZ;IACvB,MAAM,EAAEa,KAAK,EAAE,GAAGjB;IAElB,MAAMkB,mBAAmBH,gBAAgB;QAAEF,gBAAgBA,kBAAkBG;IAAW;IAExF,MAAMG,eAAehB,QAAQ;QAC3B,MAAMiB,iBACJF,kBAAkBG,OAAOC,QAAQ,CAAC,uBAAuB,EAAEF,kBAAkB,EAAE;QAEjF,OAAOd,aAAa;YAClBc;YACAG,QAAQL,kBAAkBK;QAC5B;IACF,GAAG;QAACL,kBAAkBG,OAAOC;QAAQJ,kBAAkBK;KAAO;IAC9DrB,UAAU;QACR,IAAIQ,MAAM,CAACG,gBAAgB;YACzB;QACF;QAEA,MAAMW,eAAeP,OAAOQ;QAC5B,MAAMC,iBAAiBC,MAAMC,OAAO,CAACJ,gBACjCA,aAAaK,MAAM,CACjB,CAACC,SAA6B,OAAOA,WAAW,YAAY,CAACA,OAAOC,UAAU,CAAC,QAEhFb,kBAAkBG,OAAOW,kBAAkB,EAAE;QAElDrB,SAASN,4BAA4B;YAAEc;YAAcc,QAAQP;QAAe;IAC9E,GAAG;QACDhB;QACAG;QACAI,OAAOQ;QACPP,kBAAkBG,OAAOW;QACzBb;QACAR;KACD;IAED,MAAMuB,WAAW,CAACC;QAChB,IAAI,CAACA,SAAS;YACZxB,SAAS,EAAE;YACX;QACF;QAEA,MAAMyB,eAAeD,QAAQE,GAAG,CAAC,CAACC,SAChC,OAAOA,WAAW,WAAWA,OAAO1B,KAAK,GAAG0B;QAG9C3B,SAASyB;IACX;IAEA,qBACE,MAACG;QAAIC,WAAWjC;;0BACd,KAACZ;gBAAW8C,OAAOhC,MAAMiC,KAAK,CAACD,KAAK;gBAAE3B,MAAML,MAAMK,IAAI;;0BACtD,KAAClB;gBACC4C,WAAWjC;gBACXoC,UAAUlC,MAAMmC,QAAQ;gBACxBC,gBAAgB,CAACP,SAAWQ,OAAOR,OAAO1B,KAAK;gBAC/CmC,SAAS,CAAC,MAAM,EAAEtC,MAAMK,IAAI,CAACkC,OAAO,CAAC,OAAO,OAAO;gBACnDC,aAAa;gBACbC,SAAS;gBACTC,YAAY;gBACZ,uCAAuC;gBACvCjB,UAAUA;gBACVC,SAAShB;gBACTP,OACEe,MAAMC,OAAO,CAAChB,SACVA,MAAMyB,GAAG,CAAC,CAACe;oBACT,MAAMC,QAAQlC,aAAamC,IAAI,CAAC,CAACC,MAAQA,IAAI3C,KAAK,KAAKwC;oBACvD,OAAOC,QAAQ;wBAAE,GAAGA,KAAK;wBAAE3C,IAAI0C;oBAAI,IAAI;wBAAE1C,IAAI0C;wBAAKX,OAAOW;wBAAKxC,OAAOwC;oBAAI;gBAC3E,KACA,EAAE;;;;AAKhB,EAAC"}
@@ -1,5 +1,11 @@
1
1
  import type { ClientField } from 'payload';
2
2
  import React from 'react';
3
+ export declare const filterSelectableFieldValues: ({ fieldOptions, values, }: {
4
+ fieldOptions: {
5
+ value: string;
6
+ }[];
7
+ values: string[];
8
+ }) => string[];
3
9
  export declare const reduceFields: ({ disabledFields, excludeUnsortable, fields, labelPrefix, path, }: {
4
10
  disabledFields?: string[];
5
11
  excludeUnsortable?: boolean;
@@ -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,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"}
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;AAEvC,eAAO,MAAM,2BAA2B,8BAGrC;IACD,YAAY,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACjC,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB,KAAG,MAAM,EAIT,CAAA;AAyCD,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"}
@@ -1,6 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { fieldAffectsData, fieldHasSubFields } from 'payload/shared';
3
3
  import React, { Fragment } from 'react';
4
+ export const filterSelectableFieldValues = ({ fieldOptions, values })=>{
5
+ const selectableValues = new Set(fieldOptions.map((field)=>field.value));
6
+ return values.filter((value)=>selectableValues.has(value));
7
+ };
4
8
  const createNestedClientFieldPath = (parentPath, field)=>{
5
9
  if (parentPath) {
6
10
  if (fieldAffectsData(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 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"}
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\nexport const filterSelectableFieldValues = ({\n fieldOptions,\n values,\n}: {\n fieldOptions: { value: string }[]\n values: string[]\n}): string[] => {\n const selectableValues = new Set(fieldOptions.map((field) => field.value))\n\n return values.filter((value) => selectableValues.has(value))\n}\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","filterSelectableFieldValues","fieldOptions","values","selectableValues","Set","map","field","value","filter","has","createNestedClientFieldPath","parentPath","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"],"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.91.0-internal.c1569dc",
3
+ "version": "3.91.0",
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/translations": "3.91.0-internal.c1569dc",
68
- "@payloadcms/ui": "3.91.0-internal.c1569dc"
67
+ "@payloadcms/ui": "3.91.0",
68
+ "@payloadcms/translations": "3.91.0"
69
69
  },
70
70
  "devDependencies": {
71
71
  "@payloadcms/eslint-config": "3.28.0",
72
- "@payloadcms/ui": "3.91.0-internal.c1569dc",
73
- "payload": "3.91.0-internal.c1569dc"
72
+ "@payloadcms/ui": "3.91.0",
73
+ "payload": "3.91.0"
74
74
  },
75
75
  "peerDependencies": {
76
- "@payloadcms/ui": "3.91.0-internal.c1569dc",
77
- "payload": "3.91.0-internal.c1569dc"
76
+ "@payloadcms/ui": "3.91.0",
77
+ "payload": "3.91.0"
78
78
  },
79
79
  "homepage:": "https://payloadcms.com",
80
80
  "scripts": {