diff --git a/package-lock.json b/package-lock.json index 6a4bce23f84734..f85199349bb086 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16364,6 +16364,7 @@ "@wordpress/media-utils": "file:packages/media-utils", "@wordpress/notices": "file:packages/notices", "@wordpress/plugins": "file:packages/plugins", + "@wordpress/preferences": "file:packages/preferences", "@wordpress/reusable-blocks": "file:packages/reusable-blocks", "@wordpress/url": "file:packages/url", "@wordpress/widgets": "file:packages/widgets", @@ -21453,6 +21454,11 @@ "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", "dev": true }, + "follow-redirects": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz", + "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==" + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -21544,7 +21550,8 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "gauge": { "version": "2.7.4", @@ -21680,6 +21687,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -21811,7 +21819,8 @@ "interpret": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true }, "invert-kv": { "version": "2.0.0", @@ -21859,6 +21868,7 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.5.0.tgz", "integrity": "sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg==", + "dev": true, "requires": { "has": "^1.0.3" } @@ -22817,7 +22827,8 @@ "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true }, "path-to-regexp": { "version": "0.1.7", @@ -23109,6 +23120,7 @@ "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, "requires": { "resolve": "^1.1.6" } @@ -23209,6 +23221,7 @@ "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, "requires": { "is-core-module": "^2.2.0", "path-parse": "^1.0.6" @@ -23500,6 +23513,17 @@ "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", "dev": true }, + "shelljs": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", + "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, "shimmer": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", @@ -34187,9 +34211,9 @@ } }, "follow-redirects": { - "version": "1.14.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", - "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", + "version": "1.14.8", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", + "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==", "dev": true }, "for-in": { @@ -50362,15 +50386,6 @@ } } }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "^1.1.6" - } - }, "recursive-readdir": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", @@ -52120,25 +52135,6 @@ } } }, - "shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "dev": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "dependencies": { - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true - } - } - }, "showdown": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/showdown/-/showdown-1.9.1.tgz", diff --git a/packages/base-styles/_z-index.scss b/packages/base-styles/_z-index.scss index 1cfbd51d5566c9..7011be7ea3b056 100644 --- a/packages/base-styles/_z-index.scss +++ b/packages/base-styles/_z-index.scss @@ -155,8 +155,7 @@ $z-layers: ( ".components-popover.customize-widgets-more-menu__content": 99998, ".components-popover.edit-post-more-menu__content": 99998, ".components-popover.edit-site-more-menu__content": 99998, - ".components-popover.edit-widgets-more-menu__content": 99998, - ".components-popover.preferences-more-menu__content": 99998, + ".components-popover.interface-more-menu__content": 99998, ".components-popover.block-editor-rich-text__inline-format-toolbar": 99998, ".components-popover.block-editor-warning__dropdown": 99998, ".components-popover.edit-navigation-menu-actions__switcher-dropdown": 99998, diff --git a/packages/data/src/plugins/persistence/index.js b/packages/data/src/plugins/persistence/index.js index 24baf115aa1dcc..158a016ad68272 100644 --- a/packages/data/src/plugins/persistence/index.js +++ b/packages/data/src/plugins/persistence/index.js @@ -222,6 +222,80 @@ function persistencePlugin( registry, pluginOptions ) { }; } +/** + * Move the 'features' object in local storage from the sourceStoreName to the + * preferences store. + * + * @param {Object} persistence The persistence interface. + * @param {string} sourceStoreName The name of the store that has persisted + * preferences to migrate to the preferences + * package. + */ +export function migrateFeaturePreferencesToPreferencesStore( + persistence, + sourceStoreName +) { + const preferencesStoreName = 'core/preferences'; + const interfaceStoreName = 'core/interface'; + + const state = persistence.get(); + + // Features most recently (and briefly) lived in the interface package. + // If data exists there, prioritize using that for the migration. If not + // also check the original package as the user may have updated from an + // older block editor version. + const interfaceFeatures = + state[ interfaceStoreName ]?.preferences?.features?.[ sourceStoreName ]; + const sourceFeatures = state[ sourceStoreName ]?.preferences?.features; + const featuresToMigrate = interfaceFeatures + ? interfaceFeatures + : sourceFeatures; + + if ( featuresToMigrate ) { + const targetFeatures = state[ preferencesStoreName ]?.preferences; + + // Avoid migrating features again if they've previously been migrated. + if ( ! targetFeatures?.[ sourceStoreName ] ) { + // Set the feature values in the interface store, the features + // object is keyed by 'scope', which matches the store name for + // the source. + persistence.set( preferencesStoreName, { + preferences: { + ...targetFeatures, + [ sourceStoreName ]: featuresToMigrate, + }, + } ); + + // Remove migrated feature preferences from `interface`. + if ( interfaceFeatures ) { + const otherInterfaceFeatures = + state[ interfaceStoreName ]?.preferences?.features; + + persistence.set( interfaceStoreName, { + preferences: { + features: { + ...otherInterfaceFeatures, + [ sourceStoreName ]: undefined, + }, + }, + } ); + } + + // Remove migrated feature preferences from the source. + if ( sourceFeatures ) { + const sourcePreferences = state[ sourceStoreName ]?.preferences; + + persistence.set( sourceStoreName, { + preferences: { + ...sourcePreferences, + features: undefined, + }, + } ); + } + } + } +} + /** * Move the 'features' object in local storage from the sourceStoreName to the * interface store. @@ -277,7 +351,7 @@ export function migrateFeaturePreferencesToInterfaceStore( persistencePlugin.__unstableMigrate = ( pluginOptions ) => { const persistence = createPersistenceInterface( pluginOptions ); - migrateFeaturePreferencesToInterfaceStore( + migrateFeaturePreferencesToPreferencesStore( persistence, 'core/edit-widgets' ); diff --git a/packages/data/src/plugins/persistence/test/index.js b/packages/data/src/plugins/persistence/test/index.js index 562c11d81b7764..ee34b97fb09bf5 100644 --- a/packages/data/src/plugins/persistence/test/index.js +++ b/packages/data/src/plugins/persistence/test/index.js @@ -10,6 +10,7 @@ import plugin, { createPersistenceInterface, withLazySameState, migrateFeaturePreferencesToInterfaceStore, + migrateFeaturePreferencesToPreferencesStore, } from '../'; import objectStorage from '../storage/object'; import { createRegistry } from '../../../'; @@ -492,4 +493,278 @@ describe( 'migrateFeaturePreferencesToInterfaceStore', () => { }, } ); } ); + + describe( 'migrateFeaturePreferencesToPreferencesStore', () => { + it( 'migrates multiple preferences from persisted source stores to preferences', () => { + const persistenceInterface = createPersistenceInterface( { + storageKey: 'test-username', + } ); + + const sourceStateA = { + preferences: { + features: { + featureA: true, + featureB: false, + featureC: true, + }, + }, + }; + + const sourceStateB = { + preferences: { + features: { + featureD: true, + featureE: false, + featureF: true, + }, + }, + }; + + persistenceInterface.set( 'core/test-a', sourceStateA ); + persistenceInterface.set( 'core/test-b', sourceStateB ); + + migrateFeaturePreferencesToPreferencesStore( + persistenceInterface, + 'core/test-a' + ); + + migrateFeaturePreferencesToPreferencesStore( + persistenceInterface, + 'core/test-b' + ); + + expect( persistenceInterface.get() ).toEqual( { + 'core/preferences': { + preferences: { + 'core/test-a': { + featureA: true, + featureB: false, + featureC: true, + }, + 'core/test-b': { + featureD: true, + featureE: false, + featureF: true, + }, + }, + }, + 'core/test-a': { + preferences: { + features: undefined, + }, + }, + 'core/test-b': { + preferences: { + features: undefined, + }, + }, + } ); + } ); + + it( 'migrates multiple preferences from the persisted interface store to preferences, with interface state taking precedence over source stores', () => { + const persistenceInterface = createPersistenceInterface( { + storageKey: 'test-username', + } ); + + const sourceStateA = { + preferences: { + features: { + featureA: true, + featureB: false, + featureC: true, + }, + }, + }; + + const sourceStateB = { + preferences: { + features: { + featureD: true, + featureE: false, + featureF: true, + }, + }, + }; + + const interfaceState = { + preferences: { + features: { + 'core/test-a': { + featureG: true, + featureH: false, + featureI: true, + }, + 'core/test-b': { + featureJ: true, + featureK: false, + featureL: true, + }, + }, + }, + }; + + persistenceInterface.set( 'core/test-a', sourceStateA ); + persistenceInterface.set( 'core/test-b', sourceStateB ); + persistenceInterface.set( 'core/interface', interfaceState ); + + migrateFeaturePreferencesToPreferencesStore( + persistenceInterface, + 'core/test-a' + ); + + migrateFeaturePreferencesToPreferencesStore( + persistenceInterface, + 'core/test-b' + ); + + expect( persistenceInterface.get() ).toEqual( { + 'core/preferences': { + preferences: { + 'core/test-a': { + featureG: true, + featureH: false, + featureI: true, + }, + 'core/test-b': { + featureJ: true, + featureK: false, + featureL: true, + }, + }, + }, + 'core/interface': { + preferences: { + features: { + 'core/test-a': undefined, + 'core/test-b': undefined, + }, + }, + }, + 'core/test-a': { + preferences: { + features: undefined, + }, + }, + 'core/test-b': { + preferences: { + features: undefined, + }, + }, + } ); + } ); + + it( 'only migrates persisted data for the source name from source stores', () => { + const persistenceInterface = createPersistenceInterface( { + storageKey: 'test-username', + } ); + + const sourceStateA = { + preferences: { + features: { + featureA: true, + featureB: false, + featureC: true, + }, + }, + }; + + const sourceStateB = { + preferences: { + features: { + featureD: true, + featureE: false, + featureF: true, + }, + }, + }; + + persistenceInterface.set( 'core/test-a', sourceStateA ); + persistenceInterface.set( 'core/test-b', sourceStateB ); + + migrateFeaturePreferencesToPreferencesStore( + persistenceInterface, + 'core/test-a' + ); + + expect( persistenceInterface.get() ).toEqual( { + 'core/preferences': { + preferences: { + 'core/test-a': { + featureA: true, + featureB: false, + featureC: true, + }, + }, + }, + 'core/test-a': { + preferences: { + features: undefined, + }, + }, + 'core/test-b': { + preferences: { + features: { + featureD: true, + featureE: false, + featureF: true, + }, + }, + }, + } ); + } ); + + it( 'only migrates persisted data for the source name from interface', () => { + const persistenceInterface = createPersistenceInterface( { + storageKey: 'test-username', + } ); + + const interfaceState = { + preferences: { + features: { + 'core/test-a': { + featureG: true, + featureH: false, + featureI: true, + }, + 'core/test-b': { + featureJ: true, + featureK: false, + featureL: true, + }, + }, + }, + }; + + persistenceInterface.set( 'core/interface', interfaceState ); + + migrateFeaturePreferencesToPreferencesStore( + persistenceInterface, + 'core/test-a' + ); + + expect( persistenceInterface.get() ).toEqual( { + 'core/preferences': { + preferences: { + 'core/test-a': { + featureG: true, + featureH: false, + featureI: true, + }, + }, + }, + 'core/interface': { + preferences: { + features: { + 'core/test-a': undefined, + 'core/test-b': { + featureJ: true, + featureK: false, + featureL: true, + }, + }, + }, + }, + } ); + } ); + } ); } ); diff --git a/packages/e2e-tests/specs/widgets/editing-widgets.test.js b/packages/e2e-tests/specs/widgets/editing-widgets.test.js index 3214ba01e85a2c..c577717d8f3f6b 100644 --- a/packages/e2e-tests/specs/widgets/editing-widgets.test.js +++ b/packages/e2e-tests/specs/widgets/editing-widgets.test.js @@ -31,16 +31,17 @@ describe( 'Widgets screen', () => { await visitWidgetsScreen(); // Disable welcome guide if it is enabled. - const isWelcomeGuideActive = await page.evaluate( () => - wp.data - .select( 'core/interface' ) - .isFeatureActive( 'core/edit-widgets', 'welcomeGuide' ) + const isWelcomeGuideActive = await page.evaluate( + () => + !! wp.data + .select( 'core/preferences' ) + .get( 'core/edit-widgets', 'welcomeGuide' ) ); if ( isWelcomeGuideActive ) { await page.evaluate( () => wp.data - .dispatch( 'core/interface' ) - .toggleFeature( 'core/edit-widgets', 'welcomeGuide' ) + .dispatch( 'core/preferences' ) + .toggle( 'core/edit-widgets', 'welcomeGuide' ) ); } diff --git a/packages/edit-widgets/package.json b/packages/edit-widgets/package.json index 60b447e20d5f28..958dd66aa07fc9 100644 --- a/packages/edit-widgets/package.json +++ b/packages/edit-widgets/package.json @@ -46,6 +46,7 @@ "@wordpress/media-utils": "file:../media-utils", "@wordpress/notices": "file:../notices", "@wordpress/plugins": "file:../plugins", + "@wordpress/preferences": "file:../preferences", "@wordpress/reusable-blocks": "file:../reusable-blocks", "@wordpress/url": "file:../url", "@wordpress/widgets": "file:../widgets", diff --git a/packages/edit-widgets/src/components/layout/interface.js b/packages/edit-widgets/src/components/layout/interface.js index b578323d2a754a..579a38fe23502c 100644 --- a/packages/edit-widgets/src/components/layout/interface.js +++ b/packages/edit-widgets/src/components/layout/interface.js @@ -12,6 +12,7 @@ import { } from '@wordpress/interface'; import { __ } from '@wordpress/i18n'; import { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts'; +import { store as preferencesStore } from '@wordpress/preferences'; /** * Internal dependencies @@ -54,9 +55,10 @@ function Interface( { blockEditorSettings } ) { ).getActiveComplementaryArea( editWidgetsStore.name ), isInserterOpened: !! select( editWidgetsStore ).isInserterOpened(), isListViewOpened: !! select( editWidgetsStore ).isListViewOpened(), - hasBlockBreadCrumbsEnabled: select( - interfaceStore - ).isFeatureActive( 'core/edit-widgets', 'showBlockBreadcrumbs' ), + hasBlockBreadCrumbsEnabled: !! select( preferencesStore ).get( + 'core/edit-widgets', + 'showBlockBreadcrumbs' + ), previousShortcut: select( keyboardShortcutsStore ).getAllShortcutKeyCombinations( diff --git a/packages/edit-widgets/src/components/more-menu/index.js b/packages/edit-widgets/src/components/more-menu/index.js index 3817f10a84bcf1..ee13c959a7a57d 100644 --- a/packages/edit-widgets/src/components/more-menu/index.js +++ b/packages/edit-widgets/src/components/more-menu/index.js @@ -5,7 +5,8 @@ import { MenuGroup, MenuItem, VisuallyHidden } from '@wordpress/components'; import { useState } from '@wordpress/element'; import { __, _x } from '@wordpress/i18n'; import { external } from '@wordpress/icons'; -import { MoreMenuDropdown, MoreMenuFeatureToggle } from '@wordpress/interface'; +import { MoreMenuDropdown } from '@wordpress/interface'; +import { PreferenceToggleMenuItem } from '@wordpress/preferences'; import { displayShortcut } from '@wordpress/keycodes'; import { useShortcut } from '@wordpress/keyboard-shortcuts'; import { useViewportMatch } from '@wordpress/compose'; @@ -38,9 +39,9 @@ export default function MoreMenu() { <> { isLargeViewport && ( - { __( 'Keyboard shortcuts' ) } - - - { isLargeViewport && ( - - select( interfaceStore ).isFeatureActive( + !! select( preferencesStore ).get( 'core/edit-widgets', 'welcomeGuide' ), [] ); - const { toggleFeature } = useDispatch( interfaceStore ); + const { toggle } = useDispatch( preferencesStore ); const widgetAreas = useSelect( ( select ) => @@ -52,9 +52,7 @@ export default function WelcomeGuide() { className="edit-widgets-welcome-guide" contentLabel={ __( 'Welcome to block Widgets' ) } finishButtonText={ __( 'Get started' ) } - onFinish={ () => - toggleFeature( 'core/edit-widgets', 'welcomeGuide' ) - } + onFinish={ () => toggle( 'core/edit-widgets', 'welcomeGuide' ) } pages={ [ { image: ( diff --git a/packages/edit-widgets/src/components/widget-areas-block-editor-content/index.js b/packages/edit-widgets/src/components/widget-areas-block-editor-content/index.js index 845367855adb82..386d4730e4dab4 100644 --- a/packages/edit-widgets/src/components/widget-areas-block-editor-content/index.js +++ b/packages/edit-widgets/src/components/widget-areas-block-editor-content/index.js @@ -11,7 +11,7 @@ import { } from '@wordpress/block-editor'; import { useSelect } from '@wordpress/data'; import { useMemo } from '@wordpress/element'; -import { store as interfaceStore } from '@wordpress/interface'; +import { store as preferencesStore } from '@wordpress/preferences'; /** * Internal dependencies @@ -24,7 +24,7 @@ export default function WidgetAreasBlockEditorContent( { } ) { const hasThemeStyles = useSelect( ( select ) => - select( interfaceStore ).isFeatureActive( + !! select( preferencesStore ).get( 'core/edit-widgets', 'themeStyles' ), diff --git a/packages/edit-widgets/src/components/widget-areas-block-editor-provider/index.js b/packages/edit-widgets/src/components/widget-areas-block-editor-provider/index.js index fa33e73b01c65e..f8fd745a3bbdfe 100644 --- a/packages/edit-widgets/src/components/widget-areas-block-editor-provider/index.js +++ b/packages/edit-widgets/src/components/widget-areas-block-editor-provider/index.js @@ -16,8 +16,8 @@ import { CopyHandler, } from '@wordpress/block-editor'; import { ReusableBlocksMenuItems } from '@wordpress/reusable-blocks'; -import { store as interfaceStore } from '@wordpress/interface'; import { ShortcutProvider } from '@wordpress/keyboard-shortcuts'; +import { store as preferencesStore } from '@wordpress/preferences'; /** * Internal dependencies @@ -50,11 +50,11 @@ export default function WidgetAreasBlockEditorProvider( { reusableBlocks: ALLOW_REUSABLE_BLOCKS ? select( coreStore ).getEntityRecords( 'postType', 'wp_block' ) : [], - isFixedToolbarActive: select( interfaceStore ).isFeatureActive( + isFixedToolbarActive: !! select( preferencesStore ).get( 'core/edit-widgets', 'fixedToolbar' ), - keepCaretInsideBlock: select( interfaceStore ).isFeatureActive( + keepCaretInsideBlock: !! select( preferencesStore ).get( 'core/edit-widgets', 'keepCaretInsideBlock' ), diff --git a/packages/edit-widgets/src/index.js b/packages/edit-widgets/src/index.js index 5495ed11dff9df..9fa62f7909f163 100644 --- a/packages/edit-widgets/src/index.js +++ b/packages/edit-widgets/src/index.js @@ -20,7 +20,7 @@ import { registerLegacyWidgetVariations, registerWidgetGroupBlock, } from '@wordpress/widgets'; -import { store as interfaceStore } from '@wordpress/interface'; +import { store as preferencesStore } from '@wordpress/preferences'; /** * Internal dependencies @@ -78,7 +78,7 @@ export function initialize( id, settings ) { ); } ); - dispatch( interfaceStore ).setFeatureDefaults( 'core/edit-widgets', { + dispatch( preferencesStore ).setDefaults( 'core/edit-widgets', { fixedToolbar: false, welcomeGuide: true, showBlockBreadcrumbs: true, diff --git a/packages/edit-widgets/src/store/index.js b/packages/edit-widgets/src/store/index.js index 3ef48b186d3ab3..b8542b2fa5cf19 100644 --- a/packages/edit-widgets/src/store/index.js +++ b/packages/edit-widgets/src/store/index.js @@ -2,7 +2,7 @@ * WordPress dependencies */ import apiFetch from '@wordpress/api-fetch'; -import { createReduxStore, registerStore } from '@wordpress/data'; +import { createReduxStore, register } from '@wordpress/data'; /** * Internal dependencies @@ -16,7 +16,7 @@ import { STORE_NAME } from './constants'; /** * Block editor data store configuration. * - * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#registerStore + * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#register * * @type {Object} */ @@ -35,10 +35,7 @@ const storeConfig = { * @type {Object} */ export const store = createReduxStore( STORE_NAME, storeConfig ); - -// Once we build a more generic persistence plugin that works across types of stores -// we'd be able to replace this with a register call. -registerStore( STORE_NAME, storeConfig ); +register( store ); // This package uses a few in-memory post types as wrappers for convenience. // This middleware prevents any network requests related to these types as they are diff --git a/packages/interface/src/components/more-menu-dropdown/style.scss b/packages/interface/src/components/more-menu-dropdown/style.scss index 0e09685f9587f3..0e98b90de6c062 100644 --- a/packages/interface/src/components/more-menu-dropdown/style.scss +++ b/packages/interface/src/components/more-menu-dropdown/style.scss @@ -31,5 +31,5 @@ } .components-popover.interface-more-menu-dropdown__content { - z-index: z-index(".components-popover.edit-widgets-more-menu__content"); + z-index: z-index(".components-popover.interface-more-menu__content"); }