framework7 7.0.0-beta.2 → 7.0.0-beta.20

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 (384) hide show
  1. package/components/accordion/accordion.js +2 -2
  2. package/components/accordion/{accordion.umd.js → accordion.lazy.js} +1 -1
  3. package/components/actions/actions-class.js +11 -6
  4. package/components/actions/actions-rtl.css +1 -1
  5. package/components/actions/actions.css +1 -1
  6. package/components/actions/actions.d.ts +2 -0
  7. package/components/actions/actions.js +13 -4
  8. package/components/actions/actions.lazy.js +1 -0
  9. package/components/actions/actions.less +3 -0
  10. package/components/app/app-class.d.ts +10 -10
  11. package/components/app/app-class.js +43 -37
  12. package/components/app/app.less +3 -3
  13. package/components/app/load-module.js +4 -4
  14. package/components/appbar/{appbar.umd.js → appbar.lazy.js} +0 -0
  15. package/components/area-chart/area-chart-class.js +38 -22
  16. package/components/area-chart/area-chart-rtl.css +1 -1
  17. package/components/area-chart/area-chart.css +1 -1
  18. package/components/area-chart/area-chart.js +3 -3
  19. package/components/area-chart/area-chart.lazy.js +1 -0
  20. package/components/autocomplete/autocomplete-class.js +10 -6
  21. package/components/autocomplete/autocomplete-rtl.css +1 -1
  22. package/components/autocomplete/autocomplete.css +1 -1
  23. package/components/autocomplete/autocomplete.js +3 -3
  24. package/components/autocomplete/autocomplete.lazy.js +1 -0
  25. package/components/breadcrumbs/breadcrumbs-aurora.less +2 -0
  26. package/components/breadcrumbs/breadcrumbs-ios.less +2 -0
  27. package/components/breadcrumbs/breadcrumbs-md.less +2 -0
  28. package/components/breadcrumbs/breadcrumbs-rtl.css +1 -0
  29. package/components/breadcrumbs/breadcrumbs-vars.less +36 -0
  30. package/components/breadcrumbs/breadcrumbs.css +1 -0
  31. package/components/breadcrumbs/breadcrumbs.d.ts +15 -0
  32. package/components/breadcrumbs/breadcrumbs.js +13 -0
  33. package/components/breadcrumbs/breadcrumbs.lazy.js +1 -0
  34. package/components/breadcrumbs/breadcrumbs.less +100 -0
  35. package/components/calendar/calendar-class.js +222 -130
  36. package/components/calendar/calendar-rtl.css +1 -1
  37. package/components/calendar/calendar-vars.less +6 -10
  38. package/components/calendar/calendar.css +1 -1
  39. package/components/calendar/calendar.d.ts +2 -0
  40. package/components/calendar/calendar.js +9 -4
  41. package/components/calendar/calendar.lazy.js +1 -0
  42. package/components/calendar/calendar.less +20 -16
  43. package/components/card/card-rtl.css +1 -1
  44. package/components/card/card.css +1 -1
  45. package/components/card/card.js +27 -7
  46. package/components/card/card.lazy.js +1 -0
  47. package/components/checkbox/checkbox-rtl.css +1 -1
  48. package/components/checkbox/checkbox.css +1 -1
  49. package/components/checkbox/{checkbox.umd.js → checkbox.lazy.js} +0 -0
  50. package/components/chip/chip-rtl.css +1 -1
  51. package/components/chip/chip.css +1 -1
  52. package/components/chip/{chip.umd.js → chip.lazy.js} +0 -0
  53. package/components/color-picker/color-picker-class.js +37 -21
  54. package/components/color-picker/color-picker-rtl.css +1 -1
  55. package/components/color-picker/color-picker.css +1 -1
  56. package/components/color-picker/color-picker.js +8 -4
  57. package/components/color-picker/{color-picker.umd.js → color-picker.lazy.js} +1 -1
  58. package/components/color-picker/modules/alpha-slider.js +1 -1
  59. package/components/color-picker/modules/brightness-slider.js +2 -2
  60. package/components/color-picker/modules/current-color.js +1 -1
  61. package/components/color-picker/modules/hex.js +1 -1
  62. package/components/color-picker/modules/hs-spectrum.js +4 -4
  63. package/components/color-picker/modules/hsb-sliders.js +3 -3
  64. package/components/color-picker/modules/hue-slider.js +1 -1
  65. package/components/color-picker/modules/initial-current-colors.js +1 -1
  66. package/components/color-picker/modules/palette.js +2 -2
  67. package/components/color-picker/modules/rgb-bars.js +2 -2
  68. package/components/color-picker/modules/rgb-sliders.js +2 -2
  69. package/components/color-picker/modules/sb-spectrum.js +3 -3
  70. package/components/color-picker/modules/wheel.js +3 -3
  71. package/components/contacts-list/contacts-list-rtl.css +1 -1
  72. package/components/contacts-list/contacts-list.css +1 -1
  73. package/components/contacts-list/{contacts-list.umd.js → contacts-list.lazy.js} +0 -0
  74. package/components/data-table/data-table-class.js +8 -4
  75. package/components/data-table/data-table-rtl.css +1 -1
  76. package/components/data-table/data-table.css +1 -1
  77. package/components/data-table/data-table.js +3 -3
  78. package/components/data-table/data-table.lazy.js +1 -0
  79. package/components/dialog/dialog-class.js +5 -5
  80. package/components/dialog/dialog-rtl.css +1 -1
  81. package/components/dialog/dialog.css +1 -1
  82. package/components/dialog/dialog.js +33 -9
  83. package/components/dialog/dialog.lazy.js +1 -0
  84. package/components/elevation/{elevation.umd.js → elevation.lazy.js} +0 -0
  85. package/components/fab/fab-rtl.css +1 -1
  86. package/components/fab/fab.css +1 -1
  87. package/components/fab/fab.js +17 -5
  88. package/components/fab/fab.lazy.js +1 -0
  89. package/components/form/form.js +2 -2
  90. package/components/form/{form.umd.js → form.lazy.js} +1 -1
  91. package/components/gauge/gauge-class.js +14 -6
  92. package/components/gauge/gauge.d.ts +2 -2
  93. package/components/gauge/gauge.js +4 -4
  94. package/components/gauge/gauge.lazy.js +1 -0
  95. package/components/grid/grid-rtl.css +1 -1
  96. package/components/grid/grid.css +1 -1
  97. package/components/grid/grid.js +2 -2
  98. package/components/grid/{grid.umd.js → grid.lazy.js} +0 -0
  99. package/components/infinite-scroll/infinite-scroll.js +2 -2
  100. package/components/infinite-scroll/{infinite-scroll.umd.js → infinite-scroll.lazy.js} +0 -0
  101. package/components/input/input-rtl.css +1 -1
  102. package/components/input/input.css +1 -1
  103. package/components/input/input.js +8 -4
  104. package/components/input/input.lazy.js +1 -0
  105. package/components/input/input.less +1 -1
  106. package/components/lazy/lazy.js +3 -3
  107. package/components/lazy/{lazy.umd.js → lazy.lazy.js} +0 -0
  108. package/components/list-index/list-index-class.js +9 -5
  109. package/components/list-index/list-index.d.ts +1 -1
  110. package/components/list-index/list-index.js +4 -4
  111. package/components/list-index/list-index.lazy.js +1 -0
  112. package/components/login-screen/login-screen-class.js +3 -3
  113. package/components/login-screen/login-screen-rtl.css +1 -1
  114. package/components/login-screen/login-screen.css +1 -1
  115. package/components/login-screen/login-screen.js +12 -4
  116. package/components/login-screen/login-screen.lazy.js +1 -0
  117. package/components/login-screen/login-screen.less +1 -1
  118. package/components/menu/menu.js +12 -4
  119. package/components/menu/menu.lazy.js +1 -0
  120. package/components/messagebar/messagebar-class.js +28 -8
  121. package/components/messagebar/messagebar-rtl.css +1 -1
  122. package/components/messagebar/messagebar.css +1 -1
  123. package/components/messagebar/messagebar.js +4 -4
  124. package/components/messagebar/messagebar.lazy.js +1 -0
  125. package/components/messages/messages-class.js +64 -28
  126. package/components/messages/messages-rtl.css +1 -1
  127. package/components/messages/messages.css +1 -1
  128. package/components/messages/messages.js +3 -3
  129. package/components/messages/messages.lazy.js +1 -0
  130. package/components/modal/custom-modal-class.js +3 -3
  131. package/components/modal/modal-class.js +13 -3
  132. package/components/modal/modal.js +2 -2
  133. package/components/navbar/navbar.js +29 -5
  134. package/components/notification/notification-aurora.less +1 -1
  135. package/components/notification/notification-class.js +4 -4
  136. package/components/notification/notification-ios.less +1 -1
  137. package/components/notification/notification-rtl.css +1 -1
  138. package/components/notification/notification.css +1 -1
  139. package/components/notification/notification.d.ts +4 -4
  140. package/components/notification/notification.js +3 -3
  141. package/components/notification/{notification.umd.js → notification.lazy.js} +0 -0
  142. package/components/page/page-vars.less +1 -1
  143. package/components/panel/panel-class.js +40 -12
  144. package/components/panel/panel.js +43 -11
  145. package/components/panel/panel.lazy.js +1 -0
  146. package/components/panel/resizable-panel.js +3 -3
  147. package/components/panel/swipe-panel.js +2 -2
  148. package/components/photo-browser/photo-browser-class.js +46 -12
  149. package/components/photo-browser/photo-browser.js +2 -2
  150. package/components/photo-browser/photo-browser.lazy.js +1 -0
  151. package/components/picker/picker-class.js +17 -13
  152. package/components/picker/picker-column.js +35 -271
  153. package/components/picker/picker-rtl.css +1 -1
  154. package/components/picker/picker.css +1 -1
  155. package/components/picker/picker.d.ts +2 -13
  156. package/components/picker/picker.js +8 -9
  157. package/components/picker/picker.lazy.js +1 -0
  158. package/components/picker/picker.less +28 -10
  159. package/components/pie-chart/pie-chart-class.js +20 -11
  160. package/components/pie-chart/pie-chart.js +3 -3
  161. package/components/pie-chart/pie-chart.lazy.js +1 -0
  162. package/components/popover/popover-class.js +24 -7
  163. package/components/popover/popover-rtl.css +1 -1
  164. package/components/popover/popover.css +1 -1
  165. package/components/popover/popover.d.ts +2 -0
  166. package/components/popover/popover.js +15 -6
  167. package/components/popover/popover.lazy.js +1 -0
  168. package/components/popover/popover.less +3 -0
  169. package/components/popup/popup-class.js +11 -6
  170. package/components/popup/popup-rtl.css +1 -1
  171. package/components/popup/popup.css +1 -1
  172. package/components/popup/popup.d.ts +4 -0
  173. package/components/popup/popup.js +13 -4
  174. package/components/popup/popup.lazy.js +1 -0
  175. package/components/popup/popup.less +25 -21
  176. package/components/preloader/preloader-ios.less +3 -0
  177. package/components/preloader/preloader-rtl.css +1 -1
  178. package/components/preloader/preloader.css +1 -1
  179. package/components/preloader/preloader.d.ts +4 -0
  180. package/components/preloader/preloader.js +12 -4
  181. package/components/preloader/preloader.lazy.js +1 -0
  182. package/components/progressbar/progressbar-aurora.less +32 -13
  183. package/components/progressbar/progressbar-ios.less +19 -7
  184. package/components/progressbar/progressbar-md.less +64 -28
  185. package/components/progressbar/progressbar-rtl.css +1 -1
  186. package/components/progressbar/progressbar.css +1 -1
  187. package/components/progressbar/progressbar.js +19 -6
  188. package/components/progressbar/progressbar.lazy.js +1 -0
  189. package/components/progressbar/progressbar.less +16 -4
  190. package/components/pull-to-refresh/pull-to-refresh-class.js +10 -6
  191. package/components/pull-to-refresh/pull-to-refresh.js +4 -4
  192. package/components/pull-to-refresh/pull-to-refresh.lazy.js +1 -0
  193. package/components/radio/radio-rtl.css +1 -1
  194. package/components/radio/radio.css +1 -1
  195. package/components/radio/{radio.umd.js → radio.lazy.js} +0 -0
  196. package/components/range/range-class.js +4 -4
  197. package/components/range/range.d.ts +23 -5
  198. package/components/range/range.js +14 -6
  199. package/components/range/{range.umd.js → range.lazy.js} +1 -1
  200. package/components/searchbar/searchbar-class.js +11 -7
  201. package/components/searchbar/searchbar-rtl.css +1 -1
  202. package/components/searchbar/searchbar.css +1 -1
  203. package/components/searchbar/searchbar.js +24 -8
  204. package/components/searchbar/searchbar.lazy.js +1 -0
  205. package/components/searchbar/searchbar.less +1 -1
  206. package/components/sheet/sheet-class.js +26 -7
  207. package/components/sheet/sheet-rtl.css +1 -1
  208. package/components/sheet/sheet.css +1 -1
  209. package/components/sheet/sheet.d.ts +2 -0
  210. package/components/sheet/sheet.js +15 -6
  211. package/components/sheet/sheet.lazy.js +1 -0
  212. package/components/sheet/sheet.less +19 -16
  213. package/components/skeleton/skeleton-rtl.css +1 -1
  214. package/components/skeleton/skeleton-vars.less +1 -1
  215. package/components/skeleton/skeleton.css +1 -1
  216. package/components/skeleton/{skeleton.umd.js → skeleton.lazy.js} +0 -0
  217. package/components/smart-select/smart-select-class.js +19 -7
  218. package/components/smart-select/smart-select.js +4 -4
  219. package/components/smart-select/smart-select.lazy.js +1 -0
  220. package/components/sortable/sortable-rtl.css +1 -1
  221. package/components/sortable/sortable.css +1 -1
  222. package/components/sortable/sortable.d.ts +5 -1
  223. package/components/sortable/sortable.js +48 -11
  224. package/components/sortable/sortable.lazy.js +1 -0
  225. package/components/statusbar/statusbar.d.ts +9 -9
  226. package/components/statusbar/statusbar.js +8 -4
  227. package/components/stepper/stepper-class.js +3 -3
  228. package/components/stepper/stepper.js +14 -6
  229. package/components/stepper/{stepper.umd.js → stepper.lazy.js} +1 -1
  230. package/components/subnavbar/subnavbar.js +1 -1
  231. package/components/swipeout/swipeout-rtl.css +1 -1
  232. package/components/swipeout/swipeout.css +1 -1
  233. package/components/swipeout/swipeout.js +19 -6
  234. package/components/swipeout/{swipeout.umd.js → swipeout.lazy.js} +1 -1
  235. package/components/swiper/swiper-rtl.css +1 -1
  236. package/components/swiper/swiper.css +1 -1
  237. package/components/swiper/swiper.js +2 -2
  238. package/components/swiper/swiper.lazy.js +1 -0
  239. package/components/tabs/tabs.js +16 -9
  240. package/components/tabs/tabs.lazy.js +1 -0
  241. package/components/text-editor/text-editor-class.js +5 -5
  242. package/components/text-editor/text-editor-rtl.css +1 -1
  243. package/components/text-editor/text-editor.css +1 -1
  244. package/components/text-editor/text-editor.js +4 -4
  245. package/components/text-editor/{text-editor.umd.js → text-editor.lazy.js} +1 -1
  246. package/components/timeline/timeline-rtl.css +1 -1
  247. package/components/timeline/timeline.css +1 -1
  248. package/components/timeline/{timeline.umd.js → timeline.lazy.js} +0 -0
  249. package/components/toast/toast-class.js +4 -4
  250. package/components/toast/toast.d.ts +2 -2
  251. package/components/toast/toast.js +3 -3
  252. package/components/toast/{toast.umd.js → toast.lazy.js} +0 -0
  253. package/components/toggle/toggle-class.js +9 -5
  254. package/components/toggle/toggle-rtl.css +1 -1
  255. package/components/toggle/toggle.css +1 -1
  256. package/components/toggle/toggle.js +3 -3
  257. package/components/toggle/toggle.lazy.js +1 -0
  258. package/components/toolbar/toolbar-aurora.less +0 -13
  259. package/components/toolbar/toolbar-md.less +0 -13
  260. package/components/toolbar/toolbar.js +13 -5
  261. package/components/toolbar/toolbar.less +13 -0
  262. package/components/tooltip/tooltip-class.js +9 -5
  263. package/components/tooltip/tooltip.js +3 -3
  264. package/components/tooltip/tooltip.lazy.js +1 -0
  265. package/components/touch-ripple/touch-ripple-class.js +1 -1
  266. package/components/touch-ripple/touch-ripple-vars.less +1 -1
  267. package/components/touch-ripple/touch-ripple.js +6 -2
  268. package/components/treeview/treeview-rtl.css +1 -1
  269. package/components/treeview/treeview.css +1 -1
  270. package/components/treeview/treeview.js +2 -2
  271. package/components/treeview/{treeview.umd.js → treeview.lazy.js} +1 -1
  272. package/components/typography/{typography.umd.js → typography.lazy.js} +0 -0
  273. package/components/view/resizable-view.js +3 -3
  274. package/components/view/view-class.js +18 -7
  275. package/components/view/view.d.ts +5 -1
  276. package/components/view/view.js +5 -3
  277. package/components/virtual-list/virtual-list-class.js +58 -13
  278. package/components/virtual-list/virtual-list.d.ts +2 -2
  279. package/components/virtual-list/virtual-list.js +2 -2
  280. package/components/virtual-list/virtual-list.lazy.js +1 -0
  281. package/framework7-bundle-rtl.css +513 -411
  282. package/framework7-bundle-rtl.min.css +4 -4
  283. package/framework7-bundle.css +498 -395
  284. package/framework7-bundle.esm.js +87 -86
  285. package/framework7-bundle.js +2728 -1257
  286. package/framework7-bundle.js.map +1 -1
  287. package/framework7-bundle.less +4 -3
  288. package/framework7-bundle.min.css +4 -4
  289. package/framework7-bundle.min.js +4 -4
  290. package/framework7-bundle.min.js.map +1 -1
  291. package/framework7-lite-bundle.esm.js +81 -80
  292. package/framework7-lite.esm.js +27 -27
  293. package/framework7-rtl.css +61 -70
  294. package/framework7-rtl.min.css +4 -4
  295. package/framework7-types.d.ts +5 -1
  296. package/framework7.css +60 -68
  297. package/framework7.d.ts +4 -0
  298. package/framework7.esm.js +30 -30
  299. package/framework7.js +675 -255
  300. package/framework7.js.map +1 -1
  301. package/framework7.less +3 -3
  302. package/framework7.min.css +4 -4
  303. package/framework7.min.js +4 -4
  304. package/framework7.min.js.map +1 -1
  305. package/less/mixins.less +2 -2
  306. package/modules/clicks/clicks.js +2 -2
  307. package/modules/component/$h.js +6 -2
  308. package/modules/component/$jsx.js +6 -2
  309. package/modules/component/component-class.js +40 -27
  310. package/modules/component/component.d.ts +2 -2
  311. package/modules/component/component.js +11 -10
  312. package/modules/component/eventslisteners.js +6 -2
  313. package/modules/component/parse-component.js +2 -2
  314. package/modules/component/patch.js +5 -5
  315. package/modules/component/snabbdom/h.js +2 -2
  316. package/modules/component/snabbdom/snabbdom.bundle.js +7 -7
  317. package/modules/component/snabbdom/snabbdom.js +3 -3
  318. package/modules/component/snabbdom/thunk.js +1 -1
  319. package/modules/component/snabbdom/tovnode.js +2 -2
  320. package/modules/component/vdom.js +35 -20
  321. package/modules/device/device.js +2 -2
  322. package/modules/history/history.js +1 -1
  323. package/modules/request/request.js +1 -1
  324. package/modules/resize/resize.js +1 -1
  325. package/modules/router/back.js +24 -14
  326. package/modules/router/clear-previous-history.js +2 -2
  327. package/modules/router/component-loader.js +81 -24
  328. package/modules/router/modal.js +8 -4
  329. package/modules/router/navigate.js +25 -55
  330. package/modules/router/redirect.js +6 -2
  331. package/modules/router/router-class.js +50 -21
  332. package/modules/router/router.js +1 -1
  333. package/modules/router/swipe-back.js +12 -11
  334. package/modules/router/tab.js +10 -6
  335. package/modules/service-worker/service-worker.js +1 -1
  336. package/modules/store/create-store.js +11 -3
  337. package/modules/store/store.js +1 -1
  338. package/modules/support/support.js +1 -1
  339. package/modules/touch/touch.js +4 -4
  340. package/modules/utils/utils.js +1 -1
  341. package/package.json +12 -6
  342. package/shared/$jsx.js +6 -1
  343. package/shared/class.js +35 -7
  344. package/shared/constructor-methods.js +26 -5
  345. package/shared/events-class.js +15 -3
  346. package/shared/get-device.d.ts +0 -2
  347. package/shared/get-device.js +11 -7
  348. package/shared/history.js +2 -2
  349. package/shared/modal-methods.js +13 -5
  350. package/shared/request.js +46 -8
  351. package/shared/utils.js +47 -10
  352. package/components/actions/actions.umd.js +0 -1
  353. package/components/area-chart/area-chart.umd.js +0 -1
  354. package/components/autocomplete/autocomplete.umd.js +0 -1
  355. package/components/calendar/calendar.umd.js +0 -1
  356. package/components/card/card.umd.js +0 -1
  357. package/components/data-table/data-table.umd.js +0 -1
  358. package/components/dialog/dialog.umd.js +0 -1
  359. package/components/fab/fab.umd.js +0 -1
  360. package/components/gauge/gauge.umd.js +0 -1
  361. package/components/input/input.umd.js +0 -1
  362. package/components/list-index/list-index.umd.js +0 -1
  363. package/components/login-screen/login-screen.umd.js +0 -1
  364. package/components/menu/menu.umd.js +0 -1
  365. package/components/messagebar/messagebar.umd.js +0 -1
  366. package/components/messages/messages.umd.js +0 -1
  367. package/components/panel/panel.umd.js +0 -1
  368. package/components/photo-browser/photo-browser.umd.js +0 -1
  369. package/components/picker/picker.umd.js +0 -1
  370. package/components/pie-chart/pie-chart.umd.js +0 -1
  371. package/components/popover/popover.umd.js +0 -1
  372. package/components/popup/popup.umd.js +0 -1
  373. package/components/preloader/preloader.umd.js +0 -1
  374. package/components/progressbar/progressbar.umd.js +0 -1
  375. package/components/pull-to-refresh/pull-to-refresh.umd.js +0 -1
  376. package/components/searchbar/searchbar.umd.js +0 -1
  377. package/components/sheet/sheet.umd.js +0 -1
  378. package/components/smart-select/smart-select.umd.js +0 -1
  379. package/components/sortable/sortable.umd.js +0 -1
  380. package/components/swiper/swiper.umd.js +0 -1
  381. package/components/tabs/tabs.umd.js +0 -1
  382. package/components/toggle/toggle.umd.js +0 -1
  383. package/components/tooltip/tooltip.umd.js +0 -1
  384. package/components/virtual-list/virtual-list.umd.js +0 -1
@@ -1,9 +1,7 @@
1
- import $ from '../../shared/dom7';
2
- import { requestAnimationFrame, getTranslate } from '../../shared/utils';
3
- import { getSupport } from '../../shared/get-support';
1
+ import $ from '../../shared/dom7.js';
4
2
  export default function pickerColumn(colEl, updateItems) {
5
- const picker = this;
6
- const app = picker.app;
3
+ const picker = this; // const app = picker.app;
4
+
7
5
  const $colEl = $(colEl);
8
6
  const colIndex = $colEl.index();
9
7
  const col = picker.cols[colIndex];
@@ -13,17 +11,7 @@ export default function pickerColumn(colEl, updateItems) {
13
11
  col.$itemsEl = col.$el.find('.picker-items');
14
12
  col.items = col.$itemsEl.find('.picker-item');
15
13
  let itemHeight;
16
- let itemsHeight;
17
- let minTranslate;
18
- let maxTranslate;
19
- let animationFrameId;
20
-
21
- function updateDuringScroll() {
22
- animationFrameId = requestAnimationFrame(() => {
23
- col.updateItems(undefined, undefined, 0);
24
- updateDuringScroll();
25
- });
26
- }
14
+ let colHeight;
27
15
 
28
16
  col.replaceValues = function replaceColValues(values, displayValues) {
29
17
  col.detachEvents();
@@ -32,99 +20,63 @@ export default function pickerColumn(colEl, updateItems) {
32
20
  col.$itemsEl.html(picker.renderColumn(col, true));
33
21
  col.items = col.$itemsEl.find('.picker-item');
34
22
  col.calcSize();
35
- col.setValue(col.values[0], 0, true);
23
+ col.setValue(col.values[0], true);
36
24
  col.attachEvents();
37
25
  };
38
26
 
39
27
  col.calcSize = function calcColSize() {
40
- if (picker.params.rotateEffect) {
41
- col.$el.removeClass('picker-column-absolute');
42
- if (!col.width) col.$el.css({
43
- width: ''
44
- });
45
- }
46
-
47
- let colWidth = 0;
48
- const colHeight = col.$el[0].offsetHeight;
28
+ colHeight = col.$el[0].offsetHeight;
49
29
  itemHeight = col.items[0].offsetHeight;
50
- itemsHeight = itemHeight * col.items.length;
51
- minTranslate = colHeight / 2 - itemsHeight + itemHeight / 2;
52
- maxTranslate = colHeight / 2 - itemHeight / 2;
53
-
54
- if (col.width) {
55
- colWidth = col.width;
56
- if (parseInt(colWidth, 10) === colWidth) colWidth += 'px';
57
- col.$el.css({
58
- width: colWidth
59
- });
60
- }
30
+ const hadPadding = col.el.style.getPropertyValue('--f7-picker-scroll-padding');
31
+ col.el.style.setProperty('--f7-picker-scroll-padding', `${(colHeight - itemHeight) / 2}px`);
61
32
 
62
- if (picker.params.rotateEffect) {
63
- if (!col.width) {
64
- col.items.each(itemEl => {
65
- const item = $(itemEl).children('span');
66
- colWidth = Math.max(colWidth, item[0].offsetWidth);
67
- });
68
- col.$el.css({
69
- width: `${colWidth + 2}px`
70
- });
71
- }
72
-
73
- col.$el.addClass('picker-column-absolute');
33
+ if (!hadPadding) {
34
+ col.$itemsEl[0].scrollTop = 0;
74
35
  }
75
36
  };
76
37
 
77
- col.setValue = function setColValue(newValue, transition = '', valueCallbacks) {
38
+ col.setValue = function setColValue(newValue, valueCallbacks) {
78
39
  const newActiveIndex = col.$itemsEl.find(`.picker-item[data-picker-value="${newValue}"]`).index();
79
40
 
80
41
  if (typeof newActiveIndex === 'undefined' || newActiveIndex === -1) {
81
42
  return;
82
43
  }
83
44
 
84
- const newTranslate = -newActiveIndex * itemHeight + maxTranslate; // Update wrapper
85
-
86
- col.$itemsEl.transition(transition);
87
- col.$itemsEl.transform(`translate3d(0,${newTranslate}px,0)`); // Watch items
88
-
89
- if (picker.params.updateValuesOnMomentum && col.activeIndex && col.activeIndex !== newActiveIndex) {
90
- cancelAnimationFrame(animationFrameId);
91
- col.$itemsEl.transitionEnd(() => {
92
- cancelAnimationFrame(animationFrameId);
93
- });
94
- updateDuringScroll();
95
- } // Update items
96
-
45
+ const newScrollTop = newActiveIndex * itemHeight;
46
+ col.$itemsEl[0].scrollTop = newScrollTop; // Update items
97
47
 
98
- col.updateItems(newActiveIndex, newTranslate, transition, valueCallbacks);
48
+ col.updateItems(newActiveIndex, newScrollTop, valueCallbacks);
99
49
  };
100
50
 
101
- col.updateItems = function updateColItems(activeIndex, translate, transition, valueCallbacks) {
102
- if (typeof translate === 'undefined') {
51
+ col.updateItems = function updateColItems(activeIndex, scrollTop, valueCallbacks) {
52
+ if (typeof scrollTop === 'undefined') {
103
53
  // eslint-disable-next-line
104
- translate = getTranslate(col.$itemsEl[0], 'y');
54
+ scrollTop = col.$itemsEl[0].scrollTop;
105
55
  }
56
+ /* eslint-disable no-param-reassign */
106
57
 
107
- if (typeof activeIndex === 'undefined') // eslint-disable-next-line
108
- activeIndex = -Math.round((translate - maxTranslate) / itemHeight); // eslint-disable-next-line
109
58
 
110
- if (activeIndex < 0) activeIndex = 0; // eslint-disable-next-line
59
+ if (typeof activeIndex === 'undefined') {
60
+ activeIndex = Math.round(scrollTop / itemHeight);
61
+ }
111
62
 
63
+ if (activeIndex < 0) activeIndex = 0;
112
64
  if (activeIndex >= col.items.length) activeIndex = col.items.length - 1;
65
+ /* eslint-enable no-param-reassign */
66
+
113
67
  const previousActiveIndex = col.activeIndex;
114
68
  col.activeIndex = activeIndex;
115
69
  col.$itemsEl.find('.picker-item-selected').removeClass('picker-item-selected');
116
- col.items.transition(transition);
117
- const selectedItem = col.items.eq(activeIndex).addClass('picker-item-selected').transform(''); // Set 3D rotate effect
70
+ const selectedItem = col.items.eq(activeIndex);
71
+ selectedItem.addClass('picker-item-selected').children().transform(''); // Set 3D rotate effect
118
72
 
119
73
  if (picker.params.rotateEffect) {
120
74
  col.items.each(itemEl => {
121
75
  const $itemEl = $(itemEl);
122
- const itemOffsetTop = $itemEl.index() * itemHeight;
123
- const translateOffset = maxTranslate - translate;
124
- const itemOffset = itemOffsetTop - translateOffset;
76
+ const itemOffset = itemEl.offsetTop - (colHeight - itemHeight) / 2 - scrollTop;
125
77
  const percentage = itemOffset / itemHeight;
126
78
  const itemsFit = Math.ceil(col.height / itemHeight / 2) + 1;
127
- let angle = -18 * percentage;
79
+ let angle = -24 * percentage;
128
80
  if (angle > 180) angle = 180;
129
81
  if (angle < -180) angle = -180;
130
82
 
@@ -134,7 +86,7 @@ export default function pickerColumn(colEl, updateItems) {
134
86
  $itemEl.removeClass('picker-item-far');
135
87
  }
136
88
 
137
- $itemEl.transform(`translate3d(0, ${-translate + maxTranslate}px, ${picker.needsOriginFix ? -110 : 0}px) rotateX(${angle}deg)`);
89
+ $itemEl.children('span').transform(`translate3d(0, ${-percentage * itemHeight}px, -100px) rotateX(${angle}deg)`);
138
90
  });
139
91
  }
140
92
 
@@ -153,219 +105,31 @@ export default function pickerColumn(colEl, updateItems) {
153
105
  }
154
106
  };
155
107
 
156
- let allowItemClick = true;
157
- let isTouched;
158
- let isMoved;
159
- let touchStartY;
160
- let touchCurrentY;
161
- let touchStartTime;
162
- let touchEndTime;
163
- let startTranslate;
164
- let returnTo;
165
- let currentTranslate;
166
- let prevTranslate;
167
- let velocityTranslate;
168
-
169
- function handleTouchStart(e) {
170
- if (isMoved || isTouched) return;
171
- e.preventDefault();
172
- isTouched = true;
173
- touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
174
- touchCurrentY = touchStartY;
175
- touchStartTime = new Date().getTime();
176
- allowItemClick = true;
177
- startTranslate = getTranslate(col.$itemsEl[0], 'y');
178
- currentTranslate = startTranslate;
179
- }
180
-
181
- function handleTouchMove(e) {
182
- if (!isTouched) return;
183
- e.preventDefault();
184
- allowItemClick = false;
185
- touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
186
-
187
- if (!isMoved) {
188
- // First move
189
- cancelAnimationFrame(animationFrameId);
190
- isMoved = true;
191
- startTranslate = getTranslate(col.$itemsEl[0], 'y');
192
- currentTranslate = startTranslate;
193
- col.$itemsEl.transition(0);
194
- }
195
-
196
- const diff = touchCurrentY - touchStartY;
197
- currentTranslate = startTranslate + diff;
198
- returnTo = undefined; // Normalize translate
199
-
200
- if (currentTranslate < minTranslate) {
201
- currentTranslate = minTranslate - (minTranslate - currentTranslate) ** 0.8;
202
- returnTo = 'min';
203
- }
204
-
205
- if (currentTranslate > maxTranslate) {
206
- currentTranslate = maxTranslate + (currentTranslate - maxTranslate) ** 0.8;
207
- returnTo = 'max';
208
- } // Transform wrapper
209
-
210
-
211
- col.$itemsEl.transform(`translate3d(0,${currentTranslate}px,0)`); // Update items
212
-
213
- col.updateItems(undefined, currentTranslate, 0, picker.params.updateValuesOnTouchmove); // Calc velocity
214
-
215
- velocityTranslate = currentTranslate - prevTranslate || currentTranslate;
216
- prevTranslate = currentTranslate;
217
- }
218
-
219
- function handleTouchEnd() {
220
- if (!isTouched || !isMoved) {
221
- isTouched = false;
222
- isMoved = false;
223
- return;
224
- }
225
-
226
- isTouched = false;
227
- isMoved = false;
228
- col.$itemsEl.transition('');
229
-
230
- if (returnTo) {
231
- if (returnTo === 'min') {
232
- col.$itemsEl.transform(`translate3d(0,${minTranslate}px,0)`);
233
- } else {
234
- col.$itemsEl.transform(`translate3d(0,${maxTranslate}px,0)`);
235
- }
236
- }
237
-
238
- touchEndTime = new Date().getTime();
239
- let newTranslate;
240
-
241
- if (touchEndTime - touchStartTime > 300) {
242
- newTranslate = currentTranslate;
243
- } else {
244
- newTranslate = currentTranslate + velocityTranslate * picker.params.momentumRatio;
245
- }
246
-
247
- newTranslate = Math.max(Math.min(newTranslate, maxTranslate), minTranslate); // Active Index
248
-
249
- const activeIndex = Math.round(Math.abs((newTranslate - maxTranslate) / itemHeight)); // Normalize translate
250
-
251
- if (!picker.params.freeMode) newTranslate = -activeIndex * itemHeight + maxTranslate; // Transform wrapper
252
-
253
- col.$itemsEl.transform(`translate3d(0,${parseInt(newTranslate, 10)}px,0)`); // Update items
254
-
255
- col.updateItems(activeIndex, newTranslate, '', true); // Watch items
256
-
257
- if (picker.params.updateValuesOnMomentum) {
258
- updateDuringScroll();
259
- col.$itemsEl.transitionEnd(() => {
260
- cancelAnimationFrame(animationFrameId);
261
- });
262
- } // Allow click
263
-
264
-
265
- setTimeout(() => {
266
- allowItemClick = true;
267
- }, 100);
268
- }
269
-
270
- let mousewheelTimeout;
271
-
272
- function handleMouseWheel(e) {
273
- const {
274
- deltaX,
275
- deltaY
276
- } = e;
277
- if (Math.abs(deltaX) > Math.abs(deltaY)) return;
278
- clearTimeout(mousewheelTimeout);
279
- e.preventDefault();
280
- cancelAnimationFrame(animationFrameId);
281
- startTranslate = getTranslate(col.$itemsEl[0], 'y');
282
- col.$itemsEl.transition(0);
283
- currentTranslate = startTranslate - deltaY;
284
- returnTo = undefined; // Normalize translate
285
-
286
- if (currentTranslate < minTranslate) {
287
- currentTranslate = minTranslate;
288
- returnTo = 'min';
289
- }
290
-
291
- if (currentTranslate > maxTranslate) {
292
- currentTranslate = maxTranslate;
293
- returnTo = 'max';
294
- } // Transform wrapper
295
-
296
-
297
- col.$itemsEl.transform(`translate3d(0,${currentTranslate}px,0)`); // Update items
298
-
299
- col.updateItems(undefined, currentTranslate, 0, picker.params.updateValuesOnMousewheel); // On end
300
-
301
- mousewheelTimeout = setTimeout(() => {
302
- col.$itemsEl.transition('');
303
-
304
- if (returnTo) {
305
- if (returnTo === 'min') {
306
- col.$itemsEl.transform(`translate3d(0,${minTranslate}px,0)`);
307
- } else {
308
- col.$itemsEl.transform(`translate3d(0,${maxTranslate}px,0)`);
309
- }
310
- }
311
-
312
- touchEndTime = new Date().getTime();
313
- let newTranslate = currentTranslate;
314
- newTranslate = Math.max(Math.min(newTranslate, maxTranslate), minTranslate); // Active Index
315
-
316
- const activeIndex = Math.round(Math.abs((newTranslate - maxTranslate) / itemHeight)); // Normalize translate
317
-
318
- if (!picker.params.freeMode) newTranslate = -activeIndex * itemHeight + maxTranslate; // Transform wrapper
319
-
320
- col.$itemsEl.transform(`translate3d(0,${parseInt(newTranslate, 10)}px,0)`); // Update items
321
-
322
- col.updateItems(activeIndex, newTranslate, '', true);
323
- }, 200);
108
+ function handleScroll() {
109
+ col.updateItems();
324
110
  }
325
111
 
326
112
  function handleClick() {
327
- if (!allowItemClick) return;
328
- cancelAnimationFrame(animationFrameId);
329
113
  const value = $(this).attr('data-picker-value');
330
114
  col.setValue(value);
331
115
  }
332
116
 
333
- const activeListener = getSupport().passiveListener ? {
334
- passive: false,
335
- capture: false
336
- } : false;
337
-
338
117
  col.attachEvents = function attachColEvents() {
339
- col.$el.on(app.touchEvents.start, handleTouchStart, activeListener);
340
- app.on('touchmove:active', handleTouchMove);
341
- app.on('touchend:passive', handleTouchEnd);
342
-
343
- if (picker.params.mousewheel) {
344
- col.$el.on('wheel', handleMouseWheel);
345
- }
346
-
118
+ col.$itemsEl.on('scroll', handleScroll);
347
119
  col.items.on('click', handleClick);
348
120
  };
349
121
 
350
122
  col.detachEvents = function detachColEvents() {
351
- col.$el.off(app.touchEvents.start, handleTouchStart, activeListener);
352
- app.off('touchmove:active', handleTouchMove);
353
- app.off('touchend:passive', handleTouchEnd);
354
-
355
- if (picker.params.mousewheel) {
356
- col.$el.off('wheel', handleMouseWheel);
357
- }
358
-
359
123
  col.items.off('click', handleClick);
360
124
  };
361
125
 
362
126
  col.init = function initCol() {
363
127
  col.calcSize();
364
- col.$itemsEl.transform(`translate3d(0,${maxTranslate}px,0)`).transition(0);
365
128
  if (colIndex === 0) col.$el.addClass('picker-column-first');
366
- if (colIndex === picker.cols.length - 1) col.$el.addClass('picker-column-last'); // Update items on init
129
+ if (colIndex === picker.cols.length - 1) col.$el.addClass('picker-column-last');
130
+ if (picker.params.freeMode) col.$el.addClass('picker-column-free-mode'); // Update items on init
367
131
 
368
- if (updateItems) col.updateItems(0, maxTranslate, 0);
132
+ if (updateItems) col.updateItems(0);
369
133
  col.attachEvents();
370
134
  };
371
135
 
@@ -1 +1 @@
1
- :root{--f7-picker-height:260px;--f7-picker-inline-height:200px;--f7-picker-popover-height:260px;--f7-picker-popover-width:280px;--f7-picker-landscape-height:200px;--f7-picker-item-height:36px;--f7-picker-item-selected-bg-color:rgba(0, 0, 0, 0.12);--f7-picker-item-selected-text-color:#000}:root .theme-dark,:root.theme-dark{--f7-picker-item-selected-bg-color:rgba(255, 255, 255, 0.1);--f7-picker-item-selected-text-color:#fff}.ios{--f7-picker-column-font-size:20px;--f7-picker-divider-text-color:#000;--f7-picker-item-text-color:rgba(0, 0, 0, 0.45)}.ios .theme-dark,.ios.theme-dark{--f7-picker-divider-text-color:#fff;--f7-picker-item-text-color:rgba(255, 255, 255, 0.55)}.md{--f7-picker-column-font-size:20px;--f7-picker-divider-text-color:rgba(0, 0, 0, 0.87);--f7-picker-item-text-color:rgba(0, 0, 0, 0.54)}.md .theme-dark,.md.theme-dark{--f7-picker-item-text-color:rgba(255, 255, 255, 0.54);--f7-picker-divider-text-color:rgba(255, 255, 255, 0.87)}.aurora{--f7-picker-column-font-size:20px;--f7-picker-item-text-color:#888;--f7-picker-divider-text-color:#000}.aurora .theme-dark,.aurora.theme-dark{--f7-picker-divider-text-color:#fff}.picker{width:100%;height:var(--f7-picker-height)}.picker.picker-inline{height:var(--f7-picker-inline-height)}.popover .picker{height:var(--f7-picker-popover-height)}@media (orientation:landscape) and (max-height:415px){.picker:not(.picker-inline){height:var(--f7-picker-landscape-height)}}.picker.sheet-modal{background:var(--f7-picker-sheet-bg-color,var(--f7-sheet-bg-color))}.picker-popover{width:var(--f7-picker-popover-width)}.picker-popover .toolbar{background:0 0;border-radius:var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0}.picker-popover .toolbar:before{display:none!important}.picker-popover .toolbar+.picker-columns{height:calc(100% - var(--f7-toolbar-height))}.picker-columns{display:flex;overflow:hidden;justify-content:center;padding:0;text-align:right;height:100%;position:relative;-webkit-mask-box-image:linear-gradient(to top,transparent,transparent 5%,white 20%,white 80%,transparent 95%,transparent);font-size:var(--f7-picker-column-font-size)}.picker-column{position:relative;max-height:100%}.picker-column.picker-column-first:before,.picker-column.picker-column-last:after{height:100%;width:100vw;position:absolute;content:'';top:0}.picker-column.picker-column-first:before{left:100%}.picker-column.picker-column-last:after{right:100%}.picker-column.picker-column-left{text-align:left}.picker-column.picker-column-center{text-align:center}.picker-column.picker-column-right{text-align:right}.picker-column.picker-column-divider{display:flex;align-items:center;color:var(--f7-picker-divider-text-color)}.picker-items{transition:.3s;transition-timing-function:ease-out}.picker-item{height:var(--f7-picker-item-height);line-height:var(--f7-picker-item-height);white-space:nowrap;position:relative;overflow:hidden;text-overflow:ellipsis;left:0;top:0;width:100%;box-sizing:border-box;transition:.3s;color:var(--f7-picker-item-text-color);cursor:pointer}.picker-item span{padding:0 10px}.picker-column-absolute .picker-item{position:absolute}.picker-item.picker-item-far{pointer-events:none}.picker-item.picker-item-selected{color:var(--f7-picker-item-selected-text-color);transform:translate3d(0,0,0) rotateX(0deg)}.picker-center-highlight{height:var(--f7-picker-item-height);box-sizing:border-box;position:absolute;left:16px;right:16px;top:50%;margin-top:calc(-1 * var(--f7-picker-item-height)/ 2);pointer-events:none;background-color:var(--f7-picker-item-selected-bg-color);border-radius:8px}.popover .picker-center-highlight{left:8px;right:8px}.picker-3d .picker-columns{overflow:hidden;perspective:1200px}.picker-3d .picker-column,.picker-3d .picker-item,.picker-3d .picker-items{transform-style:preserve-3d}.picker-3d .picker-column{overflow:visible}.picker-3d .picker-item{transform-origin:center center -110px;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition-timing-function:ease-out}
1
+ :root{--f7-picker-height:260px;--f7-picker-inline-height:200px;--f7-picker-popover-height:260px;--f7-picker-popover-width:280px;--f7-picker-landscape-height:200px;--f7-picker-item-height:36px;--f7-picker-item-selected-bg-color:rgba(0, 0, 0, 0.12);--f7-picker-item-selected-text-color:#000}:root .dark,:root.dark{--f7-picker-item-selected-bg-color:rgba(255, 255, 255, 0.1);--f7-picker-item-selected-text-color:#fff}.ios{--f7-picker-column-font-size:20px;--f7-picker-divider-text-color:#000;--f7-picker-item-text-color:rgba(0, 0, 0, 0.45)}.ios .dark,.ios.dark{--f7-picker-divider-text-color:#fff;--f7-picker-item-text-color:rgba(255, 255, 255, 0.55)}.md{--f7-picker-column-font-size:20px;--f7-picker-divider-text-color:rgba(0, 0, 0, 0.87);--f7-picker-item-text-color:rgba(0, 0, 0, 0.54)}.md .dark,.md.dark{--f7-picker-item-text-color:rgba(255, 255, 255, 0.54);--f7-picker-divider-text-color:rgba(255, 255, 255, 0.87)}.aurora{--f7-picker-column-font-size:20px;--f7-picker-item-text-color:#888;--f7-picker-divider-text-color:#000}.aurora .dark,.aurora.dark{--f7-picker-divider-text-color:#fff}.picker{width:100%;height:var(--f7-picker-height)}.picker.picker-inline{height:var(--f7-picker-inline-height)}.popover .picker{height:var(--f7-picker-popover-height)}@media (orientation:landscape) and (max-height:415px){.picker:not(.picker-inline){height:var(--f7-picker-landscape-height)}}.picker.sheet-modal{background:var(--f7-picker-sheet-bg-color,var(--f7-sheet-bg-color))}.picker-popover{width:var(--f7-picker-popover-width)}.picker-popover .toolbar{background:0 0;border-radius:var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0}.picker-popover .toolbar:before{display:none!important}.picker-popover .toolbar+.picker-columns{height:calc(100% - var(--f7-toolbar-height))}.picker-columns{display:flex;overflow:hidden;justify-content:center;padding:0;text-align:right;height:100%;position:relative;-webkit-mask-box-image:linear-gradient(to top,transparent,transparent 5%,white 20%,white 80%,transparent 95%,transparent);font-size:var(--f7-picker-column-font-size)}.picker-column{position:relative;max-height:100%}.picker-column.picker-column-first:before,.picker-column.picker-column-last:after{height:100%;width:100vw;position:absolute;content:'';top:0}.picker-column.picker-column-first:before{left:100%}.picker-column.picker-column-last:after{right:100%}.picker-column.picker-column-left{text-align:left}.picker-column.picker-column-center{text-align:center}.picker-column.picker-column-right{text-align:right}.picker-column.picker-column-divider{display:flex;align-items:center;color:var(--f7-picker-divider-text-color)}.picker-items{overflow:auto;scrollbar-width:none;scroll-snap-type:y mandatory;height:100%;box-sizing:border-box;padding:var(--f7-picker-scroll-padding,0px) 0px}.picker-items::-webkit-scrollbar{display:none;opacity:0}.picker-item{height:var(--f7-picker-item-height);line-height:var(--f7-picker-item-height);white-space:nowrap;position:relative;overflow:hidden;text-overflow:ellipsis;left:0;top:0;width:100%;box-sizing:border-box;color:var(--f7-picker-item-text-color);cursor:pointer;scroll-snap-align:center}.picker-item span{padding:0 10px}.picker-item.picker-item-far{pointer-events:none}.picker-item.picker-item-selected{color:var(--f7-picker-item-selected-text-color);transform:translate3d(0,0,0) rotateX(0deg)}.picker-column-free-mode .picker-item{scroll-snap-align:none}.picker-center-highlight{height:var(--f7-picker-item-height);box-sizing:border-box;position:absolute;left:16px;right:16px;top:50%;margin-top:calc(-1 * var(--f7-picker-item-height)/ 2);pointer-events:none;background-color:var(--f7-picker-item-selected-bg-color);border-radius:8px}.popover .picker-center-highlight{left:8px;right:8px}.picker-3d .picker-columns{overflow:hidden}.picker-3d .picker-column,.picker-3d .picker-item,.picker-3d .picker-items{transform-style:preserve-3d}.picker-3d .picker-column{overflow:visible}.picker-3d .picker-item{perspective:1200px;overflow:visible}.picker-3d .picker-item>span{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:block;transform-style:preserve-3d;position:relative;overflow:hidden;text-overflow:ellipsis;box-sizing:border-box;max-width:100%;transform-origin:center center -100px}
@@ -1 +1 @@
1
- :root{--f7-picker-height:260px;--f7-picker-inline-height:200px;--f7-picker-popover-height:260px;--f7-picker-popover-width:280px;--f7-picker-landscape-height:200px;--f7-picker-item-height:36px;--f7-picker-item-selected-bg-color:rgba(0, 0, 0, 0.12);--f7-picker-item-selected-text-color:#000}:root .theme-dark,:root.theme-dark{--f7-picker-item-selected-bg-color:rgba(255, 255, 255, 0.1);--f7-picker-item-selected-text-color:#fff}.ios{--f7-picker-column-font-size:20px;--f7-picker-divider-text-color:#000;--f7-picker-item-text-color:rgba(0, 0, 0, 0.45)}.ios .theme-dark,.ios.theme-dark{--f7-picker-divider-text-color:#fff;--f7-picker-item-text-color:rgba(255, 255, 255, 0.55)}.md{--f7-picker-column-font-size:20px;--f7-picker-divider-text-color:rgba(0, 0, 0, 0.87);--f7-picker-item-text-color:rgba(0, 0, 0, 0.54)}.md .theme-dark,.md.theme-dark{--f7-picker-item-text-color:rgba(255, 255, 255, 0.54);--f7-picker-divider-text-color:rgba(255, 255, 255, 0.87)}.aurora{--f7-picker-column-font-size:20px;--f7-picker-item-text-color:#888;--f7-picker-divider-text-color:#000}.aurora .theme-dark,.aurora.theme-dark{--f7-picker-divider-text-color:#fff}.picker{width:100%;height:var(--f7-picker-height)}.picker.picker-inline{height:var(--f7-picker-inline-height)}.popover .picker{height:var(--f7-picker-popover-height)}@media (orientation:landscape) and (max-height:415px){.picker:not(.picker-inline){height:var(--f7-picker-landscape-height)}}.picker.sheet-modal{background:var(--f7-picker-sheet-bg-color,var(--f7-sheet-bg-color))}.picker-popover{width:var(--f7-picker-popover-width)}.picker-popover .toolbar{background:0 0;border-radius:var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0}.picker-popover .toolbar:before{display:none!important}.picker-popover .toolbar+.picker-columns{height:calc(100% - var(--f7-toolbar-height))}.picker-columns{display:flex;overflow:hidden;justify-content:center;padding:0;text-align:right;height:100%;position:relative;-webkit-mask-box-image:linear-gradient(to top,transparent,transparent 5%,white 20%,white 80%,transparent 95%,transparent);font-size:var(--f7-picker-column-font-size)}.picker-column{position:relative;max-height:100%}.picker-column.picker-column-first:before,.picker-column.picker-column-last:after{height:100%;width:100vw;position:absolute;content:'';top:0}.picker-column.picker-column-first:before{right:100%}.picker-column.picker-column-last:after{left:100%}.picker-column.picker-column-left{text-align:left}.picker-column.picker-column-center{text-align:center}.picker-column.picker-column-right{text-align:right}.picker-column.picker-column-divider{display:flex;align-items:center;color:var(--f7-picker-divider-text-color)}.picker-items{transition:.3s;transition-timing-function:ease-out}.picker-item{height:var(--f7-picker-item-height);line-height:var(--f7-picker-item-height);white-space:nowrap;position:relative;overflow:hidden;text-overflow:ellipsis;left:0;top:0;width:100%;box-sizing:border-box;transition:.3s;color:var(--f7-picker-item-text-color);cursor:pointer}.picker-item span{padding:0 10px}.picker-column-absolute .picker-item{position:absolute}.picker-item.picker-item-far{pointer-events:none}.picker-item.picker-item-selected{color:var(--f7-picker-item-selected-text-color);transform:translate3d(0,0,0) rotateX(0deg)}.picker-center-highlight{height:var(--f7-picker-item-height);box-sizing:border-box;position:absolute;left:16px;right:16px;top:50%;margin-top:calc(-1 * var(--f7-picker-item-height)/ 2);pointer-events:none;background-color:var(--f7-picker-item-selected-bg-color);border-radius:8px}.popover .picker-center-highlight{left:8px;right:8px}.picker-3d .picker-columns{overflow:hidden;perspective:1200px}.picker-3d .picker-column,.picker-3d .picker-item,.picker-3d .picker-items{transform-style:preserve-3d}.picker-3d .picker-column{overflow:visible}.picker-3d .picker-item{transform-origin:center center -110px;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition-timing-function:ease-out}
1
+ :root{--f7-picker-height:260px;--f7-picker-inline-height:200px;--f7-picker-popover-height:260px;--f7-picker-popover-width:280px;--f7-picker-landscape-height:200px;--f7-picker-item-height:36px;--f7-picker-item-selected-bg-color:rgba(0, 0, 0, 0.12);--f7-picker-item-selected-text-color:#000}:root .dark,:root.dark{--f7-picker-item-selected-bg-color:rgba(255, 255, 255, 0.1);--f7-picker-item-selected-text-color:#fff}.ios{--f7-picker-column-font-size:20px;--f7-picker-divider-text-color:#000;--f7-picker-item-text-color:rgba(0, 0, 0, 0.45)}.ios .dark,.ios.dark{--f7-picker-divider-text-color:#fff;--f7-picker-item-text-color:rgba(255, 255, 255, 0.55)}.md{--f7-picker-column-font-size:20px;--f7-picker-divider-text-color:rgba(0, 0, 0, 0.87);--f7-picker-item-text-color:rgba(0, 0, 0, 0.54)}.md .dark,.md.dark{--f7-picker-item-text-color:rgba(255, 255, 255, 0.54);--f7-picker-divider-text-color:rgba(255, 255, 255, 0.87)}.aurora{--f7-picker-column-font-size:20px;--f7-picker-item-text-color:#888;--f7-picker-divider-text-color:#000}.aurora .dark,.aurora.dark{--f7-picker-divider-text-color:#fff}.picker{width:100%;height:var(--f7-picker-height)}.picker.picker-inline{height:var(--f7-picker-inline-height)}.popover .picker{height:var(--f7-picker-popover-height)}@media (orientation:landscape) and (max-height:415px){.picker:not(.picker-inline){height:var(--f7-picker-landscape-height)}}.picker.sheet-modal{background:var(--f7-picker-sheet-bg-color,var(--f7-sheet-bg-color))}.picker-popover{width:var(--f7-picker-popover-width)}.picker-popover .toolbar{background:0 0;border-radius:var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0}.picker-popover .toolbar:before{display:none!important}.picker-popover .toolbar+.picker-columns{height:calc(100% - var(--f7-toolbar-height))}.picker-columns{display:flex;overflow:hidden;justify-content:center;padding:0;text-align:right;height:100%;position:relative;-webkit-mask-box-image:linear-gradient(to top,transparent,transparent 5%,white 20%,white 80%,transparent 95%,transparent);font-size:var(--f7-picker-column-font-size)}.picker-column{position:relative;max-height:100%}.picker-column.picker-column-first:before,.picker-column.picker-column-last:after{height:100%;width:100vw;position:absolute;content:'';top:0}.picker-column.picker-column-first:before{right:100%}.picker-column.picker-column-last:after{left:100%}.picker-column.picker-column-left{text-align:left}.picker-column.picker-column-center{text-align:center}.picker-column.picker-column-right{text-align:right}.picker-column.picker-column-divider{display:flex;align-items:center;color:var(--f7-picker-divider-text-color)}.picker-items{overflow:auto;scrollbar-width:none;scroll-snap-type:y mandatory;height:100%;box-sizing:border-box;padding:var(--f7-picker-scroll-padding,0px) 0px}.picker-items::-webkit-scrollbar{display:none;opacity:0}.picker-item{height:var(--f7-picker-item-height);line-height:var(--f7-picker-item-height);white-space:nowrap;position:relative;overflow:hidden;text-overflow:ellipsis;left:0;top:0;width:100%;box-sizing:border-box;color:var(--f7-picker-item-text-color);cursor:pointer;scroll-snap-align:center}.picker-item span{padding:0 10px}.picker-item.picker-item-far{pointer-events:none}.picker-item.picker-item-selected{color:var(--f7-picker-item-selected-text-color);transform:translate3d(0,0,0) rotateX(0deg)}.picker-column-free-mode .picker-item{scroll-snap-align:none}.picker-center-highlight{height:var(--f7-picker-item-height);box-sizing:border-box;position:absolute;left:16px;right:16px;top:50%;margin-top:calc(-1 * var(--f7-picker-item-height)/ 2);pointer-events:none;background-color:var(--f7-picker-item-selected-bg-color);border-radius:8px}.popover .picker-center-highlight{left:8px;right:8px}.picker-3d .picker-columns{overflow:hidden}.picker-3d .picker-column,.picker-3d .picker-item,.picker-3d .picker-items{transform-style:preserve-3d}.picker-3d .picker-column{overflow:visible}.picker-3d .picker-item{perspective:1200px;overflow:visible}.picker-3d .picker-item>span{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:block;transform-style:preserve-3d;position:relative;overflow:hidden;text-overflow:ellipsis;box-sizing:border-box;max-width:100%;transform-origin:center center -100px}
@@ -32,9 +32,8 @@ export namespace Picker {
32
32
  view: View.View;
33
33
  /** Object with initialization parameters */
34
34
  params: Parameters;
35
-
36
35
  /** Set new picker value. values is array where each item represents value for each column. duration - transition duration in ms */
37
- setValue(values: unknown[], duration?: number): void;
36
+ setValue(values: unknown[]): void;
38
37
  /** Returns current picker value */
39
38
  getValue(): unknown;
40
39
  /** Open Picker */
@@ -60,7 +59,7 @@ export namespace Picker {
60
59
  activeIndex: number;
61
60
 
62
61
  /** Set new value for current column. value is a new value, duration - transition duration in ms */
63
- setValue(value: unknown, duration?: number): void;
62
+ setValue(value: unknown): void;
64
63
  /** Replace column values and displayValues with new ones */
65
64
  replaceValues(values: unknown[], displayValues: unknown[]): void;
66
65
  }
@@ -87,16 +86,6 @@ export namespace Picker {
87
86
  interface Parameters {
88
87
  /** Enables 3D rotate effect. (default false) */
89
88
  rotateEffect?: boolean;
90
- /** Larger values produces more momentum when you release picker after fast touch and move. (default 7) */
91
- momentumRatio?: number;
92
- /** Updates picker and input values during momentum. (default false) */
93
- updateValuesOnMomentum?: boolean;
94
- /** Updates picker and input values during touch move. (default true) */
95
- updateValuesOnTouchmove?: boolean;
96
- /** Updates picker and input values during mousewheel scrolling. (default true) */
97
- updateValuesOnMousewheel?: boolean;
98
- /** Allow to scroll through picker with mousewheel (default true) */
99
- mousewheel?: boolean;
100
89
  /** Disables snapping on values. (default false) */
101
90
  freeMode?: boolean;
102
91
  /** Array with initial values. Each array item represents value of related column. */
@@ -1,6 +1,6 @@
1
- import $ from '../../shared/dom7';
2
- import ConstructorMethods from '../../shared/constructor-methods';
3
- import Picker from './picker-class';
1
+ import $ from '../../shared/dom7.js';
2
+ import ConstructorMethods from '../../shared/constructor-methods.js';
3
+ import Picker from './picker-class.js';
4
4
  export default {
5
5
  name: 'picker',
6
6
  static: {
@@ -16,7 +16,11 @@ export default {
16
16
  domProp: 'f7Picker'
17
17
  });
18
18
 
19
- app.picker.close = function close(el = '.picker') {
19
+ app.picker.close = function close(el) {
20
+ if (el === void 0) {
21
+ el = '.picker';
22
+ }
23
+
20
24
  const $el = $(el);
21
25
  if ($el.length === 0) return;
22
26
  const picker = $el[0].f7Picker;
@@ -28,12 +32,7 @@ export default {
28
32
  params: {
29
33
  picker: {
30
34
  // Picker settings
31
- updateValuesOnMomentum: false,
32
- updateValuesOnTouchmove: true,
33
- updateValuesOnMousewheel: true,
34
- mousewheel: true,
35
35
  rotateEffect: false,
36
- momentumRatio: 7,
37
36
  freeMode: false,
38
37
  cols: [],
39
38
  // Common opener settings
@@ -0,0 +1 @@
1
+ (function framework7ComponentLoader(e,t){void 0===t&&(t=!0);var l=e.$,s=e.utils,i=e.getDevice,n=(e.getSupport,e.Class),o=(e.Modal,e.ConstructorMethods),r=(e.ModalMethods,s.extend),a=s.nextTick,c=s.deleteProps;function p(e,t){const s=this,i=l(e),n=i.index(),o=s.cols[n];if(o.divider)return;let r,a;function c(){o.updateItems()}function p(){const e=l(this).attr("data-picker-value");o.setValue(e)}o.$el=i,o.el=i[0],o.$itemsEl=o.$el.find(".picker-items"),o.items=o.$itemsEl.find(".picker-item"),o.replaceValues=function(e,t){o.detachEvents(),o.values=e,o.displayValues=t,o.$itemsEl.html(s.renderColumn(o,!0)),o.items=o.$itemsEl.find(".picker-item"),o.calcSize(),o.setValue(o.values[0],!0),o.attachEvents()},o.calcSize=function(){a=o.$el[0].offsetHeight,r=o.items[0].offsetHeight;const e=o.el.style.getPropertyValue("--f7-picker-scroll-padding");o.el.style.setProperty("--f7-picker-scroll-padding",(a-r)/2+"px"),e||(o.$itemsEl[0].scrollTop=0)},o.setValue=function(e,t){const l=o.$itemsEl.find(`.picker-item[data-picker-value="${e}"]`).index();if(void 0===l||-1===l)return;const s=l*r;o.$itemsEl[0].scrollTop=s,o.updateItems(l,s,t)},o.updateItems=function(e,t,i){void 0===t&&(t=o.$itemsEl[0].scrollTop),void 0===e&&(e=Math.round(t/r)),e<0&&(e=0),e>=o.items.length&&(e=o.items.length-1);const n=o.activeIndex;o.activeIndex=e,o.$itemsEl.find(".picker-item-selected").removeClass("picker-item-selected");const c=o.items.eq(e);c.addClass("picker-item-selected").children().transform(""),s.params.rotateEffect&&o.items.each((e=>{const s=l(e),i=(e.offsetTop-(a-r)/2-t)/r,n=Math.ceil(o.height/r/2)+1;let c=-24*i;c>180&&(c=180),c<-180&&(c=-180),Math.abs(i)>n?s.addClass("picker-item-far"):s.removeClass("picker-item-far"),s.children("span").transform(`translate3d(0, ${-i*r}px, -100px) rotateX(${c}deg)`)})),(i||void 0===i)&&(o.value=c.attr("data-picker-value"),o.displayValue=o.displayValues?o.displayValues[e]:o.value,n!==e&&(o.onChange&&o.onChange(s,o.value,o.displayValue),s.updateValue()))},o.attachEvents=function(){o.$itemsEl.on("scroll",c),o.items.on("click",p)},o.detachEvents=function(){o.items.off("click",p)},o.init=function(){o.calcSize(),0===n&&o.$el.addClass("picker-column-first"),n===s.cols.length-1&&o.$el.addClass("picker-column-last"),s.params.freeMode&&o.$el.addClass("picker-column-free-mode"),t&&o.updateItems(0),o.attachEvents()},o.destroy=function(){o.detachEvents()},o.init()}class d extends n{constructor(e,t){void 0===t&&(t={}),super(t,[e]);const s=this,n=i(),o=getWindow();let a,c;if(s.params=r({},e.params.picker,t),s.params.containerEl&&(a=l(s.params.containerEl),0===a.length))return s;s.params.inputEl&&(c=l(s.params.inputEl));let p=s.params.scrollToInput?c:void 0;if(s.params.scrollToEl){const e=l(s.params.scrollToEl);e.length>0&&(p=e)}function d(){s.resizeCols()}function u(){s.open()}function m(e){e.preventDefault()}r(s,{app:e,$containerEl:a,containerEl:a&&a[0],inline:a&&a.length>0,needsOriginFix:n.ios||o.navigator.userAgent.toLowerCase().indexOf("safari")>=0&&o.navigator.userAgent.toLowerCase().indexOf("chrome")<0&&!n.android,cols:[],$inputEl:c,inputEl:c&&c[0],$scrollToEl:p,initialized:!1,opened:!1,url:s.params.url});let v=null;function h(e){v=e.target}function f(e){if(s.destroyed||!s.params)return;const t=l(e.target);s.isPopover()||s.opened&&!s.closing&&(t.closest('[class*="backdrop"]').length||(c&&c.length>0?v===e.target&&t[0]!==c[0]&&0===t.closest(".sheet-modal").length&&s.close():0===l(e.target).closest(".sheet-modal").length&&s.close()))}return r(s,{attachResizeEvent(){e.on("resize",d)},detachResizeEvent(){e.off("resize",d)},attachInputEvents(){s.$inputEl.on("click",u),s.params.inputReadOnly&&(s.$inputEl.on("focus mousedown",m),s.$inputEl[0]&&(s.$inputEl[0].f7ValidateReadonly=!0))},detachInputEvents(){s.$inputEl.off("click",u),s.params.inputReadOnly&&(s.$inputEl.off("focus mousedown",m),s.$inputEl[0]&&delete s.$inputEl[0].f7ValidateReadonly)},attachHtmlEvents(){e.on("click",f),e.on("touchstart",h)},detachHtmlEvents(){e.off("click",f),e.off("touchstart",h)}}),s.init(),s}get view(){const{app:e,params:t,$inputEl:l}=this;let s;return t.view?s=t.view:l&&(s=l.parents(".view").length&&l.parents(".view")[0].f7View),s||(s=e.views.main),s}initInput(){const e=this;e.$inputEl&&e.params.inputReadOnly&&e.$inputEl.prop("readOnly",!0)}resizeCols(){const e=this;if(e.opened)for(let t=0;t<e.cols.length;t+=1)e.cols[t].divider||(e.cols[t].calcSize(),e.cols[t].setValue(e.cols[t].value,!1))}isPopover(){const e=this,{app:t,modal:l,params:s}=e,n=i();if("sheet"===s.openIn)return!1;if(l&&"popover"!==l.type)return!1;if(!e.inline&&e.inputEl){if("popover"===s.openIn)return!0;if(n.ios)return!!n.ipad;if(t.width>=768)return!0;if(n.desktop&&"aurora"===t.theme)return!0}return!1}formatValue(){const e=this,{value:t,displayValue:l}=e;return e.params.formatValue?e.params.formatValue.call(e,t,l):t.join(" ")}setValue(e){const t=this;let l=0;if(0===t.cols.length)return t.value=e,void t.updateValue(e);for(let s=0;s<t.cols.length;s+=1)t.cols[s]&&!t.cols[s].divider&&(t.cols[s].setValue(e[l]),l+=1)}getValue(){return this.value}updateValue(e){const t=this,l=e||[],s=[];let i;if(0===t.cols.length){const e=t.params.cols.filter((e=>!e.divider));for(let t=0;t<e.length;t+=1)i=e[t],void 0!==i.displayValues&&void 0!==i.values&&-1!==i.values.indexOf(l[t])?s.push(i.displayValues[i.values.indexOf(l[t])]):s.push(l[t])}else for(let e=0;e<t.cols.length;e+=1)t.cols[e].divider||(l.push(t.cols[e].value),s.push(t.cols[e].displayValue));l.indexOf(void 0)>=0||(t.value=l,t.displayValue=s,t.emit("local::change pickerChange",t,t.value,t.displayValue),t.inputEl&&(t.$inputEl.val(t.formatValue()),t.$inputEl.trigger("change")))}initColumn(e,t){p.call(this,e,t)}destroyColumn(e){const t=this,s=l(e).index();t.cols[s]&&t.cols[s].destroy&&t.cols[s].destroy()}renderToolbar(){const e=this;return e.params.renderToolbar?e.params.renderToolbar.call(e,e):$jsx("div",{class:"toolbar toolbar-top no-shadow"},$jsx("div",{class:"toolbar-inner"},$jsx("div",{class:"left"}),$jsx("div",{class:"right"},$jsx("a",{class:"link sheet-close popover-close"},e.params.toolbarCloseText))))}renderColumn(e,t){const l=`picker-column ${e.textAlign?`picker-column-${e.textAlign}`:""} ${e.cssClass||""}`;let s,i;return e.divider?s=`\n <div class="${l} picker-column-divider">${e.content}</div>\n `:(i=e.values.map(((t,l)=>`\n <div class="picker-item" data-picker-value="${t}">\n <span>${e.displayValues?e.displayValues[l]:t}</span>\n </div>\n `)).join(""),s=`\n <div class="${l}">\n <div class="picker-items">${i}</div>\n </div>\n `),t?i.trim():s.trim()}renderInline(){const e=this,{rotateEffect:t,cssClass:l,toolbar:s}=e.params;return $jsx("div",{class:`picker picker-inline ${t?"picker-3d":""} ${l||""}`},s&&e.renderToolbar(),$jsx("div",{class:"picker-columns"},e.cols.map((t=>e.renderColumn(t))),$jsx("div",{class:"picker-center-highlight"})))}renderSheet(){const e=this,{rotateEffect:t,cssClass:l,toolbar:s}=e.params;return $jsx("div",{class:`sheet-modal picker picker-sheet ${t?"picker-3d":""} ${l||""}`},s&&e.renderToolbar(),$jsx("div",{class:"sheet-modal-inner picker-columns"},e.cols.map((t=>e.renderColumn(t))),$jsx("div",{class:"picker-center-highlight"})))}renderPopover(){const e=this,{rotateEffect:t,cssClass:l,toolbar:s}=e.params;return $jsx("div",{class:"popover picker-popover"},$jsx("div",{class:"popover-inner"},$jsx("div",{class:`picker ${t?"picker-3d":""} ${l||""}`},s&&e.renderToolbar(),$jsx("div",{class:"picker-columns"},e.cols.map((t=>e.renderColumn(t))),$jsx("div",{class:"picker-center-highlight"})))))}render(){const e=this;return e.params.render?e.params.render.call(e):e.inline?e.renderInline():e.isPopover()?e.renderPopover():e.renderSheet()}onOpen(){const e=this,{initialized:t,$el:l,app:s,$inputEl:i,inline:n,value:o,params:r}=e;e.opened=!0,e.closing=!1,e.opening=!0,e.attachResizeEvent(),l.find(".picker-column").each((l=>{let s=!0;(!t&&r.value||t&&o)&&(s=!1),e.initColumn(l,s)})),t?o&&e.setValue(o):o?e.setValue(o):r.value&&e.setValue(r.value),!n&&i&&i.length&&"md"===s.theme&&i.trigger("focus"),e.initialized=!0,l&&l.trigger("picker:open"),i&&i.trigger("picker:open"),e.emit("local::open pickerOpen",e)}onOpened(){const e=this;e.opening=!1,e.$el&&e.$el.trigger("picker:opened"),e.$inputEl&&e.$inputEl.trigger("picker:opened"),e.emit("local::opened pickerOpened",e)}onClose(){const e=this,t=e.app;if(e.opening=!1,e.closing=!0,e.detachResizeEvent(),e.cols.forEach((e=>{e.destroy&&e.destroy()})),e.$inputEl)if("md"===t.theme)e.$inputEl.trigger("blur");else{const l=e.$inputEl.attr("validate"),s=e.$inputEl.attr("required");l&&s&&t.input.validate(e.$inputEl)}e.$el&&e.$el.trigger("picker:close"),e.$inputEl&&e.$inputEl.trigger("picker:close"),e.emit("local::close pickerClose",e)}onClosed(){const e=this;e.opened=!1,e.closing=!1,e.inline||a((()=>{e.modal&&e.modal.el&&e.modal.destroy&&(e.params.routableModals||e.modal.destroy()),delete e.modal})),e.$el&&e.$el.trigger("picker:closed"),e.$inputEl&&e.$inputEl.trigger("picker:closed"),e.emit("local::closed pickerClosed",e)}open(){const e=this,{app:t,opened:s,inline:i,$inputEl:n,$scrollToEl:o,params:r}=e;if(s)return;if(0===e.cols.length&&r.cols.length&&r.cols.forEach((t=>{e.cols.push(t)})),i)return e.$el=l(e.render()),e.$el[0].f7Picker=e,e.$containerEl.append(e.$el),e.onOpen(),void e.onOpened();const a=e.isPopover(),c=a?"popover":"sheet",p={targetEl:n,scrollToEl:o,content:e.render(),backdrop:void 0!==r.backdrop?r.backdrop:a,on:{open(){const t=this;e.modal=t,e.$el=a?t.$el.find(".picker"):t.$el,e.$el[0].f7Picker=e,e.onOpen()},opened(){e.onOpened()},close(){e.onClose()},closed(){e.onClosed()}}};"sheet"===c&&(p.push=r.sheetPush,p.swipeToClose=r.sheetSwipeToClose),r.routableModals&&e.view?e.view.router.navigate({url:e.url,route:{path:e.url,[c]:p}}):(e.modal=t[c].create(p),e.modal.open())}close(){const e=this,{opened:t,inline:l}=e;if(t)return l?(e.onClose(),void e.onClosed()):void(e.params.routableModals&&e.view?e.view.router.back():e.modal.close())}init(){const e=this;if(e.initInput(),e.inline)return e.open(),void e.emit("local::init pickerInit",e);!e.initialized&&e.params.value&&e.setValue(e.params.value),e.$inputEl&&e.attachInputEvents(),e.params.closeByOutsideClick&&e.attachHtmlEvents(),e.emit("local::init pickerInit",e)}destroy(){const e=this;if(e.destroyed)return;const{$el:t}=e;e.emit("local::beforeDestroy pickerBeforeDestroy",e),t&&t.trigger("picker:beforedestroy"),e.close(),e.$inputEl&&e.detachInputEvents(),e.params.closeByOutsideClick&&e.detachHtmlEvents(),t&&t.length&&delete e.$el[0].f7Picker,c(e),e.destroyed=!0}}var u={name:"picker",static:{Picker:d},create(){const e=this;e.picker=o({defaultSelector:".picker",constructor:d,app:e,domProp:"f7Picker"}),e.picker.close=function(e){void 0===e&&(e=".picker");const t=l(e);if(0===t.length)return;const s=t[0].f7Picker;!s||s&&!s.opened||s.close()}},params:{picker:{rotateEffect:!1,freeMode:!1,cols:[],containerEl:null,openIn:"auto",sheetPush:!1,sheetSwipeToClose:void 0,backdrop:void 0,formatValue:null,inputEl:null,inputReadOnly:!0,closeByOutsideClick:!0,scrollToInput:!0,scrollToEl:void 0,toolbar:!0,toolbarCloseText:"Done",cssClass:null,routableModals:!1,view:null,url:"select/",renderToolbar:null,render:null}}};if(t){if(e.prototype.modules&&e.prototype.modules[u.name])return;e.use(u),e.instance&&(e.instance.useModuleParams(u,e.instance.params),e.instance.useModule(u))}return u}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
@@ -92,8 +92,16 @@
92
92
  }
93
93
  }
94
94
  .picker-items {
95
- transition: 300ms;
96
- transition-timing-function: ease-out;
95
+ overflow: auto;
96
+ scrollbar-width: none;
97
+ scroll-snap-type: y mandatory;
98
+ height: 100%;
99
+ box-sizing: border-box;
100
+ padding: var(--f7-picker-scroll-padding, 0px) 0px;
101
+ &::-webkit-scrollbar {
102
+ display: none;
103
+ opacity: 0;
104
+ }
97
105
  }
98
106
  .picker-item {
99
107
  height: var(--f7-picker-item-height);
@@ -106,15 +114,12 @@
106
114
  top: 0;
107
115
  width: 100%;
108
116
  box-sizing: border-box;
109
- transition: 300ms;
110
117
  color: var(--f7-picker-item-text-color);
111
118
  cursor: pointer;
119
+ scroll-snap-align: center;
112
120
  span {
113
121
  padding: 0 10px;
114
122
  }
115
- .picker-column-absolute & {
116
- position: absolute;
117
- }
118
123
  &.picker-item-far {
119
124
  pointer-events: none;
120
125
  }
@@ -122,6 +127,9 @@
122
127
  color: var(--f7-picker-item-selected-text-color);
123
128
  transform: translate3d(0, 0, 0) rotateX(0deg);
124
129
  }
130
+ .picker-column-free-mode & {
131
+ scroll-snap-align: none;
132
+ }
125
133
  }
126
134
  .picker-center-highlight {
127
135
  height: var(--f7-picker-item-height);
@@ -142,7 +150,6 @@
142
150
  .picker-3d {
143
151
  .picker-columns {
144
152
  overflow: hidden;
145
- perspective: 1200px;
146
153
  }
147
154
  .picker-column,
148
155
  .picker-items,
@@ -153,9 +160,20 @@
153
160
  overflow: visible;
154
161
  }
155
162
  .picker-item {
156
- transform-origin: center center -110px;
157
- backface-visibility: hidden;
158
- transition-timing-function: ease-out;
163
+ perspective: 1200px;
164
+ overflow: visible;
165
+
166
+ > span {
167
+ backface-visibility: hidden;
168
+ display: block;
169
+ transform-style: preserve-3d;
170
+ position: relative;
171
+ overflow: hidden;
172
+ text-overflow: ellipsis;
173
+ box-sizing: border-box;
174
+ max-width: 100%;
175
+ transform-origin: center center -100px;
176
+ }
159
177
  }
160
178
  }
161
179
 
@@ -1,12 +1,16 @@
1
- import $ from '../../shared/dom7';
2
- import { extend, deleteProps } from '../../shared/utils';
3
- import Framework7Class from '../../shared/class';
1
+ import $ from '../../shared/dom7.js';
2
+ import { extend, deleteProps } from '../../shared/utils.js';
3
+ import Framework7Class from '../../shared/class.js';
4
4
  /** @jsx $jsx */
5
5
 
6
- import $jsx from '../../shared/$jsx';
6
+ import $jsx from '../../shared/$jsx.js';
7
7
 
8
8
  class PieChart extends Framework7Class {
9
- constructor(app, params = {}) {
9
+ constructor(app, params) {
10
+ if (params === void 0) {
11
+ params = {};
12
+ }
13
+
10
14
  super(params, [app]);
11
15
  const self = this;
12
16
  const defaults = extend({}, app.params.pieChart); // Extend defaults with modules params
@@ -61,11 +65,12 @@ class PieChart extends Framework7Class {
61
65
  return [x, y];
62
66
  }
63
67
 
64
- datasets.forEach(({
65
- value,
66
- label,
67
- color
68
- }) => {
68
+ datasets.forEach(_ref => {
69
+ let {
70
+ value,
71
+ label,
72
+ color
73
+ } = _ref;
69
74
  const percentage = value / this.getSummValue();
70
75
  const [startX, startY] = getCoordinatesForPercentage(cumulativePercentage);
71
76
  cumulativePercentage += percentage;
@@ -175,7 +180,11 @@ class PieChart extends Framework7Class {
175
180
  })));
176
181
  }
177
182
 
178
- update(newParams = {}) {
183
+ update(newParams) {
184
+ if (newParams === void 0) {
185
+ newParams = {};
186
+ }
187
+
179
188
  const self = this;
180
189
  const {
181
190
  params