@wordpress/block-editor 15.10.1-next.ba3aee3a2.0 → 15.11.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 (214) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/block-bindings/attribute-control.cjs +1 -1
  3. package/build/components/block-bindings/attribute-control.cjs.map +1 -1
  4. package/build/components/block-bindings/source-fields-list.cjs +1 -1
  5. package/build/components/block-bindings/source-fields-list.cjs.map +1 -1
  6. package/build/components/block-edit/context.cjs +5 -0
  7. package/build/components/block-edit/context.cjs.map +2 -2
  8. package/build/components/block-edit/index.cjs +3 -0
  9. package/build/components/block-edit/index.cjs.map +2 -2
  10. package/build/components/block-inspector/index.cjs +2 -9
  11. package/build/components/block-inspector/index.cjs.map +2 -2
  12. package/build/components/block-list/block.cjs +3 -0
  13. package/build/components/block-list/block.cjs.map +2 -2
  14. package/build/components/block-tools/index.cjs +82 -70
  15. package/build/components/block-tools/index.cjs.map +2 -2
  16. package/build/components/block-visibility/block-visibility-info.cjs +0 -59
  17. package/build/components/block-visibility/block-visibility-info.cjs.map +3 -3
  18. package/build/components/block-visibility/constants.cjs +10 -5
  19. package/build/components/block-visibility/constants.cjs.map +2 -2
  20. package/build/components/block-visibility/index.cjs +13 -5
  21. package/build/components/block-visibility/index.cjs.map +3 -3
  22. package/build/components/block-visibility/modal.cjs +397 -0
  23. package/build/components/block-visibility/modal.cjs.map +7 -0
  24. package/build/components/block-visibility/toolbar.cjs +1 -1
  25. package/build/components/block-visibility/toolbar.cjs.map +2 -2
  26. package/build/components/block-visibility/use-block-visibility.cjs +13 -17
  27. package/build/components/block-visibility/use-block-visibility.cjs.map +2 -2
  28. package/build/components/block-visibility/utils.cjs +81 -0
  29. package/build/components/block-visibility/utils.cjs.map +7 -0
  30. package/build/components/block-visibility/viewport-menu-item.cjs +61 -0
  31. package/build/components/block-visibility/viewport-menu-item.cjs.map +7 -0
  32. package/build/components/block-visibility/viewport-toolbar.cjs +89 -0
  33. package/build/components/block-visibility/viewport-toolbar.cjs.map +7 -0
  34. package/build/components/button-block-appender/index.cjs +23 -19
  35. package/build/components/button-block-appender/index.cjs.map +2 -2
  36. package/build/components/font-sizes/font-size-picker.cjs +2 -1
  37. package/build/components/font-sizes/font-size-picker.cjs.map +2 -2
  38. package/build/components/inner-blocks/use-inner-block-template-sync.cjs +1 -1
  39. package/build/components/inner-blocks/use-inner-block-template-sync.cjs.map +1 -1
  40. package/build/components/inserter/menu.cjs +6 -2
  41. package/build/components/inserter/menu.cjs.map +2 -2
  42. package/build/components/inspector-controls/fill.cjs +4 -25
  43. package/build/components/inspector-controls/fill.cjs.map +2 -2
  44. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.cjs +6 -6
  45. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.cjs.map +2 -2
  46. package/build/components/list-view/block-select-button.cjs +2 -2
  47. package/build/components/list-view/block-select-button.cjs.map +2 -2
  48. package/build/components/list-view/block.cjs +39 -22
  49. package/build/components/list-view/block.cjs.map +2 -2
  50. package/build/components/rich-text/index.cjs +1 -1
  51. package/build/components/rich-text/index.cjs.map +1 -1
  52. package/build/components/url-input/index.cjs +2 -0
  53. package/build/components/url-input/index.cjs.map +2 -2
  54. package/build/components/use-block-commands/index.cjs +1 -1
  55. package/build/components/use-block-commands/index.cjs.map +2 -2
  56. package/build/hooks/block-fields/index.cjs +92 -217
  57. package/build/hooks/block-fields/index.cjs.map +3 -3
  58. package/build/hooks/block-fields/link/index.cjs +13 -32
  59. package/build/hooks/block-fields/link/index.cjs.map +2 -2
  60. package/build/hooks/block-fields/media/index.cjs +36 -67
  61. package/build/hooks/block-fields/media/index.cjs.map +2 -2
  62. package/build/hooks/block-fields/rich-text/index.cjs +1 -5
  63. package/build/hooks/block-fields/rich-text/index.cjs.map +2 -2
  64. package/build/hooks/cross-origin-isolation.cjs +102 -0
  65. package/build/hooks/cross-origin-isolation.cjs.map +7 -0
  66. package/build/hooks/index.cjs +3 -1
  67. package/build/hooks/index.cjs.map +3 -3
  68. package/build/hooks/list-view.cjs +27 -10
  69. package/build/hooks/list-view.cjs.map +2 -2
  70. package/build/hooks/utils.cjs +3 -2
  71. package/build/hooks/utils.cjs.map +2 -2
  72. package/build/layouts/flex.cjs +6 -2
  73. package/build/layouts/flex.cjs.map +2 -2
  74. package/build/store/private-selectors.cjs +33 -1
  75. package/build/store/private-selectors.cjs.map +3 -3
  76. package/build/store/reducer.cjs +1 -1
  77. package/build/store/reducer.cjs.map +1 -1
  78. package/build/store/selectors.cjs +14 -9
  79. package/build/store/selectors.cjs.map +2 -2
  80. package/build-module/components/block-bindings/attribute-control.mjs +1 -1
  81. package/build-module/components/block-bindings/attribute-control.mjs.map +1 -1
  82. package/build-module/components/block-bindings/source-fields-list.mjs +1 -1
  83. package/build-module/components/block-bindings/source-fields-list.mjs.map +1 -1
  84. package/build-module/components/block-edit/context.mjs +4 -0
  85. package/build-module/components/block-edit/context.mjs.map +2 -2
  86. package/build-module/components/block-edit/index.mjs +4 -0
  87. package/build-module/components/block-edit/index.mjs.map +2 -2
  88. package/build-module/components/block-inspector/index.mjs +2 -9
  89. package/build-module/components/block-inspector/index.mjs.map +2 -2
  90. package/build-module/components/block-list/block.mjs +3 -0
  91. package/build-module/components/block-list/block.mjs.map +2 -2
  92. package/build-module/components/block-tools/index.mjs +85 -73
  93. package/build-module/components/block-tools/index.mjs.map +2 -2
  94. package/build-module/components/block-visibility/block-visibility-info.mjs +0 -59
  95. package/build-module/components/block-visibility/block-visibility-info.mjs.map +3 -3
  96. package/build-module/components/block-visibility/constants.mjs +8 -4
  97. package/build-module/components/block-visibility/constants.mjs.map +2 -2
  98. package/build-module/components/block-visibility/index.mjs +13 -6
  99. package/build-module/components/block-visibility/index.mjs.map +2 -2
  100. package/build-module/components/block-visibility/modal.mjs +384 -0
  101. package/build-module/components/block-visibility/modal.mjs.map +7 -0
  102. package/build-module/components/block-visibility/toolbar.mjs +1 -1
  103. package/build-module/components/block-visibility/toolbar.mjs.map +2 -2
  104. package/build-module/components/block-visibility/use-block-visibility.mjs +13 -13
  105. package/build-module/components/block-visibility/use-block-visibility.mjs.map +2 -2
  106. package/build-module/components/block-visibility/utils.mjs +55 -0
  107. package/build-module/components/block-visibility/utils.mjs.map +7 -0
  108. package/build-module/components/block-visibility/viewport-menu-item.mjs +40 -0
  109. package/build-module/components/block-visibility/viewport-menu-item.mjs.map +7 -0
  110. package/build-module/components/block-visibility/viewport-toolbar.mjs +68 -0
  111. package/build-module/components/block-visibility/viewport-toolbar.mjs.map +7 -0
  112. package/build-module/components/button-block-appender/index.mjs +23 -19
  113. package/build-module/components/button-block-appender/index.mjs.map +2 -2
  114. package/build-module/components/font-sizes/font-size-picker.mjs +2 -1
  115. package/build-module/components/font-sizes/font-size-picker.mjs.map +2 -2
  116. package/build-module/components/inner-blocks/use-inner-block-template-sync.mjs +1 -1
  117. package/build-module/components/inner-blocks/use-inner-block-template-sync.mjs.map +1 -1
  118. package/build-module/components/inserter/menu.mjs +6 -2
  119. package/build-module/components/inserter/menu.mjs.map +2 -2
  120. package/build-module/components/inspector-controls/fill.mjs +6 -22
  121. package/build-module/components/inspector-controls/fill.mjs.map +2 -2
  122. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.mjs +6 -6
  123. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.mjs.map +2 -2
  124. package/build-module/components/list-view/block-select-button.mjs +2 -2
  125. package/build-module/components/list-view/block-select-button.mjs.map +2 -2
  126. package/build-module/components/list-view/block.mjs +39 -22
  127. package/build-module/components/list-view/block.mjs.map +2 -2
  128. package/build-module/components/rich-text/index.mjs +1 -1
  129. package/build-module/components/rich-text/index.mjs.map +1 -1
  130. package/build-module/components/url-input/index.mjs +2 -0
  131. package/build-module/components/url-input/index.mjs.map +2 -2
  132. package/build-module/components/use-block-commands/index.mjs +1 -1
  133. package/build-module/components/use-block-commands/index.mjs.map +2 -2
  134. package/build-module/hooks/block-fields/index.mjs +85 -218
  135. package/build-module/hooks/block-fields/index.mjs.map +2 -2
  136. package/build-module/hooks/block-fields/link/index.mjs +13 -32
  137. package/build-module/hooks/block-fields/link/index.mjs.map +2 -2
  138. package/build-module/hooks/block-fields/media/index.mjs +36 -67
  139. package/build-module/hooks/block-fields/media/index.mjs.map +2 -2
  140. package/build-module/hooks/block-fields/rich-text/index.mjs +1 -5
  141. package/build-module/hooks/block-fields/rich-text/index.mjs.map +2 -2
  142. package/build-module/hooks/cross-origin-isolation.mjs +100 -0
  143. package/build-module/hooks/cross-origin-isolation.mjs.map +7 -0
  144. package/build-module/hooks/index.mjs +3 -1
  145. package/build-module/hooks/index.mjs.map +2 -2
  146. package/build-module/hooks/list-view.mjs +27 -10
  147. package/build-module/hooks/list-view.mjs.map +2 -2
  148. package/build-module/hooks/utils.mjs +5 -3
  149. package/build-module/hooks/utils.mjs.map +2 -2
  150. package/build-module/layouts/flex.mjs +6 -2
  151. package/build-module/layouts/flex.mjs.map +2 -2
  152. package/build-module/store/private-selectors.mjs +34 -1
  153. package/build-module/store/private-selectors.mjs.map +2 -2
  154. package/build-module/store/reducer.mjs +1 -1
  155. package/build-module/store/reducer.mjs.map +1 -1
  156. package/build-module/store/selectors.mjs +14 -9
  157. package/build-module/store/selectors.mjs.map +2 -2
  158. package/build-style/content-rtl.css +4 -1
  159. package/build-style/content.css +4 -1
  160. package/build-style/style-rtl.css +48 -0
  161. package/build-style/style.css +48 -0
  162. package/package.json +39 -39
  163. package/src/components/block-bindings/attribute-control.js +1 -1
  164. package/src/components/block-bindings/source-fields-list.js +1 -1
  165. package/src/components/block-edit/context.js +3 -0
  166. package/src/components/block-edit/index.js +6 -0
  167. package/src/components/block-inspector/index.js +2 -6
  168. package/src/components/block-list/block.js +3 -0
  169. package/src/components/block-list/block.native.js +5 -0
  170. package/src/components/block-list/content.scss +4 -1
  171. package/src/components/block-patterns-list/stories/index.story.jsx +1 -1
  172. package/src/components/block-tools/index.js +45 -33
  173. package/src/components/block-visibility/block-visibility-info.js +0 -1
  174. package/src/components/block-visibility/constants.js +7 -3
  175. package/src/components/block-visibility/index.js +21 -3
  176. package/src/components/block-visibility/modal.js +358 -0
  177. package/src/components/block-visibility/style.scss +58 -0
  178. package/src/components/block-visibility/test/use-block-visibility.js +12 -56
  179. package/src/components/block-visibility/test/utils.js +266 -0
  180. package/src/components/block-visibility/toolbar.js +1 -1
  181. package/src/components/block-visibility/use-block-visibility.js +18 -21
  182. package/src/components/block-visibility/utils.js +95 -0
  183. package/src/components/block-visibility/viewport-menu-item.js +42 -0
  184. package/src/components/block-visibility/viewport-toolbar.js +88 -0
  185. package/src/components/button-block-appender/index.js +2 -2
  186. package/src/components/font-sizes/font-size-picker.js +1 -0
  187. package/src/components/inner-blocks/use-inner-block-template-sync.js +1 -1
  188. package/src/components/inserter/menu.js +6 -2
  189. package/src/components/inspector-controls/fill.js +10 -20
  190. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +11 -8
  191. package/src/components/list-view/block-select-button.js +2 -2
  192. package/src/components/list-view/block.js +47 -25
  193. package/src/components/rich-text/index.js +1 -1
  194. package/src/components/url-input/index.js +2 -0
  195. package/src/components/use-block-commands/index.js +4 -3
  196. package/src/hooks/block-fields/index.js +127 -292
  197. package/src/hooks/block-fields/link/index.js +13 -51
  198. package/src/hooks/block-fields/media/index.js +35 -106
  199. package/src/hooks/block-fields/rich-text/index.js +1 -5
  200. package/src/hooks/block-fields/styles.scss +2 -0
  201. package/src/hooks/cross-origin-isolation.js +143 -0
  202. package/src/hooks/index.js +3 -1
  203. package/src/hooks/list-view.js +40 -10
  204. package/src/hooks/utils.js +4 -0
  205. package/src/layouts/flex.js +8 -3
  206. package/src/layouts/test/flex.js +53 -0
  207. package/src/store/private-selectors.js +64 -1
  208. package/src/store/reducer.js +1 -1
  209. package/src/store/selectors.js +21 -15
  210. package/src/store/test/private-selectors.js +80 -0
  211. package/src/style.scss +1 -0
  212. package/src/components/block-visibility/styles.scss +0 -10
  213. /package/src/components/block-icon/stories/{index.story.js → index.story.ts} +0 -0
  214. /package/src/components/contrast-checker/stories/{index.story.js → index.story.ts} +0 -0
@@ -208,13 +208,16 @@ _::-webkit-full-page-media, _:future, :root [data-has-multi-selection=true] .blo
208
208
  border: none !important;
209
209
  padding: 0 !important;
210
210
  opacity: 0;
211
- margin: 0 !important;
211
+ margin-top: 0 !important;
212
+ margin-bottom: 0 !important;
212
213
  }
213
214
  .block-editor-block-list__layout.is-layout-flex:not(.is-vertical) > .is-block-hidden {
214
215
  width: 0;
215
216
  height: auto;
216
217
  align-self: stretch;
217
218
  white-space: nowrap !important;
219
+ margin-right: 0 !important;
220
+ margin-left: 0 !important;
218
221
  }
219
222
  .block-editor-block-list__layout [class^=components-] {
220
223
  -webkit-user-select: text;
@@ -208,13 +208,16 @@ _::-webkit-full-page-media, _:future, :root [data-has-multi-selection=true] .blo
208
208
  border: none !important;
209
209
  padding: 0 !important;
210
210
  opacity: 0;
211
- margin: 0 !important;
211
+ margin-top: 0 !important;
212
+ margin-bottom: 0 !important;
212
213
  }
213
214
  .block-editor-block-list__layout.is-layout-flex:not(.is-vertical) > .is-block-hidden {
214
215
  width: 0;
215
216
  height: auto;
216
217
  align-self: stretch;
217
218
  white-space: nowrap !important;
219
+ margin-left: 0 !important;
220
+ margin-right: 0 !important;
218
221
  }
219
222
  .block-editor-block-list__layout [class^=components-] {
220
223
  -webkit-user-select: text;
@@ -3569,6 +3569,7 @@ iframe[name=editor-canvas] {
3569
3569
 
3570
3570
  .block-editor-block-fields__header-title {
3571
3571
  flex: 1;
3572
+ margin: 0 !important;
3572
3573
  }
3573
3574
 
3574
3575
  .block-editor-hooks__block-hooks {
@@ -4524,4 +4525,51 @@ div.block-editor-bindings__panel button:hover .block-editor-bindings__item span
4524
4525
 
4525
4526
  .spacing-sizes-control__wrapper .preset-input-control__icon {
4526
4527
  margin-right: -4px;
4528
+ }
4529
+
4530
+ .block-editor-block-visibility-modal {
4531
+ z-index: 1000001;
4532
+ }
4533
+ .block-editor-block-visibility-modal__options {
4534
+ border: 0;
4535
+ padding: 0;
4536
+ list-style: none;
4537
+ margin: 24px 0;
4538
+ }
4539
+ .block-editor-block-visibility-modal__options-item {
4540
+ display: flex;
4541
+ align-items: center;
4542
+ justify-content: space-between;
4543
+ margin: 0 0 16px 0;
4544
+ gap: 24px;
4545
+ }
4546
+ .block-editor-block-visibility-modal__options-item:last-child {
4547
+ margin: 0;
4548
+ }
4549
+ .block-editor-block-visibility-modal__options-item--everywhere {
4550
+ flex-direction: column;
4551
+ align-items: start;
4552
+ }
4553
+ .block-editor-block-visibility-modal__options-checkbox--everywhere {
4554
+ font-weight: 600;
4555
+ }
4556
+ .block-editor-block-visibility-modal__options-icon--checked {
4557
+ fill: #ddd;
4558
+ }
4559
+ .block-editor-block-visibility-modal__sub-options {
4560
+ width: 100%;
4561
+ padding-inline-start: 12px;
4562
+ }
4563
+ .block-editor-block-visibility-modal__description {
4564
+ font-size: 12px;
4565
+ color: #757575;
4566
+ }
4567
+
4568
+ .block-editor-block-visibility-info {
4569
+ padding-top: 4px;
4570
+ padding-bottom: 4px;
4571
+ margin: 0 16px 16px;
4572
+ display: flex;
4573
+ align-items: center;
4574
+ justify-content: start;
4527
4575
  }
@@ -3571,6 +3571,7 @@ iframe[name=editor-canvas] {
3571
3571
 
3572
3572
  .block-editor-block-fields__header-title {
3573
3573
  flex: 1;
3574
+ margin: 0 !important;
3574
3575
  }
3575
3576
 
3576
3577
  .block-editor-hooks__block-hooks {
@@ -4526,4 +4527,51 @@ div.block-editor-bindings__panel button:hover .block-editor-bindings__item span
4526
4527
 
4527
4528
  .spacing-sizes-control__wrapper .preset-input-control__icon {
4528
4529
  margin-left: -4px;
4530
+ }
4531
+
4532
+ .block-editor-block-visibility-modal {
4533
+ z-index: 1000001;
4534
+ }
4535
+ .block-editor-block-visibility-modal__options {
4536
+ border: 0;
4537
+ padding: 0;
4538
+ list-style: none;
4539
+ margin: 24px 0;
4540
+ }
4541
+ .block-editor-block-visibility-modal__options-item {
4542
+ display: flex;
4543
+ align-items: center;
4544
+ justify-content: space-between;
4545
+ margin: 0 0 16px 0;
4546
+ gap: 24px;
4547
+ }
4548
+ .block-editor-block-visibility-modal__options-item:last-child {
4549
+ margin: 0;
4550
+ }
4551
+ .block-editor-block-visibility-modal__options-item--everywhere {
4552
+ flex-direction: column;
4553
+ align-items: start;
4554
+ }
4555
+ .block-editor-block-visibility-modal__options-checkbox--everywhere {
4556
+ font-weight: 600;
4557
+ }
4558
+ .block-editor-block-visibility-modal__options-icon--checked {
4559
+ fill: #ddd;
4560
+ }
4561
+ .block-editor-block-visibility-modal__sub-options {
4562
+ width: 100%;
4563
+ padding-inline-start: 12px;
4564
+ }
4565
+ .block-editor-block-visibility-modal__description {
4566
+ font-size: 12px;
4567
+ color: #757575;
4568
+ }
4569
+
4570
+ .block-editor-block-visibility-info {
4571
+ padding-top: 4px;
4572
+ padding-bottom: 4px;
4573
+ margin: 0 16px 16px;
4574
+ display: flex;
4575
+ align-items: center;
4576
+ justify-content: start;
4529
4577
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/block-editor",
3
- "version": "15.10.1-next.ba3aee3a2.0",
3
+ "version": "15.11.0",
4
4
  "description": "Generic block editor.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -61,43 +61,43 @@
61
61
  ],
62
62
  "dependencies": {
63
63
  "@react-spring/web": "^9.4.5",
64
- "@wordpress/a11y": "^4.37.1-next.ba3aee3a2.0",
65
- "@wordpress/api-fetch": "^7.37.1-next.ba3aee3a2.0",
66
- "@wordpress/base-styles": "^6.13.2-next.ba3aee3a2.0",
67
- "@wordpress/blob": "^4.37.1-next.ba3aee3a2.0",
68
- "@wordpress/block-serialization-default-parser": "^5.37.1-next.ba3aee3a2.0",
69
- "@wordpress/blocks": "^15.10.1-next.ba3aee3a2.0",
70
- "@wordpress/commands": "^1.37.1-next.ba3aee3a2.0",
71
- "@wordpress/components": "^32.0.1-next.ba3aee3a2.0",
72
- "@wordpress/compose": "^7.37.1-next.ba3aee3a2.0",
73
- "@wordpress/data": "^10.37.1-next.ba3aee3a2.0",
74
- "@wordpress/dataviews": "^11.2.1-next.ba3aee3a2.0",
75
- "@wordpress/date": "^5.37.2-next.ba3aee3a2.0",
76
- "@wordpress/deprecated": "^4.37.1-next.ba3aee3a2.0",
77
- "@wordpress/dom": "^4.37.1-next.ba3aee3a2.0",
78
- "@wordpress/element": "^6.37.1-next.ba3aee3a2.0",
79
- "@wordpress/escape-html": "^3.37.1-next.ba3aee3a2.0",
80
- "@wordpress/global-styles-engine": "^1.4.1-next.ba3aee3a2.0",
81
- "@wordpress/hooks": "^4.37.1-next.ba3aee3a2.0",
82
- "@wordpress/html-entities": "^4.37.1-next.ba3aee3a2.0",
83
- "@wordpress/i18n": "^6.10.1-next.ba3aee3a2.0",
84
- "@wordpress/icons": "^11.4.1-next.ba3aee3a2.0",
85
- "@wordpress/image-cropper": "^1.1.1-next.ba3aee3a2.0",
86
- "@wordpress/interactivity": "^6.37.2-next.ba3aee3a2.0",
87
- "@wordpress/is-shallow-equal": "^5.37.1-next.ba3aee3a2.0",
88
- "@wordpress/keyboard-shortcuts": "^5.37.1-next.ba3aee3a2.0",
89
- "@wordpress/keycodes": "^4.38.1-next.ba3aee3a2.0",
90
- "@wordpress/notices": "^5.37.1-next.ba3aee3a2.0",
91
- "@wordpress/preferences": "^4.37.1-next.ba3aee3a2.0",
92
- "@wordpress/priority-queue": "^3.37.1-next.ba3aee3a2.0",
93
- "@wordpress/private-apis": "^1.37.1-next.ba3aee3a2.0",
94
- "@wordpress/rich-text": "^7.37.1-next.ba3aee3a2.0",
95
- "@wordpress/style-engine": "^2.37.1-next.ba3aee3a2.0",
96
- "@wordpress/token-list": "^3.37.1-next.ba3aee3a2.0",
97
- "@wordpress/upload-media": "^0.22.1-next.ba3aee3a2.0",
98
- "@wordpress/url": "^4.37.1-next.ba3aee3a2.0",
99
- "@wordpress/warning": "^3.37.1-next.ba3aee3a2.0",
100
- "@wordpress/wordcount": "^4.37.1-next.ba3aee3a2.0",
64
+ "@wordpress/a11y": "^4.38.0",
65
+ "@wordpress/api-fetch": "^7.38.0",
66
+ "@wordpress/base-styles": "^6.14.0",
67
+ "@wordpress/blob": "^4.38.0",
68
+ "@wordpress/block-serialization-default-parser": "^5.38.0",
69
+ "@wordpress/blocks": "^15.11.0",
70
+ "@wordpress/commands": "^1.38.0",
71
+ "@wordpress/components": "^32.0.0",
72
+ "@wordpress/compose": "^7.38.0",
73
+ "@wordpress/data": "^10.38.0",
74
+ "@wordpress/dataviews": "^11.2.0",
75
+ "@wordpress/date": "^5.38.0",
76
+ "@wordpress/deprecated": "^4.38.0",
77
+ "@wordpress/dom": "^4.38.0",
78
+ "@wordpress/element": "^6.38.0",
79
+ "@wordpress/escape-html": "^3.38.0",
80
+ "@wordpress/global-styles-engine": "^1.5.0",
81
+ "@wordpress/hooks": "^4.38.0",
82
+ "@wordpress/html-entities": "^4.38.0",
83
+ "@wordpress/i18n": "^6.11.0",
84
+ "@wordpress/icons": "^11.5.0",
85
+ "@wordpress/image-cropper": "^1.2.0",
86
+ "@wordpress/interactivity": "^6.38.0",
87
+ "@wordpress/is-shallow-equal": "^5.38.0",
88
+ "@wordpress/keyboard-shortcuts": "^5.38.0",
89
+ "@wordpress/keycodes": "^4.38.0",
90
+ "@wordpress/notices": "^5.38.0",
91
+ "@wordpress/preferences": "^4.38.0",
92
+ "@wordpress/priority-queue": "^3.38.0",
93
+ "@wordpress/private-apis": "^1.38.0",
94
+ "@wordpress/rich-text": "^7.38.0",
95
+ "@wordpress/style-engine": "^2.38.0",
96
+ "@wordpress/token-list": "^3.38.0",
97
+ "@wordpress/upload-media": "^0.23.0",
98
+ "@wordpress/url": "^4.38.0",
99
+ "@wordpress/warning": "^3.38.0",
100
+ "@wordpress/wordcount": "^4.38.0",
101
101
  "change-case": "^4.1.2",
102
102
  "clsx": "^2.1.1",
103
103
  "colord": "^2.7.0",
@@ -124,5 +124,5 @@
124
124
  "publishConfig": {
125
125
  "access": "public"
126
126
  },
127
- "gitHead": "67d2e486fcd40c753591cf911ca0659132f519ca"
127
+ "gitHead": "50c4c0f51e4797c217946ce42adfaa5eb026f33f"
128
128
  }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import fastDeepEqual from 'fast-deep-equal/es6';
4
+ import fastDeepEqual from 'fast-deep-equal/es6/index.js';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import fastDeepEqual from 'fast-deep-equal/es6';
4
+ import fastDeepEqual from 'fast-deep-equal/es6/index.js';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
@@ -5,6 +5,9 @@ import { createContext, useContext } from '@wordpress/element';
5
5
 
6
6
  export const mayDisplayControlsKey = Symbol( 'mayDisplayControls' );
7
7
  export const mayDisplayParentControlsKey = Symbol( 'mayDisplayParentControls' );
8
+ export const mayDisplayPatternEditingControlsKey = Symbol(
9
+ 'mayDisplayPatternEditingControls'
10
+ );
8
11
  export const blockEditingModeKey = Symbol( 'blockEditingMode' );
9
12
  export const blockBindingsKey = Symbol( 'blockBindings' );
10
13
  export const isPreviewModeKey = Symbol( 'isPreviewMode' );
@@ -13,6 +13,7 @@ import {
13
13
  useBlockEditContext,
14
14
  mayDisplayControlsKey,
15
15
  mayDisplayParentControlsKey,
16
+ mayDisplayPatternEditingControlsKey,
16
17
  blockEditingModeKey,
17
18
  blockBindingsKey,
18
19
  isPreviewModeKey,
@@ -33,6 +34,7 @@ export { useBlockEditContext };
33
34
  export default function BlockEdit( {
34
35
  mayDisplayControls,
35
36
  mayDisplayParentControls,
37
+ mayDisplayPatternEditingControls,
36
38
  blockEditingMode,
37
39
  isPreviewMode,
38
40
  // The remaining props are passed through the BlockEdit filters and are thus
@@ -69,6 +71,9 @@ export default function BlockEdit( {
69
71
  // usage outside of the package (this context is exposed).
70
72
  [ mayDisplayControlsKey ]: mayDisplayControls,
71
73
  [ mayDisplayParentControlsKey ]: mayDisplayParentControls,
74
+ [ mayDisplayPatternEditingControlsKey ]:
75
+ mayDisplayPatternEditingControls &&
76
+ blockEditingMode !== 'disabled',
72
77
  [ blockEditingModeKey ]: blockEditingMode,
73
78
  [ blockBindingsKey ]: bindings,
74
79
  [ isPreviewModeKey ]: isPreviewMode,
@@ -82,6 +87,7 @@ export default function BlockEdit( {
82
87
  __unstableLayoutClassNames,
83
88
  mayDisplayControls,
84
89
  mayDisplayParentControls,
90
+ mayDisplayPatternEditingControls,
85
91
  blockEditingMode,
86
92
  bindings,
87
93
  isPreviewMode,
@@ -36,14 +36,12 @@ function StyleInspectorSlots( {
36
36
  blockName,
37
37
  showAdvancedControls = true,
38
38
  showPositionControls = true,
39
- showListControls = false,
40
39
  showBindingsControls = true,
41
40
  } ) {
42
41
  const borderPanelLabel = useBorderPanelLabel( { blockName } );
43
42
  return (
44
43
  <>
45
44
  <InspectorControls.Slot />
46
- { showListControls && <InspectorControls.Slot group="list" /> }
47
45
  <InspectorControls.Slot
48
46
  group="color"
49
47
  label={ __( 'Color' ) }
@@ -377,11 +375,9 @@ const BlockInspectorSingleBlock = ( {
377
375
  ) }
378
376
  <ContentTab contentClientIds={ contentClientIds } />
379
377
  <InspectorControls.Slot group="content" />
378
+ <InspectorControls.Slot group="list" />
380
379
  { ! isSectionBlock && (
381
- <StyleInspectorSlots
382
- blockName={ blockName }
383
- showListControls
384
- />
380
+ <StyleInspectorSlots blockName={ blockName } />
385
381
  ) }
386
382
  { isSectionBlock &&
387
383
  isBlockSynced &&
@@ -106,6 +106,7 @@ function BlockListBlock( {
106
106
  const {
107
107
  mayDisplayControls,
108
108
  mayDisplayParentControls,
109
+ isSelectionWithinCurrentSection,
109
110
  themeSupportsLayout,
110
111
  ...context
111
112
  } = useContext( PrivateBlockContext );
@@ -135,6 +136,7 @@ function BlockListBlock( {
135
136
  }
136
137
  mayDisplayControls={ mayDisplayControls }
137
138
  mayDisplayParentControls={ mayDisplayParentControls }
139
+ mayDisplayPatternEditingControls={ isSelectionWithinCurrentSection }
138
140
  blockEditingMode={ context.blockEditingMode }
139
141
  isPreviewMode={ context.isPreviewMode }
140
142
  />
@@ -231,6 +233,7 @@ function BlockListBlock( {
231
233
  value={ {
232
234
  wrapperProps: updatedWrapperProps,
233
235
  isAligned,
236
+ isSelectionWithinCurrentSection,
234
237
  ...context,
235
238
  } }
236
239
  >
@@ -195,6 +195,7 @@ function BlockListBlock( {
195
195
  isParentSelected,
196
196
  order,
197
197
  mayDisplayControls,
198
+ mayDisplayPatternEditingControls,
198
199
  blockEditingMode,
199
200
  } = useSelect(
200
201
  ( select ) => {
@@ -263,6 +264,7 @@ function BlockListBlock( {
263
264
  getMultiSelectedBlockClientIds().every(
264
265
  ( id ) => getBlockName( id ) === name
265
266
  ) ),
267
+ mayDisplayPatternEditingControls: false, // Section/pattern editing not yet supported on native
266
268
  blockEditingMode: getBlockEditingMode( clientId ),
267
269
  };
268
270
  },
@@ -403,6 +405,9 @@ function BlockListBlock( {
403
405
  }
404
406
  wrapperProps={ wrapperProps }
405
407
  mayDisplayControls={ mayDisplayControls }
408
+ mayDisplayPatternEditingControls={
409
+ mayDisplayPatternEditingControls
410
+ }
406
411
  blockEditingMode={ blockEditingMode }
407
412
  />
408
413
  <View onLayout={ onLayout } />
@@ -109,7 +109,8 @@ _::-webkit-full-page-media, _:future, :root [data-has-multi-selection="true"] .b
109
109
  border: none !important;
110
110
  padding: 0 !important;
111
111
  opacity: 0;
112
- margin: 0 !important;
112
+ margin-top: 0 !important;
113
+ margin-bottom: 0 !important;
113
114
  }
114
115
 
115
116
  &.is-layout-flex:not(.is-vertical) > .is-block-hidden {
@@ -117,6 +118,8 @@ _::-webkit-full-page-media, _:future, :root [data-has-multi-selection="true"] .b
117
118
  height: auto;
118
119
  align-self: stretch;
119
120
  white-space: nowrap !important;
121
+ margin-left: 0 !important;
122
+ margin-right: 0 !important;
120
123
  }
121
124
 
122
125
  // Re-enable it on components inside.
@@ -9,7 +9,7 @@ import { fn } from 'storybook/test';
9
9
  import BlockPatternsList from '../';
10
10
  import { ExperimentalBlockEditorProvider } from '../../provider';
11
11
  import patterns from './fixtures';
12
- import blockLibraryStyles from '!!raw-loader!../../../../../block-library/build-style/style.css';
12
+ import blockLibraryStyles from '../../../../../block-library/build-style/style.css?raw';
13
13
 
14
14
  const blockEditorSettings = {
15
15
  styles: [ { css: blockLibraryStyles } ],
@@ -10,11 +10,11 @@ import { useSelect, useDispatch } from '@wordpress/data';
10
10
  import { isTextField } from '@wordpress/dom';
11
11
  import { Popover } from '@wordpress/components';
12
12
  import { __unstableUseShortcutEventMatch as useShortcutEventMatch } from '@wordpress/keyboard-shortcuts';
13
- import { useRef } from '@wordpress/element';
13
+ import { useRef, useState } from '@wordpress/element';
14
14
  import {
15
15
  switchToBlockType,
16
- store as blocksStore,
17
16
  hasBlockSupport,
17
+ store as blocksStore,
18
18
  } from '@wordpress/blocks';
19
19
  import { speak } from '@wordpress/a11y';
20
20
  import { __, sprintf, _n } from '@wordpress/i18n';
@@ -33,8 +33,9 @@ import usePopoverScroll from '../block-popover/use-popover-scroll';
33
33
  import ZoomOutModeInserters from './zoom-out-mode-inserters';
34
34
  import { useShowBlockTools } from './use-show-block-tools';
35
35
  import { unlock } from '../../lock-unlock';
36
- import { cleanEmptyObject } from '../../hooks/utils';
37
36
  import usePasteStyles from '../use-paste-styles';
37
+ import { BlockVisibilityModal } from '../block-visibility';
38
+ import { cleanEmptyObject } from '../../hooks/utils';
38
39
 
39
40
  function selector( select ) {
40
41
  const {
@@ -74,14 +75,14 @@ export default function BlockTools( {
74
75
  } ) {
75
76
  const { clientId, hasFixedToolbar, isTyping, isZoomOutMode, isDragging } =
76
77
  useSelect( selector, [] );
77
-
78
+ const [ visibilityModalClientIds, setVisibilityModalClientIds ] =
79
+ useState( null );
78
80
  const isMatch = useShortcutEventMatch();
79
81
  const {
80
82
  getBlocksByClientId,
81
83
  getSelectedBlockClientIds,
82
84
  getBlockRootClientId,
83
85
  isGroupable,
84
- getBlockName,
85
86
  getEditedContentOnlySection,
86
87
  } = unlock( useSelect( blockEditorStore ) );
87
88
  const { getGroupingBlockName } = useSelect( blocksStore );
@@ -99,8 +100,8 @@ export default function BlockTools( {
99
100
  moveBlocksUp,
100
101
  moveBlocksDown,
101
102
  expandBlock,
102
- updateBlockAttributes,
103
103
  stopEditingContentOnlySection,
104
+ updateBlockAttributes,
104
105
  } = unlock( useDispatch( blockEditorStore ) );
105
106
 
106
107
  function onKeyDown( event ) {
@@ -221,36 +222,41 @@ export default function BlockTools( {
221
222
  if ( clientIds.length ) {
222
223
  event.preventDefault();
223
224
  const blocks = getBlocksByClientId( clientIds );
224
- const canToggleBlockVisibility = blocks.every( ( block ) =>
225
- hasBlockSupport(
226
- getBlockName( block.clientId ),
227
- 'visibility',
228
- true
229
- )
225
+ const supportsBlockVisibility = blocks.every( ( block ) =>
226
+ hasBlockSupport( block.name, 'visibility', true )
230
227
  );
231
- if ( ! canToggleBlockVisibility ) {
228
+
229
+ if ( ! supportsBlockVisibility ) {
232
230
  return;
233
231
  }
234
- const hasHiddenBlock = blocks.some(
235
- ( block ) =>
236
- block.attributes.metadata?.blockVisibility === false
237
- );
238
- const attributesByClientId = Object.fromEntries(
239
- blocks.map( ( { clientId: mapClientId, attributes } ) => [
240
- mapClientId,
241
- {
242
- metadata: cleanEmptyObject( {
243
- ...attributes?.metadata,
244
- blockVisibility: hasHiddenBlock
245
- ? undefined
246
- : false,
247
- } ),
248
- },
249
- ] )
250
- );
251
- updateBlockAttributes( clientIds, attributesByClientId, {
252
- uniqueByBlock: true,
253
- } );
232
+
233
+ if ( window.__experimentalHideBlocksBasedOnScreenSize ) {
234
+ // Open the visibility breakpoints modal.
235
+ setVisibilityModalClientIds( clientIds );
236
+ } else {
237
+ const hasHiddenBlock = blocks.some(
238
+ ( block ) =>
239
+ block.attributes.metadata?.blockVisibility === false
240
+ );
241
+ const attributesByClientId = Object.fromEntries(
242
+ blocks.map(
243
+ ( { clientId: mapClientId, attributes } ) => [
244
+ mapClientId,
245
+ {
246
+ metadata: cleanEmptyObject( {
247
+ ...attributes?.metadata,
248
+ blockVisibility: hasHiddenBlock
249
+ ? undefined
250
+ : false,
251
+ } ),
252
+ },
253
+ ]
254
+ )
255
+ );
256
+ updateBlockAttributes( clientIds, attributesByClientId, {
257
+ uniqueByBlock: true,
258
+ } );
259
+ }
254
260
  }
255
261
  }
256
262
 
@@ -317,6 +323,12 @@ export default function BlockTools( {
317
323
  />
318
324
  ) }
319
325
  </InsertionPointOpenRef.Provider>
326
+ { visibilityModalClientIds && (
327
+ <BlockVisibilityModal
328
+ clientIds={ visibilityModalClientIds }
329
+ onClose={ () => setVisibilityModalClientIds( null ) }
330
+ />
331
+ ) }
320
332
  </div>
321
333
  );
322
334
  }
@@ -16,7 +16,6 @@ import { unseen } from '@wordpress/icons';
16
16
  */
17
17
  import { unlock } from '../../lock-unlock';
18
18
  import { store as blockEditorStore } from '../../store';
19
- import './styles.scss';
20
19
 
21
20
  const { Badge } = unlock( componentsPrivateApis );
22
21
 
@@ -14,16 +14,20 @@ export const BLOCK_VISIBILITY_VIEWPORTS = {
14
14
  desktop: {
15
15
  label: __( 'Desktop' ),
16
16
  icon: desktop,
17
- value: 'desktop',
17
+ key: 'desktop',
18
18
  },
19
19
  tablet: {
20
20
  label: __( 'Tablet' ),
21
21
  icon: tablet,
22
- value: 'tablet',
22
+ key: 'tablet',
23
23
  },
24
24
  mobile: {
25
25
  label: __( 'Mobile' ),
26
26
  icon: mobile,
27
- value: 'mobile',
27
+ key: 'mobile',
28
28
  },
29
29
  };
30
+
31
+ export const BLOCK_VISIBILITY_VIEWPORT_ENTRIES = Object.entries(
32
+ BLOCK_VISIBILITY_VIEWPORTS
33
+ );
@@ -1,3 +1,21 @@
1
- export { default as BlockVisibilityMenuItem } from './menu-item';
2
- export { default as BlockVisibilityToolbar } from './toolbar';
3
- export { useBlockVisibility } from './use-block-visibility';
1
+ export { default as BlockVisibilityModal } from './modal';
2
+ export { default as useBlockVisibility } from './use-block-visibility';
3
+
4
+ import BlockVisibilityToolbarDefault from './toolbar';
5
+ import BlockVisibilityViewportToolbar from './viewport-toolbar';
6
+
7
+ import BlockVisibilityMenuItemDefault from './menu-item';
8
+ import BlockVisibilityViewportMenuItem from './viewport-menu-item';
9
+
10
+ const hasViewportVisibilityExperiment =
11
+ typeof window !== 'undefined' &&
12
+ window.__experimentalHideBlocksBasedOnScreenSize;
13
+
14
+ // Conditionally export the viewport versions when the experimental flag is enabled.
15
+ export const BlockVisibilityMenuItem = hasViewportVisibilityExperiment
16
+ ? BlockVisibilityViewportMenuItem
17
+ : BlockVisibilityMenuItemDefault;
18
+
19
+ export const BlockVisibilityToolbar = hasViewportVisibilityExperiment
20
+ ? BlockVisibilityViewportToolbar
21
+ : BlockVisibilityToolbarDefault;