@wordpress/dataviews 10.1.2 → 10.3.1-next.2f1c7c01b.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 (485) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +1 -0
  3. package/build/components/dataform/index.js +6 -2
  4. package/build/components/dataform/index.js.map +3 -3
  5. package/build/components/dataform-context/index.js +4 -2
  6. package/build/components/dataform-context/index.js.map +1 -1
  7. package/build/components/dataviews/index.js +8 -6
  8. package/build/components/dataviews/index.js.map +1 -1
  9. package/build/components/dataviews-bulk-actions/index.js +4 -2
  10. package/build/components/dataviews-bulk-actions/index.js.map +1 -1
  11. package/build/components/dataviews-context/index.js +3 -1
  12. package/build/components/dataviews-context/index.js.map +1 -1
  13. package/build/components/dataviews-filters/add-filter.js +4 -2
  14. package/build/components/dataviews-filters/add-filter.js.map +1 -1
  15. package/build/components/dataviews-filters/filter.js +20 -5
  16. package/build/components/dataviews-filters/filter.js.map +3 -3
  17. package/build/components/dataviews-filters/filters-toggled.js +3 -1
  18. package/build/components/dataviews-filters/filters-toggled.js.map +1 -1
  19. package/build/components/dataviews-filters/filters.js +3 -1
  20. package/build/components/dataviews-filters/filters.js.map +1 -1
  21. package/build/components/dataviews-filters/index.js +2 -0
  22. package/build/components/dataviews-filters/index.js.map +1 -1
  23. package/build/components/dataviews-filters/input-widget.js +3 -1
  24. package/build/components/dataviews-filters/input-widget.js.map +1 -1
  25. package/build/components/dataviews-filters/reset-filters.js +3 -1
  26. package/build/components/dataviews-filters/reset-filters.js.map +1 -1
  27. package/build/components/dataviews-filters/search-widget.js +8 -6
  28. package/build/components/dataviews-filters/search-widget.js.map +2 -2
  29. package/build/components/dataviews-filters/toggle.js +3 -1
  30. package/build/components/dataviews-filters/toggle.js.map +1 -1
  31. package/build/components/dataviews-filters/use-filters.js +2 -0
  32. package/build/components/dataviews-filters/use-filters.js.map +1 -1
  33. package/build/components/dataviews-filters/utils.js +4 -2
  34. package/build/components/dataviews-filters/utils.js.map +1 -1
  35. package/build/components/dataviews-footer/index.js +4 -2
  36. package/build/components/dataviews-footer/index.js.map +1 -1
  37. package/build/components/dataviews-item-actions/index.js +23 -4
  38. package/build/components/dataviews-item-actions/index.js.map +2 -2
  39. package/build/components/dataviews-layout/index.js +3 -1
  40. package/build/components/dataviews-layout/index.js.map +1 -1
  41. package/build/components/dataviews-pagination/index.js +3 -1
  42. package/build/components/dataviews-pagination/index.js.map +1 -1
  43. package/build/components/dataviews-picker/footer.js +4 -2
  44. package/build/components/dataviews-picker/footer.js.map +1 -1
  45. package/build/components/dataviews-picker/index.js +8 -6
  46. package/build/components/dataviews-picker/index.js.map +1 -1
  47. package/build/components/dataviews-search/index.js +4 -2
  48. package/build/components/dataviews-search/index.js.map +1 -1
  49. package/build/components/dataviews-selection-checkbox/index.js +3 -1
  50. package/build/components/dataviews-selection-checkbox/index.js.map +1 -1
  51. package/build/components/dataviews-view-config/index.js +6 -4
  52. package/build/components/dataviews-view-config/index.js.map +1 -1
  53. package/build/components/dataviews-view-config/infinite-scroll-toggle.js +3 -1
  54. package/build/components/dataviews-view-config/infinite-scroll-toggle.js.map +1 -1
  55. package/build/constants.js +36 -34
  56. package/build/constants.js.map +1 -1
  57. package/build/dataform-controls/array.js +4 -2
  58. package/build/dataform-controls/array.js.map +1 -1
  59. package/build/dataform-controls/checkbox.js +4 -2
  60. package/build/dataform-controls/checkbox.js.map +1 -1
  61. package/build/dataform-controls/color.js +5 -3
  62. package/build/dataform-controls/color.js.map +1 -1
  63. package/build/dataform-controls/date.js +8 -6
  64. package/build/dataform-controls/date.js.map +1 -1
  65. package/build/dataform-controls/datetime.js +11 -15
  66. package/build/dataform-controls/datetime.js.map +3 -3
  67. package/build/dataform-controls/email.js +3 -1
  68. package/build/dataform-controls/email.js.map +1 -1
  69. package/build/dataform-controls/index.js +4 -2
  70. package/build/dataform-controls/index.js.map +1 -1
  71. package/build/dataform-controls/integer.js +3 -1
  72. package/build/dataform-controls/integer.js.map +1 -1
  73. package/build/dataform-controls/number.js +3 -1
  74. package/build/dataform-controls/number.js.map +1 -1
  75. package/build/dataform-controls/password.js +6 -5
  76. package/build/dataform-controls/password.js.map +3 -3
  77. package/build/dataform-controls/radio.js +4 -2
  78. package/build/dataform-controls/radio.js.map +1 -1
  79. package/build/dataform-controls/select.js +4 -2
  80. package/build/dataform-controls/select.js.map +1 -1
  81. package/build/dataform-controls/telephone.js +3 -1
  82. package/build/dataform-controls/telephone.js.map +1 -1
  83. package/build/dataform-controls/text.js +3 -1
  84. package/build/dataform-controls/text.js.map +1 -1
  85. package/build/dataform-controls/textarea.js +4 -2
  86. package/build/dataform-controls/textarea.js.map +1 -1
  87. package/build/dataform-controls/toggle-group.js +4 -2
  88. package/build/dataform-controls/toggle-group.js.map +1 -1
  89. package/build/dataform-controls/toggle.js +4 -2
  90. package/build/dataform-controls/toggle.js.map +1 -1
  91. package/build/dataform-controls/url.js +3 -1
  92. package/build/dataform-controls/url.js.map +1 -1
  93. package/build/dataform-controls/utils/get-custom-validity.js +2 -0
  94. package/build/dataform-controls/utils/get-custom-validity.js.map +1 -1
  95. package/build/dataform-controls/utils/relative-date-control.js +4 -2
  96. package/build/dataform-controls/utils/relative-date-control.js.map +1 -1
  97. package/build/dataform-controls/utils/validated-input.js +4 -2
  98. package/build/dataform-controls/utils/validated-input.js.map +1 -1
  99. package/build/dataform-controls/utils/validated-number.js +4 -2
  100. package/build/dataform-controls/utils/validated-number.js.map +1 -1
  101. package/build/dataform-layouts/card/index.js +91 -42
  102. package/build/dataform-layouts/card/index.js.map +3 -3
  103. package/build/dataform-layouts/data-form-layout.js +8 -14
  104. package/build/dataform-layouts/data-form-layout.js.map +3 -3
  105. package/build/dataform-layouts/get-summary-fields.js +3 -1
  106. package/build/dataform-layouts/get-summary-fields.js.map +1 -1
  107. package/build/dataform-layouts/index.js +4 -2
  108. package/build/dataform-layouts/index.js.map +2 -2
  109. package/build/dataform-layouts/{normalize-form-fields.js → normalize-form.js} +43 -24
  110. package/build/dataform-layouts/normalize-form.js.map +7 -0
  111. package/build/dataform-layouts/panel/dropdown.js +9 -8
  112. package/build/dataform-layouts/panel/dropdown.js.map +2 -2
  113. package/build/dataform-layouts/panel/index.js +10 -14
  114. package/build/dataform-layouts/panel/index.js.map +2 -2
  115. package/build/dataform-layouts/panel/modal.js +9 -8
  116. package/build/dataform-layouts/panel/modal.js.map +2 -2
  117. package/build/dataform-layouts/panel/summary-button.js +3 -1
  118. package/build/dataform-layouts/panel/summary-button.js.map +1 -1
  119. package/build/dataform-layouts/regular/index.js +8 -10
  120. package/build/dataform-layouts/regular/index.js.map +2 -2
  121. package/build/dataform-layouts/row/index.js +10 -33
  122. package/build/dataform-layouts/row/index.js.map +3 -3
  123. package/build/dataviews-layouts/grid/index.js +4 -2
  124. package/build/dataviews-layouts/grid/index.js.map +1 -1
  125. package/build/dataviews-layouts/grid/preview-size-picker.js +4 -2
  126. package/build/dataviews-layouts/grid/preview-size-picker.js.map +1 -1
  127. package/build/dataviews-layouts/index.js +3 -1
  128. package/build/dataviews-layouts/index.js.map +1 -1
  129. package/build/dataviews-layouts/list/index.js +5 -5
  130. package/build/dataviews-layouts/list/index.js.map +2 -2
  131. package/build/dataviews-layouts/picker-grid/index.js +4 -2
  132. package/build/dataviews-layouts/picker-grid/index.js.map +1 -1
  133. package/build/dataviews-layouts/table/column-header-menu.js +6 -4
  134. package/build/dataviews-layouts/table/column-header-menu.js.map +1 -1
  135. package/build/dataviews-layouts/table/column-primary.js +3 -1
  136. package/build/dataviews-layouts/table/column-primary.js.map +1 -1
  137. package/build/dataviews-layouts/table/density-picker.js +3 -1
  138. package/build/dataviews-layouts/table/density-picker.js.map +1 -1
  139. package/build/dataviews-layouts/table/index.js +3 -1
  140. package/build/dataviews-layouts/table/index.js.map +1 -1
  141. package/build/dataviews-layouts/table/use-is-horizontal-scroll-end.js +3 -1
  142. package/build/dataviews-layouts/table/use-is-horizontal-scroll-end.js.map +1 -1
  143. package/build/dataviews-layouts/utils/get-data-by-group.js +2 -0
  144. package/build/dataviews-layouts/utils/get-data-by-group.js.map +1 -1
  145. package/build/dataviews-layouts/utils/grid-items.js +4 -2
  146. package/build/dataviews-layouts/utils/grid-items.js.map +1 -1
  147. package/build/dataviews-layouts/utils/item-click-wrapper.js +3 -1
  148. package/build/dataviews-layouts/utils/item-click-wrapper.js.map +1 -1
  149. package/build/dataviews-layouts/utils/preview-size-picker.js +4 -2
  150. package/build/dataviews-layouts/utils/preview-size-picker.js.map +1 -1
  151. package/build/field-types/array.js +3 -1
  152. package/build/field-types/array.js.map +1 -1
  153. package/build/field-types/boolean.js +3 -1
  154. package/build/field-types/boolean.js.map +1 -1
  155. package/build/field-types/color.js +3 -1
  156. package/build/field-types/color.js.map +1 -1
  157. package/build/field-types/date.js +4 -2
  158. package/build/field-types/date.js.map +1 -1
  159. package/build/field-types/datetime.js +17 -2
  160. package/build/field-types/datetime.js.map +3 -3
  161. package/build/field-types/email.js +4 -2
  162. package/build/field-types/email.js.map +1 -1
  163. package/build/field-types/index.js +3 -1
  164. package/build/field-types/index.js.map +1 -1
  165. package/build/field-types/integer.js +3 -1
  166. package/build/field-types/integer.js.map +1 -1
  167. package/build/field-types/media.js +2 -0
  168. package/build/field-types/media.js.map +1 -1
  169. package/build/field-types/number.js +3 -1
  170. package/build/field-types/number.js.map +1 -1
  171. package/build/field-types/password.js +3 -1
  172. package/build/field-types/password.js.map +1 -1
  173. package/build/field-types/telephone.js +3 -1
  174. package/build/field-types/telephone.js.map +1 -1
  175. package/build/field-types/text.js +3 -1
  176. package/build/field-types/text.js.map +1 -1
  177. package/build/field-types/url.js +3 -1
  178. package/build/field-types/url.js.map +1 -1
  179. package/build/{dataform-layouts/is-combined-field.js → field-types/utils/parse-date-time.js} +15 -11
  180. package/build/field-types/utils/parse-date-time.js.map +7 -0
  181. package/build/field-types/utils/render-from-elements.js +2 -0
  182. package/build/field-types/utils/render-from-elements.js.map +1 -1
  183. package/build/hooks/index.js +2 -0
  184. package/build/hooks/index.js.map +1 -1
  185. package/build/hooks/use-elements.js +3 -1
  186. package/build/hooks/use-elements.js.map +1 -1
  187. package/build/hooks/use-form-validity.js +425 -321
  188. package/build/hooks/use-form-validity.js.map +3 -3
  189. package/build/index.js +2 -0
  190. package/build/index.js.map +1 -1
  191. package/build/lock-unlock.js +3 -1
  192. package/build/lock-unlock.js.map +1 -1
  193. package/build/types/dataform.js +2 -0
  194. package/build/types/dataform.js.map +2 -2
  195. package/build/types/dataviews.js +2 -0
  196. package/build/types/dataviews.js.map +1 -1
  197. package/build/types/field-api.js +2 -0
  198. package/build/types/field-api.js.map +1 -1
  199. package/build/types/index.js +2 -0
  200. package/build/types/index.js.map +1 -1
  201. package/build/types/private.js +2 -0
  202. package/build/types/private.js.map +1 -1
  203. package/build/utils/filter-sort-and-paginate.js +3 -1
  204. package/build/utils/filter-sort-and-paginate.js.map +1 -1
  205. package/build/utils/has-elements.js +2 -0
  206. package/build/utils/has-elements.js.map +1 -1
  207. package/build/utils/normalize-fields.js +4 -2
  208. package/build/utils/normalize-fields.js.map +1 -1
  209. package/build-module/components/dataform/index.js +5 -2
  210. package/build-module/components/dataform/index.js.map +2 -2
  211. package/build-module/components/dataform-context/index.js +3 -2
  212. package/build-module/components/dataform-context/index.js.map +1 -1
  213. package/build-module/components/dataviews/index.js +7 -6
  214. package/build-module/components/dataviews/index.js.map +1 -1
  215. package/build-module/components/dataviews-bulk-actions/index.js +3 -2
  216. package/build-module/components/dataviews-bulk-actions/index.js.map +1 -1
  217. package/build-module/components/dataviews-context/index.js +2 -1
  218. package/build-module/components/dataviews-context/index.js.map +1 -1
  219. package/build-module/components/dataviews-filters/add-filter.js +3 -2
  220. package/build-module/components/dataviews-filters/add-filter.js.map +1 -1
  221. package/build-module/components/dataviews-filters/filter.js +19 -5
  222. package/build-module/components/dataviews-filters/filter.js.map +2 -2
  223. package/build-module/components/dataviews-filters/filters-toggled.js +2 -1
  224. package/build-module/components/dataviews-filters/filters-toggled.js.map +1 -1
  225. package/build-module/components/dataviews-filters/filters.js +2 -1
  226. package/build-module/components/dataviews-filters/filters.js.map +1 -1
  227. package/build-module/components/dataviews-filters/index.js +1 -0
  228. package/build-module/components/dataviews-filters/index.js.map +1 -1
  229. package/build-module/components/dataviews-filters/input-widget.js +2 -1
  230. package/build-module/components/dataviews-filters/input-widget.js.map +1 -1
  231. package/build-module/components/dataviews-filters/reset-filters.js +2 -1
  232. package/build-module/components/dataviews-filters/reset-filters.js.map +1 -1
  233. package/build-module/components/dataviews-filters/search-widget.js +7 -6
  234. package/build-module/components/dataviews-filters/search-widget.js.map +2 -2
  235. package/build-module/components/dataviews-filters/toggle.js +2 -1
  236. package/build-module/components/dataviews-filters/toggle.js.map +1 -1
  237. package/build-module/components/dataviews-filters/use-filters.js +1 -0
  238. package/build-module/components/dataviews-filters/use-filters.js.map +1 -1
  239. package/build-module/components/dataviews-filters/utils.js +3 -2
  240. package/build-module/components/dataviews-filters/utils.js.map +1 -1
  241. package/build-module/components/dataviews-footer/index.js +3 -2
  242. package/build-module/components/dataviews-footer/index.js.map +1 -1
  243. package/build-module/components/dataviews-item-actions/index.js +22 -4
  244. package/build-module/components/dataviews-item-actions/index.js.map +2 -2
  245. package/build-module/components/dataviews-layout/index.js +2 -1
  246. package/build-module/components/dataviews-layout/index.js.map +1 -1
  247. package/build-module/components/dataviews-pagination/index.js +2 -1
  248. package/build-module/components/dataviews-pagination/index.js.map +1 -1
  249. package/build-module/components/dataviews-picker/footer.js +3 -2
  250. package/build-module/components/dataviews-picker/footer.js.map +1 -1
  251. package/build-module/components/dataviews-picker/index.js +7 -6
  252. package/build-module/components/dataviews-picker/index.js.map +1 -1
  253. package/build-module/components/dataviews-search/index.js +3 -2
  254. package/build-module/components/dataviews-search/index.js.map +1 -1
  255. package/build-module/components/dataviews-selection-checkbox/index.js +2 -1
  256. package/build-module/components/dataviews-selection-checkbox/index.js.map +1 -1
  257. package/build-module/components/dataviews-view-config/index.js +5 -4
  258. package/build-module/components/dataviews-view-config/index.js.map +1 -1
  259. package/build-module/components/dataviews-view-config/infinite-scroll-toggle.js +2 -1
  260. package/build-module/components/dataviews-view-config/infinite-scroll-toggle.js.map +1 -1
  261. package/build-module/constants.js +35 -34
  262. package/build-module/constants.js.map +1 -1
  263. package/build-module/dataform-controls/array.js +3 -2
  264. package/build-module/dataform-controls/array.js.map +1 -1
  265. package/build-module/dataform-controls/checkbox.js +3 -2
  266. package/build-module/dataform-controls/checkbox.js.map +1 -1
  267. package/build-module/dataform-controls/color.js +4 -3
  268. package/build-module/dataform-controls/color.js.map +1 -1
  269. package/build-module/dataform-controls/date.js +7 -6
  270. package/build-module/dataform-controls/date.js.map +1 -1
  271. package/build-module/dataform-controls/datetime.js +7 -12
  272. package/build-module/dataform-controls/datetime.js.map +2 -2
  273. package/build-module/dataform-controls/email.js +2 -1
  274. package/build-module/dataform-controls/email.js.map +1 -1
  275. package/build-module/dataform-controls/index.js +3 -2
  276. package/build-module/dataform-controls/index.js.map +1 -1
  277. package/build-module/dataform-controls/integer.js +2 -1
  278. package/build-module/dataform-controls/integer.js.map +1 -1
  279. package/build-module/dataform-controls/number.js +2 -1
  280. package/build-module/dataform-controls/number.js.map +1 -1
  281. package/build-module/dataform-controls/password.js +9 -6
  282. package/build-module/dataform-controls/password.js.map +2 -2
  283. package/build-module/dataform-controls/radio.js +3 -2
  284. package/build-module/dataform-controls/radio.js.map +1 -1
  285. package/build-module/dataform-controls/select.js +3 -2
  286. package/build-module/dataform-controls/select.js.map +1 -1
  287. package/build-module/dataform-controls/telephone.js +2 -1
  288. package/build-module/dataform-controls/telephone.js.map +1 -1
  289. package/build-module/dataform-controls/text.js +2 -1
  290. package/build-module/dataform-controls/text.js.map +1 -1
  291. package/build-module/dataform-controls/textarea.js +3 -2
  292. package/build-module/dataform-controls/textarea.js.map +1 -1
  293. package/build-module/dataform-controls/toggle-group.js +3 -2
  294. package/build-module/dataform-controls/toggle-group.js.map +1 -1
  295. package/build-module/dataform-controls/toggle.js +3 -2
  296. package/build-module/dataform-controls/toggle.js.map +1 -1
  297. package/build-module/dataform-controls/url.js +2 -1
  298. package/build-module/dataform-controls/url.js.map +1 -1
  299. package/build-module/dataform-controls/utils/get-custom-validity.js +1 -0
  300. package/build-module/dataform-controls/utils/get-custom-validity.js.map +1 -1
  301. package/build-module/dataform-controls/utils/relative-date-control.js +3 -2
  302. package/build-module/dataform-controls/utils/relative-date-control.js.map +1 -1
  303. package/build-module/dataform-controls/utils/validated-input.js +3 -2
  304. package/build-module/dataform-controls/utils/validated-input.js.map +1 -1
  305. package/build-module/dataform-controls/utils/validated-number.js +3 -2
  306. package/build-module/dataform-controls/utils/validated-number.js.map +1 -1
  307. package/build-module/dataform-layouts/card/index.js +95 -42
  308. package/build-module/dataform-layouts/card/index.js.map +3 -3
  309. package/build-module/dataform-layouts/data-form-layout.js +8 -15
  310. package/build-module/dataform-layouts/data-form-layout.js.map +2 -2
  311. package/build-module/dataform-layouts/get-summary-fields.js +2 -1
  312. package/build-module/dataform-layouts/get-summary-fields.js.map +1 -1
  313. package/build-module/dataform-layouts/index.js +3 -2
  314. package/build-module/dataform-layouts/index.js.map +2 -2
  315. package/build-module/dataform-layouts/{normalize-form-fields.js → normalize-form.js} +38 -19
  316. package/build-module/dataform-layouts/normalize-form.js.map +7 -0
  317. package/build-module/dataform-layouts/panel/dropdown.js +7 -7
  318. package/build-module/dataform-layouts/panel/dropdown.js.map +2 -2
  319. package/build-module/dataform-layouts/panel/index.js +9 -14
  320. package/build-module/dataform-layouts/panel/index.js.map +2 -2
  321. package/build-module/dataform-layouts/panel/modal.js +7 -7
  322. package/build-module/dataform-layouts/panel/modal.js.map +2 -2
  323. package/build-module/dataform-layouts/panel/summary-button.js +2 -1
  324. package/build-module/dataform-layouts/panel/summary-button.js.map +1 -1
  325. package/build-module/dataform-layouts/regular/index.js +6 -9
  326. package/build-module/dataform-layouts/regular/index.js.map +2 -2
  327. package/build-module/dataform-layouts/row/index.js +9 -23
  328. package/build-module/dataform-layouts/row/index.js.map +2 -2
  329. package/build-module/dataviews-layouts/grid/index.js +3 -2
  330. package/build-module/dataviews-layouts/grid/index.js.map +1 -1
  331. package/build-module/dataviews-layouts/grid/preview-size-picker.js +3 -2
  332. package/build-module/dataviews-layouts/grid/preview-size-picker.js.map +1 -1
  333. package/build-module/dataviews-layouts/index.js +2 -1
  334. package/build-module/dataviews-layouts/index.js.map +1 -1
  335. package/build-module/dataviews-layouts/list/index.js +4 -5
  336. package/build-module/dataviews-layouts/list/index.js.map +2 -2
  337. package/build-module/dataviews-layouts/picker-grid/index.js +3 -2
  338. package/build-module/dataviews-layouts/picker-grid/index.js.map +1 -1
  339. package/build-module/dataviews-layouts/table/column-header-menu.js +5 -4
  340. package/build-module/dataviews-layouts/table/column-header-menu.js.map +1 -1
  341. package/build-module/dataviews-layouts/table/column-primary.js +2 -1
  342. package/build-module/dataviews-layouts/table/column-primary.js.map +1 -1
  343. package/build-module/dataviews-layouts/table/density-picker.js +2 -1
  344. package/build-module/dataviews-layouts/table/density-picker.js.map +1 -1
  345. package/build-module/dataviews-layouts/table/index.js +2 -1
  346. package/build-module/dataviews-layouts/table/index.js.map +1 -1
  347. package/build-module/dataviews-layouts/table/use-is-horizontal-scroll-end.js +2 -1
  348. package/build-module/dataviews-layouts/table/use-is-horizontal-scroll-end.js.map +1 -1
  349. package/build-module/dataviews-layouts/utils/get-data-by-group.js +1 -0
  350. package/build-module/dataviews-layouts/utils/get-data-by-group.js.map +1 -1
  351. package/build-module/dataviews-layouts/utils/grid-items.js +3 -2
  352. package/build-module/dataviews-layouts/utils/grid-items.js.map +1 -1
  353. package/build-module/dataviews-layouts/utils/item-click-wrapper.js +2 -1
  354. package/build-module/dataviews-layouts/utils/item-click-wrapper.js.map +1 -1
  355. package/build-module/dataviews-layouts/utils/preview-size-picker.js +3 -2
  356. package/build-module/dataviews-layouts/utils/preview-size-picker.js.map +1 -1
  357. package/build-module/field-types/array.js +2 -1
  358. package/build-module/field-types/array.js.map +1 -1
  359. package/build-module/field-types/boolean.js +2 -1
  360. package/build-module/field-types/boolean.js.map +1 -1
  361. package/build-module/field-types/color.js +2 -1
  362. package/build-module/field-types/color.js.map +1 -1
  363. package/build-module/field-types/date.js +3 -2
  364. package/build-module/field-types/date.js.map +1 -1
  365. package/build-module/field-types/datetime.js +16 -2
  366. package/build-module/field-types/datetime.js.map +2 -2
  367. package/build-module/field-types/email.js +3 -2
  368. package/build-module/field-types/email.js.map +1 -1
  369. package/build-module/field-types/index.js +2 -1
  370. package/build-module/field-types/index.js.map +1 -1
  371. package/build-module/field-types/integer.js +2 -1
  372. package/build-module/field-types/integer.js.map +1 -1
  373. package/build-module/field-types/media.js +1 -0
  374. package/build-module/field-types/media.js.map +1 -1
  375. package/build-module/field-types/number.js +2 -1
  376. package/build-module/field-types/number.js.map +1 -1
  377. package/build-module/field-types/password.js +2 -1
  378. package/build-module/field-types/password.js.map +1 -1
  379. package/build-module/field-types/telephone.js +2 -1
  380. package/build-module/field-types/telephone.js.map +1 -1
  381. package/build-module/field-types/text.js +2 -1
  382. package/build-module/field-types/text.js.map +1 -1
  383. package/build-module/field-types/url.js +2 -1
  384. package/build-module/field-types/url.js.map +1 -1
  385. package/build-module/field-types/utils/parse-date-time.js +14 -0
  386. package/build-module/field-types/utils/parse-date-time.js.map +7 -0
  387. package/build-module/field-types/utils/render-from-elements.js +1 -0
  388. package/build-module/field-types/utils/render-from-elements.js.map +1 -1
  389. package/build-module/hooks/index.js +1 -0
  390. package/build-module/hooks/index.js.map +1 -1
  391. package/build-module/hooks/use-elements.js +2 -1
  392. package/build-module/hooks/use-elements.js.map +1 -1
  393. package/build-module/hooks/use-form-validity.js +424 -321
  394. package/build-module/hooks/use-form-validity.js.map +3 -3
  395. package/build-module/index.js +1 -0
  396. package/build-module/index.js.map +1 -1
  397. package/build-module/lock-unlock.js +2 -1
  398. package/build-module/lock-unlock.js.map +1 -1
  399. package/build-module/utils/filter-sort-and-paginate.js +2 -1
  400. package/build-module/utils/filter-sort-and-paginate.js.map +1 -1
  401. package/build-module/utils/has-elements.js +1 -0
  402. package/build-module/utils/has-elements.js.map +1 -1
  403. package/build-module/utils/normalize-fields.js +3 -2
  404. package/build-module/utils/normalize-fields.js.map +1 -1
  405. package/build-style/style-rtl.css +12 -12
  406. package/build-style/style.css +12 -12
  407. package/build-types/components/dataform/index.d.ts.map +1 -1
  408. package/build-types/components/dataviews-filters/filter.d.ts.map +1 -1
  409. package/build-types/components/dataviews-item-actions/index.d.ts.map +1 -1
  410. package/build-types/dataform-controls/datetime.d.ts.map +1 -1
  411. package/build-types/dataform-controls/password.d.ts.map +1 -1
  412. package/build-types/dataform-layouts/card/index.d.ts +3 -3
  413. package/build-types/dataform-layouts/card/index.d.ts.map +1 -1
  414. package/build-types/dataform-layouts/data-form-layout.d.ts +4 -4
  415. package/build-types/dataform-layouts/data-form-layout.d.ts.map +1 -1
  416. package/build-types/dataform-layouts/index.d.ts +2 -2
  417. package/build-types/dataform-layouts/index.d.ts.map +1 -1
  418. package/build-types/dataform-layouts/normalize-form.d.ts +8 -0
  419. package/build-types/dataform-layouts/normalize-form.d.ts.map +1 -0
  420. package/build-types/dataform-layouts/panel/dropdown.d.ts +2 -2
  421. package/build-types/dataform-layouts/panel/dropdown.d.ts.map +1 -1
  422. package/build-types/dataform-layouts/panel/index.d.ts.map +1 -1
  423. package/build-types/dataform-layouts/panel/modal.d.ts +2 -2
  424. package/build-types/dataform-layouts/panel/modal.d.ts.map +1 -1
  425. package/build-types/dataform-layouts/regular/index.d.ts.map +1 -1
  426. package/build-types/dataform-layouts/row/index.d.ts.map +1 -1
  427. package/build-types/dataviews-layouts/list/index.d.ts.map +1 -1
  428. package/build-types/field-types/datetime.d.ts +1 -1
  429. package/build-types/field-types/datetime.d.ts.map +1 -1
  430. package/build-types/field-types/utils/parse-date-time.d.ts +2 -0
  431. package/build-types/field-types/utils/parse-date-time.d.ts.map +1 -0
  432. package/build-types/hooks/use-form-validity.d.ts.map +1 -1
  433. package/build-types/stories/dataform.story.d.ts +10 -11
  434. package/build-types/stories/dataform.story.d.ts.map +1 -1
  435. package/build-types/stories/dataviews-picker.story.d.ts +31 -0
  436. package/build-types/stories/dataviews-picker.story.d.ts.map +1 -1
  437. package/build-types/test/normalize-form.d.ts +2 -0
  438. package/build-types/test/normalize-form.d.ts.map +1 -0
  439. package/build-types/types/dataform.d.ts +16 -6
  440. package/build-types/types/dataform.d.ts.map +1 -1
  441. package/build-wp/index.js +830 -601
  442. package/package.json +15 -15
  443. package/src/components/dataform/index.tsx +3 -1
  444. package/src/components/dataviews/style.scss +1 -1
  445. package/src/components/dataviews-bulk-actions/style.scss +1 -1
  446. package/src/components/dataviews-filters/filter.tsx +16 -1
  447. package/src/components/dataviews-filters/style.scss +1 -1
  448. package/src/components/dataviews-item-actions/index.tsx +37 -14
  449. package/src/components/dataviews-pagination/style.scss +2 -2
  450. package/src/dataform-controls/datetime.tsx +3 -10
  451. package/src/dataform-controls/password.tsx +16 -12
  452. package/src/dataform-layouts/card/index.tsx +89 -33
  453. package/src/dataform-layouts/data-form-layout.tsx +12 -23
  454. package/src/dataform-layouts/index.tsx +5 -3
  455. package/src/dataform-layouts/{normalize-form-fields.ts → normalize-form.ts} +44 -23
  456. package/src/dataform-layouts/panel/dropdown.tsx +10 -13
  457. package/src/dataform-layouts/panel/index.tsx +9 -24
  458. package/src/dataform-layouts/panel/modal.tsx +15 -15
  459. package/src/dataform-layouts/regular/index.tsx +7 -12
  460. package/src/dataform-layouts/row/index.tsx +13 -26
  461. package/src/dataviews-layouts/list/index.tsx +0 -2
  462. package/src/dataviews-layouts/table/style.scss +2 -2
  463. package/src/field-types/datetime.tsx +16 -5
  464. package/src/field-types/utils/parse-date-time.ts +17 -0
  465. package/src/hooks/use-form-validity.ts +572 -422
  466. package/src/stories/dataform.story.tsx +520 -456
  467. package/src/stories/dataviews-picker.story.tsx +155 -32
  468. package/src/stories/field-types.story.tsx +7 -7
  469. package/src/test/normalize-form.ts +568 -0
  470. package/src/test/use-form-validity.ts +318 -33
  471. package/src/types/dataform.ts +18 -8
  472. package/tsconfig.tsbuildinfo +1 -1
  473. package/build/dataform-layouts/is-combined-field.js.map +0 -7
  474. package/build/dataform-layouts/normalize-form-fields.js.map +0 -7
  475. package/build-module/dataform-layouts/is-combined-field.js +0 -7
  476. package/build-module/dataform-layouts/is-combined-field.js.map +0 -7
  477. package/build-module/dataform-layouts/normalize-form-fields.js.map +0 -7
  478. package/build-types/dataform-layouts/is-combined-field.d.ts +0 -6
  479. package/build-types/dataform-layouts/is-combined-field.d.ts.map +0 -1
  480. package/build-types/dataform-layouts/normalize-form-fields.d.ts +0 -19
  481. package/build-types/dataform-layouts/normalize-form-fields.d.ts.map +0 -1
  482. package/build-types/test/normalize-form-fields.d.ts +0 -2
  483. package/build-types/test/normalize-form-fields.d.ts.map +0 -1
  484. package/src/dataform-layouts/is-combined-field.ts +0 -10
  485. package/src/test/normalize-form-fields.ts +0 -317
@@ -26,24 +26,43 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // packages/dataviews/src/dataform-layouts/card/index.tsx
29
31
  var card_exports = {};
30
32
  __export(card_exports, {
31
33
  default: () => FormCardField,
32
- useCollapsibleCard: () => useCollapsibleCard
34
+ useCardHeader: () => useCardHeader
33
35
  });
34
36
  module.exports = __toCommonJS(card_exports);
35
- var import_jsx_runtime = require("react/jsx-runtime");
36
37
  var import_components = require("@wordpress/components");
37
38
  var import_element = require("@wordpress/element");
38
39
  var import_icons = require("@wordpress/icons");
39
40
  var import__ = require("..");
40
41
  var import_dataform_context = __toESM(require("../../components/dataform-context"));
41
42
  var import_data_form_layout = require("../data-form-layout");
42
- var import_is_combined_field = require("../is-combined-field");
43
- var import_normalize_form_fields = require("../normalize-form-fields");
43
+ var import_normalize_form = require("../normalize-form");
44
44
  var import_get_summary_fields = require("../get-summary-fields");
45
- function useCollapsibleCard(initialIsOpen = true) {
46
- const [isOpen, setIsOpen] = (0, import_element.useState)(initialIsOpen);
45
+ var import_jsx_runtime = require("react/jsx-runtime");
46
+ var NonCollapsibleCardHeader = ({
47
+ children,
48
+ ...props
49
+ }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.CardHeader, { isBorderless: true, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
50
+ "div",
51
+ {
52
+ style: {
53
+ height: "40px",
54
+ // This is to match the chevron's __next40pxDefaultSize
55
+ width: "100%",
56
+ display: "flex",
57
+ justifyContent: "space-between",
58
+ alignItems: "center"
59
+ },
60
+ children
61
+ }
62
+ ) });
63
+ function useCardHeader(layout) {
64
+ const { isOpened, isCollapsible } = layout;
65
+ const [isOpen, setIsOpen] = (0, import_element.useState)(isOpened);
47
66
  const toggle = (0, import_element.useCallback)(() => {
48
67
  setIsOpen((prev) => !prev);
49
68
  }, []);
@@ -60,6 +79,7 @@ function useCollapsibleCard(initialIsOpen = true) {
60
79
  cursor: "pointer",
61
80
  ...props.style
62
81
  },
82
+ isBorderless: true,
63
83
  children: [
64
84
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
65
85
  "div",
@@ -88,7 +108,9 @@ function useCollapsibleCard(initialIsOpen = true) {
88
108
  ),
89
109
  [toggle, isOpen]
90
110
  );
91
- return { isOpen, CollapsibleCardHeader };
111
+ const effectiveIsOpen = isCollapsible ? isOpen : true;
112
+ const CardHeaderComponent = isCollapsible ? CollapsibleCardHeader : NonCollapsibleCardHeader;
113
+ return { isOpen: effectiveIsOpen, CardHeader: CardHeaderComponent };
92
114
  }
93
115
  function isSummaryFieldVisible(summaryField, summaryConfig, isOpen) {
94
116
  if (!summaryConfig || Array.isArray(summaryConfig) && summaryConfig.length === 0) {
@@ -123,28 +145,35 @@ function FormCardField({
123
145
  validity
124
146
  }) {
125
147
  const { fields } = (0, import_element.useContext)(import_dataform_context.default);
126
- const layout = (0, import_normalize_form_fields.normalizeLayout)({
127
- ...field.layout,
128
- type: "card"
129
- });
148
+ const layout = field.layout;
130
149
  const form = (0, import_element.useMemo)(
131
150
  () => ({
132
- layout: import_normalize_form_fields.DEFAULT_LAYOUT,
133
- fields: (0, import_is_combined_field.isCombinedField)(field) ? field.children : []
151
+ layout: import_normalize_form.DEFAULT_LAYOUT,
152
+ fields: field.children ?? []
134
153
  }),
135
154
  [field]
136
155
  );
137
- const { isOpen, CollapsibleCardHeader } = useCollapsibleCard(
138
- layout.isOpened
139
- );
156
+ const { isOpen, CardHeader } = useCardHeader(layout);
140
157
  const summaryFields = (0, import_get_summary_fields.getSummaryFields)(layout.summary, fields);
141
158
  const visibleSummaryFields = summaryFields.filter(
142
159
  (summaryField) => isSummaryFieldVisible(summaryField, layout.summary, isOpen)
143
160
  );
144
- if ((0, import_is_combined_field.isCombinedField)(field)) {
161
+ const sizeCard = {
162
+ blockStart: "medium",
163
+ blockEnd: "medium",
164
+ inlineStart: "medium",
165
+ inlineEnd: "medium"
166
+ };
167
+ if (!!field.children) {
145
168
  const withHeader2 = !!field.label && layout.withHeader;
146
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_components.Card, { className: "dataforms-layouts-card__field", children: [
147
- withHeader2 && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(CollapsibleCardHeader, { className: "dataforms-layouts-card__field-header", children: [
169
+ const sizeCardBody2 = {
170
+ blockStart: withHeader2 ? "none" : "medium",
171
+ blockEnd: "medium",
172
+ inlineStart: "medium",
173
+ inlineEnd: "medium"
174
+ };
175
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_components.Card, { className: "dataforms-layouts-card__field", size: sizeCard, children: [
176
+ withHeader2 && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(CardHeader, { className: "dataforms-layouts-card__field-header", children: [
148
177
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "dataforms-layouts-card__field-header-label", children: field.label }),
149
178
  visibleSummaryFields.length > 0 && layout.withHeader && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "dataforms-layouts-card__field-summary", children: visibleSummaryFields.map(
150
179
  (summaryField) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -159,18 +188,25 @@ function FormCardField({
159
188
  ] }),
160
189
  (isOpen || !withHeader2) && // If it doesn't have a header, keep it open.
161
190
  // Otherwise, the card will not be visible.
162
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_components.CardBody, { className: "dataforms-layouts-card__field-control", children: [
163
- field.description && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "dataforms-layouts-card__field-description", children: field.description }),
164
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
165
- import_data_form_layout.DataFormLayout,
166
- {
167
- data,
168
- form,
169
- onChange,
170
- validity: validity?.children
171
- }
172
- )
173
- ] })
191
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
192
+ import_components.CardBody,
193
+ {
194
+ size: sizeCardBody2,
195
+ className: "dataforms-layouts-card__field-control",
196
+ children: [
197
+ field.description && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "dataforms-layouts-card__field-description", children: field.description }),
198
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
199
+ import_data_form_layout.DataFormLayout,
200
+ {
201
+ data,
202
+ form,
203
+ onChange,
204
+ validity: validity?.children
205
+ }
206
+ )
207
+ ]
208
+ }
209
+ )
174
210
  ] });
175
211
  }
176
212
  const fieldDefinition = fields.find(
@@ -184,8 +220,14 @@ function FormCardField({
184
220
  return null;
185
221
  }
186
222
  const withHeader = !!fieldDefinition.label && layout.withHeader;
187
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_components.Card, { className: "dataforms-layouts-card__field", children: [
188
- withHeader && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(CollapsibleCardHeader, { className: "dataforms-layouts-card__field-header", children: [
223
+ const sizeCardBody = {
224
+ blockStart: withHeader ? "none" : "medium",
225
+ blockEnd: "medium",
226
+ inlineStart: "medium",
227
+ inlineEnd: "medium"
228
+ };
229
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_components.Card, { className: "dataforms-layouts-card__field", size: sizeCard, children: [
230
+ withHeader && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(CardHeader, { className: "dataforms-layouts-card__field-header", children: [
189
231
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "dataforms-layouts-card__field-header-label", children: fieldDefinition.label }),
190
232
  visibleSummaryFields.length > 0 && layout.withHeader && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "dataforms-layouts-card__field-summary", children: visibleSummaryFields.map((summaryField) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
191
233
  summaryField.render,
@@ -198,20 +240,27 @@ function FormCardField({
198
240
  ] }),
199
241
  (isOpen || !withHeader) && // If it doesn't have a header, keep it open.
200
242
  // Otherwise, the card will not be visible.
201
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.CardBody, { className: "dataforms-layouts-card__field-control", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
202
- RegularLayout,
243
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
244
+ import_components.CardBody,
203
245
  {
204
- data,
205
- field,
206
- onChange,
207
- hideLabelFromVision: hideLabelFromVision || withHeader,
208
- validity
246
+ size: sizeCardBody,
247
+ className: "dataforms-layouts-card__field-control",
248
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
249
+ RegularLayout,
250
+ {
251
+ data,
252
+ field,
253
+ onChange,
254
+ hideLabelFromVision: hideLabelFromVision || withHeader,
255
+ validity
256
+ }
257
+ )
209
258
  }
210
- ) })
259
+ )
211
260
  ] });
212
261
  }
213
262
  // Annotate the CommonJS export names for ESM import in node:
214
263
  0 && (module.exports = {
215
- useCollapsibleCard
264
+ useCardHeader
216
265
  });
217
266
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/dataform-layouts/card/index.tsx"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { Button, Card, CardBody, CardHeader } from '@wordpress/components';\nimport { useCallback, useContext, useMemo, useState } from '@wordpress/element';\nimport { chevronDown, chevronUp } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { getFormFieldLayout } from '..';\nimport DataFormContext from '../../components/dataform-context';\nimport type {\n\tNormalizedCardLayout,\n\tCardLayout,\n\tFieldLayoutProps,\n\tForm,\n\tLayout,\n\tNormalizedField,\n} from '../../types';\nimport { DataFormLayout } from '../data-form-layout';\nimport { isCombinedField } from '../is-combined-field';\nimport { DEFAULT_LAYOUT, normalizeLayout } from '../normalize-form-fields';\nimport { getSummaryFields } from '../get-summary-fields';\n\nexport function useCollapsibleCard( initialIsOpen: boolean = true ) {\n\tconst [ isOpen, setIsOpen ] = useState( initialIsOpen );\n\n\tconst toggle = useCallback( () => {\n\t\tsetIsOpen( ( prev ) => ! prev );\n\t}, [] );\n\n\tconst CollapsibleCardHeader = useCallback(\n\t\t( {\n\t\t\tchildren,\n\t\t\t...props\n\t\t}: {\n\t\t\tchildren: React.ReactNode;\n\t\t\t[ key: string ]: any;\n\t\t} ) => (\n\t\t\t<CardHeader\n\t\t\t\t{ ...props }\n\t\t\t\tonClick={ toggle }\n\t\t\t\tstyle={ {\n\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t...props.style,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\tjustifyContent: 'space-between',\n\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ children }\n\t\t\t\t</div>\n\t\t\t\t<Button\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\ticon={ isOpen ? chevronUp : chevronDown }\n\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\taria-label={ isOpen ? 'Collapse' : 'Expand' }\n\t\t\t\t/>\n\t\t\t</CardHeader>\n\t\t),\n\t\t[ toggle, isOpen ]\n\t);\n\n\treturn { isOpen, CollapsibleCardHeader };\n}\n\nfunction isSummaryFieldVisible< Item >(\n\tsummaryField: NormalizedField< Item >,\n\tsummaryConfig: NormalizedCardLayout[ 'summary' ],\n\tisOpen: boolean\n) {\n\t// If no summary config, dont't show any fields\n\tif (\n\t\t! summaryConfig ||\n\t\t( Array.isArray( summaryConfig ) && summaryConfig.length === 0 )\n\t) {\n\t\treturn false;\n\t}\n\n\t// Convert to array for consistent handling\n\tconst summaryConfigArray = Array.isArray( summaryConfig )\n\t\t? summaryConfig\n\t\t: [ summaryConfig ];\n\n\t// Find the config for this specific field\n\tconst fieldConfig = summaryConfigArray.find( ( config ) => {\n\t\tif ( typeof config === 'string' ) {\n\t\t\treturn config === summaryField.id;\n\t\t}\n\t\tif ( typeof config === 'object' && 'id' in config ) {\n\t\t\treturn config.id === summaryField.id;\n\t\t}\n\t\treturn false;\n\t} );\n\n\t// If field is not in summary config, don't show it\n\tif ( ! fieldConfig ) {\n\t\treturn false;\n\t}\n\n\t// If it's a string, always show it\n\tif ( typeof fieldConfig === 'string' ) {\n\t\treturn true;\n\t}\n\n\t// If it has visibility rules, respect them\n\tif ( typeof fieldConfig === 'object' && 'visibility' in fieldConfig ) {\n\t\treturn (\n\t\t\tfieldConfig.visibility === 'always' ||\n\t\t\t( fieldConfig.visibility === 'when-collapsed' && ! isOpen )\n\t\t);\n\t}\n\n\t// Default to always show\n\treturn true;\n}\n\nexport default function FormCardField< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tvalidity,\n}: FieldLayoutProps< Item > ) {\n\tconst { fields } = useContext( DataFormContext );\n\n\tconst layout: NormalizedCardLayout = normalizeLayout( {\n\t\t...field.layout,\n\t\ttype: 'card',\n\t} as CardLayout ) as NormalizedCardLayout;\n\n\tconst form: Form = useMemo(\n\t\t(): Form => ( {\n\t\t\tlayout: DEFAULT_LAYOUT as Layout,\n\t\t\tfields: isCombinedField( field ) ? field.children : [],\n\t\t} ),\n\t\t[ field ]\n\t);\n\n\tconst { isOpen, CollapsibleCardHeader } = useCollapsibleCard(\n\t\tlayout.isOpened\n\t);\n\n\tconst summaryFields = getSummaryFields< Item >( layout.summary, fields );\n\n\tconst visibleSummaryFields = summaryFields.filter( ( summaryField ) =>\n\t\tisSummaryFieldVisible( summaryField, layout.summary, isOpen )\n\t);\n\n\tif ( isCombinedField( field ) ) {\n\t\tconst withHeader = !! field.label && layout.withHeader;\n\t\treturn (\n\t\t\t<Card className=\"dataforms-layouts-card__field\">\n\t\t\t\t{ withHeader && (\n\t\t\t\t\t<CollapsibleCardHeader className=\"dataforms-layouts-card__field-header\">\n\t\t\t\t\t\t<span className=\"dataforms-layouts-card__field-header-label\">\n\t\t\t\t\t\t\t{ field.label }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t{ visibleSummaryFields.length > 0 &&\n\t\t\t\t\t\t\tlayout.withHeader && (\n\t\t\t\t\t\t\t\t<div className=\"dataforms-layouts-card__field-summary\">\n\t\t\t\t\t\t\t\t\t{ visibleSummaryFields.map(\n\t\t\t\t\t\t\t\t\t\t( summaryField ) => (\n\t\t\t\t\t\t\t\t\t\t\t<summaryField.render\n\t\t\t\t\t\t\t\t\t\t\t\tkey={ summaryField.id }\n\t\t\t\t\t\t\t\t\t\t\t\titem={ data }\n\t\t\t\t\t\t\t\t\t\t\t\tfield={ summaryField }\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t</CollapsibleCardHeader>\n\t\t\t\t) }\n\t\t\t\t{ ( isOpen || ! withHeader ) && (\n\t\t\t\t\t// If it doesn't have a header, keep it open.\n\t\t\t\t\t// Otherwise, the card will not be visible.\n\t\t\t\t\t<CardBody className=\"dataforms-layouts-card__field-control\">\n\t\t\t\t\t\t{ field.description && (\n\t\t\t\t\t\t\t<div className=\"dataforms-layouts-card__field-description\">\n\t\t\t\t\t\t\t\t{ field.description }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<DataFormLayout\n\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\tform={ form }\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\tvalidity={ validity?.children }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</CardBody>\n\t\t\t\t) }\n\t\t\t</Card>\n\t\t);\n\t}\n\n\tconst fieldDefinition = fields.find(\n\t\t( fieldDef ) => fieldDef.id === field.id\n\t);\n\n\tif ( ! fieldDefinition || ! fieldDefinition.Edit ) {\n\t\treturn null;\n\t}\n\n\tconst RegularLayout = getFormFieldLayout( 'regular' )?.component;\n\tif ( ! RegularLayout ) {\n\t\treturn null;\n\t}\n\tconst withHeader = !! fieldDefinition.label && layout.withHeader;\n\treturn (\n\t\t<Card className=\"dataforms-layouts-card__field\">\n\t\t\t{ withHeader && (\n\t\t\t\t<CollapsibleCardHeader className=\"dataforms-layouts-card__field-header\">\n\t\t\t\t\t<span className=\"dataforms-layouts-card__field-header-label\">\n\t\t\t\t\t\t{ fieldDefinition.label }\n\t\t\t\t\t</span>\n\t\t\t\t\t{ visibleSummaryFields.length > 0 && layout.withHeader && (\n\t\t\t\t\t\t<div className=\"dataforms-layouts-card__field-summary\">\n\t\t\t\t\t\t\t{ visibleSummaryFields.map( ( summaryField ) => (\n\t\t\t\t\t\t\t\t<summaryField.render\n\t\t\t\t\t\t\t\t\tkey={ summaryField.id }\n\t\t\t\t\t\t\t\t\titem={ data }\n\t\t\t\t\t\t\t\t\tfield={ summaryField }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</CollapsibleCardHeader>\n\t\t\t) }\n\t\t\t{ ( isOpen || ! withHeader ) && (\n\t\t\t\t// If it doesn't have a header, keep it open.\n\t\t\t\t// Otherwise, the card will not be visible.\n\t\t\t\t<CardBody className=\"dataforms-layouts-card__field-control\">\n\t\t\t\t\t<RegularLayout\n\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\thideLabelFromVision={\n\t\t\t\t\t\t\thideLabelFromVision || withHeader\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalidity={ validity }\n\t\t\t\t\t/>\n\t\t\t\t</CardBody>\n\t\t\t) }\n\t\t</Card>\n\t);\n}\n"],
5
- "mappings": "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",
6
- "names": ["DataFormContext", "withHeader"]
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tCard,\n\tCardBody,\n\tCardHeader as OriginalCardHeader,\n} from '@wordpress/components';\nimport { useCallback, useContext, useMemo, useState } from '@wordpress/element';\nimport { chevronDown, chevronUp } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { getFormFieldLayout } from '..';\nimport DataFormContext from '../../components/dataform-context';\nimport type {\n\tFieldLayoutProps,\n\tNormalizedCardLayout,\n\tNormalizedField,\n\tNormalizedForm,\n\tNormalizedLayout,\n} from '../../types';\nimport { DataFormLayout } from '../data-form-layout';\nimport { DEFAULT_LAYOUT } from '../normalize-form';\nimport { getSummaryFields } from '../get-summary-fields';\n\nconst NonCollapsibleCardHeader = ( {\n\tchildren,\n\t...props\n}: {\n\tchildren: React.ReactNode;\n} ) => (\n\t<OriginalCardHeader isBorderless { ...props }>\n\t\t<div\n\t\t\tstyle={ {\n\t\t\t\theight: '40px', // This is to match the chevron's __next40pxDefaultSize\n\t\t\t\twidth: '100%',\n\t\t\t\tdisplay: 'flex',\n\t\t\t\tjustifyContent: 'space-between',\n\t\t\t\talignItems: 'center',\n\t\t\t} }\n\t\t>\n\t\t\t{ children }\n\t\t</div>\n\t</OriginalCardHeader>\n);\n\nexport function useCardHeader( layout: NormalizedCardLayout ) {\n\tconst { isOpened, isCollapsible } = layout;\n\tconst [ isOpen, setIsOpen ] = useState( isOpened );\n\n\tconst toggle = useCallback( () => {\n\t\tsetIsOpen( ( prev ) => ! prev );\n\t}, [] );\n\n\tconst CollapsibleCardHeader = useCallback(\n\t\t( {\n\t\t\tchildren,\n\t\t\t...props\n\t\t}: {\n\t\t\tchildren: React.ReactNode;\n\t\t\t[ key: string ]: any;\n\t\t} ) => (\n\t\t\t<OriginalCardHeader\n\t\t\t\t{ ...props }\n\t\t\t\tonClick={ toggle }\n\t\t\t\tstyle={ {\n\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t...props.style,\n\t\t\t\t} }\n\t\t\t\tisBorderless\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\tjustifyContent: 'space-between',\n\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ children }\n\t\t\t\t</div>\n\t\t\t\t<Button\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\ticon={ isOpen ? chevronUp : chevronDown }\n\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\taria-label={ isOpen ? 'Collapse' : 'Expand' }\n\t\t\t\t/>\n\t\t\t</OriginalCardHeader>\n\t\t),\n\t\t[ toggle, isOpen ]\n\t);\n\n\tconst effectiveIsOpen = isCollapsible ? isOpen : true;\n\tconst CardHeaderComponent = isCollapsible\n\t\t? CollapsibleCardHeader\n\t\t: NonCollapsibleCardHeader;\n\n\treturn { isOpen: effectiveIsOpen, CardHeader: CardHeaderComponent };\n}\n\nfunction isSummaryFieldVisible< Item >(\n\tsummaryField: NormalizedField< Item >,\n\tsummaryConfig: NormalizedCardLayout[ 'summary' ],\n\tisOpen: boolean\n) {\n\t// If no summary config, dont't show any fields\n\tif (\n\t\t! summaryConfig ||\n\t\t( Array.isArray( summaryConfig ) && summaryConfig.length === 0 )\n\t) {\n\t\treturn false;\n\t}\n\n\t// Convert to array for consistent handling\n\tconst summaryConfigArray = Array.isArray( summaryConfig )\n\t\t? summaryConfig\n\t\t: [ summaryConfig ];\n\n\t// Find the config for this specific field\n\tconst fieldConfig = summaryConfigArray.find( ( config ) => {\n\t\tif ( typeof config === 'string' ) {\n\t\t\treturn config === summaryField.id;\n\t\t}\n\t\tif ( typeof config === 'object' && 'id' in config ) {\n\t\t\treturn config.id === summaryField.id;\n\t\t}\n\t\treturn false;\n\t} );\n\n\t// If field is not in summary config, don't show it\n\tif ( ! fieldConfig ) {\n\t\treturn false;\n\t}\n\n\t// If it's a string, always show it\n\tif ( typeof fieldConfig === 'string' ) {\n\t\treturn true;\n\t}\n\n\t// If it has visibility rules, respect them\n\tif ( typeof fieldConfig === 'object' && 'visibility' in fieldConfig ) {\n\t\treturn (\n\t\t\tfieldConfig.visibility === 'always' ||\n\t\t\t( fieldConfig.visibility === 'when-collapsed' && ! isOpen )\n\t\t);\n\t}\n\n\t// Default to always show\n\treturn true;\n}\n\nexport default function FormCardField< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tvalidity,\n}: FieldLayoutProps< Item > ) {\n\tconst { fields } = useContext( DataFormContext );\n\tconst layout = field.layout as NormalizedCardLayout;\n\n\tconst form: NormalizedForm = useMemo(\n\t\t() => ( {\n\t\t\tlayout: DEFAULT_LAYOUT as NormalizedLayout,\n\t\t\tfields: field.children ?? [],\n\t\t} ),\n\t\t[ field ]\n\t);\n\n\tconst { isOpen, CardHeader } = useCardHeader( layout );\n\n\tconst summaryFields = getSummaryFields< Item >( layout.summary, fields );\n\n\tconst visibleSummaryFields = summaryFields.filter( ( summaryField ) =>\n\t\tisSummaryFieldVisible( summaryField, layout.summary, isOpen )\n\t);\n\n\tconst sizeCard = {\n\t\tblockStart: 'medium' as const,\n\t\tblockEnd: 'medium' as const,\n\t\tinlineStart: 'medium' as const,\n\t\tinlineEnd: 'medium' as const,\n\t};\n\n\tif ( !! field.children ) {\n\t\tconst withHeader = !! field.label && layout.withHeader;\n\n\t\tconst sizeCardBody = {\n\t\t\tblockStart: withHeader\n\t\t\t\t? ( 'none' as const )\n\t\t\t\t: ( 'medium' as const ),\n\t\t\tblockEnd: 'medium' as const,\n\t\t\tinlineStart: 'medium' as const,\n\t\t\tinlineEnd: 'medium' as const,\n\t\t};\n\n\t\treturn (\n\t\t\t<Card className=\"dataforms-layouts-card__field\" size={ sizeCard }>\n\t\t\t\t{ withHeader && (\n\t\t\t\t\t<CardHeader className=\"dataforms-layouts-card__field-header\">\n\t\t\t\t\t\t<span className=\"dataforms-layouts-card__field-header-label\">\n\t\t\t\t\t\t\t{ field.label }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t{ visibleSummaryFields.length > 0 &&\n\t\t\t\t\t\t\tlayout.withHeader && (\n\t\t\t\t\t\t\t\t<div className=\"dataforms-layouts-card__field-summary\">\n\t\t\t\t\t\t\t\t\t{ visibleSummaryFields.map(\n\t\t\t\t\t\t\t\t\t\t( summaryField ) => (\n\t\t\t\t\t\t\t\t\t\t\t<summaryField.render\n\t\t\t\t\t\t\t\t\t\t\t\tkey={ summaryField.id }\n\t\t\t\t\t\t\t\t\t\t\t\titem={ data }\n\t\t\t\t\t\t\t\t\t\t\t\tfield={ summaryField }\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t</CardHeader>\n\t\t\t\t) }\n\t\t\t\t{ ( isOpen || ! withHeader ) && (\n\t\t\t\t\t// If it doesn't have a header, keep it open.\n\t\t\t\t\t// Otherwise, the card will not be visible.\n\t\t\t\t\t<CardBody\n\t\t\t\t\t\tsize={ sizeCardBody }\n\t\t\t\t\t\tclassName=\"dataforms-layouts-card__field-control\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ field.description && (\n\t\t\t\t\t\t\t<div className=\"dataforms-layouts-card__field-description\">\n\t\t\t\t\t\t\t\t{ field.description }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<DataFormLayout\n\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\tform={ form }\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\tvalidity={ validity?.children }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</CardBody>\n\t\t\t\t) }\n\t\t\t</Card>\n\t\t);\n\t}\n\n\tconst fieldDefinition = fields.find(\n\t\t( fieldDef ) => fieldDef.id === field.id\n\t);\n\n\tif ( ! fieldDefinition || ! fieldDefinition.Edit ) {\n\t\treturn null;\n\t}\n\n\tconst RegularLayout = getFormFieldLayout( 'regular' )?.component;\n\tif ( ! RegularLayout ) {\n\t\treturn null;\n\t}\n\tconst withHeader = !! fieldDefinition.label && layout.withHeader;\n\n\tconst sizeCardBody = {\n\t\tblockStart: withHeader ? ( 'none' as const ) : ( 'medium' as const ),\n\t\tblockEnd: 'medium' as const,\n\t\tinlineStart: 'medium' as const,\n\t\tinlineEnd: 'medium' as const,\n\t};\n\n\treturn (\n\t\t<Card className=\"dataforms-layouts-card__field\" size={ sizeCard }>\n\t\t\t{ withHeader && (\n\t\t\t\t<CardHeader className=\"dataforms-layouts-card__field-header\">\n\t\t\t\t\t<span className=\"dataforms-layouts-card__field-header-label\">\n\t\t\t\t\t\t{ fieldDefinition.label }\n\t\t\t\t\t</span>\n\t\t\t\t\t{ visibleSummaryFields.length > 0 && layout.withHeader && (\n\t\t\t\t\t\t<div className=\"dataforms-layouts-card__field-summary\">\n\t\t\t\t\t\t\t{ visibleSummaryFields.map( ( summaryField ) => (\n\t\t\t\t\t\t\t\t<summaryField.render\n\t\t\t\t\t\t\t\t\tkey={ summaryField.id }\n\t\t\t\t\t\t\t\t\titem={ data }\n\t\t\t\t\t\t\t\t\tfield={ summaryField }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</CardHeader>\n\t\t\t) }\n\t\t\t{ ( isOpen || ! withHeader ) && (\n\t\t\t\t// If it doesn't have a header, keep it open.\n\t\t\t\t// Otherwise, the card will not be visible.\n\t\t\t\t<CardBody\n\t\t\t\t\tsize={ sizeCardBody }\n\t\t\t\t\tclassName=\"dataforms-layouts-card__field-control\"\n\t\t\t\t>\n\t\t\t\t\t<RegularLayout\n\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\thideLabelFromVision={\n\t\t\t\t\t\t\thideLabelFromVision || withHeader\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalidity={ validity }\n\t\t\t\t\t/>\n\t\t\t\t</CardBody>\n\t\t\t) }\n\t\t</Card>\n\t);\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["OriginalCardHeader", "DataFormContext", "withHeader", "sizeCardBody"]
7
7
  }
@@ -26,19 +26,19 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // packages/dataviews/src/dataform-layouts/data-form-layout.tsx
29
31
  var data_form_layout_exports = {};
30
32
  __export(data_form_layout_exports, {
31
33
  DataFormLayout: () => DataFormLayout
32
34
  });
33
35
  module.exports = __toCommonJS(data_form_layout_exports);
34
- var import_jsx_runtime = require("react/jsx-runtime");
35
36
  var import_components = require("@wordpress/components");
36
37
  var import_element = require("@wordpress/element");
37
38
  var import_index = require("./index");
38
39
  var import_dataform_context = __toESM(require("../components/dataform-context"));
39
- var import_is_combined_field = require("./is-combined-field");
40
- var import_normalize_form_fields = __toESM(require("./normalize-form-fields"));
41
- const DEFAULT_WRAPPER = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.__experimentalVStack, { className: "dataforms-layouts__wrapper", spacing: 4, children });
40
+ var import_jsx_runtime = require("react/jsx-runtime");
41
+ var DEFAULT_WRAPPER = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.__experimentalVStack, { className: "dataforms-layouts__wrapper", spacing: 4, children });
42
42
  function DataFormLayout({
43
43
  data,
44
44
  form,
@@ -49,23 +49,17 @@ function DataFormLayout({
49
49
  }) {
50
50
  const { fields: fieldDefinitions } = (0, import_element.useContext)(import_dataform_context.default);
51
51
  function getFieldDefinition(field) {
52
- const fieldId = typeof field === "string" ? field : field.id;
53
52
  return fieldDefinitions.find(
54
- (fieldDefinition) => fieldDefinition.id === fieldId
53
+ (fieldDefinition) => fieldDefinition.id === field.id
55
54
  );
56
55
  }
57
- const normalizedFormFields = (0, import_element.useMemo)(
58
- () => (0, import_normalize_form_fields.default)(form),
59
- [form]
60
- );
61
- const normalizedFormLayout = (0, import_normalize_form_fields.normalizeLayout)(form.layout);
62
- const Wrapper = as ?? (0, import_index.getFormFieldLayout)(normalizedFormLayout.type)?.wrapper ?? DEFAULT_WRAPPER;
63
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Wrapper, { layout: normalizedFormLayout, children: normalizedFormFields.map((formField) => {
56
+ const Wrapper = as ?? (0, import_index.getFormFieldLayout)(form.layout.type)?.wrapper ?? DEFAULT_WRAPPER;
57
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Wrapper, { layout: form.layout, children: form.fields.map((formField) => {
64
58
  const FieldLayout = (0, import_index.getFormFieldLayout)(formField.layout.type)?.component;
65
59
  if (!FieldLayout) {
66
60
  return null;
67
61
  }
68
- const fieldDefinition = !(0, import_is_combined_field.isCombinedField)(formField) ? getFieldDefinition(formField) : void 0;
62
+ const fieldDefinition = !formField.children ? getFieldDefinition(formField) : void 0;
69
63
  if (fieldDefinition && fieldDefinition.isVisible && !fieldDefinition.isVisible(data)) {
70
64
  return null;
71
65
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/dataform-layouts/data-form-layout.tsx"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __experimentalVStack as VStack } from '@wordpress/components';\nimport { useContext, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tFieldValidity,\n\tForm,\n\tFormField,\n\tFormValidity,\n\tSimpleFormField,\n} from '../types';\nimport { getFormFieldLayout } from './index';\nimport DataFormContext from '../components/dataform-context';\nimport { isCombinedField } from './is-combined-field';\nimport normalizeFormFields, { normalizeLayout } from './normalize-form-fields';\n\nconst DEFAULT_WRAPPER = ( { children }: { children: React.ReactNode } ) => (\n\t<VStack className=\"dataforms-layouts__wrapper\" spacing={ 4 }>\n\t\t{ children }\n\t</VStack>\n);\n\nexport function DataFormLayout< Item >( {\n\tdata,\n\tform,\n\tonChange,\n\tvalidity,\n\tchildren,\n\tas,\n}: {\n\tdata: Item;\n\tform: Form;\n\tonChange: ( value: any ) => void;\n\tvalidity?: FormValidity;\n\tchildren?: (\n\t\tFieldLayout: ( props: {\n\t\t\tdata: Item;\n\t\t\tfield: FormField;\n\t\t\tonChange: ( value: any ) => void;\n\t\t\thideLabelFromVision?: boolean;\n\t\t\tvalidity?: FieldValidity;\n\t\t} ) => React.JSX.Element | null,\n\t\tchildField: FormField,\n\t\tchildFieldValidity?: FieldValidity\n\t) => React.JSX.Element;\n\tas?: React.ComponentType< { children: React.ReactNode } >;\n} ) {\n\tconst { fields: fieldDefinitions } = useContext( DataFormContext );\n\n\tfunction getFieldDefinition( field: SimpleFormField | string ) {\n\t\tconst fieldId = typeof field === 'string' ? field : field.id;\n\n\t\treturn fieldDefinitions.find(\n\t\t\t( fieldDefinition ) => fieldDefinition.id === fieldId\n\t\t);\n\t}\n\n\tconst normalizedFormFields = useMemo(\n\t\t() => normalizeFormFields( form ),\n\t\t[ form ]\n\t);\n\n\tconst normalizedFormLayout = normalizeLayout( form.layout );\n\tconst Wrapper =\n\t\tas ??\n\t\tgetFormFieldLayout( normalizedFormLayout.type )?.wrapper ??\n\t\tDEFAULT_WRAPPER;\n\n\treturn (\n\t\t<Wrapper layout={ normalizedFormLayout }>\n\t\t\t{ normalizedFormFields.map( ( formField ) => {\n\t\t\t\tconst FieldLayout = getFormFieldLayout( formField.layout.type )\n\t\t\t\t\t?.component;\n\n\t\t\t\tif ( ! FieldLayout ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tconst fieldDefinition = ! isCombinedField( formField )\n\t\t\t\t\t? getFieldDefinition( formField )\n\t\t\t\t\t: undefined;\n\n\t\t\t\tif (\n\t\t\t\t\tfieldDefinition &&\n\t\t\t\t\tfieldDefinition.isVisible &&\n\t\t\t\t\t! fieldDefinition.isVisible( data )\n\t\t\t\t) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tif ( children ) {\n\t\t\t\t\treturn children(\n\t\t\t\t\t\tFieldLayout,\n\t\t\t\t\t\tformField,\n\t\t\t\t\t\tvalidity?.[ formField.id ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t<FieldLayout\n\t\t\t\t\t\tkey={ formField.id }\n\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\tfield={ formField }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tvalidity={ validity?.[ formField.id ] }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</Wrapper>\n\t);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBC;AAnBD,wBAA+C;AAC/C,qBAAoC;AAYpC,mBAAmC;AACnC,8BAA4B;AAC5B,+BAAgC;AAChC,mCAAqD;AAErD,MAAM,kBAAkB,CAAE,EAAE,SAAS,MACpC,4CAAC,kBAAAA,sBAAA,EAAO,WAAU,8BAA6B,SAAU,GACtD,UACH;AAGM,SAAS,eAAwB;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAiBI;AACH,QAAM,EAAE,QAAQ,iBAAiB,QAAI,2BAAY,wBAAAC,OAAgB;AAEjE,WAAS,mBAAoB,OAAkC;AAC9D,UAAM,UAAU,OAAO,UAAU,WAAW,QAAQ,MAAM;AAE1D,WAAO,iBAAiB;AAAA,MACvB,CAAE,oBAAqB,gBAAgB,OAAO;AAAA,IAC/C;AAAA,EACD;AAEA,QAAM,2BAAuB;AAAA,IAC5B,UAAM,6BAAAC,SAAqB,IAAK;AAAA,IAChC,CAAE,IAAK;AAAA,EACR;AAEA,QAAM,2BAAuB,8CAAiB,KAAK,MAAO;AAC1D,QAAM,UACL,UACA,iCAAoB,qBAAqB,IAAK,GAAG,WACjD;AAED,SACC,4CAAC,WAAQ,QAAS,sBACf,+BAAqB,IAAK,CAAE,cAAe;AAC5C,UAAM,kBAAc,iCAAoB,UAAU,OAAO,IAAK,GAC3D;AAEH,QAAK,CAAE,aAAc;AACpB,aAAO;AAAA,IACR;AAEA,UAAM,kBAAkB,KAAE,0CAAiB,SAAU,IAClD,mBAAoB,SAAU,IAC9B;AAEH,QACC,mBACA,gBAAgB,aAChB,CAAE,gBAAgB,UAAW,IAAK,GACjC;AACD,aAAO;AAAA,IACR;AAEA,QAAK,UAAW;AACf,aAAO;AAAA,QACN;AAAA,QACA;AAAA,QACA,WAAY,UAAU,EAAG;AAAA,MAC1B;AAAA,IACD;AAEA,WACC;AAAA,MAAC;AAAA;AAAA,QAEA;AAAA,QACA,OAAQ;AAAA,QACR;AAAA,QACA,UAAW,WAAY,UAAU,EAAG;AAAA;AAAA,MAJ9B,UAAU;AAAA,IAKjB;AAAA,EAEF,CAAE,GACH;AAEF;",
6
- "names": ["VStack", "DataFormContext", "normalizeFormFields"]
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __experimentalVStack as VStack } from '@wordpress/components';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tFieldValidity,\n\tFormValidity,\n\tNormalizedForm,\n\tNormalizedFormField,\n} from '../types';\nimport { getFormFieldLayout } from './index';\nimport DataFormContext from '../components/dataform-context';\n\nconst DEFAULT_WRAPPER = ( { children }: { children: React.ReactNode } ) => (\n\t<VStack className=\"dataforms-layouts__wrapper\" spacing={ 4 }>\n\t\t{ children }\n\t</VStack>\n);\n\nexport function DataFormLayout< Item >( {\n\tdata,\n\tform,\n\tonChange,\n\tvalidity,\n\tchildren,\n\tas,\n}: {\n\tdata: Item;\n\tform: NormalizedForm;\n\tonChange: ( value: any ) => void;\n\tvalidity?: FormValidity;\n\tchildren?: (\n\t\tFieldLayout: ( props: {\n\t\t\tdata: Item;\n\t\t\tfield: NormalizedFormField;\n\t\t\tonChange: ( value: any ) => void;\n\t\t\thideLabelFromVision?: boolean;\n\t\t\tvalidity?: FieldValidity;\n\t\t} ) => React.JSX.Element | null,\n\t\tchildField: NormalizedFormField,\n\t\tchildFieldValidity?: FieldValidity\n\t) => React.JSX.Element;\n\tas?: React.ComponentType< { children: React.ReactNode } >;\n} ) {\n\tconst { fields: fieldDefinitions } = useContext( DataFormContext );\n\n\tfunction getFieldDefinition( field: NormalizedFormField ) {\n\t\treturn fieldDefinitions.find(\n\t\t\t( fieldDefinition ) => fieldDefinition.id === field.id\n\t\t);\n\t}\n\n\tconst Wrapper =\n\t\tas ??\n\t\tgetFormFieldLayout( form.layout.type )?.wrapper ??\n\t\tDEFAULT_WRAPPER;\n\n\treturn (\n\t\t<Wrapper layout={ form.layout }>\n\t\t\t{ form.fields.map( ( formField ) => {\n\t\t\t\tconst FieldLayout = getFormFieldLayout( formField.layout.type )\n\t\t\t\t\t?.component;\n\n\t\t\t\tif ( ! FieldLayout ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tconst fieldDefinition = ! formField.children\n\t\t\t\t\t? getFieldDefinition( formField )\n\t\t\t\t\t: undefined;\n\n\t\t\t\tif (\n\t\t\t\t\tfieldDefinition &&\n\t\t\t\t\tfieldDefinition.isVisible &&\n\t\t\t\t\t! fieldDefinition.isVisible( data )\n\t\t\t\t) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tif ( children ) {\n\t\t\t\t\treturn children(\n\t\t\t\t\t\tFieldLayout,\n\t\t\t\t\t\tformField,\n\t\t\t\t\t\tvalidity?.[ formField.id ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t<FieldLayout\n\t\t\t\t\t\tkey={ formField.id }\n\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\tfield={ formField }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tvalidity={ validity?.[ formField.id ] }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</Wrapper>\n\t);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,wBAA+C;AAC/C,qBAA2B;AAW3B,mBAAmC;AACnC,8BAA4B;AAG3B;AADD,IAAM,kBAAkB,CAAE,EAAE,SAAS,MACpC,4CAAC,kBAAAA,sBAAA,EAAO,WAAU,8BAA6B,SAAU,GACtD,UACH;AAGM,SAAS,eAAwB;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAiBI;AACH,QAAM,EAAE,QAAQ,iBAAiB,QAAI,2BAAY,wBAAAC,OAAgB;AAEjE,WAAS,mBAAoB,OAA6B;AACzD,WAAO,iBAAiB;AAAA,MACvB,CAAE,oBAAqB,gBAAgB,OAAO,MAAM;AAAA,IACrD;AAAA,EACD;AAEA,QAAM,UACL,UACA,iCAAoB,KAAK,OAAO,IAAK,GAAG,WACxC;AAED,SACC,4CAAC,WAAQ,QAAS,KAAK,QACpB,eAAK,OAAO,IAAK,CAAE,cAAe;AACnC,UAAM,kBAAc,iCAAoB,UAAU,OAAO,IAAK,GAC3D;AAEH,QAAK,CAAE,aAAc;AACpB,aAAO;AAAA,IACR;AAEA,UAAM,kBAAkB,CAAE,UAAU,WACjC,mBAAoB,SAAU,IAC9B;AAEH,QACC,mBACA,gBAAgB,aAChB,CAAE,gBAAgB,UAAW,IAAK,GACjC;AACD,aAAO;AAAA,IACR;AAEA,QAAK,UAAW;AACf,aAAO;AAAA,QACN;AAAA,QACA;AAAA,QACA,WAAY,UAAU,EAAG;AAAA,MAC1B;AAAA,IACD;AAEA,WACC;AAAA,MAAC;AAAA;AAAA,QAEA;AAAA,QACA,OAAQ;AAAA,QACR;AAAA,QACA,UAAW,WAAY,UAAU,EAAG;AAAA;AAAA,MAJ9B,UAAU;AAAA,IAKjB;AAAA,EAEF,CAAE,GACH;AAEF;",
6
+ "names": ["VStack", "DataFormContext"]
7
7
  }
@@ -16,6 +16,8 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // packages/dataviews/src/dataform-layouts/get-summary-fields.ts
19
21
  var get_summary_fields_exports = {};
20
22
  __export(get_summary_fields_exports, {
21
23
  getSummaryFields: () => getSummaryFields
@@ -29,7 +31,7 @@ function extractSummaryIds(summary) {
29
31
  }
30
32
  return [];
31
33
  }
32
- const getSummaryFields = (summaryField, fields) => {
34
+ var getSummaryFields = (summaryField, fields) => {
33
35
  if (Array.isArray(summaryField) && summaryField.length > 0) {
34
36
  const summaryIds = extractSummaryIds(summaryField);
35
37
  return summaryIds.map(
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/dataform-layouts/get-summary-fields.ts"],
4
4
  "sourcesContent": ["/**\n * Internal dependencies\n */\nimport type { NormalizedField, NormalizedSummaryField } from '../types';\n\n/**\n * Extracts field IDs from various summary field formats.\n *\n * @param summary The summary field configuration.\n * @return Array of field IDs.\n */\nfunction extractSummaryIds( summary: NormalizedSummaryField ): string[] {\n\tif ( Array.isArray( summary ) ) {\n\t\treturn summary.map( ( item ) =>\n\t\t\ttypeof item === 'string' ? item : item.id\n\t\t);\n\t}\n\n\treturn [];\n}\n\n/**\n * Returns the summary fields for a given field.\n * @param summaryField - The summary field configuration.\n * @param fields - The fields to get the summary fields from.\n * @return The summary fields.\n */\nexport const getSummaryFields = < Item >(\n\tsummaryField: NormalizedSummaryField,\n\tfields: NormalizedField< Item >[]\n): NormalizedField< Item >[] => {\n\tif ( Array.isArray( summaryField ) && summaryField.length > 0 ) {\n\t\tconst summaryIds = extractSummaryIds( summaryField );\n\t\treturn summaryIds\n\t\t\t.map( ( summaryId ) =>\n\t\t\t\tfields.find( ( _field ) => _field.id === summaryId )\n\t\t\t)\n\t\t\t.filter( ( _field ) => _field !== undefined );\n\t}\n\n\treturn [];\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA,SAAS,kBAAmB,SAA4C;AACvE,MAAK,MAAM,QAAS,OAAQ,GAAI;AAC/B,WAAO,QAAQ;AAAA,MAAK,CAAE,SACrB,OAAO,SAAS,WAAW,OAAO,KAAK;AAAA,IACxC;AAAA,EACD;AAEA,SAAO,CAAC;AACT;AAQO,MAAM,mBAAmB,CAC/B,cACA,WAC+B;AAC/B,MAAK,MAAM,QAAS,YAAa,KAAK,aAAa,SAAS,GAAI;AAC/D,UAAM,aAAa,kBAAmB,YAAa;AACnD,WAAO,WACL;AAAA,MAAK,CAAE,cACP,OAAO,KAAM,CAAE,WAAY,OAAO,OAAO,SAAU;AAAA,IACpD,EACC,OAAQ,CAAE,WAAY,WAAW,MAAU;AAAA,EAC9C;AAEA,SAAO,CAAC;AACT;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA,SAAS,kBAAmB,SAA4C;AACvE,MAAK,MAAM,QAAS,OAAQ,GAAI;AAC/B,WAAO,QAAQ;AAAA,MAAK,CAAE,SACrB,OAAO,SAAS,WAAW,OAAO,KAAK;AAAA,IACxC;AAAA,EACD;AAEA,SAAO,CAAC;AACT;AAQO,IAAM,mBAAmB,CAC/B,cACA,WAC+B;AAC/B,MAAK,MAAM,QAAS,YAAa,KAAK,aAAa,SAAS,GAAI;AAC/D,UAAM,aAAa,kBAAmB,YAAa;AACnD,WAAO,WACL;AAAA,MAAK,CAAE,cACP,OAAO,KAAM,CAAE,WAAY,OAAO,OAAO,SAAU;AAAA,IACpD,EACC,OAAQ,CAAE,WAAY,WAAW,MAAU;AAAA,EAC9C;AAEA,SAAO,CAAC;AACT;",
6
6
  "names": []
7
7
  }
@@ -26,18 +26,20 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // packages/dataviews/src/dataform-layouts/index.tsx
29
31
  var dataform_layouts_exports = {};
30
32
  __export(dataform_layouts_exports, {
31
33
  getFormFieldLayout: () => getFormFieldLayout
32
34
  });
33
35
  module.exports = __toCommonJS(dataform_layouts_exports);
34
- var import_jsx_runtime = require("react/jsx-runtime");
35
36
  var import_components = require("@wordpress/components");
36
37
  var import_regular = __toESM(require("./regular"));
37
38
  var import_panel = __toESM(require("./panel"));
38
39
  var import_card = __toESM(require("./card"));
39
40
  var import_row = __toESM(require("./row"));
40
- const FORM_FIELD_LAYOUTS = [
41
+ var import_jsx_runtime = require("react/jsx-runtime");
42
+ var FORM_FIELD_LAYOUTS = [
41
43
  {
42
44
  type: "regular",
43
45
  component: import_regular.default,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/dataform-layouts/index.tsx"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalVStack as VStack,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport type { Layout, RowLayout } from '../types';\nimport FormRegularField from './regular';\nimport FormPanelField from './panel';\nimport FormCardField from './card';\nimport FormRowField from './row';\n\nconst FORM_FIELD_LAYOUTS = [\n\t{\n\t\ttype: 'regular',\n\t\tcomponent: FormRegularField,\n\t\twrapper: ( { children }: { children: React.ReactNode } ) => (\n\t\t\t<VStack className=\"dataforms-layouts__wrapper\" spacing={ 4 }>\n\t\t\t\t{ children }\n\t\t\t</VStack>\n\t\t),\n\t},\n\t{\n\t\ttype: 'panel',\n\t\tcomponent: FormPanelField,\n\t\twrapper: ( { children }: { children: React.ReactNode } ) => (\n\t\t\t<VStack className=\"dataforms-layouts__wrapper\" spacing={ 2 }>\n\t\t\t\t{ children }\n\t\t\t</VStack>\n\t\t),\n\t},\n\t{\n\t\ttype: 'card',\n\t\tcomponent: FormCardField,\n\t\twrapper: ( { children }: { children: React.ReactNode } ) => (\n\t\t\t<VStack className=\"dataforms-layouts__wrapper\" spacing={ 6 }>\n\t\t\t\t{ children }\n\t\t\t</VStack>\n\t\t),\n\t},\n\t{\n\t\ttype: 'row',\n\t\tcomponent: FormRowField,\n\t\twrapper: ( {\n\t\t\tchildren,\n\t\t\tlayout,\n\t\t}: {\n\t\t\tchildren: React.ReactNode;\n\t\t\tlayout: Layout;\n\t\t} ) => (\n\t\t\t<VStack className=\"dataforms-layouts__wrapper\" spacing={ 4 }>\n\t\t\t\t<div className=\"dataforms-layouts-row__field\">\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tspacing={ 4 }\n\t\t\t\t\t\talignment={ ( layout as RowLayout ).alignment }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t</HStack>\n\t\t\t\t</div>\n\t\t\t</VStack>\n\t\t),\n\t},\n];\n\nexport function getFormFieldLayout( type: string ) {\n\treturn FORM_FIELD_LAYOUTS.find( ( layout ) => layout.type === type );\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBG;AAnBH,wBAGO;AAMP,qBAA6B;AAC7B,mBAA2B;AAC3B,kBAA0B;AAC1B,iBAAyB;AAEzB,MAAM,qBAAqB;AAAA,EAC1B;AAAA,IACC,MAAM;AAAA,IACN,WAAW,eAAAA;AAAA,IACX,SAAS,CAAE,EAAE,SAAS,MACrB,4CAAC,kBAAAC,sBAAA,EAAO,WAAU,8BAA6B,SAAU,GACtD,UACH;AAAA,EAEF;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,WAAW,aAAAC;AAAA,IACX,SAAS,CAAE,EAAE,SAAS,MACrB,4CAAC,kBAAAD,sBAAA,EAAO,WAAU,8BAA6B,SAAU,GACtD,UACH;AAAA,EAEF;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,WAAW,YAAAE;AAAA,IACX,SAAS,CAAE,EAAE,SAAS,MACrB,4CAAC,kBAAAF,sBAAA,EAAO,WAAU,8BAA6B,SAAU,GACtD,UACH;AAAA,EAEF;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,WAAW,WAAAG;AAAA,IACX,SAAS,CAAE;AAAA,MACV;AAAA,MACA;AAAA,IACD,MAIC,4CAAC,kBAAAH,sBAAA,EAAO,WAAU,8BAA6B,SAAU,GACxD,sDAAC,SAAI,WAAU,gCACd;AAAA,MAAC,kBAAAI;AAAA,MAAA;AAAA,QACA,SAAU;AAAA,QACV,WAAc,OAAsB;AAAA,QAElC;AAAA;AAAA,IACH,GACD,GACD;AAAA,EAEF;AACD;AAEO,SAAS,mBAAoB,MAAe;AAClD,SAAO,mBAAmB,KAAM,CAAE,WAAY,OAAO,SAAS,IAAK;AACpE;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalVStack as VStack,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport type { NormalizedLayout, NormalizedRowLayout } from '../types';\nimport FormRegularField from './regular';\nimport FormPanelField from './panel';\nimport FormCardField from './card';\nimport FormRowField from './row';\n\nconst FORM_FIELD_LAYOUTS = [\n\t{\n\t\ttype: 'regular',\n\t\tcomponent: FormRegularField,\n\t\twrapper: ( { children }: { children: React.ReactNode } ) => (\n\t\t\t<VStack className=\"dataforms-layouts__wrapper\" spacing={ 4 }>\n\t\t\t\t{ children }\n\t\t\t</VStack>\n\t\t),\n\t},\n\t{\n\t\ttype: 'panel',\n\t\tcomponent: FormPanelField,\n\t\twrapper: ( { children }: { children: React.ReactNode } ) => (\n\t\t\t<VStack className=\"dataforms-layouts__wrapper\" spacing={ 2 }>\n\t\t\t\t{ children }\n\t\t\t</VStack>\n\t\t),\n\t},\n\t{\n\t\ttype: 'card',\n\t\tcomponent: FormCardField,\n\t\twrapper: ( { children }: { children: React.ReactNode } ) => (\n\t\t\t<VStack className=\"dataforms-layouts__wrapper\" spacing={ 6 }>\n\t\t\t\t{ children }\n\t\t\t</VStack>\n\t\t),\n\t},\n\t{\n\t\ttype: 'row',\n\t\tcomponent: FormRowField,\n\t\twrapper: ( {\n\t\t\tchildren,\n\t\t\tlayout,\n\t\t}: {\n\t\t\tchildren: React.ReactNode;\n\t\t\tlayout: NormalizedLayout;\n\t\t} ) => (\n\t\t\t<VStack className=\"dataforms-layouts__wrapper\" spacing={ 4 }>\n\t\t\t\t<div className=\"dataforms-layouts-row__field\">\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tspacing={ 4 }\n\t\t\t\t\t\talignment={\n\t\t\t\t\t\t\t( layout as NormalizedRowLayout ).alignment\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t</HStack>\n\t\t\t\t</div>\n\t\t\t</VStack>\n\t\t),\n\t},\n];\n\nexport function getFormFieldLayout( type: string ) {\n\treturn FORM_FIELD_LAYOUTS.find( ( layout ) => layout.type === type );\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,wBAGO;AAMP,qBAA6B;AAC7B,mBAA2B;AAC3B,kBAA0B;AAC1B,iBAAyB;AAOtB;AALH,IAAM,qBAAqB;AAAA,EAC1B;AAAA,IACC,MAAM;AAAA,IACN,WAAW,eAAAA;AAAA,IACX,SAAS,CAAE,EAAE,SAAS,MACrB,4CAAC,kBAAAC,sBAAA,EAAO,WAAU,8BAA6B,SAAU,GACtD,UACH;AAAA,EAEF;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,WAAW,aAAAC;AAAA,IACX,SAAS,CAAE,EAAE,SAAS,MACrB,4CAAC,kBAAAD,sBAAA,EAAO,WAAU,8BAA6B,SAAU,GACtD,UACH;AAAA,EAEF;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,WAAW,YAAAE;AAAA,IACX,SAAS,CAAE,EAAE,SAAS,MACrB,4CAAC,kBAAAF,sBAAA,EAAO,WAAU,8BAA6B,SAAU,GACtD,UACH;AAAA,EAEF;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,WAAW,WAAAG;AAAA,IACX,SAAS,CAAE;AAAA,MACV;AAAA,MACA;AAAA,IACD,MAIC,4CAAC,kBAAAH,sBAAA,EAAO,WAAU,8BAA6B,SAAU,GACxD,sDAAC,SAAI,WAAU,gCACd;AAAA,MAAC,kBAAAI;AAAA,MAAA;AAAA,QACA,SAAU;AAAA,QACV,WACG,OAAgC;AAAA,QAGjC;AAAA;AAAA,IACH,GACD,GACD;AAAA,EAEF;AACD;AAEO,SAAS,mBAAoB,MAAe;AAClD,SAAO,mBAAmB,KAAM,CAAE,WAAY,OAAO,SAAS,IAAK;AACpE;",
6
6
  "names": ["FormRegularField", "VStack", "FormPanelField", "FormCardField", "FormRowField", "HStack"]
7
7
  }
@@ -16,18 +16,19 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var normalize_form_fields_exports = {};
20
- __export(normalize_form_fields_exports, {
19
+
20
+ // packages/dataviews/src/dataform-layouts/normalize-form.ts
21
+ var normalize_form_exports = {};
22
+ __export(normalize_form_exports, {
21
23
  DEFAULT_LAYOUT: () => DEFAULT_LAYOUT,
22
- default: () => normalizeFormFields,
23
- normalizeLayout: () => normalizeLayout
24
+ default: () => normalize_form_default
24
25
  });
25
- module.exports = __toCommonJS(normalize_form_fields_exports);
26
- const DEFAULT_LAYOUT = {
26
+ module.exports = __toCommonJS(normalize_form_exports);
27
+ var DEFAULT_LAYOUT = {
27
28
  type: "regular",
28
29
  labelPosition: "top"
29
30
  };
30
- const normalizeCardSummaryField = (sum) => {
31
+ var normalizeCardSummaryField = (sum) => {
31
32
  if (typeof sum === "string") {
32
33
  return [{ id: sum, visibility: "when-collapsed" }];
33
34
  }
@@ -60,7 +61,8 @@ function normalizeLayout(layout) {
60
61
  type: "card",
61
62
  withHeader: false,
62
63
  isOpened: true,
63
- summary: []
64
+ summary: [],
65
+ isCollapsible: false
64
66
  };
65
67
  } else {
66
68
  const summary = layout.summary ?? [];
@@ -68,7 +70,8 @@ function normalizeLayout(layout) {
68
70
  type: "card",
69
71
  withHeader: true,
70
72
  isOpened: typeof layout.isOpened === "boolean" ? layout.isOpened : true,
71
- summary: normalizeCardSummaryField(summary)
73
+ summary: normalizeCardSummaryField(summary),
74
+ isCollapsible: layout.isCollapsible === void 0 ? true : layout.isCollapsible
72
75
  };
73
76
  }
74
77
  } else if (layout?.type === "row") {
@@ -80,25 +83,41 @@ function normalizeLayout(layout) {
80
83
  }
81
84
  return normalizedLayout;
82
85
  }
83
- function normalizeFormFields(form) {
84
- const formLayout = normalizeLayout(form?.layout);
85
- return (form.fields ?? []).map((field) => {
86
- if (typeof field === "string") {
86
+ function normalizeForm(form) {
87
+ const normalizedFormLayout = normalizeLayout(form?.layout);
88
+ const normalizedFields = (form.fields ?? []).map(
89
+ (field) => {
90
+ if (typeof field === "string") {
91
+ return {
92
+ id: field,
93
+ layout: normalizedFormLayout
94
+ };
95
+ }
96
+ const fieldLayout = field.layout ? normalizeLayout(field.layout) : normalizedFormLayout;
87
97
  return {
88
- id: field,
89
- layout: formLayout
98
+ id: field.id,
99
+ layout: fieldLayout,
100
+ ...!!field.label && { label: field.label },
101
+ ...!!field.description && {
102
+ description: field.description
103
+ },
104
+ ..."children" in field && Array.isArray(field.children) && {
105
+ children: normalizeForm({
106
+ fields: field.children,
107
+ layout: DEFAULT_LAYOUT
108
+ }).fields
109
+ }
90
110
  };
91
111
  }
92
- const fieldLayout = field.layout ? normalizeLayout(field.layout) : formLayout;
93
- return {
94
- ...field,
95
- layout: fieldLayout
96
- };
97
- });
112
+ );
113
+ return {
114
+ layout: normalizedFormLayout,
115
+ fields: normalizedFields
116
+ };
98
117
  }
118
+ var normalize_form_default = normalizeForm;
99
119
  // Annotate the CommonJS export names for ESM import in node:
100
120
  0 && (module.exports = {
101
- DEFAULT_LAYOUT,
102
- normalizeLayout
121
+ DEFAULT_LAYOUT
103
122
  });
104
- //# sourceMappingURL=normalize-form-fields.js.map
123
+ //# sourceMappingURL=normalize-form.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/dataform-layouts/normalize-form.ts"],
4
+ "sourcesContent": ["/**\n * Internal dependencies\n */\nimport type {\n\tForm,\n\tLayout,\n\tNormalizedForm,\n\tNormalizedFormField,\n\tNormalizedLayout,\n\tNormalizedRegularLayout,\n\tNormalizedPanelLayout,\n\tNormalizedCardLayout,\n\tNormalizedRowLayout,\n\tNormalizedCardSummaryField,\n\tCardSummaryField,\n} from '../types';\n\nexport const DEFAULT_LAYOUT: NormalizedLayout = {\n\ttype: 'regular',\n\tlabelPosition: 'top',\n} as NormalizedRegularLayout;\n\nconst normalizeCardSummaryField = (\n\tsum: CardSummaryField\n): NormalizedCardSummaryField => {\n\tif ( typeof sum === 'string' ) {\n\t\treturn [ { id: sum, visibility: 'when-collapsed' } ];\n\t}\n\treturn sum.map( ( item ) => {\n\t\tif ( typeof item === 'string' ) {\n\t\t\treturn { id: item, visibility: 'when-collapsed' };\n\t\t}\n\t\treturn { id: item.id, visibility: item.visibility };\n\t} );\n};\n\n/**\n * Normalizes a layout configuration based on its type.\n *\n * @param layout The layout object to normalize.\n * @return The normalized layout object.\n */\nfunction normalizeLayout( layout?: Layout ): NormalizedLayout {\n\tlet normalizedLayout = DEFAULT_LAYOUT;\n\n\tif ( layout?.type === 'regular' ) {\n\t\tnormalizedLayout = {\n\t\t\ttype: 'regular',\n\t\t\tlabelPosition: layout?.labelPosition ?? 'top',\n\t\t} satisfies NormalizedRegularLayout;\n\t} else if ( layout?.type === 'panel' ) {\n\t\tconst summary = layout.summary ?? [];\n\t\tconst normalizedSummary = Array.isArray( summary )\n\t\t\t? summary\n\t\t\t: [ summary ];\n\n\t\tnormalizedLayout = {\n\t\t\ttype: 'panel',\n\t\t\tlabelPosition: layout?.labelPosition ?? 'side',\n\t\t\topenAs: layout?.openAs ?? 'dropdown',\n\t\t\tsummary: normalizedSummary,\n\t\t} satisfies NormalizedPanelLayout;\n\t} else if ( layout?.type === 'card' ) {\n\t\tif ( layout.withHeader === false ) {\n\t\t\t// Don't let isOpened be false if withHeader is false.\n\t\t\t// Otherwise, the card will not be visible.\n\t\t\tnormalizedLayout = {\n\t\t\t\ttype: 'card',\n\t\t\t\twithHeader: false,\n\t\t\t\tisOpened: true,\n\t\t\t\tsummary: [],\n\t\t\t\tisCollapsible: false,\n\t\t\t} satisfies NormalizedCardLayout;\n\t\t} else {\n\t\t\tconst summary = layout.summary ?? [];\n\n\t\t\tnormalizedLayout = {\n\t\t\t\ttype: 'card',\n\t\t\t\twithHeader: true,\n\t\t\t\tisOpened:\n\t\t\t\t\ttypeof layout.isOpened === 'boolean'\n\t\t\t\t\t\t? layout.isOpened\n\t\t\t\t\t\t: true,\n\t\t\t\tsummary: normalizeCardSummaryField( summary ),\n\t\t\t\tisCollapsible:\n\t\t\t\t\tlayout.isCollapsible === undefined\n\t\t\t\t\t\t? true\n\t\t\t\t\t\t: layout.isCollapsible,\n\t\t\t} satisfies NormalizedCardLayout;\n\t\t}\n\t} else if ( layout?.type === 'row' ) {\n\t\tnormalizedLayout = {\n\t\t\ttype: 'row',\n\t\t\talignment: layout?.alignment ?? 'center',\n\t\t\tstyles: layout?.styles ?? {},\n\t\t} satisfies NormalizedRowLayout;\n\t}\n\n\treturn normalizedLayout;\n}\n\nfunction normalizeForm( form: Form ): NormalizedForm {\n\tconst normalizedFormLayout = normalizeLayout( form?.layout );\n\n\tconst normalizedFields: NormalizedFormField[] = ( form.fields ?? [] ).map(\n\t\t( field ) => {\n\t\t\tif ( typeof field === 'string' ) {\n\t\t\t\treturn {\n\t\t\t\t\tid: field,\n\t\t\t\t\tlayout: normalizedFormLayout,\n\t\t\t\t} satisfies NormalizedFormField;\n\t\t\t}\n\n\t\t\tconst fieldLayout = field.layout\n\t\t\t\t? normalizeLayout( field.layout )\n\t\t\t\t: normalizedFormLayout;\n\n\t\t\treturn {\n\t\t\t\tid: field.id,\n\t\t\t\tlayout: fieldLayout,\n\t\t\t\t...( !! field.label && { label: field.label } ),\n\t\t\t\t...( !! field.description && {\n\t\t\t\t\tdescription: field.description,\n\t\t\t\t} ),\n\t\t\t\t...( 'children' in field &&\n\t\t\t\t\tArray.isArray( field.children ) && {\n\t\t\t\t\t\tchildren: normalizeForm( {\n\t\t\t\t\t\t\tfields: field.children,\n\t\t\t\t\t\t\tlayout: DEFAULT_LAYOUT,\n\t\t\t\t\t\t} ).fields,\n\t\t\t\t\t} ),\n\t\t\t} satisfies NormalizedFormField;\n\t\t}\n\t);\n\n\treturn {\n\t\tlayout: normalizedFormLayout,\n\t\tfields: normalizedFields,\n\t};\n}\n\nexport default normalizeForm;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBO,IAAM,iBAAmC;AAAA,EAC/C,MAAM;AAAA,EACN,eAAe;AAChB;AAEA,IAAM,4BAA4B,CACjC,QACgC;AAChC,MAAK,OAAO,QAAQ,UAAW;AAC9B,WAAO,CAAE,EAAE,IAAI,KAAK,YAAY,iBAAiB,CAAE;AAAA,EACpD;AACA,SAAO,IAAI,IAAK,CAAE,SAAU;AAC3B,QAAK,OAAO,SAAS,UAAW;AAC/B,aAAO,EAAE,IAAI,MAAM,YAAY,iBAAiB;AAAA,IACjD;AACA,WAAO,EAAE,IAAI,KAAK,IAAI,YAAY,KAAK,WAAW;AAAA,EACnD,CAAE;AACH;AAQA,SAAS,gBAAiB,QAAoC;AAC7D,MAAI,mBAAmB;AAEvB,MAAK,QAAQ,SAAS,WAAY;AACjC,uBAAmB;AAAA,MAClB,MAAM;AAAA,MACN,eAAe,QAAQ,iBAAiB;AAAA,IACzC;AAAA,EACD,WAAY,QAAQ,SAAS,SAAU;AACtC,UAAM,UAAU,OAAO,WAAW,CAAC;AACnC,UAAM,oBAAoB,MAAM,QAAS,OAAQ,IAC9C,UACA,CAAE,OAAQ;AAEb,uBAAmB;AAAA,MAClB,MAAM;AAAA,MACN,eAAe,QAAQ,iBAAiB;AAAA,MACxC,QAAQ,QAAQ,UAAU;AAAA,MAC1B,SAAS;AAAA,IACV;AAAA,EACD,WAAY,QAAQ,SAAS,QAAS;AACrC,QAAK,OAAO,eAAe,OAAQ;AAGlC,yBAAmB;AAAA,QAClB,MAAM;AAAA,QACN,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,SAAS,CAAC;AAAA,QACV,eAAe;AAAA,MAChB;AAAA,IACD,OAAO;AACN,YAAM,UAAU,OAAO,WAAW,CAAC;AAEnC,yBAAmB;AAAA,QAClB,MAAM;AAAA,QACN,YAAY;AAAA,QACZ,UACC,OAAO,OAAO,aAAa,YACxB,OAAO,WACP;AAAA,QACJ,SAAS,0BAA2B,OAAQ;AAAA,QAC5C,eACC,OAAO,kBAAkB,SACtB,OACA,OAAO;AAAA,MACZ;AAAA,IACD;AAAA,EACD,WAAY,QAAQ,SAAS,OAAQ;AACpC,uBAAmB;AAAA,MAClB,MAAM;AAAA,MACN,WAAW,QAAQ,aAAa;AAAA,MAChC,QAAQ,QAAQ,UAAU,CAAC;AAAA,IAC5B;AAAA,EACD;AAEA,SAAO;AACR;AAEA,SAAS,cAAe,MAA6B;AACpD,QAAM,uBAAuB,gBAAiB,MAAM,MAAO;AAE3D,QAAM,oBAA4C,KAAK,UAAU,CAAC,GAAI;AAAA,IACrE,CAAE,UAAW;AACZ,UAAK,OAAO,UAAU,UAAW;AAChC,eAAO;AAAA,UACN,IAAI;AAAA,UACJ,QAAQ;AAAA,QACT;AAAA,MACD;AAEA,YAAM,cAAc,MAAM,SACvB,gBAAiB,MAAM,MAAO,IAC9B;AAEH,aAAO;AAAA,QACN,IAAI,MAAM;AAAA,QACV,QAAQ;AAAA,QACR,GAAK,CAAC,CAAE,MAAM,SAAS,EAAE,OAAO,MAAM,MAAM;AAAA,QAC5C,GAAK,CAAC,CAAE,MAAM,eAAe;AAAA,UAC5B,aAAa,MAAM;AAAA,QACpB;AAAA,QACA,GAAK,cAAc,SAClB,MAAM,QAAS,MAAM,QAAS,KAAK;AAAA,UAClC,UAAU,cAAe;AAAA,YACxB,QAAQ,MAAM;AAAA,YACd,QAAQ;AAAA,UACT,CAAE,EAAE;AAAA,QACL;AAAA,MACF;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,EACT;AACD;AAEA,IAAO,yBAAQ;",
6
+ "names": []
7
+ }
@@ -26,20 +26,21 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // packages/dataviews/src/dataform-layouts/panel/dropdown.tsx
29
31
  var dropdown_exports = {};
30
32
  __export(dropdown_exports, {
31
33
  default: () => dropdown_default
32
34
  });
33
35
  module.exports = __toCommonJS(dropdown_exports);
34
- var import_jsx_runtime = require("react/jsx-runtime");
35
36
  var import_components = require("@wordpress/components");
36
37
  var import_i18n = require("@wordpress/i18n");
37
38
  var import_element = require("@wordpress/element");
38
39
  var import_icons = require("@wordpress/icons");
39
40
  var import_data_form_layout = require("../data-form-layout");
40
- var import_is_combined_field = require("../is-combined-field");
41
- var import_normalize_form_fields = require("../normalize-form-fields");
41
+ var import_normalize_form = require("../normalize-form");
42
42
  var import_summary_button = __toESM(require("./summary-button"));
43
+ var import_jsx_runtime = require("react/jsx-runtime");
43
44
  function DropdownHeader({
44
45
  title,
45
46
  onClose
@@ -75,13 +76,13 @@ function PanelDropdown({
75
76
  fieldDefinition,
76
77
  popoverAnchor
77
78
  }) {
78
- const fieldLabel = (0, import_is_combined_field.isCombinedField)(field) ? field.label : fieldDefinition?.label;
79
+ const fieldLabel = !!field.children ? field.label : fieldDefinition?.label;
79
80
  const form = (0, import_element.useMemo)(
80
81
  () => ({
81
- layout: import_normalize_form_fields.DEFAULT_LAYOUT,
82
- fields: (0, import_is_combined_field.isCombinedField)(field) ? field.children : (
82
+ layout: import_normalize_form.DEFAULT_LAYOUT,
83
+ fields: !!field.children ? field.children : (
83
84
  // If not explicit children return the field id itself.
84
- [{ id: field.id }]
85
+ [{ id: field.id, layout: import_normalize_form.DEFAULT_LAYOUT }]
85
86
  )
86
87
  }),
87
88
  [field]
@@ -90,7 +91,7 @@ function PanelDropdown({
90
91
  if (validity === void 0) {
91
92
  return void 0;
92
93
  }
93
- if ((0, import_is_combined_field.isCombinedField)(field)) {
94
+ if (!!field.children) {
94
95
  return validity?.children;
95
96
  }
96
97
  return { [field.id]: validity };