mediawiki-extensions-Visual.../modules/ve/ui/styles/ve.ui.Widget.css
Trevor Parscal fb22e4df50 Group, Select, Option, Outline and MenuSection widgets
Objective: Refactor menu widgets so that the majority of their code can be reused, and then add an outline widget which shares the same base classes.

ve.ui.Dialog.css
* Make dialog a fixed width and have a minimum and maximum height while always being centered in the window.
* Add style for the outline panel
* Add border below the title
* Move font-size adjustment to child elements to preserve layout scale

ve.ui.Inspector.css
* Make inspectors fade in when being opened (will happen after the size transition is complete)
* Add initial size for inspector to prevent the default size of the unfinished contents from making it too large while loading

ve.ui.Tool.css
* Update classes according to changes in labeled widgets

ve.ui.Widget.css
* Add display: block to widget labels to support use of autoEllipsis on them
* Update classes according to changes in labeled widgets
* Add styles for new select, option and outline item widgets
* Remove unused group and items classes for menu widgets (which are now subclasses of the select widget and no longer have grouping built-in)

ve.ui.Window.css.js
* Moved selection disabling rules up to the head to prevent selection drawing around the title

ve.ui.GroupWidget.js
* New widget that manages "items", allowing getting, adding, removing and clearing

ve.ui.MenuSectionItemWidget.js
* New widget that can be used inside a menu to create an unselectable, unhighlightable item that describes a section of the menu

ve.ui.OptionWidget.js
* New widget to be used with select widgets, provides select and highlight functionality

ve.ui.OutlineItemWidget.js
* New widget to be used with outline widgets, extends option and adds support for an icon to be rendered to the left of the label

ve.ui.OutlineWidget.js
* New widget that provides a vertically stacked list of mutually exclusive options, extends select

ve.ui.SelectWidget.js
* New widget that implements most of what menu once did, only now it also handles all the events for it's child elements internally

ve.ui.MetaDialog.js
* Hacked in support for an outline widget in the outline pane
* Added classes for styling purposes

ve.ui.FormatDropDownTool.js
* Modified call to menu item constructor as per changes therein
* Reorganized options config to make construction simpler
* Changed to setLabel after selecting the item to prevent the label from being changed to the wrong value as a side-effect of setting the item

ve.ui.DropDownTool.js
* Added $$ in config for menu widget - just in case later on we use a drop-down inside of a frame
* Using jQuery .text() method to propagate the selected item's text to the label rather than keeping around a plain text copy of the label in a property

ve.ui.Context.js
* Improve context/inspector behavior in regards to initial sizing

ve.ui.js
* Added context property to $$ returned by get$$ so it's easy to get the document object (for event binding) wherever you have a $$

ve.ui.Window.js
* Fixed incorrect case for boolean type in comment
* Added getFrame method

ve.ui.ButtonWidget.js
* Removed extra class being set on label

ve.ui.LabeledWidget.js
* Added class on label
* Added fitLabel method which uses autoEllipsis internally

ve.ui.MenuItemWidget.js
* Moved nearly all of the implementation to option so it could be reused

ve.ui.Menu.js
* Moved most of the implementation to select and group

ve.ui.MWLinkTargetInputWidget
* Prevent aborting and re-querying if the value hasn't actually changed
* Updated populateMenu method as per changes in menu class

*.php
* Added links to new files

Change-Id: I2271b5cc0554973b13cfbff94caf16901c02caa5
2013-03-20 22:55:32 +00:00

303 lines
7.4 KiB
CSS

/*!
* VisualEditor UserInterface Widget styles.
*
* @copyright 2011-2013 VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see LICENSE.txt
*/
/* ve.ui.LabeledWidget */
.ve-ui-labeledWidget-label {
display: block;
}
/* ve.ui.IconButtonWidget */
.ve-ui-iconButtonWidget {
width: 2em;
height: 2em;
background-position: center center;
background-repeat: no-repeat;
cursor: pointer;
opacity: 0.8;
-webkit-transition: opacity 100ms;
-moz-transition: opacity 100ms;
-ms-transition: opacity 100ms;
-o-transition: opacity 100ms;
transition: opacity 100ms;
}
.ve-ui-iconButtonWidget:hover {
opacity: 1;
}
/* ve.ui.ButtonWidget */
.ve-ui-buttonWidget {
display: inline-block;
height: 1.8em;
margin: 0.1em 0;
padding: 0.25em 0.75em;
border-radius: 0.3em;
vertical-align: top;
color: #333;
text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5);
box-shadow: 0 0.1em 0.25em rgba(0, 0, 0, 0.1);
text-align: center;
font-size: 1em;
cursor: pointer;
-webkit-touch-callout: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
/* Animation */
-webkit-transition: border-color 100ms;
-moz-transition: border-color 100ms;
-ms-transition: border-color 100ms;
-o-transition: border-color 100ms;
transition: border-color 100ms;
/* Gray */
border: 1px #c9c9c9 solid;
background-color: #ffffff;
filter: progid:DXImageTransform.Microsoft.gradient(
GradientType=0,startColorstr=#ffffff, endColorstr=#f0f0f0
);
background-image: -webkit-gradient(
linear, right top, right bottom, color-stop(0%,#ffffff), color-stop(100%,#f0f0f0)
);
background-image: -webkit-linear-gradient(top, #ffffff 0%, #f0f0f0 100%);
background-image: -moz-linear-gradient(top, #ffffff 0%, #f0f0f0 100%);
background-image: -ms-linear-gradient(top, #ffffff 0%, #f0f0f0 100%);
background-image: -o-linear-gradient(top, #ffffff 0%, #f0f0f0 100%);
background-image: linear-gradient(top, #ffffff 0%, #f0f0f0 100%);
}
.ve-ui-buttonWidget:hover {
border-color: #aaa;
}
.ve-ui-buttonWidget:active {
border-color: #ddd;
box-shadow: inset 0 1px 4px 0 rgba(0, 0, 0, 0.07);
color: black;
}
.ve-ui-widget-disabled.ve-ui-buttonWidget,
.ve-ui-widget-disabled.ve-ui-buttonWidget:active {
filter: alpha(opacity=25);
opacity: 0.5;
cursor: default;
box-shadow: none;
color: #333;
}
.ve-ui-widget-disabled.ve-ui-buttonWidget:hover {
border-color: #ccc;
box-shadow: none;
}
.ve-ui-buttonWidget .ve-ui-labeledWidget-label {
display: inline-block;
vertical-align: middle;
line-height: 1.9em;
}
.ve-ui-flaggableWidget-destructive.ve-ui-buttonWidget {
/* Red text */
color: #d45353;
}
.ve-ui-flaggableWidget-constructive.ve-ui-buttonWidget {
/* Green */
border: solid 1px #c3e59a;
background-color: #f0fbe1;
filter: progid:DXImageTransform.Microsoft.gradient(
GradientType=0,startColorstr=#f0fbe1, endColorstr=#c3e59a
);
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: -ms-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
background-image: -o-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
background-image: linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
}
.ve-ui-flaggableWidget-constructive.ve-ui-buttonWidget:hover {
border-color: #a6cf74;
}
.ve-ui-flaggableWidget-primary.ve-ui-buttonWidget {
/* Blue */
border: solid 1px #b0d9ee;
background-color: #eaf4fa;
filter: progid:DXImageTransform.Microsoft.gradient(
GradientType=0,startColorstr=#eaf4fa, endColorstr=#b0d9ee
);
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: -ms-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
background-image: -o-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
background-image: linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
}
.ve-ui-flaggableWidget-primary.ve-ui-buttonWidget:hover {
border-color: #84b9d4;
}
/* ve.ui.SelectWidget */
.ve-ui-selectWidget {
list-style: none;
margin: 0;
padding: 0;
}
/* ve.ui.OptionWidget */
.ve-ui-optionWidget {
display: block;
border: none;
list-style: none;
margin: 0;
padding: 0.5em 2em 0.5em 3em;
cursor: pointer;
}
.ve-ui-optionWidget .ve-ui-labeledWidget-label {
white-space: nowrap;
}
.ve-ui-optionWidget-highlighted {
background-color: #b3d6f6;
}
/* ve.ui.OutlineItemWidget */
.ve-ui-outlineItemWidget {
padding: 1.25em 1.25em 1.25em 3.5em;
background-position: 1em center;
background-repeat: no-repeat;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
cursor: pointer;
font-size: 1.1em;
}
.ve-ui-outlineItemWidget.ve-ui-optionWidget-selected {
background-color: #a7dcff;
text-shadow: 0 1px 1px rgba(255,255,255,0.5);
}
/* ve.ui.TextInputWidget */
.ve-ui-textInputWidget input,
.ve-ui-textInputWidget input:focus[readonly],
.ve-ui-widget-disabled.ve-ui-textInputWidget input:focus {
display: inline-block;
font-size: 1em;
font-family: sans-serif;
background-color: #f7f7f7;
border: solid 1px #ccc;
box-shadow: 0 0 0 white, inset 0 0.1em 0.2em #ddd;
padding: 0.5em;
border-radius: 0.25em;
/* Animation */
-webkit-transition: border-color 200ms, box-shadow 200ms, background-color 200ms;
-moz-transition: border-color 200ms, box-shadow 200ms, background-color 200ms;
-ms-transition: border-color 200ms, box-shadow 200ms, background-color 200ms;
-o-transition: border-color 200ms, box-shadow 200ms, background-color 200ms;
transition: border-color 200ms, box-shadow 200ms, background-color 200ms;
}
.ve-ui-textInputWidget input:focus {
outline: none;
border-color: #a7dcff;
box-shadow: 0 0 0.3em #a7dcff, 0 0 0 white;
background-color: #fff;
}
.ve-ui-textInputWidget input[readonly] {
color: #777;
text-shadow: 0 1px 1px #fff;
}
.ve-ui-widget-disabled.ve-ui-textInputWidget input,
.ve-ui-widget-disabled.ve-ui-textInputWidget input:focus {
color: #ccc;
text-shadow: 0 1px 1px #fff;
}
/* ve.ui.MenuWidget */
.ve-ui-menuWidget {
position: absolute;
background: #FFFFFF;
margin-top: -1px;
font-size: 0.8em;
z-index: 101;
border: solid 1px #ccc;
border-radius: 0 0 0.25em 0.25em;
box-shadow: 0 0.15em 1em 0 rgba(0, 0, 0, 0.2);
}
.ve-ui-menuWidget input {
position: absolute;
width: 0;
height: 0;
overflow: hidden;
opacity: 0;
}
/* ve.ui.MenuItemWidget */
.ve-ui-menuItemWidget {
background-position: 1em center;
background-repeat: no-repeat;
}
/* ve.ui.MenuSectionItemWidget */
.ve-ui-menuSectionItemWidget {
padding: 0.33em 0.75em;
color: #888;
}
/* ve.ui.MWLinkTargetInputWidget */
.ve-ui-mwLinkTargetInputWidget-pending input {
background-image: url(images/pending.gif);
}
/* ve.ui.MWLinkTargetInputWidget */
.ve-ui-mwLinkTargetInputWidget-menu {
width: 20em;
margin-top: -7px;
}
.ve-ui-mwLinkTargetInputWidget-menu .ve-ui-menuWidget-item {
padding: 0.33em 1.25em;
color: #0645AD;
}
.ve-ui-mwLinkTargetInputWidget-menu .ve-ui-menuItemWidget[rel=newPage] {
color: #BA0000;
}
.ve-ui-mwLinkTargetInputWidget-menu .ve-ui-menuItemWidget[rel=existingPage],
.ve-ui-mwLinkTargetInputWidget-menu .ve-ui-menuItemWidget[rel=matchingPage],
.ve-ui-mwLinkTargetInputWidget-menu .ve-ui-menuItemWidget[rel=externalLink] {
color: #0645AD;
}