@wordpress/block-editor 9.4.0 → 9.5.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 (234) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +1 -8
  3. package/build/components/block-list/block-invalid-warning.native.js +54 -6
  4. package/build/components/block-list/block-invalid-warning.native.js.map +1 -1
  5. package/build/components/block-list/block.js +2 -2
  6. package/build/components/block-list/block.js.map +1 -1
  7. package/build/components/block-list/block.native.js +2 -1
  8. package/build/components/block-list/block.native.js.map +1 -1
  9. package/build/components/block-list/index.native.js +4 -3
  10. package/build/components/block-list/index.native.js.map +1 -1
  11. package/build/components/block-list/layout.js +20 -5
  12. package/build/components/block-list/layout.js.map +1 -1
  13. package/build/components/block-list/use-block-props/use-block-class-names.js +5 -2
  14. package/build/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
  15. package/build/components/block-lock/modal.js +35 -5
  16. package/build/components/block-lock/modal.js.map +1 -1
  17. package/build/components/block-pattern-setup/index.js +5 -17
  18. package/build/components/block-pattern-setup/index.js.map +1 -1
  19. package/build/components/block-popover/inbetween.js +1 -1
  20. package/build/components/block-popover/inbetween.js.map +1 -1
  21. package/build/components/block-popover/index.js +1 -1
  22. package/build/components/block-popover/index.js.map +1 -1
  23. package/build/components/block-settings-menu/block-mode-toggle.js +1 -1
  24. package/build/components/block-settings-menu/block-mode-toggle.js.map +1 -1
  25. package/build/components/block-settings-menu/block-settings-dropdown.js +4 -1
  26. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  27. package/build/components/block-styles/preview.native.js +3 -1
  28. package/build/components/block-styles/preview.native.js.map +1 -1
  29. package/build/components/block-switcher/index.js +7 -1
  30. package/build/components/block-switcher/index.js.map +1 -1
  31. package/build/components/block-title/index.js +8 -2
  32. package/build/components/block-title/index.js.map +1 -1
  33. package/build/components/block-title/use-block-display-title.js +12 -5
  34. package/build/components/block-title/use-block-display-title.js.map +1 -1
  35. package/build/components/block-tools/block-contextual-toolbar.js +1 -1
  36. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  37. package/build/components/border-radius-control/index.js +2 -0
  38. package/build/components/border-radius-control/index.js.map +1 -1
  39. package/build/components/colors/with-colors.js +1 -1
  40. package/build/components/colors/with-colors.js.map +1 -1
  41. package/build/components/colors-gradients/control.js +45 -39
  42. package/build/components/colors-gradients/control.js.map +1 -1
  43. package/build/components/date-format-picker/index.js +1 -1
  44. package/build/components/date-format-picker/index.js.map +1 -1
  45. package/build/components/iframe/index.js +19 -6
  46. package/build/components/iframe/index.js.map +1 -1
  47. package/build/components/link-control/index.js +1 -1
  48. package/build/components/link-control/index.js.map +1 -1
  49. package/build/components/list-view/block-select-button.js +15 -7
  50. package/build/components/list-view/block-select-button.js.map +1 -1
  51. package/build/components/list-view/drop-indicator.js +1 -1
  52. package/build/components/list-view/drop-indicator.js.map +1 -1
  53. package/build/components/media-placeholder/index.js +13 -2
  54. package/build/components/media-placeholder/index.js.map +1 -1
  55. package/build/components/media-replace-flow/index.js +3 -6
  56. package/build/components/media-replace-flow/index.js.map +1 -1
  57. package/build/components/url-popover/index.js +2 -1
  58. package/build/components/url-popover/index.js.map +1 -1
  59. package/build/components/writing-flow/use-arrow-nav.js +34 -2
  60. package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
  61. package/build/components/writing-flow/use-multi-selection.js +3 -47
  62. package/build/components/writing-flow/use-multi-selection.js.map +1 -1
  63. package/build/components/writing-flow/use-selection-observer.js +1 -3
  64. package/build/components/writing-flow/use-selection-observer.js.map +1 -1
  65. package/build/hooks/color.js +2 -4
  66. package/build/hooks/color.js.map +1 -1
  67. package/build/hooks/index.js +8 -0
  68. package/build/hooks/index.js.map +1 -1
  69. package/build/hooks/layout.js +41 -14
  70. package/build/hooks/layout.js.map +1 -1
  71. package/build/hooks/utils.js +5 -3
  72. package/build/hooks/utils.js.map +1 -1
  73. package/build/index.js +7 -0
  74. package/build/index.js.map +1 -1
  75. package/build/layouts/flex.js +40 -36
  76. package/build/layouts/flex.js.map +1 -1
  77. package/build/layouts/flow.js +10 -35
  78. package/build/layouts/flow.js.map +1 -1
  79. package/build/layouts/utils.js +35 -3
  80. package/build/layouts/utils.js.map +1 -1
  81. package/build/store/actions.js +15 -18
  82. package/build/store/actions.js.map +1 -1
  83. package/build/store/index.js +0 -4
  84. package/build/store/index.js.map +1 -1
  85. package/build/store/reducer.js +5 -3
  86. package/build/store/reducer.js.map +1 -1
  87. package/build/store/selectors.js +3 -3
  88. package/build/store/selectors.js.map +1 -1
  89. package/build-module/components/block-list/block-invalid-warning.native.js +50 -6
  90. package/build-module/components/block-list/block-invalid-warning.native.js.map +1 -1
  91. package/build-module/components/block-list/block.js +2 -2
  92. package/build-module/components/block-list/block.js.map +1 -1
  93. package/build-module/components/block-list/block.native.js +2 -1
  94. package/build-module/components/block-list/block.native.js.map +1 -1
  95. package/build-module/components/block-list/index.native.js +3 -1
  96. package/build-module/components/block-list/index.native.js.map +1 -1
  97. package/build-module/components/block-list/layout.js +19 -4
  98. package/build-module/components/block-list/layout.js.map +1 -1
  99. package/build-module/components/block-list/use-block-props/use-block-class-names.js +5 -2
  100. package/build-module/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
  101. package/build-module/components/block-lock/modal.js +37 -6
  102. package/build-module/components/block-lock/modal.js.map +1 -1
  103. package/build-module/components/block-pattern-setup/index.js +6 -18
  104. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  105. package/build-module/components/block-popover/inbetween.js +1 -1
  106. package/build-module/components/block-popover/inbetween.js.map +1 -1
  107. package/build-module/components/block-popover/index.js +1 -1
  108. package/build-module/components/block-popover/index.js.map +1 -1
  109. package/build-module/components/block-settings-menu/block-mode-toggle.js +1 -1
  110. package/build-module/components/block-settings-menu/block-mode-toggle.js.map +1 -1
  111. package/build-module/components/block-settings-menu/block-settings-dropdown.js +4 -1
  112. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  113. package/build-module/components/block-styles/preview.native.js +3 -2
  114. package/build-module/components/block-styles/preview.native.js.map +1 -1
  115. package/build-module/components/block-switcher/index.js +7 -1
  116. package/build-module/components/block-switcher/index.js.map +1 -1
  117. package/build-module/components/block-title/index.js +8 -2
  118. package/build-module/components/block-title/index.js.map +1 -1
  119. package/build-module/components/block-title/use-block-display-title.js +12 -5
  120. package/build-module/components/block-title/use-block-display-title.js.map +1 -1
  121. package/build-module/components/block-tools/block-contextual-toolbar.js +1 -1
  122. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  123. package/build-module/components/border-radius-control/index.js +2 -0
  124. package/build-module/components/border-radius-control/index.js.map +1 -1
  125. package/build-module/components/colors/with-colors.js +2 -2
  126. package/build-module/components/colors/with-colors.js.map +1 -1
  127. package/build-module/components/colors-gradients/control.js +46 -40
  128. package/build-module/components/colors-gradients/control.js.map +1 -1
  129. package/build-module/components/date-format-picker/index.js +1 -1
  130. package/build-module/components/date-format-picker/index.js.map +1 -1
  131. package/build-module/components/iframe/index.js +19 -6
  132. package/build-module/components/iframe/index.js.map +1 -1
  133. package/build-module/components/link-control/index.js +1 -1
  134. package/build-module/components/link-control/index.js.map +1 -1
  135. package/build-module/components/list-view/block-select-button.js +16 -8
  136. package/build-module/components/list-view/block-select-button.js.map +1 -1
  137. package/build-module/components/list-view/drop-indicator.js +1 -1
  138. package/build-module/components/list-view/drop-indicator.js.map +1 -1
  139. package/build-module/components/media-placeholder/index.js +13 -2
  140. package/build-module/components/media-placeholder/index.js.map +1 -1
  141. package/build-module/components/media-replace-flow/index.js +4 -7
  142. package/build-module/components/media-replace-flow/index.js.map +1 -1
  143. package/build-module/components/url-popover/index.js +2 -1
  144. package/build-module/components/url-popover/index.js.map +1 -1
  145. package/build-module/components/writing-flow/use-arrow-nav.js +35 -3
  146. package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
  147. package/build-module/components/writing-flow/use-multi-selection.js +3 -45
  148. package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
  149. package/build-module/components/writing-flow/use-selection-observer.js +1 -3
  150. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
  151. package/build-module/hooks/color.js +2 -3
  152. package/build-module/hooks/color.js.map +1 -1
  153. package/build-module/hooks/index.js +1 -0
  154. package/build-module/hooks/index.js.map +1 -1
  155. package/build-module/hooks/layout.js +42 -15
  156. package/build-module/hooks/layout.js.map +1 -1
  157. package/build-module/hooks/utils.js +5 -2
  158. package/build-module/hooks/utils.js.map +1 -1
  159. package/build-module/index.js +1 -1
  160. package/build-module/index.js.map +1 -1
  161. package/build-module/layouts/flex.js +41 -33
  162. package/build-module/layouts/flex.js.map +1 -1
  163. package/build-module/layouts/flow.js +11 -36
  164. package/build-module/layouts/flow.js.map +1 -1
  165. package/build-module/layouts/utils.js +33 -3
  166. package/build-module/layouts/utils.js.map +1 -1
  167. package/build-module/store/actions.js +9 -10
  168. package/build-module/store/actions.js.map +1 -1
  169. package/build-module/store/index.js +0 -4
  170. package/build-module/store/index.js.map +1 -1
  171. package/build-module/store/reducer.js +5 -2
  172. package/build-module/store/reducer.js.map +1 -1
  173. package/build-module/store/selectors.js +4 -4
  174. package/build-module/store/selectors.js.map +1 -1
  175. package/build-style/style-rtl.css +36 -10
  176. package/build-style/style.css +36 -10
  177. package/package.json +28 -28
  178. package/src/components/block-list/block-invalid-warning.native.js +42 -7
  179. package/src/components/block-list/block.js +2 -2
  180. package/src/components/block-list/block.native.js +1 -0
  181. package/src/components/block-list/index.native.js +1 -1
  182. package/src/components/block-list/layout.js +15 -3
  183. package/src/components/block-list/style.scss +1 -1
  184. package/src/components/block-list/use-block-props/use-block-class-names.js +5 -1
  185. package/src/components/block-lock/modal.js +42 -4
  186. package/src/components/block-lock/style.scss +10 -0
  187. package/src/components/block-pattern-setup/index.js +3 -15
  188. package/src/components/block-pattern-setup/style.scss +4 -2
  189. package/src/components/block-popover/inbetween.js +1 -1
  190. package/src/components/block-popover/index.js +1 -1
  191. package/src/components/block-settings-menu/block-mode-toggle.js +1 -0
  192. package/src/components/block-settings-menu/block-settings-dropdown.js +4 -1
  193. package/src/components/block-styles/preview.native.js +3 -2
  194. package/src/components/block-switcher/index.js +7 -1
  195. package/src/components/block-title/index.js +3 -2
  196. package/src/components/block-title/use-block-display-title.js +11 -5
  197. package/src/components/block-tools/block-contextual-toolbar.js +3 -1
  198. package/src/components/border-radius-control/index.js +2 -0
  199. package/src/components/colors/with-colors.js +2 -2
  200. package/src/components/colors-gradients/control.js +77 -65
  201. package/src/components/colors-gradients/style.scss +4 -0
  202. package/src/components/colors-gradients/test/control.js +16 -23
  203. package/src/components/date-format-picker/index.js +1 -0
  204. package/src/components/iframe/index.js +25 -6
  205. package/src/components/inserter/style.scss +1 -1
  206. package/src/components/link-control/index.js +1 -0
  207. package/src/components/link-control/test/index.js +6 -4
  208. package/src/components/list-view/block-select-button.js +29 -14
  209. package/src/components/list-view/drop-indicator.js +1 -1
  210. package/src/components/list-view/style.scss +18 -4
  211. package/src/components/media-placeholder/index.js +19 -0
  212. package/src/components/media-replace-flow/index.js +3 -6
  213. package/src/components/media-replace-flow/test/index.js +14 -4
  214. package/src/components/url-popover/index.js +1 -0
  215. package/src/components/url-popover/test/__snapshots__/index.js.snap +3 -0
  216. package/src/components/writing-flow/use-arrow-nav.js +32 -1
  217. package/src/components/writing-flow/use-multi-selection.js +1 -48
  218. package/src/components/writing-flow/use-selection-observer.js +2 -3
  219. package/src/hooks/color.js +10 -3
  220. package/src/hooks/index.js +1 -0
  221. package/src/hooks/layout.js +46 -20
  222. package/src/hooks/utils.js +7 -3
  223. package/src/index.js +1 -0
  224. package/src/layouts/flex.js +47 -41
  225. package/src/layouts/flow.js +14 -35
  226. package/src/layouts/test/flex.js +21 -0
  227. package/src/layouts/test/flow.js +21 -0
  228. package/src/layouts/test/utils.js +138 -0
  229. package/src/layouts/utils.js +44 -3
  230. package/src/store/actions.js +10 -11
  231. package/src/store/index.js +0 -4
  232. package/src/store/reducer.js +3 -2
  233. package/src/store/selectors.js +3 -4
  234. package/tsconfig.json +2 -1
@@ -177,7 +177,7 @@
177
177
  cursor: default;
178
178
  }
179
179
  .block-editor-block-list__layout.is-navigate-mode .block-editor-block-list__block.is-selected::after, .block-editor-block-list__layout.is-navigate-mode .block-editor-block-list__block.is-hovered::after,
180
- .block-editor-block-list__layout .block-editor-block-list__block.is-multi-selected:not([contenteditable])::after,
180
+ .block-editor-block-list__layout .block-editor-block-list__block.is-multi-selected:not(.is-partially-selected)::after,
181
181
  .block-editor-block-list__layout .block-editor-block-list__block.is-highlighted::after,
182
182
  .block-editor-block-list__layout .block-editor-block-list__block.is-highlighted ~ .is-multi-selected::after {
183
183
  position: absolute;
@@ -193,13 +193,13 @@
193
193
  outline: 2px solid transparent;
194
194
  }
195
195
  .is-dark-theme .block-editor-block-list__layout.is-navigate-mode .block-editor-block-list__block.is-selected::after, .is-dark-theme .block-editor-block-list__layout.is-navigate-mode .block-editor-block-list__block.is-hovered::after,
196
- .is-dark-theme .block-editor-block-list__layout .block-editor-block-list__block.is-multi-selected:not([contenteditable])::after,
196
+ .is-dark-theme .block-editor-block-list__layout .block-editor-block-list__block.is-multi-selected:not(.is-partially-selected)::after,
197
197
  .is-dark-theme .block-editor-block-list__layout .block-editor-block-list__block.is-highlighted::after,
198
198
  .is-dark-theme .block-editor-block-list__layout .block-editor-block-list__block.is-highlighted ~ .is-multi-selected::after {
199
199
  box-shadow: 0 0 0 1px #fff;
200
200
  }
201
201
  .block-editor-block-list__layout.is-navigate-mode .block-editor-block-list__block.is-selected .components-placeholder ::selection, .block-editor-block-list__layout.is-navigate-mode .block-editor-block-list__block.is-hovered .components-placeholder ::selection,
202
- .block-editor-block-list__layout .block-editor-block-list__block.is-multi-selected:not([contenteditable]) .components-placeholder ::selection,
202
+ .block-editor-block-list__layout .block-editor-block-list__block.is-multi-selected:not(.is-partially-selected) .components-placeholder ::selection,
203
203
  .block-editor-block-list__layout .block-editor-block-list__block.is-highlighted .components-placeholder ::selection,
204
204
  .block-editor-block-list__layout .block-editor-block-list__block.is-highlighted ~ .is-multi-selected .components-placeholder ::selection {
205
205
  background: transparent;
@@ -709,6 +709,15 @@
709
709
  border-radius: 2px;
710
710
  }
711
711
 
712
+ .block-editor-block-lock-modal__template-lock {
713
+ border-top: 1px solid #ddd;
714
+ margin-top: 16px;
715
+ padding: 12px 0;
716
+ }
717
+ .block-editor-block-lock-modal__template-lock .components-base-control__field {
718
+ margin: 0;
719
+ }
720
+
712
721
  .block-editor-block-lock-modal__actions {
713
722
  margin-top: 24px;
714
723
  }
@@ -1434,6 +1443,8 @@
1434
1443
  display: block;
1435
1444
  width: 100%;
1436
1445
  padding: 32px;
1446
+ padding-bottom: 0;
1447
+ padding-top: 0;
1437
1448
  column-count: 2;
1438
1449
  }
1439
1450
  @media (min-width: 1440px) {
@@ -1465,7 +1476,8 @@
1465
1476
  text-align: right;
1466
1477
  margin: 0;
1467
1478
  color: #1e1e1e;
1468
- border-radius: 2px 2px 0 0;
1479
+ position: absolute;
1480
+ bottom: 0;
1469
1481
  background-color: #fff;
1470
1482
  display: flex;
1471
1483
  flex-direction: row;
@@ -1531,7 +1543,6 @@
1531
1543
  .block-editor-block-pattern-setup__carousel,
1532
1544
  .block-editor-block-pattern-setup__grid {
1533
1545
  width: 100%;
1534
- overflow-y: auto;
1535
1546
  }
1536
1547
 
1537
1548
  .block-editor-block-variation-transforms {
@@ -1721,6 +1732,10 @@
1721
1732
  width: 100%;
1722
1733
  }
1723
1734
 
1735
+ .block-editor-color-gradient-control__tab-panel {
1736
+ padding-top: 8px;
1737
+ }
1738
+
1724
1739
  .block-editor-contrast-checker > .components-notice {
1725
1740
  margin: 0;
1726
1741
  }
@@ -2548,7 +2563,7 @@
2548
2563
  align-items: center;
2549
2564
  width: 100%;
2550
2565
  height: auto;
2551
- padding: 6px 0 6px 12px;
2566
+ padding: 6px 0 6px 4px;
2552
2567
  text-align: right;
2553
2568
  color: #1e1e1e;
2554
2569
  border-radius: 2px;
@@ -2666,7 +2681,7 @@
2666
2681
  padding: 0;
2667
2682
  }
2668
2683
  .block-editor-list-view-leaf .block-editor-list-view-block__menu-cell {
2669
- padding-left: 5px;
2684
+ padding-left: 4px;
2670
2685
  }
2671
2686
  .block-editor-list-view-leaf .block-editor-list-view-block__menu-cell .components-button.has-icon {
2672
2687
  height: 24px;
@@ -2740,13 +2755,24 @@
2740
2755
  .block-editor-list-view-leaf .block-editor-inserter__toggle:active {
2741
2756
  color: #fff;
2742
2757
  }
2758
+ .block-editor-list-view-leaf .block-editor-list-view-block-select-button__label-wrapper {
2759
+ min-width: 120px;
2760
+ }
2761
+ .block-editor-list-view-leaf .block-editor-list-view-block-select-button__title {
2762
+ flex: 1;
2763
+ position: relative;
2764
+ }
2765
+ .block-editor-list-view-leaf .block-editor-list-view-block-select-button__title .components-truncate {
2766
+ position: absolute;
2767
+ width: 100%;
2768
+ transform: translateY(-50%);
2769
+ }
2743
2770
  .block-editor-list-view-leaf .block-editor-list-view-block-select-button__anchor {
2744
2771
  background: rgba(0, 0, 0, 0.1);
2745
2772
  border-radius: 2px;
2746
2773
  display: inline-block;
2747
2774
  padding: 2px 6px;
2748
- margin: 0 8px;
2749
- max-width: 120px;
2775
+ max-width: min(100px, 40%);
2750
2776
  overflow: hidden;
2751
2777
  text-overflow: ellipsis;
2752
2778
  }
@@ -4067,7 +4093,7 @@ figcaption.block-editor-rich-text__editable [data-rich-text-placeholder]::before
4067
4093
 
4068
4094
  .block-editor-block-patterns-explorer__sidebar {
4069
4095
  position: absolute;
4070
- top: 60px;
4096
+ top: 76px;
4071
4097
  right: 0;
4072
4098
  bottom: 0;
4073
4099
  width: 280px;
@@ -177,7 +177,7 @@
177
177
  cursor: default;
178
178
  }
179
179
  .block-editor-block-list__layout.is-navigate-mode .block-editor-block-list__block.is-selected::after, .block-editor-block-list__layout.is-navigate-mode .block-editor-block-list__block.is-hovered::after,
180
- .block-editor-block-list__layout .block-editor-block-list__block.is-multi-selected:not([contenteditable])::after,
180
+ .block-editor-block-list__layout .block-editor-block-list__block.is-multi-selected:not(.is-partially-selected)::after,
181
181
  .block-editor-block-list__layout .block-editor-block-list__block.is-highlighted::after,
182
182
  .block-editor-block-list__layout .block-editor-block-list__block.is-highlighted ~ .is-multi-selected::after {
183
183
  position: absolute;
@@ -193,13 +193,13 @@
193
193
  outline: 2px solid transparent;
194
194
  }
195
195
  .is-dark-theme .block-editor-block-list__layout.is-navigate-mode .block-editor-block-list__block.is-selected::after, .is-dark-theme .block-editor-block-list__layout.is-navigate-mode .block-editor-block-list__block.is-hovered::after,
196
- .is-dark-theme .block-editor-block-list__layout .block-editor-block-list__block.is-multi-selected:not([contenteditable])::after,
196
+ .is-dark-theme .block-editor-block-list__layout .block-editor-block-list__block.is-multi-selected:not(.is-partially-selected)::after,
197
197
  .is-dark-theme .block-editor-block-list__layout .block-editor-block-list__block.is-highlighted::after,
198
198
  .is-dark-theme .block-editor-block-list__layout .block-editor-block-list__block.is-highlighted ~ .is-multi-selected::after {
199
199
  box-shadow: 0 0 0 1px #fff;
200
200
  }
201
201
  .block-editor-block-list__layout.is-navigate-mode .block-editor-block-list__block.is-selected .components-placeholder ::selection, .block-editor-block-list__layout.is-navigate-mode .block-editor-block-list__block.is-hovered .components-placeholder ::selection,
202
- .block-editor-block-list__layout .block-editor-block-list__block.is-multi-selected:not([contenteditable]) .components-placeholder ::selection,
202
+ .block-editor-block-list__layout .block-editor-block-list__block.is-multi-selected:not(.is-partially-selected) .components-placeholder ::selection,
203
203
  .block-editor-block-list__layout .block-editor-block-list__block.is-highlighted .components-placeholder ::selection,
204
204
  .block-editor-block-list__layout .block-editor-block-list__block.is-highlighted ~ .is-multi-selected .components-placeholder ::selection {
205
205
  background: transparent;
@@ -709,6 +709,15 @@
709
709
  border-radius: 2px;
710
710
  }
711
711
 
712
+ .block-editor-block-lock-modal__template-lock {
713
+ border-top: 1px solid #ddd;
714
+ margin-top: 16px;
715
+ padding: 12px 0;
716
+ }
717
+ .block-editor-block-lock-modal__template-lock .components-base-control__field {
718
+ margin: 0;
719
+ }
720
+
712
721
  .block-editor-block-lock-modal__actions {
713
722
  margin-top: 24px;
714
723
  }
@@ -1434,6 +1443,8 @@
1434
1443
  display: block;
1435
1444
  width: 100%;
1436
1445
  padding: 32px;
1446
+ padding-bottom: 0;
1447
+ padding-top: 0;
1437
1448
  column-count: 2;
1438
1449
  }
1439
1450
  @media (min-width: 1440px) {
@@ -1465,7 +1476,8 @@
1465
1476
  text-align: left;
1466
1477
  margin: 0;
1467
1478
  color: #1e1e1e;
1468
- border-radius: 2px 2px 0 0;
1479
+ position: absolute;
1480
+ bottom: 0;
1469
1481
  background-color: #fff;
1470
1482
  display: flex;
1471
1483
  flex-direction: row;
@@ -1531,7 +1543,6 @@
1531
1543
  .block-editor-block-pattern-setup__carousel,
1532
1544
  .block-editor-block-pattern-setup__grid {
1533
1545
  width: 100%;
1534
- overflow-y: auto;
1535
1546
  }
1536
1547
 
1537
1548
  .block-editor-block-variation-transforms {
@@ -1721,6 +1732,10 @@
1721
1732
  width: 100%;
1722
1733
  }
1723
1734
 
1735
+ .block-editor-color-gradient-control__tab-panel {
1736
+ padding-top: 8px;
1737
+ }
1738
+
1724
1739
  .block-editor-contrast-checker > .components-notice {
1725
1740
  margin: 0;
1726
1741
  }
@@ -2548,7 +2563,7 @@
2548
2563
  align-items: center;
2549
2564
  width: 100%;
2550
2565
  height: auto;
2551
- padding: 6px 12px 6px 0;
2566
+ padding: 6px 4px 6px 0;
2552
2567
  text-align: left;
2553
2568
  color: #1e1e1e;
2554
2569
  border-radius: 2px;
@@ -2666,7 +2681,7 @@
2666
2681
  padding: 0;
2667
2682
  }
2668
2683
  .block-editor-list-view-leaf .block-editor-list-view-block__menu-cell {
2669
- padding-right: 5px;
2684
+ padding-right: 4px;
2670
2685
  }
2671
2686
  .block-editor-list-view-leaf .block-editor-list-view-block__menu-cell .components-button.has-icon {
2672
2687
  height: 24px;
@@ -2740,13 +2755,24 @@
2740
2755
  .block-editor-list-view-leaf .block-editor-inserter__toggle:active {
2741
2756
  color: #fff;
2742
2757
  }
2758
+ .block-editor-list-view-leaf .block-editor-list-view-block-select-button__label-wrapper {
2759
+ min-width: 120px;
2760
+ }
2761
+ .block-editor-list-view-leaf .block-editor-list-view-block-select-button__title {
2762
+ flex: 1;
2763
+ position: relative;
2764
+ }
2765
+ .block-editor-list-view-leaf .block-editor-list-view-block-select-button__title .components-truncate {
2766
+ position: absolute;
2767
+ width: 100%;
2768
+ transform: translateY(-50%);
2769
+ }
2743
2770
  .block-editor-list-view-leaf .block-editor-list-view-block-select-button__anchor {
2744
2771
  background: rgba(0, 0, 0, 0.1);
2745
2772
  border-radius: 2px;
2746
2773
  display: inline-block;
2747
2774
  padding: 2px 6px;
2748
- margin: 0 8px;
2749
- max-width: 120px;
2775
+ max-width: min(100px, 40%);
2750
2776
  overflow: hidden;
2751
2777
  text-overflow: ellipsis;
2752
2778
  }
@@ -4067,7 +4093,7 @@ figcaption.block-editor-rich-text__editable [data-rich-text-placeholder]::before
4067
4093
 
4068
4094
  .block-editor-block-patterns-explorer__sidebar {
4069
4095
  position: absolute;
4070
- top: 60px;
4096
+ top: 76px;
4071
4097
  left: 0;
4072
4098
  bottom: 0;
4073
4099
  width: 280px;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/block-editor",
3
- "version": "9.4.0",
3
+ "version": "9.5.0",
4
4
  "description": "Generic block editor.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -33,32 +33,32 @@
33
33
  "dependencies": {
34
34
  "@babel/runtime": "^7.16.0",
35
35
  "@react-spring/web": "^9.4.5",
36
- "@wordpress/a11y": "^3.12.0",
37
- "@wordpress/api-fetch": "^6.9.0",
38
- "@wordpress/blob": "^3.12.0",
39
- "@wordpress/blocks": "^11.11.0",
40
- "@wordpress/components": "^19.14.0",
41
- "@wordpress/compose": "^5.10.0",
42
- "@wordpress/data": "^6.12.0",
43
- "@wordpress/date": "^4.12.0",
44
- "@wordpress/deprecated": "^3.12.0",
45
- "@wordpress/dom": "^3.12.0",
46
- "@wordpress/element": "^4.10.0",
47
- "@wordpress/hooks": "^3.12.0",
48
- "@wordpress/html-entities": "^3.12.0",
49
- "@wordpress/i18n": "^4.12.0",
50
- "@wordpress/icons": "^9.3.0",
51
- "@wordpress/is-shallow-equal": "^4.12.0",
52
- "@wordpress/keyboard-shortcuts": "^3.10.0",
53
- "@wordpress/keycodes": "^3.12.0",
54
- "@wordpress/notices": "^3.12.0",
55
- "@wordpress/rich-text": "^5.10.0",
56
- "@wordpress/shortcode": "^3.12.0",
57
- "@wordpress/style-engine": "^0.11.0",
58
- "@wordpress/token-list": "^2.12.0",
59
- "@wordpress/url": "^3.13.0",
60
- "@wordpress/warning": "^2.12.0",
61
- "@wordpress/wordcount": "^3.12.0",
36
+ "@wordpress/a11y": "^3.13.0",
37
+ "@wordpress/api-fetch": "^6.10.0",
38
+ "@wordpress/blob": "^3.13.0",
39
+ "@wordpress/blocks": "^11.12.0",
40
+ "@wordpress/components": "^19.15.0",
41
+ "@wordpress/compose": "^5.11.0",
42
+ "@wordpress/data": "^6.13.0",
43
+ "@wordpress/date": "^4.13.0",
44
+ "@wordpress/deprecated": "^3.13.0",
45
+ "@wordpress/dom": "^3.13.0",
46
+ "@wordpress/element": "^4.11.0",
47
+ "@wordpress/hooks": "^3.13.0",
48
+ "@wordpress/html-entities": "^3.13.0",
49
+ "@wordpress/i18n": "^4.13.0",
50
+ "@wordpress/icons": "^9.4.0",
51
+ "@wordpress/is-shallow-equal": "^4.13.0",
52
+ "@wordpress/keyboard-shortcuts": "^3.11.0",
53
+ "@wordpress/keycodes": "^3.13.0",
54
+ "@wordpress/notices": "^3.13.0",
55
+ "@wordpress/rich-text": "^5.11.0",
56
+ "@wordpress/shortcode": "^3.13.0",
57
+ "@wordpress/style-engine": "^0.12.0",
58
+ "@wordpress/token-list": "^2.13.0",
59
+ "@wordpress/url": "^3.14.0",
60
+ "@wordpress/warning": "^2.13.0",
61
+ "@wordpress/wordcount": "^3.13.0",
62
62
  "classnames": "^2.3.1",
63
63
  "colord": "^2.7.0",
64
64
  "diff": "^4.0.2",
@@ -77,5 +77,5 @@
77
77
  "publishConfig": {
78
78
  "access": "public"
79
79
  },
80
- "gitHead": "a80eeb62ec7cb1418b9915c277e084a29d6665e3"
80
+ "gitHead": "9d9d33bbdf317a4381b8ca1713e43bb50df653b3"
81
81
  }
@@ -1,27 +1,62 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { TouchableWithoutFeedback } from 'react-native';
5
+
1
6
  /**
2
7
  * WordPress dependencies
3
8
  */
4
9
  import { __, sprintf } from '@wordpress/i18n';
10
+ import { useSelect, useDispatch } from '@wordpress/data';
11
+ import { createBlock } from '@wordpress/blocks';
5
12
 
6
13
  /**
7
14
  * Internal dependencies
8
15
  */
9
16
  import Warning from '../warning';
17
+ import { store as blockEditorStore } from '../../store';
10
18
 
11
- export default function BlockInvalidWarning( { blockTitle, icon } ) {
19
+ export default function BlockInvalidWarning( { blockTitle, icon, clientId } ) {
12
20
  const accessibilityLabel = sprintf(
13
21
  /* translators: accessibility text for blocks with invalid content. %d: localized block title */
14
22
  __( '%s block. This block has invalid content' ),
15
23
  blockTitle
16
24
  );
17
25
 
26
+ const selector = ( select ) => {
27
+ const { getBlock } = select( blockEditorStore );
28
+ const block = getBlock( clientId );
29
+ return {
30
+ block,
31
+ };
32
+ };
33
+
34
+ const { block } = useSelect( selector, [ clientId ] );
35
+
36
+ const { replaceBlock } = useDispatch( blockEditorStore );
37
+
38
+ const recoverBlock = ( { name, attributes, innerBlocks } ) =>
39
+ createBlock( name, attributes, innerBlocks );
40
+
41
+ const attemptBlockRecovery = () => {
42
+ replaceBlock( block.clientId, recoverBlock( block ) );
43
+ };
44
+
18
45
  return (
19
- <Warning
20
- title={ blockTitle }
21
- message={ __( 'Problem displaying block' ) }
22
- icon={ icon }
46
+ <TouchableWithoutFeedback
47
+ onPress={ attemptBlockRecovery }
23
48
  accessible={ true }
24
- accessibilityLabel={ accessibilityLabel }
25
- />
49
+ accessibilityRole={ 'button' }
50
+ >
51
+ <Warning
52
+ title={ blockTitle }
53
+ // eslint-disable-next-line @wordpress/i18n-no-collapsible-whitespace
54
+ message={ __(
55
+ 'Problem displaying block. \nTap to attempt block recovery.'
56
+ ) }
57
+ icon={ icon }
58
+ accessibilityLabel={ accessibilityLabel }
59
+ />
60
+ </TouchableWithoutFeedback>
26
61
  );
27
62
  }
@@ -56,10 +56,10 @@ function mergeWrapperProps( propsA, propsB ) {
56
56
  ...propsB,
57
57
  };
58
58
 
59
- if ( propsA && propsB && propsA.className && propsB.className ) {
59
+ if ( propsA?.className && propsB?.className ) {
60
60
  newProps.className = classnames( propsA.className, propsB.className );
61
61
  }
62
- if ( propsA && propsB && propsA.style && propsB.style ) {
62
+ if ( propsA?.style && propsB?.style ) {
63
63
  newProps.style = { ...propsA.style, ...propsB.style };
64
64
  }
65
65
 
@@ -272,6 +272,7 @@ class BlockListBlock extends Component {
272
272
  <BlockInvalidWarning
273
273
  blockTitle={ title }
274
274
  icon={ icon }
275
+ clientId={ clientId }
275
276
  />
276
277
  )
277
278
  }
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { identity } from 'lodash';
5
4
  import { View, Platform, TouchableWithoutFeedback } from 'react-native';
6
5
 
7
6
  /**
@@ -35,6 +34,7 @@ import { BlockDraggableWrapper } from '../block-draggable';
35
34
  import { store as blockEditorStore } from '../../store';
36
35
 
37
36
  export const OnCaretVerticalPositionChange = createContext();
37
+ const identity = ( x ) => x;
38
38
 
39
39
  const stylesMemo = {};
40
40
  const getStyles = (
@@ -7,6 +7,7 @@ import { createContext, useContext } from '@wordpress/element';
7
7
  * Internal dependencies
8
8
  */
9
9
  import { getLayoutType } from '../../layouts';
10
+ import useSetting from '../use-setting';
10
11
 
11
12
  export const defaultLayout = { type: 'default' };
12
13
 
@@ -24,12 +25,23 @@ export function useLayout() {
24
25
  return useContext( Layout );
25
26
  }
26
27
 
27
- export function LayoutStyle( { layout = {}, ...props } ) {
28
+ export function LayoutStyle( { layout = {}, css, ...props } ) {
28
29
  const layoutType = getLayoutType( layout.type );
30
+ const blockGapSupport = useSetting( 'spacing.blockGap' );
31
+ const hasBlockGapSupport = blockGapSupport !== null;
29
32
 
30
33
  if ( layoutType ) {
31
- return <layoutType.save layout={ layout } { ...props } />;
34
+ if ( css ) {
35
+ return <style>{ css }</style>;
36
+ }
37
+ const layoutStyle = layoutType.getLayoutStyle?.( {
38
+ hasBlockGapSupport,
39
+ layout,
40
+ ...props,
41
+ } );
42
+ if ( layoutStyle ) {
43
+ return <style>{ layoutStyle }</style>;
44
+ }
32
45
  }
33
-
34
46
  return null;
35
47
  }
@@ -26,7 +26,7 @@
26
26
  // When selecting multiple blocks, we provide an additional selection indicator.
27
27
  &.is-navigate-mode .block-editor-block-list__block.is-selected,
28
28
  &.is-navigate-mode .block-editor-block-list__block.is-hovered,
29
- .block-editor-block-list__block.is-multi-selected:not([contenteditable]),
29
+ .block-editor-block-list__block.is-multi-selected:not(.is-partially-selected),
30
30
  .block-editor-block-list__block.is-highlighted,
31
31
  .block-editor-block-list__block.is-highlighted ~ .is-multi-selected {
32
32
  &::after {
@@ -33,6 +33,7 @@ export function useBlockClassNames( clientId ) {
33
33
  getSettings,
34
34
  hasSelectedInnerBlock,
35
35
  isTyping,
36
+ __unstableIsFullySelected,
36
37
  } = select( blockEditorStore );
37
38
  const { outlineMode } = getSettings();
38
39
  const isDragging = isBlockBeingDragged( clientId );
@@ -44,10 +45,13 @@ export function useBlockClassNames( clientId ) {
44
45
  clientId,
45
46
  checkDeep
46
47
  );
48
+ const isMultiSelected = isBlockMultiSelected( clientId );
47
49
  return classnames( {
48
50
  'is-selected': isSelected,
49
51
  'is-highlighted': isBlockHighlighted( clientId ),
50
- 'is-multi-selected': isBlockMultiSelected( clientId ),
52
+ 'is-multi-selected': isMultiSelected,
53
+ 'is-partially-selected':
54
+ isMultiSelected && ! __unstableIsFullySelected(),
51
55
  'is-reusable': isReusableBlock( getBlockType( name ) ),
52
56
  'is-dragging': isDragging,
53
57
  'has-child-selected': isAncestorOfSelectedBlock,
@@ -10,6 +10,7 @@ import {
10
10
  FlexItem,
11
11
  Icon,
12
12
  Modal,
13
+ ToggleControl,
13
14
  } from '@wordpress/components';
14
15
  import { lock as lockIcon, unlock as unlockIcon } from '@wordpress/icons';
15
16
  import { useInstanceId } from '@wordpress/compose';
@@ -23,20 +24,41 @@ import useBlockLock from './use-block-lock';
23
24
  import useBlockDisplayInformation from '../use-block-display-information';
24
25
  import { store as blockEditorStore } from '../../store';
25
26
 
27
+ function getTemplateLockValue( lock ) {
28
+ // Prevents all operations.
29
+ if ( lock.remove && lock.move ) {
30
+ return 'all';
31
+ }
32
+
33
+ // Prevents inserting or removing blocks, but allows moving existing blocks.
34
+ if ( lock.remove && ! lock.move ) {
35
+ return 'insert';
36
+ }
37
+
38
+ return false;
39
+ }
40
+
26
41
  export default function BlockLockModal( { clientId, onClose } ) {
27
42
  const [ lock, setLock ] = useState( { move: false, remove: false } );
28
43
  const { canEdit, canMove, canRemove } = useBlockLock( clientId );
29
- const { isReusable } = useSelect(
44
+ const { isReusable, templateLock, hasTemplateLock } = useSelect(
30
45
  ( select ) => {
31
- const { getBlockName } = select( blockEditorStore );
46
+ const { getBlockName, getBlockAttributes } =
47
+ select( blockEditorStore );
32
48
  const blockName = getBlockName( clientId );
49
+ const blockType = getBlockType( blockName );
33
50
 
34
51
  return {
35
- isReusable: isReusableBlock( getBlockType( blockName ) ),
52
+ isReusable: isReusableBlock( blockType ),
53
+ templateLock: getBlockAttributes( clientId )?.templateLock,
54
+ hasTemplateLock: !! blockType?.attributes?.templateLock,
36
55
  };
37
56
  },
38
57
  [ clientId ]
39
58
  );
59
+ const [ applyTemplateLock, setApplyTemplateLock ] = useState(
60
+ !! templateLock
61
+ );
40
62
  const { updateBlockAttributes } = useDispatch( blockEditorStore );
41
63
  const blockInformation = useBlockDisplayInformation( clientId );
42
64
  const instanceId = useInstanceId(
@@ -69,7 +91,12 @@ export default function BlockLockModal( { clientId, onClose } ) {
69
91
  <form
70
92
  onSubmit={ ( event ) => {
71
93
  event.preventDefault();
72
- updateBlockAttributes( [ clientId ], { lock } );
94
+ updateBlockAttributes( [ clientId ], {
95
+ lock,
96
+ templateLock: applyTemplateLock
97
+ ? getTemplateLockValue( lock )
98
+ : undefined,
99
+ } );
73
100
  onClose();
74
101
  } }
75
102
  >
@@ -171,6 +198,17 @@ export default function BlockLockModal( { clientId, onClose } ) {
171
198
  />
172
199
  </li>
173
200
  </ul>
201
+ { hasTemplateLock && (
202
+ <ToggleControl
203
+ className="block-editor-block-lock-modal__template-lock"
204
+ label={ __( 'Apply to all blocks inside' ) }
205
+ checked={ applyTemplateLock }
206
+ disabled={ lock.move && ! lock.remove }
207
+ onChange={ () =>
208
+ setApplyTemplateLock( ! applyTemplateLock )
209
+ }
210
+ />
211
+ ) }
174
212
  </div>
175
213
  <Flex
176
214
  className="block-editor-block-lock-modal__actions"
@@ -53,6 +53,16 @@
53
53
  }
54
54
  }
55
55
 
56
+ .block-editor-block-lock-modal__template-lock {
57
+ border-top: $border-width solid $gray-300;
58
+ margin-top: $grid-unit-20;
59
+ padding: $grid-unit-15 0;
60
+
61
+ .components-base-control__field {
62
+ margin: 0;
63
+ }
64
+ }
65
+
56
66
  .block-editor-block-lock-modal__actions {
57
67
  margin-top: $grid-unit-30;
58
68
  }