@payloadcms/ui 3.0.0-beta.60 → 3.0.0-beta.62

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/dist/elements/Banner/index.scss +4 -4
  2. package/dist/elements/CodeEditor/types.d.ts +2 -2
  3. package/dist/elements/CodeEditor/types.d.ts.map +1 -1
  4. package/dist/elements/CodeEditor/types.js.map +1 -1
  5. package/dist/elements/Collapsible/index.scss +13 -47
  6. package/dist/elements/DatePicker/types.d.ts +2 -2
  7. package/dist/elements/DatePicker/types.d.ts.map +1 -1
  8. package/dist/elements/DatePicker/types.js.map +1 -1
  9. package/dist/elements/DocumentDrawer/types.d.ts +4 -4
  10. package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
  11. package/dist/elements/DocumentDrawer/types.js.map +1 -1
  12. package/dist/elements/DraggableSortable/DraggableSortableItem/index.d.ts +2 -2
  13. package/dist/elements/DraggableSortable/DraggableSortableItem/index.d.ts.map +1 -1
  14. package/dist/elements/DraggableSortable/DraggableSortableItem/index.js.map +1 -1
  15. package/dist/elements/DraggableSortable/DraggableSortableItem/types.d.ts +4 -4
  16. package/dist/elements/DraggableSortable/DraggableSortableItem/types.d.ts.map +1 -1
  17. package/dist/elements/DraggableSortable/DraggableSortableItem/types.js.map +1 -1
  18. package/dist/elements/Drawer/types.d.ts +2 -2
  19. package/dist/elements/Drawer/types.d.ts.map +1 -1
  20. package/dist/elements/Drawer/types.js.map +1 -1
  21. package/dist/elements/Dropzone/index.d.ts +1 -0
  22. package/dist/elements/Dropzone/index.d.ts.map +1 -1
  23. package/dist/elements/Dropzone/index.js +8 -1
  24. package/dist/elements/Dropzone/index.js.map +1 -1
  25. package/dist/elements/ErrorPill/index.scss +2 -14
  26. package/dist/elements/FileDetails/index.d.ts +2 -2
  27. package/dist/elements/FileDetails/index.d.ts.map +1 -1
  28. package/dist/elements/FileDetails/index.js.map +1 -1
  29. package/dist/elements/GenerateConfirmation/index.scss +1 -0
  30. package/dist/elements/ListDrawer/types.d.ts +2 -2
  31. package/dist/elements/ListDrawer/types.d.ts.map +1 -1
  32. package/dist/elements/ListDrawer/types.js.map +1 -1
  33. package/dist/elements/Pill/index.d.ts +2 -2
  34. package/dist/elements/Pill/index.d.ts.map +1 -1
  35. package/dist/elements/Pill/index.js.map +1 -1
  36. package/dist/elements/Pill/index.scss +9 -21
  37. package/dist/elements/PreviewSizes/index.d.ts +4 -4
  38. package/dist/elements/PreviewSizes/index.d.ts.map +1 -1
  39. package/dist/elements/PreviewSizes/index.js.map +1 -1
  40. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  41. package/dist/elements/PublishButton/index.js +16 -0
  42. package/dist/elements/PublishButton/index.js.map +1 -1
  43. package/dist/elements/ReactSelect/Control/index.js +0 -1
  44. package/dist/elements/ReactSelect/Control/index.js.map +1 -1
  45. package/dist/elements/ReactSelect/DropdownIndicator/index.d.ts +2 -2
  46. package/dist/elements/ReactSelect/DropdownIndicator/index.d.ts.map +1 -1
  47. package/dist/elements/ReactSelect/DropdownIndicator/index.js.map +1 -1
  48. package/dist/elements/ReactSelect/MultiValueRemove/index.d.ts +2 -2
  49. package/dist/elements/ReactSelect/MultiValueRemove/index.d.ts.map +1 -1
  50. package/dist/elements/ReactSelect/MultiValueRemove/index.js.map +1 -1
  51. package/dist/elements/ReactSelect/index.d.ts.map +1 -1
  52. package/dist/elements/ReactSelect/index.js +0 -1
  53. package/dist/elements/ReactSelect/index.js.map +1 -1
  54. package/dist/elements/ReactSelect/index.scss +9 -2
  55. package/dist/elements/ReactSelect/types.d.ts +1 -1
  56. package/dist/elements/ReactSelect/types.d.ts.map +1 -1
  57. package/dist/elements/ReactSelect/types.js.map +1 -1
  58. package/dist/elements/Status/index.scss +1 -0
  59. package/dist/elements/Table/DefaultCell/fields/Relationship/index.d.ts.map +1 -1
  60. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js +0 -1
  61. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
  62. package/dist/elements/TableColumns/buildColumnState.d.ts.map +1 -1
  63. package/dist/elements/TableColumns/buildColumnState.js +0 -1
  64. package/dist/elements/TableColumns/buildColumnState.js.map +1 -1
  65. package/dist/elements/ThumbnailCard/index.d.ts +2 -2
  66. package/dist/elements/ThumbnailCard/index.d.ts.map +1 -1
  67. package/dist/elements/ThumbnailCard/index.js.map +1 -1
  68. package/dist/elements/Upload/index.d.ts.map +1 -1
  69. package/dist/elements/Upload/index.js +94 -7
  70. package/dist/elements/Upload/index.js.map +1 -1
  71. package/dist/elements/Upload/index.scss +6 -3
  72. package/dist/elements/WhereBuilder/Condition/Relationship/index.scss +2 -2
  73. package/dist/elements/WhereBuilder/validateWhereQuery.js +0 -1
  74. package/dist/elements/WhereBuilder/validateWhereQuery.js.map +1 -1
  75. package/dist/exports/client/{CodeEditor-UTZFZWZG.js → CodeEditor-OI35YO7H.js} +1 -1
  76. package/dist/exports/client/{CodeEditor-UTZFZWZG.js.map → CodeEditor-OI35YO7H.js.map} +1 -1
  77. package/dist/exports/client/{DatePicker-SFJJWFZ5.js → DatePicker-5IFHNQHA.js} +2 -2
  78. package/dist/exports/client/chunk-WDFUZ6GL.js +30 -0
  79. package/dist/exports/client/{chunk-IF2WZON3.js.map → chunk-WDFUZ6GL.js.map} +4 -4
  80. package/dist/exports/client/index.js +6 -6
  81. package/dist/exports/client/index.js.map +4 -4
  82. package/dist/exports/shared/index.js.map +1 -1
  83. package/dist/fields/Array/ArrayRow.d.ts +2 -2
  84. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  85. package/dist/fields/Array/ArrayRow.js.map +1 -1
  86. package/dist/fields/Array/index.d.ts +2 -2
  87. package/dist/fields/Array/index.d.ts.map +1 -1
  88. package/dist/fields/Array/index.js.map +1 -1
  89. package/dist/fields/Blocks/BlockRow.d.ts +2 -2
  90. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  91. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  92. package/dist/fields/Blocks/index.d.ts +2 -2
  93. package/dist/fields/Blocks/index.d.ts.map +1 -1
  94. package/dist/fields/Blocks/index.js.map +1 -1
  95. package/dist/fields/Checkbox/index.js +2 -1
  96. package/dist/fields/Checkbox/index.js.map +1 -1
  97. package/dist/fields/Checkbox/index.scss +2 -1
  98. package/dist/fields/Checkbox/types.d.ts +2 -2
  99. package/dist/fields/Checkbox/types.d.ts.map +1 -1
  100. package/dist/fields/Checkbox/types.js.map +1 -1
  101. package/dist/fields/Code/index.d.ts +2 -2
  102. package/dist/fields/Code/index.d.ts.map +1 -1
  103. package/dist/fields/Code/index.js +1 -1
  104. package/dist/fields/Code/index.js.map +1 -1
  105. package/dist/fields/Code/index.scss +3 -21
  106. package/dist/fields/Collapsible/index.d.ts +2 -2
  107. package/dist/fields/Collapsible/index.d.ts.map +1 -1
  108. package/dist/fields/Collapsible/index.js.map +1 -1
  109. package/dist/fields/Collapsible/index.scss +0 -4
  110. package/dist/fields/DateTime/index.d.ts +2 -2
  111. package/dist/fields/DateTime/index.d.ts.map +1 -1
  112. package/dist/fields/DateTime/index.js +1 -1
  113. package/dist/fields/DateTime/index.js.map +1 -1
  114. package/dist/fields/Email/index.d.ts +2 -2
  115. package/dist/fields/Email/index.d.ts.map +1 -1
  116. package/dist/fields/Email/index.js.map +1 -1
  117. package/dist/fields/FieldError/index.scss +6 -5
  118. package/dist/fields/Group/index.d.ts +2 -2
  119. package/dist/fields/Group/index.d.ts.map +1 -1
  120. package/dist/fields/Group/index.js.map +1 -1
  121. package/dist/fields/Hidden/index.d.ts +2 -2
  122. package/dist/fields/Hidden/index.d.ts.map +1 -1
  123. package/dist/fields/Hidden/index.js.map +1 -1
  124. package/dist/fields/JSON/index.d.ts +2 -2
  125. package/dist/fields/JSON/index.d.ts.map +1 -1
  126. package/dist/fields/JSON/index.js +0 -5
  127. package/dist/fields/JSON/index.js.map +1 -1
  128. package/dist/fields/JSON/index.scss +6 -25
  129. package/dist/fields/Number/index.d.ts +2 -2
  130. package/dist/fields/Number/index.d.ts.map +1 -1
  131. package/dist/fields/Number/index.js +1 -3
  132. package/dist/fields/Number/index.js.map +1 -1
  133. package/dist/fields/Password/index.d.ts +2 -2
  134. package/dist/fields/Password/index.d.ts.map +1 -1
  135. package/dist/fields/Password/index.js.map +1 -1
  136. package/dist/fields/Point/index.d.ts +2 -2
  137. package/dist/fields/Point/index.d.ts.map +1 -1
  138. package/dist/fields/Point/index.js +6 -6
  139. package/dist/fields/Point/index.js.map +1 -1
  140. package/dist/fields/Point/index.scss +4 -0
  141. package/dist/fields/RadioGroup/index.d.ts +2 -2
  142. package/dist/fields/RadioGroup/index.d.ts.map +1 -1
  143. package/dist/fields/RadioGroup/index.js +7 -6
  144. package/dist/fields/RadioGroup/index.js.map +1 -1
  145. package/dist/fields/RadioGroup/index.scss +7 -0
  146. package/dist/fields/Relationship/index.scss +2 -2
  147. package/dist/fields/Relationship/types.d.ts +2 -2
  148. package/dist/fields/Relationship/types.d.ts.map +1 -1
  149. package/dist/fields/Relationship/types.js.map +1 -1
  150. package/dist/fields/RichText/index.d.ts +2 -2
  151. package/dist/fields/RichText/index.d.ts.map +1 -1
  152. package/dist/fields/RichText/index.js.map +1 -1
  153. package/dist/fields/Row/types.d.ts +2 -2
  154. package/dist/fields/Row/types.d.ts.map +1 -1
  155. package/dist/fields/Row/types.js.map +1 -1
  156. package/dist/fields/Select/Input.d.ts +2 -2
  157. package/dist/fields/Select/Input.d.ts.map +1 -1
  158. package/dist/fields/Select/Input.js +0 -5
  159. package/dist/fields/Select/Input.js.map +1 -1
  160. package/dist/fields/Select/index.d.ts +2 -2
  161. package/dist/fields/Select/index.d.ts.map +1 -1
  162. package/dist/fields/Select/index.js +1 -1
  163. package/dist/fields/Select/index.js.map +1 -1
  164. package/dist/fields/Tabs/index.d.ts +2 -2
  165. package/dist/fields/Tabs/index.d.ts.map +1 -1
  166. package/dist/fields/Tabs/index.js.map +1 -1
  167. package/dist/fields/Text/types.d.ts +4 -4
  168. package/dist/fields/Text/types.d.ts.map +1 -1
  169. package/dist/fields/Text/types.js.map +1 -1
  170. package/dist/fields/Textarea/index.d.ts.map +1 -1
  171. package/dist/fields/Textarea/index.js +1 -1
  172. package/dist/fields/Textarea/index.js.map +1 -1
  173. package/dist/fields/Textarea/types.d.ts +4 -4
  174. package/dist/fields/Textarea/types.d.ts.map +1 -1
  175. package/dist/fields/Textarea/types.js.map +1 -1
  176. package/dist/fields/Upload/Input.d.ts +2 -2
  177. package/dist/fields/Upload/Input.d.ts.map +1 -1
  178. package/dist/fields/Upload/Input.js.map +1 -1
  179. package/dist/fields/Upload/types.d.ts +2 -2
  180. package/dist/fields/Upload/types.d.ts.map +1 -1
  181. package/dist/fields/Upload/types.js.map +1 -1
  182. package/dist/forms/Form/index.d.ts.map +1 -1
  183. package/dist/forms/Form/index.js +1 -1
  184. package/dist/forms/Form/index.js.map +1 -1
  185. package/dist/forms/Form/types.d.ts +7 -7
  186. package/dist/forms/Form/types.d.ts.map +1 -1
  187. package/dist/forms/Form/types.js.map +1 -1
  188. package/dist/forms/RowLabel/Context/index.d.ts +2 -2
  189. package/dist/forms/RowLabel/Context/index.d.ts.map +1 -1
  190. package/dist/forms/RowLabel/Context/index.js.map +1 -1
  191. package/dist/forms/buildStateFromSchema/addFieldStatePromise.d.ts.map +1 -1
  192. package/dist/forms/buildStateFromSchema/addFieldStatePromise.js +1 -1
  193. package/dist/forms/buildStateFromSchema/addFieldStatePromise.js.map +1 -1
  194. package/dist/forms/buildStateFromSchema/buildStateFromSchema.spec.js +1 -1
  195. package/dist/forms/buildStateFromSchema/buildStateFromSchema.spec.js.map +1 -1
  196. package/dist/forms/buildStateFromSchema/getFilterOptionsQuery.d.ts +2 -2
  197. package/dist/forms/buildStateFromSchema/getFilterOptionsQuery.d.ts.map +1 -1
  198. package/dist/forms/buildStateFromSchema/getFilterOptionsQuery.js.map +1 -1
  199. package/dist/hooks/useHotkey.js +1 -1
  200. package/dist/hooks/useHotkey.js.map +1 -1
  201. package/dist/hooks/useIntersect.js +1 -1
  202. package/dist/hooks/useIntersect.js.map +1 -1
  203. package/dist/hooks/useThrottledEffect.d.ts.map +1 -1
  204. package/dist/hooks/useThrottledEffect.js +1 -1
  205. package/dist/hooks/useThrottledEffect.js.map +1 -1
  206. package/dist/providers/ComponentMap/buildComponentMap/actions.d.ts.map +1 -1
  207. package/dist/providers/ComponentMap/buildComponentMap/actions.js +3 -3
  208. package/dist/providers/ComponentMap/buildComponentMap/actions.js.map +1 -1
  209. package/dist/providers/ComponentMap/buildComponentMap/collections.d.ts.map +1 -1
  210. package/dist/providers/ComponentMap/buildComponentMap/collections.js +8 -8
  211. package/dist/providers/ComponentMap/buildComponentMap/collections.js.map +1 -1
  212. package/dist/providers/ComponentMap/buildComponentMap/fields.d.ts.map +1 -1
  213. package/dist/providers/ComponentMap/buildComponentMap/fields.js +1 -0
  214. package/dist/providers/ComponentMap/buildComponentMap/fields.js.map +1 -1
  215. package/dist/providers/ComponentMap/buildComponentMap/index.js +2 -2
  216. package/dist/providers/ComponentMap/buildComponentMap/index.js.map +1 -1
  217. package/dist/providers/ComponentMap/buildComponentMap/types.d.ts +2 -2
  218. package/dist/providers/ComponentMap/buildComponentMap/types.d.ts.map +1 -1
  219. package/dist/providers/ComponentMap/buildComponentMap/types.js.map +1 -1
  220. package/dist/providers/DocumentInfo/index.d.ts +2 -2
  221. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  222. package/dist/providers/DocumentInfo/index.js.map +1 -1
  223. package/dist/providers/DocumentInfo/types.d.ts +6 -6
  224. package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
  225. package/dist/providers/DocumentInfo/types.js.map +1 -1
  226. package/dist/providers/ListInfo/index.d.ts +2 -2
  227. package/dist/providers/ListInfo/index.d.ts.map +1 -1
  228. package/dist/providers/ListInfo/index.js.map +1 -1
  229. package/dist/providers/ListQuery/index.d.ts +2 -2
  230. package/dist/providers/ListQuery/index.d.ts.map +1 -1
  231. package/dist/providers/ListQuery/index.js.map +1 -1
  232. package/dist/styles.css +1 -1
  233. package/dist/utilities/api.d.ts +2 -2
  234. package/dist/utilities/api.d.ts.map +1 -1
  235. package/dist/utilities/api.js.map +1 -1
  236. package/dist/utilities/buildFormState.d.ts.map +1 -1
  237. package/dist/utilities/buildFormState.js +0 -2
  238. package/dist/utilities/buildFormState.js.map +1 -1
  239. package/package.json +12 -19
  240. package/dist/exports/client/chunk-IF2WZON3.js +0 -30
  241. /package/dist/exports/client/{DatePicker-SFJJWFZ5.js.map → DatePicker-5IFHNQHA.js.map} +0 -0
@@ -1,4 +1,4 @@
1
- /* eslint-disable react/destructuring-assignment */ 'use client';
1
+ 'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import React, { useCallback } from 'react';
4
4
  import { useFieldProps } from '../../forms/FieldPropsProvider/index.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/fields/Select/index.tsx"],"sourcesContent":["/* eslint-disable react/destructuring-assignment */\n'use client'\nimport type { ClientValidate, Option, OptionObject } from 'payload'\n\nimport React, { useCallback, useState } from 'react'\n\nimport type { ReactSelectAdapterProps } from '../../elements/ReactSelect/types.js'\nimport type { FormFieldBase } from '../shared/index.js'\nimport type { SelectInputProps } from './Input.js'\n\nimport { useFieldProps } from '../../forms/FieldPropsProvider/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { SelectInput } from './Input.js'\n\nexport type SelectFieldProps = FormFieldBase & {\n hasMany?: boolean\n isClearable?: boolean\n isSortable?: boolean\n name?: string\n onChange?: (e: string | string[]) => void\n options?: Option[]\n path?: string\n value?: string\n width?: string\n}\n\nconst formatOptions = (options: Option[]): OptionObject[] =>\n options.map((option) => {\n if (typeof option === 'object' && (option.value || option.value === '')) {\n return option\n }\n\n return {\n label: option,\n value: option,\n } as OptionObject\n })\n\nconst _SelectField: React.FC<SelectFieldProps> = (props) => {\n const {\n name,\n AfterInput,\n BeforeInput,\n CustomDescription,\n CustomError,\n CustomLabel,\n className,\n descriptionProps,\n errorProps,\n hasMany = false,\n isClearable = true,\n isSortable = true,\n label,\n labelProps,\n onChange: onChangeFromProps,\n options: optionsFromProps = [],\n path: pathFromProps,\n readOnly: readOnlyFromProps,\n required,\n style,\n validate,\n width,\n } = props\n\n const options = React.useMemo(() => formatOptions(optionsFromProps), [optionsFromProps])\n\n const memoizedValidate: ClientValidate = useCallback(\n (value, validationOptions) => {\n if (typeof validate === 'function')\n return validate(value, { ...validationOptions, hasMany, options, required })\n },\n [validate, required, hasMany, options],\n )\n\n const { path: pathFromContext, readOnly: readOnlyFromContext } = useFieldProps()\n\n const { formInitializing, formProcessing, path, setValue, showError, value } = useField({\n path: pathFromContext ?? pathFromProps ?? name,\n validate: memoizedValidate,\n })\n\n const disabled = readOnlyFromProps || readOnlyFromContext || formProcessing || formInitializing\n\n const onChange: ReactSelectAdapterProps['onChange'] = useCallback(\n (selectedOption: OptionObject | OptionObject[]) => {\n if (!disabled) {\n let newValue: string | string[] = null\n if (selectedOption && hasMany) {\n if (Array.isArray(selectedOption)) {\n newValue = selectedOption.map((option) => option.value)\n } else {\n newValue = []\n }\n } else if (selectedOption && !Array.isArray(selectedOption)) {\n newValue = selectedOption.value\n }\n\n if (typeof onChangeFromProps === 'function') {\n onChangeFromProps(newValue)\n }\n\n setValue(newValue)\n }\n },\n [disabled, hasMany, setValue, onChangeFromProps],\n )\n\n return (\n <SelectInput\n AfterInput={AfterInput}\n BeforeInput={BeforeInput}\n CustomDescription={CustomDescription}\n CustomError={CustomError}\n CustomLabel={CustomLabel}\n className={className}\n descriptionProps={descriptionProps}\n errorProps={errorProps}\n hasMany={hasMany}\n isClearable={isClearable}\n isSortable={isSortable}\n label={label}\n labelProps={labelProps}\n name={name}\n onChange={onChange}\n options={options}\n path={path}\n readOnly={disabled}\n required={required}\n showError={showError}\n style={style}\n value={value as string | string[]}\n width={width}\n />\n )\n}\n\nexport const SelectField = withCondition(_SelectField)\n\nexport { SelectInput, type SelectInputProps }\n"],"names":["React","useCallback","useFieldProps","useField","withCondition","SelectInput","formatOptions","options","map","option","value","label","_SelectField","props","name","AfterInput","BeforeInput","CustomDescription","CustomError","CustomLabel","className","descriptionProps","errorProps","hasMany","isClearable","isSortable","labelProps","onChange","onChangeFromProps","optionsFromProps","path","pathFromProps","readOnly","readOnlyFromProps","required","style","validate","width","useMemo","memoizedValidate","validationOptions","pathFromContext","readOnlyFromContext","formInitializing","formProcessing","setValue","showError","disabled","selectedOption","newValue","Array","isArray","SelectField"],"mappings":"AAAA,iDAAiD,GACjD;;AAGA,OAAOA,SAASC,WAAW,QAAkB,QAAO;AAMpD,SAASC,aAAa,QAAQ,0CAAyC;AACvE,SAASC,QAAQ,QAAQ,gCAA+B;AACxD,SAASC,aAAa,QAAQ,qCAAoC;AAClE,SAASC,WAAW,QAAQ,aAAY;AAcxC,MAAMC,gBAAgB,CAACC,UACrBA,QAAQC,GAAG,CAAC,CAACC;QACX,IAAI,OAAOA,WAAW,YAAaA,CAAAA,OAAOC,KAAK,IAAID,OAAOC,KAAK,KAAK,EAAC,GAAI;YACvE,OAAOD;QACT;QAEA,OAAO;YACLE,OAAOF;YACPC,OAAOD;QACT;IACF;AAEF,MAAMG,eAA2C,CAACC;IAChD,MAAM,EACJC,IAAI,EACJC,UAAU,EACVC,WAAW,EACXC,iBAAiB,EACjBC,WAAW,EACXC,WAAW,EACXC,SAAS,EACTC,gBAAgB,EAChBC,UAAU,EACVC,UAAU,KAAK,EACfC,cAAc,IAAI,EAClBC,aAAa,IAAI,EACjBd,KAAK,EACLe,UAAU,EACVC,UAAUC,iBAAiB,EAC3BrB,SAASsB,mBAAmB,EAAE,EAC9BC,MAAMC,aAAa,EACnBC,UAAUC,iBAAiB,EAC3BC,QAAQ,EACRC,KAAK,EACLC,QAAQ,EACRC,KAAK,EACN,GAAGxB;IAEJ,MAAMN,UAAUP,MAAMsC,OAAO,CAAC,IAAMhC,cAAcuB,mBAAmB;QAACA;KAAiB;IAEvF,MAAMU,mBAAmCtC,YACvC,CAACS,OAAO8B;QACN,IAAI,OAAOJ,aAAa,YACtB,OAAOA,SAAS1B,OAAO;YAAE,GAAG8B,iBAAiB;YAAEjB;YAAShB;YAAS2B;QAAS;IAC9E,GACA;QAACE;QAAUF;QAAUX;QAAShB;KAAQ;IAGxC,MAAM,EAAEuB,MAAMW,eAAe,EAAET,UAAUU,mBAAmB,EAAE,GAAGxC;IAEjE,MAAM,EAAEyC,gBAAgB,EAAEC,cAAc,EAAEd,IAAI,EAAEe,QAAQ,EAAEC,SAAS,EAAEpC,KAAK,EAAE,GAAGP,SAAS;QACtF2B,MAAMW,mBAAmBV,iBAAiBjB;QAC1CsB,UAAUG;IACZ;IAEA,MAAMQ,WAAWd,qBAAqBS,uBAAuBE,kBAAkBD;IAE/E,MAAMhB,WAAgD1B,YACpD,CAAC+C;QACC,IAAI,CAACD,UAAU;YACb,IAAIE,WAA8B;YAClC,IAAID,kBAAkBzB,SAAS;gBAC7B,IAAI2B,MAAMC,OAAO,CAACH,iBAAiB;oBACjCC,WAAWD,eAAexC,GAAG,CAAC,CAACC,SAAWA,OAAOC,KAAK;gBACxD,OAAO;oBACLuC,WAAW,EAAE;gBACf;YACF,OAAO,IAAID,kBAAkB,CAACE,MAAMC,OAAO,CAACH,iBAAiB;gBAC3DC,WAAWD,eAAetC,KAAK;YACjC;YAEA,IAAI,OAAOkB,sBAAsB,YAAY;gBAC3CA,kBAAkBqB;YACpB;YAEAJ,SAASI;QACX;IACF,GACA;QAACF;QAAUxB;QAASsB;QAAUjB;KAAkB;IAGlD,qBACE,KAACvB;QACCU,YAAYA;QACZC,aAAaA;QACbC,mBAAmBA;QACnBC,aAAaA;QACbC,aAAaA;QACbC,WAAWA;QACXC,kBAAkBA;QAClBC,YAAYA;QACZC,SAASA;QACTC,aAAaA;QACbC,YAAYA;QACZd,OAAOA;QACPe,YAAYA;QACZZ,MAAMA;QACNa,UAAUA;QACVpB,SAASA;QACTuB,MAAMA;QACNE,UAAUe;QACVb,UAAUA;QACVY,WAAWA;QACXX,OAAOA;QACPzB,OAAOA;QACP2B,OAAOA;;AAGb;AAEA,OAAO,MAAMe,cAAchD,cAAcQ,cAAa;AAEtD,SAASP,WAAW,GAAyB"}
1
+ {"version":3,"sources":["../../../src/fields/Select/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientValidate, Option, OptionObject } from 'payload'\n\nimport React, { useCallback } from 'react'\n\nimport type { ReactSelectAdapterProps } from '../../elements/ReactSelect/types.js'\nimport type { FormFieldBase } from '../shared/index.js'\nimport type { SelectInputProps } from './Input.js'\n\nimport { useFieldProps } from '../../forms/FieldPropsProvider/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { SelectInput } from './Input.js'\n\nexport type SelectFieldProps = {\n hasMany?: boolean\n isClearable?: boolean\n isSortable?: boolean\n name?: string\n onChange?: (e: string | string[]) => void\n options?: Option[]\n path?: string\n value?: string\n width?: string\n} & FormFieldBase\n\nconst formatOptions = (options: Option[]): OptionObject[] =>\n options.map((option) => {\n if (typeof option === 'object' && (option.value || option.value === '')) {\n return option\n }\n\n return {\n label: option,\n value: option,\n } as OptionObject\n })\n\nconst _SelectField: React.FC<SelectFieldProps> = (props) => {\n const {\n name,\n AfterInput,\n BeforeInput,\n CustomDescription,\n CustomError,\n CustomLabel,\n className,\n descriptionProps,\n errorProps,\n hasMany = false,\n isClearable = true,\n isSortable = true,\n label,\n labelProps,\n onChange: onChangeFromProps,\n options: optionsFromProps = [],\n path: pathFromProps,\n readOnly: readOnlyFromProps,\n required,\n style,\n validate,\n width,\n } = props\n\n const options = React.useMemo(() => formatOptions(optionsFromProps), [optionsFromProps])\n\n const memoizedValidate: ClientValidate = useCallback(\n (value, validationOptions) => {\n if (typeof validate === 'function')\n return validate(value, { ...validationOptions, hasMany, options, required })\n },\n [validate, required, hasMany, options],\n )\n\n const { path: pathFromContext, readOnly: readOnlyFromContext } = useFieldProps()\n\n const { formInitializing, formProcessing, path, setValue, showError, value } = useField({\n path: pathFromContext ?? pathFromProps ?? name,\n validate: memoizedValidate,\n })\n\n const disabled = readOnlyFromProps || readOnlyFromContext || formProcessing || formInitializing\n\n const onChange: ReactSelectAdapterProps['onChange'] = useCallback(\n (selectedOption: OptionObject | OptionObject[]) => {\n if (!disabled) {\n let newValue: string | string[] = null\n if (selectedOption && hasMany) {\n if (Array.isArray(selectedOption)) {\n newValue = selectedOption.map((option) => option.value)\n } else {\n newValue = []\n }\n } else if (selectedOption && !Array.isArray(selectedOption)) {\n newValue = selectedOption.value\n }\n\n if (typeof onChangeFromProps === 'function') {\n onChangeFromProps(newValue)\n }\n\n setValue(newValue)\n }\n },\n [disabled, hasMany, setValue, onChangeFromProps],\n )\n\n return (\n <SelectInput\n AfterInput={AfterInput}\n BeforeInput={BeforeInput}\n CustomDescription={CustomDescription}\n CustomError={CustomError}\n CustomLabel={CustomLabel}\n className={className}\n descriptionProps={descriptionProps}\n errorProps={errorProps}\n hasMany={hasMany}\n isClearable={isClearable}\n isSortable={isSortable}\n label={label}\n labelProps={labelProps}\n name={name}\n onChange={onChange}\n options={options}\n path={path}\n readOnly={disabled}\n required={required}\n showError={showError}\n style={style}\n value={value as string | string[]}\n width={width}\n />\n )\n}\n\nexport const SelectField = withCondition(_SelectField)\n\nexport { SelectInput, type SelectInputProps }\n"],"names":["React","useCallback","useFieldProps","useField","withCondition","SelectInput","formatOptions","options","map","option","value","label","_SelectField","props","name","AfterInput","BeforeInput","CustomDescription","CustomError","CustomLabel","className","descriptionProps","errorProps","hasMany","isClearable","isSortable","labelProps","onChange","onChangeFromProps","optionsFromProps","path","pathFromProps","readOnly","readOnlyFromProps","required","style","validate","width","useMemo","memoizedValidate","validationOptions","pathFromContext","readOnlyFromContext","formInitializing","formProcessing","setValue","showError","disabled","selectedOption","newValue","Array","isArray","SelectField"],"mappings":"AAAA;;AAGA,OAAOA,SAASC,WAAW,QAAQ,QAAO;AAM1C,SAASC,aAAa,QAAQ,0CAAyC;AACvE,SAASC,QAAQ,QAAQ,gCAA+B;AACxD,SAASC,aAAa,QAAQ,qCAAoC;AAClE,SAASC,WAAW,QAAQ,aAAY;AAcxC,MAAMC,gBAAgB,CAACC,UACrBA,QAAQC,GAAG,CAAC,CAACC;QACX,IAAI,OAAOA,WAAW,YAAaA,CAAAA,OAAOC,KAAK,IAAID,OAAOC,KAAK,KAAK,EAAC,GAAI;YACvE,OAAOD;QACT;QAEA,OAAO;YACLE,OAAOF;YACPC,OAAOD;QACT;IACF;AAEF,MAAMG,eAA2C,CAACC;IAChD,MAAM,EACJC,IAAI,EACJC,UAAU,EACVC,WAAW,EACXC,iBAAiB,EACjBC,WAAW,EACXC,WAAW,EACXC,SAAS,EACTC,gBAAgB,EAChBC,UAAU,EACVC,UAAU,KAAK,EACfC,cAAc,IAAI,EAClBC,aAAa,IAAI,EACjBd,KAAK,EACLe,UAAU,EACVC,UAAUC,iBAAiB,EAC3BrB,SAASsB,mBAAmB,EAAE,EAC9BC,MAAMC,aAAa,EACnBC,UAAUC,iBAAiB,EAC3BC,QAAQ,EACRC,KAAK,EACLC,QAAQ,EACRC,KAAK,EACN,GAAGxB;IAEJ,MAAMN,UAAUP,MAAMsC,OAAO,CAAC,IAAMhC,cAAcuB,mBAAmB;QAACA;KAAiB;IAEvF,MAAMU,mBAAmCtC,YACvC,CAACS,OAAO8B;QACN,IAAI,OAAOJ,aAAa,YACtB,OAAOA,SAAS1B,OAAO;YAAE,GAAG8B,iBAAiB;YAAEjB;YAAShB;YAAS2B;QAAS;IAC9E,GACA;QAACE;QAAUF;QAAUX;QAAShB;KAAQ;IAGxC,MAAM,EAAEuB,MAAMW,eAAe,EAAET,UAAUU,mBAAmB,EAAE,GAAGxC;IAEjE,MAAM,EAAEyC,gBAAgB,EAAEC,cAAc,EAAEd,IAAI,EAAEe,QAAQ,EAAEC,SAAS,EAAEpC,KAAK,EAAE,GAAGP,SAAS;QACtF2B,MAAMW,mBAAmBV,iBAAiBjB;QAC1CsB,UAAUG;IACZ;IAEA,MAAMQ,WAAWd,qBAAqBS,uBAAuBE,kBAAkBD;IAE/E,MAAMhB,WAAgD1B,YACpD,CAAC+C;QACC,IAAI,CAACD,UAAU;YACb,IAAIE,WAA8B;YAClC,IAAID,kBAAkBzB,SAAS;gBAC7B,IAAI2B,MAAMC,OAAO,CAACH,iBAAiB;oBACjCC,WAAWD,eAAexC,GAAG,CAAC,CAACC,SAAWA,OAAOC,KAAK;gBACxD,OAAO;oBACLuC,WAAW,EAAE;gBACf;YACF,OAAO,IAAID,kBAAkB,CAACE,MAAMC,OAAO,CAACH,iBAAiB;gBAC3DC,WAAWD,eAAetC,KAAK;YACjC;YAEA,IAAI,OAAOkB,sBAAsB,YAAY;gBAC3CA,kBAAkBqB;YACpB;YAEAJ,SAASI;QACX;IACF,GACA;QAACF;QAAUxB;QAASsB;QAAUjB;KAAkB;IAGlD,qBACE,KAACvB;QACCU,YAAYA;QACZC,aAAaA;QACbC,mBAAmBA;QACnBC,aAAaA;QACbC,aAAaA;QACbC,WAAWA;QACXC,kBAAkBA;QAClBC,YAAYA;QACZC,SAASA;QACTC,aAAaA;QACbC,YAAYA;QACZd,OAAOA;QACPe,YAAYA;QACZZ,MAAMA;QACNa,UAAUA;QACVpB,SAASA;QACTuB,MAAMA;QACNE,UAAUe;QACVb,UAAUA;QACVY,WAAWA;QACXX,OAAOA;QACPzB,OAAOA;QACP2B,OAAOA;;AAGb;AAEA,OAAO,MAAMe,cAAchD,cAAcQ,cAAa;AAEtD,SAASP,WAAW,GAAyB"}
@@ -4,12 +4,12 @@ import type { FormFieldBase } from '../shared/index.js';
4
4
  import './index.scss';
5
5
  import { TabsProvider } from './provider.js';
6
6
  export { TabsProvider };
7
- export type TabsFieldProps = FormFieldBase & {
7
+ export type TabsFieldProps = {
8
8
  forceRender?: boolean;
9
9
  name?: string;
10
10
  path?: string;
11
11
  tabs?: MappedTab[];
12
12
  width?: string;
13
- };
13
+ } & FormFieldBase;
14
14
  export declare const TabsField: React.FC<TabsFieldProps>;
15
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Tabs/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAE/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yDAAyD,CAAA;AACxF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAYvD,OAAO,cAAc,CAAA;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAI5C,OAAO,EAAE,YAAY,EAAE,CAAA;AAEvB,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG;IAC3C,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,SAAS,EAAE,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAoKD,eAAO,MAAM,SAAS,0BAA4B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Tabs/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAE/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yDAAyD,CAAA;AACxF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAYvD,OAAO,cAAc,CAAA;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAI5C,OAAO,EAAE,YAAY,EAAE,CAAA;AAEvB,MAAM,MAAM,cAAc,GAAG;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,SAAS,EAAE,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,GAAG,aAAa,CAAA;AAoKjB,eAAO,MAAM,SAAS,0BAA4B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/fields/Tabs/index.tsx"],"sourcesContent":["'use client'\nimport type { DocumentPreferences } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { toKebabCase } from 'payload/shared'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport type { MappedTab } from '../../providers/ComponentMap/buildComponentMap/types.js'\nimport type { FormFieldBase } from '../shared/index.js'\n\nimport { useCollapsible } from '../../elements/Collapsible/provider.js'\nimport { useFieldProps } from '../../forms/FieldPropsProvider/index.js'\nimport { RenderFields } from '../../forms/RenderFields/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { usePreferences } from '../../providers/Preferences/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { FieldDescription } from '../FieldDescription/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { TabComponent } from './Tab/index.js'\nimport './index.scss'\nimport { TabsProvider } from './provider.js'\n\nconst baseClass = 'tabs-field'\n\nexport { TabsProvider }\n\nexport type TabsFieldProps = FormFieldBase & {\n forceRender?: boolean\n name?: string\n path?: string\n tabs?: MappedTab[]\n width?: string\n}\n\nconst _TabsField: React.FC<TabsFieldProps> = (props) => {\n const {\n name,\n CustomDescription,\n className,\n descriptionProps,\n forceRender = false,\n path: pathFromProps,\n readOnly: readOnlyFromProps,\n tabs = [],\n } = props\n\n const {\n indexPath,\n path: pathFromContext,\n readOnly: readOnlyFromContext,\n schemaPath,\n siblingPermissions,\n } = useFieldProps()\n\n const readOnly = readOnlyFromProps || readOnlyFromContext\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 if (preferencesKey) {\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 }\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 if (preferencesKey) {\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 },\n [preferencesKey, getPreference, setPreference, path, tabsPrefKey],\n )\n\n const activeTabConfig = tabs[activeTabIndex]\n\n function generateTabPath() {\n let tabPath = path\n if (path && activeTabConfig.name) {\n tabPath = `${path}.${activeTabConfig.name}`\n } else if (!path && activeTabConfig.name) {\n tabPath = activeTabConfig.name\n }\n\n return tabPath\n }\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 {CustomDescription ? (\n CustomDescription\n ) : (\n <FieldDescription {...(descriptionProps || {})} />\n )}\n <RenderFields\n fieldMap={activeTabConfig.fieldMap}\n forceRender={forceRender}\n key={\n activeTabConfig.label\n ? getTranslation(activeTabConfig.label, i18n)\n : activeTabConfig['name']\n }\n margins=\"small\"\n path={generateTabPath()}\n permissions={\n 'name' in activeTabConfig && siblingPermissions?.[activeTabConfig.name]?.fields\n ? siblingPermissions[activeTabConfig.name]?.fields\n : siblingPermissions\n }\n readOnly={readOnly}\n schemaPath={`${schemaPath ? `${schemaPath}` : ''}${activeTabConfig.name ? `.${activeTabConfig.name}` : ''}`}\n />\n </div>\n </React.Fragment>\n )}\n </div>\n </TabsProvider>\n </div>\n )\n}\n\nexport const TabsField = withCondition(_TabsField)\n"],"names":["getTranslation","toKebabCase","React","useCallback","useEffect","useState","useCollapsible","useFieldProps","RenderFields","withCondition","useDocumentInfo","usePreferences","useTranslation","FieldDescription","fieldBaseClass","TabComponent","TabsProvider","baseClass","_TabsField","props","name","CustomDescription","className","descriptionProps","forceRender","path","pathFromProps","readOnly","readOnlyFromProps","tabs","indexPath","pathFromContext","readOnlyFromContext","schemaPath","siblingPermissions","getPreference","setPreference","preferencesKey","i18n","isWithinCollapsible","activeTabIndex","setActiveTabIndex","tabsPrefKey","getInitialPref","existingPreferences","initialIndex","fields","tabIndex","handleTabChange","incomingTabIndex","activeTabConfig","generateTabPath","tabPath","div","filter","Boolean","join","map","tab","isActive","parentPath","setIsActive","Fragment","label","fieldMap","margins","permissions","TabsField"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/fields/Tabs/index.tsx"],"sourcesContent":["'use client'\nimport type { DocumentPreferences } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { toKebabCase } from 'payload/shared'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport type { MappedTab } from '../../providers/ComponentMap/buildComponentMap/types.js'\nimport type { FormFieldBase } from '../shared/index.js'\n\nimport { useCollapsible } from '../../elements/Collapsible/provider.js'\nimport { useFieldProps } from '../../forms/FieldPropsProvider/index.js'\nimport { RenderFields } from '../../forms/RenderFields/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { usePreferences } from '../../providers/Preferences/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { FieldDescription } from '../FieldDescription/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { TabComponent } from './Tab/index.js'\nimport './index.scss'\nimport { TabsProvider } from './provider.js'\n\nconst baseClass = 'tabs-field'\n\nexport { TabsProvider }\n\nexport type TabsFieldProps = {\n forceRender?: boolean\n name?: string\n path?: string\n tabs?: MappedTab[]\n width?: string\n} & FormFieldBase\n\nconst _TabsField: React.FC<TabsFieldProps> = (props) => {\n const {\n name,\n CustomDescription,\n className,\n descriptionProps,\n forceRender = false,\n path: pathFromProps,\n readOnly: readOnlyFromProps,\n tabs = [],\n } = props\n\n const {\n indexPath,\n path: pathFromContext,\n readOnly: readOnlyFromContext,\n schemaPath,\n siblingPermissions,\n } = useFieldProps()\n\n const readOnly = readOnlyFromProps || readOnlyFromContext\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 if (preferencesKey) {\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 }\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 if (preferencesKey) {\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 },\n [preferencesKey, getPreference, setPreference, path, tabsPrefKey],\n )\n\n const activeTabConfig = tabs[activeTabIndex]\n\n function generateTabPath() {\n let tabPath = path\n if (path && activeTabConfig.name) {\n tabPath = `${path}.${activeTabConfig.name}`\n } else if (!path && activeTabConfig.name) {\n tabPath = activeTabConfig.name\n }\n\n return tabPath\n }\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 {CustomDescription ? (\n CustomDescription\n ) : (\n <FieldDescription {...(descriptionProps || {})} />\n )}\n <RenderFields\n fieldMap={activeTabConfig.fieldMap}\n forceRender={forceRender}\n key={\n activeTabConfig.label\n ? getTranslation(activeTabConfig.label, i18n)\n : activeTabConfig['name']\n }\n margins=\"small\"\n path={generateTabPath()}\n permissions={\n 'name' in activeTabConfig && siblingPermissions?.[activeTabConfig.name]?.fields\n ? siblingPermissions[activeTabConfig.name]?.fields\n : siblingPermissions\n }\n readOnly={readOnly}\n schemaPath={`${schemaPath ? `${schemaPath}` : ''}${activeTabConfig.name ? `.${activeTabConfig.name}` : ''}`}\n />\n </div>\n </React.Fragment>\n )}\n </div>\n </TabsProvider>\n </div>\n )\n}\n\nexport const TabsField = withCondition(_TabsField)\n"],"names":["getTranslation","toKebabCase","React","useCallback","useEffect","useState","useCollapsible","useFieldProps","RenderFields","withCondition","useDocumentInfo","usePreferences","useTranslation","FieldDescription","fieldBaseClass","TabComponent","TabsProvider","baseClass","_TabsField","props","name","CustomDescription","className","descriptionProps","forceRender","path","pathFromProps","readOnly","readOnlyFromProps","tabs","indexPath","pathFromContext","readOnlyFromContext","schemaPath","siblingPermissions","getPreference","setPreference","preferencesKey","i18n","isWithinCollapsible","activeTabIndex","setActiveTabIndex","tabsPrefKey","getInitialPref","existingPreferences","initialIndex","fields","tabIndex","handleTabChange","incomingTabIndex","activeTabConfig","generateTabPath","tabPath","div","filter","Boolean","join","map","tab","isActive","parentPath","setIsActive","Fragment","label","fieldMap","margins","permissions","TabsField"],"mappings":"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"}
@@ -2,7 +2,7 @@ import type { TextField } from 'payload';
2
2
  import type { ChangeEvent } from 'react';
3
3
  import type { Option, ReactSelectAdapterProps } from '../../elements/ReactSelect/types.js';
4
4
  import type { FormFieldBase } from '../shared/index.js';
5
- export type TextFieldProps = FormFieldBase & {
5
+ export type TextFieldProps = {
6
6
  hasMany?: boolean;
7
7
  inputRef?: React.MutableRefObject<HTMLInputElement>;
8
8
  maxLength?: number;
@@ -14,7 +14,7 @@ export type TextFieldProps = FormFieldBase & {
14
14
  path?: string;
15
15
  placeholder?: TextField['admin']['placeholder'];
16
16
  width?: string;
17
- };
17
+ } & FormFieldBase;
18
18
  export type SharedTextFieldProps = {
19
19
  hasMany?: false;
20
20
  onChange?: (e: ChangeEvent<HTMLInputElement>) => void;
@@ -22,7 +22,7 @@ export type SharedTextFieldProps = {
22
22
  hasMany?: true;
23
23
  onChange?: ReactSelectAdapterProps['onChange'];
24
24
  };
25
- export type TextInputProps = Omit<TextFieldProps, 'type'> & SharedTextFieldProps & {
25
+ export type TextInputProps = {
26
26
  inputRef?: React.MutableRefObject<HTMLInputElement>;
27
27
  maxRows?: number;
28
28
  minRows?: number;
@@ -30,5 +30,5 @@ export type TextInputProps = Omit<TextFieldProps, 'type'> & SharedTextFieldProps
30
30
  showError?: boolean;
31
31
  value?: string;
32
32
  valueToRender?: Option[];
33
- };
33
+ } & Omit<TextFieldProps, 'type'> & SharedTextFieldProps;
34
34
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/fields/Text/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAExC,OAAO,KAAK,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAA;AAC1F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvD,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAA;IACnD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAA;IACxD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAA;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,oBAAoB,GAC5B;IACE,OAAO,CAAC,EAAE,KAAK,CAAA;IACf,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAA;CACtD,GACD;IACE,OAAO,CAAC,EAAE,IAAI,CAAA;IACd,QAAQ,CAAC,EAAE,uBAAuB,CAAC,UAAU,CAAC,CAAA;CAC/C,CAAA;AAEL,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,GACvD,oBAAoB,GAAG;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAA;IACnD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAA;IACxD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;CACzB,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/fields/Text/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAExC,OAAO,KAAK,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAA;AAC1F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvD,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAA;IACnD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAA;IACxD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAA;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,GAAG,aAAa,CAAA;AAEjB,MAAM,MAAM,oBAAoB,GAC5B;IACE,OAAO,CAAC,EAAE,KAAK,CAAA;IACf,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAA;CACtD,GACD;IACE,OAAO,CAAC,EAAE,IAAI,CAAA;IACd,QAAQ,CAAC,EAAE,uBAAuB,CAAC,UAAU,CAAC,CAAA;CAC/C,CAAA;AAEL,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAA;IACnD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAA;IACxD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;CACzB,GAAG,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,GAC9B,oBAAoB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/fields/Text/types.ts"],"sourcesContent":["import type { TextField } from 'payload'\nimport type { ChangeEvent } from 'react'\n\nimport type { Option, ReactSelectAdapterProps } from '../../elements/ReactSelect/types.js'\nimport type { FormFieldBase } from '../shared/index.js'\n\nexport type TextFieldProps = FormFieldBase & {\n hasMany?: boolean\n inputRef?: React.MutableRefObject<HTMLInputElement>\n maxLength?: number\n maxRows?: number\n minLength?: number\n minRows?: number\n name?: string\n onKeyDown?: React.KeyboardEventHandler<HTMLInputElement>\n path?: string\n placeholder?: TextField['admin']['placeholder']\n width?: string\n}\n\nexport type SharedTextFieldProps =\n | {\n hasMany?: false\n onChange?: (e: ChangeEvent<HTMLInputElement>) => void\n }\n | {\n hasMany?: true\n onChange?: ReactSelectAdapterProps['onChange']\n }\n\nexport type TextInputProps = Omit<TextFieldProps, 'type'> &\n SharedTextFieldProps & {\n inputRef?: React.MutableRefObject<HTMLInputElement>\n maxRows?: number\n minRows?: number\n onKeyDown?: React.KeyboardEventHandler<HTMLInputElement>\n showError?: boolean\n value?: string\n valueToRender?: Option[]\n }\n"],"names":[],"mappings":"AA8BA,WASG"}
1
+ {"version":3,"sources":["../../../src/fields/Text/types.ts"],"sourcesContent":["import type { TextField } from 'payload'\nimport type { ChangeEvent } from 'react'\n\nimport type { Option, ReactSelectAdapterProps } from '../../elements/ReactSelect/types.js'\nimport type { FormFieldBase } from '../shared/index.js'\n\nexport type TextFieldProps = {\n hasMany?: boolean\n inputRef?: React.MutableRefObject<HTMLInputElement>\n maxLength?: number\n maxRows?: number\n minLength?: number\n minRows?: number\n name?: string\n onKeyDown?: React.KeyboardEventHandler<HTMLInputElement>\n path?: string\n placeholder?: TextField['admin']['placeholder']\n width?: string\n} & FormFieldBase\n\nexport type SharedTextFieldProps =\n | {\n hasMany?: false\n onChange?: (e: ChangeEvent<HTMLInputElement>) => void\n }\n | {\n hasMany?: true\n onChange?: ReactSelectAdapterProps['onChange']\n }\n\nexport type TextInputProps = {\n inputRef?: React.MutableRefObject<HTMLInputElement>\n maxRows?: number\n minRows?: number\n onKeyDown?: React.KeyboardEventHandler<HTMLInputElement>\n showError?: boolean\n value?: string\n valueToRender?: Option[]\n} & Omit<TextFieldProps, 'type'> &\n SharedTextFieldProps\n"],"names":[],"mappings":"AA8BA,WASsB"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Textarea/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAsB,MAAM,OAAO,CAAA;AAE1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAQxE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,cAAc,CAAA;AAErB,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,aAAa,EAAE,CAAA;AAuFhE,eAAO,MAAM,aAAa,8BAAgC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Textarea/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAsB,MAAM,OAAO,CAAA;AAE1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAQxE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,cAAc,CAAA;AAErB,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,aAAa,EAAE,CAAA;AAuFhE,eAAO,MAAM,aAAa,8BAAgC,CAAA"}
@@ -1,4 +1,4 @@
1
- /* eslint-disable react/destructuring-assignment */ 'use client';
1
+ 'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import { getTranslation } from '@payloadcms/translations';
4
4
  import React, { useCallback } from 'react';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/fields/Textarea/index.tsx"],"sourcesContent":["/* eslint-disable react/destructuring-assignment */\n'use client'\nimport type { ClientValidate } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback } from 'react'\n\nimport type { TextAreaInputProps, TextareaFieldProps } from './types.js'\n\nimport { useFieldProps } from '../../forms/FieldPropsProvider/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { isFieldRTL } from '../shared/index.js'\nimport { TextareaInput } from './Input.js'\nimport './index.scss'\n\nexport { TextAreaInputProps, TextareaFieldProps, TextareaInput }\n\nconst _TextareaField: React.FC<TextareaFieldProps> = (props) => {\n const {\n name,\n AfterInput,\n BeforeInput,\n CustomDescription,\n CustomError,\n CustomLabel,\n className,\n descriptionProps,\n errorProps,\n label,\n labelProps,\n locale,\n localized,\n maxLength,\n minLength,\n path: pathFromProps,\n placeholder,\n readOnly: readOnlyFromProps,\n required,\n rows,\n rtl,\n style,\n validate,\n width,\n } = props\n\n const { i18n } = useTranslation()\n\n const { localization } = useConfig()\n\n const isRTL = isFieldRTL({\n fieldLocalized: localized,\n fieldRTL: rtl,\n locale,\n localizationConfig: localization || undefined,\n })\n\n const memoizedValidate: ClientValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function')\n return validate(value, { ...options, maxLength, minLength, required })\n },\n [validate, required, maxLength, minLength],\n )\n\n const { path: pathFromContext, readOnly: readOnlyFromContext } = useFieldProps()\n\n const { formInitializing, formProcessing, path, setValue, showError, value } = useField<string>({\n path: pathFromContext ?? pathFromProps ?? name,\n validate: memoizedValidate,\n })\n\n const disabled = readOnlyFromProps || readOnlyFromContext || formProcessing || formInitializing\n\n return (\n <TextareaInput\n AfterInput={AfterInput}\n BeforeInput={BeforeInput}\n CustomDescription={CustomDescription}\n CustomError={CustomError}\n CustomLabel={CustomLabel}\n className={className}\n descriptionProps={descriptionProps}\n errorProps={errorProps}\n label={label}\n labelProps={labelProps}\n onChange={(e) => {\n setValue(e.target.value)\n }}\n path={path}\n placeholder={getTranslation(placeholder, i18n)}\n readOnly={disabled}\n required={required}\n rows={rows}\n rtl={isRTL}\n showError={showError}\n style={style}\n value={value}\n width={width}\n />\n )\n}\n\nexport const TextareaField = withCondition(_TextareaField)\n"],"names":["getTranslation","React","useCallback","useFieldProps","useField","withCondition","useConfig","useTranslation","isFieldRTL","TextareaInput","_TextareaField","props","name","AfterInput","BeforeInput","CustomDescription","CustomError","CustomLabel","className","descriptionProps","errorProps","label","labelProps","locale","localized","maxLength","minLength","path","pathFromProps","placeholder","readOnly","readOnlyFromProps","required","rows","rtl","style","validate","width","i18n","localization","isRTL","fieldLocalized","fieldRTL","localizationConfig","undefined","memoizedValidate","value","options","pathFromContext","readOnlyFromContext","formInitializing","formProcessing","setValue","showError","disabled","onChange","e","target","TextareaField"],"mappings":"AAAA,iDAAiD,GACjD;;AAGA,SAASA,cAAc,QAAQ,2BAA0B;AACzD,OAAOC,SAASC,WAAW,QAAQ,QAAO;AAI1C,SAASC,aAAa,QAAQ,0CAAyC;AACvE,SAASC,QAAQ,QAAQ,gCAA+B;AACxD,SAASC,aAAa,QAAQ,qCAAoC;AAClE,SAASC,SAAS,QAAQ,kCAAiC;AAC3D,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,UAAU,QAAQ,qBAAoB;AAC/C,SAASC,aAAa,QAAQ,aAAY;AAC1C,OAAO,eAAc;AAErB,SAAiDA,aAAa,GAAE;AAEhE,MAAMC,iBAA+C,CAACC;IACpD,MAAM,EACJC,IAAI,EACJC,UAAU,EACVC,WAAW,EACXC,iBAAiB,EACjBC,WAAW,EACXC,WAAW,EACXC,SAAS,EACTC,gBAAgB,EAChBC,UAAU,EACVC,KAAK,EACLC,UAAU,EACVC,MAAM,EACNC,SAAS,EACTC,SAAS,EACTC,SAAS,EACTC,MAAMC,aAAa,EACnBC,WAAW,EACXC,UAAUC,iBAAiB,EAC3BC,QAAQ,EACRC,IAAI,EACJC,GAAG,EACHC,KAAK,EACLC,QAAQ,EACRC,KAAK,EACN,GAAG1B;IAEJ,MAAM,EAAE2B,IAAI,EAAE,GAAG/B;IAEjB,MAAM,EAAEgC,YAAY,EAAE,GAAGjC;IAEzB,MAAMkC,QAAQhC,WAAW;QACvBiC,gBAAgBjB;QAChBkB,UAAUR;QACVX;QACAoB,oBAAoBJ,gBAAgBK;IACtC;IAEA,MAAMC,mBAAmC3C,YACvC,CAAC4C,OAAOC;QACN,IAAI,OAAOX,aAAa,YACtB,OAAOA,SAASU,OAAO;YAAE,GAAGC,OAAO;YAAEtB;YAAWC;YAAWM;QAAS;IACxE,GACA;QAACI;QAAUJ;QAAUP;QAAWC;KAAU;IAG5C,MAAM,EAAEC,MAAMqB,eAAe,EAAElB,UAAUmB,mBAAmB,EAAE,GAAG9C;IAEjE,MAAM,EAAE+C,gBAAgB,EAAEC,cAAc,EAAExB,IAAI,EAAEyB,QAAQ,EAAEC,SAAS,EAAEP,KAAK,EAAE,GAAG1C,SAAiB;QAC9FuB,MAAMqB,mBAAmBpB,iBAAiBhB;QAC1CwB,UAAUS;IACZ;IAEA,MAAMS,WAAWvB,qBAAqBkB,uBAAuBE,kBAAkBD;IAE/E,qBACE,KAACzC;QACCI,YAAYA;QACZC,aAAaA;QACbC,mBAAmBA;QACnBC,aAAaA;QACbC,aAAaA;QACbC,WAAWA;QACXC,kBAAkBA;QAClBC,YAAYA;QACZC,OAAOA;QACPC,YAAYA;QACZiC,UAAU,CAACC;YACTJ,SAASI,EAAEC,MAAM,CAACX,KAAK;QACzB;QACAnB,MAAMA;QACNE,aAAa7B,eAAe6B,aAAaS;QACzCR,UAAUwB;QACVtB,UAAUA;QACVC,MAAMA;QACNC,KAAKM;QACLa,WAAWA;QACXlB,OAAOA;QACPW,OAAOA;QACPT,OAAOA;;AAGb;AAEA,OAAO,MAAMqB,gBAAgBrD,cAAcK,gBAAe"}
1
+ {"version":3,"sources":["../../../src/fields/Textarea/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientValidate } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback } from 'react'\n\nimport type { TextAreaInputProps, TextareaFieldProps } from './types.js'\n\nimport { useFieldProps } from '../../forms/FieldPropsProvider/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { isFieldRTL } from '../shared/index.js'\nimport { TextareaInput } from './Input.js'\nimport './index.scss'\n\nexport { TextAreaInputProps, TextareaFieldProps, TextareaInput }\n\nconst _TextareaField: React.FC<TextareaFieldProps> = (props) => {\n const {\n name,\n AfterInput,\n BeforeInput,\n CustomDescription,\n CustomError,\n CustomLabel,\n className,\n descriptionProps,\n errorProps,\n label,\n labelProps,\n locale,\n localized,\n maxLength,\n minLength,\n path: pathFromProps,\n placeholder,\n readOnly: readOnlyFromProps,\n required,\n rows,\n rtl,\n style,\n validate,\n width,\n } = props\n\n const { i18n } = useTranslation()\n\n const { localization } = useConfig()\n\n const isRTL = isFieldRTL({\n fieldLocalized: localized,\n fieldRTL: rtl,\n locale,\n localizationConfig: localization || undefined,\n })\n\n const memoizedValidate: ClientValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function')\n return validate(value, { ...options, maxLength, minLength, required })\n },\n [validate, required, maxLength, minLength],\n )\n\n const { path: pathFromContext, readOnly: readOnlyFromContext } = useFieldProps()\n\n const { formInitializing, formProcessing, path, setValue, showError, value } = useField<string>({\n path: pathFromContext ?? pathFromProps ?? name,\n validate: memoizedValidate,\n })\n\n const disabled = readOnlyFromProps || readOnlyFromContext || formProcessing || formInitializing\n\n return (\n <TextareaInput\n AfterInput={AfterInput}\n BeforeInput={BeforeInput}\n CustomDescription={CustomDescription}\n CustomError={CustomError}\n CustomLabel={CustomLabel}\n className={className}\n descriptionProps={descriptionProps}\n errorProps={errorProps}\n label={label}\n labelProps={labelProps}\n onChange={(e) => {\n setValue(e.target.value)\n }}\n path={path}\n placeholder={getTranslation(placeholder, i18n)}\n readOnly={disabled}\n required={required}\n rows={rows}\n rtl={isRTL}\n showError={showError}\n style={style}\n value={value}\n width={width}\n />\n )\n}\n\nexport const TextareaField = withCondition(_TextareaField)\n"],"names":["getTranslation","React","useCallback","useFieldProps","useField","withCondition","useConfig","useTranslation","isFieldRTL","TextareaInput","_TextareaField","props","name","AfterInput","BeforeInput","CustomDescription","CustomError","CustomLabel","className","descriptionProps","errorProps","label","labelProps","locale","localized","maxLength","minLength","path","pathFromProps","placeholder","readOnly","readOnlyFromProps","required","rows","rtl","style","validate","width","i18n","localization","isRTL","fieldLocalized","fieldRTL","localizationConfig","undefined","memoizedValidate","value","options","pathFromContext","readOnlyFromContext","formInitializing","formProcessing","setValue","showError","disabled","onChange","e","target","TextareaField"],"mappings":"AAAA;;AAGA,SAASA,cAAc,QAAQ,2BAA0B;AACzD,OAAOC,SAASC,WAAW,QAAQ,QAAO;AAI1C,SAASC,aAAa,QAAQ,0CAAyC;AACvE,SAASC,QAAQ,QAAQ,gCAA+B;AACxD,SAASC,aAAa,QAAQ,qCAAoC;AAClE,SAASC,SAAS,QAAQ,kCAAiC;AAC3D,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,UAAU,QAAQ,qBAAoB;AAC/C,SAASC,aAAa,QAAQ,aAAY;AAC1C,OAAO,eAAc;AAErB,SAAiDA,aAAa,GAAE;AAEhE,MAAMC,iBAA+C,CAACC;IACpD,MAAM,EACJC,IAAI,EACJC,UAAU,EACVC,WAAW,EACXC,iBAAiB,EACjBC,WAAW,EACXC,WAAW,EACXC,SAAS,EACTC,gBAAgB,EAChBC,UAAU,EACVC,KAAK,EACLC,UAAU,EACVC,MAAM,EACNC,SAAS,EACTC,SAAS,EACTC,SAAS,EACTC,MAAMC,aAAa,EACnBC,WAAW,EACXC,UAAUC,iBAAiB,EAC3BC,QAAQ,EACRC,IAAI,EACJC,GAAG,EACHC,KAAK,EACLC,QAAQ,EACRC,KAAK,EACN,GAAG1B;IAEJ,MAAM,EAAE2B,IAAI,EAAE,GAAG/B;IAEjB,MAAM,EAAEgC,YAAY,EAAE,GAAGjC;IAEzB,MAAMkC,QAAQhC,WAAW;QACvBiC,gBAAgBjB;QAChBkB,UAAUR;QACVX;QACAoB,oBAAoBJ,gBAAgBK;IACtC;IAEA,MAAMC,mBAAmC3C,YACvC,CAAC4C,OAAOC;QACN,IAAI,OAAOX,aAAa,YACtB,OAAOA,SAASU,OAAO;YAAE,GAAGC,OAAO;YAAEtB;YAAWC;YAAWM;QAAS;IACxE,GACA;QAACI;QAAUJ;QAAUP;QAAWC;KAAU;IAG5C,MAAM,EAAEC,MAAMqB,eAAe,EAAElB,UAAUmB,mBAAmB,EAAE,GAAG9C;IAEjE,MAAM,EAAE+C,gBAAgB,EAAEC,cAAc,EAAExB,IAAI,EAAEyB,QAAQ,EAAEC,SAAS,EAAEP,KAAK,EAAE,GAAG1C,SAAiB;QAC9FuB,MAAMqB,mBAAmBpB,iBAAiBhB;QAC1CwB,UAAUS;IACZ;IAEA,MAAMS,WAAWvB,qBAAqBkB,uBAAuBE,kBAAkBD;IAE/E,qBACE,KAACzC;QACCI,YAAYA;QACZC,aAAaA;QACbC,mBAAmBA;QACnBC,aAAaA;QACbC,aAAaA;QACbC,WAAWA;QACXC,kBAAkBA;QAClBC,YAAYA;QACZC,OAAOA;QACPC,YAAYA;QACZiC,UAAU,CAACC;YACTJ,SAASI,EAAEC,MAAM,CAACX,KAAK;QACzB;QACAnB,MAAMA;QACNE,aAAa7B,eAAe6B,aAAaS;QACzCR,UAAUwB;QACVtB,UAAUA;QACVC,MAAMA;QACNC,KAAKM;QACLa,WAAWA;QACXlB,OAAOA;QACPW,OAAOA;QACPT,OAAOA;;AAGb;AAEA,OAAO,MAAMqB,gBAAgBrD,cAAcK,gBAAe"}
@@ -1,7 +1,7 @@
1
1
  import type { TextareaField as TextareaFieldType } from 'payload';
2
2
  import { type ChangeEvent } from 'react';
3
3
  import type { FormFieldBase } from '../shared/index.js';
4
- export type TextareaFieldProps = FormFieldBase & {
4
+ export type TextareaFieldProps = {
5
5
  maxLength?: number;
6
6
  minLength?: number;
7
7
  name?: string;
@@ -9,11 +9,11 @@ export type TextareaFieldProps = FormFieldBase & {
9
9
  placeholder?: TextareaFieldType['admin']['placeholder'];
10
10
  rows?: number;
11
11
  width?: string;
12
- };
13
- export type TextAreaInputProps = TextareaFieldProps & {
12
+ } & FormFieldBase;
13
+ export type TextAreaInputProps = {
14
14
  onChange?: (e: ChangeEvent<HTMLTextAreaElement>) => void;
15
15
  rows?: number;
16
16
  showError?: boolean;
17
17
  value?: string;
18
- };
18
+ } & TextareaFieldProps;
19
19
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/fields/Textarea/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAEjE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,OAAO,CAAA;AAExC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvD,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAA;IACvD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,kBAAkB,GAAG;IACpD,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAA;IACxD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/fields/Textarea/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAEjE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,OAAO,CAAA;AAExC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAA;IACvD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,GAAG,aAAa,CAAA;AAEjB,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAA;IACxD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,GAAG,kBAAkB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/fields/Textarea/types.ts"],"sourcesContent":["import type { TextareaField as TextareaFieldType } from 'payload'\n\nimport { type ChangeEvent } from 'react'\n\nimport type { FormFieldBase } from '../shared/index.js'\n\nexport type TextareaFieldProps = FormFieldBase & {\n maxLength?: number\n minLength?: number\n name?: string\n path?: string\n placeholder?: TextareaFieldType['admin']['placeholder']\n rows?: number\n width?: string\n}\n\nexport type TextAreaInputProps = TextareaFieldProps & {\n onChange?: (e: ChangeEvent<HTMLTextAreaElement>) => void\n rows?: number\n showError?: boolean\n value?: string\n}\n"],"names":[],"mappings":"AAgBA,WAKC"}
1
+ {"version":3,"sources":["../../../src/fields/Textarea/types.ts"],"sourcesContent":["import type { TextareaField as TextareaFieldType } from 'payload'\n\nimport { type ChangeEvent } from 'react'\n\nimport type { FormFieldBase } from '../shared/index.js'\n\nexport type TextareaFieldProps = {\n maxLength?: number\n minLength?: number\n name?: string\n path?: string\n placeholder?: TextareaFieldType['admin']['placeholder']\n rows?: number\n width?: string\n} & FormFieldBase\n\nexport type TextAreaInputProps = {\n onChange?: (e: ChangeEvent<HTMLTextAreaElement>) => void\n rows?: number\n showError?: boolean\n value?: string\n} & TextareaFieldProps\n"],"names":[],"mappings":"AAgBA,WAKsB"}
@@ -2,7 +2,7 @@ import type { ClientCollectionConfig, FilterOptionsResult, UploadField } from 'p
2
2
  import React from 'react';
3
3
  import type { UploadFieldProps } from './types.js';
4
4
  import './index.scss';
5
- export type UploadInputProps = Omit<UploadFieldProps, 'filterOptions'> & {
5
+ export type UploadInputProps = {
6
6
  api?: string;
7
7
  collection?: ClientCollectionConfig;
8
8
  customUploadActions?: React.ReactNode[];
@@ -12,6 +12,6 @@ export type UploadInputProps = Omit<UploadFieldProps, 'filterOptions'> & {
12
12
  serverURL?: string;
13
13
  showError?: boolean;
14
14
  value?: string;
15
- };
15
+ } & Omit<UploadFieldProps, 'filterOptions'>;
16
16
  export declare const UploadInput: React.FC<UploadInputProps>;
17
17
  //# sourceMappingURL=Input.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../src/fields/Upload/Input.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAGvF,OAAO,KAA2C,MAAM,OAAO,CAAA;AAI/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAWlD,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE,eAAe,CAAC,GAAG;IACvE,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,sBAAsB,CAAA;IACnC,mBAAmB,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IACvC,aAAa,CAAC,EAAE,mBAAmB,CAAA;IACnC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAA,KAAK,IAAI,CAAA;IACtB,UAAU,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,CAAA;IACtC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAgKlD,CAAA"}
1
+ {"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../src/fields/Upload/Input.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAGvF,OAAO,KAA2C,MAAM,OAAO,CAAA;AAI/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAWlD,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,sBAAsB,CAAA;IACnC,mBAAmB,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IACvC,aAAa,CAAC,EAAE,mBAAmB,CAAA;IACnC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAA,KAAK,IAAI,CAAA;IACtB,UAAU,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,CAAA;IACtC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,GAAG,IAAI,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAA;AAE3C,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAgKlD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/fields/Upload/Input.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientCollectionConfig, FilterOptionsResult, UploadField } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport type { DocumentDrawerProps } from '../../elements/DocumentDrawer/types.js'\nimport type { ListDrawerProps } from '../../elements/ListDrawer/types.js'\nimport type { UploadFieldProps } from './types.js'\n\nimport { Button } from '../../elements/Button/index.js'\nimport { useDocumentDrawer } from '../../elements/DocumentDrawer/index.js'\nimport { FileDetails } from '../../elements/FileDetails/index.js'\nimport { useListDrawer } from '../../elements/ListDrawer/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { FieldDescription } from '../FieldDescription/index.js'\nimport { FieldError } from '../FieldError/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\n\nconst baseClass = 'upload'\n\nexport type UploadInputProps = Omit<UploadFieldProps, 'filterOptions'> & {\n api?: string\n collection?: ClientCollectionConfig\n customUploadActions?: React.ReactNode[]\n filterOptions?: FilterOptionsResult\n onChange?: (e) => void\n relationTo?: UploadField['relationTo']\n serverURL?: string\n showError?: boolean\n value?: string\n}\n\nexport const UploadInput: React.FC<UploadInputProps> = (props) => {\n const {\n CustomDescription,\n CustomError,\n CustomLabel,\n api = '/api',\n className,\n collection,\n customUploadActions,\n descriptionProps,\n errorProps,\n filterOptions,\n label,\n labelProps,\n onChange,\n readOnly,\n relationTo,\n required,\n serverURL,\n showError,\n style,\n value,\n width,\n } = props\n\n const { i18n, t } = useTranslation()\n\n const [fileDoc, setFileDoc] = useState(undefined)\n const [missingFile, setMissingFile] = useState(false)\n const [collectionSlugs] = useState([collection?.slug])\n\n const [DocumentDrawer, DocumentDrawerToggler, { closeDrawer }] = useDocumentDrawer({\n collectionSlug: collectionSlugs[0],\n })\n\n const [ListDrawer, ListDrawerToggler, { closeDrawer: closeListDrawer }] = useListDrawer({\n collectionSlugs,\n filterOptions,\n })\n\n useEffect(() => {\n if (value !== null && typeof value !== 'undefined' && value !== '') {\n const fetchFile = async () => {\n const response = await fetch(`${serverURL}${api}/${relationTo}/${value}`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n if (response.ok) {\n const json = await response.json()\n setFileDoc(json)\n } else {\n setMissingFile(true)\n setFileDoc(undefined)\n }\n }\n\n void fetchFile()\n } else {\n setFileDoc(undefined)\n }\n }, [value, relationTo, api, serverURL, i18n])\n\n const onSave = useCallback<DocumentDrawerProps['onSave']>(\n (args) => {\n setMissingFile(false)\n onChange(args.doc)\n closeDrawer()\n },\n [onChange, closeDrawer],\n )\n\n const onSelect = useCallback<ListDrawerProps['onSelect']>(\n (args) => {\n setMissingFile(false)\n onChange({\n id: args.docID,\n })\n closeListDrawer()\n },\n [onChange, closeListDrawer],\n )\n\n if (collection.upload) {\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 <FieldLabel\n CustomLabel={CustomLabel}\n label={label}\n required={required}\n {...(labelProps || {})}\n />\n <div className={`${fieldBaseClass}__wrap`}>\n <FieldError CustomError={CustomError} {...(errorProps || {})} />\n\n {collection?.upload && (\n <React.Fragment>\n {fileDoc && !missingFile && (\n <FileDetails\n collectionSlug={relationTo}\n customUploadActions={customUploadActions}\n doc={fileDoc}\n handleRemove={\n readOnly\n ? undefined\n : () => {\n onChange(null)\n }\n }\n uploadConfig={collection.upload}\n />\n )}\n {(!fileDoc || missingFile) && (\n <div className={`${baseClass}__wrap`}>\n <div className={`${baseClass}__buttons`}>\n <DocumentDrawerToggler className={`${baseClass}__toggler`} disabled={readOnly}>\n <Button buttonStyle=\"secondary\" disabled={readOnly} el=\"div\">\n {t('fields:uploadNewLabel', {\n label: getTranslation(collection.labels.singular, i18n),\n })}\n </Button>\n </DocumentDrawerToggler>\n <ListDrawerToggler className={`${baseClass}__toggler`} disabled={readOnly}>\n <Button buttonStyle=\"secondary\" disabled={readOnly} el=\"div\">\n {t('fields:chooseFromExisting')}\n </Button>\n </ListDrawerToggler>\n </div>\n </div>\n )}\n {CustomDescription !== undefined ? (\n CustomDescription\n ) : (\n <FieldDescription {...(descriptionProps || {})} />\n )}\n </React.Fragment>\n )}\n {!readOnly && <DocumentDrawer onSave={onSave} />}\n {!readOnly && <ListDrawer onSelect={onSelect} />}\n </div>\n </div>\n )\n }\n\n return null\n}\n"],"names":["getTranslation","React","useCallback","useEffect","useState","Button","useDocumentDrawer","FileDetails","useListDrawer","useTranslation","FieldDescription","FieldError","FieldLabel","fieldBaseClass","baseClass","UploadInput","props","CustomDescription","CustomError","CustomLabel","api","className","collection","customUploadActions","descriptionProps","errorProps","filterOptions","label","labelProps","onChange","readOnly","relationTo","required","serverURL","showError","style","value","width","i18n","t","fileDoc","setFileDoc","undefined","missingFile","setMissingFile","collectionSlugs","slug","DocumentDrawer","DocumentDrawerToggler","closeDrawer","collectionSlug","ListDrawer","ListDrawerToggler","closeListDrawer","fetchFile","response","fetch","credentials","headers","language","ok","json","onSave","args","doc","onSelect","id","docID","upload","div","filter","Boolean","join","Fragment","handleRemove","uploadConfig","disabled","buttonStyle","el","labels","singular"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/fields/Upload/Input.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientCollectionConfig, FilterOptionsResult, UploadField } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport type { DocumentDrawerProps } from '../../elements/DocumentDrawer/types.js'\nimport type { ListDrawerProps } from '../../elements/ListDrawer/types.js'\nimport type { UploadFieldProps } from './types.js'\n\nimport { Button } from '../../elements/Button/index.js'\nimport { useDocumentDrawer } from '../../elements/DocumentDrawer/index.js'\nimport { FileDetails } from '../../elements/FileDetails/index.js'\nimport { useListDrawer } from '../../elements/ListDrawer/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { FieldDescription } from '../FieldDescription/index.js'\nimport { FieldError } from '../FieldError/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\n\nconst baseClass = 'upload'\n\nexport type UploadInputProps = {\n api?: string\n collection?: ClientCollectionConfig\n customUploadActions?: React.ReactNode[]\n filterOptions?: FilterOptionsResult\n onChange?: (e) => void\n relationTo?: UploadField['relationTo']\n serverURL?: string\n showError?: boolean\n value?: string\n} & Omit<UploadFieldProps, 'filterOptions'>\n\nexport const UploadInput: React.FC<UploadInputProps> = (props) => {\n const {\n CustomDescription,\n CustomError,\n CustomLabel,\n api = '/api',\n className,\n collection,\n customUploadActions,\n descriptionProps,\n errorProps,\n filterOptions,\n label,\n labelProps,\n onChange,\n readOnly,\n relationTo,\n required,\n serverURL,\n showError,\n style,\n value,\n width,\n } = props\n\n const { i18n, t } = useTranslation()\n\n const [fileDoc, setFileDoc] = useState(undefined)\n const [missingFile, setMissingFile] = useState(false)\n const [collectionSlugs] = useState([collection?.slug])\n\n const [DocumentDrawer, DocumentDrawerToggler, { closeDrawer }] = useDocumentDrawer({\n collectionSlug: collectionSlugs[0],\n })\n\n const [ListDrawer, ListDrawerToggler, { closeDrawer: closeListDrawer }] = useListDrawer({\n collectionSlugs,\n filterOptions,\n })\n\n useEffect(() => {\n if (value !== null && typeof value !== 'undefined' && value !== '') {\n const fetchFile = async () => {\n const response = await fetch(`${serverURL}${api}/${relationTo}/${value}`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n if (response.ok) {\n const json = await response.json()\n setFileDoc(json)\n } else {\n setMissingFile(true)\n setFileDoc(undefined)\n }\n }\n\n void fetchFile()\n } else {\n setFileDoc(undefined)\n }\n }, [value, relationTo, api, serverURL, i18n])\n\n const onSave = useCallback<DocumentDrawerProps['onSave']>(\n (args) => {\n setMissingFile(false)\n onChange(args.doc)\n closeDrawer()\n },\n [onChange, closeDrawer],\n )\n\n const onSelect = useCallback<ListDrawerProps['onSelect']>(\n (args) => {\n setMissingFile(false)\n onChange({\n id: args.docID,\n })\n closeListDrawer()\n },\n [onChange, closeListDrawer],\n )\n\n if (collection.upload) {\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 <FieldLabel\n CustomLabel={CustomLabel}\n label={label}\n required={required}\n {...(labelProps || {})}\n />\n <div className={`${fieldBaseClass}__wrap`}>\n <FieldError CustomError={CustomError} {...(errorProps || {})} />\n\n {collection?.upload && (\n <React.Fragment>\n {fileDoc && !missingFile && (\n <FileDetails\n collectionSlug={relationTo}\n customUploadActions={customUploadActions}\n doc={fileDoc}\n handleRemove={\n readOnly\n ? undefined\n : () => {\n onChange(null)\n }\n }\n uploadConfig={collection.upload}\n />\n )}\n {(!fileDoc || missingFile) && (\n <div className={`${baseClass}__wrap`}>\n <div className={`${baseClass}__buttons`}>\n <DocumentDrawerToggler className={`${baseClass}__toggler`} disabled={readOnly}>\n <Button buttonStyle=\"secondary\" disabled={readOnly} el=\"div\">\n {t('fields:uploadNewLabel', {\n label: getTranslation(collection.labels.singular, i18n),\n })}\n </Button>\n </DocumentDrawerToggler>\n <ListDrawerToggler className={`${baseClass}__toggler`} disabled={readOnly}>\n <Button buttonStyle=\"secondary\" disabled={readOnly} el=\"div\">\n {t('fields:chooseFromExisting')}\n </Button>\n </ListDrawerToggler>\n </div>\n </div>\n )}\n {CustomDescription !== undefined ? (\n CustomDescription\n ) : (\n <FieldDescription {...(descriptionProps || {})} />\n )}\n </React.Fragment>\n )}\n {!readOnly && <DocumentDrawer onSave={onSave} />}\n {!readOnly && <ListDrawer onSelect={onSelect} />}\n </div>\n </div>\n )\n }\n\n return null\n}\n"],"names":["getTranslation","React","useCallback","useEffect","useState","Button","useDocumentDrawer","FileDetails","useListDrawer","useTranslation","FieldDescription","FieldError","FieldLabel","fieldBaseClass","baseClass","UploadInput","props","CustomDescription","CustomError","CustomLabel","api","className","collection","customUploadActions","descriptionProps","errorProps","filterOptions","label","labelProps","onChange","readOnly","relationTo","required","serverURL","showError","style","value","width","i18n","t","fileDoc","setFileDoc","undefined","missingFile","setMissingFile","collectionSlugs","slug","DocumentDrawer","DocumentDrawerToggler","closeDrawer","collectionSlug","ListDrawer","ListDrawerToggler","closeListDrawer","fetchFile","response","fetch","credentials","headers","language","ok","json","onSave","args","doc","onSelect","id","docID","upload","div","filter","Boolean","join","Fragment","handleRemove","uploadConfig","disabled","buttonStyle","el","labels","singular"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import type { UploadField } from 'payload';
2
2
  import type { FormFieldBase } from '../shared/index.js';
3
- export type UploadFieldProps = FormFieldBase & {
3
+ export type UploadFieldProps = {
4
4
  filterOptions?: UploadField['filterOptions'];
5
5
  name?: string;
6
6
  path?: string;
7
7
  relationTo?: UploadField['relationTo'];
8
8
  width?: string;
9
- };
9
+ } & FormFieldBase;
10
10
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/fields/Upload/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvD,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,aAAa,CAAC,EAAE,WAAW,CAAC,eAAe,CAAC,CAAA;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,CAAA;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/fields/Upload/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,aAAa,CAAC,EAAE,WAAW,CAAC,eAAe,CAAC,CAAA;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,CAAA;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,GAAG,aAAa,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/fields/Upload/types.ts"],"sourcesContent":["import type { UploadField } from 'payload'\n\nimport type { FormFieldBase } from '../shared/index.js'\n\nexport type UploadFieldProps = FormFieldBase & {\n filterOptions?: UploadField['filterOptions']\n name?: string\n path?: string\n relationTo?: UploadField['relationTo']\n width?: string\n}\n"],"names":[],"mappings":"AAIA,WAMC"}
1
+ {"version":3,"sources":["../../../src/fields/Upload/types.ts"],"sourcesContent":["import type { UploadField } from 'payload'\n\nimport type { FormFieldBase } from '../shared/index.js'\n\nexport type UploadFieldProps = {\n filterOptions?: UploadField['filterOptions']\n name?: string\n path?: string\n relationTo?: UploadField['relationTo']\n width?: string\n} & FormFieldBase\n"],"names":[],"mappings":"AAIA,WAMiB"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/index.tsx"],"names":[],"mappings":"AAcA,OAAO,KAA+D,MAAM,OAAO,CAAA;AAGnF,OAAO,KAAK,EAEV,SAAS,EAGV,MAAM,YAAY,CAAA;AA6BnB,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAwmBpC,CAAA;AAED,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,OAAO,EACP,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,GACb,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,SAAS,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/index.tsx"],"names":[],"mappings":"AAaA,OAAO,KAA+D,MAAM,OAAO,CAAA;AAGnF,OAAO,KAAK,EAEV,SAAS,EAGV,MAAM,YAAY,CAAA;AA6BnB,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAwmBpC,CAAA;AAED,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,OAAO,EACP,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,GACb,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,SAAS,EAAE,CAAA"}
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
- /* eslint-disable jsx-a11y/no-noninteractive-element-interactions */ import { dequal } from 'dequal/lite'; // lite: no need for Map and Set support
3
+ import { dequal } from 'dequal/lite'; // lite: no need for Map and Set support
4
4
  import { useRouter } from 'next/navigation.js';
5
5
  import { serialize } from 'object-to-formdata';
6
6
  import { getDataByPath as getDataByPathFunc, getSiblingData as getSiblingDataFunc, reduceFieldsToValues, wait } from 'payload/shared';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/forms/Form/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState } from 'payload'\n\n/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */\nimport { dequal } from 'dequal/lite' // lite: no need for Map and Set support\nimport { useRouter } from 'next/navigation.js'\nimport { serialize } from 'object-to-formdata'\nimport {\n getDataByPath as getDataByPathFunc,\n getSiblingData as getSiblingDataFunc,\n reduceFieldsToValues,\n wait,\n} from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useReducer, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type {\n Context as FormContextType,\n FormProps,\n GetDataByPath,\n SubmitOptions,\n} from './types.js'\n\nimport { useDebouncedEffect } from '../../hooks/useDebouncedEffect.js'\nimport { useThrottledEffect } from '../../hooks/useThrottledEffect.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useFormQueryParams } from '../../providers/FormQueryParams/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { getFormState } from '../../utilities/getFormState.js'\nimport {\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n InitializingContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n} from './context.js'\nimport { errorMessages } from './errorMessages.js'\nimport { fieldReducer } from './fieldReducer.js'\nimport { initContextState } from './initContextState.js'\nimport { mergeServerFormState } from './mergeServerFormState.js'\n\nconst baseClass = 'form'\n\nexport const Form: React.FC<FormProps> = (props) => {\n const { id, collectionSlug, globalSlug } = useDocumentInfo()\n\n const {\n action,\n beforeSubmit,\n children,\n className,\n disableSuccessStatus,\n disableValidationOnSubmit,\n disabled: disabledFromProps,\n // fields: fieldsFromProps = collection?.fields || global?.fields,\n handleResponse,\n initialState, // fully formed initial field state\n isInitializing: initializingFromProps,\n onChange,\n onSubmit,\n onSuccess,\n redirect,\n submitted: submittedFromProps,\n uuid,\n waitForAutocomplete,\n } = props\n\n const method = 'method' in props ? props?.method : undefined\n\n const router = useRouter()\n\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n const { refreshCookie, user } = useAuth()\n const operation = useOperation()\n const { formQueryParams } = useFormQueryParams()\n\n const config = useConfig()\n const {\n routes: { api: apiRoute },\n serverURL,\n } = config\n\n const [disabled, setDisabled] = useState(disabledFromProps || false)\n const [isMounted, setIsMounted] = useState(false)\n const [modified, setModified] = useState(false)\n const [initializing, setInitializing] = useState(initializingFromProps)\n const [processing, setProcessing] = useState(false)\n const [submitted, setSubmitted] = useState(false)\n const formRef = useRef<HTMLFormElement>(null)\n const contextRef = useRef({} as FormContextType)\n\n const fieldsReducer = useReducer(fieldReducer, {}, () => initialState)\n\n /**\n * `fields` is the current, up-to-date state/data of all fields in the form. It can be modified by using dispatchFields,\n * which calls the fieldReducer, which then updates the state.\n */\n const [fields, dispatchFields] = fieldsReducer\n\n contextRef.current.fields = fields\n\n const validateForm = useCallback(async () => {\n const validatedFieldState = {}\n let isValid = true\n\n const dataFromContext = contextRef.current.getData()\n const data = dataFromContext\n\n const validationPromises = Object.entries(contextRef.current.fields).map(\n async ([path, field]) => {\n const validatedField = field\n\n if (field.passesCondition !== false) {\n let validationResult: boolean | string = validatedField.valid\n\n if (typeof field.validate === 'function') {\n let valueToValidate = field.value\n\n if (field?.rows && Array.isArray(field.rows)) {\n valueToValidate = contextRef.current.getDataByPath(path)\n }\n\n validationResult = await field.validate(valueToValidate, {\n id,\n config,\n data,\n operation,\n siblingData: contextRef.current.getSiblingData(path),\n t,\n user,\n })\n\n if (typeof validationResult === 'string') {\n validatedField.errorMessage = validationResult\n validatedField.valid = false\n } else {\n validatedField.valid = true\n validatedField.errorMessage = undefined\n }\n }\n\n if (validatedField.valid === false) {\n isValid = false\n }\n }\n\n validatedFieldState[path] = validatedField\n },\n )\n\n await Promise.all(validationPromises)\n\n if (!dequal(contextRef.current.fields, validatedFieldState)) {\n dispatchFields({ type: 'REPLACE_STATE', state: validatedFieldState })\n }\n\n return isValid\n }, [id, user, operation, t, dispatchFields, config])\n\n const submit = useCallback(\n async (options: SubmitOptions = {}, e): Promise<void> => {\n const {\n action: actionArg,\n method: methodToUse = method,\n overrides = {},\n skipValidation,\n } = options\n\n if (disabled) {\n if (e) {\n e.preventDefault()\n }\n return\n }\n\n // create new toast promise which will resolve manually later\n let successToast, errorToast\n const promise = new Promise((resolve, reject) => {\n successToast = resolve\n errorToast = reject\n })\n\n const hasFormSubmitAction =\n actionArg || typeof action === 'string' || typeof action === 'function'\n\n if (redirect || disableSuccessStatus || !hasFormSubmitAction) {\n // Do not show submitting toast, as the promise toast may never disappear under these conditions.\n // Instead, make successToast() or errorToast() throw toast.success / toast.error\n successToast = (data) => toast.success(data)\n errorToast = (data) => toast.error(data)\n } else {\n toast.promise(promise, {\n error: (data) => {\n return data as string\n },\n loading: t('general:submitting'),\n success: (data) => {\n return data as string\n },\n })\n }\n\n if (e) {\n e.stopPropagation()\n e.preventDefault()\n }\n\n setProcessing(true)\n setDisabled(true)\n\n if (waitForAutocomplete) await wait(100)\n\n // Execute server side validations\n if (Array.isArray(beforeSubmit)) {\n let revalidatedFormState: FormState\n\n await beforeSubmit.reduce(async (priorOnChange, beforeSubmitFn) => {\n await priorOnChange\n\n const result = await beforeSubmitFn({\n formState: fields,\n })\n\n revalidatedFormState = result\n }, Promise.resolve())\n\n const isValid = Object.entries(revalidatedFormState).every(([, field]) => field.valid)\n\n if (!isValid) {\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return dispatchFields({ type: 'REPLACE_STATE', state: revalidatedFormState })\n }\n }\n\n const isValid =\n skipValidation || disableValidationOnSubmit ? true : await contextRef.current.validateForm()\n\n // If not valid, prevent submission\n if (!isValid) {\n errorToast(t('error:correctInvalidFields'))\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return\n }\n\n // If submit handler comes through via props, run that\n if (onSubmit) {\n const data = {\n ...reduceFieldsToValues(fields, true),\n ...overrides,\n }\n\n onSubmit(fields, data)\n }\n\n if (!hasFormSubmitAction) {\n // No action provided, so we should return. An example where this happens are lexical link drawers. Upon submitting the drawer, we\n // want to close it without submitting the form. Stuff like validation would be handled by lexical before this, through beforeSubmit\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return\n }\n\n const formData = contextRef.current.createFormData(overrides)\n\n try {\n let res\n const actionEndpoint =\n actionArg ||\n (typeof action === 'string'\n ? `${action}${qs.stringify(formQueryParams, { addQueryPrefix: true })}`\n : null)\n\n if (actionEndpoint) {\n res = await requests[methodToUse.toLowerCase()](actionEndpoint, {\n body: formData,\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n } else if (typeof action === 'function') {\n res = await action(formData)\n }\n\n setModified(false)\n setDisabled(false)\n\n if (typeof handleResponse === 'function') {\n handleResponse(res, successToast, errorToast)\n return\n }\n\n const contentType = res.headers.get('content-type')\n const isJSON = contentType && contentType.indexOf('application/json') !== -1\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let json: Record<string, any> = {}\n\n if (isJSON) json = await res.json()\n if (res.status < 400) {\n if (typeof onSuccess === 'function') await onSuccess(json)\n setSubmitted(false)\n setProcessing(false)\n\n if (redirect) {\n router.push(redirect)\n } else if (!disableSuccessStatus) {\n successToast(json.message || t('general:submissionSuccessful'))\n }\n } else {\n setProcessing(false)\n setSubmitted(true)\n\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n if (json.message) {\n errorToast(json.message)\n\n return\n }\n\n if (Array.isArray(json.errors)) {\n const [fieldErrors, nonFieldErrors] = json.errors.reduce(\n ([fieldErrs, nonFieldErrs], err) => {\n const newFieldErrs = []\n const newNonFieldErrs = []\n\n if (err?.message) {\n newNonFieldErrs.push(err)\n }\n\n if (Array.isArray(err?.data?.errors)) {\n err.data?.errors.forEach((dataError) => {\n if (dataError?.field) {\n newFieldErrs.push(dataError)\n } else {\n newNonFieldErrs.push(dataError)\n }\n })\n }\n\n return [\n [...fieldErrs, ...newFieldErrs],\n [...nonFieldErrs, ...newNonFieldErrs],\n ]\n },\n [[], []],\n )\n\n dispatchFields({\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n })\n\n nonFieldErrors.forEach((err) => {\n errorToast(err.message || t('error:unknown'))\n })\n\n return\n }\n\n const message = errorMessages?.[res.status] || res?.statusText || t('error:unknown')\n\n errorToast(message)\n }\n } catch (err) {\n console.error('Error submitting form', err)\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n\n errorToast(err.message)\n }\n },\n [\n beforeSubmit,\n action,\n disableSuccessStatus,\n disableValidationOnSubmit,\n disabled,\n dispatchFields,\n fields,\n handleResponse,\n method,\n onSubmit,\n onSuccess,\n redirect,\n router,\n t,\n i18n,\n waitForAutocomplete,\n formQueryParams,\n ],\n )\n\n const getFields = useCallback(() => contextRef.current.fields, [])\n\n const getField = useCallback((path: string) => contextRef.current.fields[path], [])\n\n const getData = useCallback(() => reduceFieldsToValues(contextRef.current.fields, true), [])\n\n const getSiblingData = useCallback(\n (path: string) => getSiblingDataFunc(contextRef.current.fields, path),\n [],\n )\n const getDataByPath = useCallback<GetDataByPath>(\n (path: string) => getDataByPathFunc(contextRef.current.fields, path),\n [],\n )\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const createFormData = useCallback((overrides: any = {}) => {\n const data = reduceFieldsToValues(contextRef.current.fields, true)\n\n const file = data?.file\n\n if (file) {\n delete data.file\n }\n\n const dataWithOverrides = {\n ...data,\n ...overrides,\n }\n\n const dataToSerialize = {\n _payload: JSON.stringify(dataWithOverrides),\n file,\n }\n\n // nullAsUndefineds is important to allow uploads and relationship fields to clear themselves\n const formData = serialize(dataToSerialize, { indices: true, nullsAsUndefineds: false })\n\n return formData\n }, [])\n\n const reset = useCallback(\n async (data: unknown) => {\n const newState = await getFormState({\n apiRoute,\n body: {\n id,\n collectionSlug,\n data,\n globalSlug,\n operation,\n schemaPath: collectionSlug || globalSlug,\n },\n serverURL,\n })\n\n contextRef.current = { ...initContextState } as FormContextType\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state: newState })\n },\n [apiRoute, collectionSlug, dispatchFields, globalSlug, id, operation, serverURL],\n )\n\n const replaceState = useCallback(\n (state: FormState) => {\n contextRef.current = { ...initContextState } as FormContextType\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state })\n },\n [dispatchFields],\n )\n\n const getFieldStateBySchemaPath = useCallback(\n async ({ data, schemaPath }) => {\n const fieldSchema = await getFormState({\n apiRoute,\n body: {\n collectionSlug,\n data,\n globalSlug,\n schemaPath,\n },\n serverURL,\n })\n return fieldSchema\n },\n [apiRoute, collectionSlug, globalSlug, serverURL],\n )\n\n const addFieldRow: FormContextType['addFieldRow'] = useCallback(\n async ({ data, path, rowIndex, schemaPath }) => {\n const subFieldState = await getFieldStateBySchemaPath({ data, schemaPath })\n\n dispatchFields({\n type: 'ADD_ROW',\n blockType: data?.blockType,\n path,\n rowIndex,\n subFieldState,\n })\n },\n [getFieldStateBySchemaPath, dispatchFields],\n )\n\n const removeFieldRow: FormContextType['removeFieldRow'] = useCallback(\n ({ path, rowIndex }) => {\n dispatchFields({ type: 'REMOVE_ROW', path, rowIndex })\n },\n [dispatchFields],\n )\n\n const replaceFieldRow: FormContextType['replaceFieldRow'] = useCallback(\n async ({ data, path, rowIndex, schemaPath }) => {\n const subFieldState = await getFieldStateBySchemaPath({ data, schemaPath })\n\n dispatchFields({\n type: 'REPLACE_ROW',\n blockType: data?.blockType,\n path,\n rowIndex,\n subFieldState,\n })\n },\n [getFieldStateBySchemaPath, dispatchFields],\n )\n\n useEffect(() => {\n if (initializingFromProps !== undefined) {\n setInitializing(initializingFromProps)\n }\n }, [initializingFromProps])\n\n contextRef.current.submit = submit\n contextRef.current.getFields = getFields\n contextRef.current.getField = getField\n contextRef.current.getData = getData\n contextRef.current.getSiblingData = getSiblingData\n contextRef.current.getDataByPath = getDataByPath\n contextRef.current.validateForm = validateForm\n contextRef.current.createFormData = createFormData\n contextRef.current.setModified = setModified\n contextRef.current.setProcessing = setProcessing\n contextRef.current.setSubmitted = setSubmitted\n contextRef.current.disabled = disabled\n contextRef.current.setDisabled = setDisabled\n contextRef.current.formRef = formRef\n contextRef.current.reset = reset\n contextRef.current.replaceState = replaceState\n contextRef.current.dispatchFields = dispatchFields\n contextRef.current.addFieldRow = addFieldRow\n contextRef.current.removeFieldRow = removeFieldRow\n contextRef.current.replaceFieldRow = replaceFieldRow\n contextRef.current.uuid = uuid\n contextRef.current.initializing = initializing\n\n useEffect(() => {\n setIsMounted(true)\n }, [])\n\n useEffect(() => {\n if (typeof disabledFromProps === 'boolean') setDisabled(disabledFromProps)\n }, [disabledFromProps])\n\n useEffect(() => {\n if (typeof submittedFromProps === 'boolean') setSubmitted(submittedFromProps)\n }, [submittedFromProps])\n\n useEffect(() => {\n if (initialState) {\n contextRef.current = { ...initContextState } as FormContextType\n dispatchFields({ type: 'REPLACE_STATE', optimize: false, state: initialState })\n }\n }, [initialState, dispatchFields])\n\n useThrottledEffect(\n () => {\n refreshCookie()\n },\n 15000,\n [fields],\n )\n\n useEffect(() => {\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n setModified(false)\n }, [locale])\n\n const classes = [className, baseClass].filter(Boolean).join(' ')\n\n useDebouncedEffect(\n () => {\n const executeOnChange = async () => {\n if (Array.isArray(onChange)) {\n let revalidatedFormState: FormState = contextRef.current.fields\n\n for (const onChangeFn of onChange) {\n revalidatedFormState = await onChangeFn({\n formState: revalidatedFormState,\n })\n }\n\n const { changed, newState } = mergeServerFormState(\n contextRef.current.fields || {},\n revalidatedFormState,\n )\n\n if (changed) {\n dispatchFields({\n type: 'REPLACE_STATE',\n optimize: false,\n state: newState,\n })\n }\n }\n }\n\n if (modified) void executeOnChange()\n },\n 150,\n // Make sure we trigger this whenever modified changes (not just when `fields` changes), otherwise we will miss merging server form state for the first form update/onChange. Here's why:\n // `fields` updates before `modified`, because setModified is in a setTimeout. So on the first change, modified is false, so we don't trigger the effect even though we should.\n [contextRef.current.fields, dispatchFields, onChange, modified],\n )\n\n const actionString =\n typeof action === 'string'\n ? `${action}${qs.stringify(formQueryParams, { addQueryPrefix: true })}`\n : ''\n\n return (\n <form\n action={method ? actionString : (action as string)}\n className={classes}\n method={method}\n noValidate\n onSubmit={(e) => contextRef.current.submit({}, e)}\n ref={formRef}\n >\n <FormContext.Provider value={contextRef.current}>\n <FormWatchContext.Provider\n value={{\n fields,\n ...contextRef.current,\n }}\n >\n <SubmittedContext.Provider value={submitted}>\n <InitializingContext.Provider value={!isMounted || (isMounted && initializing)}>\n <ProcessingContext.Provider value={processing}>\n <ModifiedContext.Provider value={modified}>\n <FormFieldsContext.Provider value={fieldsReducer}>\n {children}\n </FormFieldsContext.Provider>\n </ModifiedContext.Provider>\n </ProcessingContext.Provider>\n </InitializingContext.Provider>\n </SubmittedContext.Provider>\n </FormWatchContext.Provider>\n </FormContext.Provider>\n </form>\n )\n}\n\nexport {\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n useAllFormFields,\n useForm,\n useFormFields,\n useFormModified,\n useFormProcessing,\n useFormSubmitted,\n useWatchForm,\n} from './context.js'\n\nexport { FormProps }\n"],"names":["dequal","useRouter","serialize","getDataByPath","getDataByPathFunc","getSiblingData","getSiblingDataFunc","reduceFieldsToValues","wait","qs","React","useCallback","useEffect","useReducer","useRef","useState","toast","useDebouncedEffect","useThrottledEffect","useAuth","useConfig","useDocumentInfo","useFormQueryParams","useLocale","useOperation","useTranslation","requests","getFormState","FormContext","FormFieldsContext","FormWatchContext","InitializingContext","ModifiedContext","ProcessingContext","SubmittedContext","errorMessages","fieldReducer","initContextState","mergeServerFormState","baseClass","Form","props","id","collectionSlug","globalSlug","action","beforeSubmit","children","className","disableSuccessStatus","disableValidationOnSubmit","disabled","disabledFromProps","handleResponse","initialState","isInitializing","initializingFromProps","onChange","onSubmit","onSuccess","redirect","submitted","submittedFromProps","uuid","waitForAutocomplete","method","undefined","router","code","locale","i18n","t","refreshCookie","user","operation","formQueryParams","config","routes","api","apiRoute","serverURL","setDisabled","isMounted","setIsMounted","modified","setModified","initializing","setInitializing","processing","setProcessing","setSubmitted","formRef","contextRef","fieldsReducer","fields","dispatchFields","current","validateForm","validatedFieldState","isValid","dataFromContext","getData","data","validationPromises","Object","entries","map","path","field","validatedField","passesCondition","validationResult","valid","validate","valueToValidate","value","rows","Array","isArray","siblingData","errorMessage","Promise","all","type","state","submit","options","e","actionArg","methodToUse","overrides","skipValidation","preventDefault","successToast","errorToast","promise","resolve","reject","hasFormSubmitAction","success","error","loading","stopPropagation","revalidatedFormState","reduce","priorOnChange","beforeSubmitFn","result","formState","every","formData","createFormData","res","actionEndpoint","stringify","addQueryPrefix","toLowerCase","body","headers","language","contentType","get","isJSON","indexOf","json","status","push","message","errors","fieldErrors","nonFieldErrors","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","forEach","dataError","statusText","console","getFields","getField","file","dataWithOverrides","dataToSerialize","_payload","JSON","indices","nullsAsUndefineds","reset","newState","schemaPath","replaceState","getFieldStateBySchemaPath","fieldSchema","addFieldRow","rowIndex","subFieldState","blockType","removeFieldRow","replaceFieldRow","optimize","classes","filter","Boolean","join","executeOnChange","onChangeFn","changed","actionString","form","noValidate","ref","Provider","useAllFormFields","useForm","useFormFields","useFormModified","useFormProcessing","useFormSubmitted","useWatchForm"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/forms/Form/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState } from 'payload'\n\nimport { dequal } from 'dequal/lite' // lite: no need for Map and Set support\nimport { useRouter } from 'next/navigation.js'\nimport { serialize } from 'object-to-formdata'\nimport {\n getDataByPath as getDataByPathFunc,\n getSiblingData as getSiblingDataFunc,\n reduceFieldsToValues,\n wait,\n} from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useReducer, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type {\n Context as FormContextType,\n FormProps,\n GetDataByPath,\n SubmitOptions,\n} from './types.js'\n\nimport { useDebouncedEffect } from '../../hooks/useDebouncedEffect.js'\nimport { useThrottledEffect } from '../../hooks/useThrottledEffect.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useFormQueryParams } from '../../providers/FormQueryParams/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { getFormState } from '../../utilities/getFormState.js'\nimport {\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n InitializingContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n} from './context.js'\nimport { errorMessages } from './errorMessages.js'\nimport { fieldReducer } from './fieldReducer.js'\nimport { initContextState } from './initContextState.js'\nimport { mergeServerFormState } from './mergeServerFormState.js'\n\nconst baseClass = 'form'\n\nexport const Form: React.FC<FormProps> = (props) => {\n const { id, collectionSlug, globalSlug } = useDocumentInfo()\n\n const {\n action,\n beforeSubmit,\n children,\n className,\n disableSuccessStatus,\n disableValidationOnSubmit,\n disabled: disabledFromProps,\n // fields: fieldsFromProps = collection?.fields || global?.fields,\n handleResponse,\n initialState, // fully formed initial field state\n isInitializing: initializingFromProps,\n onChange,\n onSubmit,\n onSuccess,\n redirect,\n submitted: submittedFromProps,\n uuid,\n waitForAutocomplete,\n } = props\n\n const method = 'method' in props ? props?.method : undefined\n\n const router = useRouter()\n\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n const { refreshCookie, user } = useAuth()\n const operation = useOperation()\n const { formQueryParams } = useFormQueryParams()\n\n const config = useConfig()\n const {\n routes: { api: apiRoute },\n serverURL,\n } = config\n\n const [disabled, setDisabled] = useState(disabledFromProps || false)\n const [isMounted, setIsMounted] = useState(false)\n const [modified, setModified] = useState(false)\n const [initializing, setInitializing] = useState(initializingFromProps)\n const [processing, setProcessing] = useState(false)\n const [submitted, setSubmitted] = useState(false)\n const formRef = useRef<HTMLFormElement>(null)\n const contextRef = useRef({} as FormContextType)\n\n const fieldsReducer = useReducer(fieldReducer, {}, () => initialState)\n\n /**\n * `fields` is the current, up-to-date state/data of all fields in the form. It can be modified by using dispatchFields,\n * which calls the fieldReducer, which then updates the state.\n */\n const [fields, dispatchFields] = fieldsReducer\n\n contextRef.current.fields = fields\n\n const validateForm = useCallback(async () => {\n const validatedFieldState = {}\n let isValid = true\n\n const dataFromContext = contextRef.current.getData()\n const data = dataFromContext\n\n const validationPromises = Object.entries(contextRef.current.fields).map(\n async ([path, field]) => {\n const validatedField = field\n\n if (field.passesCondition !== false) {\n let validationResult: boolean | string = validatedField.valid\n\n if (typeof field.validate === 'function') {\n let valueToValidate = field.value\n\n if (field?.rows && Array.isArray(field.rows)) {\n valueToValidate = contextRef.current.getDataByPath(path)\n }\n\n validationResult = await field.validate(valueToValidate, {\n id,\n config,\n data,\n operation,\n siblingData: contextRef.current.getSiblingData(path),\n t,\n user,\n })\n\n if (typeof validationResult === 'string') {\n validatedField.errorMessage = validationResult\n validatedField.valid = false\n } else {\n validatedField.valid = true\n validatedField.errorMessage = undefined\n }\n }\n\n if (validatedField.valid === false) {\n isValid = false\n }\n }\n\n validatedFieldState[path] = validatedField\n },\n )\n\n await Promise.all(validationPromises)\n\n if (!dequal(contextRef.current.fields, validatedFieldState)) {\n dispatchFields({ type: 'REPLACE_STATE', state: validatedFieldState })\n }\n\n return isValid\n }, [id, user, operation, t, dispatchFields, config])\n\n const submit = useCallback(\n async (options: SubmitOptions = {}, e): Promise<void> => {\n const {\n action: actionArg,\n method: methodToUse = method,\n overrides = {},\n skipValidation,\n } = options\n\n if (disabled) {\n if (e) {\n e.preventDefault()\n }\n return\n }\n\n // create new toast promise which will resolve manually later\n let successToast, errorToast\n const promise = new Promise((resolve, reject) => {\n successToast = resolve\n errorToast = reject\n })\n\n const hasFormSubmitAction =\n actionArg || typeof action === 'string' || typeof action === 'function'\n\n if (redirect || disableSuccessStatus || !hasFormSubmitAction) {\n // Do not show submitting toast, as the promise toast may never disappear under these conditions.\n // Instead, make successToast() or errorToast() throw toast.success / toast.error\n successToast = (data) => toast.success(data)\n errorToast = (data) => toast.error(data)\n } else {\n toast.promise(promise, {\n error: (data) => {\n return data as string\n },\n loading: t('general:submitting'),\n success: (data) => {\n return data as string\n },\n })\n }\n\n if (e) {\n e.stopPropagation()\n e.preventDefault()\n }\n\n setProcessing(true)\n setDisabled(true)\n\n if (waitForAutocomplete) await wait(100)\n\n // Execute server side validations\n if (Array.isArray(beforeSubmit)) {\n let revalidatedFormState: FormState\n\n await beforeSubmit.reduce(async (priorOnChange, beforeSubmitFn) => {\n await priorOnChange\n\n const result = await beforeSubmitFn({\n formState: fields,\n })\n\n revalidatedFormState = result\n }, Promise.resolve())\n\n const isValid = Object.entries(revalidatedFormState).every(([, field]) => field.valid)\n\n if (!isValid) {\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return dispatchFields({ type: 'REPLACE_STATE', state: revalidatedFormState })\n }\n }\n\n const isValid =\n skipValidation || disableValidationOnSubmit ? true : await contextRef.current.validateForm()\n\n // If not valid, prevent submission\n if (!isValid) {\n errorToast(t('error:correctInvalidFields'))\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return\n }\n\n // If submit handler comes through via props, run that\n if (onSubmit) {\n const data = {\n ...reduceFieldsToValues(fields, true),\n ...overrides,\n }\n\n onSubmit(fields, data)\n }\n\n if (!hasFormSubmitAction) {\n // No action provided, so we should return. An example where this happens are lexical link drawers. Upon submitting the drawer, we\n // want to close it without submitting the form. Stuff like validation would be handled by lexical before this, through beforeSubmit\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return\n }\n\n const formData = contextRef.current.createFormData(overrides)\n\n try {\n let res\n const actionEndpoint =\n actionArg ||\n (typeof action === 'string'\n ? `${action}${qs.stringify(formQueryParams, { addQueryPrefix: true })}`\n : null)\n\n if (actionEndpoint) {\n res = await requests[methodToUse.toLowerCase()](actionEndpoint, {\n body: formData,\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n } else if (typeof action === 'function') {\n res = await action(formData)\n }\n\n setModified(false)\n setDisabled(false)\n\n if (typeof handleResponse === 'function') {\n handleResponse(res, successToast, errorToast)\n return\n }\n\n const contentType = res.headers.get('content-type')\n const isJSON = contentType && contentType.indexOf('application/json') !== -1\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let json: Record<string, any> = {}\n\n if (isJSON) json = await res.json()\n if (res.status < 400) {\n if (typeof onSuccess === 'function') await onSuccess(json)\n setSubmitted(false)\n setProcessing(false)\n\n if (redirect) {\n router.push(redirect)\n } else if (!disableSuccessStatus) {\n successToast(json.message || t('general:submissionSuccessful'))\n }\n } else {\n setProcessing(false)\n setSubmitted(true)\n\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n if (json.message) {\n errorToast(json.message)\n\n return\n }\n\n if (Array.isArray(json.errors)) {\n const [fieldErrors, nonFieldErrors] = json.errors.reduce(\n ([fieldErrs, nonFieldErrs], err) => {\n const newFieldErrs = []\n const newNonFieldErrs = []\n\n if (err?.message) {\n newNonFieldErrs.push(err)\n }\n\n if (Array.isArray(err?.data?.errors)) {\n err.data?.errors.forEach((dataError) => {\n if (dataError?.field) {\n newFieldErrs.push(dataError)\n } else {\n newNonFieldErrs.push(dataError)\n }\n })\n }\n\n return [\n [...fieldErrs, ...newFieldErrs],\n [...nonFieldErrs, ...newNonFieldErrs],\n ]\n },\n [[], []],\n )\n\n dispatchFields({\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n })\n\n nonFieldErrors.forEach((err) => {\n errorToast(err.message || t('error:unknown'))\n })\n\n return\n }\n\n const message = errorMessages?.[res.status] || res?.statusText || t('error:unknown')\n\n errorToast(message)\n }\n } catch (err) {\n console.error('Error submitting form', err)\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n\n errorToast(err.message)\n }\n },\n [\n beforeSubmit,\n action,\n disableSuccessStatus,\n disableValidationOnSubmit,\n disabled,\n dispatchFields,\n fields,\n handleResponse,\n method,\n onSubmit,\n onSuccess,\n redirect,\n router,\n t,\n i18n,\n waitForAutocomplete,\n formQueryParams,\n ],\n )\n\n const getFields = useCallback(() => contextRef.current.fields, [])\n\n const getField = useCallback((path: string) => contextRef.current.fields[path], [])\n\n const getData = useCallback(() => reduceFieldsToValues(contextRef.current.fields, true), [])\n\n const getSiblingData = useCallback(\n (path: string) => getSiblingDataFunc(contextRef.current.fields, path),\n [],\n )\n const getDataByPath = useCallback<GetDataByPath>(\n (path: string) => getDataByPathFunc(contextRef.current.fields, path),\n [],\n )\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const createFormData = useCallback((overrides: any = {}) => {\n const data = reduceFieldsToValues(contextRef.current.fields, true)\n\n const file = data?.file\n\n if (file) {\n delete data.file\n }\n\n const dataWithOverrides = {\n ...data,\n ...overrides,\n }\n\n const dataToSerialize = {\n _payload: JSON.stringify(dataWithOverrides),\n file,\n }\n\n // nullAsUndefineds is important to allow uploads and relationship fields to clear themselves\n const formData = serialize(dataToSerialize, { indices: true, nullsAsUndefineds: false })\n\n return formData\n }, [])\n\n const reset = useCallback(\n async (data: unknown) => {\n const newState = await getFormState({\n apiRoute,\n body: {\n id,\n collectionSlug,\n data,\n globalSlug,\n operation,\n schemaPath: collectionSlug || globalSlug,\n },\n serverURL,\n })\n\n contextRef.current = { ...initContextState } as FormContextType\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state: newState })\n },\n [apiRoute, collectionSlug, dispatchFields, globalSlug, id, operation, serverURL],\n )\n\n const replaceState = useCallback(\n (state: FormState) => {\n contextRef.current = { ...initContextState } as FormContextType\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state })\n },\n [dispatchFields],\n )\n\n const getFieldStateBySchemaPath = useCallback(\n async ({ data, schemaPath }) => {\n const fieldSchema = await getFormState({\n apiRoute,\n body: {\n collectionSlug,\n data,\n globalSlug,\n schemaPath,\n },\n serverURL,\n })\n return fieldSchema\n },\n [apiRoute, collectionSlug, globalSlug, serverURL],\n )\n\n const addFieldRow: FormContextType['addFieldRow'] = useCallback(\n async ({ data, path, rowIndex, schemaPath }) => {\n const subFieldState = await getFieldStateBySchemaPath({ data, schemaPath })\n\n dispatchFields({\n type: 'ADD_ROW',\n blockType: data?.blockType,\n path,\n rowIndex,\n subFieldState,\n })\n },\n [getFieldStateBySchemaPath, dispatchFields],\n )\n\n const removeFieldRow: FormContextType['removeFieldRow'] = useCallback(\n ({ path, rowIndex }) => {\n dispatchFields({ type: 'REMOVE_ROW', path, rowIndex })\n },\n [dispatchFields],\n )\n\n const replaceFieldRow: FormContextType['replaceFieldRow'] = useCallback(\n async ({ data, path, rowIndex, schemaPath }) => {\n const subFieldState = await getFieldStateBySchemaPath({ data, schemaPath })\n\n dispatchFields({\n type: 'REPLACE_ROW',\n blockType: data?.blockType,\n path,\n rowIndex,\n subFieldState,\n })\n },\n [getFieldStateBySchemaPath, dispatchFields],\n )\n\n useEffect(() => {\n if (initializingFromProps !== undefined) {\n setInitializing(initializingFromProps)\n }\n }, [initializingFromProps])\n\n contextRef.current.submit = submit\n contextRef.current.getFields = getFields\n contextRef.current.getField = getField\n contextRef.current.getData = getData\n contextRef.current.getSiblingData = getSiblingData\n contextRef.current.getDataByPath = getDataByPath\n contextRef.current.validateForm = validateForm\n contextRef.current.createFormData = createFormData\n contextRef.current.setModified = setModified\n contextRef.current.setProcessing = setProcessing\n contextRef.current.setSubmitted = setSubmitted\n contextRef.current.disabled = disabled\n contextRef.current.setDisabled = setDisabled\n contextRef.current.formRef = formRef\n contextRef.current.reset = reset\n contextRef.current.replaceState = replaceState\n contextRef.current.dispatchFields = dispatchFields\n contextRef.current.addFieldRow = addFieldRow\n contextRef.current.removeFieldRow = removeFieldRow\n contextRef.current.replaceFieldRow = replaceFieldRow\n contextRef.current.uuid = uuid\n contextRef.current.initializing = initializing\n\n useEffect(() => {\n setIsMounted(true)\n }, [])\n\n useEffect(() => {\n if (typeof disabledFromProps === 'boolean') setDisabled(disabledFromProps)\n }, [disabledFromProps])\n\n useEffect(() => {\n if (typeof submittedFromProps === 'boolean') setSubmitted(submittedFromProps)\n }, [submittedFromProps])\n\n useEffect(() => {\n if (initialState) {\n contextRef.current = { ...initContextState } as FormContextType\n dispatchFields({ type: 'REPLACE_STATE', optimize: false, state: initialState })\n }\n }, [initialState, dispatchFields])\n\n useThrottledEffect(\n () => {\n refreshCookie()\n },\n 15000,\n [fields],\n )\n\n useEffect(() => {\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n setModified(false)\n }, [locale])\n\n const classes = [className, baseClass].filter(Boolean).join(' ')\n\n useDebouncedEffect(\n () => {\n const executeOnChange = async () => {\n if (Array.isArray(onChange)) {\n let revalidatedFormState: FormState = contextRef.current.fields\n\n for (const onChangeFn of onChange) {\n revalidatedFormState = await onChangeFn({\n formState: revalidatedFormState,\n })\n }\n\n const { changed, newState } = mergeServerFormState(\n contextRef.current.fields || {},\n revalidatedFormState,\n )\n\n if (changed) {\n dispatchFields({\n type: 'REPLACE_STATE',\n optimize: false,\n state: newState,\n })\n }\n }\n }\n\n if (modified) void executeOnChange()\n },\n 150,\n // Make sure we trigger this whenever modified changes (not just when `fields` changes), otherwise we will miss merging server form state for the first form update/onChange. Here's why:\n // `fields` updates before `modified`, because setModified is in a setTimeout. So on the first change, modified is false, so we don't trigger the effect even though we should.\n [contextRef.current.fields, dispatchFields, onChange, modified],\n )\n\n const actionString =\n typeof action === 'string'\n ? `${action}${qs.stringify(formQueryParams, { addQueryPrefix: true })}`\n : ''\n\n return (\n <form\n action={method ? actionString : (action as string)}\n className={classes}\n method={method}\n noValidate\n onSubmit={(e) => contextRef.current.submit({}, e)}\n ref={formRef}\n >\n <FormContext.Provider value={contextRef.current}>\n <FormWatchContext.Provider\n value={{\n fields,\n ...contextRef.current,\n }}\n >\n <SubmittedContext.Provider value={submitted}>\n <InitializingContext.Provider value={!isMounted || (isMounted && initializing)}>\n <ProcessingContext.Provider value={processing}>\n <ModifiedContext.Provider value={modified}>\n <FormFieldsContext.Provider value={fieldsReducer}>\n {children}\n </FormFieldsContext.Provider>\n </ModifiedContext.Provider>\n </ProcessingContext.Provider>\n </InitializingContext.Provider>\n </SubmittedContext.Provider>\n </FormWatchContext.Provider>\n </FormContext.Provider>\n </form>\n )\n}\n\nexport {\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n useAllFormFields,\n useForm,\n useFormFields,\n useFormModified,\n useFormProcessing,\n useFormSubmitted,\n useWatchForm,\n} from './context.js'\n\nexport { FormProps }\n"],"names":["dequal","useRouter","serialize","getDataByPath","getDataByPathFunc","getSiblingData","getSiblingDataFunc","reduceFieldsToValues","wait","qs","React","useCallback","useEffect","useReducer","useRef","useState","toast","useDebouncedEffect","useThrottledEffect","useAuth","useConfig","useDocumentInfo","useFormQueryParams","useLocale","useOperation","useTranslation","requests","getFormState","FormContext","FormFieldsContext","FormWatchContext","InitializingContext","ModifiedContext","ProcessingContext","SubmittedContext","errorMessages","fieldReducer","initContextState","mergeServerFormState","baseClass","Form","props","id","collectionSlug","globalSlug","action","beforeSubmit","children","className","disableSuccessStatus","disableValidationOnSubmit","disabled","disabledFromProps","handleResponse","initialState","isInitializing","initializingFromProps","onChange","onSubmit","onSuccess","redirect","submitted","submittedFromProps","uuid","waitForAutocomplete","method","undefined","router","code","locale","i18n","t","refreshCookie","user","operation","formQueryParams","config","routes","api","apiRoute","serverURL","setDisabled","isMounted","setIsMounted","modified","setModified","initializing","setInitializing","processing","setProcessing","setSubmitted","formRef","contextRef","fieldsReducer","fields","dispatchFields","current","validateForm","validatedFieldState","isValid","dataFromContext","getData","data","validationPromises","Object","entries","map","path","field","validatedField","passesCondition","validationResult","valid","validate","valueToValidate","value","rows","Array","isArray","siblingData","errorMessage","Promise","all","type","state","submit","options","e","actionArg","methodToUse","overrides","skipValidation","preventDefault","successToast","errorToast","promise","resolve","reject","hasFormSubmitAction","success","error","loading","stopPropagation","revalidatedFormState","reduce","priorOnChange","beforeSubmitFn","result","formState","every","formData","createFormData","res","actionEndpoint","stringify","addQueryPrefix","toLowerCase","body","headers","language","contentType","get","isJSON","indexOf","json","status","push","message","errors","fieldErrors","nonFieldErrors","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","forEach","dataError","statusText","console","getFields","getField","file","dataWithOverrides","dataToSerialize","_payload","JSON","indices","nullsAsUndefineds","reset","newState","schemaPath","replaceState","getFieldStateBySchemaPath","fieldSchema","addFieldRow","rowIndex","subFieldState","blockType","removeFieldRow","replaceFieldRow","optimize","classes","filter","Boolean","join","executeOnChange","onChangeFn","changed","actionString","form","noValidate","ref","Provider","useAllFormFields","useForm","useFormFields","useFormModified","useFormProcessing","useFormSubmitted","useWatchForm"],"mappings":"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"}