@asd20/ui-next 2.3.6 → 2.3.8
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/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [2.3.8](https://github.com/academydistrict20/asd20-ui-next/compare/ui-next-v2.3.7...ui-next-v2.3.8) (2026-04-30)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* fix search results not persisting ([041aba0](https://github.com/academydistrict20/asd20-ui-next/commit/041aba02a5dc761ee3c5ca47ab18a364d369c0b5))
|
|
9
|
+
|
|
10
|
+
## [2.3.7](https://github.com/academydistrict20/asd20-ui-next/compare/ui-next-v2.3.6...ui-next-v2.3.7) (2026-04-29)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* fix parallax issue on secondary header for tablet sizes ([3066da8](https://github.com/academydistrict20/asd20-ui-next/commit/3066da87418b5e958bfe37f9110cffd8f314766c))
|
|
16
|
+
|
|
3
17
|
## [2.3.6](https://github.com/academydistrict20/asd20-ui-next/compare/ui-next-v2.3.5...ui-next-v2.3.6) (2026-04-29)
|
|
4
18
|
|
|
5
19
|
|
package/package.json
CHANGED
|
@@ -143,6 +143,7 @@ export default {
|
|
|
143
143
|
},
|
|
144
144
|
data() {
|
|
145
145
|
return {
|
|
146
|
+
isTouchCapableDevice: false,
|
|
146
147
|
parallaxEnabled: false,
|
|
147
148
|
intersectionObserver: null,
|
|
148
149
|
parallaxRaf: null,
|
|
@@ -151,9 +152,16 @@ export default {
|
|
|
151
152
|
}
|
|
152
153
|
},
|
|
153
154
|
computed: {
|
|
155
|
+
shouldUseParallax() {
|
|
156
|
+
return !this.isTouchCapableDevice
|
|
157
|
+
},
|
|
154
158
|
headerClasses() {
|
|
155
159
|
return {
|
|
156
160
|
'asd20-secondary-header': true,
|
|
161
|
+
'asd20-secondary-header--desktop-background':
|
|
162
|
+
this.hasSecondaryHeaderImage,
|
|
163
|
+
'asd20-secondary-header--parallax-enabled-background':
|
|
164
|
+
this.hasSecondaryHeaderImage && this.shouldUseParallax,
|
|
157
165
|
'asd20-secondary-header--hide-desktop-image':
|
|
158
166
|
!this.shouldShowDesktopInlineImage,
|
|
159
167
|
}
|
|
@@ -206,13 +214,20 @@ export default {
|
|
|
206
214
|
},
|
|
207
215
|
},
|
|
208
216
|
mounted() {
|
|
217
|
+
if (typeof window !== 'undefined') {
|
|
218
|
+
this.isTouchCapableDevice = Boolean(
|
|
219
|
+
window.matchMedia?.('(pointer: coarse)').matches ||
|
|
220
|
+
window.navigator?.maxTouchPoints > 0
|
|
221
|
+
)
|
|
222
|
+
}
|
|
223
|
+
|
|
209
224
|
// Respect reduced motion
|
|
210
225
|
const prefersReduced =
|
|
211
226
|
typeof window !== 'undefined' &&
|
|
212
227
|
window.matchMedia &&
|
|
213
228
|
window.matchMedia('(prefers-reduced-motion: reduce)').matches
|
|
214
229
|
|
|
215
|
-
if (prefersReduced) return
|
|
230
|
+
if (prefersReduced || !this.shouldUseParallax) return
|
|
216
231
|
|
|
217
232
|
this.handleScroll = () => this.scheduleParallaxUpdate()
|
|
218
233
|
this.handleResize = () => this.scheduleParallaxUpdate()
|
|
@@ -557,14 +572,17 @@ export default {
|
|
|
557
572
|
-webkit-mask: url(#secondary-accent-mask-desktop);
|
|
558
573
|
}
|
|
559
574
|
|
|
560
|
-
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
@media (min-width: 1024px) {
|
|
578
|
+
.asd20-secondary-header--desktop-background {
|
|
561
579
|
padding: space(3) space(3) space(2) space(3);
|
|
562
580
|
background-color: var(--website-homepage-header__secondary-background-color);
|
|
563
581
|
background-image: var(--secondary-header-image);
|
|
564
582
|
background-position: center;
|
|
565
583
|
background-repeat: no-repeat;
|
|
566
584
|
background-size: cover;
|
|
567
|
-
background-attachment:
|
|
585
|
+
background-attachment: scroll;
|
|
568
586
|
padding-top: 70px;
|
|
569
587
|
|
|
570
588
|
mask: url(#secondary-header-mask-desktop);
|
|
@@ -601,47 +619,6 @@ export default {
|
|
|
601
619
|
margin: space(0.5) space(0.5) 0 0 !important;
|
|
602
620
|
padding: space(0.5) space(1.5);
|
|
603
621
|
}
|
|
604
|
-
.secondary-parallax__field {
|
|
605
|
-
transform: translate3d(0px, var(--secondary-parallax-y2, 0px), 0)
|
|
606
|
-
rotate(-5deg);
|
|
607
|
-
/* background: radial-gradient(*/
|
|
608
|
-
/* 280% 155% at 20% 110%,*/
|
|
609
|
-
/* rgba(255, 255, 255, 0) 0%,*/
|
|
610
|
-
/* rgba(255, 255, 255, 0) 62%,*/
|
|
611
|
-
/* rgba(188, 220, 250, 0.95) 70%,*/
|
|
612
|
-
/* rgba(255, 255, 255, 0) 72%*/
|
|
613
|
-
/* );*/
|
|
614
|
-
filter: none;
|
|
615
|
-
opacity: 0.9;
|
|
616
|
-
mask-image: linear-gradient(
|
|
617
|
-
90deg,
|
|
618
|
-
rgba(0, 0, 0, 0.85) 0%,
|
|
619
|
-
rgba(0, 0, 0, 1) 85%
|
|
620
|
-
);
|
|
621
|
-
-webkit-mask-image: linear-gradient(90deg, rgba(0,0,0,0.85) 0%, rgba(0,0,0,1) 85%);
|
|
622
|
-
}
|
|
623
|
-
|
|
624
|
-
/* Layer 3: highlight ribbons (brighter curves) */
|
|
625
|
-
.secondary-parallax__ribbons {
|
|
626
|
-
transform: translate3d(0, var(--secondary-parallax-y3, 0px), 0)
|
|
627
|
-
rotate(-3deg);
|
|
628
|
-
|
|
629
|
-
background: radial-gradient(
|
|
630
|
-
180% 160% at 40% 110%,
|
|
631
|
-
rgba(255, 255, 255, 0) 0%,
|
|
632
|
-
rgba(255, 255, 255, 0) 60%,
|
|
633
|
-
rgba(255, 255, 255, 0.9) 64%,
|
|
634
|
-
rgba(255, 255, 255, 0) 70%
|
|
635
|
-
);
|
|
636
|
-
opacity: 0.9;
|
|
637
|
-
filter: none;
|
|
638
|
-
mask-image: linear-gradient(
|
|
639
|
-
90deg,
|
|
640
|
-
rgba(0, 0, 0, 0.3) 0%,
|
|
641
|
-
rgba(0, 0, 0, 1) 70%
|
|
642
|
-
);
|
|
643
|
-
-webkit-mask-image: linear-gradient(90deg, rgba(0,0,0,0.3) 0%, rgba(0,0,0,1) 70%);
|
|
644
|
-
}
|
|
645
622
|
|
|
646
623
|
& :deep(.message-image) {
|
|
647
624
|
display: flex;
|
|
@@ -657,7 +634,58 @@ export default {
|
|
|
657
634
|
}
|
|
658
635
|
}
|
|
659
636
|
|
|
660
|
-
.asd20-secondary-header--
|
|
637
|
+
.asd20-secondary-header--desktop-background .secondary-parallax {
|
|
638
|
+
display: block;
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
.asd20-secondary-header--desktop-background .secondary-parallax__field,
|
|
642
|
+
.asd20-secondary-header--desktop-background .secondary-parallax__ribbons {
|
|
643
|
+
display: none;
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
.asd20-secondary-header--parallax-enabled-background {
|
|
647
|
+
background-attachment: fixed;
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
.asd20-secondary-header--parallax-enabled-background .secondary-parallax__field,
|
|
651
|
+
.asd20-secondary-header--parallax-enabled-background .secondary-parallax__ribbons {
|
|
652
|
+
display: block;
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
.asd20-secondary-header--parallax-enabled-background .secondary-parallax__field {
|
|
656
|
+
transform: translate3d(0px, var(--secondary-parallax-y2, 0px), 0)
|
|
657
|
+
rotate(-5deg);
|
|
658
|
+
filter: none;
|
|
659
|
+
opacity: 0.9;
|
|
660
|
+
mask-image: linear-gradient(
|
|
661
|
+
90deg,
|
|
662
|
+
rgba(0, 0, 0, 0.85) 0%,
|
|
663
|
+
rgba(0, 0, 0, 1) 85%
|
|
664
|
+
);
|
|
665
|
+
-webkit-mask-image: linear-gradient(90deg, rgba(0,0,0,0.85) 0%, rgba(0,0,0,1) 85%);
|
|
666
|
+
}
|
|
667
|
+
|
|
668
|
+
.asd20-secondary-header--parallax-enabled-background .secondary-parallax__ribbons {
|
|
669
|
+
transform: translate3d(0, var(--secondary-parallax-y3, 0px), 0)
|
|
670
|
+
rotate(-3deg);
|
|
671
|
+
background: radial-gradient(
|
|
672
|
+
180% 160% at 40% 110%,
|
|
673
|
+
rgba(255, 255, 255, 0) 0%,
|
|
674
|
+
rgba(255, 255, 255, 0) 60%,
|
|
675
|
+
rgba(255, 255, 255, 0.9) 64%,
|
|
676
|
+
rgba(255, 255, 255, 0) 70%
|
|
677
|
+
);
|
|
678
|
+
opacity: 0.9;
|
|
679
|
+
filter: none;
|
|
680
|
+
mask-image: linear-gradient(
|
|
681
|
+
90deg,
|
|
682
|
+
rgba(0, 0, 0, 0.3) 0%,
|
|
683
|
+
rgba(0, 0, 0, 1) 70%
|
|
684
|
+
);
|
|
685
|
+
-webkit-mask-image: linear-gradient(90deg, rgba(0,0,0,0.3) 0%, rgba(0,0,0,1) 70%);
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
.asd20-secondary-header--desktop-background.asd20-secondary-header--hide-desktop-image {
|
|
661
689
|
& :deep(.asd20-messaging--fullscreen > .message-image) {
|
|
662
690
|
display: none;
|
|
663
691
|
}
|
|
@@ -1791,7 +1791,34 @@ export default {
|
|
|
1791
1791
|
|
|
1792
1792
|
appendSearchContextToUrl(rawUrl) {
|
|
1793
1793
|
if (!rawUrl || typeof rawUrl !== 'string') return rawUrl
|
|
1794
|
-
|
|
1794
|
+
const state = this.getCurrentSearchStateForRoute()
|
|
1795
|
+
if (!state) return rawUrl
|
|
1796
|
+
if (typeof window === 'undefined' || typeof URL === 'undefined') {
|
|
1797
|
+
return rawUrl
|
|
1798
|
+
}
|
|
1799
|
+
|
|
1800
|
+
const trimmedUrl = rawUrl.trim()
|
|
1801
|
+
if (!trimmedUrl) return rawUrl
|
|
1802
|
+
if (/^(#|mailto:|tel:|javascript:)/i.test(trimmedUrl)) return rawUrl
|
|
1803
|
+
|
|
1804
|
+
try {
|
|
1805
|
+
const resolvedUrl = new URL(trimmedUrl, window.location.href)
|
|
1806
|
+
if (resolvedUrl.origin !== window.location.origin) return rawUrl
|
|
1807
|
+
|
|
1808
|
+
const stateQueryValues = this.buildRouteSearchQueryValues(state)
|
|
1809
|
+
Object.entries(stateQueryValues).forEach(([key, value]) => {
|
|
1810
|
+
if (value === undefined || value === null || value === '') {
|
|
1811
|
+
resolvedUrl.searchParams.delete(key)
|
|
1812
|
+
return
|
|
1813
|
+
}
|
|
1814
|
+
|
|
1815
|
+
resolvedUrl.searchParams.set(key, value)
|
|
1816
|
+
})
|
|
1817
|
+
|
|
1818
|
+
return `${resolvedUrl.pathname}${resolvedUrl.search}${resolvedUrl.hash}`
|
|
1819
|
+
} catch (error) {
|
|
1820
|
+
return rawUrl
|
|
1821
|
+
}
|
|
1795
1822
|
},
|
|
1796
1823
|
|
|
1797
1824
|
async restoreSearchStateFromRoute() {
|