henry-search 1.0.13 → 1.0.15
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/dist/HenrySearch.css +1 -1
- package/dist/HenrySearch.js +6960 -6963
- package/dist/HenrySearch.umd.cjs +79 -79
- package/package.json +7 -1
- package/src/components/AudioLinks.vue +6 -6
- package/src/components/EventLinks.vue +12 -12
- package/src/components/Search.vue +88 -86
- package/src/components/SearchDetail.vue +35 -33
- package/src/components/SearchTab.vue +78 -86
- package/src/main.js +1 -0
- package/src/styles/atoms/audioLinks/index.scss +46 -0
- package/src/styles/atoms/breadCrumb/index.scss +12 -0
- package/src/styles/atoms/checkBoxes/index.scss +34 -0
- package/src/styles/atoms/clearRefinements/index.scss +2 -0
- package/src/styles/atoms/eventLinks/index.scss +22 -0
- package/src/styles/atoms/index.scss +7 -0
- package/src/styles/atoms/label/index.scss +6 -0
- package/src/styles/atoms/menuSelect/index.scss +28 -0
- package/src/styles/config/index.scss +180 -0
- package/src/styles/index.scss +8 -0
- package/src/styles/molecules/accordion/accordion.html +97 -0
- package/src/styles/molecules/accordion/index.scss +76 -0
- package/src/styles/molecules/currentRefinements/index.scss +22 -0
- package/src/styles/molecules/dateRange/index.scss +184 -0
- package/src/styles/molecules/headerLinks/index.scss +40 -0
- package/src/styles/molecules/index.scss +7 -0
- package/src/styles/molecules/pagination/index.scss +44 -0
- package/src/styles/molecules/resultActions/index.scss +42 -0
- package/src/styles/molecules/searchBox/index.scss +69 -0
- package/src/styles/organisms/activeFilters/index.scss +49 -0
- package/src/styles/organisms/filters/index.scss +241 -0
- package/src/styles/organisms/index.scss +4 -0
- package/src/styles/organisms/performanceGrid/index.scss +121 -0
- package/src/styles/organisms/resultsGrid/index.scss +157 -0
- package/src/styles/templates/eventsSearch/index.scss +381 -0
- package/src/styles/templates/history/index.scss +32 -0
- package/src/styles/templates/index.scss +3 -0
- package/src/styles/templates/performance/index.scss +74 -0
- package/src/components/HelloWorld.vue +0 -43
|
@@ -50,7 +50,7 @@ onMounted(() => {
|
|
|
50
50
|
})
|
|
51
51
|
|
|
52
52
|
document.addEventListener("click", function(){
|
|
53
|
-
document.querySelectorAll(".
|
|
53
|
+
document.querySelectorAll(".audioLinks__box").forEach((el) => {
|
|
54
54
|
el.classList.remove("-open")
|
|
55
55
|
})
|
|
56
56
|
})
|
|
@@ -95,13 +95,15 @@ const formatLocation = (venue, location) => {
|
|
|
95
95
|
const formatWorkAttribute = (works, attributeName) => {
|
|
96
96
|
let returnString = ""
|
|
97
97
|
const attributeArray = []
|
|
98
|
-
works
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
attributeArray.
|
|
102
|
-
|
|
98
|
+
if (works) {
|
|
99
|
+
works.forEach((w) => {
|
|
100
|
+
w[attributeName].forEach((attr) => {
|
|
101
|
+
if (!attributeArray.includes(attr)) {
|
|
102
|
+
attributeArray.push(attr)
|
|
103
|
+
}
|
|
104
|
+
})
|
|
103
105
|
})
|
|
104
|
-
}
|
|
106
|
+
}
|
|
105
107
|
attributeArray.forEach((attr, index) => {
|
|
106
108
|
returnString += `<a href="${ createURL(`works.${ attributeName }`, attr) }">${ attr }${ index < attributeArray.length - 1 ? "; " : ""}</a>`
|
|
107
109
|
})
|
|
@@ -118,13 +120,13 @@ const createURL = (facet, value) => {
|
|
|
118
120
|
|
|
119
121
|
<template>
|
|
120
122
|
<template v-if="performance">
|
|
121
|
-
<div class="
|
|
123
|
+
<div class="breadCrumb"><a :href="searchHistory && searchHistory.length ? searchHistory[searchHistory.length - 1].link : '/'">Back to Search Results</a></div>
|
|
122
124
|
<div class="performance__details">
|
|
123
125
|
<div class="performance__header">
|
|
124
126
|
<h1>{{ formatDate(performance.performance_date) }} Performance Detail</h1>
|
|
125
127
|
<h2>{{ formatTime(performance.performance_date) }} | {{ formatLocation(performance.venue, performance.location) }}</h2>
|
|
126
128
|
</div>
|
|
127
|
-
<div class="
|
|
129
|
+
<div class="headerLinks">
|
|
128
130
|
<event-links :detail="true" :item="performance" />
|
|
129
131
|
</div>
|
|
130
132
|
<div class="performance__headerData">
|
|
@@ -153,59 +155,59 @@ const createURL = (facet, value) => {
|
|
|
153
155
|
<div><span class="performance__dataTitle">Notes:</span><br/>{{ performance.notes ?? '---' }}</div>
|
|
154
156
|
</div>
|
|
155
157
|
<h4>Program</h4>
|
|
156
|
-
<div class="
|
|
158
|
+
<div class="performanceGrid">
|
|
157
159
|
<template v-for="work, index in performance.works">
|
|
158
160
|
<template v-if="index == 0">
|
|
159
|
-
<div class="
|
|
160
|
-
<div class="
|
|
161
|
-
<div class="
|
|
162
|
-
<div class="
|
|
163
|
-
<div class="
|
|
161
|
+
<div class="performanceGrid__cell -header -first">Composer</div>
|
|
162
|
+
<div class="performanceGrid__cell -header">Works</div>
|
|
163
|
+
<div class="performanceGrid__cell -header">Additional Creator</div>
|
|
164
|
+
<div class="performanceGrid__cell -header">Artist</div>
|
|
165
|
+
<div class="performanceGrid__cell -header">Role</div>
|
|
164
166
|
</template>
|
|
165
167
|
|
|
166
|
-
<div :class="`
|
|
168
|
+
<div :class="`performanceGrid__cell -first -composers
|
|
167
169
|
${ index == 0 ? '-top' : ''}
|
|
168
170
|
${ index % 2 == 0 ? '-even' : '-odd' }
|
|
169
171
|
${ index + 1 == performance.works.length ? '-last' : ''}`">
|
|
170
|
-
<span class="
|
|
172
|
+
<span class="performanceGrid__mobileHeader">Composer</span>
|
|
171
173
|
<span v-for="composer, index in work.composers">
|
|
172
174
|
<a :href="createURL('works.composers', composer)">{{ composer + (index < work.composers.length - 1 ? ", " : "") }}</a>
|
|
173
175
|
</span>
|
|
174
176
|
</div>
|
|
175
|
-
<div :class="`
|
|
176
|
-
<span class="
|
|
177
|
-
<div class="
|
|
178
|
-
<span class="
|
|
177
|
+
<div :class="`performanceGrid__cell ${index % 2 == 0 ? '-even' : '-odd'} ${ index + 1 == performance.works.length ? '-last' : ''}`">
|
|
178
|
+
<span class="performanceGrid__mobileHeader">Work</span>
|
|
179
|
+
<div class="performanceGrid__workItem">
|
|
180
|
+
<span class="performanceGrid__infoItem">
|
|
179
181
|
<a :href="createURL('works.title', work.title)">{{ work.title }}</a>
|
|
180
182
|
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg" v-if="work.has_recording">
|
|
181
183
|
<path d="M9.81086 5L6.92983 7.30483H4.625V10.7621H6.92983L9.81086 13.0669V5Z" stroke="#01ABE6" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
182
184
|
<path d="M12.4268 6.99365C12.9669 7.53393 13.2703 8.2666 13.2703 9.03054C13.2703 9.79449 12.9669 10.5272 12.4268 11.0674" stroke="#01ABE6" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
183
185
|
</svg>
|
|
184
186
|
</span>
|
|
185
|
-
<span v-if="work.premiere" class="
|
|
187
|
+
<span v-if="work.premiere" class="performanceGrid__infoItem -small">Work Premiere:<br/>
|
|
186
188
|
<a :href="createURL('works.premiere', work.premier)">{{ work.premiere }}</a>
|
|
187
189
|
</span>
|
|
188
|
-
<span v-if="work.commission" class="
|
|
190
|
+
<span v-if="work.commission" class="performanceGrid__infoItem -small">Commission:<br/>
|
|
189
191
|
<a :href="createURL('works.commission', work.commission)">
|
|
190
192
|
{{ work.commission }}
|
|
191
193
|
</a>
|
|
192
194
|
</span>
|
|
193
|
-
<span v-if="work.encore" class="
|
|
195
|
+
<span v-if="work.encore" class="performanceGrid__infoItem -small"><a :href="createURL('works.encore', work.encore)">Encore</a></span>
|
|
194
196
|
</div>
|
|
195
197
|
</div>
|
|
196
|
-
<div :class="`
|
|
197
|
-
<span class="
|
|
198
|
-
<span v-for="c in work.additional_creators" class="
|
|
198
|
+
<div :class="`performanceGrid__cell ${index % 2 == 0 ? '-even' : '-odd'} ${ index + 1 == performance.works.length ? '-last' : ''}`">
|
|
199
|
+
<span class="performanceGrid__mobileHeader">Additional Creator</span>
|
|
200
|
+
<span v-for="c in work.additional_creators" class="performanceGrid__infoItem">
|
|
199
201
|
<a :href="createURL('works.additional_creators.name', c.name)">{{ c.name }}, {{ c.role }}</a>
|
|
200
202
|
</span>
|
|
201
203
|
</div>
|
|
202
|
-
<div :class="`
|
|
203
|
-
<span class="
|
|
204
|
-
<span v-for="a in work.artists" class="
|
|
204
|
+
<div :class="`performanceGrid__cell -artist ${index % 2 == 0 ? '-even' : '-odd'} ${ index + 1 == performance.works.length ? '-last' : ''}`">
|
|
205
|
+
<span class="performanceGrid__mobileHeader">Artist</span>
|
|
206
|
+
<span v-for="a in work.artists" class="performanceGrid__infoItem"><a :href="createURL('works.artists.name', a.name)">{{ a.name }}</a></span>
|
|
205
207
|
</div>
|
|
206
|
-
<div :class="`
|
|
207
|
-
<span class="
|
|
208
|
-
<span v-for="a in work.artists" class="
|
|
208
|
+
<div :class="`performanceGrid__cell -role ${index % 2 == 0 ? '-even' : '-odd'} ${ index + 1 == performance.works.length ? '-last' : ''}`">
|
|
209
|
+
<span class="performanceGrid__mobileHeader">Role</span>
|
|
210
|
+
<span v-for="a in work.artists" class="performanceGrid__infoItem"><a :href="createURL('works.artists.role', a.role)">{{ a.role }}</a></span>
|
|
209
211
|
</div>
|
|
210
212
|
</template>
|
|
211
213
|
</div>
|
|
@@ -73,6 +73,7 @@
|
|
|
73
73
|
const showByWorks = ref(false)
|
|
74
74
|
const workFilters = ref(null)
|
|
75
75
|
const currentQuery = ref(null)
|
|
76
|
+
const filtersClosed = ref(false)
|
|
76
77
|
|
|
77
78
|
const updateNow = ref(0)
|
|
78
79
|
|
|
@@ -117,18 +118,9 @@
|
|
|
117
118
|
const searchClient = adapter.searchClient
|
|
118
119
|
|
|
119
120
|
const toggleFilters = () => {
|
|
121
|
+
filtersClosed.value = !filtersClosed.value
|
|
120
122
|
const wrapper = document.getElementById(`${props.indexName}_filterRail`)
|
|
121
|
-
const tabContent = document.getElementById(`${props.indexName}_tabs__content`)
|
|
122
|
-
const leftPane = document.getElementById(`${props.indexName}_eventsSearch__results`)
|
|
123
|
-
const toggleOnButton = document.getElementById(`${props.indexName}_filterToggleOn`)
|
|
124
|
-
if (toggleOnButton) {
|
|
125
|
-
toggleOnButton.classList.toggle('closed')
|
|
126
|
-
}
|
|
127
|
-
wrapper.classList.toggle('closed')
|
|
128
|
-
leftPane.classList.toggle('closed')
|
|
129
|
-
console.log("wrapper.classList.contains('closed')", wrapper.classList.contains('closed'), wrapper.classList)
|
|
130
123
|
const allNestedElements = wrapper.querySelectorAll("*")
|
|
131
|
-
console.log('allNestedElements', allNestedElements)
|
|
132
124
|
if (wrapper && wrapper.classList.contains('closed')) {
|
|
133
125
|
allNestedElements.forEach((el) => {
|
|
134
126
|
el.setAttribute("tabindex", -1)
|
|
@@ -139,8 +131,6 @@
|
|
|
139
131
|
})
|
|
140
132
|
}
|
|
141
133
|
|
|
142
|
-
tabContent.classList.toggle('open')
|
|
143
|
-
tabContent.classList.toggle('closed')
|
|
144
134
|
}
|
|
145
135
|
|
|
146
136
|
const toggleFiltersMobile = () => {
|
|
@@ -165,9 +155,9 @@
|
|
|
165
155
|
el.style.setProperty('--accordion-height-closed', `${summaryHeight}px`)
|
|
166
156
|
|
|
167
157
|
setTimeout(() => {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
158
|
+
el.open = false
|
|
159
|
+
el.classList.remove('-closing')
|
|
160
|
+
el.style.setProperty('--accordion-height-closed', 'auto')
|
|
171
161
|
}, 0)
|
|
172
162
|
})
|
|
173
163
|
}
|
|
@@ -368,7 +358,7 @@
|
|
|
368
358
|
let itemIndex = 0
|
|
369
359
|
returnItems.forEach((item) => {
|
|
370
360
|
let shownWorks = []
|
|
371
|
-
item?.works
|
|
361
|
+
item?.works?.forEach((work) => {
|
|
372
362
|
let workAdded = false
|
|
373
363
|
if (intersect(workFilters.value, work)?.length) {
|
|
374
364
|
shownWorks.push(work)
|
|
@@ -415,40 +405,38 @@
|
|
|
415
405
|
:on-state-change="onStateChange"
|
|
416
406
|
|
|
417
407
|
>
|
|
418
|
-
<div class="tabs__content open" :id="`${props.indexName}_tabs__content`">
|
|
408
|
+
<div :class="`tabs__content ${ filtersClosed ? 'closed' : 'open'}`" :id="`${props.indexName}_tabs__content`">
|
|
419
409
|
<!-- Header and Search Section -->
|
|
420
410
|
<div class="eventsSearch__topSection">
|
|
421
411
|
<!-- Search Filters Section -->
|
|
422
|
-
<section class="
|
|
423
|
-
<div class="
|
|
412
|
+
<section class="filters">
|
|
413
|
+
<div class="filters__row">
|
|
424
414
|
<!-- Search Box -->
|
|
425
|
-
<div class="
|
|
415
|
+
<div class="filters__filterGroup filters__search">
|
|
426
416
|
<ais-search-box
|
|
427
417
|
|
|
428
|
-
class="
|
|
418
|
+
class="searchBox"
|
|
429
419
|
>
|
|
430
420
|
<template v-slot="{ currentRefinement, isSearchStalled, refine }">
|
|
431
|
-
<
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
</button>
|
|
443
|
-
</form>
|
|
421
|
+
<label for="searchbox" class="label__hidden">{{ props.searchPlaceholder }}</label>
|
|
422
|
+
<input
|
|
423
|
+
class="ais-SearchBox-input"
|
|
424
|
+
id="searchbox"
|
|
425
|
+
type="search"
|
|
426
|
+
:value="currentRefinement"
|
|
427
|
+
@input="refine($event.currentTarget.value)"
|
|
428
|
+
:placeholder="props.searchPlaceholder"
|
|
429
|
+
>
|
|
430
|
+
<button type="submit" title="Submit the search query" class="ais-SearchBox-submit"><svg aria-hidden="true" width="10" height="10" viewBox="0 0 40 40" class="ais-SearchBox-submitIcon"><path d="M26.804 29.01c-2.832 2.34-6.465 3.746-10.426 3.746C7.333 32.756 0 25.424 0 16.378 0 7.333 7.333 0 16.378 0c9.046 0 16.378 7.333 16.378 16.378 0 3.96-1.406 7.594-3.746 10.426l10.534 10.534c.607.607.61 1.59-.004 2.202-.61.61-1.597.61-2.202.004L26.804 29.01zm-10.426.627c7.323 0 13.26-5.936 13.26-13.26 0-7.32-5.937-13.257-13.26-13.257C9.056 3.12 3.12 9.056 3.12 16.378c0 7.323 5.936 13.26 13.258 13.26z"></path></svg>
|
|
431
|
+
</button>
|
|
444
432
|
<span :hidden="!isSearchStalled">Loading...</span>
|
|
445
433
|
</template>
|
|
446
434
|
</ais-search-box>
|
|
447
435
|
</div>
|
|
448
|
-
<div class="
|
|
436
|
+
<div class="filters__filterGroup dateRange">
|
|
449
437
|
<ais-range-input :attribute="props.sortField">
|
|
450
438
|
<template v-slot="{ currentRefinement, range, refine }" >
|
|
451
|
-
<label for="start" class="
|
|
439
|
+
<label for="start" class="label__hidden">Start Date</label>
|
|
452
440
|
<vue-date-picker
|
|
453
441
|
:aria-labels="{ input: 'Start Date'}"
|
|
454
442
|
:model-value="toMinValue(currentRefinement, range)"
|
|
@@ -467,10 +455,9 @@
|
|
|
467
455
|
:tab-submit="true"
|
|
468
456
|
:text-input="true"
|
|
469
457
|
placeholder="Start"
|
|
470
|
-
class="eventsSearch__datePicker"
|
|
471
458
|
id="start"
|
|
472
459
|
/>
|
|
473
|
-
<label for="end" class="
|
|
460
|
+
<label for="end" class="label__hidden">End Date</label>
|
|
474
461
|
<vue-date-picker
|
|
475
462
|
:aria-labels="{ input: 'End Date'}"
|
|
476
463
|
:model-value="toMaxValue(currentRefinement, range)"
|
|
@@ -485,19 +472,18 @@
|
|
|
485
472
|
:multi-calendars="false"
|
|
486
473
|
:enable-time-picker="false"
|
|
487
474
|
placeholder="End"
|
|
488
|
-
class="eventsSearch__datePicker"
|
|
489
475
|
id="end"
|
|
490
476
|
/>
|
|
491
477
|
</template>
|
|
492
478
|
</ais-range-input>
|
|
493
479
|
</div>
|
|
494
|
-
<div class="
|
|
480
|
+
<div class="filters__button">
|
|
495
481
|
<button class="button info">
|
|
496
482
|
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg" class="mobileSearch">
|
|
497
483
|
<path d="M6.00037 11.2504C8.90007 11.2504 11.2507 8.89978 11.2507 6.00018C11.2507 3.10059 8.90007 0.75 6.00037 0.75C3.10067 0.75 0.75 3.10059 0.75 6.00018C0.75 8.89978 3.10067 11.2504 6.00037 11.2504Z" stroke="#14284E" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
498
484
|
<path d="M9.7124 9.71265L12.7502 12.7503" stroke="#14284E" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
499
485
|
</svg>
|
|
500
|
-
<span class="
|
|
486
|
+
<span class="filters__searchButton">Search</span>
|
|
501
487
|
</button>
|
|
502
488
|
</div>
|
|
503
489
|
</div>
|
|
@@ -505,12 +491,12 @@
|
|
|
505
491
|
</div>
|
|
506
492
|
|
|
507
493
|
<!-- View Toggle and Active Filters -->
|
|
508
|
-
<section class="
|
|
494
|
+
<section :class="`filters__filterRail ${filtersClosed ? 'closed' : ''}`" :id="`${props.indexName}_filterRail`">
|
|
509
495
|
|
|
510
|
-
<div class="
|
|
511
|
-
<div class="
|
|
512
|
-
<div class="
|
|
513
|
-
<svg width="24" height="24" viewBox="0 0 24 24" class="
|
|
496
|
+
<div class="filters__wrapper">
|
|
497
|
+
<div class="filters__header">
|
|
498
|
+
<div class="filters__toggle">
|
|
499
|
+
<svg width="24" height="24" viewBox="0 0 24 24" class="filters__icon">
|
|
514
500
|
<rect width="24" height="24" rx="4" fill="#01ABE6"/>
|
|
515
501
|
<path d="M6 7.25H18.8864" stroke="white" stroke-linecap="round"/>
|
|
516
502
|
<path d="M6 12.5681H18.8864" stroke="white" stroke-linecap="round"/>
|
|
@@ -543,12 +529,12 @@
|
|
|
543
529
|
</div>
|
|
544
530
|
</summary>
|
|
545
531
|
<div class="accordion__content" v-if="items.length || isFromSearch">
|
|
546
|
-
<div class="ais-SearchBox
|
|
547
|
-
<label class="
|
|
532
|
+
<div class="ais-SearchBox searchBox -filter">
|
|
533
|
+
<label class="label__hidden" :for="refinement.attribute">{{ refinement.placeholder }}</label>
|
|
548
534
|
<input :id="refinement.attribute" @input="searchForItems($event.currentTarget.value)" :placeholder="refinement.placeholder" class="ais-SearchBox-input -filter" v-if="!refinement.hideSearch">
|
|
549
535
|
</div>
|
|
550
|
-
<div class="
|
|
551
|
-
<label v-for="item in items" class="
|
|
536
|
+
<div class="checkBoxes">
|
|
537
|
+
<label v-for="item in items" class="checkBoxes__boxLabel" :for="slugify(refinement.title + ' ' + item.value)">
|
|
552
538
|
<div class="eventSearch__checkBox">
|
|
553
539
|
<input :class="`checkbox ${item.isRefined ? '-boxChecked' : ''}`" type="checkbox" :id="slugify(refinement.title + ' ' + item.value)" :value="item.value" :checked="item.isRefined" @click="refine(item.value)">
|
|
554
540
|
</div>
|
|
@@ -578,12 +564,12 @@
|
|
|
578
564
|
</div>
|
|
579
565
|
</summary>
|
|
580
566
|
<div class="accordion__content" v-if="items.length || isFromSearch">
|
|
581
|
-
<div class="ais-SearchBox
|
|
582
|
-
<label class="
|
|
567
|
+
<div class="ais-SearchBox searchBox -filter" v-if="!refinement.hideSearch">
|
|
568
|
+
<label class="label__hidden" :for="refinement.attribute">{{ refinement.placeholder }}</label>
|
|
583
569
|
<input :id="refinement.attribute" @input="searchForItems($event.currentTarget.value)" :placeholder="refinement.placeholder" class="ais-SearchBox-input -filter">
|
|
584
570
|
</div>
|
|
585
|
-
<div class="
|
|
586
|
-
<label v-for="item in items" class="
|
|
571
|
+
<div class="checkBoxes">
|
|
572
|
+
<label v-for="item in items" class="checkBoxes__boxLabel" :for="slugify(refinement.title + ' ' + item.value)">
|
|
587
573
|
<div class="eventSearch__checkBox">
|
|
588
574
|
<input :class="`checkbox ${item.isRefined ? '-boxChecked' : ''}`" type="checkbox" :id="slugify(refinement.title + ' ' + item.value)" :value="item.value" :checked="item.isRefined" @click="refine(item.value)">
|
|
589
575
|
</div>
|
|
@@ -632,16 +618,16 @@
|
|
|
632
618
|
</div>
|
|
633
619
|
</p-accordion>
|
|
634
620
|
</div>
|
|
635
|
-
<div class="
|
|
621
|
+
<div class="clearRefinements">
|
|
636
622
|
<ais-clear-refinements :excluded-attributes="[]">
|
|
637
623
|
<template v-slot="{ refine, createURL }">
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
624
|
+
<a
|
|
625
|
+
:href="createURL()"
|
|
626
|
+
@click.prevent="refine"
|
|
627
|
+
>
|
|
628
|
+
<button>Clear</button>
|
|
629
|
+
<button @click="toggleFiltersMobile()" class="filterApply">Apply</button>
|
|
630
|
+
</a>
|
|
645
631
|
</template>
|
|
646
632
|
</ais-clear-refinements>
|
|
647
633
|
|
|
@@ -649,12 +635,12 @@
|
|
|
649
635
|
</section>
|
|
650
636
|
|
|
651
637
|
<!-- Search Results Section -->
|
|
652
|
-
<section class="eventsSearch__results" :id="`${props.indexName}_eventsSearch__results`">
|
|
638
|
+
<section :class="`eventsSearch__results ${ filtersClosed ? 'closed' : ''}`" :id="`${props.indexName}_eventsSearch__results`">
|
|
653
639
|
|
|
654
640
|
<ais-hits :key="updateNow" class="eventsSearch__hits" :transform-items="filterItems">
|
|
655
641
|
<template v-slot="{ items }">
|
|
656
642
|
<div class="eventsSearch__resultsHeader -mobile">
|
|
657
|
-
<div class="
|
|
643
|
+
<div class="filters__toggle">
|
|
658
644
|
<button class="filterButton" @click="toggleFiltersMobile()">
|
|
659
645
|
<svg width="24" height="24" viewBox="0 0 24 24" >
|
|
660
646
|
<rect width="24" height="24" rx="4" fill="#01ABE6"/>
|
|
@@ -668,7 +654,7 @@
|
|
|
668
654
|
Filters
|
|
669
655
|
</button>
|
|
670
656
|
<div class="eventsSearch__resultsSort">Sort by:
|
|
671
|
-
<select v-model="sortView" @change="setView">
|
|
657
|
+
<select name="Sort Order" v-model="sortView" @change="setView">
|
|
672
658
|
<option value="Most Recent">Most Recent</option>
|
|
673
659
|
<option value="Most Relevant">Most Relevant</option>
|
|
674
660
|
<option value="Oldest First">Oldest First</option>
|
|
@@ -678,7 +664,7 @@
|
|
|
678
664
|
</div>
|
|
679
665
|
<div class="eventsSearch__resultsHeader">
|
|
680
666
|
<div class="eventsSearch__resultsTitle">
|
|
681
|
-
<svg width="24" height="24" viewBox="0 0 24 24" :id="`${props.indexName}_filterToggleOn`" class="
|
|
667
|
+
<svg width="24" height="24" viewBox="0 0 24 24" :id="`${props.indexName}_filterToggleOn`" :class="`filters__toggleOn ${filtersClosed ? 'closed' : ''}`" @click="toggleFilters()">
|
|
682
668
|
<rect width="24" height="24" rx="4" fill="#01ABE6"/>
|
|
683
669
|
<path d="M6 7.25H18.8864" stroke="white" stroke-linecap="round"/>
|
|
684
670
|
<path d="M6 12.5681H18.8864" stroke="white" stroke-linecap="round"/>
|
|
@@ -697,22 +683,23 @@
|
|
|
697
683
|
<h2 v-else>{{ props.resultsTitle }}</h2>
|
|
698
684
|
|
|
699
685
|
</div>
|
|
700
|
-
<div class="
|
|
701
|
-
<div class="
|
|
702
|
-
<
|
|
686
|
+
<div class="resultActions">
|
|
687
|
+
<div class="resultActions__sort">
|
|
688
|
+
<label class="resultActions__sortText">Sort by: </label>
|
|
689
|
+
<select name="sort_order" v-model="sortView" @change="setView">
|
|
703
690
|
<option value="Most Recent">Most Recent</option>
|
|
704
691
|
<option value="Most Relevant">Most Relevant</option>
|
|
705
692
|
<option value="Oldest First">Oldest First</option>
|
|
706
693
|
</select>
|
|
707
694
|
</div>
|
|
708
|
-
<div v-if="showNumHits" class="
|
|
709
|
-
<a onclick="navigator.clipboard.writeText(window.location.href);" class="
|
|
695
|
+
<div v-if="showNumHits" class="resultActions__buttons">
|
|
696
|
+
<a onclick="navigator.clipboard.writeText(window.location.href);" class="resultActions__icon">
|
|
710
697
|
<svg width="9" height="9" viewBox="0 0 9 9" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
711
698
|
<path d="M3.8335 5.00683C4.00129 5.24348 4.21538 5.4393 4.46122 5.581C4.70706 5.72269 4.97891 5.80696 5.25834 5.82807C5.53776 5.84918 5.81823 5.80665 6.0807 5.70336C6.34317 5.60006 6.58152 5.43843 6.77957 5.22941L7.95175 3.99281C8.30762 3.6041 8.50454 3.08349 8.50009 2.5431C8.49564 2.00271 8.29018 1.48578 7.92796 1.10365C7.56574 0.721528 7.07574 0.504774 6.5635 0.500078C6.05127 0.495382 5.55778 0.70312 5.18932 1.07855L4.51727 1.78341" stroke="#01ABE6" stroke-linecap="round" stroke-linejoin="round"/>
|
|
712
699
|
<path d="M5.83333 3.99326C5.64156 3.7566 5.3969 3.56078 5.11594 3.41908C4.83497 3.27739 4.52428 3.19313 4.20494 3.17201C3.8856 3.1509 3.56507 3.19343 3.2651 3.29673C2.96513 3.40002 2.69273 3.56165 2.46639 3.77067L1.12675 5.00727C0.720043 5.39598 0.494997 5.9166 0.500084 6.45698C0.505171 6.99737 0.739985 7.5143 1.15395 7.89643C1.56791 8.27855 2.12791 8.49531 2.71332 8.5C3.29874 8.5047 3.86273 8.29696 4.28382 7.92153L5.04741 7.21667" stroke="#01ABE6" stroke-linecap="round" stroke-linejoin="round"/>
|
|
713
700
|
</svg>
|
|
714
701
|
</a>
|
|
715
|
-
<a :href="`/actions/csvexport/csv-export${ routing.router.getLocation().search }`" class="
|
|
702
|
+
<a :href="`/actions/csvexport/csv-export${ routing.router.getLocation().search }`" class="resultActions__icon">
|
|
716
703
|
<svg width="8" height="12" viewBox="0 0 8 12" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
717
704
|
<path d="M7.47805 10.9099L0.5 10.9099" stroke="#01ABE6" stroke-linecap="round" stroke-linejoin="round"/>
|
|
718
705
|
<path d="M0.75293 4.94067L3.92477 8.11252L7.09662 4.94067" stroke="#01ABE6" stroke-linecap="round" stroke-linejoin="round"/>
|
|
@@ -724,24 +711,24 @@
|
|
|
724
711
|
</div>
|
|
725
712
|
<ais-current-refinements :excluded-attributes="[]">
|
|
726
713
|
<template v-slot="{ items, createURL }">
|
|
727
|
-
<div class="
|
|
728
|
-
<div class="
|
|
714
|
+
<div class="activeFilters">
|
|
715
|
+
<div class="activeFilters__title" v-if="items.length">Applied Filters</div>
|
|
729
716
|
<ais-clear-refinements v-if="items.length" :excluded-attributes="[]">
|
|
730
717
|
<template v-slot="{ canRefine, refine, createURL }">
|
|
731
718
|
<a
|
|
732
719
|
:href="createURL()"
|
|
733
720
|
@click.prevent="refine"
|
|
734
721
|
v-if="canRefine"
|
|
735
|
-
class="
|
|
722
|
+
class="activeFilters__clearFilters"
|
|
736
723
|
>
|
|
737
724
|
Clear
|
|
738
725
|
</a>
|
|
739
726
|
<span v-else></span>
|
|
740
727
|
</template>
|
|
741
728
|
</ais-clear-refinements>
|
|
742
|
-
<ul class="
|
|
743
|
-
<li v-for="item in items" :key="item.attribute"
|
|
744
|
-
<ul class="
|
|
729
|
+
<ul class="activeFilters__filtersList">
|
|
730
|
+
<li v-for="item in items" :key="item.attribute">
|
|
731
|
+
<ul class="activeFilters__items">
|
|
745
732
|
<li
|
|
746
733
|
v-for="refinement in item.refinements"
|
|
747
734
|
:key="[
|
|
@@ -750,13 +737,13 @@
|
|
|
750
737
|
refinement.value,
|
|
751
738
|
refinement.operator
|
|
752
739
|
].join(':')"
|
|
753
|
-
class="
|
|
740
|
+
class="activeFilters__item"
|
|
754
741
|
>
|
|
755
742
|
<a
|
|
756
743
|
:href="createURL(refinement)"
|
|
757
744
|
@click.prevent="item.refine(refinement)"
|
|
758
745
|
v-html="formatRefinement(refinement)"
|
|
759
|
-
class="
|
|
746
|
+
class="activeFilters__remove"
|
|
760
747
|
></a>
|
|
761
748
|
</li>
|
|
762
749
|
</ul>
|
|
@@ -776,7 +763,7 @@
|
|
|
776
763
|
|
|
777
764
|
|
|
778
765
|
<!-- Pagination -->
|
|
779
|
-
<nav class="
|
|
766
|
+
<nav class="resultsPagination">
|
|
780
767
|
<ais-stats>
|
|
781
768
|
<template v-slot="{ hitsPerPage, nbHits, page }">
|
|
782
769
|
{{ nbHits == 0 ? nbHits : page * hitsPerPage + 1 }} - {{ (((page + 1) * hitsPerPage)) < nbHits ? (((page + 1) * hitsPerPage)) : nbHits }} of {{ nbHits }} Results
|
|
@@ -794,13 +781,13 @@
|
|
|
794
781
|
createURL
|
|
795
782
|
}"
|
|
796
783
|
>
|
|
797
|
-
<ul class="
|
|
798
|
-
<li v-if="!isFirstPage && nbPages >
|
|
784
|
+
<ul class="resultsPagination__paginationComponent" v-if="pages.length > 1">
|
|
785
|
+
<li v-if="!isFirstPage && nbPages > 5" class="arrow">
|
|
799
786
|
<a :href="createURL(0)" @click.prevent="refine(0)">
|
|
800
787
|
‹‹
|
|
801
788
|
</a>
|
|
802
789
|
</li>
|
|
803
|
-
<li v-if="!isFirstPage && nbPages >
|
|
790
|
+
<li v-if="!isFirstPage && nbPages > 5" class="arrow">
|
|
804
791
|
<a
|
|
805
792
|
:href="createURL(currentRefinement - 1)"
|
|
806
793
|
@click.prevent="refine(currentRefinement - 1)"
|
|
@@ -837,8 +824,13 @@
|
|
|
837
824
|
{{ nbPages - (5 - page) }}
|
|
838
825
|
</a>
|
|
839
826
|
</li>
|
|
827
|
+
<li v-for="page in nbPages - 1" v-if="nbPages <= 5">
|
|
828
|
+
<a :href="createURL(page)" :style="{ fontWeight: page === currentRefinement ? 'bold' : '' }">
|
|
829
|
+
{{ page + 1 }}
|
|
830
|
+
</a>
|
|
831
|
+
</li>
|
|
840
832
|
</template>
|
|
841
|
-
<li v-if="!isLastPage && nbPages >
|
|
833
|
+
<li v-if="!isLastPage && nbPages > 5" class="arrow">
|
|
842
834
|
<a
|
|
843
835
|
:href="createURL(currentRefinement + 1)"
|
|
844
836
|
@click.prevent="refine(currentRefinement + 1)"
|
|
@@ -846,7 +838,7 @@
|
|
|
846
838
|
›
|
|
847
839
|
</a>
|
|
848
840
|
</li>
|
|
849
|
-
<li v-if="!isLastPage && nbPages >
|
|
841
|
+
<li v-if="!isLastPage && nbPages > 5" class="arrow">
|
|
850
842
|
<a :href="createURL(nbPages)" @click.prevent="refine(nbPages)">
|
|
851
843
|
››
|
|
852
844
|
</a>
|
package/src/main.js
CHANGED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
.audioLinks {
|
|
2
|
+
|
|
3
|
+
&__box {
|
|
4
|
+
display:none;
|
|
5
|
+
&.-open {
|
|
6
|
+
position:absolute;
|
|
7
|
+
right: 5rem;
|
|
8
|
+
margin-top: 2rem;
|
|
9
|
+
z-index: 100;
|
|
10
|
+
display:block;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
&__label {
|
|
15
|
+
white-space:nowrap;
|
|
16
|
+
font-weight: 100;
|
|
17
|
+
font-size: 1rem;
|
|
18
|
+
padding: .75rem;
|
|
19
|
+
&.-first {
|
|
20
|
+
border-bottom: thin solid var(--color-gray-100);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
&__link {
|
|
25
|
+
justify-content: end;
|
|
26
|
+
white-space:nowrap;
|
|
27
|
+
width: 100%;
|
|
28
|
+
font-size: 1rem;
|
|
29
|
+
padding: .75rem;
|
|
30
|
+
color: var(--color-turquoise);
|
|
31
|
+
|
|
32
|
+
&.-first {
|
|
33
|
+
border-bottom: thin solid var(--color-gray-100);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
&__links {
|
|
38
|
+
background-color: white;
|
|
39
|
+
display: grid;
|
|
40
|
+
grid-template-columns: auto auto;
|
|
41
|
+
border: 1px solid var(--color-gray-100);
|
|
42
|
+
border-radius: 5px;
|
|
43
|
+
box-shadow: 0 0 10px var(--color-gray-100);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
@use "@imarc/pronto/resources/styles/imported" as *;
|
|
2
|
+
|
|
3
|
+
.breadCrumb {
|
|
4
|
+
background-color: var(--color-light-gold);
|
|
5
|
+
padding: 0.5rem 1.5rem;
|
|
6
|
+
@include at(md) {
|
|
7
|
+
padding: 0.5rem 2rem 0.5rem 4rem;
|
|
8
|
+
}
|
|
9
|
+
@include at(lg) {
|
|
10
|
+
padding: 0.5rem 4rem 0.5rem 8rem;
|
|
11
|
+
}
|
|
12
|
+
}
|