payload 0.20.1 → 0.20.4-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (363) hide show
  1. package/.eslintrc.js +21 -0
  2. package/CHANGELOG.md +33 -1
  3. package/components/elements.ts +1 -0
  4. package/components/index.js +2 -2
  5. package/components/styles.css +1 -1
  6. package/dist/admin/assets/fonts/SuisseIntl-Medium.woff +0 -0
  7. package/dist/admin/assets/fonts/SuisseIntl-Medium.woff2 +0 -0
  8. package/dist/admin/assets/fonts/merriweather-v30-latin-700.woff +0 -0
  9. package/dist/admin/assets/fonts/merriweather-v30-latin-700.woff2 +0 -0
  10. package/dist/admin/assets/fonts/merriweather-v30-latin-700italic.woff +0 -0
  11. package/dist/admin/assets/fonts/merriweather-v30-latin-700italic.woff2 +0 -0
  12. package/dist/admin/assets/fonts/merriweather-v30-latin-italic.woff +0 -0
  13. package/dist/admin/assets/fonts/merriweather-v30-latin-italic.woff2 +0 -0
  14. package/dist/admin/assets/fonts/merriweather-v30-latin-regular.woff +0 -0
  15. package/dist/admin/assets/fonts/merriweather-v30-latin-regular.woff2 +0 -0
  16. package/dist/admin/components/{forms/DraggableSection/ActionPanel → elements/ArrayAction}/index.d.ts +1 -2
  17. package/dist/admin/components/elements/ArrayAction/index.js +44 -0
  18. package/dist/admin/components/elements/ArrayAction/index.scss +54 -0
  19. package/dist/admin/components/elements/ArrayAction/types.d.ts +8 -0
  20. package/dist/admin/components/{forms/DraggableSection/ActionPanel → elements/ArrayAction}/types.js +0 -0
  21. package/dist/admin/components/elements/Banner/index.scss +13 -12
  22. package/dist/admin/components/elements/Button/index.js +2 -1
  23. package/dist/admin/components/elements/Button/index.scss +22 -21
  24. package/dist/admin/components/elements/Button/types.d.ts +2 -0
  25. package/dist/admin/components/elements/Card/index.js +3 -2
  26. package/dist/admin/components/elements/Card/index.scss +2 -2
  27. package/dist/admin/components/elements/Card/types.d.ts +1 -0
  28. package/dist/admin/components/{forms/DraggableSection/PositionPanel → elements/Collapsible}/index.d.ts +1 -2
  29. package/dist/admin/components/elements/Collapsible/index.js +43 -0
  30. package/dist/admin/components/elements/Collapsible/index.scss +113 -0
  31. package/dist/admin/components/elements/Collapsible/provider.d.ts +8 -0
  32. package/dist/admin/components/elements/Collapsible/provider.js +7 -0
  33. package/dist/admin/components/{forms/FieldTypeGutter → elements/Collapsible}/types.d.ts +7 -4
  34. package/dist/admin/components/{forms/DraggableSection/PositionPanel → elements/Collapsible}/types.js +0 -0
  35. package/dist/admin/components/elements/ColumnSelector/index.js +6 -3
  36. package/dist/admin/components/elements/ColumnSelector/index.scss +10 -1
  37. package/dist/admin/components/elements/DatePicker/index.scss +92 -47
  38. package/dist/admin/components/elements/DeleteDocument/index.js +5 -5
  39. package/dist/admin/components/elements/DeleteDocument/index.scss +5 -0
  40. package/dist/admin/components/elements/DeleteDocument/types.d.ts +1 -0
  41. package/dist/admin/components/elements/DuplicateDocument/index.js +1 -1
  42. package/dist/admin/components/elements/Eyebrow/index.js +4 -2
  43. package/dist/admin/components/elements/Eyebrow/index.scss +10 -6
  44. package/dist/admin/components/elements/FileDetails/index.scss +4 -4
  45. package/dist/admin/components/elements/GenerateConfirmation/index.js +1 -1
  46. package/dist/admin/components/elements/GenerateConfirmation/index.scss +5 -0
  47. package/dist/admin/components/elements/Gutter/index.d.ts +13 -0
  48. package/dist/admin/components/elements/Gutter/index.js +16 -0
  49. package/dist/admin/components/elements/Gutter/index.scss +19 -0
  50. package/dist/admin/components/elements/IDLabel/index.scss +2 -2
  51. package/dist/admin/components/elements/Loading/index.js +1 -1
  52. package/dist/admin/components/elements/Localizer/index.scss +2 -1
  53. package/dist/admin/components/elements/Nav/index.scss +12 -7
  54. package/dist/admin/components/elements/Paginator/ClickableArrow/index.scss +2 -2
  55. package/dist/admin/components/elements/Paginator/index.scss +5 -5
  56. package/dist/admin/components/elements/PerPage/index.js +1 -1
  57. package/dist/admin/components/elements/PerPage/index.scss +1 -2
  58. package/dist/admin/components/elements/Pill/index.scss +20 -16
  59. package/dist/admin/components/elements/Popup/PopupButton/index.js +2 -1
  60. package/dist/admin/components/elements/Popup/PopupButton/types.d.ts +1 -0
  61. package/dist/admin/components/elements/Popup/index.js +7 -7
  62. package/dist/admin/components/elements/Popup/index.scss +20 -17
  63. package/dist/admin/components/elements/Popup/types.d.ts +1 -0
  64. package/dist/admin/components/elements/ReactSelect/index.scss +20 -12
  65. package/dist/admin/components/elements/SortComplex/index.scss +3 -2
  66. package/dist/admin/components/elements/Status/index.js +2 -2
  67. package/dist/admin/components/elements/Status/index.scss +5 -0
  68. package/dist/admin/components/elements/StepNav/index.scss +0 -6
  69. package/dist/admin/components/elements/Table/index.js +2 -2
  70. package/dist/admin/components/elements/Table/index.scss +7 -4
  71. package/dist/admin/components/elements/Tooltip/index.scss +9 -9
  72. package/dist/admin/components/elements/UploadCard/index.scss +1 -1
  73. package/dist/admin/components/elements/WhereBuilder/Condition/Relationship/index.scss +3 -3
  74. package/dist/admin/components/elements/WhereBuilder/Condition/index.js +2 -2
  75. package/dist/admin/components/elements/WhereBuilder/index.js +1 -1
  76. package/dist/admin/components/elements/WhereBuilder/index.scss +1 -1
  77. package/dist/admin/components/forms/Error/index.scss +2 -3
  78. package/dist/admin/components/forms/FieldDescription/index.js +6 -2
  79. package/dist/admin/components/forms/FieldDescription/index.scss +1 -1
  80. package/dist/admin/components/forms/FieldDescription/types.d.ts +3 -2
  81. package/dist/admin/components/forms/FieldDescription/types.js +1 -1
  82. package/dist/admin/components/forms/Form/buildStateFromSchema/addFieldStatePromise.js +17 -0
  83. package/dist/admin/components/forms/Form/fieldReducer.js +18 -0
  84. package/dist/admin/components/forms/Label/index.scss +2 -2
  85. package/dist/admin/components/forms/RenderFields/index.js +2 -2
  86. package/dist/admin/components/forms/RenderFields/types.d.ts +1 -0
  87. package/dist/admin/components/forms/Submit/index.js +2 -2
  88. package/dist/admin/components/forms/field-types/Array/Array.js +93 -12
  89. package/dist/admin/components/forms/field-types/Array/index.scss +33 -35
  90. package/dist/admin/components/forms/field-types/Blocks/BlockSelector/BlockSelection/index.scss +3 -1
  91. package/dist/admin/components/forms/field-types/Blocks/Blocks.js +83 -37
  92. package/dist/admin/components/forms/{DraggableSection → field-types/Blocks}/SectionTitle/index.d.ts +0 -0
  93. package/dist/admin/components/forms/{DraggableSection → field-types/Blocks}/SectionTitle/index.js +8 -6
  94. package/dist/admin/components/forms/field-types/Blocks/SectionTitle/index.scss +49 -0
  95. package/dist/admin/components/forms/{DraggableSection → field-types/Blocks}/SectionTitle/types.d.ts +0 -1
  96. package/dist/admin/components/forms/{DraggableSection → field-types/Blocks}/SectionTitle/types.js +0 -0
  97. package/dist/admin/components/forms/field-types/Blocks/index.scss +53 -27
  98. package/dist/admin/components/forms/field-types/Checkbox/index.js +1 -1
  99. package/dist/admin/components/forms/field-types/Checkbox/index.scss +2 -2
  100. package/dist/admin/components/forms/field-types/Code/Code.js +4 -4
  101. package/dist/admin/components/forms/field-types/Code/index.scss +4 -4
  102. package/dist/admin/components/forms/{FieldTypeGutter → field-types/Collapsible}/index.d.ts +2 -2
  103. package/dist/admin/components/forms/field-types/Collapsible/index.js +44 -0
  104. package/dist/admin/components/forms/field-types/Collapsible/index.scss +11 -0
  105. package/dist/admin/components/forms/field-types/Collapsible/types.d.ts +8 -0
  106. package/dist/admin/components/forms/{DraggableSection → field-types/Collapsible}/types.js +0 -0
  107. package/dist/admin/components/forms/field-types/ConfirmPassword/index.js +2 -2
  108. package/dist/admin/components/forms/field-types/ConfirmPassword/index.scss +9 -9
  109. package/dist/admin/components/forms/field-types/DateTime/index.js +1 -1
  110. package/dist/admin/components/forms/field-types/DateTime/index.scss +1 -1
  111. package/dist/admin/components/forms/field-types/Email/index.js +1 -1
  112. package/dist/admin/components/forms/field-types/Email/index.scss +8 -8
  113. package/dist/admin/components/forms/field-types/Group/index.js +11 -14
  114. package/dist/admin/components/forms/field-types/Group/index.scss +25 -37
  115. package/dist/admin/components/forms/field-types/HiddenInput/index.js +1 -1
  116. package/dist/admin/components/forms/field-types/Number/index.js +2 -2
  117. package/dist/admin/components/forms/field-types/Number/index.scss +9 -9
  118. package/dist/admin/components/forms/field-types/Password/index.js +2 -2
  119. package/dist/admin/components/forms/field-types/Password/index.scss +9 -9
  120. package/dist/admin/components/forms/field-types/Point/index.js +4 -4
  121. package/dist/admin/components/forms/field-types/Point/index.scss +9 -9
  122. package/dist/admin/components/forms/field-types/RadioGroup/Input.d.ts +22 -0
  123. package/dist/admin/components/forms/field-types/RadioGroup/Input.js +41 -0
  124. package/dist/admin/components/forms/field-types/RadioGroup/RadioInput/index.js +1 -1
  125. package/dist/admin/components/forms/field-types/RadioGroup/RadioInput/index.scss +4 -4
  126. package/dist/admin/components/forms/field-types/RadioGroup/RadioInput/types.d.ts +2 -1
  127. package/dist/admin/components/forms/field-types/RadioGroup/index.d.ts +0 -1
  128. package/dist/admin/components/forms/field-types/RadioGroup/index.js +2 -35
  129. package/dist/admin/components/forms/field-types/RadioGroup/types.d.ts +1 -0
  130. package/dist/admin/components/forms/field-types/Relationship/index.js +1 -1
  131. package/dist/admin/components/forms/field-types/Relationship/index.scss +4 -4
  132. package/dist/admin/components/forms/field-types/RichText/RichText.js +30 -31
  133. package/dist/admin/components/forms/field-types/RichText/elements/link/index.js +1 -1
  134. package/dist/admin/components/forms/field-types/RichText/elements/link/index.scss +6 -6
  135. package/dist/admin/components/forms/field-types/RichText/elements/ol/index.d.ts +1 -0
  136. package/dist/admin/components/forms/field-types/RichText/elements/ol/index.js +2 -1
  137. package/dist/admin/components/forms/field-types/RichText/elements/ol/index.scss +7 -0
  138. package/dist/admin/components/forms/field-types/RichText/elements/relationship/Button/index.js +1 -1
  139. package/dist/admin/components/forms/field-types/RichText/elements/relationship/Button/index.scss +5 -3
  140. package/dist/admin/components/forms/field-types/RichText/elements/relationship/Element/index.scss +13 -2
  141. package/dist/admin/components/forms/field-types/RichText/elements/ul/index.d.ts +1 -0
  142. package/dist/admin/components/forms/field-types/RichText/elements/ul/index.js +2 -1
  143. package/dist/admin/components/forms/field-types/RichText/elements/ul/index.scss +7 -0
  144. package/dist/admin/components/forms/field-types/RichText/elements/upload/Element/EditModal/index.scss +6 -2
  145. package/dist/admin/components/forms/field-types/RichText/elements/upload/Element/index.js +1 -1
  146. package/dist/admin/components/forms/field-types/RichText/elements/upload/Element/index.scss +17 -4
  147. package/dist/admin/components/forms/field-types/RichText/elements/upload/addSwapModals.scss +2 -0
  148. package/dist/admin/components/forms/field-types/RichText/index.scss +66 -20
  149. package/dist/admin/components/forms/field-types/Select/Input.js +1 -1
  150. package/dist/admin/components/forms/field-types/Select/index.scss +1 -1
  151. package/dist/admin/components/forms/field-types/Tabs/index.d.ts +5 -0
  152. package/dist/admin/components/forms/field-types/Tabs/index.js +36 -0
  153. package/dist/admin/components/forms/field-types/Tabs/index.scss +91 -0
  154. package/dist/admin/components/forms/field-types/Tabs/types.d.ts +8 -0
  155. package/dist/admin/components/forms/{FieldTypeGutter → field-types/Tabs}/types.js +0 -0
  156. package/dist/admin/components/forms/field-types/Text/Input.js +2 -2
  157. package/dist/admin/components/forms/field-types/Text/index.scss +9 -9
  158. package/dist/admin/components/forms/field-types/Textarea/Input.js +2 -2
  159. package/dist/admin/components/forms/field-types/Textarea/index.scss +1 -1
  160. package/dist/admin/components/forms/field-types/Upload/Add/index.js +1 -3
  161. package/dist/admin/components/forms/field-types/Upload/Add/index.scss +2 -0
  162. package/dist/admin/components/forms/field-types/Upload/SelectExisting/index.scss +2 -0
  163. package/dist/admin/components/forms/field-types/Upload/index.scss +2 -2
  164. package/dist/admin/components/forms/field-types/index.d.ts +2 -0
  165. package/dist/admin/components/forms/field-types/index.js +4 -0
  166. package/dist/admin/components/forms/field-types/rowReducer.d.ts +39 -1
  167. package/dist/admin/components/forms/field-types/rowReducer.js +18 -5
  168. package/dist/admin/components/forms/useField/index.js +4 -5
  169. package/dist/admin/components/graphics/Account/index.js +14 -4
  170. package/dist/admin/components/graphics/Icon/index.js +9 -3
  171. package/dist/admin/components/graphics/Logo/index.js +16 -10
  172. package/dist/admin/components/icons/Calendar/index.scss +1 -1
  173. package/dist/admin/components/icons/Check/index.scss +1 -1
  174. package/dist/admin/components/icons/Chevron/index.scss +1 -1
  175. package/dist/admin/components/icons/CloseMenu/index.scss +1 -1
  176. package/dist/admin/components/icons/Copy/index.scss +1 -1
  177. package/dist/admin/components/icons/Drag/index.d.ts +6 -0
  178. package/dist/admin/components/icons/Drag/index.js +13 -0
  179. package/dist/admin/components/icons/Drag/index.scss +10 -0
  180. package/dist/admin/components/icons/Edit/index.scss +1 -1
  181. package/dist/admin/components/icons/IndentLeft/index.scss +2 -2
  182. package/dist/admin/components/icons/IndentRight/index.js +1 -1
  183. package/dist/admin/components/icons/IndentRight/index.scss +2 -2
  184. package/dist/admin/components/icons/LogOut/index.scss +1 -1
  185. package/dist/admin/components/icons/Menu/index.d.ts +1 -0
  186. package/dist/admin/components/icons/Menu/index.js +5 -4
  187. package/dist/admin/components/icons/Menu/index.scss +7 -0
  188. package/dist/admin/components/icons/More/index.d.ts +6 -0
  189. package/dist/admin/components/icons/More/index.js +10 -0
  190. package/dist/admin/components/icons/More/index.scss +10 -0
  191. package/dist/admin/components/icons/Plus/index.scss +1 -1
  192. package/dist/admin/components/icons/Relationship/index.scss +1 -1
  193. package/dist/admin/components/icons/Search/index.d.ts +1 -0
  194. package/dist/admin/components/icons/Search/index.js +4 -3
  195. package/dist/admin/components/icons/Search/index.scss +11 -0
  196. package/dist/admin/components/icons/Swap/index.scss +1 -1
  197. package/dist/admin/components/icons/Upload/index.scss +1 -1
  198. package/dist/admin/components/icons/X/index.d.ts +3 -1
  199. package/dist/admin/components/icons/X/index.js +4 -1
  200. package/dist/admin/components/icons/X/index.scss +1 -1
  201. package/dist/admin/components/modals/LeaveWithoutSaving/index.js +1 -1
  202. package/dist/admin/components/modals/LeaveWithoutSaving/index.scss +5 -0
  203. package/dist/admin/components/modals/StayLoggedIn/index.js +1 -1
  204. package/dist/admin/components/modals/StayLoggedIn/index.scss +5 -0
  205. package/dist/admin/components/templates/Default/index.scss +1 -7
  206. package/dist/admin/components/utilities/DocumentInfo/index.js +11 -0
  207. package/dist/admin/components/utilities/DocumentInfo/types.d.ts +2 -0
  208. package/dist/admin/components/utilities/Theme/index.d.ts +13 -0
  209. package/dist/admin/components/utilities/Theme/index.js +47 -0
  210. package/dist/admin/components/views/Account/Default.js +9 -4
  211. package/dist/admin/components/views/Account/ToggleTheme/index.d.ts +2 -0
  212. package/dist/admin/components/views/Account/ToggleTheme/index.js +23 -0
  213. package/dist/admin/components/views/Account/index.js +12 -14
  214. package/dist/admin/components/views/Account/index.scss +37 -21
  215. package/dist/admin/components/views/CreateFirstUser/index.js +4 -6
  216. package/dist/admin/components/views/Dashboard/Default.js +5 -4
  217. package/dist/admin/components/views/Dashboard/index.scss +3 -11
  218. package/dist/admin/components/views/Global/Default.js +3 -2
  219. package/dist/admin/components/views/Global/index.js +12 -14
  220. package/dist/admin/components/views/Global/index.scss +22 -22
  221. package/dist/admin/components/views/NotFound/index.d.ts +0 -1
  222. package/dist/admin/components/views/NotFound/index.js +2 -2
  223. package/dist/admin/components/views/Version/Compare/index.scss +3 -3
  224. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Iterable/index.scss +4 -4
  225. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Nested/index.scss +1 -1
  226. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +2 -1
  227. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Relationship/index.scss +1 -1
  228. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Tabs/index.d.ts +7 -0
  229. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Tabs/index.js +8 -0
  230. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Text/index.js +2 -1
  231. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Text/index.scss +1 -1
  232. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/index.d.ts +6 -0
  233. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/index.js +3 -0
  234. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/styles.d.ts +13 -0
  235. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/styles.js +13 -0
  236. package/dist/admin/components/views/Version/RenderFieldsToDiff/index.js +5 -1
  237. package/dist/admin/components/views/Version/Restore/index.js +1 -1
  238. package/dist/admin/components/views/Version/Restore/index.scss +5 -0
  239. package/dist/admin/components/views/Version/Version.js +2 -1
  240. package/dist/admin/components/views/Version/index.scss +4 -7
  241. package/dist/admin/components/views/Versions/index.js +3 -2
  242. package/dist/admin/components/views/Versions/index.scss +2 -12
  243. package/dist/admin/components/views/collections/Edit/Auth/index.scss +3 -2
  244. package/dist/admin/components/views/collections/Edit/Default.js +5 -4
  245. package/dist/admin/components/views/collections/Edit/Upload/index.scss +5 -5
  246. package/dist/admin/components/views/collections/Edit/index.js +16 -18
  247. package/dist/admin/components/views/collections/Edit/index.scss +20 -21
  248. package/dist/admin/components/views/collections/List/Cell/field-types/Checkbox/index.scss +4 -4
  249. package/dist/admin/components/views/collections/List/Cell/field-types/Code/index.scss +4 -4
  250. package/dist/admin/components/views/collections/List/Cell/field-types/Relationship/index.d.ts +1 -0
  251. package/dist/admin/components/views/collections/List/Cell/field-types/Relationship/index.js +41 -34
  252. package/dist/admin/components/views/collections/List/Cell/field-types/Relationship/index.scss +3 -0
  253. package/dist/admin/components/views/collections/List/Cell/field-types/Upload/index.d.ts +0 -5
  254. package/dist/admin/components/views/collections/List/Cell/field-types/Upload/index.js +0 -4
  255. package/dist/admin/components/views/collections/List/Cell/field-types/index.d.ts +1 -3
  256. package/dist/admin/components/views/collections/List/Cell/field-types/index.js +1 -2
  257. package/dist/admin/components/views/collections/List/Default.js +8 -6
  258. package/dist/admin/components/views/collections/List/RelationshipProvider/index.d.ts +19 -0
  259. package/dist/admin/components/views/collections/List/RelationshipProvider/index.js +46 -0
  260. package/dist/admin/components/views/collections/List/RelationshipProvider/reducer.d.ts +18 -0
  261. package/dist/admin/components/views/collections/List/RelationshipProvider/reducer.js +34 -0
  262. package/dist/admin/components/views/collections/List/buildColumns.js +26 -31
  263. package/dist/admin/components/views/collections/List/getInitialColumns.js +25 -23
  264. package/dist/admin/components/views/collections/List/index.js +2 -2
  265. package/dist/admin/components/views/collections/List/index.scss +4 -15
  266. package/dist/admin/index.js +7 -5
  267. package/dist/admin/scss/app.scss +52 -14
  268. package/dist/admin/scss/colors.scss +245 -0
  269. package/dist/admin/scss/fonts.scss +41 -14
  270. package/dist/admin/scss/resets.scss +1 -0
  271. package/dist/admin/scss/styles.scss +0 -2
  272. package/dist/admin/scss/toastify.scss +12 -8
  273. package/dist/admin/scss/type.scss +11 -9
  274. package/dist/admin/scss/vars.scss +50 -53
  275. package/dist/admin/utilities/flattenTopLevelFields.d.ts +3 -0
  276. package/dist/admin/utilities/flattenTopLevelFields.js +30 -0
  277. package/dist/admin/utilities/getOffsetTop.d.ts +1 -2
  278. package/dist/admin/utilities/getOffsetTop.js +1 -1
  279. package/dist/admin/utilities/scrollToID.d.ts +1 -0
  280. package/dist/admin/utilities/scrollToID.js +10 -0
  281. package/dist/auth/operations/access.js +6 -1
  282. package/dist/bin/generateTypes.js +11 -2
  283. package/dist/collections/graphql/init.js +2 -2
  284. package/dist/collections/operations/local/create.js +1 -1
  285. package/dist/collections/tests/collections.spec.js +1 -78
  286. package/dist/config/defaults.js +1 -2
  287. package/dist/config/schema.js +2 -2
  288. package/dist/config/types.d.ts +2 -2
  289. package/dist/express/admin.js +2 -2
  290. package/dist/fields/config/sanitize.js +8 -1
  291. package/dist/fields/config/schema.d.ts +2 -0
  292. package/dist/fields/config/schema.js +19 -7
  293. package/dist/fields/config/types.d.ts +19 -11
  294. package/dist/fields/config/types.js +2 -2
  295. package/dist/fields/hooks/afterChange/promise.js +18 -2
  296. package/dist/fields/hooks/afterRead/promise.js +22 -2
  297. package/dist/fields/hooks/beforeChange/promise.js +25 -2
  298. package/dist/fields/hooks/beforeValidate/promise.js +20 -2
  299. package/dist/fields/richText/recurseNestedFields.js +15 -1
  300. package/dist/graphql/schema/buildMutationInputType.d.ts +4 -1
  301. package/dist/graphql/schema/buildMutationInputType.js +94 -70
  302. package/dist/graphql/schema/buildObjectType.d.ts +5 -3
  303. package/dist/graphql/schema/buildObjectType.js +114 -71
  304. package/dist/graphql/schema/buildPoliciesType.js +9 -1
  305. package/dist/graphql/schema/buildWhereInputType.js +2 -2
  306. package/dist/graphql/schema/fieldToWhereInputSchemaMap.js +56 -7
  307. package/dist/graphql/schema/withNullableType.js +1 -1
  308. package/dist/index.d.ts +2 -1
  309. package/dist/index.js +9 -7
  310. package/dist/mongoose/buildSchema.js +28 -7
  311. package/dist/mongoose/connect.d.ts +1 -1
  312. package/dist/mongoose/connect.js +24 -19
  313. package/dist/mongoose/testCredentials.d.ts +7 -7
  314. package/dist/mongoose/testCredentials.js +1 -1
  315. package/dist/utilities/mapAsync.d.ts +1 -0
  316. package/dist/utilities/mapAsync.js +8 -0
  317. package/dist/webpack/getBaseConfig.js +1 -2
  318. package/docs/admin/customizing-css.mdx +16 -28
  319. package/docs/fields/collapsible.mdx +44 -0
  320. package/docs/fields/date.mdx +1 -1
  321. package/docs/fields/email.mdx +1 -1
  322. package/docs/fields/group.mdx +1 -1
  323. package/docs/fields/number.mdx +1 -1
  324. package/docs/fields/overview.mdx +1 -0
  325. package/docs/fields/point.mdx +1 -1
  326. package/docs/fields/radio.mdx +1 -1
  327. package/docs/fields/relationship.mdx +1 -1
  328. package/docs/fields/rich-text.mdx +1 -1
  329. package/docs/fields/row.mdx +1 -1
  330. package/docs/fields/select.mdx +1 -1
  331. package/docs/fields/tabs.mdx +9 -0
  332. package/docs/fields/text.mdx +1 -1
  333. package/docs/fields/textarea.mdx +1 -1
  334. package/docs/fields/ui.mdx +1 -1
  335. package/docs/fields/upload.mdx +1 -1
  336. package/package.json +13 -11
  337. package/scss/index.scss +0 -7
  338. package/dist/admin/assets/fonts/SuisseIntl-Light.woff +0 -0
  339. package/dist/admin/assets/fonts/SuisseIntl-Light.woff2 +0 -0
  340. package/dist/admin/assets/fonts/SuisseIntl-Thin.woff +0 -0
  341. package/dist/admin/assets/fonts/SuisseIntl-Thin.woff2 +0 -0
  342. package/dist/admin/components/forms/DraggableSection/ActionPanel/index.js +0 -22
  343. package/dist/admin/components/forms/DraggableSection/ActionPanel/index.scss +0 -12
  344. package/dist/admin/components/forms/DraggableSection/ActionPanel/types.d.ts +0 -11
  345. package/dist/admin/components/forms/DraggableSection/PositionPanel/index.js +0 -18
  346. package/dist/admin/components/forms/DraggableSection/PositionPanel/index.scss +0 -21
  347. package/dist/admin/components/forms/DraggableSection/PositionPanel/types.d.ts +0 -6
  348. package/dist/admin/components/forms/DraggableSection/SectionTitle/index.scss +0 -37
  349. package/dist/admin/components/forms/DraggableSection/index.d.ts +0 -5
  350. package/dist/admin/components/forms/DraggableSection/index.js +0 -40
  351. package/dist/admin/components/forms/DraggableSection/index.scss +0 -113
  352. package/dist/admin/components/forms/DraggableSection/types.d.ts +0 -24
  353. package/dist/admin/components/forms/FieldTypeGutter/context.d.ts +0 -6
  354. package/dist/admin/components/forms/FieldTypeGutter/context.js +0 -9
  355. package/dist/admin/components/forms/FieldTypeGutter/index.js +0 -18
  356. package/dist/admin/components/forms/FieldTypeGutter/index.scss +0 -87
  357. package/dist/admin/components/views/NotFound/index.scss +0 -10
  358. package/dist/collections/tests/uploads.spec.d.ts +0 -1
  359. package/dist/collections/tests/uploads.spec.js +0 -365
  360. package/dist/errors/errors.spec.d.ts +0 -1
  361. package/dist/errors/errors.spec.js +0 -29
  362. package/dist/utilities/flattenTopLevelFields.d.ts +0 -2
  363. package/dist/utilities/flattenTopLevelFields.js +0 -16
@@ -41,7 +41,7 @@ const Restore = ({ collection, global, className, versionID, originalDocID, vers
41
41
  return (React.createElement(Fragment, null,
42
42
  React.createElement(Pill, { onClick: () => toggle(modalSlug), className: [baseClass, className].filter(Boolean).join(' ') }, "Restore this version"),
43
43
  React.createElement(Modal, { slug: modalSlug, className: `${baseClass}__modal` },
44
- React.createElement(MinimalTemplate, null,
44
+ React.createElement(MinimalTemplate, { className: `${baseClass}__modal-template` },
45
45
  React.createElement("h1", null, "Confirm version restoration"),
46
46
  React.createElement("p", null, restoreMessage),
47
47
  React.createElement(Button, { buttonStyle: "secondary", type: "button", onClick: processing ? undefined : () => toggle(modalSlug) }, "Cancel"),
@@ -17,4 +17,9 @@
17
17
  margin-right: $baseline;
18
18
  }
19
19
  }
20
+
21
+ &__modal-template {
22
+ position: relative;
23
+ z-index: 1;
24
+ }
20
25
  }
@@ -16,6 +16,7 @@ import RenderFieldsToDiff from './RenderFieldsToDiff';
16
16
  import fieldComponents from './RenderFieldsToDiff/fields';
17
17
  import { fieldAffectsData } from '../../../../fields/config/types';
18
18
  import { useLocale } from '../../utilities/Locale';
19
+ import { Gutter } from '../../elements/Gutter';
19
20
  import './index.scss';
20
21
  const baseClass = 'view-version';
21
22
  const VersionView = ({ collection, global }) => {
@@ -142,7 +143,7 @@ const VersionView = ({ collection, global }) => {
142
143
  return (React.createElement("div", { className: baseClass },
143
144
  React.createElement(Meta, { title: metaTitle, description: metaDesc }),
144
145
  React.createElement(Eyebrow, null),
145
- React.createElement("div", { className: `${baseClass}__wrap` },
146
+ React.createElement(Gutter, { className: `${baseClass}__wrap` },
146
147
  React.createElement("div", { className: `${baseClass}__intro` },
147
148
  (doc === null || doc === void 0 ? void 0 : doc.autosave) ? 'Autosaved version ' : 'Version',
148
149
  ' ',
@@ -5,9 +5,7 @@
5
5
  margin-bottom: base(2);
6
6
 
7
7
  &__wrap {
8
- padding: base(3);
9
- margin-right: base(2);
10
- background: white;
8
+ padding-top: base(1);
11
9
  }
12
10
 
13
11
  &__header {
@@ -27,7 +25,7 @@
27
25
  margin-left: base(-.5);
28
26
  margin-right: base(-.5);
29
27
 
30
- > * {
28
+ >* {
31
29
  margin-left: base(.5);
32
30
  margin-right: base(.5);
33
31
  flex-basis: 100%;
@@ -40,8 +38,7 @@
40
38
 
41
39
  @include mid-break {
42
40
  &__wrap {
43
- padding: $baseline;
44
- margin-right: 0;
41
+ padding-top: 0;
45
42
  }
46
43
 
47
44
  &__intro,
@@ -53,7 +50,7 @@
53
50
  display: block;
54
51
  margin: 0 base(-.5) base(2);
55
52
 
56
- > * {
53
+ >* {
57
54
  margin-bottom: base(.5);
58
55
  }
59
56
  }
@@ -14,8 +14,9 @@ import Paginator from '../../elements/Paginator';
14
14
  import PerPage from '../../elements/PerPage';
15
15
  import { useSearchParams } from '../../utilities/SearchParams';
16
16
  import { Banner, Pill } from '../..';
17
- import './index.scss';
18
17
  import { shouldIncrementVersionCount } from '../../../../versions/shouldIncrementVersionCount';
18
+ import { Gutter } from '../../elements/Gutter';
19
+ import './index.scss';
19
20
  const baseClass = 'versions';
20
21
  const Versions = ({ collection, global }) => {
21
22
  var _a, _b, _c;
@@ -142,7 +143,7 @@ const Versions = ({ collection, global }) => {
142
143
  return (React.createElement("div", { className: baseClass },
143
144
  React.createElement(Meta, { title: metaTitle, description: metaDesc }),
144
145
  React.createElement(Eyebrow, null),
145
- React.createElement("div", { className: `${baseClass}__wrap` },
146
+ React.createElement(Gutter, { className: `${baseClass}__wrap` },
146
147
  React.createElement("header", { className: `${baseClass}__header` },
147
148
  React.createElement("div", { className: `${baseClass}__intro` }, "Showing versions for:"),
148
149
  useIDLabel && (React.createElement(IDLabel, { id: doc === null || doc === void 0 ? void 0 : doc.id })),
@@ -5,9 +5,7 @@
5
5
  margin-bottom: base(2);
6
6
 
7
7
  &__wrap {
8
- padding: base(3);
9
- margin-right: base(2);
10
- background: white;
8
+ padding-top: base(1);
11
9
  }
12
10
 
13
11
  &__header {
@@ -52,15 +50,7 @@
52
50
 
53
51
  @include mid-break {
54
52
  &__wrap {
55
- padding: $baseline 0;
56
- margin-right: 0;
57
- }
58
-
59
- &__header,
60
- .table,
61
- &__page-controls {
62
- padding-left: $baseline;
63
- padding-right: $baseline;
53
+ padding-top: 0;
64
54
  }
65
55
 
66
56
  &__page-controls {
@@ -3,7 +3,7 @@
3
3
  .auth-fields {
4
4
  margin: base(1.5) 0 base(2);
5
5
  padding: base(2) base(2) base(1.5);
6
- background: $color-background-gray;
6
+ background: var(--theme-elevation-50);
7
7
 
8
8
  .btn {
9
9
  margin-top: 0;
@@ -25,8 +25,9 @@
25
25
 
26
26
  @keyframes highlight {
27
27
  0% {
28
- background: $color-green;
28
+ background: var(--theme-success-500);
29
29
  }
30
+
30
31
  100% {
31
32
  background: none;
32
33
  }
@@ -24,6 +24,7 @@ import Publish from '../../../elements/Publish';
24
24
  import SaveDraft from '../../../elements/SaveDraft';
25
25
  import { useDocumentInfo } from '../../../utilities/DocumentInfo';
26
26
  import { OperationContext } from '../../../utilities/OperationProvider';
27
+ import { Gutter } from '../../../elements/Gutter';
27
28
  import './index.scss';
28
29
  const baseClass = 'collection-edit';
29
30
  const DefaultEditView = (props) => {
@@ -46,7 +47,7 @@ const DefaultEditView = (props) => {
46
47
  React.createElement(Meta, { title: `${isEditing ? 'Editing' : 'Creating'} - ${collection.labels.singular}`, description: `${isEditing ? 'Editing' : 'Creating'} - ${collection.labels.singular}`, keywords: `${collection.labels.singular}, Payload, CMS` }),
47
48
  React.createElement(Eyebrow, null),
48
49
  !(((_a = collection.versions) === null || _a === void 0 ? void 0 : _a.drafts) && ((_c = (_b = collection.versions) === null || _b === void 0 ? void 0 : _b.drafts) === null || _c === void 0 ? void 0 : _c.autosave)) && (React.createElement(LeaveWithoutSaving, null)),
49
- React.createElement("div", { className: `${baseClass}__edit` },
50
+ React.createElement(Gutter, { className: `${baseClass}__edit` },
50
51
  React.createElement("header", { className: `${baseClass}__header` },
51
52
  React.createElement("h1", null,
52
53
  React.createElement(RenderTitle, { ...{ data, useAsTitle, fallback: '[Untitled]' } }))),
@@ -59,18 +60,18 @@ const DefaultEditView = (props) => {
59
60
  React.createElement("ul", { className: `${baseClass}__collection-actions` },
60
61
  ((_d = permissions === null || permissions === void 0 ? void 0 : permissions.create) === null || _d === void 0 ? void 0 : _d.permission) && (React.createElement(React.Fragment, null,
61
62
  React.createElement("li", null,
62
- React.createElement(Link, { to: `${admin}/collections/${slug}/create` }, "Create New")),
63
+ React.createElement(Link, { id: "action-create", to: `${admin}/collections/${slug}/create` }, "Create New")),
63
64
  !disableDuplicate && (React.createElement("li", null,
64
65
  React.createElement(DuplicateDocument, { slug: slug }))))),
65
66
  ((_e = permissions === null || permissions === void 0 ? void 0 : permissions.delete) === null || _e === void 0 ? void 0 : _e.permission) && (React.createElement("li", null,
66
- React.createElement(DeleteDocument, { collection: collection, id: id })))),
67
+ React.createElement(DeleteDocument, { collection: collection, id: id, buttonId: "action-delete" })))),
67
68
  React.createElement("div", { className: `${baseClass}__document-actions${((((_f = collection.versions) === null || _f === void 0 ? void 0 : _f.drafts) && !((_h = (_g = collection.versions) === null || _g === void 0 ? void 0 : _g.drafts) === null || _h === void 0 ? void 0 : _h.autosave)) || (isEditing && preview)) ? ` ${baseClass}__document-actions--has-2` : ''}` },
68
69
  (preview && (!((_j = collection.versions) === null || _j === void 0 ? void 0 : _j.drafts) || ((_l = (_k = collection.versions) === null || _k === void 0 ? void 0 : _k.drafts) === null || _l === void 0 ? void 0 : _l.autosave))) && (React.createElement(PreviewButton, { generatePreviewURL: preview, data: data })),
69
70
  hasSavePermission && (React.createElement(React.Fragment, null,
70
71
  ((_m = collection.versions) === null || _m === void 0 ? void 0 : _m.drafts) && (React.createElement(React.Fragment, null,
71
72
  !collection.versions.drafts.autosave && (React.createElement(SaveDraft, null)),
72
73
  React.createElement(Publish, null))),
73
- !((_o = collection.versions) === null || _o === void 0 ? void 0 : _o.drafts) && (React.createElement(FormSubmit, null, "Save"))))),
74
+ !((_o = collection.versions) === null || _o === void 0 ? void 0 : _o.drafts) && (React.createElement(FormSubmit, { buttonId: "action-save" }, "Save"))))),
74
75
  React.createElement("div", { className: `${baseClass}__sidebar-fields` },
75
76
  (isEditing && preview && (((_p = collection.versions) === null || _p === void 0 ? void 0 : _p.drafts) && !((_r = (_q = collection.versions) === null || _q === void 0 ? void 0 : _q.drafts) === null || _r === void 0 ? void 0 : _r.autosave))) && (React.createElement(PreviewButton, { generatePreviewURL: preview, data: data })),
76
77
  ((_s = collection.versions) === null || _s === void 0 ? void 0 : _s.drafts) && (React.createElement(React.Fragment, null,
@@ -3,7 +3,7 @@
3
3
  .file-field {
4
4
  position: relative;
5
5
  margin: base(1.5) 0 base(2);
6
- background: $color-background-gray;
6
+ background: var(--theme-elevation-50);
7
7
 
8
8
  .tooltip.error-message {
9
9
  z-index: 3;
@@ -22,7 +22,7 @@
22
22
 
23
23
  &__file-selected,
24
24
  &__drop-zone {
25
- background: $color-background-gray;
25
+ background: var(--theme-elevation-100);
26
26
  position: relative;
27
27
  z-index: 2;
28
28
  padding: base(2);
@@ -31,7 +31,7 @@
31
31
  }
32
32
 
33
33
  &__drop-zone {
34
- border: 1px dotted $color-gray;
34
+ border: 1px dotted var(--theme-elevation-400);
35
35
 
36
36
  .btn {
37
37
  margin: 0 $baseline 0 0;
@@ -52,8 +52,8 @@
52
52
 
53
53
  &--dragging {
54
54
  .file-field__drop-zone {
55
- border-color: $color-green;
56
- background: rgba($color-green, .15);
55
+ border-color: var(--theme-success-500);
56
+ background: var(--theme-success-150);
57
57
  }
58
58
  }
59
59
 
@@ -8,7 +8,6 @@ import RenderCustomComponent from '../../../utilities/RenderCustomComponent';
8
8
  import DefaultEdit from './Default';
9
9
  import formatFields from './formatFields';
10
10
  import buildStateFromSchema from '../../../forms/Form/buildStateFromSchema';
11
- import { NegativeFieldGutterProvider } from '../../../forms/FieldTypeGutter/context';
12
11
  import { useLocale } from '../../../utilities/Locale';
13
12
  import { useDocumentInfo } from '../../../utilities/DocumentInfo';
14
13
  const EditView = (props) => {
@@ -25,7 +24,7 @@ const EditView = (props) => {
25
24
  const { setStepNav } = useStepNav();
26
25
  const [initialState, setInitialState] = useState({});
27
26
  const { permissions, user } = useAuth();
28
- const { getVersions } = useDocumentInfo();
27
+ const { getVersions, preferences } = useDocumentInfo();
29
28
  const onSave = useCallback(async (json) => {
30
29
  var _a;
31
30
  getVersions();
@@ -37,7 +36,7 @@ const EditView = (props) => {
37
36
  setInitialState(state);
38
37
  }
39
38
  }, [admin, collection, history, isEditing, getVersions, user, id, locale]);
40
- const [{ data, isLoading, isError }] = usePayloadAPI((isEditing ? `${serverURL}${api}/${slug}/${id}` : null), { initialParams: { 'fallback-locale': 'null', depth: 0, draft: 'true' } });
39
+ const [{ data, isLoading: isLoadingDocument, isError }] = usePayloadAPI((isEditing ? `${serverURL}${api}/${slug}/${id}` : null), { initialParams: { 'fallback-locale': 'null', depth: 0, draft: 'true' } });
41
40
  const dataToRender = (locationState === null || locationState === void 0 ? void 0 : locationState.data) || data;
42
41
  useEffect(() => {
43
42
  const nav = [{
@@ -71,7 +70,7 @@ const EditView = (props) => {
71
70
  setStepNav(nav);
72
71
  }, [setStepNav, isEditing, pluralLabel, dataToRender, slug, useAsTitle, admin]);
73
72
  useEffect(() => {
74
- if (isLoading) {
73
+ if (isLoadingDocument) {
75
74
  return;
76
75
  }
77
76
  const awaitInitialState = async () => {
@@ -79,7 +78,7 @@ const EditView = (props) => {
79
78
  setInitialState(state);
80
79
  };
81
80
  awaitInitialState();
82
- }, [dataToRender, fields, isEditing, id, user, locale, isLoading]);
81
+ }, [dataToRender, fields, isEditing, id, user, locale, isLoadingDocument]);
83
82
  if (isError) {
84
83
  return (React.createElement(Redirect, { to: `${admin}/not-found` }));
85
84
  }
@@ -87,18 +86,17 @@ const EditView = (props) => {
87
86
  const apiURL = `${serverURL}${api}/${slug}/${id}${collection.versions.drafts ? '?draft=true' : ''}`;
88
87
  const action = `${serverURL}${api}/${slug}${isEditing ? `/${id}` : ''}?locale=${locale}&depth=0&fallback-locale=null`;
89
88
  const hasSavePermission = (isEditing && ((_b = collectionPermissions === null || collectionPermissions === void 0 ? void 0 : collectionPermissions.update) === null || _b === void 0 ? void 0 : _b.permission)) || (!isEditing && ((_c = collectionPermissions === null || collectionPermissions === void 0 ? void 0 : collectionPermissions.create) === null || _c === void 0 ? void 0 : _c.permission));
90
- return (React.createElement(NegativeFieldGutterProvider, { allow: true },
91
- React.createElement(RenderCustomComponent, { DefaultComponent: DefaultEdit, CustomComponent: CustomEdit, componentProps: {
92
- isLoading,
93
- data: dataToRender,
94
- collection,
95
- permissions: collectionPermissions,
96
- isEditing,
97
- onSave,
98
- initialState,
99
- hasSavePermission,
100
- apiURL,
101
- action,
102
- } })));
89
+ return (React.createElement(RenderCustomComponent, { DefaultComponent: DefaultEdit, CustomComponent: CustomEdit, componentProps: {
90
+ isLoading: isLoadingDocument || !preferences,
91
+ data: dataToRender,
92
+ collection,
93
+ permissions: collectionPermissions,
94
+ isEditing,
95
+ onSave,
96
+ initialState,
97
+ hasSavePermission,
98
+ apiURL,
99
+ action,
100
+ } }));
103
101
  };
104
102
  export default EditView;
@@ -35,10 +35,8 @@
35
35
  }
36
36
 
37
37
  &__edit {
38
- background: white;
39
- padding: base(5) base(6) base(6);
40
- margin-bottom: base(1.5);
41
- overflow-x: auto;
38
+ padding-top: base(1);
39
+ padding-bottom: base(2);
42
40
  flex-grow: 1;
43
41
  }
44
42
 
@@ -49,6 +47,7 @@
49
47
  top: 0;
50
48
  right: 0;
51
49
  overflow: visible;
50
+ border-left: 1px solid var(--theme-elevation-100);
52
51
  }
53
52
 
54
53
  &__sidebar {
@@ -76,20 +75,25 @@
76
75
  position: sticky;
77
76
  top: 0;
78
77
  z-index: $z-nav;
78
+
79
+ >* {
80
+ position: relative;
81
+ z-index: 1;
82
+ }
79
83
  }
80
84
 
81
85
  &__document-actions--has-2 {
82
86
  display: flex;
83
87
 
84
- > * {
88
+ >* {
85
89
  width: calc(50% - #{base(.5)});
86
90
  }
87
91
 
88
- > *:first-child {
92
+ >*:first-child {
89
93
  margin-right: base(.5);
90
94
  }
91
95
 
92
- > *:last-child {
96
+ >*:last-child {
93
97
  margin-left: base(.5);
94
98
  }
95
99
 
@@ -134,12 +138,14 @@
134
138
  }
135
139
 
136
140
  &__label {
137
- color: $color-gray;
141
+ color: var(--theme-elevation-400);
138
142
  }
139
143
 
140
144
  &__collection-actions,
141
145
  &__api-url {
142
- a, button {
146
+
147
+ a,
148
+ button {
143
149
  cursor: pointer;
144
150
  font-weight: 600;
145
151
  text-decoration: none;
@@ -156,12 +162,6 @@
156
162
  }
157
163
  }
158
164
 
159
- @include large-break {
160
- &__edit {
161
- padding: base(3.5);
162
- }
163
- }
164
-
165
165
  @include mid-break {
166
166
  &__main {
167
167
  width: 100%;
@@ -179,8 +179,8 @@
179
179
  }
180
180
 
181
181
  &__edit {
182
- padding: $baseline;
183
- margin-bottom: $baseline;
182
+ padding-top: 0;
183
+ padding-bottom: 0;
184
184
  }
185
185
 
186
186
  &__document-actions {
@@ -195,7 +195,7 @@
195
195
  &__document-actions,
196
196
  &__meta,
197
197
  &__sidebar-fields {
198
- padding-left: $baseline;
198
+ padding-left: var(--gutter-h);
199
199
  }
200
200
 
201
201
  &__sidebar-fields {
@@ -205,9 +205,8 @@
205
205
  }
206
206
 
207
207
  &__collection-actions {
208
- margin-top: base(.5);
209
- padding-left: $baseline;
210
- padding-bottom: 0;
208
+ border-top: 1px solid var(--theme-elevation-100);
209
+ padding: base(1) 0 0 base(1);
211
210
  order: 1;
212
211
 
213
212
  li {
@@ -6,12 +6,12 @@
6
6
  border: 0;
7
7
  display: inline-flex;
8
8
  vertical-align: middle;
9
- background: $color-light-gray;
10
- color: $color-dark-gray;
9
+ background: var(--theme-elevation-150);
10
+ color: var(--theme-elevation-800);
11
11
  border-radius: $style-radius-s;
12
12
  padding: 0 base(0.25);
13
13
  padding-left: base(0.0875 + 0.25);
14
14
 
15
- background: $color-background-gray;
16
- color: $color-dark-gray;
15
+ background: var(--theme-elevation-100);
16
+ color: var(--theme-elevation-800);
17
17
  }
@@ -6,12 +6,12 @@
6
6
  border: 0;
7
7
  display: inline-flex;
8
8
  vertical-align: middle;
9
- background: $color-light-gray;
10
- color: $color-dark-gray;
9
+ background: var(--theme-elevation-150);
10
+ color: var(--theme-elevation-800);
11
11
  border-radius: $style-radius-s;
12
12
  padding: 0 base(0.25);
13
13
  padding-left: base(0.0875 + 0.25);
14
14
 
15
- background: $color-background-gray;
16
- color: $color-dark-gray;
15
+ background: var(--theme-elevation-100);
16
+ color: var(--theme-elevation-800);
17
17
  }
@@ -1,3 +1,4 @@
1
1
  /// <reference types="react" />
2
+ import './index.scss';
2
3
  declare const RelationshipCell: (props: any) => JSX.Element;
3
4
  export default RelationshipCell;
@@ -1,43 +1,50 @@
1
1
  import React, { useState, useEffect } from 'react';
2
2
  import { useConfig } from '../../../../../../utilities/Config';
3
+ import useIntersect from '../../../../../../../hooks/useIntersect';
4
+ import { useListRelationships } from '../../../RelationshipProvider';
5
+ import './index.scss';
6
+ const baseClass = 'relationship-cell';
7
+ const totalToShow = 3;
3
8
  const RelationshipCell = (props) => {
9
+ var _a;
4
10
  const { field, data: cellData } = props;
5
- const { relationTo } = field;
6
- const { collections } = useConfig();
7
- const [data, setData] = useState();
11
+ const { collections, routes } = useConfig();
12
+ const [intersectionRef, entry] = useIntersect();
13
+ const [values, setValues] = useState([]);
14
+ const { getRelationships, documents } = useListRelationships();
15
+ const [hasRequested, setHasRequested] = useState(false);
16
+ const isAboveViewport = ((_a = entry === null || entry === void 0 ? void 0 : entry.boundingClientRect) === null || _a === void 0 ? void 0 : _a.top) > 0;
8
17
  useEffect(() => {
9
- const hasManyRelations = Array.isArray(relationTo);
10
- if (cellData) {
11
- if (Array.isArray(cellData)) {
12
- setData(cellData.reduce((newData, value) => {
13
- const relation = hasManyRelations ? value === null || value === void 0 ? void 0 : value.relationTo : relationTo;
14
- const doc = hasManyRelations ? value.value : value;
15
- const collection = collections.find((coll) => coll.slug === relation);
16
- if (collection) {
17
- const useAsTitle = collection.admin.useAsTitle ? collection.admin.useAsTitle : 'id';
18
- let title;
19
- if (typeof doc === 'string') {
20
- title = doc;
21
- }
22
- else {
23
- title = (doc === null || doc === void 0 ? void 0 : doc[useAsTitle]) ? doc[useAsTitle] : doc;
24
- }
25
- return newData ? `${newData}, ${title}` : title;
26
- }
27
- return newData;
28
- }, ''));
29
- }
30
- else {
31
- const relation = hasManyRelations ? cellData === null || cellData === void 0 ? void 0 : cellData.relationTo : relationTo;
32
- const doc = hasManyRelations ? cellData.value : cellData;
33
- const collection = collections.find((coll) => coll.slug === relation);
34
- if (collection && doc) {
35
- const useAsTitle = collection.admin.useAsTitle ? collection.admin.useAsTitle : 'id';
36
- setData(doc[useAsTitle] ? doc[useAsTitle] : doc);
18
+ if (cellData && isAboveViewport && !hasRequested) {
19
+ const formattedValues = [];
20
+ const arrayCellData = Array.isArray(cellData) ? cellData : [cellData];
21
+ arrayCellData.slice(0, (arrayCellData.length < totalToShow ? arrayCellData.length : totalToShow)).forEach((cell) => {
22
+ if (typeof cell === 'object' && 'relationTo' in cell && 'value' in cell) {
23
+ formattedValues.push(cell);
37
24
  }
38
- }
25
+ if ((typeof cell === 'number' || typeof cell === 'string') && typeof field.relationTo === 'string') {
26
+ formattedValues.push({
27
+ value: cell,
28
+ relationTo: field.relationTo,
29
+ });
30
+ }
31
+ });
32
+ getRelationships(formattedValues);
33
+ setHasRequested(true);
34
+ setValues(formattedValues);
39
35
  }
40
- }, [cellData, relationTo, field, collections]);
41
- return (React.createElement(React.Fragment, null, data));
36
+ }, [cellData, field, collections, isAboveViewport, routes.api, hasRequested, getRelationships]);
37
+ return (React.createElement("div", { className: baseClass, ref: intersectionRef },
38
+ values.map(({ relationTo, value }, i) => {
39
+ const document = documents[relationTo][value];
40
+ const relatedCollection = collections.find(({ slug }) => slug === relationTo);
41
+ return (React.createElement(React.Fragment, { key: i },
42
+ document === false && `Untitled - ID: ${value}`,
43
+ document === null && 'Loading...',
44
+ document && (document[relatedCollection.admin.useAsTitle] ? document[relatedCollection.admin.useAsTitle] : `Untitled - ID: ${value}`),
45
+ values.length > i + 1 && ', '));
46
+ }),
47
+ Array.isArray(cellData) && cellData.length > totalToShow && ` and ${cellData.length - totalToShow} more`,
48
+ values.length === 0 && `No <${field.label}>`));
42
49
  };
43
50
  export default RelationshipCell;
@@ -0,0 +1,3 @@
1
+ .relationship-cell {
2
+ min-width: 250px;
3
+ }
@@ -1,5 +0,0 @@
1
- /// <reference types="react" />
2
- declare const UploadCell: ({ data }: {
3
- data: any;
4
- }) => JSX.Element;
5
- export default UploadCell;
@@ -1,4 +0,0 @@
1
- import React from 'react';
2
- const UploadCell = ({ data }) => (React.createElement(React.Fragment, null,
3
- React.createElement("span", null, data === null || data === void 0 ? void 0 : data.filename)));
4
- export default UploadCell;
@@ -28,8 +28,6 @@ declare const _default: {
28
28
  textarea: ({ data }: {
29
29
  data: any;
30
30
  }) => JSX.Element;
31
- upload: ({ data }: {
32
- data: any;
33
- }) => JSX.Element;
31
+ upload: (props: any) => JSX.Element;
34
32
  };
35
33
  export default _default;
@@ -7,7 +7,6 @@ import relationship from './Relationship';
7
7
  import richText from './Richtext';
8
8
  import select from './Select';
9
9
  import textarea from './Textarea';
10
- import upload from './Upload';
11
10
  export default {
12
11
  array,
13
12
  blocks,
@@ -18,5 +17,5 @@ export default {
18
17
  richText,
19
18
  select,
20
19
  textarea,
21
- upload,
20
+ upload: relationship,
22
21
  };
@@ -1,5 +1,5 @@
1
1
  import React, { Fragment } from 'react';
2
- import { useHistory, useLocation } from 'react-router-dom';
2
+ import { useHistory } from 'react-router-dom';
3
3
  import { useConfig } from '../../../utilities/Config';
4
4
  import UploadGallery from '../../../elements/UploadGallery';
5
5
  import Eyebrow from '../../../elements/Eyebrow';
@@ -9,28 +9,30 @@ import Pill from '../../../elements/Pill';
9
9
  import Button from '../../../elements/Button';
10
10
  import Table from '../../../elements/Table';
11
11
  import Meta from '../../../utilities/Meta';
12
- import './index.scss';
13
12
  import ViewDescription from '../../../elements/ViewDescription';
14
13
  import PerPage from '../../../elements/PerPage';
14
+ import { Gutter } from '../../../elements/Gutter';
15
+ import { RelationshipProvider } from './RelationshipProvider';
16
+ import './index.scss';
15
17
  const baseClass = 'collection-list';
16
18
  const DefaultList = (props) => {
17
19
  var _a, _b;
18
20
  const { collection, collection: { upload, slug, labels: { singular: singularLabel, plural: pluralLabel, }, admin: { description, } = {}, }, data, newDocumentURL, limit, tableColumns, columnNames, setColumns, hasCreatePermission, } = props;
19
21
  const { routes: { admin } } = useConfig();
20
22
  const history = useHistory();
21
- const { pathname, search } = useLocation();
22
23
  return (React.createElement("div", { className: baseClass },
23
24
  React.createElement(Meta, { title: collection.labels.plural }),
24
25
  React.createElement(Eyebrow, null),
25
- React.createElement("div", { className: `${baseClass}__wrap` },
26
+ React.createElement(Gutter, { className: `${baseClass}__wrap` },
26
27
  React.createElement("header", { className: `${baseClass}__header` },
27
28
  React.createElement("h1", null, pluralLabel),
28
29
  hasCreatePermission && (React.createElement(Pill, { to: newDocumentURL }, "Create New")),
29
30
  description && (React.createElement("div", { className: `${baseClass}__sub-header` },
30
31
  React.createElement(ViewDescription, { description: description })))),
31
32
  React.createElement(ListControls, { collection: collection, columns: columnNames, setColumns: setColumns, enableColumns: Boolean(!upload), enableSort: Boolean(upload) }),
32
- (data.docs && data.docs.length > 0) && (React.createElement(React.Fragment, { key: `${pathname}${search}` },
33
- !upload && (React.createElement(Table, { data: data.docs, columns: tableColumns })),
33
+ (data.docs && data.docs.length > 0) && (React.createElement(React.Fragment, null,
34
+ !upload && (React.createElement(RelationshipProvider, null,
35
+ React.createElement(Table, { data: data.docs, columns: tableColumns }))),
34
36
  upload && (React.createElement(UploadGallery, { docs: data.docs, collection: collection, onCardClick: (doc) => history.push(`${admin}/collections/${slug}/${doc.id}`) })))),
35
37
  data.docs && data.docs.length === 0 && (React.createElement("div", { className: `${baseClass}__no-results` },
36
38
  React.createElement("p", null,
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import { TypeWithID } from '../../../../../../collections/config/types';
3
+ export declare type Documents = {
4
+ [slug: string]: {
5
+ [id: string | number]: TypeWithID | null | false;
6
+ };
7
+ };
8
+ declare type ListRelationshipContext = {
9
+ getRelationships: (docs: {
10
+ relationTo: string;
11
+ value: number | string;
12
+ }[]) => void;
13
+ documents: Documents;
14
+ };
15
+ export declare const RelationshipProvider: React.FC<{
16
+ children?: React.ReactNode;
17
+ }>;
18
+ export declare const useListRelationships: () => ListRelationshipContext;
19
+ export {};