framework7 7.0.8 → 8.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (579) hide show
  1. package/components/accordion/accordion.js +2 -16
  2. package/components/accordion/accordion.less +0 -3
  3. package/components/actions/actions-class.js +13 -58
  4. package/components/actions/actions-ios.less +42 -0
  5. package/components/actions/actions-md.less +12 -0
  6. package/components/actions/actions-rtl.css +1 -1
  7. package/components/actions/actions-vars.less +17 -42
  8. package/components/actions/actions.css +1 -1
  9. package/components/actions/actions.d.ts +2 -2
  10. package/components/actions/actions.js +0 -4
  11. package/components/actions/actions.lazy.js +1 -1
  12. package/components/actions/actions.less +5 -35
  13. package/components/app/app-class.d.ts +14 -12
  14. package/components/app/app-class.js +93 -75
  15. package/components/app/app-ios.less +0 -2
  16. package/components/app/app-md.less +0 -2
  17. package/components/app/app-vars.less +13 -96
  18. package/components/app/app.less +1 -4
  19. package/components/app/load-module.js +17 -36
  20. package/components/area-chart/area-chart-class.js +8 -64
  21. package/components/area-chart/area-chart.js +0 -3
  22. package/components/area-chart/area-chart.less +0 -3
  23. package/components/autocomplete/autocomplete-class.js +30 -175
  24. package/components/autocomplete/autocomplete-ios.less +0 -8
  25. package/components/autocomplete/autocomplete-rtl.css +1 -1
  26. package/components/autocomplete/autocomplete-vars.less +8 -22
  27. package/components/autocomplete/autocomplete.css +1 -1
  28. package/components/autocomplete/autocomplete.d.ts +1 -3
  29. package/components/autocomplete/autocomplete.js +1 -6
  30. package/components/autocomplete/autocomplete.lazy.js +1 -1
  31. package/components/autocomplete/autocomplete.less +6 -18
  32. package/components/badge/badge-vars.less +3 -6
  33. package/components/badge/badge.less +1 -3
  34. package/components/block/block-vars.less +25 -52
  35. package/components/block/block.less +37 -12
  36. package/components/breadcrumbs/breadcrumbs-rtl.css +1 -1
  37. package/components/breadcrumbs/breadcrumbs-vars.less +31 -15
  38. package/components/breadcrumbs/breadcrumbs.css +1 -1
  39. package/components/breadcrumbs/breadcrumbs.js +0 -2
  40. package/components/breadcrumbs/breadcrumbs.less +4 -10
  41. package/components/button/button-vars.less +42 -43
  42. package/components/button/button.less +24 -26
  43. package/components/calendar/calendar-class.js +81 -401
  44. package/components/calendar/calendar-rtl.css +1 -1
  45. package/components/calendar/calendar-vars.less +32 -46
  46. package/components/calendar/calendar.css +1 -1
  47. package/components/calendar/calendar.js +6 -4
  48. package/components/calendar/calendar.lazy.js +1 -1
  49. package/components/calendar/calendar.less +10 -21
  50. package/components/card/card-rtl.css +1 -1
  51. package/components/card/card-vars.less +41 -44
  52. package/components/card/card.css +1 -1
  53. package/components/card/card.js +0 -108
  54. package/components/card/card.less +18 -24
  55. package/components/checkbox/checkbox-rtl.css +1 -1
  56. package/components/checkbox/checkbox-vars.less +0 -8
  57. package/components/checkbox/checkbox.css +1 -1
  58. package/components/checkbox/checkbox.less +10 -3
  59. package/components/chip/chip-ios.less +3 -0
  60. package/components/chip/chip-md.less +4 -3
  61. package/components/chip/chip-rtl.css +1 -1
  62. package/components/chip/chip-vars.less +17 -20
  63. package/components/chip/chip.css +1 -1
  64. package/components/chip/chip.less +16 -21
  65. package/components/color-picker/color-picker-class.js +27 -158
  66. package/components/color-picker/color-picker-rtl.css +1 -1
  67. package/components/color-picker/color-picker.css +1 -1
  68. package/components/color-picker/color-picker.js +0 -4
  69. package/components/color-picker/color-picker.lazy.js +1 -1
  70. package/components/color-picker/color-picker.less +18 -8
  71. package/components/color-picker/modules/alpha-slider.js +0 -12
  72. package/components/color-picker/modules/brightness-slider.js +0 -8
  73. package/components/color-picker/modules/current-color.js +0 -2
  74. package/components/color-picker/modules/hex.js +0 -12
  75. package/components/color-picker/modules/hs-spectrum.js +0 -20
  76. package/components/color-picker/modules/hsb-sliders.js +0 -18
  77. package/components/color-picker/modules/hue-slider.js +0 -7
  78. package/components/color-picker/modules/initial-current-colors.js +0 -7
  79. package/components/color-picker/modules/palette.js +2 -10
  80. package/components/color-picker/modules/rgb-bars.js +0 -17
  81. package/components/color-picker/modules/rgb-sliders.js +0 -17
  82. package/components/color-picker/modules/sb-spectrum.js +0 -20
  83. package/components/color-picker/modules/wheel.js +0 -28
  84. package/components/contacts-list/contacts-list-md.less +4 -3
  85. package/components/contacts-list/contacts-list-rtl.css +1 -1
  86. package/components/contacts-list/contacts-list-vars.less +3 -15
  87. package/components/contacts-list/contacts-list.css +1 -1
  88. package/components/contacts-list/contacts-list.less +0 -3
  89. package/components/data-table/data-table-class.js +10 -32
  90. package/components/data-table/data-table-rtl.css +1 -1
  91. package/components/data-table/data-table-vars.less +6 -39
  92. package/components/data-table/data-table.css +1 -1
  93. package/components/data-table/data-table.js +0 -8
  94. package/components/data-table/data-table.less +0 -3
  95. package/components/dialog/dialog-class.js +7 -41
  96. package/components/dialog/dialog-ios.less +0 -3
  97. package/components/dialog/dialog-md.less +9 -9
  98. package/components/dialog/dialog-rtl.css +1 -1
  99. package/components/dialog/dialog-vars.less +25 -70
  100. package/components/dialog/dialog.css +1 -1
  101. package/components/dialog/dialog.d.ts +2 -2
  102. package/components/dialog/dialog.js +12 -48
  103. package/components/dialog/dialog.lazy.js +1 -1
  104. package/components/dialog/dialog.less +8 -4
  105. package/components/fab/fab-rtl.css +1 -1
  106. package/components/fab/fab-vars.less +20 -14
  107. package/components/fab/fab.css +1 -1
  108. package/components/fab/fab.js +0 -21
  109. package/components/fab/fab.less +50 -53
  110. package/components/form/form.d.ts +4 -4
  111. package/components/form/form.js +58 -94
  112. package/components/form/form.lazy.js +1 -1
  113. package/components/form/form.less +0 -3
  114. package/components/gauge/gauge-class.js +4 -20
  115. package/components/gauge/gauge.js +0 -9
  116. package/components/gauge/gauge.less +0 -3
  117. package/components/grid/grid-rtl.css +1 -1
  118. package/components/grid/grid-vars.less +0 -7
  119. package/components/grid/grid.css +1 -1
  120. package/components/grid/grid.d.ts +2 -8
  121. package/components/grid/grid.js +1 -225
  122. package/components/grid/grid.lazy.js +1 -1
  123. package/components/grid/grid.less +54 -184
  124. package/components/icon/icon.less +0 -3
  125. package/components/infinite-scroll/infinite-scroll-rtl.css +1 -1
  126. package/components/infinite-scroll/infinite-scroll.css +1 -1
  127. package/components/infinite-scroll/infinite-scroll.js +0 -16
  128. package/components/infinite-scroll/infinite-scroll.less +0 -3
  129. package/components/input/input-ios.less +49 -41
  130. package/components/input/input-md.less +87 -19
  131. package/components/input/input-rtl.css +1 -1
  132. package/components/input/input-vars.less +26 -60
  133. package/components/input/input.css +1 -1
  134. package/components/input/input.js +8 -67
  135. package/components/input/input.less +67 -153
  136. package/components/link/link-vars.less +0 -5
  137. package/components/link/link.less +3 -3
  138. package/components/list/list-md.less +0 -7
  139. package/components/list/list-vars.less +59 -108
  140. package/components/list/list.less +122 -90
  141. package/components/list-index/list-index-class.js +12 -69
  142. package/components/list-index/list-index-rtl.css +1 -1
  143. package/components/list-index/list-index-vars.less +0 -7
  144. package/components/list-index/list-index.css +1 -1
  145. package/components/list-index/list-index.d.ts +1 -3
  146. package/components/list-index/list-index.js +0 -8
  147. package/components/list-index/list-index.lazy.js +1 -1
  148. package/components/list-index/list-index.less +4 -7
  149. package/components/login-screen/login-screen-class.js +4 -9
  150. package/components/login-screen/login-screen-rtl.css +1 -1
  151. package/components/login-screen/login-screen-vars.less +13 -12
  152. package/components/login-screen/login-screen.css +1 -1
  153. package/components/login-screen/login-screen.js +0 -4
  154. package/components/login-screen/login-screen.less +2 -8
  155. package/components/messagebar/messagebar-class.js +18 -79
  156. package/components/messagebar/messagebar-ios.less +36 -0
  157. package/components/messagebar/messagebar-md.less +96 -16
  158. package/components/messagebar/messagebar-rtl.css +1 -1
  159. package/components/messagebar/messagebar-vars.less +27 -50
  160. package/components/messagebar/messagebar.css +1 -1
  161. package/components/messagebar/messagebar.js +0 -8
  162. package/components/messagebar/messagebar.less +11 -42
  163. package/components/messages/messages-class.js +17 -110
  164. package/components/messages/messages-ios.less +9 -0
  165. package/components/messages/messages-md.less +63 -28
  166. package/components/messages/messages-rtl.css +1 -1
  167. package/components/messages/messages-vars.less +43 -50
  168. package/components/messages/messages.css +1 -1
  169. package/components/messages/messages.js +0 -8
  170. package/components/messages/messages.lazy.js +1 -1
  171. package/components/messages/messages.less +0 -11
  172. package/components/modal/custom-modal-class.js +4 -14
  173. package/components/modal/modal-class.js +19 -55
  174. package/components/modal/modal.js +0 -3
  175. package/components/navbar/navbar-ios.less +3 -39
  176. package/components/navbar/navbar-md.less +12 -0
  177. package/components/navbar/navbar-vars.less +20 -49
  178. package/components/navbar/navbar.d.ts +0 -2
  179. package/components/navbar/navbar.js +37 -166
  180. package/components/navbar/navbar.less +4 -26
  181. package/components/notification/notification-class.js +4 -39
  182. package/components/notification/notification-md.less +18 -8
  183. package/components/notification/notification-rtl.css +1 -1
  184. package/components/notification/notification-vars.less +15 -54
  185. package/components/notification/notification.css +1 -1
  186. package/components/notification/notification.js +0 -2
  187. package/components/notification/notification.lazy.js +1 -1
  188. package/components/notification/notification.less +0 -3
  189. package/components/page/page-md.less +40 -10
  190. package/components/page/page-transitions/circle.less +15 -9
  191. package/components/page/page-transitions/fade.less +17 -11
  192. package/components/page/page-transitions/flip.less +9 -4
  193. package/components/page/page-vars.less +3 -19
  194. package/components/page/page.less +2 -10
  195. package/components/panel/panel-class.js +23 -127
  196. package/components/panel/panel-md.less +9 -0
  197. package/components/panel/panel-rtl.css +1 -1
  198. package/components/panel/panel-vars.less +7 -21
  199. package/components/panel/panel.css +1 -1
  200. package/components/panel/panel.d.ts +2 -2
  201. package/components/panel/panel.js +0 -34
  202. package/components/panel/panel.lazy.js +1 -1
  203. package/components/panel/panel.less +56 -48
  204. package/components/panel/resizable-panel.js +2 -32
  205. package/components/panel/swipe-panel.js +16 -71
  206. package/components/photo-browser/photo-browser-class.js +41 -171
  207. package/components/photo-browser/photo-browser-rtl.css +1 -1
  208. package/components/photo-browser/photo-browser-vars.less +0 -3
  209. package/components/photo-browser/photo-browser.css +1 -1
  210. package/components/photo-browser/photo-browser.d.ts +2 -4
  211. package/components/photo-browser/photo-browser.js +1 -6
  212. package/components/photo-browser/photo-browser.lazy.js +1 -1
  213. package/components/photo-browser/photo-browser.less +0 -4
  214. package/components/picker/picker-class.js +26 -133
  215. package/components/picker/picker-column.js +11 -31
  216. package/components/picker/picker-ios.less +10 -0
  217. package/components/picker/picker-md.less +6 -0
  218. package/components/picker/picker-rtl.css +1 -1
  219. package/components/picker/picker-vars.less +9 -25
  220. package/components/picker/picker.css +1 -1
  221. package/components/picker/picker.js +0 -4
  222. package/components/picker/picker.lazy.js +1 -1
  223. package/components/picker/picker.less +0 -11
  224. package/components/pie-chart/pie-chart-class.js +8 -31
  225. package/components/pie-chart/pie-chart.js +0 -3
  226. package/components/pie-chart/pie-chart.less +0 -3
  227. package/components/popover/popover-class.js +72 -126
  228. package/components/popover/popover-ios.less +0 -50
  229. package/components/popover/popover-rtl.css +1 -1
  230. package/components/popover/popover-vars.less +6 -23
  231. package/components/popover/popover.css +1 -1
  232. package/components/popover/popover.d.ts +2 -0
  233. package/components/popover/popover.js +1 -12
  234. package/components/popover/popover.lazy.js +1 -1
  235. package/components/popover/popover.less +62 -5
  236. package/components/popup/popup-class.js +12 -78
  237. package/components/popup/popup-rtl.css +1 -1
  238. package/components/popup/popup-vars.less +7 -9
  239. package/components/popup/popup.css +1 -1
  240. package/components/popup/popup.js +0 -4
  241. package/components/popup/popup.lazy.js +1 -1
  242. package/components/popup/popup.less +4 -4
  243. package/components/preloader/preloader-ios.less +3 -1
  244. package/components/preloader/preloader-md.less +5 -1
  245. package/components/preloader/preloader-rtl.css +1 -1
  246. package/components/preloader/preloader-vars.less +0 -6
  247. package/components/preloader/preloader.css +1 -1
  248. package/components/preloader/preloader.js +8 -25
  249. package/components/preloader/preloader.lazy.js +1 -1
  250. package/components/preloader/preloader.less +6 -3
  251. package/components/progressbar/progressbar-rtl.css +1 -1
  252. package/components/progressbar/progressbar-vars.less +2 -12
  253. package/components/progressbar/progressbar.css +1 -1
  254. package/components/progressbar/progressbar.js +2 -31
  255. package/components/progressbar/progressbar.less +0 -3
  256. package/components/pull-to-refresh/pull-to-refresh-class.js +15 -107
  257. package/components/pull-to-refresh/pull-to-refresh-md.less +2 -1
  258. package/components/pull-to-refresh/pull-to-refresh-rtl.css +1 -1
  259. package/components/pull-to-refresh/pull-to-refresh-vars.less +0 -4
  260. package/components/pull-to-refresh/pull-to-refresh.css +1 -1
  261. package/components/pull-to-refresh/pull-to-refresh.js +0 -8
  262. package/components/pull-to-refresh/pull-to-refresh.lazy.js +1 -1
  263. package/components/pull-to-refresh/pull-to-refresh.less +0 -3
  264. package/components/radio/radio-rtl.css +1 -1
  265. package/components/radio/radio-vars.less +0 -7
  266. package/components/radio/radio.css +1 -1
  267. package/components/radio/radio.less +12 -5
  268. package/components/range/range-class.js +27 -112
  269. package/components/range/range-rtl.css +1 -1
  270. package/components/range/range-vars.less +10 -32
  271. package/components/range/range.css +1 -1
  272. package/components/range/range.js +0 -12
  273. package/components/range/range.less +0 -3
  274. package/components/searchbar/remove-diacritics.js +0 -4
  275. package/components/searchbar/searchbar-class.js +17 -138
  276. package/components/searchbar/searchbar-md.less +41 -16
  277. package/components/searchbar/searchbar-rtl.css +1 -1
  278. package/components/searchbar/searchbar-vars.less +25 -76
  279. package/components/searchbar/searchbar.css +1 -1
  280. package/components/searchbar/searchbar.d.ts +2 -2
  281. package/components/searchbar/searchbar.js +0 -15
  282. package/components/searchbar/searchbar.lazy.js +1 -1
  283. package/components/searchbar/searchbar.less +14 -28
  284. package/components/sheet/sheet-class.js +15 -110
  285. package/components/sheet/sheet-rtl.css +1 -1
  286. package/components/sheet/sheet-vars.less +17 -6
  287. package/components/sheet/sheet.css +1 -1
  288. package/components/sheet/sheet.js +0 -9
  289. package/components/sheet/sheet.lazy.js +1 -1
  290. package/components/sheet/sheet.less +10 -3
  291. package/components/skeleton/skeleton.less +1 -4
  292. package/components/smart-select/smart-select-class.js +36 -173
  293. package/components/smart-select/smart-select.d.ts +1 -3
  294. package/components/smart-select/smart-select.js +1 -14
  295. package/components/smart-select/smart-select.lazy.js +1 -1
  296. package/components/smart-select/smart-select.less +0 -3
  297. package/components/sortable/sortable-rtl.css +1 -1
  298. package/components/sortable/sortable-vars.less +8 -8
  299. package/components/sortable/sortable.css +1 -1
  300. package/components/sortable/sortable.js +0 -44
  301. package/components/sortable/sortable.less +0 -3
  302. package/components/statusbar/statusbar.js +0 -36
  303. package/components/statusbar/statusbar.less +0 -3
  304. package/components/stepper/stepper-class.js +10 -83
  305. package/components/stepper/stepper-rtl.css +1 -1
  306. package/components/stepper/stepper-vars.less +12 -24
  307. package/components/stepper/stepper.css +1 -1
  308. package/components/stepper/stepper.js +0 -12
  309. package/components/stepper/stepper.less +12 -23
  310. package/components/subnavbar/subnavbar-vars.less +3 -18
  311. package/components/subnavbar/subnavbar.js +0 -3
  312. package/components/subnavbar/subnavbar.less +1 -11
  313. package/components/swipeout/swipeout-rtl.css +1 -1
  314. package/components/swipeout/swipeout-vars.less +7 -6
  315. package/components/swipeout/swipeout.css +1 -1
  316. package/components/swipeout/swipeout.js +2 -99
  317. package/components/swipeout/swipeout.less +2 -7
  318. package/components/swiper/swiper-rtl.css +1 -1
  319. package/components/swiper/swiper.css +1 -1
  320. package/components/swiper/swiper.js +9 -30
  321. package/components/swiper/swiper.lazy.js +1 -1
  322. package/components/swiper/swiper.less +1 -16
  323. package/components/tabs/tabs-rtl.css +1 -1
  324. package/components/tabs/tabs.css +1 -1
  325. package/components/tabs/tabs.js +23 -60
  326. package/components/tabs/tabs.lazy.js +1 -1
  327. package/components/tabs/tabs.less +1 -3
  328. package/components/text-editor/text-editor-class.js +16 -102
  329. package/components/text-editor/text-editor-rtl.css +1 -1
  330. package/components/text-editor/text-editor-vars.less +12 -16
  331. package/components/text-editor/text-editor.css +1 -1
  332. package/components/text-editor/text-editor.js +0 -8
  333. package/components/text-editor/text-editor.lazy.js +1 -1
  334. package/components/text-editor/text-editor.less +0 -6
  335. package/components/timeline/timeline-rtl.css +1 -1
  336. package/components/timeline/timeline-vars.less +13 -47
  337. package/components/timeline/timeline.css +1 -1
  338. package/components/timeline/timeline.less +2 -9
  339. package/components/toast/toast-class.js +2 -16
  340. package/components/toast/toast-rtl.css +1 -1
  341. package/components/toast/toast-vars.less +5 -9
  342. package/components/toast/toast.css +1 -1
  343. package/components/toast/toast.js +0 -3
  344. package/components/toast/toast.less +0 -3
  345. package/components/toggle/toggle-class.js +6 -30
  346. package/components/toggle/toggle-ios.less +5 -1
  347. package/components/toggle/toggle-md.less +27 -11
  348. package/components/toggle/toggle-rtl.css +1 -1
  349. package/components/toggle/toggle-vars.less +19 -21
  350. package/components/toggle/toggle.css +1 -1
  351. package/components/toggle/toggle.js +0 -8
  352. package/components/toggle/toggle.less +0 -4
  353. package/components/toolbar/toolbar-ios.less +2 -2
  354. package/components/toolbar/toolbar-md.less +28 -4
  355. package/components/toolbar/toolbar-vars.less +17 -52
  356. package/components/toolbar/toolbar.js +5 -43
  357. package/components/toolbar/toolbar.less +27 -45
  358. package/components/tooltip/tooltip-class.js +10 -64
  359. package/components/tooltip/tooltip-rtl.css +1 -1
  360. package/components/tooltip/tooltip-vars.less +12 -3
  361. package/components/tooltip/tooltip.css +1 -1
  362. package/components/tooltip/tooltip.js +0 -15
  363. package/components/tooltip/tooltip.less +0 -3
  364. package/components/touch-ripple/touch-ripple-class.js +0 -13
  365. package/components/touch-ripple/touch-ripple.js +0 -4
  366. package/components/touch-ripple/touch-ripple.less +1 -5
  367. package/components/treeview/treeview-rtl.css +1 -1
  368. package/components/treeview/treeview-vars.less +0 -3
  369. package/components/treeview/treeview.css +1 -1
  370. package/components/treeview/treeview.js +2 -11
  371. package/components/treeview/treeview.lazy.js +1 -1
  372. package/components/treeview/treeview.less +0 -3
  373. package/components/typography/typography-rtl.css +1 -1
  374. package/components/typography/typography.css +1 -1
  375. package/components/typography/typography.less +25 -3
  376. package/components/view/resizable-view.js +2 -24
  377. package/components/view/view-class.js +28 -53
  378. package/components/view/view.d.ts +0 -14
  379. package/components/view/view.js +8 -32
  380. package/components/view/view.less +1 -4
  381. package/components/virtual-list/virtual-list-class.js +58 -146
  382. package/components/virtual-list/virtual-list.d.ts +1 -1
  383. package/components/virtual-list/virtual-list.js +0 -2
  384. package/components/virtual-list/virtual-list.lazy.js +1 -1
  385. package/components/virtual-list/virtual-list.less +0 -3
  386. package/framework7-bundle-rtl.css +3593 -5977
  387. package/framework7-bundle-rtl.min.css +3 -3
  388. package/framework7-bundle.css +3591 -5978
  389. package/framework7-bundle.esm.js +4 -10
  390. package/framework7-bundle.js +6063 -12044
  391. package/framework7-bundle.js.map +1 -1
  392. package/framework7-bundle.less +2 -27
  393. package/framework7-bundle.min.css +3 -3
  394. package/framework7-bundle.min.js +3 -3
  395. package/framework7-bundle.min.js.map +1 -1
  396. package/framework7-lite-bundle.esm.js +4 -10
  397. package/framework7-lite.esm.js +4 -6
  398. package/framework7-lite.js +31 -0
  399. package/framework7-rtl.css +803 -1591
  400. package/framework7-rtl.min.css +3 -3
  401. package/framework7-types.d.ts +1 -32
  402. package/framework7.css +803 -1594
  403. package/framework7.d.ts +1 -32
  404. package/framework7.esm.js +4 -6
  405. package/framework7.js +1770 -3407
  406. package/framework7.js.map +1 -1
  407. package/framework7.less +2 -23
  408. package/framework7.min.css +3 -3
  409. package/framework7.min.js +3 -3
  410. package/framework7.min.js.map +1 -1
  411. package/less/mixins.less +7 -88
  412. package/less/plugin.js +15 -0
  413. package/modules/clicks/clicks.js +10 -22
  414. package/modules/component/$h.js +0 -3
  415. package/modules/component/$jsx.js +0 -5
  416. package/modules/component/component-class.js +13 -66
  417. package/modules/component/component.d.ts +1 -2
  418. package/modules/component/component.js +0 -8
  419. package/modules/component/eventslisteners.js +12 -20
  420. package/modules/component/parse-component.js +18 -20
  421. package/modules/component/snabbdom/h.js +3 -12
  422. package/modules/component/snabbdom/helpers/attachto.js +9 -14
  423. package/modules/component/snabbdom/htmldomapi.js +0 -16
  424. package/modules/component/snabbdom/modules/attributes.js +7 -11
  425. package/modules/component/snabbdom/modules/class.js +4 -8
  426. package/modules/component/snabbdom/modules/dataset.js +3 -7
  427. package/modules/component/snabbdom/modules/eventlisteners.js +16 -22
  428. package/modules/component/snabbdom/modules/hero.js +4 -44
  429. package/modules/component/snabbdom/modules/props.js +5 -9
  430. package/modules/component/snabbdom/modules/style.js +13 -30
  431. package/modules/component/snabbdom/snabbdom.bundle.js +0 -6
  432. package/modules/component/snabbdom/snabbdom.js +13 -72
  433. package/modules/component/snabbdom/thunk.js +3 -11
  434. package/modules/component/snabbdom/tovnode.js +1 -6
  435. package/modules/component/vdom.js +4 -62
  436. package/modules/demo-module.js +0 -8
  437. package/modules/device/device.js +6 -11
  438. package/modules/history/history.js +0 -1
  439. package/modules/resize/resize.js +8 -11
  440. package/modules/router/async-component.js +0 -3
  441. package/modules/router/back.js +86 -275
  442. package/modules/router/clear-previous-history.js +5 -18
  443. package/modules/router/component-loader.js +4 -25
  444. package/modules/router/modal.js +16 -43
  445. package/modules/router/navigate.js +80 -249
  446. package/modules/router/process-route-queue.js +0 -12
  447. package/modules/router/redirect.js +0 -8
  448. package/modules/router/router-class.js +92 -315
  449. package/modules/router/router.d.ts +3 -5
  450. package/modules/router/router.js +0 -3
  451. package/modules/router/swipe-back.js +35 -139
  452. package/modules/router/tab.js +14 -43
  453. package/modules/service-worker/service-worker.js +0 -11
  454. package/modules/store/create-store.js +10 -29
  455. package/modules/touch/touch.d.ts +2 -4
  456. package/modules/touch/touch.js +13 -108
  457. package/package.json +4 -18
  458. package/shared/$jsx.js +0 -6
  459. package/shared/class.js +18 -43
  460. package/shared/constructor-methods.js +0 -11
  461. package/shared/events-class.js +0 -17
  462. package/shared/get-device.js +18 -34
  463. package/shared/get-support.js +2 -8
  464. package/shared/history.js +2 -30
  465. package/shared/material-color-utils.js +728 -0
  466. package/shared/material-colors.js +75 -0
  467. package/shared/modal-methods.js +0 -18
  468. package/shared/utils.d.ts +0 -4
  469. package/shared/utils.js +191 -71
  470. package/components/accordion/accordion-aurora.less +0 -2
  471. package/components/actions/actions-aurora.less +0 -9
  472. package/components/app/app-aurora.less +0 -10
  473. package/components/appbar/appbar-aurora.less +0 -2
  474. package/components/appbar/appbar-ios.less +0 -2
  475. package/components/appbar/appbar-md.less +0 -2
  476. package/components/appbar/appbar-rtl.css +0 -1
  477. package/components/appbar/appbar-vars.less +0 -28
  478. package/components/appbar/appbar.css +0 -1
  479. package/components/appbar/appbar.d.ts +0 -14
  480. package/components/appbar/appbar.js +0 -3
  481. package/components/appbar/appbar.lazy.js +0 -1
  482. package/components/appbar/appbar.less +0 -106
  483. package/components/area-chart/area-chart-aurora.less +0 -2
  484. package/components/autocomplete/autocomplete-aurora.less +0 -17
  485. package/components/badge/badge-aurora.less +0 -2
  486. package/components/block/block-aurora.less +0 -2
  487. package/components/breadcrumbs/breadcrumbs-aurora.less +0 -2
  488. package/components/button/button-aurora.less +0 -25
  489. package/components/calendar/calendar-aurora.less +0 -2
  490. package/components/card/card-aurora.less +0 -2
  491. package/components/checkbox/checkbox-aurora.less +0 -39
  492. package/components/chip/chip-aurora.less +0 -14
  493. package/components/color-picker/color-picker-aurora.less +0 -2
  494. package/components/contacts-list/contacts-list-aurora.less +0 -2
  495. package/components/data-table/data-table-aurora.less +0 -64
  496. package/components/dialog/dialog-aurora.less +0 -112
  497. package/components/elevation/elevation-aurora.less +0 -2
  498. package/components/elevation/elevation-ios.less +0 -2
  499. package/components/elevation/elevation-md.less +0 -2
  500. package/components/elevation/elevation-rtl.css +0 -1
  501. package/components/elevation/elevation-vars.less +0 -51
  502. package/components/elevation/elevation.css +0 -1
  503. package/components/elevation/elevation.d.ts +0 -14
  504. package/components/elevation/elevation.js +0 -3
  505. package/components/elevation/elevation.lazy.js +0 -1
  506. package/components/elevation/elevation.less +0 -54
  507. package/components/fab/fab-aurora.less +0 -2
  508. package/components/form/form-aurora.less +0 -0
  509. package/components/gauge/gauge-aurora.less +0 -2
  510. package/components/grid/grid-aurora.less +0 -2
  511. package/components/icon/icon-aurora.less +0 -49
  512. package/components/infinite-scroll/infinite-scroll-aurora.less +0 -6
  513. package/components/input/input-aurora.less +0 -120
  514. package/components/lazy/lazy-aurora.less +0 -2
  515. package/components/lazy/lazy-ios.less +0 -2
  516. package/components/lazy/lazy-md.less +0 -2
  517. package/components/lazy/lazy-rtl.css +0 -1
  518. package/components/lazy/lazy.css +0 -1
  519. package/components/lazy/lazy.d.ts +0 -57
  520. package/components/lazy/lazy.js +0 -283
  521. package/components/lazy/lazy.lazy.js +0 -1
  522. package/components/lazy/lazy.less +0 -23
  523. package/components/link/link-aurora.less +0 -15
  524. package/components/list/list-aurora.less +0 -25
  525. package/components/list-index/list-index-aurora.less +0 -21
  526. package/components/login-screen/login-screen-aurora.less +0 -2
  527. package/components/menu/menu-aurora.less +0 -8
  528. package/components/menu/menu-ios.less +0 -2
  529. package/components/menu/menu-md.less +0 -2
  530. package/components/menu/menu-rtl.css +0 -1
  531. package/components/menu/menu-vars.less +0 -27
  532. package/components/menu/menu.css +0 -1
  533. package/components/menu/menu.d.ts +0 -32
  534. package/components/menu/menu.js +0 -87
  535. package/components/menu/menu.lazy.js +0 -1
  536. package/components/menu/menu.less +0 -232
  537. package/components/messagebar/messagebar-aurora.less +0 -53
  538. package/components/messages/messages-aurora.less +0 -137
  539. package/components/navbar/navbar-aurora.less +0 -70
  540. package/components/notification/notification-aurora.less +0 -59
  541. package/components/page/page-aurora.less +0 -49
  542. package/components/panel/panel-aurora.less +0 -2
  543. package/components/photo-browser/photo-browser-aurora.less +0 -2
  544. package/components/picker/picker-aurora.less +0 -2
  545. package/components/pie-chart/pie-chart-aurora.less +0 -2
  546. package/components/popover/popover-aurora.less +0 -56
  547. package/components/popup/popup-aurora.less +0 -2
  548. package/components/preloader/preloader-aurora.less +0 -53
  549. package/components/progressbar/progressbar-aurora.less +0 -72
  550. package/components/pull-to-refresh/pull-to-refresh-aurora.less +0 -122
  551. package/components/radio/radio-aurora.less +0 -86
  552. package/components/range/range-aurora.less +0 -9
  553. package/components/searchbar/searchbar-aurora.less +0 -86
  554. package/components/sheet/sheet-aurora.less +0 -2
  555. package/components/skeleton/skeleton-aurora.less +0 -2
  556. package/components/smart-select/smart-select-aurora.less +0 -2
  557. package/components/sortable/sortable-aurora.less +0 -7
  558. package/components/statusbar/statusbar-aurora.less +0 -2
  559. package/components/stepper/stepper-aurora.less +0 -32
  560. package/components/subnavbar/subnavbar-aurora.less +0 -51
  561. package/components/swipeout/swipeout-aurora.less +0 -2
  562. package/components/swiper/swiper-aurora.less +0 -2
  563. package/components/tabs/tabs-aurora.less +0 -2
  564. package/components/text-editor/text-editor-aurora.less +0 -9
  565. package/components/timeline/timeline-aurora.less +0 -7
  566. package/components/toast/toast-aurora.less +0 -64
  567. package/components/toggle/toggle-aurora.less +0 -26
  568. package/components/toolbar/toolbar-aurora.less +0 -43
  569. package/components/tooltip/tooltip-aurora.less +0 -2
  570. package/components/touch-ripple/touch-ripple-aurora.less +0 -2
  571. package/components/treeview/treeview-aurora.less +0 -31
  572. package/components/typography/typography-aurora.less +0 -2
  573. package/components/view/view-aurora.less +0 -2
  574. package/components/virtual-list/virtual-list-aurora.less +0 -2
  575. package/modules/request/request.d.ts +0 -15
  576. package/modules/request/request.js +0 -11
  577. package/postinstall.js +0 -3
  578. package/shared/request.d.ts +0 -115
  579. package/shared/request.js +0 -512
@@ -11,14 +11,13 @@ import { modalLoad, modalRemove } from './modal.js';
11
11
  import { back } from './back.js';
12
12
  import { clearPreviousHistory } from './clear-previous-history.js';
13
13
  import appRouterCheck from './app-router-check.js';
14
-
15
14
  class Router extends Framework7Class {
16
15
  constructor(app, view) {
17
16
  super({}, [typeof view === 'undefined' ? app : view]);
18
- const router = this; // Is App Router
17
+ const router = this;
19
18
 
19
+ // Is App Router
20
20
  router.isAppRouter = typeof view === 'undefined';
21
-
22
21
  if (router.isAppRouter) {
23
22
  // App Router
24
23
  extend(false, router, {
@@ -43,52 +42,46 @@ class Router extends Framework7Class {
43
42
  initialPages: [],
44
43
  initialNavbars: []
45
44
  });
46
- } // Install Modules
47
-
45
+ }
48
46
 
49
- router.useModules(); // AllowPageChage
47
+ // Install Modules
48
+ router.useModules();
50
49
 
51
- router.allowPageChange = true; // Current Route
50
+ // AllowPageChage
51
+ router.allowPageChange = true;
52
52
 
53
+ // Current Route
53
54
  let currentRoute = {};
54
55
  let previousRoute = {};
55
56
  Object.defineProperty(router, 'currentRoute', {
56
57
  enumerable: true,
57
58
  configurable: true,
58
-
59
59
  set(newRoute) {
60
60
  if (newRoute === void 0) {
61
61
  newRoute = {};
62
62
  }
63
-
64
63
  previousRoute = extend({}, currentRoute);
65
64
  currentRoute = newRoute;
66
65
  if (!currentRoute) return;
67
66
  router.url = currentRoute.url;
68
67
  router.emit('routeChange', newRoute, previousRoute, router);
69
68
  },
70
-
71
69
  get() {
72
70
  return currentRoute;
73
71
  }
74
-
75
72
  });
76
73
  Object.defineProperty(router, 'previousRoute', {
77
74
  enumerable: true,
78
75
  configurable: true,
79
-
80
76
  get() {
81
77
  return previousRoute;
82
78
  },
83
-
84
79
  set(newRoute) {
85
80
  previousRoute = newRoute;
86
81
  }
87
-
88
82
  });
89
83
  return router;
90
84
  }
91
-
92
85
  mount() {
93
86
  const router = this;
94
87
  const view = router.view;
@@ -102,27 +95,22 @@ class Router extends Framework7Class {
102
95
  });
103
96
  router.emit('local::mount routerMount', router);
104
97
  }
105
-
106
98
  animatableNavElements($newNavbarEl, $oldNavbarEl, toLarge, fromLarge, direction) {
107
99
  const router = this;
108
100
  const dynamicNavbar = router.dynamicNavbar;
109
101
  const animateIcon = router.params.iosAnimateNavbarBackIcon;
110
102
  let newNavEls;
111
103
  let oldNavEls;
112
-
113
104
  function animatableNavEl($el, $navbarInner) {
114
105
  const isSliding = $el.hasClass('sliding') || $navbarInner.hasClass('sliding');
115
106
  const isSubnavbar = $el.hasClass('subnavbar');
116
107
  const needsOpacityTransition = isSliding ? !isSubnavbar : true;
117
108
  const $iconEl = $el.find('.back .icon');
118
109
  let isIconLabel;
119
-
120
110
  if (isSliding && animateIcon && $el.hasClass('left') && $iconEl.length > 0 && $iconEl.next('span').length) {
121
111
  $el = $iconEl.next('span'); // eslint-disable-line
122
-
123
112
  isIconLabel = true;
124
113
  }
125
-
126
114
  return {
127
115
  $el,
128
116
  isIconLabel,
@@ -133,7 +121,6 @@ class Router extends Framework7Class {
133
121
  needsOpacityTransition
134
122
  };
135
123
  }
136
-
137
124
  if (dynamicNavbar) {
138
125
  newNavEls = [];
139
126
  oldNavEls = [];
@@ -143,21 +130,17 @@ class Router extends Framework7Class {
143
130
  if ($navEl.hasClass('title') && toLarge) return;
144
131
  newNavEls.push(animatableNavEl($navEl, $newNavbarEl.children('.navbar-inner')));
145
132
  });
146
-
147
133
  if (!($oldNavbarEl.hasClass('navbar-master') && router.params.masterDetailBreakpoint > 0 && router.app.width >= router.params.masterDetailBreakpoint)) {
148
134
  $oldNavbarEl.children('.navbar-inner').children('.left, .right, .title, .subnavbar').each(navEl => {
149
135
  const $navEl = $(navEl);
150
136
  if ($navEl.hasClass('left') && toLarge && !fromLarge && direction === 'forward') return;
151
137
  if ($navEl.hasClass('left') && toLarge && direction === 'backward') return;
152
-
153
138
  if ($navEl.hasClass('title') && fromLarge) {
154
139
  return;
155
140
  }
156
-
157
141
  oldNavEls.push(animatableNavEl($navEl, $oldNavbarEl.children('.navbar-inner')));
158
142
  });
159
143
  }
160
-
161
144
  [oldNavEls, newNavEls].forEach(navEls => {
162
145
  navEls.forEach(navEl => {
163
146
  const n = navEl;
@@ -176,64 +159,52 @@ class Router extends Framework7Class {
176
159
  });
177
160
  });
178
161
  }
179
-
180
162
  return {
181
163
  newNavEls,
182
164
  oldNavEls
183
165
  };
184
166
  }
185
-
186
167
  animate($oldPageEl, $newPageEl, $oldNavbarEl, $newNavbarEl, direction, transition, callback) {
187
168
  const router = this;
188
-
189
169
  if (router.params.animateCustom) {
190
170
  router.params.animateCustom.apply(router, [$oldPageEl, $newPageEl, $oldNavbarEl, $newNavbarEl, direction, callback]);
191
171
  return;
192
172
  }
193
-
194
173
  const dynamicNavbar = router.dynamicNavbar;
195
174
  const ios = router.app.theme === 'ios';
196
-
197
175
  if (transition) {
198
- const routerCustomTransitionClass = `router-transition-custom router-transition-${transition}-${direction}`; // Animate
199
-
176
+ const routerCustomTransitionClass = `router-transition-custom router-transition-${transition}-${direction}`;
177
+ // Animate
200
178
  const onCustomTransitionDone = () => {
201
179
  router.$el.removeClass(routerCustomTransitionClass);
202
-
203
180
  if (dynamicNavbar && router.$navbarsEl.length) {
204
181
  if ($newNavbarEl) {
205
182
  router.$navbarsEl.prepend($newNavbarEl);
206
183
  }
207
-
208
184
  if ($oldNavbarEl) {
209
185
  router.$navbarsEl.prepend($oldNavbarEl);
210
186
  }
211
187
  }
212
-
213
188
  if (callback) callback();
214
189
  };
215
-
216
190
  (direction === 'forward' ? $newPageEl : $oldPageEl).animationEnd(onCustomTransitionDone);
217
-
218
191
  if (dynamicNavbar) {
219
192
  if ($newNavbarEl && $newPageEl) {
220
193
  router.setNavbarPosition($newNavbarEl, '');
221
194
  $newNavbarEl.removeClass('navbar-next navbar-previous navbar-current');
222
195
  $newPageEl.prepend($newNavbarEl);
223
196
  }
224
-
225
197
  if ($oldNavbarEl && $oldPageEl) {
226
198
  router.setNavbarPosition($oldNavbarEl, '');
227
199
  $oldNavbarEl.removeClass('navbar-next navbar-previous navbar-current');
228
200
  $oldPageEl.prepend($oldNavbarEl);
229
201
  }
230
202
  }
231
-
232
203
  router.$el.addClass(routerCustomTransitionClass);
233
204
  return;
234
- } // Router Animation class
235
-
205
+ }
236
206
 
207
+ // Router Animation class
237
208
  const routerTransitionClass = `router-transition-${direction} router-transition`;
238
209
  let newNavEls;
239
210
  let oldNavEls;
@@ -242,10 +213,8 @@ class Router extends Framework7Class {
242
213
  let toDifferent;
243
214
  let oldIsLarge;
244
215
  let newIsLarge;
245
-
246
216
  if (ios && dynamicNavbar) {
247
217
  const betweenMasterAndDetail = router.params.masterDetailBreakpoint > 0 && router.app.width >= router.params.masterDetailBreakpoint && ($oldNavbarEl.hasClass('navbar-master') && $newNavbarEl.hasClass('navbar-master-detail') || $oldNavbarEl.hasClass('navbar-master-detail') && $newNavbarEl.hasClass('navbar-master'));
248
-
249
218
  if (!betweenMasterAndDetail) {
250
219
  oldIsLarge = $oldNavbarEl && $oldNavbarEl.hasClass('navbar-large');
251
220
  newIsLarge = $newNavbarEl && $newNavbarEl.hasClass('navbar-large');
@@ -253,31 +222,25 @@ class Router extends Framework7Class {
253
222
  toLarge = newIsLarge && !$newNavbarEl.hasClass('navbar-large-collapsed');
254
223
  toDifferent = fromLarge && !toLarge || toLarge && !fromLarge;
255
224
  }
256
-
257
225
  const navEls = router.animatableNavElements($newNavbarEl, $oldNavbarEl, toLarge, fromLarge, direction);
258
226
  newNavEls = navEls.newNavEls;
259
227
  oldNavEls = navEls.oldNavEls;
260
228
  }
261
-
262
229
  function animateNavbars(progress) {
263
230
  if (!(ios && dynamicNavbar)) return;
264
-
265
231
  if (progress === 1) {
266
232
  if (toLarge) {
267
233
  $newNavbarEl.addClass('router-navbar-transition-to-large');
268
234
  $oldNavbarEl.addClass('router-navbar-transition-to-large');
269
235
  }
270
-
271
236
  if (fromLarge) {
272
237
  $newNavbarEl.addClass('router-navbar-transition-from-large');
273
238
  $oldNavbarEl.addClass('router-navbar-transition-from-large');
274
239
  }
275
240
  }
276
-
277
241
  newNavEls.forEach(navEl => {
278
242
  const $el = navEl.$el;
279
243
  const offset = direction === 'forward' ? navEl.rightOffset : navEl.leftOffset;
280
-
281
244
  if (navEl.isSliding) {
282
245
  if (navEl.isSubnavbar && newIsLarge) {
283
246
  // prettier-ignore
@@ -290,7 +253,6 @@ class Router extends Framework7Class {
290
253
  oldNavEls.forEach(navEl => {
291
254
  const $el = navEl.$el;
292
255
  const offset = direction === 'forward' ? navEl.leftOffset : navEl.rightOffset;
293
-
294
256
  if (navEl.isSliding) {
295
257
  if (navEl.isSubnavbar && oldIsLarge) {
296
258
  $el.transform(`translate3d(${offset * progress}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`);
@@ -299,9 +261,9 @@ class Router extends Framework7Class {
299
261
  }
300
262
  }
301
263
  });
302
- } // AnimationEnd Callback
303
-
264
+ }
304
265
 
266
+ // AnimationEnd Callback
305
267
  function onDone() {
306
268
  if (router.dynamicNavbar) {
307
269
  if ($newNavbarEl) {
@@ -311,44 +273,40 @@ class Router extends Framework7Class {
311
273
  $newNavbarEl.removeClass('navbar-no-title-large-transition');
312
274
  });
313
275
  }
314
-
315
276
  if ($oldNavbarEl) {
316
277
  $oldNavbarEl.removeClass('router-navbar-transition-to-large router-navbar-transition-from-large');
317
278
  }
318
-
319
279
  if ($newNavbarEl.hasClass('sliding') || $newNavbarEl.children('.navbar-inner.sliding').length) {
320
280
  $newNavbarEl.find('.title, .left, .right, .left .icon, .subnavbar').transform('');
321
281
  } else {
322
282
  $newNavbarEl.find('.sliding').transform('');
323
283
  }
324
-
325
284
  if ($oldNavbarEl.hasClass('sliding') || $oldNavbarEl.children('.navbar-inner.sliding').length) {
326
285
  $oldNavbarEl.find('.title, .left, .right, .left .icon, .subnavbar').transform('');
327
286
  } else {
328
287
  $oldNavbarEl.find('.sliding').transform('');
329
288
  }
330
289
  }
331
-
332
290
  router.$el.removeClass(routerTransitionClass);
333
291
  if (callback) callback();
334
292
  }
335
293
 
336
- (direction === 'forward' ? $newPageEl : $oldPageEl).animationEnd(() => {
294
+ // eslint-disable-next-line
295
+ (direction === 'forward' ? $newPageEl : ios ? $oldPageEl : $newPageEl).animationEnd(() => {
337
296
  onDone();
338
- }); // Animate
297
+ });
339
298
 
299
+ // Animate
340
300
  if (dynamicNavbar) {
341
301
  // Prepare Navbars
342
302
  animateNavbars(0);
343
303
  nextFrame(() => {
344
304
  // Add class, start animation
345
305
  router.$el.addClass(routerTransitionClass);
346
-
347
306
  if (toDifferent) {
348
307
  // eslint-disable-next-line
349
308
  router.el._clientLeft = router.el.clientLeft;
350
309
  }
351
-
352
310
  animateNavbars(1);
353
311
  });
354
312
  } else {
@@ -356,36 +314,29 @@ class Router extends Framework7Class {
356
314
  router.$el.addClass(routerTransitionClass);
357
315
  }
358
316
  }
359
-
360
317
  removeModal(modalEl) {
361
318
  const router = this;
362
319
  router.removeEl(modalEl);
363
- } // eslint-disable-next-line
364
-
365
-
320
+ }
321
+ // eslint-disable-next-line
366
322
  removeTabContent(tabEl) {
367
323
  const $tabEl = $(tabEl);
368
324
  $tabEl.html('');
369
325
  }
370
-
371
326
  removeNavbar(el) {
372
327
  const router = this;
373
328
  router.removeEl(el);
374
329
  }
375
-
376
330
  removePage(el) {
377
331
  const $el = $(el);
378
332
  const f7Page = $el && $el[0] && $el[0].f7Page;
379
333
  const router = this;
380
-
381
334
  if (f7Page && f7Page.route && f7Page.route.route && f7Page.route.route.keepAlive) {
382
335
  $el.remove();
383
336
  return;
384
337
  }
385
-
386
338
  router.removeEl(el);
387
339
  }
388
-
389
340
  removeEl(el) {
390
341
  if (!el) return;
391
342
  const router = this;
@@ -399,15 +350,12 @@ class Router extends Framework7Class {
399
350
  }
400
351
  });
401
352
  });
402
-
403
353
  if ($el[0].f7Component && $el[0].f7Component.destroy) {
404
354
  $el[0].f7Component.destroy();
405
355
  }
406
-
407
356
  if (!router.params.removeElements) {
408
357
  return;
409
358
  }
410
-
411
359
  if (router.params.removeElementsWithTimeout) {
412
360
  setTimeout(() => {
413
361
  $el.remove();
@@ -416,65 +364,53 @@ class Router extends Framework7Class {
416
364
  $el.remove();
417
365
  }
418
366
  }
419
-
420
367
  getPageEl(content) {
421
368
  const router = this;
422
-
423
369
  if (typeof content === 'string') {
424
370
  router.tempDom.innerHTML = content;
425
371
  } else {
426
372
  if ($(content).hasClass('page')) {
427
373
  return content;
428
374
  }
429
-
430
375
  router.tempDom.innerHTML = '';
431
376
  $(router.tempDom).append(content);
432
377
  }
433
-
434
378
  return router.findElement('.page', router.tempDom);
435
379
  }
436
-
437
- findElement(stringSelector, container, notStacked) {
380
+ findElement(stringSelector, container) {
438
381
  const router = this;
439
382
  const view = router.view;
440
- const app = router.app; // Modals Selector
383
+ const app = router.app;
441
384
 
385
+ // Modals Selector
442
386
  const modalsSelector = '.popup, .dialog, .popover, .actions-modal, .sheet-modal, .login-screen, .page';
443
387
  const $container = $(container);
444
- let selector = stringSelector;
445
- if (notStacked) selector += ':not(.stacked)';
388
+ const selector = stringSelector;
446
389
  let found = $container.find(selector).filter(el => $(el).parents(modalsSelector).length === 0);
447
-
448
390
  if (found.length > 1) {
449
391
  if (typeof view.selector === 'string') {
450
392
  // Search in related view
451
393
  found = $container.find(`${view.selector} ${selector}`);
452
394
  }
453
-
454
395
  if (found.length > 1) {
455
396
  // Search in main view
456
397
  found = $container.find(`.${app.params.viewMainClass} ${selector}`);
457
398
  }
458
399
  }
459
-
460
- if (found.length === 1) return found; // Try to find not stacked
461
-
462
- if (!notStacked) found = router.findElement(selector, $container, true);
400
+ if (found.length === 1) return found;
401
+ found = router.findElement(selector, $container);
463
402
  if (found && found.length === 1) return found;
464
403
  if (found && found.length > 1) return $(found[0]);
465
404
  return undefined;
466
405
  }
467
-
468
406
  flattenRoutes(routes) {
469
407
  if (routes === void 0) {
470
408
  routes = this.routes;
471
409
  }
472
-
473
410
  const router = this;
474
411
  let flattenedRoutes = [];
475
412
  routes.forEach(route => {
476
413
  let hasTabRoutes = false;
477
-
478
414
  if ('tabs' in route && route.tabs) {
479
415
  const mergedPathsRoutes = route.tabs.map(tabRoute => {
480
416
  const tRoute = extend({}, route, {
@@ -489,7 +425,6 @@ class Router extends Framework7Class {
489
425
  hasTabRoutes = true;
490
426
  flattenedRoutes = flattenedRoutes.concat(router.flattenRoutes(mergedPathsRoutes));
491
427
  }
492
-
493
428
  if ('detailRoutes' in route) {
494
429
  const mergedPathsRoutes = route.detailRoutes.map(detailRoute => {
495
430
  const dRoute = extend({}, detailRoute);
@@ -499,29 +434,26 @@ class Router extends Framework7Class {
499
434
  });
500
435
  flattenedRoutes = flattenedRoutes.concat(route, router.flattenRoutes(mergedPathsRoutes));
501
436
  }
502
-
503
437
  if ('routes' in route) {
504
438
  const mergedPathsRoutes = route.routes.map(childRoute => {
505
439
  const cRoute = extend({}, childRoute);
506
440
  cRoute.path = `${route.path}/${cRoute.path}`.replace('///', '/').replace('//', '/');
507
441
  return cRoute;
508
442
  });
509
-
510
443
  if (hasTabRoutes) {
511
444
  flattenedRoutes = flattenedRoutes.concat(router.flattenRoutes(mergedPathsRoutes));
512
445
  } else {
513
446
  flattenedRoutes = flattenedRoutes.concat(route, router.flattenRoutes(mergedPathsRoutes));
514
447
  }
515
448
  }
516
-
517
449
  if (!('routes' in route) && !('tabs' in route && route.tabs) && !('detailRoutes' in route)) {
518
450
  flattenedRoutes.push(route);
519
451
  }
520
452
  });
521
453
  return flattenedRoutes;
522
- } // eslint-disable-next-line
523
-
454
+ }
524
455
 
456
+ // eslint-disable-next-line
525
457
  parseRouteUrl(url) {
526
458
  if (!url) return {};
527
459
  const query = parseUrlQuery(url);
@@ -536,30 +468,24 @@ class Router extends Framework7Class {
536
468
  path
537
469
  };
538
470
  }
539
-
540
471
  generateUrl(parameters) {
541
472
  if (parameters === void 0) {
542
473
  parameters = {};
543
474
  }
544
-
545
475
  if (typeof parameters === 'string') {
546
476
  return parameters;
547
477
  }
548
-
549
478
  const {
550
479
  name,
551
480
  path,
552
481
  params,
553
482
  query
554
483
  } = parameters;
555
-
556
484
  if (!name && !path) {
557
485
  throw new Error('Framework7: "name" or "path" parameter is required');
558
486
  }
559
-
560
487
  const router = this;
561
488
  const route = name ? router.findRouteByKey('name', name) : router.findRouteByKey('path', path);
562
-
563
489
  if (!route) {
564
490
  if (name) {
565
491
  throw new Error(`Framework7: route with name "${name}" not found`);
@@ -567,20 +493,17 @@ class Router extends Framework7Class {
567
493
  throw new Error(`Framework7: route with path "${path}" not found`);
568
494
  }
569
495
  }
570
-
571
496
  const url = router.constructRouteUrl(route, {
572
497
  params,
573
498
  query
574
499
  });
575
-
576
500
  if (!url) {
577
501
  throw new Error(`Framework7: can't construct URL for route with name "${name}"`);
578
502
  }
579
-
580
503
  return url;
581
- } // eslint-disable-next-line
582
-
504
+ }
583
505
 
506
+ // eslint-disable-next-line
584
507
  constructRouteUrl(route, _temp) {
585
508
  let {
586
509
  params,
@@ -591,20 +514,16 @@ class Router extends Framework7Class {
591
514
  } = route;
592
515
  const toUrl = compile(path);
593
516
  let url;
594
-
595
517
  try {
596
518
  url = toUrl(params || {});
597
519
  } catch (error) {
598
520
  throw new Error(`Framework7: error constructing route URL from passed params:\nRoute: ${path}\n${error.toString()}`);
599
521
  }
600
-
601
522
  if (query) {
602
523
  if (typeof query === 'string') url += `?${query}`;else if (Object.keys(query).length) url += `?${serializeObject(query)}`;
603
524
  }
604
-
605
525
  return url;
606
526
  }
607
-
608
527
  findTabRouteUrl(tabEl) {
609
528
  const router = this;
610
529
  const $tabEl = $(tabEl);
@@ -626,7 +545,6 @@ class Router extends Framework7Class {
626
545
  });
627
546
  return foundTabRouteUrl;
628
547
  }
629
-
630
548
  findRouteByKey(key, value) {
631
549
  const router = this;
632
550
  const routes = router.routes;
@@ -634,14 +552,12 @@ class Router extends Framework7Class {
634
552
  let matchingRoute;
635
553
  flattenedRoutes.forEach(route => {
636
554
  if (matchingRoute) return;
637
-
638
555
  if (route[key] === value) {
639
556
  matchingRoute = route;
640
557
  }
641
558
  });
642
559
  return matchingRoute;
643
560
  }
644
-
645
561
  findMatchingRoute(url) {
646
562
  if (!url) return undefined;
647
563
  const router = this;
@@ -658,7 +574,6 @@ class Router extends Framework7Class {
658
574
  if (matchingRoute) return;
659
575
  const keys = [];
660
576
  const pathsToMatch = [route.path];
661
-
662
577
  if (route.alias) {
663
578
  if (typeof route.alias === 'string') pathsToMatch.push(route.alias);else if (Array.isArray(route.alias)) {
664
579
  route.alias.forEach(aliasPath => {
@@ -666,18 +581,15 @@ class Router extends Framework7Class {
666
581
  });
667
582
  }
668
583
  }
669
-
670
584
  let matched;
671
585
  pathsToMatch.forEach(pathToMatch => {
672
586
  if (matched) return;
673
587
  matched = pathToRegexp(pathToMatch, keys).exec(path);
674
588
  });
675
-
676
589
  if (matched) {
677
590
  keys.forEach((keyObj, index) => {
678
591
  if (typeof keyObj.name === 'number') return;
679
592
  const paramValue = matched[index + 1];
680
-
681
593
  if (typeof paramValue === 'undefined' || paramValue === null) {
682
594
  params[keyObj.name] = paramValue;
683
595
  } else {
@@ -685,11 +597,9 @@ class Router extends Framework7Class {
685
597
  }
686
598
  });
687
599
  let parentPath;
688
-
689
600
  if (route.parentPath) {
690
601
  parentPath = path.split('/').slice(0, route.parentPath.split('/').length - 1).join('/');
691
602
  }
692
-
693
603
  matchingRoute = {
694
604
  query,
695
605
  hash,
@@ -703,42 +613,34 @@ class Router extends Framework7Class {
703
613
  }
704
614
  });
705
615
  return matchingRoute;
706
- } // eslint-disable-next-line
707
-
616
+ }
708
617
 
618
+ // eslint-disable-next-line
709
619
  replaceRequestUrlParams(url, options) {
710
620
  if (url === void 0) {
711
621
  url = '';
712
622
  }
713
-
714
623
  if (options === void 0) {
715
624
  options = {};
716
625
  }
717
-
718
626
  let compiledUrl = url;
719
-
720
627
  if (typeof compiledUrl === 'string' && compiledUrl.indexOf('{{') >= 0 && options && options.route && options.route.params && Object.keys(options.route.params).length) {
721
628
  Object.keys(options.route.params).forEach(paramName => {
722
629
  const regExp = new RegExp(`{{${paramName}}}`, 'g');
723
630
  compiledUrl = compiledUrl.replace(regExp, options.route.params[paramName] || '');
724
631
  });
725
632
  }
726
-
727
633
  return compiledUrl;
728
634
  }
729
-
730
635
  removeFromXhrCache(url) {
731
636
  const router = this;
732
637
  const xhrCache = router.cache.xhr;
733
638
  let index = false;
734
-
735
639
  for (let i = 0; i < xhrCache.length; i += 1) {
736
640
  if (xhrCache[i].url === url) index = i;
737
641
  }
738
-
739
642
  if (index !== false) xhrCache.splice(index, 1);
740
643
  }
741
-
742
644
  xhrRequest(requestUrl, options) {
743
645
  const router = this;
744
646
  const params = router.params;
@@ -747,31 +649,25 @@ class Router extends Framework7Class {
747
649
  } = options;
748
650
  let url = requestUrl;
749
651
  let hasQuery = url.indexOf('?') >= 0;
750
-
751
652
  if (params.passRouteQueryToRequest && options && options.route && options.route.query && Object.keys(options.route.query).length) {
752
653
  url += `${hasQuery ? '&' : '?'}${serializeObject(options.route.query)}`;
753
654
  hasQuery = true;
754
655
  }
755
-
756
656
  if (params.passRouteParamsToRequest && options && options.route && options.route.params && Object.keys(options.route.params).length) {
757
657
  url += `${hasQuery ? '&' : '?'}${serializeObject(options.route.params)}`;
758
658
  hasQuery = true;
759
659
  }
760
-
761
660
  if (url.indexOf('{{') >= 0) {
762
661
  url = router.replaceRequestUrlParams(url, options);
763
- } // should we ignore get params or not
764
-
765
-
662
+ }
663
+ // should we ignore get params or not
766
664
  if (params.xhrCacheIgnoreGetParameters && url.indexOf('?') >= 0) {
767
665
  url = url.split('?')[0];
768
666
  }
769
-
770
667
  return new Promise((resolve, reject) => {
771
668
  if (params.xhrCache && !ignoreCache && url.indexOf('nocache') < 0 && params.xhrCacheIgnore.indexOf(url) < 0) {
772
669
  for (let i = 0; i < router.cache.xhr.length; i += 1) {
773
670
  const cachedUrl = router.cache.xhr[i];
774
-
775
671
  if (cachedUrl.url === url) {
776
672
  // Check expiration
777
673
  if (now() - cachedUrl.time < params.xhrCacheDuration) {
@@ -782,106 +678,86 @@ class Router extends Framework7Class {
782
678
  }
783
679
  }
784
680
  }
785
-
786
- router.xhrAbortController = router.app.request.abortController();
787
- router.app.request({
788
- abortController: router.xhrAbortController,
789
- url,
790
- method: 'GET',
791
-
792
- beforeSend(xhr) {
793
- router.emit('routerAjaxStart', xhr, options);
794
- },
795
-
796
- complete(xhr, status) {
797
- router.emit('routerAjaxComplete', xhr);
798
-
799
- if (status !== 'error' && status !== 'timeout' && xhr.status >= 200 && xhr.status < 300 || xhr.status === 0) {
800
- if (params.xhrCache && xhr.responseText !== '') {
801
- router.removeFromXhrCache(url);
802
- router.cache.xhr.push({
803
- url,
804
- time: now(),
805
- content: xhr.responseText
806
- });
807
- }
808
-
809
- router.emit('routerAjaxSuccess', xhr, options);
810
- resolve(xhr.responseText);
811
- } else {
812
- router.emit('routerAjaxError', xhr, options);
813
- reject(xhr);
681
+ router.xhrAbortController = new AbortController();
682
+ let fetchRes;
683
+ fetch(url, {
684
+ signal: router.xhrAbortController.signal,
685
+ method: 'GET'
686
+ }).then(res => {
687
+ fetchRes = res;
688
+ return res.text();
689
+ }).then(responseText => {
690
+ const {
691
+ status
692
+ } = fetchRes;
693
+ router.emit('routerAjaxComplete', fetchRes);
694
+ if (status !== 'error' && status !== 'timeout' && status >= 200 && status < 300 || status === 0) {
695
+ if (params.xhrCache && responseText !== '') {
696
+ router.removeFromXhrCache(url);
697
+ router.cache.xhr.push({
698
+ url,
699
+ time: now(),
700
+ content: responseText
701
+ });
814
702
  }
815
- },
816
-
817
- error(xhr) {
818
- router.emit('routerAjaxError', xhr, options);
819
- reject(xhr);
703
+ router.emit('routerAjaxSuccess', fetchRes, options);
704
+ resolve(responseText);
705
+ } else {
706
+ router.emit('routerAjaxError', fetchRes, options);
707
+ reject(fetchRes);
820
708
  }
821
-
709
+ }).catch(err => {
710
+ reject(err);
822
711
  });
823
712
  });
824
713
  }
825
-
826
714
  setNavbarPosition($el, position, ariaHidden) {
827
715
  const router = this;
828
716
  $el.removeClass('navbar-previous navbar-current navbar-next');
829
-
830
717
  if (position) {
831
718
  $el.addClass(`navbar-${position}`);
832
719
  }
833
-
834
720
  if (ariaHidden === false) {
835
721
  $el.removeAttr('aria-hidden');
836
722
  } else if (ariaHidden === true) {
837
723
  $el.attr('aria-hidden', 'true');
838
724
  }
839
-
840
725
  $el.trigger('navbar:position', {
841
726
  position
842
727
  });
843
728
  router.emit('navbarPosition', $el[0], position);
844
729
  }
845
-
846
730
  setPagePosition($el, position, ariaHidden) {
847
731
  const router = this;
848
732
  $el.removeClass('page-previous page-current page-next');
849
733
  $el.addClass(`page-${position}`);
850
-
851
734
  if (ariaHidden === false) {
852
735
  $el.removeAttr('aria-hidden');
853
736
  } else if (ariaHidden === true) {
854
737
  $el.attr('aria-hidden', 'true');
855
738
  }
856
-
857
739
  $el.trigger('page:position', {
858
740
  position
859
741
  });
860
742
  router.emit('pagePosition', $el[0], position);
861
- } // Remove theme elements
862
-
743
+ }
863
744
 
745
+ // Remove theme elements
864
746
  removeThemeElements(el) {
865
747
  const router = this;
866
748
  const theme = router.app.theme;
867
749
  let toRemove;
868
-
869
750
  if (theme === 'ios') {
870
- toRemove = '.md-only, .aurora-only, .if-md, .if-aurora, .if-not-ios, .not-ios';
751
+ toRemove = '.md-only, .if-md, .if-not-ios, .not-ios';
871
752
  } else if (theme === 'md') {
872
- toRemove = '.ios-only, .aurora-only, .if-ios, .if-aurora, .if-not-md, .not-md';
873
- } else if (theme === 'aurora') {
874
- toRemove = '.ios-only, .md-only, .if-ios, .if-md, .if-not-aurora, .not-aurora';
753
+ toRemove = '.ios-only, .if-ios, .if-not-md, .not-md';
875
754
  }
876
-
877
755
  $(el).find(toRemove).remove();
878
756
  }
879
-
880
757
  getPageData(pageEl, navbarEl, from, to, route, pageFromEl) {
881
758
  if (route === void 0) {
882
759
  route = {};
883
760
  }
884
-
885
761
  const router = this;
886
762
  const $pageEl = $(pageEl).eq(0);
887
763
  const $navbarEl = $(navbarEl).eq(0);
@@ -890,21 +766,16 @@ class Router extends Framework7Class {
890
766
  let pageFrom;
891
767
  if (from === 'next' && to === 'current' || from === 'current' && to === 'previous') direction = 'forward';
892
768
  if (from === 'current' && to === 'next' || from === 'previous' && to === 'current') direction = 'backward';
893
-
894
769
  if (currentPage && !currentPage.fromPage) {
895
770
  const $pageFromEl = $(pageFromEl);
896
-
897
771
  if ($pageFromEl.length) {
898
772
  pageFrom = $pageFromEl[0].f7Page;
899
773
  }
900
774
  }
901
-
902
775
  pageFrom = currentPage.pageFrom || pageFrom;
903
-
904
776
  if (pageFrom && pageFrom.pageFrom) {
905
777
  pageFrom.pageFrom = null;
906
778
  }
907
-
908
779
  const page = {
909
780
  app: router.app,
910
781
  view: router.view,
@@ -925,14 +796,13 @@ class Router extends Framework7Class {
925
796
  };
926
797
  $pageEl[0].f7Page = page;
927
798
  return page;
928
- } // Callbacks
929
-
799
+ }
930
800
 
801
+ // Callbacks
931
802
  pageCallback(callback, pageEl, navbarEl, from, to, options, pageFromEl) {
932
803
  if (options === void 0) {
933
804
  options = {};
934
805
  }
935
-
936
806
  if (!pageEl) return;
937
807
  const router = this;
938
808
  const $pageEl = $(pageEl);
@@ -943,7 +813,6 @@ class Router extends Framework7Class {
943
813
  } = options;
944
814
  const restoreScrollTopOnBack = router.params.restoreScrollTopOnBack && !(router.params.masterDetailBreakpoint > 0 && $pageEl.hasClass('page-master') && router.app.width >= router.params.masterDetailBreakpoint);
945
815
  const keepAlive = $pageEl[0].f7Page && $pageEl[0].f7Page.route && $pageEl[0].f7Page.route.route && $pageEl[0].f7Page.route.route.keepAlive;
946
-
947
816
  if (callback === 'beforeRemove' && keepAlive) {
948
817
  callback = 'beforeUnmount'; // eslint-disable-line
949
818
  }
@@ -951,7 +820,6 @@ class Router extends Framework7Class {
951
820
  const camelName = `page${callback[0].toUpperCase() + callback.slice(1, callback.length)}`;
952
821
  const colonName = `page:${callback.toLowerCase()}`;
953
822
  let page = {};
954
-
955
823
  if (callback === 'beforeRemove' && $pageEl[0].f7Page) {
956
824
  page = extend($pageEl[0].f7Page, {
957
825
  from,
@@ -961,25 +829,20 @@ class Router extends Framework7Class {
961
829
  } else {
962
830
  page = router.getPageData($pageEl[0], $navbarEl[0], from, to, route, pageFromEl);
963
831
  }
964
-
965
832
  page.swipeBack = !!options.swipeBack;
966
833
  const {
967
834
  on = {},
968
835
  once = {}
969
836
  } = options.route ? options.route.route : {};
970
-
971
837
  if (options.on) {
972
838
  extend(on, options.on);
973
839
  }
974
-
975
840
  if (options.once) {
976
841
  extend(once, options.once);
977
842
  }
978
-
979
843
  function attachEvents() {
980
844
  if ($pageEl[0].f7RouteEventsAttached) return;
981
845
  $pageEl[0].f7RouteEventsAttached = true;
982
-
983
846
  if (on && Object.keys(on).length > 0) {
984
847
  $pageEl[0].f7RouteEventsOn = on;
985
848
  Object.keys(on).forEach(eventName => {
@@ -987,7 +850,6 @@ class Router extends Framework7Class {
987
850
  $pageEl.on(eventNameToColonCase(eventName), on[eventName]);
988
851
  });
989
852
  }
990
-
991
853
  if (once && Object.keys(once).length > 0) {
992
854
  $pageEl[0].f7RouteEventsOnce = once;
993
855
  Object.keys(once).forEach(eventName => {
@@ -996,22 +858,18 @@ class Router extends Framework7Class {
996
858
  });
997
859
  }
998
860
  }
999
-
1000
861
  function detachEvents() {
1001
862
  if (!$pageEl[0].f7RouteEventsAttached) return;
1002
-
1003
863
  if ($pageEl[0].f7RouteEventsOn) {
1004
864
  Object.keys($pageEl[0].f7RouteEventsOn).forEach(eventName => {
1005
865
  $pageEl.off(eventNameToColonCase(eventName), $pageEl[0].f7RouteEventsOn[eventName]);
1006
866
  });
1007
867
  }
1008
-
1009
868
  if ($pageEl[0].f7RouteEventsOnce) {
1010
869
  Object.keys($pageEl[0].f7RouteEventsOnce).forEach(eventName => {
1011
870
  $pageEl.off(eventNameToColonCase(eventName), $pageEl[0].f7RouteEventsOnce[eventName]);
1012
871
  });
1013
872
  }
1014
-
1015
873
  $pageEl[0].f7RouteEventsAttached = null;
1016
874
  $pageEl[0].f7RouteEventsOn = null;
1017
875
  $pageEl[0].f7RouteEventsOnce = null;
@@ -1019,109 +877,88 @@ class Router extends Framework7Class {
1019
877
  delete $pageEl[0].f7RouteEventsOn;
1020
878
  delete $pageEl[0].f7RouteEventsOnce;
1021
879
  }
1022
-
1023
880
  if (callback === 'mounted') {
1024
881
  attachEvents();
1025
882
  }
1026
-
1027
883
  if (callback === 'init') {
1028
884
  if (restoreScrollTopOnBack && (from === 'previous' || !from) && to === 'current' && router.scrollHistory[page.route.url] && !$pageEl.hasClass('no-restore-scroll')) {
1029
885
  let $pageContent = $pageEl.find('.page-content');
1030
-
1031
886
  if ($pageContent.length > 0) {
1032
887
  // eslint-disable-next-line
1033
888
  $pageContent = $pageContent.filter(pageContentEl => {
1034
889
  return $(pageContentEl).parents('.tab:not(.tab-active)').length === 0 && !$(pageContentEl).is('.tab:not(.tab-active)');
1035
890
  });
1036
891
  }
1037
-
1038
892
  $pageContent.scrollTop(router.scrollHistory[page.route.url]);
1039
893
  }
1040
-
1041
894
  attachEvents();
1042
-
1043
895
  if ($pageEl[0].f7PageInitialized) {
1044
896
  $pageEl.trigger('page:reinit', page);
1045
897
  router.emit('pageReinit', page);
1046
898
  return;
1047
899
  }
1048
-
1049
900
  $pageEl[0].f7PageInitialized = true;
1050
901
  }
1051
-
1052
902
  if (restoreScrollTopOnBack && callback === 'beforeOut' && from === 'current' && to === 'previous') {
1053
903
  // Save scroll position
1054
904
  let $pageContent = $pageEl.find('.page-content');
1055
-
1056
905
  if ($pageContent.length > 0) {
1057
906
  // eslint-disable-next-line
1058
907
  $pageContent = $pageContent.filter(pageContentEl => {
1059
908
  return $(pageContentEl).parents('.tab:not(.tab-active)').length === 0 && !$(pageContentEl).is('.tab:not(.tab-active)');
1060
909
  });
1061
910
  }
1062
-
1063
911
  router.scrollHistory[page.route.url] = $pageContent.scrollTop();
1064
912
  }
1065
-
1066
913
  if (restoreScrollTopOnBack && callback === 'beforeOut' && from === 'current' && to === 'next') {
1067
914
  // Delete scroll position
1068
915
  delete router.scrollHistory[page.route.url];
1069
916
  }
1070
-
1071
917
  $pageEl.trigger(colonName, page);
1072
918
  router.emit(camelName, page);
1073
-
1074
919
  if (callback === 'beforeRemove' || callback === 'beforeUnmount') {
1075
920
  detachEvents();
1076
-
1077
921
  if (!keepAlive) {
1078
922
  if ($pageEl[0].f7Page && $pageEl[0].f7Page.navbarEl) {
1079
923
  delete $pageEl[0].f7Page.navbarEl.f7Page;
1080
924
  }
1081
-
1082
925
  $pageEl[0].f7Page = null;
1083
926
  }
1084
927
  }
1085
928
  }
1086
-
1087
929
  saveHistory() {
1088
930
  const router = this;
1089
931
  const window = getWindow();
1090
932
  router.view.history = router.history;
1091
-
1092
933
  if (router.params.browserHistory && router.params.browserHistoryStoreHistory && window.localStorage) {
1093
934
  window.localStorage[`f7router-${router.view.id}-history`] = JSON.stringify(router.history);
1094
935
  }
1095
936
  }
1096
-
1097
937
  restoreHistory() {
1098
938
  const router = this;
1099
939
  const window = getWindow();
1100
-
1101
940
  if (router.params.browserHistory && router.params.browserHistoryStoreHistory && window.localStorage && window.localStorage[`f7router-${router.view.id}-history`]) {
1102
941
  router.history = JSON.parse(window.localStorage[`f7router-${router.view.id}-history`]);
1103
942
  router.view.history = router.history;
1104
943
  }
1105
944
  }
1106
-
1107
945
  clearHistory() {
1108
946
  const router = this;
1109
947
  router.history = [];
1110
948
  if (router.view) router.view.history = [];
1111
949
  router.saveHistory();
1112
950
  }
1113
-
1114
951
  updateCurrentUrl(newUrl) {
1115
952
  const router = this;
1116
- appRouterCheck(router, 'updateCurrentUrl'); // Update history
1117
-
953
+ appRouterCheck(router, 'updateCurrentUrl');
954
+ // Update history
1118
955
  if (router.history.length) {
1119
956
  router.history[router.history.length - 1] = newUrl;
1120
957
  } else {
1121
958
  router.history.push(newUrl);
1122
- } // Update current route params
1123
-
959
+ }
1124
960
 
961
+ // Update current route params
1125
962
  const {
1126
963
  query,
1127
964
  hash,
@@ -1129,7 +966,6 @@ class Router extends Framework7Class {
1129
966
  url,
1130
967
  path
1131
968
  } = router.parseRouteUrl(newUrl);
1132
-
1133
969
  if (router.currentRoute) {
1134
970
  extend(router.currentRoute, {
1135
971
  query,
@@ -1139,29 +975,25 @@ class Router extends Framework7Class {
1139
975
  path
1140
976
  });
1141
977
  }
1142
-
1143
978
  if (router.params.browserHistory) {
1144
979
  const browserHistoryRoot = router.params.browserHistoryRoot || '';
1145
980
  History.replace(router.view.id, {
1146
981
  url: newUrl
1147
982
  }, browserHistoryRoot + router.params.browserHistorySeparator + newUrl);
1148
- } // Save History
1149
-
983
+ }
1150
984
 
985
+ // Save History
1151
986
  router.saveHistory();
1152
987
  router.emit('routeUrlUpdate', router.currentRoute, router);
1153
988
  }
1154
-
1155
989
  getInitialUrl() {
1156
990
  const router = this;
1157
-
1158
991
  if (router.initialUrl) {
1159
992
  return {
1160
993
  initialUrl: router.initialUrl,
1161
994
  historyRestored: router.historyRestored
1162
995
  };
1163
996
  }
1164
-
1165
997
  const {
1166
998
  app,
1167
999
  view
@@ -1180,22 +1012,18 @@ class Router extends Framework7Class {
1180
1012
  let {
1181
1013
  browserHistoryRoot
1182
1014
  } = router.params;
1183
-
1184
1015
  if ((window.cordova || window.Capacitor && window.Capacitor.isNative) && browserHistory && !browserHistorySeparator && !browserHistoryRoot && location.pathname.indexOf('index.html')) {
1185
1016
  // eslint-disable-next-line
1186
1017
  console.warn('Framework7: wrong or not complete browserHistory configuration, trying to guess browserHistoryRoot');
1187
1018
  browserHistoryRoot = location.pathname.split('index.html')[0];
1188
1019
  }
1189
-
1190
1020
  if (!browserHistory || !browserHistoryOnLoad) {
1191
1021
  if (!initialUrl) {
1192
1022
  initialUrl = documentUrl;
1193
1023
  }
1194
-
1195
1024
  if (location.search && initialUrl.indexOf('?') < 0) {
1196
1025
  initialUrl += location.search;
1197
1026
  }
1198
-
1199
1027
  if (location.hash && initialUrl.indexOf('#') < 0) {
1200
1028
  initialUrl += location.hash;
1201
1029
  }
@@ -1204,15 +1032,12 @@ class Router extends Framework7Class {
1204
1032
  documentUrl = documentUrl.split(browserHistoryRoot)[1];
1205
1033
  if (documentUrl === '') documentUrl = '/';
1206
1034
  }
1207
-
1208
1035
  if (browserHistorySeparator.length > 0 && documentUrl.indexOf(browserHistorySeparator) >= 0) {
1209
1036
  initialUrl = documentUrl.split(browserHistorySeparator)[1];
1210
1037
  } else {
1211
1038
  initialUrl = documentUrl;
1212
1039
  }
1213
-
1214
1040
  router.restoreHistory();
1215
-
1216
1041
  if (router.history.indexOf(initialUrl) >= 0) {
1217
1042
  router.history = router.history.slice(0, router.history.indexOf(initialUrl) + 1);
1218
1043
  } else if (router.params.url === initialUrl) {
@@ -1222,16 +1047,13 @@ class Router extends Framework7Class {
1222
1047
  } else {
1223
1048
  router.history = [documentUrl.split(browserHistorySeparator)[0] || '/', initialUrl];
1224
1049
  }
1225
-
1226
1050
  if (router.history.length > 1) {
1227
1051
  historyRestored = true;
1228
1052
  } else {
1229
1053
  router.history = [];
1230
1054
  }
1231
-
1232
1055
  router.saveHistory();
1233
1056
  }
1234
-
1235
1057
  router.initialUrl = initialUrl;
1236
1058
  router.historyRestored = historyRestored;
1237
1059
  return {
@@ -1239,7 +1061,6 @@ class Router extends Framework7Class {
1239
1061
  historyRestored
1240
1062
  };
1241
1063
  }
1242
-
1243
1064
  init() {
1244
1065
  const router = this;
1245
1066
  const {
@@ -1251,12 +1072,12 @@ class Router extends Framework7Class {
1251
1072
  const {
1252
1073
  initialUrl,
1253
1074
  historyRestored
1254
- } = router.getInitialUrl(); // Init Swipeback
1075
+ } = router.getInitialUrl();
1255
1076
 
1256
- if (view && router.params.iosSwipeBack && app.theme === 'ios' || view && router.params.mdSwipeBack && app.theme === 'md' || view && router.params.auroraSwipeBack && app.theme === 'aurora') {
1077
+ // Init Swipeback
1078
+ if (view && router.params.iosSwipeBack && app.theme === 'ios' || view && router.params.mdSwipeBack && app.theme === 'md') {
1257
1079
  SwipeBack(router);
1258
1080
  }
1259
-
1260
1081
  const {
1261
1082
  browserHistory,
1262
1083
  browserHistoryOnLoad,
@@ -1264,12 +1085,10 @@ class Router extends Framework7Class {
1264
1085
  browserHistoryInitialMatch
1265
1086
  } = router.params;
1266
1087
  let currentRoute;
1267
-
1268
1088
  if (router.history.length > 1) {
1269
1089
  // Will load page
1270
1090
  const initUrl = browserHistoryInitialMatch ? initialUrl : router.history[0];
1271
1091
  currentRoute = router.findMatchingRoute(initUrl);
1272
-
1273
1092
  if (!currentRoute) {
1274
1093
  currentRoute = extend(router.parseRouteUrl(initUrl), {
1275
1094
  route: {
@@ -1281,7 +1100,6 @@ class Router extends Framework7Class {
1281
1100
  } else {
1282
1101
  // Don't load page
1283
1102
  currentRoute = router.findMatchingRoute(initialUrl);
1284
-
1285
1103
  if (!currentRoute) {
1286
1104
  currentRoute = extend(router.parseRouteUrl(initialUrl), {
1287
1105
  route: {
@@ -1291,19 +1109,7 @@ class Router extends Framework7Class {
1291
1109
  });
1292
1110
  }
1293
1111
  }
1294
-
1295
- if (router.params.stackPages) {
1296
- router.$el.children('.page').each(pageEl => {
1297
- const $pageEl = $(pageEl);
1298
- router.initialPages.push($pageEl[0]);
1299
-
1300
- if (router.dynamicNavbar && $pageEl.children('.navbar').length > 0) {
1301
- router.initialNavbars.push($pageEl.children('.navbar')[0]);
1302
- }
1303
- });
1304
- }
1305
-
1306
- if (router.$el.children('.page:not(.stacked)').length === 0 && initialUrl && router.params.loadInitialPage) {
1112
+ if (router.$el.children('.page').length === 0 && initialUrl && router.params.loadInitialPage) {
1307
1113
  // No pages presented in DOM, reload new page
1308
1114
  router.navigate(initialUrl, {
1309
1115
  initial: true,
@@ -1314,108 +1120,85 @@ class Router extends Framework7Class {
1314
1120
  modalOpen() {
1315
1121
  if (!historyRestored) return;
1316
1122
  const preloadPreviousPage = router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];
1317
-
1318
1123
  if (preloadPreviousPage && router.history.length > 1) {
1319
1124
  router.back({
1320
1125
  preload: true
1321
1126
  });
1322
1127
  }
1323
1128
  },
1324
-
1325
1129
  pageAfterIn() {
1326
1130
  if (!historyRestored) return;
1327
1131
  const preloadPreviousPage = router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];
1328
-
1329
1132
  if (preloadPreviousPage && router.history.length > 1) {
1330
1133
  router.back({
1331
1134
  preload: true
1332
1135
  });
1333
1136
  }
1334
1137
  }
1335
-
1336
1138
  }
1337
1139
  });
1338
- } else if (router.$el.children('.page:not(.stacked)').length) {
1140
+ } else if (router.$el.children('.page').length) {
1339
1141
  // Init current DOM page
1340
1142
  let hasTabRoute;
1341
1143
  router.currentRoute = currentRoute;
1342
- router.$el.children('.page:not(.stacked)').each(pageEl => {
1144
+ router.$el.children('.page').each(pageEl => {
1343
1145
  const $pageEl = $(pageEl);
1344
1146
  let $navbarEl;
1345
1147
  router.setPagePosition($pageEl, 'current');
1346
-
1347
1148
  if (router.dynamicNavbar) {
1348
1149
  $navbarEl = $pageEl.children('.navbar');
1349
-
1350
1150
  if ($navbarEl.length > 0) {
1351
1151
  if (!router.$navbarsEl.parents(document).length) {
1352
1152
  router.$el.prepend(router.$navbarsEl);
1353
1153
  }
1354
-
1355
1154
  router.setNavbarPosition($navbarEl, 'current');
1356
1155
  router.$navbarsEl.append($navbarEl);
1357
-
1358
1156
  if ($navbarEl.children('.title-large').length) {
1359
1157
  $navbarEl.addClass('navbar-large');
1360
1158
  }
1361
-
1362
1159
  $pageEl.children('.navbar').remove();
1363
1160
  } else {
1364
1161
  router.$navbarsEl.addClass('navbar-hidden');
1365
-
1366
1162
  if ($navbarEl.children('.title-large').length) {
1367
1163
  router.$navbarsEl.addClass('navbar-hidden navbar-large-hidden');
1368
1164
  }
1369
1165
  }
1370
1166
  }
1371
-
1372
1167
  if (router.currentRoute && router.currentRoute.route && (router.currentRoute.route.master === true || typeof router.currentRoute.route.master === 'function' && router.currentRoute.route.master(app, router)) && router.params.masterDetailBreakpoint > 0) {
1373
1168
  $pageEl.addClass('page-master');
1374
1169
  $pageEl.trigger('page:role', {
1375
1170
  role: 'master'
1376
1171
  });
1377
-
1378
1172
  if ($navbarEl && $navbarEl.length) {
1379
1173
  $navbarEl.addClass('navbar-master');
1380
1174
  }
1381
-
1382
1175
  view.checkMasterDetailBreakpoint();
1383
1176
  }
1384
-
1385
1177
  const initOptions = {
1386
1178
  route: router.currentRoute
1387
1179
  };
1388
-
1389
1180
  if (router.currentRoute && router.currentRoute.route && router.currentRoute.route.options) {
1390
1181
  extend(initOptions, router.currentRoute.route.options);
1391
1182
  }
1392
-
1393
1183
  router.currentPageEl = $pageEl[0];
1394
-
1395
1184
  if (router.dynamicNavbar && $navbarEl.length) {
1396
1185
  router.currentNavbarEl = $navbarEl[0];
1397
1186
  }
1398
-
1399
1187
  router.removeThemeElements($pageEl);
1400
-
1401
1188
  if (router.dynamicNavbar && $navbarEl.length) {
1402
1189
  router.removeThemeElements($navbarEl);
1403
1190
  }
1404
-
1405
1191
  if (initOptions.route.route.tab) {
1406
1192
  hasTabRoute = true;
1407
1193
  router.tabLoad(initOptions.route.route.tab, extend({}, initOptions));
1408
1194
  }
1409
-
1410
1195
  router.pageCallback('init', $pageEl, $navbarEl, 'current', undefined, initOptions);
1411
1196
  router.pageCallback('beforeIn', $pageEl, $navbarEl, 'current', undefined, initOptions);
1412
1197
  router.pageCallback('afterIn', $pageEl, $navbarEl, 'current', undefined, initOptions);
1413
1198
  });
1414
-
1415
1199
  if (historyRestored) {
1416
1200
  if (browserHistoryInitialMatch) {
1417
1201
  const preloadPreviousPage = router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];
1418
-
1419
1202
  if (preloadPreviousPage && router.history.length > 1) {
1420
1203
  router.back({
1421
1204
  preload: true
@@ -1430,58 +1213,52 @@ class Router extends Framework7Class {
1430
1213
  once: {
1431
1214
  pageAfterIn() {
1432
1215
  const preloadPreviousPage = router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];
1433
-
1434
1216
  if (preloadPreviousPage && router.history.length > 2) {
1435
1217
  router.back({
1436
1218
  preload: true
1437
1219
  });
1438
1220
  }
1439
1221
  }
1440
-
1441
1222
  }
1442
1223
  });
1443
1224
  }
1444
1225
  }
1445
-
1446
1226
  if (!historyRestored && !hasTabRoute) {
1447
1227
  router.history.push(initialUrl);
1448
1228
  router.saveHistory();
1449
1229
  }
1450
1230
  }
1451
-
1452
1231
  if (initialUrl && browserHistory && browserHistoryOnLoad && (!History.state || !History.state[view.id])) {
1453
1232
  History.initViewState(view.id, {
1454
1233
  url: initialUrl
1455
1234
  });
1456
1235
  }
1457
-
1458
1236
  router.emit('local::init routerInit', router);
1459
1237
  }
1460
-
1461
1238
  destroy() {
1462
1239
  let router = this;
1463
- router.emit('local::destroy routerDestroy', router); // Delete props & methods
1240
+ router.emit('local::destroy routerDestroy', router);
1464
1241
 
1242
+ // Delete props & methods
1465
1243
  Object.keys(router).forEach(routerProp => {
1466
1244
  router[routerProp] = null;
1467
1245
  delete router[routerProp];
1468
1246
  });
1469
1247
  router = null;
1470
1248
  }
1249
+ }
1471
1250
 
1472
- } // Load
1473
-
1474
-
1251
+ // Load
1475
1252
  Router.prototype.navigate = navigate;
1476
- Router.prototype.refreshPage = refreshPage; // Tab
1477
-
1253
+ Router.prototype.refreshPage = refreshPage;
1254
+ // Tab
1478
1255
  Router.prototype.tabLoad = tabLoad;
1479
- Router.prototype.tabRemove = tabRemove; // Modal
1480
-
1256
+ Router.prototype.tabRemove = tabRemove;
1257
+ // Modal
1481
1258
  Router.prototype.modalLoad = modalLoad;
1482
- Router.prototype.modalRemove = modalRemove; // Back
1483
-
1484
- Router.prototype.back = back; // Clear history
1485
-
1259
+ Router.prototype.modalRemove = modalRemove;
1260
+ // Back
1261
+ Router.prototype.back = back;
1262
+ // Clear history
1486
1263
  Router.prototype.clearPreviousHistory = clearPreviousHistory;
1487
1264
  export default Router;