@wordpress/dataviews 4.8.0 → 4.9.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 (189) hide show
  1. package/CHANGELOG.md +7 -2
  2. package/README.md +206 -17
  3. package/build/components/dataform/index.js +20 -8
  4. package/build/components/dataform/index.js.map +1 -1
  5. package/build/components/dataform-context/index.js +33 -0
  6. package/build/components/dataform-context/index.js.map +1 -0
  7. package/build/components/dataviews/index.js +3 -7
  8. package/build/components/dataviews/index.js.map +1 -1
  9. package/build/components/dataviews-context/index.js +1 -2
  10. package/build/components/dataviews-context/index.js.map +1 -1
  11. package/build/components/dataviews-filters/index.js +49 -31
  12. package/build/components/dataviews-filters/index.js.map +1 -1
  13. package/build/components/dataviews-item-actions/index.js +46 -20
  14. package/build/components/dataviews-item-actions/index.js.map +1 -1
  15. package/build/components/dataviews-layout/index.js +1 -3
  16. package/build/components/dataviews-layout/index.js.map +1 -1
  17. package/build/components/dataviews-view-config/index.js +4 -15
  18. package/build/components/dataviews-view-config/index.js.map +1 -1
  19. package/build/dataforms-layouts/data-form-layout.js +59 -0
  20. package/build/dataforms-layouts/data-form-layout.js.map +1 -0
  21. package/build/dataforms-layouts/index.js +4 -4
  22. package/build/dataforms-layouts/index.js.map +1 -1
  23. package/build/dataforms-layouts/is-combined-field.js +14 -0
  24. package/build/dataforms-layouts/is-combined-field.js.map +1 -0
  25. package/build/dataforms-layouts/panel/index.js +157 -72
  26. package/build/dataforms-layouts/panel/index.js.map +1 -1
  27. package/build/dataforms-layouts/regular/index.js +85 -19
  28. package/build/dataforms-layouts/regular/index.js.map +1 -1
  29. package/build/dataviews-layouts/grid/index.js +9 -9
  30. package/build/dataviews-layouts/grid/index.js.map +1 -1
  31. package/build/dataviews-layouts/grid/{density-picker.js → preview-size-picker.js} +40 -24
  32. package/build/dataviews-layouts/grid/preview-size-picker.js.map +1 -0
  33. package/build/dataviews-layouts/index.js +6 -2
  34. package/build/dataviews-layouts/index.js.map +1 -1
  35. package/build/dataviews-layouts/list/index.js +3 -2
  36. package/build/dataviews-layouts/list/index.js.map +1 -1
  37. package/build/dataviews-layouts/table/density-picker.js +51 -0
  38. package/build/dataviews-layouts/table/density-picker.js.map +1 -0
  39. package/build/dataviews-layouts/table/index.js +4 -1
  40. package/build/dataviews-layouts/table/index.js.map +1 -1
  41. package/build/normalize-fields.js +0 -21
  42. package/build/normalize-fields.js.map +1 -1
  43. package/build/normalize-form-fields.js +36 -0
  44. package/build/normalize-form-fields.js.map +1 -0
  45. package/build/types.js.map +1 -1
  46. package/build/validation.js.map +1 -1
  47. package/build-module/components/dataform/index.js +20 -8
  48. package/build-module/components/dataform/index.js.map +1 -1
  49. package/build-module/components/dataform-context/index.js +25 -0
  50. package/build-module/components/dataform-context/index.js.map +1 -0
  51. package/build-module/components/dataviews/index.js +4 -8
  52. package/build-module/components/dataviews/index.js.map +1 -1
  53. package/build-module/components/dataviews-context/index.js +1 -2
  54. package/build-module/components/dataviews-context/index.js.map +1 -1
  55. package/build-module/components/dataviews-filters/index.js +50 -32
  56. package/build-module/components/dataviews-filters/index.js.map +1 -1
  57. package/build-module/components/dataviews-item-actions/index.js +46 -20
  58. package/build-module/components/dataviews-item-actions/index.js.map +1 -1
  59. package/build-module/components/dataviews-layout/index.js +1 -3
  60. package/build-module/components/dataviews-layout/index.js.map +1 -1
  61. package/build-module/components/dataviews-view-config/index.js +5 -16
  62. package/build-module/components/dataviews-view-config/index.js.map +1 -1
  63. package/build-module/dataforms-layouts/data-form-layout.js +52 -0
  64. package/build-module/dataforms-layouts/data-form-layout.js.map +1 -0
  65. package/build-module/dataforms-layouts/index.js +7 -7
  66. package/build-module/dataforms-layouts/index.js.map +1 -1
  67. package/build-module/dataforms-layouts/is-combined-field.js +8 -0
  68. package/build-module/dataforms-layouts/is-combined-field.js.map +1 -0
  69. package/build-module/dataforms-layouts/panel/index.js +157 -71
  70. package/build-module/dataforms-layouts/panel/index.js.map +1 -1
  71. package/build-module/dataforms-layouts/regular/index.js +87 -20
  72. package/build-module/dataforms-layouts/regular/index.js.map +1 -1
  73. package/build-module/dataviews-layouts/grid/index.js +9 -9
  74. package/build-module/dataviews-layouts/grid/index.js.map +1 -1
  75. package/build-module/dataviews-layouts/grid/{density-picker.js → preview-size-picker.js} +38 -24
  76. package/build-module/dataviews-layouts/grid/preview-size-picker.js.map +1 -0
  77. package/build-module/dataviews-layouts/index.js +6 -2
  78. package/build-module/dataviews-layouts/index.js.map +1 -1
  79. package/build-module/dataviews-layouts/list/index.js +3 -2
  80. package/build-module/dataviews-layouts/list/index.js.map +1 -1
  81. package/build-module/dataviews-layouts/table/density-picker.js +43 -0
  82. package/build-module/dataviews-layouts/table/density-picker.js.map +1 -0
  83. package/build-module/dataviews-layouts/table/index.js +4 -1
  84. package/build-module/dataviews-layouts/table/index.js.map +1 -1
  85. package/build-module/normalize-fields.js +0 -20
  86. package/build-module/normalize-fields.js.map +1 -1
  87. package/build-module/normalize-form-fields.js +30 -0
  88. package/build-module/normalize-form-fields.js.map +1 -0
  89. package/build-module/types.js.map +1 -1
  90. package/build-module/validation.js.map +1 -1
  91. package/build-style/style-rtl.css +54 -13
  92. package/build-style/style.css +54 -13
  93. package/build-types/components/dataform/index.d.ts +1 -1
  94. package/build-types/components/dataform/index.d.ts.map +1 -1
  95. package/build-types/components/dataform/stories/index.story.d.ts +18 -7
  96. package/build-types/components/dataform/stories/index.story.d.ts.map +1 -1
  97. package/build-types/components/dataform-context/index.d.ts +13 -0
  98. package/build-types/components/dataform-context/index.d.ts.map +1 -0
  99. package/build-types/components/dataviews/index.d.ts.map +1 -1
  100. package/build-types/components/dataviews/stories/fixtures.d.ts.map +1 -1
  101. package/build-types/components/dataviews/stories/index.story.d.ts.map +1 -1
  102. package/build-types/components/dataviews-context/index.d.ts +0 -1
  103. package/build-types/components/dataviews-context/index.d.ts.map +1 -1
  104. package/build-types/components/dataviews-filters/index.d.ts +1 -1
  105. package/build-types/components/dataviews-filters/index.d.ts.map +1 -1
  106. package/build-types/components/dataviews-item-actions/index.d.ts.map +1 -1
  107. package/build-types/components/dataviews-layout/index.d.ts.map +1 -1
  108. package/build-types/components/dataviews-view-config/index.d.ts +1 -3
  109. package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
  110. package/build-types/dataforms-layouts/data-form-layout.d.ts +16 -0
  111. package/build-types/dataforms-layouts/data-form-layout.d.ts.map +1 -0
  112. package/build-types/dataforms-layouts/index.d.ts +3 -3
  113. package/build-types/dataforms-layouts/index.d.ts.map +1 -1
  114. package/build-types/dataforms-layouts/is-combined-field.d.ts +6 -0
  115. package/build-types/dataforms-layouts/is-combined-field.d.ts.map +1 -0
  116. package/build-types/dataforms-layouts/panel/index.d.ts +5 -2
  117. package/build-types/dataforms-layouts/panel/index.d.ts.map +1 -1
  118. package/build-types/dataforms-layouts/regular/index.d.ts +5 -2
  119. package/build-types/dataforms-layouts/regular/index.d.ts.map +1 -1
  120. package/build-types/dataviews-layouts/grid/index.d.ts +1 -1
  121. package/build-types/dataviews-layouts/grid/index.d.ts.map +1 -1
  122. package/build-types/dataviews-layouts/grid/preview-size-picker.d.ts +3 -0
  123. package/build-types/dataviews-layouts/grid/preview-size-picker.d.ts.map +1 -0
  124. package/build-types/dataviews-layouts/index.d.ts +5 -0
  125. package/build-types/dataviews-layouts/index.d.ts.map +1 -1
  126. package/build-types/dataviews-layouts/list/index.d.ts.map +1 -1
  127. package/build-types/dataviews-layouts/table/density-picker.d.ts +2 -0
  128. package/build-types/dataviews-layouts/table/density-picker.d.ts.map +1 -0
  129. package/build-types/dataviews-layouts/table/index.d.ts.map +1 -1
  130. package/build-types/normalize-fields.d.ts +1 -9
  131. package/build-types/normalize-fields.d.ts.map +1 -1
  132. package/build-types/normalize-form-fields.d.ts +12 -0
  133. package/build-types/normalize-form-fields.d.ts.map +1 -0
  134. package/build-types/types.d.ts +31 -22
  135. package/build-types/types.d.ts.map +1 -1
  136. package/build-types/validation.d.ts +1 -1
  137. package/build-types/validation.d.ts.map +1 -1
  138. package/package.json +2 -2
  139. package/src/components/dataform/index.tsx +22 -5
  140. package/src/components/dataform/stories/index.story.tsx +88 -49
  141. package/src/components/dataform-context/index.tsx +30 -0
  142. package/src/components/dataviews/index.tsx +2 -6
  143. package/src/components/dataviews/stories/fixtures.tsx +1 -0
  144. package/src/components/dataviews/stories/index.story.tsx +16 -3
  145. package/src/components/dataviews-context/index.ts +0 -2
  146. package/src/components/dataviews-filters/index.tsx +73 -38
  147. package/src/components/dataviews-item-actions/index.tsx +73 -25
  148. package/src/components/dataviews-layout/index.tsx +0 -2
  149. package/src/components/dataviews-view-config/index.tsx +7 -23
  150. package/src/dataforms-layouts/data-form-layout.tsx +87 -0
  151. package/src/dataforms-layouts/index.tsx +7 -7
  152. package/src/dataforms-layouts/is-combined-field.ts +10 -0
  153. package/src/dataforms-layouts/panel/index.tsx +192 -101
  154. package/src/dataforms-layouts/panel/style.scss +4 -0
  155. package/src/dataforms-layouts/regular/index.tsx +101 -37
  156. package/src/dataforms-layouts/regular/style.scss +30 -0
  157. package/src/dataviews-layouts/grid/index.tsx +10 -8
  158. package/src/dataviews-layouts/grid/{density-picker.tsx → preview-size-picker.tsx} +39 -26
  159. package/src/dataviews-layouts/grid/style.scss +3 -1
  160. package/src/dataviews-layouts/index.ts +4 -0
  161. package/src/dataviews-layouts/list/index.tsx +31 -27
  162. package/src/dataviews-layouts/table/density-picker.tsx +57 -0
  163. package/src/dataviews-layouts/table/index.tsx +12 -2
  164. package/src/dataviews-layouts/table/style.scss +32 -0
  165. package/src/normalize-fields.ts +1 -33
  166. package/src/normalize-form-fields.ts +42 -0
  167. package/src/style.scss +1 -1
  168. package/src/types.ts +36 -21
  169. package/src/validation.ts +1 -1
  170. package/tsconfig.tsbuildinfo +1 -1
  171. package/build/components/dataform-combined-edit/index.js +0 -73
  172. package/build/components/dataform-combined-edit/index.js.map +0 -1
  173. package/build/dataforms-layouts/get-visible-fields.js +0 -21
  174. package/build/dataforms-layouts/get-visible-fields.js.map +0 -1
  175. package/build/dataviews-layouts/grid/density-picker.js.map +0 -1
  176. package/build-module/components/dataform-combined-edit/index.js +0 -66
  177. package/build-module/components/dataform-combined-edit/index.js.map +0 -1
  178. package/build-module/dataforms-layouts/get-visible-fields.js +0 -14
  179. package/build-module/dataforms-layouts/get-visible-fields.js.map +0 -1
  180. package/build-module/dataviews-layouts/grid/density-picker.js.map +0 -1
  181. package/build-types/components/dataform-combined-edit/index.d.ts +0 -7
  182. package/build-types/components/dataform-combined-edit/index.d.ts.map +0 -1
  183. package/build-types/dataforms-layouts/get-visible-fields.d.ts +0 -3
  184. package/build-types/dataforms-layouts/get-visible-fields.d.ts.map +0 -1
  185. package/build-types/dataviews-layouts/grid/density-picker.d.ts +0 -5
  186. package/build-types/dataviews-layouts/grid/density-picker.d.ts.map +0 -1
  187. package/src/components/dataform-combined-edit/index.tsx +0 -69
  188. package/src/components/dataform-combined-edit/style.scss +0 -16
  189. package/src/dataforms-layouts/get-visible-fields.ts +0 -29
@@ -0,0 +1,52 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __experimentalVStack as VStack } from '@wordpress/components';
5
+ import { useContext, useMemo } from '@wordpress/element';
6
+
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+
11
+ import { getFormFieldLayout } from './index';
12
+ import DataFormContext from '../components/dataform-context';
13
+ import { isCombinedField } from './is-combined-field';
14
+ import normalizeFormFields from '../normalize-form-fields';
15
+ import { jsx as _jsx } from "react/jsx-runtime";
16
+ export function DataFormLayout({
17
+ data,
18
+ form,
19
+ onChange,
20
+ children
21
+ }) {
22
+ const {
23
+ fields: fieldDefinitions
24
+ } = useContext(DataFormContext);
25
+ function getFieldDefinition(field) {
26
+ const fieldId = typeof field === 'string' ? field : field.id;
27
+ return fieldDefinitions.find(fieldDefinition => fieldDefinition.id === fieldId);
28
+ }
29
+ const normalizedFormFields = useMemo(() => normalizeFormFields(form), [form]);
30
+ return /*#__PURE__*/_jsx(VStack, {
31
+ spacing: 2,
32
+ children: normalizedFormFields.map(formField => {
33
+ const FieldLayout = getFormFieldLayout(formField.layout)?.component;
34
+ if (!FieldLayout) {
35
+ return null;
36
+ }
37
+ const fieldDefinition = !isCombinedField(formField) ? getFieldDefinition(formField) : undefined;
38
+ if (fieldDefinition && fieldDefinition.isVisible && !fieldDefinition.isVisible(data)) {
39
+ return null;
40
+ }
41
+ if (children) {
42
+ return children(FieldLayout, formField);
43
+ }
44
+ return /*#__PURE__*/_jsx(FieldLayout, {
45
+ data: data,
46
+ field: formField,
47
+ onChange: onChange
48
+ }, formField.id);
49
+ })
50
+ });
51
+ }
52
+ //# sourceMappingURL=data-form-layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__experimentalVStack","VStack","useContext","useMemo","getFormFieldLayout","DataFormContext","isCombinedField","normalizeFormFields","jsx","_jsx","DataFormLayout","data","form","onChange","children","fields","fieldDefinitions","getFieldDefinition","field","fieldId","id","find","fieldDefinition","normalizedFormFields","spacing","map","formField","FieldLayout","layout","component","undefined","isVisible"],"sources":["@wordpress/dataviews/src/dataforms-layouts/data-form-layout.tsx"],"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 { Form, FormField, SimpleFormField } from '../types';\nimport { getFormFieldLayout } from './index';\nimport DataFormContext from '../components/dataform-context';\nimport { isCombinedField } from './is-combined-field';\nimport normalizeFormFields from '../normalize-form-fields';\n\nexport function DataFormLayout< Item >( {\n\tdata,\n\tform,\n\tonChange,\n\tchildren,\n}: {\n\tdata: Item;\n\tform: Form;\n\tonChange: ( value: any ) => void;\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} ) => React.JSX.Element | null,\n\t\tfield: FormField\n\t) => React.JSX.Element;\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\treturn (\n\t\t<VStack spacing={ 2 }>\n\t\t\t{ normalizedFormFields.map( ( formField ) => {\n\t\t\t\tconst FieldLayout = getFormFieldLayout( formField.layout )\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( FieldLayout, formField );\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/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</VStack>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,oBAAoB,IAAIC,MAAM,QAAQ,uBAAuB;AACtE,SAASC,UAAU,EAAEC,OAAO,QAAQ,oBAAoB;;AAExD;AACA;AACA;;AAEA,SAASC,kBAAkB,QAAQ,SAAS;AAC5C,OAAOC,eAAe,MAAM,gCAAgC;AAC5D,SAASC,eAAe,QAAQ,qBAAqB;AACrD,OAAOC,mBAAmB,MAAM,0BAA0B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE3D,OAAO,SAASC,cAAcA,CAAU;EACvCC,IAAI;EACJC,IAAI;EACJC,QAAQ;EACRC;AAcD,CAAC,EAAG;EACH,MAAM;IAAEC,MAAM,EAAEC;EAAiB,CAAC,GAAGd,UAAU,CAAEG,eAAgB,CAAC;EAElE,SAASY,kBAAkBA,CAAEC,KAA+B,EAAG;IAC9D,MAAMC,OAAO,GAAG,OAAOD,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAGA,KAAK,CAACE,EAAE;IAE5D,OAAOJ,gBAAgB,CAACK,IAAI,CACzBC,eAAe,IAAMA,eAAe,CAACF,EAAE,KAAKD,OAC/C,CAAC;EACF;EAEA,MAAMI,oBAAoB,GAAGpB,OAAO,CACnC,MAAMI,mBAAmB,CAAEK,IAAK,CAAC,EACjC,CAAEA,IAAI,CACP,CAAC;EAED,oBACCH,IAAA,CAACR,MAAM;IAACuB,OAAO,EAAG,CAAG;IAAAV,QAAA,EAClBS,oBAAoB,CAACE,GAAG,CAAIC,SAAS,IAAM;MAC5C,MAAMC,WAAW,GAAGvB,kBAAkB,CAAEsB,SAAS,CAACE,MAAO,CAAC,EACvDC,SAAS;MAEZ,IAAK,CAAEF,WAAW,EAAG;QACpB,OAAO,IAAI;MACZ;MAEA,MAAML,eAAe,GAAG,CAAEhB,eAAe,CAAEoB,SAAU,CAAC,GACnDT,kBAAkB,CAAES,SAAU,CAAC,GAC/BI,SAAS;MAEZ,IACCR,eAAe,IACfA,eAAe,CAACS,SAAS,IACzB,CAAET,eAAe,CAACS,SAAS,CAAEpB,IAAK,CAAC,EAClC;QACD,OAAO,IAAI;MACZ;MAEA,IAAKG,QAAQ,EAAG;QACf,OAAOA,QAAQ,CAAEa,WAAW,EAAED,SAAU,CAAC;MAC1C;MAEA,oBACCjB,IAAA,CAACkB,WAAW;QAEXhB,IAAI,EAAGA,IAAM;QACbO,KAAK,EAAGQ,SAAW;QACnBb,QAAQ,EAAGA;MAAU,GAHfa,SAAS,CAACN,EAIhB,CAAC;IAEJ,CAAE;EAAC,CACI,CAAC;AAEX","ignoreList":[]}
@@ -1,16 +1,16 @@
1
1
  /**
2
2
  * Internal dependencies
3
3
  */
4
- import FormRegular from './regular';
5
- import FormPanel from './panel';
6
- const FORM_LAYOUTS = [{
4
+ import FormRegularField from './regular';
5
+ import FormPanelField from './panel';
6
+ const FORM_FIELD_LAYOUTS = [{
7
7
  type: 'regular',
8
- component: FormRegular
8
+ component: FormRegularField
9
9
  }, {
10
10
  type: 'panel',
11
- component: FormPanel
11
+ component: FormPanelField
12
12
  }];
13
- export function getFormLayout(type) {
14
- return FORM_LAYOUTS.find(layout => layout.type === type);
13
+ export function getFormFieldLayout(type) {
14
+ return FORM_FIELD_LAYOUTS.find(layout => layout.type === type);
15
15
  }
16
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["FormRegular","FormPanel","FORM_LAYOUTS","type","component","getFormLayout","find","layout"],"sources":["@wordpress/dataviews/src/dataforms-layouts/index.tsx"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport FormRegular from './regular';\nimport FormPanel from './panel';\n\nconst FORM_LAYOUTS = [\n\t{\n\t\ttype: 'regular',\n\t\tcomponent: FormRegular,\n\t},\n\t{\n\t\ttype: 'panel',\n\t\tcomponent: FormPanel,\n\t},\n];\n\nexport function getFormLayout( type: string ) {\n\treturn FORM_LAYOUTS.find( ( layout ) => layout.type === type );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,WAAW,MAAM,WAAW;AACnC,OAAOC,SAAS,MAAM,SAAS;AAE/B,MAAMC,YAAY,GAAG,CACpB;EACCC,IAAI,EAAE,SAAS;EACfC,SAAS,EAAEJ;AACZ,CAAC,EACD;EACCG,IAAI,EAAE,OAAO;EACbC,SAAS,EAAEH;AACZ,CAAC,CACD;AAED,OAAO,SAASI,aAAaA,CAAEF,IAAY,EAAG;EAC7C,OAAOD,YAAY,CAACI,IAAI,CAAIC,MAAM,IAAMA,MAAM,CAACJ,IAAI,KAAKA,IAAK,CAAC;AAC/D","ignoreList":[]}
1
+ {"version":3,"names":["FormRegularField","FormPanelField","FORM_FIELD_LAYOUTS","type","component","getFormFieldLayout","find","layout"],"sources":["@wordpress/dataviews/src/dataforms-layouts/index.tsx"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport FormRegularField from './regular';\nimport FormPanelField from './panel';\n\nconst FORM_FIELD_LAYOUTS = [\n\t{\n\t\ttype: 'regular',\n\t\tcomponent: FormRegularField,\n\t},\n\t{\n\t\ttype: 'panel',\n\t\tcomponent: FormPanelField,\n\t},\n];\n\nexport function getFormFieldLayout( type: string ) {\n\treturn FORM_FIELD_LAYOUTS.find( ( layout ) => layout.type === type );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,gBAAgB,MAAM,WAAW;AACxC,OAAOC,cAAc,MAAM,SAAS;AAEpC,MAAMC,kBAAkB,GAAG,CAC1B;EACCC,IAAI,EAAE,SAAS;EACfC,SAAS,EAAEJ;AACZ,CAAC,EACD;EACCG,IAAI,EAAE,OAAO;EACbC,SAAS,EAAEH;AACZ,CAAC,CACD;AAED,OAAO,SAASI,kBAAkBA,CAAEF,IAAY,EAAG;EAClD,OAAOD,kBAAkB,CAACI,IAAI,CAAIC,MAAM,IAAMA,MAAM,CAACJ,IAAI,KAAKA,IAAK,CAAC;AACrE","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+
5
+ export function isCombinedField(field) {
6
+ return field.children !== undefined;
7
+ }
8
+ //# sourceMappingURL=is-combined-field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isCombinedField","field","children","undefined"],"sources":["@wordpress/dataviews/src/dataforms-layouts/is-combined-field.ts"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport type { FormField, CombinedFormField } from '../types';\n\nexport function isCombinedField(\n\tfield: FormField\n): field is CombinedFormField {\n\treturn ( field as CombinedFormField ).children !== undefined;\n}\n"],"mappings":"AAAA;AACA;AACA;;AAGA,OAAO,SAASA,eAAeA,CAC9BC,KAAgB,EACa;EAC7B,OAASA,KAAK,CAAwBC,QAAQ,KAAKC,SAAS;AAC7D","ignoreList":[]}
@@ -2,16 +2,17 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { __experimentalVStack as VStack, __experimentalHStack as HStack, __experimentalHeading as Heading, __experimentalSpacer as Spacer, Dropdown, Button } from '@wordpress/components';
5
- import { useState, useMemo } from '@wordpress/element';
6
5
  import { sprintf, __, _x } from '@wordpress/i18n';
6
+ import { useState, useMemo, useContext } from '@wordpress/element';
7
7
  import { closeSmall } from '@wordpress/icons';
8
8
 
9
9
  /**
10
10
  * Internal dependencies
11
11
  */
12
- import { normalizeFields } from '../../normalize-fields';
13
- import { getVisibleFields } from '../get-visible-fields';
14
- import FormFieldVisibility from '../../components/form-field-visibility';
12
+
13
+ import DataFormContext from '../../components/dataform-context';
14
+ import { DataFormLayout } from '../data-form-layout';
15
+ import { isCombinedField } from '../is-combined-field';
15
16
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
16
17
  function DropdownHeader({
17
18
  title,
@@ -22,7 +23,7 @@ function DropdownHeader({
22
23
  spacing: 4,
23
24
  children: /*#__PURE__*/_jsxs(HStack, {
24
25
  alignment: "center",
25
- children: [/*#__PURE__*/_jsx(Heading, {
26
+ children: [title && /*#__PURE__*/_jsx(Heading, {
26
27
  level: 2,
27
28
  size: 13,
28
29
  children: title
@@ -35,14 +36,38 @@ function DropdownHeader({
35
36
  })
36
37
  });
37
38
  }
38
- function FormField({
39
+ function PanelDropdown({
40
+ fieldDefinition,
41
+ popoverAnchor,
42
+ labelPosition = 'side',
39
43
  data,
40
- field,
41
- onChange
44
+ onChange,
45
+ field
42
46
  }) {
43
- // Use internal state instead of a ref to make sure that the component
44
- // re-renders when the popover's anchor updates.
45
- const [popoverAnchor, setPopoverAnchor] = useState(null);
47
+ const fieldLabel = isCombinedField(field) ? field.label : fieldDefinition?.label;
48
+ const form = useMemo(() => {
49
+ if (isCombinedField(field)) {
50
+ return {
51
+ type: 'regular',
52
+ fields: field.children.map(child => {
53
+ if (typeof child === 'string') {
54
+ return {
55
+ id: child
56
+ };
57
+ }
58
+ return child;
59
+ })
60
+ };
61
+ }
62
+ // If not explicit children return the field id itself.
63
+ return {
64
+ type: 'regular',
65
+ fields: [{
66
+ id: field.id
67
+ }]
68
+ };
69
+ }, [field]);
70
+
46
71
  // Memoize popoverProps to avoid returning a new object every time.
47
72
  const popoverProps = useMemo(() => ({
48
73
  // Anchor the popover to the middle of the entire row so that it doesn't
@@ -52,75 +77,136 @@ function FormField({
52
77
  offset: 36,
53
78
  shift: true
54
79
  }), [popoverAnchor]);
55
- return /*#__PURE__*/_jsxs(HStack, {
56
- ref: setPopoverAnchor,
57
- className: "dataforms-layouts-panel__field",
58
- children: [/*#__PURE__*/_jsx("div", {
59
- className: "dataforms-layouts-panel__field-label",
60
- children: field.label
61
- }), /*#__PURE__*/_jsx("div", {
62
- children: /*#__PURE__*/_jsx(Dropdown, {
63
- contentClassName: "dataforms-layouts-panel__field-dropdown",
64
- popoverProps: popoverProps,
65
- focusOnMount: true,
66
- toggleProps: {
67
- size: 'compact',
68
- variant: 'tertiary',
69
- tooltipPosition: 'middle left'
70
- },
71
- renderToggle: ({
72
- isOpen,
73
- onToggle
74
- }) => /*#__PURE__*/_jsx(Button, {
75
- className: "dataforms-layouts-panel__field-control",
76
- size: "compact",
77
- variant: "tertiary",
78
- "aria-expanded": isOpen,
79
- "aria-label": sprintf(
80
- // translators: %s: Field name.
81
- _x('Edit %s', 'field'), field.label),
82
- onClick: onToggle,
83
- children: /*#__PURE__*/_jsx(field.render, {
84
- item: data
85
- })
86
- }),
87
- renderContent: ({
88
- onClose
89
- }) => /*#__PURE__*/_jsxs(_Fragment, {
90
- children: [/*#__PURE__*/_jsx(DropdownHeader, {
91
- title: field.label,
92
- onClose: onClose
93
- }), /*#__PURE__*/_jsx(field.Edit, {
80
+ return /*#__PURE__*/_jsx(Dropdown, {
81
+ contentClassName: "dataforms-layouts-panel__field-dropdown",
82
+ popoverProps: popoverProps,
83
+ focusOnMount: true,
84
+ toggleProps: {
85
+ size: 'compact',
86
+ variant: 'tertiary',
87
+ tooltipPosition: 'middle left'
88
+ },
89
+ renderToggle: ({
90
+ isOpen,
91
+ onToggle
92
+ }) => /*#__PURE__*/_jsx(Button, {
93
+ className: "dataforms-layouts-panel__field-control",
94
+ size: "compact",
95
+ variant: ['none', 'top'].includes(labelPosition) ? 'link' : 'tertiary',
96
+ "aria-expanded": isOpen,
97
+ "aria-label": sprintf(
98
+ // translators: %s: Field name.
99
+ _x('Edit %s', 'field'), fieldLabel),
100
+ onClick: onToggle,
101
+ children: /*#__PURE__*/_jsx(fieldDefinition.render, {
102
+ item: data
103
+ })
104
+ }),
105
+ renderContent: ({
106
+ onClose
107
+ }) => /*#__PURE__*/_jsxs(_Fragment, {
108
+ children: [/*#__PURE__*/_jsx(DropdownHeader, {
109
+ title: fieldLabel,
110
+ onClose: onClose
111
+ }), /*#__PURE__*/_jsx(DataFormLayout, {
112
+ data: data,
113
+ form: form,
114
+ onChange: onChange,
115
+ children: (FieldLayout, nestedField) => {
116
+ var _form$fields;
117
+ return /*#__PURE__*/_jsx(FieldLayout, {
94
118
  data: data,
95
- field: field,
119
+ field: nestedField,
96
120
  onChange: onChange,
97
- hideLabelFromVision: true
98
- }, field.id)]
99
- })
100
- })
101
- })]
121
+ hideLabelFromVision: ((_form$fields = form?.fields) !== null && _form$fields !== void 0 ? _form$fields : []).length < 2
122
+ }, nestedField.id);
123
+ }
124
+ })]
125
+ })
102
126
  });
103
127
  }
104
- export default function FormPanel({
128
+ export default function FormPanelField({
105
129
  data,
106
- fields,
107
- form,
130
+ field,
108
131
  onChange
109
132
  }) {
110
- const visibleFields = useMemo(() => normalizeFields(getVisibleFields(fields, form.fields, form.combinedFields)), [fields, form.fields, form.combinedFields]);
111
- return /*#__PURE__*/_jsx(VStack, {
112
- spacing: 2,
113
- children: visibleFields.map(field => {
114
- return /*#__PURE__*/_jsx(FormFieldVisibility, {
115
- data: data,
116
- field: field,
117
- children: /*#__PURE__*/_jsx(FormField, {
118
- data: data,
133
+ var _field$labelPosition;
134
+ const {
135
+ fields
136
+ } = useContext(DataFormContext);
137
+ const fieldDefinition = fields.find(fieldDef => {
138
+ // Default to the first child if it is a combined field.
139
+ if (isCombinedField(field)) {
140
+ const children = field.children.filter(child => typeof child === 'string' || !isCombinedField(child));
141
+ const firstChildFieldId = typeof children[0] === 'string' ? children[0] : children[0].id;
142
+ return fieldDef.id === firstChildFieldId;
143
+ }
144
+ return fieldDef.id === field.id;
145
+ });
146
+ const labelPosition = (_field$labelPosition = field.labelPosition) !== null && _field$labelPosition !== void 0 ? _field$labelPosition : 'side';
147
+
148
+ // Use internal state instead of a ref to make sure that the component
149
+ // re-renders when the popover's anchor updates.
150
+ const [popoverAnchor, setPopoverAnchor] = useState(null);
151
+ if (!fieldDefinition) {
152
+ return null;
153
+ }
154
+ const fieldLabel = isCombinedField(field) ? field.label : fieldDefinition?.label;
155
+ if (labelPosition === 'top') {
156
+ return /*#__PURE__*/_jsxs(VStack, {
157
+ className: "dataforms-layouts-panel__field",
158
+ spacing: 0,
159
+ children: [/*#__PURE__*/_jsx("div", {
160
+ className: "dataforms-layouts-panel__field-label",
161
+ style: {
162
+ paddingBottom: 0
163
+ },
164
+ children: fieldLabel
165
+ }), /*#__PURE__*/_jsx("div", {
166
+ className: "dataforms-layouts-panel__field-control",
167
+ children: /*#__PURE__*/_jsx(PanelDropdown, {
119
168
  field: field,
120
- onChange: onChange
169
+ popoverAnchor: popoverAnchor,
170
+ fieldDefinition: fieldDefinition,
171
+ data: data,
172
+ onChange: onChange,
173
+ labelPosition: labelPosition
121
174
  })
122
- }, field.id);
123
- })
175
+ })]
176
+ });
177
+ }
178
+ if (labelPosition === 'none') {
179
+ return /*#__PURE__*/_jsx("div", {
180
+ className: "dataforms-layouts-panel__field",
181
+ children: /*#__PURE__*/_jsx(PanelDropdown, {
182
+ field: field,
183
+ popoverAnchor: popoverAnchor,
184
+ fieldDefinition: fieldDefinition,
185
+ data: data,
186
+ onChange: onChange,
187
+ labelPosition: labelPosition
188
+ })
189
+ });
190
+ }
191
+
192
+ // Defaults to label position side.
193
+ return /*#__PURE__*/_jsxs(HStack, {
194
+ ref: setPopoverAnchor,
195
+ className: "dataforms-layouts-panel__field",
196
+ children: [/*#__PURE__*/_jsx("div", {
197
+ className: "dataforms-layouts-panel__field-label",
198
+ children: fieldLabel
199
+ }), /*#__PURE__*/_jsx("div", {
200
+ className: "dataforms-layouts-panel__field-control",
201
+ children: /*#__PURE__*/_jsx(PanelDropdown, {
202
+ field: field,
203
+ popoverAnchor: popoverAnchor,
204
+ fieldDefinition: fieldDefinition,
205
+ data: data,
206
+ onChange: onChange,
207
+ labelPosition: labelPosition
208
+ })
209
+ })]
124
210
  });
125
211
  }
126
212
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["__experimentalVStack","VStack","__experimentalHStack","HStack","__experimentalHeading","Heading","__experimentalSpacer","Spacer","Dropdown","Button","useState","useMemo","sprintf","__","_x","closeSmall","normalizeFields","getVisibleFields","FormFieldVisibility","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","DropdownHeader","title","onClose","className","spacing","children","alignment","level","size","label","icon","onClick","FormField","data","field","onChange","popoverAnchor","setPopoverAnchor","popoverProps","anchor","placement","offset","shift","ref","contentClassName","focusOnMount","toggleProps","variant","tooltipPosition","renderToggle","isOpen","onToggle","render","item","renderContent","Edit","hideLabelFromVision","id","FormPanel","fields","form","visibleFields","combinedFields","map"],"sources":["@wordpress/dataviews/src/dataforms-layouts/panel/index.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 { useState, useMemo } from '@wordpress/element';\nimport { sprintf, __, _x } from '@wordpress/i18n';\nimport { closeSmall } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { normalizeFields } from '../../normalize-fields';\nimport { getVisibleFields } from '../get-visible-fields';\nimport type { DataFormProps, NormalizedField } from '../../types';\nimport FormFieldVisibility from '../../components/form-field-visibility';\n\ninterface FormFieldProps< Item > {\n\tdata: Item;\n\tfield: NormalizedField< Item >;\n\tonChange: ( value: any ) => void;\n}\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<Heading level={ 2 } size={ 13 }>\n\t\t\t\t\t{ title }\n\t\t\t\t</Heading>\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 FormField< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n}: FormFieldProps< Item > ) {\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\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<HStack\n\t\t\tref={ setPopoverAnchor }\n\t\t\tclassName=\"dataforms-layouts-panel__field\"\n\t\t>\n\t\t\t<div className=\"dataforms-layouts-panel__field-label\">\n\t\t\t\t{ field.label }\n\t\t\t</div>\n\t\t\t<div>\n\t\t\t\t<Dropdown\n\t\t\t\t\tcontentClassName=\"dataforms-layouts-panel__field-dropdown\"\n\t\t\t\t\tpopoverProps={ popoverProps }\n\t\t\t\t\tfocusOnMount\n\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\tsize: 'compact',\n\t\t\t\t\t\tvariant: 'tertiary',\n\t\t\t\t\t\ttooltipPosition: 'middle left',\n\t\t\t\t\t} }\n\t\t\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tclassName=\"dataforms-layouts-panel__field-control\"\n\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t\t\taria-label={ sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: Field name.\n\t\t\t\t\t\t\t\t_x( 'Edit %s', 'field' ),\n\t\t\t\t\t\t\t\tfield.label\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<field.render item={ data } />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t) }\n\t\t\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<DropdownHeader\n\t\t\t\t\t\t\t\ttitle={ field.label }\n\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<field.Edit\n\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\t\tfield={ field }\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/>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</HStack>\n\t);\n}\n\nexport default function FormPanel< Item >( {\n\tdata,\n\tfields,\n\tform,\n\tonChange,\n}: DataFormProps< Item > ) {\n\tconst visibleFields = useMemo(\n\t\t() =>\n\t\t\tnormalizeFields(\n\t\t\t\tgetVisibleFields< Item >(\n\t\t\t\t\tfields,\n\t\t\t\t\tform.fields,\n\t\t\t\t\tform.combinedFields\n\t\t\t\t)\n\t\t\t),\n\t\t[ fields, form.fields, form.combinedFields ]\n\t);\n\n\treturn (\n\t\t<VStack spacing={ 2 }>\n\t\t\t{ visibleFields.map( ( field ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<FormFieldVisibility\n\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t>\n\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FormFieldVisibility>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</VStack>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__experimentalVStack","VStack","__experimentalHStack","HStack","__experimentalHeading","Heading","__experimentalSpacer","Spacer","Dropdown","Button","sprintf","__","_x","useState","useMemo","useContext","closeSmall","DataFormContext","DataFormLayout","isCombinedField","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","DropdownHeader","title","onClose","className","spacing","children","alignment","level","size","label","icon","onClick","PanelDropdown","fieldDefinition","popoverAnchor","labelPosition","data","onChange","field","fieldLabel","form","type","fields","map","child","id","popoverProps","anchor","placement","offset","shift","contentClassName","focusOnMount","toggleProps","variant","tooltipPosition","renderToggle","isOpen","onToggle","includes","render","item","renderContent","FieldLayout","nestedField","_form$fields","hideLabelFromVision","length","FormPanelField","_field$labelPosition","find","fieldDef","filter","firstChildFieldId","setPopoverAnchor","style","paddingBottom","ref"],"sources":["@wordpress/dataviews/src/dataforms-layouts/panel/index.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 { useState, useMemo, useContext } from '@wordpress/element';\nimport { closeSmall } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tForm,\n\tFormField,\n\tFieldLayoutProps,\n\tNormalizedField,\n\tSimpleFormField,\n} from '../../types';\nimport DataFormContext from '../../components/dataform-context';\nimport { DataFormLayout } from '../data-form-layout';\nimport { isCombinedField } from '../is-combined-field';\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\tconst form = useMemo( () => {\n\t\tif ( isCombinedField( field ) ) {\n\t\t\treturn {\n\t\t\t\ttype: 'regular' as const,\n\t\t\t\tfields: field.children.map( ( child ) => {\n\t\t\t\t\tif ( typeof child === 'string' ) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tid: child,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn child;\n\t\t\t\t} ),\n\t\t\t};\n\t\t}\n\t\t// If not explicit children return the field id itself.\n\t\treturn {\n\t\t\ttype: 'regular' as const,\n\t\t\tfields: [ { id: field.id } ],\n\t\t};\n\t}, [ field ] );\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>\n\t\t\t\t\t<fieldDefinition.render item={ data } />\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 as 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 function FormPanelField< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n}: FieldLayoutProps< Item > ) {\n\tconst { fields } = useContext( DataFormContext );\n\tconst fieldDefinition = fields.find( ( fieldDef ) => {\n\t\t// Default to the first child if it is a combined field.\n\t\tif ( isCombinedField( field ) ) {\n\t\t\tconst children = 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\t\t\tconst firstChildFieldId =\n\t\t\t\ttypeof children[ 0 ] === 'string'\n\t\t\t\t\t? children[ 0 ]\n\t\t\t\t\t: children[ 0 ].id;\n\t\t\treturn fieldDef.id === firstChildFieldId;\n\t\t}\n\t\treturn fieldDef.id === field.id;\n\t} );\n\tconst labelPosition = field.labelPosition ?? 'side';\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 fieldLabel = isCombinedField( field )\n\t\t? field.label\n\t\t: fieldDefinition?.label;\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=\"dataforms-layouts-panel__field-label\"\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<PanelDropdown\n\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\tpopoverAnchor={ popoverAnchor }\n\t\t\t\t\t\tfieldDefinition={ fieldDefinition }\n\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tlabelPosition={ labelPosition }\n\t\t\t\t\t/>\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<PanelDropdown\n\t\t\t\t\tfield={ field }\n\t\t\t\t\tpopoverAnchor={ popoverAnchor }\n\t\t\t\t\tfieldDefinition={ fieldDefinition }\n\t\t\t\t\tdata={ data }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tlabelPosition={ labelPosition }\n\t\t\t\t/>\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=\"dataforms-layouts-panel__field-label\">\n\t\t\t\t{ fieldLabel }\n\t\t\t</div>\n\t\t\t<div className=\"dataforms-layouts-panel__field-control\">\n\t\t\t\t<PanelDropdown\n\t\t\t\t\tfield={ field }\n\t\t\t\t\tpopoverAnchor={ popoverAnchor }\n\t\t\t\t\tfieldDefinition={ fieldDefinition }\n\t\t\t\t\tdata={ data }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tlabelPosition={ labelPosition }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</HStack>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,35 +1,102 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { __experimentalVStack as VStack } from '@wordpress/components';
5
- import { useMemo } from '@wordpress/element';
4
+ import { useContext, useMemo } from '@wordpress/element';
5
+ import { __experimentalHStack as HStack, __experimentalVStack as VStack, __experimentalHeading as Heading, __experimentalSpacer as Spacer } from '@wordpress/components';
6
6
 
7
7
  /**
8
8
  * Internal dependencies
9
9
  */
10
- import { normalizeFields } from '../../normalize-fields';
11
- import { getVisibleFields } from '../get-visible-fields';
12
- import FormFieldVisibility from '../../components/form-field-visibility';
13
- import { jsx as _jsx } from "react/jsx-runtime";
14
- export default function FormRegular({
15
- data,
16
- fields,
17
- form,
18
- onChange
10
+
11
+ import DataFormContext from '../../components/dataform-context';
12
+ import { DataFormLayout } from '../data-form-layout';
13
+ import { isCombinedField } from '../is-combined-field';
14
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
15
+ function Header({
16
+ title
19
17
  }) {
20
- const visibleFields = useMemo(() => normalizeFields(getVisibleFields(fields, form.fields, form.combinedFields)), [fields, form.fields, form.combinedFields]);
21
18
  return /*#__PURE__*/_jsx(VStack, {
19
+ className: "dataforms-layouts-regular__header",
22
20
  spacing: 4,
23
- children: visibleFields.map(field => {
24
- return /*#__PURE__*/_jsx(FormFieldVisibility, {
21
+ children: /*#__PURE__*/_jsxs(HStack, {
22
+ alignment: "center",
23
+ children: [/*#__PURE__*/_jsx(Heading, {
24
+ level: 2,
25
+ size: 13,
26
+ children: title
27
+ }), /*#__PURE__*/_jsx(Spacer, {})]
28
+ })
29
+ });
30
+ }
31
+ export default function FormRegularField({
32
+ data,
33
+ field,
34
+ onChange,
35
+ hideLabelFromVision
36
+ }) {
37
+ var _field$labelPosition;
38
+ const {
39
+ fields
40
+ } = useContext(DataFormContext);
41
+ const form = useMemo(() => {
42
+ if (isCombinedField(field)) {
43
+ return {
44
+ fields: field.children.map(child => {
45
+ if (typeof child === 'string') {
46
+ return {
47
+ id: child
48
+ };
49
+ }
50
+ return child;
51
+ }),
52
+ type: 'regular'
53
+ };
54
+ }
55
+ return {
56
+ type: 'regular',
57
+ fields: []
58
+ };
59
+ }, [field]);
60
+ if (isCombinedField(field)) {
61
+ return /*#__PURE__*/_jsxs(_Fragment, {
62
+ children: [!hideLabelFromVision && field.label && /*#__PURE__*/_jsx(Header, {
63
+ title: field.label
64
+ }), /*#__PURE__*/_jsx(DataFormLayout, {
25
65
  data: data,
26
- field: field,
27
- children: /*#__PURE__*/_jsx(field.Edit, {
66
+ form: form,
67
+ onChange: onChange
68
+ })]
69
+ });
70
+ }
71
+ const labelPosition = (_field$labelPosition = field.labelPosition) !== null && _field$labelPosition !== void 0 ? _field$labelPosition : 'top';
72
+ const fieldDefinition = fields.find(fieldDef => fieldDef.id === field.id);
73
+ if (!fieldDefinition) {
74
+ return null;
75
+ }
76
+ if (labelPosition === 'side') {
77
+ return /*#__PURE__*/_jsxs(HStack, {
78
+ className: "dataforms-layouts-regular__field",
79
+ children: [/*#__PURE__*/_jsx("div", {
80
+ className: "dataforms-layouts-regular__field-label",
81
+ children: fieldDefinition.label
82
+ }), /*#__PURE__*/_jsx("div", {
83
+ className: "dataforms-layouts-regular__field-control",
84
+ children: /*#__PURE__*/_jsx(fieldDefinition.Edit, {
28
85
  data: data,
29
- field: field,
30
- onChange: onChange
31
- })
32
- }, field.id);
86
+ field: fieldDefinition,
87
+ onChange: onChange,
88
+ hideLabelFromVision: true
89
+ }, fieldDefinition.id)
90
+ })]
91
+ });
92
+ }
93
+ return /*#__PURE__*/_jsx("div", {
94
+ className: "dataforms-layouts-regular__field",
95
+ children: /*#__PURE__*/_jsx(fieldDefinition.Edit, {
96
+ data: data,
97
+ field: fieldDefinition,
98
+ onChange: onChange,
99
+ hideLabelFromVision: labelPosition === 'none' ? true : hideLabelFromVision
33
100
  })
34
101
  });
35
102
  }
@@ -1 +1 @@
1
- {"version":3,"names":["__experimentalVStack","VStack","useMemo","normalizeFields","getVisibleFields","FormFieldVisibility","jsx","_jsx","FormRegular","data","fields","form","onChange","visibleFields","combinedFields","spacing","children","map","field","Edit","id"],"sources":["@wordpress/dataviews/src/dataforms-layouts/regular/index.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __experimentalVStack as VStack } from '@wordpress/components';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { normalizeFields } from '../../normalize-fields';\nimport { getVisibleFields } from '../get-visible-fields';\nimport type { DataFormProps } from '../../types';\nimport FormFieldVisibility from '../../components/form-field-visibility';\n\nexport default function FormRegular< Item >( {\n\tdata,\n\tfields,\n\tform,\n\tonChange,\n}: DataFormProps< Item > ) {\n\tconst visibleFields = useMemo(\n\t\t() =>\n\t\t\tnormalizeFields(\n\t\t\t\tgetVisibleFields< Item >(\n\t\t\t\t\tfields,\n\t\t\t\t\tform.fields,\n\t\t\t\t\tform.combinedFields\n\t\t\t\t)\n\t\t\t),\n\t\t[ fields, form.fields, form.combinedFields ]\n\t);\n\n\treturn (\n\t\t<VStack spacing={ 4 }>\n\t\t\t{ visibleFields.map( ( field ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<FormFieldVisibility\n\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t>\n\t\t\t\t\t\t<field.Edit\n\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FormFieldVisibility>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</VStack>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,oBAAoB,IAAIC,MAAM,QAAQ,uBAAuB;AACtE,SAASC,OAAO,QAAQ,oBAAoB;;AAE5C;AACA;AACA;AACA,SAASC,eAAe,QAAQ,wBAAwB;AACxD,SAASC,gBAAgB,QAAQ,uBAAuB;AAExD,OAAOC,mBAAmB,MAAM,wCAAwC;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEzE,eAAe,SAASC,WAAWA,CAAU;EAC5CC,IAAI;EACJC,MAAM;EACNC,IAAI;EACJC;AACsB,CAAC,EAAG;EAC1B,MAAMC,aAAa,GAAGX,OAAO,CAC5B,MACCC,eAAe,CACdC,gBAAgB,CACfM,MAAM,EACNC,IAAI,CAACD,MAAM,EACXC,IAAI,CAACG,cACN,CACD,CAAC,EACF,CAAEJ,MAAM,EAAEC,IAAI,CAACD,MAAM,EAAEC,IAAI,CAACG,cAAc,CAC3C,CAAC;EAED,oBACCP,IAAA,CAACN,MAAM;IAACc,OAAO,EAAG,CAAG;IAAAC,QAAA,EAClBH,aAAa,CAACI,GAAG,CAAIC,KAAK,IAAM;MACjC,oBACCX,IAAA,CAACF,mBAAmB;QAEnBI,IAAI,EAAGA,IAAM;QACbS,KAAK,EAAGA,KAAO;QAAAF,QAAA,eAEfT,IAAA,CAACW,KAAK,CAACC,IAAI;UACVV,IAAI,EAAGA,IAAM;UACbS,KAAK,EAAGA,KAAO;UACfN,QAAQ,EAAGA;QAAU,CACrB;MAAC,GARIM,KAAK,CAACE,EASQ,CAAC;IAExB,CAAE;EAAC,CACI,CAAC;AAEX","ignoreList":[]}
1
+ {"version":3,"names":["useContext","useMemo","__experimentalHStack","HStack","__experimentalVStack","VStack","__experimentalHeading","Heading","__experimentalSpacer","Spacer","DataFormContext","DataFormLayout","isCombinedField","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","Header","title","className","spacing","children","alignment","level","size","FormRegularField","data","field","onChange","hideLabelFromVision","_field$labelPosition","fields","form","map","child","id","type","label","labelPosition","fieldDefinition","find","fieldDef","Edit"],"sources":["@wordpress/dataviews/src/dataforms-layouts/regular/index.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useContext, useMemo } from '@wordpress/element';\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalHeading as Heading,\n\t__experimentalSpacer as Spacer,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport type { Form, FieldLayoutProps } from '../../types';\nimport DataFormContext from '../../components/dataform-context';\nimport { DataFormLayout } from '../data-form-layout';\nimport { isCombinedField } from '../is-combined-field';\n\nfunction Header( { title }: { title: string } ) {\n\treturn (\n\t\t<VStack className=\"dataforms-layouts-regular__header\" spacing={ 4 }>\n\t\t\t<HStack alignment=\"center\">\n\t\t\t\t<Heading level={ 2 } size={ 13 }>\n\t\t\t\t\t{ title }\n\t\t\t\t</Heading>\n\t\t\t\t<Spacer />\n\t\t\t</HStack>\n\t\t</VStack>\n\t);\n}\n\nexport default function FormRegularField< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n}: FieldLayoutProps< Item > ) {\n\tconst { fields } = useContext( DataFormContext );\n\n\tconst form = useMemo( () => {\n\t\tif ( isCombinedField( field ) ) {\n\t\t\treturn {\n\t\t\t\tfields: field.children.map( ( child ) => {\n\t\t\t\t\tif ( typeof child === 'string' ) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tid: child,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn child;\n\t\t\t\t} ),\n\t\t\t\ttype: 'regular' as const,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\ttype: 'regular' as const,\n\t\t\tfields: [],\n\t\t};\n\t}, [ field ] );\n\n\tif ( isCombinedField( field ) ) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ ! hideLabelFromVision && field.label && (\n\t\t\t\t\t<Header title={ field.label } />\n\t\t\t\t) }\n\t\t\t\t<DataFormLayout\n\t\t\t\t\tdata={ data }\n\t\t\t\t\tform={ form as Form }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t/>\n\t\t\t</>\n\t\t);\n\t}\n\n\tconst labelPosition = field.labelPosition ?? 'top';\n\tconst fieldDefinition = fields.find(\n\t\t( fieldDef ) => fieldDef.id === field.id\n\t);\n\n\tif ( ! fieldDefinition ) {\n\t\treturn null;\n\t}\n\tif ( labelPosition === 'side' ) {\n\t\treturn (\n\t\t\t<HStack className=\"dataforms-layouts-regular__field\">\n\t\t\t\t<div className=\"dataforms-layouts-regular__field-label\">\n\t\t\t\t\t{ fieldDefinition.label }\n\t\t\t\t</div>\n\t\t\t\t<div className=\"dataforms-layouts-regular__field-control\">\n\t\t\t\t\t<fieldDefinition.Edit\n\t\t\t\t\t\tkey={ fieldDefinition.id }\n\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\tfield={ fieldDefinition }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</HStack>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className=\"dataforms-layouts-regular__field\">\n\t\t\t<fieldDefinition.Edit\n\t\t\t\tdata={ data }\n\t\t\t\tfield={ fieldDefinition }\n\t\t\t\tonChange={ onChange }\n\t\t\t\thideLabelFromVision={\n\t\t\t\t\tlabelPosition === 'none' ? true : hideLabelFromVision\n\t\t\t\t}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}