@wordpress/block-library 8.20.1 → 8.21.1-next.f8d8eceb.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 (412) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +12 -0
  3. package/build/avatar/index.js +5 -1
  4. package/build/avatar/index.js.map +1 -1
  5. package/build/block/edit-title.native.js +11 -3
  6. package/build/block/edit-title.native.js.map +1 -1
  7. package/build/block/index.js +2 -1
  8. package/build/block/index.js.map +1 -1
  9. package/build/code/edit.native.js +8 -2
  10. package/build/code/edit.native.js.map +1 -1
  11. package/build/column/edit.js +2 -1
  12. package/build/column/edit.js.map +1 -1
  13. package/build/column/edit.native.js +2 -1
  14. package/build/column/edit.native.js.map +1 -1
  15. package/build/columns/edit.native.js +2 -1
  16. package/build/columns/edit.native.js.map +1 -1
  17. package/build/cover/controls.native.js +2 -1
  18. package/build/cover/controls.native.js.map +1 -1
  19. package/build/cover/deprecated.js +110 -1
  20. package/build/cover/deprecated.js.map +1 -1
  21. package/build/cover/edit/index.js +11 -4
  22. package/build/cover/edit/index.js.map +1 -1
  23. package/build/cover/edit/inspector-controls.js +3 -3
  24. package/build/cover/edit/inspector-controls.js.map +1 -1
  25. package/build/cover/index.js +0 -3
  26. package/build/cover/index.js.map +1 -1
  27. package/build/cover/save.js +2 -1
  28. package/build/cover/save.js.map +1 -1
  29. package/build/cover/shared.js +1 -1
  30. package/build/cover/shared.js.map +1 -1
  31. package/build/file/view.js +1 -1
  32. package/build/file/view.js.map +1 -1
  33. package/build/footnotes/index.js +1 -0
  34. package/build/footnotes/index.js.map +1 -1
  35. package/build/form/edit.js +138 -0
  36. package/build/form/edit.js.map +1 -0
  37. package/build/form/index.js +92 -0
  38. package/build/form/index.js.map +1 -0
  39. package/build/form/init.js +13 -0
  40. package/build/form/init.js.map +1 -0
  41. package/build/form/save.js +28 -0
  42. package/build/form/save.js.map +1 -0
  43. package/build/form/utils.js +24 -0
  44. package/build/form/utils.js.map +1 -0
  45. package/build/form/variations.js +95 -0
  46. package/build/form/variations.js.map +1 -0
  47. package/build/form/view.js +42 -0
  48. package/build/form/view.js.map +1 -0
  49. package/build/form-input/edit.js +124 -0
  50. package/build/form-input/edit.js.map +1 -0
  51. package/build/form-input/index.js +105 -0
  52. package/build/form-input/index.js.map +1 -0
  53. package/build/form-input/init.js +13 -0
  54. package/build/form-input/init.js.map +1 -0
  55. package/build/form-input/save.js +87 -0
  56. package/build/form-input/save.js.map +1 -0
  57. package/build/form-input/variations.js +93 -0
  58. package/build/form-input/variations.js.map +1 -0
  59. package/build/form-submission-notification/edit.js +59 -0
  60. package/build/form-submission-notification/edit.js.map +1 -0
  61. package/build/form-submission-notification/index.js +56 -0
  62. package/build/form-submission-notification/index.js.map +1 -0
  63. package/build/form-submission-notification/init.js +13 -0
  64. package/build/form-submission-notification/init.js.map +1 -0
  65. package/build/form-submission-notification/save.js +33 -0
  66. package/build/form-submission-notification/save.js.map +1 -0
  67. package/build/form-submission-notification/variations.js +63 -0
  68. package/build/form-submission-notification/variations.js.map +1 -0
  69. package/build/form-submit-button/edit.js +32 -0
  70. package/build/form-submit-button/edit.js.map +1 -0
  71. package/build/form-submit-button/index.js +44 -0
  72. package/build/form-submit-button/index.js.map +1 -0
  73. package/build/form-submit-button/init.js +13 -0
  74. package/build/form-submit-button/init.js.map +1 -0
  75. package/build/form-submit-button/save.js +22 -0
  76. package/build/form-submit-button/save.js.map +1 -0
  77. package/build/group/edit.js +2 -11
  78. package/build/group/edit.js.map +1 -1
  79. package/build/group/index.js +0 -1
  80. package/build/group/index.js.map +1 -1
  81. package/build/heading/index.js +3 -2
  82. package/build/heading/index.js.map +1 -1
  83. package/build/html/preview.js +2 -4
  84. package/build/html/preview.js.map +1 -1
  85. package/build/image/image.js +15 -6
  86. package/build/image/image.js.map +1 -1
  87. package/build/image/view.js +71 -39
  88. package/build/image/view.js.map +1 -1
  89. package/build/index.js +10 -0
  90. package/build/index.js.map +1 -1
  91. package/build/latest-posts/edit.js +6 -2
  92. package/build/latest-posts/edit.js.map +1 -1
  93. package/build/list-item/hooks/use-merge.js +15 -15
  94. package/build/list-item/hooks/use-merge.js.map +1 -1
  95. package/build/lock-unlock.js +1 -1
  96. package/build/lock-unlock.js.map +1 -1
  97. package/build/missing/edit.native.js +54 -64
  98. package/build/missing/edit.native.js.map +1 -1
  99. package/build/navigation/edit/index.js +0 -1
  100. package/build/navigation/edit/index.js.map +1 -1
  101. package/build/navigation/index.js +2 -1
  102. package/build/navigation/index.js.map +1 -1
  103. package/build/navigation/view.js +27 -5
  104. package/build/navigation/view.js.map +1 -1
  105. package/build/page-list-item/edit.js +3 -1
  106. package/build/page-list-item/edit.js.map +1 -1
  107. package/build/paragraph/edit.js +1 -1
  108. package/build/paragraph/edit.js.map +1 -1
  109. package/build/paragraph/index.js +7 -0
  110. package/build/paragraph/index.js.map +1 -1
  111. package/build/pattern/index.js +2 -1
  112. package/build/pattern/index.js.map +1 -1
  113. package/build/post-featured-image/dimension-controls.js +2 -2
  114. package/build/post-featured-image/dimension-controls.js.map +1 -1
  115. package/build/query/edit/enhanced-pagination-modal.js +27 -13
  116. package/build/query/edit/enhanced-pagination-modal.js.map +1 -1
  117. package/build/query/edit/inspector-controls/enhanced-pagination-control.js +15 -12
  118. package/build/query/edit/inspector-controls/enhanced-pagination-control.js.map +1 -1
  119. package/build/query/utils.js +29 -8
  120. package/build/query/utils.js.map +1 -1
  121. package/build/query/view.js +4 -2
  122. package/build/query/view.js.map +1 -1
  123. package/build/search/edit.js +1 -2
  124. package/build/search/edit.js.map +1 -1
  125. package/build/social-link/edit.native.js +7 -19
  126. package/build/social-link/edit.native.js.map +1 -1
  127. package/build/spacer/controls.js +3 -3
  128. package/build/spacer/controls.js.map +1 -1
  129. package/build/spacer/controls.native.js +2 -1
  130. package/build/spacer/controls.native.js.map +1 -1
  131. package/build/spacer/edit.js +1 -1
  132. package/build/spacer/edit.js.map +1 -1
  133. package/build/spacer/edit.native.js +5 -1
  134. package/build/spacer/edit.native.js.map +1 -1
  135. package/build/tag-cloud/edit.js +2 -1
  136. package/build/tag-cloud/edit.js.map +1 -1
  137. package/build/template-part/edit/inner-blocks.js +2 -2
  138. package/build/template-part/edit/inner-blocks.js.map +1 -1
  139. package/build/template-part/index.js +2 -1
  140. package/build/template-part/index.js.map +1 -1
  141. package/build/term-description/index.js +0 -1
  142. package/build/term-description/index.js.map +1 -1
  143. package/build-module/avatar/index.js +5 -1
  144. package/build-module/avatar/index.js.map +1 -1
  145. package/build-module/block/edit-title.native.js +12 -4
  146. package/build-module/block/edit-title.native.js.map +1 -1
  147. package/build-module/block/index.js +2 -1
  148. package/build-module/block/index.js.map +1 -1
  149. package/build-module/code/edit.native.js +8 -2
  150. package/build-module/code/edit.native.js.map +1 -1
  151. package/build-module/column/edit.js +3 -2
  152. package/build-module/column/edit.js.map +1 -1
  153. package/build-module/column/edit.native.js +3 -2
  154. package/build-module/column/edit.native.js.map +1 -1
  155. package/build-module/columns/edit.native.js +3 -2
  156. package/build-module/columns/edit.native.js.map +1 -1
  157. package/build-module/cover/controls.native.js +3 -2
  158. package/build-module/cover/controls.native.js.map +1 -1
  159. package/build-module/cover/deprecated.js +110 -1
  160. package/build-module/cover/deprecated.js.map +1 -1
  161. package/build-module/cover/edit/index.js +12 -5
  162. package/build-module/cover/edit/index.js.map +1 -1
  163. package/build-module/cover/edit/inspector-controls.js +4 -4
  164. package/build-module/cover/edit/inspector-controls.js.map +1 -1
  165. package/build-module/cover/index.js +0 -3
  166. package/build-module/cover/index.js.map +1 -1
  167. package/build-module/cover/save.js +2 -1
  168. package/build-module/cover/save.js.map +1 -1
  169. package/build-module/cover/shared.js +1 -1
  170. package/build-module/cover/shared.js.map +1 -1
  171. package/build-module/file/view.js +2 -2
  172. package/build-module/file/view.js.map +1 -1
  173. package/build-module/footnotes/index.js +1 -0
  174. package/build-module/footnotes/index.js.map +1 -1
  175. package/build-module/form/edit.js +130 -0
  176. package/build-module/form/edit.js.map +1 -0
  177. package/build-module/form/index.js +82 -0
  178. package/build-module/form/index.js.map +1 -0
  179. package/build-module/form/init.js +6 -0
  180. package/build-module/form/init.js.map +1 -0
  181. package/build-module/form/save.js +20 -0
  182. package/build-module/form/save.js.map +1 -0
  183. package/build-module/form/utils.js +15 -0
  184. package/build-module/form/utils.js.map +1 -0
  185. package/build-module/form/variations.js +86 -0
  186. package/build-module/form/variations.js.map +1 -0
  187. package/build-module/form/view.js +40 -0
  188. package/build-module/form/view.js.map +1 -0
  189. package/build-module/form-input/edit.js +115 -0
  190. package/build-module/form-input/edit.js.map +1 -0
  191. package/build-module/form-input/index.js +95 -0
  192. package/build-module/form-input/index.js.map +1 -0
  193. package/build-module/form-input/init.js +6 -0
  194. package/build-module/form-input/init.js.map +1 -0
  195. package/build-module/form-input/save.js +80 -0
  196. package/build-module/form-input/save.js.map +1 -0
  197. package/build-module/form-input/variations.js +85 -0
  198. package/build-module/form-input/variations.js.map +1 -0
  199. package/build-module/form-submission-notification/edit.js +50 -0
  200. package/build-module/form-submission-notification/edit.js.map +1 -0
  201. package/build-module/form-submission-notification/index.js +47 -0
  202. package/build-module/form-submission-notification/index.js.map +1 -0
  203. package/build-module/form-submission-notification/init.js +6 -0
  204. package/build-module/form-submission-notification/init.js.map +1 -0
  205. package/build-module/form-submission-notification/save.js +25 -0
  206. package/build-module/form-submission-notification/save.js.map +1 -0
  207. package/build-module/form-submission-notification/variations.js +55 -0
  208. package/build-module/form-submission-notification/variations.js.map +1 -0
  209. package/build-module/form-submit-button/edit.js +24 -0
  210. package/build-module/form-submit-button/edit.js.map +1 -0
  211. package/build-module/form-submit-button/index.js +34 -0
  212. package/build-module/form-submit-button/index.js.map +1 -0
  213. package/build-module/form-submit-button/init.js +6 -0
  214. package/build-module/form-submit-button/init.js.map +1 -0
  215. package/build-module/form-submit-button/save.js +14 -0
  216. package/build-module/form-submit-button/save.js.map +1 -0
  217. package/build-module/group/edit.js +3 -12
  218. package/build-module/group/edit.js.map +1 -1
  219. package/build-module/group/index.js +0 -1
  220. package/build-module/group/index.js.map +1 -1
  221. package/build-module/heading/index.js +3 -2
  222. package/build-module/heading/index.js.map +1 -1
  223. package/build-module/html/preview.js +2 -4
  224. package/build-module/html/preview.js.map +1 -1
  225. package/build-module/image/image.js +16 -7
  226. package/build-module/image/image.js.map +1 -1
  227. package/build-module/image/view.js +71 -39
  228. package/build-module/image/view.js.map +1 -1
  229. package/build-module/index.js +10 -0
  230. package/build-module/index.js.map +1 -1
  231. package/build-module/latest-posts/edit.js +6 -2
  232. package/build-module/latest-posts/edit.js.map +1 -1
  233. package/build-module/list-item/hooks/use-merge.js +15 -15
  234. package/build-module/list-item/hooks/use-merge.js.map +1 -1
  235. package/build-module/lock-unlock.js +1 -1
  236. package/build-module/lock-unlock.js.map +1 -1
  237. package/build-module/missing/edit.native.js +58 -68
  238. package/build-module/missing/edit.native.js.map +1 -1
  239. package/build-module/navigation/edit/index.js +0 -1
  240. package/build-module/navigation/edit/index.js.map +1 -1
  241. package/build-module/navigation/index.js +2 -1
  242. package/build-module/navigation/index.js.map +1 -1
  243. package/build-module/navigation/view.js +27 -5
  244. package/build-module/navigation/view.js.map +1 -1
  245. package/build-module/page-list-item/edit.js +3 -1
  246. package/build-module/page-list-item/edit.js.map +1 -1
  247. package/build-module/paragraph/edit.js +2 -2
  248. package/build-module/paragraph/edit.js.map +1 -1
  249. package/build-module/paragraph/index.js +7 -0
  250. package/build-module/paragraph/index.js.map +1 -1
  251. package/build-module/pattern/index.js +2 -1
  252. package/build-module/pattern/index.js.map +1 -1
  253. package/build-module/post-featured-image/dimension-controls.js +3 -3
  254. package/build-module/post-featured-image/dimension-controls.js.map +1 -1
  255. package/build-module/query/edit/enhanced-pagination-modal.js +28 -14
  256. package/build-module/query/edit/enhanced-pagination-modal.js.map +1 -1
  257. package/build-module/query/edit/inspector-controls/enhanced-pagination-control.js +17 -14
  258. package/build-module/query/edit/inspector-controls/enhanced-pagination-control.js.map +1 -1
  259. package/build-module/query/utils.js +27 -5
  260. package/build-module/query/utils.js.map +1 -1
  261. package/build-module/query/view.js +4 -2
  262. package/build-module/query/view.js.map +1 -1
  263. package/build-module/search/edit.js +2 -3
  264. package/build-module/search/edit.js.map +1 -1
  265. package/build-module/social-link/edit.native.js +8 -20
  266. package/build-module/social-link/edit.native.js.map +1 -1
  267. package/build-module/spacer/controls.js +4 -4
  268. package/build-module/spacer/controls.js.map +1 -1
  269. package/build-module/spacer/controls.native.js +3 -2
  270. package/build-module/spacer/controls.native.js.map +1 -1
  271. package/build-module/spacer/edit.js +2 -2
  272. package/build-module/spacer/edit.js.map +1 -1
  273. package/build-module/spacer/edit.native.js +6 -2
  274. package/build-module/spacer/edit.native.js.map +1 -1
  275. package/build-module/tag-cloud/edit.js +3 -2
  276. package/build-module/tag-cloud/edit.js.map +1 -1
  277. package/build-module/template-part/edit/inner-blocks.js +3 -3
  278. package/build-module/template-part/edit/inner-blocks.js.map +1 -1
  279. package/build-module/template-part/index.js +2 -1
  280. package/build-module/template-part/index.js.map +1 -1
  281. package/build-module/term-description/index.js +0 -1
  282. package/build-module/term-description/index.js.map +1 -1
  283. package/build-style/editor-rtl.css +50 -0
  284. package/build-style/editor.css +50 -0
  285. package/build-style/file/style-rtl.css +0 -5
  286. package/build-style/file/style.css +0 -5
  287. package/build-style/form-input/editor-rtl.css +106 -0
  288. package/build-style/form-input/editor.css +106 -0
  289. package/build-style/form-input/style-rtl.css +135 -0
  290. package/build-style/form-input/style.css +135 -0
  291. package/build-style/form-submission-notification/editor-rtl.css +118 -0
  292. package/build-style/form-submission-notification/editor.css +118 -0
  293. package/build-style/form-submit-button/style-rtl.css +91 -0
  294. package/build-style/form-submit-button/style.css +91 -0
  295. package/build-style/image/style-rtl.css +39 -5
  296. package/build-style/image/style.css +39 -5
  297. package/build-style/navigation/style-rtl.css +5 -0
  298. package/build-style/navigation/style.css +5 -0
  299. package/build-style/query/style-rtl.css +0 -10
  300. package/build-style/query/style.css +0 -10
  301. package/build-style/style-rtl.css +92 -10
  302. package/build-style/style.css +92 -10
  303. package/package.json +32 -32
  304. package/src/avatar/block.json +5 -1
  305. package/src/block/block.json +2 -1
  306. package/src/block/edit-title.native.js +16 -13
  307. package/src/calendar/index.php +2 -6
  308. package/src/code/edit.native.js +15 -1
  309. package/src/column/edit.js +3 -8
  310. package/src/column/edit.native.js +3 -8
  311. package/src/columns/edit.native.js +3 -8
  312. package/src/comment-author-avatar/index.php +1 -1
  313. package/src/cover/block.json +0 -3
  314. package/src/cover/controls.native.js +3 -8
  315. package/src/cover/deprecated.js +151 -1
  316. package/src/cover/edit/index.js +15 -5
  317. package/src/cover/edit/inspector-controls.js +22 -33
  318. package/src/cover/save.js +2 -1
  319. package/src/cover/shared.js +1 -1
  320. package/src/editor.scss +2 -0
  321. package/src/file/index.php +2 -1
  322. package/src/file/style.scss +0 -6
  323. package/src/file/view.js +2 -2
  324. package/src/footnotes/block.json +1 -0
  325. package/src/form/block.json +60 -0
  326. package/src/form/edit.js +179 -0
  327. package/src/form/index.js +20 -0
  328. package/src/form/index.php +214 -0
  329. package/src/form/init.js +6 -0
  330. package/src/form/save.js +20 -0
  331. package/src/form/utils.js +39 -0
  332. package/src/form/variations.js +139 -0
  333. package/src/form/view.js +41 -0
  334. package/src/form-input/block.json +73 -0
  335. package/src/form-input/edit.js +151 -0
  336. package/src/form-input/editor.scss +24 -0
  337. package/src/form-input/index.js +20 -0
  338. package/src/form-input/index.php +45 -0
  339. package/src/form-input/init.js +6 -0
  340. package/src/form-input/save.js +83 -0
  341. package/src/form-input/style.scss +61 -0
  342. package/src/form-input/variations.js +82 -0
  343. package/src/form-submission-notification/block.json +19 -0
  344. package/src/form-submission-notification/edit.js +63 -0
  345. package/src/form-submission-notification/editor.scss +45 -0
  346. package/src/form-submission-notification/index.js +26 -0
  347. package/src/form-submission-notification/index.php +48 -0
  348. package/src/form-submission-notification/init.js +6 -0
  349. package/src/form-submission-notification/save.js +28 -0
  350. package/src/form-submission-notification/variations.js +59 -0
  351. package/src/form-submit-button/block.json +14 -0
  352. package/src/form-submit-button/edit.js +33 -0
  353. package/src/form-submit-button/index.js +18 -0
  354. package/src/form-submit-button/init.js +6 -0
  355. package/src/form-submit-button/save.js +14 -0
  356. package/src/form-submit-button/style.scss +3 -0
  357. package/src/freeform/test/__snapshots__/index.native.js.snap +7 -0
  358. package/src/freeform/test/index.native.js +57 -0
  359. package/src/group/block.json +0 -1
  360. package/src/group/edit.js +2 -7
  361. package/src/heading/index.js +4 -2
  362. package/src/html/preview.js +9 -4
  363. package/src/image/image.js +27 -6
  364. package/src/image/index.php +128 -83
  365. package/src/image/style.scss +49 -5
  366. package/src/image/view.js +93 -51
  367. package/src/index.js +10 -0
  368. package/src/latest-posts/edit.js +11 -2
  369. package/src/latest-posts/index.php +17 -8
  370. package/src/list-item/hooks/use-merge.js +20 -23
  371. package/src/lock-unlock.js +1 -1
  372. package/src/missing/edit.native.js +56 -117
  373. package/src/missing/style.native.scss +0 -67
  374. package/src/missing/test/edit-integration.native.js +135 -49
  375. package/src/missing/test/edit.native.js +0 -41
  376. package/src/navigation/block.json +2 -1
  377. package/src/navigation/edit/index.js +0 -1
  378. package/src/navigation/index.php +28 -8
  379. package/src/navigation/style.scss +6 -1
  380. package/src/navigation/view.js +25 -6
  381. package/src/page-list-item/edit.js +2 -0
  382. package/src/paragraph/edit.js +2 -2
  383. package/src/paragraph/index.js +10 -0
  384. package/src/pattern/block.json +2 -1
  385. package/src/pattern/index.php +0 -3
  386. package/src/post-featured-image/dimension-controls.js +3 -3
  387. package/src/post-navigation-link/index.php +2 -1
  388. package/src/preformatted/test/edit.native.js +38 -0
  389. package/src/query/edit/enhanced-pagination-modal.js +37 -21
  390. package/src/query/edit/inspector-controls/enhanced-pagination-control.js +18 -22
  391. package/src/query/index.php +100 -10
  392. package/src/query/style.scss +0 -11
  393. package/src/query/utils.js +29 -8
  394. package/src/query/view.js +11 -2
  395. package/src/query-pagination-next/index.php +1 -1
  396. package/src/query-pagination-previous/index.php +1 -1
  397. package/src/search/edit.js +5 -3
  398. package/src/search/index.php +0 -4
  399. package/src/social-link/edit.native.js +12 -26
  400. package/src/social-link/editor.native.scss +0 -9
  401. package/src/social-link/index.php +2 -2
  402. package/src/spacer/controls.js +9 -12
  403. package/src/spacer/controls.native.js +3 -8
  404. package/src/spacer/edit.js +2 -2
  405. package/src/spacer/edit.native.js +6 -5
  406. package/src/style.scss +1 -0
  407. package/src/tag-cloud/edit.js +3 -7
  408. package/src/template-part/block.json +2 -1
  409. package/src/template-part/edit/inner-blocks.js +3 -3
  410. package/src/template-part/index.php +4 -7
  411. package/src/term-description/block.json +0 -1
  412. package/src/verse/test/edit.native.js +37 -0
@@ -0,0 +1,130 @@
1
+ import { createElement, Fragment } from "react";
2
+ /**
3
+ * WordPress dependencies
4
+ */
5
+ import { __ } from '@wordpress/i18n';
6
+ import { InnerBlocks, useBlockProps, useInnerBlocksProps, InspectorControls, store as blockEditorStore } from '@wordpress/block-editor';
7
+ import { TextControl, SelectControl, PanelBody } from '@wordpress/components';
8
+ import { useSelect } from '@wordpress/data';
9
+
10
+ /**
11
+ * Internal dependencies
12
+ */
13
+ import { formSubmissionNotificationSuccess, formSubmissionNotificationError } from './utils.js';
14
+ const ALLOWED_BLOCKS = ['core/paragraph', 'core/heading', 'core/form-input', 'core/form-submit-button', 'core/form-submission-notification'];
15
+ const TEMPLATE = [formSubmissionNotificationSuccess, formSubmissionNotificationError, ['core/form-input', {
16
+ type: 'text',
17
+ label: __('Name'),
18
+ required: true
19
+ }], ['core/form-input', {
20
+ type: 'email',
21
+ label: __('Email'),
22
+ required: true
23
+ }], ['core/form-input', {
24
+ type: 'textarea',
25
+ label: __('Comment'),
26
+ required: true
27
+ }], ['core/form-submit-button', {}]];
28
+ const Edit = ({
29
+ attributes,
30
+ setAttributes,
31
+ clientId
32
+ }) => {
33
+ const {
34
+ action,
35
+ method,
36
+ email,
37
+ submissionMethod
38
+ } = attributes;
39
+ const blockProps = useBlockProps();
40
+ const {
41
+ hasInnerBlocks
42
+ } = useSelect(select => {
43
+ const {
44
+ getBlock
45
+ } = select(blockEditorStore);
46
+ const block = getBlock(clientId);
47
+ return {
48
+ hasInnerBlocks: !!(block && block.innerBlocks.length)
49
+ };
50
+ }, [clientId]);
51
+ const innerBlocksProps = useInnerBlocksProps(blockProps, {
52
+ allowedBlocks: ALLOWED_BLOCKS,
53
+ template: TEMPLATE,
54
+ renderAppender: hasInnerBlocks ? undefined : InnerBlocks.ButtonBlockAppender
55
+ });
56
+ return createElement(Fragment, null, createElement(InspectorControls, null, createElement(PanelBody, {
57
+ title: __('Settings')
58
+ }, createElement(SelectControl
59
+ // __nextHasNoMarginBottom
60
+ // size={ '__unstable-large' }
61
+ , {
62
+ label: __('Submissions method'),
63
+ options: [
64
+ // TODO: Allow plugins to add their own submission methods.
65
+ {
66
+ label: __('Send email'),
67
+ value: 'email'
68
+ }, {
69
+ label: __('- Custom -'),
70
+ value: 'custom'
71
+ }],
72
+ value: submissionMethod,
73
+ onChange: value => setAttributes({
74
+ submissionMethod: value
75
+ }),
76
+ help: submissionMethod === 'custom' ? __('Select the method to use for form submissions. Additional options for the "custom" mode can be found in the "Advanced" section.') : __('Select the method to use for form submissions.')
77
+ }), submissionMethod === 'email' && createElement(TextControl, {
78
+ __nextHasNoMarginBottom: true,
79
+ autoComplete: "off",
80
+ label: __('Email for form submissions'),
81
+ value: email,
82
+ required: true,
83
+ onChange: value => {
84
+ setAttributes({
85
+ email: value
86
+ });
87
+ setAttributes({
88
+ action: `mailto:${value}`
89
+ });
90
+ setAttributes({
91
+ method: 'post'
92
+ });
93
+ },
94
+ help: __('The email address where form submissions will be sent. Separate multiple email addresses with a comma.')
95
+ }))), submissionMethod !== 'email' && createElement(InspectorControls, {
96
+ group: "advanced"
97
+ }, createElement(SelectControl, {
98
+ __nextHasNoMarginBottom: true,
99
+ label: __('Method'),
100
+ options: [{
101
+ label: 'Get',
102
+ value: 'get'
103
+ }, {
104
+ label: 'Post',
105
+ value: 'post'
106
+ }],
107
+ value: method,
108
+ onChange: value => setAttributes({
109
+ method: value
110
+ }),
111
+ help: __('Select the method to use for form submissions.')
112
+ }), createElement(TextControl, {
113
+ __nextHasNoMarginBottom: true,
114
+ autoComplete: "off",
115
+ label: __('Form action'),
116
+ value: action,
117
+ onChange: newVal => {
118
+ setAttributes({
119
+ action: newVal
120
+ });
121
+ },
122
+ help: __('The URL where the form should be submitted.')
123
+ })), createElement("form", {
124
+ ...innerBlocksProps,
125
+ className: "wp-block-form",
126
+ encType: submissionMethod === 'email' ? 'text/plain' : null
127
+ }));
128
+ };
129
+ export default Edit;
130
+ //# sourceMappingURL=edit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__","InnerBlocks","useBlockProps","useInnerBlocksProps","InspectorControls","store","blockEditorStore","TextControl","SelectControl","PanelBody","useSelect","formSubmissionNotificationSuccess","formSubmissionNotificationError","ALLOWED_BLOCKS","TEMPLATE","type","label","required","Edit","attributes","setAttributes","clientId","action","method","email","submissionMethod","blockProps","hasInnerBlocks","select","getBlock","block","innerBlocks","length","innerBlocksProps","allowedBlocks","template","renderAppender","undefined","ButtonBlockAppender","createElement","Fragment","title","options","value","onChange","help","__nextHasNoMarginBottom","autoComplete","group","newVal","className","encType"],"sources":["@wordpress/block-library/src/form/edit.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tInnerBlocks,\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tInspectorControls,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { TextControl, SelectControl, PanelBody } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tformSubmissionNotificationSuccess,\n\tformSubmissionNotificationError,\n} from './utils.js';\n\nconst ALLOWED_BLOCKS = [\n\t'core/paragraph',\n\t'core/heading',\n\t'core/form-input',\n\t'core/form-submit-button',\n\t'core/form-submission-notification',\n];\n\nconst TEMPLATE = [\n\tformSubmissionNotificationSuccess,\n\tformSubmissionNotificationError,\n\t[\n\t\t'core/form-input',\n\t\t{\n\t\t\ttype: 'text',\n\t\t\tlabel: __( 'Name' ),\n\t\t\trequired: true,\n\t\t},\n\t],\n\t[\n\t\t'core/form-input',\n\t\t{\n\t\t\ttype: 'email',\n\t\t\tlabel: __( 'Email' ),\n\t\t\trequired: true,\n\t\t},\n\t],\n\t[\n\t\t'core/form-input',\n\t\t{\n\t\t\ttype: 'textarea',\n\t\t\tlabel: __( 'Comment' ),\n\t\t\trequired: true,\n\t\t},\n\t],\n\t[ 'core/form-submit-button', {} ],\n];\n\nconst Edit = ( { attributes, setAttributes, clientId } ) => {\n\tconst { action, method, email, submissionMethod } = attributes;\n\tconst blockProps = useBlockProps();\n\n\tconst { hasInnerBlocks } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlock } = select( blockEditorStore );\n\t\t\tconst block = getBlock( clientId );\n\t\t\treturn {\n\t\t\t\thasInnerBlocks: !! ( block && block.innerBlocks.length ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tallowedBlocks: ALLOWED_BLOCKS,\n\t\ttemplate: TEMPLATE,\n\t\trenderAppender: hasInnerBlocks\n\t\t\t? undefined\n\t\t\t: InnerBlocks.ButtonBlockAppender,\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t// __nextHasNoMarginBottom\n\t\t\t\t\t\t// size={ '__unstable-large' }\n\t\t\t\t\t\tlabel={ __( 'Submissions method' ) }\n\t\t\t\t\t\toptions={ [\n\t\t\t\t\t\t\t// TODO: Allow plugins to add their own submission methods.\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: __( 'Send email' ),\n\t\t\t\t\t\t\t\tvalue: 'email',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: __( '- Custom -' ),\n\t\t\t\t\t\t\t\tvalue: 'custom',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t] }\n\t\t\t\t\t\tvalue={ submissionMethod }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( { submissionMethod: value } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\tsubmissionMethod === 'custom'\n\t\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t\t'Select the method to use for form submissions. Additional options for the \"custom\" mode can be found in the \"Advanced\" section.'\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t\t'Select the method to use for form submissions.'\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t\t{ submissionMethod === 'email' && (\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\tlabel={ __( 'Email for form submissions' ) }\n\t\t\t\t\t\t\tvalue={ email }\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\tsetAttributes( { email: value } );\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\taction: `mailto:${ value }`,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\tsetAttributes( { method: 'post' } );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t'The email address where form submissions will be sent. Separate multiple email addresses with a comma.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t{ submissionMethod !== 'email' && (\n\t\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Method' ) }\n\t\t\t\t\t\toptions={ [\n\t\t\t\t\t\t\t{ label: 'Get', value: 'get' },\n\t\t\t\t\t\t\t{ label: 'Post', value: 'post' },\n\t\t\t\t\t\t] }\n\t\t\t\t\t\tvalue={ method }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( { method: value } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t'Select the method to use for form submissions.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\tlabel={ __( 'Form action' ) }\n\t\t\t\t\t\tvalue={ action }\n\t\t\t\t\t\tonChange={ ( newVal ) => {\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\taction: newVal,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t'The URL where the form should be submitted.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t</InspectorControls>\n\t\t\t) }\n\t\t\t<form\n\t\t\t\t{ ...innerBlocksProps }\n\t\t\t\tclassName=\"wp-block-form\"\n\t\t\t\tencType={ submissionMethod === 'email' ? 'text/plain' : null }\n\t\t\t/>\n\t\t</>\n\t);\n};\nexport default Edit;\n"],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import initBlock from '../utils/init-block';
5
+ import edit from './edit';
6
+ const metadata = {
7
+ $schema: "https://schemas.wp.org/trunk/block.json",
8
+ apiVersion: 3,
9
+ __experimental: true,
10
+ name: "core/form",
11
+ title: "Form",
12
+ category: "common",
13
+ description: "A form.",
14
+ keywords: ["container", "wrapper", "row", "section"],
15
+ textdomain: "default",
16
+ icon: "feedback",
17
+ attributes: {
18
+ submissionMethod: {
19
+ type: "string",
20
+ "default": "email"
21
+ },
22
+ method: {
23
+ type: "string",
24
+ "default": "post"
25
+ },
26
+ action: {
27
+ type: "string"
28
+ },
29
+ email: {
30
+ type: "string"
31
+ }
32
+ },
33
+ supports: {
34
+ anchor: true,
35
+ className: false,
36
+ color: {
37
+ gradients: true,
38
+ link: true,
39
+ __experimentalDefaultControls: {
40
+ background: true,
41
+ text: true,
42
+ link: true
43
+ }
44
+ },
45
+ spacing: {
46
+ margin: true,
47
+ padding: true
48
+ },
49
+ typography: {
50
+ fontSize: true,
51
+ lineHeight: true,
52
+ __experimentalFontFamily: true,
53
+ __experimentalTextDecoration: true,
54
+ __experimentalFontStyle: true,
55
+ __experimentalFontWeight: true,
56
+ __experimentalLetterSpacing: true,
57
+ __experimentalTextTransform: true,
58
+ __experimentalDefaultControls: {
59
+ fontSize: true
60
+ }
61
+ },
62
+ __experimentalSelector: "form"
63
+ },
64
+ viewScript: "file:./view.min.js"
65
+ };
66
+ import save from './save';
67
+ import variations from './variations';
68
+ const {
69
+ name
70
+ } = metadata;
71
+ export { metadata, name };
72
+ export const settings = {
73
+ edit,
74
+ save,
75
+ variations
76
+ };
77
+ export const init = () => initBlock({
78
+ name,
79
+ metadata,
80
+ settings
81
+ });
82
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["initBlock","edit","metadata","$schema","apiVersion","__experimental","name","title","category","description","keywords","textdomain","icon","attributes","submissionMethod","type","method","action","email","supports","anchor","className","color","gradients","link","__experimentalDefaultControls","background","text","spacing","margin","padding","typography","fontSize","lineHeight","__experimentalFontFamily","__experimentalTextDecoration","__experimentalFontStyle","__experimentalFontWeight","__experimentalLetterSpacing","__experimentalTextTransform","__experimentalSelector","viewScript","save","variations","settings","init"],"sources":["@wordpress/block-library/src/form/index.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport edit from './edit';\nimport metadata from './block.json';\nimport save from './save';\nimport variations from './variations';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\tedit,\n\tsave,\n\tvariations,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,SAAS,MAAM,qBAAqB;AAC3C,OAAOC,IAAI,MAAM,QAAQ;AAAC,MAAAC,QAAA;EAAAC,OAAA;EAAAC,UAAA;EAAAC,cAAA;EAAAC,IAAA;EAAAC,KAAA;EAAAC,QAAA;EAAAC,WAAA;EAAAC,QAAA;EAAAC,UAAA;EAAAC,IAAA;EAAAC,UAAA;IAAAC,gBAAA;MAAAC,IAAA;MAAA;IAAA;IAAAC,MAAA;MAAAD,IAAA;MAAA;IAAA;IAAAE,MAAA;MAAAF,IAAA;IAAA;IAAAG,KAAA;MAAAH,IAAA;IAAA;EAAA;EAAAI,QAAA;IAAAC,MAAA;IAAAC,SAAA;IAAAC,KAAA;MAAAC,SAAA;MAAAC,IAAA;MAAAC,6BAAA;QAAAC,UAAA;QAAAC,IAAA;QAAAH,IAAA;MAAA;IAAA;IAAAI,OAAA;MAAAC,MAAA;MAAAC,OAAA;IAAA;IAAAC,UAAA;MAAAC,QAAA;MAAAC,UAAA;MAAAC,wBAAA;MAAAC,4BAAA;MAAAC,uBAAA;MAAAC,wBAAA;MAAAC,2BAAA;MAAAC,2BAAA;MAAAd,6BAAA;QAAAO,QAAA;MAAA;IAAA;IAAAQ,sBAAA;EAAA;EAAAC,UAAA;AAAA;AAE1B,OAAOC,IAAI,MAAM,QAAQ;AACzB,OAAOC,UAAU,MAAM,cAAc;AAErC,MAAM;EAAErC;AAAK,CAAC,GAAGJ,QAAQ;AAEzB,SAASA,QAAQ,EAAEI,IAAI;AAEvB,OAAO,MAAMsC,QAAQ,GAAG;EACvB3C,IAAI;EACJyC,IAAI;EACJC;AACD,CAAC;AAED,OAAO,MAAME,IAAI,GAAGA,CAAA,KAAM7C,SAAS,CAAE;EAAEM,IAAI;EAAEJ,QAAQ;EAAE0C;AAAS,CAAE,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import { init } from './';
5
+ export default init();
6
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["init"],"sources":["@wordpress/block-library/src/form/init.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport { init } from './';\n\nexport default init();\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,IAAI,QAAQ,IAAI;AAEzB,eAAeA,IAAI,CAAC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { createElement } from "react";
2
+ /**
3
+ * WordPress dependencies
4
+ */
5
+ import { InnerBlocks, useBlockProps } from '@wordpress/block-editor';
6
+ const Save = ({
7
+ attributes
8
+ }) => {
9
+ const blockProps = useBlockProps.save();
10
+ const {
11
+ submissionMethod
12
+ } = attributes;
13
+ return createElement("form", {
14
+ ...blockProps,
15
+ className: "wp-block-form",
16
+ encType: submissionMethod === 'email' ? 'text/plain' : null
17
+ }, createElement(InnerBlocks.Content, null));
18
+ };
19
+ export default Save;
20
+ //# sourceMappingURL=save.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["InnerBlocks","useBlockProps","Save","attributes","blockProps","save","submissionMethod","createElement","className","encType","Content"],"sources":["@wordpress/block-library/src/form/save.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { InnerBlocks, useBlockProps } from '@wordpress/block-editor';\n\nconst Save = ( { attributes } ) => {\n\tconst blockProps = useBlockProps.save();\n\tconst { submissionMethod } = attributes;\n\n\treturn (\n\t\t<form\n\t\t\t{ ...blockProps }\n\t\t\tclassName=\"wp-block-form\"\n\t\t\tencType={ submissionMethod === 'email' ? 'text/plain' : null }\n\t\t>\n\t\t\t<InnerBlocks.Content />\n\t\t</form>\n\t);\n};\nexport default Save;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,WAAW,EAAEC,aAAa,QAAQ,yBAAyB;AAEpE,MAAMC,IAAI,GAAGA,CAAE;EAAEC;AAAW,CAAC,KAAM;EAClC,MAAMC,UAAU,GAAGH,aAAa,CAACI,IAAI,CAAC,CAAC;EACvC,MAAM;IAAEC;EAAiB,CAAC,GAAGH,UAAU;EAEvC,OACCI,aAAA;IAAA,GACMH,UAAU;IACfI,SAAS,EAAC,eAAe;IACzBC,OAAO,EAAGH,gBAAgB,KAAK,OAAO,GAAG,YAAY,GAAG;EAAM,GAE9DC,aAAA,CAACP,WAAW,CAACU,OAAO,MAAE,CACjB,CAAC;AAET,CAAC;AACD,eAAeR,IAAI"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __ } from '@wordpress/i18n';
5
+ export const formSubmissionNotificationSuccess = ['core/form-submission-notification', {
6
+ type: 'success'
7
+ }, [['core/paragraph', {
8
+ content: '<mark style="background-color:rgba(0, 0, 0, 0);color:#345C00" class="has-inline-color">' + __('Your form has been submitted successfully') + '</mark>'
9
+ }]]];
10
+ export const formSubmissionNotificationError = ['core/form-submission-notification', {
11
+ type: 'error'
12
+ }, [['core/paragraph', {
13
+ content: '<mark style="background-color:rgba(0, 0, 0, 0);color:#CF2E2E" class="has-inline-color">' + __('There was an error submitting your form.') + '</mark>'
14
+ }]]];
15
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__","formSubmissionNotificationSuccess","type","content","formSubmissionNotificationError"],"sources":["@wordpress/block-library/src/form/utils.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\nexport const formSubmissionNotificationSuccess = [\n\t'core/form-submission-notification',\n\t{\n\t\ttype: 'success',\n\t},\n\t[\n\t\t[\n\t\t\t'core/paragraph',\n\t\t\t{\n\t\t\t\tcontent:\n\t\t\t\t\t'<mark style=\"background-color:rgba(0, 0, 0, 0);color:#345C00\" class=\"has-inline-color\">' +\n\t\t\t\t\t__( 'Your form has been submitted successfully' ) +\n\t\t\t\t\t'</mark>',\n\t\t\t},\n\t\t],\n\t],\n];\nexport const formSubmissionNotificationError = [\n\t'core/form-submission-notification',\n\t{\n\t\ttype: 'error',\n\t},\n\t[\n\t\t[\n\t\t\t'core/paragraph',\n\t\t\t{\n\t\t\t\tcontent:\n\t\t\t\t\t'<mark style=\"background-color:rgba(0, 0, 0, 0);color:#CF2E2E\" class=\"has-inline-color\">' +\n\t\t\t\t\t__( 'There was an error submitting your form.' ) +\n\t\t\t\t\t'</mark>',\n\t\t\t},\n\t\t],\n\t],\n];\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AAEpC,OAAO,MAAMC,iCAAiC,GAAG,CAChD,mCAAmC,EACnC;EACCC,IAAI,EAAE;AACP,CAAC,EACD,CACC,CACC,gBAAgB,EAChB;EACCC,OAAO,EACN,yFAAyF,GACzFH,EAAE,CAAE,2CAA4C,CAAC,GACjD;AACF,CAAC,CACD,CACD,CACD;AACD,OAAO,MAAMI,+BAA+B,GAAG,CAC9C,mCAAmC,EACnC;EACCF,IAAI,EAAE;AACP,CAAC,EACD,CACC,CACC,gBAAgB,EAChB;EACCC,OAAO,EACN,yFAAyF,GACzFH,EAAE,CAAE,0CAA2C,CAAC,GAChD;AACF,CAAC,CACD,CACD,CACD"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __ } from '@wordpress/i18n';
5
+ /**
6
+ * Internal dependencies
7
+ */
8
+ import { formSubmissionNotificationSuccess, formSubmissionNotificationError } from './utils.js';
9
+ const variations = [{
10
+ name: 'comment-form',
11
+ title: __('Experimental Comment form'),
12
+ description: __('A comment form for posts and pages.'),
13
+ attributes: {
14
+ submissionMethod: 'custom',
15
+ action: '{SITE_URL}/wp-comments-post.php',
16
+ method: 'post',
17
+ anchor: 'comment-form'
18
+ },
19
+ isDefault: false,
20
+ innerBlocks: [['core/form-input', {
21
+ type: 'text',
22
+ name: 'author',
23
+ label: __('Name'),
24
+ required: true,
25
+ visibilityPermissions: 'logged-out'
26
+ }], ['core/form-input', {
27
+ type: 'email',
28
+ name: 'email',
29
+ label: __('Email'),
30
+ required: true,
31
+ visibilityPermissions: 'logged-out'
32
+ }], ['core/form-input', {
33
+ type: 'textarea',
34
+ name: 'comment',
35
+ label: __('Comment'),
36
+ required: true,
37
+ visibilityPermissions: 'all'
38
+ }], ['core/form-submit-button', {}]],
39
+ scope: ['inserter', 'transform'],
40
+ isActive: blockAttributes => !blockAttributes?.type || blockAttributes?.type === 'text'
41
+ }, {
42
+ name: 'wp-privacy-form',
43
+ title: __('Experimental privacy request form'),
44
+ keywords: ['GDPR'],
45
+ description: __('A form to request data exports and/or deletion.'),
46
+ attributes: {
47
+ submissionMethod: 'custom',
48
+ action: '',
49
+ method: 'post',
50
+ anchor: 'gdpr-form'
51
+ },
52
+ isDefault: false,
53
+ innerBlocks: [formSubmissionNotificationSuccess, formSubmissionNotificationError, ['core/paragraph', {
54
+ content: __('To request an export or deletion of your personal data on this site, please fill-in the form below. You can define the type of request you wish to perform, and your email address. Once the form is submitted, you will receive a confirmation email with instructions on the next steps.')
55
+ }], ['core/form-input', {
56
+ type: 'email',
57
+ name: 'email',
58
+ label: __('Enter your email address.'),
59
+ required: true,
60
+ visibilityPermissions: 'all'
61
+ }], ['core/form-input', {
62
+ type: 'checkbox',
63
+ name: 'export_personal_data',
64
+ label: __('Request data export'),
65
+ required: false,
66
+ visibilityPermissions: 'all'
67
+ }], ['core/form-input', {
68
+ type: 'checkbox',
69
+ name: 'remove_personal_data',
70
+ label: __('Request data deletion'),
71
+ required: false,
72
+ visibilityPermissions: 'all'
73
+ }], ['core/form-submit-button', {}], ['core/form-input', {
74
+ type: 'hidden',
75
+ name: 'wp-action',
76
+ value: 'wp_privacy_send_request'
77
+ }], ['core/form-input', {
78
+ type: 'hidden',
79
+ name: 'wp-privacy-request',
80
+ value: '1'
81
+ }]],
82
+ scope: ['inserter', 'transform'],
83
+ isActive: blockAttributes => !blockAttributes?.type || blockAttributes?.type === 'text'
84
+ }];
85
+ export default variations;
86
+ //# sourceMappingURL=variations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__","formSubmissionNotificationSuccess","formSubmissionNotificationError","variations","name","title","description","attributes","submissionMethod","action","method","anchor","isDefault","innerBlocks","type","label","required","visibilityPermissions","scope","isActive","blockAttributes","keywords","content","value"],"sources":["@wordpress/block-library/src/form/variations.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n/**\n * Internal dependencies\n */\nimport {\n\tformSubmissionNotificationSuccess,\n\tformSubmissionNotificationError,\n} from './utils.js';\n\nconst variations = [\n\t{\n\t\tname: 'comment-form',\n\t\ttitle: __( 'Experimental Comment form' ),\n\t\tdescription: __( 'A comment form for posts and pages.' ),\n\t\tattributes: {\n\t\t\tsubmissionMethod: 'custom',\n\t\t\taction: '{SITE_URL}/wp-comments-post.php',\n\t\t\tmethod: 'post',\n\t\t\tanchor: 'comment-form',\n\t\t},\n\t\tisDefault: false,\n\t\tinnerBlocks: [\n\t\t\t[\n\t\t\t\t'core/form-input',\n\t\t\t\t{\n\t\t\t\t\ttype: 'text',\n\t\t\t\t\tname: 'author',\n\t\t\t\t\tlabel: __( 'Name' ),\n\t\t\t\t\trequired: true,\n\t\t\t\t\tvisibilityPermissions: 'logged-out',\n\t\t\t\t},\n\t\t\t],\n\t\t\t[\n\t\t\t\t'core/form-input',\n\t\t\t\t{\n\t\t\t\t\ttype: 'email',\n\t\t\t\t\tname: 'email',\n\t\t\t\t\tlabel: __( 'Email' ),\n\t\t\t\t\trequired: true,\n\t\t\t\t\tvisibilityPermissions: 'logged-out',\n\t\t\t\t},\n\t\t\t],\n\t\t\t[\n\t\t\t\t'core/form-input',\n\t\t\t\t{\n\t\t\t\t\ttype: 'textarea',\n\t\t\t\t\tname: 'comment',\n\t\t\t\t\tlabel: __( 'Comment' ),\n\t\t\t\t\trequired: true,\n\t\t\t\t\tvisibilityPermissions: 'all',\n\t\t\t\t},\n\t\t\t],\n\t\t\t[ 'core/form-submit-button', {} ],\n\t\t],\n\t\tscope: [ 'inserter', 'transform' ],\n\t\tisActive: ( blockAttributes ) =>\n\t\t\t! blockAttributes?.type || blockAttributes?.type === 'text',\n\t},\n\t{\n\t\tname: 'wp-privacy-form',\n\t\ttitle: __( 'Experimental privacy request form' ),\n\t\tkeywords: [ 'GDPR' ],\n\t\tdescription: __( 'A form to request data exports and/or deletion.' ),\n\t\tattributes: {\n\t\t\tsubmissionMethod: 'custom',\n\t\t\taction: '',\n\t\t\tmethod: 'post',\n\t\t\tanchor: 'gdpr-form',\n\t\t},\n\t\tisDefault: false,\n\t\tinnerBlocks: [\n\t\t\tformSubmissionNotificationSuccess,\n\t\t\tformSubmissionNotificationError,\n\t\t\t[\n\t\t\t\t'core/paragraph',\n\t\t\t\t{\n\t\t\t\t\tcontent: __(\n\t\t\t\t\t\t'To request an export or deletion of your personal data on this site, please fill-in the form below. You can define the type of request you wish to perform, and your email address. Once the form is submitted, you will receive a confirmation email with instructions on the next steps.'\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t],\n\t\t\t[\n\t\t\t\t'core/form-input',\n\t\t\t\t{\n\t\t\t\t\ttype: 'email',\n\t\t\t\t\tname: 'email',\n\t\t\t\t\tlabel: __( 'Enter your email address.' ),\n\t\t\t\t\trequired: true,\n\t\t\t\t\tvisibilityPermissions: 'all',\n\t\t\t\t},\n\t\t\t],\n\t\t\t[\n\t\t\t\t'core/form-input',\n\t\t\t\t{\n\t\t\t\t\ttype: 'checkbox',\n\t\t\t\t\tname: 'export_personal_data',\n\t\t\t\t\tlabel: __( 'Request data export' ),\n\t\t\t\t\trequired: false,\n\t\t\t\t\tvisibilityPermissions: 'all',\n\t\t\t\t},\n\t\t\t],\n\t\t\t[\n\t\t\t\t'core/form-input',\n\t\t\t\t{\n\t\t\t\t\ttype: 'checkbox',\n\t\t\t\t\tname: 'remove_personal_data',\n\t\t\t\t\tlabel: __( 'Request data deletion' ),\n\t\t\t\t\trequired: false,\n\t\t\t\t\tvisibilityPermissions: 'all',\n\t\t\t\t},\n\t\t\t],\n\t\t\t[ 'core/form-submit-button', {} ],\n\t\t\t[\n\t\t\t\t'core/form-input',\n\t\t\t\t{\n\t\t\t\t\ttype: 'hidden',\n\t\t\t\t\tname: 'wp-action',\n\t\t\t\t\tvalue: 'wp_privacy_send_request',\n\t\t\t\t},\n\t\t\t],\n\t\t\t[\n\t\t\t\t'core/form-input',\n\t\t\t\t{\n\t\t\t\t\ttype: 'hidden',\n\t\t\t\t\tname: 'wp-privacy-request',\n\t\t\t\t\tvalue: '1',\n\t\t\t\t},\n\t\t\t],\n\t\t],\n\t\tscope: [ 'inserter', 'transform' ],\n\t\tisActive: ( blockAttributes ) =>\n\t\t\t! blockAttributes?.type || blockAttributes?.type === 'text',\n\t},\n];\n\nexport default variations;\n"],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ // eslint-disable-next-line eslint-comments/disable-enable-pair
2
+ /* eslint-disable no-undef */
3
+ document.querySelectorAll('form.wp-block-form').forEach(function (form) {
4
+ // Bail If the form is not using the mailto: action.
5
+ if (!form.action || !form.action.startsWith('mailto:')) {
6
+ return;
7
+ }
8
+ const redirectNotification = status => {
9
+ const urlParams = new URLSearchParams(window.location.search);
10
+ urlParams.append('wp-form-result', status);
11
+ window.location.search = urlParams.toString();
12
+ };
13
+
14
+ // Add an event listener for the form submission.
15
+ form.addEventListener('submit', async function (event) {
16
+ event.preventDefault();
17
+ // Get the form data and merge it with the form action and nonce.
18
+ const formData = Object.fromEntries(new FormData(form).entries());
19
+ formData.formAction = form.action;
20
+ formData._ajax_nonce = wpBlockFormSettings.nonce;
21
+ formData.action = wpBlockFormSettings.action;
22
+ try {
23
+ const response = await fetch(wpBlockFormSettings.ajaxUrl, {
24
+ method: 'POST',
25
+ headers: {
26
+ 'Content-Type': 'application/x-www-form-urlencoded'
27
+ },
28
+ body: new URLSearchParams(formData).toString()
29
+ });
30
+ if (response.ok) {
31
+ redirectNotification('success');
32
+ } else {
33
+ redirectNotification('error');
34
+ }
35
+ } catch (error) {
36
+ redirectNotification('error');
37
+ }
38
+ });
39
+ });
40
+ //# sourceMappingURL=view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["document","querySelectorAll","forEach","form","action","startsWith","redirectNotification","status","urlParams","URLSearchParams","window","location","search","append","toString","addEventListener","event","preventDefault","formData","Object","fromEntries","FormData","entries","formAction","_ajax_nonce","wpBlockFormSettings","nonce","response","fetch","ajaxUrl","method","headers","body","ok","error"],"sources":["@wordpress/block-library/src/form/view.js"],"sourcesContent":["// eslint-disable-next-line eslint-comments/disable-enable-pair\n/* eslint-disable no-undef */\ndocument.querySelectorAll( 'form.wp-block-form' ).forEach( function ( form ) {\n\t// Bail If the form is not using the mailto: action.\n\tif ( ! form.action || ! form.action.startsWith( 'mailto:' ) ) {\n\t\treturn;\n\t}\n\n\tconst redirectNotification = ( status ) => {\n\t\tconst urlParams = new URLSearchParams( window.location.search );\n\t\turlParams.append( 'wp-form-result', status );\n\t\twindow.location.search = urlParams.toString();\n\t};\n\n\t// Add an event listener for the form submission.\n\tform.addEventListener( 'submit', async function ( event ) {\n\t\tevent.preventDefault();\n\t\t// Get the form data and merge it with the form action and nonce.\n\t\tconst formData = Object.fromEntries( new FormData( form ).entries() );\n\t\tformData.formAction = form.action;\n\t\tformData._ajax_nonce = wpBlockFormSettings.nonce;\n\t\tformData.action = wpBlockFormSettings.action;\n\n\t\ttry {\n\t\t\tconst response = await fetch( wpBlockFormSettings.ajaxUrl, {\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/x-www-form-urlencoded',\n\t\t\t\t},\n\t\t\t\tbody: new URLSearchParams( formData ).toString(),\n\t\t\t} );\n\t\t\tif ( response.ok ) {\n\t\t\t\tredirectNotification( 'success' );\n\t\t\t} else {\n\t\t\t\tredirectNotification( 'error' );\n\t\t\t}\n\t\t} catch ( error ) {\n\t\t\tredirectNotification( 'error' );\n\t\t}\n\t} );\n} );\n"],"mappings":"AAAA;AACA;AACAA,QAAQ,CAACC,gBAAgB,CAAE,oBAAqB,CAAC,CAACC,OAAO,CAAE,UAAWC,IAAI,EAAG;EAC5E;EACA,IAAK,CAAEA,IAAI,CAACC,MAAM,IAAI,CAAED,IAAI,CAACC,MAAM,CAACC,UAAU,CAAE,SAAU,CAAC,EAAG;IAC7D;EACD;EAEA,MAAMC,oBAAoB,GAAKC,MAAM,IAAM;IAC1C,MAAMC,SAAS,GAAG,IAAIC,eAAe,CAAEC,MAAM,CAACC,QAAQ,CAACC,MAAO,CAAC;IAC/DJ,SAAS,CAACK,MAAM,CAAE,gBAAgB,EAAEN,MAAO,CAAC;IAC5CG,MAAM,CAACC,QAAQ,CAACC,MAAM,GAAGJ,SAAS,CAACM,QAAQ,CAAC,CAAC;EAC9C,CAAC;;EAED;EACAX,IAAI,CAACY,gBAAgB,CAAE,QAAQ,EAAE,gBAAiBC,KAAK,EAAG;IACzDA,KAAK,CAACC,cAAc,CAAC,CAAC;IACtB;IACA,MAAMC,QAAQ,GAAGC,MAAM,CAACC,WAAW,CAAE,IAAIC,QAAQ,CAAElB,IAAK,CAAC,CAACmB,OAAO,CAAC,CAAE,CAAC;IACrEJ,QAAQ,CAACK,UAAU,GAAGpB,IAAI,CAACC,MAAM;IACjCc,QAAQ,CAACM,WAAW,GAAGC,mBAAmB,CAACC,KAAK;IAChDR,QAAQ,CAACd,MAAM,GAAGqB,mBAAmB,CAACrB,MAAM;IAE5C,IAAI;MACH,MAAMuB,QAAQ,GAAG,MAAMC,KAAK,CAAEH,mBAAmB,CAACI,OAAO,EAAE;QAC1DC,MAAM,EAAE,MAAM;QACdC,OAAO,EAAE;UACR,cAAc,EAAE;QACjB,CAAC;QACDC,IAAI,EAAE,IAAIvB,eAAe,CAAES,QAAS,CAAC,CAACJ,QAAQ,CAAC;MAChD,CAAE,CAAC;MACH,IAAKa,QAAQ,CAACM,EAAE,EAAG;QAClB3B,oBAAoB,CAAE,SAAU,CAAC;MAClC,CAAC,MAAM;QACNA,oBAAoB,CAAE,OAAQ,CAAC;MAChC;IACD,CAAC,CAAC,OAAQ4B,KAAK,EAAG;MACjB5B,oBAAoB,CAAE,OAAQ,CAAC;IAChC;EACD,CAAE,CAAC;AACJ,CAAE,CAAC"}
@@ -0,0 +1,115 @@
1
+ import { createElement, Fragment } from "react";
2
+ /**
3
+ * External dependencies
4
+ */
5
+ import classNames from 'classnames';
6
+
7
+ /**
8
+ * WordPress dependencies
9
+ */
10
+ import { __ } from '@wordpress/i18n';
11
+ import { InspectorControls, RichText, useBlockProps, __experimentalUseBorderProps as useBorderProps, __experimentalUseColorProps as useColorProps } from '@wordpress/block-editor';
12
+ import { PanelBody, TextControl, CheckboxControl } from '@wordpress/components';
13
+ import { useRef } from '@wordpress/element';
14
+ function InputFieldBlock({
15
+ attributes,
16
+ setAttributes,
17
+ className
18
+ }) {
19
+ const {
20
+ type,
21
+ name,
22
+ label,
23
+ inlineLabel,
24
+ required,
25
+ placeholder,
26
+ value
27
+ } = attributes;
28
+ const blockProps = useBlockProps();
29
+ const ref = useRef();
30
+ const TagName = type === 'textarea' ? 'textarea' : 'input';
31
+ const borderProps = useBorderProps(attributes);
32
+ const colorProps = useColorProps(attributes);
33
+ if (ref.current) {
34
+ ref.current.focus();
35
+ }
36
+ const controls = createElement(Fragment, null, 'hidden' !== type && createElement(InspectorControls, null, createElement(PanelBody, {
37
+ title: __('Input settings')
38
+ }, 'checkbox' !== type && createElement(CheckboxControl, {
39
+ label: __('Inline label'),
40
+ checked: inlineLabel,
41
+ onChange: newVal => {
42
+ setAttributes({
43
+ inlineLabel: newVal
44
+ });
45
+ }
46
+ }), createElement(CheckboxControl, {
47
+ label: __('Required'),
48
+ checked: required,
49
+ onChange: newVal => {
50
+ setAttributes({
51
+ required: newVal
52
+ });
53
+ }
54
+ }))), createElement(InspectorControls, {
55
+ __experimentalGroup: "advanced"
56
+ }, createElement(TextControl, {
57
+ autoComplete: "off",
58
+ label: __('Name'),
59
+ value: name,
60
+ onChange: newVal => {
61
+ setAttributes({
62
+ name: newVal
63
+ });
64
+ },
65
+ help: __('Affects the "name" atribute of the input element, and is used as a name for the form submission results.')
66
+ })));
67
+ if ('hidden' === type) {
68
+ return createElement(Fragment, null, controls, createElement("input", {
69
+ type: "hidden",
70
+ className: classNames(className, 'wp-block-form-input__input', colorProps.className, borderProps.className),
71
+ "aria-label": __('Value'),
72
+ value: value,
73
+ onChange: event => setAttributes({
74
+ value: event.target.value
75
+ })
76
+ }));
77
+ }
78
+ return createElement("div", {
79
+ ...blockProps
80
+ }, controls, createElement("span", {
81
+ className: classNames('wp-block-form-input__label', {
82
+ 'is-label-inline': inlineLabel || 'checkbox' === type
83
+ })
84
+ }, createElement(RichText, {
85
+ tagName: "span",
86
+ className: "wp-block-form-input__label-content",
87
+ value: label,
88
+ onChange: newLabel => setAttributes({
89
+ label: newLabel
90
+ }),
91
+ "aria-label": label ? __('Label') : __('Empty label'),
92
+ "data-empty": label ? false : true,
93
+ placeholder: __('Type the label for this input')
94
+ }), createElement(TagName, {
95
+ type: 'textarea' === type ? undefined : type,
96
+ className: classNames(className, 'wp-block-form-input__input', colorProps.className, borderProps.className),
97
+ "aria-label": __('Optional placeholder text')
98
+ // We hide the placeholder field's placeholder when there is a value. This
99
+ // stops screen readers from reading the placeholder field's placeholder
100
+ // which is confusing.
101
+ ,
102
+ placeholder: placeholder ? undefined : __('Optional placeholder…'),
103
+ value: placeholder,
104
+ onChange: event => setAttributes({
105
+ placeholder: event.target.value
106
+ }),
107
+ "aria-required": required,
108
+ style: {
109
+ ...borderProps.style,
110
+ ...colorProps.style
111
+ }
112
+ })));
113
+ }
114
+ export default InputFieldBlock;
115
+ //# sourceMappingURL=edit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["classNames","__","InspectorControls","RichText","useBlockProps","__experimentalUseBorderProps","useBorderProps","__experimentalUseColorProps","useColorProps","PanelBody","TextControl","CheckboxControl","useRef","InputFieldBlock","attributes","setAttributes","className","type","name","label","inlineLabel","required","placeholder","value","blockProps","ref","TagName","borderProps","colorProps","current","focus","controls","createElement","Fragment","title","checked","onChange","newVal","__experimentalGroup","autoComplete","help","event","target","tagName","newLabel","undefined","style"],"sources":["@wordpress/block-library/src/form-input/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classNames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tInspectorControls,\n\tRichText,\n\tuseBlockProps,\n\t__experimentalUseBorderProps as useBorderProps,\n\t__experimentalUseColorProps as useColorProps,\n} from '@wordpress/block-editor';\nimport { PanelBody, TextControl, CheckboxControl } from '@wordpress/components';\n\nimport { useRef } from '@wordpress/element';\n\nfunction InputFieldBlock( { attributes, setAttributes, className } ) {\n\tconst { type, name, label, inlineLabel, required, placeholder, value } =\n\t\tattributes;\n\tconst blockProps = useBlockProps();\n\tconst ref = useRef();\n\tconst TagName = type === 'textarea' ? 'textarea' : 'input';\n\n\tconst borderProps = useBorderProps( attributes );\n\tconst colorProps = useColorProps( attributes );\n\tif ( ref.current ) {\n\t\tref.current.focus();\n\t}\n\n\tconst controls = (\n\t\t<>\n\t\t\t{ 'hidden' !== type && (\n\t\t\t\t<InspectorControls>\n\t\t\t\t\t<PanelBody title={ __( 'Input settings' ) }>\n\t\t\t\t\t\t{ 'checkbox' !== type && (\n\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\tlabel={ __( 'Inline label' ) }\n\t\t\t\t\t\t\t\tchecked={ inlineLabel }\n\t\t\t\t\t\t\t\tonChange={ ( newVal ) => {\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\tinlineLabel: newVal,\n\t\t\t\t\t\t\t\t\t} );\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\t<CheckboxControl\n\t\t\t\t\t\t\tlabel={ __( 'Required' ) }\n\t\t\t\t\t\t\tchecked={ required }\n\t\t\t\t\t\t\tonChange={ ( newVal ) => {\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\trequired: newVal,\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</PanelBody>\n\t\t\t\t</InspectorControls>\n\t\t\t) }\n\t\t\t<InspectorControls __experimentalGroup=\"advanced\">\n\t\t\t\t<TextControl\n\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\tvalue={ name }\n\t\t\t\t\tonChange={ ( newVal ) => {\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\tname: newVal,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} }\n\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t'Affects the \"name\" atribute of the input element, and is used as a name for the form submission results.'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t</>\n\t);\n\n\tif ( 'hidden' === type ) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ controls }\n\t\t\t\t<input\n\t\t\t\t\ttype=\"hidden\"\n\t\t\t\t\tclassName={ classNames(\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t'wp-block-form-input__input',\n\t\t\t\t\t\tcolorProps.className,\n\t\t\t\t\t\tborderProps.className\n\t\t\t\t\t) }\n\t\t\t\t\taria-label={ __( 'Value' ) }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ ( event ) =>\n\t\t\t\t\t\tsetAttributes( { value: event.target.value } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div { ...blockProps }>\n\t\t\t{ controls }\n\t\t\t<span\n\t\t\t\tclassName={ classNames( 'wp-block-form-input__label', {\n\t\t\t\t\t'is-label-inline': inlineLabel || 'checkbox' === type,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t<RichText\n\t\t\t\t\ttagName=\"span\"\n\t\t\t\t\tclassName=\"wp-block-form-input__label-content\"\n\t\t\t\t\tvalue={ label }\n\t\t\t\t\tonChange={ ( newLabel ) =>\n\t\t\t\t\t\tsetAttributes( { label: newLabel } )\n\t\t\t\t\t}\n\t\t\t\t\taria-label={ label ? __( 'Label' ) : __( 'Empty label' ) }\n\t\t\t\t\tdata-empty={ label ? false : true }\n\t\t\t\t\tplaceholder={ __( 'Type the label for this input' ) }\n\t\t\t\t/>\n\t\t\t\t<TagName\n\t\t\t\t\ttype={ 'textarea' === type ? undefined : type }\n\t\t\t\t\tclassName={ classNames(\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t'wp-block-form-input__input',\n\t\t\t\t\t\tcolorProps.className,\n\t\t\t\t\t\tborderProps.className\n\t\t\t\t\t) }\n\t\t\t\t\taria-label={ __( 'Optional placeholder text' ) }\n\t\t\t\t\t// We hide the placeholder field's placeholder when there is a value. This\n\t\t\t\t\t// stops screen readers from reading the placeholder field's placeholder\n\t\t\t\t\t// which is confusing.\n\t\t\t\t\tplaceholder={\n\t\t\t\t\t\tplaceholder ? undefined : __( 'Optional placeholder…' )\n\t\t\t\t\t}\n\t\t\t\t\tvalue={ placeholder }\n\t\t\t\t\tonChange={ ( event ) =>\n\t\t\t\t\t\tsetAttributes( { placeholder: event.target.value } )\n\t\t\t\t\t}\n\t\t\t\t\taria-required={ required }\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t...borderProps.style,\n\t\t\t\t\t\t...colorProps.style,\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</span>\n\t\t</div>\n\t);\n}\n\nexport default InputFieldBlock;\n"],"mappings":"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"}