forked from rob-balfre/svelte-select
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathItem.svelte
72 lines (62 loc) · 1.63 KB
/
Item.svelte
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<script>
export let isActive = false;
export let isFirst = false;
export let isHover = false;
export let getOptionLabel = undefined;
export let item = undefined;
export let filterText = '';
let itemClasses = '';
$: {
const classes = [];
if (isActive) {
classes.push('active');
}
if (isFirst) {
classes.push('first');
}
if (isHover) {
classes.push('hover');
}
if (item.isGroupHeader) {
classes.push('groupHeader');
}
if (item.isGroupItem) {
classes.push('groupItem');
}
itemClasses = classes.join(' ');
}
</script>
<style>
.item {
cursor: default;
height: var(--height, 42px);
line-height: var(--height, 42px);
padding: var(--itemPadding, 0 20px);
color: var(--itemColor, inherit);
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
.groupHeader {
text-transform: var(--groupTitleTextTransform, uppercase);
}
.groupItem {
padding-left: var(--groupItemPaddingLeft, 40px);
}
.item:active {
background: var(--itemActiveBackground, #b9daff);
}
.item.active {
background: var(--itemIsActiveBG, #007aff);
color: var(--itemIsActiveColor, #fff);
}
.item.first {
border-radius: var(--itemFirstBorderRadius, 4px 4px 0 0);
}
.item.hover:not(.active) {
background: var(--itemHoverBG, #e7f2ff);
}
</style>
<div class="item {itemClasses}">
{@html getOptionLabel(item, filterText)}
</div>