From 15cc176fa75641f9a27471e8bc77154984890cca Mon Sep 17 00:00:00 2001 From: Aleksey Novikov Date: Thu, 23 May 2024 23:45:25 +0300 Subject: [PATCH] #8129 - hover styles --- .../src/components/list/list-item.component.html | 3 ++- packages/survey-vue3-ui/src/components/list/ListItem.vue | 1 + src/common-styles/sv-list.scss | 7 +++++-- src/knockout/components/list/list-item.html | 2 +- src/knockout/components/list/list-item.ts | 3 +++ src/list.ts | 5 +++++ src/vue/components/list/list-item.vue | 3 ++- 7 files changed, 19 insertions(+), 5 deletions(-) diff --git a/packages/survey-angular-ui/src/components/list/list-item.component.html b/packages/survey-angular-ui/src/components/list/list-item.component.html index 2543f38e93..485cb88959 100644 --- a/packages/survey-angular-ui/src/components/list/list-item.component.html +++ b/packages/survey-angular-ui/src/components/list/list-item.component.html @@ -4,7 +4,8 @@
+ (mouseover)="listModel.onItemHover(model)" + (mouseleave)="listModel.onItemLeave(model)">
diff --git a/packages/survey-vue3-ui/src/components/list/ListItem.vue b/packages/survey-vue3-ui/src/components/list/ListItem.vue index ed32710780..e2aeab3a41 100644 --- a/packages/survey-vue3-ui/src/components/list/ListItem.vue +++ b/packages/survey-vue3-ui/src/components/list/ListItem.vue @@ -21,6 +21,7 @@ v-bind:class="model.cssClasses.itemBody" :title="item.locTitle.calculatedText" @mouseover="(e) => model.onItemHover(item)" + @mouseover="(e) => model.onItemLeave(item)" > diff --git a/src/common-styles/sv-list.scss b/src/common-styles/sv-list.scss index 064f26df8d..09c6d3f2f4 100644 --- a/src/common-styles/sv-list.scss +++ b/src/common-styles/sv-list.scss @@ -56,7 +56,9 @@ text-align: left; text-overflow: ellipsis; white-space: nowrap; - transition: background-color $transition-duration, color $transition-duration; + transition: + background-color $transition-duration, + color $transition-duration; } .sv-list__item.sv-list__item--focused:not(.sv-list__item--selected) { @@ -80,6 +82,7 @@ outline: none; } +.sv-list__item--hovered > .sv-list__item-body, .sv-list__item-body:hover, .sv-list__item-body:focus { background-color: $background-dark; @@ -251,4 +254,4 @@ li:focus .sv-list__item.sv-list__item--selected { .sv-list__loading-indicator .sv-list__item-body { background-color: transparent; -} \ No newline at end of file +} diff --git a/src/knockout/components/list/list-item.html b/src/knockout/components/list/list-item.html index 898d1ae994..72dae0071a 100644 --- a/src/knockout/components/list/list-item.html +++ b/src/knockout/components/list/list-item.html @@ -4,7 +4,7 @@
-
+
diff --git a/src/knockout/components/list/list-item.ts b/src/knockout/components/list/list-item.ts index 4e4c316e9f..d5dd95b5f3 100644 --- a/src/knockout/components/list/list-item.ts +++ b/src/knockout/components/list/list-item.ts @@ -21,6 +21,9 @@ ko.components.register("sv-list-item", { if (event.type === "mouseover") { data.model.onItemHover(data.item); } + }, + leave: (event: MouseEvent, data: any) => { + data.model.onItemLeave(data.item); } }; }, diff --git a/src/list.ts b/src/list.ts index a6dd946317..8742a7a2a0 100644 --- a/src/list.ts +++ b/src/list.ts @@ -16,6 +16,7 @@ export let defaultListCss = { itemWithIcon: "sv-list__item--with-icon", itemDisabled: "sv-list__item--disabled", itemFocused: "sv-list__item--focused", + itemHovered: "sv-list__item--hovered", itemTextWrap: "sv-list__item-text--wrap", itemIcon: "sv-list__item-icon", itemMarkerIcon: "sv-list-item__marker-icon", @@ -199,6 +200,9 @@ export class ListModel extends ActionContainer public onItemHover = (itemValue: T): void => { this.mouseOverHandler(itemValue); } + public onItemLeave(itemValue: T) { + itemValue.hidePopupDelayed(this.subItemsHideDelay); + } public isItemDisabled: (itemValue: T) => boolean = (itemValue: T) => { return itemValue.enabled !== undefined && !itemValue.enabled; @@ -229,6 +233,7 @@ export class ListModel extends ActionContainer .append(this.cssClasses.itemDisabled, this.isItemDisabled(itemValue)) .append(this.cssClasses.itemFocused, this.isItemFocused(itemValue)) .append(this.cssClasses.itemSelected, this.isItemSelected(itemValue)) + .append(this.cssClasses.itemHovered, itemValue.isHovered) .append(this.cssClasses.itemTextWrap, this.textWrapEnabled) .append(itemValue.css) .toString(); diff --git a/src/vue/components/list/list-item.vue b/src/vue/components/list/list-item.vue index 8ba454de94..25f524d884 100644 --- a/src/vue/components/list/list-item.vue +++ b/src/vue/components/list/list-item.vue @@ -7,7 +7,8 @@
+ @mouseover="(e) => model.onItemHover(item)" + @mouseleave="(e) => model.onItemLeave(item)">