Skip to content

Commit fe63377

Browse files
committed
Merge pull request #10 from howard-tzw/feat/css-variables
v0.0.7
2 parents 1bcc408 + 1cbd688 commit fe63377

13 files changed

+136
-64
lines changed

CHANGELOG.md

+12
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,18 @@
22

33
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
44

5+
### [0.0.7](https://github.com/howard-tzw/vue3-select/compare/v0.0.6...v0.0.7) (2023-06-21)
6+
7+
8+
### Features
9+
10+
* export no-drop and dropdown-menu padding style in css variables ([242c814](https://github.com/howard-tzw/vue3-select/commit/242c814e8d98e080eff2dae82f1cde4b599b5d84))
11+
12+
13+
### Style Updates
14+
15+
* export .vs__dropdown-option--selected ([2118d83](https://github.com/howard-tzw/vue3-select/commit/2118d83ce49e43e79db499981c223e5a4bff79ff))
16+
517
### [0.0.6](https://github.com/howard-tzw/vue3-select/compare/v0.0.5...v0.0.6) (2023-06-05)
618

719

README.md

+4
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ New documentation specific to vue3-select will be available soon as the project
88

99
## Documentation
1010

11+
New in vue3-select
12+
13+
- **[CSS variables](https://github.com/howard-tzw/vue3-select/blob/main/src/css/global/variables.css)**
14+
1115
Complete documentation and examples available at https://vue-select.org.
1216

1317
- **[API Documentation](https://vue-select.org)**

bower.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,5 @@
2929
"test",
3030
"tests"
3131
],
32-
"version": "0.0.6"
32+
"version": "0.0.7"
3333
}

dev/BaseSelect.vue

-22
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,7 @@ const borderRadius = computed(() => {
2222
return props.square ? '8px' : '30px'
2323
})
2424
25-
/**
26-
* @feat noDrop 為 true 時的樣式
27-
*/
2825
const attrs = useAttrs()
29-
const noDropBackgroundColor = computed(() =>
30-
attrs['no-drop'] ? '#f7f7f7' : '#fff'
31-
)
32-
const noDropCursor = computed(() => (attrs['no-drop'] ? 'default' : 'pointer'))
3326
3427
/**
3528
* @feat 將選擇的選項名稱加上粗體
@@ -45,7 +38,6 @@ function selectedOptionNameClass(name: string) {
4538
<template>
4639
<div>
4740
<v-select
48-
class="cursor-auto"
4941
v-bind="$attrs"
5042
:clearable="false"
5143
:searchable="searchable"
@@ -70,7 +62,6 @@ function selectedOptionNameClass(name: string) {
7062
:deep(.vs__dropdown-toggle) {
7163
border-radius: v-bind(borderRadius); // 欄位外匡
7264
box-shadow: var(--input-shadow); // 欄位陰影
73-
background-color: v-bind(noDropBackgroundColor); // 欄位背景色
7465
}
7566
7667
// vs__selected-options 調整左側間隔
@@ -90,19 +81,6 @@ function selectedOptionNameClass(name: string) {
9081
display: none;
9182
}
9283
93-
// vs__search
94-
:deep(.vs__dropdown-toggle .vs__selected-options input.vs__search) {
95-
}
96-
97-
// ============== no-drop 為 true 時的樣式 ==============
98-
:deep(.vs--unsearchable .vs__dropdown-toggle) {
99-
cursor: v-bind(noDropCursor);
100-
}
101-
102-
:deep(.vs--unsearchable:not(.vs--disabled) .vs__search) {
103-
cursor: v-bind(noDropCursor);
104-
}
105-
10684
.option--scroll {
10785
white-space: nowrap;
10886
overflow-x: auto;

dev/app.vue

+40-1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,44 @@
2323
<h2 class="title">BaseSelect</h2>
2424
<BaseSelect v-model="selectedOption" :options="baseSelectOptions" />
2525
</div>
26+
27+
<div class="section">
28+
<h2 class="title">BaseSelect</h2>
29+
<ul>
30+
<li>no-drop: true</li>
31+
</ul>
32+
<BaseSelect
33+
v-model="selectedOption"
34+
:options="baseSelectOptions"
35+
no-drop
36+
/>
37+
</div>
38+
39+
<div class="section">
40+
<h2 class="title">BaseSelect</h2>
41+
<ul>
42+
<li>disabled: true</li>
43+
</ul>
44+
<BaseSelect
45+
v-model="selectedOption"
46+
:options="baseSelectOptions"
47+
disabled
48+
/>
49+
</div>
50+
51+
<div class="section">
52+
<h2 class="title">BaseSelect</h2>
53+
<ul>
54+
<li>no-drop: true</li>
55+
<li>disabled: true</li>
56+
</ul>
57+
<BaseSelect
58+
v-model="selectedOption"
59+
:options="baseSelectOptions"
60+
no-drop
61+
disabled
62+
/>
63+
</div>
2664
</div>
2765
</template>
2866

@@ -46,7 +84,7 @@ const selectedOption = ref()
4684
4785
setTimeout(() => {
4886
selectedOption.value = baseSelectOptions.value[0]
49-
}, 3000)
87+
}, 500)
5088
</script>
5189

5290
<style lang="scss">
@@ -55,6 +93,7 @@ body {
5593
margin: 0;
5694
height: 1000px;
5795
font-family: -apple-system, sans-serif;
96+
background-color: #fafafa;
5897
}
5998
6099
.title {

dev/index.css

+12-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,17 @@
66
--input-shadow: 0px 2px 2px rgba(0, 0, 0, 0.05);
77
--input-border-color: rgba(60, 60, 60, 0.26);
88

9-
/* easy-data-table 是如何讓 css vars 能夠在 component 內定義的? */
9+
/* vs__dropdown-toggle */
10+
--vs-height: 36px;
11+
--vs-bg-color: #fff;
12+
--vs-state-no-drop-bg: red;
13+
--vs-state-disabled-bg: rgb(248, 248, 248);
14+
15+
/* .vs__dropdown-menu */
16+
--vs-dropdown-options-gap: 2px;
17+
--vs-dropdown-padding: 5px;
18+
19+
/* dropdown option */
1020
--vs-dropdown-option--active-bg: black;
21+
--vs-dropdown-option--selected-bg: gray;
1122
}

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "vue3-select",
3-
"version": "0.0.6",
3+
"version": "0.0.7",
44
"description": "A maintained fork of vue-select for Vue 3",
55
"author": "Jeff Sagal <[email protected]>, Howard Chen <[email protected]>",
66
"homepage": "https://vue-select.org",

src/components/Select.vue

+1
Original file line numberDiff line numberDiff line change
@@ -853,6 +853,7 @@ export default {
853853
'vs--unsearchable': !this.searchable,
854854
'vs--loading': this.mutableLoading,
855855
'vs--disabled': this.disabled,
856+
'vs--no-drop': this.noDrop,
856857
}
857858
},
858859

src/css/global/states.css

+40-28
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,32 @@
1010
*/
1111

1212
:root {
13-
--vs-disabled-bg: var(--vs-state-disabled-bg);
14-
--vs-disabled-color: var(--vs-state-disabled-color);
15-
--vs-disabled-cursor: var(--vs-state-disabled-cursor);
13+
--vs-disabled-bg: var(--vs-state-disabled-bg);
14+
--vs-disabled-color: var(--vs-state-disabled-color);
15+
--vs-disabled-cursor: var(--vs-state-disabled-cursor);
1616
}
1717

18+
.vs--no-drop {
19+
.vs__dropdown-toggle,
20+
.vs__clear,
21+
.vs__search,
22+
.vs__selected,
23+
.vs__open-indicator {
24+
background-color: var(--vs-state-no-drop-bg);
25+
cursor: var(--vs-state-no-drop-cursor);
26+
}
27+
}
28+
29+
/* If both "no-drop" and "disabled" are enabled simultaneously, .vs--disabled will overwrite .vs--no-drop */
1830
.vs--disabled {
19-
.vs__dropdown-toggle,
20-
.vs__clear,
21-
.vs__search,
22-
.vs__selected,
23-
.vs__open-indicator {
24-
cursor: var(--vs-disabled-cursor);
25-
background-color: var(--vs-disabled-bg);
26-
}
31+
.vs__dropdown-toggle,
32+
.vs__clear,
33+
.vs__search,
34+
.vs__selected,
35+
.vs__open-indicator {
36+
background-color: var(--vs-disabled-bg);
37+
cursor: var(--vs-disabled-cursor);
38+
}
2739
}
2840

2941
/*
@@ -35,21 +47,21 @@
3547
*/
3648

3749
.v-select[dir='rtl'] {
38-
.vs__actions {
39-
padding: 0 3px 0 6px;
40-
}
41-
42-
.vs__clear {
43-
margin-left: 6px;
44-
margin-right: 0;
45-
}
46-
47-
.vs__deselect {
48-
margin-left: 0;
49-
margin-right: 2px;
50-
}
51-
52-
.vs__dropdown-menu {
53-
text-align: right;
54-
}
50+
.vs__actions {
51+
padding: 0 3px 0 6px;
52+
}
53+
54+
.vs__clear {
55+
margin-left: 6px;
56+
margin-right: 0;
57+
}
58+
59+
.vs__deselect {
60+
margin-left: 0;
61+
margin-right: 2px;
62+
}
63+
64+
.vs__dropdown-menu {
65+
text-align: right;
66+
}
5567
}

src/css/global/variables.css

+16-7
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,23 @@
44
--vs-colors--dark: #333;
55
--vs-colors--darkest: rgba(0, 0, 0, 0.15);
66

7+
/* Font */
8+
--vs-font-size: 1rem;
9+
--vs-line-height: 1.4;
10+
11+
/* vs__dropdown-toggle */
712
--vs-height: 36px;
13+
--vs-bg-color: inherit;
814

915
/* Search Input */
1016
--vs-search-input-color: inherit;
1117
--vs-search-input-placeholder-color: inherit;
1218

13-
/* Font */
14-
--vs-font-size: 1rem;
15-
--vs-line-height: 1.4;
19+
/* State - No drop */
20+
--vs-state-no-drop-bg: inherit;
21+
--vs-state-no-drop-cursor: default;
1622

17-
/* Disabled State */
23+
/* State - Disabled */
1824
--vs-state-disabled-bg: rgb(248, 248, 248);
1925
--vs-state-disabled-color: var(--vs-colors--light);
2026
--vs-state-disabled-controls-color: var(--vs-colors--light);
@@ -41,7 +47,7 @@
4147
--vs-selected-border-style: var(--vs-border-style);
4248
--vs-selected-border-width: var(--vs-border-width);
4349

44-
/* Dropdown */
50+
/* Dropdown Menu */
4551
--vs-dropdown-bg: #fff;
4652
--vs-dropdown-color: inherit;
4753
--vs-dropdown-z-index: 1000;
@@ -51,16 +57,19 @@
5157
--vs-dropdown-overflow-x: auto;
5258
--vs-dropdown-overflow-y: auto;
5359
--vs-dropdown-border-radius: 4px;
54-
--vs-dropdown-options-gap: 5px;
60+
--vs-dropdown-options-gap: 2px;
61+
--vs-dropdown-padding: 5px;
5562

56-
/* Dropdown Options */
63+
/* Dropdown Option */
5764
--vs-dropdown-option-color: var(--vs-dropdown-color);
5865
--vs-dropdown-option-padding: 5px 15px;
5966
--vs-dropdown-option-border-radius: var(--vs-border-radius);
6067

6168
/* Option */
6269
--vs-dropdown-option--active-bg: #5897fb;
6370
--vs-dropdown-option--active-color: #fff;
71+
--vs-dropdown-option--selected-bg: #5897fb;
72+
--vs-dropdown-option--selected-color: #fff;
6473

6574
/* Deselect State */
6675
--vs-dropdown-option--deselect-bg: #fb5858;

src/css/modules/dropdown-menu.css

+7-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
top: calc(100% - var(--vs-border-width));
1515
left: 0;
1616
z-index: var(--vs-dropdown-z-index);
17-
padding: 5px;
17+
padding: var(--vs-dropdown-padding);
1818
margin: 0;
1919
margin-top: 5px;
2020
overflow: var(--vs-dropdown-overflow-x) var(--vs-dropdown-overflow-y);
@@ -49,6 +49,12 @@
4949
color: var(--vs-dropdown-option--active-color);
5050
}
5151

52+
/* should be after .vs__dropdown-option--highlight to cover */
53+
.vs__dropdown-option--selected {
54+
background: var(--vs-dropdown-option--selected-bg);
55+
color: var(--vs-dropdown-option--selected-color);
56+
}
57+
5258
.vs__dropdown-option--deselect {
5359
background: var(--vs-dropdown-option--deselect-bg);
5460
color: var(--vs-dropdown-option--deselect-color);

src/css/modules/dropdown-toggle.css

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
white-space: normal;
1919

2020
appearance: none;
21-
background: none;
21+
background: var(--vs-bg-color);
2222
border: var(--vs-border-width) var(--vs-border-style) var(--vs-border-color);
2323
border-radius: var(--vs-border-radius);
2424
}

src/css/modules/search-input.css

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
.vs__search {
5555
opacity: 1;
5656
}
57-
&:not(.vs--disabled) .vs__search {
57+
&:not(.vs--disabled, .vs--no-drop) .vs__search {
5858
cursor: pointer;
5959
}
6060
}

0 commit comments

Comments
 (0)