@payloadcms/ui 3.0.0-alpha.46 → 3.0.0-alpha.48
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/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/DrawerContent.js +22 -14
- package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
- package/dist/elements/DocumentDrawer/types.d.ts +3 -1
- package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/types.js.map +1 -1
- package/dist/elements/DocumentHeader/index.d.ts.map +1 -1
- package/dist/elements/DocumentHeader/index.js +2 -3
- package/dist/elements/DocumentHeader/index.js.map +1 -1
- package/dist/elements/RenderTitle/index.d.ts +1 -2
- package/dist/elements/RenderTitle/index.d.ts.map +1 -1
- package/dist/elements/RenderTitle/index.js +2 -3
- package/dist/elements/RenderTitle/index.js.map +1 -1
- package/dist/elements/RenderTitle/types.d.ts +1 -0
- package/dist/elements/RenderTitle/types.d.ts.map +1 -1
- package/dist/elements/RenderTitle/types.js.map +1 -1
- package/dist/elements/ThumbnailCard/index.d.ts.map +1 -1
- package/dist/elements/ThumbnailCard/index.js +8 -4
- package/dist/elements/ThumbnailCard/index.js.map +1 -1
- package/dist/elements/ThumbnailCard/types.d.ts +4 -2
- package/dist/elements/ThumbnailCard/types.d.ts.map +1 -1
- package/dist/elements/ThumbnailCard/types.js.map +1 -1
- package/dist/forms/Form/index.d.ts.map +1 -1
- package/dist/forms/Form/index.js +5 -8
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/forms/Form/mergeServerFormState.d.ts +7 -0
- package/dist/forms/Form/mergeServerFormState.d.ts.map +1 -1
- package/dist/forms/Form/mergeServerFormState.js +7 -1
- package/dist/forms/Form/mergeServerFormState.js.map +1 -1
- package/dist/forms/Label/index.d.ts.map +1 -1
- package/dist/forms/Label/index.js +7 -1
- package/dist/forms/Label/index.js.map +1 -1
- package/dist/forms/RenderFields/RenderField.js +2 -2
- package/dist/forms/RenderFields/RenderField.js.map +1 -1
- package/dist/forms/fields/Array/index.d.ts.map +1 -1
- package/dist/forms/fields/Array/index.js +0 -1
- package/dist/forms/fields/Array/index.js.map +1 -1
- package/dist/forms/fields/Blocks/index.d.ts.map +1 -1
- package/dist/forms/fields/Blocks/index.js +0 -1
- package/dist/forms/fields/Blocks/index.js.map +1 -1
- package/dist/forms/fields/Checkbox/index.d.ts.map +1 -1
- package/dist/forms/fields/Checkbox/index.js +2 -1
- package/dist/forms/fields/Checkbox/index.js.map +1 -1
- package/dist/forms/fields/JSON/index.d.ts.map +1 -1
- package/dist/forms/fields/JSON/index.js +4 -2
- package/dist/forms/fields/JSON/index.js.map +1 -1
- package/dist/forms/fields/Relationship/optionsReducer.d.ts.map +1 -1
- package/dist/forms/fields/Relationship/optionsReducer.js +12 -8
- package/dist/forms/fields/Relationship/optionsReducer.js.map +1 -1
- package/dist/forms/fields/Tabs/index.d.ts.map +1 -1
- package/dist/forms/fields/Tabs/index.js +4 -5
- package/dist/forms/fields/Tabs/index.js.map +1 -1
- package/dist/forms/fields/Tabs/types.d.ts +2 -0
- package/dist/forms/fields/Tabs/types.d.ts.map +1 -1
- package/dist/forms/fields/Tabs/types.js.map +1 -1
- package/dist/forms/utilities/buildStateFromSchema/addFieldStatePromise.d.ts.map +1 -1
- package/dist/forms/utilities/buildStateFromSchema/addFieldStatePromise.js +11 -1
- package/dist/forms/utilities/buildStateFromSchema/addFieldStatePromise.js.map +1 -1
- package/dist/hooks/usePayloadAPI.d.ts.map +1 -1
- package/dist/hooks/usePayloadAPI.js +12 -2
- package/dist/hooks/usePayloadAPI.js.map +1 -1
- package/dist/prod/styles.css +1 -1
- package/dist/utilities/buildComponentMap/mapFields.d.ts.map +1 -1
- package/dist/utilities/buildComponentMap/mapFields.js +6 -9
- package/dist/utilities/buildComponentMap/mapFields.js.map +1 -1
- package/dist/utilities/formatDocTitle.d.ts +7 -7
- package/dist/utilities/formatDocTitle.d.ts.map +1 -1
- package/dist/utilities/formatDocTitle.js +21 -16
- package/dist/utilities/formatDocTitle.js.map +1 -1
- package/dist/utilities/generateFieldID.d.ts +2 -0
- package/dist/utilities/generateFieldID.d.ts.map +1 -0
- package/dist/utilities/generateFieldID.js +5 -0
- package/dist/utilities/generateFieldID.js.map +1 -0
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/forms/fields/JSON/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientValidate } from 'payload/types'\n\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport type { Props } from './types.js'\n\nimport { CodeEditor } from '../../../elements/CodeEditor/index.js'\nimport LabelComp from '../../Label/index.js'\nimport useField from '../../useField/index.js'\nimport { withCondition } from '../../withCondition/index.js'\nimport { fieldBaseClass } from '../shared.js'\nimport './index.scss'\n\nconst baseClass = 'json-field'\n\nconst JSONField: React.FC<Props> = (props) => {\n const {\n name,\n AfterInput,\n BeforeInput,\n Description,\n Error,\n Label: LabelFromProps,\n className,\n label,\n path: pathFromProps,\n readOnly,\n required,\n style,\n validate,\n width,\n } = props\n\n const Label = LabelFromProps || <LabelComp label={label} required={required} />\n\n const editorOptions = 'editorOptions' in props ? props.editorOptions : {}\n\n const [stringValue, setStringValue] = useState<string>()\n const [jsonError, setJsonError] = useState<string>()\n const [hasLoadedValue, setHasLoadedValue] = useState(false)\n\n const memoizedValidate: ClientValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function')\n return validate(value, { ...options, jsonError, required })\n },\n [validate, required, jsonError],\n )\n\n const {\n initialValue,\n // path,\n setValue,\n showError,\n value,\n } = useField<string>({\n path: pathFromProps || name,\n validate: memoizedValidate,\n })\n\n const handleChange = useCallback(\n (val) => {\n if (readOnly) return\n setStringValue(val)\n\n try {\n setValue(JSON.parse(val))\n setJsonError(undefined)\n } catch (e) {\n setJsonError(e)\n }\n },\n [readOnly, setValue, setStringValue],\n )\n\n useEffect(() => {\n if (hasLoadedValue) return\n setStringValue(JSON.stringify(value ? value : initialValue, null, 2))\n setHasLoadedValue(true)\n }, [initialValue, value, hasLoadedValue])\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n showError && 'error',\n readOnly && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')}\n style={{\n ...style,\n width,\n }}\n >\n {Error}\n {Label}\n <div>\n {BeforeInput}\n <CodeEditor\n defaultLanguage=\"json\"\n onChange={handleChange}\n options={editorOptions}\n readOnly={readOnly}\n value={stringValue}\n />\n {AfterInput}\n </div>\n {Description}\n </div>\n )\n}\n\nexport default withCondition(JSONField)\n"],"names":["React","useCallback","useEffect","useState","CodeEditor","LabelComp","useField","withCondition","fieldBaseClass","baseClass","JSONField","props","name","AfterInput","BeforeInput","Description","Error","Label","LabelFromProps","className","label","path","pathFromProps","readOnly","required","style","validate","width","editorOptions","stringValue","setStringValue","jsonError","setJsonError","hasLoadedValue","setHasLoadedValue","memoizedValidate","value","options","initialValue","setValue","showError","handleChange","val","JSON","parse","undefined","e","
|
|
1
|
+
{"version":3,"sources":["../../../../src/forms/fields/JSON/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientValidate } from 'payload/types'\n\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport type { Props } from './types.js'\n\nimport { CodeEditor } from '../../../elements/CodeEditor/index.js'\nimport LabelComp from '../../Label/index.js'\nimport useField from '../../useField/index.js'\nimport { withCondition } from '../../withCondition/index.js'\nimport { fieldBaseClass } from '../shared.js'\nimport './index.scss'\n\nconst baseClass = 'json-field'\n\nconst JSONField: React.FC<Props> = (props) => {\n const {\n name,\n AfterInput,\n BeforeInput,\n Description,\n Error,\n Label: LabelFromProps,\n className,\n label,\n path: pathFromProps,\n readOnly,\n required,\n style,\n validate,\n width,\n } = props\n\n const Label = LabelFromProps || <LabelComp label={label} required={required} />\n\n // eslint-disable-next-line react/destructuring-assignment\n const editorOptions = 'editorOptions' in props ? props.editorOptions : {}\n\n const [stringValue, setStringValue] = useState<string>()\n const [jsonError, setJsonError] = useState<string>()\n const [hasLoadedValue, setHasLoadedValue] = useState(false)\n\n const memoizedValidate: ClientValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function')\n return validate(value, { ...options, jsonError, required })\n },\n [validate, required, jsonError],\n )\n\n const {\n initialValue,\n // path,\n setValue,\n showError,\n value,\n } = useField<string>({\n path: pathFromProps || name,\n validate: memoizedValidate,\n })\n\n const handleChange = useCallback(\n (val) => {\n if (readOnly) return\n setStringValue(val)\n\n try {\n setValue(val ? JSON.stringify(JSON.parse(val)) : null)\n setJsonError(undefined)\n } catch (e) {\n setValue(val ? val : null)\n setJsonError(e)\n }\n },\n [readOnly, setValue, setStringValue],\n )\n\n useEffect(() => {\n if (hasLoadedValue) return\n setStringValue(\n value || initialValue ? JSON.stringify(value ? value : initialValue, null, 2) : '',\n )\n setHasLoadedValue(true)\n }, [initialValue, value, hasLoadedValue])\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n showError && 'error',\n readOnly && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')}\n style={{\n ...style,\n width,\n }}\n >\n {Error}\n {Label}\n <div>\n {BeforeInput}\n <CodeEditor\n defaultLanguage=\"json\"\n onChange={handleChange}\n options={editorOptions}\n readOnly={readOnly}\n value={stringValue}\n />\n {AfterInput}\n </div>\n {Description}\n </div>\n )\n}\n\nexport default withCondition(JSONField)\n"],"names":["React","useCallback","useEffect","useState","CodeEditor","LabelComp","useField","withCondition","fieldBaseClass","baseClass","JSONField","props","name","AfterInput","BeforeInput","Description","Error","Label","LabelFromProps","className","label","path","pathFromProps","readOnly","required","style","validate","width","editorOptions","stringValue","setStringValue","jsonError","setJsonError","hasLoadedValue","setHasLoadedValue","memoizedValidate","value","options","initialValue","setValue","showError","handleChange","val","JSON","stringify","parse","undefined","e","div","filter","Boolean","join","defaultLanguage","onChange"],"mappings":"AAAA;AAGA,OAAOA,SAASC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,QAAO;AAI/D,SAASC,UAAU,QAAQ,wCAAuC;AAClE,OAAOC,eAAe,uBAAsB;AAC5C,OAAOC,cAAc,0BAAyB;AAC9C,SAASC,aAAa,QAAQ,+BAA8B;AAC5D,SAASC,cAAc,QAAQ,eAAc;AAG7C,MAAMC,YAAY;AAElB,MAAMC,YAA6B,CAACC;IAClC,MAAM,EACJC,IAAI,EACJC,UAAU,EACVC,WAAW,EACXC,WAAW,EACXC,KAAK,EACLC,OAAOC,cAAc,EACrBC,SAAS,EACTC,KAAK,EACLC,MAAMC,aAAa,EACnBC,QAAQ,EACRC,QAAQ,EACRC,KAAK,EACLC,QAAQ,EACRC,KAAK,EACN,GAAGhB;IAEJ,MAAMM,QAAQC,gCAAkB,oBAACb;QAAUe,OAAOA;QAAOI,UAAUA;;IAEnE,0DAA0D;IAC1D,MAAMI,gBAAgB,mBAAmBjB,QAAQA,MAAMiB,aAAa,GAAG,CAAC;IAExE,MAAM,CAACC,aAAaC,eAAe,GAAG3B;IACtC,MAAM,CAAC4B,WAAWC,aAAa,GAAG7B;IAClC,MAAM,CAAC8B,gBAAgBC,kBAAkB,GAAG/B,SAAS;IAErD,MAAMgC,mBAAmClC,YACvC,CAACmC,OAAOC;QACN,IAAI,OAAOX,aAAa,YACtB,OAAOA,SAASU,OAAO;YAAE,GAAGC,OAAO;YAAEN;YAAWP;QAAS;IAC7D,GACA;QAACE;QAAUF;QAAUO;KAAU;IAGjC,MAAM,EACJO,YAAY,EACZ,QAAQ;IACRC,QAAQ,EACRC,SAAS,EACTJ,KAAK,EACN,GAAG9B,SAAiB;QACnBe,MAAMC,iBAAiBV;QACvBc,UAAUS;IACZ;IAEA,MAAMM,eAAexC,YACnB,CAACyC;QACC,IAAInB,UAAU;QACdO,eAAeY;QAEf,IAAI;YACFH,SAASG,MAAMC,KAAKC,SAAS,CAACD,KAAKE,KAAK,CAACH,QAAQ;YACjDV,aAAac;QACf,EAAE,OAAOC,GAAG;YACVR,SAASG,MAAMA,MAAM;YACrBV,aAAae;QACf;IACF,GACA;QAACxB;QAAUgB;QAAUT;KAAe;IAGtC5B,UAAU;QACR,IAAI+B,gBAAgB;QACpBH,eACEM,SAASE,eAAeK,KAAKC,SAAS,CAACR,QAAQA,QAAQE,cAAc,MAAM,KAAK;QAElFJ,kBAAkB;IACpB,GAAG;QAACI;QAAcF;QAAOH;KAAe;IAExC,qBACE,oBAACe;QACC7B,WAAW;YACTX;YACAC;YACAU;YACAqB,aAAa;YACbjB,YAAY;SACb,CACE0B,MAAM,CAACC,SACPC,IAAI,CAAC;QACR1B,OAAO;YACL,GAAGA,KAAK;YACRE;QACF;OAECX,OACAC,qBACD,oBAAC+B,aACElC,2BACD,oBAACV;QACCgD,iBAAgB;QAChBC,UAAUZ;QACVJ,SAAST;QACTL,UAAUA;QACVa,OAAOP;QAERhB,aAEFE;AAGP;AAEA,eAAeR,cAAcG,WAAU"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optionsReducer.d.ts","sourceRoot":"","sources":["../../../../src/forms/fields/Relationship/optionsReducer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAU,WAAW,EAAE,MAAM,YAAY,CAAA;AAyB7D,QAAA,MAAM,cAAc,UAAW,WAAW,EAAE,UAAU,MAAM,KAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"optionsReducer.d.ts","sourceRoot":"","sources":["../../../../src/forms/fields/Relationship/optionsReducer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAU,WAAW,EAAE,MAAM,YAAY,CAAA;AAyB7D,QAAA,MAAM,cAAc,UAAW,WAAW,EAAE,UAAU,MAAM,KAAG,WAAW,EAmGzE,CAAA;AAED,eAAe,cAAc,CAAA"}
|
|
@@ -35,14 +35,16 @@ const optionsReducer = (state, action)=>{
|
|
|
35
35
|
...state
|
|
36
36
|
];
|
|
37
37
|
const docTitle = formatDocTitle({
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
collectionConfig: collection,
|
|
39
|
+
data: doc,
|
|
40
|
+
dateFormat: config.admin.dateFormat,
|
|
41
|
+
fallback: `${i18n.t('general:untitled')} - ID: ${doc.id}`,
|
|
42
|
+
i18n
|
|
41
43
|
});
|
|
42
44
|
const foundOptionGroup = newOptions.find((optionGroup)=>optionGroup.label === collection.labels.plural);
|
|
43
45
|
const foundOption = foundOptionGroup?.options?.find((option)=>option.value === doc.id);
|
|
44
46
|
if (foundOption) {
|
|
45
|
-
foundOption.label = docTitle
|
|
47
|
+
foundOption.label = docTitle;
|
|
46
48
|
foundOption.relationTo = relation;
|
|
47
49
|
}
|
|
48
50
|
return newOptions;
|
|
@@ -63,14 +65,16 @@ const optionsReducer = (state, action)=>{
|
|
|
63
65
|
relationTo: relation
|
|
64
66
|
});
|
|
65
67
|
const docTitle = formatDocTitle({
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
68
|
+
collectionConfig: collection,
|
|
69
|
+
data: doc,
|
|
70
|
+
dateFormat: config.admin.dateFormat,
|
|
71
|
+
fallback: `${i18n.t('general:untitled')} - ID: ${doc.id}`,
|
|
72
|
+
i18n
|
|
69
73
|
});
|
|
70
74
|
return [
|
|
71
75
|
...docSubOptions,
|
|
72
76
|
{
|
|
73
|
-
label: docTitle
|
|
77
|
+
label: docTitle,
|
|
74
78
|
relationTo: relation,
|
|
75
79
|
value: doc.id
|
|
76
80
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/forms/fields/Relationship/optionsReducer.ts"],"sourcesContent":["import { getTranslation } from '@payloadcms/translations'\n\nimport type { Action, Option, OptionGroup } from './types.js'\n\nimport { formatDocTitle } from '../../../utilities/formatDocTitle.js'\n\nconst reduceToIDs = (options) =>\n options.reduce((ids, option) => {\n if (option.options) {\n return [...ids, ...reduceToIDs(option.options)]\n }\n\n return [...ids, { id: option.value, relationTo: option.relationTo }]\n }, [])\n\nconst sortOptions = (options: Option[]): Option[] =>\n options.sort((a: Option, b: Option) => {\n if (\n typeof a?.label?.localeCompare === 'function' &&\n typeof b?.label?.localeCompare === 'function'\n ) {\n return a.label.localeCompare(b.label)\n }\n\n return 0\n })\n\nconst optionsReducer = (state: OptionGroup[], action: Action): OptionGroup[] => {\n switch (action.type) {\n case 'CLEAR': {\n return []\n }\n\n case 'UPDATE': {\n const { collection, config, doc, i18n } = action\n const relation = collection.slug\n const newOptions = [...state]\n\n const docTitle = formatDocTitle({\n
|
|
1
|
+
{"version":3,"sources":["../../../../src/forms/fields/Relationship/optionsReducer.ts"],"sourcesContent":["import { getTranslation } from '@payloadcms/translations'\n\nimport type { Action, Option, OptionGroup } from './types.js'\n\nimport { formatDocTitle } from '../../../utilities/formatDocTitle.js'\n\nconst reduceToIDs = (options) =>\n options.reduce((ids, option) => {\n if (option.options) {\n return [...ids, ...reduceToIDs(option.options)]\n }\n\n return [...ids, { id: option.value, relationTo: option.relationTo }]\n }, [])\n\nconst sortOptions = (options: Option[]): Option[] =>\n options.sort((a: Option, b: Option) => {\n if (\n typeof a?.label?.localeCompare === 'function' &&\n typeof b?.label?.localeCompare === 'function'\n ) {\n return a.label.localeCompare(b.label)\n }\n\n return 0\n })\n\nconst optionsReducer = (state: OptionGroup[], action: Action): OptionGroup[] => {\n switch (action.type) {\n case 'CLEAR': {\n return []\n }\n\n case 'UPDATE': {\n const { collection, config, doc, i18n } = action\n const relation = collection.slug\n const newOptions = [...state]\n\n const docTitle = formatDocTitle({\n collectionConfig: collection,\n data: doc,\n dateFormat: config.admin.dateFormat,\n fallback: `${i18n.t('general:untitled')} - ID: ${doc.id}`,\n i18n,\n })\n\n const foundOptionGroup = newOptions.find(\n (optionGroup) => optionGroup.label === collection.labels.plural,\n )\n const foundOption = foundOptionGroup?.options?.find((option) => option.value === doc.id)\n\n if (foundOption) {\n foundOption.label = docTitle\n foundOption.relationTo = relation\n }\n\n return newOptions\n }\n\n case 'ADD': {\n const { collection, config, docs, i18n, ids = [], sort } = action\n const relation = collection.slug\n const loadedIDs = reduceToIDs(state)\n const newOptions = [...state]\n const optionsToAddTo = newOptions.find(\n (optionGroup) => optionGroup.label === collection.labels.plural,\n )\n const newSubOptions = docs.reduce((docSubOptions, doc) => {\n if (\n loadedIDs.filter((item) => item.id === doc.id && item.relationTo === relation).length ===\n 0\n ) {\n loadedIDs.push({ id: doc.id, relationTo: relation })\n\n const docTitle = formatDocTitle({\n collectionConfig: collection,\n data: doc,\n dateFormat: config.admin.dateFormat,\n fallback: `${i18n.t('general:untitled')} - ID: ${doc.id}`,\n i18n,\n })\n\n return [\n ...docSubOptions,\n {\n label: docTitle,\n relationTo: relation,\n value: doc.id,\n },\n ]\n }\n\n return docSubOptions\n }, [])\n\n ids.forEach((id) => {\n if (\n loadedIDs.filter((item) => item.id === id && item.relationTo === relation).length === 0\n ) {\n loadedIDs.push({ id, relationTo: relation })\n newSubOptions.push({\n label: `${i18n.t('general:untitled')} - ID: ${id}`,\n relationTo: relation,\n value: id,\n })\n }\n })\n\n if (optionsToAddTo) {\n const subOptions = [...optionsToAddTo.options, ...newSubOptions]\n\n optionsToAddTo.options = sort ? sortOptions(subOptions) : subOptions\n } else {\n newOptions.push({\n label: getTranslation(collection.labels.plural, i18n),\n options: sort ? sortOptions(newSubOptions) : newSubOptions,\n })\n }\n\n return newOptions\n }\n\n default: {\n return state\n }\n }\n}\n\nexport default optionsReducer\n"],"names":["getTranslation","formatDocTitle","reduceToIDs","options","reduce","ids","option","id","value","relationTo","sortOptions","sort","a","b","label","localeCompare","optionsReducer","state","action","type","collection","config","doc","i18n","relation","slug","newOptions","docTitle","collectionConfig","data","dateFormat","admin","fallback","t","foundOptionGroup","find","optionGroup","labels","plural","foundOption","docs","loadedIDs","optionsToAddTo","newSubOptions","docSubOptions","filter","item","length","push","forEach","subOptions"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/forms/fields/Tabs/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAE/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAWvC,OAAO,cAAc,CAAA;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/forms/fields/Tabs/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAE/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAWvC,OAAO,cAAc,CAAA;;AAkJrB,wBAAuC"}
|
|
@@ -14,7 +14,7 @@ import { TabComponent } from './Tab/index.js';
|
|
|
14
14
|
import { TabsProvider } from './provider.js';
|
|
15
15
|
const baseClass = 'tabs-field';
|
|
16
16
|
const TabsField = (props)=>{
|
|
17
|
-
const { name, Description, className, fieldMap, forceRender = false, indexPath, path: pathFromProps, permissions, readOnly } = props;
|
|
17
|
+
const { name, Description, className, fieldMap, forceRender = false, indexPath, path: pathFromProps, permissions, readOnly, tabs = [] } = props;
|
|
18
18
|
const { path: pathFromContext, schemaPath } = useFieldPath();
|
|
19
19
|
const path = pathFromContext || pathFromProps || name;
|
|
20
20
|
const { getPreference, setPreference } = usePreferences();
|
|
@@ -23,7 +23,6 @@ const TabsField = (props)=>{
|
|
|
23
23
|
const isWithinCollapsible = useCollapsible();
|
|
24
24
|
const [activeTabIndex, setActiveTabIndex] = useState(0);
|
|
25
25
|
const tabsPrefKey = `tabs-${indexPath}`;
|
|
26
|
-
const tabs = 'tabs' in props ? props.tabs : [];
|
|
27
26
|
useEffect(()=>{
|
|
28
27
|
const getInitialPref = async ()=>{
|
|
29
28
|
const existingPreferences = await getPreference(preferencesKey);
|
|
@@ -40,7 +39,7 @@ const TabsField = (props)=>{
|
|
|
40
39
|
const handleTabChange = useCallback(async (incomingTabIndex)=>{
|
|
41
40
|
setActiveTabIndex(incomingTabIndex);
|
|
42
41
|
const existingPreferences = await getPreference(preferencesKey);
|
|
43
|
-
setPreference(preferencesKey, {
|
|
42
|
+
void setPreference(preferencesKey, {
|
|
44
43
|
...existingPreferences,
|
|
45
44
|
...path ? {
|
|
46
45
|
fields: {
|
|
@@ -95,8 +94,8 @@ const TabsField = (props)=>{
|
|
|
95
94
|
activeTabConfig.label && `${baseClass}__tabConfigLabel-${toKebabCase(getTranslation(activeTabConfig.label, i18n))}`
|
|
96
95
|
].filter(Boolean).join(' ')
|
|
97
96
|
}, Description, /*#__PURE__*/ React.createElement(FieldPathProvider, {
|
|
98
|
-
path: '
|
|
99
|
-
schemaPath: schemaPath
|
|
97
|
+
path: `${path ? `${path}.` : ''}${activeTabConfig.name ? `${activeTabConfig.name}` : ''}`,
|
|
98
|
+
schemaPath: `${schemaPath ? `${schemaPath}` : ''}${activeTabConfig.name ? `.${activeTabConfig.name}` : ''}`
|
|
100
99
|
}, /*#__PURE__*/ React.createElement(RenderFields, {
|
|
101
100
|
fieldMap: activeTabConfig.subfields,
|
|
102
101
|
forceRender: forceRender,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/forms/fields/Tabs/index.tsx"],"sourcesContent":["'use client'\nimport type { DocumentPreferences } from 'payload/types'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { toKebabCase } from 'payload/utilities'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport type { Props } from './types.js'\n\nimport { useCollapsible } from '../../../elements/Collapsible/provider.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { usePreferences } from '../../../providers/Preferences/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { FieldPathProvider, useFieldPath } from '../../FieldPathProvider/index.js'\nimport RenderFields from '../../RenderFields/index.js'\nimport { withCondition } from '../../withCondition/index.js'\nimport { fieldBaseClass } from '../shared.js'\nimport { TabComponent } from './Tab/index.js'\nimport './index.scss'\nimport { TabsProvider } from './provider.js'\n\nconst baseClass = 'tabs-field'\n\nconst TabsField: React.FC<Props> = (props) => {\n const {\n name,\n Description,\n className,\n fieldMap,\n forceRender = false,\n indexPath,\n path: pathFromProps,\n permissions,\n readOnly,\n } = props\n\n const { path: pathFromContext, schemaPath } = useFieldPath()\n const path = pathFromContext || pathFromProps || name\n const { getPreference, setPreference } = usePreferences()\n const { preferencesKey } = useDocumentInfo()\n const { i18n } = useTranslation()\n const isWithinCollapsible = useCollapsible()\n const [activeTabIndex, setActiveTabIndex] = useState<number>(0)\n const tabsPrefKey = `tabs-${indexPath}`\n\n
|
|
1
|
+
{"version":3,"sources":["../../../../src/forms/fields/Tabs/index.tsx"],"sourcesContent":["'use client'\nimport type { DocumentPreferences } from 'payload/types'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { toKebabCase } from 'payload/utilities'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport type { Props } from './types.js'\n\nimport { useCollapsible } from '../../../elements/Collapsible/provider.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { usePreferences } from '../../../providers/Preferences/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { FieldPathProvider, useFieldPath } from '../../FieldPathProvider/index.js'\nimport RenderFields from '../../RenderFields/index.js'\nimport { withCondition } from '../../withCondition/index.js'\nimport { fieldBaseClass } from '../shared.js'\nimport { TabComponent } from './Tab/index.js'\nimport './index.scss'\nimport { TabsProvider } from './provider.js'\n\nconst baseClass = 'tabs-field'\n\nconst TabsField: React.FC<Props> = (props) => {\n const {\n name,\n Description,\n className,\n fieldMap,\n forceRender = false,\n indexPath,\n path: pathFromProps,\n permissions,\n readOnly,\n tabs = [],\n } = props\n\n const { path: pathFromContext, schemaPath } = useFieldPath()\n const path = pathFromContext || pathFromProps || name\n const { getPreference, setPreference } = usePreferences()\n const { preferencesKey } = useDocumentInfo()\n const { i18n } = useTranslation()\n const isWithinCollapsible = useCollapsible()\n const [activeTabIndex, setActiveTabIndex] = useState<number>(0)\n const tabsPrefKey = `tabs-${indexPath}`\n\n useEffect(() => {\n const getInitialPref = async () => {\n const existingPreferences: DocumentPreferences = await getPreference(preferencesKey)\n const initialIndex = path\n ? existingPreferences?.fields?.[path]?.tabIndex\n : existingPreferences?.fields?.[tabsPrefKey]?.tabIndex\n setActiveTabIndex(initialIndex || 0)\n }\n void getInitialPref()\n }, [path, getPreference, preferencesKey, tabsPrefKey])\n\n const handleTabChange = useCallback(\n async (incomingTabIndex: number) => {\n setActiveTabIndex(incomingTabIndex)\n\n const existingPreferences: DocumentPreferences = await getPreference(preferencesKey)\n\n void setPreference(preferencesKey, {\n ...existingPreferences,\n ...(path\n ? {\n fields: {\n ...(existingPreferences?.fields || {}),\n [path]: {\n ...existingPreferences?.fields?.[path],\n tabIndex: incomingTabIndex,\n },\n },\n }\n : {\n fields: {\n ...existingPreferences?.fields,\n [tabsPrefKey]: {\n ...existingPreferences?.fields?.[tabsPrefKey],\n tabIndex: incomingTabIndex,\n },\n },\n }),\n })\n },\n [preferencesKey, getPreference, setPreference, path, tabsPrefKey],\n )\n\n const activeTabConfig = tabs[activeTabIndex]\n\n return (\n <div\n className={[\n fieldBaseClass,\n className,\n baseClass,\n isWithinCollapsible && `${baseClass}--within-collapsible`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <TabsProvider>\n <div className={`${baseClass}__tabs-wrap`}>\n <div className={`${baseClass}__tabs`}>\n {tabs.map((tab, tabIndex) => {\n return (\n <TabComponent\n isActive={activeTabIndex === tabIndex}\n key={tabIndex}\n parentPath={path}\n setIsActive={() => handleTabChange(tabIndex)}\n tab={tab}\n />\n )\n })}\n </div>\n </div>\n <div className={`${baseClass}__content-wrap`}>\n {activeTabConfig && (\n <React.Fragment>\n <div\n className={[\n `${baseClass}__tab`,\n activeTabConfig.label &&\n `${baseClass}__tabConfigLabel-${toKebabCase(\n getTranslation(activeTabConfig.label, i18n),\n )}`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n {Description}\n <FieldPathProvider\n path={`${path ? `${path}.` : ''}${activeTabConfig.name ? `${activeTabConfig.name}` : ''}`}\n schemaPath={`${schemaPath ? `${schemaPath}` : ''}${activeTabConfig.name ? `.${activeTabConfig.name}` : ''}`}\n >\n <RenderFields\n fieldMap={activeTabConfig.subfields}\n forceRender={forceRender}\n // indexPath={indexPath}\n key={\n activeTabConfig.label\n ? getTranslation(activeTabConfig.label, i18n)\n : activeTabConfig['name']\n }\n margins=\"small\"\n // permissions={\n // 'name' in activeTabConfig && permissions?.[activeTabConfig.name]\n // ? permissions[activeTabConfig.name].fields\n // : permissions\n // }\n // readOnly={readOnly}\n />\n </FieldPathProvider>\n </div>\n </React.Fragment>\n )}\n </div>\n </TabsProvider>\n </div>\n )\n}\n\nexport default withCondition(TabsField)\n"],"names":["getTranslation","toKebabCase","React","useCallback","useEffect","useState","useCollapsible","useDocumentInfo","usePreferences","useTranslation","FieldPathProvider","useFieldPath","RenderFields","withCondition","fieldBaseClass","TabComponent","TabsProvider","baseClass","TabsField","props","name","Description","className","fieldMap","forceRender","indexPath","path","pathFromProps","permissions","readOnly","tabs","pathFromContext","schemaPath","getPreference","setPreference","preferencesKey","i18n","isWithinCollapsible","activeTabIndex","setActiveTabIndex","tabsPrefKey","getInitialPref","existingPreferences","initialIndex","fields","tabIndex","handleTabChange","incomingTabIndex","activeTabConfig","div","filter","Boolean","join","map","tab","isActive","key","parentPath","setIsActive","Fragment","label","subfields","margins"],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { FieldPermissions } from 'payload/auth';
|
|
2
|
+
import type { MappedTab } from '../../../utilities/buildComponentMap/types.js';
|
|
2
3
|
import type { FormFieldBase } from '../shared.js';
|
|
3
4
|
export type Props = FormFieldBase & {
|
|
4
5
|
forceRender?: boolean;
|
|
@@ -6,5 +7,6 @@ export type Props = FormFieldBase & {
|
|
|
6
7
|
name?: string;
|
|
7
8
|
path?: string;
|
|
8
9
|
permissions: FieldPermissions;
|
|
10
|
+
tabs?: MappedTab[];
|
|
9
11
|
};
|
|
10
12
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/forms/fields/Tabs/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAEpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAEjD,MAAM,MAAM,KAAK,GAAG,aAAa,GAAG;IAClC,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/forms/fields/Tabs/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAEpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAA;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAEjD,MAAM,MAAM,KAAK,GAAG,aAAa,GAAG;IAClC,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,gBAAgB,CAAA;IAC7B,IAAI,CAAC,EAAE,SAAS,EAAE,CAAA;CACnB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/forms/fields/Tabs/types.ts"],"sourcesContent":["import type { FieldPermissions } from 'payload/auth'\n\nimport type { FormFieldBase } from '../shared.js'\n\nexport type Props = FormFieldBase & {\n forceRender?: boolean\n indexPath: string\n name?: string\n path?: string\n permissions: FieldPermissions\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../src/forms/fields/Tabs/types.ts"],"sourcesContent":["import type { FieldPermissions } from 'payload/auth'\n\nimport type { MappedTab } from '../../../utilities/buildComponentMap/types.js'\nimport type { FormFieldBase } from '../shared.js'\n\nexport type Props = FormFieldBase & {\n forceRender?: boolean\n indexPath: string\n name?: string\n path?: string\n permissions: FieldPermissions\n tabs?: MappedTab[]\n}\n"],"names":[],"mappings":"AAKA,WAOC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addFieldStatePromise.d.ts","sourceRoot":"","sources":["../../../../src/forms/utilities/buildStateFromSchema/addFieldStatePromise.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,IAAI,EAEJ,SAAS,EACT,sBAAsB,EACtB,cAAc,EACf,MAAM,eAAe,CAAA;AAWtB,MAAM,MAAM,wBAAwB,GAAG;IACrC;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,IAAI,EAAE,IAAI,CAAA;IACV,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACvB,KAAK,EAAE,sBAAsB,CAAA;IAC7B;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,OAAO,CAAA;IACpD;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,EAAE,IAAI,CAAA;IACd,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,eAAe,EAAE,OAAO,CAAA;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE;QACX,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KACvB,CAAA;IACD;;;OAGG;IACH,GAAG,EAAE,cAAc,CAAA;IACnB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,SAAgB,wBAAwB,KAAG,QAAQ,IAAI,
|
|
1
|
+
{"version":3,"file":"addFieldStatePromise.d.ts","sourceRoot":"","sources":["../../../../src/forms/utilities/buildStateFromSchema/addFieldStatePromise.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,IAAI,EAEJ,SAAS,EACT,sBAAsB,EACtB,cAAc,EACf,MAAM,eAAe,CAAA;AAWtB,MAAM,MAAM,wBAAwB,GAAG;IACrC;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,IAAI,EAAE,IAAI,CAAA;IACV,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACvB,KAAK,EAAE,sBAAsB,CAAA;IAC7B;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,OAAO,CAAA;IACpD;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,EAAE,IAAI,CAAA;IACd,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,eAAe,EAAE,OAAO,CAAA;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE;QACX,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KACvB,CAAA;IACD;;;OAGG;IACH,GAAG,EAAE,cAAc,CAAA;IACnB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,SAAgB,wBAAwB,KAAG,QAAQ,IAAI,CAubvF,CAAA"}
|
|
@@ -29,13 +29,23 @@ const ObjectId = ObjectIdImport.default || ObjectIdImport;
|
|
|
29
29
|
}
|
|
30
30
|
let validationResult = true;
|
|
31
31
|
if (typeof validate === 'function' && !skipValidation) {
|
|
32
|
+
let jsonError;
|
|
33
|
+
if (field.type === 'json' && typeof data[field.name] === 'string') {
|
|
34
|
+
try {
|
|
35
|
+
JSON.parse(data[field.name]);
|
|
36
|
+
} catch (e) {
|
|
37
|
+
jsonError = e;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
32
40
|
validationResult = await validate(data?.[field.name], {
|
|
33
41
|
...field,
|
|
34
42
|
id,
|
|
35
43
|
data: fullData,
|
|
36
44
|
operation,
|
|
37
45
|
req,
|
|
38
|
-
siblingData: data
|
|
46
|
+
siblingData: data,
|
|
47
|
+
// @ts-expect-error-next-line
|
|
48
|
+
jsonError
|
|
39
49
|
});
|
|
40
50
|
}
|
|
41
51
|
if (typeof validationResult === 'string') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/forms/utilities/buildStateFromSchema/addFieldStatePromise.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type {\n Data,\n FormField,\n FormState,\n NonPresentationalField,\n PayloadRequest,\n} from 'payload/types'\n\nimport ObjectIdImport from 'bson-objectid'\nimport { fieldAffectsData, fieldHasSubFields, tabHasName } from 'payload/types'\nimport { getDefaultValue } from 'payload/utilities'\n\nimport { iterateFields } from './iterateFields.js'\n\nconst ObjectId = (ObjectIdImport.default ||\n ObjectIdImport) as unknown as typeof ObjectIdImport.default\n\nexport type AddFieldStatePromiseArgs = {\n /**\n * if all parents are localized, then the field is localized\n */\n anyParentLocalized?: boolean\n data: Data\n errorPaths: Set<string>\n field: NonPresentationalField\n /**\n * You can use this to filter down to only `localized` fields that require translation (type: text, textarea, etc.). Another plugin might want to look for only `point` type fields to do some GIS function. With the filter function you can go in like a surgeon.\n */\n filter?: (args: AddFieldStatePromiseArgs) => boolean\n /**\n * Force the value of fields like arrays or blocks to be the full value instead of the length @default false\n */\n forceFullValue?: boolean\n fullData: Data\n id: number | string\n /**\n * Whether the field schema should be included in the state\n */\n includeSchema?: boolean\n /**\n * Whether to omit parent fields in the state. @default false\n */\n omitParents?: boolean\n operation: 'create' | 'update'\n passesCondition: boolean\n path: string\n preferences: {\n [key: string]: unknown\n }\n /**\n * Req is used for validation and defaultValue calculation. If you don't need validation,\n * just create your own req and pass in the locale and the user\n */\n req: PayloadRequest\n /**\n * Whether to skip checking the field's condition. @default false\n */\n skipConditionChecks?: boolean\n /**\n * Whether to skip validating the field. @default false\n */\n skipValidation?: boolean\n state: FormState\n}\n\n/**\n * Flattens the fields schema and fields data.\n * The output is the field path (e.g. array.0.name) mapped to a FormField object.\n */\nexport const addFieldStatePromise = async (args: AddFieldStatePromiseArgs): Promise<void> => {\n const {\n id,\n anyParentLocalized = false,\n data,\n errorPaths: parentErrorPaths,\n field,\n filter,\n forceFullValue = false,\n fullData,\n includeSchema = false,\n omitParents = false,\n operation,\n passesCondition,\n path,\n preferences,\n req,\n skipConditionChecks = false,\n skipValidation = false,\n state,\n } = args\n\n if (fieldAffectsData(field)) {\n const validate = operation === 'update' ? field.validate : undefined\n const fieldState: FormField = {\n errorPaths: new Set(),\n fieldSchema: includeSchema ? field : undefined,\n initialValue: undefined,\n passesCondition,\n valid: true,\n value: undefined,\n }\n\n const valueWithDefault = await getDefaultValue({\n defaultValue: field.defaultValue,\n locale: req.locale,\n user: req.user,\n value: data?.[field.name],\n })\n\n if (data?.[field.name]) {\n data[field.name] = valueWithDefault\n }\n\n let validationResult: string | true = true\n\n if (typeof validate === 'function' && !skipValidation) {\n validationResult = await validate(data?.[field.name], {\n ...field,\n id,\n data: fullData,\n operation,\n req,\n siblingData: data,\n })\n }\n\n if (typeof validationResult === 'string') {\n fieldState.errorMessage = validationResult\n fieldState.valid = false\n // TODO: this is unpredictable, need to figure out why\n // It will sometimes lead to inconsistencies across re-renders\n parentErrorPaths.add(`${path}${field.name}`)\n } else {\n fieldState.valid = true\n }\n\n switch (field.type) {\n case 'array': {\n const arrayValue = Array.isArray(valueWithDefault) ? valueWithDefault : []\n\n const { promises, rowMetadata } = arrayValue.reduce(\n (acc, row, i) => {\n const rowPath = `${path}${field.name}.${i}.`\n row.id = row?.id || new ObjectId().toHexString()\n\n if (!omitParents && (!filter || filter(args))) {\n state[`${rowPath}id`] = {\n fieldSchema: includeSchema\n ? field.fields.find((field) => 'name' in field && field.name === 'id')\n : undefined,\n initialValue: row.id,\n valid: true,\n value: row.id,\n }\n }\n\n acc.promises.push(\n iterateFields({\n id,\n anyParentLocalized: field.localized || anyParentLocalized,\n data: row,\n errorPaths: fieldState.errorPaths,\n fields: field.fields,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentPassesCondition: passesCondition,\n path: rowPath,\n preferences,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n }),\n )\n\n const collapsedRowIDs = preferences?.fields?.[`${path}${field.name}`]?.collapsed\n\n acc.rowMetadata.push({\n id: row.id,\n collapsed:\n collapsedRowIDs === undefined\n ? field.admin.initCollapsed\n : collapsedRowIDs.includes(row.id),\n errorPaths: fieldState.errorPaths,\n })\n\n return acc\n },\n {\n promises: [],\n rowMetadata: [],\n },\n )\n\n await Promise.all(promises)\n\n // Add values to field state\n if (valueWithDefault === null) {\n fieldState.value = null\n fieldState.initialValue = null\n } else {\n fieldState.value = forceFullValue ? arrayValue : arrayValue.length\n fieldState.initialValue = forceFullValue ? arrayValue : arrayValue.length\n\n if (arrayValue.length > 0) {\n fieldState.disableFormData = true\n }\n }\n\n fieldState.rows = rowMetadata\n\n // Add field to state\n if (!omitParents && (!filter || filter(args))) {\n state[`${path}${field.name}`] = fieldState\n }\n\n break\n }\n\n case 'blocks': {\n const blocksValue = Array.isArray(valueWithDefault) ? valueWithDefault : []\n\n const { promises, rowMetadata } = blocksValue.reduce(\n (acc, row, i) => {\n const block = field.blocks.find((blockType) => blockType.slug === row.blockType)\n const rowPath = `${path}${field.name}.${i}.`\n\n if (block) {\n row.id = row?.id || new ObjectId().toHexString()\n\n if (!omitParents && (!filter || filter(args))) {\n state[`${rowPath}id`] = {\n fieldSchema: includeSchema\n ? block.fields.find(\n (blockField) => 'name' in blockField && blockField.name === 'id',\n )\n : undefined,\n initialValue: row.id,\n valid: true,\n value: row.id,\n }\n\n state[`${rowPath}blockType`] = {\n fieldSchema: includeSchema\n ? block.fields.find(\n (blockField) => 'name' in blockField && blockField.name === 'blockType',\n )\n : undefined,\n initialValue: row.blockType,\n valid: true,\n value: row.blockType,\n }\n\n state[`${rowPath}blockName`] = {\n fieldSchema: includeSchema\n ? block.fields.find(\n (blockField) => 'name' in blockField && blockField.name === 'blockName',\n )\n : undefined,\n initialValue: row.blockName,\n valid: true,\n value: row.blockName,\n }\n }\n\n acc.promises.push(\n iterateFields({\n id,\n anyParentLocalized: field.localized || anyParentLocalized,\n data: row,\n errorPaths: fieldState.errorPaths,\n fields: block.fields,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentPassesCondition: passesCondition,\n path: rowPath,\n preferences,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n }),\n )\n\n const collapsedRowIDs = preferences?.fields?.[`${path}${field.name}`]?.collapsed\n\n acc.rowMetadata.push({\n id: row.id,\n blockType: row.blockType,\n collapsed:\n collapsedRowIDs === undefined\n ? field.admin.initCollapsed\n : collapsedRowIDs.includes(row.id),\n errorPaths: fieldState.errorPaths,\n })\n }\n\n return acc\n },\n {\n promises: [],\n rowMetadata: [],\n },\n )\n\n await Promise.all(promises)\n\n // Add values to field state\n if (valueWithDefault === null) {\n fieldState.value = null\n fieldState.initialValue = null\n } else {\n fieldState.value = forceFullValue ? blocksValue : blocksValue.length\n fieldState.initialValue = forceFullValue ? blocksValue : blocksValue.length\n\n if (blocksValue.length > 0) {\n fieldState.disableFormData = true\n }\n }\n\n fieldState.rows = rowMetadata\n\n // Add field to state\n if (!omitParents && (!filter || filter(args))) {\n state[`${path}${field.name}`] = fieldState\n }\n\n break\n }\n\n case 'group': {\n await iterateFields({\n id,\n anyParentLocalized: field.localized || anyParentLocalized,\n data: data?.[field.name] || {},\n errorPaths: parentErrorPaths,\n fields: field.fields,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentPassesCondition: passesCondition,\n path: `${path}${field.name}.`,\n preferences,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n })\n\n break\n }\n\n case 'relationship': {\n if (field.hasMany) {\n const relationshipValue = Array.isArray(valueWithDefault)\n ? valueWithDefault.map((relationship) => {\n if (Array.isArray(field.relationTo)) {\n return {\n relationTo: relationship.relationTo,\n value:\n relationship.value && typeof relationship.value === 'object'\n ? relationship.value?.id\n : relationship.value,\n }\n }\n if (typeof relationship === 'object' && relationship !== null) {\n return relationship.id\n }\n return relationship\n })\n : undefined\n\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n } else if (Array.isArray(field.relationTo)) {\n if (\n valueWithDefault &&\n typeof valueWithDefault === 'object' &&\n 'relationTo' in valueWithDefault &&\n 'value' in valueWithDefault\n ) {\n const value =\n typeof valueWithDefault?.value === 'object' &&\n valueWithDefault?.value &&\n 'id' in valueWithDefault.value\n ? valueWithDefault.value.id\n : valueWithDefault.value\n const relationshipValue = {\n relationTo: valueWithDefault?.relationTo,\n value,\n }\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n }\n } else {\n const relationshipValue =\n valueWithDefault && typeof valueWithDefault === 'object' && 'id' in valueWithDefault\n ? valueWithDefault.id\n : valueWithDefault\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n }\n\n if (!filter || filter(args)) {\n state[`${path}${field.name}`] = fieldState\n }\n\n break\n }\n\n case 'upload': {\n const relationshipValue =\n valueWithDefault && typeof valueWithDefault === 'object' && 'id' in valueWithDefault\n ? valueWithDefault.id\n : valueWithDefault\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n\n if (!filter || filter(args)) {\n state[`${path}${field.name}`] = fieldState\n }\n\n break\n }\n\n default: {\n fieldState.value = valueWithDefault\n fieldState.initialValue = valueWithDefault\n\n // Add field to state\n if (!filter || filter(args)) {\n state[`${path}${field.name}`] = fieldState\n }\n\n break\n }\n }\n } else if (fieldHasSubFields(field)) {\n // Handle field types that do not use names (row, etc)\n await iterateFields({\n id,\n anyParentLocalized: field.localized || anyParentLocalized,\n data,\n errorPaths: parentErrorPaths,\n fields: field.fields,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentPassesCondition: passesCondition,\n path,\n preferences,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n })\n } else if (field.type === 'tabs') {\n const promises = field.tabs.map((tab) =>\n iterateFields({\n id,\n anyParentLocalized: tab.localized || anyParentLocalized,\n data: tabHasName(tab) ? data?.[tab.name] : data,\n errorPaths: parentErrorPaths,\n fields: tab.fields,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentPassesCondition: passesCondition,\n path: tabHasName(tab) ? `${path}${tab.name}.` : path,\n preferences,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n }),\n )\n\n await Promise.all(promises)\n }\n}\n"],"names":["ObjectIdImport","fieldAffectsData","fieldHasSubFields","tabHasName","getDefaultValue","iterateFields","ObjectId","default","addFieldStatePromise","args","id","anyParentLocalized","data","errorPaths","parentErrorPaths","field","filter","forceFullValue","fullData","includeSchema","omitParents","operation","passesCondition","path","preferences","req","skipConditionChecks","skipValidation","state","validate","undefined","fieldState","Set","fieldSchema","initialValue","valid","value","valueWithDefault","defaultValue","locale","user","name","validationResult","siblingData","errorMessage","add","type","arrayValue","Array","isArray","promises","rowMetadata","reduce","acc","row","i","rowPath","toHexString","fields","find","push","localized","parentPassesCondition","collapsedRowIDs","collapsed","admin","initCollapsed","includes","Promise","all","length","disableFormData","rows","blocksValue","block","blocks","blockType","slug","blockField","blockName","hasMany","relationshipValue","map","relationship","relationTo","tabs","tab"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/forms/utilities/buildStateFromSchema/addFieldStatePromise.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type {\n Data,\n FormField,\n FormState,\n NonPresentationalField,\n PayloadRequest,\n} from 'payload/types'\n\nimport ObjectIdImport from 'bson-objectid'\nimport { fieldAffectsData, fieldHasSubFields, tabHasName } from 'payload/types'\nimport { getDefaultValue } from 'payload/utilities'\n\nimport { iterateFields } from './iterateFields.js'\n\nconst ObjectId = (ObjectIdImport.default ||\n ObjectIdImport) as unknown as typeof ObjectIdImport.default\n\nexport type AddFieldStatePromiseArgs = {\n /**\n * if all parents are localized, then the field is localized\n */\n anyParentLocalized?: boolean\n data: Data\n errorPaths: Set<string>\n field: NonPresentationalField\n /**\n * You can use this to filter down to only `localized` fields that require translation (type: text, textarea, etc.). Another plugin might want to look for only `point` type fields to do some GIS function. With the filter function you can go in like a surgeon.\n */\n filter?: (args: AddFieldStatePromiseArgs) => boolean\n /**\n * Force the value of fields like arrays or blocks to be the full value instead of the length @default false\n */\n forceFullValue?: boolean\n fullData: Data\n id: number | string\n /**\n * Whether the field schema should be included in the state\n */\n includeSchema?: boolean\n /**\n * Whether to omit parent fields in the state. @default false\n */\n omitParents?: boolean\n operation: 'create' | 'update'\n passesCondition: boolean\n path: string\n preferences: {\n [key: string]: unknown\n }\n /**\n * Req is used for validation and defaultValue calculation. If you don't need validation,\n * just create your own req and pass in the locale and the user\n */\n req: PayloadRequest\n /**\n * Whether to skip checking the field's condition. @default false\n */\n skipConditionChecks?: boolean\n /**\n * Whether to skip validating the field. @default false\n */\n skipValidation?: boolean\n state: FormState\n}\n\n/**\n * Flattens the fields schema and fields data.\n * The output is the field path (e.g. array.0.name) mapped to a FormField object.\n */\nexport const addFieldStatePromise = async (args: AddFieldStatePromiseArgs): Promise<void> => {\n const {\n id,\n anyParentLocalized = false,\n data,\n errorPaths: parentErrorPaths,\n field,\n filter,\n forceFullValue = false,\n fullData,\n includeSchema = false,\n omitParents = false,\n operation,\n passesCondition,\n path,\n preferences,\n req,\n skipConditionChecks = false,\n skipValidation = false,\n state,\n } = args\n\n if (fieldAffectsData(field)) {\n const validate = operation === 'update' ? field.validate : undefined\n const fieldState: FormField = {\n errorPaths: new Set(),\n fieldSchema: includeSchema ? field : undefined,\n initialValue: undefined,\n passesCondition,\n valid: true,\n value: undefined,\n }\n\n const valueWithDefault = await getDefaultValue({\n defaultValue: field.defaultValue,\n locale: req.locale,\n user: req.user,\n value: data?.[field.name],\n })\n\n if (data?.[field.name]) {\n data[field.name] = valueWithDefault\n }\n\n let validationResult: string | true = true\n\n if (typeof validate === 'function' && !skipValidation) {\n let jsonError\n\n if (field.type === 'json' && typeof data[field.name] === 'string') {\n try {\n JSON.parse(data[field.name] as string)\n } catch (e) {\n jsonError = e\n }\n }\n\n validationResult = await validate(data?.[field.name], {\n ...field,\n id,\n data: fullData,\n operation,\n req,\n siblingData: data,\n // @ts-expect-error-next-line\n jsonError,\n })\n }\n\n if (typeof validationResult === 'string') {\n fieldState.errorMessage = validationResult\n fieldState.valid = false\n // TODO: this is unpredictable, need to figure out why\n // It will sometimes lead to inconsistencies across re-renders\n parentErrorPaths.add(`${path}${field.name}`)\n } else {\n fieldState.valid = true\n }\n\n switch (field.type) {\n case 'array': {\n const arrayValue = Array.isArray(valueWithDefault) ? valueWithDefault : []\n\n const { promises, rowMetadata } = arrayValue.reduce(\n (acc, row, i) => {\n const rowPath = `${path}${field.name}.${i}.`\n row.id = row?.id || new ObjectId().toHexString()\n\n if (!omitParents && (!filter || filter(args))) {\n state[`${rowPath}id`] = {\n fieldSchema: includeSchema\n ? field.fields.find((field) => 'name' in field && field.name === 'id')\n : undefined,\n initialValue: row.id,\n valid: true,\n value: row.id,\n }\n }\n\n acc.promises.push(\n iterateFields({\n id,\n anyParentLocalized: field.localized || anyParentLocalized,\n data: row,\n errorPaths: fieldState.errorPaths,\n fields: field.fields,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentPassesCondition: passesCondition,\n path: rowPath,\n preferences,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n }),\n )\n\n const collapsedRowIDs = preferences?.fields?.[`${path}${field.name}`]?.collapsed\n\n acc.rowMetadata.push({\n id: row.id,\n collapsed:\n collapsedRowIDs === undefined\n ? field.admin.initCollapsed\n : collapsedRowIDs.includes(row.id),\n errorPaths: fieldState.errorPaths,\n })\n\n return acc\n },\n {\n promises: [],\n rowMetadata: [],\n },\n )\n\n await Promise.all(promises)\n\n // Add values to field state\n if (valueWithDefault === null) {\n fieldState.value = null\n fieldState.initialValue = null\n } else {\n fieldState.value = forceFullValue ? arrayValue : arrayValue.length\n fieldState.initialValue = forceFullValue ? arrayValue : arrayValue.length\n\n if (arrayValue.length > 0) {\n fieldState.disableFormData = true\n }\n }\n\n fieldState.rows = rowMetadata\n\n // Add field to state\n if (!omitParents && (!filter || filter(args))) {\n state[`${path}${field.name}`] = fieldState\n }\n\n break\n }\n\n case 'blocks': {\n const blocksValue = Array.isArray(valueWithDefault) ? valueWithDefault : []\n\n const { promises, rowMetadata } = blocksValue.reduce(\n (acc, row, i) => {\n const block = field.blocks.find((blockType) => blockType.slug === row.blockType)\n const rowPath = `${path}${field.name}.${i}.`\n\n if (block) {\n row.id = row?.id || new ObjectId().toHexString()\n\n if (!omitParents && (!filter || filter(args))) {\n state[`${rowPath}id`] = {\n fieldSchema: includeSchema\n ? block.fields.find(\n (blockField) => 'name' in blockField && blockField.name === 'id',\n )\n : undefined,\n initialValue: row.id,\n valid: true,\n value: row.id,\n }\n\n state[`${rowPath}blockType`] = {\n fieldSchema: includeSchema\n ? block.fields.find(\n (blockField) => 'name' in blockField && blockField.name === 'blockType',\n )\n : undefined,\n initialValue: row.blockType,\n valid: true,\n value: row.blockType,\n }\n\n state[`${rowPath}blockName`] = {\n fieldSchema: includeSchema\n ? block.fields.find(\n (blockField) => 'name' in blockField && blockField.name === 'blockName',\n )\n : undefined,\n initialValue: row.blockName,\n valid: true,\n value: row.blockName,\n }\n }\n\n acc.promises.push(\n iterateFields({\n id,\n anyParentLocalized: field.localized || anyParentLocalized,\n data: row,\n errorPaths: fieldState.errorPaths,\n fields: block.fields,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentPassesCondition: passesCondition,\n path: rowPath,\n preferences,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n }),\n )\n\n const collapsedRowIDs = preferences?.fields?.[`${path}${field.name}`]?.collapsed\n\n acc.rowMetadata.push({\n id: row.id,\n blockType: row.blockType,\n collapsed:\n collapsedRowIDs === undefined\n ? field.admin.initCollapsed\n : collapsedRowIDs.includes(row.id),\n errorPaths: fieldState.errorPaths,\n })\n }\n\n return acc\n },\n {\n promises: [],\n rowMetadata: [],\n },\n )\n\n await Promise.all(promises)\n\n // Add values to field state\n if (valueWithDefault === null) {\n fieldState.value = null\n fieldState.initialValue = null\n } else {\n fieldState.value = forceFullValue ? blocksValue : blocksValue.length\n fieldState.initialValue = forceFullValue ? blocksValue : blocksValue.length\n\n if (blocksValue.length > 0) {\n fieldState.disableFormData = true\n }\n }\n\n fieldState.rows = rowMetadata\n\n // Add field to state\n if (!omitParents && (!filter || filter(args))) {\n state[`${path}${field.name}`] = fieldState\n }\n\n break\n }\n\n case 'group': {\n await iterateFields({\n id,\n anyParentLocalized: field.localized || anyParentLocalized,\n data: data?.[field.name] || {},\n errorPaths: parentErrorPaths,\n fields: field.fields,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentPassesCondition: passesCondition,\n path: `${path}${field.name}.`,\n preferences,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n })\n\n break\n }\n\n case 'relationship': {\n if (field.hasMany) {\n const relationshipValue = Array.isArray(valueWithDefault)\n ? valueWithDefault.map((relationship) => {\n if (Array.isArray(field.relationTo)) {\n return {\n relationTo: relationship.relationTo,\n value:\n relationship.value && typeof relationship.value === 'object'\n ? relationship.value?.id\n : relationship.value,\n }\n }\n if (typeof relationship === 'object' && relationship !== null) {\n return relationship.id\n }\n return relationship\n })\n : undefined\n\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n } else if (Array.isArray(field.relationTo)) {\n if (\n valueWithDefault &&\n typeof valueWithDefault === 'object' &&\n 'relationTo' in valueWithDefault &&\n 'value' in valueWithDefault\n ) {\n const value =\n typeof valueWithDefault?.value === 'object' &&\n valueWithDefault?.value &&\n 'id' in valueWithDefault.value\n ? valueWithDefault.value.id\n : valueWithDefault.value\n const relationshipValue = {\n relationTo: valueWithDefault?.relationTo,\n value,\n }\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n }\n } else {\n const relationshipValue =\n valueWithDefault && typeof valueWithDefault === 'object' && 'id' in valueWithDefault\n ? valueWithDefault.id\n : valueWithDefault\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n }\n\n if (!filter || filter(args)) {\n state[`${path}${field.name}`] = fieldState\n }\n\n break\n }\n\n case 'upload': {\n const relationshipValue =\n valueWithDefault && typeof valueWithDefault === 'object' && 'id' in valueWithDefault\n ? valueWithDefault.id\n : valueWithDefault\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n\n if (!filter || filter(args)) {\n state[`${path}${field.name}`] = fieldState\n }\n\n break\n }\n\n default: {\n fieldState.value = valueWithDefault\n fieldState.initialValue = valueWithDefault\n\n // Add field to state\n if (!filter || filter(args)) {\n state[`${path}${field.name}`] = fieldState\n }\n\n break\n }\n }\n } else if (fieldHasSubFields(field)) {\n // Handle field types that do not use names (row, etc)\n await iterateFields({\n id,\n anyParentLocalized: field.localized || anyParentLocalized,\n data,\n errorPaths: parentErrorPaths,\n fields: field.fields,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentPassesCondition: passesCondition,\n path,\n preferences,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n })\n } else if (field.type === 'tabs') {\n const promises = field.tabs.map((tab) =>\n iterateFields({\n id,\n anyParentLocalized: tab.localized || anyParentLocalized,\n data: tabHasName(tab) ? data?.[tab.name] : data,\n errorPaths: parentErrorPaths,\n fields: tab.fields,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentPassesCondition: passesCondition,\n path: tabHasName(tab) ? `${path}${tab.name}.` : path,\n preferences,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n }),\n )\n\n await Promise.all(promises)\n }\n}\n"],"names":["ObjectIdImport","fieldAffectsData","fieldHasSubFields","tabHasName","getDefaultValue","iterateFields","ObjectId","default","addFieldStatePromise","args","id","anyParentLocalized","data","errorPaths","parentErrorPaths","field","filter","forceFullValue","fullData","includeSchema","omitParents","operation","passesCondition","path","preferences","req","skipConditionChecks","skipValidation","state","validate","undefined","fieldState","Set","fieldSchema","initialValue","valid","value","valueWithDefault","defaultValue","locale","user","name","validationResult","jsonError","type","JSON","parse","e","siblingData","errorMessage","add","arrayValue","Array","isArray","promises","rowMetadata","reduce","acc","row","i","rowPath","toHexString","fields","find","push","localized","parentPassesCondition","collapsedRowIDs","collapsed","admin","initCollapsed","includes","Promise","all","length","disableFormData","rows","blocksValue","block","blocks","blockType","slug","blockField","blockName","hasMany","relationshipValue","map","relationship","relationTo","tabs","tab"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePayloadAPI.d.ts","sourceRoot":"","sources":["../../src/hooks/usePayloadAPI.tsx"],"names":[],"mappings":";AAQA,KAAK,MAAM,GAAG;IACZ;QACE,IAAI,EAAE,GAAG,CAAA;QACT,OAAO,EAAE,OAAO,CAAA;QAChB,SAAS,EAAE,OAAO,CAAA;KACnB;IACD;QACE,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;KACnC;CACF,CAAA;AAED,KAAK,OAAO,GAAG;IACb,WAAW,CAAC,EAAE,GAAG,CAAA;IACjB,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,CAAA;AAED,KAAK,aAAa,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,MAAM,CAAA;AAE/D,QAAA,MAAM,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"usePayloadAPI.d.ts","sourceRoot":"","sources":["../../src/hooks/usePayloadAPI.tsx"],"names":[],"mappings":";AAQA,KAAK,MAAM,GAAG;IACZ;QACE,IAAI,EAAE,GAAG,CAAA;QACT,OAAO,EAAE,OAAO,CAAA;QAChB,SAAS,EAAE,OAAO,CAAA;KACnB;IACD;QACE,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;KACnC;CACF,CAAA;AAED,KAAK,OAAO,GAAG;IACb,WAAW,CAAC,EAAE,GAAG,CAAA;IACjB,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,CAAA;AAED,KAAK,aAAa,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,MAAM,CAAA;AAE/D,QAAA,MAAM,aAAa,EAAE,aA6EpB,CAAA;AAED,eAAe,aAAa,CAAA"}
|
|
@@ -19,6 +19,7 @@ const usePayloadAPI = (url, options = {})=>{
|
|
|
19
19
|
}, {
|
|
20
20
|
addQueryPrefix: true
|
|
21
21
|
});
|
|
22
|
+
// If `initialData`, no need to make a request
|
|
22
23
|
useEffect(()=>{
|
|
23
24
|
if (initialData && !hasInitialized.current) {
|
|
24
25
|
hasInitialized.current = true;
|
|
@@ -49,7 +50,7 @@ const usePayloadAPI = (url, options = {})=>{
|
|
|
49
50
|
}
|
|
50
51
|
};
|
|
51
52
|
if (url) {
|
|
52
|
-
fetchData();
|
|
53
|
+
void fetchData();
|
|
53
54
|
} else {
|
|
54
55
|
setIsError(false);
|
|
55
56
|
setIsLoading(false);
|
|
@@ -61,7 +62,16 @@ const usePayloadAPI = (url, options = {})=>{
|
|
|
61
62
|
url,
|
|
62
63
|
locale,
|
|
63
64
|
search,
|
|
64
|
-
i18n.language
|
|
65
|
+
i18n.language,
|
|
66
|
+
initialData
|
|
67
|
+
]);
|
|
68
|
+
// If `initialData` changes, reset the state
|
|
69
|
+
useEffect(()=>{
|
|
70
|
+
if (initialData && hasInitialized.current) {
|
|
71
|
+
setData(initialData);
|
|
72
|
+
}
|
|
73
|
+
}, [
|
|
74
|
+
initialData
|
|
65
75
|
]);
|
|
66
76
|
return [
|
|
67
77
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/usePayloadAPI.tsx"],"sourcesContent":["'use client'\nimport queryString from 'qs'\nimport { useEffect, useRef, useState } from 'react'\n\nimport { useLocale } from '../providers/Locale/index.js'\nimport { useTranslation } from '../providers/Translation/index.js'\nimport { requests } from '../utilities/api.js'\n\ntype Result = [\n {\n data: any\n isError: boolean\n isLoading: boolean\n },\n {\n setParams: React.Dispatch<unknown>\n },\n]\n\ntype Options = {\n initialData?: any\n initialParams?: unknown\n}\n\ntype UsePayloadAPI = (url: string, options?: Options) => Result\n\nconst usePayloadAPI: UsePayloadAPI = (url, options = {}) => {\n const { initialData, initialParams = {} } = options\n\n const { i18n } = useTranslation()\n const [data, setData] = useState(initialData)\n const [params, setParams] = useState(initialParams)\n const [isLoading, setIsLoading] = useState(!initialData)\n const [isError, setIsError] = useState(false)\n const { code: locale } = useLocale()\n const hasInitialized = useRef(false)\n\n const search = queryString.stringify(\n {\n locale,\n ...(typeof params === 'object' ? params : {}),\n },\n {\n addQueryPrefix: true,\n },\n )\n\n useEffect(() => {\n if (initialData && !hasInitialized.current) {\n hasInitialized.current = true\n return\n }\n\n const abortController = new AbortController()\n\n const fetchData = async () => {\n setIsError(false)\n setIsLoading(true)\n\n try {\n const response = await requests.get(`${url}${search}`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n signal: abortController.signal,\n })\n\n if (response.status > 201) {\n setIsError(true)\n }\n\n const json = await response.json()\n setData(json)\n setIsLoading(false)\n } catch (error) {\n if (!abortController.signal.aborted) {\n setIsError(true)\n setIsLoading(false)\n }\n }\n }\n\n if (url) {\n fetchData()\n } else {\n setIsError(false)\n setIsLoading(false)\n }\n\n return () => {\n abortController.abort()\n }\n }, [url, locale, search, i18n.language])\n\n return [{ data, isError, isLoading }, { setParams }]\n}\n\nexport default usePayloadAPI\n"],"names":["queryString","useEffect","useRef","useState","useLocale","useTranslation","requests","usePayloadAPI","url","options","initialData","initialParams","i18n","data","setData","params","setParams","isLoading","setIsLoading","isError","setIsError","code","locale","hasInitialized","search","stringify","addQueryPrefix","current","abortController","AbortController","fetchData","response","get","headers","language","signal","status","json","error","aborted","abort"],"mappings":"AAAA;AACA,OAAOA,iBAAiB,KAAI;AAC5B,SAASC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,QAAO;AAEnD,SAASC,SAAS,QAAQ,+BAA8B;AACxD,SAASC,cAAc,QAAQ,oCAAmC;AAClE,SAASC,QAAQ,QAAQ,sBAAqB;AAoB9C,MAAMC,gBAA+B,CAACC,KAAKC,UAAU,CAAC,CAAC;IACrD,MAAM,EAAEC,WAAW,EAAEC,gBAAgB,CAAC,CAAC,EAAE,GAAGF;IAE5C,MAAM,EAAEG,IAAI,EAAE,GAAGP;IACjB,MAAM,CAACQ,MAAMC,QAAQ,GAAGX,SAASO;IACjC,MAAM,CAACK,QAAQC,UAAU,GAAGb,SAASQ;IACrC,MAAM,CAACM,WAAWC,aAAa,GAAGf,SAAS,CAACO;IAC5C,MAAM,CAACS,SAASC,WAAW,GAAGjB,SAAS;IACvC,MAAM,EAAEkB,MAAMC,MAAM,EAAE,GAAGlB;IACzB,MAAMmB,iBAAiBrB,OAAO;IAE9B,MAAMsB,SAASxB,YAAYyB,SAAS,CAClC;QACEH;QACA,GAAI,OAAOP,WAAW,WAAWA,SAAS,CAAC,CAAC;IAC9C,GACA;QACEW,gBAAgB;IAClB;
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/usePayloadAPI.tsx"],"sourcesContent":["'use client'\nimport queryString from 'qs'\nimport { useEffect, useRef, useState } from 'react'\n\nimport { useLocale } from '../providers/Locale/index.js'\nimport { useTranslation } from '../providers/Translation/index.js'\nimport { requests } from '../utilities/api.js'\n\ntype Result = [\n {\n data: any\n isError: boolean\n isLoading: boolean\n },\n {\n setParams: React.Dispatch<unknown>\n },\n]\n\ntype Options = {\n initialData?: any\n initialParams?: unknown\n}\n\ntype UsePayloadAPI = (url: string, options?: Options) => Result\n\nconst usePayloadAPI: UsePayloadAPI = (url, options = {}) => {\n const { initialData, initialParams = {} } = options\n\n const { i18n } = useTranslation()\n const [data, setData] = useState(initialData)\n const [params, setParams] = useState(initialParams)\n const [isLoading, setIsLoading] = useState(!initialData)\n const [isError, setIsError] = useState(false)\n const { code: locale } = useLocale()\n const hasInitialized = useRef(false)\n\n const search = queryString.stringify(\n {\n locale,\n ...(typeof params === 'object' ? params : {}),\n },\n {\n addQueryPrefix: true,\n },\n )\n\n // If `initialData`, no need to make a request\n useEffect(() => {\n if (initialData && !hasInitialized.current) {\n hasInitialized.current = true\n return\n }\n\n const abortController = new AbortController()\n\n const fetchData = async () => {\n setIsError(false)\n setIsLoading(true)\n\n try {\n const response = await requests.get(`${url}${search}`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n signal: abortController.signal,\n })\n\n if (response.status > 201) {\n setIsError(true)\n }\n\n const json = await response.json()\n setData(json)\n setIsLoading(false)\n } catch (error) {\n if (!abortController.signal.aborted) {\n setIsError(true)\n setIsLoading(false)\n }\n }\n }\n\n if (url) {\n void fetchData()\n } else {\n setIsError(false)\n setIsLoading(false)\n }\n\n return () => {\n abortController.abort()\n }\n }, [url, locale, search, i18n.language, initialData])\n\n // If `initialData` changes, reset the state\n useEffect(() => {\n if (initialData && hasInitialized.current) {\n setData(initialData)\n }\n }, [initialData])\n\n return [{ data, isError, isLoading }, { setParams }]\n}\n\nexport default usePayloadAPI\n"],"names":["queryString","useEffect","useRef","useState","useLocale","useTranslation","requests","usePayloadAPI","url","options","initialData","initialParams","i18n","data","setData","params","setParams","isLoading","setIsLoading","isError","setIsError","code","locale","hasInitialized","search","stringify","addQueryPrefix","current","abortController","AbortController","fetchData","response","get","headers","language","signal","status","json","error","aborted","abort"],"mappings":"AAAA;AACA,OAAOA,iBAAiB,KAAI;AAC5B,SAASC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,QAAO;AAEnD,SAASC,SAAS,QAAQ,+BAA8B;AACxD,SAASC,cAAc,QAAQ,oCAAmC;AAClE,SAASC,QAAQ,QAAQ,sBAAqB;AAoB9C,MAAMC,gBAA+B,CAACC,KAAKC,UAAU,CAAC,CAAC;IACrD,MAAM,EAAEC,WAAW,EAAEC,gBAAgB,CAAC,CAAC,EAAE,GAAGF;IAE5C,MAAM,EAAEG,IAAI,EAAE,GAAGP;IACjB,MAAM,CAACQ,MAAMC,QAAQ,GAAGX,SAASO;IACjC,MAAM,CAACK,QAAQC,UAAU,GAAGb,SAASQ;IACrC,MAAM,CAACM,WAAWC,aAAa,GAAGf,SAAS,CAACO;IAC5C,MAAM,CAACS,SAASC,WAAW,GAAGjB,SAAS;IACvC,MAAM,EAAEkB,MAAMC,MAAM,EAAE,GAAGlB;IACzB,MAAMmB,iBAAiBrB,OAAO;IAE9B,MAAMsB,SAASxB,YAAYyB,SAAS,CAClC;QACEH;QACA,GAAI,OAAOP,WAAW,WAAWA,SAAS,CAAC,CAAC;IAC9C,GACA;QACEW,gBAAgB;IAClB;IAGF,8CAA8C;IAC9CzB,UAAU;QACR,IAAIS,eAAe,CAACa,eAAeI,OAAO,EAAE;YAC1CJ,eAAeI,OAAO,GAAG;YACzB;QACF;QAEA,MAAMC,kBAAkB,IAAIC;QAE5B,MAAMC,YAAY;YAChBV,WAAW;YACXF,aAAa;YAEb,IAAI;gBACF,MAAMa,WAAW,MAAMzB,SAAS0B,GAAG,CAAC,CAAC,EAAExB,IAAI,EAAEgB,OAAO,CAAC,EAAE;oBACrDS,SAAS;wBACP,mBAAmBrB,KAAKsB,QAAQ;oBAClC;oBACAC,QAAQP,gBAAgBO,MAAM;gBAChC;gBAEA,IAAIJ,SAASK,MAAM,GAAG,KAAK;oBACzBhB,WAAW;gBACb;gBAEA,MAAMiB,OAAO,MAAMN,SAASM,IAAI;gBAChCvB,QAAQuB;gBACRnB,aAAa;YACf,EAAE,OAAOoB,OAAO;gBACd,IAAI,CAACV,gBAAgBO,MAAM,CAACI,OAAO,EAAE;oBACnCnB,WAAW;oBACXF,aAAa;gBACf;YACF;QACF;QAEA,IAAIV,KAAK;YACP,KAAKsB;QACP,OAAO;YACLV,WAAW;YACXF,aAAa;QACf;QAEA,OAAO;YACLU,gBAAgBY,KAAK;QACvB;IACF,GAAG;QAAChC;QAAKc;QAAQE;QAAQZ,KAAKsB,QAAQ;QAAExB;KAAY;IAEpD,4CAA4C;IAC5CT,UAAU;QACR,IAAIS,eAAea,eAAeI,OAAO,EAAE;YACzCb,QAAQJ;QACV;IACF,GAAG;QAACA;KAAY;IAEhB,OAAO;QAAC;YAAEG;YAAMM;YAASF;QAAU;QAAG;YAAED;QAAU;KAAE;AACtD;AAEA,eAAeT,cAAa"}
|