@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
@@ -84,26 +84,29 @@ export default function useInspectorControlsTabs(
84
84
  ...( hasListFills && hasStyleFills > 1 ? advancedFills : [] ),
85
85
  ];
86
86
 
87
+ // When the block fields experiment is active, only rely on `hasContentFills`
88
+ // to determine whether the content tab to be shown. The tab purely uses slot
89
+ // fills in this situation.
90
+ const shouldShowBlockFields =
91
+ window?.__experimentalContentOnlyInspectorFields;
87
92
  const hasContentTab =
88
93
  hasContentFills ||
89
- !! ( contentClientIds && contentClientIds.length > 0 );
94
+ ( ! shouldShowBlockFields && contentClientIds?.length );
90
95
 
91
- const hasListTab = hasListFills && ! isSectionBlock;
96
+ if ( hasContentTab ) {
97
+ tabs.push( TAB_CONTENT );
98
+ }
92
99
 
93
100
  // Add the tabs in the order that they will default to if available.
94
101
  // List View > Content > Settings > Styles.
95
- if ( hasListTab ) {
102
+ if ( hasListFills ) {
96
103
  tabs.push( TAB_LIST_VIEW );
97
104
  }
98
105
 
99
- if ( hasContentTab ) {
100
- tabs.push( TAB_CONTENT );
101
- }
102
-
103
106
  if (
104
107
  ( settingsFills.length ||
105
108
  // Advanded fills who up in settings tab if available or they blend into the default tab, if there's only one tab.
106
- ( advancedFills.length && ( hasContentTab || hasListTab ) ) ) &&
109
+ ( advancedFills.length && ( hasContentTab || hasListFills ) ) ) &&
107
110
  ! isSectionBlock
108
111
  ) {
109
112
  tabs.push( TAB_SETTINGS );
@@ -66,7 +66,7 @@ function ListViewBlockSelectButton(
66
66
  ( select ) => {
67
67
  const { getBlockName, getBlockAttributes } =
68
68
  select( blockEditorStore );
69
- const { isBlockHidden: _isBlockHidden } = unlock(
69
+ const { areBlocksHiddenAnywhere } = unlock(
70
70
  select( blockEditorStore )
71
71
  );
72
72
  const blockAttributes = getBlockAttributes( clientId );
@@ -76,7 +76,7 @@ function ListViewBlockSelectButton(
76
76
  'visibility',
77
77
  true
78
78
  ),
79
- isBlockHidden: _isBlockHidden( clientId ),
79
+ isBlockHidden: areBlocksHiddenAnywhere( [ clientId ] ),
80
80
  hasPatternName: !! blockAttributes?.metadata?.patternName,
81
81
  };
82
82
  },
@@ -54,6 +54,7 @@ import AriaReferencedText from './aria-referenced-text';
54
54
  import { unlock } from '../../lock-unlock';
55
55
  import usePasteStyles from '../use-paste-styles';
56
56
  import { cleanEmptyObject } from '../../hooks/utils';
57
+ import { BlockVisibilityModal } from '../block-visibility';
57
58
 
58
59
  function ListViewBlock( {
59
60
  block: { clientId },
@@ -79,7 +80,8 @@ function ListViewBlock( {
79
80
  const settingsRef = useRef( null );
80
81
  const [ isHovered, setIsHovered ] = useState( false );
81
82
  const [ settingsAnchorRect, setSettingsAnchorRect ] = useState();
82
-
83
+ const [ visibilityModalClientIds, setVisibilityModalClientIds ] =
84
+ useState( null );
83
85
  const { isLocked } = useBlockLock( clientId );
84
86
 
85
87
  const isFirstSelectedBlock =
@@ -98,6 +100,7 @@ function ListViewBlock( {
98
100
  insertBeforeBlock,
99
101
  updateBlockAttributes,
100
102
  } = unlock( useDispatch( blockEditorStore ) );
103
+
101
104
  const debouncedToggleBlockHighlight = useDebounce(
102
105
  toggleBlockHighlight,
103
106
  50
@@ -125,15 +128,18 @@ function ListViewBlock( {
125
128
  const { block, blockName, allowRightClickOverrides, isBlockHidden } =
126
129
  useSelect(
127
130
  ( select ) => {
128
- const { getBlock, getBlockName, getSettings } =
129
- select( blockEditorStore );
131
+ const {
132
+ getBlock,
133
+ getBlockName: _getBlockName,
134
+ getSettings,
135
+ } = select( blockEditorStore );
130
136
  const { isBlockHidden: _isBlockHidden } = unlock(
131
137
  select( blockEditorStore )
132
138
  );
133
139
 
134
140
  return {
135
141
  block: getBlock( clientId ),
136
- blockName: getBlockName( clientId ),
142
+ blockName: _getBlockName( clientId ),
137
143
  allowRightClickOverrides:
138
144
  getSettings().allowRightClickOverrides,
139
145
  isBlockHidden: _isBlockHidden( clientId ),
@@ -373,30 +379,40 @@ function ListViewBlock( {
373
379
  event.preventDefault();
374
380
  const { blocksToUpdate } = getBlocksToUpdate();
375
381
  const blocks = getBlocksByClientId( blocksToUpdate );
376
- const canToggleVisibility = blocks.every( ( blockToUpdate ) =>
377
- hasBlockSupport( blockToUpdate.name, 'visibility', true )
382
+ const supportsBlockVisibility = blocks.every( ( _block ) =>
383
+ hasBlockSupport( _block.name, 'visibility', true )
378
384
  );
379
- if ( ! canToggleVisibility ) {
385
+
386
+ if ( ! supportsBlockVisibility ) {
380
387
  return;
381
388
  }
382
- const hasHiddenBlock = blocks.some(
383
- ( blockToUpdate ) =>
384
- blockToUpdate.attributes.metadata?.blockVisibility === false
385
- );
386
- const attributesByClientId = Object.fromEntries(
387
- blocks.map( ( { clientId: mapClientId, attributes } ) => [
388
- mapClientId,
389
- {
390
- metadata: cleanEmptyObject( {
391
- ...attributes?.metadata,
392
- blockVisibility: hasHiddenBlock ? undefined : false,
393
- } ),
394
- },
395
- ] )
396
- );
397
- updateBlockAttributes( blocksToUpdate, attributesByClientId, {
398
- uniqueByBlock: true,
399
- } );
389
+
390
+ if ( window.__experimentalHideBlocksBasedOnScreenSize ) {
391
+ // Open the visibility breakpoints modal.
392
+ setVisibilityModalClientIds( blocksToUpdate );
393
+ } else {
394
+ const hasHiddenBlock = blocks.some(
395
+ ( blockToUpdate ) =>
396
+ blockToUpdate.attributes.metadata?.blockVisibility ===
397
+ false
398
+ );
399
+ const attributesByClientId = Object.fromEntries(
400
+ blocks.map( ( { clientId: mapClientId, attributes } ) => [
401
+ mapClientId,
402
+ {
403
+ metadata: cleanEmptyObject( {
404
+ ...attributes?.metadata,
405
+ blockVisibility: hasHiddenBlock
406
+ ? undefined
407
+ : false,
408
+ } ),
409
+ },
410
+ ] )
411
+ );
412
+ updateBlockAttributes( blocksToUpdate, attributesByClientId, {
413
+ uniqueByBlock: true,
414
+ } );
415
+ }
400
416
  }
401
417
  }
402
418
 
@@ -699,6 +715,12 @@ function ListViewBlock( {
699
715
  ) }
700
716
  </TreeGridCell>
701
717
  ) }
718
+ { visibilityModalClientIds && (
719
+ <BlockVisibilityModal
720
+ clientIds={ visibilityModalClientIds }
721
+ onClose={ () => setVisibilityModalClientIds( null ) }
722
+ />
723
+ ) }
702
724
  </ListViewLeaf>
703
725
  );
704
726
  }
@@ -2,7 +2,7 @@
2
2
  * External dependencies
3
3
  */
4
4
  import clsx from 'clsx';
5
- import fastDeepEqual from 'fast-deep-equal/es6';
5
+ import fastDeepEqual from 'fast-deep-equal/es6/index.js';
6
6
 
7
7
  /**
8
8
  * WordPress dependencies
@@ -452,6 +452,8 @@ class URLInput extends Component {
452
452
  value,
453
453
  required: true,
454
454
  type: 'text',
455
+ name: inputId,
456
+ autoComplete: 'off',
455
457
  onChange: disabled ? () => {} : this.onChange, // Disable onChange when disabled
456
458
  onFocus: disabled ? () => {} : this.onFocus, // Disable onFocus when disabled
457
459
  placeholder,
@@ -223,9 +223,10 @@ const getQuickActionsCommands = () =>
223
223
  } );
224
224
  const canRemove = canRemoveBlocks( clientIds );
225
225
 
226
- const canToggleBlockVisibility = blocks.every( ( { clientId } ) =>
227
- hasBlockSupport( getBlockName( clientId ), 'visibility', true )
228
- );
226
+ const canToggleBlockVisibility =
227
+ blocks.every( ( { clientId } ) =>
228
+ hasBlockSupport( getBlockName( clientId ), 'visibility', true )
229
+ ) && ! window.__experimentalHideBlocksBasedOnScreenSize;
229
230
 
230
231
  const commands = [];
231
232