Skip to content

Commit a651283

Browse files
committed
2.3.1 Release
1 parent 038d2e7 commit a651283

28 files changed

Lines changed: 330 additions & 103 deletions

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

dist/components/searchbar/searchbar-class.js

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@ class Searchbar extends FrameworkClass {
384384
sb.query = query;
385385
sb.value = query;
386386

387-
const { $searchContainer, $el, $backdropEl, $foundEl, $notFoundEl, $hideOnSearchEl, isVirtualList } = sb;
387+
const { $searchContainer, $el, $foundEl, $notFoundEl, $hideOnSearchEl, isVirtualList } = sb;
388388

389389
// Hide on search element
390390
if (query.length > 0 && $hideOnSearchEl) {
@@ -393,10 +393,15 @@ class Searchbar extends FrameworkClass {
393393
$hideOnSearchEl.removeClass('hidden-by-searchbar');
394394
}
395395
// Add active/inactive classes on overlay
396-
if (query.length === 0) {
397-
if ($searchContainer && $searchContainer.length && $el.hasClass('searchbar-enabled') && $backdropEl) sb.backdropShow();
398-
} else if ($searchContainer && $searchContainer.length && $el.hasClass('searchbar-enabled')) {
399-
sb.backdropHide();
396+
if (
397+
($searchContainer && $searchContainer.length && $el.hasClass('searchbar-enabled')) ||
398+
(sb.params.customSearch && $el.hasClass('searchbar-enabled'))
399+
) {
400+
if (query.length === 0) {
401+
sb.backdropShow();
402+
} else {
403+
sb.backdropHide();
404+
}
400405
}
401406

402407
if (sb.params.customSearch) {

dist/components/sortable/sortable.js

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -138,22 +138,27 @@ const Sortable = {
138138
let virtualList;
139139
let oldIndex;
140140
let newIndex;
141-
if ($insertAfterEl) {
142-
$sortingEl.insertAfter($insertAfterEl);
143-
}
144-
if ($insertBeforeEl) {
145-
$sortingEl.insertBefore($insertBeforeEl);
141+
if (app.params.sortable.moveElements) {
142+
if ($insertAfterEl) {
143+
$sortingEl.insertAfter($insertAfterEl);
144+
}
145+
if ($insertBeforeEl) {
146+
$sortingEl.insertBefore($insertBeforeEl);
147+
}
146148
}
147149

148-
$sortingEl.trigger('sortable:sort', { from: indexFrom, to: $sortingEl.index() });
149-
app.emit('sortableSort', $sortingEl[0], { from: indexFrom, to: $sortingEl.index() });
150-
151-
if (($insertAfterEl || $insertBeforeEl) && $sortableContainer.hasClass('virtual-list')) {
150+
if (($insertAfterEl || $insertBeforeEl) &&
151+
$sortableContainer.hasClass('virtual-list')
152+
) {
152153
virtualList = $sortableContainer[0].f7VirtualList;
153154
oldIndex = $sortingEl[0].f7VirtualListIndex;
154155
newIndex = $insertBeforeEl ? $insertBeforeEl[0].f7VirtualListIndex : $insertAfterEl[0].f7VirtualListIndex;
155156
if (virtualList) virtualList.moveItem(oldIndex, newIndex);
156157
}
158+
159+
$sortingEl.trigger('sortable:sort', { from: indexFrom, to: $sortingEl.index() });
160+
app.emit('sortableSort', $sortingEl[0], { from: indexFrom, to: $sortingEl.index() });
161+
157162
$insertBeforeEl = undefined;
158163
$insertAfterEl = undefined;
159164
isTouched = false;
@@ -196,7 +201,9 @@ const Sortable = {
196201
export default {
197202
name: 'sortable',
198203
params: {
199-
sortable: true,
204+
sortable: {
205+
moveElements: true,
206+
},
200207
},
201208
create() {
202209
const app = this;
@@ -212,7 +219,8 @@ export default {
212219
on: {
213220
init() {
214221
const app = this;
215-
if (app.params.sortable) app.sortable.init();
222+
if (!app.params.sortable) return;
223+
app.sortable.init();
216224
},
217225
},
218226
clicks: {

dist/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
};

dist/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) {

dist/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

dist/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

dist/css/framework7.css

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
/**
2-
* Framework7 2.3.0
2+
* Framework7 2.3.1
33
* Full featured mobile HTML framework for building iOS & Android apps
44
* http://framework7.io/
55
*
66
* Copyright 2014-2018 Vladimir Kharlampidi
77
*
88
* Released under the MIT License
99
*
10-
* Released on: May 27, 2018
10+
* Released on: June 1, 2018
1111
*/
1212
html,
1313
body,

0 commit comments

Comments
 (0)