diff --git a/packages/main/src/Select.hbs b/packages/main/src/Select.hbs
index 508cd9a14806..8f8e17a1c48e 100644
--- a/packages/main/src/Select.hbs
+++ b/packages/main/src/Select.hbs
@@ -1,12 +1,14 @@
{{_text}}
@@ -31,8 +33,8 @@
{{/if}}
-
-
+
diff --git a/packages/main/src/Select.js b/packages/main/src/Select.js
index b69fc650616e..69188fdf6db2 100644
--- a/packages/main/src/Select.js
+++ b/packages/main/src/Select.js
@@ -8,7 +8,6 @@ import {
isEscape,
isShow,
} from "@ui5/webcomponents-base/dist/events/PseudoEvents.js";
-import { getCompactSize } from "@ui5/webcomponents-base/dist/config/CompactSize.js";
import { getFeature } from "@ui5/webcomponents-base/dist/FeaturesRegistry.js";
import { getRTL } from "@ui5/webcomponents-base/dist/config/RTL.js";
import ValueState from "@ui5/webcomponents-base/dist/types/ValueState.js";
@@ -101,11 +100,17 @@ const metadata = {
type: String,
},
- _opened: {
+ /**
+ * @private
+ */
+ opened: {
type: Boolean,
},
- _focused: {
+ /**
+ * @private
+ */
+ focused: {
type: Boolean,
},
},
@@ -183,6 +188,14 @@ class Select extends UI5Element {
this._enableFormSupport();
}
+ onfocusin() {
+ this.focused = true;
+ }
+
+ onfocusout() {
+ this.focused = false;
+ }
+
get _isPickerOpen() {
const popover = this.shadowRoot.querySelector("#ui5-select--popover");
@@ -198,7 +211,9 @@ class Select extends UI5Element {
if (this._isPickerOpen) {
popover.close();
+ this.opened = false;
} else {
+ this.opened = true;
popover.openBy(this);
}
}
@@ -363,20 +378,6 @@ class Select extends UI5Element {
return this.options[this._selectedIndex];
}
- get classes() {
- return {
- main: {
- "sapWCSelect": true,
- "sapWCSelectFocused": this._focused,
- "sapWCSelectDisabled": this.disabled,
- "sapWCSelectOpened": this._opened,
- "sapWCSelectState": this.valueState !== "None",
- [`sapWCSelect${this.valueState}`]: true,
- "sapUiSizeCompact": getCompactSize(),
- },
- };
- }
-
get tabIndex() {
return this.disabled ? "-1" : "0";
}
diff --git a/packages/main/src/themes/Select.css b/packages/main/src/themes/Select.css
index 9ae9fa0f1ea1..f2a0d496b5a7 100644
--- a/packages/main/src/themes/Select.css
+++ b/packages/main/src/themes/Select.css
@@ -1,71 +1,64 @@
-:host(ui5-select:not([hidden])) {
+:host(:not([hidden])) {
display: inline-block;
width: 100%;
}
-ui5-select:not([hidden]) {
- display: inline-block;
- width: 100%;
-}
-
-.sapWCSelect {
+:host {
height: 2.25rem;
max-width: 100%;
min-width: 5rem;
- position: relative;
- display: flex;
- justify-content: space-between;
- align-items: center;
background-color: var(--sapUiFieldBackground);
border: 1px solid var(--sapUiFieldBorderColor);
box-sizing: border-box;
- cursor: pointer;
- outline: none;
}
-/* Hovered */
-.sapWCSelect:hover:not(.sapWCSelectDisabled):not(.sapWCSelectState):not(.sapWCSelectOpened) {
+:host(:not([disabled]):not([value-state]):not([opened]):hover) {
background-color: var(--sapUiFieldHoverBackground);
border: 1px solid var(--sapUiFieldHoverBorderColor);
}
+.ui5-select-root {
+ width: 100%;
+ height: 100%;
+ position: relative;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ box-sizing: border-box;
+ cursor: pointer;
+ outline: none;
+}
+
/* Hovered Icon */
-.sapWCSelect:hover:not(.sapWCSelectDisabled):not(.sapWCSelectOpened) .sapWCSelectDropDownIconOuter {
+
+:host(:not([disabled]):not([opened]):hover) .ui5-select-icon-root {
background: var(--sapUiButtonLiteHoverBackground);
}
/* Opened */
-.sapWCSelect.sapWCSelectOpened .sapWCSelectDropDownIconOuter {
+
+:host([opened]) .ui5-select-icon-root {
background: var(--sapUiToggleButtonPressedBackground);
color: var(--sapUiToggleButtonPressedTextColor);
}
-/* Disabled */
-.sapWCSelect.sapWCSelectDisabled {
+:host([disabled]) {
background: var(--_ui5_select_disabled_background);
border-color: var(--_ui5_select_disabled_border_color);
cursor: default;
opacity: 0.5;
}
-/* Focused */
-.sapWCSelect:not(.sapWCSelectOpened):not(.sapWCSelectDisabled):focus {
- outline: none;
+:host(:not([disabled]):not([opened])[focused]) {
+ outline: var(--_ui5_select_focus_width) dotted var(--sapUiContentFocusColor);
+ outline-offset: -3px;
}
-.sapWCSelect:not(.sapWCSelectOpened):not(.sapWCSelectDisabled):focus:before {
- content: "";
- position: absolute;
- border: var(--_ui5_select_focus_width) dotted var(--sapUiContentFocusColor);
- top: 1px;
- right: 1px;
- bottom: 1px;
- left: 1px;
- pointer-events: none;
+:host(:not([disabled])[value-state]:not([value-state="Default"])[focused]) {
+ outline-offset: -4px;
}
-/* Text */
-.sapWCSelect .sapWCSelectLabel {
+.ui5-select-label-root {
display: inline-flex;
align-items: center;
width: 100%;
@@ -74,76 +67,151 @@ ui5-select:not([hidden]) {
padding-left: 0.5rem;
}
-.sapWCSelect .sapWCSelectLabel ui5-label {
+.ui5-select-label-root ui5-label {
cursor: pointer;
}
-/* Icon */
-.sapWCSelect .sapWCSelectDropDownIconOuter {
- display:flex;
+.ui5-select-icon-root {
+ display: flex;
justify-content: center;
align-items: center;
width: 2.5rem;
height: 100%;
box-sizing: border-box;
+ color: var(--sapUiContentIconColor);
}
-.sapWCSelect:hover:not(.sapWCSelectDisabled) .sapWCSelectDropDownIconOuter {
+:host(:hover:not([disabled])) .ui5-select-icon-root {
border-left: var(--_ui5_select_hover_icon_left_border);
}
-.sapWCSelectDropDownIcon {
- color: var(--sapUiContentIconColor);
+.ui5-select-icon {
+ color: inherit;
pointer-events: none;
}
- /* States */
-.sapWCSelectState {
+:host([value-state]:not([value-state="Default"])) {
border-style: solid;
border-width: 0.125rem;
}
-.sapWCSelectError {
+:host([value-state="Error"]) {
border: var(--_ui5_select_state_error_warning_border_width) var(--_ui5_select_state_error_warning_border_style) var(--sapUiFieldInvalidColor);
background-color: var(--sapUiFieldInvalidBackground);
}
-.sapWCSelectWarning {
+:host([value-state="Warning"]) {
border: var(--_ui5_select_state_error_warning_border_width) var(--_ui5_select_state_error_warning_border_style) var(--sapUiFieldWarningColor);
background-color: var(--sapUiFieldWarningBackground);
}
-.sapWCSelectSuccess {
+:host([value-state="Success"]) {
background-color: var(--sapUiFieldSuccessBackground);
border-color: var(--sapUiFieldSuccessColor);
}
-/* Compact */
-.sapUiSizeCompact.sapWCSelect {
+:host([data-ui5-compact-size]) {
height: 1.625rem;
}
-.sapUiSizeCompact.sapWCSelect .sapWCSelectDropDownIconOuter {
+:host([data-ui5-compact-size]) .ui5-select-icon-root {
width: 2rem;
}
-/* RTL */
-:host(ui5-select) [dir="rtl"].sapWCSelect .sapWCSelectLabel {
+:host [dir="rtl"].ui5-select-root .ui5-select-label-root {
padding-left: 0;
padding-right: 0.5rem;
}
-:host(ui5-select) [dir="rtl"].sapWCSelect:hover:not(.sapWCSelectDisabled) .sapWCSelectDropDownIconOuter {
+:host(:hover:not([disabled])) [dir="rtl"].ui5-select-root .ui5-select-icon-root {
border-left: var(--_ui5_select_rtl_hover_icon_left_border);
border-right: var(--_ui5_select_rtl_hover_icon_right_border);
}
-ui5-select [dir="rtl"].sapWCSelect .sapWCSelectLabel {
+/* Remove that once Shady CSS is apploed */
+
+ui5-select:not([hidden]) {
+ display: inline-block;
+ width: 100%;
+}
+
+ui5-select {
+ height: 2.25rem;
+ max-width: 100%;
+ min-width: 5rem;
+ background-color: var(--sapUiFieldBackground);
+ border: 1px solid var(--sapUiFieldBorderColor);
+ box-sizing: border-box;
+}
+
+ui5-select:not([disabled]):not([value-state]):not([opened]):hover {
+ background-color: var(--sapUiFieldHoverBackground);
+ border: 1px solid var(--sapUiFieldHoverBorderColor);
+}
+
+ui5-select:not([disabled]):not([opened]):hover .ui5-select-icon-root {
+ background: var(--sapUiButtonLiteHoverBackground);
+}
+
+ui5-select[opened] .ui5-select-icon-root {
+ background: var(--sapUiToggleButtonPressedBackground);
+ color: var(--sapUiToggleButtonPressedTextColor);
+}
+
+ui5-select[disabled] {
+ background: var(--_ui5_select_disabled_background);
+ border-color: var(--_ui5_select_disabled_border_color);
+ cursor: default;
+ opacity: 0.5;
+}
+
+ui5-select:not([disabled]):not([opened])[focused] {
+ outline: var(--_ui5_select_focus_width) dotted var(--sapUiContentFocusColor);
+ outline-offset: -3px;
+}
+
+ui5-select:not([disabled])[value-state]:not([value-state="Default"])[focused] {
+ outline-offset: -4px;
+}
+
+ui5-select:hover:not([disabled]) .ui5-select-icon-root {
+ border-left: var(--_ui5_select_hover_icon_left_border);
+}
+
+ui5-select[value-state]:not([value-state="Default"]) {
+ border-style: solid;
+ border-width: 0.125rem;
+}
+
+ui5-select[value-state="Error"] {
+ border: var(--_ui5_select_state_error_warning_border_width) var(--_ui5_select_state_error_warning_border_style) var(--sapUiFieldInvalidColor);
+ background-color: var(--sapUiFieldInvalidBackground);
+}
+
+ui5-select[value-state="Warning"] {
+ border: var(--_ui5_select_state_error_warning_border_width) var(--_ui5_select_state_error_warning_border_style) var(--sapUiFieldWarningColor);
+ background-color: var(--sapUiFieldWarningBackground);
+}
+
+ui5-select[value-state="Success"] {
+ background-color: var(--sapUiFieldSuccessBackground);
+ border-color: var(--sapUiFieldSuccessColor);
+}
+
+ui5-select[data-ui5-compact-size] {
+ height: 1.625rem;
+}
+
+ui5-select[data-ui5-compact-size] .ui5-select-icon-root {
+ width: 2rem;
+}
+
+ui5-select [dir="rtl"].ui5-select-root .ui5-select-label-root {
padding-left: 0;
padding-right: 0.5rem;
}
-ui5-select [dir="rtl"].sapWCSelect:hover:not(.sapWCSelectDisabled) .sapWCSelectDropDownIconOuter {
+ui5-select:hover:not([disabled]) [dir="rtl"].ui5-select-root .ui5-select-icon-root {
border-left: var(--_ui5_select_rtl_hover_icon_left_border);
border-right: var(--_ui5_select_rtl_hover_icon_right_border);
-}
+}
\ No newline at end of file