Skip to content

Commit 4d5590a

Browse files
Merge #264
264: fix: change input selector to id r=bidoubiwa a=ColinFrick # Pull Request ## Related issue Fixes #263 ## What does this PR do? - Change the selector to the input id, therefor applying the styling even before the docs-searchbar.js is initialized. This does require a change in [meilisearch/documentation](https://github.com/meilisearch/documentation) because this does not handle ``@media` (prefers-color-scheme: dark)` ## PR checklist Please check if your PR fulfills the following requirements: - [x] Does this PR fix an existing issue, or have you listed the changes applied in the PR description (and why they are needed)? - [x] Have you read the contributing guidelines? - [x] Have you made sure that the title is accurate and descriptive of the changes? Thank you so much for contributing to Meilisearch! Co-authored-by: Colin Frick <colin+github@sonderformat.llc>
2 parents 5bf8db5 + feafbc0 commit 4d5590a

File tree

2 files changed

+64
-28
lines changed

2 files changed

+64
-28
lines changed

MeiliSearchBox.vue

Lines changed: 63 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
id="search-form"
44
class="meilisearch-search-wrapper search-box"
55
role="search"
6+
:class="'theme-' + theme"
67
>
78
<input
89
id="meilisearch-search-input"
@@ -17,6 +18,7 @@ export default {
1718
name: 'MeiliSearchBox',
1819
data() {
1920
return {
21+
theme: false,
2022
placeholder: undefined
2123
}
2224
},
@@ -43,6 +45,7 @@ export default {
4345
debug: DEBUG,
4446
enableDarkMode: ENABLE_DARK_MODE
4547
}
48+
this.updateTheme(options)
4649
this.initialize(options)
4750
this.placeholder =
4851
PLACEHOLDER || this.$site.themeConfig.searchPlaceholder || ''
@@ -72,9 +75,20 @@ export default {
7275
},
7376
7477
update(options) {
78+
this.updateTheme(options)
7579
this.$el.innerHTML =
7680
'<input id="meilisearch-search-input" class="search-query">'
7781
this.initialize(options)
82+
},
83+
84+
updateTheme(options) {
85+
if (options.enableDarkMode === true) {
86+
this.theme = 'dark'
87+
} else if (options.enableDarkMode === false) {
88+
this.theme = 'light'
89+
} else {
90+
this.theme = 'auto'
91+
}
7892
}
7993
}
8094
}
@@ -83,6 +97,55 @@ export default {
8397
<style lang="stylus">
8498
@require './styles/palette.styl'
8599
100+
light-input()
101+
color lighten($textColor, 25%)
102+
border 1px solid darken($borderColor, 10%)
103+
background-color #fff
104+
&:focus
105+
border-color $accentColor
106+
107+
dark-input()
108+
color $textDarkColor
109+
border 1px solid $borderDarkColor
110+
background-color $inputDarkBgColor
111+
&:focus
112+
border-color $accentDarkColor
113+
114+
// Searchbox
115+
#meilisearch-search-input
116+
cursor text
117+
width 10rem
118+
height: 2rem
119+
display inline-block
120+
border-radius 2rem
121+
font-size 0.9rem
122+
line-height 2rem
123+
padding 0 0.5rem 0 2rem
124+
outline none
125+
transition border .2s ease
126+
background: url(assets/search.svg) 0.6rem 0.5rem no-repeat
127+
&:focus
128+
cursor auto
129+
background-size 1rem
130+
131+
.meilisearch-search-wrapper.theme-light
132+
#meilisearch-search-input
133+
light-input()
134+
135+
.meilisearch-search-wrapper.theme-dark
136+
#meilisearch-search-input
137+
dark-input()
138+
139+
@media (prefers-color-scheme: dark)
140+
.meilisearch-search-wrapper.theme-auto
141+
#meilisearch-search-input
142+
dark-input()
143+
144+
@media (prefers-color-scheme: light)
145+
.meilisearch-search-wrapper.theme-auto
146+
#meilisearch-search-input
147+
light-input()
148+
86149
.meilisearch-search-wrapper
87150
display: inline-block;
88151
position: relative;
@@ -93,25 +156,6 @@ export default {
93156
background rgba($accentColor, 0.05)
94157
.meilisearch-autocomplete
95158
line-height: 2
96-
// Searchbox
97-
input
98-
cursor text
99-
width 10rem
100-
height: 2rem
101-
color lighten($textColor, 25%)
102-
display inline-block
103-
border 1px solid darken($borderColor, 10%)
104-
border-radius 2rem
105-
font-size 0.9rem
106-
line-height 2rem
107-
padding 0 0.5rem 0 2rem
108-
outline none
109-
transition all .2s ease
110-
&:focus
111-
cursor auto
112-
border-color $accentColor
113-
background #fff url(assets/search.svg) 0.6rem 0.5rem no-repeat
114-
background-size 1rem
115159
116160
// Layout "columns"
117161
.docs-searchbar-suggestion:not(.suggestion-layout-simple)
@@ -177,14 +221,6 @@ export default {
177221
.dsb-dropdown-menu [class^=dsb-dataset-], .docs-searchbar-suggestion
178222
background $dropdownBgDarkColor
179223
180-
// Searchbox
181-
input
182-
color $textDarkColor
183-
border 1px solid $borderDarkColor
184-
background-color $inputDarkBgColor
185-
&:focus
186-
border-color $accentDarkColor
187-
188224
// Layout "columns"
189225
.docs-searchbar-suggestion:not(.suggestion-layout-simple)
190226
border-color $borderDarkColor

tests/MeiliSearchBoxTest.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ describe('MeiliSearchBox', () => {
1414

1515
it('renders default form and input', () => {
1616
expect(wrapper.html()).toContain(
17-
'<form id="search-form" role="search" class="meilisearch-search-wrapper search-box">'
17+
'<form id="search-form" role="search" class="meilisearch-search-wrapper search-box theme-light">'
1818
)
1919
expect(wrapper.html()).toContain(
2020
'<input id="meilisearch-search-input" class="search-query" placeholder="">'

0 commit comments

Comments
 (0)