Skip to content

Commit 7b6cb4c

Browse files
committed
Merge branch 'master' into v3
2 parents 17bc88f + a651283 commit 7b6cb4c

7 files changed

Lines changed: 79 additions & 6 deletions

File tree

CHANGELOG.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,20 @@
22

33
# Change Log
44

5+
# [v2.3.1](https://github.com/framework7io/framework7/compare/v2.3.0...v2.3.1) - June 1, 2018
6+
* Searchbar
7+
* Fixed issue with not hiding/showing backdrop when `customSearch` is enabled
8+
* Sortable
9+
* New app parameter `sortable.moveElements` by default is `true`. Useful to disable when you use for DOM manipulation other library like Vue or React
10+
* Swiper update to latest v4.3.2:
11+
* Core
12+
* Added `addSlide(index, slide)` method to add slide at required position. Thanks to @kochizufan
13+
* Fixed issue with loop #2647. Thanks to @kochizufan
14+
* Pagination
15+
* New `formatFractionCurrent(number)` parameter to format current number in Fraction pagination
16+
* New `formatFractionTotal(number)` parameter to format total number in Fraction pagination
17+
* Minor fixes
18+
519
# [v2.3.0](https://github.com/framework7io/framework7/compare/v2.2.5...v2.3.0) - May 27, 2018
620
* View/Router
721
* Fixed missing `pushStateOnLoad` parameter

src/core/components/swiper/swiper-class/components/core/loop/loopFix.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export default function () {
1919
if (slideChanged && diff !== 0) {
2020
swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
2121
}
22-
} else if ((params.slidesPerView === 'auto' && activeIndex >= loopedSlides * 2) || (activeIndex > slides.length - (params.slidesPerView * 2))) {
22+
} else if ((params.slidesPerView === 'auto' && activeIndex >= loopedSlides * 2) || (activeIndex >= slides.length - loopedSlides)) {
2323
// Fix For Positive Oversliding
2424
newIndex = -slides.length + activeIndex + loopedSlides;
2525
newIndex += loopedSlides;
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import Support from '../../../utils/support';
2+
3+
export default function (index, slides) {
4+
const swiper = this;
5+
const { $wrapperEl, params, activeIndex } = swiper;
6+
let activeIndexBuffer = activeIndex;
7+
if (params.loop) {
8+
activeIndexBuffer -= swiper.loopedSlides;
9+
swiper.loopDestroy();
10+
swiper.slides = $wrapperEl.children(`.${params.slideClass}`);
11+
}
12+
const baseLength = swiper.slides.length;
13+
if (index <= 0) {
14+
swiper.prependSlide(slides);
15+
return;
16+
} else if (index >= baseLength) {
17+
swiper.appendSlide(slides);
18+
return;
19+
}
20+
let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;
21+
22+
const slidesBuffer = [];
23+
for (let i = baseLength - 1; i >= index; i -= 1) {
24+
const currentSlide = swiper.slides.eq(i);
25+
currentSlide.remove();
26+
slidesBuffer.unshift(currentSlide);
27+
}
28+
29+
if (typeof slides === 'object' && 'length' in slides) {
30+
for (let i = 0; i < slides.length; i += 1) {
31+
if (slides[i]) $wrapperEl.append(slides[i]);
32+
}
33+
newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;
34+
} else {
35+
$wrapperEl.append(slides);
36+
}
37+
38+
for (let i = 0; i < slidesBuffer.length; i += 1) {
39+
$wrapperEl.append(slidesBuffer[i]);
40+
}
41+
42+
if (params.loop) {
43+
swiper.loopCreate();
44+
}
45+
if (!(params.observer && Support.observer)) {
46+
swiper.update();
47+
}
48+
if (params.loop) {
49+
swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
50+
} else {
51+
swiper.slideTo(newActiveIndex, 0, false);
52+
}
53+
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
import appendSlide from './appendSlide';
22
import prependSlide from './prependSlide';
3+
import addSlide from './addSlide';
34
import removeSlide from './removeSlide';
45
import removeAllSlides from './removeAllSlides';
56

67
export default {
78
appendSlide,
89
prependSlide,
10+
addSlide,
911
removeSlide,
1012
removeAllSlides,
1113
};

src/core/components/swiper/swiper-class/components/core/manipulation/removeSlide.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@ export default function (slidesIndexes) {
44
const swiper = this;
55
const { params, $wrapperEl, activeIndex } = swiper;
66

7+
let activeIndexBuffer = activeIndex;
78
if (params.loop) {
9+
activeIndexBuffer -= swiper.loopedSlides;
810
swiper.loopDestroy();
911
swiper.slides = $wrapperEl.children(`.${params.slideClass}`);
1012
}
11-
let newActiveIndex = activeIndex;
13+
let newActiveIndex = activeIndexBuffer;
1214
let indexToRemove;
1315

1416
if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {

src/core/components/swiper/swiper-class/components/core/update/updateSlides.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@ export default function () {
99
const {
1010
$wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL,
1111
} = swiper;
12-
const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);
1312
const isVirtual = swiper.virtual && params.virtual.enabled;
13+
const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
14+
const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);
1415
const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
1516
let snapGrid = [];
1617
const slidesGrid = [];
@@ -26,7 +27,6 @@ export default function () {
2627
offsetAfter = params.slidesOffsetAfter.call(swiper);
2728
}
2829

29-
const previousSlidesLength = slidesLength;
3030
const previousSnapGridLength = swiper.snapGrid.length;
3131
const previousSlidesGridLength = swiper.snapGrid.length;
3232

src/core/components/swiper/swiper-class/components/pagination/pagination.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,8 +103,8 @@ const Pagination = {
103103
}
104104
}
105105
if (params.type === 'fraction') {
106-
$el.find(`.${params.currentClass}`).text(current + 1);
107-
$el.find(`.${params.totalClass}`).text(total);
106+
$el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1));
107+
$el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total));
108108
}
109109
if (params.type === 'progressbar') {
110110
let progressbarDirection;
@@ -254,6 +254,8 @@ export default {
254254
type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'
255255
dynamicBullets: false,
256256
dynamicMainBullets: 1,
257+
formatFractionCurrent: number => number,
258+
formatFractionTotal: number => number,
257259
bulletClass: 'swiper-pagination-bullet',
258260
bulletActiveClass: 'swiper-pagination-bullet-active',
259261
modifierClass: 'swiper-pagination-', // NEW

0 commit comments

Comments
 (0)