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