@wordpress/block-library 9.24.0 → 9.26.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 (300) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/avatar/edit.js +84 -39
  3. package/build/avatar/edit.js.map +1 -1
  4. package/build/avatar/user-control.js +32 -17
  5. package/build/avatar/user-control.js.map +1 -1
  6. package/build/button/edit.js +29 -17
  7. package/build/button/edit.js.map +1 -1
  8. package/build/columns/edit.js +18 -22
  9. package/build/columns/edit.js.map +1 -1
  10. package/build/comment-author-name/edit.js +41 -12
  11. package/build/comment-author-name/edit.js.map +1 -1
  12. package/build/comment-date/edit.js +41 -12
  13. package/build/comment-date/edit.js.map +1 -1
  14. package/build/comment-edit-link/edit.js +27 -7
  15. package/build/comment-edit-link/edit.js.map +1 -1
  16. package/build/comments/edit/comments-inspector-controls.js +1 -3
  17. package/build/comments/edit/comments-inspector-controls.js.map +1 -1
  18. package/build/comments-pagination/edit.js +23 -9
  19. package/build/comments-pagination/edit.js.map +1 -1
  20. package/build/comments-title/edit.js +41 -12
  21. package/build/comments-title/edit.js.map +1 -1
  22. package/build/details/edit.js +27 -3
  23. package/build/details/edit.js.map +1 -1
  24. package/build/embed/edit.js +2 -4
  25. package/build/embed/edit.js.map +1 -1
  26. package/build/embed/embed-controls.js +41 -22
  27. package/build/embed/embed-controls.js.map +1 -1
  28. package/build/embed/variations.js +0 -10
  29. package/build/embed/variations.js.map +1 -1
  30. package/build/file/inspector.js +73 -30
  31. package/build/file/inspector.js.map +1 -1
  32. package/build/form/edit.js +67 -38
  33. package/build/form/edit.js.map +1 -1
  34. package/build/form/index.js +3 -3
  35. package/build/form/index.js.map +1 -1
  36. package/build/form-input/edit.js +47 -18
  37. package/build/form-input/edit.js.map +1 -1
  38. package/build/form-input/index.js +2 -1
  39. package/build/form-input/index.js.map +1 -1
  40. package/build/form-submission-notification/index.js +2 -1
  41. package/build/form-submission-notification/index.js.map +1 -1
  42. package/build/form-submit-button/index.js +2 -1
  43. package/build/form-submit-button/index.js.map +1 -1
  44. package/build/image/image.js +1 -0
  45. package/build/image/image.js.map +1 -1
  46. package/build/image/view.js +0 -3
  47. package/build/image/view.js.map +1 -1
  48. package/build/latest-posts/edit.js +154 -82
  49. package/build/latest-posts/edit.js.map +1 -1
  50. package/build/list/ordered-list-settings.js +131 -52
  51. package/build/list/ordered-list-settings.js.map +1 -1
  52. package/build/navigation/edit/index.js +93 -51
  53. package/build/navigation/edit/index.js.map +1 -1
  54. package/build/navigation/edit/overlay-menu-preview.js +43 -27
  55. package/build/navigation/edit/overlay-menu-preview.js.map +1 -1
  56. package/build/navigation-link/edit.js +11 -0
  57. package/build/navigation-link/edit.js.map +1 -1
  58. package/build/navigation-link/index.js +3 -0
  59. package/build/navigation-link/index.js.map +1 -1
  60. package/build/navigation-link/transforms.js +2 -0
  61. package/build/navigation-link/transforms.js.map +1 -1
  62. package/build/navigation-link/update-attributes.js +1 -0
  63. package/build/navigation-link/update-attributes.js.map +1 -1
  64. package/build/navigation-submenu/index.js +3 -0
  65. package/build/navigation-submenu/index.js.map +1 -1
  66. package/build/post-author/edit.js +75 -18
  67. package/build/post-author/edit.js.map +1 -1
  68. package/build/post-comments-count/index.js +3 -1
  69. package/build/post-comments-count/index.js.map +1 -1
  70. package/build/post-comments-count/transforms.js +26 -0
  71. package/build/post-comments-count/transforms.js.map +1 -0
  72. package/build/post-comments-link/index.js +3 -1
  73. package/build/post-comments-link/index.js.map +1 -1
  74. package/build/post-comments-link/transforms.js +26 -0
  75. package/build/post-comments-link/transforms.js.map +1 -0
  76. package/build/post-navigation-link/edit.js +72 -33
  77. package/build/post-navigation-link/edit.js.map +1 -1
  78. package/build/post-title/edit.js +56 -18
  79. package/build/post-title/edit.js.map +1 -1
  80. package/build/query/edit/enhanced-pagination-modal.js +1 -1
  81. package/build/query/edit/enhanced-pagination-modal.js.map +1 -1
  82. package/build/query/edit/inspector-controls/enhanced-pagination-control.js +3 -6
  83. package/build/query/edit/inspector-controls/enhanced-pagination-control.js.map +1 -1
  84. package/build/rss/edit.js +120 -46
  85. package/build/rss/edit.js.map +1 -1
  86. package/build/separator/edit.js +52 -20
  87. package/build/separator/edit.js.map +1 -1
  88. package/build/shortcode/index.js +2 -1
  89. package/build/shortcode/index.js.map +1 -1
  90. package/build/site-logo/edit.js +53 -19
  91. package/build/site-logo/edit.js.map +1 -1
  92. package/build/social-link/edit.js +21 -5
  93. package/build/social-link/edit.js.map +1 -1
  94. package/build/social-link/edit.native.js +13 -5
  95. package/build/social-link/edit.native.js.map +1 -1
  96. package/build/social-link/social-list.js +17 -25
  97. package/build/social-link/social-list.js.map +1 -1
  98. package/build/social-link/variations.js +53 -48
  99. package/build/social-link/variations.js.map +1 -1
  100. package/build/social-links/edit.js +38 -45
  101. package/build/social-links/edit.js.map +1 -1
  102. package/build/video/tracks-editor.js +63 -21
  103. package/build/video/tracks-editor.js.map +1 -1
  104. package/build-module/avatar/edit.js +83 -38
  105. package/build-module/avatar/edit.js.map +1 -1
  106. package/build-module/avatar/user-control.js +33 -18
  107. package/build-module/avatar/user-control.js.map +1 -1
  108. package/build-module/button/edit.js +30 -18
  109. package/build-module/button/edit.js.map +1 -1
  110. package/build-module/columns/edit.js +18 -22
  111. package/build-module/columns/edit.js.map +1 -1
  112. package/build-module/comment-author-name/edit.js +42 -13
  113. package/build-module/comment-author-name/edit.js.map +1 -1
  114. package/build-module/comment-date/edit.js +42 -13
  115. package/build-module/comment-date/edit.js.map +1 -1
  116. package/build-module/comment-edit-link/edit.js +28 -8
  117. package/build-module/comment-edit-link/edit.js.map +1 -1
  118. package/build-module/comments/edit/comments-inspector-controls.js +1 -3
  119. package/build-module/comments/edit/comments-inspector-controls.js.map +1 -1
  120. package/build-module/comments-pagination/edit.js +24 -10
  121. package/build-module/comments-pagination/edit.js.map +1 -1
  122. package/build-module/comments-title/edit.js +42 -13
  123. package/build-module/comments-title/edit.js.map +1 -1
  124. package/build-module/details/edit.js +29 -5
  125. package/build-module/details/edit.js.map +1 -1
  126. package/build-module/embed/edit.js +2 -4
  127. package/build-module/embed/edit.js.map +1 -1
  128. package/build-module/embed/embed-controls.js +42 -23
  129. package/build-module/embed/embed-controls.js.map +1 -1
  130. package/build-module/embed/variations.js +0 -10
  131. package/build-module/embed/variations.js.map +1 -1
  132. package/build-module/file/inspector.js +74 -31
  133. package/build-module/file/inspector.js.map +1 -1
  134. package/build-module/form/edit.js +68 -39
  135. package/build-module/form/edit.js.map +1 -1
  136. package/build-module/form/index.js +3 -3
  137. package/build-module/form/index.js.map +1 -1
  138. package/build-module/form-input/edit.js +48 -19
  139. package/build-module/form-input/edit.js.map +1 -1
  140. package/build-module/form-input/index.js +2 -1
  141. package/build-module/form-input/index.js.map +1 -1
  142. package/build-module/form-submission-notification/index.js +2 -1
  143. package/build-module/form-submission-notification/index.js.map +1 -1
  144. package/build-module/form-submit-button/index.js +2 -1
  145. package/build-module/form-submit-button/index.js.map +1 -1
  146. package/build-module/image/image.js +1 -0
  147. package/build-module/image/image.js.map +1 -1
  148. package/build-module/image/view.js +0 -3
  149. package/build-module/image/view.js.map +1 -1
  150. package/build-module/latest-posts/edit.js +155 -83
  151. package/build-module/latest-posts/edit.js.map +1 -1
  152. package/build-module/list/ordered-list-settings.js +132 -53
  153. package/build-module/list/ordered-list-settings.js.map +1 -1
  154. package/build-module/navigation/edit/index.js +94 -52
  155. package/build-module/navigation/edit/index.js.map +1 -1
  156. package/build-module/navigation/edit/overlay-menu-preview.js +44 -28
  157. package/build-module/navigation/edit/overlay-menu-preview.js.map +1 -1
  158. package/build-module/navigation-link/edit.js +11 -0
  159. package/build-module/navigation-link/edit.js.map +1 -1
  160. package/build-module/navigation-link/index.js +3 -0
  161. package/build-module/navigation-link/index.js.map +1 -1
  162. package/build-module/navigation-link/transforms.js +2 -0
  163. package/build-module/navigation-link/transforms.js.map +1 -1
  164. package/build-module/navigation-link/update-attributes.js +1 -0
  165. package/build-module/navigation-link/update-attributes.js.map +1 -1
  166. package/build-module/navigation-submenu/index.js +3 -0
  167. package/build-module/navigation-submenu/index.js.map +1 -1
  168. package/build-module/post-author/edit.js +76 -19
  169. package/build-module/post-author/edit.js.map +1 -1
  170. package/build-module/post-comments-count/index.js +3 -1
  171. package/build-module/post-comments-count/index.js.map +1 -1
  172. package/build-module/post-comments-count/transforms.js +19 -0
  173. package/build-module/post-comments-count/transforms.js.map +1 -0
  174. package/build-module/post-comments-link/index.js +3 -1
  175. package/build-module/post-comments-link/index.js.map +1 -1
  176. package/build-module/post-comments-link/transforms.js +19 -0
  177. package/build-module/post-comments-link/transforms.js.map +1 -0
  178. package/build-module/post-navigation-link/edit.js +73 -34
  179. package/build-module/post-navigation-link/edit.js.map +1 -1
  180. package/build-module/post-title/edit.js +57 -19
  181. package/build-module/post-title/edit.js.map +1 -1
  182. package/build-module/query/edit/enhanced-pagination-modal.js +1 -1
  183. package/build-module/query/edit/enhanced-pagination-modal.js.map +1 -1
  184. package/build-module/query/edit/inspector-controls/enhanced-pagination-control.js +3 -6
  185. package/build-module/query/edit/inspector-controls/enhanced-pagination-control.js.map +1 -1
  186. package/build-module/rss/edit.js +121 -47
  187. package/build-module/rss/edit.js.map +1 -1
  188. package/build-module/separator/edit.js +54 -22
  189. package/build-module/separator/edit.js.map +1 -1
  190. package/build-module/shortcode/index.js +2 -1
  191. package/build-module/shortcode/index.js.map +1 -1
  192. package/build-module/site-logo/edit.js +54 -20
  193. package/build-module/site-logo/edit.js.map +1 -1
  194. package/build-module/social-link/edit.js +24 -8
  195. package/build-module/social-link/edit.js.map +1 -1
  196. package/build-module/social-link/edit.native.js +15 -6
  197. package/build-module/social-link/edit.native.js.map +1 -1
  198. package/build-module/social-link/social-list.js +16 -21
  199. package/build-module/social-link/social-list.js.map +1 -1
  200. package/build-module/social-link/variations.js +53 -48
  201. package/build-module/social-link/variations.js.map +1 -1
  202. package/build-module/social-links/edit.js +40 -47
  203. package/build-module/social-links/edit.js.map +1 -1
  204. package/build-module/video/tracks-editor.js +65 -23
  205. package/build-module/video/tracks-editor.js.map +1 -1
  206. package/build-style/calendar/style-rtl.css +7 -7
  207. package/build-style/calendar/style.css +7 -7
  208. package/build-style/comments-pagination/editor-rtl.css +0 -12
  209. package/build-style/comments-pagination/editor.css +0 -14
  210. package/build-style/comments-pagination/style-rtl.css +0 -7
  211. package/build-style/comments-pagination/style.css +0 -9
  212. package/build-style/editor-rtl.css +9 -21
  213. package/build-style/editor.css +9 -23
  214. package/build-style/gallery/style-rtl.css +1 -0
  215. package/build-style/gallery/style.css +1 -0
  216. package/build-style/navigation/editor-rtl.css +8 -3
  217. package/build-style/navigation/editor.css +8 -3
  218. package/build-style/navigation/style-rtl.css +4 -0
  219. package/build-style/navigation/style.css +4 -0
  220. package/build-style/pullquote/editor-rtl.css +1 -1
  221. package/build-style/pullquote/editor.css +1 -1
  222. package/build-style/pullquote/style-rtl.css +2 -3
  223. package/build-style/pullquote/style.css +2 -3
  224. package/build-style/pullquote/theme-rtl.css +2 -2
  225. package/build-style/pullquote/theme.css +2 -2
  226. package/build-style/style-rtl.css +14 -17
  227. package/build-style/style.css +14 -19
  228. package/build-style/theme-rtl.css +2 -2
  229. package/build-style/theme.css +2 -2
  230. package/package.json +35 -35
  231. package/src/avatar/edit.js +99 -51
  232. package/src/avatar/user-control.js +34 -29
  233. package/src/button/edit.js +44 -29
  234. package/src/calendar/style.scss +10 -10
  235. package/src/columns/edit.js +20 -31
  236. package/src/comment-author-name/edit.js +54 -13
  237. package/src/comment-date/edit.js +50 -15
  238. package/src/comment-edit-link/edit.js +39 -11
  239. package/src/comments/edit/comments-inspector-controls.js +0 -2
  240. package/src/comments-pagination/edit.js +29 -9
  241. package/src/comments-pagination/editor.scss +0 -15
  242. package/src/comments-pagination/style.scss +0 -8
  243. package/src/comments-title/edit.js +53 -15
  244. package/src/details/edit.js +36 -4
  245. package/src/editor.scss +0 -1
  246. package/src/embed/edit.js +3 -5
  247. package/src/embed/embed-controls.js +55 -33
  248. package/src/embed/variations.js +0 -8
  249. package/src/file/inspector.js +99 -45
  250. package/src/form/block.json +1 -2
  251. package/src/form/edit.js +91 -47
  252. package/src/form/index.js +1 -0
  253. package/src/form-input/edit.js +56 -18
  254. package/src/form-input/index.js +1 -0
  255. package/src/form-submission-notification/index.js +1 -0
  256. package/src/form-submit-button/index.js +1 -0
  257. package/src/gallery/style.scss +1 -0
  258. package/src/image/image.js +1 -0
  259. package/src/image/index.php +4 -1
  260. package/src/image/view.js +0 -3
  261. package/src/latest-posts/edit.js +206 -98
  262. package/src/list/ordered-list-settings.js +172 -62
  263. package/src/navigation/edit/index.js +127 -64
  264. package/src/navigation/edit/overlay-menu-preview.js +43 -26
  265. package/src/navigation/editor.scss +8 -4
  266. package/src/navigation/style.scss +8 -0
  267. package/src/navigation-link/block.json +3 -0
  268. package/src/navigation-link/edit.js +14 -1
  269. package/src/navigation-link/index.php +4 -0
  270. package/src/navigation-link/transforms.js +2 -1
  271. package/src/navigation-link/update-attributes.js +1 -0
  272. package/src/navigation-submenu/block.json +3 -0
  273. package/src/navigation-submenu/index.php +4 -0
  274. package/src/post-author/edit.js +91 -27
  275. package/src/post-comments-count/index.js +2 -0
  276. package/src/post-comments-count/transforms.js +20 -0
  277. package/src/post-comments-link/index.js +2 -0
  278. package/src/post-comments-link/transforms.js +20 -0
  279. package/src/post-navigation-link/edit.js +96 -51
  280. package/src/post-title/edit.js +76 -24
  281. package/src/pullquote/editor.scss +1 -1
  282. package/src/pullquote/style.scss +2 -3
  283. package/src/pullquote/theme.scss +2 -2
  284. package/src/query/edit/enhanced-pagination-modal.js +1 -5
  285. package/src/query/edit/inspector-controls/enhanced-pagination-control.js +3 -13
  286. package/src/rss/edit.js +141 -55
  287. package/src/separator/edit.js +66 -21
  288. package/src/shortcode/block.json +2 -1
  289. package/src/site-logo/edit.js +69 -26
  290. package/src/site-title/index.php +1 -1
  291. package/src/social-link/edit.js +18 -7
  292. package/src/social-link/edit.native.js +10 -4
  293. package/src/social-link/index.php +62 -49
  294. package/src/social-link/social-list.js +15 -20
  295. package/src/social-link/variations.js +53 -48
  296. package/src/social-links/edit.js +38 -60
  297. package/src/video/tracks-editor.js +75 -22
  298. package/build-style/post-author/editor-rtl.css +0 -140
  299. package/build-style/post-author/editor.css +0 -140
  300. package/src/post-author/editor.scss +0 -7
@@ -7,7 +7,6 @@ import clsx from 'clsx';
7
7
  * WordPress dependencies
8
8
  */
9
9
  import {
10
- PanelBody,
11
10
  Placeholder,
12
11
  QueryControls,
13
12
  RadioControl,
@@ -328,131 +327,240 @@ function Controls( { attributes, setAttributes, postCount } ) {
328
327
  />
329
328
  </ToolsPanelItem>
330
329
  </ToolsPanel>
331
- <PanelBody title={ __( 'Featured image' ) }>
332
- <ToggleControl
333
- __nextHasNoMarginBottom
330
+ <ToolsPanel
331
+ label={ __( 'Featured image' ) }
332
+ resetAll={ () =>
333
+ setAttributes( {
334
+ displayFeaturedImage: false,
335
+ featuredImageAlign: undefined,
336
+ featuredImageSizeSlug: 'thumbnail',
337
+ featuredImageSizeWidth: null,
338
+ featuredImageSizeHeight: null,
339
+ addLinkToFeaturedImage: false,
340
+ } )
341
+ }
342
+ dropdownMenuProps={ dropdownMenuProps }
343
+ >
344
+ <ToolsPanelItem
345
+ hasValue={ () => !! displayFeaturedImage }
334
346
  label={ __( 'Display featured image' ) }
335
- checked={ displayFeaturedImage }
336
- onChange={ ( value ) =>
337
- setAttributes( { displayFeaturedImage: value } )
347
+ onDeselect={ () =>
348
+ setAttributes( { displayFeaturedImage: false } )
338
349
  }
339
- />
350
+ isShownByDefault
351
+ >
352
+ <ToggleControl
353
+ __nextHasNoMarginBottom
354
+ label={ __( 'Display featured image' ) }
355
+ checked={ displayFeaturedImage }
356
+ onChange={ ( value ) =>
357
+ setAttributes( { displayFeaturedImage: value } )
358
+ }
359
+ />
360
+ </ToolsPanelItem>
340
361
  { displayFeaturedImage && (
341
362
  <>
342
- <ImageSizeControl
343
- onChange={ ( value ) => {
344
- const newAttrs = {};
345
- if ( value.hasOwnProperty( 'width' ) ) {
346
- newAttrs.featuredImageSizeWidth =
347
- value.width;
348
- }
349
- if ( value.hasOwnProperty( 'height' ) ) {
350
- newAttrs.featuredImageSizeHeight =
351
- value.height;
352
- }
353
- setAttributes( newAttrs );
354
- } }
355
- slug={ featuredImageSizeSlug }
356
- width={ featuredImageSizeWidth }
357
- height={ featuredImageSizeHeight }
358
- imageWidth={ defaultImageWidth }
359
- imageHeight={ defaultImageHeight }
360
- imageSizeOptions={ imageSizeOptions }
361
- imageSizeHelp={ __(
362
- 'Select the size of the source image.'
363
- ) }
364
- onChangeImage={ ( value ) =>
363
+ <ToolsPanelItem
364
+ hasValue={ () =>
365
+ featuredImageSizeSlug !== 'thumbnail' ||
366
+ featuredImageSizeWidth !== null ||
367
+ featuredImageSizeHeight !== null
368
+ }
369
+ label={ __( 'Image size' ) }
370
+ onDeselect={ () =>
365
371
  setAttributes( {
366
- featuredImageSizeSlug: value,
367
- featuredImageSizeWidth: undefined,
368
- featuredImageSizeHeight: undefined,
372
+ featuredImageSizeSlug: 'thumbnail',
373
+ featuredImageSizeWidth: null,
374
+ featuredImageSizeHeight: null,
369
375
  } )
370
376
  }
371
- />
372
- <ToggleGroupControl
373
- className="editor-latest-posts-image-alignment-control"
374
- __nextHasNoMarginBottom
375
- __next40pxDefaultSize
377
+ isShownByDefault
378
+ >
379
+ <ImageSizeControl
380
+ onChange={ ( value ) => {
381
+ const newAttrs = {};
382
+ if ( value.hasOwnProperty( 'width' ) ) {
383
+ newAttrs.featuredImageSizeWidth =
384
+ value.width;
385
+ }
386
+ if ( value.hasOwnProperty( 'height' ) ) {
387
+ newAttrs.featuredImageSizeHeight =
388
+ value.height;
389
+ }
390
+ setAttributes( newAttrs );
391
+ } }
392
+ slug={ featuredImageSizeSlug }
393
+ width={ featuredImageSizeWidth }
394
+ height={ featuredImageSizeHeight }
395
+ imageWidth={ defaultImageWidth }
396
+ imageHeight={ defaultImageHeight }
397
+ imageSizeOptions={ imageSizeOptions }
398
+ imageSizeHelp={ __(
399
+ 'Select the size of the source image.'
400
+ ) }
401
+ onChangeImage={ ( value ) =>
402
+ setAttributes( {
403
+ featuredImageSizeSlug: value,
404
+ featuredImageSizeWidth: undefined,
405
+ featuredImageSizeHeight: undefined,
406
+ } )
407
+ }
408
+ />
409
+ </ToolsPanelItem>
410
+ <ToolsPanelItem
411
+ hasValue={ () => !! featuredImageAlign }
376
412
  label={ __( 'Image alignment' ) }
377
- value={ featuredImageAlign || 'none' }
378
- onChange={ ( value ) =>
413
+ onDeselect={ () =>
379
414
  setAttributes( {
380
- featuredImageAlign:
381
- value !== 'none' ? value : undefined,
415
+ featuredImageAlign: undefined,
382
416
  } )
383
417
  }
418
+ isShownByDefault
384
419
  >
385
- { imageAlignmentOptions.map(
386
- ( { value, icon, label } ) => {
387
- return (
388
- <ToggleGroupControlOptionIcon
389
- key={ value }
390
- value={ value }
391
- icon={ icon }
392
- label={ label }
393
- />
394
- );
420
+ <ToggleGroupControl
421
+ className="editor-latest-posts-image-alignment-control"
422
+ __nextHasNoMarginBottom
423
+ __next40pxDefaultSize
424
+ label={ __( 'Image alignment' ) }
425
+ value={ featuredImageAlign || 'none' }
426
+ onChange={ ( value ) =>
427
+ setAttributes( {
428
+ featuredImageAlign:
429
+ value !== 'none'
430
+ ? value
431
+ : undefined,
432
+ } )
395
433
  }
396
- ) }
397
- </ToggleGroupControl>
398
- <ToggleControl
399
- __nextHasNoMarginBottom
434
+ >
435
+ { imageAlignmentOptions.map(
436
+ ( { value, icon, label } ) => {
437
+ return (
438
+ <ToggleGroupControlOptionIcon
439
+ key={ value }
440
+ value={ value }
441
+ icon={ icon }
442
+ label={ label }
443
+ />
444
+ );
445
+ }
446
+ ) }
447
+ </ToggleGroupControl>
448
+ </ToolsPanelItem>
449
+ <ToolsPanelItem
450
+ hasValue={ () => !! addLinkToFeaturedImage }
400
451
  label={ __( 'Add link to featured image' ) }
401
- checked={ addLinkToFeaturedImage }
402
- onChange={ ( value ) =>
452
+ onDeselect={ () =>
403
453
  setAttributes( {
404
- addLinkToFeaturedImage: value,
454
+ addLinkToFeaturedImage: false,
405
455
  } )
406
456
  }
407
- />
457
+ isShownByDefault
458
+ >
459
+ <ToggleControl
460
+ __nextHasNoMarginBottom
461
+ label={ __( 'Add link to featured image' ) }
462
+ checked={ addLinkToFeaturedImage }
463
+ onChange={ ( value ) =>
464
+ setAttributes( {
465
+ addLinkToFeaturedImage: value,
466
+ } )
467
+ }
468
+ />
469
+ </ToolsPanelItem>
408
470
  </>
409
471
  ) }
410
- </PanelBody>
411
- <PanelBody title={ __( 'Sorting and filtering' ) }>
412
- <QueryControls
413
- { ...{ order, orderBy } }
414
- numberOfItems={ postsToShow }
415
- onOrderChange={ ( value ) =>
416
- setAttributes( { order: value } )
417
- }
418
- onOrderByChange={ ( value ) =>
419
- setAttributes( { orderBy: value } )
420
- }
421
- onNumberOfItemsChange={ ( value ) =>
422
- setAttributes( { postsToShow: value } )
472
+ </ToolsPanel>
473
+
474
+ <ToolsPanel
475
+ label={ __( 'Sorting and filtering' ) }
476
+ resetAll={ () =>
477
+ setAttributes( {
478
+ order: 'desc',
479
+ orderBy: 'date',
480
+ postsToShow: 5,
481
+ categories: undefined,
482
+ selectedAuthor: undefined,
483
+ columns: 3,
484
+ } )
485
+ }
486
+ dropdownMenuProps={ dropdownMenuProps }
487
+ >
488
+ <ToolsPanelItem
489
+ hasValue={ () =>
490
+ order !== 'desc' ||
491
+ orderBy !== 'date' ||
492
+ postsToShow !== 5 ||
493
+ categories?.length > 0 ||
494
+ !! selectedAuthor
423
495
  }
424
- categorySuggestions={ categorySuggestions }
425
- onCategoryChange={ selectCategories }
426
- selectedCategories={ categories }
427
- onAuthorChange={ ( value ) =>
496
+ label={ __( 'Sort and filter' ) }
497
+ onDeselect={ () =>
428
498
  setAttributes( {
429
- selectedAuthor:
430
- '' !== value ? Number( value ) : undefined,
499
+ order: 'desc',
500
+ orderBy: 'date',
501
+ postsToShow: 5,
502
+ categories: undefined,
503
+ selectedAuthor: undefined,
431
504
  } )
432
505
  }
433
- authorList={ authorList ?? [] }
434
- selectedAuthorId={ selectedAuthor }
435
- />
506
+ isShownByDefault
507
+ >
508
+ <QueryControls
509
+ { ...{ order, orderBy } }
510
+ numberOfItems={ postsToShow }
511
+ onOrderChange={ ( value ) =>
512
+ setAttributes( { order: value } )
513
+ }
514
+ onOrderByChange={ ( value ) =>
515
+ setAttributes( { orderBy: value } )
516
+ }
517
+ onNumberOfItemsChange={ ( value ) =>
518
+ setAttributes( { postsToShow: value } )
519
+ }
520
+ categorySuggestions={ categorySuggestions }
521
+ onCategoryChange={ selectCategories }
522
+ selectedCategories={ categories }
523
+ onAuthorChange={ ( value ) =>
524
+ setAttributes( {
525
+ selectedAuthor:
526
+ '' !== value ? Number( value ) : undefined,
527
+ } )
528
+ }
529
+ authorList={ authorList ?? [] }
530
+ selectedAuthorId={ selectedAuthor }
531
+ />
532
+ </ToolsPanelItem>
436
533
 
437
534
  { postLayout === 'grid' && (
438
- <RangeControl
439
- __nextHasNoMarginBottom
440
- __next40pxDefaultSize
535
+ <ToolsPanelItem
536
+ hasValue={ () => columns !== 3 }
441
537
  label={ __( 'Columns' ) }
442
- value={ columns }
443
- onChange={ ( value ) =>
444
- setAttributes( { columns: value } )
445
- }
446
- min={ 2 }
447
- max={
448
- ! postCount
449
- ? MAX_POSTS_COLUMNS
450
- : Math.min( MAX_POSTS_COLUMNS, postCount )
538
+ onDeselect={ () =>
539
+ setAttributes( {
540
+ columns: 3,
541
+ } )
451
542
  }
452
- required
453
- />
543
+ isShownByDefault
544
+ >
545
+ <RangeControl
546
+ __nextHasNoMarginBottom
547
+ __next40pxDefaultSize
548
+ label={ __( 'Columns' ) }
549
+ value={ columns }
550
+ onChange={ ( value ) =>
551
+ setAttributes( { columns: value } )
552
+ }
553
+ min={ 2 }
554
+ max={
555
+ ! postCount
556
+ ? MAX_POSTS_COLUMNS
557
+ : Math.min( MAX_POSTS_COLUMNS, postCount )
558
+ }
559
+ required
560
+ />
561
+ </ToolsPanelItem>
454
562
  ) }
455
- </PanelBody>
563
+ </ToolsPanel>
456
564
  </>
457
565
  );
458
566
  }
@@ -8,70 +8,180 @@ import {
8
8
  PanelBody,
9
9
  ToggleControl,
10
10
  SelectControl,
11
+ __experimentalToolsPanel as ToolsPanel,
12
+ __experimentalToolsPanelItem as ToolsPanelItem,
11
13
  } from '@wordpress/components';
14
+ import { Platform } from '@wordpress/element';
12
15
 
13
- const OrderedListSettings = ( { setAttributes, reversed, start, type } ) => (
14
- <InspectorControls>
15
- <PanelBody title={ __( 'Settings' ) }>
16
- <SelectControl
17
- __next40pxDefaultSize
18
- __nextHasNoMarginBottom
19
- label={ __( 'List style' ) }
20
- options={ [
21
- {
22
- label: __( 'Numbers' ),
23
- value: 'decimal',
24
- },
25
- {
26
- label: __( 'Uppercase letters' ),
27
- value: 'upper-alpha',
28
- },
29
- {
30
- label: __( 'Lowercase letters' ),
31
- value: 'lower-alpha',
32
- },
33
- {
34
- label: __( 'Uppercase Roman numerals' ),
35
- value: 'upper-roman',
36
- },
37
- {
38
- label: __( 'Lowercase Roman numerals' ),
39
- value: 'lower-roman',
40
- },
41
- ] }
42
- value={ type }
43
- onChange={ ( newValue ) => setAttributes( { type: newValue } ) }
44
- />
45
- <TextControl
46
- __next40pxDefaultSize
47
- __nextHasNoMarginBottom
48
- label={ __( 'Start value' ) }
49
- type="number"
50
- onChange={ ( value ) => {
51
- const int = parseInt( value, 10 );
16
+ /**
17
+ * Internal dependencies
18
+ */
19
+ import { useToolsPanelDropdownMenuProps } from '../utils/hooks';
20
+
21
+ const LIST_STYLE_OPTIONS = [
22
+ {
23
+ label: __( 'Numbers' ),
24
+ value: 'decimal',
25
+ },
26
+ {
27
+ label: __( 'Uppercase letters' ),
28
+ value: 'upper-alpha',
29
+ },
30
+ {
31
+ label: __( 'Lowercase letters' ),
32
+ value: 'lower-alpha',
33
+ },
34
+ {
35
+ label: __( 'Uppercase Roman numerals' ),
36
+ value: 'upper-roman',
37
+ },
38
+ {
39
+ label: __( 'Lowercase Roman numerals' ),
40
+ value: 'lower-roman',
41
+ },
42
+ ];
43
+
44
+ const OrderedListSettings = ( { setAttributes, reversed, start, type } ) => {
45
+ const dropdownMenuProps = useToolsPanelDropdownMenuProps();
46
+
47
+ return (
48
+ <InspectorControls>
49
+ { Platform.isNative ? (
50
+ <PanelBody title={ __( 'Settings' ) }>
51
+ <SelectControl
52
+ __next40pxDefaultSize
53
+ __nextHasNoMarginBottom
54
+ label={ __( 'List style' ) }
55
+ options={ LIST_STYLE_OPTIONS }
56
+ value={ type }
57
+ onChange={ ( newValue ) =>
58
+ setAttributes( { type: newValue } )
59
+ }
60
+ />
61
+ <TextControl
62
+ __next40pxDefaultSize
63
+ __nextHasNoMarginBottom
64
+ label={ __( 'Start value' ) }
65
+ type="number"
66
+ onChange={ ( value ) => {
67
+ const int = parseInt( value, 10 );
68
+
69
+ setAttributes( {
70
+ // It should be possible to unset the value,
71
+ // e.g. with an empty string.
72
+ start: isNaN( int ) ? undefined : int,
73
+ } );
74
+ } }
75
+ value={
76
+ Number.isInteger( start )
77
+ ? start.toString( 10 )
78
+ : ''
79
+ }
80
+ step="1"
81
+ />
82
+ <ToggleControl
83
+ __nextHasNoMarginBottom
84
+ label={ __( 'Reverse order' ) }
85
+ checked={ reversed || false }
86
+ onChange={ ( value ) => {
87
+ setAttributes( {
88
+ // Unset the attribute if not reversed.
89
+ reversed: value || undefined,
90
+ } );
91
+ } }
92
+ />
93
+ </PanelBody>
94
+ ) : (
95
+ <ToolsPanel
96
+ label={ __( 'Settings' ) }
97
+ resetAll={ () => {
98
+ setAttributes( {
99
+ type: undefined,
100
+ start: undefined,
101
+ reversed: undefined,
102
+ } );
103
+ } }
104
+ dropdownMenuProps={ dropdownMenuProps }
105
+ >
106
+ <ToolsPanelItem
107
+ label={ __( 'List style' ) }
108
+ isShownByDefault
109
+ hasValue={ () => !! type }
110
+ onDeselect={ () =>
111
+ setAttributes( {
112
+ type: undefined,
113
+ } )
114
+ }
115
+ >
116
+ <SelectControl
117
+ __next40pxDefaultSize
118
+ __nextHasNoMarginBottom
119
+ label={ __( 'List style' ) }
120
+ options={ LIST_STYLE_OPTIONS }
121
+ value={ type || 'decimal' }
122
+ onChange={ ( newValue ) =>
123
+ setAttributes( { type: newValue } )
124
+ }
125
+ />
126
+ </ToolsPanelItem>
127
+ <ToolsPanelItem
128
+ label={ __( 'Start value' ) }
129
+ isShownByDefault
130
+ hasValue={ () => !! start }
131
+ onDeselect={ () =>
132
+ setAttributes( {
133
+ start: undefined,
134
+ } )
135
+ }
136
+ >
137
+ <TextControl
138
+ __next40pxDefaultSize
139
+ __nextHasNoMarginBottom
140
+ label={ __( 'Start value' ) }
141
+ type="number"
142
+ onChange={ ( value ) => {
143
+ const int = parseInt( value, 10 );
52
144
 
53
- setAttributes( {
54
- // It should be possible to unset the value,
55
- // e.g. with an empty string.
56
- start: isNaN( int ) ? undefined : int,
57
- } );
58
- } }
59
- value={ Number.isInteger( start ) ? start.toString( 10 ) : '' }
60
- step="1"
61
- />
62
- <ToggleControl
63
- __nextHasNoMarginBottom
64
- label={ __( 'Reverse order' ) }
65
- checked={ reversed || false }
66
- onChange={ ( value ) => {
67
- setAttributes( {
68
- // Unset the attribute if not reversed.
69
- reversed: value || undefined,
70
- } );
71
- } }
72
- />
73
- </PanelBody>
74
- </InspectorControls>
75
- );
145
+ setAttributes( {
146
+ // It should be possible to unset the value,
147
+ // e.g. with an empty string.
148
+ start: isNaN( int ) ? undefined : int,
149
+ } );
150
+ } }
151
+ value={
152
+ Number.isInteger( start )
153
+ ? start.toString( 10 )
154
+ : ''
155
+ }
156
+ step="1"
157
+ />
158
+ </ToolsPanelItem>
159
+ <ToolsPanelItem
160
+ label={ __( 'Reverse order' ) }
161
+ isShownByDefault
162
+ hasValue={ () => !! reversed }
163
+ onDeselect={ () =>
164
+ setAttributes( {
165
+ reversed: undefined,
166
+ } )
167
+ }
168
+ >
169
+ <ToggleControl
170
+ __nextHasNoMarginBottom
171
+ label={ __( 'Reverse order' ) }
172
+ checked={ reversed || false }
173
+ onChange={ ( value ) => {
174
+ setAttributes( {
175
+ // Unset the attribute if not reversed.
176
+ reversed: value || undefined,
177
+ } );
178
+ } }
179
+ />
180
+ </ToolsPanelItem>
181
+ </ToolsPanel>
182
+ ) }
183
+ </InspectorControls>
184
+ );
185
+ };
76
186
 
77
187
  export default OrderedListSettings;