diff --git a/src/js/_enqueues/admin/user-profile.js b/src/js/_enqueues/admin/user-profile.js index 0e6aee5360a6c..23d10404129fe 100644 --- a/src/js/_enqueues/admin/user-profile.js +++ b/src/js/_enqueues/admin/user-profile.js @@ -493,7 +493,7 @@ } ); $( function() { - var $colorpicker, $stylesheet, user_id, current_user_id, + var $colorpicker, $stylesheet, $selectedMenuIconStyles, initialMenuIconStyles, user_id, current_user_id, select = $( '#display_name' ), username = $( '#user_login' ).val(), myAccount = $( '#wp-admin-bar-my-account' ), @@ -564,6 +564,8 @@ $colorpicker = $( '#color-picker' ); $stylesheet = $( '#colors-css' ); + $selectedMenuIconStyles = $(); + initialMenuIconStyles = $colorpicker.find( '.selected .menu_icon_styles' ).val(); user_id = $( 'input#user_id' ).val(); current_user_id = $( 'input[name="checkuser_id"]' ).val(); @@ -599,6 +601,19 @@ } } + // Color the inline SVG menu icons. + if ( 0 === $selectedMenuIconStyles.length ) { + // Remove the color scheme styles that were already printed. + if ( initialMenuIconStyles ) { + $( 'style' ).each( function() { + this.textContent = this.textContent.replace( initialMenuIconStyles, '' ); + } ); + } + // Insert before the colors stylesheet, so that the stylesheet can override these styles. + $selectedMenuIconStyles = $( '' ).insertBefore( $stylesheet ); + } + $selectedMenuIconStyles.text( $this.children( '.menu_icon_styles' ).val() || '' ); + // Update user option. $.post( ajaxurl, { action: 'save-user-color-scheme', diff --git a/src/wp-admin/css/admin-menu.css b/src/wp-admin/css/admin-menu.css index 7889a3e76008c..721f39fdc568d 100644 --- a/src/wp-admin/css/admin-menu.css +++ b/src/wp-admin/css/admin-menu.css @@ -280,31 +280,51 @@ background-size: 20px auto; } +#adminmenu div.wp-menu-image.svg-icon { + display: flex; + align-items: center; + overflow: hidden; +} + +/* Dashicons back-compat: allow `::before` with `content` to fill the slot and push the SVG icon out of view. */ +#adminmenu div.wp-menu-image.svg-icon::before { + flex: 0 0 100%; +} + +#adminmenu div.wp-menu-image.svg-icon svg { + flex: none; + margin: auto; + fill: currentColor; +} + div.wp-menu-image::before { - color: #a7aaad; - color: rgba(240, 246, 252, 0.6); padding: 7px 0; transition: all 0.1s ease-in-out; } -#adminmenu div.wp-menu-image::before { +#adminmenu div.wp-menu-image { color: #a7aaad; color: rgba(240, 246, 252, 0.6); + transition: color 0.1s ease-in-out; } -#adminmenu li.wp-has-current-submenu:hover div.wp-menu-image::before, -#adminmenu .wp-has-current-submenu div.wp-menu-image::before, -#adminmenu .current div.wp-menu-image::before, -#adminmenu a.wp-has-current-submenu:hover div.wp-menu-image::before, -#adminmenu a.current:hover div.wp-menu-image::before, -#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image::before, -#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image::before { +#adminmenu div.wp-menu-image::before { + color: inherit; +} + +#adminmenu li.wp-has-current-submenu:hover div.wp-menu-image, +#adminmenu .wp-has-current-submenu div.wp-menu-image, +#adminmenu .current div.wp-menu-image, +#adminmenu a.wp-has-current-submenu:hover div.wp-menu-image, +#adminmenu a.current:hover div.wp-menu-image, +#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image, +#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image { color: #fff; } -#adminmenu li:hover div.wp-menu-image::before, -#adminmenu li a:focus div.wp-menu-image::before, -#adminmenu li.opensub div.wp-menu-image::before { +#adminmenu li:hover div.wp-menu-image, +#adminmenu li a:focus div.wp-menu-image, +#adminmenu li.opensub div.wp-menu-image { color: #72aee6; } @@ -315,6 +335,10 @@ div.wp-menu-image::before { z-index: 25; } +.folded #adminmenu div.wp-menu-image.svg-icon { + height: 34px; +} + .folded #adminmenu a.menu-top { height: 34px; } @@ -492,35 +516,32 @@ ul#adminmenu > li.current > a.current::after { #collapse-button .collapse-button-icon { width: 36px; height: 34px; + display: flex; + align-items: center; + justify-content: center; } .folded #collapse-button .collapse-button-label { display: none; } -#collapse-button .collapse-button-icon::after { - content: "\f148"; - content: "\f148" / ""; - display: block; +#collapse-button .collapse-button-icon svg { + fill: currentColor; position: relative; - top: 7px; - text-align: center; - font: 400 20px/1 dashicons !important; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; + top: -1px; } /* rtl:ignore */ -.folded #collapse-button .collapse-button-icon::after, -.rtl #collapse-button .collapse-button-icon::after { +.folded #collapse-button .collapse-button-icon svg, +.rtl #collapse-button .collapse-button-icon svg { transform: rotate(180deg); } -.rtl.folded #collapse-button .collapse-button-icon::after { +.rtl.folded #collapse-button .collapse-button-icon svg { transform: none; } -#collapse-button .collapse-button-icon::after, +#collapse-button .collapse-button-icon svg, #collapse-button .collapse-button-label { transition: all 0.1s ease-in-out; } @@ -600,6 +621,10 @@ li#wp-admin-bar-menu-toggle { z-index: 25; } + .auto-fold #adminmenu div.wp-menu-image.svg-icon { + height: 34px; + } + .auto-fold #adminmenu a.menu-top { min-height: 34px; } @@ -641,11 +666,11 @@ li#wp-admin-bar-menu-toggle { } /* rtl:ignore */ - .auto-fold #collapse-button .collapse-button-icon::after { + .auto-fold #collapse-button .collapse-button-icon svg { transform: rotate(180deg); } - .rtl.auto-fold #collapse-button .collapse-button-icon::after { + .rtl.auto-fold #collapse-button .collapse-button-icon svg { transform: none; } @@ -806,26 +831,19 @@ li#wp-admin-bar-menu-toggle { border: 1px solid transparent; } - #wpadminbar #wp-admin-bar-menu-toggle .ab-icon::before { - content: "\f228"; - display: inline-block; + #wpadminbar #wp-admin-bar-menu-toggle .ab-icon { + display: flex; + align-items: center; float: left; - font: 400 40px/45px dashicons; - vertical-align: middle; - outline: none; margin: 0; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; height: 44px; width: 50px; padding: 0; border: none; - text-align: center; - text-decoration: none; box-sizing: border-box; } - .wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon::before { + .wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon { color: #72aee6; } } diff --git a/src/wp-admin/css/colors/_admin.scss b/src/wp-admin/css/colors/_admin.scss index 8eed01dc9311a..88c2eca898fde 100644 --- a/src/wp-admin/css/colors/_admin.scss +++ b/src/wp-admin/css/colors/_admin.scss @@ -260,7 +260,7 @@ input[type="radio"]:focus { color: variables.$menu-text; } -#adminmenu div.wp-menu-image::before { +#adminmenu div.wp-menu-image { color: variables.$menu-icon; } @@ -272,8 +272,8 @@ input[type="radio"]:focus { background-color: variables.$menu-highlight-background; } -#adminmenu li.menu-top:hover div.wp-menu-image::before, -#adminmenu li.opensub > a.menu-top div.wp-menu-image::before { +#adminmenu li.menu-top:hover div.wp-menu-image, +#adminmenu li.opensub > a.menu-top div.wp-menu-image { color: variables.$menu-highlight-icon; } @@ -342,14 +342,14 @@ ul#adminmenu > li.current > a.current::after { background: variables.$menu-current-background; } -#adminmenu li.wp-has-current-submenu div.wp-menu-image::before, -#adminmenu a.current:hover div.wp-menu-image::before, -#adminmenu li.current div.wp-menu-image::before, -#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image::before, -#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image::before, -#adminmenu li:hover div.wp-menu-image::before, -#adminmenu li a:focus div.wp-menu-image::before, -#adminmenu li.opensub div.wp-menu-image::before { +#adminmenu li.wp-has-current-submenu div.wp-menu-image, +#adminmenu a.current:hover div.wp-menu-image, +#adminmenu li.current div.wp-menu-image, +#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image, +#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image, +#adminmenu li:hover div.wp-menu-image, +#adminmenu li a:focus div.wp-menu-image, +#adminmenu li.opensub div.wp-menu-image { color: variables.$menu-current-icon; } @@ -397,7 +397,6 @@ ul#adminmenu > li.current > a.current::after { } #wpadminbar .ab-icon, -#wpadminbar .ab-icon::before, #wpadminbar .ab-item::before, #wpadminbar .ab-item::after { color: variables.$menu-icon; @@ -418,10 +417,9 @@ ul#adminmenu > li.current > a.current::after { color: variables.$menu-submenu-focus-text; } -#wpadminbar:not(.mobile) li:hover .ab-icon::before, +#wpadminbar:not(.mobile) li:hover .ab-icon, #wpadminbar:not(.mobile) li:hover .ab-item::before, -#wpadminbar:not(.mobile) li:hover .ab-item::after, -#wpadminbar:not(.mobile) li:hover #adminbarsearch::before { +#wpadminbar:not(.mobile) li:hover .ab-item::after { color: variables.$menu-submenu-focus-text; } @@ -457,15 +455,14 @@ ul#adminmenu > li.current > a.current::after { #wpadminbar .quicklinks .menupop.hover ul li a:focus, #wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover, #wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus, -#wpadminbar li:hover .ab-icon::before, +#wpadminbar li:hover .ab-icon, #wpadminbar li:hover .ab-item::before, -#wpadminbar li a:focus .ab-icon::before, +#wpadminbar li a:focus .ab-icon, #wpadminbar li .ab-item:focus::before, -#wpadminbar li .ab-item:focus .ab-icon::before, -#wpadminbar li.hover .ab-icon::before, +#wpadminbar li .ab-item:focus .ab-icon, +#wpadminbar li.hover .ab-icon, #wpadminbar li.hover .ab-item::before, -#wpadminbar li:hover #adminbarsearch::before, -#wpadminbar li #adminbarsearch.adminbar-focused::before { +#wpadminbar li #adminbarsearch.adminbar-focused .ab-icon { color: variables.$menu-submenu-focus-text; } @@ -473,22 +470,18 @@ ul#adminmenu > li.current > a.current::after { #wpadminbar .quicklinks li a:focus .blavatar, #wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar, #wpadminbar .menupop .menupop > .ab-item:hover::before, -#wpadminbar.mobile .quicklinks .hover .ab-icon::before, +#wpadminbar.mobile .quicklinks .hover .ab-icon, #wpadminbar.mobile .quicklinks .hover .ab-item::before { color: variables.$menu-submenu-focus-text; } -#wpadminbar.mobile .quicklinks .ab-icon::before, +#wpadminbar.mobile .quicklinks .ab-icon, #wpadminbar.mobile .quicklinks .ab-item::before { color: variables.$menu-icon; } /* Admin Bar: search */ -#wpadminbar #adminbarsearch::before { - color: variables.$menu-icon; -} - #wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus { color: variables.$menu-text; background: variables.$adminbar-input-background; @@ -651,7 +644,7 @@ div#wp-responsive-toggle a::before { background: variables.$menu-submenu-background; } -.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon::before { +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon { color: variables.$menu-icon; } diff --git a/src/wp-admin/includes/admin-filters.php b/src/wp-admin/includes/admin-filters.php index 0fec0867cf418..f9416a510ae29 100644 --- a/src/wp-admin/includes/admin-filters.php +++ b/src/wp-admin/includes/admin-filters.php @@ -40,6 +40,7 @@ // Admin color schemes. add_action( 'admin_init', 'register_admin_color_schemes', 1 ); add_action( 'admin_head', 'wp_color_scheme_settings' ); +add_action( 'admin_enqueue_scripts', 'wp_color_scheme_menu_icon_styles' ); add_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' ); // Misc hooks. diff --git a/src/wp-admin/includes/misc.php b/src/wp-admin/includes/misc.php index c1ee93a2849e5..51409d945b7a5 100644 --- a/src/wp-admin/includes/misc.php +++ b/src/wp-admin/includes/misc.php @@ -1037,6 +1037,7 @@ function admin_color_scheme_picker( $user_id ) { /> +