2013-11-12 22:19:15 +01:00
body {
overflow : hidden ;
2015-03-28 22:03:27 +01:00
-webkit-text-size-adjust : 100 % ;
2013-11-12 22:19:15 +01:00
}
# customize-controls a {
text-decoration : none ;
}
# customize-controls h3 {
font-size : 14px ;
}
2014-11-12 00:52:22 +01:00
# customize-controls img {
max-width : 100 % ;
}
2013-11-12 22:19:15 +01:00
# customize-controls . submit {
text-align : center ;
}
# customize-controls . description {
2015-05-29 15:57:26 +02:00
color : # 555 ;
2013-11-12 22:19:15 +01:00
}
2012-08-23 02:04:18 +02:00
# customize-header-actions . button-primary {
float : left ;
2013-11-20 23:48:09 +01:00
margin-top : 9px ;
2012-08-23 02:04:18 +02:00
}
2012-09-26 21:57:44 +02:00
# customize-header-actions . spinner {
2015-04-04 17:42:28 +02:00
margin-top : 13px ;
2012-08-23 02:04:18 +02:00
margin-left : 4px ;
}
2013-11-12 22:19:15 +01:00
. saving # customize-header-actions . spinner {
2015-04-04 17:42:28 +02:00
visibility : visible ;
2013-11-12 22:19:15 +01:00
}
2014-08-12 03:18:15 +02:00
# customize-header-actions {
border-bottom : 1px solid # ddd ;
}
2014-06-26 22:17:15 +02:00
# customize-controls . wp-full-overlay-sidebar-content {
overflow-y : auto ;
overflow-x : hidden ;
}
2015-05-29 15:57:26 +02:00
# customize-controls . customize-info {
2013-11-12 22:19:15 +01:00
border : none ;
border-top : 1px solid # ddd ;
2015-05-29 15:57:26 +02:00
border-bottom : 1px solid # ddd ;
margin-bottom : 15px ;
2013-11-12 22:19:15 +01:00
}
2015-05-29 15:57:26 +02:00
# customize-controls . customize-info . accordion-section-title {
background : # fff ;
color : # 555 ;
2013-11-12 22:19:15 +01:00
border-right : none ;
border-left : none ;
2015-05-29 15:57:26 +02:00
border-bottom : none ;
cursor : default ;
2013-11-12 22:19:15 +01:00
}
2015-05-29 15:57:26 +02:00
# customize-controls . customize-info . open . accordion-section-title : after ,
# customize-controls . customize-info . accordion-section-title : hover : after ,
# customize-controls . customize-info . accordion-section-title : focus : after {
color : # 333 ;
2013-11-12 22:19:15 +01:00
}
2015-05-29 15:57:26 +02:00
# customize-controls . customize-info . accordion-section-title : after {
display : none ;
}
# customize-controls . customize-info . preview-notice {
2013-11-12 22:19:15 +01:00
font-size : 13px ;
line-height : 24px ;
}
2015-05-29 15:57:26 +02:00
# customize-controls . control-section . customize-section-title h3 ,
# customize-controls . control-section h3 . customize-section-title ,
# customize-controls . customize-info . panel-title {
2013-11-12 22:19:15 +01:00
font-size : 20px ;
font-weight : 200 ;
2015-11-04 19:53:26 +01:00
line-height : 26px ;
2013-11-12 22:19:15 +01:00
display : block ;
2015-05-29 15:57:26 +02:00
overflow : hidden ;
white-space : nowrap ;
text-overflow : ellipsis ;
2013-11-12 22:19:15 +01:00
}
2015-05-29 15:57:26 +02:00
# customize-controls . customize-section-title span . customize-action {
overflow : hidden ;
white-space : nowrap ;
text-overflow : ellipsis ;
2013-11-12 22:19:15 +01:00
}
2015-05-29 15:57:26 +02:00
# customize-controls . customize-info . customize-help-toggle {
position : absolute ;
top : 4px ;
left : 1px ;
padding : 20px 10px 10px 20px ;
width : 20px ;
height : 20px ;
cursor : pointer ;
-webkit-box-shadow : none ;
box-shadow : none ;
-webkit-appearance : none ;
background : transparent ;
color : # 555 ;
border : none ;
}
# customize-controls . customize-info . customize-help-toggle : before {
position : absolute ;
top : 5px ;
2015-07-30 01:25:25 +02:00
right : 6px ;
2015-05-29 15:57:26 +02:00
}
# customize-controls . customize-info . open . customize-help-toggle ,
# customize-controls . customize-info . customize-help-toggle : focus ,
# customize-controls . customize-info . customize-help-toggle : hover {
color : # 0073aa ;
}
2015-10-17 01:48:25 +02:00
# customize-controls . customize-info . customize-panel-description ,
# customize-controls . no-widget-areas-rendered-notice {
2015-05-29 15:57:26 +02:00
color : # 555 ;
display : none ;
background : # fff ;
padding : 12px 15px ;
border-top : 1px solid # ddd ;
}
2015-10-17 01:48:25 +02:00
# customize-controls . customize-info . customize-panel-description . open + . no-widget-areas-rendered-notice {
border-top : none ;
}
2015-05-29 15:57:26 +02:00
# customize-controls . customize-info . customize-panel-description p : first-child {
margin-top : 0 ;
}
# customize-controls . customize-info . customize-panel-description p : last-child {
margin-bottom : 0 ;
}
# customize-controls . current-panel . control-section > h3 . accordion-section-title {
padding-left : 30px ;
2013-11-12 22:19:15 +01:00
}
# customize-theme-controls . control-section {
border : none ;
}
# customize-theme-controls . accordion-section-title {
2015-05-29 15:57:26 +02:00
color : # 555 ;
2013-11-12 22:19:15 +01:00
background-color : # fff ;
2015-05-29 15:57:26 +02:00
border-bottom : 1px solid # eee ;
}
# customize-theme-controls . accordion-section-title : after {
content : "\f341" ;
2016-03-10 22:44:26 +01:00
color : # a0a5aa ;
2015-05-29 15:57:26 +02:00
}
2013-11-12 22:19:15 +01:00
# customize-theme-controls . accordion-section-content {
2015-05-29 15:57:26 +02:00
color : # 555 ;
background : transparent ;
2013-11-12 22:19:15 +01:00
}
2015-05-29 15:57:26 +02:00
# customize-controls . control-section : hover > . accordion-section-title ,
# customize-controls . control-section . accordion-section-title : hover ,
# customize-controls . control-section . open . accordion-section-title ,
# customize-controls . control-section . accordion-section-title : focus {
2015-06-17 23:07:27 +02:00
color : # 23282d ;
background : # f5f5f5 ;
2013-11-12 22:19:15 +01:00
}
. js . control-section : hover . accordion-section-title ,
. js . control-section . accordion-section-title : hover ,
. js . control-section . open . accordion-section-title ,
. js . control-section . accordion-section-title : focus {
background : # f5f5f5 ;
}
2014-07-28 17:52:17 +02:00
# customize-theme-controls . control-section : hover > . accordion-section-title : after ,
# customize-theme-controls . control-section . accordion-section-title : hover : after ,
# customize-theme-controls . control-section . open . accordion-section-title : after ,
# customize-theme-controls . control-section . accordion-section-title : focus : after {
2015-06-17 23:07:27 +02:00
color : # 23282d ;
2013-11-12 22:19:15 +01:00
}
# customize-theme-controls . control-section . open {
2015-05-29 15:57:26 +02:00
border-bottom : 1px solid # eee ;
2013-11-12 22:19:15 +01:00
}
# customize-theme-controls . control-section . open . accordion-section-title {
2015-05-29 15:57:26 +02:00
border-bottom-color : # eee ! important ;
2013-11-12 22:19:15 +01:00
}
# customize-theme-controls . control-section : last-of-type . open ,
2014-08-14 06:43:16 +02:00
# customize-theme-controls . control-section : last-of-type > . accordion-section-title {
2013-11-12 22:19:15 +01:00
border-bottom-color : # ddd ;
}
2015-05-29 15:57:26 +02:00
# customize-theme-controls > ul {
margin : 0 ;
}
2013-11-12 22:19:15 +01:00
# customize-theme-controls . accordion-section-content {
2015-05-29 15:57:26 +02:00
position : absolute ;
top : 0 ;
2015-06-17 21:35:28 +02:00
right : 100 % ;
width : 100 % ;
margin : 0 ;
2015-11-04 19:53:26 +01:00
padding : 12px ;
2015-06-17 21:35:28 +02:00
-webkit-box-sizing : border-box ;
-moz-box-sizing : border-box ;
box-sizing : border-box ;
2013-11-12 22:19:15 +01:00
}
2015-05-29 15:57:26 +02:00
. customize-section-description-container {
margin-bottom : 15px ;
2014-08-12 03:18:15 +02:00
}
2015-05-29 15:57:26 +02:00
. customize-section-title {
2015-07-16 21:15:27 +02:00
margin : -12px -12px 0 -12px ;
2015-05-29 15:57:26 +02:00
border-bottom : 1px solid # ddd ;
background : # fff ;
}
2015-07-15 21:59:25 +02:00
div . customize-section-description {
margin-top : 22px ;
}
div . customize-section-description p : first-child {
margin-top : 0 ;
}
div . customize-section-description p : last-child {
margin-bottom : 0 ;
}
2015-05-29 15:57:26 +02:00
# customize-theme-controls . customize-themes-panel h3 . customize-section-title : first-child {
border-bottom : 1px solid # ddd ;
padding : 12px 12px 12px 12px ;
}
. ios # customize-theme-controls . customize-themes-panel h3 . customize-section-title : first-child {
padding : 12px 12px 13px 12px ;
}
. customize-section-title h3 ,
h3 . customize-section-title {
padding : 10px 14px 12px 10px ;
margin : 0 ;
line-height : 21px ;
2014-08-12 03:18:15 +02:00
color : # 555 ;
2014-06-26 22:17:15 +02:00
}
2015-05-29 15:57:26 +02:00
# customize-theme-controls {
position : relative ;
right : 0 ;
-webkit-transition : . 18s right ease-in-out ;
transition : . 18s right ease-in-out ;
}
. ios # customize-theme-controls {
-webkit-transition : right 0s ;
transition : right 0s ;
}
. section-open # customize-info ,
. section-open # customize-theme-controls {
right : -100 % ;
}
2014-06-26 22:17:15 +02:00
. accordion-sub-container . control-panel-content {
display : none ;
position : absolute ;
2016-07-06 13:32:27 +02:00
right : 100 % ;
2014-06-26 22:17:15 +02:00
top : 0 ;
2016-07-06 13:32:27 +02:00
width : 100 % ;
2014-06-26 22:17:15 +02:00
-webkit-transition : right ease-in-out . 18s ;
transition : right ease-in-out . 18s ;
}
2015-05-29 15:57:26 +02:00
. ios . accordion-sub-container . control-panel-content {
-webkit-transition : right 0s ;
transition : right 0s ;
}
2014-06-26 22:17:15 +02:00
. accordion-sub-container . control-panel-content . animating {
display : block ;
}
. current-panel . accordion-sub-container . control-panel-content {
width : 100 % ;
}
2014-07-08 20:19:14 +02:00
. customize-controls-close {
display : block ;
position : absolute ;
top : 0 ;
right : 0 ;
width : 45px ;
height : 45px ;
2015-04-02 19:16:28 +02:00
padding : 0 0 0 2px ;
2014-07-08 20:19:14 +02:00
background : # eee ;
2015-04-02 00:25:28 +02:00
border : none ;
2014-07-08 20:19:14 +02:00
border-left : 1px solid # ddd ;
color : # 444 ;
2015-04-02 19:16:28 +02:00
text-align : right ;
2014-07-08 20:19:14 +02:00
cursor : pointer ;
2014-08-03 00:02:19 +02:00
-webkit-transition : color . 1s ease-in-out , background . 1s ease-in-out ;
transition : color . 1s ease-in-out , background . 1s ease-in-out ;
2015-04-02 19:16:28 +02:00
-webkit-box-sizing : content-box ;
-moz-box-sizing : content-box ;
box-sizing : content-box ;
2014-07-08 20:19:14 +02:00
}
2015-05-29 15:57:26 +02:00
. customize-panel-back ,
. customize-section-back {
display : block ;
float : right ;
width : 48px ;
2015-11-04 19:53:26 +01:00
height : 71px ;
2015-05-29 15:57:26 +02:00
padding : 0 0 0 24px ;
margin : 0 ;
background : # fff ;
border : none ;
border-left : 1px solid # ddd ;
-webkit-box-shadow : none ;
box-shadow : none ;
cursor : pointer ;
-webkit-transition : right . 18s ease-in-out , color . 1s ease-in-out , background . 1s ease-in-out ;
transition : right . 18s ease-in-out , color . 1s ease-in-out , background . 1s ease-in-out ;
}
. customize-section-back {
2015-11-04 19:53:26 +01:00
height : 74px ;
2015-05-29 15:57:26 +02:00
}
. ios . customize-panel-back ,
. ios . customize-section-back {
2015-04-10 04:44:29 +02:00
-webkit-transition : right 0s ;
transition : right 0s ;
}
2015-05-29 15:57:26 +02:00
. ios . customize-panel-back {
2014-06-26 22:17:15 +02:00
display : none ;
}
2015-05-29 15:57:26 +02:00
. ios . expanded . in-sub-panel . customize-panel-back {
display : block ;
}
. panel-meta . customize-info . accordion-section-title {
margin-right : 48px ;
}
# customize-controls . panel-meta . customize-info . accordion-section-title : hover {
background : # fff ;
color : # 555 ;
}
2014-07-08 20:19:14 +02:00
. customize-controls-close : focus ,
. customize-controls-close : hover ,
2015-02-09 13:36:28 +01:00
. customize-controls-preview-toggle : focus ,
. customize-controls-preview-toggle : hover {
2014-08-25 23:58:17 +02:00
background : # ddd ;
border-color : # ccc ;
color : # 000 ;
2014-06-26 22:17:15 +02:00
outline : none ;
2014-07-08 20:19:14 +02:00
-webkit-box-shadow : none ;
box-shadow : none ;
}
2015-05-29 15:57:26 +02:00
. customize-panel-back : hover ,
. customize-panel-back : focus ,
. customize-section-back : hover ,
. customize-section-back : focus {
2015-06-17 23:07:27 +02:00
color : # 23282d ;
background : # f5f5f5 ;
2015-05-29 15:57:26 +02:00
outline : none ;
-webkit-box-shadow : none ;
box-shadow : none ;
}
2014-07-08 20:19:14 +02:00
. customize-controls-close : before {
2015-04-02 19:16:28 +02:00
font : normal 22px / 45px dashicons ;
2014-07-08 20:19:14 +02:00
content : "\f335" ;
position : relative ;
2015-04-02 19:16:28 +02:00
top : 1px ;
2014-08-25 23:58:17 +02:00
right : 13px ;
2014-06-26 22:17:15 +02:00
}
2015-05-29 15:57:26 +02:00
. customize-panel-back : before ,
. customize-section-back : before {
2015-11-04 19:53:26 +01:00
font : normal 20px / 72px dashicons ;
2015-05-29 15:57:26 +02:00
content : "\f345" ;
position : relative ;
right : 13px ;
}
2014-06-26 22:17:15 +02:00
. wp-full-overlay-sidebar . wp-full-overlay-header {
-webkit-transition : padding ease-in-out . 18s ;
transition : padding ease-in-out . 18s ;
}
. in-sub-panel . wp-full-overlay-sidebar . wp-full-overlay-header {
padding-right : 62px ;
}
# customize-info ,
# customize-theme-controls > ul > . accordion-section {
position : relative ;
right : 0 ;
-webkit-transition : right ease-in-out . 18s ;
transition : right ease-in-out . 18s ;
}
2015-04-10 04:44:29 +02:00
. ios # customize-info ,
. ios # customize-theme-controls > ul > . accordion-section {
-webkit-transition : right 0s ;
transition : right 0s ;
}
2014-06-26 22:17:15 +02:00
. in-sub-panel # customize-info ,
. in-sub-panel # customize-theme-controls > ul > . accordion-section {
2016-07-06 13:32:27 +02:00
right : -100 % ;
width : 100 % ;
2014-06-26 22:17:15 +02:00
}
. in-sub-panel # customize-theme-controls . accordion-section . current-panel {
width : 100 % ;
}
# customize-theme-controls . control-section . current-panel {
padding : 0 ;
}
# customize-theme-controls . control-section > h3 . accordion-section-title {
position : relative ;
right : 0 ;
}
# customize-theme-controls . control-section . current-panel > h3 . accordion-section-title {
2015-02-09 13:36:28 +01:00
right : -354px ;
2014-06-26 22:17:15 +02:00
-webkit-transition : right ease-in-out . 18s ;
transition : right ease-in-out . 18s ;
}
2015-04-10 04:44:29 +02:00
. ios # customize-theme-controls . control-section . current-panel > h3 . accordion-section-title {
-webkit-transition : right 0s ;
transition : right 0s ;
}
2015-07-03 22:19:25 +02:00
. wp-full-overlay . section-open # customize-controls . wp-full-overlay-sidebar-content {
visibility : hidden ;
overflow-y : hidden ;
}
. wp-full-overlay . section-open . wp-full-overlay-sidebar-content . accordion-section . open {
visibility : visible ;
}
. wp-full-overlay . section-open . wp-full-overlay-sidebar-content . accordion-section . open . accordion-section-content {
overflow-y : auto ;
}
2014-06-30 17:55:17 +02:00
p . customize-section-description {
font-style : normal ;
2015-05-29 15:57:26 +02:00
margin-top : 22px ;
margin-bottom : 0 ;
2014-06-30 17:55:17 +02:00
}
2012-08-23 02:04:18 +02:00
. customize-control {
2013-11-12 22:19:15 +01:00
width : 100 % ;
2012-08-23 02:04:18 +02:00
float : right ;
2013-11-12 22:19:15 +01:00
clear : both ;
2015-05-29 15:57:26 +02:00
margin-bottom : 12px ;
2013-11-12 22:19:15 +01:00
}
. customize-control select ,
. customize-control input [ type = "radio" ] ,
. customize-control input [ type = "checkbox" ] {
line-height : 28px ;
}
2014-06-30 21:48:13 +02:00
. customize-control input [ type = "text" ] ,
. customize-control input [ type = "password" ] ,
. customize-control input [ type = "email" ] ,
. customize-control input [ type = "number" ] ,
. customize-control input [ type = "search" ] ,
. customize-control input [ type = "tel" ] ,
. customize-control input [ type = "url" ] {
Customize: Add setting validation model and control notifications to augment setting sanitization.
When a setting is invalid, not only will it be blocked from being saved but all other settings will be blocked as well. This ensures that Customizer saves aren't partial but are more transactional. User will be displayed the error in a notification so that they can fix and re-attempt saving.
PHP changes:
* Introduces `WP_Customize_Setting::validate()`, `WP_Customize_Setting::$validate_callback`, and the `customize_validate_{$setting_id}` filter.
* Introduces `WP_Customize_Manager::validate_setting_values()` to do validation (and sanitization) for the setting values supplied, returning a list of `WP_Error` instances for invalid settings.
* Attempting to save settings that are invalid will result in the save being blocked entirely, with the errors being sent in the `customize_save_response`. Modifies `WP_Customize_Manager::save()` to check all settings for validity issues prior to calling their `save` methods.
* Introduces `WP_Customize_Setting::json()` for parity with the other Customizer classes. This includes exporting of the `type`.
* Modifies `WP_Customize_Manager::post_value()` to apply `validate` after `sanitize`, and if validation fails, to return the `$default`.
* Introduces `customize_save_validation_before` action which fires right before the validation checks are made prior to saving.
JS changes:
* Introduces `wp.customize.Notification` in JS which to represent `WP_Error` instances returned from the server when setting validation fails.
* Introduces `wp.customize.Setting.prototype.notifications`.
* Introduces `wp.customize.Control.prototype.notifications`, which are synced with a control's settings' notifications.
* Introduces `wp.customize.Control.prototype.renderNotifications()` to re-render a control's notifications in its notification area. This is called automatically when the notifications collection changes.
* Introduces `wp.customize.settingConstructor`, allowing custom setting types to be used in the same way that custom controls, panels, and sections can be made.
* Injects a notification area into existing controls which is populated in response to the control's `notifications` collection changing. A custom control can customize the placement of the notification area by overriding the new `getNotificationsContainerElement` method.
* When a save fails due to setting invalidity, the invalidity errors will be added to the settings to then populate in the controls' notification areas, and the first such invalid control will be focused.
Props westonruter, celloexpressions, mrahmadawais.
See #35210.
See #30937.
Fixes #34893.
Built from https://develop.svn.wordpress.org/trunk@37476
git-svn-id: http://core.svn.wordpress.org/trunk@37444 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-05-20 23:10:27 +02:00
width : 100 % ;
2013-11-12 22:19:15 +01:00
line-height : 18px ;
margin : 0 ;
}
2015-02-14 09:46:27 +01:00
. customize-control-hidden {
margin : 0 ;
}
2014-06-30 21:48:13 +02:00
. customize-control-textarea textarea {
width : 100 % ;
resize : vertical ;
}
2013-11-12 22:19:15 +01:00
. customize-control select {
min-width : 50 % ;
max-width : 100 % ;
height : 28px ;
line-height : 28px ;
}
2014-04-05 15:12:15 +02:00
. customize-control select [ multiple ] {
height : auto ;
}
2013-11-12 22:19:15 +01:00
. customize-control-title {
display : block ;
font-size : 14px ;
line-height : 24px ;
font-weight : 600 ;
2016-05-12 22:23:54 +02:00
margin-bottom : 4px ;
2013-11-12 22:19:15 +01:00
}
2014-06-30 17:55:17 +02:00
. customize-control-description {
display : block ;
font-style : italic ;
line-height : 18px ;
margin-bottom : 5px ;
}
2013-11-12 22:19:15 +01:00
. customize-control-color . color-picker ,
. customize-control-upload div {
line-height : 28px ;
2012-08-23 02:04:18 +02:00
}
2015-11-16 05:44:26 +01:00
. customize-control-radio label ,
2015-11-11 10:37:27 +01:00
. customize-control-checkbox label ,
. customize-control-nav_menu_auto_add label {
line-height : 20px ;
display : block ;
margin-right : 24px ;
2015-11-16 05:44:26 +01:00
padding-top : 6px ;
padding-bottom : 6px ;
2015-11-11 10:37:27 +01:00
}
2015-11-16 05:44:26 +01:00
. customize-control-radio input ,
2015-11-11 10:37:27 +01:00
. customize-control-checkbox input ,
. customize-control-nav_menu_auto_add input {
margin-left : 4px ;
margin-right : -24px ;
2012-08-23 02:04:18 +02:00
}
2013-11-12 22:19:15 +01:00
. customize-control-radio {
padding : 5px 0 10px ;
}
. customize-control-radio . customize-control-title {
margin-bottom : 0 ;
line-height : 22px ;
}
2014-06-30 17:55:17 +02:00
. customize-control-radio . customize-control-title + . customize-control-description {
margin-top : 7px ;
}
2014-11-12 00:52:22 +01:00
. customize-control . attachment-thumb . type-icon {
float : right ;
2014-12-02 22:55:23 +01:00
margin : 10px ;
width : auto ;
2014-11-12 00:52:22 +01:00
}
. customize-control . attachment-title {
2016-06-17 20:37:28 +02:00
font-weight : 600 ;
2014-12-02 22:55:23 +01:00
margin : 0 ;
padding : 5px 10px ;
2014-11-12 00:52:22 +01:00
}
2014-12-04 02:59:22 +01:00
. customize-control . attachment-meta {
white-space : nowrap ;
overflow : hidden ;
text-overflow : ellipsis ;
margin : 0 ;
2015-03-07 12:06:29 +01:00
padding : 0 10px ;
2014-12-04 02:59:22 +01:00
}
. customize-control . attachment-meta-title {
padding-top : 7px ;
}
2014-12-02 22:55:23 +01:00
. customize-control . thumbnail-image {
line-height : 0 ;
2014-11-12 00:52:22 +01:00
}
. customize-control . thumbnail-image img {
cursor : pointer ;
}
2015-03-07 12:06:29 +01:00
# customize-controls . thumbnail-audio . thumbnail {
max-width : 64px ;
max-height : 64px ;
margin : 10px ;
float : right ;
}
2013-11-12 22:19:15 +01:00
# customize-preview iframe {
width : 100 % ;
height : 100 % ;
2016-02-16 02:57:26 +01:00
position : absolute ;
2013-11-12 22:19:15 +01:00
}
2016-03-23 01:53:28 +01:00
# customize-preview iframe + iframe {
visibility : hidden ;
}
2013-11-12 22:19:15 +01:00
. wp-full-overlay-sidebar {
2015-05-29 15:57:26 +02:00
background : # eee ;
2013-11-14 17:42:10 +01:00
border-left : 1px solid # ddd ;
2013-11-12 22:19:15 +01:00
}
Customize: Add setting validation model and control notifications to augment setting sanitization.
When a setting is invalid, not only will it be blocked from being saved but all other settings will be blocked as well. This ensures that Customizer saves aren't partial but are more transactional. User will be displayed the error in a notification so that they can fix and re-attempt saving.
PHP changes:
* Introduces `WP_Customize_Setting::validate()`, `WP_Customize_Setting::$validate_callback`, and the `customize_validate_{$setting_id}` filter.
* Introduces `WP_Customize_Manager::validate_setting_values()` to do validation (and sanitization) for the setting values supplied, returning a list of `WP_Error` instances for invalid settings.
* Attempting to save settings that are invalid will result in the save being blocked entirely, with the errors being sent in the `customize_save_response`. Modifies `WP_Customize_Manager::save()` to check all settings for validity issues prior to calling their `save` methods.
* Introduces `WP_Customize_Setting::json()` for parity with the other Customizer classes. This includes exporting of the `type`.
* Modifies `WP_Customize_Manager::post_value()` to apply `validate` after `sanitize`, and if validation fails, to return the `$default`.
* Introduces `customize_save_validation_before` action which fires right before the validation checks are made prior to saving.
JS changes:
* Introduces `wp.customize.Notification` in JS which to represent `WP_Error` instances returned from the server when setting validation fails.
* Introduces `wp.customize.Setting.prototype.notifications`.
* Introduces `wp.customize.Control.prototype.notifications`, which are synced with a control's settings' notifications.
* Introduces `wp.customize.Control.prototype.renderNotifications()` to re-render a control's notifications in its notification area. This is called automatically when the notifications collection changes.
* Introduces `wp.customize.settingConstructor`, allowing custom setting types to be used in the same way that custom controls, panels, and sections can be made.
* Injects a notification area into existing controls which is populated in response to the control's `notifications` collection changing. A custom control can customize the placement of the notification area by overriding the new `getNotificationsContainerElement` method.
* When a save fails due to setting invalidity, the invalidity errors will be added to the settings to then populate in the controls' notification areas, and the first such invalid control will be focused.
Props westonruter, celloexpressions, mrahmadawais.
See #35210.
See #30937.
Fixes #34893.
Built from https://develop.svn.wordpress.org/trunk@37476
git-svn-id: http://core.svn.wordpress.org/trunk@37444 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-05-20 23:10:27 +02:00
/ * *
* Notifications
* /
# customize-controls . customize-control-notifications-container { /* Scoped to #customize-controls for specificity over notification styles in common.css. */
margin : 4px 0 8px 0 ;
padding : 0 ;
display : none ;
cursor : default ;
}
# customize-controls . customize-control-widget_form . has-error . widget . widget-top ,
. customize-control-nav_menu_item . has-error . menu-item-bar . menu-item-handle {
2016-05-27 07:15:28 +02:00
-webkit-box-shadow : inset 0 0 0 2px # dc3232 ;
Customize: Add setting validation model and control notifications to augment setting sanitization.
When a setting is invalid, not only will it be blocked from being saved but all other settings will be blocked as well. This ensures that Customizer saves aren't partial but are more transactional. User will be displayed the error in a notification so that they can fix and re-attempt saving.
PHP changes:
* Introduces `WP_Customize_Setting::validate()`, `WP_Customize_Setting::$validate_callback`, and the `customize_validate_{$setting_id}` filter.
* Introduces `WP_Customize_Manager::validate_setting_values()` to do validation (and sanitization) for the setting values supplied, returning a list of `WP_Error` instances for invalid settings.
* Attempting to save settings that are invalid will result in the save being blocked entirely, with the errors being sent in the `customize_save_response`. Modifies `WP_Customize_Manager::save()` to check all settings for validity issues prior to calling their `save` methods.
* Introduces `WP_Customize_Setting::json()` for parity with the other Customizer classes. This includes exporting of the `type`.
* Modifies `WP_Customize_Manager::post_value()` to apply `validate` after `sanitize`, and if validation fails, to return the `$default`.
* Introduces `customize_save_validation_before` action which fires right before the validation checks are made prior to saving.
JS changes:
* Introduces `wp.customize.Notification` in JS which to represent `WP_Error` instances returned from the server when setting validation fails.
* Introduces `wp.customize.Setting.prototype.notifications`.
* Introduces `wp.customize.Control.prototype.notifications`, which are synced with a control's settings' notifications.
* Introduces `wp.customize.Control.prototype.renderNotifications()` to re-render a control's notifications in its notification area. This is called automatically when the notifications collection changes.
* Introduces `wp.customize.settingConstructor`, allowing custom setting types to be used in the same way that custom controls, panels, and sections can be made.
* Injects a notification area into existing controls which is populated in response to the control's `notifications` collection changing. A custom control can customize the placement of the notification area by overriding the new `getNotificationsContainerElement` method.
* When a save fails due to setting invalidity, the invalidity errors will be added to the settings to then populate in the controls' notification areas, and the first such invalid control will be focused.
Props westonruter, celloexpressions, mrahmadawais.
See #35210.
See #30937.
Fixes #34893.
Built from https://develop.svn.wordpress.org/trunk@37476
git-svn-id: http://core.svn.wordpress.org/trunk@37444 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-05-20 23:10:27 +02:00
box-shadow : inset 0 0 0 2px # dc3232 ;
2016-05-27 07:15:28 +02:00
-webkit-transition : . 15s box-shadow linear ;
Customize: Add setting validation model and control notifications to augment setting sanitization.
When a setting is invalid, not only will it be blocked from being saved but all other settings will be blocked as well. This ensures that Customizer saves aren't partial but are more transactional. User will be displayed the error in a notification so that they can fix and re-attempt saving.
PHP changes:
* Introduces `WP_Customize_Setting::validate()`, `WP_Customize_Setting::$validate_callback`, and the `customize_validate_{$setting_id}` filter.
* Introduces `WP_Customize_Manager::validate_setting_values()` to do validation (and sanitization) for the setting values supplied, returning a list of `WP_Error` instances for invalid settings.
* Attempting to save settings that are invalid will result in the save being blocked entirely, with the errors being sent in the `customize_save_response`. Modifies `WP_Customize_Manager::save()` to check all settings for validity issues prior to calling their `save` methods.
* Introduces `WP_Customize_Setting::json()` for parity with the other Customizer classes. This includes exporting of the `type`.
* Modifies `WP_Customize_Manager::post_value()` to apply `validate` after `sanitize`, and if validation fails, to return the `$default`.
* Introduces `customize_save_validation_before` action which fires right before the validation checks are made prior to saving.
JS changes:
* Introduces `wp.customize.Notification` in JS which to represent `WP_Error` instances returned from the server when setting validation fails.
* Introduces `wp.customize.Setting.prototype.notifications`.
* Introduces `wp.customize.Control.prototype.notifications`, which are synced with a control's settings' notifications.
* Introduces `wp.customize.Control.prototype.renderNotifications()` to re-render a control's notifications in its notification area. This is called automatically when the notifications collection changes.
* Introduces `wp.customize.settingConstructor`, allowing custom setting types to be used in the same way that custom controls, panels, and sections can be made.
* Injects a notification area into existing controls which is populated in response to the control's `notifications` collection changing. A custom control can customize the placement of the notification area by overriding the new `getNotificationsContainerElement` method.
* When a save fails due to setting invalidity, the invalidity errors will be added to the settings to then populate in the controls' notification areas, and the first such invalid control will be focused.
Props westonruter, celloexpressions, mrahmadawais.
See #35210.
See #30937.
Fixes #34893.
Built from https://develop.svn.wordpress.org/trunk@37476
git-svn-id: http://core.svn.wordpress.org/trunk@37444 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-05-20 23:10:27 +02:00
transition : . 15s box-shadow linear ;
}
. customize-control-notifications-container li . notice {
list-style : none ;
margin : 0 0 6px 0 ;
padding : 4px 8px ;
}
. customize-control-notifications-container li . notice : last-child {
margin-bottom : 0 ;
}
# customize-controls . customize-control-nav_menu_item . customize-control-notifications-container {
margin-top : 0 ;
}
# customize-controls . customize-control-widget_form . customize-control-notifications-container {
margin-top : 8px ;
}
. customize-control-text . has-error input {
outline : 2px solid # dc3232 ;
}
2013-11-12 22:19:15 +01:00
/* Style for custom settings */
2015-10-20 22:15:26 +02:00
/ * *
2012-08-23 02:04:18 +02:00
* Dropdowns
* /
2015-10-20 22:15:26 +02:00
2013-03-22 18:46:48 +01:00
. accordion-section . dropdown {
2012-08-23 02:04:18 +02:00
float : right ;
2013-11-12 22:19:15 +01:00
display : block ;
position : relative ;
cursor : pointer ;
2012-08-23 02:04:18 +02:00
}
2013-03-22 18:46:48 +01:00
. accordion-section . dropdown-content {
2013-11-12 22:19:15 +01:00
overflow : hidden ;
2012-08-23 02:04:18 +02:00
float : right ;
2013-11-12 22:19:15 +01:00
min-width : 30px ;
height : 16px ;
line-height : 16px ;
2012-08-23 02:04:18 +02:00
margin-left : 16px ;
2013-11-12 22:19:15 +01:00
padding : 4px 5px ;
2015-05-29 15:57:26 +02:00
border : 2px solid # eee ;
2013-11-12 22:19:15 +01:00
-webkit-user-select : none ;
-moz-user-select : none ;
2014-02-13 09:30:17 +01:00
-ms-user-select : none ;
2013-11-12 22:19:15 +01:00
user-select : none ;
2012-08-23 02:04:18 +02:00
}
2016-03-10 22:44:26 +01:00
/* @todo maybe no more used? */
2012-08-23 02:04:18 +02:00
. customize-control . dropdown-arrow {
2013-11-12 22:19:15 +01:00
position : absolute ;
top : 0 ;
bottom : 0 ;
2012-08-23 02:04:18 +02:00
left : 0 ;
2013-11-12 22:19:15 +01:00
width : 20px ;
2015-05-29 15:57:26 +02:00
background : # eee ;
2012-08-23 02:04:18 +02:00
}
. customize-control . dropdown-arrow : after {
2013-11-12 22:19:15 +01:00
content : "\f140" ;
2015-09-05 21:57:25 +02:00
font : normal 20px / 1 dashicons ;
2013-11-12 22:19:15 +01:00
speak : none ;
display : block ;
padding : 0 ;
text-indent : 0 ;
text-align : center ;
position : relative ;
-webkit-font-smoothing : antialiased ;
-moz-osx-font-smoothing : grayscale ;
text-decoration : none ! important ;
2015-04-05 23:20:27 +02:00
color : # 32373c ;
2013-11-12 22:19:15 +01:00
}
. customize-control . dropdown-status {
2015-04-05 23:20:27 +02:00
color : # 32373c ;
2015-05-29 15:57:26 +02:00
background : # eee ;
2013-11-12 22:19:15 +01:00
display : none ;
max-width : 112px ;
}
/* Color Picker */
. customize-control-color . color-picker-hex {
display : none ;
}
. customize-control-color . open . color-picker-hex {
display : block ;
2012-08-23 02:04:18 +02:00
}
. customize-control-color . dropdown {
margin-left : 5px ;
2013-11-12 22:19:15 +01:00
margin-bottom : 5px ;
}
. customize-control-color . dropdown . dropdown-content {
2015-05-29 15:57:26 +02:00
background-color : # 555 ;
2013-11-12 22:19:15 +01:00
border : 1px solid rgba ( 0 , 0 , 0 , 0 . 15 ) ;
}
. customize-control-color . dropdown : hover . dropdown-content {
border-color : rgba ( 0 , 0 , 0 , 0 . 25 ) ;
}
/ * *
* iOS can ' t scroll iframes ,
* instead it expands the iframe size to match the size of the content
* /
2015-10-20 22:15:26 +02:00
2013-11-12 22:19:15 +01:00
. ios . wp-full-overlay {
position : relative ;
}
. ios # customize-controls . wp-full-overlay-sidebar-content {
-webkit-overflow-scrolling : touch ;
}
2015-10-20 22:15:26 +02:00
/* Media controls */
2014-03-11 05:13:16 +01:00
2016-05-12 22:23:54 +02:00
. customize-control . attachment-media-view . actions {
margin-top : 8px ;
}
2014-12-02 22:55:23 +01:00
. customize-control-header . current {
2014-03-11 05:13:16 +01:00
margin-bottom : 8px ;
}
2014-12-02 22:55:23 +01:00
. customize-control-header . uploaded {
2014-03-11 05:13:16 +01:00
margin-bottom : 18px ;
}
2014-12-02 22:55:23 +01:00
. customize-control-header . uploaded button : not ( . random ) ,
. customize-control-header . default button : not ( . random ) {
2014-04-04 17:49:15 +02:00
width : 100 % ;
padding : 0 ;
margin : 0 ;
background : none ;
border : none ;
color : inherit ;
cursor : pointer ;
}
2014-12-02 22:55:23 +01:00
. customize-control-header button img {
2014-04-04 17:49:15 +02:00
display : block ;
}
2016-05-12 22:23:54 +02:00
. customize-control . attachment-media-view . remove-button ,
. customize-control . attachment-media-view . default-button ,
. customize-control . attachment-media-view . upload-button ,
2014-12-02 22:55:23 +01:00
. customize-control-header button . new ,
. customize-control-header button . remove {
2014-04-12 20:40:14 +02:00
white-space : normal ;
width : 48 % ;
height : auto ;
}
2016-05-12 22:23:54 +02:00
. customize-control . attachment-media-view . thumbnail ,
2014-12-02 22:55:23 +01:00
. customize-control-header . current . container {
2014-03-11 05:13:16 +01:00
overflow : hidden ;
2014-12-02 22:55:23 +01:00
}
2016-05-12 22:23:54 +02:00
. customize-control . attachment-media-view . placeholder ,
2014-12-02 22:55:23 +01:00
. customize-control-header . placeholder {
2014-03-11 05:13:16 +01:00
width : 100 % ;
position : relative ;
text-align : center ;
cursor : default ;
2016-02-23 18:27:26 +01:00
border : 1px dashed # b4b9be ;
-webkit-box-sizing : border-box ;
-moz-box-sizing : border-box ;
box-sizing : border-box ;
2016-05-12 22:23:54 +02:00
padding : 9px 0 ;
line-height : 20px ;
2014-03-11 05:13:16 +01:00
}
2014-12-02 22:55:23 +01:00
. customize-control-header . inner {
2014-03-11 05:13:16 +01:00
display : none ;
position : absolute ;
width : 100 % ;
2014-04-04 17:49:15 +02:00
color : # 555 ;
white-space : nowrap ;
text-overflow : ellipsis ;
overflow : hidden ;
2014-03-11 05:13:16 +01:00
}
2014-12-02 22:55:23 +01:00
. customize-control-header . inner ,
. customize-control-header . inner . dashicons {
2014-04-04 17:49:15 +02:00
line-height : 20px ;
2016-02-23 18:27:26 +01:00
top : 8px ;
2014-04-04 17:49:15 +02:00
}
2014-12-02 22:55:23 +01:00
. customize-control-header . list . inner ,
. customize-control-header . list . inner . dashicons {
2014-04-04 17:49:15 +02:00
top : 9px ;
}
2014-03-11 05:13:16 +01:00
2014-12-02 22:55:23 +01:00
. customize-control-header . header-view {
2014-03-11 05:13:16 +01:00
position : relative ;
2014-04-04 17:49:15 +02:00
width : 100 % ;
margin-bottom : 5px ;
2014-03-11 05:13:16 +01:00
}
2014-12-02 22:55:23 +01:00
. customize-control-header . header-view : last-child {
2014-04-04 17:49:15 +02:00
margin-bottom : 0px ;
}
/* Convoluted, but 'outline' support isn't good enough yet */
2014-12-02 22:55:23 +01:00
. customize-control-header . header-view : after {
2014-04-04 17:49:15 +02:00
border : 0 ;
}
2014-12-02 22:55:23 +01:00
. customize-control-header . header-view . selected : after {
2014-04-04 17:49:15 +02:00
content : '' ;
position : absolute ;
2014-04-12 20:40:14 +02:00
height : auto ;
2014-04-04 17:49:15 +02:00
top : 0 ; right : 0 ; bottom : 0 ; left : 0 ;
2015-04-05 23:20:27 +02:00
border : 4px solid # 00a0d2 ;
2014-04-05 03:29:14 +02:00
-webkit-border-radius : 2px ;
2014-04-04 17:49:15 +02:00
border-radius : 2px ;
}
2014-12-02 22:55:23 +01:00
. customize-control-header . header-view . button . selected {
2014-04-04 17:49:15 +02:00
border : 0 ;
}
/* Header control: overlay "close" button */
2014-12-02 22:55:23 +01:00
. customize-control-header . uploaded . header-view . close {
2015-05-06 12:54:27 +02:00
font-size : 20px ;
color : # fff ;
background : # 555 ;
background : rgba ( 0 , 0 , 0 , 0 . 5 ) ;
2014-03-11 05:13:16 +01:00
position : absolute ;
top : 10px ;
2015-05-06 12:54:27 +02:00
left : -999px ;
2014-03-11 05:13:16 +01:00
z-index : 1 ;
2015-05-06 12:54:27 +02:00
width : 26px ;
height : 26px ;
2014-03-11 05:13:16 +01:00
cursor : pointer ;
}
2015-05-06 12:54:27 +02:00
. customize-control-header . header-view : hover . close ,
. customize-control-header . header-view . close : focus {
left : 10px ;
2014-03-11 05:13:16 +01:00
}
/* Header control: randomiz(s)er */
2014-12-02 22:55:23 +01:00
. customize-control-header . random . placeholder {
2014-03-11 05:13:16 +01:00
cursor : pointer ;
2014-03-27 20:17:15 +01:00
-webkit-border-radius : 2px ;
2014-03-11 05:13:16 +01:00
border-radius : 2px ;
height : 40px ;
}
2014-12-02 22:55:23 +01:00
. customize-control-header button . random {
2014-04-06 21:28:16 +02:00
width : 100 % ;
2014-04-12 20:40:14 +02:00
height : auto ;
min-height : 40px ;
white-space : normal ;
2014-04-06 21:28:16 +02:00
}
2014-12-02 22:55:23 +01:00
. customize-control-header button . random . dice {
2014-04-06 21:28:16 +02:00
margin-top : 4px ;
2014-03-11 05:13:16 +01:00
}
2014-12-02 22:55:23 +01:00
. customize-control-header . placeholder : hover . dice ,
. customize-control-header . header-view : hover > button . random . dice {
2014-03-11 05:13:16 +01:00
-webkit-animation : dice-color-change 3s infinite ;
animation : dice-color-change 3s infinite ;
}
@ -webkit-keyframes dice-color-change {
0 % { color : #d4b146 ; }
50 % { color : #ef54b0 ; }
75 % { color : #7190d3 ; }
100 % { color : #d4b146 ; }
}
@ keyframes dice-color-change {
0 % { color : #d4b146 ; }
50 % { color : #ef54b0 ; }
75 % { color : #7190d3 ; }
100 % { color : #d4b146 ; }
}
2014-12-02 22:55:23 +01:00
. customize-control-header . choice {
2014-03-11 05:13:16 +01:00
position : relative ;
display : block ;
margin-bottom : 9px ;
}
2014-12-02 22:55:23 +01:00
. customize-control-header . uploaded div : last-child > . choice {
2014-03-11 05:13:16 +01:00
margin-bottom : 0 ;
}
2016-05-12 22:23:54 +02:00
. customize-control . attachment-media-view . thumbnail-image img ,
2014-12-02 22:55:23 +01:00
. customize-control-header img {
2016-07-04 23:45:28 +02:00
max-width : 100 % ;
2014-03-11 05:13:16 +01:00
}
2016-05-12 22:23:54 +02:00
. customize-control . attachment-media-view . remove-button ,
. customize-control . attachment-media-view . default-button ,
2014-12-02 22:55:23 +01:00
. customize-control-header . remove {
2014-03-11 05:13:16 +01:00
float : right ;
margin-left : 3px ;
}
2016-05-12 22:23:54 +02:00
. customize-control . attachment-media-view . upload-button ,
2014-12-02 22:55:23 +01:00
. customize-control-header . new {
2014-03-11 05:13:16 +01:00
float : left ;
}
2015-02-24 21:31:24 +01:00
/ * *
* Themes
* /
2015-10-20 22:15:26 +02:00
2015-02-24 21:31:24 +01:00
@ -webkit-keyframes customize-reload {
0 % { opacity : 0 ; }
100 % { opacity : 1 ; }
}
@ keyframes customize-reload {
0 % { opacity : 0 ; }
100 % { opacity : 1 ; }
}
/* #customize-container is reused from customize-loader.js, hence the naming. */
. wp-customizer . customize-loading # customize-container {
display : block ;
2015-02-27 14:41:30 +01:00
-webkit-animation : customize-reload . 75s ; /* Can't use `transition` because `display` changes here. */
2015-02-24 21:31:24 +01:00
animation : customize-reload . 75s ;
}
2015-04-02 00:51:27 +02:00
. control-section-themes . accordion-section-title {
cursor : default ;
}
# customize-theme-controls . control-section-themes . accordion-section-title : hover ,
# customize-theme-controls . control-section-themes . accordion-section-title : focus {
2015-05-29 15:57:26 +02:00
color : # 555 ;
2015-04-02 00:51:27 +02:00
background-color : # fff ;
}
. control-section-themes . accordion-section-title {
margin : 15px 0 ;
}
. customize-themes-panel . accordion-section-title {
margin : 15px -8px ;
}
. control-section-themes . accordion-section-title {
padding-left : 100px ; /* Space for the button */
}
2015-05-29 15:57:26 +02:00
. control-section-themes . accordion-section-title span . customize-action ,
# customize-controls . customize-section-title span . customize-action {
font-size : 13px ;
2015-04-02 00:51:27 +02:00
display : block ;
font-weight : 400 ;
}
. control-section-themes . accordion-section-title . change-theme ,
. control-section-themes . accordion-section-title . customize-theme {
position : absolute ;
left : 10px ;
top : 50 % ;
margin-top : -14px ;
2016-06-17 20:37:28 +02:00
font-weight : 400 ;
2015-04-02 00:51:27 +02:00
}
2015-05-29 15:57:26 +02:00
. control-section-themes . accordion-section-title : before {
display : none ;
}
2015-02-24 21:31:24 +01:00
. customize-themes-panel {
display : none ;
padding : 0 8px ;
background : # f1f1f1 ;
-webkit-box-sizing : border-box ;
-moz-box-sizing : border-box ;
2015-04-02 00:51:27 +02:00
box-sizing : border-box ;
}
2015-05-29 15:57:26 +02:00
. customize-themes-panel . accordion-section-title : first-child {
margin-top : 0 ;
}
# customize-controls . customize-themes-panel . accordion-section-title : nth-child ( 2 ) {
font-size : 14px ;
font-weight : 600 ;
}
2015-04-02 00:51:27 +02:00
. customize-themes-panel > h2 {
padding : 15px 8px 0 8px ;
2015-02-24 21:31:24 +01:00
}
. control-section . open . customize-themes-panel {
display : block ;
}
# customize-theme-controls . customize-themes-panel . accordion-section-content {
background : transparent ;
display : block ;
}
. customize-control . customize-control-theme {
margin-bottom : 8px ;
}
2015-05-29 15:57:26 +02:00
# customize-theme-controls . themes . accordion-section-content {
position : relative ;
right : 0 ;
padding : 0 ;
width : 100 % ;
}
2015-02-24 21:31:24 +01:00
. wp-customizer . theme-browser . themes {
padding-bottom : 8px ;
}
. wp-customizer . theme-browser . theme {
margin : 0 ;
width : 100 % ;
}
. wp-customizer . theme-browser . theme . theme-actions {
-ms-filter : "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)" ;
opacity : 1 ;
}
# customize-controls h3 . theme-name {
font-size : 15px ;
}
2015-03-25 23:58:27 +01:00
# customize-controls . theme-overlay . theme-name {
font-size : 32px ;
}
2015-02-24 21:31:24 +01:00
. wp-customizer # themes-filter {
2015-03-28 22:03:27 +01:00
font-size : 16px ;
font-weight : 300 ;
line-height : 1 . 5 ;
2015-02-24 21:31:24 +01:00
width : 100 % ;
}
# accordion-section-themes . accordion-section-title : after {
2015-04-02 00:51:27 +02:00
display : none ;
2015-02-24 21:31:24 +01:00
}
2015-03-25 23:58:27 +01:00
# customize-theme-controls . control-section-themes . current-panel > h3 . accordion-section-title {
2015-02-24 21:31:24 +01:00
right : 0 ;
}
. customize-themes-panel . control-panel-content {
position : absolute ;
right : -100 % ;
top : 0 ;
width : 100 % ;
border-top : 1px solid # ddd ;
}
. in-themes-panel # customize-info ,
. in-themes-panel # customize-theme-controls > ul > . accordion-section {
right : 100 % ;
}
/* Details View */
. wp-customizer . theme-overlay {
display : none ;
}
. wp-customizer . modal-open . theme-overlay {
position : fixed ;
right : 0 ;
top : 0 ;
left : 0 ;
bottom : 0 ;
z-index : 109 ;
}
. wp-customizer . theme-overlay . theme-backdrop {
background : rgba ( 238 , 238 , 238 , 0 . 75 ) ;
position : fixed ;
z-index : 110 ;
}
. wp-customizer . theme-overlay . theme-wrap {
right : 90px ;
left : 90px ;
top : 45px ;
bottom : 45px ;
z-index : 120 ;
max-width : 1740px ; /* To ensure that theme screenshots are not displayed larger than 880px wide. */
}
. wp-customizer . theme-overlay . theme-actions {
text-align : left ; /* Because there's only one action, match the pattern of media modals and right-align the action. */
}
. modal-open . in-themes-panel # customize-controls . wp-full-overlay-sidebar-content {
overflow : visible ; /* Prevent the top-level Customizer controls from becoming visible when elements on the right of the details modal are focused. */
}
2015-04-22 20:57:25 +02:00
. ie8 . wp-customizer . theme-overlay . theme-header ,
. ie8 . wp-customizer . theme-overlay . theme-about ,
. ie8 . wp-customizer . theme-overlay . theme-actions {
position : static ;
}
2015-02-24 21:31:24 +01:00
/* Small Screens */
@ media ( max-width : 850px ) , ( max-height : 472px ) {
. wp-customizer . theme-overlay . theme-wrap {
right : 0 ;
left : 0 ;
top : 0 ;
bottom : 0 ;
2015-02-27 21:19:29 +01:00
}
2015-02-24 21:31:24 +01:00
}
2015-04-02 00:51:27 +02:00
/* Handle cheaters. */
2013-11-12 22:19:15 +01:00
body . cheatin {
2014-03-30 00:19:15 +01:00
font-size : medium ;
height : auto ;
background : # fff ;
margin : 50px auto 2em ;
padding : 1em 2em ;
max-width : 700px ;
2013-11-12 22:19:15 +01:00
min-width : 0 ;
2014-03-30 00:19:15 +01:00
-webkit-box-shadow : 0 1px 3px rgba ( 0 , 0 , 0 , 0 . 13 ) ;
box-shadow : 0 1px 3px rgba ( 0 , 0 , 0 , 0 . 13 ) ;
2013-11-12 22:19:15 +01:00
}
2015-09-04 05:40:25 +02:00
body . cheatin h1 {
2016-02-18 23:30:27 +01:00
border-bottom : 1px solid # ddd ;
2015-09-04 05:40:25 +02:00
clear : both ;
color : # 666 ;
2016-05-17 03:45:27 +02:00
font-size : 24px ;
2016-07-26 18:39:30 +02:00
font-family : -apple-system , BlinkMacSystemFont , "Segoe UI" , Roboto , Oxygen-Sans , Ubuntu , Cantarell , "Helvetica Neue" , sans-serif ;
2015-09-04 05:40:25 +02:00
margin : 30px 0 0 0 ;
padding : 0 ;
padding-bottom : 7px ;
}
2013-11-12 22:19:15 +01:00
body . cheatin p {
font-size : 14px ;
2014-03-30 00:19:15 +01:00
line-height : 1 . 5 ;
margin : 25px 0 20px ;
2012-08-23 02:04:18 +02:00
}
2015-02-09 13:36:28 +01:00
2015-10-20 22:15:26 +02:00
/ * *
* Widgets and Menus common styles
* /
/* higher specificity than .wp-core-ui .button-secondary */
# customize-theme-controls . add-new-widget ,
# customize-theme-controls . add-new-menu-item {
cursor : pointer ;
float : left ;
margin-right : 10px ;
-webkit-transition : all 0 . 2s ;
transition : all 0 . 2s ;
-webkit-user-select : none ;
-moz-user-select : none ;
-ms-user-select : none ;
user-select : none ;
outline : none ;
}
. reordering . add-new-widget ,
. reordering . add-new-menu-item {
opacity : 0 . 2 ;
pointer-events : none ;
cursor : not-allowed ; /* doesn't work in conjunction with pointer-events */
}
. add-new-widget : before ,
. add-new-menu-item : before {
content : "\f132" ;
display : inline-block ;
position : relative ;
right : -2px ;
top : -1px ;
font : normal 20px / 1 dashicons ;
vertical-align : middle ;
-webkit-transition : all 0 . 2s ;
transition : all 0 . 2s ;
-webkit-font-smoothing : antialiased ;
-moz-osx-font-smoothing : grayscale ;
}
/* Reordering */
. reorder-toggle {
2016-02-23 18:54:26 +01:00
color : # 0073aa ;
2015-10-20 22:15:26 +02:00
float : left ;
padding : 5px 8px ;
text-decoration : none ;
cursor : pointer ;
outline : none ;
-webkit-user-select : none ;
-moz-user-select : none ;
-ms-user-select : none ;
user-select : none ;
}
2016-02-23 18:54:26 +01:00
. reorder-toggle : hover {
color : # 00a0d2 ;
}
2015-10-20 22:15:26 +02:00
. reorder-toggle : focus {
outline : 1px dotted ;
}
. reorder ,
. reordering . reorder-done {
display : block ;
padding : 5px 8px ;
}
. reorder-done ,
. reordering . reorder {
display : none ;
color : # 0073aa ;
}
. reorder-toggle : hover . reorder-done ,
. reorder-toggle : active . reorder-done ,
. reorder-toggle : focus . reorder-done {
color : # 00a0d2 ;
}
2016-01-13 23:36:26 +01:00
. widget-reorder-nav span ,
. menu-item-reorder-nav button {
position : relative ;
overflow : hidden ;
float : right ;
display : block ;
width : 33px ; /* was 42px for mobile */
height : 43px ;
color : # 82878c ;
text-indent : -9999px ;
cursor : pointer ;
outline : none ;
}
. menu-item-reorder-nav button {
width : 30px ;
height : 40px ;
background : transparent ;
border : none ;
-webkit-box-shadow : none ;
box-shadow : none ;
}
. widget-reorder-nav span : before ,
. menu-item-reorder-nav button : before {
display : inline-block ;
position : absolute ;
top : 0 ;
left : 0 ;
width : 100 % ;
height : 100 % ;
font : normal 20px / 43px dashicons ;
text-align : center ;
text-indent : 0 ;
-webkit-font-smoothing : antialiased ;
-moz-osx-font-smoothing : grayscale ;
}
. widget-reorder-nav span : hover ,
. widget-reorder-nav span : focus ,
. menu-item-reorder-nav button : hover ,
. menu-item-reorder-nav button : focus {
color : # 191e23 ;
background : # eee ;
}
. move-widget-down : before ,
. menus-move-down : before {
content : "\f347" ;
}
. move-widget-up : before ,
. menus-move-up : before {
content : "\f343" ;
}
# customize-theme-controls . first-widget . move-widget-up ,
# customize-theme-controls . last-widget . move-widget-down ,
. move-up-disabled . menus-move-up ,
. move-down-disabled . menus-move-down ,
. move-right-disabled . menus-move-right ,
. move-left-disabled . menus-move-left {
color : # d5d5d5 ;
background-color : # fff ;
cursor : default ;
pointer-events : none ;
}
/ * *
* New widget and Add-menu-items modes and panels
* /
. wp-full-overlay-main {
left : auto ; /* this overrides a right: 0; which causes the preview to resize, I'd rather have it go off screen at the normal size. */
width : 100 % ;
}
body . adding-widget . add-new-widget ,
body . adding-widget . add-new-widget : hover ,
. adding-menu-items . add-new-menu-item ,
. adding-menu-items . add-new-menu-item : hover ,
. add-menu-toggle . open ,
. add-menu-toggle . open : hover {
background : # eee ;
border-color : # 929793 ;
color : # 32373c ;
-webkit-box-shadow : inset 0 2px 5px -3px rgba ( 0 , 0 , 0 , 0 . 5 ) ;
box-shadow : inset 0 2px 5px -3px rgba ( 0 , 0 , 0 , 0 . 5 ) ;
}
body . adding-widget . add-new-widget : before ,
. adding-menu-items . add-new-menu-item : before ,
# accordion-section-add_menu . add-new-menu-item . open : before {
-webkit-transform : rotate ( -45deg ) ;
-ms-transform : rotate ( -45deg ) ;
transform : rotate ( -45deg ) ;
}
# available-widgets ,
# available-menu-items {
position : absolute ;
top : 0 ;
bottom : 0 ;
right : -301px ;
visibility : hidden ;
overflow-x : hidden ;
overflow-y : auto ;
width : 300px ;
margin : 0 ;
z-index : 4 ;
background : # eee ;
-webkit-transition : right . 18s ;
transition : right . 18s ;
border-left : 1px solid # ddd ;
}
# available-widgets . customize-section-title ,
# available-menu-items . customize-section-title {
display : none ;
}
# available-widgets-list {
top : 60px ;
position : absolute ;
overflow : auto ;
bottom : 0 ;
width : 100 % ;
}
# available-widgets-filter {
position : fixed ;
top : 0 ;
z-index : 1 ;
width : 300px ;
background : # eee ;
2016-03-09 20:51:26 +01:00
border-bottom : 1px solid # e5e5e5 ;
2016-01-13 23:36:26 +01:00
}
/* search field container */
# available-widgets-filter ,
# available-menu-items-search . accordion-section-title {
padding : 12px 15px ;
-webkit-box-sizing : border-box ;
-moz-box-sizing : border-box ;
box-sizing : border-box ;
}
# available-widgets-filter input ,
# available-menu-items-search input {
padding : 6px 10px ;
width : 100 % ;
}
# available-widgets . widget-top ,
# available-widgets . widget-top : hover ,
# available-menu-items . item-top ,
# available-menu-items . item-top : hover {
border : none ;
background : transparent ;
-webkit-box-shadow : none ;
box-shadow : none ;
}
# available-widgets . widget-tpl ,
# available-menu-items . item-tpl {
position : relative ;
padding : 20px 60px 20px 15px ;
background : # fff ;
2016-03-09 20:51:26 +01:00
border-bottom : 1px solid # e5e5e5 ;
2016-01-13 23:36:26 +01:00
cursor : pointer ;
display : none ;
}
# available-widgets . widget ,
# available-menu-items . item {
position : static ;
}
2015-02-09 13:36:28 +01:00
/* Responsive */
. customize-controls-preview-toggle {
display : none ;
}
2015-11-16 05:44:26 +01:00
@ media only screen and ( max-width : 782px ) {
2015-03-27 22:53:27 +01:00
. wp-customizer . theme : not ( . active ) : hover . theme-actions ,
. wp-customizer . theme : not ( . active ) : focus . theme-actions {
display : block ;
}
2015-04-22 18:15:27 +02:00
. wp-customizer . theme-browser . theme . active . theme-name span {
display : inline ;
}
2015-11-16 05:44:26 +01:00
. customize-control-radio label ,
. customize-control-checkbox label ,
. customize-control-nav_menu_auto_add label {
margin-right : 32px ;
}
. customize-control-radio input ,
. customize-control-checkbox input ,
. customize-control-nav_menu_auto_add input {
margin-right : -32px ;
}
. customize-control input [ type = "radio" ] + label ,
. customize-control input [ type = "checkbox" ] + label {
line-height : 32px ;
}
2015-03-27 22:53:27 +01:00
}
2015-02-09 13:36:28 +01:00
@ media screen and ( max-width : 640px ) {
# customize-controls {
width : 100 % ;
}
. wp-full-overlay . expanded {
margin-right : 0 ;
}
2016-03-07 23:05:27 +01:00
/ * when the sidebar is collapsed and switching to responsive view ,
bring it back see ticket # 35220 * /
. wp-full-overlay . collapsed # customize-controls {
margin-right : 0 ;
}
2015-02-09 13:36:28 +01:00
. wp-full-overlay-sidebar . wp-full-overlay-sidebar-content {
bottom : 0 ;
}
. customize-controls-preview-toggle {
display : block ;
position : absolute ;
top : 0 ;
right : 48px ;
line-height : 45px ;
font-size : 14px ;
2016-04-17 17:41:27 +02:00
padding : 0 12px ;
2015-02-09 13:36:28 +01:00
margin : 0 ;
height : 45px ;
background : # eee ;
2016-04-17 17:41:27 +02:00
border : 0 ;
2015-02-09 13:36:28 +01:00
border-left : 1px solid # ddd ;
color : # 444 ;
cursor : pointer ;
-webkit-transition : color . 1s ease-in-out , background . 1s ease-in-out ;
transition : color . 1s ease-in-out , background . 1s ease-in-out ;
}
# customize-footer-actions ,
# customize-preview ,
. customize-controls-preview-toggle . controls ,
. preview-only . wp-full-overlay-sidebar-content ,
. preview-only . customize-controls-preview-toggle . preview {
display : none ;
}
. customize-controls-preview-toggle . preview : before ,
. customize-controls-preview-toggle . controls : before {
font : normal 20px / 1 dashicons ;
content : "\f177" ;
position : relative ;
top : 4px ;
margin-left : 6px ;
}
. customize-controls-preview-toggle . controls : before {
2015-07-09 23:05:25 +02:00
content : "\f540" ;
2015-02-09 13:36:28 +01:00
}
. preview-only # customize-controls {
height : 45px ;
}
. preview-only # customize-preview ,
. preview-only . customize-controls-preview-toggle . controls {
display : block ;
}
# customize-preview {
top : 45px ;
bottom : 0 ;
height : auto ;
}
2015-03-27 23:17:30 +01:00
. wp-core-ui . wp-customizer . button {
padding : 6px 14px ;
line-height : normal ;
font-size : 14px ;
vertical-align : middle ;
height : auto ;
margin-bottom : 4px ;
}
# customize-header-actions . button-primary {
margin-top : 6px ;
}
2016-01-13 23:36:26 +01:00
body . adding-widget div # available-widgets ,
body . adding-menu-items div # available-menu-items {
top : 46px ;
right : 0 ;
z-index : 10 ;
width : 100 % ;
}
# available-widgets . customize-section-title ,
# available-menu-items . customize-section-title {
display : block ;
margin : 0 ;
}
# available-widgets . customize-section-back ,
# available-menu-items . customize-section-back {
height : 69px ;
}
# available-widgets . customize-section-title h3 ,
# available-menu-items . customize-section-title h3 {
font-size : 20px ;
font-weight : 200 ;
padding : 9px 14px 12px 10px ;
margin : 0 ;
line-height : 24px ;
color : # 555 ;
display : block ;
overflow : hidden ;
white-space : nowrap ;
text-overflow : ellipsis ;
}
# available-widgets . customize-section-title . customize-action ,
# available-menu-items . customize-section-title . customize-action {
font-size : 13px ;
display : block ;
font-weight : 400 ;
overflow : hidden ;
white-space : nowrap ;
text-overflow : ellipsis ;
}
# available-widgets-filter {
position : relative ;
width : 100 % ;
background : # fff ;
height : auto ;
padding : 10px 15px ;
}
# available-widgets-list {
top : 140px ;
}
2015-02-09 13:36:28 +01:00
}