@itcenteratunihelsinki/huds-lib 0.8.61 → 0.8.63

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.
Files changed (44) hide show
  1. package/components/hy-hero-carousel.js +328 -1
  2. package/components/hy-hero-carousel.js.map +1 -1
  3. package/components/hy-menu-main-group2.js +20 -27
  4. package/components/hy-menu-main-group2.js.map +1 -1
  5. package/components/menu-language.js +4 -3
  6. package/components/menu-language.js.map +1 -1
  7. package/components/site-search.js +14 -78
  8. package/components/site-search.js.map +1 -1
  9. package/dist/cjs/huds-lib.cjs.js +1 -1
  10. package/dist/cjs/hy-breadcrumbs_15.cjs.entry.js +17 -80
  11. package/dist/cjs/hy-breadcrumbs_15.cjs.entry.js.map +1 -1
  12. package/dist/cjs/hy-hero-carousel.cjs.entry.js +328 -1
  13. package/dist/cjs/hy-hero-carousel.cjs.entry.js.map +1 -1
  14. package/dist/cjs/hy-menu-main-group.cjs.entry.js +19 -26
  15. package/dist/cjs/hy-menu-main-group.cjs.entry.js.map +1 -1
  16. package/dist/cjs/loader.cjs.js +1 -1
  17. package/dist/collection/components/hy-hero-carousel/hy-hero-carousel.js +5 -2
  18. package/dist/collection/components/hy-hero-carousel/hy-hero-carousel.js.map +1 -1
  19. package/dist/collection/components/hy-navigation/hy-menu-main-group/hy-menu-main-group.js +24 -31
  20. package/dist/collection/components/hy-navigation/hy-menu-main-group/hy-menu-main-group.js.map +1 -1
  21. package/dist/collection/components/hy-navigation/menu-language/menu-language.js +4 -3
  22. package/dist/collection/components/hy-navigation/menu-language/menu-language.js.map +1 -1
  23. package/dist/collection/components/hy-site-header/site-search/site-search.css +13 -2
  24. package/dist/collection/components/hy-site-header/site-search/site-search.js +36 -82
  25. package/dist/collection/components/hy-site-header/site-search/site-search.js.map +1 -1
  26. package/dist/esm/huds-lib.js +1 -1
  27. package/dist/esm/hy-breadcrumbs_15.entry.js +17 -80
  28. package/dist/esm/hy-breadcrumbs_15.entry.js.map +1 -1
  29. package/dist/esm/hy-hero-carousel.entry.js +328 -1
  30. package/dist/esm/hy-hero-carousel.entry.js.map +1 -1
  31. package/dist/esm/hy-menu-main-group.entry.js +19 -26
  32. package/dist/esm/hy-menu-main-group.entry.js.map +1 -1
  33. package/dist/esm/loader.js +1 -1
  34. package/dist/huds-lib/huds-lib.esm.js +1 -1
  35. package/dist/huds-lib/huds-lib.esm.js.map +1 -1
  36. package/dist/huds-lib/hy-breadcrumbs_15.entry.js +1 -1
  37. package/dist/huds-lib/hy-breadcrumbs_15.entry.js.map +1 -1
  38. package/dist/huds-lib/hy-hero-carousel.entry.js +1 -1
  39. package/dist/huds-lib/hy-hero-carousel.entry.js.map +1 -1
  40. package/dist/huds-lib/hy-menu-main-group.entry.js +1 -1
  41. package/dist/huds-lib/hy-menu-main-group.entry.js.map +1 -1
  42. package/dist/types/components/hy-navigation/hy-menu-main-group/hy-menu-main-group.d.ts +2 -5
  43. package/dist/types/components/hy-site-header/site-search/site-search.d.ts +1 -6
  44. package/package.json +2 -2
@@ -3863,6 +3863,330 @@ Object.keys(prototypes).forEach(prototypeGroup => {
3863
3863
  });
3864
3864
  Swiper.use([Resize, Observer]);
3865
3865
 
3866
+ function Virtual({
3867
+ swiper,
3868
+ extendParams,
3869
+ on,
3870
+ emit
3871
+ }) {
3872
+ extendParams({
3873
+ virtual: {
3874
+ enabled: false,
3875
+ slides: [],
3876
+ cache: true,
3877
+ renderSlide: null,
3878
+ renderExternal: null,
3879
+ renderExternalUpdate: true,
3880
+ addSlidesBefore: 0,
3881
+ addSlidesAfter: 0
3882
+ }
3883
+ });
3884
+ let cssModeTimeout;
3885
+ const document = getDocument();
3886
+ swiper.virtual = {
3887
+ cache: {},
3888
+ from: undefined,
3889
+ to: undefined,
3890
+ slides: [],
3891
+ offset: 0,
3892
+ slidesGrid: []
3893
+ };
3894
+ const tempDOM = document.createElement('div');
3895
+ function renderSlide(slide, index) {
3896
+ const params = swiper.params.virtual;
3897
+ if (params.cache && swiper.virtual.cache[index]) {
3898
+ return swiper.virtual.cache[index];
3899
+ }
3900
+ // eslint-disable-next-line
3901
+ let slideEl;
3902
+ if (params.renderSlide) {
3903
+ slideEl = params.renderSlide.call(swiper, slide, index);
3904
+ if (typeof slideEl === 'string') {
3905
+ tempDOM.innerHTML = slideEl;
3906
+ slideEl = tempDOM.children[0];
3907
+ }
3908
+ } else if (swiper.isElement) {
3909
+ slideEl = createElement('swiper-slide');
3910
+ } else {
3911
+ slideEl = createElement('div', swiper.params.slideClass);
3912
+ }
3913
+ slideEl.setAttribute('data-swiper-slide-index', index);
3914
+ if (!params.renderSlide) {
3915
+ slideEl.innerHTML = slide;
3916
+ }
3917
+ if (params.cache) swiper.virtual.cache[index] = slideEl;
3918
+ return slideEl;
3919
+ }
3920
+ function update(force) {
3921
+ const {
3922
+ slidesPerView,
3923
+ slidesPerGroup,
3924
+ centeredSlides,
3925
+ loop: isLoop
3926
+ } = swiper.params;
3927
+ const {
3928
+ addSlidesBefore,
3929
+ addSlidesAfter
3930
+ } = swiper.params.virtual;
3931
+ const {
3932
+ from: previousFrom,
3933
+ to: previousTo,
3934
+ slides,
3935
+ slidesGrid: previousSlidesGrid,
3936
+ offset: previousOffset
3937
+ } = swiper.virtual;
3938
+ if (!swiper.params.cssMode) {
3939
+ swiper.updateActiveIndex();
3940
+ }
3941
+ const activeIndex = swiper.activeIndex || 0;
3942
+ let offsetProp;
3943
+ if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';
3944
+ let slidesAfter;
3945
+ let slidesBefore;
3946
+ if (centeredSlides) {
3947
+ slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
3948
+ slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
3949
+ } else {
3950
+ slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;
3951
+ slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;
3952
+ }
3953
+ let from = activeIndex - slidesBefore;
3954
+ let to = activeIndex + slidesAfter;
3955
+ if (!isLoop) {
3956
+ from = Math.max(from, 0);
3957
+ to = Math.min(to, slides.length - 1);
3958
+ }
3959
+ let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);
3960
+ if (isLoop && activeIndex >= slidesBefore) {
3961
+ from -= slidesBefore;
3962
+ if (!centeredSlides) offset += swiper.slidesGrid[0];
3963
+ } else if (isLoop && activeIndex < slidesBefore) {
3964
+ from = -slidesBefore;
3965
+ if (centeredSlides) offset += swiper.slidesGrid[0];
3966
+ }
3967
+ Object.assign(swiper.virtual, {
3968
+ from,
3969
+ to,
3970
+ offset,
3971
+ slidesGrid: swiper.slidesGrid,
3972
+ slidesBefore,
3973
+ slidesAfter
3974
+ });
3975
+ function onRendered() {
3976
+ swiper.updateSlides();
3977
+ swiper.updateProgress();
3978
+ swiper.updateSlidesClasses();
3979
+ emit('virtualUpdate');
3980
+ }
3981
+ if (previousFrom === from && previousTo === to && !force) {
3982
+ if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {
3983
+ swiper.slides.forEach(slideEl => {
3984
+ slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;
3985
+ });
3986
+ }
3987
+ swiper.updateProgress();
3988
+ emit('virtualUpdate');
3989
+ return;
3990
+ }
3991
+ if (swiper.params.virtual.renderExternal) {
3992
+ swiper.params.virtual.renderExternal.call(swiper, {
3993
+ offset,
3994
+ from,
3995
+ to,
3996
+ slides: function getSlides() {
3997
+ const slidesToRender = [];
3998
+ for (let i = from; i <= to; i += 1) {
3999
+ slidesToRender.push(slides[i]);
4000
+ }
4001
+ return slidesToRender;
4002
+ }()
4003
+ });
4004
+ if (swiper.params.virtual.renderExternalUpdate) {
4005
+ onRendered();
4006
+ } else {
4007
+ emit('virtualUpdate');
4008
+ }
4009
+ return;
4010
+ }
4011
+ const prependIndexes = [];
4012
+ const appendIndexes = [];
4013
+ const getSlideIndex = index => {
4014
+ let slideIndex = index;
4015
+ if (index < 0) {
4016
+ slideIndex = slides.length + index;
4017
+ } else if (slideIndex >= slides.length) {
4018
+ // eslint-disable-next-line
4019
+ slideIndex = slideIndex - slides.length;
4020
+ }
4021
+ return slideIndex;
4022
+ };
4023
+ if (force) {
4024
+ swiper.slidesEl.querySelectorAll(`.${swiper.params.slideClass}, swiper-slide`).forEach(slideEl => {
4025
+ slideEl.remove();
4026
+ });
4027
+ } else {
4028
+ for (let i = previousFrom; i <= previousTo; i += 1) {
4029
+ if (i < from || i > to) {
4030
+ const slideIndex = getSlideIndex(i);
4031
+ swiper.slidesEl.querySelectorAll(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`).forEach(slideEl => {
4032
+ slideEl.remove();
4033
+ });
4034
+ }
4035
+ }
4036
+ }
4037
+ const loopFrom = isLoop ? -slides.length : 0;
4038
+ const loopTo = isLoop ? slides.length * 2 : slides.length;
4039
+ for (let i = loopFrom; i < loopTo; i += 1) {
4040
+ if (i >= from && i <= to) {
4041
+ const slideIndex = getSlideIndex(i);
4042
+ if (typeof previousTo === 'undefined' || force) {
4043
+ appendIndexes.push(slideIndex);
4044
+ } else {
4045
+ if (i > previousTo) appendIndexes.push(slideIndex);
4046
+ if (i < previousFrom) prependIndexes.push(slideIndex);
4047
+ }
4048
+ }
4049
+ }
4050
+ appendIndexes.forEach(index => {
4051
+ swiper.slidesEl.append(renderSlide(slides[index], index));
4052
+ });
4053
+ if (isLoop) {
4054
+ for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {
4055
+ const index = prependIndexes[i];
4056
+ swiper.slidesEl.prepend(renderSlide(slides[index], index));
4057
+ }
4058
+ } else {
4059
+ prependIndexes.sort((a, b) => b - a);
4060
+ prependIndexes.forEach(index => {
4061
+ swiper.slidesEl.prepend(renderSlide(slides[index], index));
4062
+ });
4063
+ }
4064
+ elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => {
4065
+ slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;
4066
+ });
4067
+ onRendered();
4068
+ }
4069
+ function appendSlide(slides) {
4070
+ if (typeof slides === 'object' && 'length' in slides) {
4071
+ for (let i = 0; i < slides.length; i += 1) {
4072
+ if (slides[i]) swiper.virtual.slides.push(slides[i]);
4073
+ }
4074
+ } else {
4075
+ swiper.virtual.slides.push(slides);
4076
+ }
4077
+ update(true);
4078
+ }
4079
+ function prependSlide(slides) {
4080
+ const activeIndex = swiper.activeIndex;
4081
+ let newActiveIndex = activeIndex + 1;
4082
+ let numberOfNewSlides = 1;
4083
+ if (Array.isArray(slides)) {
4084
+ for (let i = 0; i < slides.length; i += 1) {
4085
+ if (slides[i]) swiper.virtual.slides.unshift(slides[i]);
4086
+ }
4087
+ newActiveIndex = activeIndex + slides.length;
4088
+ numberOfNewSlides = slides.length;
4089
+ } else {
4090
+ swiper.virtual.slides.unshift(slides);
4091
+ }
4092
+ if (swiper.params.virtual.cache) {
4093
+ const cache = swiper.virtual.cache;
4094
+ const newCache = {};
4095
+ Object.keys(cache).forEach(cachedIndex => {
4096
+ const cachedEl = cache[cachedIndex];
4097
+ const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');
4098
+ if (cachedElIndex) {
4099
+ cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);
4100
+ }
4101
+ newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;
4102
+ });
4103
+ swiper.virtual.cache = newCache;
4104
+ }
4105
+ update(true);
4106
+ swiper.slideTo(newActiveIndex, 0);
4107
+ }
4108
+ function removeSlide(slidesIndexes) {
4109
+ if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;
4110
+ let activeIndex = swiper.activeIndex;
4111
+ if (Array.isArray(slidesIndexes)) {
4112
+ for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {
4113
+ swiper.virtual.slides.splice(slidesIndexes[i], 1);
4114
+ if (swiper.params.virtual.cache) {
4115
+ delete swiper.virtual.cache[slidesIndexes[i]];
4116
+ }
4117
+ if (slidesIndexes[i] < activeIndex) activeIndex -= 1;
4118
+ activeIndex = Math.max(activeIndex, 0);
4119
+ }
4120
+ } else {
4121
+ swiper.virtual.slides.splice(slidesIndexes, 1);
4122
+ if (swiper.params.virtual.cache) {
4123
+ delete swiper.virtual.cache[slidesIndexes];
4124
+ }
4125
+ if (slidesIndexes < activeIndex) activeIndex -= 1;
4126
+ activeIndex = Math.max(activeIndex, 0);
4127
+ }
4128
+ update(true);
4129
+ swiper.slideTo(activeIndex, 0);
4130
+ }
4131
+ function removeAllSlides() {
4132
+ swiper.virtual.slides = [];
4133
+ if (swiper.params.virtual.cache) {
4134
+ swiper.virtual.cache = {};
4135
+ }
4136
+ update(true);
4137
+ swiper.slideTo(0, 0);
4138
+ }
4139
+ on('beforeInit', () => {
4140
+ if (!swiper.params.virtual.enabled) return;
4141
+ let domSlidesAssigned;
4142
+ if (typeof swiper.passedParams.virtual.slides === 'undefined') {
4143
+ const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));
4144
+ if (slides && slides.length) {
4145
+ swiper.virtual.slides = [...slides];
4146
+ domSlidesAssigned = true;
4147
+ slides.forEach((slideEl, slideIndex) => {
4148
+ slideEl.setAttribute('data-swiper-slide-index', slideIndex);
4149
+ swiper.virtual.cache[slideIndex] = slideEl;
4150
+ slideEl.remove();
4151
+ });
4152
+ }
4153
+ }
4154
+ if (!domSlidesAssigned) {
4155
+ swiper.virtual.slides = swiper.params.virtual.slides;
4156
+ }
4157
+ swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);
4158
+ swiper.params.watchSlidesProgress = true;
4159
+ swiper.originalParams.watchSlidesProgress = true;
4160
+ if (!swiper.params.initialSlide) {
4161
+ update();
4162
+ }
4163
+ });
4164
+ on('setTranslate', () => {
4165
+ if (!swiper.params.virtual.enabled) return;
4166
+ if (swiper.params.cssMode && !swiper._immediateVirtual) {
4167
+ clearTimeout(cssModeTimeout);
4168
+ cssModeTimeout = setTimeout(() => {
4169
+ update();
4170
+ }, 100);
4171
+ } else {
4172
+ update();
4173
+ }
4174
+ });
4175
+ on('init update resize', () => {
4176
+ if (!swiper.params.virtual.enabled) return;
4177
+ if (swiper.params.cssMode) {
4178
+ setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);
4179
+ }
4180
+ });
4181
+ Object.assign(swiper.virtual, {
4182
+ appendSlide,
4183
+ prependSlide,
4184
+ removeSlide,
4185
+ removeAllSlides,
4186
+ update
4187
+ });
4188
+ }
4189
+
3866
4190
  function createElementIfNotDefined(swiper, originalParams, params, checkProps) {
3867
4191
  if (swiper.params.createElements) {
3868
4192
  Object.keys(checkProps).forEach(key => {
@@ -5054,7 +5378,7 @@ const HyHeroCarousel$1 = /*@__PURE__*/ proxyCustomElement(class HyHeroCarousel e
5054
5378
  }
5055
5379
  componentDidLoad() {
5056
5380
  new Swiper(".swiper", {
5057
- modules: [Navigation, Pagination, A11y, EffectFade],
5381
+ modules: [Navigation, Pagination, A11y, EffectFade, Virtual],
5058
5382
  enabled: true,
5059
5383
  effect: 'fade',
5060
5384
  fadeEffect: {
@@ -5065,6 +5389,9 @@ const HyHeroCarousel$1 = /*@__PURE__*/ proxyCustomElement(class HyHeroCarousel e
5065
5389
  spaceBetween: 50,
5066
5390
  virtual: {
5067
5391
  enabled: true,
5392
+ cache: true,
5393
+ addSlidesAfter: 0,
5394
+ addSlidesBefore: 0,
5068
5395
  },
5069
5396
  navigation: {
5070
5397
  nextEl: ".swiper-button-next",