henry-search 1.0.16 → 1.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "henry-search",
3
- "version": "1.0.16",
3
+ "version": "1.0.18",
4
4
  "description": "Searches a typesense archive of musical performances",
5
5
  "main": "js/main.js",
6
6
  "scripts": {
@@ -28,7 +28,9 @@
28
28
  "@vitejs/plugin-vue-jsx": "^5.1.1",
29
29
  "@vueform/multiselect": "^2.6.11",
30
30
  "@vuepic/vue-datepicker": "^11.0.2",
31
+ "@vueuse/core": "^14.1.0",
31
32
  "instantsearch.js": "^4.80.0",
33
+ "lodash": "^4.17.21",
32
34
  "typesense": "^2.1.0",
33
35
  "typesense-instantsearch-adapter": "^2.9.0",
34
36
  "vue": "^3.5.21",
@@ -1,5 +1,5 @@
1
1
  <script setup>
2
- import { onMounted, useTemplateRef } from 'vue'
2
+ import { onMounted, useTemplateRef, watch } from 'vue'
3
3
 
4
4
  /**
5
5
  * PAccordion is a vue component for the <details> element. It uses the native <details> element
@@ -17,7 +17,8 @@ const props = defineProps({
17
17
  summary: { type: String, default: 'summary:first-of-type' },
18
18
  startOpen: { type: Boolean, default: true},
19
19
  openText: { type: String, default: null},
20
- closedText: { type: String, default: null}
20
+ closedText: { type: String, default: null},
21
+ name: { type: String, default: null}
21
22
  })
22
23
  const details = useTemplateRef('details')
23
24
  const summaryText = null
@@ -82,7 +83,7 @@ const handleToggle = event => {
82
83
  </script>
83
84
 
84
85
  <template>
85
- <details ref="details" class="accordion" @click="handleToggle">
86
+ <details ref="details" class="accordion" :name="props.name" @click="handleToggle">
86
87
  <slot />
87
88
  </details>
88
89
  </template>
@@ -37,6 +37,8 @@
37
37
  el.classList.remove("-open")
38
38
  })
39
39
  })
40
+
41
+
40
42
  })
41
43
 
42
44
  const mainRefinements = [
@@ -44,7 +44,6 @@ onMounted(() => {
44
44
  client.collections(props.indexName).documents(props.performanceId).retrieve().then(function (results) {
45
45
  performance.value = results
46
46
  document.title = `BSO HENRY | ${ formatDate(performance.value.performance_date) } Performance Detail`
47
- console.log(results)
48
47
  }).catch((e) => {
49
48
  console.log(e)
50
49
  //document.location = '/404'
@@ -124,7 +123,7 @@ const createURL = (facet, value) => {
124
123
  <div class="breadCrumb"><a :href="searchHistory && searchHistory.length ? searchHistory[searchHistory.length - 1].link : '/'">Back to Search Results</a></div>
125
124
  <div class="performance__details">
126
125
  <div class="performance__header">
127
- <h1>{{ formatDate(performance.performance_date, true) }} Performance Detail</h1>
126
+ <h1>{{ formatDate(performance.performance_date, 'detail') }} Performance Detail</h1>
128
127
  <h2>{{ formatTime(performance.performance_date) }} | {{ formatLocation(performance.venue, performance.location) }}</h2>
129
128
  </div>
130
129
  <div class="headerLinks">
@@ -48,7 +48,7 @@ const filterHistory = (indexName) => {
48
48
  <h4 v-if="index == 0">Performances</h4>
49
49
  <div class="history__item" v-if="formatSearchTitle(item?.uiState[props.performanceIndex]).length">
50
50
  <a :href="item.link">{{ formatSearchTitle(item?.uiState[props.performanceIndex]) }}</a><br/>
51
- {{ formatDate((new Date(item.date)).getTime() / 1000, true, false) }}
51
+ {{ formatDate((new Date(item.date)).getTime() / 1000, 'history', false) }}
52
52
  </div>
53
53
  </template>
54
54
  </div>
@@ -57,7 +57,7 @@ const filterHistory = (indexName) => {
57
57
  <h4 v-if="index == 0">Artists</h4>
58
58
  <div v-if="formatSearchTitle(item?.uiState[props.artistIndex]).length">
59
59
  <a :href="item.link">{{ formatSearchTitle(item?.uiState[props.artistIndex]) }}</a><br/>
60
- {{ formatDate((new Date(item.date)).getTime() / 1000, true, false) }}
60
+ {{ formatDate((new Date(item.date)).getTime() / 1000, 'history', false) }}
61
61
  </div>
62
62
  </template>
63
63
  </div>
@@ -66,7 +66,7 @@ const filterHistory = (indexName) => {
66
66
  <h4 v-if="index == 0">Works</h4>
67
67
  <div class="history__item" v-if="formatSearchTitle(item?.uiState[props.workIndex]).length">
68
68
  <a :href="item.link">{{ formatSearchTitle(item?.uiState[props.workIndex]) }}</a><br/>
69
- {{ formatDate((new Date(item.date)).getTime() / 1000, true, false) }}
69
+ {{ formatDate((new Date(item.date)).getTime() / 1000, 'history', false) }}
70
70
  </div>
71
71
  </template>
72
72
  </div>
@@ -1,5 +1,7 @@
1
1
  <script setup>
2
- import { ref } from 'vue'
2
+ import { ref, onMounted, useTemplateRef } from 'vue'
3
+ import { useDebounceFn } from '@vueuse/core'
4
+ import _ from 'lodash';
3
5
  import {
4
6
  AisClearRefinements,
5
7
  AisCurrentRefinements,
@@ -16,8 +18,8 @@
16
18
  import { history as historyRouter } from 'instantsearch.js/es/lib/routers'
17
19
  import { simple as simpleStateMapping } from 'instantsearch.js/es/lib/stateMappings'
18
20
  import VueDatePicker from '@vuepic/vue-datepicker'
19
- import slugify from '../composables/slugify'
20
21
 
22
+ import slugify from '../composables/slugify'
21
23
  import PAccordion from './PAccordion.vue'
22
24
  import formatDate from '../composables/formatDate'
23
25
  import formatSearchTitle from '../composables/formatSearchTitle'
@@ -87,11 +89,29 @@
87
89
  updateStateRefs(uiState)
88
90
 
89
91
  return uiState
90
- }
92
+ },
93
+ createURL({ qsModule, location, routeState }) {
94
+ const { origin, pathname, hash } = location;
95
+ const indexState = routeState["instant_search"] || {};
96
+ const queryString = qsModule.stringify(routeState);
97
+
98
+ const uiState = qsModule.parse(location.search.slice(1))
99
+
100
+ updateSearchHistory(uiState)
101
+
102
+ // if (!indexState.query) {
103
+ // return `${origin}${pathname}${hash}`;
104
+ // }
105
+
106
+ return `${origin}${pathname}?${queryString}${hash}`;
107
+ },
91
108
  }),
109
+
92
110
  stateMapping: simpleStateMapping()
93
111
  })
94
112
 
113
+ const mainRefinementList = ref({})
114
+
95
115
  const server = {
96
116
  connectionTimeoutSeconds: 20,
97
117
  apiKey: props.searchKey,
@@ -180,48 +200,61 @@
180
200
  showByWorks.value = Object.keys(workFilters.value).length !== 0
181
201
 
182
202
  // update search history
183
- let searchHistory = sessionStorage.getItem('searchHistory') ? JSON.parse(sessionStorage.getItem('searchHistory')) : []
184
- // if only pagination, don't add to search history
185
- if (uiState[props.indexName].page && !uiState[props.indexName].query && !uiState[props.indexName].refinementList && !uiState[props.indexName].menu) {
186
- return
187
- }
188
- searchHistory = searchHistory.map((item) => {
189
- // make sure that all queries aren't entered into the history as a user types each letter
190
- if (uiState[props.indexName].query?.includes(item.query) && uiState[props.indexName].query != item.query) {
191
- return {
192
- date: new Date(),
193
- uiState: uiState,
194
- query: uiState[props.indexName].query,
195
- link: document.location.href
196
- }
197
- } else {
198
- return item
199
- }
200
- })
201
-
202
- //make sure we're not just adding pagination
203
- let addState = true
204
- searchHistory.forEach((item) => {
205
- if (item.link.replace(/\&page=\d*/, "") == document.location.href.replace(/\&page=\d*/, "")) {
206
- addState = false
207
- return
208
- }
209
- })
210
203
 
211
204
 
212
- if (addState && !(searchHistory.map((a) => a.link)).includes(document.location.href) &&
213
- document.location.search != '') {
214
- searchHistory.push({
205
+ updateTitle(uiState[props.indexName])
206
+
207
+ }
208
+ }
209
+
210
+ const updateSearchHistory = (uiState) => {
211
+ let searchHistory = sessionStorage.getItem('searchHistory') ? JSON.parse(sessionStorage.getItem('searchHistory')) : []
212
+ // if only pagination, don't add to search history
213
+ if (!uiState[props.indexName]) {
214
+ return
215
+ }
216
+ if (uiState[props.indexName].page && !uiState[props.indexName].query && !uiState[props.indexName].refinementList && !uiState[props.indexName].menu) {
217
+ return
218
+ }
219
+ searchHistory = searchHistory.map((item) => {
220
+ // make sure that all queries aren't entered into the history as a user types each letter
221
+ if (uiState[props.indexName].query?.includes(item.query) && uiState[props.indexName].query != item.query) {
222
+ return {
215
223
  date: new Date(),
216
224
  uiState: uiState,
217
225
  query: uiState[props.indexName].query,
218
226
  link: document.location.href
219
- })
227
+ }
228
+ } else {
229
+ return item
230
+ }
231
+ })
232
+
233
+ //make sure we're not just adding pagination
234
+ let addState = true
235
+ searchHistory.forEach((item) => {
236
+ if (item.link.replace(/\&page=\d*/, "") == document.location.href.replace(/\&page=\d*/, "")) {
237
+ addState = false
238
+ return
239
+ }
240
+ if (_.isEqual(item.uiState[props.indexName], uiState[props.indexName])) {
241
+ addState = false
242
+ return
220
243
  }
244
+ })
221
245
 
222
- sessionStorage.setItem('searchHistory', JSON.stringify(searchHistory))
223
- updateTitle(uiState[props.indexName])
246
+
247
+ if (addState && !(searchHistory.map((a) => a.link)).includes(document.location.href) &&
248
+ document.location.search != '') {
249
+ searchHistory.push({
250
+ date: new Date(),
251
+ uiState: uiState,
252
+ query: uiState[props.indexName].query,
253
+ link: document.location.href
254
+ })
224
255
  }
256
+
257
+ sessionStorage.setItem('searchHistory', JSON.stringify(searchHistory))
225
258
  }
226
259
 
227
260
  const getWorkFilters = (refinementList) => {
@@ -248,7 +281,12 @@
248
281
 
249
282
  const onStateChange = ({ uiState, setUiState }) => {
250
283
  updateStateRefs(uiState)
251
- setUiState(uiState)
284
+ setUiState(uiState)
285
+
286
+ // console.log('before', new Date())
287
+
288
+ // setTimeout(() => , 3000)
289
+ // console.log('after', new Date())
252
290
  }
253
291
 
254
292
  const updateTitle = (state) => {
@@ -316,7 +354,7 @@
316
354
 
317
355
  }
318
356
 
319
- const intersect = (filters, work) => {
357
+ const intersect = (filters, work) => {
320
358
  let intersectKeys = Object.keys(filters).filter(k => Object.hasOwn(work, k))
321
359
  let intersectArray = []
322
360
  intersectKeys.forEach((key) => {
@@ -375,8 +413,11 @@
375
413
  } else {
376
414
  return items
377
415
  }
378
-
416
+ }
379
417
 
418
+ const refineAndScroll = (refine, params, scrollId) => {
419
+ refine(params)
420
+ document.getElementById(scrollId).scrollIntoView()
380
421
  }
381
422
 
382
423
  const toMinValue = (value, range) => {
@@ -395,6 +436,31 @@
395
436
  return typeof maxValue === "number" && maxValue !== null && maxValue !== maxRange ? maxValue : maxRange
396
437
  }
397
438
 
439
+ function debounce(func, params, delay) {
440
+ let timeout;
441
+ // return function (params) {
442
+ clearTimeout(timeout);
443
+ timeout = setTimeout(() => {
444
+ func(params);
445
+ }, delay);
446
+ //};
447
+ }
448
+
449
+ const getHeadingStyle = (attribute) => {
450
+ if (mainRefinementList.value && typeof(mainRefinementList.value[attribute]) !== 'undefined' && mainRefinementList.value[attribute]) {
451
+ try {
452
+ if (mainRefinementList.value[attribute] && typeof(mainRefinementList.value[attribute].items) !== 'undefined' && mainRefinementList.value[attribute].items.length) {
453
+ return ''
454
+ } else {
455
+ return '-gray'
456
+ }
457
+ } catch (e) {
458
+ return ''
459
+ }
460
+ }
461
+ return ''
462
+ }
463
+
398
464
  </script>
399
465
 
400
466
  <template>
@@ -403,9 +469,8 @@
403
469
  :index-name="props.indexName"
404
470
  :routing="routing"
405
471
  :on-state-change="onStateChange"
406
-
407
472
  >
408
- <div :class="`tabs__content ${ filtersClosed ? 'closed' : 'open'}`" :id="`${props.indexName}_tabs__content`">
473
+ <div :class="`tabs__content ${ filtersClosed ? 'closed' : 'open'}`" :id="`${props.indexName}_tabs__content`">
409
474
  <!-- Header and Search Section -->
410
475
  <div class="eventsSearch__topSection">
411
476
  <!-- Search Filters Section -->
@@ -413,10 +478,7 @@
413
478
  <div class="filters__row">
414
479
  <!-- Search Box -->
415
480
  <div class="filters__filterGroup filters__search">
416
- <ais-search-box
417
-
418
- class="searchBox"
419
- >
481
+ <ais-search-box class="searchBox" >
420
482
  <template v-slot="{ currentRefinement, isSearchStalled, refine }">
421
483
  <label for="searchbox" class="label__hidden">{{ props.searchPlaceholder }}</label>
422
484
  <input
@@ -517,17 +579,18 @@
517
579
  </a>
518
580
  </div>
519
581
  </div>
520
- <ais-refinement-list v-for="refinement in mainRefinements" :attribute="refinement.attribute" operator="and">
521
- <template v-slot="{items, refine, searchForItems, isFromSearch}">
522
- <p-accordion :name="refinement.title" class="accordion" :start-open="true">
523
- <summary class="accordion__summary">
524
- <h6 :class="`accordion__heading ${ !(items.length || isFromSearch) ? '-gray' : ''}`">{{ refinement.title }}</h6>
525
- <div class="accordion__iconWrapper" v-if="items.length">
526
- <svg class="accordion__icon icon icon--chevron-right" aria-hidden="true" role="presentation" viewBox="0 0 18 18" fill="none">
527
- <path d="M7 17L15 9L7 1" stroke="var(--icon-color, currentColor)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
528
- </svg>
529
- </div>
530
- </summary>
582
+ <p-accordion class="accordion" v-for="refinement in mainRefinements">
583
+ <summary class="accordion__summary">
584
+ <h6 :class="`accordion__heading ${ getHeadingStyle(refinement.attribute) }`">{{ refinement.title }}</h6>
585
+ <div class="accordion__iconWrapper">
586
+ <svg class="accordion__icon icon icon--chevron-right" aria-hidden="true" role="presentation" viewBox="0 0 18 18" fill="none">
587
+ <path d="M7 17L15 9L7 1" stroke="var(--icon-color, currentColor)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
588
+ </svg>
589
+ </div>
590
+ </summary>
591
+ <ais-refinement-list :attribute="refinement.attribute" operator="and" :ref="(el) => {mainRefinementList[refinement.attribute] = el}">
592
+ <template v-slot="{items, refine, searchForItems, isFromSearch}">
593
+
531
594
  <div class="accordion__content" v-if="items.length || isFromSearch">
532
595
  <div class="ais-SearchBox searchBox -filter">
533
596
  <label class="label__hidden" :for="refinement.attribute">{{ refinement.placeholder }}</label>
@@ -562,12 +625,13 @@
562
625
  <label :for="slugify(refinement.title + ' ' + item.value)">{{ item.value }}</label><span class="eventsSearch__refinementCount">{{ item.count }}</span>
563
626
  </label>
564
627
  </div>
565
- </div>
566
- </p-accordion>
567
- <!-- <template v-else><div></div></template> -->
568
- </template>
569
- </ais-refinement-list>
570
- <p-accordion class="ais-RefinementList" v-if="props.addlRefinements" :start-open="false" open-text="Fewer Filters" closed-text="More Filters">
628
+ </div>
629
+ </template>
630
+ </ais-refinement-list>
631
+ </p-accordion>
632
+ <!-- <template v-else><div></div></template> -->
633
+
634
+ <p-accordion class="ais-RefinementList" v-if="props.addlRefinements" name="more_filters" :start-open="false" open-text="Fewer Filters" closed-text="More Filters">
571
635
  <summary class="accordion__summary">
572
636
  <h6 class="accordion__heading -thin">More Filters</h6>
573
637
  </summary>
@@ -608,7 +672,7 @@
608
672
  <div class="eventSearch__checkBox">
609
673
  <input :class="`checkbox ${item.isRefined ? '-boxChecked' : ''}`" type="checkbox" :id="slugify(refinement.title + ' ' + item.value)" :value="item.value" :checked="item.isRefined" @click="refine(item.value)">
610
674
  </div>
611
- <label :for="slugify(refinement.title + ' ' + item.value)">{{ item.value }}</label><span class="itemCount">{{ item.count }}</span>
675
+ <label :for="slugify(refinement.title + ' ' + item.value)">{{ item.value }}</label><span class="eventsSearch__refinementCount">{{ item.count }}</span>
612
676
  </label>
613
677
  </div>
614
678
  </div>
@@ -660,9 +724,10 @@
660
724
  :href="createURL()"
661
725
  @click.prevent="refine"
662
726
  >
663
- <button>Clear</button>
664
- <button @click="toggleFiltersMobile()" class="filterApply">Apply</button>
727
+ <button @click="toggleFiltersMobile()" class="filterClear">Clear</button>
728
+
665
729
  </a>
730
+ <button @click="toggleFiltersMobile()" class="filterApply">Apply</button>
666
731
  </template>
667
732
  </ais-clear-refinements>
668
733
 
@@ -698,7 +763,7 @@
698
763
  </div>
699
764
  </div>
700
765
  <div class="eventsSearch__resultsHeader">
701
- <div class="eventsSearch__resultsTitle">
766
+ <div class="eventsSearch__resultsTitle" id="resultsTitle">
702
767
  <svg width="24" height="24" viewBox="0 0 24 24" :id="`${props.indexName}_filterToggleOn`" :class="`filters__toggleOn ${filtersClosed ? 'closed' : ''}`" @click="toggleFilters()">
703
768
  <rect width="24" height="24" rx="4" fill="#01ABE6"/>
704
769
  <path d="M6 7.25H18.8864" stroke="white" stroke-linecap="round"/>
@@ -818,14 +883,14 @@
818
883
  >
819
884
  <ul class="resultsPagination__paginationComponent" v-if="pages.length > 1">
820
885
  <li v-if="!isFirstPage && nbPages > 5" class="arrow">
821
- <a :href="createURL(0)" @click.prevent="refine(0)">
886
+ <a :href="createURL(0)" @click.prevent="refineAndScroll(refine, 0, 'resultsTitle')">
822
887
  ‹‹
823
888
  </a>
824
889
  </li>
825
890
  <li v-if="!isFirstPage && nbPages > 5" class="arrow">
826
891
  <a
827
892
  :href="createURL(currentRefinement - 1)"
828
- @click.prevent="refine(currentRefinement - 1)"
893
+ @click.prevent="refineAndScroll(refine, currentRefinement - 1, 'resultsTitle')"
829
894
  >
830
895
 
831
896
  </a>
@@ -835,32 +900,32 @@
835
900
  <a
836
901
  :href="createURL(page)"
837
902
  :style="{ fontWeight: page === currentRefinement ? 'bold' : '' }"
838
- @click.prevent="refine(page)"
903
+ @click.prevent="refineAndScroll(refine, page, 'resultsTitle')"
839
904
  >
840
905
  {{ page + 1 }}
841
906
  </a>
842
907
  </li>
843
908
  <li v-if="pages.length > 5">...</li>
844
909
  <li v-if="pages.length > 5">
845
- <a :href="createURL(nbPages - 1)">
910
+ <a :href="createURL(nbPages - 1)" @click.prevent="refineAndScroll(refine, nbPages - 1, 'resultsTitle')">
846
911
  {{ nbPages }}
847
912
  </a>
848
913
  </li>
849
914
  </template>
850
915
  <template v-else>
851
916
  <li>
852
- <a :href="createURL(0)" @click.prevent="refine(0)" :style="{ fontWeight: currentRefinement === 0 ? 'bold' : '' }">
917
+ <a :href="createURL(0)" @click.prevent="refineAndScroll(refine, 0, 'resultsTitle')" :style="{ fontWeight: currentRefinement === 0 ? 'bold' : '' }">
853
918
  1
854
919
  </a>
855
920
  </li>
856
921
  <li v-if="pages.length > 5">...</li>
857
922
  <li v-for="page in 5" :key="page" v-if="nbPages > 5">
858
- <a :href="createURL(nbPages - (5 - page) - 1)" :style="{ fontWeight: nbPages - (5 - page) - 1 === currentRefinement ? 'bold' : '' }">
923
+ <a :href="createURL(nbPages - (5 - page) - 1)" @click.prevent="refineAndScroll(refine, nbPages - (5 - page) - 1, 'resultsTitle')" :style="{ fontWeight: nbPages - (5 - page) - 1 === currentRefinement ? 'bold' : '' }">
859
924
  {{ nbPages - (5 - page) }}
860
925
  </a>
861
926
  </li>
862
927
  <li v-for="page in nbPages - 1" v-if="nbPages <= 5">
863
- <a :href="createURL(page)" :style="{ fontWeight: page === currentRefinement ? 'bold' : '' }">
928
+ <a :href="createURL(page)" @click.prevent="refineAndScroll(refine, page, 'resultsTitle')" :style="{ fontWeight: page === currentRefinement ? 'bold' : '' }">
864
929
  {{ page + 1 }}
865
930
  </a>
866
931
  </li>
@@ -868,20 +933,20 @@
868
933
  <li v-if="!isLastPage && nbPages > 5" class="arrow">
869
934
  <a
870
935
  :href="createURL(currentRefinement + 1)"
871
- @click.prevent="refine(currentRefinement + 1)"
936
+ @click.prevent="refineAndScroll(refine, currentRefinement + 1, 'resultsTitle')"
872
937
  >
873
938
 
874
939
  </a>
875
940
  </li>
876
941
  <li v-if="!isLastPage && nbPages > 5" class="arrow">
877
- <a :href="createURL(nbPages)" @click.prevent="refine(nbPages)">
942
+ <a :href="createURL(nbPages)" @click.prevent="refineAndScroll(refine, currentRefinement + 1, 'resultsTitle')">
878
943
  ››
879
944
  </a>
880
945
  </li>
881
946
  </ul>
882
947
  <div v-else></div>
883
948
  </template>
884
-
949
+
885
950
  </ais-pagination>
886
951
  </nav>
887
952
  </section>
@@ -1,4 +1,4 @@
1
- export default function formatDate(unix_timestamp, detail = false, showTimezone = true) {
1
+ export default function formatDate(unix_timestamp, type = null, showTimezone = true) {
2
2
  // multiplied by 1000 so that the argument is in milliseconds, not seconds
3
3
  const date = new Date(unix_timestamp * 1000)
4
4
  const days = ["Sun", "Mon", "Tues", "Weds", "Thurs", "Fri", "Sat"]
@@ -7,7 +7,9 @@ export default function formatDate(unix_timestamp, detail = false, showTimezone
7
7
  const amPm = date.getHours() + 1 > 12 ? "pm" : "am"
8
8
  const minutes = "0" + date.getMinutes()
9
9
 
10
- if (detail) {
10
+ if (type == 'detail') {
11
+ return `${days[date.getDay()]}, ${(months[date.getMonth()]).substring(0, 3)} ${date.getDate()}, ${date.getFullYear()}`
12
+ } else if (type == 'history') {
11
13
  return `${days[date.getDay()]}, ${(months[date.getMonth()]).substring(0, 3)} ${date.getDate()}, ${hour}:${minutes.substr(-2)}${amPm}${ showTimezone ? ' EDT' : '' }`
12
14
  } else {
13
15
  return `${date.getMonth() + 1}-${date.getDate()}-${date.getFullYear()}`
@@ -7,6 +7,6 @@
7
7
  padding: 0.5rem 2rem 0.5rem 4rem;
8
8
  }
9
9
  @include at(lg) {
10
- padding: 0.5rem 4rem 0.5rem 8rem;
10
+ padding: 0.5rem 4rem 0.5rem 6.25rem;
11
11
  }
12
12
  }
@@ -3,9 +3,18 @@
3
3
  max-height: 10rem;
4
4
  min-height: 1.8rem;
5
5
  overflow-y: auto;
6
+ padding-bottom: 0.5rem;
6
7
  input[type=checkbox] {
7
- border: thin solid var(--color-dark-blue);
8
- // background-color: var(--color-white);
8
+ border: thin solid var(--color-gray-100);
9
+ background-color: var(--color-white);
10
+ border-radius: 0;
11
+ height: 1rem;
12
+ width: 1rem;
13
+
14
+ }
15
+ input[type=checkbox]:checked {
16
+ border: thin solid var(--color-gray-100);
17
+ background-color: var(--color-turquoise);
9
18
  border-radius: 0;
10
19
  height: 1rem;
11
20
  width: 1rem;
@@ -31,10 +31,10 @@
31
31
  * a default neutral color scale.
32
32
  */
33
33
  --color-gray-50: #f2f2f2;
34
- --color-gray-100: #e5e5e5;
35
- --color-gray-200: #cccccc;
34
+ --color-gray-100: #d7d7d7;
35
+ --color-gray-200: #d3d0cd;
36
36
  --color-gray-300: #b3b3b3;
37
- --color-gray-400: #999999;
37
+ --color-gray-400: #9A9FA1;
38
38
  --color-gray-500: #808080;
39
39
  --color-gray-600: #666666;
40
40
  --color-gray-700: #4c4c4c;
@@ -50,12 +50,11 @@
50
50
  --color-blue-700: #003D99;
51
51
  --color-aqua: #00CCCC;
52
52
  --color-aqua-700: #009999;
53
- --color-dark-blue: #14284E;
53
+ --color-dark-blue: #14294E;
54
54
  --color-white: #ffffff;
55
55
  --color-mid-blue: #12305A;
56
56
  --color-light-gray: #F5F5F5;
57
- --color-light-gold: #FBF4EF;
58
- --color-dark-gray: #686F73;
57
+ --color-light-gold: #fcf3ec;
59
58
  --color-turquoise: #01ABE6;
60
59
  --color-black:#000000;
61
60
  --color-mid-gray: #686F73;
@@ -10,7 +10,8 @@
10
10
  height: var(--accordion-height-closed);
11
11
  overflow: hidden;
12
12
  transition: height var(--root-duration-moderate) var(--root-ease-out);
13
- border-top: thin solid var(--color-gray-300);
13
+ border-top: thin solid var(--color-gray-200);
14
+ padding-bottom: 0.4rem;
14
15
 
15
16
  &__summary {
16
17
  align-items: center;
@@ -20,7 +21,7 @@
20
21
  justify-items: start;
21
22
  list-style: none;
22
23
  outline-offset: -2px;
23
- padding: .5rem 0;
24
+ padding: .5rem 0 0 0;
24
25
  user-select: none;
25
26
 
26
27
  &::-webkit-details-marker {
@@ -53,7 +54,7 @@
53
54
  }
54
55
 
55
56
  &__content {
56
- padding: 0 .5rem 1.5rem 0;
57
+ padding: 0 .5rem 0 0;
57
58
  }
58
59
 
59
60
  &[open]:not(&.-closing) {
@@ -12,6 +12,7 @@
12
12
 
13
13
  .ais-CurrentRefinements--noRefinement {
14
14
  border: none;
15
+ height: 0;
15
16
  }
16
17
 
17
18
  .ais-RefinementList {
@@ -24,7 +24,7 @@
24
24
  align-items: center !important;
25
25
 
26
26
  &::placeholder {
27
- color: #666;
27
+ color: #686F73;
28
28
  }
29
29
 
30
30
  @media screen and (min-width: 1070px) {
@@ -29,6 +29,9 @@
29
29
  font-size: 1.1rem;
30
30
  margin-right: .5rem;
31
31
  display: flex;
32
+ select {
33
+ margin: 0 0 0.2rem 0;
34
+ }
32
35
  //align-items: center;
33
36
  // select {
34
37
  // margin-bottom: 0;
@@ -43,7 +43,7 @@
43
43
  border: none;
44
44
  outline: none;
45
45
  &::placeholder {
46
- color: var(--color-gray-100);
46
+ color: var(--color-mid-gray);
47
47
  }
48
48
  &.-filter {
49
49
  background-color:#ffffff;
@@ -53,7 +53,7 @@
53
53
  width: 100%;
54
54
  }
55
55
  &.-filter::placeholder {
56
- color: var(--color-gray-100);
56
+ color: var(--color-mid-gray);
57
57
  }
58
58
  }
59
59