@wordpress/dataviews 9.0.1-next.6f42e1382.0 → 9.1.1-next.f56bd8138.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 (201) hide show
  1. package/CHANGELOG.md +22 -2
  2. package/README.md +107 -11
  3. package/build/components/dataviews-filters/input-widget.js +48 -4
  4. package/build/components/dataviews-filters/input-widget.js.map +1 -1
  5. package/build/components/dataviews-view-config/index.js +22 -3
  6. package/build/components/dataviews-view-config/index.js.map +1 -1
  7. package/build/dataform-controls/array.js +117 -29
  8. package/build/dataform-controls/array.js.map +1 -1
  9. package/build/dataform-controls/checkbox.js +31 -20
  10. package/build/dataform-controls/checkbox.js.map +1 -1
  11. package/build/dataform-controls/color.js +29 -24
  12. package/build/dataform-controls/color.js.map +1 -1
  13. package/build/dataform-controls/date.js +32 -24
  14. package/build/dataform-controls/date.js.map +1 -1
  15. package/build/dataform-controls/datetime.js +133 -19
  16. package/build/dataform-controls/datetime.js.map +1 -1
  17. package/build/dataform-controls/email.js +7 -1
  18. package/build/dataform-controls/email.js.map +1 -1
  19. package/build/dataform-controls/index.js +23 -0
  20. package/build/dataform-controls/index.js.map +1 -1
  21. package/build/dataform-controls/integer.js +47 -34
  22. package/build/dataform-controls/integer.js.map +1 -1
  23. package/build/dataform-controls/radio.js +42 -9
  24. package/build/dataform-controls/radio.js.map +1 -1
  25. package/build/dataform-controls/relative-date-control.js +6 -10
  26. package/build/dataform-controls/relative-date-control.js.map +1 -1
  27. package/build/dataform-controls/select.js +41 -10
  28. package/build/dataform-controls/select.js.map +1 -1
  29. package/build/dataform-controls/telephone.js +7 -1
  30. package/build/dataform-controls/telephone.js.map +1 -1
  31. package/build/dataform-controls/text.js +14 -2
  32. package/build/dataform-controls/text.js.map +1 -1
  33. package/build/dataform-controls/textarea.js +33 -20
  34. package/build/dataform-controls/textarea.js.map +1 -1
  35. package/build/dataform-controls/toggle-group.js +36 -6
  36. package/build/dataform-controls/toggle-group.js.map +1 -1
  37. package/build/dataform-controls/toggle.js +33 -22
  38. package/build/dataform-controls/toggle.js.map +1 -1
  39. package/build/dataform-controls/url.js +7 -1
  40. package/build/dataform-controls/url.js.map +1 -1
  41. package/build/dataform-controls/utils/validated-input.js +34 -32
  42. package/build/dataform-controls/utils/validated-input.js.map +1 -1
  43. package/build/dataforms-layouts/panel/dropdown.js +10 -14
  44. package/build/dataforms-layouts/panel/dropdown.js.map +1 -1
  45. package/build/dataforms-layouts/panel/index.js +24 -11
  46. package/build/dataforms-layouts/panel/index.js.map +1 -1
  47. package/build/dataforms-layouts/panel/modal.js +22 -27
  48. package/build/dataforms-layouts/panel/modal.js.map +1 -1
  49. package/build/dataforms-layouts/panel/summary-button.js +67 -0
  50. package/build/dataforms-layouts/panel/summary-button.js.map +1 -0
  51. package/build/field-types/array.js +0 -6
  52. package/build/field-types/array.js.map +1 -1
  53. package/build/index.js +7 -0
  54. package/build/index.js.map +1 -1
  55. package/build/normalize-fields.js +17 -0
  56. package/build/normalize-fields.js.map +1 -1
  57. package/build/types.js.map +1 -1
  58. package/build/validation.js +18 -1
  59. package/build/validation.js.map +1 -1
  60. package/build-module/components/dataviews-filters/input-widget.js +48 -4
  61. package/build-module/components/dataviews-filters/input-widget.js.map +1 -1
  62. package/build-module/components/dataviews-view-config/index.js +22 -3
  63. package/build-module/components/dataviews-view-config/index.js.map +1 -1
  64. package/build-module/dataform-controls/array.js +120 -32
  65. package/build-module/dataform-controls/array.js.map +1 -1
  66. package/build-module/dataform-controls/checkbox.js +31 -21
  67. package/build-module/dataform-controls/checkbox.js.map +1 -1
  68. package/build-module/dataform-controls/color.js +28 -24
  69. package/build-module/dataform-controls/color.js.map +1 -1
  70. package/build-module/dataform-controls/date.js +32 -24
  71. package/build-module/dataform-controls/date.js.map +1 -1
  72. package/build-module/dataform-controls/datetime.js +135 -21
  73. package/build-module/dataform-controls/datetime.js.map +1 -1
  74. package/build-module/dataform-controls/email.js +7 -1
  75. package/build-module/dataform-controls/email.js.map +1 -1
  76. package/build-module/dataform-controls/index.js +23 -0
  77. package/build-module/dataform-controls/index.js.map +1 -1
  78. package/build-module/dataform-controls/integer.js +46 -34
  79. package/build-module/dataform-controls/integer.js.map +1 -1
  80. package/build-module/dataform-controls/radio.js +44 -11
  81. package/build-module/dataform-controls/radio.js.map +1 -1
  82. package/build-module/dataform-controls/relative-date-control.js +6 -10
  83. package/build-module/dataform-controls/relative-date-control.js.map +1 -1
  84. package/build-module/dataform-controls/select.js +43 -12
  85. package/build-module/dataform-controls/select.js.map +1 -1
  86. package/build-module/dataform-controls/telephone.js +7 -1
  87. package/build-module/dataform-controls/telephone.js.map +1 -1
  88. package/build-module/dataform-controls/text.js +14 -2
  89. package/build-module/dataform-controls/text.js.map +1 -1
  90. package/build-module/dataform-controls/textarea.js +32 -20
  91. package/build-module/dataform-controls/textarea.js.map +1 -1
  92. package/build-module/dataform-controls/toggle-group.js +38 -8
  93. package/build-module/dataform-controls/toggle-group.js.map +1 -1
  94. package/build-module/dataform-controls/toggle.js +33 -23
  95. package/build-module/dataform-controls/toggle.js.map +1 -1
  96. package/build-module/dataform-controls/url.js +7 -1
  97. package/build-module/dataform-controls/url.js.map +1 -1
  98. package/build-module/dataform-controls/utils/validated-input.js +34 -33
  99. package/build-module/dataform-controls/utils/validated-input.js.map +1 -1
  100. package/build-module/dataforms-layouts/panel/dropdown.js +10 -15
  101. package/build-module/dataforms-layouts/panel/dropdown.js.map +1 -1
  102. package/build-module/dataforms-layouts/panel/index.js +24 -11
  103. package/build-module/dataforms-layouts/panel/index.js.map +1 -1
  104. package/build-module/dataforms-layouts/panel/modal.js +22 -28
  105. package/build-module/dataforms-layouts/panel/modal.js.map +1 -1
  106. package/build-module/dataforms-layouts/panel/summary-button.js +60 -0
  107. package/build-module/dataforms-layouts/panel/summary-button.js.map +1 -0
  108. package/build-module/field-types/array.js +0 -6
  109. package/build-module/field-types/array.js.map +1 -1
  110. package/build-module/index.js +1 -0
  111. package/build-module/index.js.map +1 -1
  112. package/build-module/normalize-fields.js +15 -0
  113. package/build-module/normalize-fields.js.map +1 -1
  114. package/build-module/types.js.map +1 -1
  115. package/build-module/validation.js +18 -1
  116. package/build-module/validation.js.map +1 -1
  117. package/build-types/components/dataform/stories/index.story.d.ts +3 -0
  118. package/build-types/components/dataform/stories/index.story.d.ts.map +1 -1
  119. package/build-types/components/dataviews/stories/fixtures.d.ts +4 -2
  120. package/build-types/components/dataviews/stories/fixtures.d.ts.map +1 -1
  121. package/build-types/components/dataviews-filters/input-widget.d.ts.map +1 -1
  122. package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
  123. package/build-types/dataform-controls/array.d.ts.map +1 -1
  124. package/build-types/dataform-controls/checkbox.d.ts.map +1 -1
  125. package/build-types/dataform-controls/color.d.ts.map +1 -1
  126. package/build-types/dataform-controls/date.d.ts.map +1 -1
  127. package/build-types/dataform-controls/datetime.d.ts.map +1 -1
  128. package/build-types/dataform-controls/email.d.ts.map +1 -1
  129. package/build-types/dataform-controls/index.d.ts +1 -1
  130. package/build-types/dataform-controls/index.d.ts.map +1 -1
  131. package/build-types/dataform-controls/integer.d.ts.map +1 -1
  132. package/build-types/dataform-controls/radio.d.ts.map +1 -1
  133. package/build-types/dataform-controls/relative-date-control.d.ts +6 -5
  134. package/build-types/dataform-controls/relative-date-control.d.ts.map +1 -1
  135. package/build-types/dataform-controls/select.d.ts.map +1 -1
  136. package/build-types/dataform-controls/telephone.d.ts.map +1 -1
  137. package/build-types/dataform-controls/text.d.ts +1 -1
  138. package/build-types/dataform-controls/text.d.ts.map +1 -1
  139. package/build-types/dataform-controls/textarea.d.ts +1 -1
  140. package/build-types/dataform-controls/textarea.d.ts.map +1 -1
  141. package/build-types/dataform-controls/toggle-group.d.ts.map +1 -1
  142. package/build-types/dataform-controls/toggle.d.ts.map +1 -1
  143. package/build-types/dataform-controls/url.d.ts.map +1 -1
  144. package/build-types/dataform-controls/utils/validated-input.d.ts +4 -4
  145. package/build-types/dataform-controls/utils/validated-input.d.ts.map +1 -1
  146. package/build-types/dataforms-layouts/panel/dropdown.d.ts +2 -1
  147. package/build-types/dataforms-layouts/panel/dropdown.d.ts.map +1 -1
  148. package/build-types/dataforms-layouts/panel/index.d.ts.map +1 -1
  149. package/build-types/dataforms-layouts/panel/modal.d.ts +2 -1
  150. package/build-types/dataforms-layouts/panel/modal.d.ts.map +1 -1
  151. package/build-types/dataforms-layouts/panel/summary-button.d.ts +15 -0
  152. package/build-types/dataforms-layouts/panel/summary-button.d.ts.map +1 -0
  153. package/build-types/field-types/array.d.ts.map +1 -1
  154. package/build-types/field-types/stories/index.story.d.ts.map +1 -1
  155. package/build-types/index.d.ts +1 -0
  156. package/build-types/index.d.ts.map +1 -1
  157. package/build-types/normalize-fields.d.ts +3 -0
  158. package/build-types/normalize-fields.d.ts.map +1 -1
  159. package/build-types/types.d.ts +68 -4
  160. package/build-types/types.d.ts.map +1 -1
  161. package/build-types/validation.d.ts.map +1 -1
  162. package/build-wp/index.js +2009 -1489
  163. package/package.json +16 -15
  164. package/src/components/dataform/stories/index.story.tsx +509 -8
  165. package/src/components/dataviews/stories/fixtures.tsx +99 -41
  166. package/src/components/dataviews/stories/index.story.tsx +1 -1
  167. package/src/components/dataviews-filters/input-widget.tsx +44 -5
  168. package/src/components/dataviews-picker/stories/index.story.tsx +1 -1
  169. package/src/components/dataviews-view-config/index.tsx +18 -3
  170. package/src/dataform-controls/array.tsx +139 -44
  171. package/src/dataform-controls/checkbox.tsx +41 -24
  172. package/src/dataform-controls/color.tsx +33 -24
  173. package/src/dataform-controls/date.tsx +47 -21
  174. package/src/dataform-controls/datetime.tsx +171 -23
  175. package/src/dataform-controls/email.tsx +9 -1
  176. package/src/dataform-controls/index.tsx +26 -0
  177. package/src/dataform-controls/integer.tsx +82 -49
  178. package/src/dataform-controls/radio.tsx +53 -11
  179. package/src/dataform-controls/relative-date-control.tsx +11 -10
  180. package/src/dataform-controls/select.tsx +53 -10
  181. package/src/dataform-controls/telephone.tsx +9 -1
  182. package/src/dataform-controls/text.tsx +18 -1
  183. package/src/dataform-controls/textarea.tsx +38 -24
  184. package/src/dataform-controls/toggle-group.tsx +50 -10
  185. package/src/dataform-controls/toggle.tsx +41 -24
  186. package/src/dataform-controls/url.tsx +9 -1
  187. package/src/dataform-controls/utils/validated-input.tsx +50 -50
  188. package/src/dataforms-layouts/panel/dropdown.tsx +12 -23
  189. package/src/dataforms-layouts/panel/index.tsx +39 -16
  190. package/src/dataforms-layouts/panel/modal.tsx +24 -30
  191. package/src/dataforms-layouts/panel/summary-button.tsx +92 -0
  192. package/src/field-types/array.tsx +0 -8
  193. package/src/field-types/stories/index.story.tsx +89 -1
  194. package/src/index.ts +1 -0
  195. package/src/normalize-fields.ts +18 -0
  196. package/src/test/filter-and-sort-data-view.js +148 -138
  197. package/src/test/normalize-fields.ts +114 -0
  198. package/src/test/validation.ts +192 -0
  199. package/src/types.ts +75 -4
  200. package/src/validation.ts +30 -0
  201. package/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_element","_jsxRuntime","ToggleGroup","data","field","onChange","hideLabelFromVision","id","value","getValue","item","onChangeControl","useCallback","newValue","elements","selectedOption","find","el","jsx","__experimentalToggleGroupControl","__next40pxDefaultSize","__nextHasNoMarginBottom","isBlock","label","help","description","children","map","__experimentalToggleGroupControlOption"],"sources":["@wordpress/dataviews/src/dataform-controls/toggle-group.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n} from '@wordpress/components';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../types';\n\nexport default function ToggleGroup< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n}: DataFormControlProps< Item > ) {\n\tconst { id } = field;\n\tconst value = field.getValue( { item: data } );\n\n\tconst onChangeControl = useCallback(\n\t\t( newValue: string | number | undefined ) =>\n\t\t\tonChange( {\n\t\t\t\t[ id ]: newValue,\n\t\t\t} ),\n\t\t[ id, onChange ]\n\t);\n\n\tif ( field.elements ) {\n\t\tconst selectedOption = field.elements.find(\n\t\t\t( el ) => el.value === value\n\t\t);\n\t\treturn (\n\t\t\t<ToggleGroupControl\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tisBlock\n\t\t\t\tlabel={ field.label }\n\t\t\t\thelp={ selectedOption?.description || field.description }\n\t\t\t\tonChange={ onChangeControl }\n\t\t\t\tvalue={ value }\n\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t>\n\t\t\t\t{ field.elements.map( ( el ) => (\n\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\tkey={ el.value }\n\t\t\t\t\t\tlabel={ el.label }\n\t\t\t\t\t\tvalue={ el.value }\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t</ToggleGroupControl>\n\t\t);\n\t}\n\n\treturn null;\n}\n"],"mappings":";;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AAIA,IAAAC,QAAA,GAAAD,OAAA;AAAiD,IAAAE,WAAA,GAAAF,OAAA;AAPjD;AACA;AACA;;AAOA;AACA;AACA;;AAGe,SAASG,WAAWA,CAAU;EAC5CC,IAAI;EACJC,KAAK;EACLC,QAAQ;EACRC;AAC6B,CAAC,EAAG;EACjC,MAAM;IAAEC;EAAG,CAAC,GAAGH,KAAK;EACpB,MAAMI,KAAK,GAAGJ,KAAK,CAACK,QAAQ,CAAE;IAAEC,IAAI,EAAEP;EAAK,CAAE,CAAC;EAE9C,MAAMQ,eAAe,GAAG,IAAAC,oBAAW,EAChCC,QAAqC,IACtCR,QAAQ,CAAE;IACT,CAAEE,EAAE,GAAIM;EACT,CAAE,CAAC,EACJ,CAAEN,EAAE,EAAEF,QAAQ,CACf,CAAC;EAED,IAAKD,KAAK,CAACU,QAAQ,EAAG;IACrB,MAAMC,cAAc,GAAGX,KAAK,CAACU,QAAQ,CAACE,IAAI,CACvCC,EAAE,IAAMA,EAAE,CAACT,KAAK,KAAKA,KACxB,CAAC;IACD,oBACC,IAAAP,WAAA,CAAAiB,GAAA,EAACpB,WAAA,CAAAqB,gCAAkB;MAClBC,qBAAqB;MACrBC,uBAAuB;MACvBC,OAAO;MACPC,KAAK,EAAGnB,KAAK,CAACmB,KAAO;MACrBC,IAAI,EAAGT,cAAc,EAAEU,WAAW,IAAIrB,KAAK,CAACqB,WAAa;MACzDpB,QAAQ,EAAGM,eAAiB;MAC5BH,KAAK,EAAGA,KAAO;MACfF,mBAAmB,EAAGA,mBAAqB;MAAAoB,QAAA,EAEzCtB,KAAK,CAACU,QAAQ,CAACa,GAAG,CAAIV,EAAE,iBACzB,IAAAhB,WAAA,CAAAiB,GAAA,EAACpB,WAAA,CAAA8B,sCAAwB;QAExBL,KAAK,EAAGN,EAAE,CAACM,KAAO;QAClBf,KAAK,EAAGS,EAAE,CAACT;MAAO,GAFZS,EAAE,CAACT,KAGT,CACA;IAAC,CACgB,CAAC;EAEvB;EAEA,OAAO,IAAI;AACZ","ignoreList":[]}
1
+ {"version":3,"names":["_deepmerge","_interopRequireDefault","require","_components","_element","_lockUnlock","_jsxRuntime","ValidatedToggleGroupControl","unlock","privateApis","ToggleGroup","data","field","onChange","hideLabelFromVision","getValue","setValue","customValidity","setCustomValidity","useState","undefined","value","item","onChangeControl","useCallback","newValue","onValidateControl","message","isValid","custom","deepMerge","type","elements","selectedOption","find","el","jsx","required","onValidate","__next40pxDefaultSize","__nextHasNoMarginBottom","isBlock","label","help","description","children","map","__experimentalToggleGroupControlOption"],"sources":["@wordpress/dataviews/src/dataform-controls/toggle-group.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport deepMerge from 'deepmerge';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tprivateApis,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n} from '@wordpress/components';\nimport { useCallback, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../types';\nimport { unlock } from '../lock-unlock';\n\nconst { ValidatedToggleGroupControl } = unlock( privateApis );\n\nexport default function ToggleGroup< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n}: DataFormControlProps< Item > ) {\n\tconst { getValue, setValue } = field;\n\tconst [ customValidity, setCustomValidity ] =\n\t\tuseState<\n\t\t\tReact.ComponentProps<\n\t\t\t\ttypeof ValidatedToggleGroupControl\n\t\t\t>[ 'customValidity' ]\n\t\t>( undefined );\n\tconst value = getValue( { item: data } );\n\n\tconst onChangeControl = useCallback(\n\t\t( newValue: string | number | undefined ) =>\n\t\t\tonChange( setValue( { item: data, value: newValue } ) ),\n\t\t[ data, onChange, setValue ]\n\t);\n\tconst onValidateControl = useCallback(\n\t\t( newValue: any ) => {\n\t\t\tconst message = field.isValid?.custom?.(\n\t\t\t\tdeepMerge(\n\t\t\t\t\tdata,\n\t\t\t\t\tsetValue( {\n\t\t\t\t\t\titem: data,\n\t\t\t\t\t\tvalue: newValue,\n\t\t\t\t\t} ) as Partial< Item >\n\t\t\t\t),\n\t\t\t\tfield\n\t\t\t);\n\n\t\t\tif ( message ) {\n\t\t\t\tsetCustomValidity( {\n\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\tmessage,\n\t\t\t\t} );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetCustomValidity( undefined );\n\t\t},\n\t\t[ data, field, setValue ]\n\t);\n\n\tif ( field.elements ) {\n\t\tconst selectedOption = field.elements.find(\n\t\t\t( el ) => el.value === value\n\t\t);\n\t\treturn (\n\t\t\t<ValidatedToggleGroupControl\n\t\t\t\trequired={ !! field.isValid?.required }\n\t\t\t\tonValidate={ onValidateControl }\n\t\t\t\tcustomValidity={ customValidity }\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tisBlock\n\t\t\t\tlabel={ field.label }\n\t\t\t\thelp={ selectedOption?.description || field.description }\n\t\t\t\tonChange={ onChangeControl }\n\t\t\t\tvalue={ value }\n\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t>\n\t\t\t\t{ field.elements.map( ( el ) => (\n\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\tkey={ el.value }\n\t\t\t\t\t\tlabel={ el.label }\n\t\t\t\t\t\tvalue={ el.value }\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t</ValidatedToggleGroupControl>\n\t\t);\n\t}\n\n\treturn null;\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AAKA,IAAAC,WAAA,GAAAD,OAAA;AAIA,IAAAE,QAAA,GAAAF,OAAA;AAMA,IAAAG,WAAA,GAAAH,OAAA;AAAwC,IAAAI,WAAA,GAAAJ,OAAA;AAlBxC;AACA;AACA;;AAGA;AACA;AACA;;AAOA;AACA;AACA;;AAIA,MAAM;EAAEK;AAA4B,CAAC,GAAG,IAAAC,kBAAM,EAAEC,uBAAY,CAAC;AAE9C,SAASC,WAAWA,CAAU;EAC5CC,IAAI;EACJC,KAAK;EACLC,QAAQ;EACRC;AAC6B,CAAC,EAAG;EACjC,MAAM;IAAEC,QAAQ;IAAEC;EAAS,CAAC,GAAGJ,KAAK;EACpC,MAAM,CAAEK,cAAc,EAAEC,iBAAiB,CAAE,GAC1C,IAAAC,iBAAQ,EAILC,SAAU,CAAC;EACf,MAAMC,KAAK,GAAGN,QAAQ,CAAE;IAAEO,IAAI,EAAEX;EAAK,CAAE,CAAC;EAExC,MAAMY,eAAe,GAAG,IAAAC,oBAAW,EAChCC,QAAqC,IACtCZ,QAAQ,CAAEG,QAAQ,CAAE;IAAEM,IAAI,EAAEX,IAAI;IAAEU,KAAK,EAAEI;EAAS,CAAE,CAAE,CAAC,EACxD,CAAEd,IAAI,EAAEE,QAAQ,EAAEG,QAAQ,CAC3B,CAAC;EACD,MAAMU,iBAAiB,GAAG,IAAAF,oBAAW,EAClCC,QAAa,IAAM;IACpB,MAAME,OAAO,GAAGf,KAAK,CAACgB,OAAO,EAAEC,MAAM,GACpC,IAAAC,kBAAS,EACRnB,IAAI,EACJK,QAAQ,CAAE;MACTM,IAAI,EAAEX,IAAI;MACVU,KAAK,EAAEI;IACR,CAAE,CACH,CAAC,EACDb,KACD,CAAC;IAED,IAAKe,OAAO,EAAG;MACdT,iBAAiB,CAAE;QAClBa,IAAI,EAAE,SAAS;QACfJ;MACD,CAAE,CAAC;MACH;IACD;IAEAT,iBAAiB,CAAEE,SAAU,CAAC;EAC/B,CAAC,EACD,CAAET,IAAI,EAAEC,KAAK,EAAEI,QAAQ,CACxB,CAAC;EAED,IAAKJ,KAAK,CAACoB,QAAQ,EAAG;IACrB,MAAMC,cAAc,GAAGrB,KAAK,CAACoB,QAAQ,CAACE,IAAI,CACvCC,EAAE,IAAMA,EAAE,CAACd,KAAK,KAAKA,KACxB,CAAC;IACD,oBACC,IAAAf,WAAA,CAAA8B,GAAA,EAAC7B,2BAA2B;MAC3B8B,QAAQ,EAAG,CAAC,CAAEzB,KAAK,CAACgB,OAAO,EAAES,QAAU;MACvCC,UAAU,EAAGZ,iBAAmB;MAChCT,cAAc,EAAGA,cAAgB;MACjCsB,qBAAqB;MACrBC,uBAAuB;MACvBC,OAAO;MACPC,KAAK,EAAG9B,KAAK,CAAC8B,KAAO;MACrBC,IAAI,EAAGV,cAAc,EAAEW,WAAW,IAAIhC,KAAK,CAACgC,WAAa;MACzD/B,QAAQ,EAAGU,eAAiB;MAC5BF,KAAK,EAAGA,KAAO;MACfP,mBAAmB,EAAGA,mBAAqB;MAAA+B,QAAA,EAEzCjC,KAAK,CAACoB,QAAQ,CAACc,GAAG,CAAIX,EAAE,iBACzB,IAAA7B,WAAA,CAAA8B,GAAA,EAACjC,WAAA,CAAA4C,sCAAwB;QAExBL,KAAK,EAAGP,EAAE,CAACO,KAAO;QAClBrB,KAAK,EAAGc,EAAE,CAACd;MAAO,GAFZc,EAAE,CAACd,KAGT,CACA;IAAC,CACyB,CAAC;EAEhC;EAEA,OAAO,IAAI;AACZ","ignoreList":[]}
@@ -1,13 +1,19 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports.default = Toggle;
8
+ var _deepmerge = _interopRequireDefault(require("deepmerge"));
7
9
  var _components = require("@wordpress/components");
8
10
  var _element = require("@wordpress/element");
9
11
  var _lockUnlock = require("../lock-unlock");
10
12
  var _jsxRuntime = require("react/jsx-runtime");
13
+ /**
14
+ * External dependencies
15
+ */
16
+
11
17
  /**
12
18
  * WordPress dependencies
13
19
  */
@@ -26,28 +32,37 @@ function Toggle({
26
32
  hideLabelFromVision
27
33
  }) {
28
34
  const {
29
- id,
30
- getValue,
31
35
  label,
32
- description
36
+ description,
37
+ getValue,
38
+ setValue
33
39
  } = field;
34
40
  const [customValidity, setCustomValidity] = (0, _element.useState)(undefined);
41
+ const onChangeControl = (0, _element.useCallback)(() => {
42
+ onChange(setValue({
43
+ item: data,
44
+ value: !getValue({
45
+ item: data
46
+ })
47
+ }));
48
+ }, [onChange, setValue, data, getValue]);
49
+ const onValidateControl = (0, _element.useCallback)(newValue => {
50
+ const message = field.isValid?.custom?.((0, _deepmerge.default)(data, setValue({
51
+ item: data,
52
+ value: newValue
53
+ })), field);
54
+ if (message) {
55
+ setCustomValidity({
56
+ type: 'invalid',
57
+ message
58
+ });
59
+ return;
60
+ }
61
+ setCustomValidity(undefined);
62
+ }, [data, field, setValue]);
35
63
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(ValidatedToggleControl, {
36
64
  required: !!field.isValid.required,
37
- onValidate: newValue => {
38
- const message = field.isValid?.custom?.({
39
- ...data,
40
- [id]: newValue
41
- }, field);
42
- if (message) {
43
- setCustomValidity({
44
- type: 'invalid',
45
- message
46
- });
47
- return;
48
- }
49
- setCustomValidity(undefined);
50
- },
65
+ onValidate: onValidateControl,
51
66
  customValidity: customValidity,
52
67
  hidden: hideLabelFromVision,
53
68
  __nextHasNoMarginBottom: true,
@@ -56,11 +71,7 @@ function Toggle({
56
71
  checked: getValue({
57
72
  item: data
58
73
  }),
59
- onChange: () => onChange({
60
- [id]: !getValue({
61
- item: data
62
- })
63
- })
74
+ onChange: onChangeControl
64
75
  });
65
76
  }
66
77
  //# sourceMappingURL=toggle.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_element","_lockUnlock","_jsxRuntime","ValidatedToggleControl","unlock","privateApis","Toggle","field","onChange","data","hideLabelFromVision","id","getValue","label","description","customValidity","setCustomValidity","useState","undefined","jsx","required","isValid","onValidate","newValue","message","custom","type","hidden","__nextHasNoMarginBottom","help","checked","item"],"sources":["@wordpress/dataviews/src/dataform-controls/toggle.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { privateApis } from '@wordpress/components';\nimport { useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../types';\nimport { unlock } from '../lock-unlock';\n\nconst { ValidatedToggleControl } = unlock( privateApis );\n\nexport default function Toggle< Item >( {\n\tfield,\n\tonChange,\n\tdata,\n\thideLabelFromVision,\n}: DataFormControlProps< Item > ) {\n\tconst { id, getValue, label, description } = field;\n\tconst [ customValidity, setCustomValidity ] =\n\t\tuseState<\n\t\t\tReact.ComponentProps<\n\t\t\t\ttypeof ValidatedToggleControl\n\t\t\t>[ 'customValidity' ]\n\t\t>( undefined );\n\n\treturn (\n\t\t<ValidatedToggleControl\n\t\t\trequired={ !! field.isValid.required }\n\t\t\tonValidate={ ( newValue: any ) => {\n\t\t\t\tconst message = field.isValid?.custom?.(\n\t\t\t\t\t{\n\t\t\t\t\t\t...data,\n\t\t\t\t\t\t[ id ]: newValue,\n\t\t\t\t\t},\n\t\t\t\t\tfield\n\t\t\t\t);\n\n\t\t\t\tif ( message ) {\n\t\t\t\t\tsetCustomValidity( {\n\t\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t} );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tsetCustomValidity( undefined );\n\t\t\t} }\n\t\t\tcustomValidity={ customValidity }\n\t\t\thidden={ hideLabelFromVision }\n\t\t\t__nextHasNoMarginBottom\n\t\t\tlabel={ label }\n\t\t\thelp={ description }\n\t\t\tchecked={ getValue( { item: data } ) }\n\t\t\tonChange={ () =>\n\t\t\t\tonChange( { [ id ]: ! getValue( { item: data } ) } )\n\t\t\t}\n\t\t/>\n\t);\n}\n"],"mappings":";;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAMA,IAAAE,WAAA,GAAAF,OAAA;AAAwC,IAAAG,WAAA,GAAAH,OAAA;AAVxC;AACA;AACA;;AAIA;AACA;AACA;;AAIA,MAAM;EAAEI;AAAuB,CAAC,GAAG,IAAAC,kBAAM,EAAEC,uBAAY,CAAC;AAEzC,SAASC,MAAMA,CAAU;EACvCC,KAAK;EACLC,QAAQ;EACRC,IAAI;EACJC;AAC6B,CAAC,EAAG;EACjC,MAAM;IAAEC,EAAE;IAAEC,QAAQ;IAAEC,KAAK;IAAEC;EAAY,CAAC,GAAGP,KAAK;EAClD,MAAM,CAAEQ,cAAc,EAAEC,iBAAiB,CAAE,GAC1C,IAAAC,iBAAQ,EAILC,SAAU,CAAC;EAEf,oBACC,IAAAhB,WAAA,CAAAiB,GAAA,EAAChB,sBAAsB;IACtBiB,QAAQ,EAAG,CAAC,CAAEb,KAAK,CAACc,OAAO,CAACD,QAAU;IACtCE,UAAU,EAAKC,QAAa,IAAM;MACjC,MAAMC,OAAO,GAAGjB,KAAK,CAACc,OAAO,EAAEI,MAAM,GACpC;QACC,GAAGhB,IAAI;QACP,CAAEE,EAAE,GAAIY;MACT,CAAC,EACDhB,KACD,CAAC;MAED,IAAKiB,OAAO,EAAG;QACdR,iBAAiB,CAAE;UAClBU,IAAI,EAAE,SAAS;UACfF;QACD,CAAE,CAAC;QACH;MACD;MAEAR,iBAAiB,CAAEE,SAAU,CAAC;IAC/B,CAAG;IACHH,cAAc,EAAGA,cAAgB;IACjCY,MAAM,EAAGjB,mBAAqB;IAC9BkB,uBAAuB;IACvBf,KAAK,EAAGA,KAAO;IACfgB,IAAI,EAAGf,WAAa;IACpBgB,OAAO,EAAGlB,QAAQ,CAAE;MAAEmB,IAAI,EAAEtB;IAAK,CAAE,CAAG;IACtCD,QAAQ,EAAGA,CAAA,KACVA,QAAQ,CAAE;MAAE,CAAEG,EAAE,GAAI,CAAEC,QAAQ,CAAE;QAAEmB,IAAI,EAAEtB;MAAK,CAAE;IAAE,CAAE;EACnD,CACD,CAAC;AAEJ","ignoreList":[]}
1
+ {"version":3,"names":["_deepmerge","_interopRequireDefault","require","_components","_element","_lockUnlock","_jsxRuntime","ValidatedToggleControl","unlock","privateApis","Toggle","field","onChange","data","hideLabelFromVision","label","description","getValue","setValue","customValidity","setCustomValidity","useState","undefined","onChangeControl","useCallback","item","value","onValidateControl","newValue","message","isValid","custom","deepMerge","type","jsx","required","onValidate","hidden","__nextHasNoMarginBottom","help","checked"],"sources":["@wordpress/dataviews/src/dataform-controls/toggle.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport deepMerge from 'deepmerge';\n\n/**\n * WordPress dependencies\n */\nimport { privateApis } from '@wordpress/components';\nimport { useCallback, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../types';\nimport { unlock } from '../lock-unlock';\n\nconst { ValidatedToggleControl } = unlock( privateApis );\n\nexport default function Toggle< Item >( {\n\tfield,\n\tonChange,\n\tdata,\n\thideLabelFromVision,\n}: DataFormControlProps< Item > ) {\n\tconst { label, description, getValue, setValue } = field;\n\tconst [ customValidity, setCustomValidity ] =\n\t\tuseState<\n\t\t\tReact.ComponentProps<\n\t\t\t\ttypeof ValidatedToggleControl\n\t\t\t>[ 'customValidity' ]\n\t\t>( undefined );\n\n\tconst onChangeControl = useCallback( () => {\n\t\tonChange(\n\t\t\tsetValue( { item: data, value: ! getValue( { item: data } ) } )\n\t\t);\n\t}, [ onChange, setValue, data, getValue ] );\n\n\tconst onValidateControl = useCallback(\n\t\t( newValue: any ) => {\n\t\t\tconst message = field.isValid?.custom?.(\n\t\t\t\tdeepMerge(\n\t\t\t\t\tdata,\n\t\t\t\t\tsetValue( {\n\t\t\t\t\t\titem: data,\n\t\t\t\t\t\tvalue: newValue,\n\t\t\t\t\t} ) as Partial< Item >\n\t\t\t\t),\n\t\t\t\tfield\n\t\t\t);\n\n\t\t\tif ( message ) {\n\t\t\t\tsetCustomValidity( {\n\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\tmessage,\n\t\t\t\t} );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetCustomValidity( undefined );\n\t\t},\n\t\t[ data, field, setValue ]\n\t);\n\n\treturn (\n\t\t<ValidatedToggleControl\n\t\t\trequired={ !! field.isValid.required }\n\t\t\tonValidate={ onValidateControl }\n\t\t\tcustomValidity={ customValidity }\n\t\t\thidden={ hideLabelFromVision }\n\t\t\t__nextHasNoMarginBottom\n\t\t\tlabel={ label }\n\t\t\thelp={ description }\n\t\t\tchecked={ getValue( { item: data } ) }\n\t\t\tonChange={ onChangeControl }\n\t\t/>\n\t);\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AAKA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AAMA,IAAAG,WAAA,GAAAH,OAAA;AAAwC,IAAAI,WAAA,GAAAJ,OAAA;AAfxC;AACA;AACA;;AAGA;AACA;AACA;;AAIA;AACA;AACA;;AAIA,MAAM;EAAEK;AAAuB,CAAC,GAAG,IAAAC,kBAAM,EAAEC,uBAAY,CAAC;AAEzC,SAASC,MAAMA,CAAU;EACvCC,KAAK;EACLC,QAAQ;EACRC,IAAI;EACJC;AAC6B,CAAC,EAAG;EACjC,MAAM;IAAEC,KAAK;IAAEC,WAAW;IAAEC,QAAQ;IAAEC;EAAS,CAAC,GAAGP,KAAK;EACxD,MAAM,CAAEQ,cAAc,EAAEC,iBAAiB,CAAE,GAC1C,IAAAC,iBAAQ,EAILC,SAAU,CAAC;EAEf,MAAMC,eAAe,GAAG,IAAAC,oBAAW,EAAE,MAAM;IAC1CZ,QAAQ,CACPM,QAAQ,CAAE;MAAEO,IAAI,EAAEZ,IAAI;MAAEa,KAAK,EAAE,CAAET,QAAQ,CAAE;QAAEQ,IAAI,EAAEZ;MAAK,CAAE;IAAE,CAAE,CAC/D,CAAC;EACF,CAAC,EAAE,CAAED,QAAQ,EAAEM,QAAQ,EAAEL,IAAI,EAAEI,QAAQ,CAAG,CAAC;EAE3C,MAAMU,iBAAiB,GAAG,IAAAH,oBAAW,EAClCI,QAAa,IAAM;IACpB,MAAMC,OAAO,GAAGlB,KAAK,CAACmB,OAAO,EAAEC,MAAM,GACpC,IAAAC,kBAAS,EACRnB,IAAI,EACJK,QAAQ,CAAE;MACTO,IAAI,EAAEZ,IAAI;MACVa,KAAK,EAAEE;IACR,CAAE,CACH,CAAC,EACDjB,KACD,CAAC;IAED,IAAKkB,OAAO,EAAG;MACdT,iBAAiB,CAAE;QAClBa,IAAI,EAAE,SAAS;QACfJ;MACD,CAAE,CAAC;MACH;IACD;IAEAT,iBAAiB,CAAEE,SAAU,CAAC;EAC/B,CAAC,EACD,CAAET,IAAI,EAAEF,KAAK,EAAEO,QAAQ,CACxB,CAAC;EAED,oBACC,IAAAZ,WAAA,CAAA4B,GAAA,EAAC3B,sBAAsB;IACtB4B,QAAQ,EAAG,CAAC,CAAExB,KAAK,CAACmB,OAAO,CAACK,QAAU;IACtCC,UAAU,EAAGT,iBAAmB;IAChCR,cAAc,EAAGA,cAAgB;IACjCkB,MAAM,EAAGvB,mBAAqB;IAC9BwB,uBAAuB;IACvBvB,KAAK,EAAGA,KAAO;IACfwB,IAAI,EAAGvB,WAAa;IACpBwB,OAAO,EAAGvB,QAAQ,CAAE;MAAEQ,IAAI,EAAEZ;IAAK,CAAE,CAAG;IACtCD,QAAQ,EAAGW;EAAiB,CAC5B,CAAC;AAEJ","ignoreList":[]}
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.default = Url;
8
+ var _components = require("@wordpress/components");
8
9
  var _icons = require("@wordpress/icons");
9
10
  var _validatedInput = _interopRequireDefault(require("./utils/validated-input"));
10
11
  var _jsxRuntime = require("react/jsx-runtime");
@@ -28,7 +29,12 @@ function Url({
28
29
  onChange,
29
30
  hideLabelFromVision,
30
31
  type: 'url',
31
- icon: _icons.link
32
+ prefix: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalInputControlPrefixWrapper, {
33
+ variant: "icon",
34
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Icon, {
35
+ icon: _icons.link
36
+ })
37
+ })
32
38
  });
33
39
  }
34
40
  //# sourceMappingURL=url.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_icons","require","_validatedInput","_interopRequireDefault","_jsxRuntime","Url","data","field","onChange","hideLabelFromVision","jsx","default","type","icon","link"],"sources":["@wordpress/dataviews/src/dataform-controls/url.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { link } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../types';\nimport ValidatedText from './utils/validated-input';\n\nexport default function Url< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n}: DataFormControlProps< Item > ) {\n\treturn (\n\t\t<ValidatedText\n\t\t\t{ ...{\n\t\t\t\tdata,\n\t\t\t\tfield,\n\t\t\t\tonChange,\n\t\t\t\thideLabelFromVision,\n\t\t\t\ttype: 'url',\n\t\t\t\ticon: link,\n\t\t\t} }\n\t\t/>\n\t);\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,MAAA,GAAAC,OAAA;AAMA,IAAAC,eAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAoD,IAAAG,WAAA,GAAAH,OAAA;AATpD;AACA;AACA;;AAGA;AACA;AACA;;AAIe,SAASI,GAAGA,CAAU;EACpCC,IAAI;EACJC,KAAK;EACLC,QAAQ;EACRC;AAC6B,CAAC,EAAG;EACjC,oBACC,IAAAL,WAAA,CAAAM,GAAA,EAACR,eAAA,CAAAS,OAAa;IAEZL,IAAI;IACJC,KAAK;IACLC,QAAQ;IACRC,mBAAmB;IACnBG,IAAI,EAAE,KAAK;IACXC,IAAI,EAAEC;EAAI,CAEX,CAAC;AAEJ","ignoreList":[]}
1
+ {"version":3,"names":["_components","require","_icons","_validatedInput","_interopRequireDefault","_jsxRuntime","Url","data","field","onChange","hideLabelFromVision","jsx","default","type","prefix","__experimentalInputControlPrefixWrapper","variant","children","Icon","icon","link"],"sources":["@wordpress/dataviews/src/dataform-controls/url.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tIcon,\n\t__experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,\n} from '@wordpress/components';\nimport { link } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../types';\nimport ValidatedText from './utils/validated-input';\n\nexport default function Url< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n}: DataFormControlProps< Item > ) {\n\treturn (\n\t\t<ValidatedText\n\t\t\t{ ...{\n\t\t\t\tdata,\n\t\t\t\tfield,\n\t\t\t\tonChange,\n\t\t\t\thideLabelFromVision,\n\t\t\t\ttype: 'url',\n\t\t\t\tprefix: (\n\t\t\t\t\t<InputControlPrefixWrapper variant=\"icon\">\n\t\t\t\t\t\t<Icon icon={ link } />\n\t\t\t\t\t</InputControlPrefixWrapper>\n\t\t\t\t),\n\t\t\t} }\n\t\t/>\n\t);\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AAIA,IAAAC,MAAA,GAAAD,OAAA;AAMA,IAAAE,eAAA,GAAAC,sBAAA,CAAAH,OAAA;AAAoD,IAAAI,WAAA,GAAAJ,OAAA;AAbpD;AACA;AACA;;AAOA;AACA;AACA;;AAIe,SAASK,GAAGA,CAAU;EACpCC,IAAI;EACJC,KAAK;EACLC,QAAQ;EACRC;AAC6B,CAAC,EAAG;EACjC,oBACC,IAAAL,WAAA,CAAAM,GAAA,EAACR,eAAA,CAAAS,OAAa;IAEZL,IAAI;IACJC,KAAK;IACLC,QAAQ;IACRC,mBAAmB;IACnBG,IAAI,EAAE,KAAK;IACXC,MAAM,eACL,IAAAT,WAAA,CAAAM,GAAA,EAACX,WAAA,CAAAe,uCAAyB;MAACC,OAAO,EAAC,MAAM;MAAAC,QAAA,eACxC,IAAAZ,WAAA,CAAAM,GAAA,EAACX,WAAA,CAAAkB,IAAI;QAACC,IAAI,EAAGC;MAAM,CAAE;IAAC,CACI;EAC3B,CAEF,CAAC;AAEJ","ignoreList":[]}
@@ -1,13 +1,19 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports.default = ValidatedText;
8
+ var _deepmerge = _interopRequireDefault(require("deepmerge"));
7
9
  var _components = require("@wordpress/components");
8
10
  var _element = require("@wordpress/element");
9
11
  var _lockUnlock = require("../../lock-unlock");
10
12
  var _jsxRuntime = require("react/jsx-runtime");
13
+ /**
14
+ * External dependencies
15
+ */
16
+
11
17
  /**
12
18
  * WordPress dependencies
13
19
  */
@@ -25,38 +31,42 @@ function ValidatedText({
25
31
  onChange,
26
32
  hideLabelFromVision,
27
33
  type,
28
- icon,
34
+ prefix,
29
35
  suffix
30
36
  }) {
31
37
  const {
32
- id,
33
38
  label,
34
39
  placeholder,
35
- description
40
+ description,
41
+ getValue,
42
+ setValue,
43
+ isValid
36
44
  } = field;
37
- const value = field.getValue({
45
+ const value = getValue({
38
46
  item: data
39
47
  });
40
48
  const [customValidity, setCustomValidity] = (0, _element.useState)(undefined);
41
- const onChangeControl = (0, _element.useCallback)(newValue => onChange({
42
- [id]: newValue
43
- }), [id, onChange]);
49
+ const onChangeControl = (0, _element.useCallback)(newValue => onChange(setValue({
50
+ item: data,
51
+ value: newValue
52
+ })), [data, setValue, onChange]);
53
+ const onValidateControl = (0, _element.useCallback)(newValue => {
54
+ const message = isValid?.custom?.((0, _deepmerge.default)(data, setValue({
55
+ item: data,
56
+ value: newValue
57
+ })), field);
58
+ if (message) {
59
+ setCustomValidity({
60
+ type: 'invalid',
61
+ message
62
+ });
63
+ return;
64
+ }
65
+ setCustomValidity(undefined);
66
+ }, [data, field, isValid, setValue]);
44
67
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(ValidatedInputControl, {
45
- required: !!field.isValid?.required,
46
- onValidate: newValue => {
47
- const message = field.isValid?.custom?.({
48
- ...data,
49
- [id]: newValue
50
- }, field);
51
- if (message) {
52
- setCustomValidity({
53
- type: 'invalid',
54
- message
55
- });
56
- return;
57
- }
58
- setCustomValidity(undefined);
59
- },
68
+ required: !!isValid?.required,
69
+ onValidate: onValidateControl,
60
70
  customValidity: customValidity,
61
71
  label: label,
62
72
  placeholder: placeholder,
@@ -65,16 +75,8 @@ function ValidatedText({
65
75
  onChange: onChangeControl,
66
76
  hideLabelFromVision: hideLabelFromVision,
67
77
  type: type,
68
- prefix: icon ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalInputControlPrefixWrapper, {
69
- variant: "icon",
70
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Icon, {
71
- icon: icon
72
- })
73
- }) : undefined,
74
- suffix: suffix ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalInputControlSuffixWrapper, {
75
- variant: "control",
76
- children: suffix
77
- }) : undefined,
78
+ prefix: prefix,
79
+ suffix: suffix,
78
80
  __next40pxDefaultSize: true
79
81
  });
80
82
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_element","_lockUnlock","_jsxRuntime","ValidatedInputControl","unlock","privateApis","ValidatedText","data","field","onChange","hideLabelFromVision","type","icon","suffix","id","label","placeholder","description","value","getValue","item","customValidity","setCustomValidity","useState","undefined","onChangeControl","useCallback","newValue","jsx","required","isValid","onValidate","message","custom","help","prefix","__experimentalInputControlPrefixWrapper","variant","children","Icon","__experimentalInputControlSuffixWrapper","__next40pxDefaultSize"],"sources":["@wordpress/dataviews/src/dataform-controls/utils/validated-input.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tIcon,\n\tprivateApis,\n\t__experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,\n\t__experimentalInputControlSuffixWrapper as InputControlSuffixWrapper,\n} from '@wordpress/components';\nimport { useCallback, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../types';\nimport { unlock } from '../../lock-unlock';\n\nconst { ValidatedInputControl } = unlock( privateApis );\n\nexport type DataFormValidatedTextControlProps< Item > =\n\tDataFormControlProps< Item > & {\n\t\t/**\n\t\t * The input type of the control.\n\t\t */\n\t\ttype?: 'text' | 'email' | 'tel' | 'url' | 'password';\n\t\t/**\n\t\t * Optional icon to display as prefix.\n\t\t */\n\t\ticon?: React.ComponentType | React.ReactElement;\n\t\t/**\n\t\t * Optional icon to display as suffix.\n\t\t */\n\t\tsuffix?: React.ReactElement;\n\t};\n\nexport default function ValidatedText< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\ttype,\n\ticon,\n\tsuffix,\n}: DataFormValidatedTextControlProps< Item > ) {\n\tconst { id, label, placeholder, description } = field;\n\tconst value = field.getValue( { item: data } );\n\tconst [ customValidity, setCustomValidity ] =\n\t\tuseState<\n\t\t\tReact.ComponentProps<\n\t\t\t\ttypeof ValidatedInputControl\n\t\t\t>[ 'customValidity' ]\n\t\t>( undefined );\n\n\tconst onChangeControl = useCallback(\n\t\t( newValue: string ) =>\n\t\t\tonChange( {\n\t\t\t\t[ id ]: newValue,\n\t\t\t} ),\n\t\t[ id, onChange ]\n\t);\n\n\treturn (\n\t\t<ValidatedInputControl\n\t\t\trequired={ !! field.isValid?.required }\n\t\t\tonValidate={ ( newValue: any ) => {\n\t\t\t\tconst message = field.isValid?.custom?.(\n\t\t\t\t\t{\n\t\t\t\t\t\t...data,\n\t\t\t\t\t\t[ id ]: newValue,\n\t\t\t\t\t},\n\t\t\t\t\tfield\n\t\t\t\t);\n\n\t\t\t\tif ( message ) {\n\t\t\t\t\tsetCustomValidity( {\n\t\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t} );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tsetCustomValidity( undefined );\n\t\t\t} }\n\t\t\tcustomValidity={ customValidity }\n\t\t\tlabel={ label }\n\t\t\tplaceholder={ placeholder }\n\t\t\tvalue={ value ?? '' }\n\t\t\thelp={ description }\n\t\t\tonChange={ onChangeControl }\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\ttype={ type }\n\t\t\tprefix={\n\t\t\t\ticon ? (\n\t\t\t\t\t<InputControlPrefixWrapper variant=\"icon\">\n\t\t\t\t\t\t<Icon icon={ icon } />\n\t\t\t\t\t</InputControlPrefixWrapper>\n\t\t\t\t) : undefined\n\t\t\t}\n\t\t\tsuffix={\n\t\t\t\tsuffix ? (\n\t\t\t\t\t<InputControlSuffixWrapper variant=\"control\">\n\t\t\t\t\t\t{ suffix }\n\t\t\t\t\t</InputControlSuffixWrapper>\n\t\t\t\t) : undefined\n\t\t\t}\n\t\t\t__next40pxDefaultSize\n\t\t/>\n\t);\n}\n"],"mappings":";;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AAMA,IAAAC,QAAA,GAAAD,OAAA;AAMA,IAAAE,WAAA,GAAAF,OAAA;AAA2C,IAAAG,WAAA,GAAAH,OAAA;AAf3C;AACA;AACA;;AASA;AACA;AACA;;AAIA,MAAM;EAAEI;AAAsB,CAAC,GAAG,IAAAC,kBAAM,EAAEC,uBAAY,CAAC;AAkBxC,SAASC,aAAaA,CAAU;EAC9CC,IAAI;EACJC,KAAK;EACLC,QAAQ;EACRC,mBAAmB;EACnBC,IAAI;EACJC,IAAI;EACJC;AAC0C,CAAC,EAAG;EAC9C,MAAM;IAAEC,EAAE;IAAEC,KAAK;IAAEC,WAAW;IAAEC;EAAY,CAAC,GAAGT,KAAK;EACrD,MAAMU,KAAK,GAAGV,KAAK,CAACW,QAAQ,CAAE;IAAEC,IAAI,EAAEb;EAAK,CAAE,CAAC;EAC9C,MAAM,CAAEc,cAAc,EAAEC,iBAAiB,CAAE,GAC1C,IAAAC,iBAAQ,EAILC,SAAU,CAAC;EAEf,MAAMC,eAAe,GAAG,IAAAC,oBAAW,EAChCC,QAAgB,IACjBlB,QAAQ,CAAE;IACT,CAAEK,EAAE,GAAIa;EACT,CAAE,CAAC,EACJ,CAAEb,EAAE,EAAEL,QAAQ,CACf,CAAC;EAED,oBACC,IAAAP,WAAA,CAAA0B,GAAA,EAACzB,qBAAqB;IACrB0B,QAAQ,EAAG,CAAC,CAAErB,KAAK,CAACsB,OAAO,EAAED,QAAU;IACvCE,UAAU,EAAKJ,QAAa,IAAM;MACjC,MAAMK,OAAO,GAAGxB,KAAK,CAACsB,OAAO,EAAEG,MAAM,GACpC;QACC,GAAG1B,IAAI;QACP,CAAEO,EAAE,GAAIa;MACT,CAAC,EACDnB,KACD,CAAC;MAED,IAAKwB,OAAO,EAAG;QACdV,iBAAiB,CAAE;UAClBX,IAAI,EAAE,SAAS;UACfqB;QACD,CAAE,CAAC;QACH;MACD;MAEAV,iBAAiB,CAAEE,SAAU,CAAC;IAC/B,CAAG;IACHH,cAAc,EAAGA,cAAgB;IACjCN,KAAK,EAAGA,KAAO;IACfC,WAAW,EAAGA,WAAa;IAC3BE,KAAK,EAAGA,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,EAAI;IACrBgB,IAAI,EAAGjB,WAAa;IACpBR,QAAQ,EAAGgB,eAAiB;IAC5Bf,mBAAmB,EAAGA,mBAAqB;IAC3CC,IAAI,EAAGA,IAAM;IACbwB,MAAM,EACLvB,IAAI,gBACH,IAAAV,WAAA,CAAA0B,GAAA,EAAC9B,WAAA,CAAAsC,uCAAyB;MAACC,OAAO,EAAC,MAAM;MAAAC,QAAA,eACxC,IAAApC,WAAA,CAAA0B,GAAA,EAAC9B,WAAA,CAAAyC,IAAI;QAAC3B,IAAI,EAAGA;MAAM,CAAE;IAAC,CACI,CAAC,GACzBY,SACJ;IACDX,MAAM,EACLA,MAAM,gBACL,IAAAX,WAAA,CAAA0B,GAAA,EAAC9B,WAAA,CAAA0C,uCAAyB;MAACH,OAAO,EAAC,SAAS;MAAAC,QAAA,EACzCzB;IAAM,CACkB,CAAC,GACzBW,SACJ;IACDiB,qBAAqB;EAAA,CACrB,CAAC;AAEJ","ignoreList":[]}
1
+ {"version":3,"names":["_deepmerge","_interopRequireDefault","require","_components","_element","_lockUnlock","_jsxRuntime","ValidatedInputControl","unlock","privateApis","ValidatedText","data","field","onChange","hideLabelFromVision","type","prefix","suffix","label","placeholder","description","getValue","setValue","isValid","value","item","customValidity","setCustomValidity","useState","undefined","onChangeControl","useCallback","newValue","onValidateControl","message","custom","deepMerge","jsx","required","onValidate","help","__next40pxDefaultSize"],"sources":["@wordpress/dataviews/src/dataform-controls/utils/validated-input.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport deepMerge from 'deepmerge';\n\n/**\n * WordPress dependencies\n */\nimport { privateApis } from '@wordpress/components';\nimport { useCallback, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../types';\nimport { unlock } from '../../lock-unlock';\n\nconst { ValidatedInputControl } = unlock( privateApis );\n\nexport type DataFormValidatedTextControlProps< Item > =\n\tDataFormControlProps< Item > & {\n\t\t/**\n\t\t * The input type of the control.\n\t\t */\n\t\ttype?: 'text' | 'email' | 'tel' | 'url' | 'password';\n\t\t/**\n\t\t * Optional prefix element to display before the input.\n\t\t */\n\t\tprefix?: React.ReactElement;\n\t\t/**\n\t\t * Optional suffix element to display after the input.\n\t\t */\n\t\tsuffix?: React.ReactElement;\n\t};\n\nexport default function ValidatedText< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\ttype,\n\tprefix,\n\tsuffix,\n}: DataFormValidatedTextControlProps< Item > ) {\n\tconst { label, placeholder, description, getValue, setValue, isValid } =\n\t\tfield;\n\tconst value = getValue( { item: data } );\n\tconst [ customValidity, setCustomValidity ] =\n\t\tuseState<\n\t\t\tReact.ComponentProps<\n\t\t\t\ttypeof ValidatedInputControl\n\t\t\t>[ 'customValidity' ]\n\t\t>( undefined );\n\n\tconst onChangeControl = useCallback(\n\t\t( newValue: string ) =>\n\t\t\tonChange(\n\t\t\t\tsetValue( {\n\t\t\t\t\titem: data,\n\t\t\t\t\tvalue: newValue,\n\t\t\t\t} )\n\t\t\t),\n\t\t[ data, setValue, onChange ]\n\t);\n\n\tconst onValidateControl = useCallback(\n\t\t( newValue: any ) => {\n\t\t\tconst message = isValid?.custom?.(\n\t\t\t\tdeepMerge(\n\t\t\t\t\tdata,\n\t\t\t\t\tsetValue( {\n\t\t\t\t\t\titem: data,\n\t\t\t\t\t\tvalue: newValue,\n\t\t\t\t\t} ) as Partial< Item >\n\t\t\t\t),\n\t\t\t\tfield\n\t\t\t);\n\n\t\t\tif ( message ) {\n\t\t\t\tsetCustomValidity( {\n\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\tmessage,\n\t\t\t\t} );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetCustomValidity( undefined );\n\t\t},\n\t\t[ data, field, isValid, setValue ]\n\t);\n\n\treturn (\n\t\t<ValidatedInputControl\n\t\t\trequired={ !! isValid?.required }\n\t\t\tonValidate={ onValidateControl }\n\t\t\tcustomValidity={ customValidity }\n\t\t\tlabel={ label }\n\t\t\tplaceholder={ placeholder }\n\t\t\tvalue={ value ?? '' }\n\t\t\thelp={ description }\n\t\t\tonChange={ onChangeControl }\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\ttype={ type }\n\t\t\tprefix={ prefix }\n\t\t\tsuffix={ suffix }\n\t\t\t__next40pxDefaultSize\n\t\t/>\n\t);\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AAKA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AAMA,IAAAG,WAAA,GAAAH,OAAA;AAA2C,IAAAI,WAAA,GAAAJ,OAAA;AAf3C;AACA;AACA;;AAGA;AACA;AACA;;AAIA;AACA;AACA;;AAIA,MAAM;EAAEK;AAAsB,CAAC,GAAG,IAAAC,kBAAM,EAAEC,uBAAY,CAAC;AAkBxC,SAASC,aAAaA,CAAU;EAC9CC,IAAI;EACJC,KAAK;EACLC,QAAQ;EACRC,mBAAmB;EACnBC,IAAI;EACJC,MAAM;EACNC;AAC0C,CAAC,EAAG;EAC9C,MAAM;IAAEC,KAAK;IAAEC,WAAW;IAAEC,WAAW;IAAEC,QAAQ;IAAEC,QAAQ;IAAEC;EAAQ,CAAC,GACrEX,KAAK;EACN,MAAMY,KAAK,GAAGH,QAAQ,CAAE;IAAEI,IAAI,EAAEd;EAAK,CAAE,CAAC;EACxC,MAAM,CAAEe,cAAc,EAAEC,iBAAiB,CAAE,GAC1C,IAAAC,iBAAQ,EAILC,SAAU,CAAC;EAEf,MAAMC,eAAe,GAAG,IAAAC,oBAAW,EAChCC,QAAgB,IACjBnB,QAAQ,CACPS,QAAQ,CAAE;IACTG,IAAI,EAAEd,IAAI;IACVa,KAAK,EAAEQ;EACR,CAAE,CACH,CAAC,EACF,CAAErB,IAAI,EAAEW,QAAQ,EAAET,QAAQ,CAC3B,CAAC;EAED,MAAMoB,iBAAiB,GAAG,IAAAF,oBAAW,EAClCC,QAAa,IAAM;IACpB,MAAME,OAAO,GAAGX,OAAO,EAAEY,MAAM,GAC9B,IAAAC,kBAAS,EACRzB,IAAI,EACJW,QAAQ,CAAE;MACTG,IAAI,EAAEd,IAAI;MACVa,KAAK,EAAEQ;IACR,CAAE,CACH,CAAC,EACDpB,KACD,CAAC;IAED,IAAKsB,OAAO,EAAG;MACdP,iBAAiB,CAAE;QAClBZ,IAAI,EAAE,SAAS;QACfmB;MACD,CAAE,CAAC;MACH;IACD;IAEAP,iBAAiB,CAAEE,SAAU,CAAC;EAC/B,CAAC,EACD,CAAElB,IAAI,EAAEC,KAAK,EAAEW,OAAO,EAAED,QAAQ,CACjC,CAAC;EAED,oBACC,IAAAhB,WAAA,CAAA+B,GAAA,EAAC9B,qBAAqB;IACrB+B,QAAQ,EAAG,CAAC,CAAEf,OAAO,EAAEe,QAAU;IACjCC,UAAU,EAAGN,iBAAmB;IAChCP,cAAc,EAAGA,cAAgB;IACjCR,KAAK,EAAGA,KAAO;IACfC,WAAW,EAAGA,WAAa;IAC3BK,KAAK,EAAGA,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,EAAI;IACrBgB,IAAI,EAAGpB,WAAa;IACpBP,QAAQ,EAAGiB,eAAiB;IAC5BhB,mBAAmB,EAAGA,mBAAqB;IAC3CC,IAAI,EAAGA,IAAM;IACbC,MAAM,EAAGA,MAAQ;IACjBC,MAAM,EAAGA,MAAQ;IACjBwB,qBAAqB;EAAA,CACrB,CAAC;AAEJ","ignoreList":[]}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
@@ -11,6 +12,7 @@ var _icons = require("@wordpress/icons");
11
12
  var _dataFormLayout = require("../data-form-layout");
12
13
  var _isCombinedField = require("../is-combined-field");
13
14
  var _normalizeFormFields = require("../../normalize-form-fields");
15
+ var _summaryButton = _interopRequireDefault(require("./summary-button"));
14
16
  var _jsxRuntime = require("react/jsx-runtime");
15
17
  /**
16
18
  * WordPress dependencies
@@ -44,6 +46,7 @@ function DropdownHeader({
44
46
  }
45
47
  function PanelDropdown({
46
48
  fieldDefinition,
49
+ summaryFields,
47
50
  popoverAnchor,
48
51
  labelPosition = 'side',
49
52
  data,
@@ -81,21 +84,14 @@ function PanelDropdown({
81
84
  renderToggle: ({
82
85
  isOpen,
83
86
  onToggle
84
- }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
85
- className: "dataforms-layouts-panel__field-control",
86
- size: "compact",
87
- variant: ['none', 'top'].includes(labelPosition) ? 'link' : 'tertiary',
88
- "aria-expanded": isOpen,
89
- "aria-label": (0, _i18n.sprintf)(
90
- // translators: %s: Field name.
91
- (0, _i18n._x)('Edit %s', 'field'), fieldLabel || ''),
92
- onClick: onToggle,
87
+ }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_summaryButton.default, {
88
+ summaryFields: summaryFields,
89
+ data: data,
90
+ labelPosition: labelPosition,
91
+ fieldLabel: fieldLabel,
93
92
  disabled: fieldDefinition.readOnly === true,
94
- accessibleWhenDisabled: true,
95
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(fieldDefinition.render, {
96
- item: data,
97
- field: fieldDefinition
98
- })
93
+ onClick: onToggle,
94
+ "aria-expanded": isOpen
99
95
  }),
100
96
  renderContent: ({
101
97
  onClose
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_i18n","_element","_icons","_dataFormLayout","_isCombinedField","_normalizeFormFields","_jsxRuntime","DropdownHeader","title","onClose","jsx","__experimentalVStack","className","spacing","children","jsxs","__experimentalHStack","alignment","__experimentalHeading","level","size","__experimentalSpacer","Button","label","__","icon","closeSmall","onClick","PanelDropdown","fieldDefinition","popoverAnchor","labelPosition","data","onChange","field","fieldLabel","isCombinedField","form","useMemo","layout","DEFAULT_LAYOUT","fields","id","popoverProps","anchor","placement","offset","shift","Dropdown","contentClassName","focusOnMount","toggleProps","variant","tooltipPosition","renderToggle","isOpen","onToggle","includes","sprintf","_x","disabled","readOnly","accessibleWhenDisabled","render","item","renderContent","Fragment","DataFormLayout","FieldLayout","nestedField","_form$fields","hideLabelFromVision","length","_default","exports","default"],"sources":["@wordpress/dataviews/src/dataforms-layouts/panel/dropdown.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalVStack as VStack,\n\t__experimentalHStack as HStack,\n\t__experimentalHeading as Heading,\n\t__experimentalSpacer as Spacer,\n\tDropdown,\n\tButton,\n} from '@wordpress/components';\nimport { sprintf, __, _x } from '@wordpress/i18n';\nimport { useMemo } from '@wordpress/element';\nimport { closeSmall } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport type { Form, FormField, NormalizedField } from '../../types';\nimport { DataFormLayout } from '../data-form-layout';\nimport { isCombinedField } from '../is-combined-field';\nimport { DEFAULT_LAYOUT } from '../../normalize-form-fields';\n\nfunction DropdownHeader( {\n\ttitle,\n\tonClose,\n}: {\n\ttitle?: string;\n\tonClose: () => void;\n} ) {\n\treturn (\n\t\t<VStack\n\t\t\tclassName=\"dataforms-layouts-panel__dropdown-header\"\n\t\t\tspacing={ 4 }\n\t\t>\n\t\t\t<HStack alignment=\"center\">\n\t\t\t\t{ title && (\n\t\t\t\t\t<Heading level={ 2 } size={ 13 }>\n\t\t\t\t\t\t{ title }\n\t\t\t\t\t</Heading>\n\t\t\t\t) }\n\t\t\t\t<Spacer />\n\t\t\t\t{ onClose && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={ __( 'Close' ) }\n\t\t\t\t\t\ticon={ closeSmall }\n\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</HStack>\n\t\t</VStack>\n\t);\n}\n\nfunction PanelDropdown< Item >( {\n\tfieldDefinition,\n\tpopoverAnchor,\n\tlabelPosition = 'side',\n\tdata,\n\tonChange,\n\tfield,\n}: {\n\tfieldDefinition: NormalizedField< Item >;\n\tpopoverAnchor: HTMLElement | null;\n\tlabelPosition: 'side' | 'top' | 'none';\n\tdata: Item;\n\tonChange: ( value: any ) => void;\n\tfield: FormField;\n} ) {\n\tconst fieldLabel = isCombinedField( field )\n\t\t? field.label\n\t\t: fieldDefinition?.label;\n\n\tconst form: Form = useMemo(\n\t\t(): Form => ( {\n\t\t\tlayout: DEFAULT_LAYOUT,\n\t\t\tfields: isCombinedField( field )\n\t\t\t\t? field.children\n\t\t\t\t: // If not explicit children return the field id itself.\n\t\t\t\t [ { id: field.id } ],\n\t\t} ),\n\t\t[ field ]\n\t);\n\n\t// Memoize popoverProps to avoid returning a new object every time.\n\tconst popoverProps = useMemo(\n\t\t() => ( {\n\t\t\t// Anchor the popover to the middle of the entire row so that it doesn't\n\t\t\t// move around when the label changes.\n\t\t\tanchor: popoverAnchor,\n\t\t\tplacement: 'left-start',\n\t\t\toffset: 36,\n\t\t\tshift: true,\n\t\t} ),\n\t\t[ popoverAnchor ]\n\t);\n\n\treturn (\n\t\t<Dropdown\n\t\t\tcontentClassName=\"dataforms-layouts-panel__field-dropdown\"\n\t\t\tpopoverProps={ popoverProps }\n\t\t\tfocusOnMount\n\t\t\ttoggleProps={ {\n\t\t\t\tsize: 'compact',\n\t\t\t\tvariant: 'tertiary',\n\t\t\t\ttooltipPosition: 'middle left',\n\t\t\t} }\n\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t<Button\n\t\t\t\t\tclassName=\"dataforms-layouts-panel__field-control\"\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\tvariant={\n\t\t\t\t\t\t[ 'none', 'top' ].includes( labelPosition )\n\t\t\t\t\t\t\t? 'link'\n\t\t\t\t\t\t\t: 'tertiary'\n\t\t\t\t\t}\n\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\taria-label={ sprintf(\n\t\t\t\t\t\t// translators: %s: Field name.\n\t\t\t\t\t\t_x( 'Edit %s', 'field' ),\n\t\t\t\t\t\tfieldLabel || ''\n\t\t\t\t\t) }\n\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\tdisabled={ fieldDefinition.readOnly === true }\n\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t>\n\t\t\t\t\t<fieldDefinition.render\n\t\t\t\t\t\titem={ data }\n\t\t\t\t\t\tfield={ fieldDefinition }\n\t\t\t\t\t/>\n\t\t\t\t</Button>\n\t\t\t) }\n\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<DropdownHeader title={ fieldLabel } onClose={ onClose } />\n\t\t\t\t\t<DataFormLayout\n\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\tform={ form }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( FieldLayout, nestedField ) => (\n\t\t\t\t\t\t\t<FieldLayout\n\t\t\t\t\t\t\t\tkey={ nestedField.id }\n\t\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\t\tfield={ nestedField }\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\thideLabelFromVision={\n\t\t\t\t\t\t\t\t\t( form?.fields ?? [] ).length < 2\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</DataFormLayout>\n\t\t\t\t</>\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nexport default PanelDropdown;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_components","require","_i18n","_element","_icons","_dataFormLayout","_isCombinedField","_normalizeFormFields","_summaryButton","_interopRequireDefault","_jsxRuntime","DropdownHeader","title","onClose","jsx","__experimentalVStack","className","spacing","children","jsxs","__experimentalHStack","alignment","__experimentalHeading","level","size","__experimentalSpacer","Button","label","__","icon","closeSmall","onClick","PanelDropdown","fieldDefinition","summaryFields","popoverAnchor","labelPosition","data","onChange","field","fieldLabel","isCombinedField","form","useMemo","layout","DEFAULT_LAYOUT","fields","id","popoverProps","anchor","placement","offset","shift","Dropdown","contentClassName","focusOnMount","toggleProps","variant","tooltipPosition","renderToggle","isOpen","onToggle","default","disabled","readOnly","renderContent","Fragment","DataFormLayout","FieldLayout","nestedField","_form$fields","hideLabelFromVision","length","_default","exports"],"sources":["@wordpress/dataviews/src/dataforms-layouts/panel/dropdown.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalVStack as VStack,\n\t__experimentalHStack as HStack,\n\t__experimentalHeading as Heading,\n\t__experimentalSpacer as Spacer,\n\tDropdown,\n\tButton,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useMemo } from '@wordpress/element';\nimport { closeSmall } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport type { Form, FormField, NormalizedField } from '../../types';\nimport { DataFormLayout } from '../data-form-layout';\nimport { isCombinedField } from '../is-combined-field';\nimport { DEFAULT_LAYOUT } from '../../normalize-form-fields';\nimport SummaryButton from './summary-button';\n\nfunction DropdownHeader( {\n\ttitle,\n\tonClose,\n}: {\n\ttitle?: string;\n\tonClose: () => void;\n} ) {\n\treturn (\n\t\t<VStack\n\t\t\tclassName=\"dataforms-layouts-panel__dropdown-header\"\n\t\t\tspacing={ 4 }\n\t\t>\n\t\t\t<HStack alignment=\"center\">\n\t\t\t\t{ title && (\n\t\t\t\t\t<Heading level={ 2 } size={ 13 }>\n\t\t\t\t\t\t{ title }\n\t\t\t\t\t</Heading>\n\t\t\t\t) }\n\t\t\t\t<Spacer />\n\t\t\t\t{ onClose && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={ __( 'Close' ) }\n\t\t\t\t\t\ticon={ closeSmall }\n\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</HStack>\n\t\t</VStack>\n\t);\n}\n\nfunction PanelDropdown< Item >( {\n\tfieldDefinition,\n\tsummaryFields,\n\tpopoverAnchor,\n\tlabelPosition = 'side',\n\tdata,\n\tonChange,\n\tfield,\n}: {\n\tfieldDefinition: NormalizedField< Item >;\n\tsummaryFields: NormalizedField< Item >[];\n\tpopoverAnchor: HTMLElement | null;\n\tlabelPosition: 'side' | 'top' | 'none';\n\tdata: Item;\n\tonChange: ( value: any ) => void;\n\tfield: FormField;\n} ) {\n\tconst fieldLabel = isCombinedField( field )\n\t\t? field.label\n\t\t: fieldDefinition?.label;\n\n\tconst form: Form = useMemo(\n\t\t(): Form => ( {\n\t\t\tlayout: DEFAULT_LAYOUT,\n\t\t\tfields: isCombinedField( field )\n\t\t\t\t? field.children\n\t\t\t\t: // If not explicit children return the field id itself.\n\t\t\t\t [ { id: field.id } ],\n\t\t} ),\n\t\t[ field ]\n\t);\n\n\t// Memoize popoverProps to avoid returning a new object every time.\n\tconst popoverProps = useMemo(\n\t\t() => ( {\n\t\t\t// Anchor the popover to the middle of the entire row so that it doesn't\n\t\t\t// move around when the label changes.\n\t\t\tanchor: popoverAnchor,\n\t\t\tplacement: 'left-start',\n\t\t\toffset: 36,\n\t\t\tshift: true,\n\t\t} ),\n\t\t[ popoverAnchor ]\n\t);\n\n\treturn (\n\t\t<Dropdown\n\t\t\tcontentClassName=\"dataforms-layouts-panel__field-dropdown\"\n\t\t\tpopoverProps={ popoverProps }\n\t\t\tfocusOnMount\n\t\t\ttoggleProps={ {\n\t\t\t\tsize: 'compact',\n\t\t\t\tvariant: 'tertiary',\n\t\t\t\ttooltipPosition: 'middle left',\n\t\t\t} }\n\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t<SummaryButton\n\t\t\t\t\tsummaryFields={ summaryFields }\n\t\t\t\t\tdata={ data }\n\t\t\t\t\tlabelPosition={ labelPosition }\n\t\t\t\t\tfieldLabel={ fieldLabel }\n\t\t\t\t\tdisabled={ fieldDefinition.readOnly === true }\n\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<DropdownHeader title={ fieldLabel } onClose={ onClose } />\n\t\t\t\t\t<DataFormLayout\n\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\tform={ form }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( FieldLayout, nestedField ) => (\n\t\t\t\t\t\t\t<FieldLayout\n\t\t\t\t\t\t\t\tkey={ nestedField.id }\n\t\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\t\tfield={ nestedField }\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\thideLabelFromVision={\n\t\t\t\t\t\t\t\t\t( form?.fields ?? [] ).length < 2\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</DataFormLayout>\n\t\t\t\t</>\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nexport default PanelDropdown;\n"],"mappings":"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","ignoreList":[]}
@@ -34,18 +34,29 @@ function FormPanelField({
34
34
  const {
35
35
  fields
36
36
  } = (0, _element.useContext)(_dataformContext.default);
37
- const fieldDefinition = fields.find(_field => {
38
- // Default to the first simple child if it is a combined field.
39
- if ((0, _isCombinedField.isCombinedField)(field)) {
40
- const simpleChildren = field.children.filter(child => typeof child === 'string' || !(0, _isCombinedField.isCombinedField)(child));
41
- if (simpleChildren.length === 0) {
42
- return false;
43
- }
44
- const firstChildFieldId = typeof simpleChildren[0] === 'string' ? simpleChildren[0] : simpleChildren[0].id;
45
- return _field.id === firstChildFieldId;
37
+ const getSummaryFields = () => {
38
+ if (!(0, _isCombinedField.isCombinedField)(field)) {
39
+ const fieldDef = fields.find(_field => _field.id === field.id);
40
+ return fieldDef ? [fieldDef] : [];
46
41
  }
47
- return _field.id === field.id;
48
- });
42
+
43
+ // Use summary field(s) if specified for combined fields
44
+ if (field.summary) {
45
+ const summaryIds = Array.isArray(field.summary) ? field.summary : [field.summary];
46
+ return summaryIds.map(summaryId => fields.find(_field => _field.id === summaryId)).filter(_field => _field !== undefined);
47
+ }
48
+
49
+ // Default to the first simple child
50
+ const simpleChildren = field.children.filter(child => typeof child === 'string' || !(0, _isCombinedField.isCombinedField)(child));
51
+ if (simpleChildren.length === 0) {
52
+ return [];
53
+ }
54
+ const firstChildFieldId = typeof simpleChildren[0] === 'string' ? simpleChildren[0] : simpleChildren[0].id;
55
+ const fieldDef = fields.find(_field => _field.id === firstChildFieldId);
56
+ return fieldDef ? [fieldDef] : [];
57
+ };
58
+ const summaryFields = getSummaryFields();
59
+ const fieldDefinition = summaryFields[0]; // For backward compatibility
49
60
 
50
61
  // Use internal state instead of a ref to make sure that the component
51
62
  // re-renders when the popover's anchor updates.
@@ -63,6 +74,7 @@ function FormPanelField({
63
74
  const renderedControl = layout.openAs === 'modal' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_modal.default, {
64
75
  field: field,
65
76
  fieldDefinition: fieldDefinition,
77
+ summaryFields: summaryFields,
66
78
  data: data,
67
79
  onChange: onChange,
68
80
  labelPosition: labelPosition
@@ -70,6 +82,7 @@ function FormPanelField({
70
82
  field: field,
71
83
  popoverAnchor: popoverAnchor,
72
84
  fieldDefinition: fieldDefinition,
85
+ summaryFields: summaryFields,
73
86
  data: data,
74
87
  onChange: onChange,
75
88
  labelPosition: labelPosition
@@ -1 +1 @@
1
- {"version":3,"names":["_clsx","_interopRequireDefault","require","_components","_element","_dataformContext","_isCombinedField","_normalizeFormFields","_dropdown","_modal","_jsxRuntime","FormPanelField","data","field","onChange","fields","useContext","DataFormContext","fieldDefinition","find","_field","isCombinedField","simpleChildren","children","filter","child","length","firstChildFieldId","id","popoverAnchor","setPopoverAnchor","useState","layout","normalizeLayout","type","labelPosition","labelClassName","clsx","fieldLabel","label","renderedControl","openAs","jsx","default","jsxs","__experimentalVStack","className","spacing","style","paddingBottom","__experimentalHStack","ref"],"sources":["@wordpress/dataviews/src/dataforms-layouts/panel/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalVStack as VStack,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\nimport { useState, useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tFieldLayoutProps,\n\tNormalizedPanelLayout,\n\tSimpleFormField,\n} from '../../types';\nimport DataFormContext from '../../components/dataform-context';\nimport { isCombinedField } from '../is-combined-field';\nimport { normalizeLayout } from '../../normalize-form-fields';\nimport PanelDropdown from './dropdown';\nimport PanelModal from './modal';\n\nexport default function FormPanelField< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n}: FieldLayoutProps< Item > ) {\n\tconst { fields } = useContext( DataFormContext );\n\tconst fieldDefinition = fields.find( ( _field ) => {\n\t\t// Default to the first simple child if it is a combined field.\n\t\tif ( isCombinedField( field ) ) {\n\t\t\tconst simpleChildren = field.children.filter(\n\t\t\t\t( child ): child is string | SimpleFormField =>\n\t\t\t\t\ttypeof child === 'string' || ! isCombinedField( child )\n\t\t\t);\n\n\t\t\tif ( simpleChildren.length === 0 ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst firstChildFieldId =\n\t\t\t\ttypeof simpleChildren[ 0 ] === 'string'\n\t\t\t\t\t? simpleChildren[ 0 ]\n\t\t\t\t\t: simpleChildren[ 0 ].id;\n\n\t\t\treturn _field.id === firstChildFieldId;\n\t\t}\n\n\t\treturn _field.id === field.id;\n\t} );\n\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState< HTMLElement | null >(\n\t\tnull\n\t);\n\n\tif ( ! fieldDefinition ) {\n\t\treturn null;\n\t}\n\n\tconst layout: NormalizedPanelLayout = normalizeLayout( {\n\t\t...field.layout,\n\t\ttype: 'panel',\n\t} ) as NormalizedPanelLayout;\n\n\tconst labelPosition = layout.labelPosition;\n\tconst labelClassName = clsx(\n\t\t'dataforms-layouts-panel__field-label',\n\t\t`dataforms-layouts-panel__field-label--label-position-${ labelPosition }`\n\t);\n\tconst fieldLabel = isCombinedField( field )\n\t\t? field.label\n\t\t: fieldDefinition?.label;\n\n\tconst renderedControl =\n\t\tlayout.openAs === 'modal' ? (\n\t\t\t<PanelModal\n\t\t\t\tfield={ field }\n\t\t\t\tfieldDefinition={ fieldDefinition }\n\t\t\t\tdata={ data }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tlabelPosition={ labelPosition }\n\t\t\t/>\n\t\t) : (\n\t\t\t<PanelDropdown\n\t\t\t\tfield={ field }\n\t\t\t\tpopoverAnchor={ popoverAnchor }\n\t\t\t\tfieldDefinition={ fieldDefinition }\n\t\t\t\tdata={ data }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tlabelPosition={ labelPosition }\n\t\t\t/>\n\t\t);\n\n\tif ( labelPosition === 'top' ) {\n\t\treturn (\n\t\t\t<VStack className=\"dataforms-layouts-panel__field\" spacing={ 0 }>\n\t\t\t\t<div\n\t\t\t\t\tclassName={ labelClassName }\n\t\t\t\t\tstyle={ { paddingBottom: 0 } }\n\t\t\t\t>\n\t\t\t\t\t{ fieldLabel }\n\t\t\t\t</div>\n\t\t\t\t<div className=\"dataforms-layouts-panel__field-control\">\n\t\t\t\t\t{ renderedControl }\n\t\t\t\t</div>\n\t\t\t</VStack>\n\t\t);\n\t}\n\n\tif ( labelPosition === 'none' ) {\n\t\treturn (\n\t\t\t<div className=\"dataforms-layouts-panel__field\">\n\t\t\t\t{ renderedControl }\n\t\t\t</div>\n\t\t);\n\t}\n\n\t// Defaults to label position side.\n\treturn (\n\t\t<HStack\n\t\t\tref={ setPopoverAnchor }\n\t\t\tclassName=\"dataforms-layouts-panel__field\"\n\t\t>\n\t\t\t<div className={ labelClassName }>{ fieldLabel }</div>\n\t\t\t<div className=\"dataforms-layouts-panel__field-control\">\n\t\t\t\t{ renderedControl }\n\t\t\t</div>\n\t\t</HStack>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_clsx","_interopRequireDefault","require","_components","_element","_dataformContext","_isCombinedField","_normalizeFormFields","_dropdown","_modal","_jsxRuntime","FormPanelField","data","field","onChange","fields","useContext","DataFormContext","getSummaryFields","isCombinedField","fieldDef","find","_field","id","summary","summaryIds","Array","isArray","map","summaryId","filter","undefined","simpleChildren","children","child","length","firstChildFieldId","summaryFields","fieldDefinition","popoverAnchor","setPopoverAnchor","useState","layout","normalizeLayout","type","labelPosition","labelClassName","clsx","fieldLabel","label","renderedControl","openAs","jsx","default","jsxs","__experimentalVStack","className","spacing","style","paddingBottom","__experimentalHStack","ref"],"sources":["@wordpress/dataviews/src/dataforms-layouts/panel/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalVStack as VStack,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\nimport { useState, useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tFieldLayoutProps,\n\tNormalizedPanelLayout,\n\tSimpleFormField,\n} from '../../types';\nimport DataFormContext from '../../components/dataform-context';\nimport { isCombinedField } from '../is-combined-field';\nimport { normalizeLayout } from '../../normalize-form-fields';\nimport PanelDropdown from './dropdown';\nimport PanelModal from './modal';\n\nexport default function FormPanelField< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n}: FieldLayoutProps< Item > ) {\n\tconst { fields } = useContext( DataFormContext );\n\tconst getSummaryFields = () => {\n\t\tif ( ! isCombinedField( field ) ) {\n\t\t\tconst fieldDef = fields.find(\n\t\t\t\t( _field ) => _field.id === field.id\n\t\t\t);\n\t\t\treturn fieldDef ? [ fieldDef ] : [];\n\t\t}\n\n\t\t// Use summary field(s) if specified for combined fields\n\t\tif ( field.summary ) {\n\t\t\tconst summaryIds = Array.isArray( field.summary )\n\t\t\t\t? field.summary\n\t\t\t\t: [ field.summary ];\n\t\t\treturn summaryIds\n\t\t\t\t.map( ( summaryId ) =>\n\t\t\t\t\tfields.find( ( _field ) => _field.id === summaryId )\n\t\t\t\t)\n\t\t\t\t.filter( ( _field ) => _field !== undefined );\n\t\t}\n\n\t\t// Default to the first simple child\n\t\tconst simpleChildren = field.children.filter(\n\t\t\t( child ): child is string | SimpleFormField =>\n\t\t\t\ttypeof child === 'string' || ! isCombinedField( child )\n\t\t);\n\n\t\tif ( simpleChildren.length === 0 ) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst firstChildFieldId =\n\t\t\ttypeof simpleChildren[ 0 ] === 'string'\n\t\t\t\t? simpleChildren[ 0 ]\n\t\t\t\t: simpleChildren[ 0 ].id;\n\n\t\tconst fieldDef = fields.find(\n\t\t\t( _field ) => _field.id === firstChildFieldId\n\t\t);\n\t\treturn fieldDef ? [ fieldDef ] : [];\n\t};\n\n\tconst summaryFields = getSummaryFields();\n\tconst fieldDefinition = summaryFields[ 0 ]; // For backward compatibility\n\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState< HTMLElement | null >(\n\t\tnull\n\t);\n\n\tif ( ! fieldDefinition ) {\n\t\treturn null;\n\t}\n\n\tconst layout: NormalizedPanelLayout = normalizeLayout( {\n\t\t...field.layout,\n\t\ttype: 'panel',\n\t} ) as NormalizedPanelLayout;\n\n\tconst labelPosition = layout.labelPosition;\n\tconst labelClassName = clsx(\n\t\t'dataforms-layouts-panel__field-label',\n\t\t`dataforms-layouts-panel__field-label--label-position-${ labelPosition }`\n\t);\n\tconst fieldLabel = isCombinedField( field )\n\t\t? field.label\n\t\t: fieldDefinition?.label;\n\n\tconst renderedControl =\n\t\tlayout.openAs === 'modal' ? (\n\t\t\t<PanelModal\n\t\t\t\tfield={ field }\n\t\t\t\tfieldDefinition={ fieldDefinition }\n\t\t\t\tsummaryFields={ summaryFields }\n\t\t\t\tdata={ data }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tlabelPosition={ labelPosition }\n\t\t\t/>\n\t\t) : (\n\t\t\t<PanelDropdown\n\t\t\t\tfield={ field }\n\t\t\t\tpopoverAnchor={ popoverAnchor }\n\t\t\t\tfieldDefinition={ fieldDefinition }\n\t\t\t\tsummaryFields={ summaryFields }\n\t\t\t\tdata={ data }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tlabelPosition={ labelPosition }\n\t\t\t/>\n\t\t);\n\n\tif ( labelPosition === 'top' ) {\n\t\treturn (\n\t\t\t<VStack className=\"dataforms-layouts-panel__field\" spacing={ 0 }>\n\t\t\t\t<div\n\t\t\t\t\tclassName={ labelClassName }\n\t\t\t\t\tstyle={ { paddingBottom: 0 } }\n\t\t\t\t>\n\t\t\t\t\t{ fieldLabel }\n\t\t\t\t</div>\n\t\t\t\t<div className=\"dataforms-layouts-panel__field-control\">\n\t\t\t\t\t{ renderedControl }\n\t\t\t\t</div>\n\t\t\t</VStack>\n\t\t);\n\t}\n\n\tif ( labelPosition === 'none' ) {\n\t\treturn (\n\t\t\t<div className=\"dataforms-layouts-panel__field\">\n\t\t\t\t{ renderedControl }\n\t\t\t</div>\n\t\t);\n\t}\n\n\t// Defaults to label position side.\n\treturn (\n\t\t<HStack\n\t\t\tref={ setPopoverAnchor }\n\t\t\tclassName=\"dataforms-layouts-panel__field\"\n\t\t>\n\t\t\t<div className={ labelClassName }>{ fieldLabel }</div>\n\t\t\t<div className=\"dataforms-layouts-panel__field-control\">\n\t\t\t\t{ renderedControl }\n\t\t\t</div>\n\t\t</HStack>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,16 +1,23 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports.default = void 0;
8
+ var _deepmerge = _interopRequireDefault(require("deepmerge"));
7
9
  var _components = require("@wordpress/components");
8
10
  var _i18n = require("@wordpress/i18n");
9
11
  var _element = require("@wordpress/element");
10
12
  var _dataFormLayout = require("../data-form-layout");
11
13
  var _isCombinedField = require("../is-combined-field");
12
14
  var _normalizeFormFields = require("../../normalize-form-fields");
15
+ var _summaryButton = _interopRequireDefault(require("./summary-button"));
13
16
  var _jsxRuntime = require("react/jsx-runtime");
17
+ /**
18
+ * External dependencies
19
+ */
20
+
14
21
  /**
15
22
  * WordPress dependencies
16
23
  */
@@ -27,21 +34,15 @@ function ModalContent({
27
34
  onClose
28
35
  }) {
29
36
  const [changes, setChanges] = (0, _element.useState)({});
37
+ const modalData = (0, _element.useMemo)(() => {
38
+ return (0, _deepmerge.default)(data, changes);
39
+ }, [data, changes]);
30
40
  const onApply = () => {
31
41
  onChange(changes);
32
42
  onClose();
33
43
  };
34
- const handleOnChange = value => {
35
- setChanges(prev => ({
36
- ...prev,
37
- ...value
38
- }));
39
- };
40
-
41
- // Merge original data with local changes for display
42
- const displayData = {
43
- ...data,
44
- ...changes
44
+ const handleOnChange = newValue => {
45
+ setChanges(prev => (0, _deepmerge.default)(prev, newValue));
45
46
  };
46
47
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.Modal, {
47
48
  className: "dataforms-layouts-panel__modal",
@@ -50,13 +51,13 @@ function ModalContent({
50
51
  title: fieldLabel,
51
52
  size: "medium",
52
53
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_dataFormLayout.DataFormLayout, {
53
- data: displayData,
54
+ data: modalData,
54
55
  form: form,
55
56
  onChange: handleOnChange,
56
57
  children: (FieldLayout, nestedField) => {
57
58
  var _form$fields;
58
59
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(FieldLayout, {
59
- data: displayData,
60
+ data: modalData,
60
61
  field: nestedField,
61
62
  onChange: handleOnChange,
62
63
  hideLabelFromVision: ((_form$fields = form?.fields) !== null && _form$fields !== void 0 ? _form$fields : []).length < 2
@@ -81,6 +82,7 @@ function ModalContent({
81
82
  }
82
83
  function PanelModal({
83
84
  fieldDefinition,
85
+ summaryFields,
84
86
  labelPosition,
85
87
  data,
86
88
  onChange,
@@ -97,21 +99,14 @@ function PanelModal({
97
99
  }]
98
100
  }), [field]);
99
101
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
100
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
101
- className: "dataforms-layouts-modal__field-control",
102
- size: "compact",
103
- variant: ['none', 'top'].includes(labelPosition) ? 'link' : 'tertiary',
104
- "aria-expanded": isOpen,
105
- "aria-label": (0, _i18n.sprintf)(
106
- // translators: %s: Field name.
107
- (0, _i18n._x)('Edit %s', 'field'), fieldLabel || ''),
108
- onClick: () => setIsOpen(true),
102
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_summaryButton.default, {
103
+ summaryFields: summaryFields,
104
+ data: data,
105
+ labelPosition: labelPosition,
106
+ fieldLabel: fieldLabel,
109
107
  disabled: fieldDefinition.readOnly === true,
110
- accessibleWhenDisabled: true,
111
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(fieldDefinition.render, {
112
- item: data,
113
- field: fieldDefinition
114
- })
108
+ onClick: () => setIsOpen(true),
109
+ "aria-expanded": isOpen
115
110
  }), isOpen && /*#__PURE__*/(0, _jsxRuntime.jsx)(ModalContent, {
116
111
  data: data,
117
112
  form: form,