3
3
class =" inner-calendar-container card bg-secondary"
4
4
:class =" expanded ? 'expanded' : 'minified'"
5
5
ref =" container" >
6
- <div class =" flex between p-medium pb-small " >
6
+ <div class =" flex between p-medium pb-2xsmall " >
7
7
<h2 class =" type-large color-text mb-none" >
8
8
Events
9
9
</h2 >
17
17
<div class =" px-medium type-small mb-small" >
18
18
<i >Includes unsanctioned events</i >
19
19
</div >
20
- <div v-if =" filtersOpen" class =" p-medium" >
21
- <fieldset class =" row mb-xsmall" >
22
- <legend >Types</legend >
20
+ <div class =" px-medium pb-2xsmall" >
21
+ <input v-model =" findInput" placeholder =" Find by name, location, details..." class =" search" />
22
+ </div >
23
+ <div v-if =" filtersOpen" class =" p-medium pt-2xsmall" >
24
+ <div class =" row mb-2xsmall" >
23
25
<div class =" flex middle col-sm-6" >
24
26
<input type =" checkbox" id =" conference" v-model =" show.types.Conference" />
25
- <label for =" conference" class =" ml-2xsmall" >Conference </label >
27
+ <label for =" conference" class =" ml-2xsmall" >Conferences </label >
26
28
</div >
27
29
<div class =" flex middle col-sm-6" >
28
30
<input type =" checkbox" id =" meetup" v-model =" show.types['Meet-up']" />
29
- <label for =" meetup" class =" ml-2xsmall" >Meet-up </label >
31
+ <label for =" meetup" class =" ml-2xsmall" >Meet-ups </label >
30
32
</div >
31
33
<div class =" flex middle col-sm-6" >
32
34
<input type =" checkbox" id =" tutorial" v-model =" show.types.Tutorial" />
33
- <label for =" tutorial" class =" ml-2xsmall" >Tutorial </label >
35
+ <label for =" tutorial" class =" ml-2xsmall" >Tutorials </label >
34
36
</div >
35
37
<div class =" flex middle col-sm-6" >
36
38
<input type =" checkbox" id =" workshop" v-model =" show.types.Workshop" />
37
- <label for =" workshop" class =" ml-2xsmall" >Workshop </label >
39
+ <label for =" workshop" class =" ml-2xsmall" >Workshops </label >
38
40
</div >
39
- </fieldset >
41
+ </div >
40
42
<div class =" flex middle col-sm-12" >
41
- <input type =" checkbox" id =" past " v-model =" show.past " />
42
- <label for =" past " class =" ml-2xsmall" >Show past events </label >
43
+ <input type =" checkbox" id =" CFP " v-model =" show.types.CFP " />
44
+ <label for =" CFP " class =" ml-2xsmall" >Call for Proposals </label >
43
45
</div >
44
46
<div class =" flex middle col-sm-12" >
45
- <input type =" checkbox" id =" official " v-model =" show.officialOnly " />
46
- <label for =" official " class =" ml-2xsmall" >Show only sanctioned events</label >
47
+ <input type =" checkbox" id =" past " v-model =" show.past " />
48
+ <label for =" past " class =" ml-2xsmall" >Past events</label >
47
49
</div >
48
50
<div class =" flex middle col-sm-12" >
49
- <input type =" checkbox" id =" CFP " v-model =" show.types.CFP " />
50
- <label for =" CFP " class =" ml-2xsmall" >List CFPs </label >
51
+ <input type =" checkbox" id =" official " v-model =" show.officialOnly " />
52
+ <label for =" official " class =" ml-2xsmall" >Only sanctioned events </label >
51
53
</div >
52
54
</div >
53
- <!-- <div class="px-medium pb-small border-bottom-bg">
54
- <input placeholder="Search by name, date, location..." class="search" />
55
- </div> -->
56
55
<h3 v-if =" loading" class =" type-medium px-small" >
57
56
loading events...
58
57
</h3 >
@@ -143,7 +142,8 @@ export default {
143
142
},
144
143
events: [],
145
144
imgUrlParams: ' ?w=500&h=500' ,
146
- selectedDate: new Date ()
145
+ selectedDate: new Date (),
146
+ findInput: ' '
147
147
}),
148
148
components: {
149
149
CalendarIcon,
@@ -179,8 +179,13 @@ export default {
179
179
... event ,
180
180
eventType: ' CFP'
181
181
}))
182
- if (this .show .types .CFP ) return [... cfps, ... events]
183
- return events
182
+
183
+ const filterByString = (list ) => {
184
+ if (this .findInput === ' ' ) return list
185
+ return list .filter ((event ) => event .searchString .toLowerCase ().includes (this .findInput .toLowerCase ()))
186
+ }
187
+ if (this .show .types .CFP ) return filterByString ([... cfps, ... events])
188
+ return filterByString (events)
184
189
}
185
190
},
186
191
async mounted () {
@@ -191,6 +196,16 @@ export default {
191
196
if (new Date (a .date ) < new Date (b .date )) return - 1
192
197
return 1
193
198
})
199
+ .map ((event ) => ({
200
+ ... event ,
201
+ searchString: `
202
+ ${ event .eventName }
203
+ ${ event .description }
204
+ ${ event .eventType }
205
+ ${ event .location || ' ' }
206
+ ${ event .link || ' ' }
207
+ ${ this .getDateString (new Date (event .date ), new Date (event .dateEnd ))} `
208
+ }))
194
209
},
195
210
methods: {
196
211
isPast,
@@ -243,8 +258,8 @@ export default {
243
258
}
244
259
.search {
245
260
width : 100% ;
246
- padding : 0.25 rem ;
247
- background-color : var ( --color-bg ) ;
261
+ padding : 0.5 rem ;
262
+ background-color : #00000033 ;
248
263
color : var (--color-text );
249
264
}
250
265
.inner-calendar-container {
0 commit comments