@wordpress/block-editor 15.13.2-next.v.202602241322.0 → 15.14.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.
- package/CHANGELOG.md +2 -0
- package/README.md +1 -0
- package/build/components/block-quick-navigation/index.cjs +6 -1
- package/build/components/block-quick-navigation/index.cjs.map +3 -3
- package/build/components/block-settings-menu/block-settings-dropdown.cjs +47 -4
- package/build/components/block-settings-menu/block-settings-dropdown.cjs.map +2 -2
- package/build/components/block-settings-menu-controls/index.cjs +1 -0
- package/build/components/block-settings-menu-controls/index.cjs.map +2 -2
- package/build/components/block-styles/index.cjs +68 -57
- package/build/components/block-styles/index.cjs.map +3 -3
- package/build/components/block-styles/menu-items.cjs +10 -16
- package/build/components/block-styles/menu-items.cjs.map +3 -3
- package/build/components/block-switcher/block-styles-menu.cjs +50 -2
- package/build/components/block-switcher/block-styles-menu.cjs.map +3 -3
- package/build/components/block-switcher/block-transformations-menu.cjs +2 -0
- package/build/components/block-switcher/block-transformations-menu.cjs.map +2 -2
- package/build/components/block-switcher/block-variation-transformations.cjs +2 -0
- package/build/components/block-switcher/block-variation-transformations.cjs.map +2 -2
- package/build/components/block-switcher/preview-block-popover.cjs +10 -8
- package/build/components/block-switcher/preview-block-popover.cjs.map +2 -2
- package/build/components/block-toolbar/block-toolbar-icon.cjs +1 -1
- package/build/components/block-toolbar/block-toolbar-icon.cjs.map +2 -2
- package/build/components/block-toolbar/index.cjs +8 -4
- package/build/components/block-toolbar/index.cjs.map +2 -2
- package/build/components/block-visibility/modal.cjs +2 -2
- package/build/components/block-visibility/modal.cjs.map +2 -2
- package/build/components/dimension-control/index.cjs +4 -2
- package/build/components/dimension-control/index.cjs.map +2 -2
- package/build/components/global-styles/dimensions-panel.cjs +6 -3
- package/build/components/global-styles/dimensions-panel.cjs.map +2 -2
- package/build/components/grid/grid-visualizer.cjs +3 -0
- package/build/components/grid/grid-visualizer.cjs.map +2 -2
- package/build/components/list-view/block.cjs +2 -1
- package/build/components/list-view/block.cjs.map +2 -2
- package/build/hooks/auto-inspector-controls.cjs +26 -2
- package/build/hooks/auto-inspector-controls.cjs.map +3 -3
- package/build/index.cjs +2 -0
- package/build/index.cjs.map +2 -2
- package/build/store/reducer.cjs +13 -15
- package/build/store/reducer.cjs.map +2 -2
- package/build-module/components/block-quick-navigation/index.mjs +6 -1
- package/build-module/components/block-quick-navigation/index.mjs.map +2 -2
- package/build-module/components/block-settings-menu/block-settings-dropdown.mjs +48 -5
- package/build-module/components/block-settings-menu/block-settings-dropdown.mjs.map +2 -2
- package/build-module/components/block-settings-menu-controls/index.mjs +1 -0
- package/build-module/components/block-settings-menu-controls/index.mjs.map +2 -2
- package/build-module/components/block-styles/index.mjs +71 -61
- package/build-module/components/block-styles/index.mjs.map +2 -2
- package/build-module/components/block-styles/menu-items.mjs +10 -6
- package/build-module/components/block-styles/menu-items.mjs.map +2 -2
- package/build-module/components/block-switcher/block-styles-menu.mjs +51 -3
- package/build-module/components/block-switcher/block-styles-menu.mjs.map +2 -2
- package/build-module/components/block-switcher/block-transformations-menu.mjs +2 -0
- package/build-module/components/block-switcher/block-transformations-menu.mjs.map +2 -2
- package/build-module/components/block-switcher/block-variation-transformations.mjs +2 -0
- package/build-module/components/block-switcher/block-variation-transformations.mjs.map +2 -2
- package/build-module/components/block-switcher/preview-block-popover.mjs +11 -9
- package/build-module/components/block-switcher/preview-block-popover.mjs.map +2 -2
- package/build-module/components/block-toolbar/block-toolbar-icon.mjs +1 -1
- package/build-module/components/block-toolbar/block-toolbar-icon.mjs.map +2 -2
- package/build-module/components/block-toolbar/index.mjs +8 -4
- package/build-module/components/block-toolbar/index.mjs.map +2 -2
- package/build-module/components/block-visibility/modal.mjs +2 -2
- package/build-module/components/block-visibility/modal.mjs.map +2 -2
- package/build-module/components/dimension-control/index.mjs +4 -2
- package/build-module/components/dimension-control/index.mjs.map +2 -2
- package/build-module/components/global-styles/dimensions-panel.mjs +6 -3
- package/build-module/components/global-styles/dimensions-panel.mjs.map +2 -2
- package/build-module/components/grid/grid-visualizer.mjs +3 -0
- package/build-module/components/grid/grid-visualizer.mjs.map +2 -2
- package/build-module/components/list-view/block.mjs +2 -1
- package/build-module/components/list-view/block.mjs.map +2 -2
- package/build-module/hooks/auto-inspector-controls.mjs +28 -4
- package/build-module/hooks/auto-inspector-controls.mjs.map +2 -2
- package/build-module/index.mjs +2 -0
- package/build-module/index.mjs.map +3 -3
- package/build-module/store/reducer.mjs +13 -15
- package/build-module/store/reducer.mjs.map +2 -2
- package/build-style/content-rtl.css +12 -7
- package/build-style/content.css +13 -7
- package/build-style/style-rtl.css +0 -13
- package/build-style/style.css +0 -13
- package/package.json +39 -39
- package/src/components/block-list/content.scss +4 -0
- package/src/components/block-quick-navigation/index.js +6 -1
- package/src/components/block-settings-menu/block-settings-dropdown.js +46 -2
- package/src/components/block-settings-menu-controls/index.js +1 -0
- package/src/components/block-styles/index.js +35 -24
- package/src/components/block-styles/menu-items.js +10 -11
- package/src/components/block-styles/style.scss +0 -7
- package/src/components/block-switcher/block-styles-menu.js +47 -1
- package/src/components/block-switcher/block-transformations-menu.js +2 -0
- package/src/components/block-switcher/block-variation-transformations.js +2 -0
- package/src/components/block-switcher/preview-block-popover.js +9 -7
- package/src/components/block-switcher/style.scss +0 -8
- package/src/components/block-toolbar/block-toolbar-icon.js +6 -1
- package/src/components/block-toolbar/index.js +7 -2
- package/src/components/block-tools/style.scss +1 -14
- package/src/components/default-block-appender/content.scss +3 -25
- package/src/components/dimension-control/index.js +7 -4
- package/src/components/global-styles/dimensions-panel.js +3 -0
- package/src/components/grid/grid-visualizer.js +3 -0
- package/src/components/list-view/block.js +5 -0
- package/src/hooks/auto-inspector-controls.js +31 -4
- package/src/hooks/test/dimensions.js +16 -0
- package/src/index.js +1 -0
- package/src/store/reducer.js +23 -20
- package/src/store/test/reducer.js +109 -0
- package/build/components/block-styles/preview-panel.cjs +0 -61
- package/build/components/block-styles/preview-panel.cjs.map +0 -7
- package/build-module/components/block-styles/preview-panel.mjs +0 -30
- package/build-module/components/block-styles/preview-panel.mjs.map +0 -7
- package/src/components/block-styles/preview-panel.js +0 -35
|
@@ -432,6 +432,7 @@ _::-webkit-full-page-media, _:future, :root [data-has-multi-selection=true] .blo
|
|
|
432
432
|
font-family: Menlo, Consolas, monaco, monospace;
|
|
433
433
|
font-size: 15px;
|
|
434
434
|
line-height: 1.5;
|
|
435
|
+
direction: ltr;
|
|
435
436
|
}
|
|
436
437
|
@media not (prefers-reduced-motion) {
|
|
437
438
|
.block-editor-block-list__block .block-editor-block-list__block-html-textarea {
|
|
@@ -735,21 +736,25 @@ _::-webkit-full-page-media, _:future, :root [data-has-multi-selection=true] .blo
|
|
|
735
736
|
}
|
|
736
737
|
.block-editor-block-list__block .block-list-appender .block-editor-inserter__toggle.components-button.has-icon,
|
|
737
738
|
.block-editor-block-list__block .block-list-appender .block-list-appender__toggle {
|
|
738
|
-
flex-direction: row;
|
|
739
|
-
box-shadow: none;
|
|
740
|
-
height: 24px;
|
|
741
|
-
width: 24px;
|
|
742
|
-
min-width: 24px;
|
|
743
|
-
display: none;
|
|
744
|
-
padding: 0 !important;
|
|
745
739
|
background: #1e1e1e;
|
|
746
740
|
color: #fff;
|
|
741
|
+
padding: 0;
|
|
742
|
+
min-width: 24px;
|
|
743
|
+
height: 24px;
|
|
747
744
|
}
|
|
748
745
|
.block-editor-block-list__block .block-list-appender .block-editor-inserter__toggle.components-button.has-icon:hover,
|
|
749
746
|
.block-editor-block-list__block .block-list-appender .block-list-appender__toggle:hover {
|
|
750
747
|
color: #fff;
|
|
751
748
|
background: var(--wp-admin-theme-color);
|
|
752
749
|
}
|
|
750
|
+
.block-editor-block-list__block .block-list-appender .block-editor-inserter__toggle.components-button.has-icon,
|
|
751
|
+
.block-editor-block-list__block .block-list-appender .block-list-appender__toggle {
|
|
752
|
+
flex-direction: row;
|
|
753
|
+
box-shadow: none;
|
|
754
|
+
width: 24px;
|
|
755
|
+
display: none;
|
|
756
|
+
padding: 0 !important;
|
|
757
|
+
}
|
|
753
758
|
.block-editor-block-list__block .block-list-appender .block-editor-default-block-appender__content {
|
|
754
759
|
display: none;
|
|
755
760
|
}
|
package/build-style/content.css
CHANGED
|
@@ -432,6 +432,8 @@ _::-webkit-full-page-media, _:future, :root [data-has-multi-selection=true] .blo
|
|
|
432
432
|
font-family: Menlo, Consolas, monaco, monospace;
|
|
433
433
|
font-size: 15px;
|
|
434
434
|
line-height: 1.5;
|
|
435
|
+
/*rtl:ignore*/
|
|
436
|
+
direction: ltr;
|
|
435
437
|
}
|
|
436
438
|
@media not (prefers-reduced-motion) {
|
|
437
439
|
.block-editor-block-list__block .block-editor-block-list__block-html-textarea {
|
|
@@ -735,21 +737,25 @@ _::-webkit-full-page-media, _:future, :root [data-has-multi-selection=true] .blo
|
|
|
735
737
|
}
|
|
736
738
|
.block-editor-block-list__block .block-list-appender .block-editor-inserter__toggle.components-button.has-icon,
|
|
737
739
|
.block-editor-block-list__block .block-list-appender .block-list-appender__toggle {
|
|
738
|
-
flex-direction: row;
|
|
739
|
-
box-shadow: none;
|
|
740
|
-
height: 24px;
|
|
741
|
-
width: 24px;
|
|
742
|
-
min-width: 24px;
|
|
743
|
-
display: none;
|
|
744
|
-
padding: 0 !important;
|
|
745
740
|
background: #1e1e1e;
|
|
746
741
|
color: #fff;
|
|
742
|
+
padding: 0;
|
|
743
|
+
min-width: 24px;
|
|
744
|
+
height: 24px;
|
|
747
745
|
}
|
|
748
746
|
.block-editor-block-list__block .block-list-appender .block-editor-inserter__toggle.components-button.has-icon:hover,
|
|
749
747
|
.block-editor-block-list__block .block-list-appender .block-list-appender__toggle:hover {
|
|
750
748
|
color: #fff;
|
|
751
749
|
background: var(--wp-admin-theme-color);
|
|
752
750
|
}
|
|
751
|
+
.block-editor-block-list__block .block-list-appender .block-editor-inserter__toggle.components-button.has-icon,
|
|
752
|
+
.block-editor-block-list__block .block-list-appender .block-list-appender__toggle {
|
|
753
|
+
flex-direction: row;
|
|
754
|
+
box-shadow: none;
|
|
755
|
+
width: 24px;
|
|
756
|
+
display: none;
|
|
757
|
+
padding: 0 !important;
|
|
758
|
+
}
|
|
753
759
|
.block-editor-block-list__block .block-list-appender .block-editor-default-block-appender__content {
|
|
754
760
|
display: none;
|
|
755
761
|
}
|
|
@@ -1198,11 +1198,6 @@ iframe[name=editor-canvas] {
|
|
|
1198
1198
|
text-align-last: center;
|
|
1199
1199
|
}
|
|
1200
1200
|
|
|
1201
|
-
.block-editor-block-styles__block-preview-container,
|
|
1202
|
-
.block-editor-block-styles__block-preview-container * {
|
|
1203
|
-
box-sizing: border-box !important;
|
|
1204
|
-
}
|
|
1205
|
-
|
|
1206
1201
|
.components-popover.block-editor-block-switcher__popover .components-popover__content {
|
|
1207
1202
|
min-width: 300px;
|
|
1208
1203
|
}
|
|
@@ -1238,14 +1233,6 @@ iframe[name=editor-canvas] {
|
|
|
1238
1233
|
overflow: unset;
|
|
1239
1234
|
}
|
|
1240
1235
|
|
|
1241
|
-
.block-editor-block-switcher__preview-title {
|
|
1242
|
-
margin-bottom: 12px;
|
|
1243
|
-
color: #757575;
|
|
1244
|
-
text-transform: uppercase;
|
|
1245
|
-
font-size: 11px;
|
|
1246
|
-
font-weight: 499;
|
|
1247
|
-
}
|
|
1248
|
-
|
|
1249
1236
|
.block-editor-block-switcher__preview-patterns-container {
|
|
1250
1237
|
padding-bottom: 16px;
|
|
1251
1238
|
}
|
package/build-style/style.css
CHANGED
|
@@ -1198,11 +1198,6 @@ iframe[name=editor-canvas] {
|
|
|
1198
1198
|
text-align-last: center;
|
|
1199
1199
|
}
|
|
1200
1200
|
|
|
1201
|
-
.block-editor-block-styles__block-preview-container,
|
|
1202
|
-
.block-editor-block-styles__block-preview-container * {
|
|
1203
|
-
box-sizing: border-box !important;
|
|
1204
|
-
}
|
|
1205
|
-
|
|
1206
1201
|
.components-popover.block-editor-block-switcher__popover .components-popover__content {
|
|
1207
1202
|
min-width: 300px;
|
|
1208
1203
|
}
|
|
@@ -1238,14 +1233,6 @@ iframe[name=editor-canvas] {
|
|
|
1238
1233
|
overflow: unset;
|
|
1239
1234
|
}
|
|
1240
1235
|
|
|
1241
|
-
.block-editor-block-switcher__preview-title {
|
|
1242
|
-
margin-bottom: 12px;
|
|
1243
|
-
color: #757575;
|
|
1244
|
-
text-transform: uppercase;
|
|
1245
|
-
font-size: 11px;
|
|
1246
|
-
font-weight: 499;
|
|
1247
|
-
}
|
|
1248
|
-
|
|
1249
1236
|
.block-editor-block-switcher__preview-patterns-container {
|
|
1250
1237
|
padding-bottom: 16px;
|
|
1251
1238
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wordpress/block-editor",
|
|
3
|
-
"version": "15.
|
|
3
|
+
"version": "15.14.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.
|
|
65
|
-
"@wordpress/api-fetch": "^7.
|
|
66
|
-
"@wordpress/base-styles": "^6.
|
|
67
|
-
"@wordpress/blob": "^4.
|
|
68
|
-
"@wordpress/block-serialization-default-parser": "^5.
|
|
69
|
-
"@wordpress/blocks": "^15.
|
|
70
|
-
"@wordpress/commands": "^1.
|
|
71
|
-
"@wordpress/components": "^32.3.
|
|
72
|
-
"@wordpress/compose": "^7.
|
|
73
|
-
"@wordpress/data": "^10.
|
|
74
|
-
"@wordpress/dataviews": "^
|
|
75
|
-
"@wordpress/date": "^5.
|
|
76
|
-
"@wordpress/deprecated": "^4.
|
|
77
|
-
"@wordpress/dom": "^4.
|
|
78
|
-
"@wordpress/element": "^6.
|
|
79
|
-
"@wordpress/escape-html": "^3.
|
|
80
|
-
"@wordpress/global-styles-engine": "^1.
|
|
81
|
-
"@wordpress/hooks": "^4.
|
|
82
|
-
"@wordpress/html-entities": "^4.
|
|
83
|
-
"@wordpress/i18n": "^6.
|
|
84
|
-
"@wordpress/icons": "^11.
|
|
85
|
-
"@wordpress/image-cropper": "^1.
|
|
86
|
-
"@wordpress/interactivity": "^6.
|
|
87
|
-
"@wordpress/is-shallow-equal": "^5.
|
|
88
|
-
"@wordpress/keyboard-shortcuts": "^5.
|
|
89
|
-
"@wordpress/keycodes": "^4.
|
|
90
|
-
"@wordpress/notices": "^5.
|
|
91
|
-
"@wordpress/preferences": "^4.
|
|
92
|
-
"@wordpress/priority-queue": "^3.
|
|
93
|
-
"@wordpress/private-apis": "^1.
|
|
94
|
-
"@wordpress/rich-text": "^7.
|
|
95
|
-
"@wordpress/style-engine": "^2.
|
|
96
|
-
"@wordpress/token-list": "^3.
|
|
97
|
-
"@wordpress/upload-media": "^0.
|
|
98
|
-
"@wordpress/url": "^4.
|
|
99
|
-
"@wordpress/warning": "^3.
|
|
100
|
-
"@wordpress/wordcount": "^4.
|
|
64
|
+
"@wordpress/a11y": "^4.41.0",
|
|
65
|
+
"@wordpress/api-fetch": "^7.41.0",
|
|
66
|
+
"@wordpress/base-styles": "^6.17.0",
|
|
67
|
+
"@wordpress/blob": "^4.41.0",
|
|
68
|
+
"@wordpress/block-serialization-default-parser": "^5.41.0",
|
|
69
|
+
"@wordpress/blocks": "^15.14.0",
|
|
70
|
+
"@wordpress/commands": "^1.41.0",
|
|
71
|
+
"@wordpress/components": "^32.3.0",
|
|
72
|
+
"@wordpress/compose": "^7.41.0",
|
|
73
|
+
"@wordpress/data": "^10.41.0",
|
|
74
|
+
"@wordpress/dataviews": "^13.0.0",
|
|
75
|
+
"@wordpress/date": "^5.41.0",
|
|
76
|
+
"@wordpress/deprecated": "^4.41.0",
|
|
77
|
+
"@wordpress/dom": "^4.41.0",
|
|
78
|
+
"@wordpress/element": "^6.41.0",
|
|
79
|
+
"@wordpress/escape-html": "^3.41.0",
|
|
80
|
+
"@wordpress/global-styles-engine": "^1.8.0",
|
|
81
|
+
"@wordpress/hooks": "^4.41.0",
|
|
82
|
+
"@wordpress/html-entities": "^4.41.0",
|
|
83
|
+
"@wordpress/i18n": "^6.14.0",
|
|
84
|
+
"@wordpress/icons": "^11.8.0",
|
|
85
|
+
"@wordpress/image-cropper": "^1.5.0",
|
|
86
|
+
"@wordpress/interactivity": "^6.41.0",
|
|
87
|
+
"@wordpress/is-shallow-equal": "^5.41.0",
|
|
88
|
+
"@wordpress/keyboard-shortcuts": "^5.41.0",
|
|
89
|
+
"@wordpress/keycodes": "^4.41.0",
|
|
90
|
+
"@wordpress/notices": "^5.41.0",
|
|
91
|
+
"@wordpress/preferences": "^4.41.0",
|
|
92
|
+
"@wordpress/priority-queue": "^3.41.0",
|
|
93
|
+
"@wordpress/private-apis": "^1.41.0",
|
|
94
|
+
"@wordpress/rich-text": "^7.41.0",
|
|
95
|
+
"@wordpress/style-engine": "^2.41.0",
|
|
96
|
+
"@wordpress/token-list": "^3.41.0",
|
|
97
|
+
"@wordpress/upload-media": "^0.26.0",
|
|
98
|
+
"@wordpress/url": "^4.41.0",
|
|
99
|
+
"@wordpress/warning": "^3.41.0",
|
|
100
|
+
"@wordpress/wordcount": "^4.41.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": "
|
|
127
|
+
"gitHead": "8bfc179b9aed74c0a6dd6e8edf7a49e40e4f87cc"
|
|
128
128
|
}
|
|
@@ -390,6 +390,10 @@ _::-webkit-full-page-media, _:future, :root [data-has-multi-selection="true"] .b
|
|
|
390
390
|
font-family: $editor-html-font;
|
|
391
391
|
font-size: $text-editor-font-size;
|
|
392
392
|
line-height: 1.5;
|
|
393
|
+
// HTML input is always LTR regardless of language.
|
|
394
|
+
/*rtl:ignore*/
|
|
395
|
+
direction: ltr;
|
|
396
|
+
|
|
393
397
|
@media not ( prefers-reduced-motion ) {
|
|
394
398
|
transition: padding 0.2s linear;
|
|
395
399
|
}
|
|
@@ -19,6 +19,7 @@ import { Icon, chevronRight } from '@wordpress/icons';
|
|
|
19
19
|
import { store as blockEditorStore } from '../../store';
|
|
20
20
|
import BlockIcon from '../block-icon';
|
|
21
21
|
import useBlockDisplayInformation from '../use-block-display-information';
|
|
22
|
+
import useBlockDisplayTitle from '../block-title/use-block-display-title';
|
|
22
23
|
|
|
23
24
|
export default function BlockQuickNavigation( {
|
|
24
25
|
clientIds,
|
|
@@ -78,7 +79,11 @@ function BlockQuickNavigationItem( {
|
|
|
78
79
|
);
|
|
79
80
|
|
|
80
81
|
const blockType = getBlockType( blockName );
|
|
81
|
-
const
|
|
82
|
+
const displayTitle = useBlockDisplayTitle( {
|
|
83
|
+
clientId,
|
|
84
|
+
context: 'list-view',
|
|
85
|
+
} );
|
|
86
|
+
const blockTitle = displayTitle || blockType?.title || blockName;
|
|
82
87
|
const { selectBlock } = useDispatch( blockEditorStore );
|
|
83
88
|
|
|
84
89
|
const hasChildren = childBlocks && childBlocks.length > 0;
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
} from '@wordpress/blocks';
|
|
9
9
|
import { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';
|
|
10
10
|
import { useDispatch, useSelect } from '@wordpress/data';
|
|
11
|
-
import { moreVertical } from '@wordpress/icons';
|
|
11
|
+
import { chevronDown, chevronUp, moreVertical } from '@wordpress/icons';
|
|
12
12
|
import { Children, cloneElement } from '@wordpress/element';
|
|
13
13
|
import { __ } from '@wordpress/i18n';
|
|
14
14
|
import { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';
|
|
@@ -74,6 +74,7 @@ export function BlockSettingsDropdown( {
|
|
|
74
74
|
clientIds,
|
|
75
75
|
children,
|
|
76
76
|
__experimentalSelectBlock,
|
|
77
|
+
isContentOnlyListView,
|
|
77
78
|
...props
|
|
78
79
|
} ) {
|
|
79
80
|
// Get the client id of the current block for this menu, if one is set.
|
|
@@ -88,6 +89,9 @@ export function BlockSettingsDropdown( {
|
|
|
88
89
|
isContentOnly,
|
|
89
90
|
isZoomOut,
|
|
90
91
|
canEdit,
|
|
92
|
+
canMove,
|
|
93
|
+
isFirst,
|
|
94
|
+
isLast,
|
|
91
95
|
} = useSelect(
|
|
92
96
|
( select ) => {
|
|
93
97
|
const {
|
|
@@ -99,6 +103,9 @@ export function BlockSettingsDropdown( {
|
|
|
99
103
|
getBlockEditingMode,
|
|
100
104
|
isZoomOut: _isZoomOut,
|
|
101
105
|
canEditBlock,
|
|
106
|
+
canMoveBlocks,
|
|
107
|
+
getBlockIndex,
|
|
108
|
+
getBlockCount,
|
|
102
109
|
} = unlock( select( blockEditorStore ) );
|
|
103
110
|
|
|
104
111
|
const { getActiveBlockVariation } = select( blocksStore );
|
|
@@ -124,14 +131,21 @@ export function BlockSettingsDropdown( {
|
|
|
124
131
|
getBlockEditingMode( firstBlockClientId ) === 'contentOnly',
|
|
125
132
|
isZoomOut: _isZoomOut(),
|
|
126
133
|
canEdit: canEditBlock( firstBlockClientId ),
|
|
134
|
+
canMove: canMoveBlocks( clientIds ),
|
|
135
|
+
isFirst: getBlockIndex( firstBlockClientId ) === 0,
|
|
136
|
+
isLast:
|
|
137
|
+
getBlockIndex( firstBlockClientId ) ===
|
|
138
|
+
getBlockCount( _firstParentClientId ) - 1,
|
|
127
139
|
};
|
|
128
140
|
},
|
|
129
|
-
[ firstBlockClientId ]
|
|
141
|
+
[ firstBlockClientId, clientIds ]
|
|
130
142
|
);
|
|
131
143
|
|
|
132
144
|
const { getBlockOrder, getSelectedBlockClientIds } =
|
|
133
145
|
useSelect( blockEditorStore );
|
|
134
146
|
|
|
147
|
+
const { moveBlocksDown, moveBlocksUp } = useDispatch( blockEditorStore );
|
|
148
|
+
|
|
135
149
|
const shortcuts = useSelect( ( select ) => {
|
|
136
150
|
const { getShortcutRepresentation } = select( keyboardShortcutsStore );
|
|
137
151
|
return {
|
|
@@ -243,6 +257,36 @@ export function BlockSettingsDropdown( {
|
|
|
243
257
|
parentBlockType={ parentBlockType }
|
|
244
258
|
/>
|
|
245
259
|
) }
|
|
260
|
+
{ canMove && isContentOnlyListView && (
|
|
261
|
+
<>
|
|
262
|
+
<MenuItem
|
|
263
|
+
icon={ chevronUp }
|
|
264
|
+
disabled={ isFirst }
|
|
265
|
+
accessibleWhenDisabled
|
|
266
|
+
onClick={ pipe( onClose, () => {
|
|
267
|
+
moveBlocksUp(
|
|
268
|
+
clientIds,
|
|
269
|
+
firstParentClientId
|
|
270
|
+
);
|
|
271
|
+
} ) }
|
|
272
|
+
>
|
|
273
|
+
{ __( 'Move up' ) }
|
|
274
|
+
</MenuItem>
|
|
275
|
+
<MenuItem
|
|
276
|
+
icon={ chevronDown }
|
|
277
|
+
disabled={ isLast }
|
|
278
|
+
accessibleWhenDisabled
|
|
279
|
+
onClick={ pipe( onClose, () => {
|
|
280
|
+
moveBlocksDown(
|
|
281
|
+
clientIds,
|
|
282
|
+
firstParentClientId
|
|
283
|
+
);
|
|
284
|
+
} ) }
|
|
285
|
+
>
|
|
286
|
+
{ __( 'Move down' ) }
|
|
287
|
+
</MenuItem>
|
|
288
|
+
</>
|
|
289
|
+
) }
|
|
246
290
|
{ canEdit && count === 1 && (
|
|
247
291
|
<BlockHTMLConvertButton
|
|
248
292
|
clientId={ firstBlockClientId }
|
|
@@ -6,12 +6,11 @@ import clsx from 'clsx';
|
|
|
6
6
|
/**
|
|
7
7
|
* WordPress dependencies
|
|
8
8
|
*/
|
|
9
|
-
import { useState } from '@wordpress/element';
|
|
10
|
-
import { debounce
|
|
9
|
+
import { useState, useMemo } from '@wordpress/element';
|
|
10
|
+
import { debounce } from '@wordpress/compose';
|
|
11
11
|
import {
|
|
12
12
|
Button,
|
|
13
13
|
__experimentalTruncate as Truncate,
|
|
14
|
-
Popover,
|
|
15
14
|
__experimentalToolsPanel as ToolsPanel,
|
|
16
15
|
__experimentalToolsPanelItem as ToolsPanelItem,
|
|
17
16
|
} from '@wordpress/components';
|
|
@@ -20,10 +19,10 @@ import { __ } from '@wordpress/i18n';
|
|
|
20
19
|
/**
|
|
21
20
|
* Internal dependencies
|
|
22
21
|
*/
|
|
23
|
-
import
|
|
22
|
+
import PreviewBlockPopover from '../block-switcher/preview-block-popover';
|
|
24
23
|
import useStylesForBlocks from './use-styles-for-block';
|
|
25
24
|
import { useToolsPanelDropdownMenuProps } from '../global-styles/utils';
|
|
26
|
-
import { getDefaultStyle } from './utils';
|
|
25
|
+
import { getDefaultStyle, replaceActiveStyle } from './utils';
|
|
27
26
|
|
|
28
27
|
const noop = () => {};
|
|
29
28
|
|
|
@@ -34,15 +33,35 @@ function BlockStyles( { clientId, onSwitch = noop, onHoverClassName = noop } ) {
|
|
|
34
33
|
stylesToRender,
|
|
35
34
|
activeStyle,
|
|
36
35
|
genericPreviewBlock,
|
|
37
|
-
className
|
|
36
|
+
className,
|
|
38
37
|
} = useStylesForBlocks( {
|
|
39
38
|
clientId,
|
|
40
39
|
onSwitch,
|
|
41
40
|
} );
|
|
42
41
|
const [ hoveredStyle, setHoveredStyle ] = useState( null );
|
|
43
|
-
const
|
|
42
|
+
const [ blockStylesAnchor, setBlockStylesAnchor ] = useState( null );
|
|
44
43
|
const dropdownMenuProps = useToolsPanelDropdownMenuProps();
|
|
45
44
|
|
|
45
|
+
const previewBlocks = useMemo( () => {
|
|
46
|
+
if ( ! hoveredStyle || ! genericPreviewBlock ) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
const previewClassName = replaceActiveStyle(
|
|
50
|
+
className,
|
|
51
|
+
activeStyle,
|
|
52
|
+
hoveredStyle
|
|
53
|
+
);
|
|
54
|
+
return [
|
|
55
|
+
{
|
|
56
|
+
...genericPreviewBlock,
|
|
57
|
+
attributes: {
|
|
58
|
+
...( genericPreviewBlock.attributes || {} ),
|
|
59
|
+
className: previewClassName,
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
];
|
|
63
|
+
}, [ hoveredStyle, genericPreviewBlock, className, activeStyle ] );
|
|
64
|
+
|
|
46
65
|
if ( ! stylesToRender || stylesToRender.length === 0 ) {
|
|
47
66
|
return null;
|
|
48
67
|
}
|
|
@@ -90,7 +109,10 @@ function BlockStyles( { clientId, onSwitch = noop, onHoverClassName = noop } ) {
|
|
|
90
109
|
isShownByDefault
|
|
91
110
|
panelId={ clientId }
|
|
92
111
|
>
|
|
93
|
-
<div
|
|
112
|
+
<div
|
|
113
|
+
ref={ setBlockStylesAnchor }
|
|
114
|
+
className="block-editor-block-styles"
|
|
115
|
+
>
|
|
94
116
|
<div className="block-editor-block-styles__variants">
|
|
95
117
|
{ stylesToRender.map( ( style ) => {
|
|
96
118
|
const buttonText = style.label || style.name;
|
|
@@ -133,24 +155,13 @@ function BlockStyles( { clientId, onSwitch = noop, onHoverClassName = noop } ) {
|
|
|
133
155
|
);
|
|
134
156
|
} ) }
|
|
135
157
|
</div>
|
|
136
|
-
{
|
|
137
|
-
<
|
|
158
|
+
{ previewBlocks && (
|
|
159
|
+
<PreviewBlockPopover
|
|
160
|
+
blocks={ previewBlocks }
|
|
138
161
|
placement="left-start"
|
|
139
162
|
offset={ 34 }
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
<div
|
|
143
|
-
className="block-editor-block-styles__preview-panel"
|
|
144
|
-
onMouseLeave={ () => styleItemHandler( null ) }
|
|
145
|
-
>
|
|
146
|
-
<BlockStylesPreviewPanel
|
|
147
|
-
activeStyle={ activeStyle }
|
|
148
|
-
className={ previewClassName }
|
|
149
|
-
genericPreviewBlock={ genericPreviewBlock }
|
|
150
|
-
style={ hoveredStyle }
|
|
151
|
-
/>
|
|
152
|
-
</div>
|
|
153
|
-
</Popover>
|
|
163
|
+
anchor={ blockStylesAnchor }
|
|
164
|
+
/>
|
|
154
165
|
) }
|
|
155
166
|
</div>
|
|
156
167
|
</ToolsPanelItem>
|
|
@@ -4,19 +4,14 @@
|
|
|
4
4
|
import { MenuItem, __experimentalText as Text } from '@wordpress/components';
|
|
5
5
|
import { check } from '@wordpress/icons';
|
|
6
6
|
|
|
7
|
-
/**
|
|
8
|
-
* Internal dependencies
|
|
9
|
-
*/
|
|
10
|
-
import useStylesForBlocks from './use-styles-for-block';
|
|
11
|
-
|
|
12
7
|
const noop = () => {};
|
|
13
8
|
|
|
14
|
-
export default function BlockStylesMenuItems( {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
9
|
+
export default function BlockStylesMenuItems( {
|
|
10
|
+
stylesToRender,
|
|
11
|
+
activeStyle,
|
|
12
|
+
onSelect = noop,
|
|
13
|
+
onHoverStyle = noop,
|
|
14
|
+
} ) {
|
|
20
15
|
if ( ! stylesToRender || stylesToRender.length === 0 ) {
|
|
21
16
|
return null;
|
|
22
17
|
}
|
|
@@ -29,6 +24,10 @@ export default function BlockStylesMenuItems( { clientId, onSwitch = noop } ) {
|
|
|
29
24
|
key={ style.name }
|
|
30
25
|
icon={ activeStyle.name === style.name ? check : null }
|
|
31
26
|
onClick={ () => onSelect( style ) }
|
|
27
|
+
onFocus={ () => onHoverStyle( style ) }
|
|
28
|
+
onBlur={ () => onHoverStyle( null ) }
|
|
29
|
+
onMouseEnter={ () => onHoverStyle( style ) }
|
|
30
|
+
onMouseLeave={ () => onHoverStyle( null ) }
|
|
32
31
|
>
|
|
33
32
|
<Text
|
|
34
33
|
as="span"
|
|
@@ -67,10 +67,3 @@
|
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
-
// To prevent overflow in the preview container,
|
|
71
|
-
// ensure that block contents' margin and padding
|
|
72
|
-
// do not add to the block container's width.
|
|
73
|
-
.block-editor-block-styles__block-preview-container,
|
|
74
|
-
.block-editor-block-styles__block-preview-container * {
|
|
75
|
-
box-sizing: border-box !important;
|
|
76
|
-
}
|
|
@@ -3,21 +3,67 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { __ } from '@wordpress/i18n';
|
|
5
5
|
import { MenuGroup } from '@wordpress/components';
|
|
6
|
+
import { useMemo, useState } from '@wordpress/element';
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* Internal dependencies
|
|
9
10
|
*/
|
|
10
11
|
import BlockStylesMenuItems from '../block-styles/menu-items';
|
|
12
|
+
import useStylesForBlocks from '../block-styles/use-styles-for-block';
|
|
13
|
+
import { replaceActiveStyle } from '../block-styles/utils';
|
|
14
|
+
import PreviewBlockPopover from './preview-block-popover';
|
|
11
15
|
|
|
12
16
|
export default function BlockStylesMenu( { hoveredBlock, onSwitch } ) {
|
|
13
17
|
const { clientId } = hoveredBlock;
|
|
18
|
+
const [ hoveredStyle, setHoveredStyle ] = useState( null );
|
|
19
|
+
const {
|
|
20
|
+
onSelect,
|
|
21
|
+
stylesToRender,
|
|
22
|
+
activeStyle,
|
|
23
|
+
genericPreviewBlock,
|
|
24
|
+
className,
|
|
25
|
+
} = useStylesForBlocks( {
|
|
26
|
+
clientId,
|
|
27
|
+
onSwitch,
|
|
28
|
+
} );
|
|
29
|
+
const previewBlocks = useMemo( () => {
|
|
30
|
+
if ( ! hoveredStyle || ! genericPreviewBlock ) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
const previewClassName = replaceActiveStyle(
|
|
34
|
+
className,
|
|
35
|
+
activeStyle,
|
|
36
|
+
hoveredStyle
|
|
37
|
+
);
|
|
38
|
+
return [
|
|
39
|
+
{
|
|
40
|
+
...genericPreviewBlock,
|
|
41
|
+
attributes: {
|
|
42
|
+
...( genericPreviewBlock.attributes || {} ),
|
|
43
|
+
className: previewClassName,
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
];
|
|
47
|
+
}, [ hoveredStyle, genericPreviewBlock, className, activeStyle ] );
|
|
48
|
+
|
|
49
|
+
if ( ! stylesToRender || stylesToRender.length === 0 ) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
14
52
|
|
|
15
53
|
return (
|
|
16
54
|
<MenuGroup
|
|
17
55
|
label={ __( 'Styles' ) }
|
|
18
56
|
className="block-editor-block-switcher__styles__menugroup"
|
|
19
57
|
>
|
|
20
|
-
|
|
58
|
+
{ previewBlocks && (
|
|
59
|
+
<PreviewBlockPopover blocks={ previewBlocks } />
|
|
60
|
+
) }
|
|
61
|
+
<BlockStylesMenuItems
|
|
62
|
+
stylesToRender={ stylesToRender }
|
|
63
|
+
activeStyle={ activeStyle }
|
|
64
|
+
onSelect={ onSelect }
|
|
65
|
+
onHoverStyle={ setHoveredStyle }
|
|
66
|
+
/>
|
|
21
67
|
</MenuGroup>
|
|
22
68
|
);
|
|
23
69
|
}
|
|
@@ -176,6 +176,8 @@ function BlockTransformationItem( {
|
|
|
176
176
|
disabled={ isDisabled }
|
|
177
177
|
onMouseLeave={ () => setHoveredTransformItemName( null ) }
|
|
178
178
|
onMouseEnter={ () => setHoveredTransformItemName( name ) }
|
|
179
|
+
onFocus={ () => setHoveredTransformItemName( name ) }
|
|
180
|
+
onBlur={ () => setHoveredTransformItemName( null ) }
|
|
179
181
|
>
|
|
180
182
|
<BlockIcon icon={ icon } showColors />
|
|
181
183
|
{ title }
|
|
@@ -100,6 +100,8 @@ function BlockVariationTransformationItem( {
|
|
|
100
100
|
} }
|
|
101
101
|
onMouseLeave={ () => setHoveredTransformItemName( null ) }
|
|
102
102
|
onMouseEnter={ () => setHoveredTransformItemName( name ) }
|
|
103
|
+
onFocus={ () => setHoveredTransformItemName( name ) }
|
|
104
|
+
onBlur={ () => setHoveredTransformItemName( null ) }
|
|
103
105
|
>
|
|
104
106
|
<BlockIcon icon={ icon } showColors />
|
|
105
107
|
{ title }
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
|
-
import { __ } from '@wordpress/i18n';
|
|
5
4
|
import { Popover } from '@wordpress/components';
|
|
6
5
|
import { useViewportMatch } from '@wordpress/compose';
|
|
7
6
|
|
|
@@ -10,7 +9,12 @@ import { useViewportMatch } from '@wordpress/compose';
|
|
|
10
9
|
*/
|
|
11
10
|
import BlockPreview from '../block-preview';
|
|
12
11
|
|
|
13
|
-
export default function PreviewBlockPopover( {
|
|
12
|
+
export default function PreviewBlockPopover( {
|
|
13
|
+
blocks,
|
|
14
|
+
placement = 'right-start',
|
|
15
|
+
offset = 16,
|
|
16
|
+
anchor,
|
|
17
|
+
} ) {
|
|
14
18
|
const isMobile = useViewportMatch( 'medium', '<' );
|
|
15
19
|
|
|
16
20
|
if ( isMobile ) {
|
|
@@ -21,14 +25,12 @@ export default function PreviewBlockPopover( { blocks } ) {
|
|
|
21
25
|
<div className="block-editor-block-switcher__popover-preview-container">
|
|
22
26
|
<Popover
|
|
23
27
|
className="block-editor-block-switcher__popover-preview"
|
|
24
|
-
placement=
|
|
28
|
+
placement={ placement }
|
|
25
29
|
focusOnMount={ false }
|
|
26
|
-
offset={
|
|
30
|
+
offset={ offset }
|
|
31
|
+
anchor={ anchor }
|
|
27
32
|
>
|
|
28
33
|
<div className="block-editor-block-switcher__preview">
|
|
29
|
-
<div className="block-editor-block-switcher__preview-title">
|
|
30
|
-
{ __( 'Preview' ) }
|
|
31
|
-
</div>
|
|
32
34
|
{ /* 600px is the value of $break-small in base-styles/_breakpoints.scss.
|
|
33
35
|
We set the viewport width to 601px to make sure that the media-text
|
|
34
36
|
block which uses this breakpoint has the correct padding. */ }
|