@wordpress/dataviews 9.0.1-next.6f42e1382.0 → 9.1.1-next.f56bd8138.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. package/CHANGELOG.md +22 -2
  2. package/README.md +107 -11
  3. package/build/components/dataviews-filters/input-widget.js +48 -4
  4. package/build/components/dataviews-filters/input-widget.js.map +1 -1
  5. package/build/components/dataviews-view-config/index.js +22 -3
  6. package/build/components/dataviews-view-config/index.js.map +1 -1
  7. package/build/dataform-controls/array.js +117 -29
  8. package/build/dataform-controls/array.js.map +1 -1
  9. package/build/dataform-controls/checkbox.js +31 -20
  10. package/build/dataform-controls/checkbox.js.map +1 -1
  11. package/build/dataform-controls/color.js +29 -24
  12. package/build/dataform-controls/color.js.map +1 -1
  13. package/build/dataform-controls/date.js +32 -24
  14. package/build/dataform-controls/date.js.map +1 -1
  15. package/build/dataform-controls/datetime.js +133 -19
  16. package/build/dataform-controls/datetime.js.map +1 -1
  17. package/build/dataform-controls/email.js +7 -1
  18. package/build/dataform-controls/email.js.map +1 -1
  19. package/build/dataform-controls/index.js +23 -0
  20. package/build/dataform-controls/index.js.map +1 -1
  21. package/build/dataform-controls/integer.js +47 -34
  22. package/build/dataform-controls/integer.js.map +1 -1
  23. package/build/dataform-controls/radio.js +42 -9
  24. package/build/dataform-controls/radio.js.map +1 -1
  25. package/build/dataform-controls/relative-date-control.js +6 -10
  26. package/build/dataform-controls/relative-date-control.js.map +1 -1
  27. package/build/dataform-controls/select.js +41 -10
  28. package/build/dataform-controls/select.js.map +1 -1
  29. package/build/dataform-controls/telephone.js +7 -1
  30. package/build/dataform-controls/telephone.js.map +1 -1
  31. package/build/dataform-controls/text.js +14 -2
  32. package/build/dataform-controls/text.js.map +1 -1
  33. package/build/dataform-controls/textarea.js +33 -20
  34. package/build/dataform-controls/textarea.js.map +1 -1
  35. package/build/dataform-controls/toggle-group.js +36 -6
  36. package/build/dataform-controls/toggle-group.js.map +1 -1
  37. package/build/dataform-controls/toggle.js +33 -22
  38. package/build/dataform-controls/toggle.js.map +1 -1
  39. package/build/dataform-controls/url.js +7 -1
  40. package/build/dataform-controls/url.js.map +1 -1
  41. package/build/dataform-controls/utils/validated-input.js +34 -32
  42. package/build/dataform-controls/utils/validated-input.js.map +1 -1
  43. package/build/dataforms-layouts/panel/dropdown.js +10 -14
  44. package/build/dataforms-layouts/panel/dropdown.js.map +1 -1
  45. package/build/dataforms-layouts/panel/index.js +24 -11
  46. package/build/dataforms-layouts/panel/index.js.map +1 -1
  47. package/build/dataforms-layouts/panel/modal.js +22 -27
  48. package/build/dataforms-layouts/panel/modal.js.map +1 -1
  49. package/build/dataforms-layouts/panel/summary-button.js +67 -0
  50. package/build/dataforms-layouts/panel/summary-button.js.map +1 -0
  51. package/build/field-types/array.js +0 -6
  52. package/build/field-types/array.js.map +1 -1
  53. package/build/index.js +7 -0
  54. package/build/index.js.map +1 -1
  55. package/build/normalize-fields.js +17 -0
  56. package/build/normalize-fields.js.map +1 -1
  57. package/build/types.js.map +1 -1
  58. package/build/validation.js +18 -1
  59. package/build/validation.js.map +1 -1
  60. package/build-module/components/dataviews-filters/input-widget.js +48 -4
  61. package/build-module/components/dataviews-filters/input-widget.js.map +1 -1
  62. package/build-module/components/dataviews-view-config/index.js +22 -3
  63. package/build-module/components/dataviews-view-config/index.js.map +1 -1
  64. package/build-module/dataform-controls/array.js +120 -32
  65. package/build-module/dataform-controls/array.js.map +1 -1
  66. package/build-module/dataform-controls/checkbox.js +31 -21
  67. package/build-module/dataform-controls/checkbox.js.map +1 -1
  68. package/build-module/dataform-controls/color.js +28 -24
  69. package/build-module/dataform-controls/color.js.map +1 -1
  70. package/build-module/dataform-controls/date.js +32 -24
  71. package/build-module/dataform-controls/date.js.map +1 -1
  72. package/build-module/dataform-controls/datetime.js +135 -21
  73. package/build-module/dataform-controls/datetime.js.map +1 -1
  74. package/build-module/dataform-controls/email.js +7 -1
  75. package/build-module/dataform-controls/email.js.map +1 -1
  76. package/build-module/dataform-controls/index.js +23 -0
  77. package/build-module/dataform-controls/index.js.map +1 -1
  78. package/build-module/dataform-controls/integer.js +46 -34
  79. package/build-module/dataform-controls/integer.js.map +1 -1
  80. package/build-module/dataform-controls/radio.js +44 -11
  81. package/build-module/dataform-controls/radio.js.map +1 -1
  82. package/build-module/dataform-controls/relative-date-control.js +6 -10
  83. package/build-module/dataform-controls/relative-date-control.js.map +1 -1
  84. package/build-module/dataform-controls/select.js +43 -12
  85. package/build-module/dataform-controls/select.js.map +1 -1
  86. package/build-module/dataform-controls/telephone.js +7 -1
  87. package/build-module/dataform-controls/telephone.js.map +1 -1
  88. package/build-module/dataform-controls/text.js +14 -2
  89. package/build-module/dataform-controls/text.js.map +1 -1
  90. package/build-module/dataform-controls/textarea.js +32 -20
  91. package/build-module/dataform-controls/textarea.js.map +1 -1
  92. package/build-module/dataform-controls/toggle-group.js +38 -8
  93. package/build-module/dataform-controls/toggle-group.js.map +1 -1
  94. package/build-module/dataform-controls/toggle.js +33 -23
  95. package/build-module/dataform-controls/toggle.js.map +1 -1
  96. package/build-module/dataform-controls/url.js +7 -1
  97. package/build-module/dataform-controls/url.js.map +1 -1
  98. package/build-module/dataform-controls/utils/validated-input.js +34 -33
  99. package/build-module/dataform-controls/utils/validated-input.js.map +1 -1
  100. package/build-module/dataforms-layouts/panel/dropdown.js +10 -15
  101. package/build-module/dataforms-layouts/panel/dropdown.js.map +1 -1
  102. package/build-module/dataforms-layouts/panel/index.js +24 -11
  103. package/build-module/dataforms-layouts/panel/index.js.map +1 -1
  104. package/build-module/dataforms-layouts/panel/modal.js +22 -28
  105. package/build-module/dataforms-layouts/panel/modal.js.map +1 -1
  106. package/build-module/dataforms-layouts/panel/summary-button.js +60 -0
  107. package/build-module/dataforms-layouts/panel/summary-button.js.map +1 -0
  108. package/build-module/field-types/array.js +0 -6
  109. package/build-module/field-types/array.js.map +1 -1
  110. package/build-module/index.js +1 -0
  111. package/build-module/index.js.map +1 -1
  112. package/build-module/normalize-fields.js +15 -0
  113. package/build-module/normalize-fields.js.map +1 -1
  114. package/build-module/types.js.map +1 -1
  115. package/build-module/validation.js +18 -1
  116. package/build-module/validation.js.map +1 -1
  117. package/build-types/components/dataform/stories/index.story.d.ts +3 -0
  118. package/build-types/components/dataform/stories/index.story.d.ts.map +1 -1
  119. package/build-types/components/dataviews/stories/fixtures.d.ts +4 -2
  120. package/build-types/components/dataviews/stories/fixtures.d.ts.map +1 -1
  121. package/build-types/components/dataviews-filters/input-widget.d.ts.map +1 -1
  122. package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
  123. package/build-types/dataform-controls/array.d.ts.map +1 -1
  124. package/build-types/dataform-controls/checkbox.d.ts.map +1 -1
  125. package/build-types/dataform-controls/color.d.ts.map +1 -1
  126. package/build-types/dataform-controls/date.d.ts.map +1 -1
  127. package/build-types/dataform-controls/datetime.d.ts.map +1 -1
  128. package/build-types/dataform-controls/email.d.ts.map +1 -1
  129. package/build-types/dataform-controls/index.d.ts +1 -1
  130. package/build-types/dataform-controls/index.d.ts.map +1 -1
  131. package/build-types/dataform-controls/integer.d.ts.map +1 -1
  132. package/build-types/dataform-controls/radio.d.ts.map +1 -1
  133. package/build-types/dataform-controls/relative-date-control.d.ts +6 -5
  134. package/build-types/dataform-controls/relative-date-control.d.ts.map +1 -1
  135. package/build-types/dataform-controls/select.d.ts.map +1 -1
  136. package/build-types/dataform-controls/telephone.d.ts.map +1 -1
  137. package/build-types/dataform-controls/text.d.ts +1 -1
  138. package/build-types/dataform-controls/text.d.ts.map +1 -1
  139. package/build-types/dataform-controls/textarea.d.ts +1 -1
  140. package/build-types/dataform-controls/textarea.d.ts.map +1 -1
  141. package/build-types/dataform-controls/toggle-group.d.ts.map +1 -1
  142. package/build-types/dataform-controls/toggle.d.ts.map +1 -1
  143. package/build-types/dataform-controls/url.d.ts.map +1 -1
  144. package/build-types/dataform-controls/utils/validated-input.d.ts +4 -4
  145. package/build-types/dataform-controls/utils/validated-input.d.ts.map +1 -1
  146. package/build-types/dataforms-layouts/panel/dropdown.d.ts +2 -1
  147. package/build-types/dataforms-layouts/panel/dropdown.d.ts.map +1 -1
  148. package/build-types/dataforms-layouts/panel/index.d.ts.map +1 -1
  149. package/build-types/dataforms-layouts/panel/modal.d.ts +2 -1
  150. package/build-types/dataforms-layouts/panel/modal.d.ts.map +1 -1
  151. package/build-types/dataforms-layouts/panel/summary-button.d.ts +15 -0
  152. package/build-types/dataforms-layouts/panel/summary-button.d.ts.map +1 -0
  153. package/build-types/field-types/array.d.ts.map +1 -1
  154. package/build-types/field-types/stories/index.story.d.ts.map +1 -1
  155. package/build-types/index.d.ts +1 -0
  156. package/build-types/index.d.ts.map +1 -1
  157. package/build-types/normalize-fields.d.ts +3 -0
  158. package/build-types/normalize-fields.d.ts.map +1 -1
  159. package/build-types/types.d.ts +68 -4
  160. package/build-types/types.d.ts.map +1 -1
  161. package/build-types/validation.d.ts.map +1 -1
  162. package/build-wp/index.js +2009 -1489
  163. package/package.json +16 -15
  164. package/src/components/dataform/stories/index.story.tsx +509 -8
  165. package/src/components/dataviews/stories/fixtures.tsx +99 -41
  166. package/src/components/dataviews/stories/index.story.tsx +1 -1
  167. package/src/components/dataviews-filters/input-widget.tsx +44 -5
  168. package/src/components/dataviews-picker/stories/index.story.tsx +1 -1
  169. package/src/components/dataviews-view-config/index.tsx +18 -3
  170. package/src/dataform-controls/array.tsx +139 -44
  171. package/src/dataform-controls/checkbox.tsx +41 -24
  172. package/src/dataform-controls/color.tsx +33 -24
  173. package/src/dataform-controls/date.tsx +47 -21
  174. package/src/dataform-controls/datetime.tsx +171 -23
  175. package/src/dataform-controls/email.tsx +9 -1
  176. package/src/dataform-controls/index.tsx +26 -0
  177. package/src/dataform-controls/integer.tsx +82 -49
  178. package/src/dataform-controls/radio.tsx +53 -11
  179. package/src/dataform-controls/relative-date-control.tsx +11 -10
  180. package/src/dataform-controls/select.tsx +53 -10
  181. package/src/dataform-controls/telephone.tsx +9 -1
  182. package/src/dataform-controls/text.tsx +18 -1
  183. package/src/dataform-controls/textarea.tsx +38 -24
  184. package/src/dataform-controls/toggle-group.tsx +50 -10
  185. package/src/dataform-controls/toggle.tsx +41 -24
  186. package/src/dataform-controls/url.tsx +9 -1
  187. package/src/dataform-controls/utils/validated-input.tsx +50 -50
  188. package/src/dataforms-layouts/panel/dropdown.tsx +12 -23
  189. package/src/dataforms-layouts/panel/index.tsx +39 -16
  190. package/src/dataforms-layouts/panel/modal.tsx +24 -30
  191. package/src/dataforms-layouts/panel/summary-button.tsx +92 -0
  192. package/src/field-types/array.tsx +0 -8
  193. package/src/field-types/stories/index.story.tsx +89 -1
  194. package/src/index.ts +1 -0
  195. package/src/normalize-fields.ts +18 -0
  196. package/src/test/filter-and-sort-data-view.js +148 -138
  197. package/src/test/normalize-fields.ts +114 -0
  198. package/src/test/validation.ts +192 -0
  199. package/src/types.ts +75 -4
  200. package/src/validation.ts +30 -0
  201. package/tsconfig.tsbuildinfo +1 -1
@@ -22,6 +22,7 @@ import toggleGroup from './toggle-group';
22
22
  import array from './array';
23
23
  import color from './color';
24
24
  import password from './password';
25
+ import { jsx as _jsx } from "react/jsx-runtime";
25
26
  const FORM_CONTROLS = {
26
27
  array,
27
28
  checkbox,
@@ -40,6 +41,22 @@ const FORM_CONTROLS = {
40
41
  textarea,
41
42
  toggleGroup
42
43
  };
44
+ function isEditConfig(value) {
45
+ return value && typeof value === 'object' && typeof value.control === 'string';
46
+ }
47
+ function createConfiguredControl(config) {
48
+ const {
49
+ control,
50
+ ...controlConfig
51
+ } = config;
52
+ const BaseControlType = getControlByType(control);
53
+ return function ConfiguredControl(props) {
54
+ return /*#__PURE__*/_jsx(BaseControlType, {
55
+ ...props,
56
+ config: controlConfig
57
+ });
58
+ };
59
+ }
43
60
  export function getControl(field, fieldTypeDefinition) {
44
61
  if (typeof field.Edit === 'function') {
45
62
  return field.Edit;
@@ -47,12 +64,18 @@ export function getControl(field, fieldTypeDefinition) {
47
64
  if (typeof field.Edit === 'string') {
48
65
  return getControlByType(field.Edit);
49
66
  }
67
+ if (isEditConfig(field.Edit)) {
68
+ return createConfiguredControl(field.Edit);
69
+ }
50
70
  if (field.elements && field.type !== 'array') {
51
71
  return getControlByType('select');
52
72
  }
53
73
  if (typeof fieldTypeDefinition.Edit === 'string') {
54
74
  return getControlByType(fieldTypeDefinition.Edit);
55
75
  }
76
+ if (isEditConfig(fieldTypeDefinition.Edit)) {
77
+ return createConfiguredControl(fieldTypeDefinition.Edit);
78
+ }
56
79
  return fieldTypeDefinition.Edit;
57
80
  }
58
81
  export function getControlByType(type) {
@@ -1 +1 @@
1
- {"version":3,"names":["checkbox","datetime","date","email","telephone","url","integer","radio","select","text","toggle","textarea","toggleGroup","array","color","password","FORM_CONTROLS","getControl","field","fieldTypeDefinition","Edit","getControlByType","elements","type","Object","keys","includes"],"sources":["@wordpress/dataviews/src/dataform-controls/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ComponentType } from 'react';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tDataFormControlProps,\n\tField,\n\tFieldTypeDefinition,\n} from '../types';\nimport checkbox from './checkbox';\nimport datetime from './datetime';\nimport date from './date';\nimport email from './email';\nimport telephone from './telephone';\nimport url from './url';\nimport integer from './integer';\nimport radio from './radio';\nimport select from './select';\nimport text from './text';\nimport toggle from './toggle';\nimport textarea from './textarea';\nimport toggleGroup from './toggle-group';\nimport array from './array';\nimport color from './color';\nimport password from './password';\n\ninterface FormControls {\n\t[ key: string ]: ComponentType< DataFormControlProps< any > >;\n}\n\nconst FORM_CONTROLS: FormControls = {\n\tarray,\n\tcheckbox,\n\tcolor,\n\tdatetime,\n\tdate,\n\temail,\n\ttelephone,\n\turl,\n\tinteger,\n\tpassword,\n\tradio,\n\tselect,\n\ttext,\n\ttoggle,\n\ttextarea,\n\ttoggleGroup,\n};\n\nexport function getControl< Item >(\n\tfield: Field< Item >,\n\tfieldTypeDefinition: FieldTypeDefinition< Item >\n) {\n\tif ( typeof field.Edit === 'function' ) {\n\t\treturn field.Edit;\n\t}\n\n\tif ( typeof field.Edit === 'string' ) {\n\t\treturn getControlByType( field.Edit );\n\t}\n\n\tif ( field.elements && field.type !== 'array' ) {\n\t\treturn getControlByType( 'select' );\n\t}\n\n\tif ( typeof fieldTypeDefinition.Edit === 'string' ) {\n\t\treturn getControlByType( fieldTypeDefinition.Edit );\n\t}\n\n\treturn fieldTypeDefinition.Edit;\n}\n\nexport function getControlByType( type: string ) {\n\tif ( Object.keys( FORM_CONTROLS ).includes( type ) ) {\n\t\treturn FORM_CONTROLS[ type ];\n\t}\n\n\tthrow 'Control ' + type + ' not found';\n}\n"],"mappings":"AAAA;AACA;AACA;;AAGA;AACA;AACA;;AAMA,OAAOA,QAAQ,MAAM,YAAY;AACjC,OAAOC,QAAQ,MAAM,YAAY;AACjC,OAAOC,IAAI,MAAM,QAAQ;AACzB,OAAOC,KAAK,MAAM,SAAS;AAC3B,OAAOC,SAAS,MAAM,aAAa;AACnC,OAAOC,GAAG,MAAM,OAAO;AACvB,OAAOC,OAAO,MAAM,WAAW;AAC/B,OAAOC,KAAK,MAAM,SAAS;AAC3B,OAAOC,MAAM,MAAM,UAAU;AAC7B,OAAOC,IAAI,MAAM,QAAQ;AACzB,OAAOC,MAAM,MAAM,UAAU;AAC7B,OAAOC,QAAQ,MAAM,YAAY;AACjC,OAAOC,WAAW,MAAM,gBAAgB;AACxC,OAAOC,KAAK,MAAM,SAAS;AAC3B,OAAOC,KAAK,MAAM,SAAS;AAC3B,OAAOC,QAAQ,MAAM,YAAY;AAMjC,MAAMC,aAA2B,GAAG;EACnCH,KAAK;EACLb,QAAQ;EACRc,KAAK;EACLb,QAAQ;EACRC,IAAI;EACJC,KAAK;EACLC,SAAS;EACTC,GAAG;EACHC,OAAO;EACPS,QAAQ;EACRR,KAAK;EACLC,MAAM;EACNC,IAAI;EACJC,MAAM;EACNC,QAAQ;EACRC;AACD,CAAC;AAED,OAAO,SAASK,UAAUA,CACzBC,KAAoB,EACpBC,mBAAgD,EAC/C;EACD,IAAK,OAAOD,KAAK,CAACE,IAAI,KAAK,UAAU,EAAG;IACvC,OAAOF,KAAK,CAACE,IAAI;EAClB;EAEA,IAAK,OAAOF,KAAK,CAACE,IAAI,KAAK,QAAQ,EAAG;IACrC,OAAOC,gBAAgB,CAAEH,KAAK,CAACE,IAAK,CAAC;EACtC;EAEA,IAAKF,KAAK,CAACI,QAAQ,IAAIJ,KAAK,CAACK,IAAI,KAAK,OAAO,EAAG;IAC/C,OAAOF,gBAAgB,CAAE,QAAS,CAAC;EACpC;EAEA,IAAK,OAAOF,mBAAmB,CAACC,IAAI,KAAK,QAAQ,EAAG;IACnD,OAAOC,gBAAgB,CAAEF,mBAAmB,CAACC,IAAK,CAAC;EACpD;EAEA,OAAOD,mBAAmB,CAACC,IAAI;AAChC;AAEA,OAAO,SAASC,gBAAgBA,CAAEE,IAAY,EAAG;EAChD,IAAKC,MAAM,CAACC,IAAI,CAAET,aAAc,CAAC,CAACU,QAAQ,CAAEH,IAAK,CAAC,EAAG;IACpD,OAAOP,aAAa,CAAEO,IAAI,CAAE;EAC7B;EAEA,MAAM,UAAU,GAAGA,IAAI,GAAG,YAAY;AACvC","ignoreList":[]}
1
+ {"version":3,"names":["checkbox","datetime","date","email","telephone","url","integer","radio","select","text","toggle","textarea","toggleGroup","array","color","password","jsx","_jsx","FORM_CONTROLS","isEditConfig","value","control","createConfiguredControl","config","controlConfig","BaseControlType","getControlByType","ConfiguredControl","props","getControl","field","fieldTypeDefinition","Edit","elements","type","Object","keys","includes"],"sources":["@wordpress/dataviews/src/dataform-controls/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ComponentType } from 'react';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tDataFormControlProps,\n\tField,\n\tFieldTypeDefinition,\n\tEditConfig,\n} from '../types';\nimport checkbox from './checkbox';\nimport datetime from './datetime';\nimport date from './date';\nimport email from './email';\nimport telephone from './telephone';\nimport url from './url';\nimport integer from './integer';\nimport radio from './radio';\nimport select from './select';\nimport text from './text';\nimport toggle from './toggle';\nimport textarea from './textarea';\nimport toggleGroup from './toggle-group';\nimport array from './array';\nimport color from './color';\nimport password from './password';\n\ninterface FormControls {\n\t[ key: string ]: ComponentType< DataFormControlProps< any > >;\n}\n\nconst FORM_CONTROLS: FormControls = {\n\tarray,\n\tcheckbox,\n\tcolor,\n\tdatetime,\n\tdate,\n\temail,\n\ttelephone,\n\turl,\n\tinteger,\n\tpassword,\n\tradio,\n\tselect,\n\ttext,\n\ttoggle,\n\ttextarea,\n\ttoggleGroup,\n};\n\nfunction isEditConfig( value: any ): value is EditConfig {\n\treturn (\n\t\tvalue && typeof value === 'object' && typeof value.control === 'string'\n\t);\n}\n\nfunction createConfiguredControl( config: EditConfig ) {\n\tconst { control, ...controlConfig } = config;\n\tconst BaseControlType = getControlByType( control );\n\n\treturn function ConfiguredControl< Item >(\n\t\tprops: DataFormControlProps< Item >\n\t) {\n\t\treturn <BaseControlType { ...props } config={ controlConfig } />;\n\t};\n}\n\nexport function getControl< Item >(\n\tfield: Field< Item >,\n\tfieldTypeDefinition: FieldTypeDefinition< Item >\n) {\n\tif ( typeof field.Edit === 'function' ) {\n\t\treturn field.Edit;\n\t}\n\n\tif ( typeof field.Edit === 'string' ) {\n\t\treturn getControlByType( field.Edit );\n\t}\n\n\tif ( isEditConfig( field.Edit ) ) {\n\t\treturn createConfiguredControl( field.Edit );\n\t}\n\n\tif ( field.elements && field.type !== 'array' ) {\n\t\treturn getControlByType( 'select' );\n\t}\n\n\tif ( typeof fieldTypeDefinition.Edit === 'string' ) {\n\t\treturn getControlByType( fieldTypeDefinition.Edit );\n\t}\n\n\tif ( isEditConfig( fieldTypeDefinition.Edit ) ) {\n\t\treturn createConfiguredControl( fieldTypeDefinition.Edit );\n\t}\n\n\treturn fieldTypeDefinition.Edit;\n}\n\nexport function getControlByType( type: string ) {\n\tif ( Object.keys( FORM_CONTROLS ).includes( type ) ) {\n\t\treturn FORM_CONTROLS[ type ];\n\t}\n\n\tthrow 'Control ' + type + ' not found';\n}\n"],"mappings":"AAAA;AACA;AACA;;AAGA;AACA;AACA;;AAOA,OAAOA,QAAQ,MAAM,YAAY;AACjC,OAAOC,QAAQ,MAAM,YAAY;AACjC,OAAOC,IAAI,MAAM,QAAQ;AACzB,OAAOC,KAAK,MAAM,SAAS;AAC3B,OAAOC,SAAS,MAAM,aAAa;AACnC,OAAOC,GAAG,MAAM,OAAO;AACvB,OAAOC,OAAO,MAAM,WAAW;AAC/B,OAAOC,KAAK,MAAM,SAAS;AAC3B,OAAOC,MAAM,MAAM,UAAU;AAC7B,OAAOC,IAAI,MAAM,QAAQ;AACzB,OAAOC,MAAM,MAAM,UAAU;AAC7B,OAAOC,QAAQ,MAAM,YAAY;AACjC,OAAOC,WAAW,MAAM,gBAAgB;AACxC,OAAOC,KAAK,MAAM,SAAS;AAC3B,OAAOC,KAAK,MAAM,SAAS;AAC3B,OAAOC,QAAQ,MAAM,YAAY;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAMlC,MAAMC,aAA2B,GAAG;EACnCL,KAAK;EACLb,QAAQ;EACRc,KAAK;EACLb,QAAQ;EACRC,IAAI;EACJC,KAAK;EACLC,SAAS;EACTC,GAAG;EACHC,OAAO;EACPS,QAAQ;EACRR,KAAK;EACLC,MAAM;EACNC,IAAI;EACJC,MAAM;EACNC,QAAQ;EACRC;AACD,CAAC;AAED,SAASO,YAAYA,CAAEC,KAAU,EAAwB;EACxD,OACCA,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,CAACC,OAAO,KAAK,QAAQ;AAEzE;AAEA,SAASC,uBAAuBA,CAAEC,MAAkB,EAAG;EACtD,MAAM;IAAEF,OAAO;IAAE,GAAGG;EAAc,CAAC,GAAGD,MAAM;EAC5C,MAAME,eAAe,GAAGC,gBAAgB,CAAEL,OAAQ,CAAC;EAEnD,OAAO,SAASM,iBAAiBA,CAChCC,KAAmC,EAClC;IACD,oBAAOX,IAAA,CAACQ,eAAe;MAAA,GAAMG,KAAK;MAAGL,MAAM,EAAGC;IAAe,CAAE,CAAC;EACjE,CAAC;AACF;AAEA,OAAO,SAASK,UAAUA,CACzBC,KAAoB,EACpBC,mBAAgD,EAC/C;EACD,IAAK,OAAOD,KAAK,CAACE,IAAI,KAAK,UAAU,EAAG;IACvC,OAAOF,KAAK,CAACE,IAAI;EAClB;EAEA,IAAK,OAAOF,KAAK,CAACE,IAAI,KAAK,QAAQ,EAAG;IACrC,OAAON,gBAAgB,CAAEI,KAAK,CAACE,IAAK,CAAC;EACtC;EAEA,IAAKb,YAAY,CAAEW,KAAK,CAACE,IAAK,CAAC,EAAG;IACjC,OAAOV,uBAAuB,CAAEQ,KAAK,CAACE,IAAK,CAAC;EAC7C;EAEA,IAAKF,KAAK,CAACG,QAAQ,IAAIH,KAAK,CAACI,IAAI,KAAK,OAAO,EAAG;IAC/C,OAAOR,gBAAgB,CAAE,QAAS,CAAC;EACpC;EAEA,IAAK,OAAOK,mBAAmB,CAACC,IAAI,KAAK,QAAQ,EAAG;IACnD,OAAON,gBAAgB,CAAEK,mBAAmB,CAACC,IAAK,CAAC;EACpD;EAEA,IAAKb,YAAY,CAAEY,mBAAmB,CAACC,IAAK,CAAC,EAAG;IAC/C,OAAOV,uBAAuB,CAAES,mBAAmB,CAACC,IAAK,CAAC;EAC3D;EAEA,OAAOD,mBAAmB,CAACC,IAAI;AAChC;AAEA,OAAO,SAASN,gBAAgBA,CAAEQ,IAAY,EAAG;EAChD,IAAKC,MAAM,CAACC,IAAI,CAAElB,aAAc,CAAC,CAACmB,QAAQ,CAAEH,IAAK,CAAC,EAAG;IACpD,OAAOhB,aAAa,CAAEgB,IAAI,CAAE;EAC7B;EAEA,MAAM,UAAU,GAAGA,IAAI,GAAG,YAAY;AACvC","ignoreList":[]}
@@ -1,3 +1,8 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import deepMerge from 'deepmerge';
5
+
1
6
  /**
2
7
  * WordPress dependencies
3
8
  */
@@ -15,18 +20,13 @@ const {
15
20
  ValidatedNumberControl
16
21
  } = unlock(privateApis);
17
22
  function BetweenControls({
18
- id,
19
23
  value,
20
24
  onChange,
21
25
  hideLabelFromVision
22
26
  }) {
23
- const [min = '', max = ''] = Array.isArray(value) ? value : [];
24
- const onChangeMin = useCallback(newValue => onChange({
25
- [id]: [Number(newValue), max]
26
- }), [id, onChange, max]);
27
- const onChangeMax = useCallback(newValue => onChange({
28
- [id]: [min, Number(newValue)]
29
- }), [id, onChange, min]);
27
+ const [min = '', max = ''] = value;
28
+ const onChangeMin = useCallback(newValue => onChange([Number(newValue), max]), [onChange, max]);
29
+ const onChangeMax = useCallback(newValue => onChange([min, Number(newValue)]), [onChange, min]);
30
30
  return /*#__PURE__*/_jsx(BaseControl, {
31
31
  __nextHasNoMarginBottom: true,
32
32
  help: __('The max. value must be greater than the min. value.'),
@@ -58,48 +58,60 @@ export default function Integer({
58
58
  hideLabelFromVision,
59
59
  operator
60
60
  }) {
61
- var _field$getValue;
61
+ var _getValue;
62
62
  const {
63
- id,
64
63
  label,
65
- description
64
+ description,
65
+ getValue,
66
+ setValue
66
67
  } = field;
67
- const value = (_field$getValue = field.getValue({
68
+ const value = (_getValue = getValue({
68
69
  item: data
69
- })) !== null && _field$getValue !== void 0 ? _field$getValue : '';
70
+ })) !== null && _getValue !== void 0 ? _getValue : '';
70
71
  const [customValidity, setCustomValidity] = useState(undefined);
71
72
  const onChangeControl = useCallback(newValue => {
72
- onChange({
73
+ onChange(setValue({
74
+ item: data,
73
75
  // Do not convert an empty string or undefined to a number,
74
76
  // otherwise there's a mismatch between the UI control (empty)
75
77
  // and the data relied by onChange (0).
76
- [id]: ['', undefined].includes(newValue) ? undefined : Number(newValue)
77
- });
78
- }, [id, onChange]);
78
+ value: ['', undefined].includes(newValue) ? undefined : Number(newValue)
79
+ }));
80
+ }, [data, onChange, setValue]);
81
+ const onChangeBetweenControls = useCallback(newValue => {
82
+ onChange(setValue({
83
+ item: data,
84
+ value: newValue
85
+ }));
86
+ }, [data, onChange, setValue]);
87
+ const onValidateControl = useCallback(newValue => {
88
+ const message = field.isValid?.custom?.(deepMerge(data, setValue({
89
+ item: data,
90
+ value: [undefined, '', null].includes(newValue) ? undefined : Number(newValue)
91
+ })), field);
92
+ if (message) {
93
+ setCustomValidity({
94
+ type: 'invalid',
95
+ message
96
+ });
97
+ return;
98
+ }
99
+ setCustomValidity(undefined);
100
+ }, [data, field, setValue]);
79
101
  if (operator === OPERATOR_BETWEEN) {
102
+ let valueBetween = ['', ''];
103
+ if (Array.isArray(value) && value.length === 2 && value.every(element => typeof element === 'number' || element === '')) {
104
+ valueBetween = value;
105
+ }
80
106
  return /*#__PURE__*/_jsx(BetweenControls, {
81
- id: id,
82
- value: value,
83
- onChange: onChange,
107
+ value: valueBetween,
108
+ onChange: onChangeBetweenControls,
84
109
  hideLabelFromVision: hideLabelFromVision
85
110
  });
86
111
  }
87
112
  return /*#__PURE__*/_jsx(ValidatedNumberControl, {
88
113
  required: !!field.isValid?.required,
89
- onValidate: newValue => {
90
- const message = field.isValid?.custom?.({
91
- ...data,
92
- [id]: [undefined, '', null].includes(newValue) ? undefined : Number(newValue)
93
- }, field);
94
- if (message) {
95
- setCustomValidity({
96
- type: 'invalid',
97
- message
98
- });
99
- return;
100
- }
101
- setCustomValidity(undefined);
102
- },
114
+ onValidate: onValidateControl,
103
115
  customValidity: customValidity,
104
116
  label: label,
105
117
  help: description,
@@ -1 +1 @@
1
- {"version":3,"names":["Flex","BaseControl","__experimentalNumberControl","NumberControl","privateApis","useCallback","useState","__","OPERATOR_BETWEEN","unlock","jsx","_jsx","jsxs","_jsxs","ValidatedNumberControl","BetweenControls","id","value","onChange","hideLabelFromVision","min","max","Array","isArray","onChangeMin","newValue","Number","onChangeMax","__nextHasNoMarginBottom","help","children","direction","gap","label","undefined","__next40pxDefaultSize","Integer","data","field","operator","_field$getValue","description","getValue","item","customValidity","setCustomValidity","onChangeControl","includes","required","isValid","onValidate","message","custom","type"],"sources":["@wordpress/dataviews/src/dataform-controls/integer.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tFlex,\n\tBaseControl,\n\t__experimentalNumberControl as NumberControl,\n\tprivateApis,\n} from '@wordpress/components';\nimport { useCallback, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { OPERATOR_BETWEEN } from '../constants';\nimport type { DataFormControlProps } from '../types';\nimport { unlock } from '../lock-unlock';\n\nconst { ValidatedNumberControl } = unlock( privateApis );\n\nfunction BetweenControls< Item >( {\n\tid,\n\tvalue,\n\tonChange,\n\thideLabelFromVision,\n}: {\n\tid: string;\n\tvalue: any;\n\tonChange: DataFormControlProps< Item >[ 'onChange' ];\n\thideLabelFromVision?: boolean;\n} ) {\n\tconst [ min = '', max = '' ] = Array.isArray( value ) ? value : [];\n\n\tconst onChangeMin = useCallback(\n\t\t( newValue: string | undefined ) =>\n\t\t\tonChange( {\n\t\t\t\t[ id ]: [ Number( newValue ), max ],\n\t\t\t} ),\n\t\t[ id, onChange, max ]\n\t);\n\n\tconst onChangeMax = useCallback(\n\t\t( newValue: string | undefined ) =>\n\t\t\tonChange( {\n\t\t\t\t[ id ]: [ min, Number( newValue ) ],\n\t\t\t} ),\n\t\t[ id, onChange, min ]\n\t);\n\n\treturn (\n\t\t<BaseControl\n\t\t\t__nextHasNoMarginBottom\n\t\t\thelp={ __( 'The max. value must be greater than the min. value.' ) }\n\t\t>\n\t\t\t<Flex direction=\"row\" gap={ 4 }>\n\t\t\t\t<NumberControl\n\t\t\t\t\tlabel={ __( 'Min.' ) }\n\t\t\t\t\tvalue={ min }\n\t\t\t\t\tmax={ max ? Number( max ) - 1 : undefined }\n\t\t\t\t\tonChange={ onChangeMin }\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t\t/>\n\t\t\t\t<NumberControl\n\t\t\t\t\tlabel={ __( 'Max.' ) }\n\t\t\t\t\tvalue={ max }\n\t\t\t\t\tmin={ min ? Number( min ) + 1 : undefined }\n\t\t\t\t\tonChange={ onChangeMax }\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t\t/>\n\t\t\t</Flex>\n\t\t</BaseControl>\n\t);\n}\n\nexport default function Integer< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\toperator,\n}: DataFormControlProps< Item > ) {\n\tconst { id, label, description } = field;\n\tconst value = field.getValue( { item: data } ) ?? '';\n\tconst [ customValidity, setCustomValidity ] =\n\t\tuseState<\n\t\t\tReact.ComponentProps<\n\t\t\t\ttypeof ValidatedNumberControl\n\t\t\t>[ 'customValidity' ]\n\t\t>( undefined );\n\n\tconst onChangeControl = useCallback(\n\t\t( newValue: string | undefined ) => {\n\t\t\tonChange( {\n\t\t\t\t// Do not convert an empty string or undefined to a number,\n\t\t\t\t// otherwise there's a mismatch between the UI control (empty)\n\t\t\t\t// and the data relied by onChange (0).\n\t\t\t\t[ id ]: [ '', undefined ].includes( newValue )\n\t\t\t\t\t? undefined\n\t\t\t\t\t: Number( newValue ),\n\t\t\t} );\n\t\t},\n\t\t[ id, onChange ]\n\t);\n\n\tif ( operator === OPERATOR_BETWEEN ) {\n\t\treturn (\n\t\t\t<BetweenControls\n\t\t\t\tid={ id }\n\t\t\t\tvalue={ value }\n\t\t\t\tonChange={ onChange }\n\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<ValidatedNumberControl\n\t\t\trequired={ !! field.isValid?.required }\n\t\t\tonValidate={ ( newValue: any ) => {\n\t\t\t\tconst message = field.isValid?.custom?.(\n\t\t\t\t\t{\n\t\t\t\t\t\t...data,\n\t\t\t\t\t\t[ id ]: [ undefined, '', null ].includes( newValue )\n\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t: Number( newValue ),\n\t\t\t\t\t},\n\t\t\t\t\tfield\n\t\t\t\t);\n\n\t\t\t\tif ( message ) {\n\t\t\t\t\tsetCustomValidity( {\n\t\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t} );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tsetCustomValidity( undefined );\n\t\t\t} }\n\t\t\tcustomValidity={ customValidity }\n\t\t\tlabel={ label }\n\t\t\thelp={ description }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChangeControl }\n\t\t\t__next40pxDefaultSize\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t/>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["deepMerge","Flex","BaseControl","__experimentalNumberControl","NumberControl","privateApis","useCallback","useState","__","OPERATOR_BETWEEN","unlock","jsx","_jsx","jsxs","_jsxs","ValidatedNumberControl","BetweenControls","value","onChange","hideLabelFromVision","min","max","onChangeMin","newValue","Number","onChangeMax","__nextHasNoMarginBottom","help","children","direction","gap","label","undefined","__next40pxDefaultSize","Integer","data","field","operator","_getValue","description","getValue","setValue","item","customValidity","setCustomValidity","onChangeControl","includes","onChangeBetweenControls","onValidateControl","message","isValid","custom","type","valueBetween","Array","isArray","length","every","element","required","onValidate"],"sources":["@wordpress/dataviews/src/dataform-controls/integer.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport deepMerge from 'deepmerge';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tFlex,\n\tBaseControl,\n\t__experimentalNumberControl as NumberControl,\n\tprivateApis,\n} from '@wordpress/components';\nimport { useCallback, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { OPERATOR_BETWEEN } from '../constants';\nimport type { DataFormControlProps } from '../types';\nimport { unlock } from '../lock-unlock';\n\nconst { ValidatedNumberControl } = unlock( privateApis );\n\ntype IntegerBetween = [ number | string, number | string ];\n\nfunction BetweenControls( {\n\tvalue,\n\tonChange,\n\thideLabelFromVision,\n}: {\n\tvalue: IntegerBetween;\n\tonChange: ( [ min, max ]: IntegerBetween ) => void;\n\thideLabelFromVision?: boolean;\n} ) {\n\tconst [ min = '', max = '' ] = value;\n\n\tconst onChangeMin = useCallback(\n\t\t( newValue: string | undefined ) =>\n\t\t\tonChange( [ Number( newValue ), max ] ),\n\t\t[ onChange, max ]\n\t);\n\n\tconst onChangeMax = useCallback(\n\t\t( newValue: string | undefined ) =>\n\t\t\tonChange( [ min, Number( newValue ) ] ),\n\t\t[ onChange, min ]\n\t);\n\n\treturn (\n\t\t<BaseControl\n\t\t\t__nextHasNoMarginBottom\n\t\t\thelp={ __( 'The max. value must be greater than the min. value.' ) }\n\t\t>\n\t\t\t<Flex direction=\"row\" gap={ 4 }>\n\t\t\t\t<NumberControl\n\t\t\t\t\tlabel={ __( 'Min.' ) }\n\t\t\t\t\tvalue={ min }\n\t\t\t\t\tmax={ max ? Number( max ) - 1 : undefined }\n\t\t\t\t\tonChange={ onChangeMin }\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t\t/>\n\t\t\t\t<NumberControl\n\t\t\t\t\tlabel={ __( 'Max.' ) }\n\t\t\t\t\tvalue={ max }\n\t\t\t\t\tmin={ min ? Number( min ) + 1 : undefined }\n\t\t\t\t\tonChange={ onChangeMax }\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t\t/>\n\t\t\t</Flex>\n\t\t</BaseControl>\n\t);\n}\n\nexport default function Integer< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\toperator,\n}: DataFormControlProps< Item > ) {\n\tconst { label, description, getValue, setValue } = field;\n\tconst value = getValue( { item: data } ) ?? '';\n\tconst [ customValidity, setCustomValidity ] =\n\t\tuseState<\n\t\t\tReact.ComponentProps<\n\t\t\t\ttypeof ValidatedNumberControl\n\t\t\t>[ 'customValidity' ]\n\t\t>( undefined );\n\n\tconst onChangeControl = useCallback(\n\t\t( newValue: string | undefined ) => {\n\t\t\tonChange(\n\t\t\t\tsetValue( {\n\t\t\t\t\titem: data,\n\t\t\t\t\t// Do not convert an empty string or undefined to a number,\n\t\t\t\t\t// otherwise there's a mismatch between the UI control (empty)\n\t\t\t\t\t// and the data relied by onChange (0).\n\t\t\t\t\tvalue: [ '', undefined ].includes( newValue )\n\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t: Number( newValue ),\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t\t[ data, onChange, setValue ]\n\t);\n\n\tconst onChangeBetweenControls = useCallback(\n\t\t( newValue: IntegerBetween ) => {\n\t\t\tonChange(\n\t\t\t\tsetValue( {\n\t\t\t\t\titem: data,\n\t\t\t\t\tvalue: newValue,\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t\t[ data, onChange, setValue ]\n\t);\n\n\tconst onValidateControl = useCallback(\n\t\t( newValue: any ) => {\n\t\t\tconst message = field.isValid?.custom?.(\n\t\t\t\tdeepMerge(\n\t\t\t\t\tdata,\n\t\t\t\t\tsetValue( {\n\t\t\t\t\t\titem: data,\n\t\t\t\t\t\tvalue: [ undefined, '', null ].includes( newValue )\n\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t: Number( newValue ),\n\t\t\t\t\t} ) as Partial< Item >\n\t\t\t\t),\n\t\t\t\tfield\n\t\t\t);\n\n\t\t\tif ( message ) {\n\t\t\t\tsetCustomValidity( {\n\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\tmessage,\n\t\t\t\t} );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetCustomValidity( undefined );\n\t\t},\n\t\t[ data, field, setValue ]\n\t);\n\n\tif ( operator === OPERATOR_BETWEEN ) {\n\t\tlet valueBetween: IntegerBetween = [ '', '' ];\n\t\tif (\n\t\t\tArray.isArray( value ) &&\n\t\t\tvalue.length === 2 &&\n\t\t\tvalue.every(\n\t\t\t\t( element ) => typeof element === 'number' || element === ''\n\t\t\t)\n\t\t) {\n\t\t\tvalueBetween = value as IntegerBetween;\n\t\t}\n\t\treturn (\n\t\t\t<BetweenControls\n\t\t\t\tvalue={ valueBetween }\n\t\t\t\tonChange={ onChangeBetweenControls }\n\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<ValidatedNumberControl\n\t\t\trequired={ !! field.isValid?.required }\n\t\t\tonValidate={ onValidateControl }\n\t\t\tcustomValidity={ customValidity }\n\t\t\tlabel={ label }\n\t\t\thelp={ description }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChangeControl }\n\t\t\t__next40pxDefaultSize\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t/>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,13 +1,23 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import deepMerge from 'deepmerge';
5
+
1
6
  /**
2
7
  * WordPress dependencies
3
8
  */
4
- import { RadioControl } from '@wordpress/components';
5
- import { useCallback } from '@wordpress/element';
9
+ import { privateApis } from '@wordpress/components';
10
+ import { useCallback, useState } from '@wordpress/element';
6
11
 
7
12
  /**
8
13
  * Internal dependencies
9
14
  */
15
+
16
+ import { unlock } from '../lock-unlock';
10
17
  import { jsx as _jsx } from "react/jsx-runtime";
18
+ const {
19
+ ValidatedRadioControl
20
+ } = unlock(privateApis);
11
21
  export default function Radio({
12
22
  data,
13
23
  field,
@@ -15,20 +25,43 @@ export default function Radio({
15
25
  hideLabelFromVision
16
26
  }) {
17
27
  const {
18
- id,
19
- label
28
+ label,
29
+ description,
30
+ elements,
31
+ getValue,
32
+ setValue
20
33
  } = field;
21
- const value = field.getValue({
34
+ const value = getValue({
22
35
  item: data
23
36
  });
24
- const onChangeControl = useCallback(newValue => onChange({
25
- [id]: newValue
26
- }), [id, onChange]);
27
- if (field.elements) {
28
- return /*#__PURE__*/_jsx(RadioControl, {
37
+ const [customValidity, setCustomValidity] = useState(undefined);
38
+ const onChangeControl = useCallback(newValue => onChange(setValue({
39
+ item: data,
40
+ value: newValue
41
+ })), [data, onChange, setValue]);
42
+ const onValidateControl = useCallback(newValue => {
43
+ const message = field.isValid?.custom?.(deepMerge(data, setValue({
44
+ item: data,
45
+ value: newValue
46
+ })), field);
47
+ if (message) {
48
+ setCustomValidity({
49
+ type: 'invalid',
50
+ message
51
+ });
52
+ return;
53
+ }
54
+ setCustomValidity(undefined);
55
+ }, [data, field, setValue]);
56
+ if (elements) {
57
+ return /*#__PURE__*/_jsx(ValidatedRadioControl, {
58
+ required: !!field.isValid?.required,
59
+ onValidate: onValidateControl,
60
+ customValidity: customValidity,
29
61
  label: label,
62
+ help: description,
30
63
  onChange: onChangeControl,
31
- options: field.elements,
64
+ options: elements,
32
65
  selected: value,
33
66
  hideLabelFromVision: hideLabelFromVision
34
67
  });
@@ -1 +1 @@
1
- {"version":3,"names":["RadioControl","useCallback","jsx","_jsx","Radio","data","field","onChange","hideLabelFromVision","id","label","value","getValue","item","onChangeControl","newValue","elements","options","selected"],"sources":["@wordpress/dataviews/src/dataform-controls/radio.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { RadioControl } from '@wordpress/components';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../types';\n\nexport default function Radio< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n}: DataFormControlProps< Item > ) {\n\tconst { id, label } = field;\n\tconst value = field.getValue( { item: data } );\n\n\tconst onChangeControl = useCallback(\n\t\t( newValue: string ) =>\n\t\t\tonChange( {\n\t\t\t\t[ id ]: newValue,\n\t\t\t} ),\n\t\t[ id, onChange ]\n\t);\n\n\tif ( field.elements ) {\n\t\treturn (\n\t\t\t<RadioControl\n\t\t\t\tlabel={ label }\n\t\t\t\tonChange={ onChangeControl }\n\t\t\t\toptions={ field.elements }\n\t\t\t\tselected={ value }\n\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn null;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,YAAY,QAAQ,uBAAuB;AACpD,SAASC,WAAW,QAAQ,oBAAoB;;AAEhD;AACA;AACA;AAFA,SAAAC,GAAA,IAAAC,IAAA;AAKA,eAAe,SAASC,KAAKA,CAAU;EACtCC,IAAI;EACJC,KAAK;EACLC,QAAQ;EACRC;AAC6B,CAAC,EAAG;EACjC,MAAM;IAAEC,EAAE;IAAEC;EAAM,CAAC,GAAGJ,KAAK;EAC3B,MAAMK,KAAK,GAAGL,KAAK,CAACM,QAAQ,CAAE;IAAEC,IAAI,EAAER;EAAK,CAAE,CAAC;EAE9C,MAAMS,eAAe,GAAGb,WAAW,CAChCc,QAAgB,IACjBR,QAAQ,CAAE;IACT,CAAEE,EAAE,GAAIM;EACT,CAAE,CAAC,EACJ,CAAEN,EAAE,EAAEF,QAAQ,CACf,CAAC;EAED,IAAKD,KAAK,CAACU,QAAQ,EAAG;IACrB,oBACCb,IAAA,CAACH,YAAY;MACZU,KAAK,EAAGA,KAAO;MACfH,QAAQ,EAAGO,eAAiB;MAC5BG,OAAO,EAAGX,KAAK,CAACU,QAAU;MAC1BE,QAAQ,EAAGP,KAAO;MAClBH,mBAAmB,EAAGA;IAAqB,CAC3C,CAAC;EAEJ;EAEA,OAAO,IAAI;AACZ","ignoreList":[]}
1
+ {"version":3,"names":["deepMerge","privateApis","useCallback","useState","unlock","jsx","_jsx","ValidatedRadioControl","Radio","data","field","onChange","hideLabelFromVision","label","description","elements","getValue","setValue","value","item","customValidity","setCustomValidity","undefined","onChangeControl","newValue","onValidateControl","message","isValid","custom","type","required","onValidate","help","options","selected"],"sources":["@wordpress/dataviews/src/dataform-controls/radio.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport deepMerge from 'deepmerge';\n\n/**\n * WordPress dependencies\n */\nimport { privateApis } from '@wordpress/components';\nimport { useCallback, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../types';\nimport { unlock } from '../lock-unlock';\n\nconst { ValidatedRadioControl } = unlock( privateApis );\n\nexport default function Radio< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n}: DataFormControlProps< Item > ) {\n\tconst { label, description, elements, getValue, setValue } = field;\n\tconst value = getValue( { item: data } );\n\tconst [ customValidity, setCustomValidity ] =\n\t\tuseState<\n\t\t\tReact.ComponentProps<\n\t\t\t\ttypeof ValidatedRadioControl\n\t\t\t>[ 'customValidity' ]\n\t\t>( undefined );\n\n\tconst onChangeControl = useCallback(\n\t\t( newValue: string ) =>\n\t\t\tonChange( setValue( { item: data, value: newValue } ) ),\n\t\t[ data, onChange, setValue ]\n\t);\n\n\tconst onValidateControl = useCallback(\n\t\t( newValue: any ) => {\n\t\t\tconst message = field.isValid?.custom?.(\n\t\t\t\tdeepMerge(\n\t\t\t\t\tdata,\n\t\t\t\t\tsetValue( {\n\t\t\t\t\t\titem: data,\n\t\t\t\t\t\tvalue: newValue,\n\t\t\t\t\t} ) as Partial< Item >\n\t\t\t\t),\n\t\t\t\tfield\n\t\t\t);\n\n\t\t\tif ( message ) {\n\t\t\t\tsetCustomValidity( {\n\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\tmessage,\n\t\t\t\t} );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetCustomValidity( undefined );\n\t\t},\n\t\t[ data, field, setValue ]\n\t);\n\n\tif ( elements ) {\n\t\treturn (\n\t\t\t<ValidatedRadioControl\n\t\t\t\trequired={ !! field.isValid?.required }\n\t\t\t\tonValidate={ onValidateControl }\n\t\t\t\tcustomValidity={ customValidity }\n\t\t\t\tlabel={ label }\n\t\t\t\thelp={ description }\n\t\t\t\tonChange={ onChangeControl }\n\t\t\t\toptions={ elements }\n\t\t\t\tselected={ value }\n\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn null;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,SAAS,MAAM,WAAW;;AAEjC;AACA;AACA;AACA,SAASC,WAAW,QAAQ,uBAAuB;AACnD,SAASC,WAAW,EAAEC,QAAQ,QAAQ,oBAAoB;;AAE1D;AACA;AACA;;AAEA,SAASC,MAAM,QAAQ,gBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAExC,MAAM;EAAEC;AAAsB,CAAC,GAAGH,MAAM,CAAEH,WAAY,CAAC;AAEvD,eAAe,SAASO,KAAKA,CAAU;EACtCC,IAAI;EACJC,KAAK;EACLC,QAAQ;EACRC;AAC6B,CAAC,EAAG;EACjC,MAAM;IAAEC,KAAK;IAAEC,WAAW;IAAEC,QAAQ;IAAEC,QAAQ;IAAEC;EAAS,CAAC,GAAGP,KAAK;EAClE,MAAMQ,KAAK,GAAGF,QAAQ,CAAE;IAAEG,IAAI,EAAEV;EAAK,CAAE,CAAC;EACxC,MAAM,CAAEW,cAAc,EAAEC,iBAAiB,CAAE,GAC1ClB,QAAQ,CAILmB,SAAU,CAAC;EAEf,MAAMC,eAAe,GAAGrB,WAAW,CAChCsB,QAAgB,IACjBb,QAAQ,CAAEM,QAAQ,CAAE;IAAEE,IAAI,EAAEV,IAAI;IAAES,KAAK,EAAEM;EAAS,CAAE,CAAE,CAAC,EACxD,CAAEf,IAAI,EAAEE,QAAQ,EAAEM,QAAQ,CAC3B,CAAC;EAED,MAAMQ,iBAAiB,GAAGvB,WAAW,CAClCsB,QAAa,IAAM;IACpB,MAAME,OAAO,GAAGhB,KAAK,CAACiB,OAAO,EAAEC,MAAM,GACpC5B,SAAS,CACRS,IAAI,EACJQ,QAAQ,CAAE;MACTE,IAAI,EAAEV,IAAI;MACVS,KAAK,EAAEM;IACR,CAAE,CACH,CAAC,EACDd,KACD,CAAC;IAED,IAAKgB,OAAO,EAAG;MACdL,iBAAiB,CAAE;QAClBQ,IAAI,EAAE,SAAS;QACfH;MACD,CAAE,CAAC;MACH;IACD;IAEAL,iBAAiB,CAAEC,SAAU,CAAC;EAC/B,CAAC,EACD,CAAEb,IAAI,EAAEC,KAAK,EAAEO,QAAQ,CACxB,CAAC;EAED,IAAKF,QAAQ,EAAG;IACf,oBACCT,IAAA,CAACC,qBAAqB;MACrBuB,QAAQ,EAAG,CAAC,CAAEpB,KAAK,CAACiB,OAAO,EAAEG,QAAU;MACvCC,UAAU,EAAGN,iBAAmB;MAChCL,cAAc,EAAGA,cAAgB;MACjCP,KAAK,EAAGA,KAAO;MACfmB,IAAI,EAAGlB,WAAa;MACpBH,QAAQ,EAAGY,eAAiB;MAC5BU,OAAO,EAAGlB,QAAU;MACpBmB,QAAQ,EAAGhB,KAAO;MAClBN,mBAAmB,EAAGA;IAAqB,CAC3C,CAAC;EAEJ;EAEA,OAAO,IAAI;AACZ","ignoreList":[]}
@@ -57,17 +57,13 @@ export default function RelativeDateControl({
57
57
  unit = options[0].value
58
58
  } = value;
59
59
  const onChangeValue = useCallback(newValue => onChange({
60
- [id]: {
61
- value: Number(newValue),
62
- unit
63
- }
64
- }), [id, onChange, unit]);
60
+ value: Number(newValue),
61
+ unit
62
+ }), [onChange, unit]);
65
63
  const onChangeUnit = useCallback(newUnit => onChange({
66
- [id]: {
67
- value: relValue,
68
- unit: newUnit
69
- }
70
- }), [id, onChange, relValue]);
64
+ value: relValue,
65
+ unit: newUnit
66
+ }), [onChange, relValue]);
71
67
  return /*#__PURE__*/_jsx(BaseControl, {
72
68
  id: id,
73
69
  __nextHasNoMarginBottom: true,
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","BaseControl","SelectControl","__experimentalNumberControl","NumberControl","__experimentalHStack","HStack","useCallback","__","OPERATOR_IN_THE_PAST","OPERATOR_OVER","jsx","_jsx","jsxs","_jsxs","TIME_UNITS_OPTIONS","value","label","RelativeDateControl","id","onChange","hideLabelFromVision","options","className","relValue","unit","onChangeValue","newValue","Number","onChangeUnit","newUnit","__nextHasNoMarginBottom","children","spacing","__next40pxDefaultSize","spinControls","min","step"],"sources":["@wordpress/dataviews/src/dataform-controls/relative-date-control.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tBaseControl,\n\tSelectControl,\n\t__experimentalNumberControl as NumberControl,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\nimport { useCallback } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { OPERATOR_IN_THE_PAST, OPERATOR_OVER } from '../constants';\n\ninterface RelativeDateControlProps {\n\tid: string;\n\tvalue: { value?: string | number; unit?: string };\n\tonChange: ( value: any ) => void;\n\tlabel: string;\n\thideLabelFromVision?: boolean;\n\toptions: { value: string; label: string }[];\n\tclassName?: string;\n}\n\nexport const TIME_UNITS_OPTIONS = {\n\t[ OPERATOR_IN_THE_PAST ]: [\n\t\t{ value: 'days', label: __( 'Days' ) },\n\t\t{ value: 'weeks', label: __( 'Weeks' ) },\n\t\t{ value: 'months', label: __( 'Months' ) },\n\t\t{ value: 'years', label: __( 'Years' ) },\n\t],\n\t[ OPERATOR_OVER ]: [\n\t\t{ value: 'days', label: __( 'Days ago' ) },\n\t\t{ value: 'weeks', label: __( 'Weeks ago' ) },\n\t\t{ value: 'months', label: __( 'Months ago' ) },\n\t\t{ value: 'years', label: __( 'Years ago' ) },\n\t],\n};\n\nexport default function RelativeDateControl( {\n\tid,\n\tvalue,\n\tonChange,\n\tlabel,\n\thideLabelFromVision,\n\toptions,\n\tclassName,\n}: RelativeDateControlProps ) {\n\tconst { value: relValue = '', unit = options[ 0 ].value } = value;\n\n\tconst onChangeValue = useCallback(\n\t\t( newValue: string | undefined ) =>\n\t\t\tonChange( {\n\t\t\t\t[ id ]: { value: Number( newValue ), unit },\n\t\t\t} ),\n\t\t[ id, onChange, unit ]\n\t);\n\n\tconst onChangeUnit = useCallback(\n\t\t( newUnit: string | undefined ) =>\n\t\t\tonChange( {\n\t\t\t\t[ id ]: { value: relValue, unit: newUnit },\n\t\t\t} ),\n\t\t[ id, onChange, relValue ]\n\t);\n\n\treturn (\n\t\t<BaseControl\n\t\t\tid={ id }\n\t\t\t__nextHasNoMarginBottom\n\t\t\tclassName={ clsx( className, 'dataviews-controls__relative-date' ) }\n\t\t\tlabel={ label }\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t>\n\t\t\t<HStack spacing={ 2.5 }>\n\t\t\t\t<NumberControl\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tclassName=\"dataviews-controls__relative-date-number\"\n\t\t\t\t\tspinControls=\"none\"\n\t\t\t\t\tmin={ 1 }\n\t\t\t\t\tstep={ 1 }\n\t\t\t\t\tvalue={ relValue }\n\t\t\t\t\tonChange={ onChangeValue }\n\t\t\t\t/>\n\t\t\t\t<SelectControl\n\t\t\t\t\tclassName=\"dataviews-controls__relative-date-unit\"\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Unit' ) }\n\t\t\t\t\tvalue={ unit }\n\t\t\t\t\toptions={ options }\n\t\t\t\t\tonChange={ onChangeUnit }\n\t\t\t\t\thideLabelFromVision\n\t\t\t\t/>\n\t\t\t</HStack>\n\t\t</BaseControl>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["clsx","BaseControl","SelectControl","__experimentalNumberControl","NumberControl","__experimentalHStack","HStack","useCallback","__","OPERATOR_IN_THE_PAST","OPERATOR_OVER","jsx","_jsx","jsxs","_jsxs","TIME_UNITS_OPTIONS","value","label","RelativeDateControl","id","onChange","hideLabelFromVision","options","className","relValue","unit","onChangeValue","newValue","Number","onChangeUnit","newUnit","__nextHasNoMarginBottom","children","spacing","__next40pxDefaultSize","spinControls","min","step"],"sources":["@wordpress/dataviews/src/dataform-controls/relative-date-control.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tBaseControl,\n\tSelectControl,\n\t__experimentalNumberControl as NumberControl,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\nimport { useCallback } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { OPERATOR_IN_THE_PAST, OPERATOR_OVER } from '../constants';\n\nexport type DateRelative = {\n\tvalue?: string | number;\n\tunit?: string;\n};\n\ninterface RelativeDateControlProps {\n\tid: string;\n\tvalue: DateRelative;\n\tonChange: ( args: DateRelative ) => void;\n\tlabel: string;\n\thideLabelFromVision?: boolean;\n\toptions: { value: string; label: string }[];\n\tclassName?: string;\n}\n\nexport const TIME_UNITS_OPTIONS = {\n\t[ OPERATOR_IN_THE_PAST ]: [\n\t\t{ value: 'days', label: __( 'Days' ) },\n\t\t{ value: 'weeks', label: __( 'Weeks' ) },\n\t\t{ value: 'months', label: __( 'Months' ) },\n\t\t{ value: 'years', label: __( 'Years' ) },\n\t],\n\t[ OPERATOR_OVER ]: [\n\t\t{ value: 'days', label: __( 'Days ago' ) },\n\t\t{ value: 'weeks', label: __( 'Weeks ago' ) },\n\t\t{ value: 'months', label: __( 'Months ago' ) },\n\t\t{ value: 'years', label: __( 'Years ago' ) },\n\t],\n};\n\nexport default function RelativeDateControl( {\n\tid,\n\tvalue,\n\tonChange,\n\tlabel,\n\thideLabelFromVision,\n\toptions,\n\tclassName,\n}: RelativeDateControlProps ) {\n\tconst { value: relValue = '', unit = options[ 0 ].value } = value;\n\n\tconst onChangeValue = useCallback(\n\t\t( newValue: string | undefined ) =>\n\t\t\tonChange( { value: Number( newValue ), unit } ),\n\t\t[ onChange, unit ]\n\t);\n\n\tconst onChangeUnit = useCallback(\n\t\t( newUnit: string | undefined ) =>\n\t\t\tonChange( { value: relValue, unit: newUnit } ),\n\t\t[ onChange, relValue ]\n\t);\n\n\treturn (\n\t\t<BaseControl\n\t\t\tid={ id }\n\t\t\t__nextHasNoMarginBottom\n\t\t\tclassName={ clsx( className, 'dataviews-controls__relative-date' ) }\n\t\t\tlabel={ label }\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t>\n\t\t\t<HStack spacing={ 2.5 }>\n\t\t\t\t<NumberControl\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tclassName=\"dataviews-controls__relative-date-number\"\n\t\t\t\t\tspinControls=\"none\"\n\t\t\t\t\tmin={ 1 }\n\t\t\t\t\tstep={ 1 }\n\t\t\t\t\tvalue={ relValue }\n\t\t\t\t\tonChange={ onChangeValue }\n\t\t\t\t/>\n\t\t\t\t<SelectControl\n\t\t\t\t\tclassName=\"dataviews-controls__relative-date-unit\"\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Unit' ) }\n\t\t\t\t\tvalue={ unit }\n\t\t\t\t\toptions={ options }\n\t\t\t\t\tonChange={ onChangeUnit }\n\t\t\t\t\thideLabelFromVision\n\t\t\t\t/>\n\t\t\t</HStack>\n\t\t</BaseControl>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,33 +1,61 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import deepMerge from 'deepmerge';
5
+
1
6
  /**
2
7
  * WordPress dependencies
3
8
  */
4
- import { SelectControl } from '@wordpress/components';
5
- import { useCallback } from '@wordpress/element';
9
+ import { privateApis } from '@wordpress/components';
10
+ import { useCallback, useState } from '@wordpress/element';
6
11
  import { __ } from '@wordpress/i18n';
7
12
 
8
13
  /**
9
14
  * Internal dependencies
10
15
  */
16
+
17
+ import { unlock } from '../lock-unlock';
11
18
  import { jsx as _jsx } from "react/jsx-runtime";
19
+ const {
20
+ ValidatedSelectControl
21
+ } = unlock(privateApis);
12
22
  export default function Select({
13
23
  data,
14
24
  field,
15
25
  onChange,
16
26
  hideLabelFromVision
17
27
  }) {
18
- var _field$getValue, _field$elements;
28
+ var _getValue, _field$elements;
19
29
  const {
20
- id,
30
+ type,
21
31
  label,
22
- type
32
+ description,
33
+ getValue,
34
+ setValue
23
35
  } = field;
36
+ const [customValidity, setCustomValidity] = useState(undefined);
24
37
  const isMultiple = type === 'array';
25
- const value = (_field$getValue = field.getValue({
38
+ const value = (_getValue = getValue({
26
39
  item: data
27
- })) !== null && _field$getValue !== void 0 ? _field$getValue : isMultiple ? [] : '';
28
- const onChangeControl = useCallback(newValue => onChange({
29
- [id]: newValue
30
- }), [id, onChange]);
40
+ })) !== null && _getValue !== void 0 ? _getValue : isMultiple ? [] : '';
41
+ const onChangeControl = useCallback(newValue => onChange(setValue({
42
+ item: data,
43
+ value: newValue
44
+ })), [data, onChange, setValue]);
45
+ const onValidateControl = useCallback(newValue => {
46
+ const message = field.isValid?.custom?.(deepMerge(data, setValue({
47
+ item: data,
48
+ value: newValue
49
+ })), field);
50
+ if (message) {
51
+ setCustomValidity({
52
+ type: 'invalid',
53
+ message
54
+ });
55
+ return;
56
+ }
57
+ setCustomValidity(undefined);
58
+ }, [data, field, setValue]);
31
59
  const fieldElements = (_field$elements = field?.elements) !== null && _field$elements !== void 0 ? _field$elements : [];
32
60
  const hasEmptyValue = fieldElements.some(({
33
61
  value: elementValue
@@ -44,10 +72,13 @@ export default function Select({
44
72
  label: __('Select item'),
45
73
  value: ''
46
74
  }, ...fieldElements];
47
- return /*#__PURE__*/_jsx(SelectControl, {
75
+ return /*#__PURE__*/_jsx(ValidatedSelectControl, {
76
+ required: !!field.isValid?.required,
77
+ onValidate: onValidateControl,
78
+ customValidity: customValidity,
48
79
  label: label,
49
80
  value: value,
50
- help: field.description,
81
+ help: description,
51
82
  options: elements,
52
83
  onChange: onChangeControl,
53
84
  __next40pxDefaultSize: true,
@@ -1 +1 @@
1
- {"version":3,"names":["SelectControl","useCallback","__","jsx","_jsx","Select","data","field","onChange","hideLabelFromVision","_field$getValue","_field$elements","id","label","type","isMultiple","value","getValue","item","onChangeControl","newValue","fieldElements","elements","hasEmptyValue","some","elementValue","help","description","options","__next40pxDefaultSize","__nextHasNoMarginBottom","multiple"],"sources":["@wordpress/dataviews/src/dataform-controls/select.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { SelectControl } from '@wordpress/components';\nimport { useCallback } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../types';\n\nexport default function Select< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n}: DataFormControlProps< Item > ) {\n\tconst { id, label, type } = field;\n\tconst isMultiple = type === 'array';\n\tconst value = field.getValue( { item: data } ) ?? ( isMultiple ? [] : '' );\n\tconst onChangeControl = useCallback(\n\t\t( newValue: any ) =>\n\t\t\tonChange( {\n\t\t\t\t[ id ]: newValue,\n\t\t\t} ),\n\t\t[ id, onChange ]\n\t);\n\n\tconst fieldElements = field?.elements ?? [];\n\tconst hasEmptyValue = fieldElements.some(\n\t\t( { value: elementValue } ) => elementValue === ''\n\t);\n\n\tconst elements =\n\t\thasEmptyValue || isMultiple\n\t\t\t? fieldElements\n\t\t\t: [\n\t\t\t\t\t/*\n\t\t\t\t\t * Value can be undefined when:\n\t\t\t\t\t *\n\t\t\t\t\t * - the field is not required\n\t\t\t\t\t * - in bulk editing\n\t\t\t\t\t *\n\t\t\t\t\t */\n\t\t\t\t\t{ label: __( 'Select item' ), value: '' },\n\t\t\t\t\t...fieldElements,\n\t\t\t ];\n\n\treturn (\n\t\t<SelectControl\n\t\t\tlabel={ label }\n\t\t\tvalue={ value }\n\t\t\thelp={ field.description }\n\t\t\toptions={ elements }\n\t\t\tonChange={ onChangeControl }\n\t\t\t__next40pxDefaultSize\n\t\t\t__nextHasNoMarginBottom\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\tmultiple={ isMultiple }\n\t\t/>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,aAAa,QAAQ,uBAAuB;AACrD,SAASC,WAAW,QAAQ,oBAAoB;AAChD,SAASC,EAAE,QAAQ,iBAAiB;;AAEpC;AACA;AACA;AAFA,SAAAC,GAAA,IAAAC,IAAA;AAKA,eAAe,SAASC,MAAMA,CAAU;EACvCC,IAAI;EACJC,KAAK;EACLC,QAAQ;EACRC;AAC6B,CAAC,EAAG;EAAA,IAAAC,eAAA,EAAAC,eAAA;EACjC,MAAM;IAAEC,EAAE;IAAEC,KAAK;IAAEC;EAAK,CAAC,GAAGP,KAAK;EACjC,MAAMQ,UAAU,GAAGD,IAAI,KAAK,OAAO;EACnC,MAAME,KAAK,IAAAN,eAAA,GAAGH,KAAK,CAACU,QAAQ,CAAE;IAAEC,IAAI,EAAEZ;EAAK,CAAE,CAAC,cAAAI,eAAA,cAAAA,eAAA,GAAMK,UAAU,GAAG,EAAE,GAAG,EAAI;EAC1E,MAAMI,eAAe,GAAGlB,WAAW,CAChCmB,QAAa,IACdZ,QAAQ,CAAE;IACT,CAAEI,EAAE,GAAIQ;EACT,CAAE,CAAC,EACJ,CAAER,EAAE,EAAEJ,QAAQ,CACf,CAAC;EAED,MAAMa,aAAa,IAAAV,eAAA,GAAGJ,KAAK,EAAEe,QAAQ,cAAAX,eAAA,cAAAA,eAAA,GAAI,EAAE;EAC3C,MAAMY,aAAa,GAAGF,aAAa,CAACG,IAAI,CACvC,CAAE;IAAER,KAAK,EAAES;EAAa,CAAC,KAAMA,YAAY,KAAK,EACjD,CAAC;EAED,MAAMH,QAAQ,GACbC,aAAa,IAAIR,UAAU,GACxBM,aAAa,GACb;EACA;AACL;AACA;AACA;AACA;AACA;AACA;EACK;IAAER,KAAK,EAAEX,EAAE,CAAE,aAAc,CAAC;IAAEc,KAAK,EAAE;EAAG,CAAC,EACzC,GAAGK,aAAa,CACf;EAEL,oBACCjB,IAAA,CAACJ,aAAa;IACba,KAAK,EAAGA,KAAO;IACfG,KAAK,EAAGA,KAAO;IACfU,IAAI,EAAGnB,KAAK,CAACoB,WAAa;IAC1BC,OAAO,EAAGN,QAAU;IACpBd,QAAQ,EAAGW,eAAiB;IAC5BU,qBAAqB;IACrBC,uBAAuB;IACvBrB,mBAAmB,EAAGA,mBAAqB;IAC3CsB,QAAQ,EAAGhB;EAAY,CACvB,CAAC;AAEJ","ignoreList":[]}
1
+ {"version":3,"names":["deepMerge","privateApis","useCallback","useState","__","unlock","jsx","_jsx","ValidatedSelectControl","Select","data","field","onChange","hideLabelFromVision","_getValue","_field$elements","type","label","description","getValue","setValue","customValidity","setCustomValidity","undefined","isMultiple","value","item","onChangeControl","newValue","onValidateControl","message","isValid","custom","fieldElements","elements","hasEmptyValue","some","elementValue","required","onValidate","help","options","__next40pxDefaultSize","__nextHasNoMarginBottom","multiple"],"sources":["@wordpress/dataviews/src/dataform-controls/select.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport deepMerge from 'deepmerge';\n\n/**\n * WordPress dependencies\n */\nimport { privateApis } from '@wordpress/components';\nimport { useCallback, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../types';\nimport { unlock } from '../lock-unlock';\n\nconst { ValidatedSelectControl } = unlock( privateApis );\n\nexport default function Select< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n}: DataFormControlProps< Item > ) {\n\tconst { type, label, description, getValue, setValue } = field;\n\tconst [ customValidity, setCustomValidity ] =\n\t\tuseState<\n\t\t\tReact.ComponentProps<\n\t\t\t\ttypeof ValidatedSelectControl\n\t\t\t>[ 'customValidity' ]\n\t\t>( undefined );\n\n\tconst isMultiple = type === 'array';\n\tconst value = getValue( { item: data } ) ?? ( isMultiple ? [] : '' );\n\n\tconst onChangeControl = useCallback(\n\t\t( newValue: any ) =>\n\t\t\tonChange( setValue( { item: data, value: newValue } ) ),\n\t\t[ data, onChange, setValue ]\n\t);\n\n\tconst onValidateControl = useCallback(\n\t\t( newValue: any ) => {\n\t\t\tconst message = field.isValid?.custom?.(\n\t\t\t\tdeepMerge(\n\t\t\t\t\tdata,\n\t\t\t\t\tsetValue( {\n\t\t\t\t\t\titem: data,\n\t\t\t\t\t\tvalue: newValue,\n\t\t\t\t\t} ) as Partial< Item >\n\t\t\t\t),\n\t\t\t\tfield\n\t\t\t);\n\n\t\t\tif ( message ) {\n\t\t\t\tsetCustomValidity( {\n\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\tmessage,\n\t\t\t\t} );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetCustomValidity( undefined );\n\t\t},\n\t\t[ data, field, setValue ]\n\t);\n\n\tconst fieldElements = field?.elements ?? [];\n\tconst hasEmptyValue = fieldElements.some(\n\t\t( { value: elementValue } ) => elementValue === ''\n\t);\n\n\tconst elements =\n\t\thasEmptyValue || isMultiple\n\t\t\t? fieldElements\n\t\t\t: [\n\t\t\t\t\t/*\n\t\t\t\t\t * Value can be undefined when:\n\t\t\t\t\t *\n\t\t\t\t\t * - the field is not required\n\t\t\t\t\t * - in bulk editing\n\t\t\t\t\t *\n\t\t\t\t\t */\n\t\t\t\t\t{ label: __( 'Select item' ), value: '' },\n\t\t\t\t\t...fieldElements,\n\t\t\t ];\n\n\treturn (\n\t\t<ValidatedSelectControl\n\t\t\trequired={ !! field.isValid?.required }\n\t\t\tonValidate={ onValidateControl }\n\t\t\tcustomValidity={ customValidity }\n\t\t\tlabel={ label }\n\t\t\tvalue={ value }\n\t\t\thelp={ description }\n\t\t\toptions={ elements }\n\t\t\tonChange={ onChangeControl }\n\t\t\t__next40pxDefaultSize\n\t\t\t__nextHasNoMarginBottom\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\tmultiple={ isMultiple }\n\t\t/>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
+ import { Icon, __experimentalInputControlPrefixWrapper as InputControlPrefixWrapper } from '@wordpress/components';
4
5
  import { mobile } from '@wordpress/icons';
5
6
 
6
7
  /**
@@ -21,7 +22,12 @@ export default function Telephone({
21
22
  onChange,
22
23
  hideLabelFromVision,
23
24
  type: 'tel',
24
- icon: mobile
25
+ prefix: /*#__PURE__*/_jsx(InputControlPrefixWrapper, {
26
+ variant: "icon",
27
+ children: /*#__PURE__*/_jsx(Icon, {
28
+ icon: mobile
29
+ })
30
+ })
25
31
  });
26
32
  }
27
33
  //# sourceMappingURL=telephone.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["mobile","ValidatedText","jsx","_jsx","Telephone","data","field","onChange","hideLabelFromVision","type","icon"],"sources":["@wordpress/dataviews/src/dataform-controls/telephone.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { mobile } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../types';\nimport ValidatedText from './utils/validated-input';\n\nexport default function Telephone< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n}: DataFormControlProps< Item > ) {\n\treturn (\n\t\t<ValidatedText\n\t\t\t{ ...{\n\t\t\t\tdata,\n\t\t\t\tfield,\n\t\t\t\tonChange,\n\t\t\t\thideLabelFromVision,\n\t\t\t\ttype: 'tel',\n\t\t\t\ticon: mobile,\n\t\t\t} }\n\t\t/>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,MAAM,QAAQ,kBAAkB;;AAEzC;AACA;AACA;;AAEA,OAAOC,aAAa,MAAM,yBAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEpD,eAAe,SAASC,SAASA,CAAU;EAC1CC,IAAI;EACJC,KAAK;EACLC,QAAQ;EACRC;AAC6B,CAAC,EAAG;EACjC,oBACCL,IAAA,CAACF,aAAa;IAEZI,IAAI;IACJC,KAAK;IACLC,QAAQ;IACRC,mBAAmB;IACnBC,IAAI,EAAE,KAAK;IACXC,IAAI,EAAEV;EAAM,CAEb,CAAC;AAEJ","ignoreList":[]}
1
+ {"version":3,"names":["Icon","__experimentalInputControlPrefixWrapper","InputControlPrefixWrapper","mobile","ValidatedText","jsx","_jsx","Telephone","data","field","onChange","hideLabelFromVision","type","prefix","variant","children","icon"],"sources":["@wordpress/dataviews/src/dataform-controls/telephone.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tIcon,\n\t__experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,\n} from '@wordpress/components';\nimport { mobile } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../types';\nimport ValidatedText from './utils/validated-input';\n\nexport default function Telephone< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n}: DataFormControlProps< Item > ) {\n\treturn (\n\t\t<ValidatedText\n\t\t\t{ ...{\n\t\t\t\tdata,\n\t\t\t\tfield,\n\t\t\t\tonChange,\n\t\t\t\thideLabelFromVision,\n\t\t\t\ttype: 'tel',\n\t\t\t\tprefix: (\n\t\t\t\t\t<InputControlPrefixWrapper variant=\"icon\">\n\t\t\t\t\t\t<Icon icon={ mobile } />\n\t\t\t\t\t</InputControlPrefixWrapper>\n\t\t\t\t),\n\t\t\t} }\n\t\t/>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SACCA,IAAI,EACJC,uCAAuC,IAAIC,yBAAyB,QAC9D,uBAAuB;AAC9B,SAASC,MAAM,QAAQ,kBAAkB;;AAEzC;AACA;AACA;;AAEA,OAAOC,aAAa,MAAM,yBAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEpD,eAAe,SAASC,SAASA,CAAU;EAC1CC,IAAI;EACJC,KAAK;EACLC,QAAQ;EACRC;AAC6B,CAAC,EAAG;EACjC,oBACCL,IAAA,CAACF,aAAa;IAEZI,IAAI;IACJC,KAAK;IACLC,QAAQ;IACRC,mBAAmB;IACnBC,IAAI,EAAE,KAAK;IACXC,MAAM,eACLP,IAAA,CAACJ,yBAAyB;MAACY,OAAO,EAAC,MAAM;MAAAC,QAAA,eACxCT,IAAA,CAACN,IAAI;QAACgB,IAAI,EAAGb;MAAQ,CAAE;IAAC,CACE;EAC3B,CAEF,CAAC;AAEJ","ignoreList":[]}
@@ -1,3 +1,8 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { createElement } from '@wordpress/element';
5
+
1
6
  /**
2
7
  * Internal dependencies
3
8
  */
@@ -8,13 +13,20 @@ export default function Text({
8
13
  data,
9
14
  field,
10
15
  onChange,
11
- hideLabelFromVision
16
+ hideLabelFromVision,
17
+ config
12
18
  }) {
19
+ const {
20
+ prefix,
21
+ suffix
22
+ } = config || {};
13
23
  return /*#__PURE__*/_jsx(ValidatedText, {
14
24
  data,
15
25
  field,
16
26
  onChange,
17
- hideLabelFromVision
27
+ hideLabelFromVision,
28
+ prefix: prefix ? createElement(prefix) : undefined,
29
+ suffix: suffix ? createElement(suffix) : undefined
18
30
  });
19
31
  }
20
32
  //# sourceMappingURL=text.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["ValidatedText","jsx","_jsx","Text","data","field","onChange","hideLabelFromVision"],"sources":["@wordpress/dataviews/src/dataform-controls/text.tsx"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../types';\nimport ValidatedText from './utils/validated-input';\n\nexport default function Text< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n}: DataFormControlProps< Item > ) {\n\treturn (\n\t\t<ValidatedText { ...{ data, field, onChange, hideLabelFromVision } } />\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;;AAEA,OAAOA,aAAa,MAAM,yBAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEpD,eAAe,SAASC,IAAIA,CAAU;EACrCC,IAAI;EACJC,KAAK;EACLC,QAAQ;EACRC;AAC6B,CAAC,EAAG;EACjC,oBACCL,IAAA,CAACF,aAAa;IAAQI,IAAI;IAAEC,KAAK;IAAEC,QAAQ;IAAEC;EAAmB,CAAM,CAAC;AAEzE","ignoreList":[]}
1
+ {"version":3,"names":["createElement","ValidatedText","jsx","_jsx","Text","data","field","onChange","hideLabelFromVision","config","prefix","suffix","undefined"],"sources":["@wordpress/dataviews/src/dataform-controls/text.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createElement } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../types';\nimport ValidatedText from './utils/validated-input';\n\nexport default function Text< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tconfig,\n}: DataFormControlProps< Item > ) {\n\tconst { prefix, suffix } = config || {};\n\n\treturn (\n\t\t<ValidatedText\n\t\t\t{ ...{\n\t\t\t\tdata,\n\t\t\t\tfield,\n\t\t\t\tonChange,\n\t\t\t\thideLabelFromVision,\n\t\t\t\tprefix: prefix ? createElement( prefix ) : undefined,\n\t\t\t\tsuffix: suffix ? createElement( suffix ) : undefined,\n\t\t\t} }\n\t\t/>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,aAAa,QAAQ,oBAAoB;;AAElD;AACA;AACA;;AAEA,OAAOC,aAAa,MAAM,yBAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEpD,eAAe,SAASC,IAAIA,CAAU;EACrCC,IAAI;EACJC,KAAK;EACLC,QAAQ;EACRC,mBAAmB;EACnBC;AAC6B,CAAC,EAAG;EACjC,MAAM;IAAEC,MAAM;IAAEC;EAAO,CAAC,GAAGF,MAAM,IAAI,CAAC,CAAC;EAEvC,oBACCN,IAAA,CAACF,aAAa;IAEZI,IAAI;IACJC,KAAK;IACLC,QAAQ;IACRC,mBAAmB;IACnBE,MAAM,EAAEA,MAAM,GAAGV,aAAa,CAAEU,MAAO,CAAC,GAAGE,SAAS;IACpDD,MAAM,EAAEA,MAAM,GAAGX,aAAa,CAAEW,MAAO,CAAC,GAAGC;EAAS,CAErD,CAAC;AAEJ","ignoreList":[]}