@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,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isCombinedField = isCombinedField;
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+
11
+ function isCombinedField(field) {
12
+ return field.children !== undefined;
13
+ }
14
+ //# 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;;AAGO,SAASA,eAAeA,CAC9BC,KAAgB,EACa;EAC7B,OAASA,KAAK,CAAwBC,QAAQ,KAAKC,SAAS;AAC7D","ignoreList":[]}
@@ -4,14 +4,14 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.default = FormPanel;
7
+ exports.default = FormPanelField;
8
8
  var _components = require("@wordpress/components");
9
- var _element = require("@wordpress/element");
10
9
  var _i18n = require("@wordpress/i18n");
10
+ var _element = require("@wordpress/element");
11
11
  var _icons = require("@wordpress/icons");
12
- var _normalizeFields = require("../../normalize-fields");
13
- var _getVisibleFields = require("../get-visible-fields");
14
- var _formFieldVisibility = _interopRequireDefault(require("../../components/form-field-visibility"));
12
+ var _dataformContext = _interopRequireDefault(require("../../components/dataform-context"));
13
+ var _dataFormLayout = require("../data-form-layout");
14
+ var _isCombinedField = require("../is-combined-field");
15
15
  var _jsxRuntime = require("react/jsx-runtime");
16
16
  /**
17
17
  * WordPress dependencies
@@ -30,7 +30,7 @@ function DropdownHeader({
30
30
  spacing: 4,
31
31
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalHStack, {
32
32
  alignment: "center",
33
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalHeading, {
33
+ children: [title && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalHeading, {
34
34
  level: 2,
35
35
  size: 13,
36
36
  children: title
@@ -43,14 +43,38 @@ function DropdownHeader({
43
43
  })
44
44
  });
45
45
  }
46
- function FormField({
46
+ function PanelDropdown({
47
+ fieldDefinition,
48
+ popoverAnchor,
49
+ labelPosition = 'side',
47
50
  data,
48
- field,
49
- onChange
51
+ onChange,
52
+ field
50
53
  }) {
51
- // Use internal state instead of a ref to make sure that the component
52
- // re-renders when the popover's anchor updates.
53
- const [popoverAnchor, setPopoverAnchor] = (0, _element.useState)(null);
54
+ const fieldLabel = (0, _isCombinedField.isCombinedField)(field) ? field.label : fieldDefinition?.label;
55
+ const form = (0, _element.useMemo)(() => {
56
+ if ((0, _isCombinedField.isCombinedField)(field)) {
57
+ return {
58
+ type: 'regular',
59
+ fields: field.children.map(child => {
60
+ if (typeof child === 'string') {
61
+ return {
62
+ id: child
63
+ };
64
+ }
65
+ return child;
66
+ })
67
+ };
68
+ }
69
+ // If not explicit children return the field id itself.
70
+ return {
71
+ type: 'regular',
72
+ fields: [{
73
+ id: field.id
74
+ }]
75
+ };
76
+ }, [field]);
77
+
54
78
  // Memoize popoverProps to avoid returning a new object every time.
55
79
  const popoverProps = (0, _element.useMemo)(() => ({
56
80
  // Anchor the popover to the middle of the entire row so that it doesn't
@@ -60,75 +84,136 @@ function FormField({
60
84
  offset: 36,
61
85
  shift: true
62
86
  }), [popoverAnchor]);
63
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalHStack, {
64
- ref: setPopoverAnchor,
65
- className: "dataforms-layouts-panel__field",
66
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
67
- className: "dataforms-layouts-panel__field-label",
68
- children: field.label
69
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
70
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Dropdown, {
71
- contentClassName: "dataforms-layouts-panel__field-dropdown",
72
- popoverProps: popoverProps,
73
- focusOnMount: true,
74
- toggleProps: {
75
- size: 'compact',
76
- variant: 'tertiary',
77
- tooltipPosition: 'middle left'
78
- },
79
- renderToggle: ({
80
- isOpen,
81
- onToggle
82
- }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
83
- className: "dataforms-layouts-panel__field-control",
84
- size: "compact",
85
- variant: "tertiary",
86
- "aria-expanded": isOpen,
87
- "aria-label": (0, _i18n.sprintf)(
88
- // translators: %s: Field name.
89
- (0, _i18n._x)('Edit %s', 'field'), field.label),
90
- onClick: onToggle,
91
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(field.render, {
92
- item: data
93
- })
94
- }),
95
- renderContent: ({
96
- onClose
97
- }) => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
98
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(DropdownHeader, {
99
- title: field.label,
100
- onClose: onClose
101
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(field.Edit, {
87
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Dropdown, {
88
+ contentClassName: "dataforms-layouts-panel__field-dropdown",
89
+ popoverProps: popoverProps,
90
+ focusOnMount: true,
91
+ toggleProps: {
92
+ size: 'compact',
93
+ variant: 'tertiary',
94
+ tooltipPosition: 'middle left'
95
+ },
96
+ renderToggle: ({
97
+ isOpen,
98
+ onToggle
99
+ }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
100
+ className: "dataforms-layouts-panel__field-control",
101
+ size: "compact",
102
+ variant: ['none', 'top'].includes(labelPosition) ? 'link' : 'tertiary',
103
+ "aria-expanded": isOpen,
104
+ "aria-label": (0, _i18n.sprintf)(
105
+ // translators: %s: Field name.
106
+ (0, _i18n._x)('Edit %s', 'field'), fieldLabel),
107
+ onClick: onToggle,
108
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(fieldDefinition.render, {
109
+ item: data
110
+ })
111
+ }),
112
+ renderContent: ({
113
+ onClose
114
+ }) => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
115
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(DropdownHeader, {
116
+ title: fieldLabel,
117
+ onClose: onClose
118
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_dataFormLayout.DataFormLayout, {
119
+ data: data,
120
+ form: form,
121
+ onChange: onChange,
122
+ children: (FieldLayout, nestedField) => {
123
+ var _form$fields;
124
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(FieldLayout, {
102
125
  data: data,
103
- field: field,
126
+ field: nestedField,
104
127
  onChange: onChange,
105
- hideLabelFromVision: true
106
- }, field.id)]
107
- })
108
- })
109
- })]
128
+ hideLabelFromVision: ((_form$fields = form?.fields) !== null && _form$fields !== void 0 ? _form$fields : []).length < 2
129
+ }, nestedField.id);
130
+ }
131
+ })]
132
+ })
110
133
  });
111
134
  }
112
- function FormPanel({
135
+ function FormPanelField({
113
136
  data,
114
- fields,
115
- form,
137
+ field,
116
138
  onChange
117
139
  }) {
118
- const visibleFields = (0, _element.useMemo)(() => (0, _normalizeFields.normalizeFields)((0, _getVisibleFields.getVisibleFields)(fields, form.fields, form.combinedFields)), [fields, form.fields, form.combinedFields]);
119
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalVStack, {
120
- spacing: 2,
121
- children: visibleFields.map(field => {
122
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_formFieldVisibility.default, {
123
- data: data,
124
- field: field,
125
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(FormField, {
126
- data: data,
140
+ var _field$labelPosition;
141
+ const {
142
+ fields
143
+ } = (0, _element.useContext)(_dataformContext.default);
144
+ const fieldDefinition = fields.find(fieldDef => {
145
+ // Default to the first child if it is a combined field.
146
+ if ((0, _isCombinedField.isCombinedField)(field)) {
147
+ const children = field.children.filter(child => typeof child === 'string' || !(0, _isCombinedField.isCombinedField)(child));
148
+ const firstChildFieldId = typeof children[0] === 'string' ? children[0] : children[0].id;
149
+ return fieldDef.id === firstChildFieldId;
150
+ }
151
+ return fieldDef.id === field.id;
152
+ });
153
+ const labelPosition = (_field$labelPosition = field.labelPosition) !== null && _field$labelPosition !== void 0 ? _field$labelPosition : 'side';
154
+
155
+ // Use internal state instead of a ref to make sure that the component
156
+ // re-renders when the popover's anchor updates.
157
+ const [popoverAnchor, setPopoverAnchor] = (0, _element.useState)(null);
158
+ if (!fieldDefinition) {
159
+ return null;
160
+ }
161
+ const fieldLabel = (0, _isCombinedField.isCombinedField)(field) ? field.label : fieldDefinition?.label;
162
+ if (labelPosition === 'top') {
163
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalVStack, {
164
+ className: "dataforms-layouts-panel__field",
165
+ spacing: 0,
166
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
167
+ className: "dataforms-layouts-panel__field-label",
168
+ style: {
169
+ paddingBottom: 0
170
+ },
171
+ children: fieldLabel
172
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
173
+ className: "dataforms-layouts-panel__field-control",
174
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(PanelDropdown, {
127
175
  field: field,
128
- onChange: onChange
176
+ popoverAnchor: popoverAnchor,
177
+ fieldDefinition: fieldDefinition,
178
+ data: data,
179
+ onChange: onChange,
180
+ labelPosition: labelPosition
129
181
  })
130
- }, field.id);
131
- })
182
+ })]
183
+ });
184
+ }
185
+ if (labelPosition === 'none') {
186
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
187
+ className: "dataforms-layouts-panel__field",
188
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(PanelDropdown, {
189
+ field: field,
190
+ popoverAnchor: popoverAnchor,
191
+ fieldDefinition: fieldDefinition,
192
+ data: data,
193
+ onChange: onChange,
194
+ labelPosition: labelPosition
195
+ })
196
+ });
197
+ }
198
+
199
+ // Defaults to label position side.
200
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalHStack, {
201
+ ref: setPopoverAnchor,
202
+ className: "dataforms-layouts-panel__field",
203
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
204
+ className: "dataforms-layouts-panel__field-label",
205
+ children: fieldLabel
206
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
207
+ className: "dataforms-layouts-panel__field-control",
208
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(PanelDropdown, {
209
+ field: field,
210
+ popoverAnchor: popoverAnchor,
211
+ fieldDefinition: fieldDefinition,
212
+ data: data,
213
+ onChange: onChange,
214
+ labelPosition: labelPosition
215
+ })
216
+ })]
132
217
  });
133
218
  }
134
219
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_element","_i18n","_icons","_normalizeFields","_getVisibleFields","_formFieldVisibility","_interopRequireDefault","_jsxRuntime","DropdownHeader","title","onClose","jsx","__experimentalVStack","className","spacing","children","jsxs","__experimentalHStack","alignment","__experimentalHeading","level","size","__experimentalSpacer","Button","label","__","icon","closeSmall","onClick","FormField","data","field","onChange","popoverAnchor","setPopoverAnchor","useState","popoverProps","useMemo","anchor","placement","offset","shift","ref","Dropdown","contentClassName","focusOnMount","toggleProps","variant","tooltipPosition","renderToggle","isOpen","onToggle","sprintf","_x","render","item","renderContent","Fragment","Edit","hideLabelFromVision","id","FormPanel","fields","form","visibleFields","normalizeFields","getVisibleFields","combinedFields","map","default"],"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":["_components","require","_i18n","_element","_icons","_dataformContext","_interopRequireDefault","_dataFormLayout","_isCombinedField","_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","type","fields","map","child","id","popoverProps","anchor","placement","offset","shift","Dropdown","contentClassName","focusOnMount","toggleProps","variant","tooltipPosition","renderToggle","isOpen","onToggle","includes","sprintf","_x","render","item","renderContent","Fragment","DataFormLayout","FieldLayout","nestedField","_form$fields","hideLabelFromVision","length","FormPanelField","_field$labelPosition","useContext","DataFormContext","find","fieldDef","filter","firstChildFieldId","setPopoverAnchor","useState","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":[]}
@@ -4,12 +4,12 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.default = FormRegular;
8
- var _components = require("@wordpress/components");
7
+ exports.default = FormRegularField;
9
8
  var _element = require("@wordpress/element");
10
- var _normalizeFields = require("../../normalize-fields");
11
- var _getVisibleFields = require("../get-visible-fields");
12
- var _formFieldVisibility = _interopRequireDefault(require("../../components/form-field-visibility"));
9
+ var _components = require("@wordpress/components");
10
+ var _dataformContext = _interopRequireDefault(require("../../components/dataform-context"));
11
+ var _dataFormLayout = require("../data-form-layout");
12
+ var _isCombinedField = require("../is-combined-field");
13
13
  var _jsxRuntime = require("react/jsx-runtime");
14
14
  /**
15
15
  * WordPress dependencies
@@ -19,25 +19,91 @@ var _jsxRuntime = require("react/jsx-runtime");
19
19
  * Internal dependencies
20
20
  */
21
21
 
22
- function FormRegular({
23
- data,
24
- fields,
25
- form,
26
- onChange
22
+ function Header({
23
+ title
27
24
  }) {
28
- const visibleFields = (0, _element.useMemo)(() => (0, _normalizeFields.normalizeFields)((0, _getVisibleFields.getVisibleFields)(fields, form.fields, form.combinedFields)), [fields, form.fields, form.combinedFields]);
29
25
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalVStack, {
26
+ className: "dataforms-layouts-regular__header",
30
27
  spacing: 4,
31
- children: visibleFields.map(field => {
32
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_formFieldVisibility.default, {
28
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalHStack, {
29
+ alignment: "center",
30
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalHeading, {
31
+ level: 2,
32
+ size: 13,
33
+ children: title
34
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalSpacer, {})]
35
+ })
36
+ });
37
+ }
38
+ function FormRegularField({
39
+ data,
40
+ field,
41
+ onChange,
42
+ hideLabelFromVision
43
+ }) {
44
+ var _field$labelPosition;
45
+ const {
46
+ fields
47
+ } = (0, _element.useContext)(_dataformContext.default);
48
+ const form = (0, _element.useMemo)(() => {
49
+ if ((0, _isCombinedField.isCombinedField)(field)) {
50
+ return {
51
+ fields: field.children.map(child => {
52
+ if (typeof child === 'string') {
53
+ return {
54
+ id: child
55
+ };
56
+ }
57
+ return child;
58
+ }),
59
+ type: 'regular'
60
+ };
61
+ }
62
+ return {
63
+ type: 'regular',
64
+ fields: []
65
+ };
66
+ }, [field]);
67
+ if ((0, _isCombinedField.isCombinedField)(field)) {
68
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
69
+ children: [!hideLabelFromVision && field.label && /*#__PURE__*/(0, _jsxRuntime.jsx)(Header, {
70
+ title: field.label
71
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_dataFormLayout.DataFormLayout, {
33
72
  data: data,
34
- field: field,
35
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(field.Edit, {
73
+ form: form,
74
+ onChange: onChange
75
+ })]
76
+ });
77
+ }
78
+ const labelPosition = (_field$labelPosition = field.labelPosition) !== null && _field$labelPosition !== void 0 ? _field$labelPosition : 'top';
79
+ const fieldDefinition = fields.find(fieldDef => fieldDef.id === field.id);
80
+ if (!fieldDefinition) {
81
+ return null;
82
+ }
83
+ if (labelPosition === 'side') {
84
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalHStack, {
85
+ className: "dataforms-layouts-regular__field",
86
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
87
+ className: "dataforms-layouts-regular__field-label",
88
+ children: fieldDefinition.label
89
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
90
+ className: "dataforms-layouts-regular__field-control",
91
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(fieldDefinition.Edit, {
36
92
  data: data,
37
- field: field,
38
- onChange: onChange
39
- })
40
- }, field.id);
93
+ field: fieldDefinition,
94
+ onChange: onChange,
95
+ hideLabelFromVision: true
96
+ }, fieldDefinition.id)
97
+ })]
98
+ });
99
+ }
100
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
101
+ className: "dataforms-layouts-regular__field",
102
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(fieldDefinition.Edit, {
103
+ data: data,
104
+ field: fieldDefinition,
105
+ onChange: onChange,
106
+ hideLabelFromVision: labelPosition === 'none' ? true : hideLabelFromVision
41
107
  })
42
108
  });
43
109
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_element","_normalizeFields","_getVisibleFields","_formFieldVisibility","_interopRequireDefault","_jsxRuntime","FormRegular","data","fields","form","onChange","visibleFields","useMemo","normalizeFields","getVisibleFields","combinedFields","jsx","__experimentalVStack","spacing","children","map","field","default","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":";;;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAKA,IAAAE,gBAAA,GAAAF,OAAA;AACA,IAAAG,iBAAA,GAAAH,OAAA;AAEA,IAAAI,oBAAA,GAAAC,sBAAA,CAAAL,OAAA;AAAyE,IAAAM,WAAA,GAAAN,OAAA;AAZzE;AACA;AACA;;AAIA;AACA;AACA;;AAMe,SAASO,WAAWA,CAAU;EAC5CC,IAAI;EACJC,MAAM;EACNC,IAAI;EACJC;AACsB,CAAC,EAAG;EAC1B,MAAMC,aAAa,GAAG,IAAAC,gBAAO,EAC5B,MACC,IAAAC,gCAAe,EACd,IAAAC,kCAAgB,EACfN,MAAM,EACNC,IAAI,CAACD,MAAM,EACXC,IAAI,CAACM,cACN,CACD,CAAC,EACF,CAAEP,MAAM,EAAEC,IAAI,CAACD,MAAM,EAAEC,IAAI,CAACM,cAAc,CAC3C,CAAC;EAED,oBACC,IAAAV,WAAA,CAAAW,GAAA,EAAClB,WAAA,CAAAmB,oBAAM;IAACC,OAAO,EAAG,CAAG;IAAAC,QAAA,EAClBR,aAAa,CAACS,GAAG,CAAIC,KAAK,IAAM;MACjC,oBACC,IAAAhB,WAAA,CAAAW,GAAA,EAACb,oBAAA,CAAAmB,OAAmB;QAEnBf,IAAI,EAAGA,IAAM;QACbc,KAAK,EAAGA,KAAO;QAAAF,QAAA,eAEf,IAAAd,WAAA,CAAAW,GAAA,EAACK,KAAK,CAACE,IAAI;UACVhB,IAAI,EAAGA,IAAM;UACbc,KAAK,EAAGA,KAAO;UACfX,QAAQ,EAAGA;QAAU,CACrB;MAAC,GARIW,KAAK,CAACG,EASQ,CAAC;IAExB,CAAE;EAAC,CACI,CAAC;AAEX","ignoreList":[]}
1
+ {"version":3,"names":["_element","require","_components","_dataformContext","_interopRequireDefault","_dataFormLayout","_isCombinedField","_jsxRuntime","Header","title","jsx","__experimentalVStack","className","spacing","children","jsxs","__experimentalHStack","alignment","__experimentalHeading","level","size","__experimentalSpacer","FormRegularField","data","field","onChange","hideLabelFromVision","_field$labelPosition","fields","useContext","DataFormContext","form","useMemo","isCombinedField","map","child","id","type","Fragment","label","DataFormLayout","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":[]}
@@ -12,6 +12,7 @@ var _dataviewsItemActions = _interopRequireDefault(require("../../components/dat
12
12
  var _dataviewsSelectionCheckbox = _interopRequireDefault(require("../../components/dataviews-selection-checkbox"));
13
13
  var _dataviewsBulkActions = require("../../components/dataviews-bulk-actions");
14
14
  var _getClickableItemProps = _interopRequireDefault(require("../utils/get-clickable-item-props"));
15
+ var _previewSizePicker = require("./preview-size-picker");
15
16
  var _jsxRuntime = require("react/jsx-runtime");
16
17
  /**
17
18
  * External dependencies
@@ -78,11 +79,9 @@ function GridItem({
78
79
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalHStack, {
79
80
  justify: "space-between",
80
81
  className: "dataviews-view-grid__title-actions",
81
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalHStack, {
82
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
83
- ...clickablePrimaryItemProps,
84
- children: renderedPrimaryField
85
- })
82
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
83
+ ...clickablePrimaryItemProps,
84
+ children: renderedPrimaryField
86
85
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_dataviewsItemActions.default, {
87
86
  item: item,
88
87
  actions: actions,
@@ -144,8 +143,7 @@ function ViewGrid({
144
143
  onClickItem,
145
144
  isItemClickable,
146
145
  selection,
147
- view,
148
- density
146
+ view
149
147
  }) {
150
148
  const mediaField = fields.find(field => field.id === view.layout?.mediaField);
151
149
  const primaryField = fields.find(field => field.id === view.layout?.primaryField);
@@ -167,8 +165,10 @@ function ViewGrid({
167
165
  badgeFields: []
168
166
  });
169
167
  const hasData = !!data?.length;
170
- const gridStyle = density ? {
171
- gridTemplateColumns: `repeat(${density}, minmax(0, 1fr))`
168
+ const updatedPreviewSize = (0, _previewSizePicker.useUpdatedPreviewSizeOnViewportChange)();
169
+ const usedPreviewSize = updatedPreviewSize || view.layout?.previewSize;
170
+ const gridStyle = usedPreviewSize ? {
171
+ gridTemplateColumns: `repeat(${usedPreviewSize}, minmax(0, 1fr))`
172
172
  } : {};
173
173
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
174
174
  children: [hasData && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalGrid, {