@wordpress/edit-site 3.0.10 → 3.0.14

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 (186) hide show
  1. package/build/components/add-new-template/new-template-part.js +34 -18
  2. package/build/components/add-new-template/new-template-part.js.map +1 -1
  3. package/build/components/add-new-template/new-template.js +41 -23
  4. package/build/components/add-new-template/new-template.js.map +1 -1
  5. package/build/components/block-editor/index.js +3 -1
  6. package/build/components/block-editor/index.js.map +1 -1
  7. package/build/components/editor/index.js +12 -6
  8. package/build/components/editor/index.js.map +1 -1
  9. package/build/components/global-styles/color-palette-panel.js +29 -6
  10. package/build/components/global-styles/color-palette-panel.js.map +1 -1
  11. package/build/components/global-styles/global-styles-provider.js +5 -43
  12. package/build/components/global-styles/global-styles-provider.js.map +1 -1
  13. package/build/components/global-styles/gradients-palette-panel.js +71 -0
  14. package/build/components/global-styles/gradients-palette-panel.js.map +1 -0
  15. package/build/components/global-styles/hooks.js +5 -5
  16. package/build/components/global-styles/hooks.js.map +1 -1
  17. package/build/components/global-styles/palette.js +11 -5
  18. package/build/components/global-styles/palette.js.map +1 -1
  19. package/build/components/global-styles/screen-background-color.js +3 -1
  20. package/build/components/global-styles/screen-background-color.js.map +1 -1
  21. package/build/components/global-styles/screen-color-palette.js +23 -3
  22. package/build/components/global-styles/screen-color-palette.js.map +1 -1
  23. package/build/components/global-styles/screen-link-color.js +3 -1
  24. package/build/components/global-styles/screen-link-color.js.map +1 -1
  25. package/build/components/global-styles/screen-text-color.js +3 -1
  26. package/build/components/global-styles/screen-text-color.js.map +1 -1
  27. package/build/components/global-styles/screen-typography-element.js +54 -0
  28. package/build/components/global-styles/screen-typography-element.js.map +1 -0
  29. package/build/components/global-styles/screen-typography.js +74 -6
  30. package/build/components/global-styles/screen-typography.js.map +1 -1
  31. package/build/components/global-styles/typography-panel.js +28 -8
  32. package/build/components/global-styles/typography-panel.js.map +1 -1
  33. package/build/components/global-styles/ui.js +12 -0
  34. package/build/components/global-styles/ui.js.map +1 -1
  35. package/build/components/global-styles/use-global-styles-output.js +2 -2
  36. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  37. package/build/components/global-styles/utils.js +1 -1
  38. package/build/components/global-styles/utils.js.map +1 -1
  39. package/build/components/keyboard-shortcuts/index.js +26 -0
  40. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  41. package/build/components/list/actions/index.js +104 -0
  42. package/build/components/list/actions/index.js.map +1 -0
  43. package/build/components/list/actions/rename-menu-item.js +112 -0
  44. package/build/components/list/actions/rename-menu-item.js.map +1 -0
  45. package/build/components/list/added-by.js +180 -0
  46. package/build/components/list/added-by.js.map +1 -0
  47. package/build/components/list/index.js +54 -7
  48. package/build/components/list/index.js.map +1 -1
  49. package/build/components/list/table.js +58 -68
  50. package/build/components/list/table.js.map +1 -1
  51. package/build/components/list/use-register-shortcuts.js +52 -0
  52. package/build/components/list/use-register-shortcuts.js.map +1 -0
  53. package/build/components/navigation-sidebar/index.js +24 -9
  54. package/build/components/navigation-sidebar/index.js.map +1 -1
  55. package/build/components/navigation-sidebar/navigation-panel/index.js +35 -17
  56. package/build/components/navigation-sidebar/navigation-panel/index.js.map +1 -1
  57. package/build/components/navigation-sidebar/navigation-toggle/index.js +14 -5
  58. package/build/components/navigation-sidebar/navigation-toggle/index.js.map +1 -1
  59. package/build/components/template-details/edit-template-title.js +33 -0
  60. package/build/components/template-details/edit-template-title.js.map +1 -0
  61. package/build/components/template-details/index.js +8 -4
  62. package/build/components/template-details/index.js.map +1 -1
  63. package/build/components/template-details/template-areas.js +1 -1
  64. package/build/components/template-details/template-areas.js.map +1 -1
  65. package/build/index.js +8 -2
  66. package/build/index.js.map +1 -1
  67. package/build/store/actions.js +47 -18
  68. package/build/store/actions.js.map +1 -1
  69. package/build/store/selectors.js +25 -5
  70. package/build/store/selectors.js.map +1 -1
  71. package/build-module/components/add-new-template/new-template-part.js +30 -17
  72. package/build-module/components/add-new-template/new-template-part.js.map +1 -1
  73. package/build-module/components/add-new-template/new-template.js +40 -24
  74. package/build-module/components/add-new-template/new-template.js.map +1 -1
  75. package/build-module/components/block-editor/index.js +2 -1
  76. package/build-module/components/block-editor/index.js.map +1 -1
  77. package/build-module/components/editor/index.js +13 -7
  78. package/build-module/components/editor/index.js.map +1 -1
  79. package/build-module/components/global-styles/color-palette-panel.js +29 -7
  80. package/build-module/components/global-styles/color-palette-panel.js.map +1 -1
  81. package/build-module/components/global-styles/global-styles-provider.js +6 -39
  82. package/build-module/components/global-styles/global-styles-provider.js.map +1 -1
  83. package/build-module/components/global-styles/gradients-palette-panel.js +60 -0
  84. package/build-module/components/global-styles/gradients-palette-panel.js.map +1 -0
  85. package/build-module/components/global-styles/hooks.js +5 -5
  86. package/build-module/components/global-styles/hooks.js.map +1 -1
  87. package/build-module/components/global-styles/palette.js +12 -5
  88. package/build-module/components/global-styles/palette.js.map +1 -1
  89. package/build-module/components/global-styles/screen-background-color.js +3 -1
  90. package/build-module/components/global-styles/screen-background-color.js.map +1 -1
  91. package/build-module/components/global-styles/screen-color-palette.js +22 -3
  92. package/build-module/components/global-styles/screen-color-palette.js.map +1 -1
  93. package/build-module/components/global-styles/screen-link-color.js +3 -1
  94. package/build-module/components/global-styles/screen-link-color.js.map +1 -1
  95. package/build-module/components/global-styles/screen-text-color.js +3 -1
  96. package/build-module/components/global-styles/screen-text-color.js.map +1 -1
  97. package/build-module/components/global-styles/screen-typography-element.js +41 -0
  98. package/build-module/components/global-styles/screen-typography-element.js.map +1 -0
  99. package/build-module/components/global-styles/screen-typography.js +70 -6
  100. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  101. package/build-module/components/global-styles/typography-panel.js +28 -8
  102. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  103. package/build-module/components/global-styles/ui.js +11 -0
  104. package/build-module/components/global-styles/ui.js.map +1 -1
  105. package/build-module/components/global-styles/use-global-styles-output.js +2 -2
  106. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  107. package/build-module/components/global-styles/utils.js +1 -1
  108. package/build-module/components/global-styles/utils.js.map +1 -1
  109. package/build-module/components/keyboard-shortcuts/index.js +26 -0
  110. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  111. package/build-module/components/list/actions/index.js +85 -0
  112. package/build-module/components/list/actions/index.js.map +1 -0
  113. package/build-module/components/list/actions/rename-menu-item.js +101 -0
  114. package/build-module/components/list/actions/rename-menu-item.js.map +1 -0
  115. package/build-module/components/list/added-by.js +166 -0
  116. package/build-module/components/list/added-by.js.map +1 -0
  117. package/build-module/components/list/index.js +49 -8
  118. package/build-module/components/list/index.js.map +1 -1
  119. package/build-module/components/list/table.js +60 -70
  120. package/build-module/components/list/table.js.map +1 -1
  121. package/build-module/components/list/use-register-shortcuts.js +41 -0
  122. package/build-module/components/list/use-register-shortcuts.js.map +1 -0
  123. package/build-module/components/navigation-sidebar/index.js +22 -10
  124. package/build-module/components/navigation-sidebar/index.js.map +1 -1
  125. package/build-module/components/navigation-sidebar/navigation-panel/index.js +33 -18
  126. package/build-module/components/navigation-sidebar/navigation-panel/index.js.map +1 -1
  127. package/build-module/components/navigation-sidebar/navigation-toggle/index.js +14 -6
  128. package/build-module/components/navigation-sidebar/navigation-toggle/index.js.map +1 -1
  129. package/build-module/components/template-details/edit-template-title.js +23 -0
  130. package/build-module/components/template-details/edit-template-title.js.map +1 -0
  131. package/build-module/components/template-details/index.js +7 -4
  132. package/build-module/components/template-details/index.js.map +1 -1
  133. package/build-module/components/template-details/template-areas.js +1 -1
  134. package/build-module/components/template-details/template-areas.js.map +1 -1
  135. package/build-module/index.js +8 -3
  136. package/build-module/index.js.map +1 -1
  137. package/build-module/store/actions.js +48 -19
  138. package/build-module/store/actions.js.map +1 -1
  139. package/build-module/store/selectors.js +21 -3
  140. package/build-module/store/selectors.js.map +1 -1
  141. package/build-style/style-rtl.css +146 -21
  142. package/build-style/style.css +146 -21
  143. package/package.json +10 -8
  144. package/src/components/add-new-template/new-template-part.js +32 -18
  145. package/src/components/add-new-template/new-template.js +39 -20
  146. package/src/components/block-editor/index.js +2 -0
  147. package/src/components/editor/index.js +17 -6
  148. package/src/components/global-styles/color-palette-panel.js +64 -7
  149. package/src/components/global-styles/global-styles-provider.js +3 -33
  150. package/src/components/global-styles/gradients-palette-panel.js +99 -0
  151. package/src/components/global-styles/hooks.js +4 -4
  152. package/src/components/global-styles/palette.js +30 -10
  153. package/src/components/global-styles/screen-background-color.js +2 -0
  154. package/src/components/global-styles/screen-color-palette.js +30 -3
  155. package/src/components/global-styles/screen-link-color.js +2 -0
  156. package/src/components/global-styles/screen-text-color.js +2 -0
  157. package/src/components/global-styles/screen-typography-element.js +39 -0
  158. package/src/components/global-styles/screen-typography.js +84 -3
  159. package/src/components/global-styles/style.scss +45 -6
  160. package/src/components/global-styles/test/use-global-styles-output.js +1 -1
  161. package/src/components/global-styles/test/utils.js +1 -1
  162. package/src/components/global-styles/typography-panel.js +37 -7
  163. package/src/components/global-styles/ui.js +9 -0
  164. package/src/components/global-styles/use-global-styles-output.js +2 -2
  165. package/src/components/global-styles/utils.js +1 -1
  166. package/src/components/keyboard-shortcuts/index.js +32 -0
  167. package/src/components/list/actions/index.js +95 -0
  168. package/src/components/list/actions/rename-menu-item.js +134 -0
  169. package/src/components/list/added-by.js +179 -0
  170. package/src/components/list/index.js +63 -5
  171. package/src/components/list/style.scss +106 -11
  172. package/src/components/list/table.js +65 -76
  173. package/src/components/list/use-register-shortcuts.js +45 -0
  174. package/src/components/navigation-sidebar/index.js +21 -12
  175. package/src/components/navigation-sidebar/navigation-panel/index.js +32 -15
  176. package/src/components/navigation-sidebar/navigation-toggle/index.js +29 -17
  177. package/src/components/navigation-sidebar/navigation-toggle/test/index.js +2 -0
  178. package/src/components/sidebar/style.scss +2 -1
  179. package/src/components/template-details/edit-template-title.js +28 -0
  180. package/src/components/template-details/index.js +15 -10
  181. package/src/components/template-details/template-areas.js +1 -1
  182. package/src/index.js +10 -2
  183. package/src/store/actions.js +82 -34
  184. package/src/store/selectors.js +22 -4
  185. package/src/store/test/actions.js +0 -24
  186. package/src/store/test/selectors.js +24 -0
@@ -535,6 +535,30 @@ body.is-fullscreen-mode .interface-interface-skeleton {
535
535
  padding: 0;
536
536
  }
537
537
 
538
+ .edit-site-typography-panel__preview {
539
+ display: flex;
540
+ align-items: center;
541
+ justify-content: center;
542
+ min-height: 100px;
543
+ margin-bottom: 16px;
544
+ background: #f0f0f0;
545
+ border-radius: 2px;
546
+ }
547
+
548
+ .edit-site-global-styles-screen-typography {
549
+ margin: 16px;
550
+ }
551
+
552
+ .edit-site-global-styles-screen-typography__indicator {
553
+ height: 24px;
554
+ width: 24px;
555
+ font-size: 14px;
556
+ display: flex !important;
557
+ align-items: center;
558
+ justify-content: center;
559
+ border-radius: 2px;
560
+ }
561
+
538
562
  .edit-site-global-styles-screen-colors {
539
563
  margin: 16px;
540
564
  }
@@ -542,13 +566,11 @@ body.is-fullscreen-mode .interface-interface-skeleton {
542
566
  margin-left: 0;
543
567
  display: block;
544
568
  border-radius: 50%;
545
- border: 0;
546
569
  height: 24px;
547
570
  width: 24px;
548
571
  padding: 0;
549
- background-image: repeating-linear-gradient(45deg, #e0e0e0 25%, transparent 25%, transparent 75%, #e0e0e0 75%, #e0e0e0), repeating-linear-gradient(45deg, #e0e0e0 25%, transparent 25%, transparent 75%, #e0e0e0 75%, #e0e0e0);
550
- background-position: 0 0, 25px 25px;
551
- background-size: calc(2 * 5px) calc(2 * 5px);
572
+ border: 1px solid #ddd;
573
+ background: linear-gradient(-45deg, transparent 48%, #ddd 48%, #ddd 52%, transparent 52%);
552
574
  }
553
575
 
554
576
  .edit-site-global-styles-header__description {
@@ -561,6 +583,23 @@ body.is-fullscreen-mode .interface-interface-skeleton {
561
583
  font-weight: 500;
562
584
  }
563
585
 
586
+ .edit-site-screen-color-palette-toggle.edit-site-screen-color-palette-toggle {
587
+ margin-right: 16px;
588
+ margin-left: 16px;
589
+ width: unset;
590
+ }
591
+ .edit-site-screen-color-palette-toggle.edit-site-screen-color-palette-toggle .components-toggle-group-control {
592
+ min-height: 32px;
593
+ }
594
+
595
+ h2.edit-site-global-styles-gradient-palette-panel__duotone-heading.components-heading {
596
+ text-transform: uppercase;
597
+ line-height: 24px;
598
+ font-weight: 500;
599
+ font-size: 11px;
600
+ margin-bottom: 8px;
601
+ }
602
+
564
603
  .edit-site-header {
565
604
  align-items: center;
566
605
  background-color: #fff;
@@ -1099,12 +1138,14 @@ body.is-fullscreen-mode .edit-site-list-header {
1099
1138
 
1100
1139
  .edit-site-list-table {
1101
1140
  width: 100%;
1102
- border: 1px solid #e0e0e0;
1141
+ border: 1px solid #ddd;
1103
1142
  border-radius: 2px;
1104
1143
  margin: 0;
1105
1144
  overflow: hidden;
1145
+ border-spacing: 0;
1146
+ max-width: 960px;
1106
1147
  }
1107
- .edit-site-list-table li {
1148
+ .edit-site-list-table tr {
1108
1149
  display: flex;
1109
1150
  align-items: center;
1110
1151
  padding: 16px;
@@ -1112,36 +1153,119 @@ body.is-fullscreen-mode .edit-site-list-header {
1112
1153
  border-top: 1px solid #f0f0f0;
1113
1154
  margin: 0;
1114
1155
  }
1156
+ .edit-site-list-table tr:first-child {
1157
+ border-top: 0;
1158
+ }
1115
1159
  @media (min-width: 782px) {
1116
- .edit-site-list-table li {
1160
+ .edit-site-list-table tr {
1117
1161
  padding: 24px 32px;
1118
1162
  }
1119
1163
  }
1120
- .edit-site-list-table li .edit-site-list-table-column:nth-child(1) {
1121
- width: calc(60% - 36px);
1164
+ .edit-site-list-table tr .edit-site-list-table-column:nth-child(1) {
1165
+ width: calc(60% - 18px);
1166
+ padding-right: 24px;
1122
1167
  }
1123
- .edit-site-list-table li .edit-site-list-table-column:nth-child(1) a {
1124
- display: block;
1168
+ .edit-site-list-table tr .edit-site-list-table-column:nth-child(1) a {
1169
+ display: inline-block;
1125
1170
  text-decoration: none;
1126
1171
  font-weight: 500;
1127
1172
  margin-bottom: 4px;
1128
1173
  }
1129
- .edit-site-list-table li .edit-site-list-table-column:nth-child(2) {
1130
- width: calc(40% - 36px);
1174
+ .edit-site-list-table tr .edit-site-list-table-column:nth-child(2) {
1175
+ width: calc(40% - 18px);
1131
1176
  }
1132
- .edit-site-list-table li .edit-site-list-table-column:nth-child(3) {
1177
+ .edit-site-list-table tr .edit-site-list-table-column:nth-child(3) {
1133
1178
  min-width: 36px;
1179
+ flex-shrink: 0;
1134
1180
  }
1135
- .edit-site-list-table li.edit-site-list-table-head {
1136
- border-bottom: 1px solid #e0e0e0;
1181
+ .edit-site-list-table tr.edit-site-list-table-head {
1137
1182
  font-size: 16px;
1138
- font-weight: 500;
1183
+ font-weight: 600;
1139
1184
  text-align: left;
1140
- color: #000;
1185
+ color: #1e1e1e;
1141
1186
  border-top: none;
1187
+ border-bottom: 1px solid #ddd;
1142
1188
  }
1143
- .edit-site-list-table li.edit-site-list-table-head + li {
1144
- border-top: 0;
1189
+ .edit-site-list-table tr.edit-site-list-table-head th {
1190
+ font-weight: inherit;
1191
+ }
1192
+
1193
+ @media (min-width: 782px) {
1194
+ .edit-site-list.is-navigation-open .components-snackbar-list {
1195
+ margin-left: 300px;
1196
+ }
1197
+ }
1198
+
1199
+ @media (min-width: 782px) {
1200
+ .edit-site-list__rename-modal .components-base-control {
1201
+ width: 320px;
1202
+ }
1203
+ }
1204
+ .edit-site-list__rename-modal .components-modal__header {
1205
+ border-bottom: none;
1206
+ }
1207
+ .edit-site-list__rename-modal .components-modal__content::before {
1208
+ margin-bottom: 4px;
1209
+ }
1210
+
1211
+ .edit-site-list__rename-modal-actions {
1212
+ margin-top: 12px;
1213
+ }
1214
+
1215
+ .edit-site-template__actions button:not(:last-child) {
1216
+ margin-right: 8px;
1217
+ }
1218
+
1219
+ .edit-site-list-added-by__icon {
1220
+ display: flex;
1221
+ flex-shrink: 0;
1222
+ position: relative;
1223
+ align-items: center;
1224
+ justify-content: center;
1225
+ width: 32px;
1226
+ height: 32px;
1227
+ background: #2f2f2f;
1228
+ border-radius: 100%;
1229
+ }
1230
+ .edit-site-list-added-by__icon svg {
1231
+ fill: #fff;
1232
+ }
1233
+ .edit-site-list-added-by__icon.is-customized::after {
1234
+ position: absolute;
1235
+ content: "";
1236
+ background: var(--wp-admin-theme-color);
1237
+ height: 8px;
1238
+ width: 8px;
1239
+ outline: 2px solid #fff;
1240
+ border-radius: 100%;
1241
+ top: -1px;
1242
+ right: -1px;
1243
+ }
1244
+
1245
+ .edit-site-list-added-by__avatar {
1246
+ flex-shrink: 0;
1247
+ overflow: hidden;
1248
+ border-radius: 100%;
1249
+ background: #2f2f2f;
1250
+ width: 32px;
1251
+ height: 32px;
1252
+ }
1253
+ .edit-site-list-added-by__avatar img {
1254
+ width: 32px;
1255
+ height: 32px;
1256
+ -o-object-fit: cover;
1257
+ object-fit: cover;
1258
+ opacity: 0;
1259
+ transition: opacity 0.1s linear;
1260
+ }
1261
+ @media (prefers-reduced-motion: reduce) {
1262
+ .edit-site-list-added-by__avatar img {
1263
+ transition-duration: 0s;
1264
+ transition-delay: 0s;
1265
+ }
1266
+ }
1267
+ .edit-site-list-added-by__avatar.is-loaded img {
1268
+ opacity: 1;
1145
1269
  }
1146
1270
 
1147
1271
  .edit-site-new-template-dropdown .components-dropdown-menu__toggle {
@@ -1212,7 +1336,8 @@ body.is-fullscreen-mode .edit-site-list-header {
1212
1336
  padding: 0 16px;
1213
1337
  }
1214
1338
 
1215
- .edit-site-global-styles-color-palette-panel {
1339
+ .edit-site-global-styles-color-palette-panel,
1340
+ .edit-site-global-styles-gradient-palette-panel {
1216
1341
  padding: 16px;
1217
1342
  }
1218
1343
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/edit-site",
3
- "version": "3.0.10",
3
+ "version": "3.0.14",
4
4
  "description": "Edit Site Page module for WordPress.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -29,28 +29,30 @@
29
29
  "@babel/runtime": "^7.16.0",
30
30
  "@wordpress/a11y": "^3.2.4",
31
31
  "@wordpress/api-fetch": "^5.2.6",
32
- "@wordpress/block-editor": "^8.0.4",
33
- "@wordpress/block-library": "^6.0.8",
32
+ "@wordpress/block-editor": "^8.0.8",
33
+ "@wordpress/block-library": "^6.0.12",
34
34
  "@wordpress/blocks": "^11.1.4",
35
- "@wordpress/components": "^19.0.4",
35
+ "@wordpress/components": "^19.1.2",
36
36
  "@wordpress/compose": "^5.0.6",
37
- "@wordpress/core-data": "^4.0.7",
37
+ "@wordpress/core-data": "^4.0.8",
38
38
  "@wordpress/data": "^6.1.4",
39
39
  "@wordpress/data-controls": "^2.2.7",
40
- "@wordpress/editor": "^12.0.7",
40
+ "@wordpress/editor": "^12.0.11",
41
41
  "@wordpress/element": "^4.0.4",
42
42
  "@wordpress/hooks": "^3.2.2",
43
43
  "@wordpress/html-entities": "^3.2.3",
44
44
  "@wordpress/i18n": "^4.2.4",
45
45
  "@wordpress/icons": "^6.1.1",
46
- "@wordpress/interface": "^4.1.6",
46
+ "@wordpress/interface": "^4.1.10",
47
47
  "@wordpress/keyboard-shortcuts": "^3.0.6",
48
48
  "@wordpress/keycodes": "^3.2.4",
49
49
  "@wordpress/media-utils": "^3.0.5",
50
50
  "@wordpress/notices": "^3.2.7",
51
51
  "@wordpress/plugins": "^4.0.6",
52
52
  "@wordpress/primitives": "^3.0.4",
53
+ "@wordpress/reusable-blocks": "^3.0.14",
53
54
  "@wordpress/url": "^3.3.1",
55
+ "@wordpress/viewport": "^4.0.6",
54
56
  "classnames": "^2.3.1",
55
57
  "downloadjs": "^1.4.7",
56
58
  "file-saver": "^2.0.2",
@@ -61,5 +63,5 @@
61
63
  "publishConfig": {
62
64
  "access": "public"
63
65
  },
64
- "gitHead": "ca22e8852fcc91889510e417bdaa180ad60f8dac"
66
+ "gitHead": "34b76b2f9397215e5afb8443f5b3073c83913102"
65
67
  }
@@ -7,9 +7,12 @@ import { kebabCase } from 'lodash';
7
7
  * WordPress dependencies
8
8
  */
9
9
  import { useState } from '@wordpress/element';
10
+ import { useDispatch } from '@wordpress/data';
10
11
  import { Button } from '@wordpress/components';
11
12
  import { addQueryArgs } from '@wordpress/url';
12
13
  import apiFetch from '@wordpress/api-fetch';
14
+ import { __ } from '@wordpress/i18n';
15
+ import { store as noticesStore } from '@wordpress/notices';
13
16
 
14
17
  /**
15
18
  * Internal dependencies
@@ -18,32 +21,43 @@ import CreateTemplatePartModal from '../create-template-part-modal';
18
21
 
19
22
  export default function NewTemplatePart( { postType } ) {
20
23
  const [ isModalOpen, setIsModalOpen ] = useState( false );
24
+ const { createErrorNotice } = useDispatch( noticesStore );
21
25
 
22
26
  async function createTemplatePart( { title, area } ) {
23
27
  if ( ! title ) {
28
+ createErrorNotice( __( 'Title is not defined.' ), {
29
+ type: 'snackbar',
30
+ } );
24
31
  return;
25
32
  }
26
33
 
27
- const templatePart = await apiFetch( {
28
- path: '/wp/v2/template-parts',
29
- method: 'POST',
30
- data: {
31
- slug: kebabCase( title ),
32
- title,
33
- content: '',
34
- area,
35
- },
36
- } );
34
+ try {
35
+ const templatePart = await apiFetch( {
36
+ path: '/wp/v2/template-parts',
37
+ method: 'POST',
38
+ data: {
39
+ slug: kebabCase( title ),
40
+ title,
41
+ content: '',
42
+ area,
43
+ },
44
+ } );
37
45
 
38
- // Navigate to the created template part editor.
39
- window.location.search = addQueryArgs( '', {
40
- page: 'gutenberg-edit-site',
41
- postId: templatePart.id,
42
- postType: 'wp_template_part',
43
- } );
46
+ // Navigate to the created template part editor.
47
+ window.location.href = addQueryArgs( window.location.href, {
48
+ postId: templatePart.id,
49
+ postType: 'wp_template_part',
50
+ } );
51
+ } catch ( error ) {
52
+ const errorMessage =
53
+ error.message && error.code !== 'unknown_error'
54
+ ? error.message
55
+ : __(
56
+ 'An error occurred while creating the template part.'
57
+ );
44
58
 
45
- // Wait for async navigation to happen before closing the modal.
46
- await new Promise( () => {} );
59
+ createErrorNotice( errorMessage, { type: 'snackbar' } );
60
+ }
47
61
  }
48
62
 
49
63
  return (
@@ -12,11 +12,13 @@ import {
12
12
  MenuItem,
13
13
  NavigableMenu,
14
14
  } from '@wordpress/components';
15
- import { useSelect } from '@wordpress/data';
15
+ import { useSelect, useDispatch } from '@wordpress/data';
16
16
  import { store as coreStore } from '@wordpress/core-data';
17
17
  import { store as editorStore } from '@wordpress/editor';
18
18
  import { addQueryArgs } from '@wordpress/url';
19
19
  import apiFetch from '@wordpress/api-fetch';
20
+ import { __ } from '@wordpress/i18n';
21
+ import { store as noticesStore } from '@wordpress/notices';
20
22
 
21
23
  const DEFAULT_TEMPLATE_SLUGS = [
22
24
  'front-page',
@@ -33,7 +35,8 @@ export default function NewTemplate( { postType } ) {
33
35
  ( select ) => ( {
34
36
  templates: select( coreStore ).getEntityRecords(
35
37
  'postType',
36
- 'wp_template'
38
+ 'wp_template',
39
+ { per_page: -1 }
37
40
  ),
38
41
  defaultTemplateTypes: select(
39
42
  editorStore
@@ -41,28 +44,44 @@ export default function NewTemplate( { postType } ) {
41
44
  } ),
42
45
  []
43
46
  );
47
+ const { createErrorNotice } = useDispatch( noticesStore );
44
48
 
45
49
  async function createTemplate( { slug } ) {
46
- const { title, description } = find( defaultTemplateTypes, { slug } );
50
+ try {
51
+ const { title, description } = find( defaultTemplateTypes, {
52
+ slug,
53
+ } );
47
54
 
48
- const template = await apiFetch( {
49
- path: '/wp/v2/templates',
50
- method: 'POST',
51
- data: {
52
- excerpt: description,
53
- // Slugs need to be strings, so this is for template `404`
54
- slug: slug.toString(),
55
- status: 'publish',
56
- title,
57
- },
58
- } );
55
+ const template = await apiFetch( {
56
+ path: '/wp/v2/templates',
57
+ method: 'POST',
58
+ data: {
59
+ excerpt: description,
60
+ // Slugs need to be strings, so this is for template `404`
61
+ slug: slug.toString(),
62
+ status: 'publish',
63
+ title,
64
+ },
65
+ } );
59
66
 
60
- // Navigate to the created template editor.
61
- window.location.search = addQueryArgs( '', {
62
- page: 'gutenberg-edit-site',
63
- postId: template.id,
64
- postType: 'wp_template',
65
- } );
67
+ // Navigate to the created template editor.
68
+ window.location.href = addQueryArgs( window.location.href, {
69
+ postId: template.id,
70
+ postType: 'wp_template',
71
+ } );
72
+
73
+ // Wait for async navigation to happen before closing the modal.
74
+ await new Promise( () => {} );
75
+ } catch ( error ) {
76
+ const errorMessage =
77
+ error.message && error.code !== 'unknown_error'
78
+ ? error.message
79
+ : __( 'An error occurred while creating the template.' );
80
+
81
+ createErrorNotice( errorMessage, {
82
+ type: 'snackbar',
83
+ } );
84
+ }
66
85
  }
67
86
 
68
87
  const existingTemplateSlugs = map( templates, 'slug' );
@@ -20,6 +20,7 @@ import {
20
20
  store as blockEditorStore,
21
21
  } from '@wordpress/block-editor';
22
22
  import { useMergeRefs, useViewportMatch } from '@wordpress/compose';
23
+ import { ReusableBlocksMenuItems } from '@wordpress/reusable-blocks';
23
24
 
24
25
  /**
25
26
  * Internal dependencies
@@ -132,6 +133,7 @@ export default function BlockEditor( { setIsInserterOpen } ) {
132
133
  ) }
133
134
  </__unstableBlockSettingsMenuFirstItem>
134
135
  </BlockTools>
136
+ <ReusableBlocksMenuItems />
135
137
  </BlockEditorProvider>
136
138
  );
137
139
  }
@@ -26,7 +26,10 @@ import {
26
26
  } from '@wordpress/editor';
27
27
  import { __ } from '@wordpress/i18n';
28
28
  import { PluginArea } from '@wordpress/plugins';
29
- import { ShortcutProvider } from '@wordpress/keyboard-shortcuts';
29
+ import {
30
+ ShortcutProvider,
31
+ store as keyboardShortcutsStore,
32
+ } from '@wordpress/keyboard-shortcuts';
30
33
 
31
34
  /**
32
35
  * Internal dependencies
@@ -62,6 +65,8 @@ function Editor( { initialSettings, onError } ) {
62
65
  template,
63
66
  templateResolved,
64
67
  isNavigationOpen,
68
+ previousShortcut,
69
+ nextShortcut,
65
70
  } = useSelect( ( select ) => {
66
71
  const {
67
72
  isInserterOpened,
@@ -98,6 +103,12 @@ function Editor( { initialSettings, onError } ) {
98
103
  : false,
99
104
  entityId: postId,
100
105
  isNavigationOpen: isNavigationOpened(),
106
+ previousShortcut: select(
107
+ keyboardShortcutsStore
108
+ ).getAllShortcutKeyCombinations( 'core/edit-site/previous-region' ),
109
+ nextShortcut: select(
110
+ keyboardShortcutsStore
111
+ ).getAllShortcutKeyCombinations( 'core/edit-site/next-region' ),
101
112
  };
102
113
  }, [] );
103
114
  const { updateEditorSettings } = useDispatch( editorStore );
@@ -208,11 +219,7 @@ function Editor( { initialSettings, onError } ) {
208
219
  <ComplementaryArea.Slot scope="core/edit-site" />
209
220
  )
210
221
  }
211
- drawer={
212
- <NavigationSidebar
213
- defaultIsOpen={ false }
214
- />
215
- }
222
+ drawer={ <NavigationSidebar /> }
216
223
  header={
217
224
  <Header
218
225
  openEntitiesSavedStates={
@@ -282,6 +289,10 @@ function Editor( { initialSettings, onError } ) {
282
289
  </>
283
290
  }
284
291
  footer={ <BlockBreadcrumb /> }
292
+ shortcuts={ {
293
+ previous: previousShortcut,
294
+ next: nextShortcut,
295
+ } }
285
296
  />
286
297
  <WelcomeGuide />
287
298
  <Popover.Slot />
@@ -1,7 +1,11 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { __experimentalColorEdit as ColorEdit } from '@wordpress/components';
4
+ import {
5
+ __experimentalPaletteEdit as PaletteEdit,
6
+ __experimentalVStack as VStack,
7
+ } from '@wordpress/components';
8
+ import { __ } from '@wordpress/i18n';
5
9
 
6
10
  /**
7
11
  * Internal dependencies
@@ -9,14 +13,67 @@ import { __experimentalColorEdit as ColorEdit } from '@wordpress/components';
9
13
  import { useSetting } from './hooks';
10
14
 
11
15
  export default function ColorPalettePanel( { name } ) {
12
- const [ userColors, setColors ] = useSetting(
13
- 'color.palette',
16
+ const [ themeColors, setThemeColors ] = useSetting(
17
+ 'color.palette.theme',
18
+ name
19
+ );
20
+ const [ baseThemeColors ] = useSetting(
21
+ 'color.palette.theme',
22
+ name,
23
+ 'base'
24
+ );
25
+ const [ defaultColors, setDefaultColors ] = useSetting(
26
+ 'color.palette.default',
27
+ name
28
+ );
29
+ const [ baseDefaultColors ] = useSetting(
30
+ 'color.palette.default',
14
31
  name,
15
- 'user'
32
+ 'base'
33
+ );
34
+ const [ customColors, setCustomColors ] = useSetting(
35
+ 'color.palette.custom',
36
+ name
37
+ );
38
+
39
+ const [ defaultPaletteEnabled ] = useSetting(
40
+ 'color.defaultPalette',
41
+ name
16
42
  );
17
43
  return (
18
- <div className="edit-site-global-styles-color-palette-panel">
19
- <ColorEdit colors={ userColors } onChange={ setColors } />
20
- </div>
44
+ <VStack
45
+ className="edit-site-global-styles-color-palette-panel"
46
+ spacing={ 10 }
47
+ >
48
+ { !! themeColors && !! themeColors.length && (
49
+ <PaletteEdit
50
+ canReset={ themeColors !== baseThemeColors }
51
+ canOnlyChangeValues
52
+ colors={ themeColors }
53
+ onChange={ setThemeColors }
54
+ paletteLabel={ __( 'Theme' ) }
55
+ />
56
+ ) }
57
+ { !! defaultColors &&
58
+ !! defaultColors.length &&
59
+ !! defaultPaletteEnabled && (
60
+ <PaletteEdit
61
+ canReset={ defaultColors !== baseDefaultColors }
62
+ canOnlyChangeValues
63
+ colors={ defaultColors }
64
+ onChange={ setDefaultColors }
65
+ paletteLabel={ __( 'Default' ) }
66
+ />
67
+ ) }
68
+ <PaletteEdit
69
+ colors={ customColors }
70
+ onChange={ setCustomColors }
71
+ paletteLabel={ __( 'Custom' ) }
72
+ emptyMessage={ __(
73
+ 'Custom colors are empty! Add some colors to create your own color palette.'
74
+ ) }
75
+ slugPrefix="custom-"
76
+ />
77
+ </VStack>
21
78
  );
22
79
  }
@@ -2,9 +2,6 @@
2
2
  * External dependencies
3
3
  */
4
4
  import {
5
- get,
6
- cloneDeep,
7
- set,
8
5
  mergeWith,
9
6
  pickBy,
10
7
  isEmpty,
@@ -23,7 +20,6 @@ import { store as coreStore } from '@wordpress/core-data';
23
20
  /**
24
21
  * Internal dependencies
25
22
  */
26
- import { PRESET_METADATA } from './utils';
27
23
  import { GlobalStylesContext } from './context';
28
24
 
29
25
  function mergeTreesCustomizer( _, srcValue ) {
@@ -39,29 +35,6 @@ function mergeBaseAndUserConfigs( base, user ) {
39
35
  return mergeWith( {}, base, user, mergeTreesCustomizer );
40
36
  }
41
37
 
42
- function addUserOriginToSettings( settingsToAdd ) {
43
- const newSettings = cloneDeep( settingsToAdd );
44
- PRESET_METADATA.forEach( ( { path } ) => {
45
- const presetData = get( newSettings, path );
46
- if ( presetData ) {
47
- set( newSettings, path, {
48
- user: presetData,
49
- } );
50
- }
51
- } );
52
- return newSettings;
53
- }
54
-
55
- function removeUserOriginFromSettings( settingsToRemove ) {
56
- const newSettings = cloneDeep( settingsToRemove );
57
- PRESET_METADATA.forEach( ( { path } ) => {
58
- const presetData = get( newSettings, path );
59
- if ( presetData ) {
60
- set( newSettings, path, ( presetData ?? {} ).user );
61
- }
62
- } );
63
- return newSettings;
64
- }
65
38
  const cleanEmptyObject = ( object ) => {
66
39
  if ( ! isObject( object ) || Array.isArray( object ) ) {
67
40
  return object;
@@ -97,7 +70,7 @@ function useGlobalStylesUserConfig() {
97
70
 
98
71
  const config = useMemo( () => {
99
72
  return {
100
- settings: addUserOriginToSettings( settings ?? {} ),
73
+ settings: settings ?? {},
101
74
  styles: styles ?? {},
102
75
  };
103
76
  }, [ settings, styles ] );
@@ -111,15 +84,12 @@ function useGlobalStylesUserConfig() {
111
84
  );
112
85
  const currentConfig = {
113
86
  styles: record?.styles ?? {},
114
- settings: addUserOriginToSettings( record?.settings ?? {} ),
87
+ settings: record?.settings ?? {},
115
88
  };
116
89
  const updatedConfig = callback( currentConfig );
117
90
  editEntityRecord( 'root', 'globalStyles', globalStylesId, {
118
91
  styles: cleanEmptyObject( updatedConfig.styles ) || {},
119
- settings:
120
- cleanEmptyObject(
121
- removeUserOriginFromSettings( updatedConfig.settings )
122
- ) || {},
92
+ settings: cleanEmptyObject( updatedConfig.settings ) || {},
123
93
  } );
124
94
  },
125
95
  [ globalStylesId ]