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
@@ -0,0 +1,44 @@
1
+ ---
2
+ title: Collapsible Field
3
+ label: Collapsible
4
+ order: 60
5
+ desc: With the Collapsible field, you can place fields within a collapsible layout component that can be collapsed / expanded.
6
+ keywords: row, fields, config, configuration, documentation, Content Management System, cms, headless, javascript, node, react, express
7
+ ---
8
+
9
+ <Banner >
10
+ The Collapsible field is presentational-only and only affects the Admin panel. By using it, you can place fields within a nice layout component that can be collapsed / expanded.
11
+ </Banner>
12
+
13
+ ### Config
14
+
15
+ | Option | Description |
16
+ | ---------------- | ----------- |
17
+ | **`label`** * | A label to render within the header of the collapsible component. |
18
+ | **`fields`** * | Array of field types to nest within this Collapsible. |
19
+ | **`admin`** | Admin-specific configuration. See the [default field admin config](/docs/fields/overview#admin-config) for more details. |
20
+
21
+ *\* An asterisk denotes that a property is required.*
22
+
23
+ ### Example
24
+
25
+ `collections/ExampleCollection.js`
26
+ ```js
27
+ {
28
+ slug: 'example-collection',
29
+ fields: [
30
+ {
31
+ label: 'Header of collapsible goes here',
32
+ type: 'collapsible', // required
33
+ fields: [ // required
34
+ {
35
+ name: 'someTextField',
36
+ type: 'text',
37
+ required: true,
38
+ },
39
+ ],
40
+ }
41
+ ]
42
+ }
43
+
44
+ ```
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: Date Field
3
3
  label: Date
4
- order: 60
4
+ order: 70
5
5
  desc: The Date field type stores a Date in the database. Learn how to use and customize the Date field, see examples and options.
6
6
  keywords: date, fields, config, configuration, documentation, Content Management System, cms, headless, javascript, node, react, express
7
7
  ---
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: Email Field
3
3
  label: Email
4
- order: 70
4
+ order: 80
5
5
  desc: The Email field enforces that the value provided is a valid email address. Learn how to use Email fields, see examples and options.
6
6
  keywords: email, fields, config, configuration, documentation, Content Management System, cms, headless, javascript, node, react, express
7
7
  ---
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: Group Field
3
3
  label: Group
4
- order: 80
4
+ order: 90
5
5
  desc: The Group field allows other fields to be nested under a common property. Learn how to use Group fields, see examples and options.
6
6
  keywords: group, fields, config, configuration, documentation, Content Management System, cms, headless, javascript, node, react, express
7
7
  ---
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: Number Field
3
3
  label: Number
4
- order: 90
4
+ order: 100
5
5
  desc: Number fields store and validate numeric data. Learn how to use and format Number fields, see examples and Number field options.
6
6
  keywords: number, fields, config, configuration, documentation, Content Management System, cms, headless, javascript, node, react, express
7
7
  ---
@@ -38,6 +38,7 @@ const Pages = {
38
38
  - [Blocks](/docs/fields/blocks) - block-based fields, allowing powerful layout creation
39
39
  - [Checkbox](/docs/fields/checkbox) - boolean true / false checkbox
40
40
  - [Code](/docs/fields/code) - code editor that saves a string to the database
41
+ - [Collapsible](/docs/fields/collapsible) - used for admin layout, nest fields within a collapsible component
41
42
  - [Date](/docs/fields/date) - date / time field that saves a timestamp
42
43
  - [Email](/docs/fields/email) - validates the entry is a properly formatted email
43
44
  - [Group](/docs/fields/group) - nest fields within an object
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: Point Field
3
3
  label: Point
4
- order: 95
4
+ order: 110
5
5
  desc: The Point field type stores coordinates in the database. Learn how to use Point field for geolocation and geometry.
6
6
 
7
7
  keywords: point, geolocation, geospatial, geojson, 2dsphere, config, configuration, documentation, Content Management System, cms, headless, javascript, node, react, express
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: Radio Field
3
3
  label: Radio Group
4
- order: 100
4
+ order: 120
5
5
  desc: The Radio field type allows for the selection of one value from a predefined set of possible values. Learn how to use Radio fields, see examples and options.
6
6
  keywords: radio, fields, config, configuration, documentation, Content Management System, cms, headless, javascript, node, react, express
7
7
  ---
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: Relationship Field
3
3
  label: Relationship
4
- order: 110
4
+ order: 130
5
5
  desc: The Relationship field provides the ability to relate documents together. Learn how to use Relationship fields, see examples and options.
6
6
  keywords: relationship, fields, config, configuration, documentation, Content Management System, cms, headless, javascript, node, react, express
7
7
  ---
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: Rich Text Field
3
3
  label: Rich Text
4
- order: 120
4
+ order: 140
5
5
  desc: The Rich Text field allows dynamic content to be written through the Admin Panel. Learn how to use Rich Text fields, see examples and options.
6
6
  keywords: rich text, fields, config, configuration, documentation, Content Management System, cms, headless, javascript, node, react, express
7
7
  ---
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: Row Field
3
3
  label: Row
4
- order: 130
4
+ order: 150
5
5
  desc: With the Row field you can arrange fields next to each other in the Admin Panel to help you customize your Dashboard.
6
6
  keywords: row, fields, config, configuration, documentation, Content Management System, cms, headless, javascript, node, react, express
7
7
  ---
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: Select Field
3
3
  label: Select
4
- order: 140
4
+ order: 160
5
5
  desc: The Select field provides a dropdown-style interface for choosing options from a predefined list. Learn how to use Select fields, see examples and options.
6
6
  keywords: select, multi-select, fields, config, configuration, documentation, Content Management System, cms, headless, javascript, node, react, express
7
7
  ---
@@ -0,0 +1,9 @@
1
+ ---
2
+ title: Tabs Field
3
+ label: Tabs
4
+ order: 170
5
+ desc: Tabs field desc here
6
+ keywords: tabs, fields, config, configuration, documentation, Content Management System, cms, headless, javascript, node, react, express
7
+ ---
8
+
9
+ Coming soon
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: Text Field
3
3
  label: Text
4
- order: 150
4
+ order: 180
5
5
  desc: Text field types simply save a string to the database and provide the Admin panel with a text input. Learn how to use Text fields, see examples and options.
6
6
  keywords: text, fields, config, configuration, documentation, Content Management System, cms, headless, javascript, node, react, express
7
7
  ---
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: Textarea Field
3
3
  label: Textarea
4
- order: 160
4
+ order: 190
5
5
  desc: Textarea field types save a string to the database, similar to the Text field type but equipped for longer text. Learn how to use Textarea fields, see examples and options.
6
6
  keywords: textarea, fields, config, configuration, documentation, Content Management System, cms, headless, javascript, node, react, express
7
7
  ---
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: UI Field
3
3
  label: UI
4
- order: 170
4
+ order: 200
5
5
  desc: UI fields are purely presentational and allow developers to customize the admin panel to a very fine degree, including adding actions and other functions.
6
6
  keywords: custom field, react component, fields, config, configuration, documentation, Content Management System, cms, headless, javascript, node, react, express
7
7
  ---
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: Upload Field
3
3
  label: Upload
4
- order: 180
4
+ order: 210
5
5
  desc: Upload fields will allow a file to be uploaded, only from a collection supporting Uploads. Learn how to use Upload fields, see examples and options.
6
6
  keywords: upload, images media, fields, config, configuration, documentation, Content Management System, cms, headless, javascript, node, react, express
7
7
  ---
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "payload",
3
- "version": "0.20.1",
3
+ "version": "0.20.4-beta.0",
4
4
  "description": "Node, React and MongoDB Headless CMS and Application Framework",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -37,14 +37,15 @@
37
37
  "demo:generate:types": "cross-env PAYLOAD_CONFIG_PATH=demo/payload.config.ts node dist/bin/generateTypes",
38
38
  "demo:generate:graphqlschema": "cross-env PAYLOAD_CONFIG_PATH=demo/payload.config.ts node dist/bin/generateGraphQLSchema",
39
39
  "demo:serve": "cross-env PAYLOAD_CONFIG_PATH=demo/payload.config.ts NODE_ENV=production nodemon",
40
- "dev": "cross-env PAYLOAD_CONFIG_PATH=demo/payload.config.ts nodemon",
41
- "test": "yarn test:int && yarn test:client",
40
+ "dev": "nodemon",
41
+ "dev:generatetypes": "node ./test/generateTypes.js",
42
42
  "pretest": "yarn build",
43
- "test:int": "cross-env PAYLOAD_CONFIG_PATH=demo/payload.config.ts NODE_ENV=test DISABLE_LOGGING=true jest --forceExit --runInBand",
44
- "test:client": "cross-env PAYLOAD_CONFIG_PATH=demo/payload.config.ts NODE_ENV=test jest --config=jest.react.config.js",
45
- "cy:open": "cypress open",
46
- "cy:run": "cypress run",
47
- "test:e2e": "cross-env DISABLE_LOGGING=true MEMORY_SERVER=true start-server-and-test dev http-get://localhost:3000/admin cy:run",
43
+ "test": "yarn test:int && yarn test:components",
44
+ "test:int": "cross-env NODE_ENV=test DISABLE_LOGGING=true jest --forceExit --detectOpenHandles",
45
+ "test:e2e": "cross-env NODE_ENV=test DISABLE_LOGGING=true playwright test",
46
+ "test:e2e:headed": "cross-env NODE_ENV=test DISABLE_LOGGING=true playwright test --headed",
47
+ "test:e2e:debug": "cross-env PWDEBUG=1 NODE_ENV=test DISABLE_LOGGING=true playwright test",
48
+ "test:components": "cross-env PAYLOAD_CONFIG_PATH=demo/payload.config.ts NODE_ENV=test jest --config=jest.components.config.js",
48
49
  "clean": "rimraf dist",
49
50
  "release": "release-it",
50
51
  "release:patch": "release-it patch",
@@ -89,7 +90,6 @@
89
90
  "@babel/preset-typescript": "^7.12.1",
90
91
  "@babel/register": "^7.11.5",
91
92
  "@date-io/date-fns": "^2.10.6",
92
- "@faceless-ui/collapsibles": "^1.0.0",
93
93
  "@faceless-ui/modal": "^1.1.7",
94
94
  "@faceless-ui/scroll-info": "^1.2.3",
95
95
  "@faceless-ui/window-info": "^2.0.2",
@@ -192,6 +192,7 @@
192
192
  },
193
193
  "devDependencies": {
194
194
  "@bahmutov/cy-api": "^2.1.3",
195
+ "@playwright/test": "^1.23.1",
195
196
  "@release-it/conventional-changelog": "^2.0.0",
196
197
  "@testing-library/jest-dom": "^5.11.4",
197
198
  "@testing-library/react": "^13.0.1",
@@ -261,15 +262,16 @@
261
262
  "babel-plugin-ignore-html-and-css-imports": "^0.1.0",
262
263
  "copyfiles": "^2.4.0",
263
264
  "cross-env": "^7.0.2",
264
- "cypress": "9.2.0",
265
265
  "eslint": "^6.8.0",
266
266
  "eslint-plugin-import": "^2.20.0",
267
267
  "eslint-plugin-jest": "^23.16.0",
268
268
  "eslint-plugin-jest-dom": "^4.0.1",
269
269
  "eslint-plugin-jsx-a11y": "^6.2.1",
270
+ "eslint-plugin-playwright": "^0.9.0",
270
271
  "eslint-plugin-react": "^7.18.0",
271
272
  "eslint-plugin-react-hooks": "^2.3.0",
272
273
  "form-data": "^3.0.0",
274
+ "get-port": "5.1.1",
273
275
  "graphql-request": "^3.4.0",
274
276
  "mongodb": "^3.6.2",
275
277
  "mongodb-memory-server": "^7.2.0",
@@ -290,7 +292,7 @@
290
292
  "*.js",
291
293
  "*.d.ts",
292
294
  "!jest.config.js",
293
- "!jest.react.config.js"
295
+ "!jest.components.config.js"
294
296
  ],
295
297
  "publishConfig": {
296
298
  "registry": "https://registry.npmjs.org/"
package/scss/index.scss CHANGED
@@ -1,12 +1,5 @@
1
1
  @import '../dist/admin/scss/vars';
2
2
  @import '../dist/admin/scss/z-index';
3
-
4
- //////////////////////////////
5
- // IMPORT OVERRIDES
6
- //////////////////////////////
7
-
8
- @import '~payload-scss-overrides';
9
-
10
3
  @import '../dist/admin/scss/type';
11
4
  @import '../dist/admin/scss/queries';
12
5
  @import '../dist/admin/scss/resets';
@@ -1,22 +0,0 @@
1
- import React from 'react';
2
- import Button from '../../../elements/Button';
3
- import Popup from '../../../elements/Popup';
4
- import BlockSelector from '../../field-types/Blocks/BlockSelector';
5
- import './index.scss';
6
- const baseClass = 'action-panel';
7
- const ActionPanel = (props) => {
8
- const { addRow, removeRow, label = 'Row', blockType, blocks = [], rowIndex, isHovered, hasMaxRows, } = props;
9
- const classes = [
10
- baseClass,
11
- ].filter(Boolean).join(' ');
12
- return (React.createElement("div", { className: classes },
13
- React.createElement(Popup, { showOnHover: true, size: "wide", color: "dark", horizontalAlign: "right", buttonType: "custom", button: (React.createElement(Button, { className: `${baseClass}__remove-row`, round: true, buttonStyle: "none", icon: "x", iconPosition: "left", iconStyle: "with-border", onClick: () => removeRow(rowIndex) })) },
14
- "Remove\u00A0",
15
- label),
16
- !hasMaxRows && (React.createElement(React.Fragment, null, blockType === 'blocks'
17
- ? (React.createElement(Popup, { buttonType: "custom", size: "large", horizontalAlign: "right", button: (React.createElement(Button, { className: `${baseClass}__add-row`, round: true, buttonStyle: "none", icon: "plus", iconPosition: "left", iconStyle: "with-border" })), render: ({ close }) => (React.createElement(BlockSelector, { blocks: blocks, addRow: addRow, addRowIndex: rowIndex, close: close, parentIsHovered: isHovered, watchParentHover: true })) }))
18
- : (React.createElement(Popup, { showOnHover: true, size: "wide", color: "dark", horizontalAlign: "center", buttonType: "custom", button: (React.createElement(Button, { className: `${baseClass}__add-row`, round: true, buttonStyle: "none", icon: "plus", iconPosition: "left", iconStyle: "with-border", onClick: () => addRow(rowIndex) })) },
19
- "Add\u00A0",
20
- label))))));
21
- };
22
- export default ActionPanel;
@@ -1,12 +0,0 @@
1
- @import '../../../../scss/styles';
2
-
3
- .action-panel {
4
-
5
- &__remove-row {
6
- margin: 0 0 base(.3);
7
- }
8
-
9
- &__add-row {
10
- margin: base(.3) 0 0;
11
- }
12
- }
@@ -1,11 +0,0 @@
1
- import { Block } from '../../../../../fields/config/types';
2
- export declare type Props = {
3
- label: string;
4
- addRow?: (index: number, blockType?: string) => void;
5
- removeRow?: (index: number) => void;
6
- blockType?: string;
7
- isHovered: boolean;
8
- rowIndex: number;
9
- blocks?: Block[];
10
- hasMaxRows?: boolean;
11
- };
@@ -1,18 +0,0 @@
1
- import React from 'react';
2
- import Button from '../../../elements/Button';
3
- import './index.scss';
4
- const baseClass = 'position-panel';
5
- const PositionPanel = (props) => {
6
- const { moveRow, positionIndex, rowCount, readOnly } = props;
7
- const adjustedIndex = positionIndex + 1;
8
- const classes = [
9
- baseClass,
10
- `${baseClass}__${readOnly ? 'read-only' : ''}`,
11
- ].filter(Boolean).join(' ');
12
- return (React.createElement("div", { className: classes },
13
- !readOnly && (React.createElement(Button, { className: `${baseClass}__move-backward ${positionIndex === 0 ? 'first-row' : ''}`, buttonStyle: "none", icon: "chevron", round: true, onClick: () => moveRow(positionIndex, positionIndex - 1) })),
14
- (adjustedIndex && typeof positionIndex === 'number')
15
- && (React.createElement("div", { className: `${baseClass}__current-position` }, adjustedIndex >= 10 ? adjustedIndex : `0${adjustedIndex}`)),
16
- !readOnly && (React.createElement(Button, { className: `${baseClass}__move-forward ${(positionIndex === rowCount - 1) ? 'last-row' : ''}`, buttonStyle: "none", icon: "chevron", round: true, onClick: () => moveRow(positionIndex, positionIndex + 1) }))));
17
- };
18
- export default PositionPanel;
@@ -1,21 +0,0 @@
1
- @import '../../../../scss/styles';
2
-
3
- .position-panel {
4
- &__move-backward {
5
- transform: rotate(.5turn);
6
- margin: 0;
7
- opacity: 0;
8
- }
9
-
10
- &__move-forward {
11
- margin: 0;
12
- opacity: 0;
13
- }
14
-
15
- &__current-position {
16
- text-align: center;
17
- color: $color-gray;
18
- }
19
-
20
- padding-right: base(.5);
21
- }
@@ -1,6 +0,0 @@
1
- export declare type Props = {
2
- moveRow: (fromIndex: number, toIndex: number) => void;
3
- positionIndex: number;
4
- rowCount: number;
5
- readOnly: boolean;
6
- };
@@ -1,37 +0,0 @@
1
- @import '../../../../scss/styles';
2
-
3
- .section-title {
4
- display: flex;
5
- align-items: center;
6
- width: 100%;
7
-
8
- &__input {
9
- flex-grow: 1;
10
- color: $color-dark-gray;
11
- background-color: transparent;
12
- font-family: $font-body;
13
- font-weight: 600;
14
- font-size: base(.75);
15
- padding: base(.1) base(.2);
16
- margin-left: base(.5);
17
- margin-right: base(.5);
18
- border: none;
19
-
20
- &:hover {
21
- box-shadow: inset 0px -2px 0px -1px $color-light-gray;
22
- }
23
-
24
- &:hover,
25
- &:focus {
26
- outline: 0;
27
- }
28
-
29
- &:focus {
30
- box-shadow: none;
31
- }
32
- }
33
-
34
- &__pill {
35
- flex-shrink: 0;
36
- }
37
- }
@@ -1,5 +0,0 @@
1
- import React from 'react';
2
- import { Props } from './types';
3
- import './index.scss';
4
- declare const DraggableSection: React.FC<Props>;
5
- export default DraggableSection;
@@ -1,40 +0,0 @@
1
- import React, { useState } from 'react';
2
- import AnimateHeight from 'react-animate-height';
3
- import { Draggable } from 'react-beautiful-dnd';
4
- import ActionPanel from './ActionPanel';
5
- import SectionTitle from './SectionTitle';
6
- import PositionPanel from './PositionPanel';
7
- import Button from '../../elements/Button';
8
- import { NegativeFieldGutterProvider } from '../FieldTypeGutter/context';
9
- import FieldTypeGutter from '../FieldTypeGutter';
10
- import RenderFields from '../RenderFields';
11
- import HiddenInput from '../field-types/HiddenInput';
12
- import './index.scss';
13
- import { fieldAffectsData } from '../../../../fields/config/types';
14
- const baseClass = 'draggable-section';
15
- const DraggableSection = (props) => {
16
- const { moveRow, addRow, removeRow, rowIndex, rowCount, parentPath, fieldSchema, label, blockType, fieldTypes, id, setRowCollapse, isCollapsed, permissions, readOnly, hasMaxRows, } = props;
17
- const [isHovered, setIsHovered] = useState(false);
18
- const classes = [
19
- baseClass,
20
- isCollapsed ? 'is-collapsed' : 'is-open',
21
- (isHovered && !readOnly) && 'is-hovered',
22
- ].filter(Boolean).join(' ');
23
- return (React.createElement(Draggable, { draggableId: id, index: rowIndex, isDragDisabled: readOnly }, (providedDrag) => (React.createElement("div", { ref: providedDrag.innerRef, className: classes, onMouseLeave: () => setIsHovered(false), onMouseOver: () => setIsHovered(true), onFocus: () => setIsHovered(true), ...providedDrag.draggableProps },
24
- React.createElement("div", { className: `${baseClass}__content-wrapper` },
25
- React.createElement(FieldTypeGutter, { variant: "left", dragHandleProps: providedDrag.dragHandleProps },
26
- React.createElement(PositionPanel, { moveRow: moveRow, rowCount: rowCount, positionIndex: rowIndex, readOnly: readOnly })),
27
- React.createElement("div", { className: `${baseClass}__render-fields-wrapper` },
28
- blockType === 'blocks' && (React.createElement("div", { className: `${baseClass}__section-header` },
29
- React.createElement(HiddenInput, { name: `${parentPath}.${rowIndex}.id`, value: id }),
30
- React.createElement(SectionTitle, { label: label, path: `${parentPath}.${rowIndex}.blockName`, readOnly: readOnly }),
31
- React.createElement(Button, { icon: "chevron", onClick: () => setRowCollapse(id, !isCollapsed), buttonStyle: "icon-label", className: `toggle-collapse toggle-collapse--is-${isCollapsed ? 'collapsed' : 'open'}`, round: true }))),
32
- React.createElement(AnimateHeight, { height: isCollapsed ? 0 : 'auto', duration: 200 },
33
- React.createElement(NegativeFieldGutterProvider, { allow: false },
34
- React.createElement(RenderFields, { readOnly: readOnly, fieldTypes: fieldTypes, key: rowIndex, permissions: permissions === null || permissions === void 0 ? void 0 : permissions.fields, fieldSchema: fieldSchema.map((field) => ({
35
- ...field,
36
- path: `${parentPath}.${rowIndex}${fieldAffectsData(field) ? `.${field.name}` : ''}`,
37
- })) })))),
38
- React.createElement(FieldTypeGutter, { variant: "right", className: "actions", dragHandleProps: providedDrag.dragHandleProps }, !readOnly && (React.createElement(ActionPanel, { addRow: addRow, removeRow: removeRow, rowIndex: rowIndex, label: label, isHovered: isHovered, hasMaxRows: hasMaxRows, ...props }))))))));
39
- };
40
- export default DraggableSection;
@@ -1,113 +0,0 @@
1
- @import '../../../scss/styles.scss';
2
-
3
- //////////////////////
4
- // COMPONENT STYLES
5
- //////////////////////
6
-
7
- .draggable-section {
8
- padding-bottom: base(.5);
9
-
10
- .draggable-section {
11
- padding-bottom: 0;
12
- }
13
-
14
- &__content-wrapper {
15
- display: flex;
16
- position: relative;
17
- margin-bottom: $baseline;
18
- }
19
-
20
- &__section-header {
21
- @include blur-bg(white);
22
- display: flex;
23
- position: sticky;
24
- top: $top-header-offset;
25
- z-index: 1;
26
- padding: base(.75) base(.75);
27
- margin-left: - base(.75);
28
- margin-right: - base(.75);
29
- width: calc(100% + #{base(1.5)});
30
-
31
- .toggle-collapse {
32
- margin: 0 0 0 auto;
33
- transform: rotate(.5turn);
34
-
35
- .btn__icon {
36
- background-color: white;
37
- }
38
-
39
- &--is-collapsed {
40
- transform: rotate(0turn);
41
- }
42
- }
43
- }
44
-
45
- &__render-fields-wrapper {
46
- flex-grow: 1;
47
- }
48
-
49
- &.is-hovered > div {
50
- > .field-type-gutter {
51
- &.actions {
52
-
53
- .field-type-gutter__content {
54
- &:hover {
55
- z-index: $z-nav;
56
- }
57
- }
58
-
59
- .field-type-gutter__content-container {
60
- box-shadow: none;
61
- }
62
- }
63
- .field-type-gutter__content-container {
64
- box-shadow: #{$style-stroke-width-m} 0px 0px 0px $color-dark-gray;
65
- }
66
-
67
- .position-panel__move-forward,
68
- .position-panel__move-backward {
69
- opacity: 1;
70
-
71
- &.first-row,
72
- &.last-row {
73
- opacity: .15;
74
- pointer-events: none;
75
- }
76
- }
77
-
78
- .position-panel__current-position {
79
- color: $color-dark-gray;
80
- }
81
- }
82
-
83
- .toggle-collapse {
84
- @include color-svg(white);
85
-
86
- .btn__icon {
87
- background-color: $color-gray;
88
-
89
- &:hover {
90
- background-color: $color-dark-gray;
91
- }
92
- }
93
- }
94
- }
95
-
96
- label.field-label {
97
- line-height: 1;
98
- padding-bottom: base(.75)
99
- }
100
-
101
- @include mid-break {
102
- min-width: base(16);
103
-
104
- .position-panel__move-forward,
105
- .position-panel__move-backward {
106
- opacity: 1;
107
- }
108
-
109
- &__section-header {
110
- top: $top-header-offset-m;
111
- }
112
- }
113
- }
@@ -1,24 +0,0 @@
1
- import { Field, Block } from '../../../../fields/config/types';
2
- import { FieldTypes } from '../field-types';
3
- import { FieldPermissions } from '../../../../auth/types';
4
- export declare type Props = {
5
- moveRow: (fromIndex: number, toIndex: number) => void;
6
- addRow: (index: number, blockType?: string) => void;
7
- removeRow: (index: number) => void;
8
- rowIndex: number;
9
- rowCount: number;
10
- parentPath: string;
11
- fieldSchema: Field[];
12
- label?: string;
13
- blockType?: string;
14
- fieldTypes: FieldTypes;
15
- id: string;
16
- isCollapsed?: boolean;
17
- setRowCollapse?: (id: string, open: boolean) => void;
18
- positionPanelVerticalAlignment?: 'top' | 'center' | 'sticky';
19
- actionPanelVerticalAlignment?: 'top' | 'center' | 'sticky';
20
- permissions: FieldPermissions;
21
- readOnly: boolean;
22
- blocks?: Block[];
23
- hasMaxRows?: boolean;
24
- };
@@ -1,6 +0,0 @@
1
- import React from 'react';
2
- export declare const NegativeFieldGutterProvider: React.FC<{
3
- allow?: boolean;
4
- children?: React.ReactNode;
5
- }>;
6
- export declare const useNegativeFieldGutter: () => boolean;
@@ -1,9 +0,0 @@
1
- import React, { createContext, useContext } from 'react';
2
- import { useWindowInfo } from '@faceless-ui/window-info';
3
- const context = createContext(false);
4
- const { Provider } = context;
5
- export const NegativeFieldGutterProvider = ({ children, allow }) => {
6
- const { breakpoints: { m: midBreak } } = useWindowInfo();
7
- return (React.createElement(Provider, { value: allow && !midBreak }, children));
8
- };
9
- export const useNegativeFieldGutter = () => useContext(context);