@covet-pics/covet-pics-widget 0.161.7 → 0.161.9

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 (175) hide show
  1. package/dist/cjs/{pagination-409ff3a4.js → a11y-e50852bd.js} +327 -407
  2. package/dist/cjs/a11y-e50852bd.js.map +1 -0
  3. package/dist/cjs/covet-pics-direct-buy_7.cjs.entry.js +35 -16
  4. package/dist/cjs/covet-pics-direct-buy_7.cjs.entry.js.map +1 -1
  5. package/dist/cjs/covet-pics-gallery-grid_3.cjs.entry.js +21 -21
  6. package/dist/cjs/covet-pics-gallery-grid_3.cjs.entry.js.map +1 -1
  7. package/dist/cjs/covet-pics-gallery-header_6.cjs.entry.js +43 -14
  8. package/dist/cjs/covet-pics-gallery-header_6.cjs.entry.js.map +1 -1
  9. package/dist/cjs/covet-pics-highlighted-hotspots_2.cjs.entry.js +13 -13
  10. package/dist/cjs/covet-pics-highlighted-hotspots_2.cjs.entry.js.map +1 -1
  11. package/dist/cjs/covet-pics-popup-freeflow-carousel_2.cjs.entry.js +28 -13
  12. package/dist/cjs/covet-pics-popup-freeflow-carousel_2.cjs.entry.js.map +1 -1
  13. package/dist/cjs/covet-pics-star-rating.cjs.entry.js +1 -1
  14. package/dist/cjs/covet-pics-widget.cjs.entry.js +4 -0
  15. package/dist/cjs/covet-pics-widget.cjs.entry.js.map +1 -1
  16. package/dist/cjs/covet-pics-widget.cjs.js +1 -1
  17. package/dist/cjs/loader.cjs.js +1 -1
  18. package/dist/cjs/{navigation-cf706af7.js → navigation-6ce45aa2.js} +12 -12
  19. package/dist/cjs/{navigation-cf706af7.js.map → navigation-6ce45aa2.js.map} +1 -1
  20. package/dist/cjs/pagination-da578188.js +465 -0
  21. package/dist/cjs/pagination-da578188.js.map +1 -0
  22. package/dist/cjs/{popupFuncComponents-db65aa07.js → popupFuncComponents-bd488f64.js} +21 -8
  23. package/dist/cjs/popupFuncComponents-bd488f64.js.map +1 -0
  24. package/dist/collection/components/covet-pics-popup-freeflow/covet-pics-popup-freeflow-carousel.js +14 -4
  25. package/dist/collection/components/covet-pics-popup-freeflow/covet-pics-popup-freeflow-carousel.js.map +1 -1
  26. package/dist/collection/components/covet-pics-popup-freeflow/covet-pics-popup-freeflow-links.css +1 -0
  27. package/dist/collection/components/covet-pics-popup-freeflow/covet-pics-popup-freeflow-links.js +10 -4
  28. package/dist/collection/components/covet-pics-popup-freeflow/covet-pics-popup-freeflow-links.js.map +1 -1
  29. package/dist/collection/components/covet-pics-popup-freeflow/covet-pics-popup-freeflow.css +31 -0
  30. package/dist/collection/components/covet-pics-popup-freeflow/covet-pics-popup-freeflow.js +35 -7
  31. package/dist/collection/components/covet-pics-popup-freeflow/covet-pics-popup-freeflow.js.map +1 -1
  32. package/dist/collection/components/covet-pics-popup-freeflow/covet-pics-popup-slide.css +5 -6
  33. package/dist/collection/components/covet-pics-popup-freeflow/covet-pics-popup-slide.js +95 -10
  34. package/dist/collection/components/covet-pics-popup-freeflow/covet-pics-popup-slide.js.map +1 -1
  35. package/dist/collection/components/covet-pics-popup-links/covet-pics-popup-links.js +1 -1
  36. package/dist/collection/components/covet-pics-star-rating/covet-pics-star-rating.js +1 -1
  37. package/dist/collection/components/covet-pics-upload/covet-pics-upload.js +5 -5
  38. package/dist/collection/store/settings.js +4 -0
  39. package/dist/collection/store/settings.js.map +1 -1
  40. package/dist/collection/utils/funcComponents.js +8 -2
  41. package/dist/collection/utils/funcComponents.js.map +1 -1
  42. package/dist/collection/utils/types.js.map +1 -1
  43. package/dist/covet-pics-widget/covet-pics-widget.esm.js +1 -1
  44. package/dist/covet-pics-widget/covet-pics-widget.esm.js.map +1 -1
  45. package/dist/covet-pics-widget/{p-c6a36218.system.js → p-03d4a99a.system.js} +2 -2
  46. package/dist/covet-pics-widget/p-03d4a99a.system.js.map +1 -0
  47. package/dist/covet-pics-widget/{p-4ee29443.entry.js → p-0ed0f873.entry.js} +2 -2
  48. package/dist/covet-pics-widget/p-0ed0f873.entry.js.map +1 -0
  49. package/dist/covet-pics-widget/p-28ccdfb6.system.entry.js +23 -0
  50. package/dist/covet-pics-widget/p-28ccdfb6.system.entry.js.map +1 -0
  51. package/dist/covet-pics-widget/{p-42bcbb6c.system.entry.js → p-2c7526b5.system.entry.js} +2 -2
  52. package/dist/covet-pics-widget/p-2d4fcd4a.system.js +2 -2
  53. package/dist/covet-pics-widget/p-2d4fcd4a.system.js.map +1 -1
  54. package/dist/covet-pics-widget/{p-adbdb6cc.js → p-3e08b779.js} +2 -2
  55. package/dist/covet-pics-widget/p-3e08b779.js.map +1 -0
  56. package/dist/covet-pics-widget/{p-27ec4527.system.entry.js → p-40346252.system.entry.js} +3 -3
  57. package/dist/covet-pics-widget/p-424c42ad.entry.js +23 -0
  58. package/dist/covet-pics-widget/p-424c42ad.entry.js.map +1 -0
  59. package/dist/covet-pics-widget/{p-c32c7f96.system.entry.js → p-445fdeb6.system.entry.js} +2 -2
  60. package/dist/covet-pics-widget/{p-80bd0b83.entry.js → p-458faf88.entry.js} +3 -3
  61. package/dist/covet-pics-widget/{p-f06b5fe1.system.js → p-5823ece3.system.js} +2 -2
  62. package/dist/covet-pics-widget/p-6a9ccfa6.system.js +5 -0
  63. package/dist/covet-pics-widget/p-6a9ccfa6.system.js.map +1 -0
  64. package/dist/covet-pics-widget/p-6bd5b7c3.entry.js +10 -0
  65. package/dist/covet-pics-widget/p-6bd5b7c3.entry.js.map +1 -0
  66. package/dist/covet-pics-widget/{p-86a2182a.js → p-6c35f2b1.js} +2 -2
  67. package/dist/covet-pics-widget/p-6c35f2b1.js.map +1 -0
  68. package/dist/covet-pics-widget/{p-2544c6de.system.entry.js → p-8329d83e.system.entry.js} +3 -3
  69. package/dist/covet-pics-widget/p-8329d83e.system.entry.js.map +1 -0
  70. package/dist/covet-pics-widget/{p-f121d648.system.entry.js → p-a0893950.system.entry.js} +2 -2
  71. package/dist/covet-pics-widget/p-a0893950.system.entry.js.map +1 -0
  72. package/dist/covet-pics-widget/{p-5c32cea1.entry.js → p-a28eb041.entry.js} +2 -2
  73. package/dist/covet-pics-widget/p-c501f361.system.js +5 -0
  74. package/dist/covet-pics-widget/p-c501f361.system.js.map +1 -0
  75. package/dist/covet-pics-widget/{p-b48ea6de.entry.js → p-cc3401db.entry.js} +2 -2
  76. package/dist/covet-pics-widget/p-cc3401db.entry.js.map +1 -0
  77. package/dist/covet-pics-widget/p-d0c71aed.entry.js +5 -0
  78. package/dist/covet-pics-widget/{p-a18d1c7b.entry.js.map → p-d0c71aed.entry.js.map} +1 -1
  79. package/dist/covet-pics-widget/{p-c2b39e7f.system.entry.js → p-e7e7d941.system.entry.js} +2 -2
  80. package/dist/covet-pics-widget/p-e7e7d941.system.entry.js.map +1 -0
  81. package/dist/covet-pics-widget/{p-87d95159.js → p-eff9938b.js} +2 -2
  82. package/dist/covet-pics-widget/p-fdf45c10.js +5 -0
  83. package/dist/covet-pics-widget/p-fdf45c10.js.map +1 -0
  84. package/dist/esm/{pagination-d7b45e4b.js → a11y-df498b11.js} +325 -407
  85. package/dist/esm/a11y-df498b11.js.map +1 -0
  86. package/dist/esm/covet-pics-direct-buy_7.entry.js +33 -14
  87. package/dist/esm/covet-pics-direct-buy_7.entry.js.map +1 -1
  88. package/dist/esm/covet-pics-gallery-grid_3.entry.js +3 -3
  89. package/dist/esm/covet-pics-gallery-header_6.entry.js +42 -13
  90. package/dist/esm/covet-pics-gallery-header_6.entry.js.map +1 -1
  91. package/dist/esm/covet-pics-highlighted-hotspots_2.entry.js +3 -3
  92. package/dist/esm/covet-pics-popup-freeflow-carousel_2.entry.js +26 -11
  93. package/dist/esm/covet-pics-popup-freeflow-carousel_2.entry.js.map +1 -1
  94. package/dist/esm/covet-pics-star-rating.entry.js +1 -1
  95. package/dist/esm/covet-pics-widget.entry.js +4 -0
  96. package/dist/esm/covet-pics-widget.entry.js.map +1 -1
  97. package/dist/esm/covet-pics-widget.js +1 -1
  98. package/dist/esm/loader.js +1 -1
  99. package/dist/esm/{navigation-00a2b62b.js → navigation-55639590.js} +2 -2
  100. package/dist/esm/{navigation-00a2b62b.js.map → navigation-55639590.js.map} +1 -1
  101. package/dist/esm/pagination-33ce3811.js +463 -0
  102. package/dist/esm/pagination-33ce3811.js.map +1 -0
  103. package/dist/esm/{popupFuncComponents-e763adc3.js → popupFuncComponents-fc2ddaf9.js} +20 -9
  104. package/dist/esm/popupFuncComponents-fc2ddaf9.js.map +1 -0
  105. package/dist/esm-es5/{pagination-d7b45e4b.js → a11y-df498b11.js} +2 -2
  106. package/dist/esm-es5/a11y-df498b11.js.map +1 -0
  107. package/dist/esm-es5/covet-pics-direct-buy_7.entry.js +2 -2
  108. package/dist/esm-es5/covet-pics-direct-buy_7.entry.js.map +1 -1
  109. package/dist/esm-es5/covet-pics-gallery-grid_3.entry.js +1 -1
  110. package/dist/esm-es5/covet-pics-gallery-header_6.entry.js +3 -3
  111. package/dist/esm-es5/covet-pics-gallery-header_6.entry.js.map +1 -1
  112. package/dist/esm-es5/covet-pics-highlighted-hotspots_2.entry.js +1 -1
  113. package/dist/esm-es5/covet-pics-popup-freeflow-carousel_2.entry.js +1 -1
  114. package/dist/esm-es5/covet-pics-popup-freeflow-carousel_2.entry.js.map +1 -1
  115. package/dist/esm-es5/covet-pics-star-rating.entry.js +1 -1
  116. package/dist/esm-es5/covet-pics-widget.entry.js +1 -1
  117. package/dist/esm-es5/covet-pics-widget.entry.js.map +1 -1
  118. package/dist/esm-es5/covet-pics-widget.js +2 -2
  119. package/dist/esm-es5/covet-pics-widget.js.map +1 -1
  120. package/dist/esm-es5/loader.js +1 -1
  121. package/dist/esm-es5/loader.js.map +1 -1
  122. package/dist/esm-es5/navigation-55639590.js +5 -0
  123. package/dist/esm-es5/{navigation-00a2b62b.js.map → navigation-55639590.js.map} +1 -1
  124. package/dist/esm-es5/pagination-33ce3811.js +5 -0
  125. package/dist/esm-es5/pagination-33ce3811.js.map +1 -0
  126. package/dist/esm-es5/{popupFuncComponents-e763adc3.js → popupFuncComponents-fc2ddaf9.js} +2 -2
  127. package/dist/esm-es5/popupFuncComponents-fc2ddaf9.js.map +1 -0
  128. package/dist/types/components/covet-pics-popup-freeflow/covet-pics-popup-freeflow-carousel.d.ts +1 -0
  129. package/dist/types/components/covet-pics-popup-freeflow/covet-pics-popup-freeflow.d.ts +2 -1
  130. package/dist/types/components/covet-pics-popup-freeflow/covet-pics-popup-slide.d.ts +13 -2
  131. package/dist/types/components.d.ts +22 -3
  132. package/dist/types/utils/funcComponents.d.ts +2 -0
  133. package/dist/types/utils/types.d.ts +4 -0
  134. package/package.json +1 -1
  135. package/dist/cjs/a11y-23e07e9a.js +0 -383
  136. package/dist/cjs/a11y-23e07e9a.js.map +0 -1
  137. package/dist/cjs/pagination-409ff3a4.js.map +0 -1
  138. package/dist/cjs/popupFuncComponents-db65aa07.js.map +0 -1
  139. package/dist/covet-pics-widget/p-2544c6de.system.entry.js.map +0 -1
  140. package/dist/covet-pics-widget/p-38f3ac23.js +0 -5
  141. package/dist/covet-pics-widget/p-38f3ac23.js.map +0 -1
  142. package/dist/covet-pics-widget/p-4ee29443.entry.js.map +0 -1
  143. package/dist/covet-pics-widget/p-5edc102a.system.js +0 -5
  144. package/dist/covet-pics-widget/p-5edc102a.system.js.map +0 -1
  145. package/dist/covet-pics-widget/p-640a0bc0.system.js +0 -5
  146. package/dist/covet-pics-widget/p-640a0bc0.system.js.map +0 -1
  147. package/dist/covet-pics-widget/p-86a2182a.js.map +0 -1
  148. package/dist/covet-pics-widget/p-8fbfaad0.entry.js +0 -23
  149. package/dist/covet-pics-widget/p-8fbfaad0.entry.js.map +0 -1
  150. package/dist/covet-pics-widget/p-9ed75163.entry.js +0 -10
  151. package/dist/covet-pics-widget/p-9ed75163.entry.js.map +0 -1
  152. package/dist/covet-pics-widget/p-a18d1c7b.entry.js +0 -5
  153. package/dist/covet-pics-widget/p-adbdb6cc.js.map +0 -1
  154. package/dist/covet-pics-widget/p-b48ea6de.entry.js.map +0 -1
  155. package/dist/covet-pics-widget/p-c2b39e7f.system.entry.js.map +0 -1
  156. package/dist/covet-pics-widget/p-c6a36218.system.js.map +0 -1
  157. package/dist/covet-pics-widget/p-d5431ea5.system.entry.js +0 -23
  158. package/dist/covet-pics-widget/p-d5431ea5.system.entry.js.map +0 -1
  159. package/dist/covet-pics-widget/p-f121d648.system.entry.js.map +0 -1
  160. package/dist/esm/a11y-0a45d4be.js +0 -381
  161. package/dist/esm/a11y-0a45d4be.js.map +0 -1
  162. package/dist/esm/pagination-d7b45e4b.js.map +0 -1
  163. package/dist/esm/popupFuncComponents-e763adc3.js.map +0 -1
  164. package/dist/esm-es5/a11y-0a45d4be.js +0 -5
  165. package/dist/esm-es5/a11y-0a45d4be.js.map +0 -1
  166. package/dist/esm-es5/navigation-00a2b62b.js +0 -5
  167. package/dist/esm-es5/pagination-d7b45e4b.js.map +0 -1
  168. package/dist/esm-es5/popupFuncComponents-e763adc3.js.map +0 -1
  169. /package/dist/covet-pics-widget/{p-42bcbb6c.system.entry.js.map → p-2c7526b5.system.entry.js.map} +0 -0
  170. /package/dist/covet-pics-widget/{p-27ec4527.system.entry.js.map → p-40346252.system.entry.js.map} +0 -0
  171. /package/dist/covet-pics-widget/{p-c32c7f96.system.entry.js.map → p-445fdeb6.system.entry.js.map} +0 -0
  172. /package/dist/covet-pics-widget/{p-80bd0b83.entry.js.map → p-458faf88.entry.js.map} +0 -0
  173. /package/dist/covet-pics-widget/{p-f06b5fe1.system.js.map → p-5823ece3.system.js.map} +0 -0
  174. /package/dist/covet-pics-widget/{p-5c32cea1.entry.js.map → p-a28eb041.entry.js.map} +0 -0
  175. /package/dist/covet-pics-widget/{p-87d95159.js.map → p-eff9938b.js.map} +0 -0
@@ -4385,462 +4385,380 @@ function classesToSelector(classes) {
4385
4385
  .replace(/ /g, '.')}`;
4386
4386
  }
4387
4387
 
4388
- function Pagination(_ref) {
4388
+ function A11y(_ref) {
4389
4389
  let {
4390
4390
  swiper,
4391
4391
  extendParams,
4392
- on,
4393
- emit
4392
+ on
4394
4393
  } = _ref;
4395
- const pfx = 'swiper-pagination';
4396
4394
  extendParams({
4397
- pagination: {
4398
- el: null,
4399
- bulletElement: 'span',
4400
- clickable: false,
4401
- hideOnClick: false,
4402
- renderBullet: null,
4403
- renderProgressbar: null,
4404
- renderFraction: null,
4405
- renderCustom: null,
4406
- progressbarOpposite: false,
4407
- type: 'bullets',
4408
- // 'bullets' or 'progressbar' or 'fraction' or 'custom'
4409
- dynamicBullets: false,
4410
- dynamicMainBullets: 1,
4411
- formatFractionCurrent: number => number,
4412
- formatFractionTotal: number => number,
4413
- bulletClass: `${pfx}-bullet`,
4414
- bulletActiveClass: `${pfx}-bullet-active`,
4415
- modifierClass: `${pfx}-`,
4416
- currentClass: `${pfx}-current`,
4417
- totalClass: `${pfx}-total`,
4418
- hiddenClass: `${pfx}-hidden`,
4419
- progressbarFillClass: `${pfx}-progressbar-fill`,
4420
- progressbarOppositeClass: `${pfx}-progressbar-opposite`,
4421
- clickableClass: `${pfx}-clickable`,
4422
- lockClass: `${pfx}-lock`,
4423
- horizontalClass: `${pfx}-horizontal`,
4424
- verticalClass: `${pfx}-vertical`,
4425
- paginationDisabledClass: `${pfx}-disabled`
4395
+ a11y: {
4396
+ enabled: true,
4397
+ notificationClass: 'swiper-notification',
4398
+ prevSlideMessage: 'Previous slide',
4399
+ nextSlideMessage: 'Next slide',
4400
+ firstSlideMessage: 'This is the first slide',
4401
+ lastSlideMessage: 'This is the last slide',
4402
+ paginationBulletMessage: 'Go to slide {{index}}',
4403
+ slideLabelMessage: '{{index}} / {{slidesLength}}',
4404
+ containerMessage: null,
4405
+ containerRoleDescriptionMessage: null,
4406
+ containerRole: null,
4407
+ itemRoleDescriptionMessage: null,
4408
+ slideRole: 'group',
4409
+ id: null,
4410
+ scrollOnFocus: true
4426
4411
  }
4427
4412
  });
4428
- swiper.pagination = {
4429
- el: null,
4430
- bullets: []
4413
+ swiper.a11y = {
4414
+ clicked: false
4431
4415
  };
4432
- let bulletSize;
4433
- let dynamicBulletIndex = 0;
4434
- function isPaginationDisabled() {
4435
- return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;
4416
+ let liveRegion = null;
4417
+ let preventFocusHandler;
4418
+ let focusTargetSlideEl;
4419
+ let visibilityChangedTimestamp = new Date().getTime();
4420
+ function notify(message) {
4421
+ const notification = liveRegion;
4422
+ if (notification.length === 0) return;
4423
+ notification.innerHTML = '';
4424
+ notification.innerHTML = message;
4425
+ }
4426
+ function getRandomNumber(size) {
4427
+ if (size === void 0) {
4428
+ size = 16;
4429
+ }
4430
+ const randomChar = () => Math.round(16 * Math.random()).toString(16);
4431
+ return 'x'.repeat(size).replace(/x/g, randomChar);
4432
+ }
4433
+ function makeElFocusable(el) {
4434
+ el = makeElementsArray(el);
4435
+ el.forEach(subEl => {
4436
+ subEl.setAttribute('tabIndex', '0');
4437
+ });
4436
4438
  }
4437
- function setSideBullets(bulletEl, position) {
4438
- const {
4439
- bulletActiveClass
4440
- } = swiper.params.pagination;
4441
- if (!bulletEl) return;
4442
- bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];
4443
- if (bulletEl) {
4444
- bulletEl.classList.add(`${bulletActiveClass}-${position}`);
4445
- bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];
4446
- if (bulletEl) {
4447
- bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);
4448
- }
4449
- }
4439
+ function makeElNotFocusable(el) {
4440
+ el = makeElementsArray(el);
4441
+ el.forEach(subEl => {
4442
+ subEl.setAttribute('tabIndex', '-1');
4443
+ });
4450
4444
  }
4451
- function getMoveDirection(prevIndex, nextIndex, length) {
4452
- prevIndex = prevIndex % length;
4453
- nextIndex = nextIndex % length;
4454
- if (nextIndex === prevIndex + 1) {
4455
- return 'next';
4456
- } else if (nextIndex === prevIndex - 1) {
4457
- return 'previous';
4458
- }
4459
- return;
4445
+ function addElRole(el, role) {
4446
+ el = makeElementsArray(el);
4447
+ el.forEach(subEl => {
4448
+ subEl.setAttribute('role', role);
4449
+ });
4460
4450
  }
4461
- function onBulletClick(e) {
4462
- const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));
4463
- if (!bulletEl) {
4464
- return;
4465
- }
4466
- e.preventDefault();
4467
- const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;
4468
- if (swiper.params.loop) {
4469
- if (swiper.realIndex === index) return;
4470
- const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length);
4471
- if (moveDirection === 'next') {
4472
- swiper.slideNext();
4473
- } else if (moveDirection === 'previous') {
4474
- swiper.slidePrev();
4475
- } else {
4476
- swiper.slideToLoop(index);
4477
- }
4478
- } else {
4479
- swiper.slideTo(index);
4480
- }
4451
+ function addElRoleDescription(el, description) {
4452
+ el = makeElementsArray(el);
4453
+ el.forEach(subEl => {
4454
+ subEl.setAttribute('aria-roledescription', description);
4455
+ });
4481
4456
  }
4482
- function update() {
4483
- // Render || Update Pagination bullets/items
4484
- const rtl = swiper.rtl;
4485
- const params = swiper.params.pagination;
4486
- if (isPaginationDisabled()) return;
4487
- let el = swiper.pagination.el;
4457
+ function addElControls(el, controls) {
4488
4458
  el = makeElementsArray(el);
4489
- // Current/Total
4490
- let current;
4491
- let previousIndex;
4492
- const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
4493
- const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
4494
- if (swiper.params.loop) {
4495
- previousIndex = swiper.previousRealIndex || 0;
4496
- current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;
4497
- } else if (typeof swiper.snapIndex !== 'undefined') {
4498
- current = swiper.snapIndex;
4499
- previousIndex = swiper.previousSnapIndex;
4500
- } else {
4501
- previousIndex = swiper.previousIndex || 0;
4502
- current = swiper.activeIndex || 0;
4503
- }
4504
- // Types
4505
- if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {
4506
- const bullets = swiper.pagination.bullets;
4507
- let firstIndex;
4508
- let lastIndex;
4509
- let midIndex;
4510
- if (params.dynamicBullets) {
4511
- bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);
4512
- el.forEach(subEl => {
4513
- subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;
4514
- });
4515
- if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {
4516
- dynamicBulletIndex += current - (previousIndex || 0);
4517
- if (dynamicBulletIndex > params.dynamicMainBullets - 1) {
4518
- dynamicBulletIndex = params.dynamicMainBullets - 1;
4519
- } else if (dynamicBulletIndex < 0) {
4520
- dynamicBulletIndex = 0;
4521
- }
4522
- }
4523
- firstIndex = Math.max(current - dynamicBulletIndex, 0);
4524
- lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
4525
- midIndex = (lastIndex + firstIndex) / 2;
4526
- }
4527
- bullets.forEach(bulletEl => {
4528
- const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();
4529
- bulletEl.classList.remove(...classesToRemove);
4530
- });
4531
- if (el.length > 1) {
4532
- bullets.forEach(bullet => {
4533
- const bulletIndex = elementIndex(bullet);
4534
- if (bulletIndex === current) {
4535
- bullet.classList.add(...params.bulletActiveClass.split(' '));
4536
- } else if (swiper.isElement) {
4537
- bullet.setAttribute('part', 'bullet');
4538
- }
4539
- if (params.dynamicBullets) {
4540
- if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
4541
- bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));
4542
- }
4543
- if (bulletIndex === firstIndex) {
4544
- setSideBullets(bullet, 'prev');
4545
- }
4546
- if (bulletIndex === lastIndex) {
4547
- setSideBullets(bullet, 'next');
4548
- }
4549
- }
4550
- });
4551
- } else {
4552
- const bullet = bullets[current];
4553
- if (bullet) {
4554
- bullet.classList.add(...params.bulletActiveClass.split(' '));
4555
- }
4556
- if (swiper.isElement) {
4557
- bullets.forEach((bulletEl, bulletIndex) => {
4558
- bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');
4559
- });
4560
- }
4561
- if (params.dynamicBullets) {
4562
- const firstDisplayedBullet = bullets[firstIndex];
4563
- const lastDisplayedBullet = bullets[lastIndex];
4564
- for (let i = firstIndex; i <= lastIndex; i += 1) {
4565
- if (bullets[i]) {
4566
- bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));
4567
- }
4568
- }
4569
- setSideBullets(firstDisplayedBullet, 'prev');
4570
- setSideBullets(lastDisplayedBullet, 'next');
4571
- }
4572
- }
4573
- if (params.dynamicBullets) {
4574
- const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
4575
- const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;
4576
- const offsetProp = rtl ? 'right' : 'left';
4577
- bullets.forEach(bullet => {
4578
- bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;
4579
- });
4580
- }
4581
- }
4582
- el.forEach((subEl, subElIndex) => {
4583
- if (params.type === 'fraction') {
4584
- subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {
4585
- fractionEl.textContent = params.formatFractionCurrent(current + 1);
4586
- });
4587
- subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {
4588
- totalEl.textContent = params.formatFractionTotal(total);
4589
- });
4590
- }
4591
- if (params.type === 'progressbar') {
4592
- let progressbarDirection;
4593
- if (params.progressbarOpposite) {
4594
- progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';
4595
- } else {
4596
- progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';
4597
- }
4598
- const scale = (current + 1) / total;
4599
- let scaleX = 1;
4600
- let scaleY = 1;
4601
- if (progressbarDirection === 'horizontal') {
4602
- scaleX = scale;
4603
- } else {
4604
- scaleY = scale;
4605
- }
4606
- subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {
4607
- progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;
4608
- progressEl.style.transitionDuration = `${swiper.params.speed}ms`;
4609
- });
4610
- }
4611
- if (params.type === 'custom' && params.renderCustom) {
4612
- subEl.innerHTML = params.renderCustom(swiper, current + 1, total);
4613
- if (subElIndex === 0) emit('paginationRender', subEl);
4614
- } else {
4615
- if (subElIndex === 0) emit('paginationRender', subEl);
4616
- emit('paginationUpdate', subEl);
4617
- }
4618
- if (swiper.params.watchOverflow && swiper.enabled) {
4619
- subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);
4620
- }
4459
+ el.forEach(subEl => {
4460
+ subEl.setAttribute('aria-controls', controls);
4621
4461
  });
4622
4462
  }
4623
- function render() {
4624
- // Render Container
4625
- const params = swiper.params.pagination;
4626
- if (isPaginationDisabled()) return;
4627
- const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;
4628
- let el = swiper.pagination.el;
4463
+ function addElLabel(el, label) {
4629
4464
  el = makeElementsArray(el);
4630
- let paginationHTML = '';
4631
- if (params.type === 'bullets') {
4632
- let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
4633
- if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {
4634
- numberOfBullets = slidesLength;
4465
+ el.forEach(subEl => {
4466
+ subEl.setAttribute('aria-label', label);
4467
+ });
4468
+ }
4469
+ function addElId(el, id) {
4470
+ el = makeElementsArray(el);
4471
+ el.forEach(subEl => {
4472
+ subEl.setAttribute('id', id);
4473
+ });
4474
+ }
4475
+ function addElLive(el, live) {
4476
+ el = makeElementsArray(el);
4477
+ el.forEach(subEl => {
4478
+ subEl.setAttribute('aria-live', live);
4479
+ });
4480
+ }
4481
+ function disableEl(el) {
4482
+ el = makeElementsArray(el);
4483
+ el.forEach(subEl => {
4484
+ subEl.setAttribute('aria-disabled', true);
4485
+ });
4486
+ }
4487
+ function enableEl(el) {
4488
+ el = makeElementsArray(el);
4489
+ el.forEach(subEl => {
4490
+ subEl.setAttribute('aria-disabled', false);
4491
+ });
4492
+ }
4493
+ function onEnterOrSpaceKey(e) {
4494
+ if (e.keyCode !== 13 && e.keyCode !== 32) return;
4495
+ const params = swiper.params.a11y;
4496
+ const targetEl = e.target;
4497
+ if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {
4498
+ if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;
4499
+ }
4500
+ if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) {
4501
+ const prevEls = makeElementsArray(swiper.navigation.prevEl);
4502
+ const nextEls = makeElementsArray(swiper.navigation.nextEl);
4503
+ if (nextEls.includes(targetEl)) {
4504
+ if (!(swiper.isEnd && !swiper.params.loop)) {
4505
+ swiper.slideNext();
4506
+ }
4507
+ if (swiper.isEnd) {
4508
+ notify(params.lastSlideMessage);
4509
+ } else {
4510
+ notify(params.nextSlideMessage);
4511
+ }
4635
4512
  }
4636
- for (let i = 0; i < numberOfBullets; i += 1) {
4637
- if (params.renderBullet) {
4638
- paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
4513
+ if (prevEls.includes(targetEl)) {
4514
+ if (!(swiper.isBeginning && !swiper.params.loop)) {
4515
+ swiper.slidePrev();
4516
+ }
4517
+ if (swiper.isBeginning) {
4518
+ notify(params.firstSlideMessage);
4639
4519
  } else {
4640
- // prettier-ignore
4641
- paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ''} class="${params.bulletClass}"></${params.bulletElement}>`;
4520
+ notify(params.prevSlideMessage);
4642
4521
  }
4643
4522
  }
4644
4523
  }
4645
- if (params.type === 'fraction') {
4646
- if (params.renderFraction) {
4647
- paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
4648
- } else {
4649
- paginationHTML = `<span class="${params.currentClass}"></span>` + ' / ' + `<span class="${params.totalClass}"></span>`;
4650
- }
4524
+ if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {
4525
+ targetEl.click();
4651
4526
  }
4652
- if (params.type === 'progressbar') {
4653
- if (params.renderProgressbar) {
4654
- paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
4527
+ }
4528
+ function updateNavigation() {
4529
+ if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;
4530
+ const {
4531
+ nextEl,
4532
+ prevEl
4533
+ } = swiper.navigation;
4534
+ if (prevEl) {
4535
+ if (swiper.isBeginning) {
4536
+ disableEl(prevEl);
4537
+ makeElNotFocusable(prevEl);
4655
4538
  } else {
4656
- paginationHTML = `<span class="${params.progressbarFillClass}"></span>`;
4539
+ enableEl(prevEl);
4540
+ makeElFocusable(prevEl);
4657
4541
  }
4658
4542
  }
4659
- swiper.pagination.bullets = [];
4660
- el.forEach(subEl => {
4661
- if (params.type !== 'custom') {
4662
- subEl.innerHTML = paginationHTML || '';
4663
- }
4664
- if (params.type === 'bullets') {
4665
- swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));
4543
+ if (nextEl) {
4544
+ if (swiper.isEnd) {
4545
+ disableEl(nextEl);
4546
+ makeElNotFocusable(nextEl);
4547
+ } else {
4548
+ enableEl(nextEl);
4549
+ makeElFocusable(nextEl);
4666
4550
  }
4667
- });
4668
- if (params.type !== 'custom') {
4669
- emit('paginationRender', el[0]);
4670
4551
  }
4671
4552
  }
4672
- function init() {
4673
- swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {
4674
- el: 'swiper-pagination'
4675
- });
4676
- const params = swiper.params.pagination;
4677
- if (!params.el) return;
4678
- let el;
4679
- if (typeof params.el === 'string' && swiper.isElement) {
4680
- el = swiper.el.querySelector(params.el);
4681
- }
4682
- if (!el && typeof params.el === 'string') {
4683
- el = [...document.querySelectorAll(params.el)];
4684
- }
4685
- if (!el) {
4686
- el = params.el;
4687
- }
4688
- if (!el || el.length === 0) return;
4689
- if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {
4690
- el = [...swiper.el.querySelectorAll(params.el)];
4691
- // check if it belongs to another nested Swiper
4692
- if (el.length > 1) {
4693
- el = el.filter(subEl => {
4694
- if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;
4695
- return true;
4696
- })[0];
4697
- }
4698
- }
4699
- if (Array.isArray(el) && el.length === 1) el = el[0];
4700
- Object.assign(swiper.pagination, {
4701
- el
4702
- });
4703
- el = makeElementsArray(el);
4704
- el.forEach(subEl => {
4705
- if (params.type === 'bullets' && params.clickable) {
4706
- subEl.classList.add(...(params.clickableClass || '').split(' '));
4707
- }
4708
- subEl.classList.add(params.modifierClass + params.type);
4709
- subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
4710
- if (params.type === 'bullets' && params.dynamicBullets) {
4711
- subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);
4712
- dynamicBulletIndex = 0;
4713
- if (params.dynamicMainBullets < 1) {
4714
- params.dynamicMainBullets = 1;
4553
+ function hasPagination() {
4554
+ return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;
4555
+ }
4556
+ function hasClickablePagination() {
4557
+ return hasPagination() && swiper.params.pagination.clickable;
4558
+ }
4559
+ function updatePagination() {
4560
+ const params = swiper.params.a11y;
4561
+ if (!hasPagination()) return;
4562
+ swiper.pagination.bullets.forEach(bulletEl => {
4563
+ if (swiper.params.pagination.clickable) {
4564
+ makeElFocusable(bulletEl);
4565
+ if (!swiper.params.pagination.renderBullet) {
4566
+ addElRole(bulletEl, 'button');
4567
+ addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, elementIndex(bulletEl) + 1));
4715
4568
  }
4716
4569
  }
4717
- if (params.type === 'progressbar' && params.progressbarOpposite) {
4718
- subEl.classList.add(params.progressbarOppositeClass);
4719
- }
4720
- if (params.clickable) {
4721
- subEl.addEventListener('click', onBulletClick);
4722
- }
4723
- if (!swiper.enabled) {
4724
- subEl.classList.add(params.lockClass);
4570
+ if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {
4571
+ bulletEl.setAttribute('aria-current', 'true');
4572
+ } else {
4573
+ bulletEl.removeAttribute('aria-current');
4725
4574
  }
4726
4575
  });
4727
4576
  }
4728
- function destroy() {
4729
- const params = swiper.params.pagination;
4730
- if (isPaginationDisabled()) return;
4731
- let el = swiper.pagination.el;
4732
- if (el) {
4733
- el = makeElementsArray(el);
4734
- el.forEach(subEl => {
4735
- subEl.classList.remove(params.hiddenClass);
4736
- subEl.classList.remove(params.modifierClass + params.type);
4737
- subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
4738
- if (params.clickable) {
4739
- subEl.classList.remove(...(params.clickableClass || '').split(' '));
4740
- subEl.removeEventListener('click', onBulletClick);
4577
+ const initNavEl = (el, wrapperId, message) => {
4578
+ makeElFocusable(el);
4579
+ if (el.tagName !== 'BUTTON') {
4580
+ addElRole(el, 'button');
4581
+ el.addEventListener('keydown', onEnterOrSpaceKey);
4582
+ }
4583
+ addElLabel(el, message);
4584
+ addElControls(el, wrapperId);
4585
+ };
4586
+ const handlePointerDown = e => {
4587
+ if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) {
4588
+ preventFocusHandler = true;
4589
+ }
4590
+ swiper.a11y.clicked = true;
4591
+ };
4592
+ const handlePointerUp = () => {
4593
+ preventFocusHandler = false;
4594
+ requestAnimationFrame(() => {
4595
+ requestAnimationFrame(() => {
4596
+ if (!swiper.destroyed) {
4597
+ swiper.a11y.clicked = false;
4741
4598
  }
4742
4599
  });
4743
- }
4744
- if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));
4745
- }
4746
- on('changeDirection', () => {
4747
- if (!swiper.pagination || !swiper.pagination.el) return;
4748
- const params = swiper.params.pagination;
4749
- let {
4750
- el
4751
- } = swiper.pagination;
4752
- el = makeElementsArray(el);
4753
- el.forEach(subEl => {
4754
- subEl.classList.remove(params.horizontalClass, params.verticalClass);
4755
- subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
4756
4600
  });
4757
- });
4758
- on('init', () => {
4759
- if (swiper.params.pagination.enabled === false) {
4760
- // eslint-disable-next-line
4761
- disable();
4601
+ };
4602
+ const onVisibilityChange = e => {
4603
+ visibilityChangedTimestamp = new Date().getTime();
4604
+ };
4605
+ const handleFocus = e => {
4606
+ if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return;
4607
+ if (new Date().getTime() - visibilityChangedTimestamp < 100) return;
4608
+ const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);
4609
+ if (!slideEl || !swiper.slides.includes(slideEl)) return;
4610
+ focusTargetSlideEl = slideEl;
4611
+ const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;
4612
+ const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);
4613
+ if (isActive || isVisible) return;
4614
+ if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;
4615
+ if (swiper.isHorizontal()) {
4616
+ swiper.el.scrollLeft = 0;
4762
4617
  } else {
4763
- init();
4764
- render();
4765
- update();
4766
- }
4767
- });
4768
- on('activeIndexChange', () => {
4769
- if (typeof swiper.snapIndex === 'undefined') {
4770
- update();
4618
+ swiper.el.scrollTop = 0;
4771
4619
  }
4772
- });
4773
- on('snapIndexChange', () => {
4774
- update();
4775
- });
4776
- on('snapGridLengthChange', () => {
4777
- render();
4778
- update();
4779
- });
4780
- on('destroy', () => {
4781
- destroy();
4782
- });
4783
- on('enable disable', () => {
4784
- let {
4785
- el
4786
- } = swiper.pagination;
4787
- if (el) {
4788
- el = makeElementsArray(el);
4789
- el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));
4790
- }
4791
- });
4792
- on('lock unlock', () => {
4793
- update();
4794
- });
4795
- on('click', (_s, e) => {
4796
- const targetEl = e.target;
4797
- const el = makeElementsArray(swiper.pagination.el);
4798
- if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {
4799
- if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;
4800
- const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);
4801
- if (isHidden === true) {
4802
- emit('paginationShow');
4620
+ requestAnimationFrame(() => {
4621
+ if (preventFocusHandler) return;
4622
+ if (swiper.params.loop) {
4623
+ swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0);
4803
4624
  } else {
4804
- emit('paginationHide');
4625
+ swiper.slideTo(swiper.slides.indexOf(slideEl), 0);
4805
4626
  }
4806
- el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));
4627
+ preventFocusHandler = false;
4628
+ });
4629
+ };
4630
+ const initSlides = () => {
4631
+ const params = swiper.params.a11y;
4632
+ if (params.itemRoleDescriptionMessage) {
4633
+ addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);
4634
+ }
4635
+ if (params.slideRole) {
4636
+ addElRole(swiper.slides, params.slideRole);
4637
+ }
4638
+ const slidesLength = swiper.slides.length;
4639
+ if (params.slideLabelMessage) {
4640
+ swiper.slides.forEach((slideEl, index) => {
4641
+ const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;
4642
+ const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength);
4643
+ addElLabel(slideEl, ariaLabelMessage);
4644
+ });
4807
4645
  }
4808
- });
4809
- const enable = () => {
4810
- swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);
4646
+ };
4647
+ const init = () => {
4648
+ const params = swiper.params.a11y;
4649
+ swiper.el.append(liveRegion);
4650
+
4651
+ // Container
4652
+ const containerEl = swiper.el;
4653
+ if (params.containerRoleDescriptionMessage) {
4654
+ addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);
4655
+ }
4656
+ if (params.containerMessage) {
4657
+ addElLabel(containerEl, params.containerMessage);
4658
+ }
4659
+ if (params.containerRole) {
4660
+ addElRole(containerEl, params.containerRole);
4661
+ }
4662
+
4663
+ // Wrapper
4664
+ const wrapperEl = swiper.wrapperEl;
4665
+ const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;
4666
+ const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';
4667
+ addElId(wrapperEl, wrapperId);
4668
+ addElLive(wrapperEl, live);
4669
+
4670
+ // Slide
4671
+ initSlides();
4672
+
4673
+ // Navigation
4811
4674
  let {
4812
- el
4813
- } = swiper.pagination;
4814
- if (el) {
4815
- el = makeElementsArray(el);
4816
- el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));
4675
+ nextEl,
4676
+ prevEl
4677
+ } = swiper.navigation ? swiper.navigation : {};
4678
+ nextEl = makeElementsArray(nextEl);
4679
+ prevEl = makeElementsArray(prevEl);
4680
+ if (nextEl) {
4681
+ nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));
4682
+ }
4683
+ if (prevEl) {
4684
+ prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));
4685
+ }
4686
+
4687
+ // Pagination
4688
+ if (hasClickablePagination()) {
4689
+ const paginationEl = makeElementsArray(swiper.pagination.el);
4690
+ paginationEl.forEach(el => {
4691
+ el.addEventListener('keydown', onEnterOrSpaceKey);
4692
+ });
4817
4693
  }
4818
- init();
4819
- render();
4820
- update();
4694
+
4695
+ // Tab focus
4696
+ const document = getDocument();
4697
+ document.addEventListener('visibilitychange', onVisibilityChange);
4698
+ swiper.el.addEventListener('focus', handleFocus, true);
4699
+ swiper.el.addEventListener('focus', handleFocus, true);
4700
+ swiper.el.addEventListener('pointerdown', handlePointerDown, true);
4701
+ swiper.el.addEventListener('pointerup', handlePointerUp, true);
4821
4702
  };
4822
- const disable = () => {
4823
- swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);
4703
+ function destroy() {
4704
+ if (liveRegion) liveRegion.remove();
4824
4705
  let {
4825
- el
4826
- } = swiper.pagination;
4827
- if (el) {
4828
- el = makeElementsArray(el);
4829
- el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));
4706
+ nextEl,
4707
+ prevEl
4708
+ } = swiper.navigation ? swiper.navigation : {};
4709
+ nextEl = makeElementsArray(nextEl);
4710
+ prevEl = makeElementsArray(prevEl);
4711
+ if (nextEl) {
4712
+ nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));
4713
+ }
4714
+ if (prevEl) {
4715
+ prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));
4716
+ }
4717
+
4718
+ // Pagination
4719
+ if (hasClickablePagination()) {
4720
+ const paginationEl = makeElementsArray(swiper.pagination.el);
4721
+ paginationEl.forEach(el => {
4722
+ el.removeEventListener('keydown', onEnterOrSpaceKey);
4723
+ });
4830
4724
  }
4725
+ const document = getDocument();
4726
+ document.removeEventListener('visibilitychange', onVisibilityChange);
4727
+ // Tab focus
4728
+ if (swiper.el && typeof swiper.el !== 'string') {
4729
+ swiper.el.removeEventListener('focus', handleFocus, true);
4730
+ swiper.el.removeEventListener('pointerdown', handlePointerDown, true);
4731
+ swiper.el.removeEventListener('pointerup', handlePointerUp, true);
4732
+ }
4733
+ }
4734
+ on('beforeInit', () => {
4735
+ liveRegion = createElement('span', swiper.params.a11y.notificationClass);
4736
+ liveRegion.setAttribute('aria-live', 'assertive');
4737
+ liveRegion.setAttribute('aria-atomic', 'true');
4738
+ });
4739
+ on('afterInit', () => {
4740
+ if (!swiper.params.a11y.enabled) return;
4741
+ init();
4742
+ });
4743
+ on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {
4744
+ if (!swiper.params.a11y.enabled) return;
4745
+ initSlides();
4746
+ });
4747
+ on('fromEdge toEdge afterInit lock unlock', () => {
4748
+ if (!swiper.params.a11y.enabled) return;
4749
+ updateNavigation();
4750
+ });
4751
+ on('paginationUpdate', () => {
4752
+ if (!swiper.params.a11y.enabled) return;
4753
+ updatePagination();
4754
+ });
4755
+ on('destroy', () => {
4756
+ if (!swiper.params.a11y.enabled) return;
4831
4757
  destroy();
4832
- };
4833
- Object.assign(swiper.pagination, {
4834
- enable,
4835
- disable,
4836
- render,
4837
- update,
4838
- init,
4839
- destroy
4840
4758
  });
4841
4759
  }
4842
4760
 
4843
- exports.Pagination = Pagination;
4761
+ exports.A11y = A11y;
4844
4762
  exports.Swiper = Swiper;
4845
4763
  exports.classesToSelector = classesToSelector;
4846
4764
  exports.classesToTokens = classesToTokens;
@@ -4848,10 +4766,12 @@ exports.createElement = createElement;
4848
4766
  exports.createElementIfNotDefined = createElementIfNotDefined;
4849
4767
  exports.elementIndex = elementIndex;
4850
4768
  exports.elementOffset = elementOffset;
4769
+ exports.elementOuterSize = elementOuterSize;
4770
+ exports.elementParents = elementParents;
4851
4771
  exports.elementTransitionEnd = elementTransitionEnd;
4852
4772
  exports.getDocument = getDocument;
4853
4773
  exports.getSlideTransformEl = getSlideTransformEl;
4854
4774
  exports.makeElementsArray = makeElementsArray;
4855
4775
  exports.nextTick = nextTick;
4856
4776
 
4857
- //# sourceMappingURL=pagination-409ff3a4.js.map
4777
+ //# sourceMappingURL=a11y-e50852bd.js.map