From: Bartosz Dziewoński Date: Mon, 1 Feb 2016 22:28:13 +0000 (+0100) Subject: resources: Load OOjs UI from its four parts X-Git-Tag: 1.31.0-rc.0~8097^2 X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=commitdiff_plain;h=1f49b66c6f89d56dee457196296a7869f0f7475d resources: Load OOjs UI from its four parts See the task for more details. This is a backwards-compatible change. If your script only needs a subset of OOjs UI functionality, you can use one of the new smaller modules instead of the old big one. New modules: oojs-ui-core The core JavaScript library. oojs-ui-widgets Additional widgets and layouts module. oojs-ui-toolbars Toolbar and tools module. oojs-ui-windows Windows and dialogs module. Changed modules: oojs-ui.styles Now correctly only loads the styles needed by OOjs UI PHP. oojs-ui Now just loads core+widgets+toolbars+windows as dependencies. Using the new modules in I58799e22f9c0a2f78c1b4a02c4b7af576157883a. Bug: T113677 Change-Id: I0a3bf8fb25fb82325705a473cebd883e20b3ab8d --- diff --git a/includes/OutputPage.php b/includes/OutputPage.php index e06fad96bd..3b8d741595 100644 --- a/includes/OutputPage.php +++ b/includes/OutputPage.php @@ -4045,7 +4045,7 @@ class OutputPage extends ContextSource { $this->getLanguage()->getDir() ); $this->addModuleStyles( array( - 'oojs-ui.styles', + 'oojs-ui-core.styles', 'oojs-ui.styles.icons', 'oojs-ui.styles.indicators', 'oojs-ui.styles.textures', diff --git a/maintenance/resources/update-oojs-ui.sh b/maintenance/resources/update-oojs-ui.sh index 831e2dca96..48d97056a5 100755 --- a/maintenance/resources/update-oojs-ui.sh +++ b/maintenance/resources/update-oojs-ui.sh @@ -44,9 +44,15 @@ mkdir -p "$REPO_DIR/$TARGET_DIR/i18n" mkdir -p "$REPO_DIR/$TARGET_DIR/images" mkdir -p "$REPO_DIR/$TARGET_DIR/themes/mediawiki/images" mkdir -p "$REPO_DIR/$TARGET_DIR/themes/apex/images" -cp ./node_modules/oojs-ui/dist/oojs-ui.js "$REPO_DIR/$TARGET_DIR" -cp ./node_modules/oojs-ui/dist/{oojs-ui-mediawiki-noimages.css,oojs-ui-mediawiki.js} "$REPO_DIR/$TARGET_DIR" -cp ./node_modules/oojs-ui/dist/{oojs-ui-apex-noimages.css,oojs-ui-apex.js} "$REPO_DIR/$TARGET_DIR" +cp ./node_modules/oojs-ui/dist/oojs-ui-core.js "$REPO_DIR/$TARGET_DIR" +cp ./node_modules/oojs-ui/dist/oojs-ui-core-{mediawiki,apex}.css "$REPO_DIR/$TARGET_DIR" +cp ./node_modules/oojs-ui/dist/oojs-ui-widgets.js "$REPO_DIR/$TARGET_DIR" +cp ./node_modules/oojs-ui/dist/oojs-ui-widgets-{mediawiki,apex}.css "$REPO_DIR/$TARGET_DIR" +cp ./node_modules/oojs-ui/dist/oojs-ui-toolbars.js "$REPO_DIR/$TARGET_DIR" +cp ./node_modules/oojs-ui/dist/oojs-ui-toolbars-{mediawiki,apex}.css "$REPO_DIR/$TARGET_DIR" +cp ./node_modules/oojs-ui/dist/oojs-ui-windows.js "$REPO_DIR/$TARGET_DIR" +cp ./node_modules/oojs-ui/dist/oojs-ui-windows-{mediawiki,apex}.css "$REPO_DIR/$TARGET_DIR" +cp ./node_modules/oojs-ui/dist/oojs-ui-{mediawiki,apex}.js "$REPO_DIR/$TARGET_DIR" cp -R ./node_modules/oojs-ui/dist/i18n "$REPO_DIR/$TARGET_DIR" cp -R ./node_modules/oojs-ui/dist/images "$REPO_DIR/$TARGET_DIR" cp -R ./node_modules/oojs-ui/dist/themes/mediawiki/images "$REPO_DIR/$TARGET_DIR/themes/mediawiki" diff --git a/resources/ResourcesOOUI.php b/resources/ResourcesOOUI.php index d3b74f27c9..647efa23e4 100644 --- a/resources/ResourcesOOUI.php +++ b/resources/ResourcesOOUI.php @@ -32,19 +32,38 @@ return call_user_func( function () { $themes = array_map( 'strtolower', $themes ); $themes['default'] = 'mediawiki'; + // Helper function to generate paths to files used in 'skinStyles' and 'skinScripts'. + $getSkinSpecific = function ( $module, $ext = 'css' ) use ( $themes ) { + return array_combine( + array_keys( $themes ), + array_map( function ( $theme ) use ( $module, $ext ) { + $module = $module ? "$module-" : ''; + // TODO Allow extensions to specify this path somehow + return "resources/lib/oojs-ui/oojs-ui-$module$theme.$ext"; + }, array_values( $themes ) ) + ); + }; + $modules = array(); + + // Omnibus module. $modules['oojs-ui'] = array( + 'dependencies' => array( + 'oojs-ui-core', + 'oojs-ui-widgets', + 'oojs-ui-toolbars', + 'oojs-ui-windows', + ), + 'targets' => array( 'desktop', 'mobile' ), + ); + + // The core JavaScript library. + $modules['oojs-ui-core'] = array( 'scripts' => array( - 'resources/lib/oojs-ui/oojs-ui.js', + 'resources/lib/oojs-ui/oojs-ui-core.js', 'resources/src/oojs-ui-local.js', ), - 'skinScripts' => array_combine( - array_keys( $themes ), - array_map( function ( $theme ) { - // TODO Allow extensions to specify this path somehow - return "resources/lib/oojs-ui/oojs-ui-$theme.js"; - }, array_values( $themes ) ) - ), + 'skinScripts' => $getSkinSpecific( null, 'js' ), 'dependencies' => array( 'es5-shim', 'oojs', @@ -54,13 +73,25 @@ return call_user_func( function () { 'oojs-ui.styles.textures', 'mediawiki.language', ), + 'targets' => array( 'desktop', 'mobile' ), + ); + // This contains only the styles required by core widgets. + $modules['oojs-ui-core.styles'] = array( + 'position' => 'top', + 'styles' => 'resources/src/oojs-ui-local.css', // HACK, see inside the file + 'skinStyles' => $getSkinSpecific( 'core' ), + 'targets' => array( 'desktop', 'mobile' ), + ); + + // Deprecated old name for the module 'oojs-ui-core.styles'. + $modules['oojs-ui.styles'] = $modules['oojs-ui-core.styles']; + + // Additional widgets and layouts module. + $modules['oojs-ui-widgets'] = array( + 'scripts' => 'resources/lib/oojs-ui/oojs-ui-widgets.js', + 'skinStyles' => $getSkinSpecific( 'widgets' ), + 'dependencies' => 'oojs-ui-core', 'messages' => array( - 'ooui-dialog-message-accept', - 'ooui-dialog-message-reject', - 'ooui-dialog-process-continue', - 'ooui-dialog-process-dismiss', - 'ooui-dialog-process-error', - 'ooui-dialog-process-retry', 'ooui-outline-control-move-down', 'ooui-outline-control-move-up', 'ooui-outline-control-remove', @@ -68,21 +99,33 @@ return call_user_func( function () { 'ooui-selectfile-dragdrop-placeholder', 'ooui-selectfile-not-supported', 'ooui-selectfile-placeholder', + ), + 'targets' => array( 'desktop', 'mobile' ), + ); + // Toolbar and tools module. + $modules['oojs-ui-toolbars'] = array( + 'scripts' => 'resources/lib/oojs-ui/oojs-ui-toolbars.js', + 'skinStyles' => $getSkinSpecific( 'toolbars' ), + 'dependencies' => 'oojs-ui-core', + 'messages' => array( 'ooui-toolbar-more', 'ooui-toolgroup-collapse', 'ooui-toolgroup-expand', ), 'targets' => array( 'desktop', 'mobile' ), ); - $modules['oojs-ui.styles'] = array( - 'position' => 'top', - 'styles' => 'resources/src/oojs-ui-local.css', // HACK, see inside the file - 'skinStyles' => array_combine( - array_keys( $themes ), - array_map( function ( $theme ) { - // TODO Allow extensions to specify this path somehow - return "resources/lib/oojs-ui/oojs-ui-$theme-noimages.css"; - }, array_values( $themes ) ) + // Windows and dialogs module. + $modules['oojs-ui-windows'] = array( + 'scripts' => 'resources/lib/oojs-ui/oojs-ui-windows.js', + 'skinStyles' => $getSkinSpecific( 'windows' ), + 'dependencies' => 'oojs-ui-core', + 'messages' => array( + 'ooui-dialog-message-accept', + 'ooui-dialog-message-reject', + 'ooui-dialog-process-continue', + 'ooui-dialog-process-dismiss', + 'ooui-dialog-process-error', + 'ooui-dialog-process-retry', ), 'targets' => array( 'desktop', 'mobile' ), ); diff --git a/resources/lib/oojs-ui/oojs-ui-apex-noimages.css b/resources/lib/oojs-ui/oojs-ui-apex-noimages.css deleted file mode 100644 index 5d31973b43..0000000000 --- a/resources/lib/oojs-ui/oojs-ui-apex-noimages.css +++ /dev/null @@ -1,3071 +0,0 @@ -/*! - * OOjs UI v0.15.2 - * https://www.mediawiki.org/wiki/OOjs_UI - * - * Copyright 2011–2016 OOjs UI Team and other contributors. - * Released under the MIT license - * http://oojs.mit-license.org - * - * Date: 2016-02-02T22:07:06Z - */ -@-webkit-keyframes oo-ui-progressBarWidget-slide { - from { - margin-left: -40%; - } - to { - margin-left: 100%; - } -} -@-moz-keyframes oo-ui-progressBarWidget-slide { - from { - margin-left: -40%; - } - to { - margin-left: 100%; - } -} -@-ms-keyframes oo-ui-progressBarWidget-slide { - from { - margin-left: -40%; - } - to { - margin-left: 100%; - } -} -@-o-keyframes oo-ui-progressBarWidget-slide { - from { - margin-left: -40%; - } - to { - margin-left: 100%; - } -} -@keyframes oo-ui-progressBarWidget-slide { - from { - margin-left: -40%; - } - to { - margin-left: 100%; - } -} -.oo-ui-element-hidden { - display: none !important; -} -.oo-ui-buttonElement > .oo-ui-buttonElement-button { - cursor: pointer; - display: inline-block; - vertical-align: middle; - font: inherit; - white-space: nowrap; - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon, -.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator { - display: none; -} -.oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button { - cursor: default; -} -.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator, -.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { - display: inline-block; - vertical-align: middle; -} -.oo-ui-buttonElement-frameless { - display: inline-block; - position: relative; -} -.oo-ui-buttonElement-frameless.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { - display: inline-block; - vertical-align: middle; -} -.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button { - display: inline-block; - vertical-align: top; - text-align: center; -} -.oo-ui-buttonElement-framed.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { - display: inline-block; - vertical-align: middle; -} -.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button, -.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button, -.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button { - cursor: default; -} -.oo-ui-buttonElement > .oo-ui-buttonElement-button { - color: #333333; -} -.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { - margin-left: 0; -} -.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator { - width: 0.9375em; - height: 0.9375em; - margin: 0.46875em; -} -.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator { - margin-left: 0.46875em; -} -.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { - width: 1.875em; - height: 1.875em; -} -.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:hover, -.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:focus { - outline: none; -} -.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:hover > .oo-ui-iconElement-icon, -.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:focus > .oo-ui-iconElement-icon { - opacity: 1; -} -.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:hover > .oo-ui-labelElement-label, -.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:focus > .oo-ui-labelElement-label { - color: #000000; -} -.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { - color: #333333; -} -.oo-ui-buttonElement-frameless.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { - margin-left: 0.25em; -} -.oo-ui-buttonElement-frameless > input.oo-ui-buttonElement-button { - padding-left: 0.25em; - color: #333333; -} -.oo-ui-buttonElement-frameless > input.oo-ui-buttonElement-button:hover, -.oo-ui-buttonElement-frameless > input.oo-ui-buttonElement-button:focus { - color: #000000; -} -.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { - color: #087ecc; -} -.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { - color: #76ab36; -} -.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { - color: #d45353; -} -.oo-ui-buttonElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { - opacity: 0.2; -} -.oo-ui-buttonElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { - color: #cccccc; -} -.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button { - padding: 0.2em 0.8em; - border-radius: 0.3em; - text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5); - border: 1px #c9c9c9 solid; - -webkit-transition: border-color 100ms ease; - -moz-transition: border-color 100ms ease; - transition: border-color 100ms ease; - background-color: #eeeeee; - background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #ffffff), color-stop(100%, #dddddd)); - background-image: -webkit-linear-gradient(top, #ffffff 0, #dddddd 100%); - background-image: -moz-linear-gradient(top, #ffffff 0, #dddddd 100%); - background-image: linear-gradient(to bottom, #ffffff 0, #dddddd 100%); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffffff', endColorstr='#ffdddddd' )"; -} -.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button:hover, -.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button:focus { - border-color: #aaaaaa; - outline: none; -} -.oo-ui-buttonElement-framed > input.oo-ui-buttonElement-button, -.oo-ui-buttonElement-framed.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { - line-height: 1.875em; -} -.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active, -.oo-ui-buttonElement-framed.oo-ui-buttonElement-active > .oo-ui-buttonElement-button, -.oo-ui-buttonElement-framed.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button { - box-shadow: inset 0 1px 4px 0 rgba(0, 0, 0, 0.07); - color: black; - border-color: #c9c9c9; - background-color: #eeeeee; - background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #dddddd), color-stop(100%, #ffffff)); - background-image: -webkit-linear-gradient(top, #dddddd 0, #ffffff 100%); - background-image: -moz-linear-gradient(top, #dddddd 0, #ffffff 100%); - background-image: linear-gradient(to bottom, #dddddd 0, #ffffff 100%); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffdddddd', endColorstr='#ffffffff' )"; -} -.oo-ui-buttonElement-framed.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { - margin-left: -0.5em; - margin-right: -0.5em; -} -.oo-ui-buttonElement-framed.oo-ui-iconElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { - margin-right: 0.3em; -} -.oo-ui-buttonElement-framed.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator { - margin-left: -0.005em; - margin-right: -0.005em; -} -.oo-ui-buttonElement-framed.oo-ui-indicatorElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator, -.oo-ui-buttonElement-framed.oo-ui-indicatorElement.oo-ui-iconElement:not( .oo-ui-labelElement ) > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator { - margin-left: 0.46875em; - margin-right: -0.275em; -} -.oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button { - border: 1px solid #a6cee1; - background-color: #cde7f4; - background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #eaf4fa), color-stop(100%, #b0d9ee)); - background-image: -webkit-linear-gradient(top, #eaf4fa 0, #b0d9ee 100%); - background-image: -moz-linear-gradient(top, #eaf4fa 0, #b0d9ee 100%); - background-image: linear-gradient(to bottom, #eaf4fa 0, #b0d9ee 100%); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffeaf4fa', endColorstr='#ffb0d9ee' )"; -} -.oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:hover, -.oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:focus { - border-color: #9dc2d4; -} -.oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active, -.oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button, -.oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button { - border: 1px solid #a6cee1; - background-color: #cde7f4; - background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #b0d9ee), color-stop(100%, #eaf4fa)); - background-image: -webkit-linear-gradient(top, #b0d9ee 0, #eaf4fa 100%); - background-image: -moz-linear-gradient(top, #b0d9ee 0, #eaf4fa 100%); - background-image: linear-gradient(to bottom, #b0d9ee 0, #eaf4fa 100%); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffb0d9ee', endColorstr='#ffeaf4fa' )"; -} -.oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button { - border: 1px solid #b8d892; - background-color: #daf0bd; - background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #f0fbe1), color-stop(100%, #c3e59a)); - background-image: -webkit-linear-gradient(top, #f0fbe1 0, #c3e59a 100%); - background-image: -moz-linear-gradient(top, #f0fbe1 0, #c3e59a 100%); - background-image: linear-gradient(to bottom, #f0fbe1 0, #c3e59a 100%); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#fff0fbe1', endColorstr='#ffc3e59a' )"; -} -.oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:hover, -.oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:focus { - border-color: #adcb89; -} -.oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active, -.oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button, -.oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button { - border: 1px solid #b8d892; - background-color: #daf0bd; - background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #c3e59a), color-stop(100%, #f0fbe1)); - background-image: -webkit-linear-gradient(top, #c3e59a 0, #f0fbe1 100%); - background-image: -moz-linear-gradient(top, #c3e59a 0, #f0fbe1 100%); - background-image: linear-gradient(to bottom, #c3e59a 0, #f0fbe1 100%); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffc3e59a', endColorstr='#fff0fbe1' )"; -} -.oo-ui-buttonElement-framed.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button { - color: #d45353; -} -.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button, -.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button, -.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button { - opacity: 0.5; - -webkit-transform: translate3d(0, 0, 0); - box-shadow: none; - color: #333333; - background: #eeeeee; - border-color: #cccccc; -} -.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button:hover, -.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button:hover, -.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button:hover, -.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button:focus, -.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button:focus, -.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button:focus { - border-color: #cccccc; - box-shadow: none; -} -.oo-ui-clippableElement-clippable { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.oo-ui-iconElement .oo-ui-iconElement-icon, -.oo-ui-iconElement.oo-ui-iconElement-icon { - background-size: contain; - background-position: center center; - background-repeat: no-repeat; -} -.oo-ui-iconElement .oo-ui-iconElement-icon, -.oo-ui-iconElement.oo-ui-iconElement-icon { - opacity: 0.8; -} -.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator, -.oo-ui-indicatorElement.oo-ui-indicatorElement-indicator { - background-size: contain; - background-position: center center; - background-repeat: no-repeat; -} -.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator, -.oo-ui-indicatorElement.oo-ui-indicatorElement-indicator { - opacity: 0.8; -} -.oo-ui-pendingElement-pending { - background-image: /* @embed */ url(themes/apex/images/textures/pending.gif); -} -.oo-ui-fieldLayout { - display: block; - margin-bottom: 1em; -} -.oo-ui-fieldLayout:before, -.oo-ui-fieldLayout:after { - content: " "; - display: table; -} -.oo-ui-fieldLayout:after { - clear: both; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label, -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label, -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field, -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field { - display: block; - float: left; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label { - text-align: right; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body { - display: table; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label, -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field { - display: table-cell; - vertical-align: middle; -} -.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-top > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label { - display: inline-block; -} -.oo-ui-fieldLayout > .oo-ui-fieldLayout-help { - float: right; -} -.oo-ui-fieldLayout > .oo-ui-fieldLayout-help > .oo-ui-popupWidget > .oo-ui-popupWidget-popup { - z-index: 1; -} -.oo-ui-fieldLayout > .oo-ui-fieldLayout-help .oo-ui-fieldLayout-help-content { - padding: 0.5em 0.75em; - line-height: 1.5em; -} -.oo-ui-fieldLayout:last-child { - margin-bottom: 0; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label, -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label { - padding-top: 0.5em; - margin-right: 5%; - width: 35%; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field, -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field { - width: 60%; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline { - margin-bottom: 1.25em; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label { - padding: 0.25em 0.25em 0.25em 0.5em; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label { - padding: 0.5em 0; -} -.oo-ui-fieldLayout > .oo-ui-popupButtonWidget { - margin-right: 0; - margin-top: 0.25em; -} -.oo-ui-fieldLayout > .oo-ui-popupButtonWidget:last-child { - margin-right: 0; -} -.oo-ui-fieldLayout-disabled > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label { - color: #cccccc; -} -.oo-ui-fieldLayout-messages { - list-style: none none; - margin: 0; - padding: 0; - margin-top: 0.25em; - margin-left: 0.25em; -} -.oo-ui-fieldLayout-messages > li { - margin: 0; - padding: 0; -} -.oo-ui-fieldLayout-messages .oo-ui-iconWidget { - display: none; -} -.oo-ui-fieldLayout-messages .oo-ui-fieldLayout-messages-error { - color: #d45353; -} -.oo-ui-fieldLayout-messages .oo-ui-labelWidget { - padding: 0; - line-height: 1.875em; - vertical-align: middle; -} -.oo-ui-actionFieldLayout-input, -.oo-ui-actionFieldLayout-button { - display: table-cell; - vertical-align: middle; -} -.oo-ui-actionFieldLayout-input { - padding-right: 1em; -} -.oo-ui-actionFieldLayout-button { - width: 1%; - white-space: nowrap; -} -.oo-ui-fieldsetLayout { - position: relative; - margin: 0; - padding: 0; - border: none; -} -.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon { - display: block; - position: absolute; -} -.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-labelElement-label { - display: inline-block; -} -.oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-help { - float: right; -} -.oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-help > .oo-ui-popupWidget > .oo-ui-popupWidget-popup { - z-index: 1; -} -.oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-help .oo-ui-fieldsetLayout-help-content { - padding: 0.5em 0.75em; - line-height: 1.5em; -} -.oo-ui-fieldsetLayout + .oo-ui-fieldsetLayout, -.oo-ui-fieldsetLayout + .oo-ui-formLayout { - margin-top: 2em; -} -.oo-ui-fieldsetLayout > .oo-ui-labelElement-label { - font-size: 1.1em; - margin-bottom: 0.5em; - padding: 0.25em 0; - font-weight: bold; -} -.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-labelElement-label { - padding-left: 2em; - line-height: 1.8em; -} -.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon { - left: 0; - top: 0.25em; - width: 1.875em; - height: 1.875em; -} -.oo-ui-fieldsetLayout > .oo-ui-popupButtonWidget { - margin-right: 0; -} -.oo-ui-fieldsetLayout > .oo-ui-popupButtonWidget:last-child { - margin-right: 0; -} -.oo-ui-formLayout + .oo-ui-fieldsetLayout, -.oo-ui-formLayout + .oo-ui-formLayout { - margin-top: 2em; -} -.oo-ui-panelLayout { - position: relative; -} -.oo-ui-panelLayout-scrollable { - overflow-y: auto; -} -.oo-ui-panelLayout-expanded { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; -} -.oo-ui-panelLayout-padded { - padding: 1.25em; -} -.oo-ui-panelLayout-framed { - border-radius: 0.5em; - box-shadow: 0 0.25em 1em rgba(0, 0, 0, 0.25); -} -.oo-ui-panelLayout-padded.oo-ui-panelLayout-framed { - margin: 1em 0; -} -.oo-ui-horizontalLayout > .oo-ui-widget { - display: inline-block; - vertical-align: middle; -} -.oo-ui-horizontalLayout > .oo-ui-layout { - display: inline-block; -} -.oo-ui-horizontalLayout > .oo-ui-layout, -.oo-ui-horizontalLayout > .oo-ui-widget { - margin-right: 0.5em; -} -.oo-ui-horizontalLayout > .oo-ui-layout:last-child, -.oo-ui-horizontalLayout > .oo-ui-widget:last-child { - margin-right: 0; -} -.oo-ui-horizontalLayout > .oo-ui-layout { - margin-bottom: 0; -} -.oo-ui-optionWidget { - position: relative; - display: block; - padding: 0.25em 0.5em; - border: none; -} -.oo-ui-optionWidget.oo-ui-widget-enabled { - cursor: pointer; -} -.oo-ui-optionWidget.oo-ui-labelElement .oo-ui-labelElement-label { - display: block; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; -} -.oo-ui-optionWidget-highlighted { - background-color: #e1f3ff; -} -.oo-ui-optionWidget .oo-ui-labelElement-label { - line-height: 1.5em; -} -.oo-ui-selectWidget-depressed .oo-ui-optionWidget-selected { - background-color: #a7dcff; -} -.oo-ui-selectWidget-pressed .oo-ui-optionWidget-pressed, -.oo-ui-selectWidget-pressed .oo-ui-optionWidget-pressed.oo-ui-optionWidget-highlighted, -.oo-ui-selectWidget-pressed .oo-ui-optionWidget-pressed.oo-ui-optionWidget-highlighted.oo-ui-optionWidget-selected { - background-color: #a7dcff; -} -.oo-ui-optionWidget.oo-ui-widget-disabled { - color: #cccccc; -} -.oo-ui-decoratedOptionWidget { - padding: 0.5em 2em 0.5em 3em; -} -.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon, -.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator { - position: absolute; -} -.oo-ui-decoratedOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon, -.oo-ui-decoratedOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator { - top: 0; - height: 100%; -} -.oo-ui-decoratedOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon { - width: 1.875em; - left: 0.5em; -} -.oo-ui-decoratedOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator { - width: 0.9375em; - right: 0.5em; -} -.oo-ui-decoratedOptionWidget.oo-ui-widget-disabled .oo-ui-iconElement-icon, -.oo-ui-decoratedOptionWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator { - opacity: 0.2; -} -.oo-ui-radioSelectWidget { - padding: 0.75em 0 0.5em 0; -} -.oo-ui-radioOptionWidget { - cursor: default; - padding: 0; - background-color: transparent; -} -.oo-ui-radioOptionWidget .oo-ui-radioInputWidget, -.oo-ui-radioOptionWidget.oo-ui-labelElement .oo-ui-labelElement-label { - display: inline-block; - vertical-align: middle; -} -.oo-ui-radioOptionWidget.oo-ui-optionWidget-selected, -.oo-ui-radioOptionWidget.oo-ui-optionWidget-pressed, -.oo-ui-radioOptionWidget.oo-ui-optionWidget-highlighted { - background-color: transparent; -} -.oo-ui-radioOptionWidget.oo-ui-labelElement .oo-ui-labelElement-label { - padding-left: 0.5em; -} -.oo-ui-radioOptionWidget .oo-ui-radioInputWidget { - margin-right: 0; -} -.oo-ui-labelWidget { - display: inline-block; - padding: 0.5em 0; -} -.oo-ui-iconWidget { - display: inline-block; - vertical-align: middle; - line-height: 2.5em; - height: 1.875em; - width: 1.875em; -} -.oo-ui-iconWidget.oo-ui-widget-disabled { - opacity: 0.2; -} -.oo-ui-indicatorWidget { - display: inline-block; - vertical-align: middle; - line-height: 2.5em; - height: 0.9375em; - width: 0.9375em; - margin: 0.46875em; -} -.oo-ui-indicatorWidget.oo-ui-widget-disabled { - opacity: 0.2; -} -.oo-ui-buttonWidget { - display: inline-block; - vertical-align: middle; - margin-right: 0.5em; -} -.oo-ui-buttonWidget:last-child { - margin-right: 0; -} -.oo-ui-buttonGroupWidget { - display: inline-block; - white-space: nowrap; - border-radius: 0.3em; - margin-right: 0.5em; -} -.oo-ui-buttonGroupWidget:last-child { - margin-right: 0; -} -.oo-ui-buttonGroupWidget .oo-ui-buttonElement { - margin-right: 0; -} -.oo-ui-buttonGroupWidget .oo-ui-buttonElement:last-child { - margin-right: 0; -} -.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed .oo-ui-buttonElement-button { - border-radius: 0; - margin-left: -1px; -} -.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:first-child .oo-ui-buttonElement-button { - border-bottom-left-radius: 0.3em; - border-top-left-radius: 0.3em; - margin-left: 0; -} -.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:last-child .oo-ui-buttonElement-button { - border-bottom-right-radius: 0.3em; - border-top-right-radius: 0.3em; -} -.oo-ui-popupWidget { - position: absolute; - /* @noflip */ - left: 0; -} -.oo-ui-popupWidget-popup { - position: relative; - overflow: hidden; - z-index: 1; -} -.oo-ui-popupWidget-anchor { - display: none; - z-index: 1; -} -.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor { - display: block; - position: absolute; - top: 0; - /* @noflip */ - left: 0; - background-repeat: no-repeat; -} -.oo-ui-popupWidget-head { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.oo-ui-popupWidget-head > .oo-ui-buttonWidget { - float: right; -} -.oo-ui-popupWidget-head > .oo-ui-labelElement-label { - float: left; - cursor: default; -} -.oo-ui-popupWidget-body { - clear: both; - overflow: hidden; -} -.oo-ui-popupWidget-popup { - background-color: #ffffff; - border: 1px solid #cccccc; - border-radius: 0.25em; - box-shadow: 0 0.15em 0.5em 0 rgba(0, 0, 0, 0.2); -} -.oo-ui-popupWidget-anchored .oo-ui-popupWidget-popup { - margin-top: 6px; -} -.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:before, -.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:after { - content: ""; - position: absolute; - width: 0; - height: 0; - border-style: solid; - border-color: transparent; - border-top: 0; -} -.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:before { - bottom: -7px; - left: -6px; - border-bottom-color: #aaaaaa; - border-width: 7px; -} -.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:after { - bottom: -7px; - left: -5px; - border-bottom-color: #ffffff; - border-width: 6px; -} -.oo-ui-popupWidget-transitioning .oo-ui-popupWidget-popup { - -webkit-transition: width 100ms ease, height 100ms ease, left 100ms ease; - -moz-transition: width 100ms ease, height 100ms ease, left 100ms ease; - transition: width 100ms ease, height 100ms ease, left 100ms ease; -} -.oo-ui-popupWidget-head { - height: 2.5em; -} -.oo-ui-popupWidget-head > .oo-ui-buttonWidget { - margin: 0.25em; -} -.oo-ui-popupWidget-head > .oo-ui-labelElement-label { - margin: 0.75em 1em; -} -.oo-ui-popupWidget-body-padded { - padding: 0 1em; -} -.oo-ui-popupButtonWidget { - position: relative; -} -.oo-ui-popupButtonWidget .oo-ui-popupWidget { - position: absolute; - cursor: auto; -} -.oo-ui-popupButtonWidget.oo-ui-buttonElement-frameless > .oo-ui-popupWidget { - /* @noflip */ - left: 1em; -} -.oo-ui-popupButtonWidget.oo-ui-buttonElement-framed > .oo-ui-popupWidget { - /* @noflip */ - left: 1.25em; -} -.oo-ui-inputWidget { - margin-right: 0.5em; -} -.oo-ui-inputWidget:last-child { - margin-right: 0; -} -.oo-ui-buttonInputWidget { - display: inline-block; - vertical-align: middle; -} -.oo-ui-buttonInputWidget > button, -.oo-ui-buttonInputWidget > input { - border: 0; - padding: 0; - background-color: transparent; -} -.oo-ui-dropdownInputWidget { - position: relative; - vertical-align: middle; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - width: 100%; - max-width: 50em; -} -.oo-ui-dropdownInputWidget select { - display: inline-block; - width: 100%; - resize: none; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.oo-ui-dropdownInputWidget select { - background-color: #ffffff; - height: 2.5em; - padding: 0.5em; - font-size: inherit; - font-family: inherit; - border: 1px solid rgba(0, 0, 0, 0.1); - border-radius: 0.25em; -} -.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:hover, -.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:focus { - border-color: rgba(0, 0, 0, 0.2); - outline: none; -} -.oo-ui-dropdownInputWidget.oo-ui-widget-disabled select { - color: #cccccc; - border-color: #dddddd; - background-color: #f3f3f3; -} -.oo-ui-radioSelectInputWidget .oo-ui-fieldLayout { - margin-bottom: 0; -} -.oo-ui-textInputWidget { - position: relative; - vertical-align: middle; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - width: 100%; - max-width: 50em; -} -.oo-ui-textInputWidget input, -.oo-ui-textInputWidget textarea { - display: inline-block; - width: 100%; - resize: none; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.oo-ui-textInputWidget textarea { - overflow: auto; -} -.oo-ui-textInputWidget input[type="search"] { - -webkit-appearance: none; -} -.oo-ui-textInputWidget input[type="search"]::-ms-clear { - display: none; -} -.oo-ui-textInputWidget input[type="search"]::-ms-reveal { - display: none; -} -.oo-ui-textInputWidget input[type="search"]::-webkit-search-decoration, -.oo-ui-textInputWidget input[type="search"]::-webkit-search-cancel-button, -.oo-ui-textInputWidget input[type="search"]::-webkit-search-results-button, -.oo-ui-textInputWidget input[type="search"]::-webkit-search-results-decoration { - display: none; -} -.oo-ui-textInputWidget > .oo-ui-iconElement-icon, -.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator, -.oo-ui-textInputWidget > .oo-ui-labelElement-label { - display: none; -} -.oo-ui-textInputWidget.oo-ui-iconElement > .oo-ui-iconElement-icon, -.oo-ui-textInputWidget.oo-ui-indicatorElement > .oo-ui-indicatorElement-indicator { - display: block; - position: absolute; - top: 0; - height: 100%; - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.oo-ui-textInputWidget.oo-ui-widget-enabled > .oo-ui-iconElement-icon, -.oo-ui-textInputWidget.oo-ui-widget-enabled > .oo-ui-indicatorElement-indicator { - cursor: text; -} -.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-textInputWidget-type-search > .oo-ui-indicatorElement-indicator { - cursor: pointer; -} -.oo-ui-textInputWidget.oo-ui-labelElement > .oo-ui-labelElement-label { - display: block; -} -.oo-ui-textInputWidget > .oo-ui-iconElement-icon { - left: 0; -} -.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator { - right: 0; -} -.oo-ui-textInputWidget > .oo-ui-labelElement-label { - position: absolute; - top: 0; -} -.oo-ui-textInputWidget-labelPosition-after > .oo-ui-labelElement-label { - right: 0; -} -.oo-ui-textInputWidget-labelPosition-before > .oo-ui-labelElement-label { - left: 0; -} -.oo-ui-textInputWidget input, -.oo-ui-textInputWidget textarea { - padding: 0.5em; - line-height: 1.275em; - font-size: inherit; - font-family: inherit; - background-color: #ffffff; - color: black; - border: 1px solid #cccccc; - box-shadow: 0 0 0 white, inset 0 0.1em 0.2em #dddddd; - border-radius: 0.25em; - -webkit-transition: border-color 250ms ease, box-shadow 250ms ease; - -moz-transition: border-color 250ms ease, box-shadow 250ms ease; - transition: border-color 250ms ease, box-shadow 250ms ease; -} -.oo-ui-textInputWidget input.oo-ui-pendingElement-pending, -.oo-ui-textInputWidget textarea.oo-ui-pendingElement-pending { - background-color: transparent; -} -.oo-ui-textInputWidget.oo-ui-widget-enabled input:focus, -.oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus { - outline: none; - border-color: #a7dcff; - box-shadow: 0 0 0.3em #a7dcff, 0 0 0 white; -} -.oo-ui-textInputWidget.oo-ui-widget-enabled input[readonly], -.oo-ui-textInputWidget.oo-ui-widget-enabled textarea[readonly] { - color: #777777; -} -.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid input, -.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid textarea { - background-color: #ffdddd; -} -.oo-ui-textInputWidget.oo-ui-widget-disabled input, -.oo-ui-textInputWidget.oo-ui-widget-disabled textarea { - color: #cccccc; - text-shadow: 0 1px 1px #ffffff; - border-color: #dddddd; - background-color: #f3f3f3; -} -.oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-iconElement-icon, -.oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator { - opacity: 0.2; -} -.oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-labelElement-label { - color: #dddddd; - text-shadow: 0 1px 1px #ffffff; -} -.oo-ui-textInputWidget.oo-ui-iconElement input, -.oo-ui-textInputWidget.oo-ui-iconElement textarea { - padding-left: 2.475em; -} -.oo-ui-textInputWidget.oo-ui-iconElement .oo-ui-iconElement-icon { - width: 1.875em; - max-height: 2.375em; - margin-left: 0.3em; -} -.oo-ui-textInputWidget.oo-ui-indicatorElement input, -.oo-ui-textInputWidget.oo-ui-indicatorElement textarea { - padding-right: 2.4875em; -} -.oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator { - width: 0.9375em; - max-height: 2.375em; - margin-right: 0.775em; -} -.oo-ui-textInputWidget > .oo-ui-labelElement-label { - padding: 0.4em; - line-height: 1.5em; - color: #888888; -} -.oo-ui-textInputWidget-labelPosition-after.oo-ui-indicatorElement > .oo-ui-labelElement-label { - margin-right: 2.0875em; -} -.oo-ui-textInputWidget-labelPosition-before.oo-ui-iconElement > .oo-ui-labelElement-label { - margin-left: 2.075em; -} -.oo-ui-menuSelectWidget { - position: absolute; - background-color: #ffffff; - margin-top: -1px; - border: 1px solid #cccccc; - border-radius: 0 0 0.25em 0.25em; - box-shadow: 0 0.15em 1em 0 rgba(0, 0, 0, 0.2); -} -.oo-ui-menuSelectWidget input { - position: absolute; - width: 0; - height: 0; - overflow: hidden; - opacity: 0; -} -.oo-ui-menuOptionWidget { - position: relative; -} -.oo-ui-menuOptionWidget .oo-ui-iconElement-icon { - display: none; -} -.oo-ui-menuOptionWidget.oo-ui-optionWidget-selected { - background-color: transparent; -} -.oo-ui-menuOptionWidget.oo-ui-optionWidget-selected .oo-ui-iconElement-icon { - display: block; -} -.oo-ui-menuOptionWidget.oo-ui-optionWidget-selected { - background-color: transparent; -} -.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted, -.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted.oo-ui-optionWidget-selected { - background-color: #e1f3ff; -} -.oo-ui-menuSectionOptionWidget { - cursor: default; - padding: 0.33em 0.75em; - color: #888888; -} -.oo-ui-dropdownWidget { - display: inline-block; - position: relative; - width: 100%; - max-width: 50em; - background-color: #ffffff; - margin-right: 0.5em; -} -.oo-ui-dropdownWidget-handle { - width: 100%; - display: inline-block; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator, -.oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon { - position: absolute; -} -.oo-ui-dropdownWidget > .oo-ui-menuSelectWidget { - z-index: 1; - width: 100%; -} -.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle { - cursor: pointer; -} -.oo-ui-dropdownWidget:last-child { - margin-right: 0; -} -.oo-ui-dropdownWidget-handle { - height: 2.5em; - border: 1px solid rgba(0, 0, 0, 0.1); - border-radius: 0.25em; -} -.oo-ui-dropdownWidget-handle:hover { - border-color: rgba(0, 0, 0, 0.2); -} -.oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator { - right: 0; -} -.oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon { - left: 0.25em; -} -.oo-ui-dropdownWidget-handle .oo-ui-labelElement-label { - line-height: 2.5em; - margin: 0 0.5em; -} -.oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator { - top: 0; - width: 0.9375em; - height: 0.9375em; - margin: 0.775em; -} -.oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon { - top: 0; - width: 1.875em; - height: 1.875em; - margin: 0.3em; -} -.oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle { - color: #cccccc; - text-shadow: 0 1px 1px #ffffff; - border-color: #dddddd; - background-color: #f3f3f3; -} -.oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle:focus { - outline: 0; -} -.oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator { - opacity: 0.2; -} -.oo-ui-dropdownWidget.oo-ui-iconElement .oo-ui-dropdownWidget-handle .oo-ui-labelElement-label { - margin-left: 3em; -} -.oo-ui-dropdownWidget.oo-ui-indicatorElement .oo-ui-dropdownWidget-handle .oo-ui-labelElement-label { - margin-right: 2em; -} -.oo-ui-comboBoxInputWidget { - display: inline-block; - position: relative; - width: 100%; - max-width: 50em; - margin-right: 0.5em; -} -.oo-ui-comboBoxInputWidget > .oo-ui-menuSelectWidget { - z-index: 1; - width: 100%; -} -.oo-ui-comboBoxInputWidget.oo-ui-widget-enabled > .oo-ui-indicatorElement-indicator { - cursor: pointer; -} -.oo-ui-comboBoxInputWidget-php input::-webkit-calendar-picker-indicator { - opacity: 0 !important; - position: absolute; - right: 0; - top: 0; - height: 2.5em; - width: 2.5em; - padding: 0; -} -.oo-ui-comboBoxInputWidget-php > .oo-ui-indicatorElement-indicator { - pointer-events: none; -} -.oo-ui-comboBoxInputWidget:last-child { - margin-right: 0; -} -.oo-ui-comboBoxInputWidget.oo-ui-widget-disabled .oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator, -.oo-ui-comboBoxInputWidget-empty .oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator { - cursor: default; - opacity: 0.2; -} -.oo-ui-comboBoxInputWidget > .oo-ui-selectWidget { - margin-top: -3px; -} - -/*! - * OOjs UI v0.15.2 - * https://www.mediawiki.org/wiki/OOjs_UI - * - * Copyright 2011–2016 OOjs UI Team and other contributors. - * Released under the MIT license - * http://oojs.mit-license.org - * - * Date: 2016-02-02T22:07:06Z - */ -@-webkit-keyframes oo-ui-progressBarWidget-slide { - from { - margin-left: -40%; - } - to { - margin-left: 100%; - } -} -@-moz-keyframes oo-ui-progressBarWidget-slide { - from { - margin-left: -40%; - } - to { - margin-left: 100%; - } -} -@-ms-keyframes oo-ui-progressBarWidget-slide { - from { - margin-left: -40%; - } - to { - margin-left: 100%; - } -} -@-o-keyframes oo-ui-progressBarWidget-slide { - from { - margin-left: -40%; - } - to { - margin-left: 100%; - } -} -@keyframes oo-ui-progressBarWidget-slide { - from { - margin-left: -40%; - } - to { - margin-left: 100%; - } -} -.oo-ui-draggableElement { - cursor: -webkit-grab -moz-grab, url(images/grab.cur), move; -} -.oo-ui-draggableElement-dragging { - cursor: -webkit-grabbing -moz-grabbing, url(images/grabbing.cur), move; - background: rgba(0, 0, 0, 0.2); - opacity: 0.4; -} -.oo-ui-draggableGroupElement-horizontal .oo-ui-draggableElement.oo-ui-optionWidget { - display: inline-block; -} -.oo-ui-draggableGroupElement-placeholder { - position: absolute; - display: block; - background: rgba(0, 0, 0, 0.4); -} -.oo-ui-lookupElement > .oo-ui-menuSelectWidget { - z-index: 1; - width: 100%; -} -.oo-ui-bookletLayout-stackLayout.oo-ui-stackLayout-continuous > .oo-ui-panelLayout-scrollable { - overflow-y: hidden; -} -.oo-ui-bookletLayout-stackLayout > .oo-ui-panelLayout { - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.oo-ui-bookletLayout-stackLayout > .oo-ui-panelLayout-scrollable { - overflow-y: auto; -} -.oo-ui-bookletLayout-stackLayout > .oo-ui-panelLayout-padded { - padding: 2em; -} -.oo-ui-bookletLayout-outlinePanel-editable > .oo-ui-outlineSelectWidget { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 3em; - overflow-y: auto; -} -.oo-ui-bookletLayout-outlinePanel > .oo-ui-outlineControlsWidget { - position: absolute; - bottom: 0; - left: 0; - right: 0; -} -.oo-ui-bookletLayout-stackLayout > .oo-ui-panelLayout { - padding: 1.5em; -} -.oo-ui-bookletLayout-outlinePanel { - border-right: 1px solid #dddddd; -} -.oo-ui-bookletLayout-outlinePanel > .oo-ui-outlineControlsWidget { - box-shadow: 0 0 0.25em rgba(0, 0, 0, 0.25); -} -.oo-ui-indexLayout > .oo-ui-menuLayout-menu { - height: 3em; -} -.oo-ui-indexLayout > .oo-ui-menuLayout-content { - top: 3em; -} -.oo-ui-indexLayout-stackLayout > .oo-ui-panelLayout { - padding: 1.5em; -} -.oo-ui-menuLayout { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; -} -.oo-ui-menuLayout-menu, -.oo-ui-menuLayout-content { - position: absolute; - -webkit-transition: all 200ms ease; - -moz-transition: all 200ms ease; - transition: all 200ms ease; -} -.oo-ui-menuLayout-menu { - height: 18em; - width: 18em; -} -.oo-ui-menuLayout-content { - top: 18em; - left: 18em; - right: 18em; - bottom: 18em; -} -.oo-ui-menuLayout.oo-ui-menuLayout-hideMenu > .oo-ui-menuLayout-menu { - width: 0 !important; - height: 0 !important; - overflow: hidden; -} -.oo-ui-menuLayout.oo-ui-menuLayout-hideMenu > .oo-ui-menuLayout-content { - top: 0 !important; - left: 0 !important; - right: 0 !important; - bottom: 0 !important; -} -.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-top > .oo-ui-menuLayout-menu { - width: auto !important; - left: 0; - top: 0; - right: 0; -} -.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-top > .oo-ui-menuLayout-content { - right: 0 !important; - bottom: 0 !important; - left: 0 !important; -} -.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-after > .oo-ui-menuLayout-menu { - height: auto !important; - top: 0; - right: 0; - bottom: 0; -} -.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-after > .oo-ui-menuLayout-content { - bottom: 0 !important; - left: 0 !important; - top: 0 !important; -} -.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-bottom > .oo-ui-menuLayout-menu { - width: auto !important; - right: 0; - bottom: 0; - left: 0; -} -.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-bottom > .oo-ui-menuLayout-content { - left: 0 !important; - top: 0 !important; - right: 0 !important; -} -.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-before > .oo-ui-menuLayout-menu { - height: auto !important; - bottom: 0; - left: 0; - top: 0; -} -.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-before > .oo-ui-menuLayout-content { - top: 0 !important; - right: 0 !important; - bottom: 0 !important; -} -.oo-ui-stackLayout-continuous > .oo-ui-panelLayout { - display: block; - position: relative; -} -.oo-ui-buttonSelectWidget { - display: inline-block; - white-space: nowrap; - border-radius: 0.3em; - margin-right: 0.5em; -} -.oo-ui-buttonSelectWidget:last-child { - margin-right: 0; -} -.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget .oo-ui-buttonElement-button { - border-radius: 0; - margin-left: -1px; -} -.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget:first-child .oo-ui-buttonElement-button { - border-bottom-left-radius: 0.3em; - border-top-left-radius: 0.3em; - margin-left: 0; -} -.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget:last-child .oo-ui-buttonElement-button { - border-bottom-right-radius: 0.3em; - border-top-right-radius: 0.3em; -} -.oo-ui-buttonOptionWidget { - display: inline-block; - padding: 0; - background-color: transparent; -} -.oo-ui-buttonOptionWidget .oo-ui-buttonElement-button { - position: relative; -} -.oo-ui-buttonOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon, -.oo-ui-buttonOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator { - position: static; - display: inline-block; - vertical-align: middle; -} -.oo-ui-buttonOptionWidget .oo-ui-buttonElement-button { - height: 1.875em; -} -.oo-ui-buttonOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon { - margin-top: 0; -} -.oo-ui-buttonOptionWidget.oo-ui-optionWidget-selected, -.oo-ui-buttonOptionWidget.oo-ui-optionWidget-pressed, -.oo-ui-buttonOptionWidget.oo-ui-optionWidget-highlighted { - background-color: transparent; -} -.oo-ui-toggleButtonWidget { - display: inline-block; - vertical-align: middle; - margin-right: 0.5em; -} -.oo-ui-toggleButtonWidget:last-child { - margin-right: 0; -} -.oo-ui-toggleSwitchWidget { - position: relative; - display: inline-block; - vertical-align: middle; - overflow: hidden; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -ms-transform: translateZ(0); - transform: translateZ(0); - height: 2em; - width: 4em; - border-radius: 1em; - box-shadow: 0 0 0 white, inset 0 0.1em 0.2em #dddddd; - border: 1px solid #cccccc; - margin-right: 0.5em; - background-color: #eeeeee; - background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #dddddd), color-stop(100%, #ffffff)); - background-image: -webkit-linear-gradient(top, #dddddd 0, #ffffff 100%); - background-image: -moz-linear-gradient(top, #dddddd 0, #ffffff 100%); - background-image: linear-gradient(to bottom, #dddddd 0, #ffffff 100%); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffdddddd', endColorstr='#ffffffff' )"; -} -.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled { - cursor: pointer; -} -.oo-ui-toggleSwitchWidget-grip { - position: absolute; - display: block; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow { - position: absolute; - top: 0; - bottom: 0; - right: 0; - left: 0; - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow { - display: none; -} -.oo-ui-toggleSwitchWidget:last-child { - margin-right: 0; -} -.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled { - opacity: 0.5; -} -.oo-ui-toggleSwitchWidget-grip { - top: 0.25em; - left: 0.25em; - width: 1.5em; - height: 1.5em; - margin-top: -1px; - border-radius: 1em; - box-shadow: 0 0.1em 0.25em rgba(0, 0, 0, 0.1); - border: 1px #c9c9c9 solid; - -webkit-transition: left 250ms ease, margin-left 250ms ease; - -moz-transition: left 250ms ease, margin-left 250ms ease; - transition: left 250ms ease, margin-left 250ms ease; - background-color: #eeeeee; - background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #ffffff), color-stop(100%, #dddddd)); - background-image: -webkit-linear-gradient(top, #ffffff 0, #dddddd 100%); - background-image: -moz-linear-gradient(top, #ffffff 0, #dddddd 100%); - background-image: linear-gradient(to bottom, #ffffff 0, #dddddd 100%); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffffff', endColorstr='#ffdddddd' )"; -} -.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover, -.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover .oo-ui-toggleSwitchWidget-grip { - border-color: #aaaaaa; -} -.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow { - border-radius: 1em; - box-shadow: inset 0 1px 4px 0 rgba(0, 0, 0, 0.07); - -webkit-transition: opacity 250ms ease; - -moz-transition: opacity 250ms ease; - transition: opacity 250ms ease; - background-color: #cde7f4; - background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #b0d9ee), color-stop(100%, #eaf4fa)); - background-image: -webkit-linear-gradient(top, #b0d9ee 0, #eaf4fa 100%); - background-image: -moz-linear-gradient(top, #b0d9ee 0, #eaf4fa 100%); - background-image: linear-gradient(to bottom, #b0d9ee 0, #eaf4fa 100%); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffb0d9ee', endColorstr='#ffeaf4fa' )"; -} -.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-glow { - opacity: 1; -} -.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip { - left: 2.25em; - margin-left: -2px; -} -.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow { - display: block; - opacity: 0; -} -.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-grip { - left: 0.25em; - margin-left: 0; -} -.oo-ui-progressBarWidget { - max-width: 50em; - background-color: #ffffff; - border: 1px solid #cccccc; - border-radius: 0.25em; - overflow: hidden; -} -.oo-ui-progressBarWidget-bar { - height: 1em; - border-right: 1px solid #cccccc; - -webkit-transition: width 250ms ease, margin-left 250ms ease; - -moz-transition: width 250ms ease, margin-left 250ms ease; - transition: width 250ms ease, margin-left 250ms ease; - background-color: #cde7f4; - background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #eaf4fa), color-stop(100%, #b0d9ee)); - background-image: -webkit-linear-gradient(top, #eaf4fa 0, #b0d9ee 100%); - background-image: -moz-linear-gradient(top, #eaf4fa 0, #b0d9ee 100%); - background-image: linear-gradient(to bottom, #eaf4fa 0, #b0d9ee 100%); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffeaf4fa', endColorstr='#ffb0d9ee' )"; -} -.oo-ui-progressBarWidget-indeterminate .oo-ui-progressBarWidget-bar { - -webkit-animation: oo-ui-progressBarWidget-slide 2s infinite linear; - -moz-animation: oo-ui-progressBarWidget-slide 2s infinite linear; - animation: oo-ui-progressBarWidget-slide 2s infinite linear; - width: 40%; - margin-left: -10%; - border-left: 1px solid #a6cee1; -} -.oo-ui-progressBarWidget.oo-ui-widget-disabled { - opacity: 0.6; -} -.oo-ui-selectFileWidget { - display: inline-block; - vertical-align: middle; - width: 100%; - max-width: 50em; - margin-right: 0.5em; -} -.oo-ui-selectFileWidget-selectButton { - display: table-cell; - vertical-align: middle; -} -.oo-ui-selectFileWidget-selectButton > .oo-ui-buttonElement-button { - position: relative; - overflow: hidden; -} -.oo-ui-selectFileWidget-selectButton > .oo-ui-buttonElement-button > input[type="file"] { - position: absolute; - margin: 0; - top: 0; - bottom: 0; - left: 0; - right: 0; - width: 100%; - height: 100%; - opacity: 0; - z-index: 1; - cursor: pointer; - padding-top: 100px; -} -.oo-ui-selectFileWidget-selectButton.oo-ui-widget-disabled > .oo-ui-buttonElement-button > input[type="file"] { - display: none; -} -.oo-ui-selectFileWidget-info { - width: 100%; - display: table-cell; - vertical-align: middle; - position: relative; - overflow: hidden; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-label { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - text-overflow: ellipsis; -} -.oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-label > .oo-ui-selectFileWidget-fileName { - float: left; -} -.oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-label > .oo-ui-selectFileWidget-fileType { - float: right; -} -.oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator, -.oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon, -.oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-clearButton { - position: absolute; -} -.oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-clearButton { - z-index: 2; -} -.oo-ui-selectFileWidget-dropTarget { - cursor: default; -} -.oo-ui-selectFileWidget-supported.oo-ui-widget-enabled .oo-ui-selectFileWidget-dropTarget { - cursor: pointer; -} -.oo-ui-selectFileWidget-empty .oo-ui-selectFileWidget-clearButton, -.oo-ui-selectFileWidget-notsupported .oo-ui-selectFileWidget-clearButton { - display: none; -} -.oo-ui-selectFileWidget:last-child { - margin-right: 0; -} -.oo-ui-selectFileWidget-selectButton > .oo-ui-buttonElement-button { - margin-left: 0.5em; -} -.oo-ui-selectFileWidget-info { - height: 2.4em; - background-color: #ffffff; - border: 1px solid rgba(0, 0, 0, 0.1); - border-radius: 0.25em; -} -.oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator { - right: 0; -} -.oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon { - left: 0; -} -.oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-label { - line-height: 2.3em; - margin: 0; - overflow: hidden; - white-space: nowrap; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - text-overflow: ellipsis; - left: 0.5em; - right: 0.5em; -} -.oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-label > .oo-ui-selectFileWidget-fileType { - color: #888888; -} -.oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-clearButton { - top: 0; - width: 1.875em; - margin-right: 0; -} -.oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-clearButton .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { - height: 2.3em; -} -.oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator { - top: 0; - width: 0.9375em; - height: 2.3em; - margin-right: 0.775em; -} -.oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon { - top: 0; - width: 1.875em; - height: 2.3em; - margin-left: 0.3em; -} -.oo-ui-selectFileWidget.oo-ui-widget-disabled .oo-ui-selectFileWidget-info { - color: #cccccc; - text-shadow: 0 1px 1px #ffffff; - border-color: #dddddd; - background-color: #f3f3f3; -} -.oo-ui-selectFileWidget.oo-ui-widget-disabled .oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon, -.oo-ui-selectFileWidget.oo-ui-widget-disabled .oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator { - opacity: 0.2; -} -.oo-ui-selectFileWidget-empty .oo-ui-selectFileWidget-label { - color: #cccccc; -} -.oo-ui-selectFileWidget.oo-ui-iconElement .oo-ui-selectFileWidget-info .oo-ui-selectFileWidget-label { - left: 2.475em; -} -.oo-ui-selectFileWidget .oo-ui-selectFileWidget-info .oo-ui-selectFileWidget-label { - right: 2.175em; -} -.oo-ui-selectFileWidget .oo-ui-selectFileWidget-info .oo-ui-selectFileWidget-clearButton { - right: 0; -} -.oo-ui-selectFileWidget.oo-ui-indicatorElement .oo-ui-selectFileWidget-info .oo-ui-selectFileWidget-label { - right: 4.2625em; -} -.oo-ui-selectFileWidget.oo-ui-indicatorElement .oo-ui-selectFileWidget-info .oo-ui-selectFileWidget-clearButton { - right: 2.0875em; -} -.oo-ui-selectFileWidget-empty .oo-ui-selectFileWidget-info .oo-ui-selectFileWidget-label, -.oo-ui-selectFileWidget-notsupported .oo-ui-selectFileWidget-info .oo-ui-selectFileWidget-label { - right: 0.5em; -} -.oo-ui-selectFileWidget-empty.oo-ui-indicatorElement .oo-ui-selectFileWidget-info .oo-ui-selectFileWidget-label, -.oo-ui-selectFileWidget-notsupported.oo-ui-indicatorElement .oo-ui-selectFileWidget-info .oo-ui-selectFileWidget-label { - right: 2em; -} -.oo-ui-selectFileWidget-dropTarget { - line-height: 3.5em; - background-color: #ffffff; - border: 1px dashed #aaaaaa; - padding: 0.5em 1em; - margin-bottom: 0.5em; - text-align: center; - vertical-align: middle; -} -.oo-ui-selectFileWidget-supported.oo-ui-widget-enabled .oo-ui-selectFileWidget-dropTarget:hover, -.oo-ui-selectFileWidget-supported.oo-ui-widget-enabled.oo-ui-selectFileWidget-canDrop oo-ui-selectfilewidget-droptarget { - background-color: #e1f3ff; -} -.oo-ui-selectFileWidget.oo-ui-widget-disabled .oo-ui-selectFileWidget-dropTarget, -.oo-ui-selectFileWidget-notsupported .oo-ui-selectFileWidget-dropTarget { - color: #cccccc; - text-shadow: 0 1px 1px #ffffff; - border-color: #dddddd; - background-color: #f3f3f3; -} -.oo-ui-outlineOptionWidget { - position: relative; - cursor: pointer; - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - font-size: 1.1em; - padding: 0.75em; -} -.oo-ui-outlineOptionWidget.oo-ui-indicatorElement .oo-ui-labelElement-label { - padding-right: 1.5em; -} -.oo-ui-outlineOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator { - opacity: 0.5; -} -.oo-ui-outlineOptionWidget-level-0 { - padding-left: 3.5em; -} -.oo-ui-outlineOptionWidget-level-0 .oo-ui-iconElement-icon { - left: 1em; -} -.oo-ui-outlineOptionWidget-level-1 { - padding-left: 5em; -} -.oo-ui-outlineOptionWidget-level-1 .oo-ui-iconElement-icon { - left: 2.5em; -} -.oo-ui-outlineOptionWidget-level-2 { - padding-left: 6.5em; -} -.oo-ui-outlineOptionWidget-level-2 .oo-ui-iconElement-icon { - left: 4em; -} -.oo-ui-selectWidget-depressed .oo-ui-outlineOptionWidget.oo-ui-optionWidget-selected { - background-color: #a7dcff; - text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5); -} -.oo-ui-outlineOptionWidget.oo-ui-flaggedElement-important { - font-weight: bold; -} -.oo-ui-outlineOptionWidget.oo-ui-flaggedElement-placeholder { - font-style: italic; -} -.oo-ui-outlineOptionWidget.oo-ui-flaggedElement-empty .oo-ui-iconElement-icon { - opacity: 0.5; -} -.oo-ui-outlineOptionWidget.oo-ui-flaggedElement-empty .oo-ui-labelElement-label { - color: #777777; -} -.oo-ui-outlineControlsWidget { - height: 3em; - background-color: #ffffff; -} -.oo-ui-outlineControlsWidget-items, -.oo-ui-outlineControlsWidget-movers { - float: left; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.oo-ui-outlineControlsWidget > .oo-ui-iconElement-icon { - float: left; - background-position: right center; -} -.oo-ui-outlineControlsWidget-items { - float: left; -} -.oo-ui-outlineControlsWidget-items .oo-ui-buttonWidget { - float: left; -} -.oo-ui-outlineControlsWidget-movers { - float: right; -} -.oo-ui-outlineControlsWidget-movers .oo-ui-buttonWidget { - float: right; -} -.oo-ui-outlineControlsWidget-items, -.oo-ui-outlineControlsWidget-movers { - height: 2em; - margin: 0.5em 0.5em 0.5em 0; - padding: 0; -} -.oo-ui-outlineControlsWidget > .oo-ui-iconElement-icon { - width: 1.5em; - height: 2em; - margin: 0.5em 0 0.5em 0.5em; - opacity: 0.2; -} -.oo-ui-tabSelectWidget { - text-align: left; - white-space: nowrap; - overflow: hidden; - background-color: #eeeeee; - box-shadow: inset 0 -0.015em 0.1em rgba(0, 0, 0, 0.1); -} -.oo-ui-tabOptionWidget { - display: inline-block; - vertical-align: bottom; - padding: 0.5em 1em; - margin: 0.5em 0 0 0.75em; - border: 1px solid transparent; - border-bottom: none; - border-top-left-radius: 0.5em; - border-top-right-radius: 0.5em; -} -.oo-ui-tabOptionWidget.oo-ui-indicatorElement .oo-ui-labelElement-label { - padding-right: 1.5em; -} -.oo-ui-tabOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator { - opacity: 0.5; -} -.oo-ui-selectWidget-pressed .oo-ui-tabOptionWidget.oo-ui-optionWidget-pressed { - background-color: transparent; -} -.oo-ui-tabOptionWidget.oo-ui-widget-enabled:hover { - background-color: rgba(255, 255, 255, 0.2); - border-color: #dddddd; -} -.oo-ui-tabOptionWidget.oo-ui-widget-enabled:active { - background-color: #ffffff; - border-color: #dddddd; -} -.oo-ui-selectWidget-pressed .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected, -.oo-ui-selectWidget-depressed .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected, -.oo-ui-tabOptionWidget.oo-ui-optionWidget-selected:hover { - background-color: #ffffff; - border-color: #dddddd; -} -.oo-ui-capsuleMultiSelectWidget { - display: inline-block; - position: relative; - width: 100%; - max-width: 50em; -} -.oo-ui-capsuleMultiSelectWidget-handle { - width: 100%; - display: inline-block; - position: relative; -} -.oo-ui-capsuleMultiSelectWidget-content { - position: relative; -} -.oo-ui-capsuleMultiSelectWidget.oo-ui-widget-disabled .oo-ui-capsuleMultiSelectWidget-content > input { - display: none; -} -.oo-ui-capsuleMultiSelectWidget-group { - display: inline; -} -.oo-ui-capsuleMultiSelectWidget > .oo-ui-menuSelectWidget { - z-index: 1; - width: 100%; -} -.oo-ui-capsuleMultiSelectWidget-handle { - background-color: #ffffff; - cursor: text; - min-height: 2.4em; - margin-right: 0.5em; - padding: 0.15em 0.25em; - border: 1px solid rgba(0, 0, 0, 0.1); - border-radius: 0.25em; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.oo-ui-capsuleMultiSelectWidget-handle:last-child { - margin-right: 0; -} -.oo-ui-capsuleMultiSelectWidget-handle > .oo-ui-indicatorElement-indicator, -.oo-ui-capsuleMultiSelectWidget-handle > .oo-ui-iconElement-icon { - position: absolute; - background-position: center center; - background-repeat: no-repeat; -} -.oo-ui-capsuleMultiSelectWidget-handle > .oo-ui-capsuleMultiSelectWidget-content > input { - border: none; - line-height: 1.675em; - margin: 0; - margin-left: 0.2em; - padding: 0; - font-size: inherit; - font-family: inherit; - background-color: transparent; - color: black; - vertical-align: middle; -} -.oo-ui-capsuleMultiSelectWidget-handle > .oo-ui-capsuleMultiSelectWidget-content > input:focus { - outline: none; -} -.oo-ui-capsuleMultiSelectWidget.oo-ui-indicatorElement .oo-ui-capsuleMultiSelectWidget-handle { - padding-right: 2.4875em; -} -.oo-ui-capsuleMultiSelectWidget.oo-ui-indicatorElement .oo-ui-capsuleMultiSelectWidget-handle > .oo-ui-indicatorElement-indicator { - right: 0; - top: 0; - width: 0.9375em; - height: 0.9375em; - margin: 0.775em; -} -.oo-ui-capsuleMultiSelectWidget.oo-ui-iconElement .oo-ui-capsuleMultiSelectWidget-handle { - padding-left: 2.475em; -} -.oo-ui-capsuleMultiSelectWidget.oo-ui-iconElement .oo-ui-capsuleMultiSelectWidget-handle > .oo-ui-iconElement-icon { - left: 0; - top: 0; - width: 1.875em; - height: 1.875em; - margin: 0.3em; -} -.oo-ui-capsuleMultiSelectWidget:hover .oo-ui-capsuleMultiSelectWidget-handle { - border-color: rgba(0, 0, 0, 0.2); -} -.oo-ui-capsuleMultiSelectWidget.oo-ui-widget-disabled .oo-ui-capsuleMultiSelectWidget-handle { - color: #cccccc; - text-shadow: 0 1px 1px #ffffff; - border-color: #dddddd; - background-color: #f3f3f3; - cursor: default; -} -.oo-ui-capsuleMultiSelectWidget.oo-ui-widget-disabled .oo-ui-capsuleMultiSelectWidget-handle > .oo-ui-iconElement-icon, -.oo-ui-capsuleMultiSelectWidget.oo-ui-widget-disabled .oo-ui-capsuleMultiSelectWidget-handle > .oo-ui-indicatorElement-indicator { - opacity: 0.2; -} -.oo-ui-capsuleMultiSelectWidget .oo-ui-selectWidget { - border-top-color: #ffffff; -} -.oo-ui-capsuleItemWidget { - position: relative; - display: inline-block; - cursor: default; - white-space: nowrap; - width: auto; - max-width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - vertical-align: middle; - padding: 0 0.4em; - margin: 0.1em; - height: 1.7em; - line-height: 1.7em; - background-color: #eeeeee; - background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #ffffff), color-stop(100%, #dddddd)); - background-image: -webkit-linear-gradient(top, #ffffff 0, #dddddd 100%); - background-image: -moz-linear-gradient(top, #ffffff 0, #dddddd 100%); - background-image: linear-gradient(to bottom, #ffffff 0, #dddddd 100%); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffffff', endColorstr='#ffdddddd' )"; - border: 1px solid #cccccc; - color: #555555; - border-radius: 0.25em; -} -.oo-ui-capsuleItemWidget > .oo-ui-iconElement-icon { - cursor: pointer; -} -.oo-ui-capsuleItemWidget.oo-ui-widget-disabled > .oo-ui-iconElement-icon { - cursor: default; -} -.oo-ui-capsuleItemWidget.oo-ui-labelElement .oo-ui-labelElement-label { - display: block; - text-overflow: ellipsis; - overflow: hidden; -} -.oo-ui-capsuleItemWidget.oo-ui-indicatorElement > .oo-ui-labelElement-label { - padding-right: 1.3375em; -} -.oo-ui-capsuleItemWidget.oo-ui-indicatorElement > .oo-ui-indicatorElement-indicator { - position: absolute; - right: 0.4em; - top: 0; - width: 0.9375em; - height: 100%; - background-repeat: no-repeat; -} -.oo-ui-capsuleItemWidget.oo-ui-indicatorElement > .oo-ui-indicator-clear { - cursor: pointer; -} -.oo-ui-capsuleItemWidget.oo-ui-widget-disabled { - opacity: 0.5; - -webkit-transform: translate3d(0, 0, 0); - box-shadow: none; - color: #333333; - background: #eeeeee; - border-color: #cccccc; -} -.oo-ui-capsuleItemWidget.oo-ui-widget-disabled > .oo-ui-indicatorElement-indicator { - opacity: 0.2; -} -.oo-ui-searchWidget-query { - position: absolute; - top: 0; - left: 0; - right: 0; -} -.oo-ui-searchWidget-query .oo-ui-textInputWidget { - width: 100%; -} -.oo-ui-searchWidget-results { - position: absolute; - bottom: 0; - left: 0; - right: 0; - overflow-x: hidden; - overflow-y: auto; -} -.oo-ui-searchWidget-query { - height: 4em; - padding: 0 1em; - box-shadow: 0 0 0.5em rgba(0, 0, 0, 0.2); -} -.oo-ui-searchWidget-query .oo-ui-textInputWidget { - margin: 0.75em 0; -} -.oo-ui-searchWidget-results { - top: 4em; - padding: 1em; - line-height: 0; -} -.oo-ui-numberInputWidget { - display: inline-block; - position: relative; - max-width: 50em; -} -.oo-ui-numberInputWidget-field { - display: table; - table-layout: fixed; - width: 100%; -} -.oo-ui-numberInputWidget-field > .oo-ui-buttonWidget, -.oo-ui-numberInputWidget-field > .oo-ui-textInputWidget { - display: table-cell; - vertical-align: middle; -} -.oo-ui-numberInputWidget-field > .oo-ui-textInputWidget { - width: 100%; -} -.oo-ui-numberInputWidget-field > .oo-ui-buttonWidget { - white-space: nowrap; -} -.oo-ui-numberInputWidget-field > .oo-ui-buttonWidget > .oo-ui-buttonElement-button { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.oo-ui-numberInputWidget-field > .oo-ui-buttonWidget { - width: 2.25em; -} -.oo-ui-numberInputWidget-minusButton.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-right-width: 0; -} -.oo-ui-numberInputWidget-plusButton.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - border-left-width: 0; -} -.oo-ui-numberInputWidget .oo-ui-textInputWidget input { - border-radius: 0; -} - -/*! - * OOjs UI v0.15.2 - * https://www.mediawiki.org/wiki/OOjs_UI - * - * Copyright 2011–2016 OOjs UI Team and other contributors. - * Released under the MIT license - * http://oojs.mit-license.org - * - * Date: 2016-02-02T22:07:06Z - */ -@-webkit-keyframes oo-ui-progressBarWidget-slide { - from { - margin-left: -40%; - } - to { - margin-left: 100%; - } -} -@-moz-keyframes oo-ui-progressBarWidget-slide { - from { - margin-left: -40%; - } - to { - margin-left: 100%; - } -} -@-ms-keyframes oo-ui-progressBarWidget-slide { - from { - margin-left: -40%; - } - to { - margin-left: 100%; - } -} -@-o-keyframes oo-ui-progressBarWidget-slide { - from { - margin-left: -40%; - } - to { - margin-left: 100%; - } -} -@keyframes oo-ui-progressBarWidget-slide { - from { - margin-left: -40%; - } - to { - margin-left: 100%; - } -} -.oo-ui-popupTool .oo-ui-popupWidget-popup, -.oo-ui-popupTool .oo-ui-popupWidget-anchor { - z-index: 4; -} -.oo-ui-popupTool .oo-ui-popupWidget { - /* @noflip */ - margin-left: 1.25em; -} -.oo-ui-toolGroupTool > .oo-ui-popupToolGroup { - border: 0; - border-radius: 0; - margin: 0; -} -.oo-ui-toolGroupTool:first-child > .oo-ui-popupToolGroup { - border-top-left-radius: 0.3125em; - border-bottom-left-radius: 0.3125em; -} -.oo-ui-toolGroupTool:last-child > .oo-ui-popupToolGroup { - border-top-right-radius: 0.3125em; - border-bottom-right-radius: 0.3125em; -} -.oo-ui-toolGroupTool > .oo-ui-popupToolGroup > .oo-ui-popupToolGroup-handle { - height: 1.875em; - padding: 0.3125em; -} -.oo-ui-toolGroupTool > .oo-ui-popupToolGroup > .oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon { - height: 1.875em; - width: 1.875em; -} -.oo-ui-toolGroupTool > .oo-ui-popupToolGroup.oo-ui-labelElement > .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label { - line-height: 2.1em; -} -.oo-ui-toolGroup { - display: inline-block; - vertical-align: middle; - margin: 0.375em; - border-radius: 0.3125em; - border: 1px solid transparent; - -webkit-transition: border-color 250ms ease; - -moz-transition: border-color 250ms ease; - transition: border-color 250ms ease; -} -.oo-ui-toolGroup-empty { - display: none; -} -.oo-ui-toolGroup .oo-ui-tool-link { - text-decoration: none; -} -.oo-ui-toolbar-narrow .oo-ui-toolGroup + .oo-ui-toolGroup { - margin-left: 0; -} -.oo-ui-toolGroup.oo-ui-widget-enabled:hover { - border-color: rgba(0, 0, 0, 0.1); -} -.oo-ui-toolGroup.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-tool-title { - color: #000000; -} -.oo-ui-barToolGroup > .oo-ui-iconElement-icon, -.oo-ui-barToolGroup > .oo-ui-labelElement-label { - display: none; -} -.oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link { - cursor: pointer; -} -.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool { - display: inline-block; - position: relative; - vertical-align: top; -} -.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link { - display: block; -} -.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-tool-accel { - display: none; -} -.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-iconElement > .oo-ui-tool-link .oo-ui-iconElement-icon { - display: inline-block; - vertical-align: top; -} -.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-iconElement > .oo-ui-tool-link .oo-ui-tool-title { - display: none; -} -.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-iconElement.oo-ui-tool-with-label > .oo-ui-tool-link .oo-ui-tool-title { - display: inline; -} -.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-disabled > .oo-ui-tool-link { - outline: 0; - cursor: default; -} -.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool { - margin: -1px 0 -1px -1px; - border: 1px solid transparent; -} -.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool:first-child { - border-top-left-radius: 0.3125em; - border-bottom-left-radius: 0.3125em; -} -.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool:last-child { - margin-right: -1px; - border-top-right-radius: 0.3125em; - border-bottom-right-radius: 0.3125em; -} -.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link { - height: 1.875em; - padding: 0.3125em; -} -.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-iconElement-icon { - height: 1.875em; - width: 1.875em; -} -.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-tool-title { - line-height: 2.1em; -} -.oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-enabled:hover { - border-color: rgba(0, 0, 0, 0.2); -} -.oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-tool-active.oo-ui-widget-enabled { - border-color: rgba(0, 0, 0, 0.2); - box-shadow: inset 0 0.0875em 0.0875em 0 rgba(0, 0, 0, 0.07); - background-color: #f8fbfd; - background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #f1f7fb), color-stop(100%, #ffffff)); - background-image: -webkit-linear-gradient(top, #f1f7fb 0, #ffffff 100%); - background-image: -moz-linear-gradient(top, #f1f7fb 0, #ffffff 100%); - background-image: linear-gradient(to bottom, #f1f7fb 0, #ffffff 100%); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#fff1f7fb', endColorstr='#ffffffff' )"; -} -.oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-tool-active.oo-ui-widget-enabled + .oo-ui-tool-active.oo-ui-widget-enabled { - border-left-color: rgba(0, 0, 0, 0.1); -} -.oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-disabled > .oo-ui-tool-link:focus { - outline: 0; -} -.oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-disabled > .oo-ui-tool-link .oo-ui-tool-title { - color: #cccccc; -} -.oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-disabled > .oo-ui-tool-link .oo-ui-iconElement-icon { - opacity: 0.2; -} -.oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-enabled:hover > .oo-ui-tool-link .oo-ui-iconElement-icon { - opacity: 1; -} -.oo-ui-barToolGroup.oo-ui-widget-disabled > .oo-ui-toolGroup-tools > .oo-ui-tool:focus { - outline: 0; -} -.oo-ui-barToolGroup.oo-ui-widget-disabled > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link:focus { - outline: 0; -} -.oo-ui-barToolGroup.oo-ui-widget-disabled > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-tool-title { - color: #cccccc; -} -.oo-ui-barToolGroup.oo-ui-widget-disabled > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-iconElement-icon { - opacity: 0.2; -} -.oo-ui-popupToolGroup { - position: relative; - height: 2.5em; - min-width: 2.5em; -} -.oo-ui-popupToolGroup-handle { - display: block; - cursor: pointer; -} -.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator, -.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon { - position: absolute; -} -.oo-ui-popupToolGroup.oo-ui-widget-disabled .oo-ui-popupToolGroup-handle { - outline: 0; - cursor: default; -} -.oo-ui-popupToolGroup .oo-ui-toolGroup-tools { - display: none; - position: absolute; - z-index: 4; -} -.oo-ui-popupToolGroup-active.oo-ui-widget-enabled > .oo-ui-toolGroup-tools { - display: block; -} -.oo-ui-popupToolGroup-left > .oo-ui-toolGroup-tools { - left: 0; -} -.oo-ui-popupToolGroup-right > .oo-ui-toolGroup-tools { - right: 0; -} -.oo-ui-popupToolGroup .oo-ui-tool-link { - display: table; - width: 100%; - vertical-align: middle; - white-space: nowrap; -} -.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon, -.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel, -.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title { - display: table-cell; - vertical-align: middle; -} -.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel { - text-align: right; -} -.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel:not(:empty) { - padding-left: 3em; -} -.oo-ui-toolbar-narrow .oo-ui-popupToolGroup { - min-width: 1.875em; -} -.oo-ui-popupToolGroup.oo-ui-iconElement { - min-width: 3.125em; -} -.oo-ui-toolbar-narrow .oo-ui-popupToolGroup.oo-ui-iconElement { - min-width: 2.5em; -} -.oo-ui-popupToolGroup.oo-ui-indicatorElement.oo-ui-iconElement { - min-width: 4.375em; -} -.oo-ui-toolbar-narrow .oo-ui-popupToolGroup.oo-ui-indicatorElement.oo-ui-iconElement { - min-width: 3.75em; -} -.oo-ui-popupToolGroup.oo-ui-labelElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label { - line-height: 2.6em; - margin: 0 1em; -} -.oo-ui-toolbar-narrow .oo-ui-popupToolGroup.oo-ui-labelElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label { - margin: 0 0.5em; -} -.oo-ui-popupToolGroup.oo-ui-labelElement.oo-ui-iconElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label { - margin-left: 3em; -} -.oo-ui-toolbar-narrow .oo-ui-popupToolGroup.oo-ui-labelElement.oo-ui-iconElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label { - margin-left: 2.5em; -} -.oo-ui-popupToolGroup.oo-ui-labelElement.oo-ui-indicatorElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label { - margin-right: 2.25em; -} -.oo-ui-toolbar-narrow .oo-ui-popupToolGroup.oo-ui-labelElement.oo-ui-indicatorElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label { - margin-right: 1.75em; -} -.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator { - width: 0.9375em; - height: 0.9375em; - margin: 0.78125em; - top: 0; - right: 0; -} -.oo-ui-toolbar-narrow .oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator { - right: -0.3125em; -} -.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon { - width: 1.875em; - height: 1.875em; - margin: 0.3125em; - top: 0; - left: 0.3125em; -} -.oo-ui-toolbar-narrow .oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon { - left: 0; -} -.oo-ui-popupToolGroup-header { - line-height: 2.6em; - margin: 0 0.6em; - font-weight: bold; -} -.oo-ui-popupToolGroup-active.oo-ui-widget-enabled { - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; - box-shadow: inset 0 0.0875em 0.0875em 0 rgba(0, 0, 0, 0.07); - background-color: #f8fbfd; - background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #f1f7fb), color-stop(100%, #ffffff)); - background-image: -webkit-linear-gradient(top, #f1f7fb 0, #ffffff 100%); - background-image: -moz-linear-gradient(top, #f1f7fb 0, #ffffff 100%); - background-image: linear-gradient(to bottom, #f1f7fb 0, #ffffff 100%); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#fff1f7fb', endColorstr='#ffffffff' )"; -} -.oo-ui-popupToolGroup .oo-ui-toolGroup-tools { - top: 2.5em; - margin: 0 -1px; - border: 1px solid #cccccc; - background-color: white; - box-shadow: 0 0.3125em 1.25em rgba(0, 0, 0, 0.25); -} -.oo-ui-popupToolGroup .oo-ui-tool-link { - padding: 0.3125em 0 0.3125em 0.3125em; -} -.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon { - height: 1.875em; - width: 1.875em; - min-width: 1.875em; -} -.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title { - padding-left: 0.5em; -} -.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel, -.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title { - line-height: 2em; -} -.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel { - color: #888888; -} -.oo-ui-listToolGroup .oo-ui-tool { - display: block; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.oo-ui-listToolGroup .oo-ui-tool-link { - cursor: pointer; -} -.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link { - cursor: default; -} -.oo-ui-listToolGroup .oo-ui-toolGroup-tools { - padding: 0.3125em; -} -.oo-ui-listToolGroup.oo-ui-popupToolGroup-active { - border-color: rgba(0, 0, 0, 0.2); -} -.oo-ui-listToolGroup .oo-ui-tool { - border: 1px solid transparent; - margin: -1px 0; - padding: 0 0.625em 0 0; -} -.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled { - border-color: rgba(0, 0, 0, 0.1); - box-shadow: inset 0 0.0875em 0.0875em 0 rgba(0, 0, 0, 0.07); - background-color: #f8fbfd; - background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #f1f7fb), color-stop(100%, #ffffff)); - background-image: -webkit-linear-gradient(top, #f1f7fb 0, #ffffff 100%); - background-image: -moz-linear-gradient(top, #f1f7fb 0, #ffffff 100%); - background-image: linear-gradient(to bottom, #f1f7fb 0, #ffffff 100%); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#fff1f7fb', endColorstr='#ffffffff' )"; -} -.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled + .oo-ui-tool-active.oo-ui-widget-enabled { - border-top-color: rgba(0, 0, 0, 0.1); -} -.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled:hover { - border-color: rgba(0, 0, 0, 0.2); -} -.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover { - border-color: rgba(0, 0, 0, 0.2); -} -.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover .oo-ui-tool-link .oo-ui-iconElement-icon { - opacity: 1; -} -.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-tool-title { - color: #cccccc; -} -.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-tool-accel { - color: #dddddd; -} -.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconElement-icon { - opacity: 0.2; -} -.oo-ui-listToolGroup.oo-ui-widget-disabled { - color: #cccccc; -} -.oo-ui-listToolGroup.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator, -.oo-ui-listToolGroup.oo-ui-widget-disabled .oo-ui-iconElement-icon { - opacity: 0.2; -} -.oo-ui-menuToolGroup { - border-color: rgba(0, 0, 0, 0.1); -} -.oo-ui-menuToolGroup .oo-ui-tool { - display: block; -} -.oo-ui-menuToolGroup .oo-ui-tool-link { - cursor: pointer; -} -.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link { - cursor: default; -} -.oo-ui-menuToolGroup .oo-ui-popupToolGroup-handle { - min-width: 10em; -} -.oo-ui-toolbar-narrow .oo-ui-menuToolGroup .oo-ui-popupToolGroup-handle { - min-width: 8.125em; -} -.oo-ui-menuToolGroup .oo-ui-toolGroup-tools { - padding: 0.3125em 0 0.3125em 0; -} -.oo-ui-menuToolGroup.oo-ui-widget-enabled:hover { - border-color: rgba(0, 0, 0, 0.2); -} -.oo-ui-menuToolGroup.oo-ui-popupToolGroup-active { - border-color: rgba(0, 0, 0, 0.25); -} -.oo-ui-menuToolGroup .oo-ui-tool { - padding: 0 1.25em 0 0.3125em; -} -.oo-ui-menuToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon { - background-image: none; -} -.oo-ui-menuToolGroup .oo-ui-tool-active .oo-ui-tool-link .oo-ui-iconElement-icon { - background-image: url("themes/apex/images/icons/check.png"); - background-image: -webkit-linear-gradient(transparent, transparent), /* @embed */ url("themes/apex/images/icons/check.svg"); - background-image: linear-gradient(transparent, transparent), /* @embed */ url("themes/apex/images/icons/check.svg"); - background-image: -o-linear-gradient(transparent, transparent), url("themes/apex/images/icons/check.png"); - background-size: contain; - background-position: center center; - background-repeat: no-repeat; -} -.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover { - background-color: #e1f3ff; -} -.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-tool-title { - color: #cccccc; -} -.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconElement-icon { - opacity: 0.2; -} -.oo-ui-menuToolGroup.oo-ui-widget-disabled { - color: #cccccc; - border-color: rgba(0, 0, 0, 0.05); -} -.oo-ui-menuToolGroup.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator, -.oo-ui-menuToolGroup.oo-ui-widget-disabled .oo-ui-iconElement-icon { - opacity: 0.2; -} -.oo-ui-toolbar { - clear: both; -} -.oo-ui-toolbar-bar { - line-height: 1em; - position: relative; -} -.oo-ui-toolbar-actions { - float: right; -} -.oo-ui-toolbar-actions .oo-ui-toolbar { - display: inline-block; -} -.oo-ui-toolbar-tools { - display: inline; - white-space: nowrap; -} -.oo-ui-toolbar-narrow .oo-ui-toolbar-tools { - white-space: normal; -} -.oo-ui-toolbar-tools .oo-ui-tool { - white-space: normal; -} -.oo-ui-toolbar-tools, -.oo-ui-toolbar-actions, -.oo-ui-toolbar-shadow { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.oo-ui-toolbar-actions .oo-ui-popupWidget { - -webkit-touch-callout: default; - -webkit-user-select: all; - -moz-user-select: all; - -ms-user-select: all; - user-select: all; -} -.oo-ui-toolbar-shadow { - background-position: left top; - background-repeat: repeat-x; - position: absolute; - width: 100%; - pointer-events: none; -} -.oo-ui-toolbar-bar { - border-bottom: 1px solid #cccccc; - background-color: #f8fbfd; - background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #ffffff), color-stop(100%, #f1f7fb)); - background-image: -webkit-linear-gradient(top, #ffffff 0, #f1f7fb 100%); - background-image: -moz-linear-gradient(top, #ffffff 0, #f1f7fb 100%); - background-image: linear-gradient(to bottom, #ffffff 0, #f1f7fb 100%); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffffff', endColorstr='#fff1f7fb' )"; -} -.oo-ui-toolbar-bar .oo-ui-toolbar-bar { - border: none; - background: none; -} -.oo-ui-toolbar-actions > .oo-ui-buttonElement-framed, -.oo-ui-toolbar-actions > .oo-ui-buttonElement-framed:last-child { - margin-top: 0.4em; - margin-bottom: 0.4em; - margin-right: 0.5em; -} -.oo-ui-toolbar-actions > .oo-ui-buttonElement-frameless.oo-ui-labelElement, -.oo-ui-toolbar-actions > .oo-ui-buttonElement-frameless:last-child.oo-ui-labelElement { - margin: 0; -} -.oo-ui-toolbar-actions > .oo-ui-buttonElement-frameless.oo-ui-labelElement > .oo-ui-buttonElement-button, -.oo-ui-toolbar-actions > .oo-ui-buttonElement-frameless:last-child.oo-ui-labelElement > .oo-ui-buttonElement-button { - margin: 0; - padding: 0 0.3125em; -} -.oo-ui-toolbar-actions > .oo-ui-buttonElement-frameless.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label, -.oo-ui-toolbar-actions > .oo-ui-buttonElement-frameless:last-child.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { - margin: 0 1em; - line-height: 3.40625em; -} -.oo-ui-toolbar-shadow { - background-image: /* @embed */ url(themes/apex/images/toolbar-shadow.png); - bottom: -9px; - height: 9px; - opacity: 0.5; - -webkit-transition: opacity 500ms ease; - -moz-transition: opacity 500ms ease; - transition: opacity 500ms ease; -} - -/*! - * OOjs UI v0.15.2 - * https://www.mediawiki.org/wiki/OOjs_UI - * - * Copyright 2011–2016 OOjs UI Team and other contributors. - * Released under the MIT license - * http://oojs.mit-license.org - * - * Date: 2016-02-02T22:07:06Z - */ -@-webkit-keyframes oo-ui-progressBarWidget-slide { - from { - margin-left: -40%; - } - to { - margin-left: 100%; - } -} -@-moz-keyframes oo-ui-progressBarWidget-slide { - from { - margin-left: -40%; - } - to { - margin-left: 100%; - } -} -@-ms-keyframes oo-ui-progressBarWidget-slide { - from { - margin-left: -40%; - } - to { - margin-left: 100%; - } -} -@-o-keyframes oo-ui-progressBarWidget-slide { - from { - margin-left: -40%; - } - to { - margin-left: 100%; - } -} -@keyframes oo-ui-progressBarWidget-slide { - from { - margin-left: -40%; - } - to { - margin-left: 100%; - } -} -.oo-ui-actionWidget.oo-ui-pendingElement-pending { - background-image: /* @embed */ url(themes/apex/images/textures/pending.gif); -} -.oo-ui-window { - background-color: transparent; - background-image: none; -} -.oo-ui-window-frame { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.oo-ui-window-content:focus { - outline: none; -} -.oo-ui-window-head, -.oo-ui-window-foot { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.oo-ui-window-body { - margin: 0; - padding: 0; - background: none; -} -.oo-ui-window-overlay { - position: absolute; - top: 0; - /* @noflip */ - left: 0; -} -.oo-ui-dialog-content > .oo-ui-window-head, -.oo-ui-dialog-content > .oo-ui-window-body, -.oo-ui-dialog-content > .oo-ui-window-foot { - position: absolute; - left: 0; - right: 0; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.oo-ui-dialog-content > .oo-ui-window-head { - overflow: hidden; - z-index: 1; - top: 0; -} -.oo-ui-dialog-content > .oo-ui-window-body { - overflow: auto; - z-index: 2; - top: 0; - bottom: 0; -} -.oo-ui-dialog-content > .oo-ui-window-foot { - overflow: hidden; - z-index: 1; - bottom: 0; -} -.oo-ui-dialog-content > .oo-ui-window-body { - box-shadow: 0 0 0.66em rgba(0, 0, 0, 0.25); -} -.oo-ui-messageDialog-actions-horizontal { - display: table; - table-layout: fixed; - width: 100%; -} -.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget { - display: table-cell; - width: 1%; -} -.oo-ui-messageDialog-actions-vertical { - display: block; -} -.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget { - display: block; - overflow: hidden; - text-overflow: ellipsis; -} -.oo-ui-messageDialog-actions .oo-ui-actionWidget { - position: relative; - text-align: center; -} -.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-buttonElement-button { - display: block; -} -.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labelElement-label { - position: relative; - top: auto; - bottom: auto; - display: inline; - white-space: nowrap; -} -.oo-ui-messageDialog-content .oo-ui-window-body { - box-shadow: 0 0 0.33em rgba(0, 0, 0, 0.33); -} -.oo-ui-messageDialog-title, -.oo-ui-messageDialog-message { - display: block; - text-align: center; -} -.oo-ui-messageDialog-title.oo-ui-labelElement, -.oo-ui-messageDialog-message.oo-ui-labelElement { - padding-top: 0.5em; -} -.oo-ui-messageDialog-title { - font-size: 1.5em; - line-height: 1em; - color: #000000; -} -.oo-ui-messageDialog-message { - font-size: 0.9em; - line-height: 1.25em; - color: #666666; -} -.oo-ui-messageDialog-message-verbose { - font-size: 1.1em; - line-height: 1.5em; - text-align: left; -} -.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget { - border-right: 1px solid #e5e5e5; - margin: 0; -} -.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget:last-child { - border-right-width: 0; -} -.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget { - border-bottom: 1px solid #e5e5e5; - margin: 0; -} -.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget:last-child { - border-bottom-width: 0; -} -.oo-ui-messageDialog-actions .oo-ui-actionWidget { - height: 3.4em; - margin-right: 0; -} -.oo-ui-messageDialog-actions .oo-ui-actionWidget:last-child { - margin-right: 0; -} -.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-labelElement .oo-ui-labelElement-label { - text-align: center; - line-height: 3.4em; - padding: 0 2em; -} -.oo-ui-messageDialog-actions .oo-ui-actionWidget:hover { - background-color: rgba(0, 0, 0, 0.05); -} -.oo-ui-messageDialog-actions .oo-ui-actionWidget:active { - background-color: rgba(0, 0, 0, 0.1); -} -.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-progressive:hover { - background-color: rgba(8, 126, 204, 0.05); -} -.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-progressive:active { - background-color: rgba(8, 126, 204, 0.1); -} -.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-progressive .oo-ui-labelElement-label { - font-weight: bold; -} -.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:hover { - background-color: rgba(118, 171, 54, 0.05); -} -.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:active { - background-color: rgba(118, 171, 54, 0.1); -} -.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:hover { - background-color: rgba(212, 83, 83, 0.05); -} -.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:active { - background-color: rgba(212, 83, 83, 0.1); -} -.oo-ui-processDialog-location { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.oo-ui-processDialog-title { - display: inline; - padding: 0; -} -.oo-ui-processDialog-actions-safe .oo-ui-actionWidget, -.oo-ui-processDialog-actions-primary .oo-ui-actionWidget, -.oo-ui-processDialog-actions-other .oo-ui-actionWidget { - white-space: nowrap; -} -.oo-ui-processDialog-actions-safe, -.oo-ui-processDialog-actions-primary { - position: absolute; - top: 0; - bottom: 0; -} -.oo-ui-processDialog-actions-safe { - left: 0; -} -.oo-ui-processDialog-actions-primary { - right: 0; -} -.oo-ui-processDialog-errors { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 2; - overflow-x: hidden; - overflow-y: auto; -} -.oo-ui-processDialog-content .oo-ui-window-head { - height: 3.4em; -} -.oo-ui-processDialog-content .oo-ui-window-body { - top: 3.4em; - box-shadow: 0 0 0.33em rgba(0, 0, 0, 0.33); -} -.oo-ui-processDialog-navigation { - position: relative; - height: 3.4em; - padding: 0 1em; -} -.oo-ui-processDialog-location { - padding: 0.75em 0; - height: 1.875em; - cursor: default; - text-align: center; -} -.oo-ui-processDialog-title { - font-weight: bold; - line-height: 1.875em; -} -.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-buttonElement-button, -.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-buttonElement-button, -.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-buttonElement-button { - min-width: 1.875em; - min-height: 1.875em; -} -.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-labelElement-label, -.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-labelElement-label, -.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-labelElement-label { - line-height: 1.875em; -} -.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-iconElement-icon, -.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-iconElement-icon, -.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-iconElement-icon { - margin-top: -0.125em; -} -.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-framed, -.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-framed, -.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-framed { - margin: 0.75em; -} -.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button, -.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button, -.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button { - padding: 0 1em; - vertical-align: middle; - margin: -1px; -} -.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless, -.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless, -.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-frameless { - margin: 0; -} -.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless .oo-ui-buttonElement-button, -.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless .oo-ui-buttonElement-button, -.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-frameless .oo-ui-buttonElement-button { - padding: 0.75em 1em; - vertical-align: middle; -} -.oo-ui-processDialog-actions-safe .oo-ui-actionWidget:hover, -.oo-ui-processDialog-actions-primary .oo-ui-actionWidget:hover { - background-color: rgba(0, 0, 0, 0.05); -} -.oo-ui-processDialog-actions-safe .oo-ui-actionWidget:active, -.oo-ui-processDialog-actions-primary .oo-ui-actionWidget:active { - background-color: rgba(0, 0, 0, 0.1); -} -.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-progressive:hover, -.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-progressive:hover { - background-color: rgba(8, 126, 204, 0.05); -} -.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-progressive:active, -.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-progressive:active { - background-color: rgba(8, 126, 204, 0.1); -} -.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-progressive .oo-ui-labelElement-label, -.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-progressive .oo-ui-labelElement-label { - font-weight: bold; -} -.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:hover, -.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:hover { - background-color: rgba(118, 171, 54, 0.05); -} -.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:active, -.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:active { - background-color: rgba(118, 171, 54, 0.1); -} -.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:hover, -.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:hover { - background-color: rgba(212, 83, 83, 0.05); -} -.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:active, -.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:active { - background-color: rgba(212, 83, 83, 0.1); -} -.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement { - margin-right: 0; -} -.oo-ui-processDialog > .oo-ui-window-frame { - min-height: 5em; -} -.oo-ui-processDialog-errors { - background-color: rgba(255, 255, 255, 0.9); - padding: 3em 3em 1.5em 3em; - text-align: center; -} -.oo-ui-processDialog-errors .oo-ui-buttonWidget { - margin: 2em 1em 2em 1em; -} -.oo-ui-processDialog-errors-title { - font-size: 1.5em; - color: #000000; - margin-bottom: 2em; -} -.oo-ui-processDialog-error { - text-align: left; - margin: 1em; - padding: 1em; - border: 1px solid #ff9e9e; - background-color: #fff7f7; - border-radius: 0.25em; -} -.oo-ui-windowManager-modal > .oo-ui-dialog { - position: fixed; - width: 0; - height: 0; - overflow: hidden; -} -.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-active { - width: auto; - height: auto; - top: 0; - right: 0; - bottom: 0; - left: 0; - padding: 1em; -} -.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup > .oo-ui-window-frame { - position: absolute; - right: 0; - left: 0; - margin: auto; - overflow: hidden; - max-width: 100%; - max-height: 100%; -} -.oo-ui-windowManager-fullscreen > .oo-ui-dialog > .oo-ui-window-frame { - width: 100%; - height: 100%; - top: 0; - bottom: 0; -} -.oo-ui-windowManager-modal > .oo-ui-dialog { - background-color: rgba(255, 255, 255, 0.5); - opacity: 0; - -webkit-transition: opacity 250ms ease; - -moz-transition: opacity 250ms ease; - transition: opacity 250ms ease; -} -.oo-ui-windowManager-modal > .oo-ui-dialog > .oo-ui-window-frame { - background-color: #ffffff; - opacity: 0; - -webkit-transform: scale(0.5); - -moz-transform: scale(0.5); - -ms-transform: scale(0.5); - transform: scale(0.5); - -webkit-transition: all 250ms ease; - -moz-transition: all 250ms ease; - transition: all 250ms ease; -} -.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup { - opacity: 1; -} -.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready > .oo-ui-window-frame { - opacity: 1; - -webkit-transform: scale(1); - -moz-transform: scale(1); - -ms-transform: scale(1); - transform: scale(1); -} -.oo-ui-windowManager-modal.oo-ui-windowManager-floating > .oo-ui-dialog > .oo-ui-window-frame { - top: 1em; - bottom: 1em; - border: 1px solid #cccccc; - border-radius: 0.5em; - box-shadow: 0 0.2em 1em rgba(0, 0, 0, 0.3); -} diff --git a/resources/lib/oojs-ui/oojs-ui-core-apex.css b/resources/lib/oojs-ui/oojs-ui-core-apex.css new file mode 100644 index 0000000000..168ab71e3f --- /dev/null +++ b/resources/lib/oojs-ui/oojs-ui-core-apex.css @@ -0,0 +1,1128 @@ +/*! + * OOjs UI v0.15.2 + * https://www.mediawiki.org/wiki/OOjs_UI + * + * Copyright 2011–2016 OOjs UI Team and other contributors. + * Released under the MIT license + * http://oojs.mit-license.org + * + * Date: 2016-02-02T22:07:06Z + */ +@-webkit-keyframes oo-ui-progressBarWidget-slide { + from { + margin-left: -40%; + } + to { + margin-left: 100%; + } +} +@-moz-keyframes oo-ui-progressBarWidget-slide { + from { + margin-left: -40%; + } + to { + margin-left: 100%; + } +} +@-ms-keyframes oo-ui-progressBarWidget-slide { + from { + margin-left: -40%; + } + to { + margin-left: 100%; + } +} +@-o-keyframes oo-ui-progressBarWidget-slide { + from { + margin-left: -40%; + } + to { + margin-left: 100%; + } +} +@keyframes oo-ui-progressBarWidget-slide { + from { + margin-left: -40%; + } + to { + margin-left: 100%; + } +} +.oo-ui-element-hidden { + display: none !important; +} +.oo-ui-buttonElement > .oo-ui-buttonElement-button { + cursor: pointer; + display: inline-block; + vertical-align: middle; + font: inherit; + white-space: nowrap; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon, +.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator { + display: none; +} +.oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button { + cursor: default; +} +.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator, +.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { + display: inline-block; + vertical-align: middle; +} +.oo-ui-buttonElement-frameless { + display: inline-block; + position: relative; +} +.oo-ui-buttonElement-frameless.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { + display: inline-block; + vertical-align: middle; +} +.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button { + display: inline-block; + vertical-align: top; + text-align: center; +} +.oo-ui-buttonElement-framed.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { + display: inline-block; + vertical-align: middle; +} +.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button, +.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button, +.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button { + cursor: default; +} +.oo-ui-buttonElement > .oo-ui-buttonElement-button { + color: #333333; +} +.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { + margin-left: 0; +} +.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator { + width: 0.9375em; + height: 0.9375em; + margin: 0.46875em; +} +.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator { + margin-left: 0.46875em; +} +.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { + width: 1.875em; + height: 1.875em; +} +.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:hover, +.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:focus { + outline: none; +} +.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:hover > .oo-ui-iconElement-icon, +.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:focus > .oo-ui-iconElement-icon { + opacity: 1; +} +.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:hover > .oo-ui-labelElement-label, +.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:focus > .oo-ui-labelElement-label { + color: #000000; +} +.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { + color: #333333; +} +.oo-ui-buttonElement-frameless.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { + margin-left: 0.25em; +} +.oo-ui-buttonElement-frameless > input.oo-ui-buttonElement-button { + padding-left: 0.25em; + color: #333333; +} +.oo-ui-buttonElement-frameless > input.oo-ui-buttonElement-button:hover, +.oo-ui-buttonElement-frameless > input.oo-ui-buttonElement-button:focus { + color: #000000; +} +.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { + color: #087ecc; +} +.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { + color: #76ab36; +} +.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { + color: #d45353; +} +.oo-ui-buttonElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { + opacity: 0.2; +} +.oo-ui-buttonElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { + color: #cccccc; +} +.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button { + padding: 0.2em 0.8em; + border-radius: 0.3em; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5); + border: 1px #c9c9c9 solid; + -webkit-transition: border-color 100ms ease; + -moz-transition: border-color 100ms ease; + transition: border-color 100ms ease; + background-color: #eeeeee; + background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #ffffff), color-stop(100%, #dddddd)); + background-image: -webkit-linear-gradient(top, #ffffff 0, #dddddd 100%); + background-image: -moz-linear-gradient(top, #ffffff 0, #dddddd 100%); + background-image: linear-gradient(to bottom, #ffffff 0, #dddddd 100%); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffffff', endColorstr='#ffdddddd' )"; +} +.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button:hover, +.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button:focus { + border-color: #aaaaaa; + outline: none; +} +.oo-ui-buttonElement-framed > input.oo-ui-buttonElement-button, +.oo-ui-buttonElement-framed.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { + line-height: 1.875em; +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active, +.oo-ui-buttonElement-framed.oo-ui-buttonElement-active > .oo-ui-buttonElement-button, +.oo-ui-buttonElement-framed.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button { + box-shadow: inset 0 1px 4px 0 rgba(0, 0, 0, 0.07); + color: black; + border-color: #c9c9c9; + background-color: #eeeeee; + background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #dddddd), color-stop(100%, #ffffff)); + background-image: -webkit-linear-gradient(top, #dddddd 0, #ffffff 100%); + background-image: -moz-linear-gradient(top, #dddddd 0, #ffffff 100%); + background-image: linear-gradient(to bottom, #dddddd 0, #ffffff 100%); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffdddddd', endColorstr='#ffffffff' )"; +} +.oo-ui-buttonElement-framed.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { + margin-left: -0.5em; + margin-right: -0.5em; +} +.oo-ui-buttonElement-framed.oo-ui-iconElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { + margin-right: 0.3em; +} +.oo-ui-buttonElement-framed.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator { + margin-left: -0.005em; + margin-right: -0.005em; +} +.oo-ui-buttonElement-framed.oo-ui-indicatorElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator, +.oo-ui-buttonElement-framed.oo-ui-indicatorElement.oo-ui-iconElement:not( .oo-ui-labelElement ) > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator { + margin-left: 0.46875em; + margin-right: -0.275em; +} +.oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button { + border: 1px solid #a6cee1; + background-color: #cde7f4; + background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #eaf4fa), color-stop(100%, #b0d9ee)); + background-image: -webkit-linear-gradient(top, #eaf4fa 0, #b0d9ee 100%); + background-image: -moz-linear-gradient(top, #eaf4fa 0, #b0d9ee 100%); + background-image: linear-gradient(to bottom, #eaf4fa 0, #b0d9ee 100%); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffeaf4fa', endColorstr='#ffb0d9ee' )"; +} +.oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:hover, +.oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:focus { + border-color: #9dc2d4; +} +.oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active, +.oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button, +.oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button { + border: 1px solid #a6cee1; + background-color: #cde7f4; + background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #b0d9ee), color-stop(100%, #eaf4fa)); + background-image: -webkit-linear-gradient(top, #b0d9ee 0, #eaf4fa 100%); + background-image: -moz-linear-gradient(top, #b0d9ee 0, #eaf4fa 100%); + background-image: linear-gradient(to bottom, #b0d9ee 0, #eaf4fa 100%); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffb0d9ee', endColorstr='#ffeaf4fa' )"; +} +.oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button { + border: 1px solid #b8d892; + background-color: #daf0bd; + background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #f0fbe1), color-stop(100%, #c3e59a)); + background-image: -webkit-linear-gradient(top, #f0fbe1 0, #c3e59a 100%); + background-image: -moz-linear-gradient(top, #f0fbe1 0, #c3e59a 100%); + background-image: linear-gradient(to bottom, #f0fbe1 0, #c3e59a 100%); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#fff0fbe1', endColorstr='#ffc3e59a' )"; +} +.oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:hover, +.oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:focus { + border-color: #adcb89; +} +.oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active, +.oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button, +.oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button { + border: 1px solid #b8d892; + background-color: #daf0bd; + background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #c3e59a), color-stop(100%, #f0fbe1)); + background-image: -webkit-linear-gradient(top, #c3e59a 0, #f0fbe1 100%); + background-image: -moz-linear-gradient(top, #c3e59a 0, #f0fbe1 100%); + background-image: linear-gradient(to bottom, #c3e59a 0, #f0fbe1 100%); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffc3e59a', endColorstr='#fff0fbe1' )"; +} +.oo-ui-buttonElement-framed.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button { + color: #d45353; +} +.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button, +.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button, +.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button { + opacity: 0.5; + -webkit-transform: translate3d(0, 0, 0); + box-shadow: none; + color: #333333; + background: #eeeeee; + border-color: #cccccc; +} +.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button:hover, +.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button:hover, +.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button:hover, +.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button:focus, +.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button:focus, +.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button:focus { + border-color: #cccccc; + box-shadow: none; +} +.oo-ui-clippableElement-clippable { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.oo-ui-iconElement .oo-ui-iconElement-icon, +.oo-ui-iconElement.oo-ui-iconElement-icon { + background-size: contain; + background-position: center center; + background-repeat: no-repeat; +} +.oo-ui-iconElement .oo-ui-iconElement-icon, +.oo-ui-iconElement.oo-ui-iconElement-icon { + opacity: 0.8; +} +.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator, +.oo-ui-indicatorElement.oo-ui-indicatorElement-indicator { + background-size: contain; + background-position: center center; + background-repeat: no-repeat; +} +.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator, +.oo-ui-indicatorElement.oo-ui-indicatorElement-indicator { + opacity: 0.8; +} +.oo-ui-pendingElement-pending { + background-image: /* @embed */ url(themes/apex/images/textures/pending.gif); +} +.oo-ui-fieldLayout { + display: block; + margin-bottom: 1em; +} +.oo-ui-fieldLayout:before, +.oo-ui-fieldLayout:after { + content: " "; + display: table; +} +.oo-ui-fieldLayout:after { + clear: both; +} +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label, +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label, +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field, +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field { + display: block; + float: left; +} +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label { + text-align: right; +} +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body { + display: table; +} +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label, +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field { + display: table-cell; + vertical-align: middle; +} +.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-top > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label { + display: inline-block; +} +.oo-ui-fieldLayout > .oo-ui-fieldLayout-help { + float: right; +} +.oo-ui-fieldLayout > .oo-ui-fieldLayout-help > .oo-ui-popupWidget > .oo-ui-popupWidget-popup { + z-index: 1; +} +.oo-ui-fieldLayout > .oo-ui-fieldLayout-help .oo-ui-fieldLayout-help-content { + padding: 0.5em 0.75em; + line-height: 1.5em; +} +.oo-ui-fieldLayout:last-child { + margin-bottom: 0; +} +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label, +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label { + padding-top: 0.5em; + margin-right: 5%; + width: 35%; +} +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field, +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field { + width: 60%; +} +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline { + margin-bottom: 1.25em; +} +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label { + padding: 0.25em 0.25em 0.25em 0.5em; +} +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label { + padding: 0.5em 0; +} +.oo-ui-fieldLayout > .oo-ui-popupButtonWidget { + margin-right: 0; + margin-top: 0.25em; +} +.oo-ui-fieldLayout > .oo-ui-popupButtonWidget:last-child { + margin-right: 0; +} +.oo-ui-fieldLayout-disabled > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label { + color: #cccccc; +} +.oo-ui-fieldLayout-messages { + list-style: none none; + margin: 0; + padding: 0; + margin-top: 0.25em; + margin-left: 0.25em; +} +.oo-ui-fieldLayout-messages > li { + margin: 0; + padding: 0; +} +.oo-ui-fieldLayout-messages .oo-ui-iconWidget { + display: none; +} +.oo-ui-fieldLayout-messages .oo-ui-fieldLayout-messages-error { + color: #d45353; +} +.oo-ui-fieldLayout-messages .oo-ui-labelWidget { + padding: 0; + line-height: 1.875em; + vertical-align: middle; +} +.oo-ui-actionFieldLayout-input, +.oo-ui-actionFieldLayout-button { + display: table-cell; + vertical-align: middle; +} +.oo-ui-actionFieldLayout-input { + padding-right: 1em; +} +.oo-ui-actionFieldLayout-button { + width: 1%; + white-space: nowrap; +} +.oo-ui-fieldsetLayout { + position: relative; + margin: 0; + padding: 0; + border: none; +} +.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon { + display: block; + position: absolute; +} +.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-labelElement-label { + display: inline-block; +} +.oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-help { + float: right; +} +.oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-help > .oo-ui-popupWidget > .oo-ui-popupWidget-popup { + z-index: 1; +} +.oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-help .oo-ui-fieldsetLayout-help-content { + padding: 0.5em 0.75em; + line-height: 1.5em; +} +.oo-ui-fieldsetLayout + .oo-ui-fieldsetLayout, +.oo-ui-fieldsetLayout + .oo-ui-formLayout { + margin-top: 2em; +} +.oo-ui-fieldsetLayout > .oo-ui-labelElement-label { + font-size: 1.1em; + margin-bottom: 0.5em; + padding: 0.25em 0; + font-weight: bold; +} +.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-labelElement-label { + padding-left: 2em; + line-height: 1.8em; +} +.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon { + left: 0; + top: 0.25em; + width: 1.875em; + height: 1.875em; +} +.oo-ui-fieldsetLayout > .oo-ui-popupButtonWidget { + margin-right: 0; +} +.oo-ui-fieldsetLayout > .oo-ui-popupButtonWidget:last-child { + margin-right: 0; +} +.oo-ui-formLayout + .oo-ui-fieldsetLayout, +.oo-ui-formLayout + .oo-ui-formLayout { + margin-top: 2em; +} +.oo-ui-panelLayout { + position: relative; +} +.oo-ui-panelLayout-scrollable { + overflow-y: auto; +} +.oo-ui-panelLayout-expanded { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; +} +.oo-ui-panelLayout-padded { + padding: 1.25em; +} +.oo-ui-panelLayout-framed { + border-radius: 0.5em; + box-shadow: 0 0.25em 1em rgba(0, 0, 0, 0.25); +} +.oo-ui-panelLayout-padded.oo-ui-panelLayout-framed { + margin: 1em 0; +} +.oo-ui-horizontalLayout > .oo-ui-widget { + display: inline-block; + vertical-align: middle; +} +.oo-ui-horizontalLayout > .oo-ui-layout { + display: inline-block; +} +.oo-ui-horizontalLayout > .oo-ui-layout, +.oo-ui-horizontalLayout > .oo-ui-widget { + margin-right: 0.5em; +} +.oo-ui-horizontalLayout > .oo-ui-layout:last-child, +.oo-ui-horizontalLayout > .oo-ui-widget:last-child { + margin-right: 0; +} +.oo-ui-horizontalLayout > .oo-ui-layout { + margin-bottom: 0; +} +.oo-ui-optionWidget { + position: relative; + display: block; + padding: 0.25em 0.5em; + border: none; +} +.oo-ui-optionWidget.oo-ui-widget-enabled { + cursor: pointer; +} +.oo-ui-optionWidget.oo-ui-labelElement .oo-ui-labelElement-label { + display: block; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.oo-ui-optionWidget-highlighted { + background-color: #e1f3ff; +} +.oo-ui-optionWidget .oo-ui-labelElement-label { + line-height: 1.5em; +} +.oo-ui-selectWidget-depressed .oo-ui-optionWidget-selected { + background-color: #a7dcff; +} +.oo-ui-selectWidget-pressed .oo-ui-optionWidget-pressed, +.oo-ui-selectWidget-pressed .oo-ui-optionWidget-pressed.oo-ui-optionWidget-highlighted, +.oo-ui-selectWidget-pressed .oo-ui-optionWidget-pressed.oo-ui-optionWidget-highlighted.oo-ui-optionWidget-selected { + background-color: #a7dcff; +} +.oo-ui-optionWidget.oo-ui-widget-disabled { + color: #cccccc; +} +.oo-ui-decoratedOptionWidget { + padding: 0.5em 2em 0.5em 3em; +} +.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon, +.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator { + position: absolute; +} +.oo-ui-decoratedOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon, +.oo-ui-decoratedOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator { + top: 0; + height: 100%; +} +.oo-ui-decoratedOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon { + width: 1.875em; + left: 0.5em; +} +.oo-ui-decoratedOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator { + width: 0.9375em; + right: 0.5em; +} +.oo-ui-decoratedOptionWidget.oo-ui-widget-disabled .oo-ui-iconElement-icon, +.oo-ui-decoratedOptionWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator { + opacity: 0.2; +} +.oo-ui-radioSelectWidget { + padding: 0.75em 0 0.5em 0; +} +.oo-ui-radioOptionWidget { + cursor: default; + padding: 0; + background-color: transparent; +} +.oo-ui-radioOptionWidget .oo-ui-radioInputWidget, +.oo-ui-radioOptionWidget.oo-ui-labelElement .oo-ui-labelElement-label { + display: inline-block; + vertical-align: middle; +} +.oo-ui-radioOptionWidget.oo-ui-optionWidget-selected, +.oo-ui-radioOptionWidget.oo-ui-optionWidget-pressed, +.oo-ui-radioOptionWidget.oo-ui-optionWidget-highlighted { + background-color: transparent; +} +.oo-ui-radioOptionWidget.oo-ui-labelElement .oo-ui-labelElement-label { + padding-left: 0.5em; +} +.oo-ui-radioOptionWidget .oo-ui-radioInputWidget { + margin-right: 0; +} +.oo-ui-labelWidget { + display: inline-block; + padding: 0.5em 0; +} +.oo-ui-iconWidget { + display: inline-block; + vertical-align: middle; + line-height: 2.5em; + height: 1.875em; + width: 1.875em; +} +.oo-ui-iconWidget.oo-ui-widget-disabled { + opacity: 0.2; +} +.oo-ui-indicatorWidget { + display: inline-block; + vertical-align: middle; + line-height: 2.5em; + height: 0.9375em; + width: 0.9375em; + margin: 0.46875em; +} +.oo-ui-indicatorWidget.oo-ui-widget-disabled { + opacity: 0.2; +} +.oo-ui-buttonWidget { + display: inline-block; + vertical-align: middle; + margin-right: 0.5em; +} +.oo-ui-buttonWidget:last-child { + margin-right: 0; +} +.oo-ui-buttonGroupWidget { + display: inline-block; + white-space: nowrap; + border-radius: 0.3em; + margin-right: 0.5em; +} +.oo-ui-buttonGroupWidget:last-child { + margin-right: 0; +} +.oo-ui-buttonGroupWidget .oo-ui-buttonElement { + margin-right: 0; +} +.oo-ui-buttonGroupWidget .oo-ui-buttonElement:last-child { + margin-right: 0; +} +.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed .oo-ui-buttonElement-button { + border-radius: 0; + margin-left: -1px; +} +.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:first-child .oo-ui-buttonElement-button { + border-bottom-left-radius: 0.3em; + border-top-left-radius: 0.3em; + margin-left: 0; +} +.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:last-child .oo-ui-buttonElement-button { + border-bottom-right-radius: 0.3em; + border-top-right-radius: 0.3em; +} +.oo-ui-popupWidget { + position: absolute; + /* @noflip */ + left: 0; +} +.oo-ui-popupWidget-popup { + position: relative; + overflow: hidden; + z-index: 1; +} +.oo-ui-popupWidget-anchor { + display: none; + z-index: 1; +} +.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor { + display: block; + position: absolute; + top: 0; + /* @noflip */ + left: 0; + background-repeat: no-repeat; +} +.oo-ui-popupWidget-head { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.oo-ui-popupWidget-head > .oo-ui-buttonWidget { + float: right; +} +.oo-ui-popupWidget-head > .oo-ui-labelElement-label { + float: left; + cursor: default; +} +.oo-ui-popupWidget-body { + clear: both; + overflow: hidden; +} +.oo-ui-popupWidget-popup { + background-color: #ffffff; + border: 1px solid #cccccc; + border-radius: 0.25em; + box-shadow: 0 0.15em 0.5em 0 rgba(0, 0, 0, 0.2); +} +.oo-ui-popupWidget-anchored .oo-ui-popupWidget-popup { + margin-top: 6px; +} +.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:before, +.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:after { + content: ""; + position: absolute; + width: 0; + height: 0; + border-style: solid; + border-color: transparent; + border-top: 0; +} +.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:before { + bottom: -7px; + left: -6px; + border-bottom-color: #aaaaaa; + border-width: 7px; +} +.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:after { + bottom: -7px; + left: -5px; + border-bottom-color: #ffffff; + border-width: 6px; +} +.oo-ui-popupWidget-transitioning .oo-ui-popupWidget-popup { + -webkit-transition: width 100ms ease, height 100ms ease, left 100ms ease; + -moz-transition: width 100ms ease, height 100ms ease, left 100ms ease; + transition: width 100ms ease, height 100ms ease, left 100ms ease; +} +.oo-ui-popupWidget-head { + height: 2.5em; +} +.oo-ui-popupWidget-head > .oo-ui-buttonWidget { + margin: 0.25em; +} +.oo-ui-popupWidget-head > .oo-ui-labelElement-label { + margin: 0.75em 1em; +} +.oo-ui-popupWidget-body-padded { + padding: 0 1em; +} +.oo-ui-popupButtonWidget { + position: relative; +} +.oo-ui-popupButtonWidget .oo-ui-popupWidget { + position: absolute; + cursor: auto; +} +.oo-ui-popupButtonWidget.oo-ui-buttonElement-frameless > .oo-ui-popupWidget { + /* @noflip */ + left: 1em; +} +.oo-ui-popupButtonWidget.oo-ui-buttonElement-framed > .oo-ui-popupWidget { + /* @noflip */ + left: 1.25em; +} +.oo-ui-inputWidget { + margin-right: 0.5em; +} +.oo-ui-inputWidget:last-child { + margin-right: 0; +} +.oo-ui-buttonInputWidget { + display: inline-block; + vertical-align: middle; +} +.oo-ui-buttonInputWidget > button, +.oo-ui-buttonInputWidget > input { + border: 0; + padding: 0; + background-color: transparent; +} +.oo-ui-dropdownInputWidget { + position: relative; + vertical-align: middle; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + max-width: 50em; +} +.oo-ui-dropdownInputWidget select { + display: inline-block; + width: 100%; + resize: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.oo-ui-dropdownInputWidget select { + background-color: #ffffff; + height: 2.5em; + padding: 0.5em; + font-size: inherit; + font-family: inherit; + border: 1px solid rgba(0, 0, 0, 0.1); + border-radius: 0.25em; +} +.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:hover, +.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:focus { + border-color: rgba(0, 0, 0, 0.2); + outline: none; +} +.oo-ui-dropdownInputWidget.oo-ui-widget-disabled select { + color: #cccccc; + border-color: #dddddd; + background-color: #f3f3f3; +} +.oo-ui-radioSelectInputWidget .oo-ui-fieldLayout { + margin-bottom: 0; +} +.oo-ui-textInputWidget { + position: relative; + vertical-align: middle; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + max-width: 50em; +} +.oo-ui-textInputWidget input, +.oo-ui-textInputWidget textarea { + display: inline-block; + width: 100%; + resize: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.oo-ui-textInputWidget textarea { + overflow: auto; +} +.oo-ui-textInputWidget input[type="search"] { + -webkit-appearance: none; +} +.oo-ui-textInputWidget input[type="search"]::-ms-clear { + display: none; +} +.oo-ui-textInputWidget input[type="search"]::-ms-reveal { + display: none; +} +.oo-ui-textInputWidget input[type="search"]::-webkit-search-decoration, +.oo-ui-textInputWidget input[type="search"]::-webkit-search-cancel-button, +.oo-ui-textInputWidget input[type="search"]::-webkit-search-results-button, +.oo-ui-textInputWidget input[type="search"]::-webkit-search-results-decoration { + display: none; +} +.oo-ui-textInputWidget > .oo-ui-iconElement-icon, +.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator, +.oo-ui-textInputWidget > .oo-ui-labelElement-label { + display: none; +} +.oo-ui-textInputWidget.oo-ui-iconElement > .oo-ui-iconElement-icon, +.oo-ui-textInputWidget.oo-ui-indicatorElement > .oo-ui-indicatorElement-indicator { + display: block; + position: absolute; + top: 0; + height: 100%; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.oo-ui-textInputWidget.oo-ui-widget-enabled > .oo-ui-iconElement-icon, +.oo-ui-textInputWidget.oo-ui-widget-enabled > .oo-ui-indicatorElement-indicator { + cursor: text; +} +.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-textInputWidget-type-search > .oo-ui-indicatorElement-indicator { + cursor: pointer; +} +.oo-ui-textInputWidget.oo-ui-labelElement > .oo-ui-labelElement-label { + display: block; +} +.oo-ui-textInputWidget > .oo-ui-iconElement-icon { + left: 0; +} +.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator { + right: 0; +} +.oo-ui-textInputWidget > .oo-ui-labelElement-label { + position: absolute; + top: 0; +} +.oo-ui-textInputWidget-labelPosition-after > .oo-ui-labelElement-label { + right: 0; +} +.oo-ui-textInputWidget-labelPosition-before > .oo-ui-labelElement-label { + left: 0; +} +.oo-ui-textInputWidget input, +.oo-ui-textInputWidget textarea { + padding: 0.5em; + line-height: 1.275em; + font-size: inherit; + font-family: inherit; + background-color: #ffffff; + color: black; + border: 1px solid #cccccc; + box-shadow: 0 0 0 white, inset 0 0.1em 0.2em #dddddd; + border-radius: 0.25em; + -webkit-transition: border-color 250ms ease, box-shadow 250ms ease; + -moz-transition: border-color 250ms ease, box-shadow 250ms ease; + transition: border-color 250ms ease, box-shadow 250ms ease; +} +.oo-ui-textInputWidget input.oo-ui-pendingElement-pending, +.oo-ui-textInputWidget textarea.oo-ui-pendingElement-pending { + background-color: transparent; +} +.oo-ui-textInputWidget.oo-ui-widget-enabled input:focus, +.oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus { + outline: none; + border-color: #a7dcff; + box-shadow: 0 0 0.3em #a7dcff, 0 0 0 white; +} +.oo-ui-textInputWidget.oo-ui-widget-enabled input[readonly], +.oo-ui-textInputWidget.oo-ui-widget-enabled textarea[readonly] { + color: #777777; +} +.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid input, +.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid textarea { + background-color: #ffdddd; +} +.oo-ui-textInputWidget.oo-ui-widget-disabled input, +.oo-ui-textInputWidget.oo-ui-widget-disabled textarea { + color: #cccccc; + text-shadow: 0 1px 1px #ffffff; + border-color: #dddddd; + background-color: #f3f3f3; +} +.oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-iconElement-icon, +.oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator { + opacity: 0.2; +} +.oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-labelElement-label { + color: #dddddd; + text-shadow: 0 1px 1px #ffffff; +} +.oo-ui-textInputWidget.oo-ui-iconElement input, +.oo-ui-textInputWidget.oo-ui-iconElement textarea { + padding-left: 2.475em; +} +.oo-ui-textInputWidget.oo-ui-iconElement .oo-ui-iconElement-icon { + width: 1.875em; + max-height: 2.375em; + margin-left: 0.3em; +} +.oo-ui-textInputWidget.oo-ui-indicatorElement input, +.oo-ui-textInputWidget.oo-ui-indicatorElement textarea { + padding-right: 2.4875em; +} +.oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator { + width: 0.9375em; + max-height: 2.375em; + margin-right: 0.775em; +} +.oo-ui-textInputWidget > .oo-ui-labelElement-label { + padding: 0.4em; + line-height: 1.5em; + color: #888888; +} +.oo-ui-textInputWidget-labelPosition-after.oo-ui-indicatorElement > .oo-ui-labelElement-label { + margin-right: 2.0875em; +} +.oo-ui-textInputWidget-labelPosition-before.oo-ui-iconElement > .oo-ui-labelElement-label { + margin-left: 2.075em; +} +.oo-ui-menuSelectWidget { + position: absolute; + background-color: #ffffff; + margin-top: -1px; + border: 1px solid #cccccc; + border-radius: 0 0 0.25em 0.25em; + box-shadow: 0 0.15em 1em 0 rgba(0, 0, 0, 0.2); +} +.oo-ui-menuSelectWidget input { + position: absolute; + width: 0; + height: 0; + overflow: hidden; + opacity: 0; +} +.oo-ui-menuOptionWidget { + position: relative; +} +.oo-ui-menuOptionWidget .oo-ui-iconElement-icon { + display: none; +} +.oo-ui-menuOptionWidget.oo-ui-optionWidget-selected { + background-color: transparent; +} +.oo-ui-menuOptionWidget.oo-ui-optionWidget-selected .oo-ui-iconElement-icon { + display: block; +} +.oo-ui-menuOptionWidget.oo-ui-optionWidget-selected { + background-color: transparent; +} +.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted, +.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted.oo-ui-optionWidget-selected { + background-color: #e1f3ff; +} +.oo-ui-menuSectionOptionWidget { + cursor: default; + padding: 0.33em 0.75em; + color: #888888; +} +.oo-ui-dropdownWidget { + display: inline-block; + position: relative; + width: 100%; + max-width: 50em; + background-color: #ffffff; + margin-right: 0.5em; +} +.oo-ui-dropdownWidget-handle { + width: 100%; + display: inline-block; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator, +.oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon { + position: absolute; +} +.oo-ui-dropdownWidget > .oo-ui-menuSelectWidget { + z-index: 1; + width: 100%; +} +.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle { + cursor: pointer; +} +.oo-ui-dropdownWidget:last-child { + margin-right: 0; +} +.oo-ui-dropdownWidget-handle { + height: 2.5em; + border: 1px solid rgba(0, 0, 0, 0.1); + border-radius: 0.25em; +} +.oo-ui-dropdownWidget-handle:hover { + border-color: rgba(0, 0, 0, 0.2); +} +.oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator { + right: 0; +} +.oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon { + left: 0.25em; +} +.oo-ui-dropdownWidget-handle .oo-ui-labelElement-label { + line-height: 2.5em; + margin: 0 0.5em; +} +.oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator { + top: 0; + width: 0.9375em; + height: 0.9375em; + margin: 0.775em; +} +.oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon { + top: 0; + width: 1.875em; + height: 1.875em; + margin: 0.3em; +} +.oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle { + color: #cccccc; + text-shadow: 0 1px 1px #ffffff; + border-color: #dddddd; + background-color: #f3f3f3; +} +.oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle:focus { + outline: 0; +} +.oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator { + opacity: 0.2; +} +.oo-ui-dropdownWidget.oo-ui-iconElement .oo-ui-dropdownWidget-handle .oo-ui-labelElement-label { + margin-left: 3em; +} +.oo-ui-dropdownWidget.oo-ui-indicatorElement .oo-ui-dropdownWidget-handle .oo-ui-labelElement-label { + margin-right: 2em; +} +.oo-ui-comboBoxInputWidget { + display: inline-block; + position: relative; + width: 100%; + max-width: 50em; + margin-right: 0.5em; +} +.oo-ui-comboBoxInputWidget > .oo-ui-menuSelectWidget { + z-index: 1; + width: 100%; +} +.oo-ui-comboBoxInputWidget.oo-ui-widget-enabled > .oo-ui-indicatorElement-indicator { + cursor: pointer; +} +.oo-ui-comboBoxInputWidget-php input::-webkit-calendar-picker-indicator { + opacity: 0 !important; + position: absolute; + right: 0; + top: 0; + height: 2.5em; + width: 2.5em; + padding: 0; +} +.oo-ui-comboBoxInputWidget-php > .oo-ui-indicatorElement-indicator { + pointer-events: none; +} +.oo-ui-comboBoxInputWidget:last-child { + margin-right: 0; +} +.oo-ui-comboBoxInputWidget.oo-ui-widget-disabled .oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator, +.oo-ui-comboBoxInputWidget-empty .oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator { + cursor: default; + opacity: 0.2; +} +.oo-ui-comboBoxInputWidget > .oo-ui-selectWidget { + margin-top: -3px; +} diff --git a/resources/lib/oojs-ui/oojs-ui-core-mediawiki.css b/resources/lib/oojs-ui/oojs-ui-core-mediawiki.css new file mode 100644 index 0000000000..fe0d45b1c7 --- /dev/null +++ b/resources/lib/oojs-ui/oojs-ui-core-mediawiki.css @@ -0,0 +1,1380 @@ +/*! + * OOjs UI v0.15.2 + * https://www.mediawiki.org/wiki/OOjs_UI + * + * Copyright 2011–2016 OOjs UI Team and other contributors. + * Released under the MIT license + * http://oojs.mit-license.org + * + * Date: 2016-02-02T22:07:06Z + */ +@-webkit-keyframes oo-ui-progressBarWidget-slide { + from { + margin-left: -40%; + } + to { + margin-left: 100%; + } +} +@-moz-keyframes oo-ui-progressBarWidget-slide { + from { + margin-left: -40%; + } + to { + margin-left: 100%; + } +} +@keyframes oo-ui-progressBarWidget-slide { + from { + margin-left: -40%; + } + to { + margin-left: 100%; + } +} +.oo-ui-element-hidden { + display: none !important; +} +.oo-ui-buttonElement > .oo-ui-buttonElement-button { + cursor: pointer; + display: inline-block; + vertical-align: middle; + font: inherit; + white-space: nowrap; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon, +.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator { + display: none; +} +.oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button { + cursor: default; +} +.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator, +.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { + display: inline-block; + vertical-align: middle; +} +.oo-ui-buttonElement-frameless { + display: inline-block; + position: relative; +} +.oo-ui-buttonElement-frameless.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { + display: inline-block; + vertical-align: middle; +} +.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button { + display: inline-block; + vertical-align: top; + text-align: center; +} +.oo-ui-buttonElement-framed.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { + display: inline-block; + vertical-align: middle; +} +.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button, +.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button, +.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button { + cursor: default; +} +.oo-ui-buttonElement > .oo-ui-buttonElement-button { + font-weight: bold; + text-decoration: none; +} +.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { + margin-left: 0; +} +.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator { + width: 0.9375em; + height: 0.9375em; +} +.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator { + margin-left: 0.46875em; +} +.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { + width: 1.875em; + height: 1.875em; +} +.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:focus { + box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(0, 0, 0, 0.2); + outline: none; +} +.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button .oo-ui-indicatorElement-indicator { + margin-right: 0; +} +.oo-ui-buttonElement-frameless.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { + margin-left: 0.25em; + margin-right: 0.25em; +} +.oo-ui-buttonElement-frameless > input.oo-ui-buttonElement-button { + padding-left: 0.25em; + padding-right: 0.25em; + color: #333333; +} +.oo-ui-buttonElement-frameless.oo-ui-widget-enabled > input.oo-ui-buttonElement-button, +.oo-ui-buttonElement-frameless.oo-ui-widget-enabled > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { + color: #555555; +} +.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > input.oo-ui-buttonElement-button, +.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { + color: #444444; +} +.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:hover > .oo-ui-labelElement-label, +.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:focus > .oo-ui-labelElement-label { + color: #2962cc; +} +.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { + color: #347bff; +} +.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active > .oo-ui-labelElement-label, +.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { + color: #1f4999; + box-shadow: none; +} +.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:hover > .oo-ui-labelElement-label, +.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:focus > .oo-ui-labelElement-label { + color: #008064; +} +.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { + color: #00af89; +} +.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active > .oo-ui-labelElement-label, +.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { + color: #005946; + box-shadow: none; +} +.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:hover > .oo-ui-labelElement-label, +.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:focus > .oo-ui-labelElement-label { + color: #8c130d; +} +.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { + color: #d11d13; +} +.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active > .oo-ui-labelElement-label, +.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { + color: #73100a; + box-shadow: none; +} +.oo-ui-buttonElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonElement-button { + color: #cccccc; +} +.oo-ui-buttonElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonElement-button:focus { + box-shadow: none; +} +.oo-ui-buttonElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon, +.oo-ui-buttonElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator { + opacity: 0.2; +} +.oo-ui-buttonElement-framed.oo-ui-iconElement.oo-ui-labelElement > .oo-ui-buttonElement-button, +.oo-ui-buttonElement-framed.oo-ui-iconElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button { + padding-left: 2.4em; +} +.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button { + padding: 0.5em 1em; + min-height: 1.2em; + min-width: 1em; + border-radius: 2px; + position: relative; + -webkit-transition: background 100ms ease, color 100ms ease, border-color 100ms ease, box-shadow 100ms ease; + -moz-transition: background 100ms ease, color 100ms ease, border-color 100ms ease, box-shadow 100ms ease; + transition: background 100ms ease, color 100ms ease, border-color 100ms ease, box-shadow 100ms ease; +} +.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button:hover, +.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button:focus { + outline: none; +} +.oo-ui-buttonElement-framed > input.oo-ui-buttonElement-button, +.oo-ui-buttonElement-framed.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { + line-height: 1.2em; + display: inline-block; +} +.oo-ui-buttonElement-framed.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { + position: absolute; + top: 0.2em; + left: 0.5625em; +} +.oo-ui-buttonElement-framed.oo-ui-iconElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { + margin-left: 0.3em; +} +.oo-ui-buttonElement-framed.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator { + display: inline-block; +} +.oo-ui-buttonElement-framed.oo-ui-indicatorElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator, +.oo-ui-buttonElement-framed.oo-ui-indicatorElement.oo-ui-iconElement:not( .oo-ui-labelElement ) > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator { + margin-left: 0.46875em; + margin-right: -0.275em; +} +.oo-ui-buttonElement-framed.oo-ui-indicatorElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator { + position: relative; + left: 0.2em; +} +.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button { + background: #dddddd; + color: #ffffff; + border: 1px solid #dddddd; +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button { + color: #555555; + background-color: #ffffff; + border: 1px solid #cccccc; +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover { + background-color: #ebebeb; +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:focus { + box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.2); +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active, +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button { + background-color: #d9d9d9; + border-color: #d9d9d9; + box-shadow: none; +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button { + background-color: #999999; + color: #ffffff; +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button { + color: #347bff; +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:hover { + background-color: rgba(52, 123, 255, 0.1); + border-color: rgba(31, 73, 153, 0.5); +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:focus { + box-shadow: inset 0 0 0 1px #1f4999; + border-color: #1f4999; +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active, +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button { + color: #1f4999; + border-color: #1f4999; + box-shadow: none; +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button { + background-color: #999999; + color: #ffffff; +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button { + color: #00af89; +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:hover { + background-color: rgba(0, 171, 137, 0.1); + border-color: rgba(0, 89, 70, 0.5); +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:focus { + box-shadow: inset 0 0 0 1px #005946; + border-color: #005946; +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active, +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button { + color: #005946; + border-color: #005946; + box-shadow: none; +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button { + background-color: #999999; + color: #ffffff; +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button { + color: #d11d13; +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:hover { + background-color: rgba(209, 29, 19, 0.1); + border-color: rgba(115, 16, 10, 0.5); +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:focus { + box-shadow: inset 0 0 0 1px #73100a; + border-color: #73100a; +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active, +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button { + color: #73100a; + border-color: #73100a; + box-shadow: none; +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button { + background-color: #999999; + color: #ffffff; +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button { + color: #ffffff; + background-color: #347bff; + border-color: #347bff; +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:hover { + background: #2962cc; + border-color: #2962cc; +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:focus { + box-shadow: inset 0 0 0 1px #ffffff; + border-color: #347bff; +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active, +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button { + color: #ffffff; + background-color: #1f4999; + border-color: #1f4999; + box-shadow: none; +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button { + background-color: #999999; + color: #ffffff; +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button { + color: #ffffff; + background-color: #00af89; + border-color: #00af89; +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:hover { + background: #008064; + border-color: #008064; +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:focus { + box-shadow: inset 0 0 0 1px #ffffff; + border-color: #00af89; +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active, +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button { + color: #ffffff; + background-color: #005946; + border-color: #005946; + box-shadow: none; +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button { + background-color: #999999; + color: #ffffff; +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button { + color: #ffffff; + background-color: #d11d13; + border-color: #d11d13; +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:hover { + background: #8c130d; + border-color: #8c130d; +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:focus { + box-shadow: inset 0 0 0 1px #ffffff; + border-color: #d11d13; +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active, +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button { + color: #ffffff; + background-color: #73100a; + border-color: #73100a; + box-shadow: none; +} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button { + background-color: #999999; + color: #ffffff; +} +.oo-ui-clippableElement-clippable { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.oo-ui-iconElement .oo-ui-iconElement-icon, +.oo-ui-iconElement.oo-ui-iconElement-icon { + background-size: contain; + background-position: center center; + background-repeat: no-repeat; +} +.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator, +.oo-ui-indicatorElement.oo-ui-indicatorElement-indicator { + background-size: contain; + background-position: center center; + background-repeat: no-repeat; +} +.oo-ui-pendingElement-pending { + background-image: /* @embed */ url(themes/mediawiki/images/textures/pending.gif); +} +.oo-ui-fieldLayout { + display: block; + margin-bottom: 1em; +} +.oo-ui-fieldLayout:before, +.oo-ui-fieldLayout:after { + content: " "; + display: table; +} +.oo-ui-fieldLayout:after { + clear: both; +} +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label, +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label, +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field, +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field { + display: block; + float: left; +} +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label { + text-align: right; +} +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body { + display: table; +} +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label, +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field { + display: table-cell; + vertical-align: middle; +} +.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-top > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label { + display: inline-block; +} +.oo-ui-fieldLayout > .oo-ui-fieldLayout-help { + float: right; +} +.oo-ui-fieldLayout > .oo-ui-fieldLayout-help > .oo-ui-popupWidget > .oo-ui-popupWidget-popup { + z-index: 1; +} +.oo-ui-fieldLayout > .oo-ui-fieldLayout-help .oo-ui-fieldLayout-help-content { + padding: 0.5em 0.75em; + line-height: 1.5em; +} +.oo-ui-fieldLayout:last-child { + margin-bottom: 0; +} +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label, +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label { + padding-top: 0.5em; + margin-right: 5%; + width: 35%; +} +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field, +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field { + width: 60%; +} +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline { + margin-bottom: 1.25em; +} +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label { + padding: 0.25em 0.25em 0.25em 1em; +} +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label { + padding-top: 0.25em; + padding-bottom: 0.5em; +} +.oo-ui-fieldLayout > .oo-ui-popupButtonWidget { + margin-right: 0; +} +.oo-ui-fieldLayout > .oo-ui-popupButtonWidget:last-child { + margin-right: 0; +} +.oo-ui-fieldLayout-disabled > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label { + color: #cccccc; +} +.oo-ui-fieldLayout-messages { + list-style: none none; + margin: 0.25em 0 0 0.25em; + padding: 0; +} +.oo-ui-fieldLayout-messages > li { + margin: 0; + padding: 0; + display: table; +} +.oo-ui-fieldLayout-messages .oo-ui-iconWidget { + display: table-cell; + border-right: 0.5em solid transparent; +} +.oo-ui-fieldLayout-messages .oo-ui-labelWidget { + display: table-cell; + padding: 0; + line-height: 1.875em; + vertical-align: middle; +} +.oo-ui-actionFieldLayout-input, +.oo-ui-actionFieldLayout-button { + display: table-cell; + vertical-align: middle; +} +.oo-ui-actionFieldLayout-input { + padding-right: 1em; +} +.oo-ui-actionFieldLayout-button { + width: 1%; + white-space: nowrap; +} +.oo-ui-fieldsetLayout { + position: relative; + margin: 0; + padding: 0; + border: 0; +} +.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon { + display: block; + position: absolute; +} +.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-labelElement-label { + display: inline-block; +} +.oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-help { + float: right; +} +.oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-help > .oo-ui-popupWidget > .oo-ui-popupWidget-popup { + z-index: 1; +} +.oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-help .oo-ui-fieldsetLayout-help-content { + padding: 0.5em 0.75em; + line-height: 1.5em; +} +.oo-ui-fieldsetLayout + .oo-ui-fieldsetLayout, +.oo-ui-fieldsetLayout + .oo-ui-formLayout { + margin-top: 2em; +} +.oo-ui-fieldsetLayout > .oo-ui-labelElement-label { + font-size: 1.1em; + margin-bottom: 0.5em; + padding: 0.25em 0; + font-weight: bold; +} +.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-labelElement-label { + padding-left: 2em; + line-height: 1.8em; +} +.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon { + left: 0; + top: 0.25em; + width: 1.875em; + height: 1.875em; +} +.oo-ui-fieldsetLayout > .oo-ui-popupButtonWidget { + margin-right: 0; +} +.oo-ui-fieldsetLayout > .oo-ui-popupButtonWidget:last-child { + margin-right: 0; +} +.oo-ui-formLayout + .oo-ui-fieldsetLayout, +.oo-ui-formLayout + .oo-ui-formLayout { + margin-top: 2em; +} +.oo-ui-panelLayout { + position: relative; +} +.oo-ui-panelLayout-scrollable { + overflow-y: auto; +} +.oo-ui-panelLayout-expanded { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; +} +.oo-ui-panelLayout-padded { + padding: 1.25em; +} +.oo-ui-panelLayout-framed { + border: 1px solid #aaaaaa; + border-radius: 2px; + box-shadow: 0 0.15em 0 0 rgba(0, 0, 0, 0.15); +} +.oo-ui-panelLayout-padded.oo-ui-panelLayout-framed { + margin: 1em 0; +} +.oo-ui-horizontalLayout > .oo-ui-widget { + display: inline-block; + vertical-align: middle; +} +.oo-ui-horizontalLayout > .oo-ui-layout { + display: inline-block; +} +.oo-ui-horizontalLayout > .oo-ui-layout, +.oo-ui-horizontalLayout > .oo-ui-widget { + margin-right: 0.5em; +} +.oo-ui-horizontalLayout > .oo-ui-layout:last-child, +.oo-ui-horizontalLayout > .oo-ui-widget:last-child { + margin-right: 0; +} +.oo-ui-horizontalLayout > .oo-ui-layout { + margin-bottom: 0; +} +.oo-ui-optionWidget { + position: relative; + display: block; + padding: 0.25em 0.5em; + border: 0; +} +.oo-ui-optionWidget.oo-ui-widget-enabled { + cursor: pointer; +} +.oo-ui-optionWidget.oo-ui-labelElement .oo-ui-labelElement-label { + display: block; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.oo-ui-optionWidget-highlighted { + background-color: #eeeeee; +} +.oo-ui-optionWidget .oo-ui-labelElement-label { + line-height: 1.5em; +} +.oo-ui-selectWidget-depressed .oo-ui-optionWidget-selected, +.oo-ui-selectWidget-pressed .oo-ui-optionWidget-pressed, +.oo-ui-selectWidget-pressed .oo-ui-optionWidget-pressed.oo-ui-optionWidget-highlighted, +.oo-ui-selectWidget-pressed .oo-ui-optionWidget-pressed.oo-ui-optionWidget-highlighted.oo-ui-optionWidget-selected { + background-color: #d0d0d0; +} +.oo-ui-optionWidget.oo-ui-widget-disabled { + color: #cccccc; +} +.oo-ui-decoratedOptionWidget { + padding: 0.5em 2em 0.5em 3em; +} +.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon, +.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator { + position: absolute; +} +.oo-ui-decoratedOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon, +.oo-ui-decoratedOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator { + top: 0; + height: 100%; +} +.oo-ui-decoratedOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon { + width: 1.875em; + left: 0.5em; +} +.oo-ui-decoratedOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator { + width: 0.9375em; + right: 0.5em; +} +.oo-ui-decoratedOptionWidget.oo-ui-widget-disabled .oo-ui-iconElement-icon, +.oo-ui-decoratedOptionWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator { + opacity: 0.2; +} +.oo-ui-radioOptionWidget { + cursor: default; + padding: 0.25em 0; + background-color: transparent; +} +.oo-ui-radioOptionWidget .oo-ui-radioInputWidget, +.oo-ui-radioOptionWidget.oo-ui-labelElement .oo-ui-labelElement-label { + display: inline-block; + vertical-align: middle; +} +.oo-ui-radioOptionWidget.oo-ui-optionWidget-selected, +.oo-ui-radioOptionWidget.oo-ui-optionWidget-pressed, +.oo-ui-radioOptionWidget.oo-ui-optionWidget-highlighted { + background-color: transparent; +} +.oo-ui-radioOptionWidget.oo-ui-labelElement .oo-ui-labelElement-label { + padding: 0.25em 0.25em 0.25em 1em; +} +.oo-ui-radioOptionWidget .oo-ui-radioInputWidget { + margin-right: 0; +} +.oo-ui-labelWidget { + display: inline-block; +} +.oo-ui-iconWidget { + display: inline-block; + vertical-align: middle; + line-height: 2.5em; + width: 1.875em; + height: 1.875em; +} +.oo-ui-iconWidget.oo-ui-widget-disabled { + opacity: 0.2; +} +.oo-ui-indicatorWidget { + display: inline-block; + vertical-align: middle; + line-height: 2.5em; + width: 0.9375em; + height: 0.9375em; + margin: 0.46875em; +} +.oo-ui-indicatorWidget.oo-ui-widget-disabled { + opacity: 0.2; +} +.oo-ui-buttonWidget { + display: inline-block; + vertical-align: middle; + margin-right: 0.5em; +} +.oo-ui-buttonWidget:last-child { + margin-right: 0; +} +.oo-ui-buttonGroupWidget { + display: inline-block; + white-space: nowrap; + border-radius: 2px; + margin-right: 0.5em; +} +.oo-ui-buttonGroupWidget:last-child { + margin-right: 0; +} +.oo-ui-buttonGroupWidget .oo-ui-buttonElement { + margin-right: 0; +} +.oo-ui-buttonGroupWidget .oo-ui-buttonElement:last-child { + margin-right: 0; +} +.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed .oo-ui-buttonElement-button { + border-radius: 0; + margin-left: -1px; +} +.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:first-child .oo-ui-buttonElement-button { + border-bottom-left-radius: 2px; + border-top-left-radius: 2px; + margin-left: 0; +} +.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:last-child .oo-ui-buttonElement-button { + border-bottom-right-radius: 2px; + border-top-right-radius: 2px; +} +.oo-ui-popupWidget { + position: absolute; + /* @noflip */ + left: 0; +} +.oo-ui-popupWidget-popup { + position: relative; + overflow: hidden; + z-index: 1; +} +.oo-ui-popupWidget-anchor { + display: none; + z-index: 1; +} +.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor { + display: block; + position: absolute; + top: 0; + /* @noflip */ + left: 0; + background-repeat: no-repeat; +} +.oo-ui-popupWidget-head { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.oo-ui-popupWidget-head > .oo-ui-buttonWidget { + float: right; +} +.oo-ui-popupWidget-head > .oo-ui-labelElement-label { + float: left; + cursor: default; +} +.oo-ui-popupWidget-body { + clear: both; + overflow: hidden; +} +.oo-ui-popupWidget-popup { + background-color: #ffffff; + border: 1px solid #aaaaaa; + border-radius: 2px; + box-shadow: 0 0.15em 0 0 rgba(0, 0, 0, 0.15); +} +.oo-ui-popupWidget-anchored .oo-ui-popupWidget-popup { + margin-top: 9px; +} +.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:before, +.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:after { + content: ""; + position: absolute; + width: 0; + height: 0; + border-style: solid; + border-color: transparent; + border-top: 0; +} +.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:before { + bottom: -10px; + left: -9px; + border-bottom-color: #888888; + border-width: 10px; +} +.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:after { + bottom: -10px; + left: -8px; + border-bottom-color: #ffffff; + border-width: 9px; +} +.oo-ui-popupWidget-transitioning .oo-ui-popupWidget-popup { + -webkit-transition: width 100ms ease, height 100ms ease, left 100ms ease; + -moz-transition: width 100ms ease, height 100ms ease, left 100ms ease; + transition: width 100ms ease, height 100ms ease, left 100ms ease; +} +.oo-ui-popupWidget-head { + height: 2.5em; +} +.oo-ui-popupWidget-head > .oo-ui-buttonWidget { + margin: 0.25em; +} +.oo-ui-popupWidget-head > .oo-ui-labelElement-label { + margin: 0.75em 1em; +} +.oo-ui-popupWidget-body-padded { + padding: 0 1em; +} +.oo-ui-popupButtonWidget { + position: relative; +} +.oo-ui-popupButtonWidget .oo-ui-popupWidget { + position: absolute; + cursor: auto; +} +.oo-ui-popupButtonWidget.oo-ui-buttonElement-frameless > .oo-ui-popupWidget { + /* @noflip */ + left: 1em; +} +.oo-ui-popupButtonWidget.oo-ui-buttonElement-framed > .oo-ui-popupWidget { + /* @noflip */ + left: 1.75em; +} +.oo-ui-inputWidget { + margin-right: 0.5em; +} +.oo-ui-inputWidget:last-child { + margin-right: 0; +} +.oo-ui-buttonInputWidget { + display: inline-block; + vertical-align: middle; +} +.oo-ui-buttonInputWidget > button, +.oo-ui-buttonInputWidget > input { + border: 0; + padding: 0; + background-color: transparent; +} +.oo-ui-checkboxInputWidget { + position: relative; + line-height: 1.6em; + white-space: nowrap; +} +.oo-ui-checkboxInputWidget * { + font: inherit; + vertical-align: middle; +} +.oo-ui-checkboxInputWidget input[type="checkbox"] { + opacity: 0; + z-index: 1; + position: relative; + cursor: pointer; + margin: 0; + width: 1.6em; + height: 1.6em; + max-width: none; +} +.oo-ui-checkboxInputWidget input[type="checkbox"] + span { + -webkit-transition: background-size 200ms cubic-bezier(0.175, 0.885, 0.32, 1.275); + -moz-transition: background-size 200ms cubic-bezier(0.175, 0.885, 0.32, 1.275); + transition: background-size 200ms cubic-bezier(0.175, 0.885, 0.32, 1.275); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + position: absolute; + left: 0; + border-radius: 2px; + width: 1.6em; + height: 1.6em; + background-color: white; + border: 1px solid #777777; + background-image: url("themes/mediawiki/images/icons/check-constructive.png"); + background-image: -webkit-linear-gradient(transparent, transparent), /* @embed */ url("themes/mediawiki/images/icons/check-constructive.svg"); + background-image: linear-gradient(transparent, transparent), /* @embed */ url("themes/mediawiki/images/icons/check-constructive.svg"); + background-image: -o-linear-gradient(transparent, transparent), url("themes/mediawiki/images/icons/check-constructive.png"); + background-repeat: no-repeat; + background-position: center center; + background-origin: border-box; + background-size: 0 0; +} +.oo-ui-checkboxInputWidget input[type="checkbox"]:checked + span { + background-size: 100% 100%; +} +.oo-ui-checkboxInputWidget input[type="checkbox"]:active + span { + background-color: #cccccc; + border-color: #cccccc; +} +.oo-ui-checkboxInputWidget input[type="checkbox"]:focus + span { + border-width: 2px; +} +.oo-ui-checkboxInputWidget input[type="checkbox"]:focus:hover + span, +.oo-ui-checkboxInputWidget input[type="checkbox"]:hover + span { + border-bottom-width: 3px; +} +.oo-ui-checkboxInputWidget input[type="checkbox"]:disabled { + cursor: default; +} +.oo-ui-checkboxInputWidget input[type="checkbox"]:disabled + span { + background-color: #dddddd; + border-color: #dddddd; +} +.oo-ui-checkboxInputWidget input[type="checkbox"]:disabled:checked + span { + background-image: url("themes/mediawiki/images/icons/check-invert.png"); + background-image: -webkit-linear-gradient(transparent, transparent), /* @embed */ url("themes/mediawiki/images/icons/check-invert.svg"); + background-image: linear-gradient(transparent, transparent), /* @embed */ url("themes/mediawiki/images/icons/check-invert.svg"); + background-image: -o-linear-gradient(transparent, transparent), url("themes/mediawiki/images/icons/check-invert.png"); +} +.oo-ui-dropdownInputWidget { + position: relative; + vertical-align: middle; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + max-width: 50em; +} +.oo-ui-dropdownInputWidget select { + display: inline-block; + width: 100%; + resize: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.oo-ui-dropdownInputWidget select { + background-color: #ffffff; + height: 2.275em; + font-size: inherit; + font-family: inherit; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + border: 1px solid #cccccc; + border-radius: 2px; + padding-left: 1em; + vertical-align: middle; +} +.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:hover, +.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:focus { + border-color: #aaaaaa; + outline: none; +} +.oo-ui-dropdownInputWidget.oo-ui-widget-disabled select { + color: #cccccc; + border-color: #dddddd; + background-color: #f3f3f3; +} +.oo-ui-radioInputWidget { + position: relative; + line-height: 1.6em; + white-space: nowrap; +} +.oo-ui-radioInputWidget * { + font: inherit; + vertical-align: middle; +} +.oo-ui-radioInputWidget input[type="radio"] { + opacity: 0; + z-index: 1; + position: relative; + cursor: pointer; + margin: 0; + width: 1.6em; + height: 1.6em; + max-width: none; +} +.oo-ui-radioInputWidget input[type="radio"] + span { + -webkit-transition: background-size 200ms cubic-bezier(0.175, 0.885, 0.32, 1.275); + -moz-transition: background-size 200ms cubic-bezier(0.175, 0.885, 0.32, 1.275); + transition: background-size 200ms cubic-bezier(0.175, 0.885, 0.32, 1.275); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + position: absolute; + left: 0; + border-radius: 100%; + width: 1.6em; + height: 1.6em; + background: white; + border: 1px solid #777777; + background-image: url("themes/mediawiki/images/icons/circle-constructive.png"); + background-image: -webkit-linear-gradient(transparent, transparent), /* @embed */ url("themes/mediawiki/images/icons/circle-constructive.svg"); + background-image: linear-gradient(transparent, transparent), /* @embed */ url("themes/mediawiki/images/icons/circle-constructive.svg"); + background-image: -o-linear-gradient(transparent, transparent), url("themes/mediawiki/images/icons/circle-constructive.png"); + background-repeat: no-repeat; + background-position: center center; + background-origin: border-box; + background-size: 0 0; +} +.oo-ui-radioInputWidget input[type="radio"]:checked + span { + background-size: 100% 100%; +} +.oo-ui-radioInputWidget input[type="radio"]:active + span { + background-color: #cccccc; + border-color: #cccccc; +} +.oo-ui-radioInputWidget input[type="radio"]:focus + span { + border-width: 2px; +} +.oo-ui-radioInputWidget input[type="radio"]:focus:hover + span, +.oo-ui-radioInputWidget input[type="radio"]:hover + span { + border-bottom-width: 3px; +} +.oo-ui-radioInputWidget input[type="radio"]:disabled { + cursor: default; +} +.oo-ui-radioInputWidget input[type="radio"]:disabled + span { + background-color: #dddddd; + border-color: #dddddd; +} +.oo-ui-radioInputWidget input[type="radio"]:disabled:checked + span { + background-image: url("themes/mediawiki/images/icons/circle-invert.png"); + background-image: -webkit-linear-gradient(transparent, transparent), /* @embed */ url("themes/mediawiki/images/icons/circle-invert.svg"); + background-image: linear-gradient(transparent, transparent), /* @embed */ url("themes/mediawiki/images/icons/circle-invert.svg"); + background-image: -o-linear-gradient(transparent, transparent), url("themes/mediawiki/images/icons/circle-invert.png"); +} +.oo-ui-radioSelectInputWidget .oo-ui-fieldLayout { + margin-bottom: 0; +} +.oo-ui-textInputWidget { + position: relative; + vertical-align: middle; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + max-width: 50em; +} +.oo-ui-textInputWidget input, +.oo-ui-textInputWidget textarea { + display: inline-block; + width: 100%; + resize: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.oo-ui-textInputWidget textarea { + overflow: auto; +} +.oo-ui-textInputWidget input[type="search"] { + -webkit-appearance: none; +} +.oo-ui-textInputWidget input[type="search"]::-ms-clear { + display: none; +} +.oo-ui-textInputWidget input[type="search"]::-ms-reveal { + display: none; +} +.oo-ui-textInputWidget input[type="search"]::-webkit-search-decoration, +.oo-ui-textInputWidget input[type="search"]::-webkit-search-cancel-button, +.oo-ui-textInputWidget input[type="search"]::-webkit-search-results-button, +.oo-ui-textInputWidget input[type="search"]::-webkit-search-results-decoration { + display: none; +} +.oo-ui-textInputWidget > .oo-ui-iconElement-icon, +.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator, +.oo-ui-textInputWidget > .oo-ui-labelElement-label { + display: none; +} +.oo-ui-textInputWidget.oo-ui-iconElement > .oo-ui-iconElement-icon, +.oo-ui-textInputWidget.oo-ui-indicatorElement > .oo-ui-indicatorElement-indicator { + display: block; + position: absolute; + top: 0; + height: 100%; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.oo-ui-textInputWidget.oo-ui-widget-enabled > .oo-ui-iconElement-icon, +.oo-ui-textInputWidget.oo-ui-widget-enabled > .oo-ui-indicatorElement-indicator { + cursor: text; +} +.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-textInputWidget-type-search > .oo-ui-indicatorElement-indicator { + cursor: pointer; +} +.oo-ui-textInputWidget.oo-ui-labelElement > .oo-ui-labelElement-label { + display: block; +} +.oo-ui-textInputWidget > .oo-ui-iconElement-icon { + left: 0; +} +.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator { + right: 0; +} +.oo-ui-textInputWidget > .oo-ui-labelElement-label { + position: absolute; + top: 0; +} +.oo-ui-textInputWidget-labelPosition-after > .oo-ui-labelElement-label { + right: 0; +} +.oo-ui-textInputWidget-labelPosition-before > .oo-ui-labelElement-label { + left: 0; +} +.oo-ui-textInputWidget input, +.oo-ui-textInputWidget textarea { + padding: 0.5em; + line-height: 1.275em; + margin: 0; + font-size: inherit; + font-family: inherit; + background-color: #ffffff; + color: #000000; + border: 1px solid #cccccc; + border-radius: 2px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.oo-ui-textInputWidget input.oo-ui-pendingElement-pending, +.oo-ui-textInputWidget textarea.oo-ui-pendingElement-pending { + background-color: transparent; +} +.oo-ui-textInputWidget.oo-ui-widget-enabled input, +.oo-ui-textInputWidget.oo-ui-widget-enabled textarea { + box-shadow: inset 0 0 0 0.1em #ffffff; + -webkit-transition: border 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1); + -moz-transition: border 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1); + transition: border 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1); +} +.oo-ui-textInputWidget.oo-ui-widget-enabled input:focus, +.oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus { + outline: none; + border-color: #347bff; + box-shadow: inset 0 0 0 0.1em #347bff; +} +.oo-ui-textInputWidget.oo-ui-widget-enabled input[readonly], +.oo-ui-textInputWidget.oo-ui-widget-enabled textarea[readonly] { + color: #777777; + text-shadow: 0 1px 1px #ffffff; +} +.oo-ui-textInputWidget.oo-ui-widget-enabled input[readonly]:focus, +.oo-ui-textInputWidget.oo-ui-widget-enabled textarea[readonly]:focus { + border-color: #cccccc; + box-shadow: inset 0 0 0 0.1em #cccccc; +} +.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid input, +.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid textarea { + border-color: #ff0000; +} +.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid input:focus, +.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid textarea:focus { + border-color: #ff0000; + box-shadow: inset 0 0 0 0.1em #ff0000; +} +.oo-ui-textInputWidget.oo-ui-widget-disabled input, +.oo-ui-textInputWidget.oo-ui-widget-disabled textarea { + color: #cccccc; + text-shadow: 0 1px 1px #ffffff; + border-color: #dddddd; + background-color: #f3f3f3; +} +.oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-iconElement-icon, +.oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator { + opacity: 0.2; +} +.oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-labelElement-label { + color: #dddddd; + text-shadow: 0 1px 1px #ffffff; +} +.oo-ui-textInputWidget.oo-ui-iconElement input, +.oo-ui-textInputWidget.oo-ui-iconElement textarea { + padding-left: 2.875em; +} +.oo-ui-textInputWidget.oo-ui-iconElement .oo-ui-iconElement-icon { + left: 0; + width: 1.875em; + max-height: 2.375em; + margin-left: 0.5em; + height: 100%; + background-position: right center; +} +.oo-ui-textInputWidget.oo-ui-indicatorElement input, +.oo-ui-textInputWidget.oo-ui-indicatorElement textarea { + padding-right: 2.4875em; +} +.oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator { + width: 0.9375em; + max-height: 2.375em; + margin: 0 0.775em; + height: 100%; +} +.oo-ui-textInputWidget > .oo-ui-labelElement-label { + padding: 0.4em; + line-height: 1.5em; + color: #888888; +} +.oo-ui-textInputWidget-labelPosition-after.oo-ui-indicatorElement > .oo-ui-labelElement-label { + margin-right: 2.0875em; +} +.oo-ui-textInputWidget-labelPosition-before.oo-ui-iconElement > .oo-ui-labelElement-label { + margin-left: 2.475em; +} +.oo-ui-menuSelectWidget { + position: absolute; + background-color: #ffffff; + margin-top: -1px; + border: 1px solid #aaaaaa; + border-radius: 0 0 2px 2px; + box-shadow: 0 0.15em 0 0 rgba(0, 0, 0, 0.15); +} +.oo-ui-menuSelectWidget input { + position: absolute; + width: 0; + height: 0; + overflow: hidden; + opacity: 0; +} +.oo-ui-menuOptionWidget { + position: relative; + padding: 0.5em 1em; +} +.oo-ui-menuOptionWidget .oo-ui-iconElement-icon { + display: none; +} +.oo-ui-menuOptionWidget.oo-ui-optionWidget-selected { + background-color: transparent; +} +.oo-ui-menuOptionWidget.oo-ui-optionWidget-selected .oo-ui-iconElement-icon { + display: block; +} +.oo-ui-menuOptionWidget.oo-ui-optionWidget-selected { + background-color: #d8e6fe; + color: rgba(0, 0, 0, 0.8); +} +.oo-ui-menuOptionWidget.oo-ui-optionWidget-selected .oo-ui-iconElement-icon { + display: none; +} +.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted { + background-color: #eeeeee; + color: #000000; +} +.oo-ui-menuOptionWidget.oo-ui-optionWidget-selected.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted { + background-color: #d8e6fe; +} +.oo-ui-menuSectionOptionWidget { + cursor: default; + padding: 0.33em 0.75em; + color: #888888; +} +.oo-ui-dropdownWidget { + display: inline-block; + position: relative; + width: 100%; + max-width: 50em; + background-color: #ffffff; + margin-right: 0.5em; +} +.oo-ui-dropdownWidget-handle { + width: 100%; + display: inline-block; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator, +.oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon { + position: absolute; +} +.oo-ui-dropdownWidget > .oo-ui-menuSelectWidget { + z-index: 1; + width: 100%; +} +.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle { + cursor: pointer; +} +.oo-ui-dropdownWidget:last-child { + margin-right: 0; +} +.oo-ui-dropdownWidget-handle { + padding: 0.5em 0; + height: 2.275em; + line-height: 1.275; + border: 1px solid #cccccc; + border-radius: 2px; +} +.oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator { + right: 0; +} +.oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon { + left: 0.25em; +} +.oo-ui-dropdownWidget-handle .oo-ui-labelElement-label { + line-height: 1.275em; + margin: 0 1em; +} +.oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator { + top: 0; + width: 0.9375em; + height: 0.9375em; + margin: 0.775em; +} +.oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon { + top: 0; + width: 1.875em; + height: 1.875em; + margin: 0.3em; +} +.oo-ui-dropdownWidget:hover .oo-ui-dropdownWidget-handle { + border-color: #aaaaaa; +} +.oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle { + color: #cccccc; + text-shadow: 0 1px 1px #ffffff; + border-color: #dddddd; + background-color: #f3f3f3; +} +.oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle:focus { + outline: 0; +} +.oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator { + opacity: 0.2; +} +.oo-ui-dropdownWidget.oo-ui-iconElement .oo-ui-dropdownWidget-handle .oo-ui-labelElement-label { + margin-left: 3em; +} +.oo-ui-dropdownWidget.oo-ui-indicatorElement .oo-ui-dropdownWidget-handle .oo-ui-labelElement-label { + margin-right: 2em; +} +.oo-ui-dropdownWidget .oo-ui-selectWidget { + border-top-color: #ffffff; +} +.oo-ui-comboBoxInputWidget { + display: inline-block; + position: relative; + width: 100%; + max-width: 50em; + margin-right: 0.5em; +} +.oo-ui-comboBoxInputWidget > .oo-ui-menuSelectWidget { + z-index: 1; + width: 100%; +} +.oo-ui-comboBoxInputWidget.oo-ui-widget-enabled > .oo-ui-indicatorElement-indicator { + cursor: pointer; +} +.oo-ui-comboBoxInputWidget-php input::-webkit-calendar-picker-indicator { + opacity: 0 !important; + position: absolute; + right: 0; + top: 0; + height: 2.5em; + width: 2.5em; + padding: 0; +} +.oo-ui-comboBoxInputWidget-php > .oo-ui-indicatorElement-indicator { + pointer-events: none; +} +.oo-ui-comboBoxInputWidget:last-child { + margin-right: 0; +} +.oo-ui-comboBoxInputWidget input, +.oo-ui-comboBoxInputWidget textarea { + height: 2.35em; +} diff --git a/resources/lib/oojs-ui/oojs-ui-core.js b/resources/lib/oojs-ui/oojs-ui-core.js new file mode 100644 index 0000000000..2d5ed3ad09 --- /dev/null +++ b/resources/lib/oojs-ui/oojs-ui-core.js @@ -0,0 +1,9368 @@ +/*! + * OOjs UI v0.15.2 + * https://www.mediawiki.org/wiki/OOjs_UI + * + * Copyright 2011–2016 OOjs UI Team and other contributors. + * Released under the MIT license + * http://oojs.mit-license.org + * + * Date: 2016-02-02T22:07:00Z + */ +( function ( OO ) { + +'use strict'; + +/** + * Namespace for all classes, static methods and static properties. + * + * @class + * @singleton + */ +OO.ui = {}; + +OO.ui.bind = $.proxy; + +/** + * @property {Object} + */ +OO.ui.Keys = { + UNDEFINED: 0, + BACKSPACE: 8, + DELETE: 46, + LEFT: 37, + RIGHT: 39, + UP: 38, + DOWN: 40, + ENTER: 13, + END: 35, + HOME: 36, + TAB: 9, + PAGEUP: 33, + PAGEDOWN: 34, + ESCAPE: 27, + SHIFT: 16, + SPACE: 32 +}; + +/** + * Constants for MouseEvent.which + * + * @property {Object} + */ +OO.ui.MouseButtons = { + LEFT: 1, + MIDDLE: 2, + RIGHT: 3 +}; + +/** + * @property {Number} + */ +OO.ui.elementId = 0; + +/** + * Generate a unique ID for element + * + * @return {String} [id] + */ +OO.ui.generateElementId = function () { + OO.ui.elementId += 1; + return 'oojsui-' + OO.ui.elementId; +}; + +/** + * Check if an element is focusable. + * Inspired from :focusable in jQueryUI v1.11.4 - 2015-04-14 + * + * @param {jQuery} element Element to test + * @return {boolean} + */ +OO.ui.isFocusableElement = function ( $element ) { + var nodeName, + element = $element[ 0 ]; + + // Anything disabled is not focusable + if ( element.disabled ) { + return false; + } + + // Check if the element is visible + if ( !( + // This is quicker than calling $element.is( ':visible' ) + $.expr.filters.visible( element ) && + // Check that all parents are visible + !$element.parents().addBack().filter( function () { + return $.css( this, 'visibility' ) === 'hidden'; + } ).length + ) ) { + return false; + } + + // Check if the element is ContentEditable, which is the string 'true' + if ( element.contentEditable === 'true' ) { + return true; + } + + // Anything with a non-negative numeric tabIndex is focusable. + // Use .prop to avoid browser bugs + if ( $element.prop( 'tabIndex' ) >= 0 ) { + return true; + } + + // Some element types are naturally focusable + // (indexOf is much faster than regex in Chrome and about the + // same in FF: https://jsperf.com/regex-vs-indexof-array2) + nodeName = element.nodeName.toLowerCase(); + if ( [ 'input', 'select', 'textarea', 'button', 'object' ].indexOf( nodeName ) !== -1 ) { + return true; + } + + // Links and areas are focusable if they have an href + if ( ( nodeName === 'a' || nodeName === 'area' ) && $element.attr( 'href' ) !== undefined ) { + return true; + } + + return false; +}; + +/** + * Find a focusable child + * + * @param {jQuery} $container Container to search in + * @param {boolean} [backwards] Search backwards + * @return {jQuery} Focusable child, an empty jQuery object if none found + */ +OO.ui.findFocusable = function ( $container, backwards ) { + var $focusable = $( [] ), + // $focusableCandidates is a superset of things that + // could get matched by isFocusableElement + $focusableCandidates = $container + .find( 'input, select, textarea, button, object, a, area, [contenteditable], [tabindex]' ); + + if ( backwards ) { + $focusableCandidates = Array.prototype.reverse.call( $focusableCandidates ); + } + + $focusableCandidates.each( function () { + var $this = $( this ); + if ( OO.ui.isFocusableElement( $this ) ) { + $focusable = $this; + return false; + } + } ); + return $focusable; +}; + +/** + * Get the user's language and any fallback languages. + * + * These language codes are used to localize user interface elements in the user's language. + * + * In environments that provide a localization system, this function should be overridden to + * return the user's language(s). The default implementation returns English (en) only. + * + * @return {string[]} Language codes, in descending order of priority + */ +OO.ui.getUserLanguages = function () { + return [ 'en' ]; +}; + +/** + * Get a value in an object keyed by language code. + * + * @param {Object.} obj Object keyed by language code + * @param {string|null} [lang] Language code, if omitted or null defaults to any user language + * @param {string} [fallback] Fallback code, used if no matching language can be found + * @return {Mixed} Local value + */ +OO.ui.getLocalValue = function ( obj, lang, fallback ) { + var i, len, langs; + + // Requested language + if ( obj[ lang ] ) { + return obj[ lang ]; + } + // Known user language + langs = OO.ui.getUserLanguages(); + for ( i = 0, len = langs.length; i < len; i++ ) { + lang = langs[ i ]; + if ( obj[ lang ] ) { + return obj[ lang ]; + } + } + // Fallback language + if ( obj[ fallback ] ) { + return obj[ fallback ]; + } + // First existing language + for ( lang in obj ) { + return obj[ lang ]; + } + + return undefined; +}; + +/** + * Check if a node is contained within another node + * + * Similar to jQuery#contains except a list of containers can be supplied + * and a boolean argument allows you to include the container in the match list + * + * @param {HTMLElement|HTMLElement[]} containers Container node(s) to search in + * @param {HTMLElement} contained Node to find + * @param {boolean} [matchContainers] Include the container(s) in the list of nodes to match, otherwise only match descendants + * @return {boolean} The node is in the list of target nodes + */ +OO.ui.contains = function ( containers, contained, matchContainers ) { + var i; + if ( !Array.isArray( containers ) ) { + containers = [ containers ]; + } + for ( i = containers.length - 1; i >= 0; i-- ) { + if ( ( matchContainers && contained === containers[ i ] ) || $.contains( containers[ i ], contained ) ) { + return true; + } + } + return false; +}; + +/** + * Return a function, that, as long as it continues to be invoked, will not + * be triggered. The function will be called after it stops being called for + * N milliseconds. If `immediate` is passed, trigger the function on the + * leading edge, instead of the trailing. + * + * Ported from: http://underscorejs.org/underscore.js + * + * @param {Function} func + * @param {number} wait + * @param {boolean} immediate + * @return {Function} + */ +OO.ui.debounce = function ( func, wait, immediate ) { + var timeout; + return function () { + var context = this, + args = arguments, + later = function () { + timeout = null; + if ( !immediate ) { + func.apply( context, args ); + } + }; + if ( immediate && !timeout ) { + func.apply( context, args ); + } + clearTimeout( timeout ); + timeout = setTimeout( later, wait ); + }; +}; + +/** + * Proxy for `node.addEventListener( eventName, handler, true )`. + * + * @param {HTMLElement} node + * @param {string} eventName + * @param {Function} handler + * @deprecated + */ +OO.ui.addCaptureEventListener = function ( node, eventName, handler ) { + node.addEventListener( eventName, handler, true ); +}; + +/** + * Proxy for `node.removeEventListener( eventName, handler, true )`. + * + * @param {HTMLElement} node + * @param {string} eventName + * @param {Function} handler + * @deprecated + */ +OO.ui.removeCaptureEventListener = function ( node, eventName, handler ) { + node.removeEventListener( eventName, handler, true ); +}; + +/** + * Reconstitute a JavaScript object corresponding to a widget created by + * the PHP implementation. + * + * This is an alias for `OO.ui.Element.static.infuse()`. + * + * @param {string|HTMLElement|jQuery} idOrNode + * A DOM id (if a string) or node for the widget to infuse. + * @return {OO.ui.Element} + * The `OO.ui.Element` corresponding to this (infusable) document node. + */ +OO.ui.infuse = function ( idOrNode ) { + return OO.ui.Element.static.infuse( idOrNode ); +}; + +( function () { + /** + * Message store for the default implementation of OO.ui.msg + * + * Environments that provide a localization system should not use this, but should override + * OO.ui.msg altogether. + * + * @private + */ + var messages = { + // Tool tip for a button that moves items in a list down one place + 'ooui-outline-control-move-down': 'Move item down', + // Tool tip for a button that moves items in a list up one place + 'ooui-outline-control-move-up': 'Move item up', + // Tool tip for a button that removes items from a list + 'ooui-outline-control-remove': 'Remove item', + // Label for the toolbar group that contains a list of all other available tools + 'ooui-toolbar-more': 'More', + // Label for the fake tool that expands the full list of tools in a toolbar group + 'ooui-toolgroup-expand': 'More', + // Label for the fake tool that collapses the full list of tools in a toolbar group + 'ooui-toolgroup-collapse': 'Fewer', + // Default label for the accept button of a confirmation dialog + 'ooui-dialog-message-accept': 'OK', + // Default label for the reject button of a confirmation dialog + 'ooui-dialog-message-reject': 'Cancel', + // Title for process dialog error description + 'ooui-dialog-process-error': 'Something went wrong', + // Label for process dialog dismiss error button, visible when describing errors + 'ooui-dialog-process-dismiss': 'Dismiss', + // Label for process dialog retry action button, visible when describing only recoverable errors + 'ooui-dialog-process-retry': 'Try again', + // Label for process dialog retry action button, visible when describing only warnings + 'ooui-dialog-process-continue': 'Continue', + // Label for the file selection widget's select file button + 'ooui-selectfile-button-select': 'Select a file', + // Label for the file selection widget if file selection is not supported + 'ooui-selectfile-not-supported': 'File selection is not supported', + // Label for the file selection widget when no file is currently selected + 'ooui-selectfile-placeholder': 'No file is selected', + // Label for the file selection widget's drop target + 'ooui-selectfile-dragdrop-placeholder': 'Drop file here' + }; + + /** + * Get a localized message. + * + * In environments that provide a localization system, this function should be overridden to + * return the message translated in the user's language. The default implementation always returns + * English messages. + * + * After the message key, message parameters may optionally be passed. In the default implementation, + * any occurrences of $1 are replaced with the first parameter, $2 with the second parameter, etc. + * Alternative implementations of OO.ui.msg may use any substitution system they like, as long as + * they support unnamed, ordered message parameters. + * + * @param {string} key Message key + * @param {Mixed...} [params] Message parameters + * @return {string} Translated message with parameters substituted + */ + OO.ui.msg = function ( key ) { + var message = messages[ key ], + params = Array.prototype.slice.call( arguments, 1 ); + if ( typeof message === 'string' ) { + // Perform $1 substitution + message = message.replace( /\$(\d+)/g, function ( unused, n ) { + var i = parseInt( n, 10 ); + return params[ i - 1 ] !== undefined ? params[ i - 1 ] : '$' + n; + } ); + } else { + // Return placeholder if message not found + message = '[' + key + ']'; + } + return message; + }; +} )(); + +/** + * Package a message and arguments for deferred resolution. + * + * Use this when you are statically specifying a message and the message may not yet be present. + * + * @param {string} key Message key + * @param {Mixed...} [params] Message parameters + * @return {Function} Function that returns the resolved message when executed + */ +OO.ui.deferMsg = function () { + var args = arguments; + return function () { + return OO.ui.msg.apply( OO.ui, args ); + }; +}; + +/** + * Resolve a message. + * + * If the message is a function it will be executed, otherwise it will pass through directly. + * + * @param {Function|string} msg Deferred message, or message text + * @return {string} Resolved message + */ +OO.ui.resolveMsg = function ( msg ) { + if ( $.isFunction( msg ) ) { + return msg(); + } + return msg; +}; + +/** + * @param {string} url + * @return {boolean} + */ +OO.ui.isSafeUrl = function ( url ) { + // Keep this function in sync with php/Tag.php + var i, protocolWhitelist; + + function stringStartsWith( haystack, needle ) { + return haystack.substr( 0, needle.length ) === needle; + } + + protocolWhitelist = [ + 'bitcoin', 'ftp', 'ftps', 'geo', 'git', 'gopher', 'http', 'https', 'irc', 'ircs', + 'magnet', 'mailto', 'mms', 'news', 'nntp', 'redis', 'sftp', 'sip', 'sips', 'sms', 'ssh', + 'svn', 'tel', 'telnet', 'urn', 'worldwind', 'xmpp' + ]; + + if ( url === '' ) { + return true; + } + + for ( i = 0; i < protocolWhitelist.length; i++ ) { + if ( stringStartsWith( url, protocolWhitelist[ i ] + ':' ) ) { + return true; + } + } + + // This matches '//' too + if ( stringStartsWith( url, '/' ) || stringStartsWith( url, './' ) ) { + return true; + } + if ( stringStartsWith( url, '?' ) || stringStartsWith( url, '#' ) ) { + return true; + } + + return false; +}; + +/*! + * Mixin namespace. + */ + +/** + * Namespace for OOjs UI mixins. + * + * Mixins are named according to the type of object they are intended to + * be mixed in to. For example, OO.ui.mixin.GroupElement is intended to be + * mixed in to an instance of OO.ui.Element, and OO.ui.mixin.GroupWidget + * is intended to be mixed in to an instance of OO.ui.Widget. + * + * @class + * @singleton + */ +OO.ui.mixin = {}; + +/** + * Each Element represents a rendering in the DOM—a button or an icon, for example, or anything + * that is visible to a user. Unlike {@link OO.ui.Widget widgets}, plain elements usually do not have events + * connected to them and can't be interacted with. + * + * @abstract + * @class + * + * @constructor + * @param {Object} [config] Configuration options + * @cfg {string[]} [classes] The names of the CSS classes to apply to the element. CSS styles are added + * to the top level (e.g., the outermost div) of the element. See the [OOjs UI documentation on MediaWiki][2] + * for an example. + * [2]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Buttons_and_Switches#cssExample + * @cfg {string} [id] The HTML id attribute used in the rendered tag. + * @cfg {string} [text] Text to insert + * @cfg {Array} [content] An array of content elements to append (after #text). + * Strings will be html-escaped; use an OO.ui.HtmlSnippet to append raw HTML. + * Instances of OO.ui.Element will have their $element appended. + * @cfg {jQuery} [$content] Content elements to append (after #text). + * @cfg {jQuery} [$element] Wrapper element. Defaults to a new element with #getTagName. + * @cfg {Mixed} [data] Custom data of any type or combination of types (e.g., string, number, array, object). + * Data can also be specified with the #setData method. + */ +OO.ui.Element = function OoUiElement( config ) { + // Configuration initialization + config = config || {}; + + // Properties + this.$ = $; + this.visible = true; + this.data = config.data; + this.$element = config.$element || + $( document.createElement( this.getTagName() ) ); + this.elementGroup = null; + this.debouncedUpdateThemeClassesHandler = OO.ui.debounce( this.debouncedUpdateThemeClasses ); + + // Initialization + if ( Array.isArray( config.classes ) ) { + this.$element.addClass( config.classes.join( ' ' ) ); + } + if ( config.id ) { + this.$element.attr( 'id', config.id ); + } + if ( config.text ) { + this.$element.text( config.text ); + } + if ( config.content ) { + // The `content` property treats plain strings as text; use an + // HtmlSnippet to append HTML content. `OO.ui.Element`s get their + // appropriate $element appended. + this.$element.append( config.content.map( function ( v ) { + if ( typeof v === 'string' ) { + // Escape string so it is properly represented in HTML. + return document.createTextNode( v ); + } else if ( v instanceof OO.ui.HtmlSnippet ) { + // Bypass escaping. + return v.toString(); + } else if ( v instanceof OO.ui.Element ) { + return v.$element; + } + return v; + } ) ); + } + if ( config.$content ) { + // The `$content` property treats plain strings as HTML. + this.$element.append( config.$content ); + } +}; + +/* Setup */ + +OO.initClass( OO.ui.Element ); + +/* Static Properties */ + +/** + * The name of the HTML tag used by the element. + * + * The static value may be ignored if the #getTagName method is overridden. + * + * @static + * @inheritable + * @property {string} + */ +OO.ui.Element.static.tagName = 'div'; + +/* Static Methods */ + +/** + * Reconstitute a JavaScript object corresponding to a widget created + * by the PHP implementation. + * + * @param {string|HTMLElement|jQuery} idOrNode + * A DOM id (if a string) or node for the widget to infuse. + * @return {OO.ui.Element} + * The `OO.ui.Element` corresponding to this (infusable) document node. + * For `Tag` objects emitted on the HTML side (used occasionally for content) + * the value returned is a newly-created Element wrapping around the existing + * DOM node. + */ +OO.ui.Element.static.infuse = function ( idOrNode ) { + var obj = OO.ui.Element.static.unsafeInfuse( idOrNode, false ); + // Verify that the type matches up. + // FIXME: uncomment after T89721 is fixed (see T90929) + /* + if ( !( obj instanceof this['class'] ) ) { + throw new Error( 'Infusion type mismatch!' ); + } + */ + return obj; +}; + +/** + * Implementation helper for `infuse`; skips the type check and has an + * extra property so that only the top-level invocation touches the DOM. + * @private + * @param {string|HTMLElement|jQuery} idOrNode + * @param {jQuery.Promise|boolean} domPromise A promise that will be resolved + * when the top-level widget of this infusion is inserted into DOM, + * replacing the original node; or false for top-level invocation. + * @return {OO.ui.Element} + */ +OO.ui.Element.static.unsafeInfuse = function ( idOrNode, domPromise ) { + // look for a cached result of a previous infusion. + var id, $elem, data, cls, parts, parent, obj, top, state; + if ( typeof idOrNode === 'string' ) { + id = idOrNode; + $elem = $( document.getElementById( id ) ); + } else { + $elem = $( idOrNode ); + id = $elem.attr( 'id' ); + } + if ( !$elem.length ) { + throw new Error( 'Widget not found: ' + id ); + } + data = $elem.data( 'ooui-infused' ) || $elem[ 0 ].oouiInfused; + if ( data ) { + // cached! + if ( data === true ) { + throw new Error( 'Circular dependency! ' + id ); + } + return data; + } + data = $elem.attr( 'data-ooui' ); + if ( !data ) { + throw new Error( 'No infusion data found: ' + id ); + } + try { + data = $.parseJSON( data ); + } catch ( _ ) { + data = null; + } + if ( !( data && data._ ) ) { + throw new Error( 'No valid infusion data found: ' + id ); + } + if ( data._ === 'Tag' ) { + // Special case: this is a raw Tag; wrap existing node, don't rebuild. + return new OO.ui.Element( { $element: $elem } ); + } + parts = data._.split( '.' ); + cls = OO.getProp.apply( OO, [ window ].concat( parts ) ); + if ( cls === undefined ) { + // The PHP output might be old and not including the "OO.ui" prefix + // TODO: Remove this back-compat after next major release + cls = OO.getProp.apply( OO, [ OO.ui ].concat( parts ) ); + if ( cls === undefined ) { + throw new Error( 'Unknown widget type: id: ' + id + ', class: ' + data._ ); + } + } + + // Verify that we're creating an OO.ui.Element instance + parent = cls.parent; + + while ( parent !== undefined ) { + if ( parent === OO.ui.Element ) { + // Safe + break; + } + + parent = parent.parent; + } + + if ( parent !== OO.ui.Element ) { + throw new Error( 'Unknown widget type: id: ' + id + ', class: ' + data._ ); + } + + if ( domPromise === false ) { + top = $.Deferred(); + domPromise = top.promise(); + } + $elem.data( 'ooui-infused', true ); // prevent loops + data.id = id; // implicit + data = OO.copy( data, null, function deserialize( value ) { + if ( OO.isPlainObject( value ) ) { + if ( value.tag ) { + return OO.ui.Element.static.unsafeInfuse( value.tag, domPromise ); + } + if ( value.html ) { + return new OO.ui.HtmlSnippet( value.html ); + } + } + } ); + // allow widgets to reuse parts of the DOM + data = cls.static.reusePreInfuseDOM( $elem[ 0 ], data ); + // pick up dynamic state, like focus, value of form inputs, scroll position, etc. + state = cls.static.gatherPreInfuseState( $elem[ 0 ], data ); + // rebuild widget + // jscs:disable requireCapitalizedConstructors + obj = new cls( data ); + // jscs:enable requireCapitalizedConstructors + // now replace old DOM with this new DOM. + if ( top ) { + // An efficient constructor might be able to reuse the entire DOM tree of the original element, + // so only mutate the DOM if we need to. + if ( $elem[ 0 ] !== obj.$element[ 0 ] ) { + $elem.replaceWith( obj.$element ); + // This element is now gone from the DOM, but if anyone is holding a reference to it, + // let's allow them to OO.ui.infuse() it and do what they expect (T105828). + // Do not use jQuery.data(), as using it on detached nodes leaks memory in 1.x line by design. + $elem[ 0 ].oouiInfused = obj; + } + top.resolve(); + } + obj.$element.data( 'ooui-infused', obj ); + // set the 'data-ooui' attribute so we can identify infused widgets + obj.$element.attr( 'data-ooui', '' ); + // restore dynamic state after the new element is inserted into DOM + domPromise.done( obj.restorePreInfuseState.bind( obj, state ) ); + return obj; +}; + +/** + * Pick out parts of `node`'s DOM to be reused when infusing a widget. + * + * This method **must not** make any changes to the DOM, only find interesting pieces and add them + * to `config` (which should then be returned). Actual DOM juggling should then be done by the + * constructor, which will be given the enhanced config. + * + * @protected + * @param {HTMLElement} node + * @param {Object} config + * @return {Object} + */ +OO.ui.Element.static.reusePreInfuseDOM = function ( node, config ) { + return config; +}; + +/** + * Gather the dynamic state (focus, value of form inputs, scroll position, etc.) of a HTML DOM node + * (and its children) that represent an Element of the same class and the given configuration, + * generated by the PHP implementation. + * + * This method is called just before `node` is detached from the DOM. The return value of this + * function will be passed to #restorePreInfuseState after the newly created widget's #$element + * is inserted into DOM to replace `node`. + * + * @protected + * @param {HTMLElement} node + * @param {Object} config + * @return {Object} + */ +OO.ui.Element.static.gatherPreInfuseState = function () { + return {}; +}; + +/** + * Get a jQuery function within a specific document. + * + * @static + * @param {jQuery|HTMLElement|HTMLDocument|Window} context Context to bind the function to + * @param {jQuery} [$iframe] HTML iframe element that contains the document, omit if document is + * not in an iframe + * @return {Function} Bound jQuery function + */ +OO.ui.Element.static.getJQuery = function ( context, $iframe ) { + function wrapper( selector ) { + return $( selector, wrapper.context ); + } + + wrapper.context = this.getDocument( context ); + + if ( $iframe ) { + wrapper.$iframe = $iframe; + } + + return wrapper; +}; + +/** + * Get the document of an element. + * + * @static + * @param {jQuery|HTMLElement|HTMLDocument|Window} obj Object to get the document for + * @return {HTMLDocument|null} Document object + */ +OO.ui.Element.static.getDocument = function ( obj ) { + // jQuery - selections created "offscreen" won't have a context, so .context isn't reliable + return ( obj[ 0 ] && obj[ 0 ].ownerDocument ) || + // Empty jQuery selections might have a context + obj.context || + // HTMLElement + obj.ownerDocument || + // Window + obj.document || + // HTMLDocument + ( obj.nodeType === 9 && obj ) || + null; +}; + +/** + * Get the window of an element or document. + * + * @static + * @param {jQuery|HTMLElement|HTMLDocument|Window} obj Context to get the window for + * @return {Window} Window object + */ +OO.ui.Element.static.getWindow = function ( obj ) { + var doc = this.getDocument( obj ); + return doc.defaultView; +}; + +/** + * Get the direction of an element or document. + * + * @static + * @param {jQuery|HTMLElement|HTMLDocument|Window} obj Context to get the direction for + * @return {string} Text direction, either 'ltr' or 'rtl' + */ +OO.ui.Element.static.getDir = function ( obj ) { + var isDoc, isWin; + + if ( obj instanceof jQuery ) { + obj = obj[ 0 ]; + } + isDoc = obj.nodeType === 9; + isWin = obj.document !== undefined; + if ( isDoc || isWin ) { + if ( isWin ) { + obj = obj.document; + } + obj = obj.body; + } + return $( obj ).css( 'direction' ); +}; + +/** + * Get the offset between two frames. + * + * TODO: Make this function not use recursion. + * + * @static + * @param {Window} from Window of the child frame + * @param {Window} [to=window] Window of the parent frame + * @param {Object} [offset] Offset to start with, used internally + * @return {Object} Offset object, containing left and top properties + */ +OO.ui.Element.static.getFrameOffset = function ( from, to, offset ) { + var i, len, frames, frame, rect; + + if ( !to ) { + to = window; + } + if ( !offset ) { + offset = { top: 0, left: 0 }; + } + if ( from.parent === from ) { + return offset; + } + + // Get iframe element + frames = from.parent.document.getElementsByTagName( 'iframe' ); + for ( i = 0, len = frames.length; i < len; i++ ) { + if ( frames[ i ].contentWindow === from ) { + frame = frames[ i ]; + break; + } + } + + // Recursively accumulate offset values + if ( frame ) { + rect = frame.getBoundingClientRect(); + offset.left += rect.left; + offset.top += rect.top; + if ( from !== to ) { + this.getFrameOffset( from.parent, offset ); + } + } + return offset; +}; + +/** + * Get the offset between two elements. + * + * The two elements may be in a different frame, but in that case the frame $element is in must + * be contained in the frame $anchor is in. + * + * @static + * @param {jQuery} $element Element whose position to get + * @param {jQuery} $anchor Element to get $element's position relative to + * @return {Object} Translated position coordinates, containing top and left properties + */ +OO.ui.Element.static.getRelativePosition = function ( $element, $anchor ) { + var iframe, iframePos, + pos = $element.offset(), + anchorPos = $anchor.offset(), + elementDocument = this.getDocument( $element ), + anchorDocument = this.getDocument( $anchor ); + + // If $element isn't in the same document as $anchor, traverse up + while ( elementDocument !== anchorDocument ) { + iframe = elementDocument.defaultView.frameElement; + if ( !iframe ) { + throw new Error( '$element frame is not contained in $anchor frame' ); + } + iframePos = $( iframe ).offset(); + pos.left += iframePos.left; + pos.top += iframePos.top; + elementDocument = iframe.ownerDocument; + } + pos.left -= anchorPos.left; + pos.top -= anchorPos.top; + return pos; +}; + +/** + * Get element border sizes. + * + * @static + * @param {HTMLElement} el Element to measure + * @return {Object} Dimensions object with `top`, `left`, `bottom` and `right` properties + */ +OO.ui.Element.static.getBorders = function ( el ) { + var doc = el.ownerDocument, + win = doc.defaultView, + style = win.getComputedStyle( el, null ), + $el = $( el ), + top = parseFloat( style ? style.borderTopWidth : $el.css( 'borderTopWidth' ) ) || 0, + left = parseFloat( style ? style.borderLeftWidth : $el.css( 'borderLeftWidth' ) ) || 0, + bottom = parseFloat( style ? style.borderBottomWidth : $el.css( 'borderBottomWidth' ) ) || 0, + right = parseFloat( style ? style.borderRightWidth : $el.css( 'borderRightWidth' ) ) || 0; + + return { + top: top, + left: left, + bottom: bottom, + right: right + }; +}; + +/** + * Get dimensions of an element or window. + * + * @static + * @param {HTMLElement|Window} el Element to measure + * @return {Object} Dimensions object with `borders`, `scroll`, `scrollbar` and `rect` properties + */ +OO.ui.Element.static.getDimensions = function ( el ) { + var $el, $win, + doc = el.ownerDocument || el.document, + win = doc.defaultView; + + if ( win === el || el === doc.documentElement ) { + $win = $( win ); + return { + borders: { top: 0, left: 0, bottom: 0, right: 0 }, + scroll: { + top: $win.scrollTop(), + left: $win.scrollLeft() + }, + scrollbar: { right: 0, bottom: 0 }, + rect: { + top: 0, + left: 0, + bottom: $win.innerHeight(), + right: $win.innerWidth() + } + }; + } else { + $el = $( el ); + return { + borders: this.getBorders( el ), + scroll: { + top: $el.scrollTop(), + left: $el.scrollLeft() + }, + scrollbar: { + right: $el.innerWidth() - el.clientWidth, + bottom: $el.innerHeight() - el.clientHeight + }, + rect: el.getBoundingClientRect() + }; + } +}; + +/** + * Get scrollable object parent + * + * documentElement can't be used to get or set the scrollTop + * property on Blink. Changing and testing its value lets us + * use 'body' or 'documentElement' based on what is working. + * + * https://code.google.com/p/chromium/issues/detail?id=303131 + * + * @static + * @param {HTMLElement} el Element to find scrollable parent for + * @return {HTMLElement} Scrollable parent + */ +OO.ui.Element.static.getRootScrollableElement = function ( el ) { + var scrollTop, body; + + if ( OO.ui.scrollableElement === undefined ) { + body = el.ownerDocument.body; + scrollTop = body.scrollTop; + body.scrollTop = 1; + + if ( body.scrollTop === 1 ) { + body.scrollTop = scrollTop; + OO.ui.scrollableElement = 'body'; + } else { + OO.ui.scrollableElement = 'documentElement'; + } + } + + return el.ownerDocument[ OO.ui.scrollableElement ]; +}; + +/** + * Get closest scrollable container. + * + * Traverses up until either a scrollable element or the root is reached, in which case the window + * will be returned. + * + * @static + * @param {HTMLElement} el Element to find scrollable container for + * @param {string} [dimension] Dimension of scrolling to look for; `x`, `y` or omit for either + * @return {HTMLElement} Closest scrollable container + */ +OO.ui.Element.static.getClosestScrollableContainer = function ( el, dimension ) { + var i, val, + // props = [ 'overflow' ] doesn't work due to https://bugzilla.mozilla.org/show_bug.cgi?id=889091 + props = [ 'overflow-x', 'overflow-y' ], + $parent = $( el ).parent(); + + if ( dimension === 'x' || dimension === 'y' ) { + props = [ 'overflow-' + dimension ]; + } + + while ( $parent.length ) { + if ( $parent[ 0 ] === this.getRootScrollableElement( el ) ) { + return $parent[ 0 ]; + } + i = props.length; + while ( i-- ) { + val = $parent.css( props[ i ] ); + if ( val === 'auto' || val === 'scroll' ) { + return $parent[ 0 ]; + } + } + $parent = $parent.parent(); + } + return this.getDocument( el ).body; +}; + +/** + * Scroll element into view. + * + * @static + * @param {HTMLElement} el Element to scroll into view + * @param {Object} [config] Configuration options + * @param {string} [config.duration] jQuery animation duration value + * @param {string} [config.direction] Scroll in only one direction, e.g. 'x' or 'y', omit + * to scroll in both directions + * @param {Function} [config.complete] Function to call when scrolling completes + */ +OO.ui.Element.static.scrollIntoView = function ( el, config ) { + var rel, anim, callback, sc, $sc, eld, scd, $win; + + // Configuration initialization + config = config || {}; + + anim = {}; + callback = typeof config.complete === 'function' && config.complete; + sc = this.getClosestScrollableContainer( el, config.direction ); + $sc = $( sc ); + eld = this.getDimensions( el ); + scd = this.getDimensions( sc ); + $win = $( this.getWindow( el ) ); + + // Compute the distances between the edges of el and the edges of the scroll viewport + if ( $sc.is( 'html, body' ) ) { + // If the scrollable container is the root, this is easy + rel = { + top: eld.rect.top, + bottom: $win.innerHeight() - eld.rect.bottom, + left: eld.rect.left, + right: $win.innerWidth() - eld.rect.right + }; + } else { + // Otherwise, we have to subtract el's coordinates from sc's coordinates + rel = { + top: eld.rect.top - ( scd.rect.top + scd.borders.top ), + bottom: scd.rect.bottom - scd.borders.bottom - scd.scrollbar.bottom - eld.rect.bottom, + left: eld.rect.left - ( scd.rect.left + scd.borders.left ), + right: scd.rect.right - scd.borders.right - scd.scrollbar.right - eld.rect.right + }; + } + + if ( !config.direction || config.direction === 'y' ) { + if ( rel.top < 0 ) { + anim.scrollTop = scd.scroll.top + rel.top; + } else if ( rel.top > 0 && rel.bottom < 0 ) { + anim.scrollTop = scd.scroll.top + Math.min( rel.top, -rel.bottom ); + } + } + if ( !config.direction || config.direction === 'x' ) { + if ( rel.left < 0 ) { + anim.scrollLeft = scd.scroll.left + rel.left; + } else if ( rel.left > 0 && rel.right < 0 ) { + anim.scrollLeft = scd.scroll.left + Math.min( rel.left, -rel.right ); + } + } + if ( !$.isEmptyObject( anim ) ) { + $sc.stop( true ).animate( anim, config.duration || 'fast' ); + if ( callback ) { + $sc.queue( function ( next ) { + callback(); + next(); + } ); + } + } else { + if ( callback ) { + callback(); + } + } +}; + +/** + * Force the browser to reconsider whether it really needs to render scrollbars inside the element + * and reserve space for them, because it probably doesn't. + * + * Workaround primarily for , but also + * similar bugs in other browsers. "Just" forcing a reflow is not sufficient in all cases, we need + * to first actually detach (or hide, but detaching is simpler) all children, *then* force a reflow, + * and then reattach (or show) them back. + * + * @static + * @param {HTMLElement} el Element to reconsider the scrollbars on + */ +OO.ui.Element.static.reconsiderScrollbars = function ( el ) { + var i, len, scrollLeft, scrollTop, nodes = []; + // Save scroll position + scrollLeft = el.scrollLeft; + scrollTop = el.scrollTop; + // Detach all children + while ( el.firstChild ) { + nodes.push( el.firstChild ); + el.removeChild( el.firstChild ); + } + // Force reflow + void el.offsetHeight; + // Reattach all children + for ( i = 0, len = nodes.length; i < len; i++ ) { + el.appendChild( nodes[ i ] ); + } + // Restore scroll position (no-op if scrollbars disappeared) + el.scrollLeft = scrollLeft; + el.scrollTop = scrollTop; +}; + +/* Methods */ + +/** + * Toggle visibility of an element. + * + * @param {boolean} [show] Make element visible, omit to toggle visibility + * @fires visible + * @chainable + */ +OO.ui.Element.prototype.toggle = function ( show ) { + show = show === undefined ? !this.visible : !!show; + + if ( show !== this.isVisible() ) { + this.visible = show; + this.$element.toggleClass( 'oo-ui-element-hidden', !this.visible ); + this.emit( 'toggle', show ); + } + + return this; +}; + +/** + * Check if element is visible. + * + * @return {boolean} element is visible + */ +OO.ui.Element.prototype.isVisible = function () { + return this.visible; +}; + +/** + * Get element data. + * + * @return {Mixed} Element data + */ +OO.ui.Element.prototype.getData = function () { + return this.data; +}; + +/** + * Set element data. + * + * @param {Mixed} Element data + * @chainable + */ +OO.ui.Element.prototype.setData = function ( data ) { + this.data = data; + return this; +}; + +/** + * Check if element supports one or more methods. + * + * @param {string|string[]} methods Method or list of methods to check + * @return {boolean} All methods are supported + */ +OO.ui.Element.prototype.supports = function ( methods ) { + var i, len, + support = 0; + + methods = Array.isArray( methods ) ? methods : [ methods ]; + for ( i = 0, len = methods.length; i < len; i++ ) { + if ( $.isFunction( this[ methods[ i ] ] ) ) { + support++; + } + } + + return methods.length === support; +}; + +/** + * Update the theme-provided classes. + * + * @localdoc This is called in element mixins and widget classes any time state changes. + * Updating is debounced, minimizing overhead of changing multiple attributes and + * guaranteeing that theme updates do not occur within an element's constructor + */ +OO.ui.Element.prototype.updateThemeClasses = function () { + this.debouncedUpdateThemeClassesHandler(); +}; + +/** + * @private + * @localdoc This method is called directly from the QUnit tests instead of #updateThemeClasses, to + * make them synchronous. + */ +OO.ui.Element.prototype.debouncedUpdateThemeClasses = function () { + OO.ui.theme.updateElementClasses( this ); +}; + +/** + * Get the HTML tag name. + * + * Override this method to base the result on instance information. + * + * @return {string} HTML tag name + */ +OO.ui.Element.prototype.getTagName = function () { + return this.constructor.static.tagName; +}; + +/** + * Check if the element is attached to the DOM + * @return {boolean} The element is attached to the DOM + */ +OO.ui.Element.prototype.isElementAttached = function () { + return $.contains( this.getElementDocument(), this.$element[ 0 ] ); +}; + +/** + * Get the DOM document. + * + * @return {HTMLDocument} Document object + */ +OO.ui.Element.prototype.getElementDocument = function () { + // Don't cache this in other ways either because subclasses could can change this.$element + return OO.ui.Element.static.getDocument( this.$element ); +}; + +/** + * Get the DOM window. + * + * @return {Window} Window object + */ +OO.ui.Element.prototype.getElementWindow = function () { + return OO.ui.Element.static.getWindow( this.$element ); +}; + +/** + * Get closest scrollable container. + */ +OO.ui.Element.prototype.getClosestScrollableElementContainer = function () { + return OO.ui.Element.static.getClosestScrollableContainer( this.$element[ 0 ] ); +}; + +/** + * Get group element is in. + * + * @return {OO.ui.mixin.GroupElement|null} Group element, null if none + */ +OO.ui.Element.prototype.getElementGroup = function () { + return this.elementGroup; +}; + +/** + * Set group element is in. + * + * @param {OO.ui.mixin.GroupElement|null} group Group element, null if none + * @chainable + */ +OO.ui.Element.prototype.setElementGroup = function ( group ) { + this.elementGroup = group; + return this; +}; + +/** + * Scroll element into view. + * + * @param {Object} [config] Configuration options + */ +OO.ui.Element.prototype.scrollElementIntoView = function ( config ) { + return OO.ui.Element.static.scrollIntoView( this.$element[ 0 ], config ); +}; + +/** + * Restore the pre-infusion dynamic state for this widget. + * + * This method is called after #$element has been inserted into DOM. The parameter is the return + * value of #gatherPreInfuseState. + * + * @protected + * @param {Object} state + */ +OO.ui.Element.prototype.restorePreInfuseState = function () { +}; + +/** + * Wraps an HTML snippet for use with configuration values which default + * to strings. This bypasses the default html-escaping done to string + * values. + * + * @class + * + * @constructor + * @param {string} [content] HTML content + */ +OO.ui.HtmlSnippet = function OoUiHtmlSnippet( content ) { + // Properties + this.content = content; +}; + +/* Setup */ + +OO.initClass( OO.ui.HtmlSnippet ); + +/* Methods */ + +/** + * Render into HTML. + * + * @return {string} Unchanged HTML snippet. + */ +OO.ui.HtmlSnippet.prototype.toString = function () { + return this.content; +}; + +/** + * Layouts are containers for elements and are used to arrange other widgets of arbitrary type in a way + * that is centrally controlled and can be updated dynamically. Layouts can be, and usually are, combined. + * See {@link OO.ui.FieldsetLayout FieldsetLayout}, {@link OO.ui.FieldLayout FieldLayout}, {@link OO.ui.FormLayout FormLayout}, + * {@link OO.ui.PanelLayout PanelLayout}, {@link OO.ui.StackLayout StackLayout}, {@link OO.ui.PageLayout PageLayout}, + * {@link OO.ui.HorizontalLayout HorizontalLayout}, and {@link OO.ui.BookletLayout BookletLayout} for more information and examples. + * + * @abstract + * @class + * @extends OO.ui.Element + * @mixins OO.EventEmitter + * + * @constructor + * @param {Object} [config] Configuration options + */ +OO.ui.Layout = function OoUiLayout( config ) { + // Configuration initialization + config = config || {}; + + // Parent constructor + OO.ui.Layout.parent.call( this, config ); + + // Mixin constructors + OO.EventEmitter.call( this ); + + // Initialization + this.$element.addClass( 'oo-ui-layout' ); +}; + +/* Setup */ + +OO.inheritClass( OO.ui.Layout, OO.ui.Element ); +OO.mixinClass( OO.ui.Layout, OO.EventEmitter ); + +/** + * Widgets are compositions of one or more OOjs UI elements that users can both view + * and interact with. All widgets can be configured and modified via a standard API, + * and their state can change dynamically according to a model. + * + * @abstract + * @class + * @extends OO.ui.Element + * @mixins OO.EventEmitter + * + * @constructor + * @param {Object} [config] Configuration options + * @cfg {boolean} [disabled=false] Disable the widget. Disabled widgets cannot be used and their + * appearance reflects this state. + */ +OO.ui.Widget = function OoUiWidget( config ) { + // Initialize config + config = $.extend( { disabled: false }, config ); + + // Parent constructor + OO.ui.Widget.parent.call( this, config ); + + // Mixin constructors + OO.EventEmitter.call( this ); + + // Properties + this.disabled = null; + this.wasDisabled = null; + + // Initialization + this.$element.addClass( 'oo-ui-widget' ); + this.setDisabled( !!config.disabled ); +}; + +/* Setup */ + +OO.inheritClass( OO.ui.Widget, OO.ui.Element ); +OO.mixinClass( OO.ui.Widget, OO.EventEmitter ); + +/* Static Properties */ + +/** + * Whether this widget will behave reasonably when wrapped in a HTML `