// private $menu-icon-separator-indent: left($menu-padding) + $menu-item-icon-size + ($menu-item-icon-horizontal-spacing * 2); // private $menu-item-indent: ($menu-icon-separator-indent + $menu-separator-size + $menu-item-text-horizontal-spacing); @if $menu-border-width != null { .#{$prefix}menu { // if $menu-border-width is null, we will inherit body border from Panel border-style: $menu-border-style; border-width: $menu-border-width; border-color: $menu-border-color; } } .#{$prefix}menu-body { background: $menu-background-color; padding: $menu-padding; } .#{$prefix}menu-icon-separator { left: $menu-icon-separator-indent; border-left: solid 1px $menu-separator-border-color; background-color: $menu-separator-background-color; width: $menu-separator-size; } @if $include-rtl { .#{$prefix}rtl.#{$prefix}menu .#{$prefix}menu-icon-separator { left: auto; right: $menu-icon-separator-indent; } } .#{$prefix}menu-item { // Inactive menu items have padding in place of the active border width. // When active, they get their border added, but padding set to zero. // So that there's no border occluding the Menu when an item is inactive. // TODO: When we drop IE6, use transparent borders on inactive items and no padding and remove this hack. @if $menu-item-border-width != 0 { padding: $menu-item-border-width; } cursor: $menu-item-cursor; } // Components used as menu items configured with "indent:true" are assigned a css class of x-menu-item-indent, unless // the menu is configured with "plain: true" .#{$prefix}menu-item-indent { margin-left: $menu-item-indent; } @if $include-rtl { .#{$prefix}rtl.#{$prefix}menu-item-indent { margin-left: 0; margin-right: $menu-item-indent; } } .#{$prefix}menu-item-active { @include background-gradient($menu-item-active-background-color, $menu-item-background-gradient); border-color: $menu-item-active-border-color; @if $menu-item-active-border-radius != 0 { @include border-radius($menu-item-active-border-radius); } // When active, the border takes the place of padding so that a border can appear // without changing the overall size of the item. // TODO: When we drop IE6, use transparent borders on inactive items and no padding and remove this hack. @if $menu-item-border-width != 0 { border-width: $menu-item-border-width; border-style: solid; padding: 0; } // Background linear gradient @if not $supports-gradients or $compile-all { .#{$prefix}nlg & { background: $menu-item-active-background-color repeat-x left top; background-image: slicer-background-image(menu-item-link, 'menu/menu-item-active-bg'); } } } .#{$prefix}menu-item-link { line-height: $menu-item-height - vertical($menu-item-border-width); padding: 0 $menu-item-trailing-padding 0 $menu-item-indent; // Otherwise, multi line menu items wrap into the padding area (icon space) in Webkit display: inline-block; } @if $include-rtl { .#{$prefix}rtl.#{$prefix}menu-item-link { padding: 0 $menu-item-indent 0 $menu-item-trailing-padding; } } // Menu check items need padding at end to accommodate checkbox. // Class is always x-right-check-item-text where "right" means "after" .#{$prefix}right-check-item-text { padding-right: $menu-check-item-padding; } @if $include-rtl { .#{$prefix}rtl.#{$prefix}right-check-item-text { padding-left: $menu-check-item-padding; padding-right: 0; } } .#{$prefix}menu-item-icon { width: $menu-item-icon-size; height: $menu-item-icon-size; top: $menu-item-icon-top; left: $menu-item-icon-horizontal-spacing; background-position: $menu-item-icon-background-position; } .#{$prefix}menu-item-glyph { font-size: $menu-item-icon-size; line-height: $menu-item-icon-size; color: $menu-glyph-color; @if $menu-glyph-opacity != 1 { // do not use the opacity mixin because we do not want IE's filter version of // opacity to be included. We emulate the opacity setting in IE8m by mixing // the icon color into the background color. (see below) opacity: $menu-glyph-opacity; } // In IE8 and below when a glyph contains partially transparent pixels, we // can't apply an opacity filter to the glyph element, because IE8m will render // the partially transparent pixels of the glyph as black. To work around this, // we emulate the approximate color that the glyph would have if it had opacity // applied by mixing the glyph color with the menus's background-color. .#{$prefix}ie8m & { color: mix($menu-glyph-color, $menu-background-color, $menu-glyph-opacity * 100); } } // Stop the addition of bordering to active items shifting the menu icon in bad IEs (and FF) // TODO: When we drop IE6, use transparent borders on inactive items and no padding and remove this hack. @if $menu-item-border-width != 0 { .#{$prefix}gecko .#{$prefix}menu-item-active .#{$prefix}menu-item-icon, .#{$prefix}quirks .#{$prefix}menu-item-active .#{$prefix}menu-item-icon, .#{$prefix}ie9m .#{$prefix}menu-item-active .#{$prefix}menu-item-icon { top: ($menu-item-icon-top - $menu-item-border-width); left: ($menu-item-icon-horizontal-spacing - $menu-item-border-width); } } @if $include-rtl { .#{$prefix}rtl.#{$prefix}menu-item-icon { left: auto; right: $menu-item-icon-horizontal-spacing; } // Stop the addition of bordering to active items shifting the menu icon in bad IEs (and FF) // TODO: When we drop IE6, use transparent borders on inactive items and no padding and remove this hack. @if $menu-item-border-width != 0 { .#{$prefix}gecko .#{$prefix}menu-item-active .#{$prefix}rtl.#{$prefix}menu-item-icon, .#{$prefix}quirks .#{$prefix}menu-item-active .#{$prefix}rtl.#{$prefix}menu-item-icon, .#{$prefix}ie9m .#{$prefix}menu-item-active .#{$prefix}rtl.#{$prefix}menu-item-icon { left: auto; right: ($menu-item-icon-horizontal-spacing - $menu-item-border-width); } } } // For when an icon needs to be used in the right position where a submenu arrow usually goes. // eg: When a CheckItem needs an icon. The left icon position is a checkbox, so the icon is moved to the right. .#{$prefix}menu-item-icon-right { width: $menu-item-icon-size; height: $menu-item-icon-size; top: round(($menu-item-height - vertical($menu-item-border-width) - $menu-item-icon-size) / 2); right: $menu-item-icon-horizontal-spacing; background-position: $menu-item-icon-background-position; } @if $include-rtl { .#{$prefix}rtl.#{$prefix}menu-item-icon-right { right: auto; left: $menu-item-icon-horizontal-spacing; } } .#{$prefix}menu-item-text { font-size: $menu-item-font-size; color: $menu-text-color; cursor: $menu-item-cursor; // needed to override cursor:default set by x-unselectable margin-right: $menu-item-arrow-width + 4; // Leave space for a submenu arrow } // If inside a menu link item with RTL, switch the margin space for the submenu arrow @if $include-rtl { a.#{$prefix}rtl { .#{$prefix}menu-item-text { margin-right: 0; margin-left: $menu-item-arrow-width + 4; } } } .#{$prefix}menu-item-checked { .#{$prefix}menu-item-icon, .#{$prefix}menu-item-icon-right { background-image: theme-background-image('menu/checked'); } .#{$prefix}menu-group-icon { background-image: theme-background-image('menu/group-checked'); } } .#{$prefix}menu-item-unchecked { .#{$prefix}menu-item-icon, .#{$prefix}menu-item-icon-right { background-image: theme-background-image('menu/unchecked'); } .#{$prefix}menu-group-icon { background-image: none; } } .#{$prefix}menu-item-separator { height: $menu-separator-size; border-top: solid 1px $menu-separator-border-color; background-color: $menu-separator-background-color; margin: $menu-item-separator-margin; padding: 0; } .#{$prefix}menu-item-arrow { width: $menu-item-arrow-width; height: $menu-item-arrow-height; top: $menu-item-arrow-top; right: $menu-item-arrow-horizontal-spacing; background-image: theme-background-image('menu/menu-parent'); } // Stop the addition of bordering to active items shifting the arrow in bad IEs (and FF) // TODO: When we drop IE6, use transparent borders on inactive items and no padding and remove this hack. @if $menu-item-border-width != 0 { .#{$prefix}gecko .#{$prefix}menu-item-active .#{$prefix}menu-item-arrow, .#{$prefix}quirks .#{$prefix}menu-item-active .#{$prefix}menu-item-arrow, .#{$prefix}ie9m .#{$prefix}menu-item-active .#{$prefix}menu-item-arrow { top: ($menu-item-arrow-top - $menu-item-border-width); right: ($menu-item-arrow-horizontal-spacing - $menu-item-border-width); } } @if $include-rtl { .#{$prefix}rtl.#{$prefix}menu-item-arrow { left: $menu-item-arrow-horizontal-spacing; right: auto; background-image: theme-background-image('menu/menu-parent-left'); } // Stop the addition of bordering to active items shifting the arrow in bad IEs (and FF) // TODO: When we drop IE6, use transparent borders on inactive items and no padding and remove this hack. @if $menu-item-border-width != 0 { .#{$prefix}gecko .#{$prefix}menu-item-active .#{$prefix}rtl.#{$prefix}menu-item-arrow, .#{$prefix}ie9m .#{$prefix}menu-item-active .#{$prefix}rtl.#{$prefix}menu-item-arrow, .#{$prefix}quirks .#{$prefix}menu-item-active .#{$prefix}rtl.#{$prefix}menu-item-arrow { right: auto; left: ($menu-item-arrow-horizontal-spacing - $menu-item-border-width); } } } .#{$prefix}menu-item-disabled { @include opacity($menu-item-disabled-opacity); } @if $include-ie { .#{$prefix}strict .#{$prefix}ie7m { .#{$prefix}menu-icon-separator { width: $menu-separator-size - 1; } .#{$prefix}menu-item-separator { height: $menu-separator-size - 1; } } .#{$prefix}ie { .#{$prefix}menu-item-disabled { .#{$prefix}menu-item-icon { @include opacity($menu-item-disabled-opacity); } .#{$prefix}menu-item-text { // IE opacity/cleartype bug workaround background-color: transparent; } } } } // TODO: what is this for? .#{$prefix}menu-date-item { border-color: #99BBE8; } @if $include-ext-form-labelable { // When Fields are added to Menus... .#{$prefix}menu-item .#{$prefix}form-item-label { font-size: $menu-item-font-size; color: $menu-text-color; } } .#{$prefix}menu-scroll-top { height: $menu-scroller-height; background-image: theme-background-image('menu/scroll-top'); } .#{$prefix}menu-scroll-bottom { height: $menu-scroller-height; background-image: theme-background-image('menu/scroll-bottom'); } .#{$prefix}menu-scroll-top, .#{$prefix}menu-scroll-bottom { @if $menu-scroller-opacity != 1 { @include opacity($menu-scroller-opacity); } @if $menu-scroller-opacity != 1 $menu-scroller-opacity-over != 1 $menu-scroller-opacity-pressed != 1 { // EXTJSIV-8846: partially transparent png images do not display correctly // in winXP/IE8m when the image element has a transparent background. // to fix this, we give the element the same background-color as the menu. background-color: $menu-background-color; } } @if $menu-scroller-opacity-over != 1 or $menu-scroller-opacity != 1 { .#{$prefix}menu-scroll-top-hover, .#{$prefix}menu-scroll-bottom-hover { @include opacity($menu-scroller-opacity-over); } } @if $menu-scroller-opacity-pressed != 1 or $menu-scroller-opacity != 1 { .#{$prefix}menu-scroll-top-pressed, .#{$prefix}menu-scroll-bottom-pressed { @include opacity($menu-scroller-opacity-pressed); } } @include x-slicer(menu-item-link);