@payloadcms/ui 3.0.0-canary.ac498e7 → 3.0.0-canary.b6520aa

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 (319) hide show
  1. package/dist/elements/ArrayAction/index.scss +0 -13
  2. package/dist/elements/Banner/index.scss +1 -1
  3. package/dist/elements/Button/index.js +1 -1
  4. package/dist/elements/Button/index.js.map +1 -1
  5. package/dist/elements/Button/index.scss +112 -118
  6. package/dist/elements/Button/types.d.ts +1 -1
  7. package/dist/elements/Button/types.d.ts.map +1 -1
  8. package/dist/elements/Button/types.js.map +1 -1
  9. package/dist/elements/Card/index.scss +38 -9
  10. package/dist/elements/CodeEditor/CodeEditor.d.ts.map +1 -1
  11. package/dist/elements/CodeEditor/CodeEditor.js +2 -1
  12. package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
  13. package/dist/elements/Collapsible/index.scss +61 -30
  14. package/dist/elements/ColumnSelector/index.scss +20 -2
  15. package/dist/elements/DeleteMany/index.d.ts.map +1 -1
  16. package/dist/elements/DeleteMany/index.js +4 -2
  17. package/dist/elements/DeleteMany/index.js.map +1 -1
  18. package/dist/elements/DocumentControls/index.scss +2 -2
  19. package/dist/elements/DocumentDrawer/index.scss +4 -6
  20. package/dist/elements/DraggableSortable/DraggableSortableItem/index.d.ts.map +1 -1
  21. package/dist/elements/DraggableSortable/DraggableSortableItem/index.js +4 -2
  22. package/dist/elements/DraggableSortable/DraggableSortableItem/index.js.map +1 -1
  23. package/dist/elements/DraggableSortable/useDraggableSortable/index.d.ts.map +1 -1
  24. package/dist/elements/DraggableSortable/useDraggableSortable/index.js +10 -4
  25. package/dist/elements/DraggableSortable/useDraggableSortable/index.js.map +1 -1
  26. package/dist/elements/DraggableSortable/useDraggableSortable/types.d.ts +1 -0
  27. package/dist/elements/DraggableSortable/useDraggableSortable/types.d.ts.map +1 -1
  28. package/dist/elements/DraggableSortable/useDraggableSortable/types.js.map +1 -1
  29. package/dist/elements/Drawer/index.d.ts.map +1 -1
  30. package/dist/elements/Drawer/index.js +3 -0
  31. package/dist/elements/Drawer/index.js.map +1 -1
  32. package/dist/elements/Drawer/index.scss +13 -8
  33. package/dist/elements/Dropzone/index.js +2 -2
  34. package/dist/elements/Dropzone/index.js.map +1 -1
  35. package/dist/elements/Dropzone/index.scss +7 -3
  36. package/dist/elements/EditMany/index.scss +2 -2
  37. package/dist/elements/EditUpload/index.scss +4 -1
  38. package/dist/elements/FileDetails/FileMeta/index.scss +1 -0
  39. package/dist/elements/FileDetails/index.d.ts.map +1 -1
  40. package/dist/elements/FileDetails/index.js +3 -1
  41. package/dist/elements/FileDetails/index.js.map +1 -1
  42. package/dist/elements/FileDetails/index.scss +28 -12
  43. package/dist/elements/Hamburger/index.d.ts.map +1 -1
  44. package/dist/elements/Hamburger/index.js +17 -41
  45. package/dist/elements/Hamburger/index.js.map +1 -1
  46. package/dist/elements/Hamburger/index.scss +22 -102
  47. package/dist/elements/IDLabel/index.js +1 -1
  48. package/dist/elements/IDLabel/index.js.map +1 -1
  49. package/dist/elements/IDLabel/index.scss +2 -2
  50. package/dist/elements/ListControls/index.d.ts.map +1 -1
  51. package/dist/elements/ListControls/index.js +5 -1
  52. package/dist/elements/ListControls/index.js.map +1 -1
  53. package/dist/elements/ListControls/index.scss +6 -12
  54. package/dist/elements/Logout/index.d.ts.map +1 -1
  55. package/dist/elements/Logout/index.js +2 -0
  56. package/dist/elements/Logout/index.js.map +1 -1
  57. package/dist/elements/NavGroup/index.scss +2 -2
  58. package/dist/elements/Pill/index.d.ts.map +1 -1
  59. package/dist/elements/Pill/index.js +1 -5
  60. package/dist/elements/Pill/index.js.map +1 -1
  61. package/dist/elements/Pill/index.scss +8 -21
  62. package/dist/elements/Popup/index.scss +6 -0
  63. package/dist/elements/PreviewButton/index.d.ts.map +1 -1
  64. package/dist/elements/PreviewButton/index.js +3 -1
  65. package/dist/elements/PreviewButton/index.js.map +1 -1
  66. package/dist/elements/PublishButton/index.js +1 -1
  67. package/dist/elements/PublishButton/index.js.map +1 -1
  68. package/dist/elements/ReactSelect/MultiValue/index.scss +25 -3
  69. package/dist/elements/ReactSelect/MultiValueLabel/index.scss +1 -1
  70. package/dist/elements/ReactSelect/MultiValueRemove/index.scss +3 -3
  71. package/dist/elements/ReactSelect/ValueContainer/index.scss +5 -12
  72. package/dist/elements/ReactSelect/index.scss +2 -3
  73. package/dist/elements/RenderTitle/index.scss +1 -1
  74. package/dist/elements/SaveButton/index.d.ts.map +1 -1
  75. package/dist/elements/SaveButton/index.js +4 -2
  76. package/dist/elements/SaveButton/index.js.map +1 -1
  77. package/dist/elements/SaveDraftButton/index.d.ts.map +1 -1
  78. package/dist/elements/SaveDraftButton/index.js +4 -2
  79. package/dist/elements/SaveDraftButton/index.js.map +1 -1
  80. package/dist/elements/SearchFilter/index.d.ts.map +1 -1
  81. package/dist/elements/SearchFilter/index.js +11 -15
  82. package/dist/elements/SearchFilter/index.js.map +1 -1
  83. package/dist/elements/SearchFilter/index.scss +2 -1
  84. package/dist/elements/SelectRow/index.scss +1 -0
  85. package/dist/elements/SortColumn/index.js +4 -4
  86. package/dist/elements/SortColumn/index.js.map +1 -1
  87. package/dist/elements/StayLoggedIn/index.d.ts.map +1 -1
  88. package/dist/elements/StayLoggedIn/index.js +2 -0
  89. package/dist/elements/StayLoggedIn/index.js.map +1 -1
  90. package/dist/elements/Table/DefaultCell/fields/Code/index.scss +1 -1
  91. package/dist/elements/Table/DefaultCell/fields/JSON/index.scss +1 -1
  92. package/dist/elements/Table/DefaultCell/fields/Relationship/index.d.ts.map +1 -1
  93. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js +19 -3
  94. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
  95. package/dist/elements/Table/index.scss +10 -1
  96. package/dist/elements/ThumbnailCard/index.scss +10 -1
  97. package/dist/elements/Upload/index.scss +2 -1
  98. package/dist/elements/WhereBuilder/Condition/index.d.ts.map +1 -1
  99. package/dist/elements/WhereBuilder/Condition/index.js +8 -2
  100. package/dist/elements/WhereBuilder/Condition/index.js.map +1 -1
  101. package/dist/elements/WhereBuilder/index.d.ts.map +1 -1
  102. package/dist/elements/WhereBuilder/index.js +7 -4
  103. package/dist/elements/WhereBuilder/index.js.map +1 -1
  104. package/dist/exports/client/{CodeEditor-OI35YO7H.js → CodeEditor-UPOVAXRP.js} +2 -2
  105. package/dist/exports/client/{CodeEditor-OI35YO7H.js.map → CodeEditor-UPOVAXRP.js.map} +2 -2
  106. package/dist/exports/client/{DatePicker-5IFHNQHA.js → DatePicker-XJHHMZP7.js} +2 -2
  107. package/dist/exports/client/chunk-TIH7OFW3.js +30 -0
  108. package/dist/exports/client/{chunk-WDFUZ6GL.js.map → chunk-TIH7OFW3.js.map} +2 -2
  109. package/dist/exports/client/index.d.ts +1 -0
  110. package/dist/exports/client/index.d.ts.map +1 -1
  111. package/dist/exports/client/index.js +27 -26
  112. package/dist/exports/client/index.js.map +4 -4
  113. package/dist/exports/shared/index.js +1 -1
  114. package/dist/exports/shared/index.js.map +3 -3
  115. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  116. package/dist/fields/Array/ArrayRow.js +4 -2
  117. package/dist/fields/Array/ArrayRow.js.map +1 -1
  118. package/dist/fields/Array/index.d.ts +1 -1
  119. package/dist/fields/Array/index.d.ts.map +1 -1
  120. package/dist/fields/Array/index.js +22 -7
  121. package/dist/fields/Array/index.js.map +1 -1
  122. package/dist/fields/Array/index.scss +3 -1
  123. package/dist/fields/Blocks/BlocksDrawer/BlockSearch/index.scss +3 -4
  124. package/dist/fields/Blocks/SectionTitle/index.scss +1 -0
  125. package/dist/fields/Blocks/index.d.ts.map +1 -1
  126. package/dist/fields/Blocks/index.js +20 -7
  127. package/dist/fields/Blocks/index.js.map +1 -1
  128. package/dist/fields/Checkbox/index.d.ts.map +1 -1
  129. package/dist/fields/Checkbox/index.js.map +1 -1
  130. package/dist/fields/Checkbox/index.scss +7 -8
  131. package/dist/fields/Code/index.scss +6 -0
  132. package/dist/fields/ConfirmPassword/index.d.ts +1 -0
  133. package/dist/fields/ConfirmPassword/index.d.ts.map +1 -1
  134. package/dist/fields/ConfirmPassword/index.js +12 -19
  135. package/dist/fields/ConfirmPassword/index.js.map +1 -1
  136. package/dist/fields/DateTime/index.d.ts.map +1 -1
  137. package/dist/fields/DateTime/index.js.map +1 -1
  138. package/dist/fields/Email/index.d.ts.map +1 -1
  139. package/dist/fields/Email/index.js.map +1 -1
  140. package/dist/fields/JSON/index.d.ts.map +1 -1
  141. package/dist/fields/JSON/index.js.map +1 -1
  142. package/dist/fields/Password/index.d.ts +14 -3
  143. package/dist/fields/Password/index.d.ts.map +1 -1
  144. package/dist/fields/Password/index.js +56 -43
  145. package/dist/fields/Password/index.js.map +1 -1
  146. package/dist/fields/Password/input.d.ts +5 -0
  147. package/dist/fields/Password/input.d.ts.map +1 -0
  148. package/dist/fields/Password/input.js +65 -0
  149. package/dist/fields/Password/input.js.map +1 -0
  150. package/dist/fields/Password/types.d.ts +27 -0
  151. package/dist/fields/Password/types.d.ts.map +1 -0
  152. package/dist/fields/Password/types.js +3 -0
  153. package/dist/fields/Password/types.js.map +1 -0
  154. package/dist/fields/Point/index.d.ts.map +1 -1
  155. package/dist/fields/Point/index.js.map +1 -1
  156. package/dist/fields/RadioGroup/Radio/index.d.ts.map +1 -1
  157. package/dist/fields/RadioGroup/Radio/index.js +4 -1
  158. package/dist/fields/RadioGroup/Radio/index.js.map +1 -1
  159. package/dist/fields/RadioGroup/Radio/index.scss +13 -6
  160. package/dist/fields/RadioGroup/index.scss +5 -1
  161. package/dist/fields/Relationship/AddNew/index.scss +3 -0
  162. package/dist/fields/Relationship/index.d.ts.map +1 -1
  163. package/dist/fields/Relationship/index.js +2 -1
  164. package/dist/fields/Relationship/index.js.map +1 -1
  165. package/dist/fields/Relationship/index.scss +7 -0
  166. package/dist/fields/Relationship/select-components/MultiValueLabel/index.scss +8 -5
  167. package/dist/fields/Select/index.d.ts.map +1 -1
  168. package/dist/fields/Select/index.js.map +1 -1
  169. package/dist/fields/Text/Input.d.ts.map +1 -1
  170. package/dist/fields/Text/Input.js +13 -17
  171. package/dist/fields/Text/Input.js.map +1 -1
  172. package/dist/fields/Text/index.d.ts.map +1 -1
  173. package/dist/fields/Text/index.js.map +1 -1
  174. package/dist/fields/Text/index.scss +6 -0
  175. package/dist/fields/Textarea/index.d.ts.map +1 -1
  176. package/dist/fields/Textarea/index.js.map +1 -1
  177. package/dist/fields/Textarea/index.scss +1 -6
  178. package/dist/fields/Upload/index.scss +10 -3
  179. package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
  180. package/dist/forms/Form/fieldReducer.js +5 -35
  181. package/dist/forms/Form/fieldReducer.js.map +1 -1
  182. package/dist/forms/Form/index.d.ts.map +1 -1
  183. package/dist/forms/Form/index.js +17 -9
  184. package/dist/forms/Form/index.js.map +1 -1
  185. package/dist/forms/Form/rowHelpers.d.ts +17 -0
  186. package/dist/forms/Form/rowHelpers.d.ts.map +1 -0
  187. package/dist/forms/Form/rowHelpers.js +24 -0
  188. package/dist/forms/Form/rowHelpers.js.map +1 -0
  189. package/dist/forms/Form/types.d.ts +3 -10
  190. package/dist/forms/Form/types.d.ts.map +1 -1
  191. package/dist/forms/Form/types.js.map +1 -1
  192. package/dist/forms/RenderFields/index.scss +1 -1
  193. package/dist/forms/buildStateFromSchema/addFieldStatePromise.d.ts +1 -0
  194. package/dist/forms/buildStateFromSchema/addFieldStatePromise.d.ts.map +1 -1
  195. package/dist/forms/buildStateFromSchema/addFieldStatePromise.js +2 -1
  196. package/dist/forms/buildStateFromSchema/addFieldStatePromise.js.map +1 -1
  197. package/dist/forms/buildStateFromSchema/index.d.ts +1 -0
  198. package/dist/forms/buildStateFromSchema/index.d.ts.map +1 -1
  199. package/dist/forms/buildStateFromSchema/index.js +2 -1
  200. package/dist/forms/buildStateFromSchema/index.js.map +1 -1
  201. package/dist/forms/buildStateFromSchema/iterateFields.d.ts +2 -1
  202. package/dist/forms/buildStateFromSchema/iterateFields.d.ts.map +1 -1
  203. package/dist/forms/buildStateFromSchema/iterateFields.js +2 -1
  204. package/dist/forms/buildStateFromSchema/iterateFields.js.map +1 -1
  205. package/dist/forms/useField/index.d.ts.map +1 -1
  206. package/dist/forms/useField/index.js +14 -7
  207. package/dist/forms/useField/index.js.map +1 -1
  208. package/dist/forms/useField/types.d.ts +2 -2
  209. package/dist/forms/useField/types.d.ts.map +1 -1
  210. package/dist/forms/useField/types.js.map +1 -1
  211. package/dist/icons/Calendar/index.d.ts.map +1 -1
  212. package/dist/icons/Calendar/index.js +8 -33
  213. package/dist/icons/Calendar/index.js.map +1 -1
  214. package/dist/icons/Calendar/index.scss +1 -1
  215. package/dist/icons/Check/index.d.ts.map +1 -1
  216. package/dist/icons/Check/index.js +8 -17
  217. package/dist/icons/Check/index.js.map +1 -1
  218. package/dist/icons/Check/index.scss +1 -1
  219. package/dist/icons/Chevron/index.js +5 -4
  220. package/dist/icons/Chevron/index.js.map +1 -1
  221. package/dist/icons/Chevron/index.scss +2 -5
  222. package/dist/icons/CloseMenu/index.d.ts.map +1 -1
  223. package/dist/icons/CloseMenu/index.js +8 -22
  224. package/dist/icons/CloseMenu/index.js.map +1 -1
  225. package/dist/icons/CloseMenu/index.scss +2 -2
  226. package/dist/icons/CodeBlock/index.d.ts.map +1 -1
  227. package/dist/icons/CodeBlock/index.js +8 -14
  228. package/dist/icons/CodeBlock/index.js.map +1 -1
  229. package/dist/icons/Copy/index.d.ts.map +1 -1
  230. package/dist/icons/Copy/index.js +12 -16
  231. package/dist/icons/Copy/index.js.map +1 -1
  232. package/dist/icons/Copy/index.scss +1 -1
  233. package/dist/icons/DragHandle/index.d.ts.map +1 -1
  234. package/dist/icons/DragHandle/index.js +19 -25
  235. package/dist/icons/DragHandle/index.js.map +1 -1
  236. package/dist/icons/DragHandle/index.scss +2 -0
  237. package/dist/icons/Edit/index.d.ts.map +1 -1
  238. package/dist/icons/Edit/index.js +8 -21
  239. package/dist/icons/Edit/index.js.map +1 -1
  240. package/dist/icons/Edit/index.scss +3 -3
  241. package/dist/icons/Line/index.d.ts.map +1 -1
  242. package/dist/icons/Line/index.js +7 -6
  243. package/dist/icons/Line/index.js.map +1 -1
  244. package/dist/icons/Line/index.scss +1 -1
  245. package/dist/icons/Link/index.d.ts.map +1 -1
  246. package/dist/icons/Link/index.js +11 -14
  247. package/dist/icons/Link/index.js.map +1 -1
  248. package/dist/icons/Link/index.scss +1 -1
  249. package/dist/icons/LogOut/index.d.ts.map +1 -1
  250. package/dist/icons/LogOut/index.js +9 -24
  251. package/dist/icons/LogOut/index.js.map +1 -1
  252. package/dist/icons/LogOut/index.scss +1 -1
  253. package/dist/icons/Menu/index.d.ts.map +1 -1
  254. package/dist/icons/Menu/index.js +10 -28
  255. package/dist/icons/Menu/index.js.map +1 -1
  256. package/dist/icons/Menu/index.scss +3 -2
  257. package/dist/icons/MinimizeMaximize/index.d.ts.map +1 -1
  258. package/dist/icons/MinimizeMaximize/index.js +8 -35
  259. package/dist/icons/MinimizeMaximize/index.js.map +1 -1
  260. package/dist/icons/More/index.d.ts.map +1 -1
  261. package/dist/icons/More/index.js +10 -13
  262. package/dist/icons/More/index.js.map +1 -1
  263. package/dist/icons/More/index.scss +1 -0
  264. package/dist/icons/Plus/index.d.ts.map +1 -1
  265. package/dist/icons/Plus/index.js +10 -20
  266. package/dist/icons/Plus/index.js.map +1 -1
  267. package/dist/icons/Plus/index.scss +1 -1
  268. package/dist/icons/Search/index.d.ts.map +1 -1
  269. package/dist/icons/Search/index.js +8 -18
  270. package/dist/icons/Search/index.js.map +1 -1
  271. package/dist/icons/Search/index.scss +1 -1
  272. package/dist/icons/Swap/index.d.ts.map +1 -1
  273. package/dist/icons/Swap/index.js +8 -28
  274. package/dist/icons/Swap/index.js.map +1 -1
  275. package/dist/icons/Swap/index.scss +2 -2
  276. package/dist/icons/X/index.d.ts.map +1 -1
  277. package/dist/icons/X/index.js +10 -21
  278. package/dist/icons/X/index.js.map +1 -1
  279. package/dist/icons/X/index.scss +3 -3
  280. package/dist/providers/ComponentMap/buildComponentMap/collections.d.ts +2 -1
  281. package/dist/providers/ComponentMap/buildComponentMap/collections.d.ts.map +1 -1
  282. package/dist/providers/ComponentMap/buildComponentMap/collections.js +2 -1
  283. package/dist/providers/ComponentMap/buildComponentMap/collections.js.map +1 -1
  284. package/dist/providers/ComponentMap/buildComponentMap/fields.d.ts +2 -1
  285. package/dist/providers/ComponentMap/buildComponentMap/fields.d.ts.map +1 -1
  286. package/dist/providers/ComponentMap/buildComponentMap/fields.js +21 -24
  287. package/dist/providers/ComponentMap/buildComponentMap/fields.js.map +1 -1
  288. package/dist/providers/ComponentMap/buildComponentMap/globals.d.ts +2 -1
  289. package/dist/providers/ComponentMap/buildComponentMap/globals.d.ts.map +1 -1
  290. package/dist/providers/ComponentMap/buildComponentMap/globals.js +2 -1
  291. package/dist/providers/ComponentMap/buildComponentMap/globals.js.map +1 -1
  292. package/dist/providers/ComponentMap/buildComponentMap/index.d.ts.map +1 -1
  293. package/dist/providers/ComponentMap/buildComponentMap/index.js +2 -0
  294. package/dist/providers/ComponentMap/buildComponentMap/index.js.map +1 -1
  295. package/dist/providers/ListQuery/index.d.ts +16 -9
  296. package/dist/providers/ListQuery/index.d.ts.map +1 -1
  297. package/dist/providers/ListQuery/index.js +8 -6
  298. package/dist/providers/ListQuery/index.js.map +1 -1
  299. package/dist/providers/Params/index.d.ts +2 -1
  300. package/dist/providers/Params/index.d.ts.map +1 -1
  301. package/dist/providers/Params/index.js.map +1 -1
  302. package/dist/scss/app.scss +2 -1
  303. package/dist/scss/toasts.scss +10 -3
  304. package/dist/scss/type.scss +14 -23
  305. package/dist/scss/vars.scss +26 -47
  306. package/dist/styles.css +1 -1
  307. package/dist/utilities/buildFieldSchemaMap/index.d.ts.map +1 -1
  308. package/dist/utilities/buildFieldSchemaMap/index.js +24 -0
  309. package/dist/utilities/buildFieldSchemaMap/index.js.map +1 -1
  310. package/dist/utilities/buildFormState.d.ts.map +1 -1
  311. package/dist/utilities/buildFormState.js +18 -9
  312. package/dist/utilities/buildFormState.js.map +1 -1
  313. package/dist/utilities/formatAdminURL.d.ts +1 -0
  314. package/dist/utilities/formatAdminURL.d.ts.map +1 -1
  315. package/dist/utilities/formatAdminURL.js +4 -4
  316. package/dist/utilities/formatAdminURL.js.map +1 -1
  317. package/package.json +7 -7
  318. package/dist/exports/client/chunk-WDFUZ6GL.js +0 -30
  319. /package/dist/exports/client/{DatePicker-5IFHNQHA.js.map → DatePicker-XJHHMZP7.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/fields/Password/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientValidate, Description, FormFieldBase , Validate } from 'payload'\n\nimport React, { useCallback } from 'react'\n\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { FieldError } from '../FieldError/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\n\nexport type PasswordFieldProps = {\n autoComplete?: string\n className?: string\n description?: Description\n disabled?: boolean\n name: string\n path?: string\n required?: boolean\n style?: React.CSSProperties\n validate?: Validate\n width?: string\n} & FormFieldBase\n\nconst PasswordFieldComponent: React.FC<PasswordFieldProps> = (props) => {\n const {\n name,\n CustomError,\n CustomLabel,\n autoComplete,\n className,\n disabled: disabledFromProps,\n errorProps,\n label,\n labelProps,\n path: pathFromProps,\n required,\n style,\n validate,\n width,\n } = props\n\n const memoizedValidate: ClientValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n },\n [validate, required],\n )\n\n const { formInitializing, formProcessing, path, setValue, showError, value } = useField({\n path: pathFromProps || name,\n validate: memoizedValidate,\n })\n\n const disabled = disabledFromProps || formInitializing || formProcessing\n\n return (\n <div\n className={[\n fieldBaseClass,\n 'password',\n className,\n showError && 'error',\n disabled && '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} path={path} {...(errorProps || {})} />\n <input\n autoComplete={autoComplete}\n disabled={disabled}\n id={`field-${path.replace(/\\./g, '__')}`}\n name={path}\n onChange={setValue}\n type=\"password\"\n value={(value as string) || ''}\n />\n </div>\n </div>\n )\n}\n\nexport const PasswordField = withCondition(PasswordFieldComponent)\n"],"names":["React","useCallback","useField","withCondition","FieldError","FieldLabel","fieldBaseClass","PasswordFieldComponent","props","name","CustomError","CustomLabel","autoComplete","className","disabled","disabledFromProps","errorProps","label","labelProps","path","pathFromProps","required","style","validate","width","memoizedValidate","value","options","formInitializing","formProcessing","setValue","showError","div","filter","Boolean","join","input","id","replace","onChange","type","PasswordField"],"mappings":"AAAA;;AAGA,OAAOA,SAASC,WAAW,QAAQ,QAAO;AAE1C,SAASC,QAAQ,QAAQ,gCAA+B;AACxD,SAASC,aAAa,QAAQ,qCAAoC;AAClE,SAASC,UAAU,QAAQ,yBAAwB;AACnD,SAASC,UAAU,QAAQ,yBAAwB;AACnD,SAASC,cAAc,QAAQ,qBAAoB;AACnD,OAAO,eAAc;AAerB,MAAMC,yBAAuD,CAACC;IAC5D,MAAM,EACJC,IAAI,EACJC,WAAW,EACXC,WAAW,EACXC,YAAY,EACZC,SAAS,EACTC,UAAUC,iBAAiB,EAC3BC,UAAU,EACVC,KAAK,EACLC,UAAU,EACVC,MAAMC,aAAa,EACnBC,QAAQ,EACRC,KAAK,EACLC,QAAQ,EACRC,KAAK,EACN,GAAGhB;IAEJ,MAAMiB,mBAAmCxB,YACvC,CAACyB,OAAOC;QACN,IAAI,OAAOJ,aAAa,YAAY;YAClC,OAAOA,SAASG,OAAO;gBAAE,GAAGC,OAAO;gBAAEN;YAAS;QAChD;IACF,GACA;QAACE;QAAUF;KAAS;IAGtB,MAAM,EAAEO,gBAAgB,EAAEC,cAAc,EAAEV,IAAI,EAAEW,QAAQ,EAAEC,SAAS,EAAEL,KAAK,EAAE,GAAGxB,SAAS;QACtFiB,MAAMC,iBAAiBX;QACvBc,UAAUE;IACZ;IAEA,MAAMX,WAAWC,qBAAqBa,oBAAoBC;IAE1D,qBACE,MAACG;QACCnB,WAAW;YACTP;YACA;YACAO;YACAkB,aAAa;YACbjB,YAAY;SACb,CACEmB,MAAM,CAACC,SACPC,IAAI,CAAC;QACRb,OAAO;YACL,GAAGA,KAAK;YACRE;QACF;;0BAEA,KAACnB;gBACCM,aAAaA;gBACbM,OAAOA;gBACPI,UAAUA;gBACT,GAAIH,cAAc,CAAC,CAAC;;0BAEvB,MAACc;gBAAInB,WAAW,CAAC,EAAEP,eAAe,MAAM,CAAC;;kCACvC,KAACF;wBAAWM,aAAaA;wBAAaS,MAAMA;wBAAO,GAAIH,cAAc,CAAC,CAAC;;kCACvE,KAACoB;wBACCxB,cAAcA;wBACdE,UAAUA;wBACVuB,IAAI,CAAC,MAAM,EAAElB,KAAKmB,OAAO,CAAC,OAAO,MAAM,CAAC;wBACxC7B,MAAMU;wBACNoB,UAAUT;wBACVU,MAAK;wBACLd,OAAO,AAACA,SAAoB;;;;;;AAKtC;AAEA,OAAO,MAAMe,gBAAgBtC,cAAcI,wBAAuB"}
1
+ {"version":3,"sources":["../../../src/fields/Password/index.tsx"],"sourcesContent":["'use client'\nimport type { Description, PasswordFieldValidation, PayloadRequest, Validate } from 'payload'\n\nimport { useConfig, useLocale, useTranslation } from '@payloadcms/ui'\nimport { password } from 'payload/shared'\nimport React, { useCallback } from 'react'\n\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { isFieldRTL } from '../shared/index.js'\nimport './index.scss'\nimport { PasswordInput } from './input.js'\n\nexport type PasswordFieldProps = {\n AfterInput?: React.ReactElement\n BeforeInput?: React.ReactElement\n CustomDescription?: React.ReactElement\n CustomError?: React.ReactElement\n CustomLabel?: React.ReactElement\n autoComplete?: string\n className?: string\n description?: Description\n disabled?: boolean\n errorProps?: any // unknown type\n inputRef?: React.RefObject<HTMLInputElement>\n label?: string\n labelProps?: any // unknown type\n name: string\n path?: string\n placeholder?: string\n required?: boolean\n rtl?: boolean\n style?: React.CSSProperties\n validate?: PasswordFieldValidation\n width?: string\n}\n\nconst PasswordFieldComponent: React.FC<PasswordFieldProps> = (props) => {\n const {\n name,\n AfterInput,\n BeforeInput,\n CustomDescription,\n CustomError,\n CustomLabel,\n autoComplete,\n className,\n disabled: disabledFromProps,\n errorProps,\n inputRef,\n label,\n labelProps,\n path: pathFromProps,\n placeholder,\n required,\n rtl,\n style,\n validate,\n width,\n } = props\n\n const { t } = useTranslation()\n const locale = useLocale()\n const config = useConfig()\n\n const memoizedValidate: PasswordFieldValidation = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n\n return password(value, {\n name: 'password',\n type: 'text',\n data: {},\n preferences: { fields: {} },\n req: {\n payload: {\n config,\n },\n t,\n } as PayloadRequest,\n required: true,\n siblingData: {},\n })\n },\n [validate, config, t, required],\n )\n\n const { formInitializing, formProcessing, path, setValue, showError, value } = useField({\n path: pathFromProps || name,\n validate: memoizedValidate,\n })\n\n const disabled = disabledFromProps || formInitializing || formProcessing\n\n const renderRTL = isFieldRTL({\n fieldLocalized: false,\n fieldRTL: rtl,\n locale,\n localizationConfig: config.localization || undefined,\n })\n\n return (\n <PasswordInput\n AfterInput={AfterInput}\n BeforeInput={BeforeInput}\n CustomDescription={CustomDescription}\n CustomError={CustomError}\n CustomLabel={CustomLabel}\n autoComplete={autoComplete}\n className={className}\n errorProps={errorProps}\n inputRef={inputRef}\n label={label}\n labelProps={labelProps}\n onChange={(e) => {\n setValue(e.target.value)\n }}\n path={path}\n placeholder={placeholder}\n readOnly={disabled}\n required={required}\n rtl={renderRTL}\n showError={showError}\n style={style}\n value={(value as string) || ''}\n width={width}\n />\n )\n}\n\nexport const PasswordField = withCondition(PasswordFieldComponent)\n"],"names":["useConfig","useLocale","useTranslation","password","React","useCallback","useField","withCondition","isFieldRTL","PasswordInput","PasswordFieldComponent","props","name","AfterInput","BeforeInput","CustomDescription","CustomError","CustomLabel","autoComplete","className","disabled","disabledFromProps","errorProps","inputRef","label","labelProps","path","pathFromProps","placeholder","required","rtl","style","validate","width","t","locale","config","memoizedValidate","value","options","type","data","preferences","fields","req","payload","siblingData","formInitializing","formProcessing","setValue","showError","renderRTL","fieldLocalized","fieldRTL","localizationConfig","localization","undefined","onChange","e","target","readOnly","PasswordField"],"mappings":"AAAA;;AAGA,SAASA,SAAS,EAAEC,SAAS,EAAEC,cAAc,QAAQ,iBAAgB;AACrE,SAASC,QAAQ,QAAQ,iBAAgB;AACzC,OAAOC,SAASC,WAAW,QAAQ,QAAO;AAE1C,SAASC,QAAQ,QAAQ,gCAA+B;AACxD,SAASC,aAAa,QAAQ,qCAAoC;AAClE,SAASC,UAAU,QAAQ,qBAAoB;AAC/C,OAAO,eAAc;AACrB,SAASC,aAAa,QAAQ,aAAY;AA0B1C,MAAMC,yBAAuD,CAACC;IAC5D,MAAM,EACJC,IAAI,EACJC,UAAU,EACVC,WAAW,EACXC,iBAAiB,EACjBC,WAAW,EACXC,WAAW,EACXC,YAAY,EACZC,SAAS,EACTC,UAAUC,iBAAiB,EAC3BC,UAAU,EACVC,QAAQ,EACRC,KAAK,EACLC,UAAU,EACVC,MAAMC,aAAa,EACnBC,WAAW,EACXC,QAAQ,EACRC,GAAG,EACHC,KAAK,EACLC,QAAQ,EACRC,KAAK,EACN,GAAGtB;IAEJ,MAAM,EAAEuB,CAAC,EAAE,GAAGhC;IACd,MAAMiC,SAASlC;IACf,MAAMmC,SAASpC;IAEf,MAAMqC,mBAA4ChC,YAChD,CAACiC,OAAOC;QACN,IAAI,OAAOP,aAAa,YAAY;YAClC,OAAOA,SAASM,OAAO;gBAAE,GAAGC,OAAO;gBAAEV;YAAS;QAChD;QAEA,OAAO1B,SAASmC,OAAO;YACrB1B,MAAM;YACN4B,MAAM;YACNC,MAAM,CAAC;YACPC,aAAa;gBAAEC,QAAQ,CAAC;YAAE;YAC1BC,KAAK;gBACHC,SAAS;oBACPT;gBACF;gBACAF;YACF;YACAL,UAAU;YACViB,aAAa,CAAC;QAChB;IACF,GACA;QAACd;QAAUI;QAAQF;QAAGL;KAAS;IAGjC,MAAM,EAAEkB,gBAAgB,EAAEC,cAAc,EAAEtB,IAAI,EAAEuB,QAAQ,EAAEC,SAAS,EAAEZ,KAAK,EAAE,GAAGhC,SAAS;QACtFoB,MAAMC,iBAAiBf;QACvBoB,UAAUK;IACZ;IAEA,MAAMjB,WAAWC,qBAAqB0B,oBAAoBC;IAE1D,MAAMG,YAAY3C,WAAW;QAC3B4C,gBAAgB;QAChBC,UAAUvB;QACVK;QACAmB,oBAAoBlB,OAAOmB,YAAY,IAAIC;IAC7C;IAEA,qBACE,KAAC/C;QACCI,YAAYA;QACZC,aAAaA;QACbC,mBAAmBA;QACnBC,aAAaA;QACbC,aAAaA;QACbC,cAAcA;QACdC,WAAWA;QACXG,YAAYA;QACZC,UAAUA;QACVC,OAAOA;QACPC,YAAYA;QACZgC,UAAU,CAACC;YACTT,SAASS,EAAEC,MAAM,CAACrB,KAAK;QACzB;QACAZ,MAAMA;QACNE,aAAaA;QACbgC,UAAUxC;QACVS,UAAUA;QACVC,KAAKqB;QACLD,WAAWA;QACXnB,OAAOA;QACPO,OAAO,AAACA,SAAoB;QAC5BL,OAAOA;;AAGb;AAEA,OAAO,MAAM4B,gBAAgBtD,cAAcG,wBAAuB"}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import type { PasswordInputProps } from './types.js';
3
+ import './index.scss';
4
+ export declare const PasswordInput: React.FC<PasswordInputProps>;
5
+ //# sourceMappingURL=input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../src/fields/Password/input.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAKpD,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAyEtD,CAAA"}
@@ -0,0 +1,65 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import React from 'react';
4
+ import { FieldError } from '../FieldError/index.js';
5
+ import { FieldLabel } from '../FieldLabel/index.js';
6
+ import { fieldBaseClass } from '../shared/index.js';
7
+ import './index.scss';
8
+ export const PasswordInput = (props)=>{
9
+ const { AfterInput, BeforeInput, CustomDescription, CustomError, CustomLabel, autoComplete = 'off', className, errorProps, inputRef, label, labelProps, onChange, onKeyDown, path, placeholder, readOnly, required, rtl, showError, style, value, width } = props;
10
+ return /*#__PURE__*/ _jsxs("div", {
11
+ className: [
12
+ fieldBaseClass,
13
+ 'password',
14
+ className,
15
+ showError && 'error',
16
+ readOnly && 'read-only'
17
+ ].filter(Boolean).join(' '),
18
+ style: {
19
+ ...style,
20
+ width
21
+ },
22
+ children: [
23
+ /*#__PURE__*/ _jsx(FieldLabel, {
24
+ CustomLabel: CustomLabel,
25
+ htmlFor: `field-${path.replace(/\./g, '__')}`,
26
+ label: label,
27
+ required: required,
28
+ ...labelProps || {}
29
+ }),
30
+ /*#__PURE__*/ _jsxs("div", {
31
+ className: `${fieldBaseClass}__wrap`,
32
+ children: [
33
+ /*#__PURE__*/ _jsx(FieldError, {
34
+ CustomError: CustomError,
35
+ path: path,
36
+ ...errorProps || {}
37
+ }),
38
+ /*#__PURE__*/ _jsxs("div", {
39
+ children: [
40
+ BeforeInput !== undefined && BeforeInput,
41
+ /*#__PURE__*/ _jsx("input", {
42
+ "aria-label": label,
43
+ autoComplete: autoComplete,
44
+ "data-rtl": rtl,
45
+ disabled: readOnly,
46
+ id: `field-${path.replace(/\./g, '__')}`,
47
+ name: path,
48
+ onChange: onChange,
49
+ onKeyDown: onKeyDown,
50
+ placeholder: placeholder,
51
+ ref: inputRef,
52
+ type: "password",
53
+ value: value || ''
54
+ }),
55
+ AfterInput !== undefined && AfterInput
56
+ ]
57
+ }),
58
+ CustomDescription !== undefined && CustomDescription
59
+ ]
60
+ })
61
+ ]
62
+ });
63
+ };
64
+
65
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/fields/Password/input.tsx"],"sourcesContent":["'use client'\nimport type { ChangeEvent } from 'react'\n\nimport React from 'react'\n\nimport type { PasswordInputProps } from './types.js'\n\nimport { FieldError } from '../FieldError/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\n\nexport const PasswordInput: React.FC<PasswordInputProps> = (props) => {\n const {\n AfterInput,\n BeforeInput,\n CustomDescription,\n CustomError,\n CustomLabel,\n autoComplete = 'off',\n className,\n errorProps,\n inputRef,\n label,\n labelProps,\n onChange,\n onKeyDown,\n path,\n placeholder,\n readOnly,\n required,\n rtl,\n showError,\n style,\n value,\n width,\n } = props\n\n return (\n <div\n className={[\n fieldBaseClass,\n 'password',\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 htmlFor={`field-${path.replace(/\\./g, '__')}`}\n label={label}\n required={required}\n {...(labelProps || {})}\n />\n <div className={`${fieldBaseClass}__wrap`}>\n <FieldError CustomError={CustomError} path={path} {...(errorProps || {})} />\n <div>\n {BeforeInput !== undefined && BeforeInput}\n <input\n aria-label={label}\n autoComplete={autoComplete}\n data-rtl={rtl}\n disabled={readOnly}\n id={`field-${path.replace(/\\./g, '__')}`}\n name={path}\n onChange={onChange as (e: ChangeEvent<HTMLInputElement>) => void}\n onKeyDown={onKeyDown}\n placeholder={placeholder}\n ref={inputRef}\n type=\"password\"\n value={value || ''}\n />\n {AfterInput !== undefined && AfterInput}\n </div>\n {CustomDescription !== undefined && CustomDescription}\n </div>\n </div>\n )\n}\n"],"names":["React","FieldError","FieldLabel","fieldBaseClass","PasswordInput","props","AfterInput","BeforeInput","CustomDescription","CustomError","CustomLabel","autoComplete","className","errorProps","inputRef","label","labelProps","onChange","onKeyDown","path","placeholder","readOnly","required","rtl","showError","style","value","width","div","filter","Boolean","join","htmlFor","replace","undefined","input","aria-label","data-rtl","disabled","id","name","ref","type"],"mappings":"AAAA;;AAGA,OAAOA,WAAW,QAAO;AAIzB,SAASC,UAAU,QAAQ,yBAAwB;AACnD,SAASC,UAAU,QAAQ,yBAAwB;AACnD,SAASC,cAAc,QAAQ,qBAAoB;AACnD,OAAO,eAAc;AAErB,OAAO,MAAMC,gBAA8C,CAACC;IAC1D,MAAM,EACJC,UAAU,EACVC,WAAW,EACXC,iBAAiB,EACjBC,WAAW,EACXC,WAAW,EACXC,eAAe,KAAK,EACpBC,SAAS,EACTC,UAAU,EACVC,QAAQ,EACRC,KAAK,EACLC,UAAU,EACVC,QAAQ,EACRC,SAAS,EACTC,IAAI,EACJC,WAAW,EACXC,QAAQ,EACRC,QAAQ,EACRC,GAAG,EACHC,SAAS,EACTC,KAAK,EACLC,KAAK,EACLC,KAAK,EACN,GAAGtB;IAEJ,qBACE,MAACuB;QACChB,WAAW;YACTT;YACA;YACAS;YACAY,aAAa;YACbH,YAAY;SACb,CACEQ,MAAM,CAACC,SACPC,IAAI,CAAC;QACRN,OAAO;YACL,GAAGA,KAAK;YACRE;QACF;;0BAEA,KAACzB;gBACCQ,aAAaA;gBACbsB,SAAS,CAAC,MAAM,EAAEb,KAAKc,OAAO,CAAC,OAAO,MAAM,CAAC;gBAC7ClB,OAAOA;gBACPO,UAAUA;gBACT,GAAIN,cAAc,CAAC,CAAC;;0BAEvB,MAACY;gBAAIhB,WAAW,CAAC,EAAET,eAAe,MAAM,CAAC;;kCACvC,KAACF;wBAAWQ,aAAaA;wBAAaU,MAAMA;wBAAO,GAAIN,cAAc,CAAC,CAAC;;kCACvE,MAACe;;4BACErB,gBAAgB2B,aAAa3B;0CAC9B,KAAC4B;gCACCC,cAAYrB;gCACZJ,cAAcA;gCACd0B,YAAUd;gCACVe,UAAUjB;gCACVkB,IAAI,CAAC,MAAM,EAAEpB,KAAKc,OAAO,CAAC,OAAO,MAAM,CAAC;gCACxCO,MAAMrB;gCACNF,UAAUA;gCACVC,WAAWA;gCACXE,aAAaA;gCACbqB,KAAK3B;gCACL4B,MAAK;gCACLhB,OAAOA,SAAS;;4BAEjBpB,eAAe4B,aAAa5B;;;oBAE9BE,sBAAsB0B,aAAa1B;;;;;AAI5C,EAAC"}
@@ -0,0 +1,27 @@
1
+ import type { ErrorProps, LabelProps } from 'payload';
2
+ import type { ChangeEvent } from 'react';
3
+ export type PasswordInputProps = {
4
+ AfterInput?: React.ReactElement;
5
+ BeforeInput?: React.ReactElement;
6
+ CustomDescription?: React.ReactElement;
7
+ CustomError?: React.ReactElement;
8
+ CustomLabel?: React.ReactElement;
9
+ autoComplete?: string;
10
+ className?: string;
11
+ errorProps: ErrorProps;
12
+ inputRef?: React.RefObject<HTMLInputElement>;
13
+ label: string;
14
+ labelProps: LabelProps;
15
+ onChange?: (e: ChangeEvent<HTMLInputElement>) => void;
16
+ onKeyDown?: React.KeyboardEventHandler<HTMLInputElement>;
17
+ path: string;
18
+ placeholder?: string;
19
+ readOnly?: boolean;
20
+ required?: boolean;
21
+ rtl?: boolean;
22
+ showError?: boolean;
23
+ style?: React.CSSProperties;
24
+ value?: string;
25
+ width?: string;
26
+ };
27
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/fields/Password/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AACxC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,CAAC,EAAE,KAAK,CAAC,YAAY,CAAA;IAC/B,WAAW,CAAC,EAAE,KAAK,CAAC,YAAY,CAAA;IAChC,iBAAiB,CAAC,EAAE,KAAK,CAAC,YAAY,CAAA;IACtC,WAAW,CAAC,EAAE,KAAK,CAAC,YAAY,CAAA;IAChC,WAAW,CAAC,EAAE,KAAK,CAAC,YAAY,CAAA;IAChC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,UAAU,CAAA;IACtB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAA;IAC5C,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,UAAU,CAAA;IACtB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAA;IACrD,SAAS,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAA;IACxD,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/fields/Password/types.ts"],"sourcesContent":["import type { ErrorProps, LabelProps } from 'payload'\nimport type { ChangeEvent } from 'react'\nexport type PasswordInputProps = {\n AfterInput?: React.ReactElement\n BeforeInput?: React.ReactElement\n CustomDescription?: React.ReactElement\n CustomError?: React.ReactElement\n CustomLabel?: React.ReactElement\n autoComplete?: string\n className?: string\n errorProps: ErrorProps\n inputRef?: React.RefObject<HTMLInputElement>\n label: string\n labelProps: LabelProps\n onChange?: (e: ChangeEvent<HTMLInputElement>) => void\n onKeyDown?: React.KeyboardEventHandler<HTMLInputElement>\n path: string\n placeholder?: string\n readOnly?: boolean\n required?: boolean\n rtl?: boolean\n showError?: boolean\n style?: React.CSSProperties\n value?: string\n width?: string\n}\n"],"names":[],"mappings":"AAEA,WAuBC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Point/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,eAAe,EAAE,MAAM,SAAS,CAAA;AAG9D,OAAO,KAAsB,MAAM,OAAO,CAAA;AAM1C,OAAO,cAAc,CAAA;AASrB,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA8IzD,CAAA;AAED,eAAO,MAAM,UAAU,2BAAqC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Point/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAwB,MAAM,SAAS,CAAA;AAGpE,OAAO,KAAsB,MAAM,OAAO,CAAA;AAM1C,OAAO,cAAc,CAAA;AASrB,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA8IzD,CAAA;AAED,eAAO,MAAM,UAAU,2BAAqC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/fields/Point/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientValidate, PointFieldProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback } from 'react'\n\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\n\nconst baseClass = 'point'\n\nimport { useFieldProps } from '../../forms/FieldPropsProvider/index.js'\nimport { FieldDescription } from '../FieldDescription/index.js'\nimport { FieldError } from '../FieldError/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\n\nexport const PointFieldComponent: React.FC<PointFieldProps> = (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 path: pathFromProps,\n placeholder,\n readOnly: readOnlyFromProps,\n required,\n step,\n style,\n validate,\n width,\n } = props\n\n const { i18n, t } = useTranslation()\n\n const memoizedValidate: ClientValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n },\n [validate, required],\n )\n\n const { path: pathFromContext, readOnly: readOnlyFromContext } = useFieldProps()\n const readOnly = readOnlyFromProps || readOnlyFromContext\n\n const {\n path,\n setValue,\n showError,\n value = [null, null],\n } = useField<[number, number]>({\n path: pathFromContext ?? pathFromProps ?? name,\n validate: memoizedValidate,\n })\n\n const handleChange = useCallback(\n (e, index: 0 | 1) => {\n let val = parseFloat(e.target.value)\n if (Number.isNaN(val)) {\n val = e.target.value\n }\n const coordinates = [...value]\n coordinates[index] = val\n setValue(coordinates)\n },\n [setValue, value],\n )\n\n const getCoordinateFieldLabel = (type: 'latitude' | 'longitude') => {\n const suffix = type === 'longitude' ? t('fields:longitude') : t('fields:latitude')\n const fieldLabel = label ? getTranslation(label, i18n) : ''\n\n return {\n ...labelProps,\n label: `${fieldLabel}${fieldLabel ? ' - ' : ''}${suffix}`,\n }\n }\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n showError && 'error',\n readOnly && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')}\n style={{\n ...style,\n width,\n }}\n >\n <ul className={`${baseClass}__wrap`}>\n <li>\n {CustomLabel !== undefined ? (\n CustomLabel\n ) : (\n <FieldLabel {...getCoordinateFieldLabel('longitude')} />\n )}\n <div className=\"input-wrapper\">\n {BeforeInput}\n {/* disable eslint rule because the label is dynamic */}\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n disabled={readOnly}\n id={`field-longitude-${path.replace(/\\./g, '__')}`}\n name={`${path}.longitude`}\n onChange={(e) => handleChange(e, 0)}\n placeholder={getTranslation(placeholder, i18n)}\n step={step}\n type=\"number\"\n value={value && typeof value[0] === 'number' ? value[0] : ''}\n />\n {AfterInput}\n </div>\n </li>\n <li>\n {CustomLabel !== undefined ? (\n CustomLabel\n ) : (\n <FieldLabel {...getCoordinateFieldLabel('latitude')} />\n )}\n <div className=\"input-wrapper\">\n <FieldError CustomError={CustomError} path={path} {...(errorProps || {})} />\n {BeforeInput}\n {/* disable eslint rule because the label is dynamic */}\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n disabled={readOnly}\n id={`field-latitude-${path.replace(/\\./g, '__')}`}\n name={`${path}.latitude`}\n onChange={(e) => handleChange(e, 1)}\n placeholder={getTranslation(placeholder, i18n)}\n step={step}\n type=\"number\"\n value={value && typeof value[1] === 'number' ? value[1] : ''}\n />\n {AfterInput}\n </div>\n </li>\n </ul>\n {CustomDescription !== undefined ? (\n CustomDescription\n ) : (\n <FieldDescription {...(descriptionProps || {})} />\n )}\n </div>\n )\n}\n\nexport const PointField = withCondition(PointFieldComponent)\n"],"names":["getTranslation","React","useCallback","useField","withCondition","useTranslation","fieldBaseClass","baseClass","useFieldProps","FieldDescription","FieldError","FieldLabel","PointFieldComponent","props","name","AfterInput","BeforeInput","CustomDescription","CustomError","CustomLabel","className","descriptionProps","errorProps","label","labelProps","path","pathFromProps","placeholder","readOnly","readOnlyFromProps","required","step","style","validate","width","i18n","t","memoizedValidate","value","options","pathFromContext","readOnlyFromContext","setValue","showError","handleChange","e","index","val","parseFloat","target","Number","isNaN","coordinates","getCoordinateFieldLabel","type","suffix","fieldLabel","div","filter","Boolean","join","ul","li","undefined","input","disabled","id","replace","onChange","PointField"],"mappings":"AAAA;;AAGA,SAASA,cAAc,QAAQ,2BAA0B;AACzD,OAAOC,SAASC,WAAW,QAAQ,QAAO;AAE1C,SAASC,QAAQ,QAAQ,gCAA+B;AACxD,SAASC,aAAa,QAAQ,qCAAoC;AAClE,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,cAAc,QAAQ,qBAAoB;AACnD,OAAO,eAAc;AAErB,MAAMC,YAAY;AAElB,SAASC,aAAa,QAAQ,0CAAyC;AACvE,SAASC,gBAAgB,QAAQ,+BAA8B;AAC/D,SAASC,UAAU,QAAQ,yBAAwB;AACnD,SAASC,UAAU,QAAQ,yBAAwB;AAEnD,OAAO,MAAMC,sBAAiD,CAACC;IAC7D,MAAM,EACJC,IAAI,EACJC,UAAU,EACVC,WAAW,EACXC,iBAAiB,EACjBC,WAAW,EACXC,WAAW,EACXC,SAAS,EACTC,gBAAgB,EAChBC,UAAU,EACVC,KAAK,EACLC,UAAU,EACVC,MAAMC,aAAa,EACnBC,WAAW,EACXC,UAAUC,iBAAiB,EAC3BC,QAAQ,EACRC,IAAI,EACJC,KAAK,EACLC,QAAQ,EACRC,KAAK,EACN,GAAGrB;IAEJ,MAAM,EAAEsB,IAAI,EAAEC,CAAC,EAAE,GAAG/B;IAEpB,MAAMgC,mBAAmCnC,YACvC,CAACoC,OAAOC;QACN,IAAI,OAAON,aAAa,YAAY;YAClC,OAAOA,SAASK,OAAO;gBAAE,GAAGC,OAAO;gBAAET;YAAS;QAChD;IACF,GACA;QAACG;QAAUH;KAAS;IAGtB,MAAM,EAAEL,MAAMe,eAAe,EAAEZ,UAAUa,mBAAmB,EAAE,GAAGjC;IACjE,MAAMoB,WAAWC,qBAAqBY;IAEtC,MAAM,EACJhB,IAAI,EACJiB,QAAQ,EACRC,SAAS,EACTL,QAAQ;QAAC;QAAM;KAAK,EACrB,GAAGnC,SAA2B;QAC7BsB,MAAMe,mBAAmBd,iBAAiBZ;QAC1CmB,UAAUI;IACZ;IAEA,MAAMO,eAAe1C,YACnB,CAAC2C,GAAGC;QACF,IAAIC,MAAMC,WAAWH,EAAEI,MAAM,CAACX,KAAK;QACnC,IAAIY,OAAOC,KAAK,CAACJ,MAAM;YACrBA,MAAMF,EAAEI,MAAM,CAACX,KAAK;QACtB;QACA,MAAMc,cAAc;eAAId;SAAM;QAC9Bc,WAAW,CAACN,MAAM,GAAGC;QACrBL,SAASU;IACX,GACA;QAACV;QAAUJ;KAAM;IAGnB,MAAMe,0BAA0B,CAACC;QAC/B,MAAMC,SAASD,SAAS,cAAclB,EAAE,sBAAsBA,EAAE;QAChE,MAAMoB,aAAajC,QAAQvB,eAAeuB,OAAOY,QAAQ;QAEzD,OAAO;YACL,GAAGX,UAAU;YACbD,OAAO,CAAC,EAAEiC,WAAW,EAAEA,aAAa,QAAQ,GAAG,EAAED,OAAO,CAAC;QAC3D;IACF;IAEA,qBACE,MAACE;QACCrC,WAAW;YACTd;YACAC;YACAa;YACAuB,aAAa;YACbf,YAAY;SACb,CACE8B,MAAM,CAACC,SACPC,IAAI,CAAC;QACR5B,OAAO;YACL,GAAGA,KAAK;YACRE;QACF;;0BAEA,MAAC2B;gBAAGzC,WAAW,CAAC,EAAEb,UAAU,MAAM,CAAC;;kCACjC,MAACuD;;4BACE3C,gBAAgB4C,YACf5C,4BAEA,KAACR;gCAAY,GAAG0C,wBAAwB,YAAY;;0CAEtD,MAACI;gCAAIrC,WAAU;;oCACZJ;kDAGD,KAACgD;wCACCC,UAAUrC;wCACVsC,IAAI,CAAC,gBAAgB,EAAEzC,KAAK0C,OAAO,CAAC,OAAO,MAAM,CAAC;wCAClDrD,MAAM,CAAC,EAAEW,KAAK,UAAU,CAAC;wCACzB2C,UAAU,CAACvB,IAAMD,aAAaC,GAAG;wCACjClB,aAAa3B,eAAe2B,aAAaQ;wCACzCJ,MAAMA;wCACNuB,MAAK;wCACLhB,OAAOA,SAAS,OAAOA,KAAK,CAAC,EAAE,KAAK,WAAWA,KAAK,CAAC,EAAE,GAAG;;oCAE3DvB;;;;;kCAGL,MAAC+C;;4BACE3C,gBAAgB4C,YACf5C,4BAEA,KAACR;gCAAY,GAAG0C,wBAAwB,WAAW;;0CAErD,MAACI;gCAAIrC,WAAU;;kDACb,KAACV;wCAAWQ,aAAaA;wCAAaO,MAAMA;wCAAO,GAAIH,cAAc,CAAC,CAAC;;oCACtEN;kDAGD,KAACgD;wCACCC,UAAUrC;wCACVsC,IAAI,CAAC,eAAe,EAAEzC,KAAK0C,OAAO,CAAC,OAAO,MAAM,CAAC;wCACjDrD,MAAM,CAAC,EAAEW,KAAK,SAAS,CAAC;wCACxB2C,UAAU,CAACvB,IAAMD,aAAaC,GAAG;wCACjClB,aAAa3B,eAAe2B,aAAaQ;wCACzCJ,MAAMA;wCACNuB,MAAK;wCACLhB,OAAOA,SAAS,OAAOA,KAAK,CAAC,EAAE,KAAK,WAAWA,KAAK,CAAC,EAAE,GAAG;;oCAE3DvB;;;;;;;YAINE,sBAAsB8C,YACrB9C,kCAEA,KAACR;gBAAkB,GAAIY,oBAAoB,CAAC,CAAC;;;;AAIrD,EAAC;AAED,OAAO,MAAMgD,aAAajE,cAAcQ,qBAAoB"}
1
+ {"version":3,"sources":["../../../src/fields/Point/index.tsx"],"sourcesContent":["'use client'\nimport type { PointFieldProps, PointFieldValidation } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback } from 'react'\n\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\n\nconst baseClass = 'point'\n\nimport { useFieldProps } from '../../forms/FieldPropsProvider/index.js'\nimport { FieldDescription } from '../FieldDescription/index.js'\nimport { FieldError } from '../FieldError/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\n\nexport const PointFieldComponent: React.FC<PointFieldProps> = (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 path: pathFromProps,\n placeholder,\n readOnly: readOnlyFromProps,\n required,\n step,\n style,\n validate,\n width,\n } = props\n\n const { i18n, t } = useTranslation()\n\n const memoizedValidate: PointFieldValidation = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n },\n [validate, required],\n )\n\n const { path: pathFromContext, readOnly: readOnlyFromContext } = useFieldProps()\n const readOnly = readOnlyFromProps || readOnlyFromContext\n\n const {\n path,\n setValue,\n showError,\n value = [null, null],\n } = useField<[number, number]>({\n path: pathFromContext ?? pathFromProps ?? name,\n validate: memoizedValidate,\n })\n\n const handleChange = useCallback(\n (e, index: 0 | 1) => {\n let val = parseFloat(e.target.value)\n if (Number.isNaN(val)) {\n val = e.target.value\n }\n const coordinates = [...value]\n coordinates[index] = val\n setValue(coordinates)\n },\n [setValue, value],\n )\n\n const getCoordinateFieldLabel = (type: 'latitude' | 'longitude') => {\n const suffix = type === 'longitude' ? t('fields:longitude') : t('fields:latitude')\n const fieldLabel = label ? getTranslation(label, i18n) : ''\n\n return {\n ...labelProps,\n label: `${fieldLabel}${fieldLabel ? ' - ' : ''}${suffix}`,\n }\n }\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n showError && 'error',\n readOnly && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')}\n style={{\n ...style,\n width,\n }}\n >\n <ul className={`${baseClass}__wrap`}>\n <li>\n {CustomLabel !== undefined ? (\n CustomLabel\n ) : (\n <FieldLabel {...getCoordinateFieldLabel('longitude')} />\n )}\n <div className=\"input-wrapper\">\n {BeforeInput}\n {/* disable eslint rule because the label is dynamic */}\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n disabled={readOnly}\n id={`field-longitude-${path.replace(/\\./g, '__')}`}\n name={`${path}.longitude`}\n onChange={(e) => handleChange(e, 0)}\n placeholder={getTranslation(placeholder, i18n)}\n step={step}\n type=\"number\"\n value={value && typeof value[0] === 'number' ? value[0] : ''}\n />\n {AfterInput}\n </div>\n </li>\n <li>\n {CustomLabel !== undefined ? (\n CustomLabel\n ) : (\n <FieldLabel {...getCoordinateFieldLabel('latitude')} />\n )}\n <div className=\"input-wrapper\">\n <FieldError CustomError={CustomError} path={path} {...(errorProps || {})} />\n {BeforeInput}\n {/* disable eslint rule because the label is dynamic */}\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n disabled={readOnly}\n id={`field-latitude-${path.replace(/\\./g, '__')}`}\n name={`${path}.latitude`}\n onChange={(e) => handleChange(e, 1)}\n placeholder={getTranslation(placeholder, i18n)}\n step={step}\n type=\"number\"\n value={value && typeof value[1] === 'number' ? value[1] : ''}\n />\n {AfterInput}\n </div>\n </li>\n </ul>\n {CustomDescription !== undefined ? (\n CustomDescription\n ) : (\n <FieldDescription {...(descriptionProps || {})} />\n )}\n </div>\n )\n}\n\nexport const PointField = withCondition(PointFieldComponent)\n"],"names":["getTranslation","React","useCallback","useField","withCondition","useTranslation","fieldBaseClass","baseClass","useFieldProps","FieldDescription","FieldError","FieldLabel","PointFieldComponent","props","name","AfterInput","BeforeInput","CustomDescription","CustomError","CustomLabel","className","descriptionProps","errorProps","label","labelProps","path","pathFromProps","placeholder","readOnly","readOnlyFromProps","required","step","style","validate","width","i18n","t","memoizedValidate","value","options","pathFromContext","readOnlyFromContext","setValue","showError","handleChange","e","index","val","parseFloat","target","Number","isNaN","coordinates","getCoordinateFieldLabel","type","suffix","fieldLabel","div","filter","Boolean","join","ul","li","undefined","input","disabled","id","replace","onChange","PointField"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fields/RadioGroup/Radio/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAG5D,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,CAAA;IACrC,MAAM,EAAE,YAAY,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CA0BA,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fields/RadioGroup/Radio/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAG5D,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,CAAA;IACrC,MAAM,EAAE,YAAY,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAiCA,CAAA"}
@@ -28,7 +28,10 @@ export const Radio = (props)=>{
28
28
  type: "radio"
29
29
  }),
30
30
  /*#__PURE__*/ _jsx("span", {
31
- className: `${baseClass}__styled-radio`
31
+ className: [
32
+ `${baseClass}__styled-radio`,
33
+ readOnly && `${baseClass}__styled-radio--disabled`
34
+ ].filter(Boolean).join(' ')
32
35
  }),
33
36
  /*#__PURE__*/ _jsx("span", {
34
37
  className: `${baseClass}__label`,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/fields/RadioGroup/Radio/index.tsx"],"sourcesContent":["'use client'\nimport type { OptionObject, RadioFieldProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport { useEditDepth } from '../../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'radio-input'\n\nexport const Radio: React.FC<{\n id: string\n isSelected: boolean\n onChange: RadioFieldProps['onChange']\n option: OptionObject\n path: string\n readOnly?: boolean\n uuid?: string\n}> = (props) => {\n const { isSelected, onChange, option, path, readOnly, uuid } = props\n const { i18n } = useTranslation()\n\n const editDepth = useEditDepth()\n\n const id = `field-${path}-${option.value}${editDepth > 1 ? `-${editDepth}` : ''}${uuid ? `-${uuid}` : ''}`\n\n return (\n <label htmlFor={id}>\n <div\n className={[baseClass, isSelected && `${baseClass}--is-selected`].filter(Boolean).join(' ')}\n >\n <input\n checked={isSelected}\n disabled={readOnly}\n id={id}\n name={path}\n onChange={() => (typeof onChange === 'function' ? onChange(option.value) : null)}\n type=\"radio\"\n />\n <span className={`${baseClass}__styled-radio`} />\n <span className={`${baseClass}__label`}>{getTranslation(option.label, i18n)}</span>\n </div>\n </label>\n )\n}\n"],"names":["getTranslation","React","useEditDepth","useTranslation","baseClass","Radio","props","isSelected","onChange","option","path","readOnly","uuid","i18n","editDepth","id","value","label","htmlFor","div","className","filter","Boolean","join","input","checked","disabled","name","type","span"],"mappings":"AAAA;;AAGA,SAASA,cAAc,QAAQ,2BAA0B;AACzD,OAAOC,WAAW,QAAO;AAEzB,SAASC,YAAY,QAAQ,wCAAuC;AACpE,SAASC,cAAc,QAAQ,0CAAyC;AACxE,OAAO,eAAc;AAErB,MAAMC,YAAY;AAElB,OAAO,MAAMC,QAQR,CAACC;IACJ,MAAM,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,IAAI,EAAE,GAAGN;IAC/D,MAAM,EAAEO,IAAI,EAAE,GAAGV;IAEjB,MAAMW,YAAYZ;IAElB,MAAMa,KAAK,CAAC,MAAM,EAAEL,KAAK,CAAC,EAAED,OAAOO,KAAK,CAAC,EAAEF,YAAY,IAAI,CAAC,CAAC,EAAEA,UAAU,CAAC,GAAG,GAAG,EAAEF,OAAO,CAAC,CAAC,EAAEA,KAAK,CAAC,GAAG,GAAG,CAAC;IAE1G,qBACE,KAACK;QAAMC,SAASH;kBACd,cAAA,MAACI;YACCC,WAAW;gBAAChB;gBAAWG,cAAc,CAAC,EAAEH,UAAU,aAAa,CAAC;aAAC,CAACiB,MAAM,CAACC,SAASC,IAAI,CAAC;;8BAEvF,KAACC;oBACCC,SAASlB;oBACTmB,UAAUf;oBACVI,IAAIA;oBACJY,MAAMjB;oBACNF,UAAU,IAAO,OAAOA,aAAa,aAAaA,SAASC,OAAOO,KAAK,IAAI;oBAC3EY,MAAK;;8BAEP,KAACC;oBAAKT,WAAW,CAAC,EAAEhB,UAAU,cAAc,CAAC;;8BAC7C,KAACyB;oBAAKT,WAAW,CAAC,EAAEhB,UAAU,OAAO,CAAC;8BAAGJ,eAAeS,OAAOQ,KAAK,EAAEJ;;;;;AAI9E,EAAC"}
1
+ {"version":3,"sources":["../../../../src/fields/RadioGroup/Radio/index.tsx"],"sourcesContent":["'use client'\nimport type { OptionObject, RadioFieldProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport { useEditDepth } from '../../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'radio-input'\n\nexport const Radio: React.FC<{\n id: string\n isSelected: boolean\n onChange: RadioFieldProps['onChange']\n option: OptionObject\n path: string\n readOnly?: boolean\n uuid?: string\n}> = (props) => {\n const { isSelected, onChange, option, path, readOnly, uuid } = props\n const { i18n } = useTranslation()\n\n const editDepth = useEditDepth()\n\n const id = `field-${path}-${option.value}${editDepth > 1 ? `-${editDepth}` : ''}${uuid ? `-${uuid}` : ''}`\n\n return (\n <label htmlFor={id}>\n <div\n className={[baseClass, isSelected && `${baseClass}--is-selected`].filter(Boolean).join(' ')}\n >\n <input\n checked={isSelected}\n disabled={readOnly}\n id={id}\n name={path}\n onChange={() => (typeof onChange === 'function' ? onChange(option.value) : null)}\n type=\"radio\"\n />\n <span\n className={[\n `${baseClass}__styled-radio`,\n readOnly && `${baseClass}__styled-radio--disabled`,\n ]\n .filter(Boolean)\n .join(' ')}\n />\n <span className={`${baseClass}__label`}>{getTranslation(option.label, i18n)}</span>\n </div>\n </label>\n )\n}\n"],"names":["getTranslation","React","useEditDepth","useTranslation","baseClass","Radio","props","isSelected","onChange","option","path","readOnly","uuid","i18n","editDepth","id","value","label","htmlFor","div","className","filter","Boolean","join","input","checked","disabled","name","type","span"],"mappings":"AAAA;;AAGA,SAASA,cAAc,QAAQ,2BAA0B;AACzD,OAAOC,WAAW,QAAO;AAEzB,SAASC,YAAY,QAAQ,wCAAuC;AACpE,SAASC,cAAc,QAAQ,0CAAyC;AACxE,OAAO,eAAc;AAErB,MAAMC,YAAY;AAElB,OAAO,MAAMC,QAQR,CAACC;IACJ,MAAM,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,IAAI,EAAE,GAAGN;IAC/D,MAAM,EAAEO,IAAI,EAAE,GAAGV;IAEjB,MAAMW,YAAYZ;IAElB,MAAMa,KAAK,CAAC,MAAM,EAAEL,KAAK,CAAC,EAAED,OAAOO,KAAK,CAAC,EAAEF,YAAY,IAAI,CAAC,CAAC,EAAEA,UAAU,CAAC,GAAG,GAAG,EAAEF,OAAO,CAAC,CAAC,EAAEA,KAAK,CAAC,GAAG,GAAG,CAAC;IAE1G,qBACE,KAACK;QAAMC,SAASH;kBACd,cAAA,MAACI;YACCC,WAAW;gBAAChB;gBAAWG,cAAc,CAAC,EAAEH,UAAU,aAAa,CAAC;aAAC,CAACiB,MAAM,CAACC,SAASC,IAAI,CAAC;;8BAEvF,KAACC;oBACCC,SAASlB;oBACTmB,UAAUf;oBACVI,IAAIA;oBACJY,MAAMjB;oBACNF,UAAU,IAAO,OAAOA,aAAa,aAAaA,SAASC,OAAOO,KAAK,IAAI;oBAC3EY,MAAK;;8BAEP,KAACC;oBACCT,WAAW;wBACT,CAAC,EAAEhB,UAAU,cAAc,CAAC;wBAC5BO,YAAY,CAAC,EAAEP,UAAU,wBAAwB,CAAC;qBACnD,CACEiB,MAAM,CAACC,SACPC,IAAI,CAAC;;8BAEV,KAACM;oBAAKT,WAAW,CAAC,EAAEhB,UAAU,OAAO,CAAC;8BAAGJ,eAAeS,OAAOQ,KAAK,EAAEJ;;;;;AAI9E,EAAC"}
@@ -18,7 +18,9 @@
18
18
  }
19
19
 
20
20
  &__styled-radio {
21
- @include formInput;
21
+ border: 1px solid var(--theme-border-color);
22
+ background-color: var(--theme-input-bg);
23
+ @include shadow-sm;
22
24
  width: $baseline;
23
25
  height: $baseline;
24
26
  position: relative;
@@ -31,11 +33,18 @@
31
33
  display: block;
32
34
  border-radius: 100%;
33
35
  background-color: var(--theme-elevation-800);
34
- width: calc(100% - 10px);
35
- height: calc(100% - 10px);
36
- border: 5px solid var(--theme-elevation-0);
36
+ width: calc(100% - 8px);
37
+ height: calc(100% - 8px);
38
+ border: 4px solid var(--theme-elevation-0);
37
39
  opacity: 0;
38
40
  }
41
+
42
+ &--disabled {
43
+ @include readOnly;
44
+ &::before {
45
+ border-color: var(--theme-elevation-100);
46
+ }
47
+ }
39
48
  }
40
49
 
41
50
  [dir='rtl'] &__label {
@@ -61,8 +70,6 @@
61
70
  &:hover {
62
71
  .radio-input {
63
72
  &__styled-radio {
64
- border-color: var(--theme-elevation-250);
65
-
66
73
  &:before {
67
74
  opacity: 0.2;
68
75
  }
@@ -36,6 +36,10 @@
36
36
  .radio-input {
37
37
  cursor: default;
38
38
 
39
+ &:hover {
40
+ border-color: var(--theme-elevation-50);
41
+ }
42
+
39
43
  &__label {
40
44
  color: var(--theme-elevation-400);
41
45
  }
@@ -43,7 +47,7 @@
43
47
  &--is-selected {
44
48
  .radio-input__styled-radio {
45
49
  &:before {
46
- background-color: var(--theme-elevation-100);
50
+ background-color: var(--theme-elevation-250);
47
51
  }
48
52
  }
49
53
  }
@@ -13,6 +13,9 @@
13
13
  &__add-button,
14
14
  &__add-button.doc-drawer__toggler {
15
15
  @include formInput;
16
+ margin: 0;
17
+ border-top-left-radius: 0;
18
+ border-bottom-left-radius: 0;
16
19
  position: relative;
17
20
  height: 100%;
18
21
  margin-left: -1px;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Relationship/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,sBAAsB,EAAS,MAAM,SAAS,CAAA;AAI3E,OAAO,KAA+D,MAAM,OAAO,CAAA;AAqBnF,OAAO,cAAc,CAAA;AAokBrB,eAAO,MAAM,iBAAiB,kCAA4C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Relationship/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,sBAAsB,EAAS,MAAM,SAAS,CAAA;AAI3E,OAAO,KAA+D,MAAM,OAAO,CAAA;AAqBnF,OAAO,cAAc,CAAA;AAqkBrB,eAAO,MAAM,iBAAiB,kCAA4C,CAAA"}
@@ -382,7 +382,8 @@ const RelationshipFieldComponent = (props)=>{
382
382
  className,
383
383
  showError && 'error',
384
384
  errorLoading && 'error-loading',
385
- readOnly && `${baseClass}--read-only`
385
+ readOnly && `${baseClass}--read-only`,
386
+ !readOnly && allowCreate && `${baseClass}--allow-create`
386
387
  ].filter(Boolean).join(' '),
387
388
  id: `field-${path.replace(/\./g, '__')}`,
388
389
  style: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/fields/Relationship/index.tsx"],"sourcesContent":["'use client'\nimport type { PaginatedDocs, RelationshipFieldProps, Where } from 'payload'\n\nimport { wordBoundariesRegex } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useReducer, useRef, useState } from 'react'\n\nimport type { DocumentDrawerProps } from '../../elements/DocumentDrawer/types.js'\nimport type { GetResults, Option, Value } from './types.js'\n\nimport { ReactSelect } from '../../elements/ReactSelect/index.js'\nimport { useFieldProps } from '../../forms/FieldPropsProvider/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useDebouncedCallback } from '../../hooks/useDebouncedCallback.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/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 { AddNewRelation } from './AddNew/index.js'\nimport { createRelationMap } from './createRelationMap.js'\nimport { findOptionsByValue } from './findOptionsByValue.js'\nimport './index.scss'\nimport { optionsReducer } from './optionsReducer.js'\nimport { MultiValueLabel } from './select-components/MultiValueLabel/index.js'\nimport { SingleValue } from './select-components/SingleValue/index.js'\n\nconst maxResultsPerRequest = 10\n\nconst baseClass = 'relationship'\n\nconst RelationshipFieldComponent: React.FC<RelationshipFieldProps> = (props) => {\n const {\n name,\n CustomDescription,\n CustomError,\n CustomLabel,\n allowCreate = true,\n className,\n descriptionProps,\n errorProps,\n hasMany,\n isSortable = true,\n label,\n labelProps,\n path: pathFromProps,\n readOnly: readOnlyFromProps,\n relationTo,\n required,\n sortOptions,\n style,\n validate,\n width,\n } = props\n\n const config = useConfig()\n\n const {\n collections,\n routes: { api },\n serverURL,\n } = config\n\n const { i18n, t } = useTranslation()\n const { permissions } = useAuth()\n const { code: locale } = useLocale()\n const hasMultipleRelations = Array.isArray(relationTo)\n const [options, dispatchOptions] = useReducer(optionsReducer, [])\n const [lastFullyLoadedRelation, setLastFullyLoadedRelation] = useState(-1)\n const [lastLoadedPage, setLastLoadedPage] = useState<Record<string, number>>({})\n const [errorLoading, setErrorLoading] = useState('')\n const [search, setSearch] = useState('')\n const [isLoading, setIsLoading] = useState(false)\n const [enableWordBoundarySearch, setEnableWordBoundarySearch] = useState(false)\n const menuIsOpen = useRef(false)\n const hasLoadedFirstPageRef = useRef(false)\n\n const memoizedValidate = useCallback(\n (value, validationOptions) => {\n if (typeof validate === 'function') {\n return validate(value, { ...validationOptions, required })\n }\n },\n [validate, required],\n )\n const { path: pathFromContext, readOnly: readOnlyFromContext } = useFieldProps()\n\n const {\n filterOptions,\n formInitializing,\n formProcessing,\n initialValue,\n path,\n setValue,\n showError,\n value,\n } = useField<Value | Value[]>({\n path: pathFromContext ?? pathFromProps ?? name,\n validate: memoizedValidate,\n })\n\n const readOnly = readOnlyFromProps || readOnlyFromContext || formInitializing\n\n const valueRef = useRef(value)\n valueRef.current = value\n\n const [drawerIsOpen, setDrawerIsOpen] = useState(false)\n\n const getResults: GetResults = useCallback(\n async ({\n lastFullyLoadedRelation: lastFullyLoadedRelationArg,\n lastLoadedPage: lastLoadedPageArg,\n onSuccess,\n search: searchArg,\n sort,\n value: valueArg,\n }) => {\n if (!permissions) {\n return\n }\n const lastFullyLoadedRelationToUse =\n typeof lastFullyLoadedRelationArg !== 'undefined' ? lastFullyLoadedRelationArg : -1\n\n const relations = Array.isArray(relationTo) ? relationTo : [relationTo]\n const relationsToFetch =\n lastFullyLoadedRelationToUse === -1\n ? relations\n : relations.slice(lastFullyLoadedRelationToUse + 1)\n\n let resultsFetched = 0\n const relationMap = createRelationMap({\n hasMany,\n relationTo,\n value: valueArg,\n })\n\n if (!errorLoading) {\n await relationsToFetch.reduce(async (priorRelation, relation) => {\n const relationFilterOption = filterOptions?.[relation]\n\n let lastLoadedPageToUse\n if (search !== searchArg) {\n lastLoadedPageToUse = 1\n } else {\n lastLoadedPageToUse = lastLoadedPageArg[relation] + 1\n }\n await priorRelation\n\n if (relationFilterOption === false) {\n setLastFullyLoadedRelation(relations.indexOf(relation))\n return Promise.resolve()\n }\n\n if (resultsFetched < 10) {\n const collection = collections.find((coll) => coll.slug === relation)\n const fieldToSearch = collection?.admin?.useAsTitle || 'id'\n let fieldToSort = collection?.defaultSort || 'id'\n if (typeof sortOptions === 'string') {\n fieldToSort = sortOptions\n } else if (sortOptions?.[relation]) {\n fieldToSort = sortOptions[relation]\n }\n\n const query: {\n [key: string]: unknown\n where: Where\n } = {\n depth: 0,\n draft: true,\n limit: maxResultsPerRequest,\n locale,\n page: lastLoadedPageToUse,\n sort: fieldToSort,\n where: {\n and: [\n {\n id: {\n not_in: relationMap[relation],\n },\n },\n ],\n },\n }\n\n if (searchArg) {\n query.where.and.push({\n [fieldToSearch]: {\n like: searchArg,\n },\n })\n }\n\n if (relationFilterOption && typeof relationFilterOption !== 'boolean') {\n query.where.and.push(relationFilterOption)\n }\n\n const response = await fetch(`${serverURL}${api}/${relation}`, {\n body: qs.stringify(query),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'X-HTTP-Method-Override': 'GET',\n },\n method: 'POST',\n })\n\n if (response.ok) {\n const data: PaginatedDocs<unknown> = await response.json()\n setLastLoadedPage((prevState) => {\n return {\n ...prevState,\n [relation]: lastLoadedPageToUse,\n }\n })\n\n if (!data.nextPage) {\n setLastFullyLoadedRelation(relations.indexOf(relation))\n }\n\n if (data.docs.length > 0) {\n resultsFetched += data.docs.length\n\n dispatchOptions({\n type: 'ADD',\n collection,\n // TODO: fix this\n // @ts-expect-error-next-line\n config,\n docs: data.docs,\n i18n,\n sort,\n })\n }\n } else if (response.status === 403) {\n setLastFullyLoadedRelation(relations.indexOf(relation))\n dispatchOptions({\n type: 'ADD',\n collection,\n // TODO: fix this\n // @ts-expect-error-next-line\n config,\n docs: [],\n i18n,\n ids: relationMap[relation],\n sort,\n })\n } else {\n setErrorLoading(t('error:unspecific'))\n }\n }\n }, Promise.resolve())\n\n if (typeof onSuccess === 'function') onSuccess()\n }\n },\n [\n permissions,\n relationTo,\n hasMany,\n errorLoading,\n search,\n collections,\n locale,\n filterOptions,\n serverURL,\n sortOptions,\n api,\n i18n,\n config,\n t,\n ],\n )\n\n const updateSearch = useDebouncedCallback((searchArg: string, valueArg: Value | Value[]) => {\n void getResults({ lastLoadedPage: {}, search: searchArg, sort: true, value: valueArg })\n setSearch(searchArg)\n }, 300)\n\n const handleInputChange = useCallback(\n (searchArg: string, valueArg: Value | Value[]) => {\n if (search !== searchArg) {\n setLastLoadedPage({})\n updateSearch(searchArg, valueArg, searchArg !== '')\n }\n },\n [search, updateSearch],\n )\n\n // ///////////////////////////////////\n // Ensure we have an option for each value\n // ///////////////////////////////////\n\n useEffect(() => {\n const relationMap = createRelationMap({\n hasMany,\n relationTo,\n value,\n })\n\n void Object.entries(relationMap).reduce(async (priorRelation, [relation, ids]) => {\n await priorRelation\n\n const idsToLoad = ids.filter((id) => {\n return !options.find((optionGroup) =>\n optionGroup?.options?.find(\n (option) => option.value === id && option.relationTo === relation,\n ),\n )\n })\n\n if (idsToLoad.length > 0) {\n const query = {\n depth: 0,\n draft: true,\n limit: idsToLoad.length,\n locale,\n where: {\n id: {\n in: idsToLoad,\n },\n },\n }\n\n if (!errorLoading) {\n const response = await fetch(`${serverURL}${api}/${relation}`, {\n body: qs.stringify(query),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'X-HTTP-Method-Override': 'GET',\n },\n method: 'POST',\n })\n\n const collection = collections.find((coll) => coll.slug === relation)\n let docs = []\n\n if (response.ok) {\n const data = await response.json()\n docs = data.docs\n }\n\n dispatchOptions({\n type: 'ADD',\n collection,\n // TODO: fix this\n // @ts-expect-error-next-line\n config,\n docs,\n i18n,\n ids: idsToLoad,\n sort: true,\n })\n }\n }\n }, Promise.resolve())\n }, [\n options,\n value,\n hasMany,\n errorLoading,\n collections,\n hasMultipleRelations,\n serverURL,\n api,\n i18n,\n relationTo,\n locale,\n config,\n ])\n\n // Determine if we should switch to word boundary search\n useEffect(() => {\n const relations = Array.isArray(relationTo) ? relationTo : [relationTo]\n const isIdOnly = relations.reduce((idOnly, relation) => {\n const collection = collections.find((coll) => coll.slug === relation)\n const fieldToSearch = collection?.admin?.useAsTitle || 'id'\n return fieldToSearch === 'id' && idOnly\n }, true)\n setEnableWordBoundarySearch(!isIdOnly)\n }, [relationTo, collections])\n\n // When (`relationTo` || `filterOptions` || `locale`) changes, reset component\n // Note - effect should not run on first run\n useEffect(() => {\n // If the menu is open while filterOptions changes\n // due to latency of getFormState and fast clicking into this field,\n // re-fetch options\n\n if (hasLoadedFirstPageRef.current && menuIsOpen.current) {\n setIsLoading(true)\n void getResults({\n lastLoadedPage: {},\n onSuccess: () => {\n hasLoadedFirstPageRef.current = true\n setIsLoading(false)\n },\n value: valueRef.current,\n })\n }\n\n // If the menu is not open, still reset the field state\n // because we need to get new options next time the menu\n // opens by the user\n\n dispatchOptions({ type: 'CLEAR' })\n setLastFullyLoadedRelation(-1)\n setLastLoadedPage({})\n hasLoadedFirstPageRef.current = false\n }, [\n relationTo,\n filterOptions,\n locale,\n menuIsOpen,\n getResults,\n valueRef,\n hasLoadedFirstPageRef,\n path,\n ])\n\n const onSave = useCallback<DocumentDrawerProps['onSave']>(\n (args) => {\n dispatchOptions({\n type: 'UPDATE',\n collection: args.collectionConfig,\n // TODO: fix this\n // @ts-expect-error-next-line\n config,\n doc: args.doc,\n i18n,\n })\n },\n [i18n, config],\n )\n\n const filterOption = useCallback((item: Option, searchFilter: string) => {\n if (!searchFilter) {\n return true\n }\n const r = wordBoundariesRegex(searchFilter || '')\n // breaking the labels to search into smaller parts increases performance\n const breakApartThreshold = 250\n let string = item.label\n // strings less than breakApartThreshold length won't be chunked\n while (string.length > breakApartThreshold) {\n // slicing by the next space after the length of the search input prevents slicing the string up by partial words\n const indexOfSpace = string.indexOf(' ', searchFilter.length)\n if (r.test(string.slice(0, indexOfSpace === -1 ? searchFilter.length : indexOfSpace + 1))) {\n return true\n }\n string = string.slice(indexOfSpace === -1 ? searchFilter.length : indexOfSpace + 1)\n }\n return r.test(string.slice(-breakApartThreshold))\n }, [])\n\n const valueToRender = findOptionsByValue({ options, value })\n\n if (!Array.isArray(valueToRender) && valueToRender?.value === 'null') valueToRender.value = null\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n showError && 'error',\n errorLoading && 'error-loading',\n readOnly && `${baseClass}--read-only`,\n ]\n .filter(Boolean)\n .join(' ')}\n id={`field-${path.replace(/\\./g, '__')}`}\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} path={path} {...(errorProps || {})} />\n\n {!errorLoading && (\n <div className={`${baseClass}__wrap`}>\n <ReactSelect\n backspaceRemovesValue={!drawerIsOpen}\n components={{\n MultiValueLabel,\n SingleValue,\n }}\n customProps={{\n disableKeyDown: drawerIsOpen,\n disableMouseDown: drawerIsOpen,\n onSave,\n setDrawerIsOpen,\n }}\n disabled={readOnly || formProcessing || drawerIsOpen}\n filterOption={enableWordBoundarySearch ? filterOption : undefined}\n getOptionValue={(option) => {\n if (!option) return undefined\n return hasMany && Array.isArray(relationTo)\n ? `${option.relationTo}_${option.value}`\n : option.value\n }}\n isLoading={isLoading}\n isMulti={hasMany}\n isSortable={isSortable}\n onChange={\n !readOnly\n ? (selected) => {\n if (selected === null) {\n setValue(hasMany ? [] : null)\n } else if (hasMany && Array.isArray(selected)) {\n setValue(\n selected\n ? selected.map((option) => {\n if (hasMultipleRelations) {\n return {\n relationTo: option.relationTo,\n value: option.value,\n }\n }\n\n return option.value\n })\n : null,\n )\n } else if (hasMultipleRelations && !Array.isArray(selected)) {\n setValue({\n relationTo: selected.relationTo,\n value: selected.value,\n })\n } else if (!Array.isArray(selected)) {\n setValue(selected.value)\n }\n }\n : undefined\n }\n onInputChange={(newSearch) => handleInputChange(newSearch, value)}\n onMenuClose={() => {\n menuIsOpen.current = false\n }}\n onMenuOpen={() => {\n menuIsOpen.current = true\n\n if (!hasLoadedFirstPageRef.current) {\n setIsLoading(true)\n void getResults({\n lastLoadedPage: {},\n onSuccess: () => {\n hasLoadedFirstPageRef.current = true\n setIsLoading(false)\n },\n value: initialValue,\n })\n }\n }}\n onMenuScrollToBottom={() => {\n void getResults({\n lastFullyLoadedRelation,\n lastLoadedPage,\n search,\n sort: false,\n value: initialValue,\n })\n }}\n options={options}\n showError={showError}\n value={valueToRender ?? null}\n />\n {!readOnly && allowCreate && (\n <AddNewRelation\n {...{\n dispatchOptions,\n hasMany,\n options,\n path,\n relationTo,\n setValue,\n value,\n }}\n />\n )}\n </div>\n )}\n {errorLoading && <div className={`${baseClass}__error-loading`}>{errorLoading}</div>}\n {CustomDescription !== undefined ? (\n CustomDescription\n ) : (\n <FieldDescription {...(descriptionProps || {})} />\n )}\n </div>\n </div>\n )\n}\n\nexport const RelationshipField = withCondition(RelationshipFieldComponent)\n"],"names":["wordBoundariesRegex","qs","React","useCallback","useEffect","useReducer","useRef","useState","ReactSelect","useFieldProps","useField","withCondition","useDebouncedCallback","useAuth","useConfig","useLocale","useTranslation","FieldDescription","FieldError","FieldLabel","fieldBaseClass","AddNewRelation","createRelationMap","findOptionsByValue","optionsReducer","MultiValueLabel","SingleValue","maxResultsPerRequest","baseClass","RelationshipFieldComponent","props","name","CustomDescription","CustomError","CustomLabel","allowCreate","className","descriptionProps","errorProps","hasMany","isSortable","label","labelProps","path","pathFromProps","readOnly","readOnlyFromProps","relationTo","required","sortOptions","style","validate","width","config","collections","routes","api","serverURL","i18n","t","permissions","code","locale","hasMultipleRelations","Array","isArray","options","dispatchOptions","lastFullyLoadedRelation","setLastFullyLoadedRelation","lastLoadedPage","setLastLoadedPage","errorLoading","setErrorLoading","search","setSearch","isLoading","setIsLoading","enableWordBoundarySearch","setEnableWordBoundarySearch","menuIsOpen","hasLoadedFirstPageRef","memoizedValidate","value","validationOptions","pathFromContext","readOnlyFromContext","filterOptions","formInitializing","formProcessing","initialValue","setValue","showError","valueRef","current","drawerIsOpen","setDrawerIsOpen","getResults","lastFullyLoadedRelationArg","lastLoadedPageArg","onSuccess","searchArg","sort","valueArg","lastFullyLoadedRelationToUse","relations","relationsToFetch","slice","resultsFetched","relationMap","reduce","priorRelation","relation","relationFilterOption","lastLoadedPageToUse","indexOf","Promise","resolve","collection","find","coll","slug","fieldToSearch","admin","useAsTitle","fieldToSort","defaultSort","query","depth","draft","limit","page","where","and","id","not_in","push","like","response","fetch","body","stringify","credentials","headers","language","method","ok","data","json","prevState","nextPage","docs","length","type","status","ids","updateSearch","handleInputChange","Object","entries","idsToLoad","filter","optionGroup","option","in","isIdOnly","idOnly","onSave","args","collectionConfig","doc","filterOption","item","searchFilter","r","breakApartThreshold","string","indexOfSpace","test","valueToRender","div","Boolean","join","replace","backspaceRemovesValue","components","customProps","disableKeyDown","disableMouseDown","disabled","undefined","getOptionValue","isMulti","onChange","selected","map","onInputChange","newSearch","onMenuClose","onMenuOpen","onMenuScrollToBottom","RelationshipField"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/fields/Relationship/index.tsx"],"sourcesContent":["'use client'\nimport type { PaginatedDocs, RelationshipFieldProps, Where } from 'payload'\n\nimport { wordBoundariesRegex } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useReducer, useRef, useState } from 'react'\n\nimport type { DocumentDrawerProps } from '../../elements/DocumentDrawer/types.js'\nimport type { GetResults, Option, Value } from './types.js'\n\nimport { ReactSelect } from '../../elements/ReactSelect/index.js'\nimport { useFieldProps } from '../../forms/FieldPropsProvider/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useDebouncedCallback } from '../../hooks/useDebouncedCallback.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/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 { AddNewRelation } from './AddNew/index.js'\nimport { createRelationMap } from './createRelationMap.js'\nimport { findOptionsByValue } from './findOptionsByValue.js'\nimport './index.scss'\nimport { optionsReducer } from './optionsReducer.js'\nimport { MultiValueLabel } from './select-components/MultiValueLabel/index.js'\nimport { SingleValue } from './select-components/SingleValue/index.js'\n\nconst maxResultsPerRequest = 10\n\nconst baseClass = 'relationship'\n\nconst RelationshipFieldComponent: React.FC<RelationshipFieldProps> = (props) => {\n const {\n name,\n CustomDescription,\n CustomError,\n CustomLabel,\n allowCreate = true,\n className,\n descriptionProps,\n errorProps,\n hasMany,\n isSortable = true,\n label,\n labelProps,\n path: pathFromProps,\n readOnly: readOnlyFromProps,\n relationTo,\n required,\n sortOptions,\n style,\n validate,\n width,\n } = props\n\n const config = useConfig()\n\n const {\n collections,\n routes: { api },\n serverURL,\n } = config\n\n const { i18n, t } = useTranslation()\n const { permissions } = useAuth()\n const { code: locale } = useLocale()\n const hasMultipleRelations = Array.isArray(relationTo)\n const [options, dispatchOptions] = useReducer(optionsReducer, [])\n const [lastFullyLoadedRelation, setLastFullyLoadedRelation] = useState(-1)\n const [lastLoadedPage, setLastLoadedPage] = useState<Record<string, number>>({})\n const [errorLoading, setErrorLoading] = useState('')\n const [search, setSearch] = useState('')\n const [isLoading, setIsLoading] = useState(false)\n const [enableWordBoundarySearch, setEnableWordBoundarySearch] = useState(false)\n const menuIsOpen = useRef(false)\n const hasLoadedFirstPageRef = useRef(false)\n\n const memoizedValidate = useCallback(\n (value, validationOptions) => {\n if (typeof validate === 'function') {\n return validate(value, { ...validationOptions, required })\n }\n },\n [validate, required],\n )\n const { path: pathFromContext, readOnly: readOnlyFromContext } = useFieldProps()\n\n const {\n filterOptions,\n formInitializing,\n formProcessing,\n initialValue,\n path,\n setValue,\n showError,\n value,\n } = useField<Value | Value[]>({\n path: pathFromContext ?? pathFromProps ?? name,\n validate: memoizedValidate,\n })\n\n const readOnly = readOnlyFromProps || readOnlyFromContext || formInitializing\n\n const valueRef = useRef(value)\n valueRef.current = value\n\n const [drawerIsOpen, setDrawerIsOpen] = useState(false)\n\n const getResults: GetResults = useCallback(\n async ({\n lastFullyLoadedRelation: lastFullyLoadedRelationArg,\n lastLoadedPage: lastLoadedPageArg,\n onSuccess,\n search: searchArg,\n sort,\n value: valueArg,\n }) => {\n if (!permissions) {\n return\n }\n const lastFullyLoadedRelationToUse =\n typeof lastFullyLoadedRelationArg !== 'undefined' ? lastFullyLoadedRelationArg : -1\n\n const relations = Array.isArray(relationTo) ? relationTo : [relationTo]\n const relationsToFetch =\n lastFullyLoadedRelationToUse === -1\n ? relations\n : relations.slice(lastFullyLoadedRelationToUse + 1)\n\n let resultsFetched = 0\n const relationMap = createRelationMap({\n hasMany,\n relationTo,\n value: valueArg,\n })\n\n if (!errorLoading) {\n await relationsToFetch.reduce(async (priorRelation, relation) => {\n const relationFilterOption = filterOptions?.[relation]\n\n let lastLoadedPageToUse\n if (search !== searchArg) {\n lastLoadedPageToUse = 1\n } else {\n lastLoadedPageToUse = lastLoadedPageArg[relation] + 1\n }\n await priorRelation\n\n if (relationFilterOption === false) {\n setLastFullyLoadedRelation(relations.indexOf(relation))\n return Promise.resolve()\n }\n\n if (resultsFetched < 10) {\n const collection = collections.find((coll) => coll.slug === relation)\n const fieldToSearch = collection?.admin?.useAsTitle || 'id'\n let fieldToSort = collection?.defaultSort || 'id'\n if (typeof sortOptions === 'string') {\n fieldToSort = sortOptions\n } else if (sortOptions?.[relation]) {\n fieldToSort = sortOptions[relation]\n }\n\n const query: {\n [key: string]: unknown\n where: Where\n } = {\n depth: 0,\n draft: true,\n limit: maxResultsPerRequest,\n locale,\n page: lastLoadedPageToUse,\n sort: fieldToSort,\n where: {\n and: [\n {\n id: {\n not_in: relationMap[relation],\n },\n },\n ],\n },\n }\n\n if (searchArg) {\n query.where.and.push({\n [fieldToSearch]: {\n like: searchArg,\n },\n })\n }\n\n if (relationFilterOption && typeof relationFilterOption !== 'boolean') {\n query.where.and.push(relationFilterOption)\n }\n\n const response = await fetch(`${serverURL}${api}/${relation}`, {\n body: qs.stringify(query),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'X-HTTP-Method-Override': 'GET',\n },\n method: 'POST',\n })\n\n if (response.ok) {\n const data: PaginatedDocs<unknown> = await response.json()\n setLastLoadedPage((prevState) => {\n return {\n ...prevState,\n [relation]: lastLoadedPageToUse,\n }\n })\n\n if (!data.nextPage) {\n setLastFullyLoadedRelation(relations.indexOf(relation))\n }\n\n if (data.docs.length > 0) {\n resultsFetched += data.docs.length\n\n dispatchOptions({\n type: 'ADD',\n collection,\n // TODO: fix this\n // @ts-expect-error-next-line\n config,\n docs: data.docs,\n i18n,\n sort,\n })\n }\n } else if (response.status === 403) {\n setLastFullyLoadedRelation(relations.indexOf(relation))\n dispatchOptions({\n type: 'ADD',\n collection,\n // TODO: fix this\n // @ts-expect-error-next-line\n config,\n docs: [],\n i18n,\n ids: relationMap[relation],\n sort,\n })\n } else {\n setErrorLoading(t('error:unspecific'))\n }\n }\n }, Promise.resolve())\n\n if (typeof onSuccess === 'function') onSuccess()\n }\n },\n [\n permissions,\n relationTo,\n hasMany,\n errorLoading,\n search,\n collections,\n locale,\n filterOptions,\n serverURL,\n sortOptions,\n api,\n i18n,\n config,\n t,\n ],\n )\n\n const updateSearch = useDebouncedCallback((searchArg: string, valueArg: Value | Value[]) => {\n void getResults({ lastLoadedPage: {}, search: searchArg, sort: true, value: valueArg })\n setSearch(searchArg)\n }, 300)\n\n const handleInputChange = useCallback(\n (searchArg: string, valueArg: Value | Value[]) => {\n if (search !== searchArg) {\n setLastLoadedPage({})\n updateSearch(searchArg, valueArg, searchArg !== '')\n }\n },\n [search, updateSearch],\n )\n\n // ///////////////////////////////////\n // Ensure we have an option for each value\n // ///////////////////////////////////\n\n useEffect(() => {\n const relationMap = createRelationMap({\n hasMany,\n relationTo,\n value,\n })\n\n void Object.entries(relationMap).reduce(async (priorRelation, [relation, ids]) => {\n await priorRelation\n\n const idsToLoad = ids.filter((id) => {\n return !options.find((optionGroup) =>\n optionGroup?.options?.find(\n (option) => option.value === id && option.relationTo === relation,\n ),\n )\n })\n\n if (idsToLoad.length > 0) {\n const query = {\n depth: 0,\n draft: true,\n limit: idsToLoad.length,\n locale,\n where: {\n id: {\n in: idsToLoad,\n },\n },\n }\n\n if (!errorLoading) {\n const response = await fetch(`${serverURL}${api}/${relation}`, {\n body: qs.stringify(query),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'X-HTTP-Method-Override': 'GET',\n },\n method: 'POST',\n })\n\n const collection = collections.find((coll) => coll.slug === relation)\n let docs = []\n\n if (response.ok) {\n const data = await response.json()\n docs = data.docs\n }\n\n dispatchOptions({\n type: 'ADD',\n collection,\n // TODO: fix this\n // @ts-expect-error-next-line\n config,\n docs,\n i18n,\n ids: idsToLoad,\n sort: true,\n })\n }\n }\n }, Promise.resolve())\n }, [\n options,\n value,\n hasMany,\n errorLoading,\n collections,\n hasMultipleRelations,\n serverURL,\n api,\n i18n,\n relationTo,\n locale,\n config,\n ])\n\n // Determine if we should switch to word boundary search\n useEffect(() => {\n const relations = Array.isArray(relationTo) ? relationTo : [relationTo]\n const isIdOnly = relations.reduce((idOnly, relation) => {\n const collection = collections.find((coll) => coll.slug === relation)\n const fieldToSearch = collection?.admin?.useAsTitle || 'id'\n return fieldToSearch === 'id' && idOnly\n }, true)\n setEnableWordBoundarySearch(!isIdOnly)\n }, [relationTo, collections])\n\n // When (`relationTo` || `filterOptions` || `locale`) changes, reset component\n // Note - effect should not run on first run\n useEffect(() => {\n // If the menu is open while filterOptions changes\n // due to latency of getFormState and fast clicking into this field,\n // re-fetch options\n\n if (hasLoadedFirstPageRef.current && menuIsOpen.current) {\n setIsLoading(true)\n void getResults({\n lastLoadedPage: {},\n onSuccess: () => {\n hasLoadedFirstPageRef.current = true\n setIsLoading(false)\n },\n value: valueRef.current,\n })\n }\n\n // If the menu is not open, still reset the field state\n // because we need to get new options next time the menu\n // opens by the user\n\n dispatchOptions({ type: 'CLEAR' })\n setLastFullyLoadedRelation(-1)\n setLastLoadedPage({})\n hasLoadedFirstPageRef.current = false\n }, [\n relationTo,\n filterOptions,\n locale,\n menuIsOpen,\n getResults,\n valueRef,\n hasLoadedFirstPageRef,\n path,\n ])\n\n const onSave = useCallback<DocumentDrawerProps['onSave']>(\n (args) => {\n dispatchOptions({\n type: 'UPDATE',\n collection: args.collectionConfig,\n // TODO: fix this\n // @ts-expect-error-next-line\n config,\n doc: args.doc,\n i18n,\n })\n },\n [i18n, config],\n )\n\n const filterOption = useCallback((item: Option, searchFilter: string) => {\n if (!searchFilter) {\n return true\n }\n const r = wordBoundariesRegex(searchFilter || '')\n // breaking the labels to search into smaller parts increases performance\n const breakApartThreshold = 250\n let string = item.label\n // strings less than breakApartThreshold length won't be chunked\n while (string.length > breakApartThreshold) {\n // slicing by the next space after the length of the search input prevents slicing the string up by partial words\n const indexOfSpace = string.indexOf(' ', searchFilter.length)\n if (r.test(string.slice(0, indexOfSpace === -1 ? searchFilter.length : indexOfSpace + 1))) {\n return true\n }\n string = string.slice(indexOfSpace === -1 ? searchFilter.length : indexOfSpace + 1)\n }\n return r.test(string.slice(-breakApartThreshold))\n }, [])\n\n const valueToRender = findOptionsByValue({ options, value })\n\n if (!Array.isArray(valueToRender) && valueToRender?.value === 'null') valueToRender.value = null\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n showError && 'error',\n errorLoading && 'error-loading',\n readOnly && `${baseClass}--read-only`,\n !readOnly && allowCreate && `${baseClass}--allow-create`,\n ]\n .filter(Boolean)\n .join(' ')}\n id={`field-${path.replace(/\\./g, '__')}`}\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} path={path} {...(errorProps || {})} />\n\n {!errorLoading && (\n <div className={`${baseClass}__wrap`}>\n <ReactSelect\n backspaceRemovesValue={!drawerIsOpen}\n components={{\n MultiValueLabel,\n SingleValue,\n }}\n customProps={{\n disableKeyDown: drawerIsOpen,\n disableMouseDown: drawerIsOpen,\n onSave,\n setDrawerIsOpen,\n }}\n disabled={readOnly || formProcessing || drawerIsOpen}\n filterOption={enableWordBoundarySearch ? filterOption : undefined}\n getOptionValue={(option) => {\n if (!option) return undefined\n return hasMany && Array.isArray(relationTo)\n ? `${option.relationTo}_${option.value}`\n : option.value\n }}\n isLoading={isLoading}\n isMulti={hasMany}\n isSortable={isSortable}\n onChange={\n !readOnly\n ? (selected) => {\n if (selected === null) {\n setValue(hasMany ? [] : null)\n } else if (hasMany && Array.isArray(selected)) {\n setValue(\n selected\n ? selected.map((option) => {\n if (hasMultipleRelations) {\n return {\n relationTo: option.relationTo,\n value: option.value,\n }\n }\n\n return option.value\n })\n : null,\n )\n } else if (hasMultipleRelations && !Array.isArray(selected)) {\n setValue({\n relationTo: selected.relationTo,\n value: selected.value,\n })\n } else if (!Array.isArray(selected)) {\n setValue(selected.value)\n }\n }\n : undefined\n }\n onInputChange={(newSearch) => handleInputChange(newSearch, value)}\n onMenuClose={() => {\n menuIsOpen.current = false\n }}\n onMenuOpen={() => {\n menuIsOpen.current = true\n\n if (!hasLoadedFirstPageRef.current) {\n setIsLoading(true)\n void getResults({\n lastLoadedPage: {},\n onSuccess: () => {\n hasLoadedFirstPageRef.current = true\n setIsLoading(false)\n },\n value: initialValue,\n })\n }\n }}\n onMenuScrollToBottom={() => {\n void getResults({\n lastFullyLoadedRelation,\n lastLoadedPage,\n search,\n sort: false,\n value: initialValue,\n })\n }}\n options={options}\n showError={showError}\n value={valueToRender ?? null}\n />\n {!readOnly && allowCreate && (\n <AddNewRelation\n {...{\n dispatchOptions,\n hasMany,\n options,\n path,\n relationTo,\n setValue,\n value,\n }}\n />\n )}\n </div>\n )}\n {errorLoading && <div className={`${baseClass}__error-loading`}>{errorLoading}</div>}\n {CustomDescription !== undefined ? (\n CustomDescription\n ) : (\n <FieldDescription {...(descriptionProps || {})} />\n )}\n </div>\n </div>\n )\n}\n\nexport const RelationshipField = withCondition(RelationshipFieldComponent)\n"],"names":["wordBoundariesRegex","qs","React","useCallback","useEffect","useReducer","useRef","useState","ReactSelect","useFieldProps","useField","withCondition","useDebouncedCallback","useAuth","useConfig","useLocale","useTranslation","FieldDescription","FieldError","FieldLabel","fieldBaseClass","AddNewRelation","createRelationMap","findOptionsByValue","optionsReducer","MultiValueLabel","SingleValue","maxResultsPerRequest","baseClass","RelationshipFieldComponent","props","name","CustomDescription","CustomError","CustomLabel","allowCreate","className","descriptionProps","errorProps","hasMany","isSortable","label","labelProps","path","pathFromProps","readOnly","readOnlyFromProps","relationTo","required","sortOptions","style","validate","width","config","collections","routes","api","serverURL","i18n","t","permissions","code","locale","hasMultipleRelations","Array","isArray","options","dispatchOptions","lastFullyLoadedRelation","setLastFullyLoadedRelation","lastLoadedPage","setLastLoadedPage","errorLoading","setErrorLoading","search","setSearch","isLoading","setIsLoading","enableWordBoundarySearch","setEnableWordBoundarySearch","menuIsOpen","hasLoadedFirstPageRef","memoizedValidate","value","validationOptions","pathFromContext","readOnlyFromContext","filterOptions","formInitializing","formProcessing","initialValue","setValue","showError","valueRef","current","drawerIsOpen","setDrawerIsOpen","getResults","lastFullyLoadedRelationArg","lastLoadedPageArg","onSuccess","searchArg","sort","valueArg","lastFullyLoadedRelationToUse","relations","relationsToFetch","slice","resultsFetched","relationMap","reduce","priorRelation","relation","relationFilterOption","lastLoadedPageToUse","indexOf","Promise","resolve","collection","find","coll","slug","fieldToSearch","admin","useAsTitle","fieldToSort","defaultSort","query","depth","draft","limit","page","where","and","id","not_in","push","like","response","fetch","body","stringify","credentials","headers","language","method","ok","data","json","prevState","nextPage","docs","length","type","status","ids","updateSearch","handleInputChange","Object","entries","idsToLoad","filter","optionGroup","option","in","isIdOnly","idOnly","onSave","args","collectionConfig","doc","filterOption","item","searchFilter","r","breakApartThreshold","string","indexOfSpace","test","valueToRender","div","Boolean","join","replace","backspaceRemovesValue","components","customProps","disableKeyDown","disableMouseDown","disabled","undefined","getOptionValue","isMulti","onChange","selected","map","onInputChange","newSearch","onMenuClose","onMenuOpen","onMenuScrollToBottom","RelationshipField"],"mappings":"AAAA;;AAGA,SAASA,mBAAmB,QAAQ,iBAAgB;AACpD,YAAYC,QAAQ,SAAQ;AAC5B,OAAOC,SAASC,WAAW,EAAEC,SAAS,EAAEC,UAAU,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,QAAO;AAKnF,SAASC,WAAW,QAAQ,sCAAqC;AACjE,SAASC,aAAa,QAAQ,0CAAyC;AACvE,SAASC,QAAQ,QAAQ,gCAA+B;AACxD,SAASC,aAAa,QAAQ,qCAAoC;AAClE,SAASC,oBAAoB,QAAQ,sCAAqC;AAC1E,SAASC,OAAO,QAAQ,gCAA+B;AACvD,SAASC,SAAS,QAAQ,kCAAiC;AAC3D,SAASC,SAAS,QAAQ,kCAAiC;AAC3D,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,gBAAgB,QAAQ,+BAA8B;AAC/D,SAASC,UAAU,QAAQ,yBAAwB;AACnD,SAASC,UAAU,QAAQ,yBAAwB;AACnD,SAASC,cAAc,QAAQ,qBAAoB;AACnD,SAASC,cAAc,QAAQ,oBAAmB;AAClD,SAASC,iBAAiB,QAAQ,yBAAwB;AAC1D,SAASC,kBAAkB,QAAQ,0BAAyB;AAC5D,OAAO,eAAc;AACrB,SAASC,cAAc,QAAQ,sBAAqB;AACpD,SAASC,eAAe,QAAQ,+CAA8C;AAC9E,SAASC,WAAW,QAAQ,2CAA0C;AAEtE,MAAMC,uBAAuB;AAE7B,MAAMC,YAAY;AAElB,MAAMC,6BAA+D,CAACC;IACpE,MAAM,EACJC,IAAI,EACJC,iBAAiB,EACjBC,WAAW,EACXC,WAAW,EACXC,cAAc,IAAI,EAClBC,SAAS,EACTC,gBAAgB,EAChBC,UAAU,EACVC,OAAO,EACPC,aAAa,IAAI,EACjBC,KAAK,EACLC,UAAU,EACVC,MAAMC,aAAa,EACnBC,UAAUC,iBAAiB,EAC3BC,UAAU,EACVC,QAAQ,EACRC,WAAW,EACXC,KAAK,EACLC,QAAQ,EACRC,KAAK,EACN,GAAGtB;IAEJ,MAAMuB,SAASvC;IAEf,MAAM,EACJwC,WAAW,EACXC,QAAQ,EAAEC,GAAG,EAAE,EACfC,SAAS,EACV,GAAGJ;IAEJ,MAAM,EAAEK,IAAI,EAAEC,CAAC,EAAE,GAAG3C;IACpB,MAAM,EAAE4C,WAAW,EAAE,GAAG/C;IACxB,MAAM,EAAEgD,MAAMC,MAAM,EAAE,GAAG/C;IACzB,MAAMgD,uBAAuBC,MAAMC,OAAO,CAAClB;IAC3C,MAAM,CAACmB,SAASC,gBAAgB,GAAG9D,WAAWmB,gBAAgB,EAAE;IAChE,MAAM,CAAC4C,yBAAyBC,2BAA2B,GAAG9D,SAAS,CAAC;IACxE,MAAM,CAAC+D,gBAAgBC,kBAAkB,GAAGhE,SAAiC,CAAC;IAC9E,MAAM,CAACiE,cAAcC,gBAAgB,GAAGlE,SAAS;IACjD,MAAM,CAACmE,QAAQC,UAAU,GAAGpE,SAAS;IACrC,MAAM,CAACqE,WAAWC,aAAa,GAAGtE,SAAS;IAC3C,MAAM,CAACuE,0BAA0BC,4BAA4B,GAAGxE,SAAS;IACzE,MAAMyE,aAAa1E,OAAO;IAC1B,MAAM2E,wBAAwB3E,OAAO;IAErC,MAAM4E,mBAAmB/E,YACvB,CAACgF,OAAOC;QACN,IAAI,OAAOjC,aAAa,YAAY;YAClC,OAAOA,SAASgC,OAAO;gBAAE,GAAGC,iBAAiB;gBAAEpC;YAAS;QAC1D;IACF,GACA;QAACG;QAAUH;KAAS;IAEtB,MAAM,EAAEL,MAAM0C,eAAe,EAAExC,UAAUyC,mBAAmB,EAAE,GAAG7E;IAEjE,MAAM,EACJ8E,aAAa,EACbC,gBAAgB,EAChBC,cAAc,EACdC,YAAY,EACZ/C,IAAI,EACJgD,QAAQ,EACRC,SAAS,EACTT,KAAK,EACN,GAAGzE,SAA0B;QAC5BiC,MAAM0C,mBAAmBzC,iBAAiBb;QAC1CoB,UAAU+B;IACZ;IAEA,MAAMrC,WAAWC,qBAAqBwC,uBAAuBE;IAE7D,MAAMK,WAAWvF,OAAO6E;IACxBU,SAASC,OAAO,GAAGX;IAEnB,MAAM,CAACY,cAAcC,gBAAgB,GAAGzF,SAAS;IAEjD,MAAM0F,aAAyB9F,YAC7B,OAAO,EACLiE,yBAAyB8B,0BAA0B,EACnD5B,gBAAgB6B,iBAAiB,EACjCC,SAAS,EACT1B,QAAQ2B,SAAS,EACjBC,IAAI,EACJnB,OAAOoB,QAAQ,EAChB;QACC,IAAI,CAAC3C,aAAa;YAChB;QACF;QACA,MAAM4C,+BACJ,OAAON,+BAA+B,cAAcA,6BAA6B,CAAC;QAEpF,MAAMO,YAAYzC,MAAMC,OAAO,CAAClB,cAAcA,aAAa;YAACA;SAAW;QACvE,MAAM2D,mBACJF,iCAAiC,CAAC,IAC9BC,YACAA,UAAUE,KAAK,CAACH,+BAA+B;QAErD,IAAII,iBAAiB;QACrB,MAAMC,cAAcvF,kBAAkB;YACpCiB;YACAQ;YACAoC,OAAOoB;QACT;QAEA,IAAI,CAAC/B,cAAc;YACjB,MAAMkC,iBAAiBI,MAAM,CAAC,OAAOC,eAAeC;gBAClD,MAAMC,uBAAuB1B,eAAe,CAACyB,SAAS;gBAEtD,IAAIE;gBACJ,IAAIxC,WAAW2B,WAAW;oBACxBa,sBAAsB;gBACxB,OAAO;oBACLA,sBAAsBf,iBAAiB,CAACa,SAAS,GAAG;gBACtD;gBACA,MAAMD;gBAEN,IAAIE,yBAAyB,OAAO;oBAClC5C,2BAA2BoC,UAAUU,OAAO,CAACH;oBAC7C,OAAOI,QAAQC,OAAO;gBACxB;gBAEA,IAAIT,iBAAiB,IAAI;oBACvB,MAAMU,aAAahE,YAAYiE,IAAI,CAAC,CAACC,OAASA,KAAKC,IAAI,KAAKT;oBAC5D,MAAMU,gBAAgBJ,YAAYK,OAAOC,cAAc;oBACvD,IAAIC,cAAcP,YAAYQ,eAAe;oBAC7C,IAAI,OAAO7E,gBAAgB,UAAU;wBACnC4E,cAAc5E;oBAChB,OAAO,IAAIA,aAAa,CAAC+D,SAAS,EAAE;wBAClCa,cAAc5E,WAAW,CAAC+D,SAAS;oBACrC;oBAEA,MAAMe,QAGF;wBACFC,OAAO;wBACPC,OAAO;wBACPC,OAAOvG;wBACPmC;wBACAqE,MAAMjB;wBACNZ,MAAMuB;wBACNO,OAAO;4BACLC,KAAK;gCACH;oCACEC,IAAI;wCACFC,QAAQ1B,WAAW,CAACG,SAAS;oCAC/B;gCACF;6BACD;wBACH;oBACF;oBAEA,IAAIX,WAAW;wBACb0B,MAAMK,KAAK,CAACC,GAAG,CAACG,IAAI,CAAC;4BACnB,CAACd,cAAc,EAAE;gCACfe,MAAMpC;4BACR;wBACF;oBACF;oBAEA,IAAIY,wBAAwB,OAAOA,yBAAyB,WAAW;wBACrEc,MAAMK,KAAK,CAACC,GAAG,CAACG,IAAI,CAACvB;oBACvB;oBAEA,MAAMyB,WAAW,MAAMC,MAAM,CAAC,EAAElF,UAAU,EAAED,IAAI,CAAC,EAAEwD,SAAS,CAAC,EAAE;wBAC7D4B,MAAM3I,GAAG4I,SAAS,CAACd;wBACnBe,aAAa;wBACbC,SAAS;4BACP,mBAAmBrF,KAAKsF,QAAQ;4BAChC,gBAAgB;4BAChB,0BAA0B;wBAC5B;wBACAC,QAAQ;oBACV;oBAEA,IAAIP,SAASQ,EAAE,EAAE;wBACf,MAAMC,OAA+B,MAAMT,SAASU,IAAI;wBACxD7E,kBAAkB,CAAC8E;4BACjB,OAAO;gCACL,GAAGA,SAAS;gCACZ,CAACrC,SAAS,EAAEE;4BACd;wBACF;wBAEA,IAAI,CAACiC,KAAKG,QAAQ,EAAE;4BAClBjF,2BAA2BoC,UAAUU,OAAO,CAACH;wBAC/C;wBAEA,IAAImC,KAAKI,IAAI,CAACC,MAAM,GAAG,GAAG;4BACxB5C,kBAAkBuC,KAAKI,IAAI,CAACC,MAAM;4BAElCrF,gBAAgB;gCACdsF,MAAM;gCACNnC;gCACA,iBAAiB;gCACjB,6BAA6B;gCAC7BjE;gCACAkG,MAAMJ,KAAKI,IAAI;gCACf7F;gCACA4C;4BACF;wBACF;oBACF,OAAO,IAAIoC,SAASgB,MAAM,KAAK,KAAK;wBAClCrF,2BAA2BoC,UAAUU,OAAO,CAACH;wBAC7C7C,gBAAgB;4BACdsF,MAAM;4BACNnC;4BACA,iBAAiB;4BACjB,6BAA6B;4BAC7BjE;4BACAkG,MAAM,EAAE;4BACR7F;4BACAiG,KAAK9C,WAAW,CAACG,SAAS;4BAC1BV;wBACF;oBACF,OAAO;wBACL7B,gBAAgBd,EAAE;oBACpB;gBACF;YACF,GAAGyD,QAAQC,OAAO;YAElB,IAAI,OAAOjB,cAAc,YAAYA;QACvC;IACF,GACA;QACExC;QACAb;QACAR;QACAiC;QACAE;QACApB;QACAQ;QACAyB;QACA9B;QACAR;QACAO;QACAE;QACAL;QACAM;KACD;IAGH,MAAMiG,eAAehJ,qBAAqB,CAACyF,WAAmBE;QAC5D,KAAKN,WAAW;YAAE3B,gBAAgB,CAAC;YAAGI,QAAQ2B;YAAWC,MAAM;YAAMnB,OAAOoB;QAAS;QACrF5B,UAAU0B;IACZ,GAAG;IAEH,MAAMwD,oBAAoB1J,YACxB,CAACkG,WAAmBE;QAClB,IAAI7B,WAAW2B,WAAW;YACxB9B,kBAAkB,CAAC;YACnBqF,aAAavD,WAAWE,UAAUF,cAAc;QAClD;IACF,GACA;QAAC3B;QAAQkF;KAAa;IAGxB,sCAAsC;IACtC,0CAA0C;IAC1C,sCAAsC;IAEtCxJ,UAAU;QACR,MAAMyG,cAAcvF,kBAAkB;YACpCiB;YACAQ;YACAoC;QACF;QAEA,KAAK2E,OAAOC,OAAO,CAAClD,aAAaC,MAAM,CAAC,OAAOC,eAAe,CAACC,UAAU2C,IAAI;YAC3E,MAAM5C;YAEN,MAAMiD,YAAYL,IAAIM,MAAM,CAAC,CAAC3B;gBAC5B,OAAO,CAACpE,QAAQqD,IAAI,CAAC,CAAC2C,cACpBA,aAAahG,SAASqD,KACpB,CAAC4C,SAAWA,OAAOhF,KAAK,KAAKmD,MAAM6B,OAAOpH,UAAU,KAAKiE;YAG/D;YAEA,IAAIgD,UAAUR,MAAM,GAAG,GAAG;gBACxB,MAAMzB,QAAQ;oBACZC,OAAO;oBACPC,OAAO;oBACPC,OAAO8B,UAAUR,MAAM;oBACvB1F;oBACAsE,OAAO;wBACLE,IAAI;4BACF8B,IAAIJ;wBACN;oBACF;gBACF;gBAEA,IAAI,CAACxF,cAAc;oBACjB,MAAMkE,WAAW,MAAMC,MAAM,CAAC,EAAElF,UAAU,EAAED,IAAI,CAAC,EAAEwD,SAAS,CAAC,EAAE;wBAC7D4B,MAAM3I,GAAG4I,SAAS,CAACd;wBACnBe,aAAa;wBACbC,SAAS;4BACP,mBAAmBrF,KAAKsF,QAAQ;4BAChC,gBAAgB;4BAChB,0BAA0B;wBAC5B;wBACAC,QAAQ;oBACV;oBAEA,MAAM3B,aAAahE,YAAYiE,IAAI,CAAC,CAACC,OAASA,KAAKC,IAAI,KAAKT;oBAC5D,IAAIuC,OAAO,EAAE;oBAEb,IAAIb,SAASQ,EAAE,EAAE;wBACf,MAAMC,OAAO,MAAMT,SAASU,IAAI;wBAChCG,OAAOJ,KAAKI,IAAI;oBAClB;oBAEApF,gBAAgB;wBACdsF,MAAM;wBACNnC;wBACA,iBAAiB;wBACjB,6BAA6B;wBAC7BjE;wBACAkG;wBACA7F;wBACAiG,KAAKK;wBACL1D,MAAM;oBACR;gBACF;YACF;QACF,GAAGc,QAAQC,OAAO;IACpB,GAAG;QACDnD;QACAiB;QACA5C;QACAiC;QACAlB;QACAS;QACAN;QACAD;QACAE;QACAX;QACAe;QACAT;KACD;IAED,wDAAwD;IACxDjD,UAAU;QACR,MAAMqG,YAAYzC,MAAMC,OAAO,CAAClB,cAAcA,aAAa;YAACA;SAAW;QACvE,MAAMsH,WAAW5D,UAAUK,MAAM,CAAC,CAACwD,QAAQtD;YACzC,MAAMM,aAAahE,YAAYiE,IAAI,CAAC,CAACC,OAASA,KAAKC,IAAI,KAAKT;YAC5D,MAAMU,gBAAgBJ,YAAYK,OAAOC,cAAc;YACvD,OAAOF,kBAAkB,QAAQ4C;QACnC,GAAG;QACHvF,4BAA4B,CAACsF;IAC/B,GAAG;QAACtH;QAAYO;KAAY;IAE5B,8EAA8E;IAC9E,4CAA4C;IAC5ClD,UAAU;QACR,kDAAkD;QAClD,oEAAoE;QACpE,mBAAmB;QAEnB,IAAI6E,sBAAsBa,OAAO,IAAId,WAAWc,OAAO,EAAE;YACvDjB,aAAa;YACb,KAAKoB,WAAW;gBACd3B,gBAAgB,CAAC;gBACjB8B,WAAW;oBACTnB,sBAAsBa,OAAO,GAAG;oBAChCjB,aAAa;gBACf;gBACAM,OAAOU,SAASC,OAAO;YACzB;QACF;QAEA,uDAAuD;QACvD,wDAAwD;QACxD,oBAAoB;QAEpB3B,gBAAgB;YAAEsF,MAAM;QAAQ;QAChCpF,2BAA2B,CAAC;QAC5BE,kBAAkB,CAAC;QACnBU,sBAAsBa,OAAO,GAAG;IAClC,GAAG;QACD/C;QACAwC;QACAzB;QACAkB;QACAiB;QACAJ;QACAZ;QACAtC;KACD;IAED,MAAM4H,SAASpK,YACb,CAACqK;QACCrG,gBAAgB;YACdsF,MAAM;YACNnC,YAAYkD,KAAKC,gBAAgB;YACjC,iBAAiB;YACjB,6BAA6B;YAC7BpH;YACAqH,KAAKF,KAAKE,GAAG;YACbhH;QACF;IACF,GACA;QAACA;QAAML;KAAO;IAGhB,MAAMsH,eAAexK,YAAY,CAACyK,MAAcC;QAC9C,IAAI,CAACA,cAAc;YACjB,OAAO;QACT;QACA,MAAMC,IAAI9K,oBAAoB6K,gBAAgB;QAC9C,yEAAyE;QACzE,MAAME,sBAAsB;QAC5B,IAAIC,SAASJ,KAAKnI,KAAK;QACvB,gEAAgE;QAChE,MAAOuI,OAAOxB,MAAM,GAAGuB,oBAAqB;YAC1C,iHAAiH;YACjH,MAAME,eAAeD,OAAO7D,OAAO,CAAC,KAAK0D,aAAarB,MAAM;YAC5D,IAAIsB,EAAEI,IAAI,CAACF,OAAOrE,KAAK,CAAC,GAAGsE,iBAAiB,CAAC,IAAIJ,aAAarB,MAAM,GAAGyB,eAAe,KAAK;gBACzF,OAAO;YACT;YACAD,SAASA,OAAOrE,KAAK,CAACsE,iBAAiB,CAAC,IAAIJ,aAAarB,MAAM,GAAGyB,eAAe;QACnF;QACA,OAAOH,EAAEI,IAAI,CAACF,OAAOrE,KAAK,CAAC,CAACoE;IAC9B,GAAG,EAAE;IAEL,MAAMI,gBAAgB5J,mBAAmB;QAAE2C;QAASiB;IAAM;IAE1D,IAAI,CAACnB,MAAMC,OAAO,CAACkH,kBAAkBA,eAAehG,UAAU,QAAQgG,cAAchG,KAAK,GAAG;IAE5F,qBACE,MAACiG;QACChJ,WAAW;YACThB;YACAQ;YACAQ;YACAwD,aAAa;YACbpB,gBAAgB;YAChB3B,YAAY,CAAC,EAAEjB,UAAU,WAAW,CAAC;YACrC,CAACiB,YAAYV,eAAe,CAAC,EAAEP,UAAU,cAAc,CAAC;SACzD,CACEqI,MAAM,CAACoB,SACPC,IAAI,CAAC;QACRhD,IAAI,CAAC,MAAM,EAAE3F,KAAK4I,OAAO,CAAC,OAAO,MAAM,CAAC;QACxCrI,OAAO;YACL,GAAGA,KAAK;YACRE;QACF;;0BAEA,KAACjC;gBACCe,aAAaA;gBACbO,OAAOA;gBACPO,UAAUA;gBACT,GAAIN,cAAc,CAAC,CAAC;;0BAEvB,MAAC0I;gBAAIhJ,WAAW,CAAC,EAAEhB,eAAe,MAAM,CAAC;;kCACvC,KAACF;wBAAWe,aAAaA;wBAAaU,MAAMA;wBAAO,GAAIL,cAAc,CAAC,CAAC;;oBAEtE,CAACkC,8BACA,MAAC4G;wBAAIhJ,WAAW,CAAC,EAAER,UAAU,MAAM,CAAC;;0CAClC,KAACpB;gCACCgL,uBAAuB,CAACzF;gCACxB0F,YAAY;oCACVhK;oCACAC;gCACF;gCACAgK,aAAa;oCACXC,gBAAgB5F;oCAChB6F,kBAAkB7F;oCAClBwE;oCACAvE;gCACF;gCACA6F,UAAUhJ,YAAY4C,kBAAkBM;gCACxC4E,cAAc7F,2BAA2B6F,eAAemB;gCACxDC,gBAAgB,CAAC5B;oCACf,IAAI,CAACA,QAAQ,OAAO2B;oCACpB,OAAOvJ,WAAWyB,MAAMC,OAAO,CAAClB,cAC5B,CAAC,EAAEoH,OAAOpH,UAAU,CAAC,CAAC,EAAEoH,OAAOhF,KAAK,CAAC,CAAC,GACtCgF,OAAOhF,KAAK;gCAClB;gCACAP,WAAWA;gCACXoH,SAASzJ;gCACTC,YAAYA;gCACZyJ,UACE,CAACpJ,WACG,CAACqJ;oCACC,IAAIA,aAAa,MAAM;wCACrBvG,SAASpD,UAAU,EAAE,GAAG;oCAC1B,OAAO,IAAIA,WAAWyB,MAAMC,OAAO,CAACiI,WAAW;wCAC7CvG,SACEuG,WACIA,SAASC,GAAG,CAAC,CAAChC;4CACZ,IAAIpG,sBAAsB;gDACxB,OAAO;oDACLhB,YAAYoH,OAAOpH,UAAU;oDAC7BoC,OAAOgF,OAAOhF,KAAK;gDACrB;4CACF;4CAEA,OAAOgF,OAAOhF,KAAK;wCACrB,KACA;oCAER,OAAO,IAAIpB,wBAAwB,CAACC,MAAMC,OAAO,CAACiI,WAAW;wCAC3DvG,SAAS;4CACP5C,YAAYmJ,SAASnJ,UAAU;4CAC/BoC,OAAO+G,SAAS/G,KAAK;wCACvB;oCACF,OAAO,IAAI,CAACnB,MAAMC,OAAO,CAACiI,WAAW;wCACnCvG,SAASuG,SAAS/G,KAAK;oCACzB;gCACF,IACA2G;gCAENM,eAAe,CAACC,YAAcxC,kBAAkBwC,WAAWlH;gCAC3DmH,aAAa;oCACXtH,WAAWc,OAAO,GAAG;gCACvB;gCACAyG,YAAY;oCACVvH,WAAWc,OAAO,GAAG;oCAErB,IAAI,CAACb,sBAAsBa,OAAO,EAAE;wCAClCjB,aAAa;wCACb,KAAKoB,WAAW;4CACd3B,gBAAgB,CAAC;4CACjB8B,WAAW;gDACTnB,sBAAsBa,OAAO,GAAG;gDAChCjB,aAAa;4CACf;4CACAM,OAAOO;wCACT;oCACF;gCACF;gCACA8G,sBAAsB;oCACpB,KAAKvG,WAAW;wCACd7B;wCACAE;wCACAI;wCACA4B,MAAM;wCACNnB,OAAOO;oCACT;gCACF;gCACAxB,SAASA;gCACT0B,WAAWA;gCACXT,OAAOgG,iBAAiB;;4BAEzB,CAACtI,YAAYV,6BACZ,KAACd;gCAEG8C;gCACA5B;gCACA2B;gCACAvB;gCACAI;gCACA4C;gCACAR;;;;oBAMTX,8BAAgB,KAAC4G;wBAAIhJ,WAAW,CAAC,EAAER,UAAU,eAAe,CAAC;kCAAG4C;;oBAChExC,sBAAsB8J,YACrB9J,kCAEA,KAACf;wBAAkB,GAAIoB,oBAAoB,CAAC,CAAC;;;;;;AAKvD;AAEA,OAAO,MAAMoK,oBAAoB9L,cAAckB,4BAA2B"}
@@ -22,6 +22,13 @@
22
22
  background-color: var(--theme-error-500);
23
23
  color: var(--theme-elevation-0);
24
24
  }
25
+
26
+ &--allow-create {
27
+ .rs__control {
28
+ border-top-right-radius: 0;
29
+ border-bottom-right-radius: 0;
30
+ }
31
+ }
25
32
  }
26
33
 
27
34
  html[data-theme='light'] {
@@ -2,10 +2,12 @@
2
2
 
3
3
  .relationship--multi-value-label {
4
4
  display: flex;
5
+ padding-inline-start: base(0.4);
6
+ gap: base(0.2);
5
7
 
6
8
  &__content {
7
9
  @extend %small;
8
- padding: 0 base(0.125) 0 base(0.25);
10
+ line-height: base(1.1);
9
11
  max-width: 150px;
10
12
  color: currentColor;
11
13
  display: flex;
@@ -23,16 +25,17 @@
23
25
  display: flex;
24
26
  align-items: center;
25
27
  justify-content: center;
26
- margin-left: base(0.25);
28
+ margin-left: base(0.2);
27
29
  pointer-events: all;
28
30
 
29
31
  .icon {
30
- width: base(0.75);
31
- height: base(0.75);
32
+ width: base(1);
33
+ height: base(1);
34
+ padding: base(0.1);
32
35
  }
33
36
 
34
37
  &:hover {
35
- background-color: var(--theme-elevation-100);
38
+ background-color: var(--theme-elevation-150);
36
39
  }
37
40
 
38
41
  &:focus-visible {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Select/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAwC,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAErF,OAAO,KAAsB,MAAM,OAAO,CAAA;AAG1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAKlD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAgHxC,eAAO,MAAM,WAAW,4BAAsC,CAAA;AAE9D,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Select/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAwB,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAErE,OAAO,KAAsB,MAAM,OAAO,CAAA;AAG1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAKlD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAgHxC,eAAO,MAAM,WAAW,4BAAsC,CAAA;AAE9D,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,CAAA"}