@xenknight/framework7 0.0.6 → 0.0.7
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/components/app/app.less +1 -1
- package/components/icon/icon-ios.less +9 -0
- package/components/icon/icon-md.less +9 -0
- package/components/icon/icon.less +2 -1
- package/components/list/list-vars.less +1 -1
- package/components/messagebar/messagebar-rtl.css +1 -1
- package/components/messagebar/messagebar-vars.less +1 -1
- package/components/messagebar/messagebar.css +1 -1
- package/components/messages/messages-rtl.css +1 -1
- package/components/messages/messages-vars.less +7 -7
- package/components/messages/messages.css +1 -1
- package/components/navbar-new/navbar-ios.less +135 -0
- package/components/navbar-new/navbar-md.less +105 -0
- package/components/navbar-new/navbar-vars.less +78 -0
- package/components/navbar-new/navbar.d.ts +77 -0
- package/components/navbar-new/navbar.js +568 -0
- package/components/navbar-new/navbar.less +268 -0
- package/components/searchbar-new/remove-diacritics.js +271 -0
- package/components/searchbar-new/searchbar-ios.less +131 -0
- package/components/searchbar-new/searchbar-md.less +153 -0
- package/components/searchbar-new/searchbar-new-class.js +592 -0
- package/components/searchbar-new/searchbar-vars.less +75 -0
- package/components/searchbar-new/searchbar.js +122 -0
- package/components/searchbar-new/searchbar.less +331 -0
- package/components/swipeout/swipeout.js +8 -9
- package/components/tabs/tabs.js +5 -0
- package/components/toolbar-new/tabbar-highlight.js +134 -0
- package/components/toolbar-new/toolbar-ios.less +193 -0
- package/components/toolbar-new/toolbar-md.less +152 -0
- package/components/toolbar-new/toolbar-vars.less +77 -0
- package/components/toolbar-new/toolbar.js +223 -0
- package/components/toolbar-new/toolbar.less +261 -0
- package/framework7-bundle-rtl.css +2198 -387
- package/framework7-bundle-rtl.min.css +12 -6
- package/framework7-bundle.css +2194 -383
- package/framework7-bundle.esm.js +11 -4
- package/framework7-bundle.js +2368 -467
- package/framework7-bundle.js.map +1 -1
- package/framework7-bundle.less +6 -3
- package/framework7-bundle.min.css +12 -6
- package/framework7-bundle.min.js +4 -4
- package/framework7-bundle.min.js.map +1 -1
- package/framework7-lite-bundle.esm.js +11 -4
- package/framework7-lite.esm.js +11 -4
- package/framework7-lite.js +8 -1
- package/framework7-rtl.css +2191 -380
- package/framework7-rtl.min.css +11 -5
- package/framework7.css +2189 -378
- package/framework7.esm.js +11 -4
- package/framework7.js +8 -1
- package/framework7.less +6 -3
- package/framework7.min.css +11 -5
- package/package.json +1 -1
package/framework7-bundle.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Framework7 0.0.
|
|
2
|
+
* Framework7 0.0.6
|
|
3
3
|
* Full featured mobile HTML framework for building iOS & Android apps
|
|
4
4
|
* https://framework7.io/
|
|
5
5
|
*
|
|
6
|
-
* Copyright 2014-
|
|
6
|
+
* Copyright 2014-2026 Vladimir Kharlampidi
|
|
7
7
|
*
|
|
8
8
|
* Released under the MIT License
|
|
9
9
|
*
|
|
10
|
-
* Released on:
|
|
10
|
+
* Released on: January 1, 2026
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
(function (global, factory) {
|
|
@@ -14259,7 +14259,7 @@
|
|
|
14259
14259
|
}
|
|
14260
14260
|
};
|
|
14261
14261
|
|
|
14262
|
-
const Navbar = {
|
|
14262
|
+
const Navbar$1 = {
|
|
14263
14263
|
size(el) {
|
|
14264
14264
|
const app = this;
|
|
14265
14265
|
let $el = $(el);
|
|
@@ -14810,12 +14810,12 @@
|
|
|
14810
14810
|
};
|
|
14811
14811
|
}
|
|
14812
14812
|
};
|
|
14813
|
-
var Navbar$
|
|
14813
|
+
var Navbar$2 = {
|
|
14814
14814
|
name: 'navbar',
|
|
14815
14815
|
create() {
|
|
14816
14816
|
const app = this;
|
|
14817
14817
|
bindMethods(app, {
|
|
14818
|
-
navbar: Navbar
|
|
14818
|
+
navbar: Navbar$1
|
|
14819
14819
|
});
|
|
14820
14820
|
},
|
|
14821
14821
|
params: {
|
|
@@ -15069,13 +15069,2326 @@
|
|
|
15069
15069
|
scrollHeight = scrollContent.scrollHeight;
|
|
15070
15070
|
offsetHeight = scrollContent.offsetHeight;
|
|
15071
15071
|
reachEnd = currentScrollTop + offsetHeight >= scrollHeight;
|
|
15072
|
-
toolbarHidden = $toolbarEl.hasClass('toolbar-hidden');
|
|
15072
|
+
toolbarHidden = $toolbarEl.hasClass('toolbar-hidden');
|
|
15073
|
+
if (reachEnd) {
|
|
15074
|
+
if (app.params.toolbar.showOnPageScrollEnd) {
|
|
15075
|
+
action = 'show';
|
|
15076
|
+
}
|
|
15077
|
+
} else if (previousScrollTop > currentScrollTop) {
|
|
15078
|
+
if (app.params.toolbar.showOnPageScrollTop || currentScrollTop <= 44) {
|
|
15079
|
+
action = 'show';
|
|
15080
|
+
} else {
|
|
15081
|
+
action = 'hide';
|
|
15082
|
+
}
|
|
15083
|
+
} else if (currentScrollTop > 44) {
|
|
15084
|
+
action = 'hide';
|
|
15085
|
+
} else {
|
|
15086
|
+
action = 'show';
|
|
15087
|
+
}
|
|
15088
|
+
if (action === 'show' && toolbarHidden) {
|
|
15089
|
+
app.toolbar.show($toolbarEl);
|
|
15090
|
+
toolbarHidden = false;
|
|
15091
|
+
} else if (action === 'hide' && !toolbarHidden) {
|
|
15092
|
+
app.toolbar.hide($toolbarEl);
|
|
15093
|
+
toolbarHidden = true;
|
|
15094
|
+
}
|
|
15095
|
+
previousScrollTop = currentScrollTop;
|
|
15096
|
+
}
|
|
15097
|
+
$pageEl.on('scroll', '.page-content', handleScroll, true);
|
|
15098
|
+
$pageEl[0].f7ScrollToolbarHandler = handleScroll;
|
|
15099
|
+
}
|
|
15100
|
+
};
|
|
15101
|
+
var Toolbar$1 = {
|
|
15102
|
+
name: 'toolbar',
|
|
15103
|
+
create() {
|
|
15104
|
+
const app = this;
|
|
15105
|
+
bindMethods(app, {
|
|
15106
|
+
toolbar: Toolbar
|
|
15107
|
+
});
|
|
15108
|
+
},
|
|
15109
|
+
params: {
|
|
15110
|
+
toolbar: {
|
|
15111
|
+
hideOnPageScroll: false,
|
|
15112
|
+
showOnPageScrollEnd: true,
|
|
15113
|
+
showOnPageScrollTop: true
|
|
15114
|
+
}
|
|
15115
|
+
},
|
|
15116
|
+
on: {
|
|
15117
|
+
pageBeforeRemove(page) {
|
|
15118
|
+
if (page.$el[0].f7ScrollToolbarHandler) {
|
|
15119
|
+
page.$el.off('scroll', '.page-content', page.$el[0].f7ScrollToolbarHandler, true);
|
|
15120
|
+
}
|
|
15121
|
+
},
|
|
15122
|
+
pageBeforeIn(page) {
|
|
15123
|
+
const app = this;
|
|
15124
|
+
let $toolbarEl = page.$el.parents('.view').children('.toolbar');
|
|
15125
|
+
if ($toolbarEl.length === 0) {
|
|
15126
|
+
$toolbarEl = page.$el.parents('.views').children('.tabbar, .tabbar-icons');
|
|
15127
|
+
}
|
|
15128
|
+
if ($toolbarEl.length === 0) {
|
|
15129
|
+
$toolbarEl = page.$el.find('.toolbar');
|
|
15130
|
+
}
|
|
15131
|
+
if ($toolbarEl.length === 0) {
|
|
15132
|
+
return;
|
|
15133
|
+
}
|
|
15134
|
+
if (page.$el.hasClass('no-toolbar')) {
|
|
15135
|
+
app.toolbar.hide($toolbarEl);
|
|
15136
|
+
} else {
|
|
15137
|
+
app.toolbar.show($toolbarEl);
|
|
15138
|
+
}
|
|
15139
|
+
},
|
|
15140
|
+
pageInit(page) {
|
|
15141
|
+
const app = this;
|
|
15142
|
+
page.$el.find('.tabbar, .tabbar-icons').each(tabbarEl => {
|
|
15143
|
+
app.toolbar.init(tabbarEl);
|
|
15144
|
+
});
|
|
15145
|
+
if (app.params.toolbar.hideOnPageScroll || page.$el.find('.hide-toolbar-on-scroll').length || page.$el.hasClass('hide-toolbar-on-scroll') || page.$el.find('.hide-bars-on-scroll').length || page.$el.hasClass('hide-bars-on-scroll')) {
|
|
15146
|
+
if (page.$el.find('.keep-toolbar-on-scroll').length || page.$el.hasClass('keep-toolbar-on-scroll') || page.$el.find('.keep-bars-on-scroll').length || page.$el.hasClass('keep-bars-on-scroll')) {
|
|
15147
|
+
return;
|
|
15148
|
+
}
|
|
15149
|
+
app.toolbar.initToolbarOnScroll(page.el);
|
|
15150
|
+
}
|
|
15151
|
+
},
|
|
15152
|
+
init() {
|
|
15153
|
+
const app = this;
|
|
15154
|
+
app.$el.find('.tabbar, .tabbar-icons').each(tabbarEl => {
|
|
15155
|
+
app.toolbar.init(tabbarEl);
|
|
15156
|
+
});
|
|
15157
|
+
}
|
|
15158
|
+
},
|
|
15159
|
+
vnode: {
|
|
15160
|
+
tabbar: {
|
|
15161
|
+
insert(vnode) {
|
|
15162
|
+
const app = this;
|
|
15163
|
+
app.toolbar.init(vnode.elm);
|
|
15164
|
+
}
|
|
15165
|
+
}
|
|
15166
|
+
}
|
|
15167
|
+
};
|
|
15168
|
+
|
|
15169
|
+
var Subnavbar = {
|
|
15170
|
+
name: 'subnavbar',
|
|
15171
|
+
on: {
|
|
15172
|
+
pageInit(page) {
|
|
15173
|
+
if (page.$navbarEl && page.$navbarEl.length && page.$navbarEl.find('.subnavbar').length) {
|
|
15174
|
+
page.$el.addClass('page-with-subnavbar');
|
|
15175
|
+
}
|
|
15176
|
+
const $innerSubnavbars = page.$el.find('.subnavbar').filter(subnavbarEl => {
|
|
15177
|
+
return $(subnavbarEl).parents('.page')[0] === page.$el[0];
|
|
15178
|
+
});
|
|
15179
|
+
if ($innerSubnavbars.length) {
|
|
15180
|
+
page.$el.addClass('page-with-subnavbar');
|
|
15181
|
+
}
|
|
15182
|
+
}
|
|
15183
|
+
}
|
|
15184
|
+
};
|
|
15185
|
+
|
|
15186
|
+
let TouchRipple$1 = class TouchRipple {
|
|
15187
|
+
constructor(app, $el, x, y) {
|
|
15188
|
+
const ripple = this;
|
|
15189
|
+
if (!$el) return undefined;
|
|
15190
|
+
const {
|
|
15191
|
+
left,
|
|
15192
|
+
top,
|
|
15193
|
+
width,
|
|
15194
|
+
height
|
|
15195
|
+
} = $el[0].getBoundingClientRect();
|
|
15196
|
+
const center = {
|
|
15197
|
+
x: x - left,
|
|
15198
|
+
y: y - top
|
|
15199
|
+
};
|
|
15200
|
+
let diameter = Math.max((height ** 2 + width ** 2) ** 0.5, 48);
|
|
15201
|
+
let isInset = false;
|
|
15202
|
+
const insetElements = app.params.touch.touchRippleInsetElements || '';
|
|
15203
|
+
if (insetElements && $el.is(insetElements)) {
|
|
15204
|
+
isInset = true;
|
|
15205
|
+
}
|
|
15206
|
+
if (isInset) {
|
|
15207
|
+
diameter = Math.max(Math.min(width, height), 48);
|
|
15208
|
+
}
|
|
15209
|
+
if (!isInset && $el.css('overflow') === 'hidden') {
|
|
15210
|
+
const distanceFromCenter = ((center.x - width / 2) ** 2 + (center.y - height / 2) ** 2) ** 0.5;
|
|
15211
|
+
const scale = (diameter / 2 + distanceFromCenter) / (diameter / 2);
|
|
15212
|
+
ripple.rippleTransform = `translate3d(0px, 0px, 0) scale(${scale * 2})`;
|
|
15213
|
+
} else {
|
|
15214
|
+
// prettier-ignore
|
|
15215
|
+
ripple.rippleTransform = `translate3d(${-center.x + width / 2}px, ${-center.y + height / 2}px, 0) scale(1)`;
|
|
15216
|
+
}
|
|
15217
|
+
if (isInset) {
|
|
15218
|
+
$el.addClass('ripple-inset');
|
|
15219
|
+
}
|
|
15220
|
+
ripple.$rippleWaveEl = $(`<div class="ripple-wave${isInset ? ' ripple-wave-inset' : ''}" style="width: ${diameter}px; height: ${diameter}px; margin-top:-${diameter / 2}px; margin-left:-${diameter / 2}px; left:${center.x}px; top:${center.y}px; --f7-ripple-transform: ${ripple.rippleTransform}"></div>`);
|
|
15221
|
+
$el.prepend(ripple.$rippleWaveEl);
|
|
15222
|
+
ripple.$rippleWaveEl.animationEnd(() => {
|
|
15223
|
+
if (!ripple.$rippleWaveEl) return;
|
|
15224
|
+
if (ripple.$rippleWaveEl.hasClass('ripple-wave-out')) return;
|
|
15225
|
+
ripple.$rippleWaveEl.addClass('ripple-wave-in');
|
|
15226
|
+
if (ripple.shouldBeRemoved) {
|
|
15227
|
+
ripple.out();
|
|
15228
|
+
}
|
|
15229
|
+
});
|
|
15230
|
+
return ripple;
|
|
15231
|
+
}
|
|
15232
|
+
destroy() {
|
|
15233
|
+
let ripple = this;
|
|
15234
|
+
if (ripple.$rippleWaveEl) {
|
|
15235
|
+
ripple.$rippleWaveEl.remove();
|
|
15236
|
+
}
|
|
15237
|
+
Object.keys(ripple).forEach(key => {
|
|
15238
|
+
ripple[key] = null;
|
|
15239
|
+
delete ripple[key];
|
|
15240
|
+
});
|
|
15241
|
+
ripple = null;
|
|
15242
|
+
}
|
|
15243
|
+
out() {
|
|
15244
|
+
const ripple = this;
|
|
15245
|
+
const {
|
|
15246
|
+
$rippleWaveEl
|
|
15247
|
+
} = this;
|
|
15248
|
+
clearTimeout(ripple.removeTimeout);
|
|
15249
|
+
$rippleWaveEl.addClass('ripple-wave-out');
|
|
15250
|
+
ripple.removeTimeout = setTimeout(() => {
|
|
15251
|
+
ripple.destroy();
|
|
15252
|
+
}, 300);
|
|
15253
|
+
$rippleWaveEl.animationEnd(() => {
|
|
15254
|
+
clearTimeout(ripple.removeTimeout);
|
|
15255
|
+
ripple.destroy();
|
|
15256
|
+
});
|
|
15257
|
+
}
|
|
15258
|
+
remove() {
|
|
15259
|
+
const ripple = this;
|
|
15260
|
+
if (ripple.shouldBeRemoved) return;
|
|
15261
|
+
ripple.removeTimeout = setTimeout(() => {
|
|
15262
|
+
ripple.destroy();
|
|
15263
|
+
}, 400);
|
|
15264
|
+
ripple.shouldBeRemoved = true;
|
|
15265
|
+
if (ripple.$rippleWaveEl.hasClass('ripple-wave-in')) {
|
|
15266
|
+
ripple.out();
|
|
15267
|
+
}
|
|
15268
|
+
}
|
|
15269
|
+
};
|
|
15270
|
+
|
|
15271
|
+
var TouchRipple = {
|
|
15272
|
+
name: 'touch-ripple',
|
|
15273
|
+
static: {
|
|
15274
|
+
TouchRipple: TouchRipple$1
|
|
15275
|
+
},
|
|
15276
|
+
create() {
|
|
15277
|
+
const app = this;
|
|
15278
|
+
app.touchRipple = {
|
|
15279
|
+
create() {
|
|
15280
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
15281
|
+
args[_key] = arguments[_key];
|
|
15282
|
+
}
|
|
15283
|
+
return new TouchRipple$1(...args);
|
|
15284
|
+
}
|
|
15285
|
+
};
|
|
15286
|
+
}
|
|
15287
|
+
};
|
|
15288
|
+
|
|
15289
|
+
const openedModals = [];
|
|
15290
|
+
const dialogsQueue = [];
|
|
15291
|
+
function clearDialogsQueue() {
|
|
15292
|
+
if (dialogsQueue.length === 0) return;
|
|
15293
|
+
const dialog = dialogsQueue.shift();
|
|
15294
|
+
dialog.open();
|
|
15295
|
+
}
|
|
15296
|
+
let Modal$1 = class Modal extends Framework7Class {
|
|
15297
|
+
constructor(app, params) {
|
|
15298
|
+
super(params, [app]);
|
|
15299
|
+
const modal = this;
|
|
15300
|
+
const defaults = {};
|
|
15301
|
+
|
|
15302
|
+
// Extend defaults with modules params
|
|
15303
|
+
modal.useModulesParams(defaults);
|
|
15304
|
+
modal.params = extend$3(defaults, params);
|
|
15305
|
+
modal.opened = false;
|
|
15306
|
+
let $containerEl = modal.params.containerEl ? $(modal.params.containerEl).eq(0) : app.$el;
|
|
15307
|
+
if (!$containerEl.length) $containerEl = app.$el;
|
|
15308
|
+
modal.$containerEl = $containerEl;
|
|
15309
|
+
modal.containerEl = $containerEl[0];
|
|
15310
|
+
|
|
15311
|
+
// Install Modules
|
|
15312
|
+
modal.useModules();
|
|
15313
|
+
return this;
|
|
15314
|
+
}
|
|
15315
|
+
onOpen() {
|
|
15316
|
+
const modal = this;
|
|
15317
|
+
modal.opened = true;
|
|
15318
|
+
openedModals.push(modal);
|
|
15319
|
+
$('html').addClass(`with-modal-${modal.type.toLowerCase()}`);
|
|
15320
|
+
modal.$el.trigger(`modal:open ${modal.type.toLowerCase()}:open`);
|
|
15321
|
+
modal.emit(`local::open modalOpen ${modal.type}Open`, modal);
|
|
15322
|
+
}
|
|
15323
|
+
onOpened() {
|
|
15324
|
+
const modal = this;
|
|
15325
|
+
modal.$el.trigger(`modal:opened ${modal.type.toLowerCase()}:opened`);
|
|
15326
|
+
modal.emit(`local::opened modalOpened ${modal.type}Opened`, modal);
|
|
15327
|
+
}
|
|
15328
|
+
onClose() {
|
|
15329
|
+
const modal = this;
|
|
15330
|
+
modal.opened = false;
|
|
15331
|
+
if (!modal.type || !modal.$el) return;
|
|
15332
|
+
openedModals.splice(openedModals.indexOf(modal), 1);
|
|
15333
|
+
$('html').removeClass(`with-modal-${modal.type.toLowerCase()}`);
|
|
15334
|
+
modal.$el.trigger(`modal:close ${modal.type.toLowerCase()}:close`);
|
|
15335
|
+
modal.emit(`local::close modalClose ${modal.type}Close`, modal);
|
|
15336
|
+
}
|
|
15337
|
+
onClosed() {
|
|
15338
|
+
const modal = this;
|
|
15339
|
+
if (!modal.type || !modal.$el) return;
|
|
15340
|
+
modal.$el.removeClass('modal-out');
|
|
15341
|
+
modal.$el.hide();
|
|
15342
|
+
if (modal.params.backdrop && (modal.params.backdropUnique || modal.forceBackdropUnique) && modal.$backdropEl) {
|
|
15343
|
+
modal.$backdropEl.remove();
|
|
15344
|
+
}
|
|
15345
|
+
modal.$el.trigger(`modal:closed ${modal.type.toLowerCase()}:closed`);
|
|
15346
|
+
modal.emit(`local::closed modalClosed ${modal.type}Closed`, modal);
|
|
15347
|
+
}
|
|
15348
|
+
open(animateModal, force) {
|
|
15349
|
+
const modal = this;
|
|
15350
|
+
const document = getDocument$1();
|
|
15351
|
+
const app = modal.app;
|
|
15352
|
+
const $el = modal.$el;
|
|
15353
|
+
const $backdropEl = modal.$backdropEl;
|
|
15354
|
+
const type = modal.type;
|
|
15355
|
+
let animate = true;
|
|
15356
|
+
if (typeof animateModal !== 'undefined') animate = animateModal;else if (typeof modal.params.animate !== 'undefined') {
|
|
15357
|
+
animate = modal.params.animate;
|
|
15358
|
+
}
|
|
15359
|
+
if (!$el || $el.hasClass('modal-in')) {
|
|
15360
|
+
if (animateModal === false && $el[0] && type !== 'dialog') {
|
|
15361
|
+
$el[0].style.display = 'block';
|
|
15362
|
+
}
|
|
15363
|
+
if (!force) return modal;
|
|
15364
|
+
}
|
|
15365
|
+
if (type === 'dialog' && app.params.modal.queueDialogs) {
|
|
15366
|
+
let pushToQueue;
|
|
15367
|
+
if ($('.dialog.modal-in').length > 0) {
|
|
15368
|
+
pushToQueue = true;
|
|
15369
|
+
} else if (openedModals.length > 0) {
|
|
15370
|
+
openedModals.forEach(openedModal => {
|
|
15371
|
+
if (openedModal.type === 'dialog') pushToQueue = true;
|
|
15372
|
+
});
|
|
15373
|
+
}
|
|
15374
|
+
if (pushToQueue) {
|
|
15375
|
+
dialogsQueue.push(modal);
|
|
15376
|
+
return modal;
|
|
15377
|
+
}
|
|
15378
|
+
}
|
|
15379
|
+
const $modalParentEl = $el.parent();
|
|
15380
|
+
const wasInDom = $el.parents(document).length > 0;
|
|
15381
|
+
if (!$modalParentEl.is(modal.$containerEl)) {
|
|
15382
|
+
modal.$containerEl.append($el);
|
|
15383
|
+
modal.once(`${type}Closed`, () => {
|
|
15384
|
+
if (wasInDom) {
|
|
15385
|
+
$modalParentEl.append($el);
|
|
15386
|
+
} else {
|
|
15387
|
+
$el.remove();
|
|
15388
|
+
}
|
|
15389
|
+
});
|
|
15390
|
+
}
|
|
15391
|
+
// Show Modal
|
|
15392
|
+
$el.show();
|
|
15393
|
+
if (modal.params.backdrop && (modal.params.backdropUnique || modal.forceBackdropUnique) && modal.$backdropEl) {
|
|
15394
|
+
modal.$backdropEl.insertBefore($el);
|
|
15395
|
+
}
|
|
15396
|
+
|
|
15397
|
+
/* eslint no-underscore-dangle: ["error", { "allow": ["_clientLeft"] }] */
|
|
15398
|
+
modal._clientLeft = $el[0].clientLeft;
|
|
15399
|
+
|
|
15400
|
+
// Modal
|
|
15401
|
+
function transitionEnd() {
|
|
15402
|
+
if ($el.hasClass('modal-out')) {
|
|
15403
|
+
modal.onClosed();
|
|
15404
|
+
} else if ($el.hasClass('modal-in')) {
|
|
15405
|
+
modal.onOpened();
|
|
15406
|
+
}
|
|
15407
|
+
}
|
|
15408
|
+
if (animate) {
|
|
15409
|
+
if ($backdropEl) {
|
|
15410
|
+
$backdropEl.removeClass('not-animated');
|
|
15411
|
+
$backdropEl.addClass('backdrop-in');
|
|
15412
|
+
}
|
|
15413
|
+
$el.animationEnd(() => {
|
|
15414
|
+
transitionEnd();
|
|
15415
|
+
});
|
|
15416
|
+
$el.transitionEnd(() => {
|
|
15417
|
+
transitionEnd();
|
|
15418
|
+
});
|
|
15419
|
+
$el.removeClass('modal-out not-animated').addClass('modal-in');
|
|
15420
|
+
modal.onOpen();
|
|
15421
|
+
} else {
|
|
15422
|
+
if ($backdropEl) {
|
|
15423
|
+
$backdropEl.addClass('backdrop-in not-animated');
|
|
15424
|
+
}
|
|
15425
|
+
$el.removeClass('modal-out').addClass('modal-in not-animated');
|
|
15426
|
+
modal.onOpen();
|
|
15427
|
+
modal.onOpened();
|
|
15428
|
+
}
|
|
15429
|
+
return modal;
|
|
15430
|
+
}
|
|
15431
|
+
close(animateModal) {
|
|
15432
|
+
const modal = this;
|
|
15433
|
+
const $el = modal.$el;
|
|
15434
|
+
const $backdropEl = modal.$backdropEl;
|
|
15435
|
+
let animate = true;
|
|
15436
|
+
if (typeof animateModal !== 'undefined') animate = animateModal;else if (typeof modal.params.animate !== 'undefined') {
|
|
15437
|
+
animate = modal.params.animate;
|
|
15438
|
+
}
|
|
15439
|
+
if (!$el || !$el.hasClass('modal-in')) {
|
|
15440
|
+
if (dialogsQueue.indexOf(modal) >= 0) {
|
|
15441
|
+
dialogsQueue.splice(dialogsQueue.indexOf(modal), 1);
|
|
15442
|
+
}
|
|
15443
|
+
return modal;
|
|
15444
|
+
}
|
|
15445
|
+
|
|
15446
|
+
// backdrop
|
|
15447
|
+
if ($backdropEl) {
|
|
15448
|
+
let needToHideBackdrop = true;
|
|
15449
|
+
if (modal.type === 'popup') {
|
|
15450
|
+
modal.$el.prevAll('.popup.modal-in').add(modal.$el.nextAll('.popup.modal-in')).each(popupEl => {
|
|
15451
|
+
const popupInstance = popupEl.f7Modal;
|
|
15452
|
+
if (!popupInstance) return;
|
|
15453
|
+
if (popupInstance.params.closeByBackdropClick && popupInstance.params.backdrop && popupInstance.backdropEl === modal.backdropEl) {
|
|
15454
|
+
needToHideBackdrop = false;
|
|
15455
|
+
}
|
|
15456
|
+
});
|
|
15457
|
+
}
|
|
15458
|
+
if (needToHideBackdrop) {
|
|
15459
|
+
$backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');
|
|
15460
|
+
$backdropEl.removeClass('backdrop-in');
|
|
15461
|
+
}
|
|
15462
|
+
}
|
|
15463
|
+
|
|
15464
|
+
// Modal
|
|
15465
|
+
$el[animate ? 'removeClass' : 'addClass']('not-animated');
|
|
15466
|
+
function transitionEnd() {
|
|
15467
|
+
if ($el.hasClass('modal-out')) {
|
|
15468
|
+
modal.onClosed();
|
|
15469
|
+
} else if ($el.hasClass('modal-in')) {
|
|
15470
|
+
modal.onOpened();
|
|
15471
|
+
}
|
|
15472
|
+
}
|
|
15473
|
+
if (animate) {
|
|
15474
|
+
$el.animationEnd(() => {
|
|
15475
|
+
transitionEnd();
|
|
15476
|
+
});
|
|
15477
|
+
$el.transitionEnd(() => {
|
|
15478
|
+
transitionEnd();
|
|
15479
|
+
});
|
|
15480
|
+
$el.removeClass('modal-in').addClass('modal-out');
|
|
15481
|
+
// Emit close
|
|
15482
|
+
modal.onClose();
|
|
15483
|
+
} else {
|
|
15484
|
+
$el.addClass('not-animated').removeClass('modal-in').addClass('modal-out');
|
|
15485
|
+
// Emit close
|
|
15486
|
+
modal.onClose();
|
|
15487
|
+
modal.onClosed();
|
|
15488
|
+
}
|
|
15489
|
+
if (modal.type === 'dialog') {
|
|
15490
|
+
clearDialogsQueue();
|
|
15491
|
+
}
|
|
15492
|
+
return modal;
|
|
15493
|
+
}
|
|
15494
|
+
destroy() {
|
|
15495
|
+
const modal = this;
|
|
15496
|
+
if (modal.destroyed) return;
|
|
15497
|
+
modal.emit(`local::beforeDestroy modalBeforeDestroy ${modal.type}BeforeDestroy`, modal);
|
|
15498
|
+
if (modal.$el) {
|
|
15499
|
+
modal.$el.trigger(`modal:beforedestroy ${modal.type.toLowerCase()}:beforedestroy`);
|
|
15500
|
+
if (modal.$el.length && modal.$el[0].f7Modal) {
|
|
15501
|
+
delete modal.$el[0].f7Modal;
|
|
15502
|
+
}
|
|
15503
|
+
}
|
|
15504
|
+
deleteProps$1(modal);
|
|
15505
|
+
modal.destroyed = true;
|
|
15506
|
+
}
|
|
15507
|
+
};
|
|
15508
|
+
|
|
15509
|
+
class CustomModal extends Modal$1 {
|
|
15510
|
+
constructor(app, params) {
|
|
15511
|
+
const extendedParams = extend$3({
|
|
15512
|
+
backdrop: true,
|
|
15513
|
+
closeByBackdropClick: true,
|
|
15514
|
+
on: {}
|
|
15515
|
+
}, params);
|
|
15516
|
+
|
|
15517
|
+
// Extends with open/close Modal methods;
|
|
15518
|
+
super(app, extendedParams);
|
|
15519
|
+
const customModal = this;
|
|
15520
|
+
customModal.params = extendedParams;
|
|
15521
|
+
|
|
15522
|
+
// Find Element
|
|
15523
|
+
let $el;
|
|
15524
|
+
if (!customModal.params.el) {
|
|
15525
|
+
$el = $(customModal.params.content);
|
|
15526
|
+
} else {
|
|
15527
|
+
$el = $(customModal.params.el);
|
|
15528
|
+
}
|
|
15529
|
+
if ($el && $el.length > 0 && $el[0].f7Modal) {
|
|
15530
|
+
return $el[0].f7Modal;
|
|
15531
|
+
}
|
|
15532
|
+
if ($el.length === 0) {
|
|
15533
|
+
return customModal.destroy();
|
|
15534
|
+
}
|
|
15535
|
+
let $backdropEl;
|
|
15536
|
+
if (customModal.params.backdrop) {
|
|
15537
|
+
$backdropEl = app.$el.children('.custom-modal-backdrop');
|
|
15538
|
+
if ($backdropEl.length === 0) {
|
|
15539
|
+
$backdropEl = $('<div class="custom-modal-backdrop"></div>');
|
|
15540
|
+
app.$el.append($backdropEl);
|
|
15541
|
+
}
|
|
15542
|
+
}
|
|
15543
|
+
function handleClick(e) {
|
|
15544
|
+
if (!customModal || customModal.destroyed) return;
|
|
15545
|
+
if ($backdropEl && e.target === $backdropEl[0]) {
|
|
15546
|
+
customModal.close();
|
|
15547
|
+
}
|
|
15548
|
+
}
|
|
15549
|
+
customModal.on('customModalOpened', () => {
|
|
15550
|
+
if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {
|
|
15551
|
+
app.on('click', handleClick);
|
|
15552
|
+
}
|
|
15553
|
+
});
|
|
15554
|
+
customModal.on('customModalClose', () => {
|
|
15555
|
+
if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {
|
|
15556
|
+
app.off('click', handleClick);
|
|
15557
|
+
}
|
|
15558
|
+
});
|
|
15559
|
+
extend$3(customModal, {
|
|
15560
|
+
app,
|
|
15561
|
+
$el,
|
|
15562
|
+
el: $el[0],
|
|
15563
|
+
$backdropEl,
|
|
15564
|
+
backdropEl: $backdropEl && $backdropEl[0],
|
|
15565
|
+
type: 'customModal'
|
|
15566
|
+
});
|
|
15567
|
+
$el[0].f7Modal = customModal;
|
|
15568
|
+
return customModal;
|
|
15569
|
+
}
|
|
15570
|
+
}
|
|
15571
|
+
|
|
15572
|
+
var Modal = {
|
|
15573
|
+
name: 'modal',
|
|
15574
|
+
static: {
|
|
15575
|
+
Modal: Modal$1,
|
|
15576
|
+
CustomModal
|
|
15577
|
+
},
|
|
15578
|
+
create() {
|
|
15579
|
+
const app = this;
|
|
15580
|
+
app.customModal = {
|
|
15581
|
+
create(params) {
|
|
15582
|
+
return new CustomModal(app, params);
|
|
15583
|
+
}
|
|
15584
|
+
};
|
|
15585
|
+
},
|
|
15586
|
+
params: {
|
|
15587
|
+
modal: {
|
|
15588
|
+
queueDialogs: true
|
|
15589
|
+
}
|
|
15590
|
+
}
|
|
15591
|
+
};
|
|
15592
|
+
|
|
15593
|
+
const Navbar = {
|
|
15594
|
+
size(el) {
|
|
15595
|
+
const app = this;
|
|
15596
|
+
const $el = $(el);
|
|
15597
|
+
const $innerEl = $el.children('.navbar-new-inner');
|
|
15598
|
+
if (!$innerEl.length) return;
|
|
15599
|
+
const navbarNewParams = app.params.navbarNew || {};
|
|
15600
|
+
const needCenterTitle = $innerEl.hasClass('navbar-new-inner-centered-title') || navbarNewParams[`${app.theme}CenterTitle`];
|
|
15601
|
+
const needLeftTitle = app.theme === 'ios' && !navbarNewParams[`${app.theme}CenterTitle`];
|
|
15602
|
+
if (!needCenterTitle && !needLeftTitle) return;
|
|
15603
|
+
if ($el.parents('.tab:not(.tab-active)').length > 0 || $el.parents('.popup:not(.modal-in)').length > 0) {
|
|
15604
|
+
return;
|
|
15605
|
+
}
|
|
15606
|
+
if (app.theme !== 'ios' && navbarNewParams[`${app.theme}CenterTitle`]) {
|
|
15607
|
+
$innerEl.addClass('navbar-new-inner-centered-title');
|
|
15608
|
+
}
|
|
15609
|
+
if (app.theme === 'ios' && !navbarNewParams.iosCenterTitle) {
|
|
15610
|
+
$innerEl.addClass('navbar-new-inner-left-title');
|
|
15611
|
+
}
|
|
15612
|
+
const left = app.rtl ? $innerEl.children('.right') : $innerEl.children('.left');
|
|
15613
|
+
const right = app.rtl ? $innerEl.children('.left') : $innerEl.children('.right');
|
|
15614
|
+
const title = $innerEl.children('.title');
|
|
15615
|
+
const noLeft = left.length === 0;
|
|
15616
|
+
const noRight = right.length === 0;
|
|
15617
|
+
const leftWidth = noLeft ? 0 : left.outerWidth(true);
|
|
15618
|
+
const rightWidth = noRight ? 0 : right.outerWidth(true);
|
|
15619
|
+
const titleWidth = title.outerWidth(true);
|
|
15620
|
+
const navbarStyles = $innerEl.styles();
|
|
15621
|
+
const navbarWidth = $innerEl[0].offsetWidth;
|
|
15622
|
+
const navbarInnerWidth = navbarWidth - parseInt(navbarStyles.paddingLeft, 10) - parseInt(navbarStyles.paddingRight, 10);
|
|
15623
|
+
let currLeft;
|
|
15624
|
+
let diff;
|
|
15625
|
+
if (noRight) {
|
|
15626
|
+
currLeft = navbarInnerWidth - titleWidth;
|
|
15627
|
+
}
|
|
15628
|
+
if (noLeft) {
|
|
15629
|
+
currLeft = 0;
|
|
15630
|
+
}
|
|
15631
|
+
if (!noLeft && !noRight) {
|
|
15632
|
+
currLeft = (navbarInnerWidth - rightWidth - titleWidth + leftWidth) / 2;
|
|
15633
|
+
}
|
|
15634
|
+
let requiredLeft = (navbarInnerWidth - titleWidth) / 2;
|
|
15635
|
+
if (navbarInnerWidth - leftWidth - rightWidth > titleWidth) {
|
|
15636
|
+
if (requiredLeft < leftWidth) {
|
|
15637
|
+
requiredLeft = leftWidth;
|
|
15638
|
+
}
|
|
15639
|
+
if (requiredLeft + titleWidth > navbarInnerWidth - rightWidth) {
|
|
15640
|
+
requiredLeft = navbarInnerWidth - rightWidth - titleWidth;
|
|
15641
|
+
}
|
|
15642
|
+
diff = requiredLeft - currLeft;
|
|
15643
|
+
} else {
|
|
15644
|
+
diff = 0;
|
|
15645
|
+
}
|
|
15646
|
+
|
|
15647
|
+
// Center title
|
|
15648
|
+
if (needCenterTitle) {
|
|
15649
|
+
let titleLeft = diff;
|
|
15650
|
+
if (app.rtl && noLeft && noRight && title.length > 0) titleLeft = -titleLeft;
|
|
15651
|
+
title.css({
|
|
15652
|
+
left: `${titleLeft}px`
|
|
15653
|
+
});
|
|
15654
|
+
}
|
|
15655
|
+
},
|
|
15656
|
+
hide(el, animate, hideStatusbar) {
|
|
15657
|
+
if (animate === void 0) {
|
|
15658
|
+
animate = true;
|
|
15659
|
+
}
|
|
15660
|
+
if (hideStatusbar === void 0) {
|
|
15661
|
+
hideStatusbar = false;
|
|
15662
|
+
}
|
|
15663
|
+
const app = this;
|
|
15664
|
+
const $el = $(el);
|
|
15665
|
+
if (!$el.length) return;
|
|
15666
|
+
if ($el.hasClass('navbar-new-hidden')) return;
|
|
15667
|
+
let className = `navbar-new-hidden${animate ? ' navbar-new-transitioning' : ''}`;
|
|
15668
|
+
const currentIsLarge = $el.find('.title-large').length;
|
|
15669
|
+
if (currentIsLarge) {
|
|
15670
|
+
className += ' navbar-new-large-hidden';
|
|
15671
|
+
}
|
|
15672
|
+
if (hideStatusbar) {
|
|
15673
|
+
className += ' navbar-new-hidden-statusbar';
|
|
15674
|
+
}
|
|
15675
|
+
$el.transitionEnd(() => {
|
|
15676
|
+
$el.removeClass('navbar-new-transitioning');
|
|
15677
|
+
});
|
|
15678
|
+
$el.addClass(className);
|
|
15679
|
+
$el.trigger('navbar-new:hide');
|
|
15680
|
+
app.emit('navbarNewHide', $el[0]);
|
|
15681
|
+
},
|
|
15682
|
+
show(el, animate) {
|
|
15683
|
+
if (el === void 0) {
|
|
15684
|
+
el = '.navbar-new-hidden';
|
|
15685
|
+
}
|
|
15686
|
+
if (animate === void 0) {
|
|
15687
|
+
animate = true;
|
|
15688
|
+
}
|
|
15689
|
+
const app = this;
|
|
15690
|
+
const $el = $(el);
|
|
15691
|
+
if (!$el.length) return;
|
|
15692
|
+
if (!$el.hasClass('navbar-new-hidden')) return;
|
|
15693
|
+
if (animate) {
|
|
15694
|
+
$el.addClass('navbar-new-transitioning');
|
|
15695
|
+
$el.transitionEnd(() => {
|
|
15696
|
+
$el.removeClass('navbar-new-transitioning');
|
|
15697
|
+
});
|
|
15698
|
+
}
|
|
15699
|
+
$el.removeClass('navbar-new-hidden navbar-new-large-hidden navbar-new-hidden-statusbar');
|
|
15700
|
+
$el.trigger('navbar-new:show');
|
|
15701
|
+
app.emit('navbarNewShow', $el[0]);
|
|
15702
|
+
},
|
|
15703
|
+
getElByPage(page) {
|
|
15704
|
+
let $pageEl;
|
|
15705
|
+
let $navbarEl;
|
|
15706
|
+
let pageData;
|
|
15707
|
+
if (page.$navbarNewEl || page.$el) {
|
|
15708
|
+
pageData = page;
|
|
15709
|
+
$pageEl = page.$el;
|
|
15710
|
+
} else {
|
|
15711
|
+
$pageEl = $(page);
|
|
15712
|
+
if ($pageEl.length > 0) pageData = $pageEl[0].f7Page;
|
|
15713
|
+
}
|
|
15714
|
+
if (pageData && pageData.$navbarNewEl && pageData.$navbarNewEl.length > 0) {
|
|
15715
|
+
$navbarEl = pageData.$navbarNewEl;
|
|
15716
|
+
} else if ($pageEl) {
|
|
15717
|
+
$navbarEl = $pageEl.children('.navbar-new');
|
|
15718
|
+
}
|
|
15719
|
+
if (!$navbarEl || $navbarEl && $navbarEl.length === 0) return undefined;
|
|
15720
|
+
return $navbarEl[0];
|
|
15721
|
+
},
|
|
15722
|
+
getPageByEl(navbarEl) {
|
|
15723
|
+
const $navbarEl = $(navbarEl);
|
|
15724
|
+
if ($navbarEl.parents('.page').length) {
|
|
15725
|
+
return $navbarEl.parents('.page')[0];
|
|
15726
|
+
}
|
|
15727
|
+
let pageEl;
|
|
15728
|
+
$navbarEl.parents('.view').find('.page').each(el => {
|
|
15729
|
+
if (el && el.f7Page && el.f7Page.navbarEl && $navbarEl[0] === el.f7Page.navbarEl) {
|
|
15730
|
+
pageEl = el;
|
|
15731
|
+
}
|
|
15732
|
+
});
|
|
15733
|
+
return pageEl;
|
|
15734
|
+
},
|
|
15735
|
+
collapseLargeTitle(navbarEl) {
|
|
15736
|
+
const app = this;
|
|
15737
|
+
const $navbarEl = $(navbarEl);
|
|
15738
|
+
const $pageEl = $(app.navbarNew.getPageByEl($navbarEl));
|
|
15739
|
+
$navbarEl.addClass('navbar-new-large-collapsed');
|
|
15740
|
+
$pageEl.eq(0).addClass('page-with-navbar-new-large-collapsed').trigger('page:navbarlargecollapsed');
|
|
15741
|
+
app.emit('pageNavbarLargeCollapsed', $pageEl[0]);
|
|
15742
|
+
$navbarEl.trigger('navbar-new:collapse');
|
|
15743
|
+
app.emit('navbarNewCollapse', $navbarEl[0]);
|
|
15744
|
+
},
|
|
15745
|
+
expandLargeTitle(navbarEl) {
|
|
15746
|
+
const app = this;
|
|
15747
|
+
const $navbarEl = $(navbarEl);
|
|
15748
|
+
const $pageEl = $(app.navbarNew.getPageByEl($navbarEl));
|
|
15749
|
+
$navbarEl.removeClass('navbar-new-large-collapsed');
|
|
15750
|
+
$pageEl.eq(0).removeClass('page-with-navbar-new-large-collapsed').trigger('page:navbarlargeexpanded');
|
|
15751
|
+
app.emit('pageNavbarLargeExpanded', $pageEl[0]);
|
|
15752
|
+
$navbarEl.trigger('navbar-new:expand');
|
|
15753
|
+
app.emit('navbarNewExpand', $navbarEl[0]);
|
|
15754
|
+
},
|
|
15755
|
+
toggleLargeTitle(navbarEl) {
|
|
15756
|
+
const app = this;
|
|
15757
|
+
const $navbarEl = $(navbarEl);
|
|
15758
|
+
if ($navbarEl.hasClass('navbar-new-large-collapsed')) {
|
|
15759
|
+
app.navbarNew.expandLargeTitle($navbarEl);
|
|
15760
|
+
} else {
|
|
15761
|
+
app.navbarNew.collapseLargeTitle($navbarEl);
|
|
15762
|
+
}
|
|
15763
|
+
},
|
|
15764
|
+
initNavbarOnScroll(pageEl, navbarEl, needHide, needCollapse, needTransparent) {
|
|
15765
|
+
const app = this;
|
|
15766
|
+
const support = getSupport$1();
|
|
15767
|
+
const $pageEl = $(pageEl);
|
|
15768
|
+
const $navbarEl = $(navbarEl);
|
|
15769
|
+
const $titleLargeEl = $navbarEl.find('.title-large');
|
|
15770
|
+
const isLarge = $titleLargeEl.length || $navbarEl.hasClass('navbar-new-large');
|
|
15771
|
+
let navbarHideHeight = 44;
|
|
15772
|
+
const snapPageScrollToLargeTitle = app.params.navbarNew.snapPageScrollToLargeTitle;
|
|
15773
|
+
const snapPageScrollToTransparentNavbar = app.params.navbarNew.snapPageScrollToTransparentNavbar;
|
|
15774
|
+
let previousScrollTop;
|
|
15775
|
+
let currentScrollTop;
|
|
15776
|
+
let scrollHeight;
|
|
15777
|
+
let offsetHeight;
|
|
15778
|
+
let reachEnd;
|
|
15779
|
+
let action;
|
|
15780
|
+
let navbarHidden;
|
|
15781
|
+
let navbarCollapsed;
|
|
15782
|
+
let navbarTitleLargeHeight;
|
|
15783
|
+
let navbarOffsetHeight;
|
|
15784
|
+
if (needCollapse || needHide && isLarge) {
|
|
15785
|
+
navbarTitleLargeHeight = $navbarEl.css('--f7-navbar-new-large-title-height');
|
|
15786
|
+
if (navbarTitleLargeHeight && navbarTitleLargeHeight.indexOf('px') >= 0) {
|
|
15787
|
+
navbarTitleLargeHeight = parseInt(navbarTitleLargeHeight, 10);
|
|
15788
|
+
if (Number.isNaN(navbarTitleLargeHeight) && $titleLargeEl.length) {
|
|
15789
|
+
navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;
|
|
15790
|
+
} else if (Number.isNaN(navbarTitleLargeHeight)) {
|
|
15791
|
+
if (app.theme === 'ios') navbarTitleLargeHeight = 52;else if (app.theme === 'md') navbarTitleLargeHeight = 88;
|
|
15792
|
+
}
|
|
15793
|
+
} else if ($titleLargeEl.length) {
|
|
15794
|
+
navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;
|
|
15795
|
+
} else {
|
|
15796
|
+
// eslint-disable-next-line
|
|
15797
|
+
if (app.theme === 'ios') navbarTitleLargeHeight = 52;else if (app.theme === 'md') navbarTitleLargeHeight = 88;
|
|
15798
|
+
}
|
|
15799
|
+
}
|
|
15800
|
+
if (needHide && isLarge) {
|
|
15801
|
+
navbarHideHeight += navbarTitleLargeHeight;
|
|
15802
|
+
}
|
|
15803
|
+
let scrollChanged;
|
|
15804
|
+
let scrollContent;
|
|
15805
|
+
let scrollTimeoutId;
|
|
15806
|
+
let touchEndTimeoutId;
|
|
15807
|
+
const touchSnapTimeout = 70;
|
|
15808
|
+
const desktopSnapTimeout = 300;
|
|
15809
|
+
function calcScrollableDistance() {
|
|
15810
|
+
$pageEl.find('.page-content').each(pageContentEl => {
|
|
15811
|
+
pageContentEl.f7ScrollableDistance = pageContentEl.scrollHeight - pageContentEl.offsetHeight;
|
|
15812
|
+
});
|
|
15813
|
+
}
|
|
15814
|
+
function snapLargeNavbar() {
|
|
15815
|
+
const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');
|
|
15816
|
+
if (inSearchbarExpanded) return;
|
|
15817
|
+
if (!scrollContent || currentScrollTop < 0) return;
|
|
15818
|
+
if (currentScrollTop >= navbarTitleLargeHeight / 2 && currentScrollTop < navbarTitleLargeHeight) {
|
|
15819
|
+
$(scrollContent).scrollTop(navbarTitleLargeHeight, 100);
|
|
15820
|
+
} else if (currentScrollTop < navbarTitleLargeHeight) {
|
|
15821
|
+
$(scrollContent).scrollTop(0, 200);
|
|
15822
|
+
}
|
|
15823
|
+
}
|
|
15824
|
+
function snapTransparentNavbar() {
|
|
15825
|
+
const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');
|
|
15826
|
+
if (inSearchbarExpanded) return;
|
|
15827
|
+
if (!scrollContent || currentScrollTop < 0) return;
|
|
15828
|
+
if (currentScrollTop >= navbarOffsetHeight / 2 && currentScrollTop < navbarOffsetHeight) {
|
|
15829
|
+
$(scrollContent).scrollTop(navbarOffsetHeight, 100);
|
|
15830
|
+
} else if (currentScrollTop < navbarOffsetHeight) {
|
|
15831
|
+
$(scrollContent).scrollTop(0, 200);
|
|
15832
|
+
}
|
|
15833
|
+
}
|
|
15834
|
+
function handleNavbarTransparent() {
|
|
15835
|
+
const isHidden = $navbarEl.hasClass('navbar-new-hidden');
|
|
15836
|
+
const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');
|
|
15837
|
+
if (inSearchbarExpanded || isHidden) return;
|
|
15838
|
+
if (!navbarOffsetHeight) {
|
|
15839
|
+
navbarOffsetHeight = navbarEl.offsetHeight;
|
|
15840
|
+
}
|
|
15841
|
+
let opacity = currentScrollTop / navbarOffsetHeight;
|
|
15842
|
+
const notTransparent = $navbarEl.hasClass('navbar-new-transparent-visible');
|
|
15843
|
+
opacity = Math.max(Math.min(opacity, 1), 0);
|
|
15844
|
+
if (notTransparent && opacity === 1 || !notTransparent && opacity === 0) {
|
|
15845
|
+
$navbarEl.find('.navbar-new-bg, .title').css('opacity', '');
|
|
15846
|
+
return;
|
|
15847
|
+
}
|
|
15848
|
+
if (notTransparent && opacity === 0) {
|
|
15849
|
+
$navbarEl.trigger('navbar-new:transparenthide');
|
|
15850
|
+
app.emit('navbarNewTransparentHide', $navbarEl[0]);
|
|
15851
|
+
$navbarEl.removeClass('navbar-new-transparent-visible');
|
|
15852
|
+
$navbarEl.find('.navbar-new-bg, .title').css('opacity', '');
|
|
15853
|
+
return;
|
|
15854
|
+
}
|
|
15855
|
+
if (!notTransparent && opacity === 1) {
|
|
15856
|
+
$navbarEl.trigger('navbar-new:transparentshow');
|
|
15857
|
+
app.emit('navbarNewTransparentShow', $navbarEl[0]);
|
|
15858
|
+
$navbarEl.addClass('navbar-new-transparent-visible');
|
|
15859
|
+
$navbarEl.find('.navbar-new-bg, .title').css('opacity', '');
|
|
15860
|
+
return;
|
|
15861
|
+
}
|
|
15862
|
+
$navbarEl.find('.navbar-new-bg, .title').css('opacity', opacity);
|
|
15863
|
+
if (snapPageScrollToTransparentNavbar) {
|
|
15864
|
+
if (!support.touch) {
|
|
15865
|
+
clearTimeout(scrollTimeoutId);
|
|
15866
|
+
scrollTimeoutId = setTimeout(() => {
|
|
15867
|
+
snapTransparentNavbar();
|
|
15868
|
+
}, desktopSnapTimeout);
|
|
15869
|
+
} else if (touchEndTimeoutId) {
|
|
15870
|
+
clearTimeout(touchEndTimeoutId);
|
|
15871
|
+
touchEndTimeoutId = null;
|
|
15872
|
+
touchEndTimeoutId = setTimeout(() => {
|
|
15873
|
+
snapTransparentNavbar();
|
|
15874
|
+
clearTimeout(touchEndTimeoutId);
|
|
15875
|
+
touchEndTimeoutId = null;
|
|
15876
|
+
}, touchSnapTimeout);
|
|
15877
|
+
}
|
|
15878
|
+
}
|
|
15879
|
+
}
|
|
15880
|
+
let previousCollapseProgress = null;
|
|
15881
|
+
let collapseProgress = null;
|
|
15882
|
+
function handleLargeNavbarCollapse(pageContentEl) {
|
|
15883
|
+
const isHidden = $navbarEl.hasClass('navbar-new-hidden');
|
|
15884
|
+
if (isHidden) return;
|
|
15885
|
+
const isLargeTransparent = $navbarEl.hasClass('navbar-new-large-transparent') || $navbarEl.hasClass('navbar-new-large') && $navbarEl.hasClass('navbar-new-transparent');
|
|
15886
|
+
previousCollapseProgress = collapseProgress;
|
|
15887
|
+
const scrollableDistance = Math.min(navbarTitleLargeHeight, pageContentEl.f7ScrollableDistance || navbarTitleLargeHeight);
|
|
15888
|
+
collapseProgress = Math.min(Math.max(currentScrollTop / scrollableDistance, 0), 1);
|
|
15889
|
+
const previousCollapseWasInMiddle = previousCollapseProgress > 0 && previousCollapseProgress < 1;
|
|
15890
|
+
const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');
|
|
15891
|
+
if (inSearchbarExpanded) return;
|
|
15892
|
+
navbarCollapsed = $navbarEl.hasClass('navbar-new-large-collapsed');
|
|
15893
|
+
const $bgEl = $navbarEl.find('.navbar-new-bg');
|
|
15894
|
+
if (collapseProgress === 0 && navbarCollapsed) {
|
|
15895
|
+
app.navbarNew.expandLargeTitle($navbarEl[0]);
|
|
15896
|
+
} else if (collapseProgress === 1 && !navbarCollapsed) {
|
|
15897
|
+
app.navbarNew.collapseLargeTitle($navbarEl[0]);
|
|
15898
|
+
}
|
|
15899
|
+
if (collapseProgress === 0 && navbarCollapsed || collapseProgress === 0 && previousCollapseWasInMiddle || collapseProgress === 1 && !navbarCollapsed || collapseProgress === 1 && previousCollapseWasInMiddle) {
|
|
15900
|
+
if (app.theme === 'md') {
|
|
15901
|
+
$navbarEl.find('.navbar-new-inner').css('overflow', '');
|
|
15902
|
+
}
|
|
15903
|
+
$navbarEl.find('.title').css('opacity', '');
|
|
15904
|
+
$navbarEl.find('.title-large-text, .subnavbar').css('transform', '');
|
|
15905
|
+
$navbarEl.find('.title-large-text').css('opacity', '');
|
|
15906
|
+
if (app.theme === 'md') {
|
|
15907
|
+
if (isLargeTransparent) {
|
|
15908
|
+
$bgEl.css('opacity', '');
|
|
15909
|
+
}
|
|
15910
|
+
$bgEl.css('transform', '');
|
|
15911
|
+
}
|
|
15912
|
+
} else if (collapseProgress > 0 && collapseProgress < 1) {
|
|
15913
|
+
if (app.theme === 'md') {
|
|
15914
|
+
$navbarEl.find('.navbar-new-inner').css('overflow', 'visible');
|
|
15915
|
+
}
|
|
15916
|
+
$navbarEl.find('.title').css('opacity', -0.5 + collapseProgress * 1.5);
|
|
15917
|
+
$navbarEl.find('.title-large-text, .subnavbar').css('transform', `translate3d(0px, ${-1 * collapseProgress * navbarTitleLargeHeight}px, 0)`);
|
|
15918
|
+
$navbarEl.find('.title-large-text').css('opacity', 1 - collapseProgress * 2);
|
|
15919
|
+
if (app.theme === 'md') {
|
|
15920
|
+
if (isLargeTransparent) {
|
|
15921
|
+
$bgEl.css('opacity', collapseProgress);
|
|
15922
|
+
}
|
|
15923
|
+
$bgEl.css('transform', `translate3d(0px, ${-1 * collapseProgress * navbarTitleLargeHeight}px, 0)`);
|
|
15924
|
+
}
|
|
15925
|
+
}
|
|
15926
|
+
if (snapPageScrollToLargeTitle) {
|
|
15927
|
+
if (!support.touch) {
|
|
15928
|
+
clearTimeout(scrollTimeoutId);
|
|
15929
|
+
scrollTimeoutId = setTimeout(() => {
|
|
15930
|
+
snapLargeNavbar();
|
|
15931
|
+
}, desktopSnapTimeout);
|
|
15932
|
+
} else if (touchEndTimeoutId) {
|
|
15933
|
+
clearTimeout(touchEndTimeoutId);
|
|
15934
|
+
touchEndTimeoutId = null;
|
|
15935
|
+
touchEndTimeoutId = setTimeout(() => {
|
|
15936
|
+
snapLargeNavbar();
|
|
15937
|
+
clearTimeout(touchEndTimeoutId);
|
|
15938
|
+
touchEndTimeoutId = null;
|
|
15939
|
+
}, touchSnapTimeout);
|
|
15940
|
+
}
|
|
15941
|
+
}
|
|
15942
|
+
}
|
|
15943
|
+
function handleTitleHideShow() {
|
|
15944
|
+
if ($pageEl.hasClass('page-with-card-opened')) return;
|
|
15945
|
+
scrollHeight = scrollContent.scrollHeight;
|
|
15946
|
+
offsetHeight = scrollContent.offsetHeight;
|
|
15947
|
+
reachEnd = currentScrollTop + offsetHeight >= scrollHeight;
|
|
15948
|
+
navbarHidden = $navbarEl.hasClass('navbar-new-hidden');
|
|
15949
|
+
if (reachEnd) {
|
|
15950
|
+
if (app.params.navbarNew.showOnPageScrollEnd) {
|
|
15951
|
+
action = 'show';
|
|
15952
|
+
}
|
|
15953
|
+
} else if (previousScrollTop > currentScrollTop) {
|
|
15954
|
+
if (app.params.navbarNew.showOnPageScrollTop || currentScrollTop <= navbarHideHeight) {
|
|
15955
|
+
action = 'show';
|
|
15956
|
+
} else {
|
|
15957
|
+
action = 'hide';
|
|
15958
|
+
}
|
|
15959
|
+
} else if (currentScrollTop > navbarHideHeight) {
|
|
15960
|
+
action = 'hide';
|
|
15961
|
+
} else {
|
|
15962
|
+
action = 'show';
|
|
15963
|
+
}
|
|
15964
|
+
if (action === 'show' && navbarHidden) {
|
|
15965
|
+
app.navbarNew.show($navbarEl, true, true);
|
|
15966
|
+
navbarHidden = false;
|
|
15967
|
+
} else if (action === 'hide' && !navbarHidden) {
|
|
15968
|
+
app.navbarNew.hide($navbarEl, true, false, true);
|
|
15969
|
+
navbarHidden = true;
|
|
15970
|
+
}
|
|
15971
|
+
previousScrollTop = currentScrollTop;
|
|
15972
|
+
}
|
|
15973
|
+
function handleScroll(e) {
|
|
15974
|
+
scrollContent = this;
|
|
15975
|
+
if (e && e.target && e.target !== scrollContent) {
|
|
15976
|
+
return;
|
|
15977
|
+
}
|
|
15978
|
+
currentScrollTop = scrollContent.scrollTop;
|
|
15979
|
+
scrollChanged = currentScrollTop;
|
|
15980
|
+
if (needCollapse) {
|
|
15981
|
+
handleLargeNavbarCollapse(scrollContent);
|
|
15982
|
+
} else if (needTransparent) {
|
|
15983
|
+
handleNavbarTransparent();
|
|
15984
|
+
}
|
|
15985
|
+
if ($pageEl.hasClass('page-previous')) return;
|
|
15986
|
+
if (needHide) {
|
|
15987
|
+
handleTitleHideShow();
|
|
15988
|
+
}
|
|
15989
|
+
}
|
|
15990
|
+
function handeTouchStart() {
|
|
15991
|
+
scrollChanged = false;
|
|
15992
|
+
}
|
|
15993
|
+
function handleTouchEnd() {
|
|
15994
|
+
clearTimeout(touchEndTimeoutId);
|
|
15995
|
+
touchEndTimeoutId = null;
|
|
15996
|
+
touchEndTimeoutId = setTimeout(() => {
|
|
15997
|
+
if (scrollChanged !== false) {
|
|
15998
|
+
if (needTransparent && !needCollapse) {
|
|
15999
|
+
snapTransparentNavbar();
|
|
16000
|
+
} else {
|
|
16001
|
+
snapLargeNavbar();
|
|
16002
|
+
}
|
|
16003
|
+
clearTimeout(touchEndTimeoutId);
|
|
16004
|
+
touchEndTimeoutId = null;
|
|
16005
|
+
}
|
|
16006
|
+
}, touchSnapTimeout);
|
|
16007
|
+
}
|
|
16008
|
+
$pageEl.on('scroll', '.page-content', handleScroll, true);
|
|
16009
|
+
if (support.touch && (needCollapse && snapPageScrollToLargeTitle || needTransparent && snapPageScrollToTransparentNavbar)) {
|
|
16010
|
+
app.on('touchstart:passive', handeTouchStart);
|
|
16011
|
+
app.on('touchend:passive', handleTouchEnd);
|
|
16012
|
+
}
|
|
16013
|
+
calcScrollableDistance();
|
|
16014
|
+
if (needCollapse || needTransparent) {
|
|
16015
|
+
$pageEl.find('.page-content').each(pageContentEl => {
|
|
16016
|
+
if (pageContentEl.scrollTop > 0) handleScroll.call(pageContentEl);
|
|
16017
|
+
});
|
|
16018
|
+
}
|
|
16019
|
+
app.on('resize', calcScrollableDistance);
|
|
16020
|
+
$pageEl[0].f7DetachNavbarNewScrollHandlers = function f7DetachNavbarNewScrollHandlers() {
|
|
16021
|
+
app.off('resize', calcScrollableDistance);
|
|
16022
|
+
delete $pageEl[0].f7DetachNavbarNewScrollHandlers;
|
|
16023
|
+
$pageEl.off('scroll', '.page-content', handleScroll, true);
|
|
16024
|
+
if (support.touch && (needCollapse && snapPageScrollToLargeTitle || needTransparent && snapPageScrollToTransparentNavbar)) {
|
|
16025
|
+
app.off('touchstart:passive', handeTouchStart);
|
|
16026
|
+
app.off('touchend:passive', handleTouchEnd);
|
|
16027
|
+
}
|
|
16028
|
+
};
|
|
16029
|
+
}
|
|
16030
|
+
};
|
|
16031
|
+
var NavbarNew = {
|
|
16032
|
+
name: 'navbar-new',
|
|
16033
|
+
create() {
|
|
16034
|
+
const app = this;
|
|
16035
|
+
bindMethods(app, {
|
|
16036
|
+
navbarNew: Navbar
|
|
16037
|
+
});
|
|
16038
|
+
},
|
|
16039
|
+
params: {
|
|
16040
|
+
navbarNew: {
|
|
16041
|
+
scrollTopOnTitleClick: true,
|
|
16042
|
+
iosCenterTitle: true,
|
|
16043
|
+
mdCenterTitle: false,
|
|
16044
|
+
hideOnPageScroll: false,
|
|
16045
|
+
showOnPageScrollEnd: true,
|
|
16046
|
+
showOnPageScrollTop: true,
|
|
16047
|
+
collapseLargeTitleOnScroll: true,
|
|
16048
|
+
snapPageScrollToLargeTitle: true,
|
|
16049
|
+
snapPageScrollToTransparentNavbar: true
|
|
16050
|
+
}
|
|
16051
|
+
},
|
|
16052
|
+
on: {
|
|
16053
|
+
'panelBreakpoint panelCollapsedBreakpoint panelResize viewResize resize viewMasterDetailBreakpoint': function onPanelResize() {
|
|
16054
|
+
const app = this;
|
|
16055
|
+
$('.navbar-new').each(navbarEl => {
|
|
16056
|
+
app.navbarNew.size(navbarEl);
|
|
16057
|
+
});
|
|
16058
|
+
},
|
|
16059
|
+
pageBeforeRemove(page) {
|
|
16060
|
+
if (page.$el[0].f7DetachNavbarNewScrollHandlers) {
|
|
16061
|
+
page.$el[0].f7DetachNavbarNewScrollHandlers();
|
|
16062
|
+
}
|
|
16063
|
+
},
|
|
16064
|
+
pageReinit(page) {
|
|
16065
|
+
const app = this;
|
|
16066
|
+
const $navbarEl = $(app.navbarNew.getElByPage(page));
|
|
16067
|
+
if (!$navbarEl || $navbarEl.length === 0) return;
|
|
16068
|
+
app.navbarNew.size($navbarEl);
|
|
16069
|
+
},
|
|
16070
|
+
pageInit(page) {
|
|
16071
|
+
const app = this;
|
|
16072
|
+
const $navbarEl = $(app.navbarNew.getElByPage(page));
|
|
16073
|
+
if (!$navbarEl || $navbarEl.length === 0) return;
|
|
16074
|
+
|
|
16075
|
+
// Size
|
|
16076
|
+
app.navbarNew.size($navbarEl);
|
|
16077
|
+
|
|
16078
|
+
// Need Collapse On Scroll
|
|
16079
|
+
let needCollapseOnScrollHandler;
|
|
16080
|
+
if ($navbarEl.find('.title-large').length > 0) {
|
|
16081
|
+
$navbarEl.addClass('navbar-new-large');
|
|
16082
|
+
}
|
|
16083
|
+
if ($navbarEl.hasClass('navbar-new-large')) {
|
|
16084
|
+
if (app.params.navbarNew.collapseLargeTitleOnScroll) needCollapseOnScrollHandler = true;
|
|
16085
|
+
page.$el.addClass('page-with-navbar-new-large');
|
|
16086
|
+
}
|
|
16087
|
+
|
|
16088
|
+
// Need transparent on scroll
|
|
16089
|
+
let needTransparentOnScroll;
|
|
16090
|
+
if (!needCollapseOnScrollHandler && $navbarEl.hasClass('navbar-new-transparent')) {
|
|
16091
|
+
needTransparentOnScroll = true;
|
|
16092
|
+
}
|
|
16093
|
+
|
|
16094
|
+
// Need Hide On Scroll
|
|
16095
|
+
let needHideOnScrollHandler;
|
|
16096
|
+
if (app.params.navbarNew.hideOnPageScroll || page.$el.find('.hide-navbar-new-on-scroll').length || page.$el.hasClass('hide-navbar-new-on-scroll') || page.$el.find('.hide-bars-on-scroll').length || page.$el.hasClass('hide-bars-on-scroll')) {
|
|
16097
|
+
if (page.$el.find('.keep-navbar-new-on-scroll').length || page.$el.hasClass('keep-navbar-new-on-scroll') || page.$el.find('.keep-bars-on-scroll').length || page.$el.hasClass('keep-bars-on-scroll')) {
|
|
16098
|
+
needHideOnScrollHandler = false;
|
|
16099
|
+
} else {
|
|
16100
|
+
needHideOnScrollHandler = true;
|
|
16101
|
+
}
|
|
16102
|
+
}
|
|
16103
|
+
if (needCollapseOnScrollHandler || needHideOnScrollHandler || needTransparentOnScroll) {
|
|
16104
|
+
app.navbarNew.initNavbarOnScroll(page.el, $navbarEl[0], needHideOnScrollHandler, needCollapseOnScrollHandler, needTransparentOnScroll);
|
|
16105
|
+
}
|
|
16106
|
+
},
|
|
16107
|
+
'panelOpen panelSwipeOpen modalOpen': function onPanelModalOpen(instance) {
|
|
16108
|
+
const app = this;
|
|
16109
|
+
instance.$el.find('.navbar-new').each(navbarEl => {
|
|
16110
|
+
app.navbarNew.size(navbarEl);
|
|
16111
|
+
});
|
|
16112
|
+
},
|
|
16113
|
+
tabShow(tabEl) {
|
|
16114
|
+
const app = this;
|
|
16115
|
+
$(tabEl).find('.navbar-new').each(navbarEl => {
|
|
16116
|
+
app.navbarNew.size(navbarEl);
|
|
16117
|
+
});
|
|
16118
|
+
}
|
|
16119
|
+
},
|
|
16120
|
+
clicks: {
|
|
16121
|
+
'.navbar-new .title': function onTitleClick($clickedEl, clickedData, e) {
|
|
16122
|
+
const app = this;
|
|
16123
|
+
if (!app.params.navbarNew.scrollTopOnTitleClick) return;
|
|
16124
|
+
if ($(e.target).closest('a, button').length > 0) {
|
|
16125
|
+
return;
|
|
16126
|
+
}
|
|
16127
|
+
let $pageContentEl;
|
|
16128
|
+
|
|
16129
|
+
// Find active page
|
|
16130
|
+
const $navbarEl = $clickedEl.parents('.navbar-new');
|
|
16131
|
+
|
|
16132
|
+
// Static Layout
|
|
16133
|
+
$pageContentEl = $navbarEl.parents('.page-content');
|
|
16134
|
+
if ($pageContentEl.length === 0) {
|
|
16135
|
+
// Fixed Layout
|
|
16136
|
+
if ($navbarEl.parents('.page').length > 0) {
|
|
16137
|
+
$pageContentEl = $navbarEl.parents('.page').find('.page-content');
|
|
16138
|
+
}
|
|
16139
|
+
}
|
|
16140
|
+
if ($pageContentEl && $pageContentEl.length > 0) {
|
|
16141
|
+
// Check for tab
|
|
16142
|
+
if ($pageContentEl.hasClass('tab')) {
|
|
16143
|
+
$pageContentEl = $pageContentEl.parent('.tabs').children('.page-content.tab-active');
|
|
16144
|
+
}
|
|
16145
|
+
if ($pageContentEl.length > 0) $pageContentEl.scrollTop(0, 300);
|
|
16146
|
+
}
|
|
16147
|
+
}
|
|
16148
|
+
},
|
|
16149
|
+
vnode: {
|
|
16150
|
+
'navbar-new': {
|
|
16151
|
+
postpatch(vnode) {
|
|
16152
|
+
const app = this;
|
|
16153
|
+
app.navbarNew.size(vnode.elm);
|
|
16154
|
+
}
|
|
16155
|
+
}
|
|
16156
|
+
}
|
|
16157
|
+
};
|
|
16158
|
+
|
|
16159
|
+
/* eslint no-control-regex: "off" */
|
|
16160
|
+
const defaultDiacriticsRemovalap$1 = [{
|
|
16161
|
+
base: 'A',
|
|
16162
|
+
letters: '\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F'
|
|
16163
|
+
}, {
|
|
16164
|
+
base: 'AA',
|
|
16165
|
+
letters: '\uA732'
|
|
16166
|
+
}, {
|
|
16167
|
+
base: 'AE',
|
|
16168
|
+
letters: '\u00C6\u01FC\u01E2'
|
|
16169
|
+
}, {
|
|
16170
|
+
base: 'AO',
|
|
16171
|
+
letters: '\uA734'
|
|
16172
|
+
}, {
|
|
16173
|
+
base: 'AU',
|
|
16174
|
+
letters: '\uA736'
|
|
16175
|
+
}, {
|
|
16176
|
+
base: 'AV',
|
|
16177
|
+
letters: '\uA738\uA73A'
|
|
16178
|
+
}, {
|
|
16179
|
+
base: 'AY',
|
|
16180
|
+
letters: '\uA73C'
|
|
16181
|
+
}, {
|
|
16182
|
+
base: 'B',
|
|
16183
|
+
letters: '\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181'
|
|
16184
|
+
}, {
|
|
16185
|
+
base: 'C',
|
|
16186
|
+
letters: '\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E'
|
|
16187
|
+
}, {
|
|
16188
|
+
base: 'D',
|
|
16189
|
+
letters: '\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779'
|
|
16190
|
+
}, {
|
|
16191
|
+
base: 'DZ',
|
|
16192
|
+
letters: '\u01F1\u01C4'
|
|
16193
|
+
}, {
|
|
16194
|
+
base: 'Dz',
|
|
16195
|
+
letters: '\u01F2\u01C5'
|
|
16196
|
+
}, {
|
|
16197
|
+
base: 'E',
|
|
16198
|
+
letters: '\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E'
|
|
16199
|
+
}, {
|
|
16200
|
+
base: 'F',
|
|
16201
|
+
letters: '\u0046\u24BB\uFF26\u1E1E\u0191\uA77B'
|
|
16202
|
+
}, {
|
|
16203
|
+
base: 'G',
|
|
16204
|
+
letters: '\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E'
|
|
16205
|
+
}, {
|
|
16206
|
+
base: 'H',
|
|
16207
|
+
letters: '\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D'
|
|
16208
|
+
}, {
|
|
16209
|
+
base: 'I',
|
|
16210
|
+
letters: '\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197'
|
|
16211
|
+
}, {
|
|
16212
|
+
base: 'J',
|
|
16213
|
+
letters: '\u004A\u24BF\uFF2A\u0134\u0248'
|
|
16214
|
+
}, {
|
|
16215
|
+
base: 'K',
|
|
16216
|
+
letters: '\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2'
|
|
16217
|
+
}, {
|
|
16218
|
+
base: 'L',
|
|
16219
|
+
letters: '\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780'
|
|
16220
|
+
}, {
|
|
16221
|
+
base: 'LJ',
|
|
16222
|
+
letters: '\u01C7'
|
|
16223
|
+
}, {
|
|
16224
|
+
base: 'Lj',
|
|
16225
|
+
letters: '\u01C8'
|
|
16226
|
+
}, {
|
|
16227
|
+
base: 'M',
|
|
16228
|
+
letters: '\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C'
|
|
16229
|
+
}, {
|
|
16230
|
+
base: 'N',
|
|
16231
|
+
letters: '\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4'
|
|
16232
|
+
}, {
|
|
16233
|
+
base: 'NJ',
|
|
16234
|
+
letters: '\u01CA'
|
|
16235
|
+
}, {
|
|
16236
|
+
base: 'Nj',
|
|
16237
|
+
letters: '\u01CB'
|
|
16238
|
+
}, {
|
|
16239
|
+
base: 'O',
|
|
16240
|
+
letters: '\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C'
|
|
16241
|
+
}, {
|
|
16242
|
+
base: 'OI',
|
|
16243
|
+
letters: '\u01A2'
|
|
16244
|
+
}, {
|
|
16245
|
+
base: 'OO',
|
|
16246
|
+
letters: '\uA74E'
|
|
16247
|
+
}, {
|
|
16248
|
+
base: 'OU',
|
|
16249
|
+
letters: '\u0222'
|
|
16250
|
+
}, {
|
|
16251
|
+
base: 'OE',
|
|
16252
|
+
letters: '\u008C\u0152'
|
|
16253
|
+
}, {
|
|
16254
|
+
base: 'oe',
|
|
16255
|
+
letters: '\u009C\u0153'
|
|
16256
|
+
}, {
|
|
16257
|
+
base: 'P',
|
|
16258
|
+
letters: '\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754'
|
|
16259
|
+
}, {
|
|
16260
|
+
base: 'Q',
|
|
16261
|
+
letters: '\u0051\u24C6\uFF31\uA756\uA758\u024A'
|
|
16262
|
+
}, {
|
|
16263
|
+
base: 'R',
|
|
16264
|
+
letters: '\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782'
|
|
16265
|
+
}, {
|
|
16266
|
+
base: 'S',
|
|
16267
|
+
letters: '\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784'
|
|
16268
|
+
}, {
|
|
16269
|
+
base: 'T',
|
|
16270
|
+
letters: '\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786'
|
|
16271
|
+
}, {
|
|
16272
|
+
base: 'TZ',
|
|
16273
|
+
letters: '\uA728'
|
|
16274
|
+
}, {
|
|
16275
|
+
base: 'U',
|
|
16276
|
+
letters: '\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244'
|
|
16277
|
+
}, {
|
|
16278
|
+
base: 'V',
|
|
16279
|
+
letters: '\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245'
|
|
16280
|
+
}, {
|
|
16281
|
+
base: 'VY',
|
|
16282
|
+
letters: '\uA760'
|
|
16283
|
+
}, {
|
|
16284
|
+
base: 'W',
|
|
16285
|
+
letters: '\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72'
|
|
16286
|
+
}, {
|
|
16287
|
+
base: 'X',
|
|
16288
|
+
letters: '\u0058\u24CD\uFF38\u1E8A\u1E8C'
|
|
16289
|
+
}, {
|
|
16290
|
+
base: 'Y',
|
|
16291
|
+
letters: '\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE'
|
|
16292
|
+
}, {
|
|
16293
|
+
base: 'Z',
|
|
16294
|
+
letters: '\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762'
|
|
16295
|
+
}, {
|
|
16296
|
+
base: 'a',
|
|
16297
|
+
letters: '\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250'
|
|
16298
|
+
}, {
|
|
16299
|
+
base: 'aa',
|
|
16300
|
+
letters: '\uA733'
|
|
16301
|
+
}, {
|
|
16302
|
+
base: 'ae',
|
|
16303
|
+
letters: '\u00E6\u01FD\u01E3'
|
|
16304
|
+
}, {
|
|
16305
|
+
base: 'ao',
|
|
16306
|
+
letters: '\uA735'
|
|
16307
|
+
}, {
|
|
16308
|
+
base: 'au',
|
|
16309
|
+
letters: '\uA737'
|
|
16310
|
+
}, {
|
|
16311
|
+
base: 'av',
|
|
16312
|
+
letters: '\uA739\uA73B'
|
|
16313
|
+
}, {
|
|
16314
|
+
base: 'ay',
|
|
16315
|
+
letters: '\uA73D'
|
|
16316
|
+
}, {
|
|
16317
|
+
base: 'b',
|
|
16318
|
+
letters: '\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253'
|
|
16319
|
+
}, {
|
|
16320
|
+
base: 'c',
|
|
16321
|
+
letters: '\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184'
|
|
16322
|
+
}, {
|
|
16323
|
+
base: 'd',
|
|
16324
|
+
letters: '\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A'
|
|
16325
|
+
}, {
|
|
16326
|
+
base: 'dz',
|
|
16327
|
+
letters: '\u01F3\u01C6'
|
|
16328
|
+
}, {
|
|
16329
|
+
base: 'e',
|
|
16330
|
+
letters: '\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD'
|
|
16331
|
+
}, {
|
|
16332
|
+
base: 'f',
|
|
16333
|
+
letters: '\u0066\u24D5\uFF46\u1E1F\u0192\uA77C'
|
|
16334
|
+
}, {
|
|
16335
|
+
base: 'g',
|
|
16336
|
+
letters: '\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F'
|
|
16337
|
+
}, {
|
|
16338
|
+
base: 'h',
|
|
16339
|
+
letters: '\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265'
|
|
16340
|
+
}, {
|
|
16341
|
+
base: 'hv',
|
|
16342
|
+
letters: '\u0195'
|
|
16343
|
+
}, {
|
|
16344
|
+
base: 'i',
|
|
16345
|
+
letters: '\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131'
|
|
16346
|
+
}, {
|
|
16347
|
+
base: 'j',
|
|
16348
|
+
letters: '\u006A\u24D9\uFF4A\u0135\u01F0\u0249'
|
|
16349
|
+
}, {
|
|
16350
|
+
base: 'k',
|
|
16351
|
+
letters: '\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3'
|
|
16352
|
+
}, {
|
|
16353
|
+
base: 'l',
|
|
16354
|
+
letters: '\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747'
|
|
16355
|
+
}, {
|
|
16356
|
+
base: 'lj',
|
|
16357
|
+
letters: '\u01C9'
|
|
16358
|
+
}, {
|
|
16359
|
+
base: 'm',
|
|
16360
|
+
letters: '\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F'
|
|
16361
|
+
}, {
|
|
16362
|
+
base: 'n',
|
|
16363
|
+
letters: '\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5'
|
|
16364
|
+
}, {
|
|
16365
|
+
base: 'nj',
|
|
16366
|
+
letters: '\u01CC'
|
|
16367
|
+
}, {
|
|
16368
|
+
base: 'o',
|
|
16369
|
+
letters: '\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275'
|
|
16370
|
+
}, {
|
|
16371
|
+
base: 'oi',
|
|
16372
|
+
letters: '\u01A3'
|
|
16373
|
+
}, {
|
|
16374
|
+
base: 'ou',
|
|
16375
|
+
letters: '\u0223'
|
|
16376
|
+
}, {
|
|
16377
|
+
base: 'oo',
|
|
16378
|
+
letters: '\uA74F'
|
|
16379
|
+
}, {
|
|
16380
|
+
base: 'p',
|
|
16381
|
+
letters: '\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755'
|
|
16382
|
+
}, {
|
|
16383
|
+
base: 'q',
|
|
16384
|
+
letters: '\u0071\u24E0\uFF51\u024B\uA757\uA759'
|
|
16385
|
+
}, {
|
|
16386
|
+
base: 'r',
|
|
16387
|
+
letters: '\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783'
|
|
16388
|
+
}, {
|
|
16389
|
+
base: 's',
|
|
16390
|
+
letters: '\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B'
|
|
16391
|
+
}, {
|
|
16392
|
+
base: 't',
|
|
16393
|
+
letters: '\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787'
|
|
16394
|
+
}, {
|
|
16395
|
+
base: 'tz',
|
|
16396
|
+
letters: '\uA729'
|
|
16397
|
+
}, {
|
|
16398
|
+
base: 'u',
|
|
16399
|
+
letters: '\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289'
|
|
16400
|
+
}, {
|
|
16401
|
+
base: 'v',
|
|
16402
|
+
letters: '\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C'
|
|
16403
|
+
}, {
|
|
16404
|
+
base: 'vy',
|
|
16405
|
+
letters: '\uA761'
|
|
16406
|
+
}, {
|
|
16407
|
+
base: 'w',
|
|
16408
|
+
letters: '\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73'
|
|
16409
|
+
}, {
|
|
16410
|
+
base: 'x',
|
|
16411
|
+
letters: '\u0078\u24E7\uFF58\u1E8B\u1E8D'
|
|
16412
|
+
}, {
|
|
16413
|
+
base: 'y',
|
|
16414
|
+
letters: '\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF'
|
|
16415
|
+
}, {
|
|
16416
|
+
base: 'z',
|
|
16417
|
+
letters: '\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763'
|
|
16418
|
+
}];
|
|
16419
|
+
const diacriticsMap$1 = {};
|
|
16420
|
+
for (let i = 0; i < defaultDiacriticsRemovalap$1.length; i += 1) {
|
|
16421
|
+
const letters = defaultDiacriticsRemovalap$1[i].letters;
|
|
16422
|
+
for (let j = 0; j < letters.length; j += 1) {
|
|
16423
|
+
diacriticsMap$1[letters[j]] = defaultDiacriticsRemovalap$1[i].base;
|
|
16424
|
+
}
|
|
16425
|
+
}
|
|
16426
|
+
function removeDiacritics$1(str) {
|
|
16427
|
+
return str.replace(/[^\u0000-\u007E]/g, a => diacriticsMap$1[a] || a);
|
|
16428
|
+
}
|
|
16429
|
+
|
|
16430
|
+
let SearchbarNew$1 = class SearchbarNew extends Framework7Class {
|
|
16431
|
+
constructor(app, params) {
|
|
16432
|
+
if (params === void 0) {
|
|
16433
|
+
params = {};
|
|
16434
|
+
}
|
|
16435
|
+
super(params, [app]);
|
|
16436
|
+
const sb = this;
|
|
16437
|
+
const defaults = {
|
|
16438
|
+
el: undefined,
|
|
16439
|
+
inputEl: undefined,
|
|
16440
|
+
inputEvents: 'change input compositionend',
|
|
16441
|
+
disableButton: true,
|
|
16442
|
+
disableButtonEl: undefined,
|
|
16443
|
+
backdropEl: undefined,
|
|
16444
|
+
searchContainer: undefined,
|
|
16445
|
+
// container to search, HTMLElement or CSS selector
|
|
16446
|
+
searchItem: 'li',
|
|
16447
|
+
// single item selector, CSS selector
|
|
16448
|
+
searchIn: undefined,
|
|
16449
|
+
// where to search in item, CSS selector
|
|
16450
|
+
searchGroup: '.list-group',
|
|
16451
|
+
searchGroupTitle: '.list-group-title',
|
|
16452
|
+
ignore: '.searchbar-new-ignore',
|
|
16453
|
+
foundEl: '.searchbar-new-found',
|
|
16454
|
+
notFoundEl: '.searchbar-new-not-found',
|
|
16455
|
+
hideOnEnableEl: '.searchbar-new-hide-on-enable',
|
|
16456
|
+
hideOnSearchEl: '.searchbar-new-hide-on-search',
|
|
16457
|
+
backdrop: true,
|
|
16458
|
+
removeDiacritics: true,
|
|
16459
|
+
customSearch: false,
|
|
16460
|
+
hideGroupTitles: true,
|
|
16461
|
+
hideGroups: true,
|
|
16462
|
+
disableOnBackdropClick: true,
|
|
16463
|
+
expandable: false,
|
|
16464
|
+
inline: false
|
|
16465
|
+
};
|
|
16466
|
+
|
|
16467
|
+
// Extend defaults with modules params
|
|
16468
|
+
sb.useModulesParams(defaults);
|
|
16469
|
+
sb.params = extend$3(defaults, params);
|
|
16470
|
+
const $el = $(sb.params.el);
|
|
16471
|
+
if ($el.length === 0) return sb;
|
|
16472
|
+
if ($el[0].f7SearchbarNew) return $el[0].f7SearchbarNew;
|
|
16473
|
+
$el[0].f7SearchbarNew = sb;
|
|
16474
|
+
let $pageEl;
|
|
16475
|
+
const $navbarEl = $el.parents('.navbar-new');
|
|
16476
|
+
if ($el.parents('.page').length > 0) {
|
|
16477
|
+
$pageEl = $el.parents('.page');
|
|
16478
|
+
} else if ($navbarEl.length > 0) {
|
|
16479
|
+
$pageEl = $(app.navbarNew.getPageByEl($navbarEl[0]));
|
|
16480
|
+
if (!$pageEl.length) {
|
|
16481
|
+
const $currentPageEl = $el.parents('.view').find('.page-current');
|
|
16482
|
+
if ($currentPageEl[0] && $currentPageEl[0].f7Page && $currentPageEl[0].f7Page.navbarNewEl === $navbarEl[0]) {
|
|
16483
|
+
$pageEl = $currentPageEl;
|
|
16484
|
+
}
|
|
16485
|
+
}
|
|
16486
|
+
}
|
|
16487
|
+
let $foundEl;
|
|
16488
|
+
if (params.foundEl) {
|
|
16489
|
+
$foundEl = $(params.foundEl);
|
|
16490
|
+
} else if (typeof sb.params.foundEl === 'string' && $pageEl) {
|
|
16491
|
+
$foundEl = $pageEl.find(sb.params.foundEl);
|
|
16492
|
+
}
|
|
16493
|
+
let $notFoundEl;
|
|
16494
|
+
if (params.notFoundEl) {
|
|
16495
|
+
$notFoundEl = $(params.notFoundEl);
|
|
16496
|
+
} else if (typeof sb.params.notFoundEl === 'string' && $pageEl) {
|
|
16497
|
+
$notFoundEl = $pageEl.find(sb.params.notFoundEl);
|
|
16498
|
+
}
|
|
16499
|
+
let $hideOnEnableEl;
|
|
16500
|
+
if (params.hideOnEnableEl) {
|
|
16501
|
+
$hideOnEnableEl = $(params.hideOnEnableEl);
|
|
16502
|
+
} else if (typeof sb.params.hideOnEnableEl === 'string' && $pageEl) {
|
|
16503
|
+
$hideOnEnableEl = $pageEl.find(sb.params.hideOnEnableEl);
|
|
16504
|
+
}
|
|
16505
|
+
let $hideOnSearchEl;
|
|
16506
|
+
if (params.hideOnSearchEl) {
|
|
16507
|
+
$hideOnSearchEl = $(params.hideOnSearchEl);
|
|
16508
|
+
} else if (typeof sb.params.hideOnSearchEl === 'string' && $pageEl) {
|
|
16509
|
+
$hideOnSearchEl = $pageEl.find(sb.params.hideOnSearchEl);
|
|
16510
|
+
}
|
|
16511
|
+
const expandable = sb.params.expandable || $el.hasClass('searchbar-new-expandable');
|
|
16512
|
+
const inline = sb.params.inline || $el.hasClass('searchbar-new-inline');
|
|
16513
|
+
if (typeof sb.params.backdrop === 'undefined') {
|
|
16514
|
+
sb.params.backdrop = !inline;
|
|
16515
|
+
}
|
|
16516
|
+
let $backdropEl;
|
|
16517
|
+
if (sb.params.backdrop) {
|
|
16518
|
+
if (sb.params.backdropEl) {
|
|
16519
|
+
$backdropEl = $(sb.params.backdropEl);
|
|
16520
|
+
} else if ($pageEl && $pageEl.length > 0) {
|
|
16521
|
+
$backdropEl = $pageEl.find('.searchbar-new-backdrop');
|
|
16522
|
+
} else {
|
|
16523
|
+
$backdropEl = $el.siblings('.searchbar-new-backdrop');
|
|
16524
|
+
}
|
|
16525
|
+
if ($backdropEl.length === 0) {
|
|
16526
|
+
$backdropEl = $('<div class="searchbar-new-backdrop"></div>');
|
|
16527
|
+
if ($pageEl && $pageEl.length) {
|
|
16528
|
+
if ($el.parents($pageEl).length > 0 && $navbarEl && $el.parents($navbarEl).length === 0) {
|
|
16529
|
+
$backdropEl.insertBefore($el);
|
|
16530
|
+
} else {
|
|
16531
|
+
$backdropEl.insertBefore($pageEl.find('.page-content').eq(0));
|
|
16532
|
+
}
|
|
16533
|
+
} else {
|
|
16534
|
+
$backdropEl.insertBefore($el);
|
|
16535
|
+
}
|
|
16536
|
+
}
|
|
16537
|
+
}
|
|
16538
|
+
let $searchContainer;
|
|
16539
|
+
if (sb.params.searchContainer) {
|
|
16540
|
+
$searchContainer = $(sb.params.searchContainer);
|
|
16541
|
+
}
|
|
16542
|
+
let $inputEl;
|
|
16543
|
+
if (sb.params.inputEl) {
|
|
16544
|
+
$inputEl = $(sb.params.inputEl);
|
|
16545
|
+
} else {
|
|
16546
|
+
$inputEl = $el.find('input[type="search"]').eq(0);
|
|
16547
|
+
}
|
|
16548
|
+
let $disableButtonEl;
|
|
16549
|
+
if (sb.params.disableButton) {
|
|
16550
|
+
if (sb.params.disableButtonEl) {
|
|
16551
|
+
$disableButtonEl = $(sb.params.disableButtonEl);
|
|
16552
|
+
} else {
|
|
16553
|
+
$disableButtonEl = $el.find('.searchbar-new-disable-button');
|
|
16554
|
+
}
|
|
16555
|
+
}
|
|
16556
|
+
extend$3(sb, {
|
|
16557
|
+
app,
|
|
16558
|
+
view: app.views.get($el.parents('.view')),
|
|
16559
|
+
$el,
|
|
16560
|
+
el: $el[0],
|
|
16561
|
+
$backdropEl,
|
|
16562
|
+
backdropEl: $backdropEl && $backdropEl[0],
|
|
16563
|
+
$searchContainer,
|
|
16564
|
+
searchContainer: $searchContainer && $searchContainer[0],
|
|
16565
|
+
$inputEl,
|
|
16566
|
+
inputEl: $inputEl[0],
|
|
16567
|
+
$disableButtonEl,
|
|
16568
|
+
disableButtonEl: $disableButtonEl && $disableButtonEl[0],
|
|
16569
|
+
disableButtonHasMargin: false,
|
|
16570
|
+
$pageEl,
|
|
16571
|
+
pageEl: $pageEl && $pageEl[0],
|
|
16572
|
+
$navbarEl,
|
|
16573
|
+
navbarEl: $navbarEl && $navbarEl[0],
|
|
16574
|
+
$foundEl,
|
|
16575
|
+
foundEl: $foundEl && $foundEl[0],
|
|
16576
|
+
$notFoundEl,
|
|
16577
|
+
notFoundEl: $notFoundEl && $notFoundEl[0],
|
|
16578
|
+
$hideOnEnableEl,
|
|
16579
|
+
hideOnEnableEl: $hideOnEnableEl && $hideOnEnableEl[0],
|
|
16580
|
+
$hideOnSearchEl,
|
|
16581
|
+
hideOnSearchEl: $hideOnSearchEl && $hideOnSearchEl[0],
|
|
16582
|
+
previousQuery: '',
|
|
16583
|
+
query: '',
|
|
16584
|
+
isVirtualList: $searchContainer && $searchContainer.hasClass('virtual-list'),
|
|
16585
|
+
virtualList: undefined,
|
|
16586
|
+
enabled: false,
|
|
16587
|
+
expandable,
|
|
16588
|
+
inline
|
|
16589
|
+
});
|
|
16590
|
+
|
|
16591
|
+
// Events
|
|
16592
|
+
function preventSubmit(e) {
|
|
16593
|
+
e.preventDefault();
|
|
16594
|
+
}
|
|
16595
|
+
function onInputFocus(e) {
|
|
16596
|
+
sb.enable(e);
|
|
16597
|
+
sb.$el.addClass('searchbar-new-focused');
|
|
16598
|
+
}
|
|
16599
|
+
function onInputBlur() {
|
|
16600
|
+
sb.$el.removeClass('searchbar-new-focused');
|
|
16601
|
+
}
|
|
16602
|
+
function onInputChange() {
|
|
16603
|
+
const value = sb.$inputEl.val().trim();
|
|
16604
|
+
if (sb.$searchContainer && sb.$searchContainer.length > 0 && (sb.params.searchIn || sb.isVirtualList || sb.params.searchIn === sb.params.searchItem) || sb.params.customSearch) {
|
|
16605
|
+
sb.search(value, true);
|
|
16606
|
+
}
|
|
16607
|
+
}
|
|
16608
|
+
function onInputClear(e, previousValue) {
|
|
16609
|
+
sb.$el.trigger('searchbar-new:clear', previousValue);
|
|
16610
|
+
sb.emit('local::clear searchbarNewClear', sb, previousValue);
|
|
16611
|
+
}
|
|
16612
|
+
function disableOnClick(e) {
|
|
16613
|
+
sb.disable(e);
|
|
16614
|
+
}
|
|
16615
|
+
function onPageBeforeOut() {
|
|
16616
|
+
if (!sb || sb && !sb.$el) return;
|
|
16617
|
+
if (sb.enabled) {
|
|
16618
|
+
sb.$el.removeClass('searchbar-new-enabled');
|
|
16619
|
+
if (sb.expandable) {
|
|
16620
|
+
sb.$el.parents('.navbar-new').removeClass('with-searchbar-new-expandable-enabled with-searchbar-new-expandable-enabled-no-transition');
|
|
16621
|
+
}
|
|
16622
|
+
}
|
|
16623
|
+
}
|
|
16624
|
+
function onPageBeforeIn() {
|
|
16625
|
+
if (!sb || sb && !sb.$el) return;
|
|
16626
|
+
if (sb.enabled) {
|
|
16627
|
+
sb.$el.addClass('searchbar-new-enabled');
|
|
16628
|
+
if (sb.expandable) {
|
|
16629
|
+
sb.$el.parents('.navbar-new').addClass('with-searchbar-new-expandable-enabled-no-transition');
|
|
16630
|
+
}
|
|
16631
|
+
}
|
|
16632
|
+
}
|
|
16633
|
+
sb.attachEvents = function attachEvents() {
|
|
16634
|
+
$el.on('submit', preventSubmit);
|
|
16635
|
+
if (sb.params.disableButton) {
|
|
16636
|
+
sb.$disableButtonEl.on('click', disableOnClick);
|
|
16637
|
+
}
|
|
16638
|
+
if (sb.params.disableOnBackdropClick && sb.$backdropEl) {
|
|
16639
|
+
sb.$backdropEl.on('click', disableOnClick);
|
|
16640
|
+
}
|
|
16641
|
+
if (sb.expandable && app.theme === 'ios' && sb.view && $navbarEl.length && sb.$pageEl) {
|
|
16642
|
+
sb.$pageEl.on('page:beforeout', onPageBeforeOut);
|
|
16643
|
+
sb.$pageEl.on('page:beforein', onPageBeforeIn);
|
|
16644
|
+
}
|
|
16645
|
+
sb.$inputEl.on('focus', onInputFocus);
|
|
16646
|
+
sb.$inputEl.on('blur', onInputBlur);
|
|
16647
|
+
sb.$inputEl.on(sb.params.inputEvents, onInputChange);
|
|
16648
|
+
sb.$inputEl.on('input:clear', onInputClear);
|
|
16649
|
+
};
|
|
16650
|
+
sb.detachEvents = function detachEvents() {
|
|
16651
|
+
$el.off('submit', preventSubmit);
|
|
16652
|
+
if (sb.params.disableButton) {
|
|
16653
|
+
sb.$disableButtonEl.off('click', disableOnClick);
|
|
16654
|
+
}
|
|
16655
|
+
if (sb.params.disableOnBackdropClick && sb.$backdropEl) {
|
|
16656
|
+
sb.$backdropEl.off('click', disableOnClick);
|
|
16657
|
+
}
|
|
16658
|
+
if (sb.expandable && app.theme === 'ios' && sb.view && $navbarEl.length && sb.$pageEl) {
|
|
16659
|
+
sb.$pageEl.off('page:beforeout', onPageBeforeOut);
|
|
16660
|
+
sb.$pageEl.off('page:beforein', onPageBeforeIn);
|
|
16661
|
+
}
|
|
16662
|
+
sb.$inputEl.off('focus', onInputFocus);
|
|
16663
|
+
sb.$inputEl.off('blur', onInputBlur);
|
|
16664
|
+
sb.$inputEl.off(sb.params.inputEvents, onInputChange);
|
|
16665
|
+
sb.$inputEl.off('input:clear', onInputClear);
|
|
16666
|
+
};
|
|
16667
|
+
|
|
16668
|
+
// Install Modules
|
|
16669
|
+
sb.useModules();
|
|
16670
|
+
|
|
16671
|
+
// Init
|
|
16672
|
+
sb.init();
|
|
16673
|
+
return sb;
|
|
16674
|
+
}
|
|
16675
|
+
clear(e) {
|
|
16676
|
+
const sb = this;
|
|
16677
|
+
if (!sb.query && e && $(e.target).hasClass('searchbar-new-clear')) {
|
|
16678
|
+
sb.disable();
|
|
16679
|
+
return sb;
|
|
16680
|
+
}
|
|
16681
|
+
const previousQuery = sb.value;
|
|
16682
|
+
sb.$inputEl.val('').trigger('change').focus();
|
|
16683
|
+
sb.$el.trigger('searchbar-new:clear', previousQuery);
|
|
16684
|
+
sb.emit('local::clear searchbarNewClear', sb, previousQuery);
|
|
16685
|
+
return sb;
|
|
16686
|
+
}
|
|
16687
|
+
setDisableButtonMargin() {
|
|
16688
|
+
const sb = this;
|
|
16689
|
+
if (sb.expandable) return;
|
|
16690
|
+
const app = sb.app;
|
|
16691
|
+
sb.$disableButtonEl.transition(0).show();
|
|
16692
|
+
sb.$disableButtonEl.css(`margin-${app.rtl ? 'left' : 'right'}`, `${-sb.disableButtonEl.offsetWidth}px`);
|
|
16693
|
+
/* eslint no-underscore-dangle: ["error", { "allow": ["_clientLeft"] }] */
|
|
16694
|
+
sb._clientLeft = sb.$disableButtonEl[0].clientLeft;
|
|
16695
|
+
sb.$disableButtonEl.transition('');
|
|
16696
|
+
sb.disableButtonHasMargin = true;
|
|
16697
|
+
}
|
|
16698
|
+
enable(setFocus) {
|
|
16699
|
+
const sb = this;
|
|
16700
|
+
if (sb.enabled) return sb;
|
|
16701
|
+
const app = sb.app;
|
|
16702
|
+
const document = getDocument$1();
|
|
16703
|
+
const device = getDevice$1();
|
|
16704
|
+
sb.enabled = true;
|
|
16705
|
+
function enable() {
|
|
16706
|
+
if (sb.$backdropEl && (sb.$searchContainer && sb.$searchContainer.length || sb.params.customSearch) && !sb.$el.hasClass('searchbar-new-enabled') && !sb.query) {
|
|
16707
|
+
sb.backdropShow();
|
|
16708
|
+
}
|
|
16709
|
+
sb.$el.addClass('searchbar-new-enabled');
|
|
16710
|
+
if (!sb.$disableButtonEl || sb.$disableButtonEl && sb.$disableButtonEl.length === 0) {
|
|
16711
|
+
sb.$el.addClass('searchbar-new-enabled-no-disable-button');
|
|
16712
|
+
}
|
|
16713
|
+
if (!sb.expandable && sb.$disableButtonEl && sb.$disableButtonEl.length > 0 && app.theme !== 'md') {
|
|
16714
|
+
if (!sb.disableButtonHasMargin) {
|
|
16715
|
+
sb.setDisableButtonMargin();
|
|
16716
|
+
}
|
|
16717
|
+
sb.$disableButtonEl.css(`margin-${app.rtl ? 'left' : 'right'}`, '0px');
|
|
16718
|
+
}
|
|
16719
|
+
if (sb.expandable) {
|
|
16720
|
+
const $navbarEl = sb.$el.parents('.navbar-new');
|
|
16721
|
+
if ($navbarEl.hasClass('navbar-new-large') && sb.$pageEl) {
|
|
16722
|
+
const $pageContentEl = sb.$pageEl.find('.page-content');
|
|
16723
|
+
const $titleLargeEl = $navbarEl.find('.title-large');
|
|
16724
|
+
$pageContentEl.addClass('with-searchbar-new-expandable-enabled');
|
|
16725
|
+
if ($navbarEl.hasClass('navbar-new-large') && $navbarEl.hasClass('navbar-new-large-collapsed') && $titleLargeEl.length && $pageContentEl.length) {
|
|
16726
|
+
$pageContentEl.transition(0);
|
|
16727
|
+
$pageContentEl[0].scrollTop -= $titleLargeEl[0].offsetHeight;
|
|
16728
|
+
setTimeout(() => {
|
|
16729
|
+
$pageContentEl.transition('');
|
|
16730
|
+
}, 200);
|
|
16731
|
+
}
|
|
16732
|
+
}
|
|
16733
|
+
if (app.theme === 'md' && $navbarEl.length) {
|
|
16734
|
+
$navbarEl.addClass('with-searchbar-new-expandable-enabled');
|
|
16735
|
+
} else {
|
|
16736
|
+
$navbarEl.addClass('with-searchbar-new-expandable-enabled');
|
|
16737
|
+
if ($navbarEl.hasClass('navbar-new-large')) {
|
|
16738
|
+
$navbarEl.addClass('navbar-new-large-collapsed');
|
|
16739
|
+
}
|
|
16740
|
+
}
|
|
16741
|
+
}
|
|
16742
|
+
if (sb.$hideOnEnableEl) sb.$hideOnEnableEl.addClass('hidden-by-searchbar-new');
|
|
16743
|
+
sb.$el.trigger('searchbar-new:enable');
|
|
16744
|
+
sb.emit('local::enable searchbarNewEnable', sb);
|
|
16745
|
+
}
|
|
16746
|
+
let needsFocus = false;
|
|
16747
|
+
if (setFocus === true) {
|
|
16748
|
+
if (document.activeElement !== sb.inputEl) {
|
|
16749
|
+
needsFocus = true;
|
|
16750
|
+
}
|
|
16751
|
+
}
|
|
16752
|
+
const isIos = device.ios && app.theme === 'ios';
|
|
16753
|
+
if (isIos) {
|
|
16754
|
+
if (sb.expandable) {
|
|
16755
|
+
if (needsFocus) sb.$inputEl.focus();
|
|
16756
|
+
enable();
|
|
16757
|
+
} else {
|
|
16758
|
+
if (needsFocus) sb.$inputEl.focus();
|
|
16759
|
+
if (setFocus && (setFocus.type === 'focus' || setFocus === true)) {
|
|
16760
|
+
nextTick$1(() => {
|
|
16761
|
+
enable();
|
|
16762
|
+
}, 400);
|
|
16763
|
+
} else {
|
|
16764
|
+
enable();
|
|
16765
|
+
}
|
|
16766
|
+
}
|
|
16767
|
+
} else {
|
|
16768
|
+
if (needsFocus) sb.$inputEl.focus();
|
|
16769
|
+
if (app.theme === 'md' && sb.expandable) {
|
|
16770
|
+
sb.$el.parents('.page, .view, .navbar-new-inner, .navbar-new').scrollLeft(app.rtl ? 100 : 0);
|
|
16771
|
+
}
|
|
16772
|
+
enable();
|
|
16773
|
+
}
|
|
16774
|
+
return sb;
|
|
16775
|
+
}
|
|
16776
|
+
disable() {
|
|
16777
|
+
const sb = this;
|
|
16778
|
+
if (!sb.enabled) return sb;
|
|
16779
|
+
const app = sb.app;
|
|
16780
|
+
sb.$inputEl.val('').trigger('change');
|
|
16781
|
+
sb.$el.removeClass('searchbar-new-enabled searchbar-new-focused searchbar-new-enabled-no-disable-button');
|
|
16782
|
+
if (sb.expandable) {
|
|
16783
|
+
const $navbarEl = sb.$el.parents('.navbar-new');
|
|
16784
|
+
const $pageContentEl = sb.$pageEl && sb.$pageEl.find('.page-content');
|
|
16785
|
+
if ($navbarEl.hasClass('navbar-new-large') && $pageContentEl.length) {
|
|
16786
|
+
const $titleLargeEl = $navbarEl.find('.title-large');
|
|
16787
|
+
sb.$el.transitionEnd(() => {
|
|
16788
|
+
$pageContentEl.removeClass('with-searchbar-new-expandable-closing');
|
|
16789
|
+
});
|
|
16790
|
+
if ($navbarEl.hasClass('navbar-new-large') && $navbarEl.hasClass('navbar-new-large-collapsed') && $titleLargeEl.length) {
|
|
16791
|
+
const scrollTop = $pageContentEl[0].scrollTop;
|
|
16792
|
+
const titleLargeHeight = $titleLargeEl[0].offsetHeight;
|
|
16793
|
+
if (scrollTop > titleLargeHeight) {
|
|
16794
|
+
$pageContentEl.transition(0);
|
|
16795
|
+
$pageContentEl[0].scrollTop = scrollTop + titleLargeHeight;
|
|
16796
|
+
setTimeout(() => {
|
|
16797
|
+
$pageContentEl.transition('');
|
|
16798
|
+
}, 200);
|
|
16799
|
+
}
|
|
16800
|
+
}
|
|
16801
|
+
$pageContentEl.removeClass('with-searchbar-new-expandable-enabled').addClass('with-searchbar-new-expandable-closing');
|
|
16802
|
+
}
|
|
16803
|
+
if (app.theme === 'md' && $navbarEl.length) {
|
|
16804
|
+
$navbarEl.removeClass('with-searchbar-new-expandable-enabled with-searchbar-new-expandable-enabled-no-transition').addClass('with-searchbar-new-expandable-closing');
|
|
16805
|
+
sb.$el.transitionEnd(() => {
|
|
16806
|
+
$navbarEl.removeClass('with-searchbar-new-expandable-closing');
|
|
16807
|
+
});
|
|
16808
|
+
} else {
|
|
16809
|
+
$navbarEl.removeClass('with-searchbar-new-expandable-enabled with-searchbar-new-expandable-enabled-no-transition').addClass('with-searchbar-new-expandable-closing');
|
|
16810
|
+
sb.$el.transitionEnd(() => {
|
|
16811
|
+
$navbarEl.removeClass('with-searchbar-new-expandable-closing');
|
|
16812
|
+
});
|
|
16813
|
+
if (sb.$pageEl) {
|
|
16814
|
+
sb.$pageEl.find('.page-content').trigger('scroll');
|
|
16815
|
+
}
|
|
16816
|
+
}
|
|
16817
|
+
}
|
|
16818
|
+
if (!sb.expandable && sb.$disableButtonEl && sb.$disableButtonEl.length > 0 && app.theme !== 'md') {
|
|
16819
|
+
sb.$disableButtonEl.css(`margin-${app.rtl ? 'left' : 'right'}`, `${-sb.disableButtonEl.offsetWidth}px`);
|
|
16820
|
+
}
|
|
16821
|
+
if (sb.$backdropEl && (sb.$searchContainer && sb.$searchContainer.length || sb.params.customSearch)) {
|
|
16822
|
+
sb.backdropHide();
|
|
16823
|
+
}
|
|
16824
|
+
sb.enabled = false;
|
|
16825
|
+
sb.$inputEl.blur();
|
|
16826
|
+
if (sb.$hideOnEnableEl) sb.$hideOnEnableEl.removeClass('hidden-by-searchbar-new');
|
|
16827
|
+
sb.$el.trigger('searchbar-new:disable');
|
|
16828
|
+
sb.emit('local::disable searchbarNewDisable', sb);
|
|
16829
|
+
return sb;
|
|
16830
|
+
}
|
|
16831
|
+
toggle() {
|
|
16832
|
+
const sb = this;
|
|
16833
|
+
if (sb.enabled) sb.disable();else sb.enable(true);
|
|
16834
|
+
return sb;
|
|
16835
|
+
}
|
|
16836
|
+
backdropShow() {
|
|
16837
|
+
const sb = this;
|
|
16838
|
+
if (sb.$backdropEl) {
|
|
16839
|
+
sb.$backdropEl.addClass('searchbar-new-backdrop-in');
|
|
16840
|
+
}
|
|
16841
|
+
return sb;
|
|
16842
|
+
}
|
|
16843
|
+
backdropHide() {
|
|
16844
|
+
const sb = this;
|
|
16845
|
+
if (sb.$backdropEl) {
|
|
16846
|
+
sb.$backdropEl.removeClass('searchbar-new-backdrop-in');
|
|
16847
|
+
}
|
|
16848
|
+
return sb;
|
|
16849
|
+
}
|
|
16850
|
+
search(query, internal) {
|
|
16851
|
+
const sb = this;
|
|
16852
|
+
sb.previousQuery = sb.query || '';
|
|
16853
|
+
if (query === sb.previousQuery) return sb;
|
|
16854
|
+
if (!internal) {
|
|
16855
|
+
if (!sb.enabled) {
|
|
16856
|
+
sb.enable();
|
|
16857
|
+
}
|
|
16858
|
+
sb.$inputEl.val(query);
|
|
16859
|
+
sb.$inputEl.trigger('input');
|
|
16860
|
+
}
|
|
16861
|
+
sb.query = query;
|
|
16862
|
+
sb.value = query;
|
|
16863
|
+
const {
|
|
16864
|
+
$searchContainer,
|
|
16865
|
+
$el,
|
|
16866
|
+
$foundEl,
|
|
16867
|
+
$notFoundEl,
|
|
16868
|
+
$hideOnSearchEl,
|
|
16869
|
+
isVirtualList
|
|
16870
|
+
} = sb;
|
|
16871
|
+
|
|
16872
|
+
// Hide on search element
|
|
16873
|
+
if (query.length > 0 && $hideOnSearchEl) {
|
|
16874
|
+
$hideOnSearchEl.addClass('hidden-by-searchbar-new');
|
|
16875
|
+
} else if ($hideOnSearchEl) {
|
|
16876
|
+
$hideOnSearchEl.removeClass('hidden-by-searchbar-new');
|
|
16877
|
+
}
|
|
16878
|
+
// Add active/inactive classes on overlay
|
|
16879
|
+
if ($searchContainer && $searchContainer.length && $el.hasClass('searchbar-new-enabled') || sb.params.customSearch && $el.hasClass('searchbar-new-enabled')) {
|
|
16880
|
+
if (query.length === 0) {
|
|
16881
|
+
sb.backdropShow();
|
|
16882
|
+
} else {
|
|
16883
|
+
sb.backdropHide();
|
|
16884
|
+
}
|
|
16885
|
+
}
|
|
16886
|
+
if (sb.params.customSearch) {
|
|
16887
|
+
$el.trigger('searchbar-new:search', {
|
|
16888
|
+
query,
|
|
16889
|
+
previousQuery: sb.previousQuery
|
|
16890
|
+
});
|
|
16891
|
+
sb.emit('local::search searchbarNewSearch', sb, query, sb.previousQuery);
|
|
16892
|
+
return sb;
|
|
16893
|
+
}
|
|
16894
|
+
let foundItems = [];
|
|
16895
|
+
let vlQuery;
|
|
16896
|
+
if (isVirtualList) {
|
|
16897
|
+
sb.virtualList = $searchContainer[0].f7VirtualList;
|
|
16898
|
+
if (query.trim() === '') {
|
|
16899
|
+
sb.virtualList.resetFilter();
|
|
16900
|
+
if ($notFoundEl) $notFoundEl.hide();
|
|
16901
|
+
if ($foundEl) $foundEl.show();
|
|
16902
|
+
$el.trigger('searchbar-new:search', {
|
|
16903
|
+
query,
|
|
16904
|
+
previousQuery: sb.previousQuery
|
|
16905
|
+
});
|
|
16906
|
+
sb.emit('local::search searchbarNewSearch', sb, query, sb.previousQuery);
|
|
16907
|
+
return sb;
|
|
16908
|
+
}
|
|
16909
|
+
vlQuery = sb.params.removeDiacritics ? removeDiacritics$1(query) : query;
|
|
16910
|
+
if (sb.virtualList.params.searchAll) {
|
|
16911
|
+
foundItems = sb.virtualList.params.searchAll(vlQuery, sb.virtualList.items) || [];
|
|
16912
|
+
} else if (sb.virtualList.params.searchByItem) {
|
|
16913
|
+
for (let i = 0; i < sb.virtualList.items.length; i += 1) {
|
|
16914
|
+
if (sb.virtualList.params.searchByItem(vlQuery, sb.virtualList.items[i], i)) {
|
|
16915
|
+
foundItems.push(i);
|
|
16916
|
+
}
|
|
16917
|
+
}
|
|
16918
|
+
}
|
|
16919
|
+
} else {
|
|
16920
|
+
let values;
|
|
16921
|
+
if (sb.params.removeDiacritics) values = removeDiacritics$1(query.trim().toLowerCase()).split(' ');else {
|
|
16922
|
+
values = query.trim().toLowerCase().split(' ');
|
|
16923
|
+
}
|
|
16924
|
+
$searchContainer.find(sb.params.searchItem).removeClass('hidden-by-searchbar-new').each(itemEl => {
|
|
16925
|
+
const $itemEl = $(itemEl);
|
|
16926
|
+
let compareWithText = [];
|
|
16927
|
+
let $searchIn = sb.params.searchIn ? $itemEl.find(sb.params.searchIn) : $itemEl;
|
|
16928
|
+
if (sb.params.searchIn === sb.params.searchItem) {
|
|
16929
|
+
$searchIn = $itemEl;
|
|
16930
|
+
}
|
|
16931
|
+
$searchIn.each(searchInEl => {
|
|
16932
|
+
let itemText = $(searchInEl).text().trim().toLowerCase();
|
|
16933
|
+
if (sb.params.removeDiacritics) itemText = removeDiacritics$1(itemText);
|
|
16934
|
+
compareWithText.push(itemText);
|
|
16935
|
+
});
|
|
16936
|
+
compareWithText = compareWithText.join(' ');
|
|
16937
|
+
let wordsMatch = 0;
|
|
16938
|
+
for (let i = 0; i < values.length; i += 1) {
|
|
16939
|
+
if (compareWithText.indexOf(values[i]) >= 0) wordsMatch += 1;
|
|
16940
|
+
}
|
|
16941
|
+
if (wordsMatch !== values.length && !(sb.params.ignore && $itemEl.is(sb.params.ignore))) {
|
|
16942
|
+
$itemEl.addClass('hidden-by-searchbar-new');
|
|
16943
|
+
} else {
|
|
16944
|
+
foundItems.push($itemEl[0]);
|
|
16945
|
+
}
|
|
16946
|
+
});
|
|
16947
|
+
if (sb.params.hideGroupTitles) {
|
|
16948
|
+
$searchContainer.find(sb.params.searchGroupTitle).each(titleEl => {
|
|
16949
|
+
const $titleEl = $(titleEl);
|
|
16950
|
+
const $nextElements = $titleEl.nextAll(sb.params.searchItem);
|
|
16951
|
+
let hide = true;
|
|
16952
|
+
for (let i = 0; i < $nextElements.length; i += 1) {
|
|
16953
|
+
const $nextEl = $nextElements.eq(i);
|
|
16954
|
+
if ($nextEl.is(sb.params.searchGroupTitle)) break;
|
|
16955
|
+
if (!$nextEl.hasClass('hidden-by-searchbar-new')) {
|
|
16956
|
+
hide = false;
|
|
16957
|
+
}
|
|
16958
|
+
}
|
|
16959
|
+
const ignore = sb.params.ignore && $titleEl.is(sb.params.ignore);
|
|
16960
|
+
if (hide && !ignore) $titleEl.addClass('hidden-by-searchbar-new');else $titleEl.removeClass('hidden-by-searchbar-new');
|
|
16961
|
+
});
|
|
16962
|
+
}
|
|
16963
|
+
if (sb.params.hideGroups) {
|
|
16964
|
+
$searchContainer.find(sb.params.searchGroup).each(groupEl => {
|
|
16965
|
+
const $groupEl = $(groupEl);
|
|
16966
|
+
const ignore = sb.params.ignore && $groupEl.is(sb.params.ignore);
|
|
16967
|
+
// eslint-disable-next-line
|
|
16968
|
+
const notHidden = $groupEl.find(sb.params.searchItem).filter(el => {
|
|
16969
|
+
return !$(el).hasClass('hidden-by-searchbar-new');
|
|
16970
|
+
});
|
|
16971
|
+
if (notHidden.length === 0 && !ignore) {
|
|
16972
|
+
$groupEl.addClass('hidden-by-searchbar-new');
|
|
16973
|
+
} else {
|
|
16974
|
+
$groupEl.removeClass('hidden-by-searchbar-new');
|
|
16975
|
+
}
|
|
16976
|
+
});
|
|
16977
|
+
}
|
|
16978
|
+
}
|
|
16979
|
+
if (foundItems.length === 0) {
|
|
16980
|
+
if ($notFoundEl) $notFoundEl.show();
|
|
16981
|
+
if ($foundEl) $foundEl.hide();
|
|
16982
|
+
} else {
|
|
16983
|
+
if ($notFoundEl) $notFoundEl.hide();
|
|
16984
|
+
if ($foundEl) $foundEl.show();
|
|
16985
|
+
}
|
|
16986
|
+
if (isVirtualList && sb.virtualList) {
|
|
16987
|
+
sb.virtualList.filterItems(foundItems);
|
|
16988
|
+
}
|
|
16989
|
+
$el.trigger('searchbar-new:search', {
|
|
16990
|
+
query,
|
|
16991
|
+
previousQuery: sb.previousQuery,
|
|
16992
|
+
foundItems
|
|
16993
|
+
});
|
|
16994
|
+
sb.emit('local::search searchbarNewSearch', sb, query, sb.previousQuery, foundItems);
|
|
16995
|
+
return sb;
|
|
16996
|
+
}
|
|
16997
|
+
init() {
|
|
16998
|
+
const sb = this;
|
|
16999
|
+
if (sb.expandable && sb.$el) sb.$el.addClass('searchbar-new-expandable');
|
|
17000
|
+
if (sb.inline && sb.$el) sb.$el.addClass('searchbar-new-inline');
|
|
17001
|
+
sb.attachEvents();
|
|
17002
|
+
}
|
|
17003
|
+
destroy() {
|
|
17004
|
+
const sb = this;
|
|
17005
|
+
sb.emit('local::beforeDestroy searchbarNewBeforeDestroy', sb);
|
|
17006
|
+
sb.$el.trigger('searchbar-new:beforedestroy');
|
|
17007
|
+
sb.detachEvents();
|
|
17008
|
+
if (sb.$el[0]) {
|
|
17009
|
+
sb.$el[0].f7SearchbarNew = null;
|
|
17010
|
+
delete sb.$el[0].f7SearchbarNew;
|
|
17011
|
+
}
|
|
17012
|
+
deleteProps$1(sb);
|
|
17013
|
+
}
|
|
17014
|
+
};
|
|
17015
|
+
|
|
17016
|
+
var SearchbarNew = {
|
|
17017
|
+
name: 'searchbar-new',
|
|
17018
|
+
static: {
|
|
17019
|
+
SearchbarNew: SearchbarNew$1
|
|
17020
|
+
},
|
|
17021
|
+
create() {
|
|
17022
|
+
const app = this;
|
|
17023
|
+
app.searchbarNew = ConstructorMethods({
|
|
17024
|
+
defaultSelector: '.searchbar-new',
|
|
17025
|
+
constructor: SearchbarNew$1,
|
|
17026
|
+
app,
|
|
17027
|
+
domProp: 'f7SearchbarNew',
|
|
17028
|
+
addMethods: 'clear enable disable toggle search'.split(' ')
|
|
17029
|
+
});
|
|
17030
|
+
},
|
|
17031
|
+
on: {
|
|
17032
|
+
tabMounted(tabEl) {
|
|
17033
|
+
const app = this;
|
|
17034
|
+
$(tabEl).find('.searchbar-new-init').each(searchbarEl => {
|
|
17035
|
+
const $searchbarEl = $(searchbarEl);
|
|
17036
|
+
app.searchbarNew.create(extend$3($searchbarEl.dataset(), {
|
|
17037
|
+
el: searchbarEl
|
|
17038
|
+
}));
|
|
17039
|
+
});
|
|
17040
|
+
},
|
|
17041
|
+
tabBeforeRemove(tabEl) {
|
|
17042
|
+
$(tabEl).find('.searchbar-new-init').each(searchbarEl => {
|
|
17043
|
+
if (searchbarEl.f7SearchbarNew && searchbarEl.f7SearchbarNew.destroy) {
|
|
17044
|
+
searchbarEl.f7SearchbarNew.destroy();
|
|
17045
|
+
}
|
|
17046
|
+
});
|
|
17047
|
+
},
|
|
17048
|
+
pageInit(page) {
|
|
17049
|
+
const app = this;
|
|
17050
|
+
page.$el.find('.searchbar-new-init').each(searchbarEl => {
|
|
17051
|
+
const $searchbarEl = $(searchbarEl);
|
|
17052
|
+
app.searchbarNew.create(extend$3($searchbarEl.dataset(), {
|
|
17053
|
+
el: searchbarEl
|
|
17054
|
+
}));
|
|
17055
|
+
});
|
|
17056
|
+
if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarNewEl && page.$navbarNewEl.length > 0) {
|
|
17057
|
+
page.$navbarNewEl.find('.searchbar-new-init').each(searchbarEl => {
|
|
17058
|
+
const $searchbarEl = $(searchbarEl);
|
|
17059
|
+
app.searchbarNew.create(extend$3($searchbarEl.dataset(), {
|
|
17060
|
+
el: searchbarEl
|
|
17061
|
+
}));
|
|
17062
|
+
});
|
|
17063
|
+
}
|
|
17064
|
+
},
|
|
17065
|
+
pageBeforeRemove(page) {
|
|
17066
|
+
const app = this;
|
|
17067
|
+
page.$el.find('.searchbar-new-init').each(searchbarEl => {
|
|
17068
|
+
if (searchbarEl.f7SearchbarNew && searchbarEl.f7SearchbarNew.destroy) {
|
|
17069
|
+
searchbarEl.f7SearchbarNew.destroy();
|
|
17070
|
+
}
|
|
17071
|
+
});
|
|
17072
|
+
if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarNewEl && page.$navbarNewEl.length > 0) {
|
|
17073
|
+
page.$navbarNewEl.find('.searchbar-new-init').each(searchbarEl => {
|
|
17074
|
+
if (searchbarEl.f7SearchbarNew && searchbarEl.f7SearchbarNew.destroy) {
|
|
17075
|
+
searchbarEl.f7SearchbarNew.destroy();
|
|
17076
|
+
}
|
|
17077
|
+
});
|
|
17078
|
+
}
|
|
17079
|
+
}
|
|
17080
|
+
},
|
|
17081
|
+
clicks: {
|
|
17082
|
+
'.searchbar-new-clear': function clear($clickedEl, data) {
|
|
17083
|
+
if (data === void 0) {
|
|
17084
|
+
data = {};
|
|
17085
|
+
}
|
|
17086
|
+
const app = this;
|
|
17087
|
+
const sb = app.searchbarNew.get(data.searchbar);
|
|
17088
|
+
if (sb) sb.clear();
|
|
17089
|
+
},
|
|
17090
|
+
'.searchbar-new-enable': function enable($clickedEl, data) {
|
|
17091
|
+
if (data === void 0) {
|
|
17092
|
+
data = {};
|
|
17093
|
+
}
|
|
17094
|
+
const app = this;
|
|
17095
|
+
const sb = app.searchbarNew.get(data.searchbar);
|
|
17096
|
+
if (sb) sb.enable(true);
|
|
17097
|
+
},
|
|
17098
|
+
'.searchbar-new-disable': function disable($clickedEl, data) {
|
|
17099
|
+
if (data === void 0) {
|
|
17100
|
+
data = {};
|
|
17101
|
+
}
|
|
17102
|
+
const app = this;
|
|
17103
|
+
const sb = app.searchbarNew.get(data.searchbar);
|
|
17104
|
+
if (sb) sb.disable();
|
|
17105
|
+
},
|
|
17106
|
+
'.searchbar-new-toggle': function toggle($clickedEl, data) {
|
|
17107
|
+
if (data === void 0) {
|
|
17108
|
+
data = {};
|
|
17109
|
+
}
|
|
17110
|
+
const app = this;
|
|
17111
|
+
const sb = app.searchbarNew.get(data.searchbar);
|
|
17112
|
+
if (sb) sb.toggle();
|
|
17113
|
+
}
|
|
17114
|
+
},
|
|
17115
|
+
vnode: {
|
|
17116
|
+
'searchbar-new-init': {
|
|
17117
|
+
insert(vnode) {
|
|
17118
|
+
const app = this;
|
|
17119
|
+
const searchbarEl = vnode.elm;
|
|
17120
|
+
const $searchbarEl = $(searchbarEl);
|
|
17121
|
+
app.searchbarNew.create(extend$3($searchbarEl.dataset(), {
|
|
17122
|
+
el: searchbarEl
|
|
17123
|
+
}));
|
|
17124
|
+
},
|
|
17125
|
+
destroy(vnode) {
|
|
17126
|
+
const searchbarEl = vnode.elm;
|
|
17127
|
+
if (searchbarEl.f7SearchbarNew && searchbarEl.f7SearchbarNew.destroy) {
|
|
17128
|
+
searchbarEl.f7SearchbarNew.destroy();
|
|
17129
|
+
}
|
|
17130
|
+
}
|
|
17131
|
+
}
|
|
17132
|
+
}
|
|
17133
|
+
};
|
|
17134
|
+
|
|
17135
|
+
const startAnimation = data => {
|
|
17136
|
+
data.raf = requestAnimationFrame(() => {
|
|
17137
|
+
if (!data.setTransform) return;
|
|
17138
|
+
const highlightEl = data.highlightEl;
|
|
17139
|
+
if (!highlightEl) return;
|
|
17140
|
+
highlightEl.style.transform = data.setTransform;
|
|
17141
|
+
highlightEl.style.transitionTimingFunction = 'ease-out';
|
|
17142
|
+
data.setTransform = null;
|
|
17143
|
+
});
|
|
17144
|
+
};
|
|
17145
|
+
const stopAnimation = data => {
|
|
17146
|
+
cancelAnimationFrame(data.raf);
|
|
17147
|
+
};
|
|
17148
|
+
const setHighlightOnTouch = (data, e) => {
|
|
17149
|
+
const {
|
|
17150
|
+
rect,
|
|
17151
|
+
linkEls,
|
|
17152
|
+
highlightEl
|
|
17153
|
+
} = data;
|
|
17154
|
+
if (!highlightEl) return;
|
|
17155
|
+
const {
|
|
17156
|
+
clientX
|
|
17157
|
+
} = e;
|
|
17158
|
+
const highlightWidth = rect.width / linkEls.length;
|
|
17159
|
+
const leftOffset = clientX - rect.left - highlightWidth / 2;
|
|
17160
|
+
const minLeft = 0;
|
|
17161
|
+
const maxLeft = rect.width - highlightWidth;
|
|
17162
|
+
const translateX = Math.max(minLeft, Math.min(leftOffset, maxLeft));
|
|
17163
|
+
const linkCenters = [...linkEls].map((el, index) => {
|
|
17164
|
+
return index * highlightWidth + highlightWidth / 2;
|
|
17165
|
+
});
|
|
17166
|
+
const closestLinkCenter = linkCenters.reduce((prev, curr) => {
|
|
17167
|
+
const highlightCenter = translateX + highlightWidth / 2;
|
|
17168
|
+
return Math.abs(curr - highlightCenter) < Math.abs(prev - highlightCenter) ? curr : prev;
|
|
17169
|
+
}, linkCenters[0]);
|
|
17170
|
+
const closestLinkIndex = linkCenters.indexOf(closestLinkCenter);
|
|
17171
|
+
data.newActiveIndex = closestLinkIndex;
|
|
17172
|
+
highlightEl.classList.add('tab-link-highlight-pressed');
|
|
17173
|
+
data.setTransform = `translateX(${translateX}px)`;
|
|
17174
|
+
startAnimation(data);
|
|
17175
|
+
};
|
|
17176
|
+
const unsetHighlightOnTouch = data => {
|
|
17177
|
+
cancelAnimationFrame(data.raf);
|
|
17178
|
+
data.setTransform = null;
|
|
17179
|
+
const {
|
|
17180
|
+
highlightEl
|
|
17181
|
+
} = data;
|
|
17182
|
+
if (!highlightEl) return;
|
|
17183
|
+
highlightEl.classList.remove('tab-link-highlight-pressed');
|
|
17184
|
+
const {
|
|
17185
|
+
activeIndex,
|
|
17186
|
+
newActiveIndex,
|
|
17187
|
+
linkEls
|
|
17188
|
+
} = data;
|
|
17189
|
+
if (activeIndex !== newActiveIndex) {
|
|
17190
|
+
linkEls[newActiveIndex].click();
|
|
17191
|
+
}
|
|
17192
|
+
highlightEl.style.transform = `translateX(${newActiveIndex * 100}%)`;
|
|
17193
|
+
highlightEl.style.transitionTimingFunction = '';
|
|
17194
|
+
highlightEl.style.transform = `translateX(${newActiveIndex * 100}%)`;
|
|
17195
|
+
};
|
|
17196
|
+
const initTabbarNewHighlight = el => {
|
|
17197
|
+
const document = getDocument$1();
|
|
17198
|
+
if (!el) return;
|
|
17199
|
+
if (el.classList.contains('tabbar-new-scrollable')) {
|
|
17200
|
+
return;
|
|
17201
|
+
}
|
|
17202
|
+
const highlightEl = el.querySelector('.tab-link-highlight');
|
|
17203
|
+
const toolbarPaneEl = el.querySelector('.toolbar-new-pane');
|
|
17204
|
+
if (!highlightEl || !toolbarPaneEl) return;
|
|
17205
|
+
const data = {
|
|
17206
|
+
el,
|
|
17207
|
+
highlightEl,
|
|
17208
|
+
touched: false,
|
|
17209
|
+
moved: false,
|
|
17210
|
+
rect: null,
|
|
17211
|
+
setTransform: null,
|
|
17212
|
+
raf: null
|
|
17213
|
+
};
|
|
17214
|
+
el.f7ToolbarNewHighlightData = data;
|
|
17215
|
+
el.f7ToolbarNewOnPointer = e => {
|
|
17216
|
+
if (e.type === 'touchstart') {
|
|
17217
|
+
e.preventDefault();
|
|
17218
|
+
}
|
|
17219
|
+
if (e.pointerType !== 'touch') return;
|
|
17220
|
+
if (!el) return;
|
|
17221
|
+
if (e.type === 'pointerdown') {
|
|
17222
|
+
data.linkEls = el.querySelectorAll('.tab-link');
|
|
17223
|
+
data.rect = toolbarPaneEl.getBoundingClientRect();
|
|
17224
|
+
data.touched = true;
|
|
17225
|
+
setHighlightOnTouch(data, e);
|
|
17226
|
+
startAnimation(data);
|
|
17227
|
+
}
|
|
17228
|
+
if (e.type === 'pointermove') {
|
|
17229
|
+
if (!data.touched) return;
|
|
17230
|
+
data.moved = true;
|
|
17231
|
+
setHighlightOnTouch(data, e);
|
|
17232
|
+
}
|
|
17233
|
+
if (e.type === 'pointerup') {
|
|
17234
|
+
if (!data.touched) return;
|
|
17235
|
+
data.touched = false;
|
|
17236
|
+
data.moved = false;
|
|
17237
|
+
unsetHighlightOnTouch(data);
|
|
17238
|
+
stopAnimation(data);
|
|
17239
|
+
}
|
|
17240
|
+
};
|
|
17241
|
+
el.addEventListener('touchstart', el.f7ToolbarNewOnPointer, {
|
|
17242
|
+
passive: false
|
|
17243
|
+
});
|
|
17244
|
+
el.addEventListener('pointerdown', el.f7ToolbarNewOnPointer, {
|
|
17245
|
+
passive: false
|
|
17246
|
+
});
|
|
17247
|
+
document.addEventListener('pointermove', el.f7ToolbarNewOnPointer, {
|
|
17248
|
+
passive: false
|
|
17249
|
+
});
|
|
17250
|
+
document.addEventListener('pointerup', el.f7ToolbarNewOnPointer, {
|
|
17251
|
+
passive: false
|
|
17252
|
+
});
|
|
17253
|
+
document.addEventListener('pointercancel', el.f7ToolbarNewOnPointer, {
|
|
17254
|
+
passive: false
|
|
17255
|
+
});
|
|
17256
|
+
};
|
|
17257
|
+
const destroyTabbarNewHighlight = el => {
|
|
17258
|
+
if (!el || !el.f7ToolbarNewOnPointer) return;
|
|
17259
|
+
const document = getDocument$1();
|
|
17260
|
+
el.removeEventListener('touchstart', el.f7ToolbarNewOnPointer);
|
|
17261
|
+
el.removeEventListener('pointerdown', el.f7ToolbarNewOnPointer);
|
|
17262
|
+
document.removeEventListener('pointermove', el.f7ToolbarNewOnPointer);
|
|
17263
|
+
document.removeEventListener('pointerup', el.f7ToolbarNewOnPointer);
|
|
17264
|
+
document.removeEventListener('pointercancel', el.f7ToolbarNewOnPointer);
|
|
17265
|
+
el.f7ToolbarNewOnPointer = null;
|
|
17266
|
+
el.f7ToolbarNewHighlightData = null;
|
|
17267
|
+
};
|
|
17268
|
+
|
|
17269
|
+
const ToolbarNew = {
|
|
17270
|
+
setHighlight(tabbarEl) {
|
|
17271
|
+
const app = this;
|
|
17272
|
+
const $tabbarEl = $(tabbarEl);
|
|
17273
|
+
if ($tabbarEl.length === 0 || !($tabbarEl.hasClass('tabbar-new') || $tabbarEl.hasClass('tabbar-new-icons'))) {
|
|
17274
|
+
return;
|
|
17275
|
+
}
|
|
17276
|
+
let $highlightEl = $tabbarEl.find('.tab-link-highlight');
|
|
17277
|
+
const tabLinksCount = $tabbarEl.find('.tab-link').length;
|
|
17278
|
+
if (tabLinksCount === 0) {
|
|
17279
|
+
$highlightEl.remove();
|
|
17280
|
+
return;
|
|
17281
|
+
}
|
|
17282
|
+
if ($highlightEl.length === 0) {
|
|
17283
|
+
if (app.theme === 'ios') {
|
|
17284
|
+
$tabbarEl.children('.toolbar-new-inner').children('.toolbar-new-pane').append('<span class="tab-link-highlight"></span>');
|
|
17285
|
+
} else {
|
|
17286
|
+
$tabbarEl.children('.toolbar-new-inner').append('<span class="tab-link-highlight"></span>');
|
|
17287
|
+
}
|
|
17288
|
+
$highlightEl = $tabbarEl.find('.tab-link-highlight');
|
|
17289
|
+
} else if ($highlightEl.next('a,button,.tab-link').length) {
|
|
17290
|
+
if (app.theme === 'ios') {
|
|
17291
|
+
$tabbarEl.children('.toolbar-new-inner').children('.toolbar-new-pane').append($highlightEl);
|
|
17292
|
+
} else {
|
|
17293
|
+
$tabbarEl.children('.toolbar-new-inner').append($highlightEl);
|
|
17294
|
+
}
|
|
17295
|
+
}
|
|
17296
|
+
const $activeLink = $tabbarEl.find('.tab-link-active');
|
|
17297
|
+
let highlightWidth;
|
|
17298
|
+
let highlightTranslate;
|
|
17299
|
+
if ($tabbarEl.hasClass('tabbar-new-scrollable') && $activeLink && $activeLink[0]) {
|
|
17300
|
+
highlightWidth = `${$activeLink[0].offsetWidth}px`;
|
|
17301
|
+
highlightTranslate = `${$activeLink[0].offsetLeft}px`;
|
|
17302
|
+
} else {
|
|
17303
|
+
const activeIndex = $activeLink.index();
|
|
17304
|
+
highlightWidth = `${100 / tabLinksCount}%`;
|
|
17305
|
+
highlightTranslate = `${(app.rtl ? -activeIndex : activeIndex) * 100}%`;
|
|
17306
|
+
}
|
|
17307
|
+
nextFrame$1(() => {
|
|
17308
|
+
$highlightEl.css('width', highlightWidth).transform(`translate3d(${highlightTranslate},0,0)`);
|
|
17309
|
+
});
|
|
17310
|
+
},
|
|
17311
|
+
init(tabbarEl) {
|
|
17312
|
+
const app = this;
|
|
17313
|
+
app.toolbarNew.setHighlight(tabbarEl);
|
|
17314
|
+
if (app.theme !== 'ios') return;
|
|
17315
|
+
initTabbarNewHighlight(tabbarEl);
|
|
17316
|
+
},
|
|
17317
|
+
destroy(tabbarEl) {
|
|
17318
|
+
const app = this;
|
|
17319
|
+
if (app.theme !== 'ios') return;
|
|
17320
|
+
destroyTabbarNewHighlight(tabbarEl);
|
|
17321
|
+
},
|
|
17322
|
+
hide(el, animate) {
|
|
17323
|
+
if (animate === void 0) {
|
|
17324
|
+
animate = true;
|
|
17325
|
+
}
|
|
17326
|
+
const app = this;
|
|
17327
|
+
const $el = $(el);
|
|
17328
|
+
if ($el.hasClass('toolbar-new-hidden')) return;
|
|
17329
|
+
const className = `toolbar-new-hidden${animate ? ' toolbar-new-transitioning' : ''}`;
|
|
17330
|
+
$el.transitionEnd(() => {
|
|
17331
|
+
$el.removeClass('toolbar-new-transitioning');
|
|
17332
|
+
});
|
|
17333
|
+
$el.addClass(className);
|
|
17334
|
+
$el.trigger('toolbar-new:hide');
|
|
17335
|
+
app.emit('toolbarNewHide', $el[0]);
|
|
17336
|
+
},
|
|
17337
|
+
show(el, animate) {
|
|
17338
|
+
if (animate === void 0) {
|
|
17339
|
+
animate = true;
|
|
17340
|
+
}
|
|
17341
|
+
const app = this;
|
|
17342
|
+
const $el = $(el);
|
|
17343
|
+
if (!$el.hasClass('toolbar-new-hidden')) return;
|
|
17344
|
+
if (animate) {
|
|
17345
|
+
$el.addClass('toolbar-new-transitioning');
|
|
17346
|
+
$el.transitionEnd(() => {
|
|
17347
|
+
$el.removeClass('toolbar-new-transitioning');
|
|
17348
|
+
});
|
|
17349
|
+
}
|
|
17350
|
+
$el.removeClass('toolbar-new-hidden');
|
|
17351
|
+
$el.trigger('toolbar-new:show');
|
|
17352
|
+
app.emit('toolbarNewShow', $el[0]);
|
|
17353
|
+
},
|
|
17354
|
+
initToolbarOnScroll(pageEl) {
|
|
17355
|
+
const app = this;
|
|
17356
|
+
const $pageEl = $(pageEl);
|
|
17357
|
+
let $toolbarEl = $pageEl.parents('.view').children('.toolbar-new');
|
|
17358
|
+
if ($toolbarEl.length === 0) {
|
|
17359
|
+
$toolbarEl = $pageEl.find('.toolbar-new');
|
|
17360
|
+
}
|
|
17361
|
+
if ($toolbarEl.length === 0) {
|
|
17362
|
+
$toolbarEl = $pageEl.parents('.views').children('.tabbar-new, .tabbar-new-icons');
|
|
17363
|
+
}
|
|
17364
|
+
if ($toolbarEl.length === 0) {
|
|
17365
|
+
return;
|
|
17366
|
+
}
|
|
17367
|
+
let previousScrollTop;
|
|
17368
|
+
let currentScrollTop;
|
|
17369
|
+
let scrollHeight;
|
|
17370
|
+
let offsetHeight;
|
|
17371
|
+
let reachEnd;
|
|
17372
|
+
let action;
|
|
17373
|
+
let toolbarHidden;
|
|
17374
|
+
function handleScroll(e) {
|
|
17375
|
+
if ($pageEl.hasClass('page-with-card-opened')) return;
|
|
17376
|
+
if ($pageEl.hasClass('page-previous')) return;
|
|
17377
|
+
const scrollContent = this;
|
|
17378
|
+
if (e && e.target && e.target !== scrollContent) {
|
|
17379
|
+
return;
|
|
17380
|
+
}
|
|
17381
|
+
currentScrollTop = scrollContent.scrollTop;
|
|
17382
|
+
scrollHeight = scrollContent.scrollHeight;
|
|
17383
|
+
offsetHeight = scrollContent.offsetHeight;
|
|
17384
|
+
reachEnd = currentScrollTop + offsetHeight >= scrollHeight;
|
|
17385
|
+
toolbarHidden = $toolbarEl.hasClass('toolbar-new-hidden');
|
|
15073
17386
|
if (reachEnd) {
|
|
15074
|
-
if (app.params.
|
|
17387
|
+
if (app.params.toolbarNew.showOnPageScrollEnd) {
|
|
15075
17388
|
action = 'show';
|
|
15076
17389
|
}
|
|
15077
17390
|
} else if (previousScrollTop > currentScrollTop) {
|
|
15078
|
-
if (app.params.
|
|
17391
|
+
if (app.params.toolbarNew.showOnPageScrollTop || currentScrollTop <= 44) {
|
|
15079
17392
|
action = 'show';
|
|
15080
17393
|
} else {
|
|
15081
17394
|
action = 'hide';
|
|
@@ -15086,28 +17399,28 @@
|
|
|
15086
17399
|
action = 'show';
|
|
15087
17400
|
}
|
|
15088
17401
|
if (action === 'show' && toolbarHidden) {
|
|
15089
|
-
app.
|
|
17402
|
+
app.toolbarNew.show($toolbarEl);
|
|
15090
17403
|
toolbarHidden = false;
|
|
15091
17404
|
} else if (action === 'hide' && !toolbarHidden) {
|
|
15092
|
-
app.
|
|
17405
|
+
app.toolbarNew.hide($toolbarEl);
|
|
15093
17406
|
toolbarHidden = true;
|
|
15094
17407
|
}
|
|
15095
17408
|
previousScrollTop = currentScrollTop;
|
|
15096
17409
|
}
|
|
15097
17410
|
$pageEl.on('scroll', '.page-content', handleScroll, true);
|
|
15098
|
-
$pageEl[0].
|
|
17411
|
+
$pageEl[0].f7ScrollToolbarNewHandler = handleScroll;
|
|
15099
17412
|
}
|
|
15100
17413
|
};
|
|
15101
|
-
var
|
|
15102
|
-
name: 'toolbar',
|
|
17414
|
+
var ToolbarNew$1 = {
|
|
17415
|
+
name: 'toolbar-new',
|
|
15103
17416
|
create() {
|
|
15104
17417
|
const app = this;
|
|
15105
17418
|
bindMethods(app, {
|
|
15106
|
-
|
|
17419
|
+
toolbarNew: ToolbarNew
|
|
15107
17420
|
});
|
|
15108
17421
|
},
|
|
15109
17422
|
params: {
|
|
15110
|
-
|
|
17423
|
+
toolbarNew: {
|
|
15111
17424
|
hideOnPageScroll: false,
|
|
15112
17425
|
showOnPageScrollEnd: true,
|
|
15113
17426
|
showOnPageScrollTop: true
|
|
@@ -15115,477 +17428,61 @@
|
|
|
15115
17428
|
},
|
|
15116
17429
|
on: {
|
|
15117
17430
|
pageBeforeRemove(page) {
|
|
15118
|
-
|
|
15119
|
-
|
|
17431
|
+
const app = this;
|
|
17432
|
+
if (page.$el[0].f7ScrollToolbarNewHandler) {
|
|
17433
|
+
page.$el.off('scroll', '.page-content', page.$el[0].f7ScrollToolbarNewHandler, true);
|
|
15120
17434
|
}
|
|
17435
|
+
page.$el.find('.tabbar-new, .tabbar-new-icons').each(tabbarEl => {
|
|
17436
|
+
app.toolbarNew.destroy(tabbarEl);
|
|
17437
|
+
});
|
|
15121
17438
|
},
|
|
15122
17439
|
pageBeforeIn(page) {
|
|
15123
17440
|
const app = this;
|
|
15124
|
-
let $toolbarEl = page.$el.parents('.view').children('.toolbar');
|
|
17441
|
+
let $toolbarEl = page.$el.parents('.view').children('.toolbar-new');
|
|
15125
17442
|
if ($toolbarEl.length === 0) {
|
|
15126
|
-
$toolbarEl = page.$el.parents('.views').children('.tabbar, .tabbar-icons');
|
|
17443
|
+
$toolbarEl = page.$el.parents('.views').children('.tabbar-new, .tabbar-new-icons');
|
|
15127
17444
|
}
|
|
15128
17445
|
if ($toolbarEl.length === 0) {
|
|
15129
|
-
$toolbarEl = page.$el.find('.toolbar');
|
|
17446
|
+
$toolbarEl = page.$el.find('.toolbar-new');
|
|
15130
17447
|
}
|
|
15131
17448
|
if ($toolbarEl.length === 0) {
|
|
15132
17449
|
return;
|
|
15133
17450
|
}
|
|
15134
|
-
if (page.$el.hasClass('no-toolbar')) {
|
|
15135
|
-
app.
|
|
17451
|
+
if (page.$el.hasClass('no-toolbar-new')) {
|
|
17452
|
+
app.toolbarNew.hide($toolbarEl);
|
|
15136
17453
|
} else {
|
|
15137
|
-
app.
|
|
17454
|
+
app.toolbarNew.show($toolbarEl);
|
|
15138
17455
|
}
|
|
15139
17456
|
},
|
|
15140
17457
|
pageInit(page) {
|
|
15141
17458
|
const app = this;
|
|
15142
|
-
page.$el.find('.tabbar, .tabbar-icons').each(tabbarEl => {
|
|
15143
|
-
app.
|
|
17459
|
+
page.$el.find('.tabbar-new, .tabbar-new-icons').each(tabbarEl => {
|
|
17460
|
+
app.toolbarNew.init(tabbarEl);
|
|
15144
17461
|
});
|
|
15145
|
-
if (app.params.
|
|
15146
|
-
if (page.$el.find('.keep-toolbar-on-scroll').length || page.$el.hasClass('keep-toolbar-on-scroll') || page.$el.find('.keep-bars-on-scroll').length || page.$el.hasClass('keep-bars-on-scroll')) {
|
|
17462
|
+
if (app.params.toolbarNew.hideOnPageScroll || page.$el.find('.hide-toolbar-new-on-scroll').length || page.$el.hasClass('hide-toolbar-new-on-scroll') || page.$el.find('.hide-bars-on-scroll').length || page.$el.hasClass('hide-bars-on-scroll')) {
|
|
17463
|
+
if (page.$el.find('.keep-toolbar-new-on-scroll').length || page.$el.hasClass('keep-toolbar-new-on-scroll') || page.$el.find('.keep-bars-on-scroll').length || page.$el.hasClass('keep-bars-on-scroll')) {
|
|
15147
17464
|
return;
|
|
15148
17465
|
}
|
|
15149
|
-
app.
|
|
17466
|
+
app.toolbarNew.initToolbarOnScroll(page.el);
|
|
15150
17467
|
}
|
|
15151
17468
|
},
|
|
15152
17469
|
init() {
|
|
15153
17470
|
const app = this;
|
|
15154
|
-
app.$el.find('.tabbar, .tabbar-icons').each(tabbarEl => {
|
|
15155
|
-
app.
|
|
17471
|
+
app.$el.find('.tabbar-new, .tabbar-new-icons').each(tabbarEl => {
|
|
17472
|
+
app.toolbarNew.init(tabbarEl);
|
|
15156
17473
|
});
|
|
15157
17474
|
}
|
|
15158
17475
|
},
|
|
15159
17476
|
vnode: {
|
|
15160
|
-
|
|
17477
|
+
tabbarNew: {
|
|
15161
17478
|
insert(vnode) {
|
|
15162
17479
|
const app = this;
|
|
15163
|
-
app.
|
|
15164
|
-
}
|
|
15165
|
-
|
|
15166
|
-
|
|
15167
|
-
|
|
15168
|
-
|
|
15169
|
-
var Subnavbar = {
|
|
15170
|
-
name: 'subnavbar',
|
|
15171
|
-
on: {
|
|
15172
|
-
pageInit(page) {
|
|
15173
|
-
if (page.$navbarEl && page.$navbarEl.length && page.$navbarEl.find('.subnavbar').length) {
|
|
15174
|
-
page.$el.addClass('page-with-subnavbar');
|
|
15175
|
-
}
|
|
15176
|
-
const $innerSubnavbars = page.$el.find('.subnavbar').filter(subnavbarEl => {
|
|
15177
|
-
return $(subnavbarEl).parents('.page')[0] === page.$el[0];
|
|
15178
|
-
});
|
|
15179
|
-
if ($innerSubnavbars.length) {
|
|
15180
|
-
page.$el.addClass('page-with-subnavbar');
|
|
15181
|
-
}
|
|
15182
|
-
}
|
|
15183
|
-
}
|
|
15184
|
-
};
|
|
15185
|
-
|
|
15186
|
-
let TouchRipple$1 = class TouchRipple {
|
|
15187
|
-
constructor(app, $el, x, y) {
|
|
15188
|
-
const ripple = this;
|
|
15189
|
-
if (!$el) return undefined;
|
|
15190
|
-
const {
|
|
15191
|
-
left,
|
|
15192
|
-
top,
|
|
15193
|
-
width,
|
|
15194
|
-
height
|
|
15195
|
-
} = $el[0].getBoundingClientRect();
|
|
15196
|
-
const center = {
|
|
15197
|
-
x: x - left,
|
|
15198
|
-
y: y - top
|
|
15199
|
-
};
|
|
15200
|
-
let diameter = Math.max((height ** 2 + width ** 2) ** 0.5, 48);
|
|
15201
|
-
let isInset = false;
|
|
15202
|
-
const insetElements = app.params.touch.touchRippleInsetElements || '';
|
|
15203
|
-
if (insetElements && $el.is(insetElements)) {
|
|
15204
|
-
isInset = true;
|
|
15205
|
-
}
|
|
15206
|
-
if (isInset) {
|
|
15207
|
-
diameter = Math.max(Math.min(width, height), 48);
|
|
15208
|
-
}
|
|
15209
|
-
if (!isInset && $el.css('overflow') === 'hidden') {
|
|
15210
|
-
const distanceFromCenter = ((center.x - width / 2) ** 2 + (center.y - height / 2) ** 2) ** 0.5;
|
|
15211
|
-
const scale = (diameter / 2 + distanceFromCenter) / (diameter / 2);
|
|
15212
|
-
ripple.rippleTransform = `translate3d(0px, 0px, 0) scale(${scale * 2})`;
|
|
15213
|
-
} else {
|
|
15214
|
-
// prettier-ignore
|
|
15215
|
-
ripple.rippleTransform = `translate3d(${-center.x + width / 2}px, ${-center.y + height / 2}px, 0) scale(1)`;
|
|
15216
|
-
}
|
|
15217
|
-
if (isInset) {
|
|
15218
|
-
$el.addClass('ripple-inset');
|
|
15219
|
-
}
|
|
15220
|
-
ripple.$rippleWaveEl = $(`<div class="ripple-wave${isInset ? ' ripple-wave-inset' : ''}" style="width: ${diameter}px; height: ${diameter}px; margin-top:-${diameter / 2}px; margin-left:-${diameter / 2}px; left:${center.x}px; top:${center.y}px; --f7-ripple-transform: ${ripple.rippleTransform}"></div>`);
|
|
15221
|
-
$el.prepend(ripple.$rippleWaveEl);
|
|
15222
|
-
ripple.$rippleWaveEl.animationEnd(() => {
|
|
15223
|
-
if (!ripple.$rippleWaveEl) return;
|
|
15224
|
-
if (ripple.$rippleWaveEl.hasClass('ripple-wave-out')) return;
|
|
15225
|
-
ripple.$rippleWaveEl.addClass('ripple-wave-in');
|
|
15226
|
-
if (ripple.shouldBeRemoved) {
|
|
15227
|
-
ripple.out();
|
|
15228
|
-
}
|
|
15229
|
-
});
|
|
15230
|
-
return ripple;
|
|
15231
|
-
}
|
|
15232
|
-
destroy() {
|
|
15233
|
-
let ripple = this;
|
|
15234
|
-
if (ripple.$rippleWaveEl) {
|
|
15235
|
-
ripple.$rippleWaveEl.remove();
|
|
15236
|
-
}
|
|
15237
|
-
Object.keys(ripple).forEach(key => {
|
|
15238
|
-
ripple[key] = null;
|
|
15239
|
-
delete ripple[key];
|
|
15240
|
-
});
|
|
15241
|
-
ripple = null;
|
|
15242
|
-
}
|
|
15243
|
-
out() {
|
|
15244
|
-
const ripple = this;
|
|
15245
|
-
const {
|
|
15246
|
-
$rippleWaveEl
|
|
15247
|
-
} = this;
|
|
15248
|
-
clearTimeout(ripple.removeTimeout);
|
|
15249
|
-
$rippleWaveEl.addClass('ripple-wave-out');
|
|
15250
|
-
ripple.removeTimeout = setTimeout(() => {
|
|
15251
|
-
ripple.destroy();
|
|
15252
|
-
}, 300);
|
|
15253
|
-
$rippleWaveEl.animationEnd(() => {
|
|
15254
|
-
clearTimeout(ripple.removeTimeout);
|
|
15255
|
-
ripple.destroy();
|
|
15256
|
-
});
|
|
15257
|
-
}
|
|
15258
|
-
remove() {
|
|
15259
|
-
const ripple = this;
|
|
15260
|
-
if (ripple.shouldBeRemoved) return;
|
|
15261
|
-
ripple.removeTimeout = setTimeout(() => {
|
|
15262
|
-
ripple.destroy();
|
|
15263
|
-
}, 400);
|
|
15264
|
-
ripple.shouldBeRemoved = true;
|
|
15265
|
-
if (ripple.$rippleWaveEl.hasClass('ripple-wave-in')) {
|
|
15266
|
-
ripple.out();
|
|
15267
|
-
}
|
|
15268
|
-
}
|
|
15269
|
-
};
|
|
15270
|
-
|
|
15271
|
-
var TouchRipple = {
|
|
15272
|
-
name: 'touch-ripple',
|
|
15273
|
-
static: {
|
|
15274
|
-
TouchRipple: TouchRipple$1
|
|
15275
|
-
},
|
|
15276
|
-
create() {
|
|
15277
|
-
const app = this;
|
|
15278
|
-
app.touchRipple = {
|
|
15279
|
-
create() {
|
|
15280
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
15281
|
-
args[_key] = arguments[_key];
|
|
15282
|
-
}
|
|
15283
|
-
return new TouchRipple$1(...args);
|
|
15284
|
-
}
|
|
15285
|
-
};
|
|
15286
|
-
}
|
|
15287
|
-
};
|
|
15288
|
-
|
|
15289
|
-
const openedModals = [];
|
|
15290
|
-
const dialogsQueue = [];
|
|
15291
|
-
function clearDialogsQueue() {
|
|
15292
|
-
if (dialogsQueue.length === 0) return;
|
|
15293
|
-
const dialog = dialogsQueue.shift();
|
|
15294
|
-
dialog.open();
|
|
15295
|
-
}
|
|
15296
|
-
let Modal$1 = class Modal extends Framework7Class {
|
|
15297
|
-
constructor(app, params) {
|
|
15298
|
-
super(params, [app]);
|
|
15299
|
-
const modal = this;
|
|
15300
|
-
const defaults = {};
|
|
15301
|
-
|
|
15302
|
-
// Extend defaults with modules params
|
|
15303
|
-
modal.useModulesParams(defaults);
|
|
15304
|
-
modal.params = extend$3(defaults, params);
|
|
15305
|
-
modal.opened = false;
|
|
15306
|
-
let $containerEl = modal.params.containerEl ? $(modal.params.containerEl).eq(0) : app.$el;
|
|
15307
|
-
if (!$containerEl.length) $containerEl = app.$el;
|
|
15308
|
-
modal.$containerEl = $containerEl;
|
|
15309
|
-
modal.containerEl = $containerEl[0];
|
|
15310
|
-
|
|
15311
|
-
// Install Modules
|
|
15312
|
-
modal.useModules();
|
|
15313
|
-
return this;
|
|
15314
|
-
}
|
|
15315
|
-
onOpen() {
|
|
15316
|
-
const modal = this;
|
|
15317
|
-
modal.opened = true;
|
|
15318
|
-
openedModals.push(modal);
|
|
15319
|
-
$('html').addClass(`with-modal-${modal.type.toLowerCase()}`);
|
|
15320
|
-
modal.$el.trigger(`modal:open ${modal.type.toLowerCase()}:open`);
|
|
15321
|
-
modal.emit(`local::open modalOpen ${modal.type}Open`, modal);
|
|
15322
|
-
}
|
|
15323
|
-
onOpened() {
|
|
15324
|
-
const modal = this;
|
|
15325
|
-
modal.$el.trigger(`modal:opened ${modal.type.toLowerCase()}:opened`);
|
|
15326
|
-
modal.emit(`local::opened modalOpened ${modal.type}Opened`, modal);
|
|
15327
|
-
}
|
|
15328
|
-
onClose() {
|
|
15329
|
-
const modal = this;
|
|
15330
|
-
modal.opened = false;
|
|
15331
|
-
if (!modal.type || !modal.$el) return;
|
|
15332
|
-
openedModals.splice(openedModals.indexOf(modal), 1);
|
|
15333
|
-
$('html').removeClass(`with-modal-${modal.type.toLowerCase()}`);
|
|
15334
|
-
modal.$el.trigger(`modal:close ${modal.type.toLowerCase()}:close`);
|
|
15335
|
-
modal.emit(`local::close modalClose ${modal.type}Close`, modal);
|
|
15336
|
-
}
|
|
15337
|
-
onClosed() {
|
|
15338
|
-
const modal = this;
|
|
15339
|
-
if (!modal.type || !modal.$el) return;
|
|
15340
|
-
modal.$el.removeClass('modal-out');
|
|
15341
|
-
modal.$el.hide();
|
|
15342
|
-
if (modal.params.backdrop && (modal.params.backdropUnique || modal.forceBackdropUnique) && modal.$backdropEl) {
|
|
15343
|
-
modal.$backdropEl.remove();
|
|
15344
|
-
}
|
|
15345
|
-
modal.$el.trigger(`modal:closed ${modal.type.toLowerCase()}:closed`);
|
|
15346
|
-
modal.emit(`local::closed modalClosed ${modal.type}Closed`, modal);
|
|
15347
|
-
}
|
|
15348
|
-
open(animateModal, force) {
|
|
15349
|
-
const modal = this;
|
|
15350
|
-
const document = getDocument$1();
|
|
15351
|
-
const app = modal.app;
|
|
15352
|
-
const $el = modal.$el;
|
|
15353
|
-
const $backdropEl = modal.$backdropEl;
|
|
15354
|
-
const type = modal.type;
|
|
15355
|
-
let animate = true;
|
|
15356
|
-
if (typeof animateModal !== 'undefined') animate = animateModal;else if (typeof modal.params.animate !== 'undefined') {
|
|
15357
|
-
animate = modal.params.animate;
|
|
15358
|
-
}
|
|
15359
|
-
if (!$el || $el.hasClass('modal-in')) {
|
|
15360
|
-
if (animateModal === false && $el[0] && type !== 'dialog') {
|
|
15361
|
-
$el[0].style.display = 'block';
|
|
15362
|
-
}
|
|
15363
|
-
if (!force) return modal;
|
|
15364
|
-
}
|
|
15365
|
-
if (type === 'dialog' && app.params.modal.queueDialogs) {
|
|
15366
|
-
let pushToQueue;
|
|
15367
|
-
if ($('.dialog.modal-in').length > 0) {
|
|
15368
|
-
pushToQueue = true;
|
|
15369
|
-
} else if (openedModals.length > 0) {
|
|
15370
|
-
openedModals.forEach(openedModal => {
|
|
15371
|
-
if (openedModal.type === 'dialog') pushToQueue = true;
|
|
15372
|
-
});
|
|
15373
|
-
}
|
|
15374
|
-
if (pushToQueue) {
|
|
15375
|
-
dialogsQueue.push(modal);
|
|
15376
|
-
return modal;
|
|
15377
|
-
}
|
|
15378
|
-
}
|
|
15379
|
-
const $modalParentEl = $el.parent();
|
|
15380
|
-
const wasInDom = $el.parents(document).length > 0;
|
|
15381
|
-
if (!$modalParentEl.is(modal.$containerEl)) {
|
|
15382
|
-
modal.$containerEl.append($el);
|
|
15383
|
-
modal.once(`${type}Closed`, () => {
|
|
15384
|
-
if (wasInDom) {
|
|
15385
|
-
$modalParentEl.append($el);
|
|
15386
|
-
} else {
|
|
15387
|
-
$el.remove();
|
|
15388
|
-
}
|
|
15389
|
-
});
|
|
15390
|
-
}
|
|
15391
|
-
// Show Modal
|
|
15392
|
-
$el.show();
|
|
15393
|
-
if (modal.params.backdrop && (modal.params.backdropUnique || modal.forceBackdropUnique) && modal.$backdropEl) {
|
|
15394
|
-
modal.$backdropEl.insertBefore($el);
|
|
15395
|
-
}
|
|
15396
|
-
|
|
15397
|
-
/* eslint no-underscore-dangle: ["error", { "allow": ["_clientLeft"] }] */
|
|
15398
|
-
modal._clientLeft = $el[0].clientLeft;
|
|
15399
|
-
|
|
15400
|
-
// Modal
|
|
15401
|
-
function transitionEnd() {
|
|
15402
|
-
if ($el.hasClass('modal-out')) {
|
|
15403
|
-
modal.onClosed();
|
|
15404
|
-
} else if ($el.hasClass('modal-in')) {
|
|
15405
|
-
modal.onOpened();
|
|
15406
|
-
}
|
|
15407
|
-
}
|
|
15408
|
-
if (animate) {
|
|
15409
|
-
if ($backdropEl) {
|
|
15410
|
-
$backdropEl.removeClass('not-animated');
|
|
15411
|
-
$backdropEl.addClass('backdrop-in');
|
|
15412
|
-
}
|
|
15413
|
-
$el.animationEnd(() => {
|
|
15414
|
-
transitionEnd();
|
|
15415
|
-
});
|
|
15416
|
-
$el.transitionEnd(() => {
|
|
15417
|
-
transitionEnd();
|
|
15418
|
-
});
|
|
15419
|
-
$el.removeClass('modal-out not-animated').addClass('modal-in');
|
|
15420
|
-
modal.onOpen();
|
|
15421
|
-
} else {
|
|
15422
|
-
if ($backdropEl) {
|
|
15423
|
-
$backdropEl.addClass('backdrop-in not-animated');
|
|
15424
|
-
}
|
|
15425
|
-
$el.removeClass('modal-out').addClass('modal-in not-animated');
|
|
15426
|
-
modal.onOpen();
|
|
15427
|
-
modal.onOpened();
|
|
15428
|
-
}
|
|
15429
|
-
return modal;
|
|
15430
|
-
}
|
|
15431
|
-
close(animateModal) {
|
|
15432
|
-
const modal = this;
|
|
15433
|
-
const $el = modal.$el;
|
|
15434
|
-
const $backdropEl = modal.$backdropEl;
|
|
15435
|
-
let animate = true;
|
|
15436
|
-
if (typeof animateModal !== 'undefined') animate = animateModal;else if (typeof modal.params.animate !== 'undefined') {
|
|
15437
|
-
animate = modal.params.animate;
|
|
15438
|
-
}
|
|
15439
|
-
if (!$el || !$el.hasClass('modal-in')) {
|
|
15440
|
-
if (dialogsQueue.indexOf(modal) >= 0) {
|
|
15441
|
-
dialogsQueue.splice(dialogsQueue.indexOf(modal), 1);
|
|
15442
|
-
}
|
|
15443
|
-
return modal;
|
|
15444
|
-
}
|
|
15445
|
-
|
|
15446
|
-
// backdrop
|
|
15447
|
-
if ($backdropEl) {
|
|
15448
|
-
let needToHideBackdrop = true;
|
|
15449
|
-
if (modal.type === 'popup') {
|
|
15450
|
-
modal.$el.prevAll('.popup.modal-in').add(modal.$el.nextAll('.popup.modal-in')).each(popupEl => {
|
|
15451
|
-
const popupInstance = popupEl.f7Modal;
|
|
15452
|
-
if (!popupInstance) return;
|
|
15453
|
-
if (popupInstance.params.closeByBackdropClick && popupInstance.params.backdrop && popupInstance.backdropEl === modal.backdropEl) {
|
|
15454
|
-
needToHideBackdrop = false;
|
|
15455
|
-
}
|
|
15456
|
-
});
|
|
15457
|
-
}
|
|
15458
|
-
if (needToHideBackdrop) {
|
|
15459
|
-
$backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');
|
|
15460
|
-
$backdropEl.removeClass('backdrop-in');
|
|
15461
|
-
}
|
|
15462
|
-
}
|
|
15463
|
-
|
|
15464
|
-
// Modal
|
|
15465
|
-
$el[animate ? 'removeClass' : 'addClass']('not-animated');
|
|
15466
|
-
function transitionEnd() {
|
|
15467
|
-
if ($el.hasClass('modal-out')) {
|
|
15468
|
-
modal.onClosed();
|
|
15469
|
-
} else if ($el.hasClass('modal-in')) {
|
|
15470
|
-
modal.onOpened();
|
|
15471
|
-
}
|
|
15472
|
-
}
|
|
15473
|
-
if (animate) {
|
|
15474
|
-
$el.animationEnd(() => {
|
|
15475
|
-
transitionEnd();
|
|
15476
|
-
});
|
|
15477
|
-
$el.transitionEnd(() => {
|
|
15478
|
-
transitionEnd();
|
|
15479
|
-
});
|
|
15480
|
-
$el.removeClass('modal-in').addClass('modal-out');
|
|
15481
|
-
// Emit close
|
|
15482
|
-
modal.onClose();
|
|
15483
|
-
} else {
|
|
15484
|
-
$el.addClass('not-animated').removeClass('modal-in').addClass('modal-out');
|
|
15485
|
-
// Emit close
|
|
15486
|
-
modal.onClose();
|
|
15487
|
-
modal.onClosed();
|
|
15488
|
-
}
|
|
15489
|
-
if (modal.type === 'dialog') {
|
|
15490
|
-
clearDialogsQueue();
|
|
15491
|
-
}
|
|
15492
|
-
return modal;
|
|
15493
|
-
}
|
|
15494
|
-
destroy() {
|
|
15495
|
-
const modal = this;
|
|
15496
|
-
if (modal.destroyed) return;
|
|
15497
|
-
modal.emit(`local::beforeDestroy modalBeforeDestroy ${modal.type}BeforeDestroy`, modal);
|
|
15498
|
-
if (modal.$el) {
|
|
15499
|
-
modal.$el.trigger(`modal:beforedestroy ${modal.type.toLowerCase()}:beforedestroy`);
|
|
15500
|
-
if (modal.$el.length && modal.$el[0].f7Modal) {
|
|
15501
|
-
delete modal.$el[0].f7Modal;
|
|
15502
|
-
}
|
|
15503
|
-
}
|
|
15504
|
-
deleteProps$1(modal);
|
|
15505
|
-
modal.destroyed = true;
|
|
15506
|
-
}
|
|
15507
|
-
};
|
|
15508
|
-
|
|
15509
|
-
class CustomModal extends Modal$1 {
|
|
15510
|
-
constructor(app, params) {
|
|
15511
|
-
const extendedParams = extend$3({
|
|
15512
|
-
backdrop: true,
|
|
15513
|
-
closeByBackdropClick: true,
|
|
15514
|
-
on: {}
|
|
15515
|
-
}, params);
|
|
15516
|
-
|
|
15517
|
-
// Extends with open/close Modal methods;
|
|
15518
|
-
super(app, extendedParams);
|
|
15519
|
-
const customModal = this;
|
|
15520
|
-
customModal.params = extendedParams;
|
|
15521
|
-
|
|
15522
|
-
// Find Element
|
|
15523
|
-
let $el;
|
|
15524
|
-
if (!customModal.params.el) {
|
|
15525
|
-
$el = $(customModal.params.content);
|
|
15526
|
-
} else {
|
|
15527
|
-
$el = $(customModal.params.el);
|
|
15528
|
-
}
|
|
15529
|
-
if ($el && $el.length > 0 && $el[0].f7Modal) {
|
|
15530
|
-
return $el[0].f7Modal;
|
|
15531
|
-
}
|
|
15532
|
-
if ($el.length === 0) {
|
|
15533
|
-
return customModal.destroy();
|
|
15534
|
-
}
|
|
15535
|
-
let $backdropEl;
|
|
15536
|
-
if (customModal.params.backdrop) {
|
|
15537
|
-
$backdropEl = app.$el.children('.custom-modal-backdrop');
|
|
15538
|
-
if ($backdropEl.length === 0) {
|
|
15539
|
-
$backdropEl = $('<div class="custom-modal-backdrop"></div>');
|
|
15540
|
-
app.$el.append($backdropEl);
|
|
15541
|
-
}
|
|
15542
|
-
}
|
|
15543
|
-
function handleClick(e) {
|
|
15544
|
-
if (!customModal || customModal.destroyed) return;
|
|
15545
|
-
if ($backdropEl && e.target === $backdropEl[0]) {
|
|
15546
|
-
customModal.close();
|
|
15547
|
-
}
|
|
15548
|
-
}
|
|
15549
|
-
customModal.on('customModalOpened', () => {
|
|
15550
|
-
if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {
|
|
15551
|
-
app.on('click', handleClick);
|
|
15552
|
-
}
|
|
15553
|
-
});
|
|
15554
|
-
customModal.on('customModalClose', () => {
|
|
15555
|
-
if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {
|
|
15556
|
-
app.off('click', handleClick);
|
|
15557
|
-
}
|
|
15558
|
-
});
|
|
15559
|
-
extend$3(customModal, {
|
|
15560
|
-
app,
|
|
15561
|
-
$el,
|
|
15562
|
-
el: $el[0],
|
|
15563
|
-
$backdropEl,
|
|
15564
|
-
backdropEl: $backdropEl && $backdropEl[0],
|
|
15565
|
-
type: 'customModal'
|
|
15566
|
-
});
|
|
15567
|
-
$el[0].f7Modal = customModal;
|
|
15568
|
-
return customModal;
|
|
15569
|
-
}
|
|
15570
|
-
}
|
|
15571
|
-
|
|
15572
|
-
var Modal = {
|
|
15573
|
-
name: 'modal',
|
|
15574
|
-
static: {
|
|
15575
|
-
Modal: Modal$1,
|
|
15576
|
-
CustomModal
|
|
15577
|
-
},
|
|
15578
|
-
create() {
|
|
15579
|
-
const app = this;
|
|
15580
|
-
app.customModal = {
|
|
15581
|
-
create(params) {
|
|
15582
|
-
return new CustomModal(app, params);
|
|
17480
|
+
app.toolbarNew.init(vnode.elm);
|
|
17481
|
+
},
|
|
17482
|
+
destroy(vnode) {
|
|
17483
|
+
const app = this;
|
|
17484
|
+
app.toolbarNew.destroy(vnode.elm);
|
|
15583
17485
|
}
|
|
15584
|
-
};
|
|
15585
|
-
},
|
|
15586
|
-
params: {
|
|
15587
|
-
modal: {
|
|
15588
|
-
queueDialogs: true
|
|
15589
17486
|
}
|
|
15590
17487
|
}
|
|
15591
17488
|
};
|
|
@@ -18582,7 +20479,6 @@
|
|
|
18582
20479
|
let $overswipeRightButton;
|
|
18583
20480
|
let overswipeLeft;
|
|
18584
20481
|
let overswipeRight;
|
|
18585
|
-
const isIOS = app.theme === 'ios';
|
|
18586
20482
|
function handleTouchStart(e) {
|
|
18587
20483
|
if (!app.swipeout.allow) return;
|
|
18588
20484
|
isMoved = false;
|
|
@@ -18717,7 +20613,7 @@
|
|
|
18717
20613
|
buttonOffset = buttonEl.f7SwipeoutButtonOffset;
|
|
18718
20614
|
const buttonWidth = $buttonEl[0].f7SwipeoutButtonWidth;
|
|
18719
20615
|
if ($overswipeRightButton.length > 0 && $buttonEl.hasClass('swipeout-overswipe') && direction === 'to-left') {
|
|
18720
|
-
if (
|
|
20616
|
+
if (app.theme === 'ios') {
|
|
18721
20617
|
const newWidth = overswipeRight ? buttonWidth + buttonOffset - 8 : buttonWidth;
|
|
18722
20618
|
const diff = newWidth - buttonWidth;
|
|
18723
20619
|
$buttonEl.css({
|
|
@@ -18743,7 +20639,7 @@
|
|
|
18743
20639
|
$buttonEl.removeClass('swipeout-overswipe-active');
|
|
18744
20640
|
}
|
|
18745
20641
|
}
|
|
18746
|
-
if (
|
|
20642
|
+
if (app.theme === 'ios') {
|
|
18747
20643
|
const buttonEndPos = actionsRightWidth - buttonOffset;
|
|
18748
20644
|
const buttonStartPos = actionsRightWidth - buttonOffset - buttonWidth;
|
|
18749
20645
|
let buttonProgress = (-buttonTranslate - buttonStartPos) / (buttonEndPos - buttonStartPos);
|
|
@@ -18776,12 +20672,12 @@
|
|
|
18776
20672
|
$buttonEl[0].f7SwipeoutButtonWidth = buttonEl.offsetWidth;
|
|
18777
20673
|
}
|
|
18778
20674
|
if (typeof buttonEl.f7SwipeoutButtonOffset === 'undefined') {
|
|
18779
|
-
$buttonEl[0].f7SwipeoutButtonOffset =
|
|
20675
|
+
$buttonEl[0].f7SwipeoutButtonOffset = app.theme === 'ios' ? buttonEl.offsetLeft : actionsLeftWidth - buttonEl.offsetLeft - buttonEl.offsetWidth;
|
|
18780
20676
|
}
|
|
18781
20677
|
const buttonWidth = $buttonEl[0].f7SwipeoutButtonWidth;
|
|
18782
20678
|
buttonOffset = buttonEl.f7SwipeoutButtonOffset;
|
|
18783
20679
|
if ($overswipeLeftButton.length > 0 && $buttonEl.hasClass('swipeout-overswipe') && direction === 'to-right') {
|
|
18784
|
-
if (
|
|
20680
|
+
if (app.theme === 'ios') {
|
|
18785
20681
|
const newWidth = overswipeLeft ? actionsLeftWidth - 16 : buttonWidth;
|
|
18786
20682
|
const diff = newWidth - buttonWidth;
|
|
18787
20683
|
$buttonEl.css({
|
|
@@ -18810,7 +20706,7 @@
|
|
|
18810
20706
|
if ($leftButtons.length > 1) {
|
|
18811
20707
|
$buttonEl.css('z-index', $leftButtons.length - index);
|
|
18812
20708
|
}
|
|
18813
|
-
if (
|
|
20709
|
+
if (app.theme === 'ios') {
|
|
18814
20710
|
const buttonStartPos = buttonOffset;
|
|
18815
20711
|
const buttonEndPos = buttonStartPos + buttonWidth;
|
|
18816
20712
|
let buttonProgress = (buttonTranslate - buttonStartPos) / (buttonEndPos - buttonStartPos);
|
|
@@ -18860,7 +20756,7 @@
|
|
|
18860
20756
|
$buttons = direction === 'to-left' ? $rightButtons : $leftButtons;
|
|
18861
20757
|
if ($buttons) {
|
|
18862
20758
|
for (i = 0; i < $buttons.length; i += 1) {
|
|
18863
|
-
if (
|
|
20759
|
+
if (app.theme === 'ios') {
|
|
18864
20760
|
$($buttons[i]).transform(`scale(1)`);
|
|
18865
20761
|
} else {
|
|
18866
20762
|
$($buttons[i]).transform(`translate3d(${newTranslate}px,0,0)`);
|
|
@@ -18889,7 +20785,7 @@
|
|
|
18889
20785
|
if (typeof buttonOffset === 'undefined') {
|
|
18890
20786
|
$buttonEl[0].f7SwipeoutButtonOffset = actionsLeftWidth - buttonEl.offsetLeft - buttonEl.offsetWidth;
|
|
18891
20787
|
}
|
|
18892
|
-
if (
|
|
20788
|
+
if (app.theme === 'ios') {
|
|
18893
20789
|
$buttonEl.transform(`scale(0)`);
|
|
18894
20790
|
} else {
|
|
18895
20791
|
$buttonEl.transform(`translate3d(${buttonOffset}px,0,0)`);
|
|
@@ -18903,7 +20799,7 @@
|
|
|
18903
20799
|
if (typeof buttonOffset === 'undefined') {
|
|
18904
20800
|
$buttonEl[0].f7SwipeoutButtonOffset = buttonEl.offsetLeft;
|
|
18905
20801
|
}
|
|
18906
|
-
if (
|
|
20802
|
+
if (app.theme === 'ios') {
|
|
18907
20803
|
$buttonEl.transform(`scale(0)`);
|
|
18908
20804
|
} else {
|
|
18909
20805
|
$buttonEl.transform(`translate3d(${-buttonOffset}px,0,0)`);
|
|
@@ -20443,6 +22339,11 @@
|
|
|
20443
22339
|
if (hasHighlight) {
|
|
20444
22340
|
app.toolbar.setHighlight($tabbarEl);
|
|
20445
22341
|
}
|
|
22342
|
+
// Toolbar New Highlight
|
|
22343
|
+
const $tabbarNewEl = $tabLinkEl.parents('.tabbar-new, .tabbar-new-icons');
|
|
22344
|
+
if (app.toolbarNew && $tabbarNewEl.length > 0) {
|
|
22345
|
+
app.toolbarNew.setHighlight($tabbarNewEl);
|
|
22346
|
+
}
|
|
20446
22347
|
}
|
|
20447
22348
|
}
|
|
20448
22349
|
return {
|
|
@@ -50010,7 +51911,7 @@
|
|
|
50010
51911
|
// UMD_ONLY_END
|
|
50011
51912
|
|
|
50012
51913
|
Router.use([RouterComponentLoaderModule]);
|
|
50013
|
-
Framework7.use([DeviceModule, SupportModule, UtilsModule, ResizeModule, TouchModule, ClicksModule, RouterModule, HistoryModule, ComponentModule, ServiceWorkerModule, StoreModule, Statusbar$1, View, Navbar$
|
|
51914
|
+
Framework7.use([DeviceModule, SupportModule, UtilsModule, ResizeModule, TouchModule, ClicksModule, RouterModule, HistoryModule, ComponentModule, ServiceWorkerModule, StoreModule, Statusbar$1, View, Navbar$2, NavbarNew, SearchbarNew, Toolbar$1, ToolbarNew$1, Subnavbar, TouchRipple, Modal, Dialog, Popup, LoginScreen, Popover, Actions, Sheet, Toast, Preloader$1, Progressbar$1, Sortable$1, Swipeout$1, Accordion$1, ContactsList, VirtualList, ListIndex, Timeline, Tabs, Panel, Card, Chip, Form, Input$1, Checkbox, Radio, Toggle, Range, Stepper, SmartSelect, Grid$1, Calendar, Picker, InfiniteScroll$1, PullToRefresh, DataTable, Fab$1, Searchbar, Messages, Messagebar, Swiper, PhotoBrowser, Notification, Autocomplete, Tooltip, Gauge, Skeleton, ColorPicker, Treeview$1, TextEditor, PieChart, AreaChart, Breadcrumbs$1, Typography]);
|
|
50014
51915
|
|
|
50015
51916
|
return Framework7;
|
|
50016
51917
|
|