├── .editorconfig ├── .gitattributes ├── .gitignore ├── .jshintrc ├── .travis.yml ├── README.md ├── app ├── index.js └── templates │ ├── .npmignore │ ├── README.md │ ├── _package.json │ ├── framework7 │ ├── .editorconfig │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── .npmignore │ ├── .travis.yml │ ├── BACKERS.md │ ├── CHANGELOG.md │ ├── CONTRIBUTING.md │ ├── LICENSE │ ├── README.md │ ├── dist │ │ ├── components │ │ │ ├── accordion │ │ │ │ ├── accordion-ios.less │ │ │ │ ├── accordion-md.less │ │ │ │ ├── accordion.js │ │ │ │ └── accordion.less │ │ │ ├── actions │ │ │ │ ├── actions-class.js │ │ │ │ ├── actions-ios.less │ │ │ │ ├── actions-md.less │ │ │ │ ├── actions.js │ │ │ │ └── actions.less │ │ │ ├── autocomplete │ │ │ │ ├── autocomplete-class.js │ │ │ │ ├── autocomplete-ios.less │ │ │ │ ├── autocomplete-md.less │ │ │ │ ├── autocomplete.js │ │ │ │ └── autocomplete.less │ │ │ ├── badge │ │ │ │ ├── badge-ios.less │ │ │ │ ├── badge-md.less │ │ │ │ ├── badge.js │ │ │ │ └── badge.less │ │ │ ├── block │ │ │ │ ├── block-ios.less │ │ │ │ ├── block-md.less │ │ │ │ ├── block.js │ │ │ │ └── block.less │ │ │ ├── button │ │ │ │ ├── button-ios.less │ │ │ │ ├── button-md.less │ │ │ │ ├── button.js │ │ │ │ └── button.less │ │ │ ├── calendar │ │ │ │ ├── calendar-class.js │ │ │ │ ├── calendar-ios.less │ │ │ │ ├── calendar-md.less │ │ │ │ ├── calendar.js │ │ │ │ └── calendar.less │ │ │ ├── card │ │ │ │ ├── card-ios.less │ │ │ │ ├── card-md.less │ │ │ │ ├── card.js │ │ │ │ └── card.less │ │ │ ├── checkbox │ │ │ │ ├── checkbox-ios.less │ │ │ │ ├── checkbox-md.less │ │ │ │ ├── checkbox.js │ │ │ │ └── checkbox.less │ │ │ ├── chip │ │ │ │ ├── chip-ios.less │ │ │ │ ├── chip-md.less │ │ │ │ ├── chip.js │ │ │ │ └── chip.less │ │ │ ├── contacts-list │ │ │ │ ├── contact-list.js │ │ │ │ ├── contacts-list-ios.less │ │ │ │ ├── contacts-list-md.less │ │ │ │ └── contacts-list.less │ │ │ ├── core │ │ │ │ ├── core-class.js │ │ │ │ ├── core-ios.less │ │ │ │ ├── core-md.less │ │ │ │ └── core.less │ │ │ ├── data-table │ │ │ │ ├── data-table-class.js │ │ │ │ ├── data-table-ios.less │ │ │ │ ├── data-table-md.less │ │ │ │ ├── data-table.js │ │ │ │ └── data-table.less │ │ │ ├── dialog │ │ │ │ ├── dialog-class.js │ │ │ │ ├── dialog-ios.less │ │ │ │ ├── dialog-md.less │ │ │ │ ├── dialog.js │ │ │ │ └── dialog.less │ │ │ ├── fab │ │ │ │ ├── fab-ios.less │ │ │ │ ├── fab-md.less │ │ │ │ ├── fab.js │ │ │ │ └── fab.less │ │ │ ├── form │ │ │ │ └── form.js │ │ │ ├── grid │ │ │ │ ├── grid-ios.less │ │ │ │ ├── grid-md.less │ │ │ │ ├── grid.js │ │ │ │ └── grid.less │ │ │ ├── icon │ │ │ │ ├── icon-ios.less │ │ │ │ ├── icon-md.less │ │ │ │ ├── icon.js │ │ │ │ └── icon.less │ │ │ ├── infinite-scroll │ │ │ │ ├── infinite-scroll-ios.less │ │ │ │ ├── infinite-scroll-md.less │ │ │ │ ├── infinite-scroll.js │ │ │ │ └── infinite-scroll.less │ │ │ ├── input │ │ │ │ ├── input-ios.less │ │ │ │ ├── input-md.less │ │ │ │ ├── input.js │ │ │ │ └── input.less │ │ │ ├── lazy │ │ │ │ ├── lazy-ios.less │ │ │ │ ├── lazy-md.less │ │ │ │ ├── lazy.js │ │ │ │ └── lazy.less │ │ │ ├── link │ │ │ │ ├── link-ios.less │ │ │ │ ├── link-md.less │ │ │ │ ├── link.js │ │ │ │ └── link.less │ │ │ ├── list-index │ │ │ │ ├── list-index-class.js │ │ │ │ ├── list-index-ios.less │ │ │ │ ├── list-index-md.less │ │ │ │ ├── list-index.js │ │ │ │ └── list-index.less │ │ │ ├── list │ │ │ │ ├── list-ios.less │ │ │ │ ├── list-md.less │ │ │ │ ├── list.js │ │ │ │ └── list.less │ │ │ ├── login-screen │ │ │ │ ├── login-screen-class.js │ │ │ │ ├── login-screen-ios.less │ │ │ │ ├── login-screen-md.less │ │ │ │ ├── login-screen.js │ │ │ │ └── login-screen.less │ │ │ ├── messagebar │ │ │ │ ├── messagebar-class.js │ │ │ │ ├── messagebar-ios.less │ │ │ │ ├── messagebar-md.less │ │ │ │ ├── messagebar.js │ │ │ │ └── messagebar.less │ │ │ ├── messages │ │ │ │ ├── messages-class.js │ │ │ │ ├── messages-ios.less │ │ │ │ ├── messages-md.less │ │ │ │ ├── messages.js │ │ │ │ └── messages.less │ │ │ ├── modal │ │ │ │ ├── custom-modal-class.js │ │ │ │ ├── modal-class.js │ │ │ │ ├── modal.js │ │ │ │ └── modal.less │ │ │ ├── navbar │ │ │ │ ├── navbar-ios.less │ │ │ │ ├── navbar-md.less │ │ │ │ ├── navbar.js │ │ │ │ └── navbar.less │ │ │ ├── notification │ │ │ │ ├── notification-class.js │ │ │ │ ├── notification-ios.less │ │ │ │ ├── notification-md.less │ │ │ │ ├── notification.js │ │ │ │ └── notification.less │ │ │ ├── page │ │ │ │ ├── page-ios.less │ │ │ │ ├── page-md.less │ │ │ │ ├── page.js │ │ │ │ └── page.less │ │ │ ├── panel │ │ │ │ ├── panel-class.js │ │ │ │ ├── panel-ios.less │ │ │ │ ├── panel-md.less │ │ │ │ ├── panel.js │ │ │ │ ├── panel.less │ │ │ │ └── swipe-panel.js │ │ │ ├── photo-browser │ │ │ │ ├── photo-browser-class.js │ │ │ │ ├── photo-browser-ios.less │ │ │ │ ├── photo-browser-md.less │ │ │ │ ├── photo-browser.js │ │ │ │ └── photo-browser.less │ │ │ ├── picker │ │ │ │ ├── picker-class.js │ │ │ │ ├── picker-column.js │ │ │ │ ├── picker-ios.less │ │ │ │ ├── picker-md.less │ │ │ │ ├── picker.js │ │ │ │ └── picker.less │ │ │ ├── popover │ │ │ │ ├── popover-class.js │ │ │ │ ├── popover-ios.less │ │ │ │ ├── popover-md.less │ │ │ │ ├── popover.js │ │ │ │ └── popover.less │ │ │ ├── popup │ │ │ │ ├── popup-class.js │ │ │ │ ├── popup-ios.less │ │ │ │ ├── popup-md.less │ │ │ │ ├── popup.js │ │ │ │ └── popup.less │ │ │ ├── preloader │ │ │ │ ├── preloader-ios.less │ │ │ │ ├── preloader-md.less │ │ │ │ ├── preloader.js │ │ │ │ └── preloader.less │ │ │ ├── progressbar │ │ │ │ ├── progressbar-ios.less │ │ │ │ ├── progressbar-md.less │ │ │ │ ├── progressbar.js │ │ │ │ └── progressbar.less │ │ │ ├── pull-to-refresh │ │ │ │ ├── pull-to-refresh-class.js │ │ │ │ ├── pull-to-refresh-ios.less │ │ │ │ ├── pull-to-refresh-md.less │ │ │ │ ├── pull-to-refresh.js │ │ │ │ └── pull-to-refresh.less │ │ │ ├── radio │ │ │ │ ├── radio-ios.less │ │ │ │ ├── radio-md.less │ │ │ │ ├── radio.js │ │ │ │ └── radio.less │ │ │ ├── range │ │ │ │ ├── range-class.js │ │ │ │ ├── range-ios.less │ │ │ │ ├── range-md.less │ │ │ │ ├── range.js │ │ │ │ └── range.less │ │ │ ├── searchbar │ │ │ │ ├── searchbar-class.js │ │ │ │ ├── searchbar-ios.less │ │ │ │ ├── searchbar-md.less │ │ │ │ ├── searchbar.js │ │ │ │ └── searchbar.less │ │ │ ├── sheet │ │ │ │ ├── sheet-class.js │ │ │ │ ├── sheet-ios.less │ │ │ │ ├── sheet-md.less │ │ │ │ ├── sheet.js │ │ │ │ └── sheet.less │ │ │ ├── smart-select │ │ │ │ ├── smart-select-class.js │ │ │ │ ├── smart-select-ios.less │ │ │ │ ├── smart-select-md.less │ │ │ │ ├── smart-select.js │ │ │ │ └── smart-select.less │ │ │ ├── sortable │ │ │ │ ├── sortable-ios.less │ │ │ │ ├── sortable-md.less │ │ │ │ ├── sortable.js │ │ │ │ └── sortable.less │ │ │ ├── statusbar │ │ │ │ ├── statusbar-ios.less │ │ │ │ ├── statusbar-md.less │ │ │ │ ├── statusbar.js │ │ │ │ └── statusbar.less │ │ │ ├── stepper │ │ │ │ ├── stepper-class.js │ │ │ │ ├── stepper-ios.less │ │ │ │ ├── stepper-md.less │ │ │ │ ├── stepper.js │ │ │ │ └── stepper.less │ │ │ ├── subnavbar │ │ │ │ ├── subnavbar-ios.less │ │ │ │ ├── subnavbar-md.less │ │ │ │ ├── subnavbar.js │ │ │ │ └── subnavbar.less │ │ │ ├── swipeout │ │ │ │ ├── swipeout-ios.less │ │ │ │ ├── swipeout-md.less │ │ │ │ ├── swipeout.js │ │ │ │ └── swipeout.less │ │ │ ├── swiper │ │ │ │ ├── swiper-class │ │ │ │ │ ├── components │ │ │ │ │ │ ├── a11y │ │ │ │ │ │ │ ├── a11y.js │ │ │ │ │ │ │ └── a11y.less │ │ │ │ │ │ ├── autoplay │ │ │ │ │ │ │ └── autoplay.js │ │ │ │ │ │ ├── controller │ │ │ │ │ │ │ ├── controller.js │ │ │ │ │ │ │ └── controller.less │ │ │ │ │ │ ├── core │ │ │ │ │ │ │ ├── breakpoints │ │ │ │ │ │ │ │ ├── getBreakpoint.js │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ └── setBreakpoint.js │ │ │ │ │ │ │ ├── check-overflow │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── classes │ │ │ │ │ │ │ │ ├── addClasses.js │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ └── removeClasses.js │ │ │ │ │ │ │ ├── core-class.js │ │ │ │ │ │ │ ├── core.less │ │ │ │ │ │ │ ├── defaults.js │ │ │ │ │ │ │ ├── events │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ ├── onClick.js │ │ │ │ │ │ │ │ ├── onResize.js │ │ │ │ │ │ │ │ ├── onTouchEnd.js │ │ │ │ │ │ │ │ ├── onTouchMove.js │ │ │ │ │ │ │ │ └── onTouchStart.js │ │ │ │ │ │ │ ├── grab-cursor │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ ├── setGrabCursor.js │ │ │ │ │ │ │ │ └── unsetGrabCursor.js │ │ │ │ │ │ │ ├── images │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ ├── loadImage.js │ │ │ │ │ │ │ │ └── preloadImages.js │ │ │ │ │ │ │ ├── loop │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ ├── loopCreate.js │ │ │ │ │ │ │ │ ├── loopDestroy.js │ │ │ │ │ │ │ │ └── loopFix.js │ │ │ │ │ │ │ ├── manipulation │ │ │ │ │ │ │ │ ├── appendSlide.js │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ ├── prependSlide.js │ │ │ │ │ │ │ │ ├── removeAllSlides.js │ │ │ │ │ │ │ │ └── removeSlide.js │ │ │ │ │ │ │ ├── slide │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ ├── slideNext.js │ │ │ │ │ │ │ │ ├── slidePrev.js │ │ │ │ │ │ │ │ ├── slideReset.js │ │ │ │ │ │ │ │ ├── slideTo.js │ │ │ │ │ │ │ │ ├── slideToClickedSlide.js │ │ │ │ │ │ │ │ ├── slideToClosest.js │ │ │ │ │ │ │ │ └── slideToLoop.js │ │ │ │ │ │ │ ├── transition │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ ├── setTransition.js │ │ │ │ │ │ │ │ ├── transitionEnd.js │ │ │ │ │ │ │ │ └── transitionStart.js │ │ │ │ │ │ │ ├── translate │ │ │ │ │ │ │ │ ├── getTranslate.js │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ ├── maxTranslate.js │ │ │ │ │ │ │ │ ├── minTranslate.js │ │ │ │ │ │ │ │ └── setTranslate.js │ │ │ │ │ │ │ └── update │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ ├── updateActiveIndex.js │ │ │ │ │ │ │ │ ├── updateAutoHeight.js │ │ │ │ │ │ │ │ ├── updateClickedSlide.js │ │ │ │ │ │ │ │ ├── updateProgress.js │ │ │ │ │ │ │ │ ├── updateSize.js │ │ │ │ │ │ │ │ ├── updateSlides.js │ │ │ │ │ │ │ │ ├── updateSlidesClasses.js │ │ │ │ │ │ │ │ ├── updateSlidesOffset.js │ │ │ │ │ │ │ │ └── updateSlidesProgress.js │ │ │ │ │ │ ├── effect-coverflow │ │ │ │ │ │ │ ├── effect-coverflow.js │ │ │ │ │ │ │ └── effect-coverflow.less │ │ │ │ │ │ ├── effect-cube │ │ │ │ │ │ │ ├── effect-cube.js │ │ │ │ │ │ │ └── effect-cube.less │ │ │ │ │ │ ├── effect-fade │ │ │ │ │ │ │ ├── effect-fade.js │ │ │ │ │ │ │ └── effect-fade.less │ │ │ │ │ │ ├── effect-flip │ │ │ │ │ │ │ ├── effect-flip.js │ │ │ │ │ │ │ └── effect-flip.less │ │ │ │ │ │ ├── hash-navigation │ │ │ │ │ │ │ └── hash-navigation.js │ │ │ │ │ │ ├── history │ │ │ │ │ │ │ └── history.js │ │ │ │ │ │ ├── keyboard │ │ │ │ │ │ │ └── keyboard.js │ │ │ │ │ │ ├── lazy │ │ │ │ │ │ │ ├── lazy.js │ │ │ │ │ │ │ └── lazy.less │ │ │ │ │ │ ├── mousewheel │ │ │ │ │ │ │ └── mousewheel.js │ │ │ │ │ │ ├── navigation │ │ │ │ │ │ │ ├── navigation.js │ │ │ │ │ │ │ └── navigation.less │ │ │ │ │ │ ├── pagination │ │ │ │ │ │ │ ├── pagination.js │ │ │ │ │ │ │ └── pagination.less │ │ │ │ │ │ ├── parallax │ │ │ │ │ │ │ └── parallax.js │ │ │ │ │ │ ├── scrollbar │ │ │ │ │ │ │ ├── scrollbar.js │ │ │ │ │ │ │ └── scrollbar.less │ │ │ │ │ │ ├── virtual │ │ │ │ │ │ │ └── virtual.js │ │ │ │ │ │ └── zoom │ │ │ │ │ │ │ ├── zoom.js │ │ │ │ │ │ │ └── zoom.less │ │ │ │ │ ├── less │ │ │ │ │ │ └── mixins.less │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── browser │ │ │ │ │ │ │ └── browser.js │ │ │ │ │ │ ├── defaults │ │ │ │ │ │ │ └── defaults.js │ │ │ │ │ │ ├── device │ │ │ │ │ │ │ └── device.js │ │ │ │ │ │ ├── observer │ │ │ │ │ │ │ └── observer.js │ │ │ │ │ │ ├── resize │ │ │ │ │ │ │ ├── resize.js │ │ │ │ │ │ │ └── resize.less │ │ │ │ │ │ └── support │ │ │ │ │ │ │ └── support.js │ │ │ │ │ ├── swiper.js │ │ │ │ │ ├── swiper.less │ │ │ │ │ └── utils │ │ │ │ │ │ ├── browser.js │ │ │ │ │ │ ├── class.js │ │ │ │ │ │ ├── device.js │ │ │ │ │ │ ├── document.js │ │ │ │ │ │ ├── dom.js │ │ │ │ │ │ ├── support.js │ │ │ │ │ │ ├── utils.js │ │ │ │ │ │ └── window.js │ │ │ │ ├── swiper-ios.less │ │ │ │ ├── swiper-md.less │ │ │ │ ├── swiper.js │ │ │ │ └── swiper.less │ │ │ ├── tabs │ │ │ │ ├── tabs-ios.less │ │ │ │ ├── tabs-md.less │ │ │ │ ├── tabs.js │ │ │ │ └── tabs.less │ │ │ ├── timeline │ │ │ │ ├── timeline-ios.less │ │ │ │ ├── timeline-md.less │ │ │ │ ├── timeline.js │ │ │ │ └── timeline.less │ │ │ ├── toast │ │ │ │ ├── toast-class.js │ │ │ │ ├── toast-ios.less │ │ │ │ ├── toast-md.less │ │ │ │ ├── toast.js │ │ │ │ └── toast.less │ │ │ ├── toggle │ │ │ │ ├── toggle-class.js │ │ │ │ ├── toggle-ios.less │ │ │ │ ├── toggle-md.less │ │ │ │ ├── toggle.js │ │ │ │ └── toggle.less │ │ │ ├── toolbar │ │ │ │ ├── toolbar-ios.less │ │ │ │ ├── toolbar-md.less │ │ │ │ ├── toolbar.js │ │ │ │ └── toolbar.less │ │ │ ├── touch-ripple │ │ │ │ ├── touch-ripple-class.js │ │ │ │ ├── touch-ripple-ios.less │ │ │ │ ├── touch-ripple-md.less │ │ │ │ ├── touch-ripple.js │ │ │ │ └── touch-ripple.less │ │ │ ├── typography │ │ │ │ ├── typography-ios.less │ │ │ │ ├── typography-md.less │ │ │ │ ├── typography.js │ │ │ │ └── typography.less │ │ │ ├── vi │ │ │ │ ├── vi-class.js │ │ │ │ ├── vi-ios.less │ │ │ │ ├── vi-md.less │ │ │ │ ├── vi.js │ │ │ │ └── vi.less │ │ │ ├── view │ │ │ │ ├── view-class.js │ │ │ │ ├── view.js │ │ │ │ └── view.less │ │ │ └── virtual-list │ │ │ │ ├── virtual-list-class.js │ │ │ │ ├── virtual-list-ios.less │ │ │ │ ├── virtual-list-md.less │ │ │ │ ├── virtual-list.js │ │ │ │ └── virtual-list.less │ │ ├── css │ │ │ ├── framework7.css │ │ │ ├── framework7.ios.css │ │ │ ├── framework7.ios.min.css │ │ │ ├── framework7.md.css │ │ │ ├── framework7.md.min.css │ │ │ ├── framework7.min.css │ │ │ ├── framework7.rtl.css │ │ │ ├── framework7.rtl.ios.css │ │ │ ├── framework7.rtl.ios.min.css │ │ │ ├── framework7.rtl.md.css │ │ │ ├── framework7.rtl.md.min.css │ │ │ └── framework7.rtl.min.css │ │ ├── framework7.esm.bundle.js │ │ ├── framework7.esm.js │ │ ├── framework7.less │ │ ├── js │ │ │ ├── framework7.js │ │ │ ├── framework7.min.js │ │ │ └── framework7.min.js.map │ │ ├── less │ │ │ ├── colors-ios.less │ │ │ ├── colors-md.less │ │ │ ├── mixins.less │ │ │ ├── vars-ios.less │ │ │ └── vars-md.less │ │ ├── modules │ │ │ ├── clicks │ │ │ │ └── clicks.js │ │ │ ├── demo-module.js │ │ │ ├── device │ │ │ │ └── device.js │ │ │ ├── history │ │ │ │ └── history.js │ │ │ ├── request │ │ │ │ └── request.js │ │ │ ├── resize │ │ │ │ └── resize.js │ │ │ ├── router │ │ │ │ ├── back.js │ │ │ │ ├── clear-history.js │ │ │ │ ├── clear-previous-history.js │ │ │ │ ├── modal.js │ │ │ │ ├── navigate.js │ │ │ │ ├── redirect.js │ │ │ │ ├── router-class.js │ │ │ │ ├── router.js │ │ │ │ ├── swipe-back.js │ │ │ │ └── tab.js │ │ │ ├── storage │ │ │ │ └── storage.js │ │ │ ├── support │ │ │ │ └── support.js │ │ │ ├── touch │ │ │ │ └── touch.js │ │ │ └── utils │ │ │ │ └── utils.js │ │ └── utils │ │ │ ├── bezier.js │ │ │ ├── class.js │ │ │ ├── component.js │ │ │ ├── constructor-methods.js │ │ │ ├── device.js │ │ │ ├── history.js │ │ │ ├── modal-methods.js │ │ │ ├── request.js │ │ │ ├── support.js │ │ │ └── utils.js │ ├── gulpfile.js │ ├── kitchen-sink │ │ ├── css │ │ │ └── app.css │ │ ├── fonts │ │ │ ├── Framework7Icons-Regular.eot │ │ │ ├── Framework7Icons-Regular.ttf │ │ │ ├── Framework7Icons-Regular.woff │ │ │ ├── Framework7Icons-Regular.woff2 │ │ │ ├── MaterialIcons-Regular.eot │ │ │ ├── MaterialIcons-Regular.svg │ │ │ ├── MaterialIcons-Regular.ttf │ │ │ ├── MaterialIcons-Regular.woff │ │ │ └── MaterialIcons-Regular.woff2 │ │ ├── img │ │ │ ├── beach.jpg │ │ │ ├── f7-icon-square.png │ │ │ ├── f7-icon.png │ │ │ ├── lock.jpg │ │ │ ├── monkey.jpg │ │ │ ├── mountains.jpg │ │ │ └── vi-icon.png │ │ ├── index.html │ │ ├── js │ │ │ ├── app.js │ │ │ ├── autocomplete-languages.json │ │ │ └── routes.js │ │ └── pages │ │ │ ├── 404.html │ │ │ ├── about.html │ │ │ ├── accordion.html │ │ │ ├── action-sheet.html │ │ │ ├── autocomplete.html │ │ │ ├── badge.html │ │ │ ├── buttons.html │ │ │ ├── calendar-page.html │ │ │ ├── calendar.html │ │ │ ├── cards.html │ │ │ ├── checkbox.html │ │ │ ├── chips.html │ │ │ ├── color-themes.html │ │ │ ├── contacts-list.html │ │ │ ├── content-block.html │ │ │ ├── data-table.html │ │ │ ├── dialog.html │ │ │ ├── fab-morph.html │ │ │ ├── fab.html │ │ │ ├── form-storage.html │ │ │ ├── grid.html │ │ │ ├── icons.html │ │ │ ├── infinite-scroll.html │ │ │ ├── inputs.html │ │ │ ├── lazy-load.html │ │ │ ├── list-index.html │ │ │ ├── list.html │ │ │ ├── login-screen-page.html │ │ │ ├── login-screen.html │ │ │ ├── messages.html │ │ │ ├── navbar-hide-scroll.html │ │ │ ├── navbar.html │ │ │ ├── notifications.html │ │ │ ├── page-loader-component.html │ │ │ ├── page-loader-template7.html │ │ │ ├── panel.html │ │ │ ├── photo-browser.html │ │ │ ├── picker.html │ │ │ ├── popover.html │ │ │ ├── popup.html │ │ │ ├── preloader.html │ │ │ ├── progressbar.html │ │ │ ├── pull-to-refresh.html │ │ │ ├── radio.html │ │ │ ├── range.html │ │ │ ├── searchbar-expandable.html │ │ │ ├── searchbar.html │ │ │ ├── sheet-modal.html │ │ │ ├── smart-select.html │ │ │ ├── sortable.html │ │ │ ├── statusbar.html │ │ │ ├── stepper.html │ │ │ ├── subnavbar-title.html │ │ │ ├── subnavbar.html │ │ │ ├── swipeout.html │ │ │ ├── swiper-3d-coverflow.html │ │ │ ├── swiper-3d-cube.html │ │ │ ├── swiper-3d-flip.html │ │ │ ├── swiper-custom-controls.html │ │ │ ├── swiper-fade.html │ │ │ ├── swiper-gallery.html │ │ │ ├── swiper-horizontal.html │ │ │ ├── swiper-lazy.html │ │ │ ├── swiper-loop.html │ │ │ ├── swiper-multiple.html │ │ │ ├── swiper-nested.html │ │ │ ├── swiper-pagination-fraction.html │ │ │ ├── swiper-pagination-progress.html │ │ │ ├── swiper-parallax.html │ │ │ ├── swiper-scrollbar.html │ │ │ ├── swiper-space-between.html │ │ │ ├── swiper-vertical.html │ │ │ ├── swiper-zoom.html │ │ │ ├── swiper.html │ │ │ ├── tabbar-labels.html │ │ │ ├── tabbar-scrollable.html │ │ │ ├── tabbar.html │ │ │ ├── tabs-animated.html │ │ │ ├── tabs-routable.html │ │ │ ├── tabs-static.html │ │ │ ├── tabs-swipeable.html │ │ │ ├── tabs.html │ │ │ ├── timeline-horizontal-calendar.html │ │ │ ├── timeline-horizontal.html │ │ │ ├── timeline-vertical.html │ │ │ ├── timeline.html │ │ │ ├── toast.html │ │ │ ├── toggle.html │ │ │ ├── toolbar-hide-scroll.html │ │ │ ├── toolbar-tabbar.html │ │ │ ├── vi.html │ │ │ └── virtual-list.html │ ├── package-lock.json │ ├── package.json │ ├── scripts │ │ ├── banner.js │ │ ├── build-components.js │ │ ├── build-config.js │ │ ├── build-js.js │ │ ├── build-ks.js │ │ ├── build-less.js │ │ ├── get-config.js │ │ ├── get-output.js │ │ └── gulpfile.js │ └── src │ │ ├── components │ │ ├── accordion │ │ │ ├── accordion-ios.less │ │ │ ├── accordion-md.less │ │ │ ├── accordion.js │ │ │ └── accordion.less │ │ ├── actions │ │ │ ├── actions-class.js │ │ │ ├── actions-ios.less │ │ │ ├── actions-md.less │ │ │ ├── actions.js │ │ │ └── actions.less │ │ ├── autocomplete │ │ │ ├── autocomplete-class.js │ │ │ ├── autocomplete-ios.less │ │ │ ├── autocomplete-md.less │ │ │ ├── autocomplete.js │ │ │ └── autocomplete.less │ │ ├── badge │ │ │ ├── badge-ios.less │ │ │ ├── badge-md.less │ │ │ ├── badge.js │ │ │ └── badge.less │ │ ├── block │ │ │ ├── block-ios.less │ │ │ ├── block-md.less │ │ │ ├── block.js │ │ │ └── block.less │ │ ├── button │ │ │ ├── button-ios.less │ │ │ ├── button-md.less │ │ │ ├── button.js │ │ │ └── button.less │ │ ├── calendar │ │ │ ├── calendar-class.js │ │ │ ├── calendar-ios.less │ │ │ ├── calendar-md.less │ │ │ ├── calendar.js │ │ │ └── calendar.less │ │ ├── card │ │ │ ├── card-ios.less │ │ │ ├── card-md.less │ │ │ ├── card.js │ │ │ └── card.less │ │ ├── checkbox │ │ │ ├── checkbox-ios.less │ │ │ ├── checkbox-md.less │ │ │ ├── checkbox.js │ │ │ └── checkbox.less │ │ ├── chip │ │ │ ├── chip-ios.less │ │ │ ├── chip-md.less │ │ │ ├── chip.js │ │ │ └── chip.less │ │ ├── contacts-list │ │ │ ├── contact-list.js │ │ │ ├── contacts-list-ios.less │ │ │ ├── contacts-list-md.less │ │ │ └── contacts-list.less │ │ ├── core │ │ │ ├── core-class.js │ │ │ ├── core-ios.less │ │ │ ├── core-md.less │ │ │ └── core.less │ │ ├── data-table │ │ │ ├── data-table-class.js │ │ │ ├── data-table-ios.less │ │ │ ├── data-table-md.less │ │ │ ├── data-table.js │ │ │ └── data-table.less │ │ ├── dialog │ │ │ ├── dialog-class.js │ │ │ ├── dialog-ios.less │ │ │ ├── dialog-md.less │ │ │ ├── dialog.js │ │ │ └── dialog.less │ │ ├── fab │ │ │ ├── fab-ios.less │ │ │ ├── fab-md.less │ │ │ ├── fab.js │ │ │ └── fab.less │ │ ├── form │ │ │ └── form.js │ │ ├── grid │ │ │ ├── grid-ios.less │ │ │ ├── grid-md.less │ │ │ ├── grid.js │ │ │ └── grid.less │ │ ├── icon │ │ │ ├── icon-ios.less │ │ │ ├── icon-md.less │ │ │ ├── icon.js │ │ │ └── icon.less │ │ ├── infinite-scroll │ │ │ ├── infinite-scroll-ios.less │ │ │ ├── infinite-scroll-md.less │ │ │ ├── infinite-scroll.js │ │ │ └── infinite-scroll.less │ │ ├── input │ │ │ ├── input-ios.less │ │ │ ├── input-md.less │ │ │ ├── input.js │ │ │ └── input.less │ │ ├── lazy │ │ │ ├── lazy-ios.less │ │ │ ├── lazy-md.less │ │ │ ├── lazy.js │ │ │ └── lazy.less │ │ ├── link │ │ │ ├── link-ios.less │ │ │ ├── link-md.less │ │ │ ├── link.js │ │ │ └── link.less │ │ ├── list-index │ │ │ ├── list-index-class.js │ │ │ ├── list-index-ios.less │ │ │ ├── list-index-md.less │ │ │ ├── list-index.js │ │ │ └── list-index.less │ │ ├── list │ │ │ ├── list-ios.less │ │ │ ├── list-md.less │ │ │ ├── list.js │ │ │ └── list.less │ │ ├── login-screen │ │ │ ├── login-screen-class.js │ │ │ ├── login-screen-ios.less │ │ │ ├── login-screen-md.less │ │ │ ├── login-screen.js │ │ │ └── login-screen.less │ │ ├── messagebar │ │ │ ├── messagebar-class.js │ │ │ ├── messagebar-ios.less │ │ │ ├── messagebar-md.less │ │ │ ├── messagebar.js │ │ │ └── messagebar.less │ │ ├── messages │ │ │ ├── messages-class.js │ │ │ ├── messages-ios.less │ │ │ ├── messages-md.less │ │ │ ├── messages.js │ │ │ └── messages.less │ │ ├── modal │ │ │ ├── custom-modal-class.js │ │ │ ├── modal-class.js │ │ │ ├── modal.js │ │ │ └── modal.less │ │ ├── navbar │ │ │ ├── navbar-ios.less │ │ │ ├── navbar-md.less │ │ │ ├── navbar.js │ │ │ └── navbar.less │ │ ├── notification │ │ │ ├── notification-class.js │ │ │ ├── notification-ios.less │ │ │ ├── notification-md.less │ │ │ ├── notification.js │ │ │ └── notification.less │ │ ├── page │ │ │ ├── page-ios.less │ │ │ ├── page-md.less │ │ │ ├── page.js │ │ │ └── page.less │ │ ├── panel │ │ │ ├── panel-class.js │ │ │ ├── panel-ios.less │ │ │ ├── panel-md.less │ │ │ ├── panel.js │ │ │ ├── panel.less │ │ │ └── swipe-panel.js │ │ ├── photo-browser │ │ │ ├── photo-browser-class.js │ │ │ ├── photo-browser-ios.less │ │ │ ├── photo-browser-md.less │ │ │ ├── photo-browser.js │ │ │ └── photo-browser.less │ │ ├── picker │ │ │ ├── picker-class.js │ │ │ ├── picker-column.js │ │ │ ├── picker-ios.less │ │ │ ├── picker-md.less │ │ │ ├── picker.js │ │ │ └── picker.less │ │ ├── popover │ │ │ ├── popover-class.js │ │ │ ├── popover-ios.less │ │ │ ├── popover-md.less │ │ │ ├── popover.js │ │ │ └── popover.less │ │ ├── popup │ │ │ ├── popup-class.js │ │ │ ├── popup-ios.less │ │ │ ├── popup-md.less │ │ │ ├── popup.js │ │ │ └── popup.less │ │ ├── preloader │ │ │ ├── preloader-ios.less │ │ │ ├── preloader-md.less │ │ │ ├── preloader.js │ │ │ └── preloader.less │ │ ├── progressbar │ │ │ ├── progressbar-ios.less │ │ │ ├── progressbar-md.less │ │ │ ├── progressbar.js │ │ │ └── progressbar.less │ │ ├── pull-to-refresh │ │ │ ├── pull-to-refresh-class.js │ │ │ ├── pull-to-refresh-ios.less │ │ │ ├── pull-to-refresh-md.less │ │ │ ├── pull-to-refresh.js │ │ │ └── pull-to-refresh.less │ │ ├── radio │ │ │ ├── radio-ios.less │ │ │ ├── radio-md.less │ │ │ ├── radio.js │ │ │ └── radio.less │ │ ├── range │ │ │ ├── range-class.js │ │ │ ├── range-ios.less │ │ │ ├── range-md.less │ │ │ ├── range.js │ │ │ └── range.less │ │ ├── searchbar │ │ │ ├── searchbar-class.js │ │ │ ├── searchbar-ios.less │ │ │ ├── searchbar-md.less │ │ │ ├── searchbar.js │ │ │ └── searchbar.less │ │ ├── sheet │ │ │ ├── sheet-class.js │ │ │ ├── sheet-ios.less │ │ │ ├── sheet-md.less │ │ │ ├── sheet.js │ │ │ └── sheet.less │ │ ├── smart-select │ │ │ ├── smart-select-class.js │ │ │ ├── smart-select-ios.less │ │ │ ├── smart-select-md.less │ │ │ ├── smart-select.js │ │ │ └── smart-select.less │ │ ├── sortable │ │ │ ├── sortable-ios.less │ │ │ ├── sortable-md.less │ │ │ ├── sortable.js │ │ │ └── sortable.less │ │ ├── statusbar │ │ │ ├── statusbar-ios.less │ │ │ ├── statusbar-md.less │ │ │ ├── statusbar.js │ │ │ └── statusbar.less │ │ ├── stepper │ │ │ ├── stepper-class.js │ │ │ ├── stepper-ios.less │ │ │ ├── stepper-md.less │ │ │ ├── stepper.js │ │ │ └── stepper.less │ │ ├── subnavbar │ │ │ ├── subnavbar-ios.less │ │ │ ├── subnavbar-md.less │ │ │ ├── subnavbar.js │ │ │ └── subnavbar.less │ │ ├── swipeout │ │ │ ├── swipeout-ios.less │ │ │ ├── swipeout-md.less │ │ │ ├── swipeout.js │ │ │ └── swipeout.less │ │ ├── swiper │ │ │ ├── swiper-class │ │ │ │ ├── components │ │ │ │ │ ├── a11y │ │ │ │ │ │ ├── a11y.js │ │ │ │ │ │ └── a11y.less │ │ │ │ │ ├── autoplay │ │ │ │ │ │ └── autoplay.js │ │ │ │ │ ├── controller │ │ │ │ │ │ ├── controller.js │ │ │ │ │ │ └── controller.less │ │ │ │ │ ├── core │ │ │ │ │ │ ├── breakpoints │ │ │ │ │ │ │ ├── getBreakpoint.js │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ └── setBreakpoint.js │ │ │ │ │ │ ├── check-overflow │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── classes │ │ │ │ │ │ │ ├── addClasses.js │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ └── removeClasses.js │ │ │ │ │ │ ├── core-class.js │ │ │ │ │ │ ├── core.less │ │ │ │ │ │ ├── defaults.js │ │ │ │ │ │ ├── events │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── onClick.js │ │ │ │ │ │ │ ├── onResize.js │ │ │ │ │ │ │ ├── onTouchEnd.js │ │ │ │ │ │ │ ├── onTouchMove.js │ │ │ │ │ │ │ └── onTouchStart.js │ │ │ │ │ │ ├── grab-cursor │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── setGrabCursor.js │ │ │ │ │ │ │ └── unsetGrabCursor.js │ │ │ │ │ │ ├── images │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── loadImage.js │ │ │ │ │ │ │ └── preloadImages.js │ │ │ │ │ │ ├── loop │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── loopCreate.js │ │ │ │ │ │ │ ├── loopDestroy.js │ │ │ │ │ │ │ └── loopFix.js │ │ │ │ │ │ ├── manipulation │ │ │ │ │ │ │ ├── appendSlide.js │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── prependSlide.js │ │ │ │ │ │ │ ├── removeAllSlides.js │ │ │ │ │ │ │ └── removeSlide.js │ │ │ │ │ │ ├── slide │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── slideNext.js │ │ │ │ │ │ │ ├── slidePrev.js │ │ │ │ │ │ │ ├── slideReset.js │ │ │ │ │ │ │ ├── slideTo.js │ │ │ │ │ │ │ ├── slideToClickedSlide.js │ │ │ │ │ │ │ ├── slideToClosest.js │ │ │ │ │ │ │ └── slideToLoop.js │ │ │ │ │ │ ├── transition │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── setTransition.js │ │ │ │ │ │ │ ├── transitionEnd.js │ │ │ │ │ │ │ └── transitionStart.js │ │ │ │ │ │ ├── translate │ │ │ │ │ │ │ ├── getTranslate.js │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── maxTranslate.js │ │ │ │ │ │ │ ├── minTranslate.js │ │ │ │ │ │ │ └── setTranslate.js │ │ │ │ │ │ └── update │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── updateActiveIndex.js │ │ │ │ │ │ │ ├── updateAutoHeight.js │ │ │ │ │ │ │ ├── updateClickedSlide.js │ │ │ │ │ │ │ ├── updateProgress.js │ │ │ │ │ │ │ ├── updateSize.js │ │ │ │ │ │ │ ├── updateSlides.js │ │ │ │ │ │ │ ├── updateSlidesClasses.js │ │ │ │ │ │ │ ├── updateSlidesOffset.js │ │ │ │ │ │ │ └── updateSlidesProgress.js │ │ │ │ │ ├── effect-coverflow │ │ │ │ │ │ ├── effect-coverflow.js │ │ │ │ │ │ └── effect-coverflow.less │ │ │ │ │ ├── effect-cube │ │ │ │ │ │ ├── effect-cube.js │ │ │ │ │ │ └── effect-cube.less │ │ │ │ │ ├── effect-fade │ │ │ │ │ │ ├── effect-fade.js │ │ │ │ │ │ └── effect-fade.less │ │ │ │ │ ├── effect-flip │ │ │ │ │ │ ├── effect-flip.js │ │ │ │ │ │ └── effect-flip.less │ │ │ │ │ ├── hash-navigation │ │ │ │ │ │ └── hash-navigation.js │ │ │ │ │ ├── history │ │ │ │ │ │ └── history.js │ │ │ │ │ ├── keyboard │ │ │ │ │ │ └── keyboard.js │ │ │ │ │ ├── lazy │ │ │ │ │ │ ├── lazy.js │ │ │ │ │ │ └── lazy.less │ │ │ │ │ ├── mousewheel │ │ │ │ │ │ └── mousewheel.js │ │ │ │ │ ├── navigation │ │ │ │ │ │ ├── navigation.js │ │ │ │ │ │ └── navigation.less │ │ │ │ │ ├── pagination │ │ │ │ │ │ ├── pagination.js │ │ │ │ │ │ └── pagination.less │ │ │ │ │ ├── parallax │ │ │ │ │ │ └── parallax.js │ │ │ │ │ ├── scrollbar │ │ │ │ │ │ ├── scrollbar.js │ │ │ │ │ │ └── scrollbar.less │ │ │ │ │ ├── virtual │ │ │ │ │ │ └── virtual.js │ │ │ │ │ └── zoom │ │ │ │ │ │ ├── zoom.js │ │ │ │ │ │ └── zoom.less │ │ │ │ ├── less │ │ │ │ │ └── mixins.less │ │ │ │ ├── modules │ │ │ │ │ ├── browser │ │ │ │ │ │ └── browser.js │ │ │ │ │ ├── device │ │ │ │ │ │ └── device.js │ │ │ │ │ ├── observer │ │ │ │ │ │ └── observer.js │ │ │ │ │ ├── resize │ │ │ │ │ │ ├── resize.js │ │ │ │ │ │ └── resize.less │ │ │ │ │ └── support │ │ │ │ │ │ └── support.js │ │ │ │ ├── swiper.js │ │ │ │ ├── swiper.less │ │ │ │ └── utils │ │ │ │ │ ├── browser.js │ │ │ │ │ ├── class.js │ │ │ │ │ ├── device.js │ │ │ │ │ ├── dom.js │ │ │ │ │ ├── support.js │ │ │ │ │ └── utils.js │ │ │ ├── swiper-ios.less │ │ │ ├── swiper-md.less │ │ │ ├── swiper.js │ │ │ └── swiper.less │ │ ├── tabs │ │ │ ├── tabs-ios.less │ │ │ ├── tabs-md.less │ │ │ ├── tabs.js │ │ │ └── tabs.less │ │ ├── timeline │ │ │ ├── timeline-ios.less │ │ │ ├── timeline-md.less │ │ │ ├── timeline.js │ │ │ └── timeline.less │ │ ├── toast │ │ │ ├── toast-class.js │ │ │ ├── toast-ios.less │ │ │ ├── toast-md.less │ │ │ ├── toast.js │ │ │ └── toast.less │ │ ├── toggle │ │ │ ├── toggle-class.js │ │ │ ├── toggle-ios.less │ │ │ ├── toggle-md.less │ │ │ ├── toggle.js │ │ │ └── toggle.less │ │ ├── toolbar │ │ │ ├── toolbar-ios.less │ │ │ ├── toolbar-md.less │ │ │ ├── toolbar.js │ │ │ └── toolbar.less │ │ ├── touch-ripple │ │ │ ├── touch-ripple-class.js │ │ │ ├── touch-ripple-ios.less │ │ │ ├── touch-ripple-md.less │ │ │ ├── touch-ripple.js │ │ │ └── touch-ripple.less │ │ ├── typography │ │ │ ├── typography-ios.less │ │ │ ├── typography-md.less │ │ │ ├── typography.js │ │ │ └── typography.less │ │ ├── vi │ │ │ ├── vi-class.js │ │ │ ├── vi-ios.less │ │ │ ├── vi-md.less │ │ │ ├── vi.js │ │ │ └── vi.less │ │ ├── view │ │ │ ├── view-class.js │ │ │ ├── view.js │ │ │ └── view.less │ │ └── virtual-list │ │ │ ├── virtual-list-class.js │ │ │ ├── virtual-list-ios.less │ │ │ ├── virtual-list-md.less │ │ │ ├── virtual-list.js │ │ │ └── virtual-list.less │ │ ├── framework7.js │ │ ├── framework7.less │ │ ├── less │ │ ├── colors-ios.less │ │ ├── colors-md.less │ │ ├── mixins.less │ │ ├── vars-ios.less │ │ └── vars-md.less │ │ ├── modules │ │ ├── clicks │ │ │ └── clicks.js │ │ ├── demo-module.js │ │ ├── device │ │ │ └── device.js │ │ ├── history │ │ │ └── history.js │ │ ├── request │ │ │ └── request.js │ │ ├── resize │ │ │ └── resize.js │ │ ├── router │ │ │ ├── back.js │ │ │ ├── clear-history.js │ │ │ ├── clear-previous-history.js │ │ │ ├── modal.js │ │ │ ├── navigate.js │ │ │ ├── redirect.js │ │ │ ├── router-class.js │ │ │ ├── router.js │ │ │ ├── swipe-back.js │ │ │ └── tab.js │ │ ├── storage │ │ │ └── storage.js │ │ ├── support │ │ │ └── support.js │ │ ├── touch │ │ │ └── touch.js │ │ └── utils │ │ │ └── utils.js │ │ └── utils │ │ ├── bezier.js │ │ ├── class.js │ │ ├── component.js │ │ ├── constructor-methods.js │ │ ├── device.js │ │ ├── history.js │ │ ├── modal-methods.js │ │ ├── request.js │ │ ├── support.js │ │ └── utils.js │ ├── hooks │ └── README.md │ ├── plugins │ ├── cordova-plugin-whitelist │ │ ├── CONTRIBUTING.md │ │ ├── LICENSE │ │ ├── NOTICE │ │ ├── README.md │ │ ├── RELEASENOTES.md │ │ ├── doc │ │ │ ├── de │ │ │ │ └── README.md │ │ │ ├── es │ │ │ │ └── README.md │ │ │ ├── fr │ │ │ │ └── README.md │ │ │ ├── it │ │ │ │ └── README.md │ │ │ ├── ja │ │ │ │ └── README.md │ │ │ ├── ko │ │ │ │ └── README.md │ │ │ ├── pl │ │ │ │ └── README.md │ │ │ └── zh │ │ │ │ └── README.md │ │ ├── package.json │ │ ├── plugin.xml │ │ └── src │ │ │ └── android │ │ │ └── WhitelistPlugin.java │ └── fetch.json │ ├── res │ ├── README.md │ ├── icon │ │ ├── android │ │ │ ├── icon-36-ldpi.png │ │ │ ├── icon-48-mdpi.png │ │ │ ├── icon-72-hdpi.png │ │ │ └── icon-96-xhdpi.png │ │ ├── bada-wac │ │ │ ├── icon-48-type5.png │ │ │ ├── icon-50-type3.png │ │ │ └── icon-80-type4.png │ │ ├── bada │ │ │ └── icon-128.png │ │ ├── blackberry │ │ │ └── icon-80.png │ │ ├── blackberry10 │ │ │ └── icon-80.png │ │ ├── ios │ │ │ ├── icon-57-2x.png │ │ │ ├── icon-57.png │ │ │ ├── icon-72-2x.png │ │ │ └── icon-72.png │ │ ├── tizen │ │ │ └── icon-128.png │ │ ├── webos │ │ │ └── icon-64.png │ │ └── windows-phone │ │ │ ├── icon-173-tile.png │ │ │ ├── icon-48.png │ │ │ └── icon-62-tile.png │ └── screen │ │ ├── android │ │ ├── screen-hdpi-landscape.png │ │ ├── screen-hdpi-portrait.png │ │ ├── screen-ldpi-landscape.png │ │ ├── screen-ldpi-portrait.png │ │ ├── screen-mdpi-landscape.png │ │ ├── screen-mdpi-portrait.png │ │ ├── screen-xhdpi-landscape.png │ │ └── screen-xhdpi-portrait.png │ │ ├── bada-wac │ │ ├── screen-type3.png │ │ ├── screen-type4.png │ │ └── screen-type5.png │ │ ├── bada │ │ └── screen-portrait.png │ │ ├── blackberry │ │ └── screen-225.png │ │ ├── blackberry10 │ │ ├── splash-1280x768.png │ │ ├── splash-720x720.png │ │ └── splash-768x1280.png │ │ ├── ios │ │ ├── screen-ipad-landscape-2x.png │ │ ├── screen-ipad-landscape.png │ │ ├── screen-ipad-portrait-2x.png │ │ ├── screen-ipad-portrait.png │ │ ├── screen-iphone-landscape-2x.png │ │ ├── screen-iphone-landscape.png │ │ ├── screen-iphone-portrait-2x.png │ │ ├── screen-iphone-portrait-568h-2x.png │ │ └── screen-iphone-portrait.png │ │ ├── tizen │ │ └── README.md │ │ ├── webos │ │ └── screen-64.png │ │ └── windows-phone │ │ └── screen-portrait.jpg │ └── www │ ├── config.xml │ ├── css │ └── app.css │ ├── fonts │ ├── Framework7Icons-Regular.eot │ ├── Framework7Icons-Regular.ttf │ ├── Framework7Icons-Regular.woff │ ├── Framework7Icons-Regular.woff2 │ ├── MaterialIcons-Regular.eot │ ├── MaterialIcons-Regular.svg │ ├── MaterialIcons-Regular.ttf │ ├── MaterialIcons-Regular.woff │ └── MaterialIcons-Regular.woff2 │ ├── img │ ├── beach.jpg │ ├── f7-icon-square.png │ ├── f7-icon.png │ ├── lock.jpg │ ├── monkey.jpg │ ├── mountains.jpg │ └── vi-icon.png │ ├── index.html │ ├── js │ ├── app.js │ ├── autocomplete-languages.json │ └── routes.js │ ├── lib │ ├── components │ │ ├── accordion │ │ │ ├── accordion-ios.less │ │ │ ├── accordion-md.less │ │ │ ├── accordion.js │ │ │ └── accordion.less │ │ ├── actions │ │ │ ├── actions-class.js │ │ │ ├── actions-ios.less │ │ │ ├── actions-md.less │ │ │ ├── actions.js │ │ │ └── actions.less │ │ ├── autocomplete │ │ │ ├── autocomplete-class.js │ │ │ ├── autocomplete-ios.less │ │ │ ├── autocomplete-md.less │ │ │ ├── autocomplete.js │ │ │ └── autocomplete.less │ │ ├── badge │ │ │ ├── badge-ios.less │ │ │ ├── badge-md.less │ │ │ ├── badge.js │ │ │ └── badge.less │ │ ├── block │ │ │ ├── block-ios.less │ │ │ ├── block-md.less │ │ │ ├── block.js │ │ │ └── block.less │ │ ├── button │ │ │ ├── button-ios.less │ │ │ ├── button-md.less │ │ │ ├── button.js │ │ │ └── button.less │ │ ├── calendar │ │ │ ├── calendar-class.js │ │ │ ├── calendar-ios.less │ │ │ ├── calendar-md.less │ │ │ ├── calendar.js │ │ │ └── calendar.less │ │ ├── card │ │ │ ├── card-ios.less │ │ │ ├── card-md.less │ │ │ ├── card.js │ │ │ └── card.less │ │ ├── checkbox │ │ │ ├── checkbox-ios.less │ │ │ ├── checkbox-md.less │ │ │ ├── checkbox.js │ │ │ └── checkbox.less │ │ ├── chip │ │ │ ├── chip-ios.less │ │ │ ├── chip-md.less │ │ │ ├── chip.js │ │ │ └── chip.less │ │ ├── contacts-list │ │ │ ├── contact-list.js │ │ │ ├── contacts-list-ios.less │ │ │ ├── contacts-list-md.less │ │ │ └── contacts-list.less │ │ ├── core │ │ │ ├── core-class.js │ │ │ ├── core-ios.less │ │ │ ├── core-md.less │ │ │ └── core.less │ │ ├── data-table │ │ │ ├── data-table-class.js │ │ │ ├── data-table-ios.less │ │ │ ├── data-table-md.less │ │ │ ├── data-table.js │ │ │ └── data-table.less │ │ ├── dialog │ │ │ ├── dialog-class.js │ │ │ ├── dialog-ios.less │ │ │ ├── dialog-md.less │ │ │ ├── dialog.js │ │ │ └── dialog.less │ │ ├── fab │ │ │ ├── fab-ios.less │ │ │ ├── fab-md.less │ │ │ ├── fab.js │ │ │ └── fab.less │ │ ├── form │ │ │ └── form.js │ │ ├── grid │ │ │ ├── grid-ios.less │ │ │ ├── grid-md.less │ │ │ ├── grid.js │ │ │ └── grid.less │ │ ├── icon │ │ │ ├── icon-ios.less │ │ │ ├── icon-md.less │ │ │ ├── icon.js │ │ │ └── icon.less │ │ ├── infinite-scroll │ │ │ ├── infinite-scroll-ios.less │ │ │ ├── infinite-scroll-md.less │ │ │ ├── infinite-scroll.js │ │ │ └── infinite-scroll.less │ │ ├── input │ │ │ ├── input-ios.less │ │ │ ├── input-md.less │ │ │ ├── input.js │ │ │ └── input.less │ │ ├── lazy │ │ │ ├── lazy-ios.less │ │ │ ├── lazy-md.less │ │ │ ├── lazy.js │ │ │ └── lazy.less │ │ ├── link │ │ │ ├── link-ios.less │ │ │ ├── link-md.less │ │ │ ├── link.js │ │ │ └── link.less │ │ ├── list-index │ │ │ ├── list-index-class.js │ │ │ ├── list-index-ios.less │ │ │ ├── list-index-md.less │ │ │ ├── list-index.js │ │ │ └── list-index.less │ │ ├── list │ │ │ ├── list-ios.less │ │ │ ├── list-md.less │ │ │ ├── list.js │ │ │ └── list.less │ │ ├── login-screen │ │ │ ├── login-screen-class.js │ │ │ ├── login-screen-ios.less │ │ │ ├── login-screen-md.less │ │ │ ├── login-screen.js │ │ │ └── login-screen.less │ │ ├── messagebar │ │ │ ├── messagebar-class.js │ │ │ ├── messagebar-ios.less │ │ │ ├── messagebar-md.less │ │ │ ├── messagebar.js │ │ │ └── messagebar.less │ │ ├── messages │ │ │ ├── messages-class.js │ │ │ ├── messages-ios.less │ │ │ ├── messages-md.less │ │ │ ├── messages.js │ │ │ └── messages.less │ │ ├── modal │ │ │ ├── custom-modal-class.js │ │ │ ├── modal-class.js │ │ │ ├── modal.js │ │ │ └── modal.less │ │ ├── navbar │ │ │ ├── navbar-ios.less │ │ │ ├── navbar-md.less │ │ │ ├── navbar.js │ │ │ └── navbar.less │ │ ├── notification │ │ │ ├── notification-class.js │ │ │ ├── notification-ios.less │ │ │ ├── notification-md.less │ │ │ ├── notification.js │ │ │ └── notification.less │ │ ├── page │ │ │ ├── page-ios.less │ │ │ ├── page-md.less │ │ │ ├── page.js │ │ │ └── page.less │ │ ├── panel │ │ │ ├── panel-class.js │ │ │ ├── panel-ios.less │ │ │ ├── panel-md.less │ │ │ ├── panel.js │ │ │ ├── panel.less │ │ │ └── swipe-panel.js │ │ ├── photo-browser │ │ │ ├── photo-browser-class.js │ │ │ ├── photo-browser-ios.less │ │ │ ├── photo-browser-md.less │ │ │ ├── photo-browser.js │ │ │ └── photo-browser.less │ │ ├── picker │ │ │ ├── picker-class.js │ │ │ ├── picker-column.js │ │ │ ├── picker-ios.less │ │ │ ├── picker-md.less │ │ │ ├── picker.js │ │ │ └── picker.less │ │ ├── popover │ │ │ ├── popover-class.js │ │ │ ├── popover-ios.less │ │ │ ├── popover-md.less │ │ │ ├── popover.js │ │ │ └── popover.less │ │ ├── popup │ │ │ ├── popup-class.js │ │ │ ├── popup-ios.less │ │ │ ├── popup-md.less │ │ │ ├── popup.js │ │ │ └── popup.less │ │ ├── preloader │ │ │ ├── preloader-ios.less │ │ │ ├── preloader-md.less │ │ │ ├── preloader.js │ │ │ └── preloader.less │ │ ├── progressbar │ │ │ ├── progressbar-ios.less │ │ │ ├── progressbar-md.less │ │ │ ├── progressbar.js │ │ │ └── progressbar.less │ │ ├── pull-to-refresh │ │ │ ├── pull-to-refresh-class.js │ │ │ ├── pull-to-refresh-ios.less │ │ │ ├── pull-to-refresh-md.less │ │ │ ├── pull-to-refresh.js │ │ │ └── pull-to-refresh.less │ │ ├── radio │ │ │ ├── radio-ios.less │ │ │ ├── radio-md.less │ │ │ ├── radio.js │ │ │ └── radio.less │ │ ├── range │ │ │ ├── range-class.js │ │ │ ├── range-ios.less │ │ │ ├── range-md.less │ │ │ ├── range.js │ │ │ └── range.less │ │ ├── searchbar │ │ │ ├── searchbar-class.js │ │ │ ├── searchbar-ios.less │ │ │ ├── searchbar-md.less │ │ │ ├── searchbar.js │ │ │ └── searchbar.less │ │ ├── sheet │ │ │ ├── sheet-class.js │ │ │ ├── sheet-ios.less │ │ │ ├── sheet-md.less │ │ │ ├── sheet.js │ │ │ └── sheet.less │ │ ├── smart-select │ │ │ ├── smart-select-class.js │ │ │ ├── smart-select-ios.less │ │ │ ├── smart-select-md.less │ │ │ ├── smart-select.js │ │ │ └── smart-select.less │ │ ├── sortable │ │ │ ├── sortable-ios.less │ │ │ ├── sortable-md.less │ │ │ ├── sortable.js │ │ │ └── sortable.less │ │ ├── statusbar │ │ │ ├── statusbar-ios.less │ │ │ ├── statusbar-md.less │ │ │ ├── statusbar.js │ │ │ └── statusbar.less │ │ ├── stepper │ │ │ ├── stepper-class.js │ │ │ ├── stepper-ios.less │ │ │ ├── stepper-md.less │ │ │ ├── stepper.js │ │ │ └── stepper.less │ │ ├── subnavbar │ │ │ ├── subnavbar-ios.less │ │ │ ├── subnavbar-md.less │ │ │ ├── subnavbar.js │ │ │ └── subnavbar.less │ │ ├── swipeout │ │ │ ├── swipeout-ios.less │ │ │ ├── swipeout-md.less │ │ │ ├── swipeout.js │ │ │ └── swipeout.less │ │ ├── swiper │ │ │ ├── swiper-class │ │ │ │ ├── components │ │ │ │ │ ├── a11y │ │ │ │ │ │ ├── a11y.js │ │ │ │ │ │ └── a11y.less │ │ │ │ │ ├── autoplay │ │ │ │ │ │ └── autoplay.js │ │ │ │ │ ├── controller │ │ │ │ │ │ ├── controller.js │ │ │ │ │ │ └── controller.less │ │ │ │ │ ├── core │ │ │ │ │ │ ├── breakpoints │ │ │ │ │ │ │ ├── getBreakpoint.js │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ └── setBreakpoint.js │ │ │ │ │ │ ├── check-overflow │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── classes │ │ │ │ │ │ │ ├── addClasses.js │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ └── removeClasses.js │ │ │ │ │ │ ├── core-class.js │ │ │ │ │ │ ├── core.less │ │ │ │ │ │ ├── defaults.js │ │ │ │ │ │ ├── events │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── onClick.js │ │ │ │ │ │ │ ├── onResize.js │ │ │ │ │ │ │ ├── onTouchEnd.js │ │ │ │ │ │ │ ├── onTouchMove.js │ │ │ │ │ │ │ └── onTouchStart.js │ │ │ │ │ │ ├── grab-cursor │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── setGrabCursor.js │ │ │ │ │ │ │ └── unsetGrabCursor.js │ │ │ │ │ │ ├── images │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── loadImage.js │ │ │ │ │ │ │ └── preloadImages.js │ │ │ │ │ │ ├── loop │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── loopCreate.js │ │ │ │ │ │ │ ├── loopDestroy.js │ │ │ │ │ │ │ └── loopFix.js │ │ │ │ │ │ ├── manipulation │ │ │ │ │ │ │ ├── appendSlide.js │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── prependSlide.js │ │ │ │ │ │ │ ├── removeAllSlides.js │ │ │ │ │ │ │ └── removeSlide.js │ │ │ │ │ │ ├── slide │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── slideNext.js │ │ │ │ │ │ │ ├── slidePrev.js │ │ │ │ │ │ │ ├── slideReset.js │ │ │ │ │ │ │ ├── slideTo.js │ │ │ │ │ │ │ ├── slideToClickedSlide.js │ │ │ │ │ │ │ ├── slideToClosest.js │ │ │ │ │ │ │ └── slideToLoop.js │ │ │ │ │ │ ├── transition │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── setTransition.js │ │ │ │ │ │ │ ├── transitionEnd.js │ │ │ │ │ │ │ └── transitionStart.js │ │ │ │ │ │ ├── translate │ │ │ │ │ │ │ ├── getTranslate.js │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── maxTranslate.js │ │ │ │ │ │ │ ├── minTranslate.js │ │ │ │ │ │ │ └── setTranslate.js │ │ │ │ │ │ └── update │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── updateActiveIndex.js │ │ │ │ │ │ │ ├── updateAutoHeight.js │ │ │ │ │ │ │ ├── updateClickedSlide.js │ │ │ │ │ │ │ ├── updateProgress.js │ │ │ │ │ │ │ ├── updateSize.js │ │ │ │ │ │ │ ├── updateSlides.js │ │ │ │ │ │ │ ├── updateSlidesClasses.js │ │ │ │ │ │ │ ├── updateSlidesOffset.js │ │ │ │ │ │ │ └── updateSlidesProgress.js │ │ │ │ │ ├── effect-coverflow │ │ │ │ │ │ ├── effect-coverflow.js │ │ │ │ │ │ └── effect-coverflow.less │ │ │ │ │ ├── effect-cube │ │ │ │ │ │ ├── effect-cube.js │ │ │ │ │ │ └── effect-cube.less │ │ │ │ │ ├── effect-fade │ │ │ │ │ │ ├── effect-fade.js │ │ │ │ │ │ └── effect-fade.less │ │ │ │ │ ├── effect-flip │ │ │ │ │ │ ├── effect-flip.js │ │ │ │ │ │ └── effect-flip.less │ │ │ │ │ ├── hash-navigation │ │ │ │ │ │ └── hash-navigation.js │ │ │ │ │ ├── history │ │ │ │ │ │ └── history.js │ │ │ │ │ ├── keyboard │ │ │ │ │ │ └── keyboard.js │ │ │ │ │ ├── lazy │ │ │ │ │ │ ├── lazy.js │ │ │ │ │ │ └── lazy.less │ │ │ │ │ ├── mousewheel │ │ │ │ │ │ └── mousewheel.js │ │ │ │ │ ├── navigation │ │ │ │ │ │ ├── navigation.js │ │ │ │ │ │ └── navigation.less │ │ │ │ │ ├── pagination │ │ │ │ │ │ ├── pagination.js │ │ │ │ │ │ └── pagination.less │ │ │ │ │ ├── parallax │ │ │ │ │ │ └── parallax.js │ │ │ │ │ ├── scrollbar │ │ │ │ │ │ ├── scrollbar.js │ │ │ │ │ │ └── scrollbar.less │ │ │ │ │ ├── virtual │ │ │ │ │ │ └── virtual.js │ │ │ │ │ └── zoom │ │ │ │ │ │ ├── zoom.js │ │ │ │ │ │ └── zoom.less │ │ │ │ ├── less │ │ │ │ │ └── mixins.less │ │ │ │ ├── modules │ │ │ │ │ ├── browser │ │ │ │ │ │ └── browser.js │ │ │ │ │ ├── defaults │ │ │ │ │ │ └── defaults.js │ │ │ │ │ ├── device │ │ │ │ │ │ └── device.js │ │ │ │ │ ├── observer │ │ │ │ │ │ └── observer.js │ │ │ │ │ ├── resize │ │ │ │ │ │ ├── resize.js │ │ │ │ │ │ └── resize.less │ │ │ │ │ └── support │ │ │ │ │ │ └── support.js │ │ │ │ ├── swiper.js │ │ │ │ ├── swiper.less │ │ │ │ └── utils │ │ │ │ │ ├── browser.js │ │ │ │ │ ├── class.js │ │ │ │ │ ├── device.js │ │ │ │ │ ├── document.js │ │ │ │ │ ├── dom.js │ │ │ │ │ ├── support.js │ │ │ │ │ ├── utils.js │ │ │ │ │ └── window.js │ │ │ ├── swiper-ios.less │ │ │ ├── swiper-md.less │ │ │ ├── swiper.js │ │ │ └── swiper.less │ │ ├── tabs │ │ │ ├── tabs-ios.less │ │ │ ├── tabs-md.less │ │ │ ├── tabs.js │ │ │ └── tabs.less │ │ ├── timeline │ │ │ ├── timeline-ios.less │ │ │ ├── timeline-md.less │ │ │ ├── timeline.js │ │ │ └── timeline.less │ │ ├── toast │ │ │ ├── toast-class.js │ │ │ ├── toast-ios.less │ │ │ ├── toast-md.less │ │ │ ├── toast.js │ │ │ └── toast.less │ │ ├── toggle │ │ │ ├── toggle-class.js │ │ │ ├── toggle-ios.less │ │ │ ├── toggle-md.less │ │ │ ├── toggle.js │ │ │ └── toggle.less │ │ ├── toolbar │ │ │ ├── toolbar-ios.less │ │ │ ├── toolbar-md.less │ │ │ ├── toolbar.js │ │ │ └── toolbar.less │ │ ├── touch-ripple │ │ │ ├── touch-ripple-class.js │ │ │ ├── touch-ripple-ios.less │ │ │ ├── touch-ripple-md.less │ │ │ ├── touch-ripple.js │ │ │ └── touch-ripple.less │ │ ├── typography │ │ │ ├── typography-ios.less │ │ │ ├── typography-md.less │ │ │ ├── typography.js │ │ │ └── typography.less │ │ ├── vi │ │ │ ├── vi-class.js │ │ │ ├── vi-ios.less │ │ │ ├── vi-md.less │ │ │ ├── vi.js │ │ │ └── vi.less │ │ ├── view │ │ │ ├── view-class.js │ │ │ ├── view.js │ │ │ └── view.less │ │ └── virtual-list │ │ │ ├── virtual-list-class.js │ │ │ ├── virtual-list-ios.less │ │ │ ├── virtual-list-md.less │ │ │ ├── virtual-list.js │ │ │ └── virtual-list.less │ ├── css │ │ ├── framework7.css │ │ ├── framework7.ios.css │ │ ├── framework7.ios.min.css │ │ ├── framework7.md.css │ │ ├── framework7.md.min.css │ │ ├── framework7.min.css │ │ ├── framework7.rtl.css │ │ ├── framework7.rtl.ios.css │ │ ├── framework7.rtl.ios.min.css │ │ ├── framework7.rtl.md.css │ │ ├── framework7.rtl.md.min.css │ │ └── framework7.rtl.min.css │ ├── framework7.esm.bundle.js │ ├── framework7.esm.js │ ├── framework7.less │ ├── js │ │ ├── framework7.js │ │ ├── framework7.min.js │ │ └── framework7.min.js.map │ ├── less │ │ ├── colors-ios.less │ │ ├── colors-md.less │ │ ├── mixins.less │ │ ├── vars-ios.less │ │ └── vars-md.less │ ├── modules │ │ ├── clicks │ │ │ └── clicks.js │ │ ├── demo-module.js │ │ ├── device │ │ │ └── device.js │ │ ├── history │ │ │ └── history.js │ │ ├── request │ │ │ └── request.js │ │ ├── resize │ │ │ └── resize.js │ │ ├── router │ │ │ ├── back.js │ │ │ ├── clear-history.js │ │ │ ├── clear-previous-history.js │ │ │ ├── modal.js │ │ │ ├── navigate.js │ │ │ ├── redirect.js │ │ │ ├── router-class.js │ │ │ ├── router.js │ │ │ ├── swipe-back.js │ │ │ └── tab.js │ │ ├── storage │ │ │ └── storage.js │ │ ├── support │ │ │ └── support.js │ │ ├── touch │ │ │ └── touch.js │ │ └── utils │ │ │ └── utils.js │ └── utils │ │ ├── bezier.js │ │ ├── class.js │ │ ├── component.js │ │ ├── constructor-methods.js │ │ ├── device.js │ │ ├── history.js │ │ ├── modal-methods.js │ │ ├── request.js │ │ ├── support.js │ │ └── utils.js │ └── pages │ ├── 404.html │ ├── about.html │ ├── accordion.html │ ├── action-sheet.html │ ├── autocomplete.html │ ├── badge.html │ ├── buttons.html │ ├── calendar-page.html │ ├── calendar.html │ ├── cards.html │ ├── checkbox.html │ ├── chips.html │ ├── color-themes.html │ ├── contacts-list.html │ ├── content-block.html │ ├── data-table.html │ ├── dialog.html │ ├── fab-morph.html │ ├── fab.html │ ├── form-storage.html │ ├── grid.html │ ├── icons.html │ ├── infinite-scroll.html │ ├── inputs.html │ ├── lazy-load.html │ ├── list-index.html │ ├── list.html │ ├── login-screen-page.html │ ├── login-screen.html │ ├── messages.html │ ├── navbar-hide-scroll.html │ ├── navbar.html │ ├── notifications.html │ ├── page-loader-component.html │ ├── page-loader-template7.html │ ├── panel.html │ ├── photo-browser.html │ ├── picker.html │ ├── popover.html │ ├── popup.html │ ├── preloader.html │ ├── progressbar.html │ ├── pull-to-refresh.html │ ├── radio.html │ ├── range.html │ ├── searchbar-expandable.html │ ├── searchbar.html │ ├── sheet-modal.html │ ├── smart-select.html │ ├── sortable.html │ ├── statusbar.html │ ├── stepper.html │ ├── subnavbar-title.html │ ├── subnavbar.html │ ├── swipeout.html │ ├── swiper-3d-coverflow.html │ ├── swiper-3d-cube.html │ ├── swiper-3d-flip.html │ ├── swiper-custom-controls.html │ ├── swiper-fade.html │ ├── swiper-gallery.html │ ├── swiper-horizontal.html │ ├── swiper-lazy.html │ ├── swiper-loop.html │ ├── swiper-multiple.html │ ├── swiper-nested.html │ ├── swiper-pagination-fraction.html │ ├── swiper-pagination-progress.html │ ├── swiper-parallax.html │ ├── swiper-scrollbar.html │ ├── swiper-space-between.html │ ├── swiper-vertical.html │ ├── swiper-zoom.html │ ├── swiper.html │ ├── tabbar-labels.html │ ├── tabbar-scrollable.html │ ├── tabbar.html │ ├── tabs-animated.html │ ├── tabs-routable.html │ ├── tabs-static.html │ ├── tabs-swipeable.html │ ├── tabs.html │ ├── timeline-horizontal-calendar.html │ ├── timeline-horizontal.html │ ├── timeline-vertical.html │ ├── timeline.html │ ├── toast.html │ ├── toggle.html │ ├── toolbar-hide-scroll.html │ ├── toolbar-tabbar.html │ ├── vi.html │ └── virtual-list.html ├── package-lock.json ├── package.json └── test ├── test-creation.js └── test-load.js /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [*.md] 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | temp/ 3 | .idea 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "node": true, 3 | "esnext": true, 4 | "bitwise": true, 5 | "camelcase": true, 6 | "curly": true, 7 | "eqeqeq": true, 8 | "immed": true, 9 | "indent": 2, 10 | "latedef": true, 11 | "newcap": true, 12 | "noarg": true, 13 | "quotmark": "single", 14 | "regexp": true, 15 | "undef": true, 16 | "unused": true, 17 | "strict": true, 18 | "trailing": true, 19 | "smarttabs": true, 20 | "white": true 21 | } 22 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - '0.10' 4 | before_install: 5 | - currentfolder=${PWD##*/} 6 | - if [ "$currentfolder" != 'generator-framework7-phonegap' ]; then cd .. && eval "mv $currentfolder generator-framework7-phonegap" && cd generator-framework7-phonegap; fi 7 | 8 | -------------------------------------------------------------------------------- /app/templates/.npmignore: -------------------------------------------------------------------------------- 1 | # OS X 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /app/templates/README.md: -------------------------------------------------------------------------------- 1 | # <%= _.camelize(appname) %> 2 | 3 | > A sample Apache Cordova application integrated with Framework7. 4 | 5 | ## App Dev 6 | Like you would any corodova app 7 | 8 | ## Run in browser 9 | First add the browser platform, if not already done so 10 | 11 | ```bash 12 | $ cordova platform ls 13 | $ cordova platform add browser 14 | ``` 15 | Run the app in browser 16 | ```bash 17 | $ cordova run browser -- --port=8001 18 | ``` 19 | 20 | ## Framework7 Customization 21 | If you would like to customize Framework7, you can do so inside the `/framework7` folder. Once the development is completed and you have build the final distrubtion from inside the `/framework7` folder, you need to copy the contents of `/framework7/dist` folder to `www/lib`. _Contents not the completed folder._ -------------------------------------------------------------------------------- /app/templates/_package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "<%= _.camelize(appname) %>", 3 | "displayName": "<%= _.camelize(appname) %>", 4 | "version": "1.0.0", 5 | "description": "A sample Apache Cordova application integrated with Framework7.", 6 | "main": "index.js", 7 | "scripts": { 8 | "test": "echo \"Error: no test specified\" && exit 1" 9 | }, 10 | "author": "Apache Cordova Team", 11 | "license": "Apache-2.0", 12 | "dependencies": { 13 | "cordova-plugin-whitelist": "^1.3.3" 14 | }, 15 | "cordova": { 16 | "plugins": { 17 | "cordova-plugin-whitelist": {} 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /app/templates/framework7/.editorconfig: -------------------------------------------------------------------------------- 1 | # This file is for unifying the coding style of different editors and IDEs. 2 | # editorconfig.org 3 | 4 | root = true 5 | 6 | [*] 7 | charset = utf-8 8 | end_of_line = lf 9 | indent_size = 2 10 | indent_style = space 11 | insert_final_newline = true 12 | trim_trailing_whitespace = true 13 | -------------------------------------------------------------------------------- /app/templates/framework7/.eslintignore: -------------------------------------------------------------------------------- 1 | build 2 | .git 3 | .github 4 | custom 5 | dist 6 | kitchen-sink 7 | node_modules 8 | src/framework7.js 9 | src/modules/demo-module.js 10 | src/components/swiper/swiper-class 11 | -------------------------------------------------------------------------------- /app/templates/framework7/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | build 4 | custom 5 | npm-debug.log 6 | .idea 7 | .vscode 8 | scripts/build-config-custom.js 9 | scripts/build-config-*.js 10 | -------------------------------------------------------------------------------- /app/templates/framework7/.npmignore: -------------------------------------------------------------------------------- 1 | .git 2 | .github 3 | build 4 | custom 5 | kitchen-sink 6 | kitchen-sink-ios 7 | kitchen-sink-material 8 | node_modules 9 | npm-debug.log 10 | scripts 11 | src 12 | gulpfile.js 13 | -------------------------------------------------------------------------------- /app/templates/framework7/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "6" 4 | before_script: 5 | - npm install --global gulp -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/badge/badge-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | .badge { 4 | font-size: 13px; 5 | border-radius: 20px; 6 | padding: 0 6px; 7 | height: 20px; 8 | line-height: 20px; 9 | .item-after & { 10 | min-width: 20px; 11 | } 12 | } 13 | .icon, .f7-icons, .framework7-icons, .material-icons { 14 | .badge { 15 | line-height: 16px; 16 | height: 16px; 17 | border-radius: 16px; 18 | padding: 0 4px; 19 | min-width: 16px; 20 | font-family: -apple-system, SF UI Text, Helvetica Neue, Helvetica, Arial, sans-serif; 21 | font-size: 10px; 22 | } 23 | } 24 | .color-loop({ 25 | .badge.color-@{colorName} { 26 | background-color: @colorValue; 27 | } 28 | }); 29 | } 30 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/badge/badge-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | @import (multiple) '../../less/colors-md.less'; 3 | .badge { 4 | font-size: 10px; 5 | border-radius: 3px; 6 | padding: 1px 6px; 7 | vertical-align: middle; 8 | } 9 | .icon, .f7-icons, .framework7-icons, .material-icons { 10 | .badge { 11 | line-height: 1.4; 12 | padding: 1px 5px; 13 | font-family: Roboto, Noto, Helvetica, Arial, sans-serif; 14 | font-size: 10px; 15 | } 16 | } 17 | .color-loop({ 18 | .badge.color-@{colorName} { 19 | background-color: @colorValue; 20 | } 21 | }); 22 | } 23 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/badge/badge.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'badge', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/badge/badge.less: -------------------------------------------------------------------------------- 1 | /* === Badge === */ 2 | .badge { 3 | display: inline-block; 4 | color: #fff; 5 | background: #8e8e93; 6 | position: relative; 7 | box-sizing: border-box; 8 | text-align: center; 9 | .icon &, .f7-icons &, .framework7-icons &, .material-icons & { 10 | position: absolute; 11 | left: 100%; 12 | margin-left: -10px; 13 | top: -2px; 14 | } 15 | } 16 | 17 | & when (@includeIosTheme) { 18 | @import url('./badge-ios.less'); 19 | } 20 | & when (@includeMdTheme) { 21 | @import url('./badge-md.less'); 22 | } 23 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/block/block.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'block', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/button/button.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'button', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/card/card.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'card', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/checkbox/checkbox.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'checkbox', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/chip/chip.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'chip', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/contacts-list/contact-list.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'contactList', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/contacts-list/contacts-list-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | .contacts-list { 4 | margin: 0; 5 | .list-group-title { 6 | padding: 0 15px; 7 | background: #f7f7f7; 8 | color: #000; 9 | font-weight: 600; 10 | line-height: 22px; 11 | height: 22px; 12 | } 13 | } 14 | // Dark Theme 15 | & when (@includeDarkTheme) { 16 | .theme-dark { 17 | .contacts-list, .contacts-list& { 18 | .list-group-title { 19 | background-color: #111; 20 | color: #fff; 21 | } 22 | } 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/contacts-list/contacts-list.less: -------------------------------------------------------------------------------- 1 | /* === Contacts === */ 2 | .contacts-list { 3 | .list-group:first-child ul { 4 | .hairline-remove(top); 5 | } 6 | .list-group:last-child ul { 7 | .hairline-remove(bottom); 8 | } 9 | } 10 | & when (@includeIosTheme) { 11 | @import url('./contacts-list-ios.less'); 12 | } 13 | & when (@includeMdTheme) { 14 | @import url('./contacts-list-md.less'); 15 | } 16 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/core/core-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | @import (multiple) '../../less/colors-md.less'; 3 | body { 4 | font-family: Roboto, Noto, Helvetica, Arial, sans-serif; 5 | color: #212121; 6 | line-height: 1.5; 7 | } 8 | .ios-only, .if-ios { 9 | display: none !important; 10 | } 11 | a { 12 | color: @themeColor; 13 | } 14 | // Dark Theme 15 | & when (@includeDarkTheme) { 16 | .theme-dark { 17 | color: rgba(255,255,255,0.87); 18 | } 19 | } 20 | 21 | .color-theme-loop({ 22 | .color-theme-@{colorThemeName} { 23 | a { 24 | color: @colorThemeValue; 25 | } 26 | } 27 | }); 28 | .color-loop({ 29 | a.color-@{colorName} { 30 | color: @colorValue; 31 | } 32 | }); 33 | } 34 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/grid/grid.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'grid', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/grid/grid.less: -------------------------------------------------------------------------------- 1 | /* === Grid === */ 2 | .row { 3 | display: flex; 4 | justify-content: space-between; 5 | flex-wrap: wrap; 6 | align-items: flex-start; 7 | > [class*="col-"], > .col { 8 | box-sizing: border-box; 9 | } 10 | } 11 | @cols: 5, 10, 15, 20, 25, 30, 100/3, 35, 40, 45, 50, 55, 60, 65, 100*(2/3), 70, 75, 80, 85, 90, 95, 100; 12 | .row { 13 | .col { 14 | width: 100%; 15 | } 16 | } 17 | 18 | & when (@includeIosTheme) { 19 | @import url('./grid-ios.less'); 20 | } 21 | & when (@includeMdTheme) { 22 | @import url('./grid-md.less'); 23 | } 24 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/icon/icon.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'icon', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/icon/icon.less: -------------------------------------------------------------------------------- 1 | /* === Icon === */ 2 | i.icon { 3 | display: inline-block; 4 | vertical-align: middle; 5 | background-size: 100% auto; 6 | background-position: center; 7 | background-repeat: no-repeat; 8 | font-style: normal; 9 | position: relative; 10 | } 11 | 12 | & when (@includeIosTheme) { 13 | @import url('./icon-ios.less'); 14 | } 15 | & when (@includeMdTheme) { 16 | @import url('./icon-md.less'); 17 | } 18 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/infinite-scroll/infinite-scroll-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | 4 | .infinite-scroll-preloader { 5 | margin-top: 35px; 6 | margin-bottom: 35px; 7 | .preloader, &.preloader { 8 | width: 27px; 9 | height: 27px; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/infinite-scroll/infinite-scroll-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | @import (multiple) '../../less/colors-md.less'; 3 | .infinite-scroll-preloader { 4 | margin-top: 32px; 5 | margin-bottom: 32px; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/infinite-scroll/infinite-scroll.less: -------------------------------------------------------------------------------- 1 | /* === Infinite === */ 2 | .infinite-scroll-preloader { 3 | margin-left: auto; 4 | margin-right: auto; 5 | text-align: center; 6 | &.preloader { 7 | display: block; 8 | } 9 | } 10 | & when (@includeIosTheme) { 11 | @import url('./infinite-scroll-ios.less'); 12 | } 13 | & when (@includeMdTheme) { 14 | @import url('./infinite-scroll-md.less'); 15 | } 16 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/lazy/lazy-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | } 4 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/lazy/lazy-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | @import (multiple) '../../less/colors-md.less'; 3 | } 4 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/lazy/lazy.less: -------------------------------------------------------------------------------- 1 | /* === Images Lazy Loading === */ 2 | .lazy-loaded.lazy-fade-in { 3 | animation: lazyFadeIn 600ms; 4 | } 5 | 6 | @keyframes lazyFadeIn { 7 | from { 8 | opacity: 0; 9 | } 10 | to { 11 | opacity: 1; 12 | } 13 | } 14 | 15 | & when (@includeIosTheme) { 16 | @import url('./lazy-ios.less'); 17 | } 18 | & when (@includeMdTheme) { 19 | @import url('./lazy-md.less'); 20 | } 21 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/link/link-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | .link { 3 | transition: opacity 300ms; 4 | i + span, i + i, span + i, span + span { 5 | .ltr({ 6 | margin-left: 7px; 7 | }); 8 | .rtl({ 9 | margin-right: 7px; 10 | }); 11 | } 12 | &.active-state { 13 | opacity: 0.3; 14 | transition-duration: 0ms; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/link/link-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | .link { 3 | i + span, i + i, span + i, span + span { 4 | .ltr({ 5 | margin-left: 8px; 6 | }); 7 | .rtl({ 8 | margin-right: 8px; 9 | }); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/link/link.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'link', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/link/link.less: -------------------------------------------------------------------------------- 1 | /* === Link === */ 2 | .link, .tab-link { 3 | display: inline-flex; 4 | align-items: center; 5 | align-content: center; 6 | justify-content: center; 7 | position: relative; 8 | box-sizing: border-box; 9 | transform: translate3d(0, 0, 0); 10 | z-index: 1; 11 | } 12 | 13 | & when (@includeIosTheme) { 14 | @import url('./link-ios.less'); 15 | } 16 | & when (@includeMdTheme) { 17 | @import url('./link-md.less'); 18 | } 19 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/list/list.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'list', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/login-screen/login-screen-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | .login-screen-content { 4 | .login-screen-title, .list, .block { 5 | margin: 25px auto; 6 | } 7 | } 8 | .login-screen-title { 9 | font-size: 30px; 10 | } 11 | // Dark Theme 12 | & when (@includeDarkTheme) { 13 | .theme-dark { 14 | .login-screen-content, .login-screen-content .list ul { 15 | background-color: transparent; 16 | } 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/login-screen/login-screen.js: -------------------------------------------------------------------------------- 1 | import LoginScreen from './login-screen-class'; 2 | import ModalMethods from '../../utils/modal-methods'; 3 | 4 | export default { 5 | name: 'loginScreen', 6 | static: { 7 | LoginScreen, 8 | }, 9 | create() { 10 | const app = this; 11 | app.loginScreen = ModalMethods({ 12 | app, 13 | constructor: LoginScreen, 14 | defaultSelector: '.login-screen.modal-in', 15 | }); 16 | }, 17 | clicks: { 18 | '.login-screen-open': function openLoginScreen($clickedEl, data = {}) { 19 | const app = this; 20 | app.loginScreen.open(data.loginScreen, data.animate); 21 | }, 22 | '.login-screen-close': function closeLoginScreen($clickedEl, data = {}) { 23 | const app = this; 24 | app.loginScreen.close(data.loginScreen, data.animate); 25 | }, 26 | }, 27 | }; 28 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/modal/modal.js: -------------------------------------------------------------------------------- 1 | import Modal from './modal-class'; 2 | import CustomModal from './custom-modal-class'; 3 | 4 | export default { 5 | name: 'modal', 6 | static: { 7 | Modal, 8 | CustomModal, 9 | }, 10 | create() { 11 | const app = this; 12 | app.customModal = { 13 | create(params) { 14 | return new CustomModal(app, params); 15 | }, 16 | }; 17 | }, 18 | params: { 19 | modal: { 20 | moveToRoot: true, 21 | queueDialogs: true, 22 | }, 23 | }, 24 | }; 25 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/modal/modal.less: -------------------------------------------------------------------------------- 1 | .custom-modal-backdrop { 2 | .modal-backdrop(); 3 | z-index: 10500; 4 | } 5 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/page/page.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'page', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/page/page.less: -------------------------------------------------------------------------------- 1 | /* === Pages === */ 2 | .pages { 3 | position: relative; 4 | width: 100%; 5 | height: 100%; 6 | overflow: hidden; 7 | } 8 | .page { 9 | box-sizing: border-box; 10 | position: absolute; 11 | left: 0; 12 | top: 0; 13 | width: 100%; 14 | height: 100%; 15 | transform: translate3d(0,0,0); 16 | &.stacked { 17 | display: none; 18 | } 19 | } 20 | .page-previous { 21 | pointer-events: none; 22 | } 23 | .page-content { 24 | .scrollable(); 25 | box-sizing: border-box; 26 | height: 100%; 27 | position: relative; 28 | z-index: 1; 29 | } 30 | 31 | & when (@includeIosTheme) { 32 | @import url('./page-ios.less'); 33 | } 34 | & when (@includeMdTheme) { 35 | @import url('./page-md.less'); 36 | } 37 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/panel/panel-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | .panel-backdrop { 4 | transition-duration: 400ms; 5 | background: rgba(0,0,0,0); 6 | } 7 | .panel { 8 | transition-duration: 400ms; 9 | } 10 | &.with-panel-left-reveal, &.with-panel-right-reveal, &.with-panel-transitioning { 11 | .views, .framework7-root > .view { 12 | transition-duration: 400ms; 13 | transition-property: transform; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/popup/popup-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | 4 | } 5 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/popup/popup-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | @import (multiple) '../../less/colors-md.less'; 3 | @media (min-width: 630px) and (min-height: 630px) { 4 | .popup:not(.popup-tablet-fullscreen) { 5 | box-shadow: 0px 20px 44px rgba(0,0,0,0.5); 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/popup/popup.js: -------------------------------------------------------------------------------- 1 | import Popup from './popup-class'; 2 | import ModalMethods from '../../utils/modal-methods'; 3 | 4 | export default { 5 | name: 'popup', 6 | params: { 7 | popup: { 8 | backdrop: true, 9 | closeByBackdropClick: true, 10 | }, 11 | }, 12 | static: { 13 | Popup, 14 | }, 15 | create() { 16 | const app = this; 17 | app.popup = ModalMethods({ 18 | app, 19 | constructor: Popup, 20 | defaultSelector: '.popup.modal-in', 21 | }); 22 | }, 23 | clicks: { 24 | '.popup-open': function openPopup($clickedEl, data = {}) { 25 | const app = this; 26 | app.popup.open(data.popup, data.animate); 27 | }, 28 | '.popup-close': function closePopup($clickedEl, data = {}) { 29 | const app = this; 30 | app.popup.close(data.popup, data.animate); 31 | }, 32 | }, 33 | }; 34 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/preloader/preloader.less: -------------------------------------------------------------------------------- 1 | /* === Preloader === */ 2 | .preloader { 3 | display: inline-block; 4 | vertical-align: middle; 5 | } 6 | 7 | /* === Preloader Modal === */ 8 | .preloader-backdrop { 9 | .modal-backdrop(); 10 | visibility: visible; 11 | opacity: 0; 12 | background: none; 13 | } 14 | .preloader-modal { 15 | position: absolute; 16 | left: 50%; 17 | top: 50%; 18 | padding: 8px; 19 | background: rgba(0,0,0,0.8); 20 | z-index: 13500; 21 | transform: translateX(-50%) translateY(-50%); 22 | .preloader { 23 | display: block !important; 24 | } 25 | } 26 | html.with-modal-preloader { 27 | .page-content { 28 | .not-scrollable(); 29 | } 30 | } 31 | & when (@includeIosTheme) { 32 | @import url('./preloader-ios.less'); 33 | } 34 | & when (@includeMdTheme) { 35 | @import url('./preloader-md.less'); 36 | } 37 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/pull-to-refresh/pull-to-refresh.less: -------------------------------------------------------------------------------- 1 | /* === PTR === */ 2 | .ptr-preloader { 3 | .preloader { 4 | position: absolute; 5 | left: 50%; 6 | } 7 | } 8 | & when (@includeIosTheme) { 9 | @import url('./pull-to-refresh-ios.less'); 10 | } 11 | & when (@includeMdTheme) { 12 | @import url('./pull-to-refresh-md.less'); 13 | } 14 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/radio/radio.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'radio', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/smart-select/smart-select-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | @import (multiple) '../../less/vars-ios.less'; 4 | .smart-select-sheet { 5 | .page { 6 | background: #fff; 7 | } 8 | } 9 | .hairline-root('.smart-select-sheet .toolbar', bottom, @barsBorderColor); 10 | // Dark Theme 11 | & when (@includeDarkTheme) { 12 | .theme-dark { 13 | .smart-select-sheet .page, 14 | .smart-select-sheet .sheet-modal-inner { 15 | background-color: @blockBgDark; 16 | } 17 | .smart-select-sheet .toolbar { 18 | .hairline-color(bottom, @barsBorderColorDark); 19 | } 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/smart-select/smart-select-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | @import (multiple) '../../less/colors-md.less'; 3 | // Dark Theme 4 | & when (@includeDarkTheme) { 5 | .theme-dark { 6 | .sheet-modal.smart-select-sheet .sheet-modal-inner { 7 | background-color: transparent; 8 | } 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/smart-select/smart-select.less: -------------------------------------------------------------------------------- 1 | /* === Smart Select === */ 2 | .smart-select { 3 | select { 4 | display: none; 5 | } 6 | .item-after { 7 | max-width: 70%; 8 | overflow: hidden; 9 | text-overflow: ellipsis; 10 | position: relative; 11 | display: block; 12 | } 13 | 14 | } 15 | .sheet-modal.smart-select-sheet { 16 | .sheet-modal-inner { 17 | background: #fff; 18 | } 19 | .list { 20 | margin: 0; 21 | ul { 22 | .hairline-remove(top); 23 | .hairline-remove(bottom); 24 | } 25 | } 26 | } 27 | .smart-select-popover .popover-inner { 28 | max-height: 40vh; 29 | } 30 | & when (@includeIosTheme) { 31 | @import url('./smart-select-ios.less'); 32 | } 33 | & when (@includeMdTheme) { 34 | @import url('./smart-select-md.less'); 35 | } 36 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/statusbar/statusbar-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | @import (multiple) '../../less/vars-ios.less'; 4 | .statusbar { 5 | background: #f7f7f8; 6 | } 7 | // Dark Theme 8 | & when (@includeDarkTheme) { 9 | .theme-dark { 10 | .statusbar { 11 | background-color: @barsBgDark; 12 | } 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/statusbar/statusbar-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | @import (multiple) '../../less/colors-md.less'; 3 | .statusbar { 4 | background: darken(@themeColor, 15%); 5 | } 6 | .color-theme-loop({ 7 | .color-theme-@{colorThemeName} .statusbar { 8 | background: darken(@colorThemeValue, 15%); 9 | } 10 | }); 11 | } 12 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/subnavbar/subnavbar.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'subnavbar', 3 | on: { 4 | pageInit(page) { 5 | if (page.$navbarEl && page.$navbarEl.length && page.$navbarEl.find('.subnavbar').length) { 6 | page.$el.addClass('page-with-subnavbar'); 7 | } 8 | if (page.$el.find('.subnavbar').length) { 9 | page.$el.addClass('page-with-subnavbar'); 10 | } 11 | }, 12 | }, 13 | }; 14 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swipeout/swipeout-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | .swipeout-actions-left, .swipeout-actions-right { 4 | > a, > button, > span, > div { 5 | padding: 0 30px; 6 | color: #fff; 7 | } 8 | .swipeout-delete { 9 | background: @red; 10 | } 11 | } 12 | .color-loop({ 13 | .swipeout-actions-left, .swipeout-actions-right { 14 | > a, > button, > span, > div { 15 | &.color-@{colorName} { 16 | background-color: @colorValue; 17 | } 18 | } 19 | } 20 | }); 21 | } 22 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swipeout/swipeout-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | @import (multiple) '../../less/colors-md.less'; 3 | .swipeout-actions-left, .swipeout-actions-right { 4 | > a, > button, > span, > div { 5 | padding: 0 24px; 6 | color: #fff; 7 | } 8 | .swipeout-delete { 9 | background: @red; 10 | } 11 | } 12 | .color-loop({ 13 | .swipeout-actions-left, .swipeout-actions-right { 14 | > a, > button, > span, > div { 15 | &.color-@{colorName} { 16 | background-color: @colorValue; 17 | } 18 | } 19 | } 20 | }); 21 | } 22 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/a11y/a11y.less: -------------------------------------------------------------------------------- 1 | /* a11y */ 2 | .swiper-container .swiper-notification { 3 | position: absolute; 4 | left: 0; 5 | top: 0; 6 | pointer-events: none; 7 | opacity: 0; 8 | z-index: -1000; 9 | } 10 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/controller/controller.less: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/framework7/dist/components/swiper/swiper-class/components/controller/controller.less -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/core/breakpoints/getBreakpoint.js: -------------------------------------------------------------------------------- 1 | import { window } from 'ssr-window'; 2 | 3 | export default function (breakpoints) { 4 | // Get breakpoint for window width 5 | if (!breakpoints) return undefined; 6 | let breakpoint = false; 7 | const points = []; 8 | Object.keys(breakpoints).forEach((point) => { 9 | points.push(point); 10 | }); 11 | points.sort((a, b) => parseInt(a, 10) - parseInt(b, 10)); 12 | for (let i = 0; i < points.length; i += 1) { 13 | const point = points[i]; 14 | if (point >= window.innerWidth && !breakpoint) { 15 | breakpoint = point; 16 | } 17 | } 18 | return breakpoint || 'max'; 19 | } 20 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/core/breakpoints/index.js: -------------------------------------------------------------------------------- 1 | import setBreakpoint from './setBreakpoint'; 2 | import getBreakpoint from './getBreakpoint'; 3 | 4 | export default { setBreakpoint, getBreakpoint }; 5 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/core/check-overflow/index.js: -------------------------------------------------------------------------------- 1 | 2 | function checkOverflow() { 3 | const swiper = this; 4 | const wasLocked = swiper.isLocked; 5 | 6 | swiper.isLocked = swiper.snapGrid.length === 1; 7 | swiper.allowSlideNext = !swiper.isLocked; 8 | swiper.allowSlidePrev = !swiper.isLocked; 9 | 10 | // events 11 | if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); 12 | 13 | if (wasLocked && wasLocked !== swiper.isLocked) { 14 | swiper.isEnd = false; 15 | swiper.navigation.update(); 16 | } 17 | } 18 | 19 | export default { checkOverflow }; 20 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/core/classes/index.js: -------------------------------------------------------------------------------- 1 | import addClasses from './addClasses'; 2 | import removeClasses from './removeClasses'; 3 | 4 | export default { addClasses, removeClasses }; 5 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/core/classes/removeClasses.js: -------------------------------------------------------------------------------- 1 | export default function () { 2 | const swiper = this; 3 | const { $el, classNames } = swiper; 4 | 5 | $el.removeClass(classNames.join(' ')); 6 | } 7 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/core/events/onClick.js: -------------------------------------------------------------------------------- 1 | export default function (e) { 2 | const swiper = this; 3 | if ("universal" === 'desktop') { 4 | swiper.emit('tap click', e); 5 | } else if (!swiper.allowClick) { 6 | if (swiper.params.preventClicks) e.preventDefault(); 7 | if (swiper.params.preventClicksPropagation && swiper.animating) { 8 | e.stopPropagation(); 9 | e.stopImmediatePropagation(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/core/grab-cursor/index.js: -------------------------------------------------------------------------------- 1 | import setGrabCursor from './setGrabCursor'; 2 | import unsetGrabCursor from './unsetGrabCursor'; 3 | 4 | export default { 5 | setGrabCursor, 6 | unsetGrabCursor, 7 | }; 8 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/core/grab-cursor/setGrabCursor.js: -------------------------------------------------------------------------------- 1 | import Support from '../../../utils/support'; 2 | 3 | export default function (moving) { 4 | const swiper = this; 5 | if (Support.touch || !swiper.params.simulateTouch) return; 6 | const el = swiper.el; 7 | el.style.cursor = 'move'; 8 | el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab'; 9 | el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab'; 10 | el.style.cursor = moving ? 'grabbing' : 'grab'; 11 | } 12 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/core/grab-cursor/unsetGrabCursor.js: -------------------------------------------------------------------------------- 1 | import Support from '../../../utils/support'; 2 | 3 | export default function () { 4 | const swiper = this; 5 | if (Support.touch) return; 6 | swiper.el.style.cursor = ''; 7 | } 8 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/core/images/index.js: -------------------------------------------------------------------------------- 1 | import loadImage from './loadImage'; 2 | import preloadImages from './preloadImages'; 3 | 4 | export default { 5 | loadImage, 6 | preloadImages, 7 | }; 8 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/core/images/loadImage.js: -------------------------------------------------------------------------------- 1 | import { window } from 'ssr-window'; 2 | 3 | export default function (imageEl, src, srcset, sizes, checkForComplete, callback) { 4 | let image; 5 | function onReady() { 6 | if (callback) callback(); 7 | } 8 | if (!imageEl.complete || !checkForComplete) { 9 | if (src) { 10 | image = new window.Image(); 11 | image.onload = onReady; 12 | image.onerror = onReady; 13 | if (sizes) { 14 | image.sizes = sizes; 15 | } 16 | if (srcset) { 17 | image.srcset = srcset; 18 | } 19 | if (src) { 20 | image.src = src; 21 | } 22 | } else { 23 | onReady(); 24 | } 25 | } else { 26 | // image already loaded... 27 | onReady(); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/core/loop/index.js: -------------------------------------------------------------------------------- 1 | import loopCreate from './loopCreate'; 2 | import loopFix from './loopFix'; 3 | import loopDestroy from './loopDestroy'; 4 | 5 | export default { 6 | loopCreate, 7 | loopFix, 8 | loopDestroy, 9 | }; 10 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/core/loop/loopDestroy.js: -------------------------------------------------------------------------------- 1 | export default function () { 2 | const swiper = this; 3 | const { $wrapperEl, params, slides } = swiper; 4 | $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove(); 5 | slides.removeAttr('data-swiper-slide-index'); 6 | } 7 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/core/manipulation/appendSlide.js: -------------------------------------------------------------------------------- 1 | import Support from '../../../utils/support'; 2 | 3 | export default function (slides) { 4 | const swiper = this; 5 | const { $wrapperEl, params } = swiper; 6 | if (params.loop) { 7 | swiper.loopDestroy(); 8 | } 9 | if (typeof slides === 'object' && 'length' in slides) { 10 | for (let i = 0; i < slides.length; i += 1) { 11 | if (slides[i]) $wrapperEl.append(slides[i]); 12 | } 13 | } else { 14 | $wrapperEl.append(slides); 15 | } 16 | if (params.loop) { 17 | swiper.loopCreate(); 18 | } 19 | if (!(params.observer && Support.observer)) { 20 | swiper.update(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/core/manipulation/index.js: -------------------------------------------------------------------------------- 1 | import appendSlide from './appendSlide'; 2 | import prependSlide from './prependSlide'; 3 | import removeSlide from './removeSlide'; 4 | import removeAllSlides from './removeAllSlides'; 5 | 6 | export default { 7 | appendSlide, 8 | prependSlide, 9 | removeSlide, 10 | removeAllSlides, 11 | }; 12 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/core/manipulation/prependSlide.js: -------------------------------------------------------------------------------- 1 | import Support from '../../../utils/support'; 2 | 3 | export default function (slides) { 4 | const swiper = this; 5 | const { params, $wrapperEl, activeIndex } = swiper; 6 | 7 | if (params.loop) { 8 | swiper.loopDestroy(); 9 | } 10 | let newActiveIndex = activeIndex + 1; 11 | if (typeof slides === 'object' && 'length' in slides) { 12 | for (let i = 0; i < slides.length; i += 1) { 13 | if (slides[i]) $wrapperEl.prepend(slides[i]); 14 | } 15 | newActiveIndex = activeIndex + slides.length; 16 | } else { 17 | $wrapperEl.prepend(slides); 18 | } 19 | if (params.loop) { 20 | swiper.loopCreate(); 21 | } 22 | if (!(params.observer && Support.observer)) { 23 | swiper.update(); 24 | } 25 | swiper.slideTo(newActiveIndex, 0, false); 26 | } 27 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/core/manipulation/removeAllSlides.js: -------------------------------------------------------------------------------- 1 | export default function () { 2 | const swiper = this; 3 | 4 | const slidesIndexes = []; 5 | for (let i = 0; i < swiper.slides.length; i += 1) { 6 | slidesIndexes.push(i); 7 | } 8 | swiper.removeSlide(slidesIndexes); 9 | } 10 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/core/slide/index.js: -------------------------------------------------------------------------------- 1 | import slideTo from './slideTo'; 2 | import slideToLoop from './slideToLoop'; 3 | import slideNext from './slideNext'; 4 | import slidePrev from './slidePrev'; 5 | import slideReset from './slideReset'; 6 | import slideToClosest from './slideToClosest'; 7 | import slideToClickedSlide from './slideToClickedSlide'; 8 | 9 | export default { 10 | slideTo, 11 | slideToLoop, 12 | slideNext, 13 | slidePrev, 14 | slideReset, 15 | slideToClosest, 16 | slideToClickedSlide, 17 | }; 18 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/core/slide/slideNext.js: -------------------------------------------------------------------------------- 1 | /* eslint no-unused-vars: "off" */ 2 | export default function (speed = this.params.speed, runCallbacks = true, internal) { 3 | const swiper = this; 4 | const { params, animating } = swiper; 5 | if (params.loop) { 6 | if (animating) return false; 7 | swiper.loopFix(); 8 | // eslint-disable-next-line 9 | swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; 10 | return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal); 11 | } 12 | return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal); 13 | } 14 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/core/slide/slideReset.js: -------------------------------------------------------------------------------- 1 | /* eslint no-unused-vars: "off" */ 2 | export default function (speed = this.params.speed, runCallbacks = true, internal) { 3 | const swiper = this; 4 | return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); 5 | } 6 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/core/slide/slideToClosest.js: -------------------------------------------------------------------------------- 1 | /* eslint no-unused-vars: "off" */ 2 | export default function (speed = this.params.speed, runCallbacks = true, internal) { 3 | const swiper = this; 4 | let index = swiper.activeIndex; 5 | const snapIndex = Math.floor(index / swiper.params.slidesPerGroup); 6 | 7 | if (snapIndex < swiper.snapGrid.length - 1) { 8 | const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 9 | 10 | const currentSnap = swiper.snapGrid[snapIndex]; 11 | const nextSnap = swiper.snapGrid[snapIndex + 1]; 12 | 13 | if ((translate - currentSnap) > (nextSnap - currentSnap) / 2) { 14 | index = swiper.params.slidesPerGroup; 15 | } 16 | } 17 | 18 | return swiper.slideTo(index, speed, runCallbacks, internal); 19 | } 20 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/core/slide/slideToLoop.js: -------------------------------------------------------------------------------- 1 | export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) { 2 | const swiper = this; 3 | let newIndex = index; 4 | if (swiper.params.loop) { 5 | newIndex += swiper.loopedSlides; 6 | } 7 | 8 | return swiper.slideTo(newIndex, speed, runCallbacks, internal); 9 | } 10 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/core/transition/index.js: -------------------------------------------------------------------------------- 1 | import setTransition from './setTransition'; 2 | import transitionStart from './transitionStart'; 3 | import transitionEnd from './transitionEnd'; 4 | 5 | export default { 6 | setTransition, 7 | transitionStart, 8 | transitionEnd, 9 | }; 10 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/core/transition/setTransition.js: -------------------------------------------------------------------------------- 1 | export default function (duration, byController) { 2 | const swiper = this; 3 | 4 | swiper.$wrapperEl.transition(duration); 5 | 6 | swiper.emit('setTransition', duration, byController); 7 | } 8 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/core/translate/getTranslate.js: -------------------------------------------------------------------------------- 1 | import Utils from '../../../utils/utils'; 2 | 3 | export default function (axis = this.isHorizontal() ? 'x' : 'y') { 4 | const swiper = this; 5 | 6 | const { 7 | params, rtlTranslate: rtl, translate, $wrapperEl, 8 | } = swiper; 9 | 10 | if (params.virtualTranslate) { 11 | return rtl ? -translate : translate; 12 | } 13 | 14 | let currentTranslate = Utils.getTranslate($wrapperEl[0], axis); 15 | if (rtl) currentTranslate = -currentTranslate; 16 | 17 | return currentTranslate || 0; 18 | } 19 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/core/translate/index.js: -------------------------------------------------------------------------------- 1 | import getTranslate from './getTranslate'; 2 | import setTranslate from './setTranslate'; 3 | import minTranslate from './minTranslate'; 4 | import maxTranslate from './maxTranslate'; 5 | 6 | export default { 7 | getTranslate, 8 | setTranslate, 9 | minTranslate, 10 | maxTranslate, 11 | }; 12 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/core/translate/maxTranslate.js: -------------------------------------------------------------------------------- 1 | export default function () { 2 | return (-this.snapGrid[this.snapGrid.length - 1]); 3 | } 4 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/core/translate/minTranslate.js: -------------------------------------------------------------------------------- 1 | export default function () { 2 | return (-this.snapGrid[0]); 3 | } 4 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/core/update/index.js: -------------------------------------------------------------------------------- 1 | import updateSize from './updateSize'; 2 | import updateSlides from './updateSlides'; 3 | import updateAutoHeight from './updateAutoHeight'; 4 | import updateSlidesOffset from './updateSlidesOffset'; 5 | import updateSlidesProgress from './updateSlidesProgress'; 6 | import updateProgress from './updateProgress'; 7 | import updateSlidesClasses from './updateSlidesClasses'; 8 | import updateActiveIndex from './updateActiveIndex'; 9 | import updateClickedSlide from './updateClickedSlide'; 10 | 11 | export default { 12 | updateSize, 13 | updateSlides, 14 | updateAutoHeight, 15 | updateSlidesOffset, 16 | updateSlidesProgress, 17 | updateProgress, 18 | updateSlidesClasses, 19 | updateActiveIndex, 20 | updateClickedSlide, 21 | }; 22 | 23 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/core/update/updateSlidesOffset.js: -------------------------------------------------------------------------------- 1 | export default function () { 2 | const swiper = this; 3 | const slides = swiper.slides; 4 | for (let i = 0; i < slides.length; i += 1) { 5 | slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/effect-coverflow/effect-coverflow.less: -------------------------------------------------------------------------------- 1 | .swiper-container-coverflow { 2 | .swiper-wrapper { 3 | /* Windows 8 IE 10 fix */ 4 | -ms-perspective: 1200px; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/effect-fade/effect-fade.less: -------------------------------------------------------------------------------- 1 | .swiper-container-fade { 2 | &.swiper-container-free-mode { 3 | .swiper-slide { 4 | transition-timing-function: ease-out; 5 | } 6 | } 7 | .swiper-slide { 8 | pointer-events: none; 9 | transition-property: opacity; 10 | .swiper-slide { 11 | pointer-events: none; 12 | } 13 | } 14 | .swiper-slide-active { 15 | &, & .swiper-slide-active { 16 | pointer-events: auto; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/effect-flip/effect-flip.less: -------------------------------------------------------------------------------- 1 | .swiper-container-flip { 2 | overflow: visible; 3 | .swiper-slide { 4 | pointer-events: none; 5 | backface-visibility: hidden; 6 | z-index: 1; 7 | .swiper-slide { 8 | pointer-events: none; 9 | } 10 | } 11 | .swiper-slide-active { 12 | &, & .swiper-slide-active { 13 | pointer-events: auto; 14 | } 15 | } 16 | .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left, .swiper-slide-shadow-right { 17 | z-index: 0; 18 | backface-visibility: hidden; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/scrollbar/scrollbar.less: -------------------------------------------------------------------------------- 1 | /* Scrollbar */ 2 | .swiper-scrollbar { 3 | border-radius: 10px; 4 | position: relative; 5 | -ms-touch-action: none; 6 | background: rgba(0,0,0,0.1); 7 | .swiper-container-horizontal > & { 8 | position: absolute; 9 | left: 1%; 10 | bottom: 3px; 11 | z-index: 50; 12 | height: 5px; 13 | width: 98%; 14 | } 15 | .swiper-container-vertical > & { 16 | position: absolute; 17 | right: 3px; 18 | top: 1%; 19 | z-index: 50; 20 | width: 5px; 21 | height: 98%; 22 | } 23 | } 24 | .swiper-scrollbar-drag { 25 | height: 100%; 26 | width: 100%; 27 | position: relative; 28 | background: rgba(0,0,0,0.5); 29 | border-radius: 10px; 30 | left: 0; 31 | top: 0; 32 | } 33 | .swiper-scrollbar-cursor-drag { 34 | cursor: move; 35 | } 36 | .swiper-scrollbar-lock { 37 | display: none; 38 | } -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/components/zoom/zoom.less: -------------------------------------------------------------------------------- 1 | .swiper-zoom-container { 2 | width: 100%; 3 | height: 100%; 4 | display: flex; 5 | justify-content: center; 6 | align-items: center; 7 | text-align: center; 8 | 9 | > img, > svg, > canvas { 10 | max-width: 100%; 11 | max-height: 100%; 12 | object-fit: contain; 13 | } 14 | } 15 | 16 | .swiper-slide-zoomed { 17 | cursor: move; 18 | } 19 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/modules/browser/browser.js: -------------------------------------------------------------------------------- 1 | import Browser from '../../utils/browser'; 2 | 3 | export default { 4 | name: 'browser', 5 | proto: { 6 | browser: Browser, 7 | }, 8 | static: { 9 | browser: Browser, 10 | }, 11 | }; 12 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/modules/device/device.js: -------------------------------------------------------------------------------- 1 | import Device from '../../utils/device'; 2 | 3 | export default { 4 | name: 'device', 5 | proto: { 6 | device: Device, 7 | }, 8 | static: { 9 | device: Device, 10 | }, 11 | }; 12 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/modules/resize/resize.less: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/framework7/dist/components/swiper/swiper-class/modules/resize/resize.less -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/modules/support/support.js: -------------------------------------------------------------------------------- 1 | import Support from '../../utils/support'; 2 | 3 | export default { 4 | name: 'support', 5 | proto: { 6 | support: Support, 7 | }, 8 | static: { 9 | support: Support, 10 | }, 11 | }; 12 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/swiper.less: -------------------------------------------------------------------------------- 1 | @import url('./less/mixins.less'); 2 | 3 | @themeColor: $themeColor; 4 | @colors: $colors; 5 | 6 | @import url('./components/core/core.less'); 7 | 8 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/utils/browser.js: -------------------------------------------------------------------------------- 1 | import { window } from 'ssr-window'; 2 | 3 | const Browser = (function Browser() { 4 | function isSafari() { 5 | const ua = window.navigator.userAgent.toLowerCase(); 6 | return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0); 7 | } 8 | return { 9 | isIE: !!window.navigator.userAgent.match(/Trident/g) || !!window.navigator.userAgent.match(/MSIE/g), 10 | isSafari: isSafari(), 11 | isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent), 12 | }; 13 | }()); 14 | 15 | export default Browser; 16 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/utils/class.js: -------------------------------------------------------------------------------- 1 | import Framework7Class from '../../../../utils/class'; 2 | 3 | export default Framework7Class; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/utils/device.js: -------------------------------------------------------------------------------- 1 | import Device from '../../../../utils/device'; 2 | 3 | export default Device; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/utils/document.js: -------------------------------------------------------------------------------- 1 | export default document; 2 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/utils/dom.js: -------------------------------------------------------------------------------- 1 | import $ from 'dom7'; 2 | 3 | export default $; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/utils/support.js: -------------------------------------------------------------------------------- 1 | import Support from '../../../../utils/support'; 2 | 3 | export default Support; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/utils/utils.js: -------------------------------------------------------------------------------- 1 | import Utils from '../../../../utils/utils'; 2 | 3 | export default Utils; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/swiper/swiper-class/utils/window.js: -------------------------------------------------------------------------------- 1 | export default window; 2 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/tabs/tabs-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | 4 | } 5 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/tabs/tabs-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | @import (multiple) '../../less/colors-md.less'; 3 | 4 | } 5 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/timeline/timeline.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'timeline', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/touch-ripple/touch-ripple-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | 3 | } 4 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/touch-ripple/touch-ripple.js: -------------------------------------------------------------------------------- 1 | import TouchRipple from './touch-ripple-class'; 2 | 3 | export default { 4 | name: 'touch-ripple', 5 | static: { 6 | TouchRipple, 7 | }, 8 | create() { 9 | const app = this; 10 | app.touchRipple = { 11 | create(...args) { 12 | return new TouchRipple(...args); 13 | }, 14 | }; 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/touch-ripple/touch-ripple.less: -------------------------------------------------------------------------------- 1 | /* === Touch Ripple === */ 2 | & when (@includeIosTheme) { 3 | @import url('./touch-ripple-ios.less'); 4 | } 5 | & when (@includeMdTheme) { 6 | @import url('./touch-ripple-md.less'); 7 | } 8 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/typography/typography.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'typography', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/vi/vi-ios.less: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/framework7/dist/components/vi/vi-ios.less -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/vi/vi-md.less: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/framework7/dist/components/vi/vi-md.less -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/view/view.less: -------------------------------------------------------------------------------- 1 | /* === Views === */ 2 | .views, .view { 3 | position: relative; 4 | height: 100%; 5 | z-index: 5000; 6 | overflow: hidden; 7 | box-sizing: border-box; 8 | } 9 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/virtual-list/virtual-list-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | 4 | } 5 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/virtual-list/virtual-list-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | @import (multiple) '../../less/colors-md.less'; 3 | 4 | } 5 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/virtual-list/virtual-list.js: -------------------------------------------------------------------------------- 1 | import VirtualList from './virtual-list-class'; 2 | import ConstructorMethods from '../../utils/constructor-methods'; 3 | 4 | export default { 5 | name: 'virtualList', 6 | static: { 7 | VirtualList, 8 | }, 9 | create() { 10 | const app = this; 11 | app.virtualList = ConstructorMethods({ 12 | defaultSelector: '.virtual-list', 13 | constructor: VirtualList, 14 | app, 15 | domProp: 'f7VirtualList', 16 | }); 17 | }, 18 | }; 19 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/components/virtual-list/virtual-list.less: -------------------------------------------------------------------------------- 1 | /* === Virtual List === */ 2 | 3 | & when (@includeIosTheme) { 4 | @import url('./virtual-list-ios.less'); 5 | } 6 | & when (@includeMdTheme) { 7 | @import url('./virtual-list-md.less'); 8 | } 9 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/less/colors-ios.less: -------------------------------------------------------------------------------- 1 | @red: #ff3b30; 2 | @themeColor: @themeColorIos; 3 | 4 | @colors: @colorsIos; 5 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/less/colors-md.less: -------------------------------------------------------------------------------- 1 | @red: #f44336; 2 | @themeColor: @themeColorMd; 3 | 4 | @colors: @colorsMd; 5 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/less/vars-md.less: -------------------------------------------------------------------------------- 1 | @blockBorderColor: rgba(0,0,0,0.12); 2 | @blockBorderColorDark: rgba(255,255,255,0.08); 3 | @blockBgDark: rgba(255,255,255,0.03); 4 | @barsBg: @themeColor; 5 | @navbarSize: 56px; 6 | @navbarSizeTablet: 64px; 7 | @navbarBg: @barsBg; 8 | @toolbarBg: @barsBg; 9 | @toolbarColor: #fff; 10 | @toolbarLinkColor: #fff; 11 | @toolbarSize: 48px; 12 | @tabbarLabelsSize: 72px; 13 | @tabbarLabelsBottomSize: 56px; 14 | @tabbarLinkColor: rgba(255,255,255,0.7); 15 | @tabbarActiveLinkColor: rgba(255,255,255,1); 16 | @searchbarSize: 48px; 17 | @searchbarBg: #fff; 18 | @messageReceivedBg: #fff; 19 | @messageReceivedColor: #333; 20 | @messageSentBg: #c8e6c9; 21 | @messageSentColor: #333; 22 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/modules/history/history.js: -------------------------------------------------------------------------------- 1 | import History from '../../utils/history'; 2 | 3 | export default { 4 | name: 'history', 5 | static: { 6 | history: History, 7 | }, 8 | on: { 9 | init() { 10 | History.init(this); 11 | }, 12 | }, 13 | }; 14 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/modules/request/request.js: -------------------------------------------------------------------------------- 1 | /* eslint no-param-reassign: "off" */ 2 | import Request from '../../utils/request'; 3 | 4 | export default { 5 | name: 'request', 6 | proto: { 7 | request: Request, 8 | }, 9 | static: { 10 | request: Request, 11 | }, 12 | }; 13 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/modules/router/router.js: -------------------------------------------------------------------------------- 1 | import Router from './router-class'; 2 | 3 | export default { 4 | name: 'router', 5 | static: { 6 | Router, 7 | }, 8 | instance: { 9 | cache: { 10 | xhr: [], 11 | templates: [], 12 | components: [], 13 | }, 14 | }, 15 | create() { 16 | const instance = this; 17 | if (instance.app) { 18 | // View Router 19 | if (instance.params.router) { 20 | instance.router = new Router(instance.app, instance); 21 | } 22 | } else { 23 | // App Router 24 | instance.router = new Router(instance); 25 | } 26 | }, 27 | }; 28 | 29 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/modules/support/support.js: -------------------------------------------------------------------------------- 1 | import { document } from 'ssr-window'; 2 | import Support from '../../utils/support'; 3 | 4 | export default { 5 | name: 'support', 6 | proto: { 7 | support: Support, 8 | }, 9 | static: { 10 | support: Support, 11 | }, 12 | on: { 13 | init() { 14 | const html = document.querySelector('html'); 15 | if (!html) return; 16 | const classNames = []; 17 | if (Support.positionSticky) { 18 | classNames.push('support-position-sticky'); 19 | } 20 | // Add html classes 21 | classNames.forEach((className) => { 22 | html.classList.add(className); 23 | }); 24 | }, 25 | }, 26 | }; 27 | -------------------------------------------------------------------------------- /app/templates/framework7/dist/modules/utils/utils.js: -------------------------------------------------------------------------------- 1 | import Utils from '../../utils/utils'; 2 | 3 | export default { 4 | name: 'utils', 5 | proto: { 6 | utils: Utils, 7 | }, 8 | static: { 9 | utils: Utils, 10 | }, 11 | }; 12 | -------------------------------------------------------------------------------- /app/templates/framework7/gulpfile.js: -------------------------------------------------------------------------------- 1 | require('./scripts/gulpfile'); 2 | -------------------------------------------------------------------------------- /app/templates/framework7/kitchen-sink/fonts/Framework7Icons-Regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/framework7/kitchen-sink/fonts/Framework7Icons-Regular.eot -------------------------------------------------------------------------------- /app/templates/framework7/kitchen-sink/fonts/Framework7Icons-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/framework7/kitchen-sink/fonts/Framework7Icons-Regular.ttf -------------------------------------------------------------------------------- /app/templates/framework7/kitchen-sink/fonts/Framework7Icons-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/framework7/kitchen-sink/fonts/Framework7Icons-Regular.woff -------------------------------------------------------------------------------- /app/templates/framework7/kitchen-sink/fonts/Framework7Icons-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/framework7/kitchen-sink/fonts/Framework7Icons-Regular.woff2 -------------------------------------------------------------------------------- /app/templates/framework7/kitchen-sink/fonts/MaterialIcons-Regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/framework7/kitchen-sink/fonts/MaterialIcons-Regular.eot -------------------------------------------------------------------------------- /app/templates/framework7/kitchen-sink/fonts/MaterialIcons-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/framework7/kitchen-sink/fonts/MaterialIcons-Regular.ttf -------------------------------------------------------------------------------- /app/templates/framework7/kitchen-sink/fonts/MaterialIcons-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/framework7/kitchen-sink/fonts/MaterialIcons-Regular.woff -------------------------------------------------------------------------------- /app/templates/framework7/kitchen-sink/fonts/MaterialIcons-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/framework7/kitchen-sink/fonts/MaterialIcons-Regular.woff2 -------------------------------------------------------------------------------- /app/templates/framework7/kitchen-sink/img/beach.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/framework7/kitchen-sink/img/beach.jpg -------------------------------------------------------------------------------- /app/templates/framework7/kitchen-sink/img/f7-icon-square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/framework7/kitchen-sink/img/f7-icon-square.png -------------------------------------------------------------------------------- /app/templates/framework7/kitchen-sink/img/f7-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/framework7/kitchen-sink/img/f7-icon.png -------------------------------------------------------------------------------- /app/templates/framework7/kitchen-sink/img/lock.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/framework7/kitchen-sink/img/lock.jpg -------------------------------------------------------------------------------- /app/templates/framework7/kitchen-sink/img/monkey.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/framework7/kitchen-sink/img/monkey.jpg -------------------------------------------------------------------------------- /app/templates/framework7/kitchen-sink/img/mountains.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/framework7/kitchen-sink/img/mountains.jpg -------------------------------------------------------------------------------- /app/templates/framework7/kitchen-sink/img/vi-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/framework7/kitchen-sink/img/vi-icon.png -------------------------------------------------------------------------------- /app/templates/framework7/kitchen-sink/js/app.js: -------------------------------------------------------------------------------- 1 | // Dom7 2 | var $ = Dom7; 3 | 4 | // Theme 5 | var theme = 'auto'; 6 | if (document.location.search.indexOf('theme=') >= 0) { 7 | theme = document.location.search.split('theme=')[1].split('&')[0]; 8 | } 9 | 10 | // Init App 11 | var app = new Framework7({ 12 | id: 'io.framework7.testapp', 13 | root: '#app', 14 | theme: theme, 15 | data: function () { 16 | return { 17 | user: { 18 | firstName: 'John', 19 | lastName: 'Doe', 20 | }, 21 | }; 22 | }, 23 | methods: { 24 | helloWorld: function () { 25 | app.dialog.alert('Hello World!'); 26 | }, 27 | }, 28 | routes: routes, 29 | vi: { 30 | placementId: 'pltd4o7ibb9rc653x14', 31 | }, 32 | }); 33 | -------------------------------------------------------------------------------- /app/templates/framework7/kitchen-sink/pages/404.html: -------------------------------------------------------------------------------- 1 |
2 | 13 |
14 |
15 |

Sorry

16 |

Requested content not found.

17 |
18 |
19 |
20 | -------------------------------------------------------------------------------- /app/templates/framework7/kitchen-sink/pages/timeline.html: -------------------------------------------------------------------------------- 1 |
2 | 13 |
14 | 27 |
28 | 29 |
30 | -------------------------------------------------------------------------------- /app/templates/framework7/scripts/banner.js: -------------------------------------------------------------------------------- 1 | const pkg = require('../package.json'); 2 | 3 | const date = { 4 | day: new Date().getDate(), 5 | month: ('January February March April May June July August September October November December').split(' ')[new Date().getMonth()], 6 | year: new Date().getFullYear(), 7 | }; 8 | 9 | module.exports = `${` 10 | /** 11 | * Framework7 ${pkg.version} 12 | * ${pkg.description} 13 | * ${pkg.homepage} 14 | * 15 | * Copyright 2014-${date.year} ${pkg.author} 16 | * 17 | * Released under the ${pkg.license} License 18 | * 19 | * Released on: ${date.month} ${date.day}, ${date.year} 20 | */ 21 | `.trim()}\n`; 22 | -------------------------------------------------------------------------------- /app/templates/framework7/scripts/get-output.js: -------------------------------------------------------------------------------- 1 | /* eslint import/no-unresolved: "off" */ 2 | /* eslint global-require: "off" */ 3 | /* eslint no-console: ["error", { allow: ["log"] }] */ 4 | 5 | const path = require('path'); 6 | 7 | let logged = false; 8 | 9 | function getOutput() { 10 | const args = process.argv; 11 | let outputArgIndex; 12 | let outputPath; 13 | args.forEach((arg, argIndex) => { 14 | if (arg === '--output') outputArgIndex = argIndex; 15 | }); 16 | if (outputArgIndex && args[outputArgIndex + 1]) { 17 | outputPath = path.resolve(args[outputArgIndex + 1]); 18 | } 19 | if (outputPath) { 20 | if (!logged) { 21 | console.log(`Build will be available at ${outputPath}`); 22 | } 23 | logged = true; 24 | } 25 | return outputPath; 26 | } 27 | 28 | module.exports = getOutput; 29 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/badge/badge-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | .badge { 4 | font-size: 13px; 5 | border-radius: 20px; 6 | padding: 0 6px; 7 | height: 20px; 8 | line-height: 20px; 9 | .item-after & { 10 | min-width: 20px; 11 | } 12 | } 13 | .icon, .f7-icons, .framework7-icons, .material-icons { 14 | .badge { 15 | line-height: 16px; 16 | height: 16px; 17 | border-radius: 16px; 18 | padding: 0 4px; 19 | min-width: 16px; 20 | font-family: -apple-system, SF UI Text, Helvetica Neue, Helvetica, Arial, sans-serif; 21 | font-size: 10px; 22 | } 23 | } 24 | .color-loop({ 25 | .badge.color-@{colorName} { 26 | background-color: @colorValue; 27 | } 28 | }); 29 | } 30 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/badge/badge-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | @import (multiple) '../../less/colors-md.less'; 3 | .badge { 4 | font-size: 10px; 5 | border-radius: 3px; 6 | padding: 1px 6px; 7 | vertical-align: middle; 8 | } 9 | .icon, .f7-icons, .framework7-icons, .material-icons { 10 | .badge { 11 | line-height: 1.4; 12 | padding: 1px 5px; 13 | font-family: Roboto, Noto, Helvetica, Arial, sans-serif; 14 | font-size: 10px; 15 | } 16 | } 17 | .color-loop({ 18 | .badge.color-@{colorName} { 19 | background-color: @colorValue; 20 | } 21 | }); 22 | } 23 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/badge/badge.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'badge', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/badge/badge.less: -------------------------------------------------------------------------------- 1 | /* === Badge === */ 2 | .badge { 3 | display: inline-block; 4 | color: #fff; 5 | background: #8e8e93; 6 | position: relative; 7 | box-sizing: border-box; 8 | text-align: center; 9 | .icon &, .f7-icons &, .framework7-icons &, .material-icons & { 10 | position: absolute; 11 | left: 100%; 12 | margin-left: -10px; 13 | top: -2px; 14 | } 15 | } 16 | 17 | & when (@includeIosTheme) { 18 | @import url('./badge-ios.less'); 19 | } 20 | & when (@includeMdTheme) { 21 | @import url('./badge-md.less'); 22 | } 23 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/block/block.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'block', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/button/button.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'button', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/card/card.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'card', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/checkbox/checkbox.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'checkbox', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/chip/chip.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'chip', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/contacts-list/contact-list.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'contactList', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/contacts-list/contacts-list-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | .contacts-list { 4 | margin: 0; 5 | .list-group-title { 6 | padding: 0 15px; 7 | background: #f7f7f7; 8 | color: #000; 9 | font-weight: 600; 10 | line-height: 22px; 11 | height: 22px; 12 | } 13 | } 14 | // Dark Theme 15 | & when (@includeDarkTheme) { 16 | .theme-dark { 17 | .contacts-list, .contacts-list& { 18 | .list-group-title { 19 | background-color: #111; 20 | color: #fff; 21 | } 22 | } 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/contacts-list/contacts-list.less: -------------------------------------------------------------------------------- 1 | /* === Contacts === */ 2 | .contacts-list { 3 | .list-group:first-child ul { 4 | .hairline-remove(top); 5 | } 6 | .list-group:last-child ul { 7 | .hairline-remove(bottom); 8 | } 9 | } 10 | & when (@includeIosTheme) { 11 | @import url('./contacts-list-ios.less'); 12 | } 13 | & when (@includeMdTheme) { 14 | @import url('./contacts-list-md.less'); 15 | } 16 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/core/core-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | @import (multiple) '../../less/colors-md.less'; 3 | body { 4 | font-family: Roboto, Noto, Helvetica, Arial, sans-serif; 5 | color: #212121; 6 | line-height: 1.5; 7 | } 8 | .ios-only, .if-ios { 9 | display: none !important; 10 | } 11 | a { 12 | color: @themeColor; 13 | } 14 | // Dark Theme 15 | & when (@includeDarkTheme) { 16 | .theme-dark { 17 | color: rgba(255,255,255,0.87); 18 | } 19 | } 20 | 21 | .color-theme-loop({ 22 | .color-theme-@{colorThemeName} { 23 | a { 24 | color: @colorThemeValue; 25 | } 26 | } 27 | }); 28 | .color-loop({ 29 | a.color-@{colorName} { 30 | color: @colorValue; 31 | } 32 | }); 33 | } 34 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/grid/grid.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'grid', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/grid/grid.less: -------------------------------------------------------------------------------- 1 | /* === Grid === */ 2 | .row { 3 | display: flex; 4 | justify-content: space-between; 5 | flex-wrap: wrap; 6 | align-items: flex-start; 7 | > [class*="col-"], > .col { 8 | box-sizing: border-box; 9 | } 10 | } 11 | @cols: 5, 10, 15, 20, 25, 30, 100/3, 35, 40, 45, 50, 55, 60, 65, 100*(2/3), 70, 75, 80, 85, 90, 95, 100; 12 | .row { 13 | .col { 14 | width: 100%; 15 | } 16 | } 17 | 18 | & when (@includeIosTheme) { 19 | @import url('./grid-ios.less'); 20 | } 21 | & when (@includeMdTheme) { 22 | @import url('./grid-md.less'); 23 | } 24 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/icon/icon.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'icon', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/icon/icon.less: -------------------------------------------------------------------------------- 1 | /* === Icon === */ 2 | i.icon { 3 | display: inline-block; 4 | vertical-align: middle; 5 | background-size: 100% auto; 6 | background-position: center; 7 | background-repeat: no-repeat; 8 | font-style: normal; 9 | position: relative; 10 | } 11 | 12 | & when (@includeIosTheme) { 13 | @import url('./icon-ios.less'); 14 | } 15 | & when (@includeMdTheme) { 16 | @import url('./icon-md.less'); 17 | } 18 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/infinite-scroll/infinite-scroll-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | 4 | .infinite-scroll-preloader { 5 | margin-top: 35px; 6 | margin-bottom: 35px; 7 | .preloader, &.preloader { 8 | width: 27px; 9 | height: 27px; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/infinite-scroll/infinite-scroll-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | @import (multiple) '../../less/colors-md.less'; 3 | .infinite-scroll-preloader { 4 | margin-top: 32px; 5 | margin-bottom: 32px; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/infinite-scroll/infinite-scroll.less: -------------------------------------------------------------------------------- 1 | /* === Infinite === */ 2 | .infinite-scroll-preloader { 3 | margin-left: auto; 4 | margin-right: auto; 5 | text-align: center; 6 | &.preloader { 7 | display: block; 8 | } 9 | } 10 | & when (@includeIosTheme) { 11 | @import url('./infinite-scroll-ios.less'); 12 | } 13 | & when (@includeMdTheme) { 14 | @import url('./infinite-scroll-md.less'); 15 | } 16 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/lazy/lazy-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | } 4 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/lazy/lazy-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | @import (multiple) '../../less/colors-md.less'; 3 | } 4 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/lazy/lazy.less: -------------------------------------------------------------------------------- 1 | /* === Images Lazy Loading === */ 2 | .lazy-loaded.lazy-fade-in { 3 | animation: lazyFadeIn 600ms; 4 | } 5 | 6 | @keyframes lazyFadeIn { 7 | from { 8 | opacity: 0; 9 | } 10 | to { 11 | opacity: 1; 12 | } 13 | } 14 | 15 | & when (@includeIosTheme) { 16 | @import url('./lazy-ios.less'); 17 | } 18 | & when (@includeMdTheme) { 19 | @import url('./lazy-md.less'); 20 | } 21 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/link/link-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | .link { 3 | transition: opacity 300ms; 4 | i + span, i + i, span + i, span + span { 5 | .ltr({ 6 | margin-left: 7px; 7 | }); 8 | .rtl({ 9 | margin-right: 7px; 10 | }); 11 | } 12 | &.active-state { 13 | opacity: 0.3; 14 | transition-duration: 0ms; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/link/link-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | .link { 3 | i + span, i + i, span + i, span + span { 4 | .ltr({ 5 | margin-left: 8px; 6 | }); 7 | .rtl({ 8 | margin-right: 8px; 9 | }); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/link/link.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'link', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/link/link.less: -------------------------------------------------------------------------------- 1 | /* === Link === */ 2 | .link, .tab-link { 3 | display: inline-flex; 4 | align-items: center; 5 | align-content: center; 6 | justify-content: center; 7 | position: relative; 8 | box-sizing: border-box; 9 | transform: translate3d(0, 0, 0); 10 | z-index: 1; 11 | } 12 | 13 | & when (@includeIosTheme) { 14 | @import url('./link-ios.less'); 15 | } 16 | & when (@includeMdTheme) { 17 | @import url('./link-md.less'); 18 | } 19 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/list/list.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'list', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/login-screen/login-screen-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | .login-screen-content { 4 | .login-screen-title, .list, .block { 5 | margin: 25px auto; 6 | } 7 | } 8 | .login-screen-title { 9 | font-size: 30px; 10 | } 11 | // Dark Theme 12 | & when (@includeDarkTheme) { 13 | .theme-dark { 14 | .login-screen-content, .login-screen-content .list ul { 15 | background-color: transparent; 16 | } 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/login-screen/login-screen.js: -------------------------------------------------------------------------------- 1 | import LoginScreen from './login-screen-class'; 2 | import ModalMethods from '../../utils/modal-methods'; 3 | 4 | export default { 5 | name: 'loginScreen', 6 | static: { 7 | LoginScreen, 8 | }, 9 | create() { 10 | const app = this; 11 | app.loginScreen = ModalMethods({ 12 | app, 13 | constructor: LoginScreen, 14 | defaultSelector: '.login-screen.modal-in', 15 | }); 16 | }, 17 | clicks: { 18 | '.login-screen-open': function openLoginScreen($clickedEl, data = {}) { 19 | const app = this; 20 | app.loginScreen.open(data.loginScreen, data.animate); 21 | }, 22 | '.login-screen-close': function closeLoginScreen($clickedEl, data = {}) { 23 | const app = this; 24 | app.loginScreen.close(data.loginScreen, data.animate); 25 | }, 26 | }, 27 | }; 28 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/modal/modal.js: -------------------------------------------------------------------------------- 1 | import Modal from './modal-class'; 2 | import CustomModal from './custom-modal-class'; 3 | 4 | export default { 5 | name: 'modal', 6 | static: { 7 | Modal, 8 | CustomModal, 9 | }, 10 | create() { 11 | const app = this; 12 | app.customModal = { 13 | create(params) { 14 | return new CustomModal(app, params); 15 | }, 16 | }; 17 | }, 18 | params: { 19 | modal: { 20 | moveToRoot: true, 21 | queueDialogs: true, 22 | }, 23 | }, 24 | }; 25 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/modal/modal.less: -------------------------------------------------------------------------------- 1 | .custom-modal-backdrop { 2 | .modal-backdrop(); 3 | z-index: 10500; 4 | } 5 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/page/page.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'page', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/page/page.less: -------------------------------------------------------------------------------- 1 | /* === Pages === */ 2 | .pages { 3 | position: relative; 4 | width: 100%; 5 | height: 100%; 6 | overflow: hidden; 7 | } 8 | .page { 9 | box-sizing: border-box; 10 | position: absolute; 11 | left: 0; 12 | top: 0; 13 | width: 100%; 14 | height: 100%; 15 | transform: translate3d(0,0,0); 16 | &.stacked { 17 | display: none; 18 | } 19 | } 20 | .page-previous { 21 | pointer-events: none; 22 | } 23 | .page-content { 24 | .scrollable(); 25 | box-sizing: border-box; 26 | height: 100%; 27 | position: relative; 28 | z-index: 1; 29 | } 30 | 31 | & when (@includeIosTheme) { 32 | @import url('./page-ios.less'); 33 | } 34 | & when (@includeMdTheme) { 35 | @import url('./page-md.less'); 36 | } 37 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/panel/panel-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | .panel-backdrop { 4 | transition-duration: 400ms; 5 | background: rgba(0,0,0,0); 6 | } 7 | .panel { 8 | transition-duration: 400ms; 9 | } 10 | &.with-panel-left-reveal, &.with-panel-right-reveal, &.with-panel-transitioning { 11 | .views, .framework7-root > .view { 12 | transition-duration: 400ms; 13 | transition-property: transform; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/popup/popup-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | 4 | } 5 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/popup/popup-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | @import (multiple) '../../less/colors-md.less'; 3 | @media (min-width: 630px) and (min-height: 630px) { 4 | .popup:not(.popup-tablet-fullscreen) { 5 | box-shadow: 0px 20px 44px rgba(0,0,0,0.5); 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/popup/popup.js: -------------------------------------------------------------------------------- 1 | import Popup from './popup-class'; 2 | import ModalMethods from '../../utils/modal-methods'; 3 | 4 | export default { 5 | name: 'popup', 6 | params: { 7 | popup: { 8 | backdrop: true, 9 | closeByBackdropClick: true, 10 | }, 11 | }, 12 | static: { 13 | Popup, 14 | }, 15 | create() { 16 | const app = this; 17 | app.popup = ModalMethods({ 18 | app, 19 | constructor: Popup, 20 | defaultSelector: '.popup.modal-in', 21 | }); 22 | }, 23 | clicks: { 24 | '.popup-open': function openPopup($clickedEl, data = {}) { 25 | const app = this; 26 | app.popup.open(data.popup, data.animate); 27 | }, 28 | '.popup-close': function closePopup($clickedEl, data = {}) { 29 | const app = this; 30 | app.popup.close(data.popup, data.animate); 31 | }, 32 | }, 33 | }; 34 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/preloader/preloader.less: -------------------------------------------------------------------------------- 1 | /* === Preloader === */ 2 | .preloader { 3 | display: inline-block; 4 | vertical-align: middle; 5 | } 6 | 7 | /* === Preloader Modal === */ 8 | .preloader-backdrop { 9 | .modal-backdrop(); 10 | visibility: visible; 11 | opacity: 0; 12 | background: none; 13 | } 14 | .preloader-modal { 15 | position: absolute; 16 | left: 50%; 17 | top: 50%; 18 | padding: 8px; 19 | background: rgba(0,0,0,0.8); 20 | z-index: 13500; 21 | transform: translateX(-50%) translateY(-50%); 22 | .preloader { 23 | display: block !important; 24 | } 25 | } 26 | html.with-modal-preloader { 27 | .page-content { 28 | .not-scrollable(); 29 | } 30 | } 31 | & when (@includeIosTheme) { 32 | @import url('./preloader-ios.less'); 33 | } 34 | & when (@includeMdTheme) { 35 | @import url('./preloader-md.less'); 36 | } 37 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/pull-to-refresh/pull-to-refresh.less: -------------------------------------------------------------------------------- 1 | /* === PTR === */ 2 | .ptr-preloader { 3 | .preloader { 4 | position: absolute; 5 | left: 50%; 6 | } 7 | } 8 | & when (@includeIosTheme) { 9 | @import url('./pull-to-refresh-ios.less'); 10 | } 11 | & when (@includeMdTheme) { 12 | @import url('./pull-to-refresh-md.less'); 13 | } 14 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/radio/radio.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'radio', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/smart-select/smart-select-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | @import (multiple) '../../less/vars-ios.less'; 4 | .smart-select-sheet { 5 | .page { 6 | background: #fff; 7 | } 8 | } 9 | .hairline-root('.smart-select-sheet .toolbar', bottom, @barsBorderColor); 10 | // Dark Theme 11 | & when (@includeDarkTheme) { 12 | .theme-dark { 13 | .smart-select-sheet .page, 14 | .smart-select-sheet .sheet-modal-inner { 15 | background-color: @blockBgDark; 16 | } 17 | .smart-select-sheet .toolbar { 18 | .hairline-color(bottom, @barsBorderColorDark); 19 | } 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/smart-select/smart-select-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | @import (multiple) '../../less/colors-md.less'; 3 | // Dark Theme 4 | & when (@includeDarkTheme) { 5 | .theme-dark { 6 | .sheet-modal.smart-select-sheet .sheet-modal-inner { 7 | background-color: transparent; 8 | } 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/smart-select/smart-select.less: -------------------------------------------------------------------------------- 1 | /* === Smart Select === */ 2 | .smart-select { 3 | select { 4 | display: none; 5 | } 6 | .item-after { 7 | max-width: 70%; 8 | overflow: hidden; 9 | text-overflow: ellipsis; 10 | position: relative; 11 | display: block; 12 | } 13 | 14 | } 15 | .sheet-modal.smart-select-sheet { 16 | .sheet-modal-inner { 17 | background: #fff; 18 | } 19 | .list { 20 | margin: 0; 21 | ul { 22 | .hairline-remove(top); 23 | .hairline-remove(bottom); 24 | } 25 | } 26 | } 27 | .smart-select-popover .popover-inner { 28 | max-height: 40vh; 29 | } 30 | & when (@includeIosTheme) { 31 | @import url('./smart-select-ios.less'); 32 | } 33 | & when (@includeMdTheme) { 34 | @import url('./smart-select-md.less'); 35 | } 36 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/statusbar/statusbar-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | @import (multiple) '../../less/vars-ios.less'; 4 | .statusbar { 5 | background: #f7f7f8; 6 | } 7 | // Dark Theme 8 | & when (@includeDarkTheme) { 9 | .theme-dark { 10 | .statusbar { 11 | background-color: @barsBgDark; 12 | } 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/statusbar/statusbar-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | @import (multiple) '../../less/colors-md.less'; 3 | .statusbar { 4 | background: darken(@themeColor, 15%); 5 | } 6 | .color-theme-loop({ 7 | .color-theme-@{colorThemeName} .statusbar { 8 | background: darken(@colorThemeValue, 15%); 9 | } 10 | }); 11 | } 12 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/subnavbar/subnavbar.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'subnavbar', 3 | on: { 4 | pageInit(page) { 5 | if (page.$navbarEl && page.$navbarEl.length && page.$navbarEl.find('.subnavbar').length) { 6 | page.$el.addClass('page-with-subnavbar'); 7 | } 8 | if (page.$el.find('.subnavbar').length) { 9 | page.$el.addClass('page-with-subnavbar'); 10 | } 11 | }, 12 | }, 13 | }; 14 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swipeout/swipeout-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | .swipeout-actions-left, .swipeout-actions-right { 4 | > a, > button, > span, > div { 5 | padding: 0 30px; 6 | color: #fff; 7 | } 8 | .swipeout-delete { 9 | background: @red; 10 | } 11 | } 12 | .color-loop({ 13 | .swipeout-actions-left, .swipeout-actions-right { 14 | > a, > button, > span, > div { 15 | &.color-@{colorName} { 16 | background-color: @colorValue; 17 | } 18 | } 19 | } 20 | }); 21 | } 22 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swipeout/swipeout-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | @import (multiple) '../../less/colors-md.less'; 3 | .swipeout-actions-left, .swipeout-actions-right { 4 | > a, > button, > span, > div { 5 | padding: 0 24px; 6 | color: #fff; 7 | } 8 | .swipeout-delete { 9 | background: @red; 10 | } 11 | } 12 | .color-loop({ 13 | .swipeout-actions-left, .swipeout-actions-right { 14 | > a, > button, > span, > div { 15 | &.color-@{colorName} { 16 | background-color: @colorValue; 17 | } 18 | } 19 | } 20 | }); 21 | } 22 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/a11y/a11y.less: -------------------------------------------------------------------------------- 1 | /* a11y */ 2 | .swiper-container .swiper-notification { 3 | position: absolute; 4 | left: 0; 5 | top: 0; 6 | pointer-events: none; 7 | opacity: 0; 8 | z-index: -1000; 9 | } 10 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/controller/controller.less: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/framework7/src/components/swiper/swiper-class/components/controller/controller.less -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/core/breakpoints/getBreakpoint.js: -------------------------------------------------------------------------------- 1 | import { window } from 'ssr-window'; 2 | 3 | export default function (breakpoints) { 4 | // Get breakpoint for window width 5 | if (!breakpoints) return undefined; 6 | let breakpoint = false; 7 | const points = []; 8 | Object.keys(breakpoints).forEach((point) => { 9 | points.push(point); 10 | }); 11 | points.sort((a, b) => parseInt(a, 10) - parseInt(b, 10)); 12 | for (let i = 0; i < points.length; i += 1) { 13 | const point = points[i]; 14 | if (point >= window.innerWidth && !breakpoint) { 15 | breakpoint = point; 16 | } 17 | } 18 | return breakpoint || 'max'; 19 | } 20 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/core/breakpoints/index.js: -------------------------------------------------------------------------------- 1 | import setBreakpoint from './setBreakpoint'; 2 | import getBreakpoint from './getBreakpoint'; 3 | 4 | export default { setBreakpoint, getBreakpoint }; 5 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/core/check-overflow/index.js: -------------------------------------------------------------------------------- 1 | 2 | function checkOverflow() { 3 | const swiper = this; 4 | const wasLocked = swiper.isLocked; 5 | 6 | swiper.isLocked = swiper.snapGrid.length === 1; 7 | swiper.allowSlideNext = !swiper.isLocked; 8 | swiper.allowSlidePrev = !swiper.isLocked; 9 | 10 | // events 11 | if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); 12 | 13 | if (wasLocked && wasLocked !== swiper.isLocked) { 14 | swiper.isEnd = false; 15 | swiper.navigation.update(); 16 | } 17 | } 18 | 19 | export default { checkOverflow }; 20 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/core/classes/index.js: -------------------------------------------------------------------------------- 1 | import addClasses from './addClasses'; 2 | import removeClasses from './removeClasses'; 3 | 4 | export default { addClasses, removeClasses }; 5 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/core/classes/removeClasses.js: -------------------------------------------------------------------------------- 1 | export default function () { 2 | const swiper = this; 3 | const { $el, classNames } = swiper; 4 | 5 | $el.removeClass(classNames.join(' ')); 6 | } 7 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/core/events/onClick.js: -------------------------------------------------------------------------------- 1 | export default function (e) { 2 | const swiper = this; 3 | if (process.env.TARGET === 'desktop') { 4 | swiper.emit('tap click', e); 5 | } else if (!swiper.allowClick) { 6 | if (swiper.params.preventClicks) e.preventDefault(); 7 | if (swiper.params.preventClicksPropagation && swiper.animating) { 8 | e.stopPropagation(); 9 | e.stopImmediatePropagation(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/core/grab-cursor/index.js: -------------------------------------------------------------------------------- 1 | import setGrabCursor from './setGrabCursor'; 2 | import unsetGrabCursor from './unsetGrabCursor'; 3 | 4 | export default { 5 | setGrabCursor, 6 | unsetGrabCursor, 7 | }; 8 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/core/grab-cursor/setGrabCursor.js: -------------------------------------------------------------------------------- 1 | import Support from '../../../utils/support'; 2 | 3 | export default function (moving) { 4 | const swiper = this; 5 | if (Support.touch || !swiper.params.simulateTouch) return; 6 | const el = swiper.el; 7 | el.style.cursor = 'move'; 8 | el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab'; 9 | el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab'; 10 | el.style.cursor = moving ? 'grabbing' : 'grab'; 11 | } 12 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/core/grab-cursor/unsetGrabCursor.js: -------------------------------------------------------------------------------- 1 | import Support from '../../../utils/support'; 2 | 3 | export default function () { 4 | const swiper = this; 5 | if (Support.touch) return; 6 | swiper.el.style.cursor = ''; 7 | } 8 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/core/images/index.js: -------------------------------------------------------------------------------- 1 | import loadImage from './loadImage'; 2 | import preloadImages from './preloadImages'; 3 | 4 | export default { 5 | loadImage, 6 | preloadImages, 7 | }; 8 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/core/images/loadImage.js: -------------------------------------------------------------------------------- 1 | import { window } from 'ssr-window'; 2 | 3 | export default function (imageEl, src, srcset, sizes, checkForComplete, callback) { 4 | let image; 5 | function onReady() { 6 | if (callback) callback(); 7 | } 8 | if (!imageEl.complete || !checkForComplete) { 9 | if (src) { 10 | image = new window.Image(); 11 | image.onload = onReady; 12 | image.onerror = onReady; 13 | if (sizes) { 14 | image.sizes = sizes; 15 | } 16 | if (srcset) { 17 | image.srcset = srcset; 18 | } 19 | if (src) { 20 | image.src = src; 21 | } 22 | } else { 23 | onReady(); 24 | } 25 | } else { 26 | // image already loaded... 27 | onReady(); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/core/loop/index.js: -------------------------------------------------------------------------------- 1 | import loopCreate from './loopCreate'; 2 | import loopFix from './loopFix'; 3 | import loopDestroy from './loopDestroy'; 4 | 5 | export default { 6 | loopCreate, 7 | loopFix, 8 | loopDestroy, 9 | }; 10 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/core/loop/loopDestroy.js: -------------------------------------------------------------------------------- 1 | export default function () { 2 | const swiper = this; 3 | const { $wrapperEl, params, slides } = swiper; 4 | $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove(); 5 | slides.removeAttr('data-swiper-slide-index'); 6 | } 7 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/core/manipulation/appendSlide.js: -------------------------------------------------------------------------------- 1 | import Support from '../../../utils/support'; 2 | 3 | export default function (slides) { 4 | const swiper = this; 5 | const { $wrapperEl, params } = swiper; 6 | if (params.loop) { 7 | swiper.loopDestroy(); 8 | } 9 | if (typeof slides === 'object' && 'length' in slides) { 10 | for (let i = 0; i < slides.length; i += 1) { 11 | if (slides[i]) $wrapperEl.append(slides[i]); 12 | } 13 | } else { 14 | $wrapperEl.append(slides); 15 | } 16 | if (params.loop) { 17 | swiper.loopCreate(); 18 | } 19 | if (!(params.observer && Support.observer)) { 20 | swiper.update(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/core/manipulation/index.js: -------------------------------------------------------------------------------- 1 | import appendSlide from './appendSlide'; 2 | import prependSlide from './prependSlide'; 3 | import removeSlide from './removeSlide'; 4 | import removeAllSlides from './removeAllSlides'; 5 | 6 | export default { 7 | appendSlide, 8 | prependSlide, 9 | removeSlide, 10 | removeAllSlides, 11 | }; 12 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/core/manipulation/prependSlide.js: -------------------------------------------------------------------------------- 1 | import Support from '../../../utils/support'; 2 | 3 | export default function (slides) { 4 | const swiper = this; 5 | const { params, $wrapperEl, activeIndex } = swiper; 6 | 7 | if (params.loop) { 8 | swiper.loopDestroy(); 9 | } 10 | let newActiveIndex = activeIndex + 1; 11 | if (typeof slides === 'object' && 'length' in slides) { 12 | for (let i = 0; i < slides.length; i += 1) { 13 | if (slides[i]) $wrapperEl.prepend(slides[i]); 14 | } 15 | newActiveIndex = activeIndex + slides.length; 16 | } else { 17 | $wrapperEl.prepend(slides); 18 | } 19 | if (params.loop) { 20 | swiper.loopCreate(); 21 | } 22 | if (!(params.observer && Support.observer)) { 23 | swiper.update(); 24 | } 25 | swiper.slideTo(newActiveIndex, 0, false); 26 | } 27 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/core/manipulation/removeAllSlides.js: -------------------------------------------------------------------------------- 1 | export default function () { 2 | const swiper = this; 3 | 4 | const slidesIndexes = []; 5 | for (let i = 0; i < swiper.slides.length; i += 1) { 6 | slidesIndexes.push(i); 7 | } 8 | swiper.removeSlide(slidesIndexes); 9 | } 10 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/core/slide/index.js: -------------------------------------------------------------------------------- 1 | import slideTo from './slideTo'; 2 | import slideToLoop from './slideToLoop'; 3 | import slideNext from './slideNext'; 4 | import slidePrev from './slidePrev'; 5 | import slideReset from './slideReset'; 6 | import slideToClosest from './slideToClosest'; 7 | import slideToClickedSlide from './slideToClickedSlide'; 8 | 9 | export default { 10 | slideTo, 11 | slideToLoop, 12 | slideNext, 13 | slidePrev, 14 | slideReset, 15 | slideToClosest, 16 | slideToClickedSlide, 17 | }; 18 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/core/slide/slideNext.js: -------------------------------------------------------------------------------- 1 | /* eslint no-unused-vars: "off" */ 2 | export default function (speed = this.params.speed, runCallbacks = true, internal) { 3 | const swiper = this; 4 | const { params, animating } = swiper; 5 | if (params.loop) { 6 | if (animating) return false; 7 | swiper.loopFix(); 8 | // eslint-disable-next-line 9 | swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; 10 | return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal); 11 | } 12 | return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal); 13 | } 14 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/core/slide/slideReset.js: -------------------------------------------------------------------------------- 1 | /* eslint no-unused-vars: "off" */ 2 | export default function (speed = this.params.speed, runCallbacks = true, internal) { 3 | const swiper = this; 4 | return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); 5 | } 6 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/core/slide/slideToClosest.js: -------------------------------------------------------------------------------- 1 | /* eslint no-unused-vars: "off" */ 2 | export default function (speed = this.params.speed, runCallbacks = true, internal) { 3 | const swiper = this; 4 | let index = swiper.activeIndex; 5 | const snapIndex = Math.floor(index / swiper.params.slidesPerGroup); 6 | 7 | if (snapIndex < swiper.snapGrid.length - 1) { 8 | const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 9 | 10 | const currentSnap = swiper.snapGrid[snapIndex]; 11 | const nextSnap = swiper.snapGrid[snapIndex + 1]; 12 | 13 | if ((translate - currentSnap) > (nextSnap - currentSnap) / 2) { 14 | index = swiper.params.slidesPerGroup; 15 | } 16 | } 17 | 18 | return swiper.slideTo(index, speed, runCallbacks, internal); 19 | } 20 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/core/slide/slideToLoop.js: -------------------------------------------------------------------------------- 1 | export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) { 2 | const swiper = this; 3 | let newIndex = index; 4 | if (swiper.params.loop) { 5 | newIndex += swiper.loopedSlides; 6 | } 7 | 8 | return swiper.slideTo(newIndex, speed, runCallbacks, internal); 9 | } 10 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/core/transition/index.js: -------------------------------------------------------------------------------- 1 | import setTransition from './setTransition'; 2 | import transitionStart from './transitionStart'; 3 | import transitionEnd from './transitionEnd'; 4 | 5 | export default { 6 | setTransition, 7 | transitionStart, 8 | transitionEnd, 9 | }; 10 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/core/transition/setTransition.js: -------------------------------------------------------------------------------- 1 | export default function (duration, byController) { 2 | const swiper = this; 3 | 4 | swiper.$wrapperEl.transition(duration); 5 | 6 | swiper.emit('setTransition', duration, byController); 7 | } 8 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/core/translate/getTranslate.js: -------------------------------------------------------------------------------- 1 | import Utils from '../../../utils/utils'; 2 | 3 | export default function (axis = this.isHorizontal() ? 'x' : 'y') { 4 | const swiper = this; 5 | 6 | const { 7 | params, rtlTranslate: rtl, translate, $wrapperEl, 8 | } = swiper; 9 | 10 | if (params.virtualTranslate) { 11 | return rtl ? -translate : translate; 12 | } 13 | 14 | let currentTranslate = Utils.getTranslate($wrapperEl[0], axis); 15 | if (rtl) currentTranslate = -currentTranslate; 16 | 17 | return currentTranslate || 0; 18 | } 19 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/core/translate/index.js: -------------------------------------------------------------------------------- 1 | import getTranslate from './getTranslate'; 2 | import setTranslate from './setTranslate'; 3 | import minTranslate from './minTranslate'; 4 | import maxTranslate from './maxTranslate'; 5 | 6 | export default { 7 | getTranslate, 8 | setTranslate, 9 | minTranslate, 10 | maxTranslate, 11 | }; 12 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/core/translate/maxTranslate.js: -------------------------------------------------------------------------------- 1 | export default function () { 2 | return (-this.snapGrid[this.snapGrid.length - 1]); 3 | } 4 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/core/translate/minTranslate.js: -------------------------------------------------------------------------------- 1 | export default function () { 2 | return (-this.snapGrid[0]); 3 | } 4 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/core/update/index.js: -------------------------------------------------------------------------------- 1 | import updateSize from './updateSize'; 2 | import updateSlides from './updateSlides'; 3 | import updateAutoHeight from './updateAutoHeight'; 4 | import updateSlidesOffset from './updateSlidesOffset'; 5 | import updateSlidesProgress from './updateSlidesProgress'; 6 | import updateProgress from './updateProgress'; 7 | import updateSlidesClasses from './updateSlidesClasses'; 8 | import updateActiveIndex from './updateActiveIndex'; 9 | import updateClickedSlide from './updateClickedSlide'; 10 | 11 | export default { 12 | updateSize, 13 | updateSlides, 14 | updateAutoHeight, 15 | updateSlidesOffset, 16 | updateSlidesProgress, 17 | updateProgress, 18 | updateSlidesClasses, 19 | updateActiveIndex, 20 | updateClickedSlide, 21 | }; 22 | 23 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/core/update/updateSlidesOffset.js: -------------------------------------------------------------------------------- 1 | export default function () { 2 | const swiper = this; 3 | const slides = swiper.slides; 4 | for (let i = 0; i < slides.length; i += 1) { 5 | slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/effect-coverflow/effect-coverflow.less: -------------------------------------------------------------------------------- 1 | .swiper-container-coverflow { 2 | .swiper-wrapper { 3 | /* Windows 8 IE 10 fix */ 4 | -ms-perspective: 1200px; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/effect-fade/effect-fade.less: -------------------------------------------------------------------------------- 1 | .swiper-container-fade { 2 | &.swiper-container-free-mode { 3 | .swiper-slide { 4 | transition-timing-function: ease-out; 5 | } 6 | } 7 | .swiper-slide { 8 | pointer-events: none; 9 | transition-property: opacity; 10 | .swiper-slide { 11 | pointer-events: none; 12 | } 13 | } 14 | .swiper-slide-active { 15 | &, & .swiper-slide-active { 16 | pointer-events: auto; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/effect-flip/effect-flip.less: -------------------------------------------------------------------------------- 1 | .swiper-container-flip { 2 | overflow: visible; 3 | .swiper-slide { 4 | pointer-events: none; 5 | backface-visibility: hidden; 6 | z-index: 1; 7 | .swiper-slide { 8 | pointer-events: none; 9 | } 10 | } 11 | .swiper-slide-active { 12 | &, & .swiper-slide-active { 13 | pointer-events: auto; 14 | } 15 | } 16 | .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left, .swiper-slide-shadow-right { 17 | z-index: 0; 18 | backface-visibility: hidden; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/components/zoom/zoom.less: -------------------------------------------------------------------------------- 1 | .swiper-zoom-container { 2 | width: 100%; 3 | height: 100%; 4 | display: flex; 5 | justify-content: center; 6 | align-items: center; 7 | text-align: center; 8 | 9 | > img, > svg, > canvas { 10 | max-width: 100%; 11 | max-height: 100%; 12 | object-fit: contain; 13 | } 14 | } 15 | 16 | .swiper-slide-zoomed { 17 | cursor: move; 18 | } 19 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/modules/browser/browser.js: -------------------------------------------------------------------------------- 1 | import Browser from '../../utils/browser'; 2 | 3 | export default { 4 | name: 'browser', 5 | proto: { 6 | browser: Browser, 7 | }, 8 | static: { 9 | browser: Browser, 10 | }, 11 | }; 12 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/modules/device/device.js: -------------------------------------------------------------------------------- 1 | import Device from '../../utils/device'; 2 | 3 | export default { 4 | name: 'device', 5 | proto: { 6 | device: Device, 7 | }, 8 | static: { 9 | device: Device, 10 | }, 11 | }; 12 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/modules/resize/resize.less: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/framework7/src/components/swiper/swiper-class/modules/resize/resize.less -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/modules/support/support.js: -------------------------------------------------------------------------------- 1 | import Support from '../../utils/support'; 2 | 3 | export default { 4 | name: 'support', 5 | proto: { 6 | support: Support, 7 | }, 8 | static: { 9 | support: Support, 10 | }, 11 | }; 12 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/swiper.less: -------------------------------------------------------------------------------- 1 | @import url('./less/mixins.less'); 2 | 3 | @themeColor: $themeColor; 4 | @colors: $colors; 5 | 6 | @import url('./components/core/core.less'); 7 | 8 | //IMPORT_COMPONENTS 9 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/utils/browser.js: -------------------------------------------------------------------------------- 1 | import { window } from 'ssr-window'; 2 | 3 | const Browser = (function Browser() { 4 | function isSafari() { 5 | const ua = window.navigator.userAgent.toLowerCase(); 6 | return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0); 7 | } 8 | return { 9 | isIE: !!window.navigator.userAgent.match(/Trident/g) || !!window.navigator.userAgent.match(/MSIE/g), 10 | isSafari: isSafari(), 11 | isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent), 12 | }; 13 | }()); 14 | 15 | export default Browser; 16 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/utils/class.js: -------------------------------------------------------------------------------- 1 | import Framework7Class from '../../../../utils/class'; 2 | 3 | export default Framework7Class; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/utils/device.js: -------------------------------------------------------------------------------- 1 | import Device from '../../../../utils/device'; 2 | 3 | export default Device; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/utils/dom.js: -------------------------------------------------------------------------------- 1 | import $ from 'dom7'; 2 | 3 | export default $; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/utils/support.js: -------------------------------------------------------------------------------- 1 | import Support from '../../../../utils/support'; 2 | 3 | export default Support; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/swiper/swiper-class/utils/utils.js: -------------------------------------------------------------------------------- 1 | import Utils from '../../../../utils/utils'; 2 | 3 | export default Utils; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/tabs/tabs-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | 4 | } 5 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/tabs/tabs-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | @import (multiple) '../../less/colors-md.less'; 3 | 4 | } 5 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/timeline/timeline.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'timeline', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/touch-ripple/touch-ripple-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | 3 | } 4 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/touch-ripple/touch-ripple.js: -------------------------------------------------------------------------------- 1 | import TouchRipple from './touch-ripple-class'; 2 | 3 | export default { 4 | name: 'touch-ripple', 5 | static: { 6 | TouchRipple, 7 | }, 8 | create() { 9 | const app = this; 10 | app.touchRipple = { 11 | create(...args) { 12 | return new TouchRipple(...args); 13 | }, 14 | }; 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/touch-ripple/touch-ripple.less: -------------------------------------------------------------------------------- 1 | /* === Touch Ripple === */ 2 | & when (@includeIosTheme) { 3 | @import url('./touch-ripple-ios.less'); 4 | } 5 | & when (@includeMdTheme) { 6 | @import url('./touch-ripple-md.less'); 7 | } 8 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/typography/typography.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'typography', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/vi/vi-ios.less: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/framework7/src/components/vi/vi-ios.less -------------------------------------------------------------------------------- /app/templates/framework7/src/components/vi/vi-md.less: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/framework7/src/components/vi/vi-md.less -------------------------------------------------------------------------------- /app/templates/framework7/src/components/view/view.less: -------------------------------------------------------------------------------- 1 | /* === Views === */ 2 | .views, .view { 3 | position: relative; 4 | height: 100%; 5 | z-index: 5000; 6 | overflow: hidden; 7 | box-sizing: border-box; 8 | } 9 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/virtual-list/virtual-list-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | 4 | } 5 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/virtual-list/virtual-list-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | @import (multiple) '../../less/colors-md.less'; 3 | 4 | } 5 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/virtual-list/virtual-list.js: -------------------------------------------------------------------------------- 1 | import VirtualList from './virtual-list-class'; 2 | import ConstructorMethods from '../../utils/constructor-methods'; 3 | 4 | export default { 5 | name: 'virtualList', 6 | static: { 7 | VirtualList, 8 | }, 9 | create() { 10 | const app = this; 11 | app.virtualList = ConstructorMethods({ 12 | defaultSelector: '.virtual-list', 13 | constructor: VirtualList, 14 | app, 15 | domProp: 'f7VirtualList', 16 | }); 17 | }, 18 | }; 19 | -------------------------------------------------------------------------------- /app/templates/framework7/src/components/virtual-list/virtual-list.less: -------------------------------------------------------------------------------- 1 | /* === Virtual List === */ 2 | 3 | & when (@includeIosTheme) { 4 | @import url('./virtual-list-ios.less'); 5 | } 6 | & when (@includeMdTheme) { 7 | @import url('./virtual-list-md.less'); 8 | } 9 | -------------------------------------------------------------------------------- /app/templates/framework7/src/less/colors-ios.less: -------------------------------------------------------------------------------- 1 | @red: #ff3b30; 2 | @themeColor: @themeColorIos; 3 | 4 | @colors: @colorsIos; 5 | -------------------------------------------------------------------------------- /app/templates/framework7/src/less/colors-md.less: -------------------------------------------------------------------------------- 1 | @red: #f44336; 2 | @themeColor: @themeColorMd; 3 | 4 | @colors: @colorsMd; 5 | -------------------------------------------------------------------------------- /app/templates/framework7/src/less/vars-md.less: -------------------------------------------------------------------------------- 1 | @blockBorderColor: rgba(0,0,0,0.12); 2 | @blockBorderColorDark: rgba(255,255,255,0.08); 3 | @blockBgDark: rgba(255,255,255,0.03); 4 | @barsBg: @themeColor; 5 | @navbarSize: 56px; 6 | @navbarSizeTablet: 64px; 7 | @navbarBg: @barsBg; 8 | @toolbarBg: @barsBg; 9 | @toolbarColor: #fff; 10 | @toolbarLinkColor: #fff; 11 | @toolbarSize: 48px; 12 | @tabbarLabelsSize: 72px; 13 | @tabbarLabelsBottomSize: 56px; 14 | @tabbarLinkColor: rgba(255,255,255,0.7); 15 | @tabbarActiveLinkColor: rgba(255,255,255,1); 16 | @searchbarSize: 48px; 17 | @searchbarBg: #fff; 18 | @messageReceivedBg: #fff; 19 | @messageReceivedColor: #333; 20 | @messageSentBg: #c8e6c9; 21 | @messageSentColor: #333; 22 | -------------------------------------------------------------------------------- /app/templates/framework7/src/modules/history/history.js: -------------------------------------------------------------------------------- 1 | import History from '../../utils/history'; 2 | 3 | export default { 4 | name: 'history', 5 | static: { 6 | history: History, 7 | }, 8 | on: { 9 | init() { 10 | History.init(this); 11 | }, 12 | }, 13 | }; 14 | -------------------------------------------------------------------------------- /app/templates/framework7/src/modules/request/request.js: -------------------------------------------------------------------------------- 1 | /* eslint no-param-reassign: "off" */ 2 | import Request from '../../utils/request'; 3 | 4 | export default { 5 | name: 'request', 6 | proto: { 7 | request: Request, 8 | }, 9 | static: { 10 | request: Request, 11 | }, 12 | }; 13 | -------------------------------------------------------------------------------- /app/templates/framework7/src/modules/router/router.js: -------------------------------------------------------------------------------- 1 | import Router from './router-class'; 2 | 3 | export default { 4 | name: 'router', 5 | static: { 6 | Router, 7 | }, 8 | instance: { 9 | cache: { 10 | xhr: [], 11 | templates: [], 12 | components: [], 13 | }, 14 | }, 15 | create() { 16 | const instance = this; 17 | if (instance.app) { 18 | // View Router 19 | if (instance.params.router) { 20 | instance.router = new Router(instance.app, instance); 21 | } 22 | } else { 23 | // App Router 24 | instance.router = new Router(instance); 25 | } 26 | }, 27 | }; 28 | 29 | -------------------------------------------------------------------------------- /app/templates/framework7/src/modules/support/support.js: -------------------------------------------------------------------------------- 1 | import { document } from 'ssr-window'; 2 | import Support from '../../utils/support'; 3 | 4 | export default { 5 | name: 'support', 6 | proto: { 7 | support: Support, 8 | }, 9 | static: { 10 | support: Support, 11 | }, 12 | on: { 13 | init() { 14 | const html = document.querySelector('html'); 15 | if (!html) return; 16 | const classNames = []; 17 | if (Support.positionSticky) { 18 | classNames.push('support-position-sticky'); 19 | } 20 | // Add html classes 21 | classNames.forEach((className) => { 22 | html.classList.add(className); 23 | }); 24 | }, 25 | }, 26 | }; 27 | -------------------------------------------------------------------------------- /app/templates/framework7/src/modules/utils/utils.js: -------------------------------------------------------------------------------- 1 | import Utils from '../../utils/utils'; 2 | 3 | export default { 4 | name: 'utils', 5 | proto: { 6 | utils: Utils, 7 | }, 8 | static: { 9 | utils: Utils, 10 | }, 11 | }; 12 | -------------------------------------------------------------------------------- /app/templates/plugins/cordova-plugin-whitelist/NOTICE: -------------------------------------------------------------------------------- 1 | Apache Cordova 2 | Copyright 2012 The Apache Software Foundation 3 | 4 | This product includes software developed at 5 | The Apache Software Foundation (http://www.apache.org/). 6 | -------------------------------------------------------------------------------- /app/templates/plugins/fetch.json: -------------------------------------------------------------------------------- 1 | { 2 | "cordova-plugin-whitelist": { 3 | "source": { 4 | "type": "registry", 5 | "id": "cordova-plugin-whitelist@1" 6 | }, 7 | "is_top_level": true, 8 | "variables": {} 9 | } 10 | } -------------------------------------------------------------------------------- /app/templates/res/icon/android/icon-36-ldpi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/icon/android/icon-36-ldpi.png -------------------------------------------------------------------------------- /app/templates/res/icon/android/icon-48-mdpi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/icon/android/icon-48-mdpi.png -------------------------------------------------------------------------------- /app/templates/res/icon/android/icon-72-hdpi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/icon/android/icon-72-hdpi.png -------------------------------------------------------------------------------- /app/templates/res/icon/android/icon-96-xhdpi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/icon/android/icon-96-xhdpi.png -------------------------------------------------------------------------------- /app/templates/res/icon/bada-wac/icon-48-type5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/icon/bada-wac/icon-48-type5.png -------------------------------------------------------------------------------- /app/templates/res/icon/bada-wac/icon-50-type3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/icon/bada-wac/icon-50-type3.png -------------------------------------------------------------------------------- /app/templates/res/icon/bada-wac/icon-80-type4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/icon/bada-wac/icon-80-type4.png -------------------------------------------------------------------------------- /app/templates/res/icon/bada/icon-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/icon/bada/icon-128.png -------------------------------------------------------------------------------- /app/templates/res/icon/blackberry/icon-80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/icon/blackberry/icon-80.png -------------------------------------------------------------------------------- /app/templates/res/icon/blackberry10/icon-80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/icon/blackberry10/icon-80.png -------------------------------------------------------------------------------- /app/templates/res/icon/ios/icon-57-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/icon/ios/icon-57-2x.png -------------------------------------------------------------------------------- /app/templates/res/icon/ios/icon-57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/icon/ios/icon-57.png -------------------------------------------------------------------------------- /app/templates/res/icon/ios/icon-72-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/icon/ios/icon-72-2x.png -------------------------------------------------------------------------------- /app/templates/res/icon/ios/icon-72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/icon/ios/icon-72.png -------------------------------------------------------------------------------- /app/templates/res/icon/tizen/icon-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/icon/tizen/icon-128.png -------------------------------------------------------------------------------- /app/templates/res/icon/webos/icon-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/icon/webos/icon-64.png -------------------------------------------------------------------------------- /app/templates/res/icon/windows-phone/icon-173-tile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/icon/windows-phone/icon-173-tile.png -------------------------------------------------------------------------------- /app/templates/res/icon/windows-phone/icon-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/icon/windows-phone/icon-48.png -------------------------------------------------------------------------------- /app/templates/res/icon/windows-phone/icon-62-tile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/icon/windows-phone/icon-62-tile.png -------------------------------------------------------------------------------- /app/templates/res/screen/android/screen-hdpi-landscape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/screen/android/screen-hdpi-landscape.png -------------------------------------------------------------------------------- /app/templates/res/screen/android/screen-hdpi-portrait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/screen/android/screen-hdpi-portrait.png -------------------------------------------------------------------------------- /app/templates/res/screen/android/screen-ldpi-landscape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/screen/android/screen-ldpi-landscape.png -------------------------------------------------------------------------------- /app/templates/res/screen/android/screen-ldpi-portrait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/screen/android/screen-ldpi-portrait.png -------------------------------------------------------------------------------- /app/templates/res/screen/android/screen-mdpi-landscape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/screen/android/screen-mdpi-landscape.png -------------------------------------------------------------------------------- /app/templates/res/screen/android/screen-mdpi-portrait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/screen/android/screen-mdpi-portrait.png -------------------------------------------------------------------------------- /app/templates/res/screen/android/screen-xhdpi-landscape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/screen/android/screen-xhdpi-landscape.png -------------------------------------------------------------------------------- /app/templates/res/screen/android/screen-xhdpi-portrait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/screen/android/screen-xhdpi-portrait.png -------------------------------------------------------------------------------- /app/templates/res/screen/bada-wac/screen-type3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/screen/bada-wac/screen-type3.png -------------------------------------------------------------------------------- /app/templates/res/screen/bada-wac/screen-type4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/screen/bada-wac/screen-type4.png -------------------------------------------------------------------------------- /app/templates/res/screen/bada-wac/screen-type5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/screen/bada-wac/screen-type5.png -------------------------------------------------------------------------------- /app/templates/res/screen/bada/screen-portrait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/screen/bada/screen-portrait.png -------------------------------------------------------------------------------- /app/templates/res/screen/blackberry/screen-225.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/screen/blackberry/screen-225.png -------------------------------------------------------------------------------- /app/templates/res/screen/blackberry10/splash-1280x768.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/screen/blackberry10/splash-1280x768.png -------------------------------------------------------------------------------- /app/templates/res/screen/blackberry10/splash-720x720.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/screen/blackberry10/splash-720x720.png -------------------------------------------------------------------------------- /app/templates/res/screen/blackberry10/splash-768x1280.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/screen/blackberry10/splash-768x1280.png -------------------------------------------------------------------------------- /app/templates/res/screen/ios/screen-ipad-landscape-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/screen/ios/screen-ipad-landscape-2x.png -------------------------------------------------------------------------------- /app/templates/res/screen/ios/screen-ipad-landscape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/screen/ios/screen-ipad-landscape.png -------------------------------------------------------------------------------- /app/templates/res/screen/ios/screen-ipad-portrait-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/screen/ios/screen-ipad-portrait-2x.png -------------------------------------------------------------------------------- /app/templates/res/screen/ios/screen-ipad-portrait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/screen/ios/screen-ipad-portrait.png -------------------------------------------------------------------------------- /app/templates/res/screen/ios/screen-iphone-landscape-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/screen/ios/screen-iphone-landscape-2x.png -------------------------------------------------------------------------------- /app/templates/res/screen/ios/screen-iphone-landscape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/screen/ios/screen-iphone-landscape.png -------------------------------------------------------------------------------- /app/templates/res/screen/ios/screen-iphone-portrait-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/screen/ios/screen-iphone-portrait-2x.png -------------------------------------------------------------------------------- /app/templates/res/screen/ios/screen-iphone-portrait-568h-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/screen/ios/screen-iphone-portrait-568h-2x.png -------------------------------------------------------------------------------- /app/templates/res/screen/ios/screen-iphone-portrait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/screen/ios/screen-iphone-portrait.png -------------------------------------------------------------------------------- /app/templates/res/screen/webos/screen-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/screen/webos/screen-64.png -------------------------------------------------------------------------------- /app/templates/res/screen/windows-phone/screen-portrait.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/res/screen/windows-phone/screen-portrait.jpg -------------------------------------------------------------------------------- /app/templates/www/fonts/Framework7Icons-Regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/www/fonts/Framework7Icons-Regular.eot -------------------------------------------------------------------------------- /app/templates/www/fonts/Framework7Icons-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/www/fonts/Framework7Icons-Regular.ttf -------------------------------------------------------------------------------- /app/templates/www/fonts/Framework7Icons-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/www/fonts/Framework7Icons-Regular.woff -------------------------------------------------------------------------------- /app/templates/www/fonts/Framework7Icons-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/www/fonts/Framework7Icons-Regular.woff2 -------------------------------------------------------------------------------- /app/templates/www/fonts/MaterialIcons-Regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/www/fonts/MaterialIcons-Regular.eot -------------------------------------------------------------------------------- /app/templates/www/fonts/MaterialIcons-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/www/fonts/MaterialIcons-Regular.ttf -------------------------------------------------------------------------------- /app/templates/www/fonts/MaterialIcons-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/www/fonts/MaterialIcons-Regular.woff -------------------------------------------------------------------------------- /app/templates/www/fonts/MaterialIcons-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/www/fonts/MaterialIcons-Regular.woff2 -------------------------------------------------------------------------------- /app/templates/www/img/beach.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/www/img/beach.jpg -------------------------------------------------------------------------------- /app/templates/www/img/f7-icon-square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/www/img/f7-icon-square.png -------------------------------------------------------------------------------- /app/templates/www/img/f7-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/www/img/f7-icon.png -------------------------------------------------------------------------------- /app/templates/www/img/lock.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/www/img/lock.jpg -------------------------------------------------------------------------------- /app/templates/www/img/monkey.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/www/img/monkey.jpg -------------------------------------------------------------------------------- /app/templates/www/img/mountains.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/www/img/mountains.jpg -------------------------------------------------------------------------------- /app/templates/www/img/vi-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/www/img/vi-icon.png -------------------------------------------------------------------------------- /app/templates/www/js/app.js: -------------------------------------------------------------------------------- 1 | // Dom7 2 | var $ = Dom7; 3 | 4 | // Theme 5 | var theme = 'auto'; 6 | if (document.location.search.indexOf('theme=') >= 0) { 7 | theme = document.location.search.split('theme=')[1].split('&')[0]; 8 | } 9 | 10 | // Init App 11 | var app = new Framework7({ 12 | id: 'io.framework7.testapp', 13 | root: '#app', 14 | theme: theme, 15 | data: function () { 16 | return { 17 | user: { 18 | firstName: 'John', 19 | lastName: 'Doe', 20 | }, 21 | }; 22 | }, 23 | methods: { 24 | helloWorld: function () { 25 | app.dialog.alert('Hello World!'); 26 | }, 27 | }, 28 | routes: routes, 29 | vi: { 30 | placementId: 'pltd4o7ibb9rc653x14', 31 | }, 32 | }); 33 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/badge/badge-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | .badge { 4 | font-size: 13px; 5 | border-radius: 20px; 6 | padding: 0 6px; 7 | height: 20px; 8 | line-height: 20px; 9 | .item-after & { 10 | min-width: 20px; 11 | } 12 | } 13 | .icon, .f7-icons, .framework7-icons, .material-icons { 14 | .badge { 15 | line-height: 16px; 16 | height: 16px; 17 | border-radius: 16px; 18 | padding: 0 4px; 19 | min-width: 16px; 20 | font-family: -apple-system, SF UI Text, Helvetica Neue, Helvetica, Arial, sans-serif; 21 | font-size: 10px; 22 | } 23 | } 24 | .color-loop({ 25 | .badge.color-@{colorName} { 26 | background-color: @colorValue; 27 | } 28 | }); 29 | } 30 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/badge/badge-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | @import (multiple) '../../less/colors-md.less'; 3 | .badge { 4 | font-size: 10px; 5 | border-radius: 3px; 6 | padding: 1px 6px; 7 | vertical-align: middle; 8 | } 9 | .icon, .f7-icons, .framework7-icons, .material-icons { 10 | .badge { 11 | line-height: 1.4; 12 | padding: 1px 5px; 13 | font-family: Roboto, Noto, Helvetica, Arial, sans-serif; 14 | font-size: 10px; 15 | } 16 | } 17 | .color-loop({ 18 | .badge.color-@{colorName} { 19 | background-color: @colorValue; 20 | } 21 | }); 22 | } 23 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/badge/badge.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'badge', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/badge/badge.less: -------------------------------------------------------------------------------- 1 | /* === Badge === */ 2 | .badge { 3 | display: inline-block; 4 | color: #fff; 5 | background: #8e8e93; 6 | position: relative; 7 | box-sizing: border-box; 8 | text-align: center; 9 | .icon &, .f7-icons &, .framework7-icons &, .material-icons & { 10 | position: absolute; 11 | left: 100%; 12 | margin-left: -10px; 13 | top: -2px; 14 | } 15 | } 16 | 17 | & when (@includeIosTheme) { 18 | @import url('./badge-ios.less'); 19 | } 20 | & when (@includeMdTheme) { 21 | @import url('./badge-md.less'); 22 | } 23 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/block/block.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'block', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/button/button.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'button', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/card/card.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'card', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/checkbox/checkbox.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'checkbox', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/chip/chip.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'chip', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/contacts-list/contact-list.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'contactList', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/contacts-list/contacts-list-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | .contacts-list { 4 | margin: 0; 5 | .list-group-title { 6 | padding: 0 15px; 7 | background: #f7f7f7; 8 | color: #000; 9 | font-weight: 600; 10 | line-height: 22px; 11 | height: 22px; 12 | } 13 | } 14 | // Dark Theme 15 | & when (@includeDarkTheme) { 16 | .theme-dark { 17 | .contacts-list, .contacts-list& { 18 | .list-group-title { 19 | background-color: #111; 20 | color: #fff; 21 | } 22 | } 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/contacts-list/contacts-list.less: -------------------------------------------------------------------------------- 1 | /* === Contacts === */ 2 | .contacts-list { 3 | .list-group:first-child ul { 4 | .hairline-remove(top); 5 | } 6 | .list-group:last-child ul { 7 | .hairline-remove(bottom); 8 | } 9 | } 10 | & when (@includeIosTheme) { 11 | @import url('./contacts-list-ios.less'); 12 | } 13 | & when (@includeMdTheme) { 14 | @import url('./contacts-list-md.less'); 15 | } 16 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/core/core-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | @import (multiple) '../../less/colors-md.less'; 3 | body { 4 | font-family: Roboto, Noto, Helvetica, Arial, sans-serif; 5 | color: #212121; 6 | line-height: 1.5; 7 | } 8 | .ios-only, .if-ios { 9 | display: none !important; 10 | } 11 | a { 12 | color: @themeColor; 13 | } 14 | // Dark Theme 15 | & when (@includeDarkTheme) { 16 | .theme-dark { 17 | color: rgba(255,255,255,0.87); 18 | } 19 | } 20 | 21 | .color-theme-loop({ 22 | .color-theme-@{colorThemeName} { 23 | a { 24 | color: @colorThemeValue; 25 | } 26 | } 27 | }); 28 | .color-loop({ 29 | a.color-@{colorName} { 30 | color: @colorValue; 31 | } 32 | }); 33 | } 34 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/grid/grid.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'grid', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/grid/grid.less: -------------------------------------------------------------------------------- 1 | /* === Grid === */ 2 | .row { 3 | display: flex; 4 | justify-content: space-between; 5 | flex-wrap: wrap; 6 | align-items: flex-start; 7 | > [class*="col-"], > .col { 8 | box-sizing: border-box; 9 | } 10 | } 11 | @cols: 5, 10, 15, 20, 25, 30, 100/3, 35, 40, 45, 50, 55, 60, 65, 100*(2/3), 70, 75, 80, 85, 90, 95, 100; 12 | .row { 13 | .col { 14 | width: 100%; 15 | } 16 | } 17 | 18 | & when (@includeIosTheme) { 19 | @import url('./grid-ios.less'); 20 | } 21 | & when (@includeMdTheme) { 22 | @import url('./grid-md.less'); 23 | } 24 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/icon/icon.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'icon', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/icon/icon.less: -------------------------------------------------------------------------------- 1 | /* === Icon === */ 2 | i.icon { 3 | display: inline-block; 4 | vertical-align: middle; 5 | background-size: 100% auto; 6 | background-position: center; 7 | background-repeat: no-repeat; 8 | font-style: normal; 9 | position: relative; 10 | } 11 | 12 | & when (@includeIosTheme) { 13 | @import url('./icon-ios.less'); 14 | } 15 | & when (@includeMdTheme) { 16 | @import url('./icon-md.less'); 17 | } 18 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/infinite-scroll/infinite-scroll-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | 4 | .infinite-scroll-preloader { 5 | margin-top: 35px; 6 | margin-bottom: 35px; 7 | .preloader, &.preloader { 8 | width: 27px; 9 | height: 27px; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/infinite-scroll/infinite-scroll-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | @import (multiple) '../../less/colors-md.less'; 3 | .infinite-scroll-preloader { 4 | margin-top: 32px; 5 | margin-bottom: 32px; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/infinite-scroll/infinite-scroll.less: -------------------------------------------------------------------------------- 1 | /* === Infinite === */ 2 | .infinite-scroll-preloader { 3 | margin-left: auto; 4 | margin-right: auto; 5 | text-align: center; 6 | &.preloader { 7 | display: block; 8 | } 9 | } 10 | & when (@includeIosTheme) { 11 | @import url('./infinite-scroll-ios.less'); 12 | } 13 | & when (@includeMdTheme) { 14 | @import url('./infinite-scroll-md.less'); 15 | } 16 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/lazy/lazy-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | } 4 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/lazy/lazy-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | @import (multiple) '../../less/colors-md.less'; 3 | } 4 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/lazy/lazy.less: -------------------------------------------------------------------------------- 1 | /* === Images Lazy Loading === */ 2 | .lazy-loaded.lazy-fade-in { 3 | animation: lazyFadeIn 600ms; 4 | } 5 | 6 | @keyframes lazyFadeIn { 7 | from { 8 | opacity: 0; 9 | } 10 | to { 11 | opacity: 1; 12 | } 13 | } 14 | 15 | & when (@includeIosTheme) { 16 | @import url('./lazy-ios.less'); 17 | } 18 | & when (@includeMdTheme) { 19 | @import url('./lazy-md.less'); 20 | } 21 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/link/link-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | .link { 3 | transition: opacity 300ms; 4 | i + span, i + i, span + i, span + span { 5 | .ltr({ 6 | margin-left: 7px; 7 | }); 8 | .rtl({ 9 | margin-right: 7px; 10 | }); 11 | } 12 | &.active-state { 13 | opacity: 0.3; 14 | transition-duration: 0ms; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/link/link-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | .link { 3 | i + span, i + i, span + i, span + span { 4 | .ltr({ 5 | margin-left: 8px; 6 | }); 7 | .rtl({ 8 | margin-right: 8px; 9 | }); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/link/link.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'link', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/link/link.less: -------------------------------------------------------------------------------- 1 | /* === Link === */ 2 | .link, .tab-link { 3 | display: inline-flex; 4 | align-items: center; 5 | align-content: center; 6 | justify-content: center; 7 | position: relative; 8 | box-sizing: border-box; 9 | transform: translate3d(0, 0, 0); 10 | z-index: 1; 11 | } 12 | 13 | & when (@includeIosTheme) { 14 | @import url('./link-ios.less'); 15 | } 16 | & when (@includeMdTheme) { 17 | @import url('./link-md.less'); 18 | } 19 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/list/list.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'list', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/login-screen/login-screen-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | .login-screen-content { 4 | .login-screen-title, .list, .block { 5 | margin: 25px auto; 6 | } 7 | } 8 | .login-screen-title { 9 | font-size: 30px; 10 | } 11 | // Dark Theme 12 | & when (@includeDarkTheme) { 13 | .theme-dark { 14 | .login-screen-content, .login-screen-content .list ul { 15 | background-color: transparent; 16 | } 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/login-screen/login-screen.js: -------------------------------------------------------------------------------- 1 | import LoginScreen from './login-screen-class'; 2 | import ModalMethods from '../../utils/modal-methods'; 3 | 4 | export default { 5 | name: 'loginScreen', 6 | static: { 7 | LoginScreen, 8 | }, 9 | create() { 10 | const app = this; 11 | app.loginScreen = ModalMethods({ 12 | app, 13 | constructor: LoginScreen, 14 | defaultSelector: '.login-screen.modal-in', 15 | }); 16 | }, 17 | clicks: { 18 | '.login-screen-open': function openLoginScreen($clickedEl, data = {}) { 19 | const app = this; 20 | app.loginScreen.open(data.loginScreen, data.animate); 21 | }, 22 | '.login-screen-close': function closeLoginScreen($clickedEl, data = {}) { 23 | const app = this; 24 | app.loginScreen.close(data.loginScreen, data.animate); 25 | }, 26 | }, 27 | }; 28 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/modal/modal.js: -------------------------------------------------------------------------------- 1 | import Modal from './modal-class'; 2 | import CustomModal from './custom-modal-class'; 3 | 4 | export default { 5 | name: 'modal', 6 | static: { 7 | Modal, 8 | CustomModal, 9 | }, 10 | create() { 11 | const app = this; 12 | app.customModal = { 13 | create(params) { 14 | return new CustomModal(app, params); 15 | }, 16 | }; 17 | }, 18 | params: { 19 | modal: { 20 | moveToRoot: true, 21 | queueDialogs: true, 22 | }, 23 | }, 24 | }; 25 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/modal/modal.less: -------------------------------------------------------------------------------- 1 | .custom-modal-backdrop { 2 | .modal-backdrop(); 3 | z-index: 10500; 4 | } 5 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/page/page.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'page', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/page/page.less: -------------------------------------------------------------------------------- 1 | /* === Pages === */ 2 | .pages { 3 | position: relative; 4 | width: 100%; 5 | height: 100%; 6 | overflow: hidden; 7 | } 8 | .page { 9 | box-sizing: border-box; 10 | position: absolute; 11 | left: 0; 12 | top: 0; 13 | width: 100%; 14 | height: 100%; 15 | transform: translate3d(0,0,0); 16 | &.stacked { 17 | display: none; 18 | } 19 | } 20 | .page-previous { 21 | pointer-events: none; 22 | } 23 | .page-content { 24 | .scrollable(); 25 | box-sizing: border-box; 26 | height: 100%; 27 | position: relative; 28 | z-index: 1; 29 | } 30 | 31 | & when (@includeIosTheme) { 32 | @import url('./page-ios.less'); 33 | } 34 | & when (@includeMdTheme) { 35 | @import url('./page-md.less'); 36 | } 37 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/panel/panel-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | .panel-backdrop { 4 | transition-duration: 400ms; 5 | background: rgba(0,0,0,0); 6 | } 7 | .panel { 8 | transition-duration: 400ms; 9 | } 10 | &.with-panel-left-reveal, &.with-panel-right-reveal, &.with-panel-transitioning { 11 | .views, .framework7-root > .view { 12 | transition-duration: 400ms; 13 | transition-property: transform; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/popup/popup-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | 4 | } 5 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/popup/popup-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | @import (multiple) '../../less/colors-md.less'; 3 | @media (min-width: 630px) and (min-height: 630px) { 4 | .popup:not(.popup-tablet-fullscreen) { 5 | box-shadow: 0px 20px 44px rgba(0,0,0,0.5); 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/popup/popup.js: -------------------------------------------------------------------------------- 1 | import Popup from './popup-class'; 2 | import ModalMethods from '../../utils/modal-methods'; 3 | 4 | export default { 5 | name: 'popup', 6 | params: { 7 | popup: { 8 | backdrop: true, 9 | closeByBackdropClick: true, 10 | }, 11 | }, 12 | static: { 13 | Popup, 14 | }, 15 | create() { 16 | const app = this; 17 | app.popup = ModalMethods({ 18 | app, 19 | constructor: Popup, 20 | defaultSelector: '.popup.modal-in', 21 | }); 22 | }, 23 | clicks: { 24 | '.popup-open': function openPopup($clickedEl, data = {}) { 25 | const app = this; 26 | app.popup.open(data.popup, data.animate); 27 | }, 28 | '.popup-close': function closePopup($clickedEl, data = {}) { 29 | const app = this; 30 | app.popup.close(data.popup, data.animate); 31 | }, 32 | }, 33 | }; 34 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/preloader/preloader.less: -------------------------------------------------------------------------------- 1 | /* === Preloader === */ 2 | .preloader { 3 | display: inline-block; 4 | vertical-align: middle; 5 | } 6 | 7 | /* === Preloader Modal === */ 8 | .preloader-backdrop { 9 | .modal-backdrop(); 10 | visibility: visible; 11 | opacity: 0; 12 | background: none; 13 | } 14 | .preloader-modal { 15 | position: absolute; 16 | left: 50%; 17 | top: 50%; 18 | padding: 8px; 19 | background: rgba(0,0,0,0.8); 20 | z-index: 13500; 21 | transform: translateX(-50%) translateY(-50%); 22 | .preloader { 23 | display: block !important; 24 | } 25 | } 26 | html.with-modal-preloader { 27 | .page-content { 28 | .not-scrollable(); 29 | } 30 | } 31 | & when (@includeIosTheme) { 32 | @import url('./preloader-ios.less'); 33 | } 34 | & when (@includeMdTheme) { 35 | @import url('./preloader-md.less'); 36 | } 37 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/pull-to-refresh/pull-to-refresh.less: -------------------------------------------------------------------------------- 1 | /* === PTR === */ 2 | .ptr-preloader { 3 | .preloader { 4 | position: absolute; 5 | left: 50%; 6 | } 7 | } 8 | & when (@includeIosTheme) { 9 | @import url('./pull-to-refresh-ios.less'); 10 | } 11 | & when (@includeMdTheme) { 12 | @import url('./pull-to-refresh-md.less'); 13 | } 14 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/radio/radio.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'radio', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/smart-select/smart-select-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | @import (multiple) '../../less/vars-ios.less'; 4 | .smart-select-sheet { 5 | .page { 6 | background: #fff; 7 | } 8 | } 9 | .hairline-root('.smart-select-sheet .toolbar', bottom, @barsBorderColor); 10 | // Dark Theme 11 | & when (@includeDarkTheme) { 12 | .theme-dark { 13 | .smart-select-sheet .page, 14 | .smart-select-sheet .sheet-modal-inner { 15 | background-color: @blockBgDark; 16 | } 17 | .smart-select-sheet .toolbar { 18 | .hairline-color(bottom, @barsBorderColorDark); 19 | } 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/smart-select/smart-select-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | @import (multiple) '../../less/colors-md.less'; 3 | // Dark Theme 4 | & when (@includeDarkTheme) { 5 | .theme-dark { 6 | .sheet-modal.smart-select-sheet .sheet-modal-inner { 7 | background-color: transparent; 8 | } 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/smart-select/smart-select.less: -------------------------------------------------------------------------------- 1 | /* === Smart Select === */ 2 | .smart-select { 3 | select { 4 | display: none; 5 | } 6 | .item-after { 7 | max-width: 70%; 8 | overflow: hidden; 9 | text-overflow: ellipsis; 10 | position: relative; 11 | display: block; 12 | } 13 | 14 | } 15 | .sheet-modal.smart-select-sheet { 16 | .sheet-modal-inner { 17 | background: #fff; 18 | } 19 | .list { 20 | margin: 0; 21 | ul { 22 | .hairline-remove(top); 23 | .hairline-remove(bottom); 24 | } 25 | } 26 | } 27 | .smart-select-popover .popover-inner { 28 | max-height: 40vh; 29 | } 30 | & when (@includeIosTheme) { 31 | @import url('./smart-select-ios.less'); 32 | } 33 | & when (@includeMdTheme) { 34 | @import url('./smart-select-md.less'); 35 | } 36 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/statusbar/statusbar-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | @import (multiple) '../../less/vars-ios.less'; 4 | .statusbar { 5 | background: #f7f7f8; 6 | } 7 | // Dark Theme 8 | & when (@includeDarkTheme) { 9 | .theme-dark { 10 | .statusbar { 11 | background-color: @barsBgDark; 12 | } 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/statusbar/statusbar-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | @import (multiple) '../../less/colors-md.less'; 3 | .statusbar { 4 | background: darken(@themeColor, 15%); 5 | } 6 | .color-theme-loop({ 7 | .color-theme-@{colorThemeName} .statusbar { 8 | background: darken(@colorThemeValue, 15%); 9 | } 10 | }); 11 | } 12 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/subnavbar/subnavbar.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'subnavbar', 3 | on: { 4 | pageInit(page) { 5 | if (page.$navbarEl && page.$navbarEl.length && page.$navbarEl.find('.subnavbar').length) { 6 | page.$el.addClass('page-with-subnavbar'); 7 | } 8 | if (page.$el.find('.subnavbar').length) { 9 | page.$el.addClass('page-with-subnavbar'); 10 | } 11 | }, 12 | }, 13 | }; 14 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swipeout/swipeout-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | .swipeout-actions-left, .swipeout-actions-right { 4 | > a, > button, > span, > div { 5 | padding: 0 30px; 6 | color: #fff; 7 | } 8 | .swipeout-delete { 9 | background: @red; 10 | } 11 | } 12 | .color-loop({ 13 | .swipeout-actions-left, .swipeout-actions-right { 14 | > a, > button, > span, > div { 15 | &.color-@{colorName} { 16 | background-color: @colorValue; 17 | } 18 | } 19 | } 20 | }); 21 | } 22 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swipeout/swipeout-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | @import (multiple) '../../less/colors-md.less'; 3 | .swipeout-actions-left, .swipeout-actions-right { 4 | > a, > button, > span, > div { 5 | padding: 0 24px; 6 | color: #fff; 7 | } 8 | .swipeout-delete { 9 | background: @red; 10 | } 11 | } 12 | .color-loop({ 13 | .swipeout-actions-left, .swipeout-actions-right { 14 | > a, > button, > span, > div { 15 | &.color-@{colorName} { 16 | background-color: @colorValue; 17 | } 18 | } 19 | } 20 | }); 21 | } 22 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/a11y/a11y.less: -------------------------------------------------------------------------------- 1 | /* a11y */ 2 | .swiper-container .swiper-notification { 3 | position: absolute; 4 | left: 0; 5 | top: 0; 6 | pointer-events: none; 7 | opacity: 0; 8 | z-index: -1000; 9 | } 10 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/controller/controller.less: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/www/lib/components/swiper/swiper-class/components/controller/controller.less -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/core/breakpoints/getBreakpoint.js: -------------------------------------------------------------------------------- 1 | import { window } from 'ssr-window'; 2 | 3 | export default function (breakpoints) { 4 | // Get breakpoint for window width 5 | if (!breakpoints) return undefined; 6 | let breakpoint = false; 7 | const points = []; 8 | Object.keys(breakpoints).forEach((point) => { 9 | points.push(point); 10 | }); 11 | points.sort((a, b) => parseInt(a, 10) - parseInt(b, 10)); 12 | for (let i = 0; i < points.length; i += 1) { 13 | const point = points[i]; 14 | if (point >= window.innerWidth && !breakpoint) { 15 | breakpoint = point; 16 | } 17 | } 18 | return breakpoint || 'max'; 19 | } 20 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/core/breakpoints/index.js: -------------------------------------------------------------------------------- 1 | import setBreakpoint from './setBreakpoint'; 2 | import getBreakpoint from './getBreakpoint'; 3 | 4 | export default { setBreakpoint, getBreakpoint }; 5 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/core/check-overflow/index.js: -------------------------------------------------------------------------------- 1 | 2 | function checkOverflow() { 3 | const swiper = this; 4 | const wasLocked = swiper.isLocked; 5 | 6 | swiper.isLocked = swiper.snapGrid.length === 1; 7 | swiper.allowSlideNext = !swiper.isLocked; 8 | swiper.allowSlidePrev = !swiper.isLocked; 9 | 10 | // events 11 | if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); 12 | 13 | if (wasLocked && wasLocked !== swiper.isLocked) { 14 | swiper.isEnd = false; 15 | swiper.navigation.update(); 16 | } 17 | } 18 | 19 | export default { checkOverflow }; 20 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/core/classes/index.js: -------------------------------------------------------------------------------- 1 | import addClasses from './addClasses'; 2 | import removeClasses from './removeClasses'; 3 | 4 | export default { addClasses, removeClasses }; 5 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/core/classes/removeClasses.js: -------------------------------------------------------------------------------- 1 | export default function () { 2 | const swiper = this; 3 | const { $el, classNames } = swiper; 4 | 5 | $el.removeClass(classNames.join(' ')); 6 | } 7 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/core/events/onClick.js: -------------------------------------------------------------------------------- 1 | export default function (e) { 2 | const swiper = this; 3 | if ("universal" === 'desktop') { 4 | swiper.emit('tap click', e); 5 | } else if (!swiper.allowClick) { 6 | if (swiper.params.preventClicks) e.preventDefault(); 7 | if (swiper.params.preventClicksPropagation && swiper.animating) { 8 | e.stopPropagation(); 9 | e.stopImmediatePropagation(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/core/grab-cursor/index.js: -------------------------------------------------------------------------------- 1 | import setGrabCursor from './setGrabCursor'; 2 | import unsetGrabCursor from './unsetGrabCursor'; 3 | 4 | export default { 5 | setGrabCursor, 6 | unsetGrabCursor, 7 | }; 8 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/core/grab-cursor/setGrabCursor.js: -------------------------------------------------------------------------------- 1 | import Support from '../../../utils/support'; 2 | 3 | export default function (moving) { 4 | const swiper = this; 5 | if (Support.touch || !swiper.params.simulateTouch) return; 6 | const el = swiper.el; 7 | el.style.cursor = 'move'; 8 | el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab'; 9 | el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab'; 10 | el.style.cursor = moving ? 'grabbing' : 'grab'; 11 | } 12 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/core/grab-cursor/unsetGrabCursor.js: -------------------------------------------------------------------------------- 1 | import Support from '../../../utils/support'; 2 | 3 | export default function () { 4 | const swiper = this; 5 | if (Support.touch) return; 6 | swiper.el.style.cursor = ''; 7 | } 8 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/core/images/index.js: -------------------------------------------------------------------------------- 1 | import loadImage from './loadImage'; 2 | import preloadImages from './preloadImages'; 3 | 4 | export default { 5 | loadImage, 6 | preloadImages, 7 | }; 8 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/core/images/loadImage.js: -------------------------------------------------------------------------------- 1 | import { window } from 'ssr-window'; 2 | 3 | export default function (imageEl, src, srcset, sizes, checkForComplete, callback) { 4 | let image; 5 | function onReady() { 6 | if (callback) callback(); 7 | } 8 | if (!imageEl.complete || !checkForComplete) { 9 | if (src) { 10 | image = new window.Image(); 11 | image.onload = onReady; 12 | image.onerror = onReady; 13 | if (sizes) { 14 | image.sizes = sizes; 15 | } 16 | if (srcset) { 17 | image.srcset = srcset; 18 | } 19 | if (src) { 20 | image.src = src; 21 | } 22 | } else { 23 | onReady(); 24 | } 25 | } else { 26 | // image already loaded... 27 | onReady(); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/core/loop/index.js: -------------------------------------------------------------------------------- 1 | import loopCreate from './loopCreate'; 2 | import loopFix from './loopFix'; 3 | import loopDestroy from './loopDestroy'; 4 | 5 | export default { 6 | loopCreate, 7 | loopFix, 8 | loopDestroy, 9 | }; 10 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/core/loop/loopDestroy.js: -------------------------------------------------------------------------------- 1 | export default function () { 2 | const swiper = this; 3 | const { $wrapperEl, params, slides } = swiper; 4 | $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove(); 5 | slides.removeAttr('data-swiper-slide-index'); 6 | } 7 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/core/manipulation/appendSlide.js: -------------------------------------------------------------------------------- 1 | import Support from '../../../utils/support'; 2 | 3 | export default function (slides) { 4 | const swiper = this; 5 | const { $wrapperEl, params } = swiper; 6 | if (params.loop) { 7 | swiper.loopDestroy(); 8 | } 9 | if (typeof slides === 'object' && 'length' in slides) { 10 | for (let i = 0; i < slides.length; i += 1) { 11 | if (slides[i]) $wrapperEl.append(slides[i]); 12 | } 13 | } else { 14 | $wrapperEl.append(slides); 15 | } 16 | if (params.loop) { 17 | swiper.loopCreate(); 18 | } 19 | if (!(params.observer && Support.observer)) { 20 | swiper.update(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/core/manipulation/index.js: -------------------------------------------------------------------------------- 1 | import appendSlide from './appendSlide'; 2 | import prependSlide from './prependSlide'; 3 | import removeSlide from './removeSlide'; 4 | import removeAllSlides from './removeAllSlides'; 5 | 6 | export default { 7 | appendSlide, 8 | prependSlide, 9 | removeSlide, 10 | removeAllSlides, 11 | }; 12 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/core/manipulation/prependSlide.js: -------------------------------------------------------------------------------- 1 | import Support from '../../../utils/support'; 2 | 3 | export default function (slides) { 4 | const swiper = this; 5 | const { params, $wrapperEl, activeIndex } = swiper; 6 | 7 | if (params.loop) { 8 | swiper.loopDestroy(); 9 | } 10 | let newActiveIndex = activeIndex + 1; 11 | if (typeof slides === 'object' && 'length' in slides) { 12 | for (let i = 0; i < slides.length; i += 1) { 13 | if (slides[i]) $wrapperEl.prepend(slides[i]); 14 | } 15 | newActiveIndex = activeIndex + slides.length; 16 | } else { 17 | $wrapperEl.prepend(slides); 18 | } 19 | if (params.loop) { 20 | swiper.loopCreate(); 21 | } 22 | if (!(params.observer && Support.observer)) { 23 | swiper.update(); 24 | } 25 | swiper.slideTo(newActiveIndex, 0, false); 26 | } 27 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/core/manipulation/removeAllSlides.js: -------------------------------------------------------------------------------- 1 | export default function () { 2 | const swiper = this; 3 | 4 | const slidesIndexes = []; 5 | for (let i = 0; i < swiper.slides.length; i += 1) { 6 | slidesIndexes.push(i); 7 | } 8 | swiper.removeSlide(slidesIndexes); 9 | } 10 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/core/slide/index.js: -------------------------------------------------------------------------------- 1 | import slideTo from './slideTo'; 2 | import slideToLoop from './slideToLoop'; 3 | import slideNext from './slideNext'; 4 | import slidePrev from './slidePrev'; 5 | import slideReset from './slideReset'; 6 | import slideToClosest from './slideToClosest'; 7 | import slideToClickedSlide from './slideToClickedSlide'; 8 | 9 | export default { 10 | slideTo, 11 | slideToLoop, 12 | slideNext, 13 | slidePrev, 14 | slideReset, 15 | slideToClosest, 16 | slideToClickedSlide, 17 | }; 18 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/core/slide/slideNext.js: -------------------------------------------------------------------------------- 1 | /* eslint no-unused-vars: "off" */ 2 | export default function (speed = this.params.speed, runCallbacks = true, internal) { 3 | const swiper = this; 4 | const { params, animating } = swiper; 5 | if (params.loop) { 6 | if (animating) return false; 7 | swiper.loopFix(); 8 | // eslint-disable-next-line 9 | swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; 10 | return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal); 11 | } 12 | return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal); 13 | } 14 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/core/slide/slideReset.js: -------------------------------------------------------------------------------- 1 | /* eslint no-unused-vars: "off" */ 2 | export default function (speed = this.params.speed, runCallbacks = true, internal) { 3 | const swiper = this; 4 | return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); 5 | } 6 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/core/slide/slideToClosest.js: -------------------------------------------------------------------------------- 1 | /* eslint no-unused-vars: "off" */ 2 | export default function (speed = this.params.speed, runCallbacks = true, internal) { 3 | const swiper = this; 4 | let index = swiper.activeIndex; 5 | const snapIndex = Math.floor(index / swiper.params.slidesPerGroup); 6 | 7 | if (snapIndex < swiper.snapGrid.length - 1) { 8 | const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 9 | 10 | const currentSnap = swiper.snapGrid[snapIndex]; 11 | const nextSnap = swiper.snapGrid[snapIndex + 1]; 12 | 13 | if ((translate - currentSnap) > (nextSnap - currentSnap) / 2) { 14 | index = swiper.params.slidesPerGroup; 15 | } 16 | } 17 | 18 | return swiper.slideTo(index, speed, runCallbacks, internal); 19 | } 20 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/core/slide/slideToLoop.js: -------------------------------------------------------------------------------- 1 | export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) { 2 | const swiper = this; 3 | let newIndex = index; 4 | if (swiper.params.loop) { 5 | newIndex += swiper.loopedSlides; 6 | } 7 | 8 | return swiper.slideTo(newIndex, speed, runCallbacks, internal); 9 | } 10 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/core/transition/index.js: -------------------------------------------------------------------------------- 1 | import setTransition from './setTransition'; 2 | import transitionStart from './transitionStart'; 3 | import transitionEnd from './transitionEnd'; 4 | 5 | export default { 6 | setTransition, 7 | transitionStart, 8 | transitionEnd, 9 | }; 10 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/core/transition/setTransition.js: -------------------------------------------------------------------------------- 1 | export default function (duration, byController) { 2 | const swiper = this; 3 | 4 | swiper.$wrapperEl.transition(duration); 5 | 6 | swiper.emit('setTransition', duration, byController); 7 | } 8 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/core/translate/getTranslate.js: -------------------------------------------------------------------------------- 1 | import Utils from '../../../utils/utils'; 2 | 3 | export default function (axis = this.isHorizontal() ? 'x' : 'y') { 4 | const swiper = this; 5 | 6 | const { 7 | params, rtlTranslate: rtl, translate, $wrapperEl, 8 | } = swiper; 9 | 10 | if (params.virtualTranslate) { 11 | return rtl ? -translate : translate; 12 | } 13 | 14 | let currentTranslate = Utils.getTranslate($wrapperEl[0], axis); 15 | if (rtl) currentTranslate = -currentTranslate; 16 | 17 | return currentTranslate || 0; 18 | } 19 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/core/translate/index.js: -------------------------------------------------------------------------------- 1 | import getTranslate from './getTranslate'; 2 | import setTranslate from './setTranslate'; 3 | import minTranslate from './minTranslate'; 4 | import maxTranslate from './maxTranslate'; 5 | 6 | export default { 7 | getTranslate, 8 | setTranslate, 9 | minTranslate, 10 | maxTranslate, 11 | }; 12 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/core/translate/maxTranslate.js: -------------------------------------------------------------------------------- 1 | export default function () { 2 | return (-this.snapGrid[this.snapGrid.length - 1]); 3 | } 4 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/core/translate/minTranslate.js: -------------------------------------------------------------------------------- 1 | export default function () { 2 | return (-this.snapGrid[0]); 3 | } 4 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/core/update/index.js: -------------------------------------------------------------------------------- 1 | import updateSize from './updateSize'; 2 | import updateSlides from './updateSlides'; 3 | import updateAutoHeight from './updateAutoHeight'; 4 | import updateSlidesOffset from './updateSlidesOffset'; 5 | import updateSlidesProgress from './updateSlidesProgress'; 6 | import updateProgress from './updateProgress'; 7 | import updateSlidesClasses from './updateSlidesClasses'; 8 | import updateActiveIndex from './updateActiveIndex'; 9 | import updateClickedSlide from './updateClickedSlide'; 10 | 11 | export default { 12 | updateSize, 13 | updateSlides, 14 | updateAutoHeight, 15 | updateSlidesOffset, 16 | updateSlidesProgress, 17 | updateProgress, 18 | updateSlidesClasses, 19 | updateActiveIndex, 20 | updateClickedSlide, 21 | }; 22 | 23 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/core/update/updateSlidesOffset.js: -------------------------------------------------------------------------------- 1 | export default function () { 2 | const swiper = this; 3 | const slides = swiper.slides; 4 | for (let i = 0; i < slides.length; i += 1) { 5 | slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/effect-coverflow/effect-coverflow.less: -------------------------------------------------------------------------------- 1 | .swiper-container-coverflow { 2 | .swiper-wrapper { 3 | /* Windows 8 IE 10 fix */ 4 | -ms-perspective: 1200px; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/effect-fade/effect-fade.less: -------------------------------------------------------------------------------- 1 | .swiper-container-fade { 2 | &.swiper-container-free-mode { 3 | .swiper-slide { 4 | transition-timing-function: ease-out; 5 | } 6 | } 7 | .swiper-slide { 8 | pointer-events: none; 9 | transition-property: opacity; 10 | .swiper-slide { 11 | pointer-events: none; 12 | } 13 | } 14 | .swiper-slide-active { 15 | &, & .swiper-slide-active { 16 | pointer-events: auto; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/effect-flip/effect-flip.less: -------------------------------------------------------------------------------- 1 | .swiper-container-flip { 2 | overflow: visible; 3 | .swiper-slide { 4 | pointer-events: none; 5 | backface-visibility: hidden; 6 | z-index: 1; 7 | .swiper-slide { 8 | pointer-events: none; 9 | } 10 | } 11 | .swiper-slide-active { 12 | &, & .swiper-slide-active { 13 | pointer-events: auto; 14 | } 15 | } 16 | .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left, .swiper-slide-shadow-right { 17 | z-index: 0; 18 | backface-visibility: hidden; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/scrollbar/scrollbar.less: -------------------------------------------------------------------------------- 1 | /* Scrollbar */ 2 | .swiper-scrollbar { 3 | border-radius: 10px; 4 | position: relative; 5 | -ms-touch-action: none; 6 | background: rgba(0,0,0,0.1); 7 | .swiper-container-horizontal > & { 8 | position: absolute; 9 | left: 1%; 10 | bottom: 3px; 11 | z-index: 50; 12 | height: 5px; 13 | width: 98%; 14 | } 15 | .swiper-container-vertical > & { 16 | position: absolute; 17 | right: 3px; 18 | top: 1%; 19 | z-index: 50; 20 | width: 5px; 21 | height: 98%; 22 | } 23 | } 24 | .swiper-scrollbar-drag { 25 | height: 100%; 26 | width: 100%; 27 | position: relative; 28 | background: rgba(0,0,0,0.5); 29 | border-radius: 10px; 30 | left: 0; 31 | top: 0; 32 | } 33 | .swiper-scrollbar-cursor-drag { 34 | cursor: move; 35 | } 36 | .swiper-scrollbar-lock { 37 | display: none; 38 | } -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/components/zoom/zoom.less: -------------------------------------------------------------------------------- 1 | .swiper-zoom-container { 2 | width: 100%; 3 | height: 100%; 4 | display: flex; 5 | justify-content: center; 6 | align-items: center; 7 | text-align: center; 8 | 9 | > img, > svg, > canvas { 10 | max-width: 100%; 11 | max-height: 100%; 12 | object-fit: contain; 13 | } 14 | } 15 | 16 | .swiper-slide-zoomed { 17 | cursor: move; 18 | } 19 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/modules/browser/browser.js: -------------------------------------------------------------------------------- 1 | import Browser from '../../utils/browser'; 2 | 3 | export default { 4 | name: 'browser', 5 | proto: { 6 | browser: Browser, 7 | }, 8 | static: { 9 | browser: Browser, 10 | }, 11 | }; 12 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/modules/device/device.js: -------------------------------------------------------------------------------- 1 | import Device from '../../utils/device'; 2 | 3 | export default { 4 | name: 'device', 5 | proto: { 6 | device: Device, 7 | }, 8 | static: { 9 | device: Device, 10 | }, 11 | }; 12 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/modules/resize/resize.less: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/www/lib/components/swiper/swiper-class/modules/resize/resize.less -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/modules/support/support.js: -------------------------------------------------------------------------------- 1 | import Support from '../../utils/support'; 2 | 3 | export default { 4 | name: 'support', 5 | proto: { 6 | support: Support, 7 | }, 8 | static: { 9 | support: Support, 10 | }, 11 | }; 12 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/swiper.less: -------------------------------------------------------------------------------- 1 | @import url('./less/mixins.less'); 2 | 3 | @themeColor: $themeColor; 4 | @colors: $colors; 5 | 6 | @import url('./components/core/core.less'); 7 | 8 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/utils/browser.js: -------------------------------------------------------------------------------- 1 | import { window } from 'ssr-window'; 2 | 3 | const Browser = (function Browser() { 4 | function isSafari() { 5 | const ua = window.navigator.userAgent.toLowerCase(); 6 | return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0); 7 | } 8 | return { 9 | isIE: !!window.navigator.userAgent.match(/Trident/g) || !!window.navigator.userAgent.match(/MSIE/g), 10 | isSafari: isSafari(), 11 | isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent), 12 | }; 13 | }()); 14 | 15 | export default Browser; 16 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/utils/class.js: -------------------------------------------------------------------------------- 1 | import Framework7Class from '../../../../utils/class'; 2 | 3 | export default Framework7Class; 4 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/utils/device.js: -------------------------------------------------------------------------------- 1 | import Device from '../../../../utils/device'; 2 | 3 | export default Device; 4 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/utils/document.js: -------------------------------------------------------------------------------- 1 | export default document; 2 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/utils/dom.js: -------------------------------------------------------------------------------- 1 | import $ from 'dom7'; 2 | 3 | export default $; 4 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/utils/support.js: -------------------------------------------------------------------------------- 1 | import Support from '../../../../utils/support'; 2 | 3 | export default Support; 4 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/utils/utils.js: -------------------------------------------------------------------------------- 1 | import Utils from '../../../../utils/utils'; 2 | 3 | export default Utils; 4 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/swiper/swiper-class/utils/window.js: -------------------------------------------------------------------------------- 1 | export default window; 2 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/tabs/tabs-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | 4 | } 5 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/tabs/tabs-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | @import (multiple) '../../less/colors-md.less'; 3 | 4 | } 5 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/timeline/timeline.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'timeline', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/touch-ripple/touch-ripple-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | 3 | } 4 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/touch-ripple/touch-ripple.js: -------------------------------------------------------------------------------- 1 | import TouchRipple from './touch-ripple-class'; 2 | 3 | export default { 4 | name: 'touch-ripple', 5 | static: { 6 | TouchRipple, 7 | }, 8 | create() { 9 | const app = this; 10 | app.touchRipple = { 11 | create(...args) { 12 | return new TouchRipple(...args); 13 | }, 14 | }; 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/touch-ripple/touch-ripple.less: -------------------------------------------------------------------------------- 1 | /* === Touch Ripple === */ 2 | & when (@includeIosTheme) { 3 | @import url('./touch-ripple-ios.less'); 4 | } 5 | & when (@includeMdTheme) { 6 | @import url('./touch-ripple-md.less'); 7 | } 8 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/typography/typography.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'typography', 3 | }; 4 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/vi/vi-ios.less: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/www/lib/components/vi/vi-ios.less -------------------------------------------------------------------------------- /app/templates/www/lib/components/vi/vi-md.less: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arvindr21/generator-framework7-phonegap/4458d8219743d4ba41ca0823629b3131e39a70c4/app/templates/www/lib/components/vi/vi-md.less -------------------------------------------------------------------------------- /app/templates/www/lib/components/view/view.less: -------------------------------------------------------------------------------- 1 | /* === Views === */ 2 | .views, .view { 3 | position: relative; 4 | height: 100%; 5 | z-index: 5000; 6 | overflow: hidden; 7 | box-sizing: border-box; 8 | } 9 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/virtual-list/virtual-list-ios.less: -------------------------------------------------------------------------------- 1 | .ios { 2 | @import (multiple) '../../less/colors-ios.less'; 3 | 4 | } 5 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/virtual-list/virtual-list-md.less: -------------------------------------------------------------------------------- 1 | .md { 2 | @import (multiple) '../../less/colors-md.less'; 3 | 4 | } 5 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/virtual-list/virtual-list.js: -------------------------------------------------------------------------------- 1 | import VirtualList from './virtual-list-class'; 2 | import ConstructorMethods from '../../utils/constructor-methods'; 3 | 4 | export default { 5 | name: 'virtualList', 6 | static: { 7 | VirtualList, 8 | }, 9 | create() { 10 | const app = this; 11 | app.virtualList = ConstructorMethods({ 12 | defaultSelector: '.virtual-list', 13 | constructor: VirtualList, 14 | app, 15 | domProp: 'f7VirtualList', 16 | }); 17 | }, 18 | }; 19 | -------------------------------------------------------------------------------- /app/templates/www/lib/components/virtual-list/virtual-list.less: -------------------------------------------------------------------------------- 1 | /* === Virtual List === */ 2 | 3 | & when (@includeIosTheme) { 4 | @import url('./virtual-list-ios.less'); 5 | } 6 | & when (@includeMdTheme) { 7 | @import url('./virtual-list-md.less'); 8 | } 9 | -------------------------------------------------------------------------------- /app/templates/www/lib/less/colors-ios.less: -------------------------------------------------------------------------------- 1 | @red: #ff3b30; 2 | @themeColor: @themeColorIos; 3 | 4 | @colors: @colorsIos; 5 | -------------------------------------------------------------------------------- /app/templates/www/lib/less/colors-md.less: -------------------------------------------------------------------------------- 1 | @red: #f44336; 2 | @themeColor: @themeColorMd; 3 | 4 | @colors: @colorsMd; 5 | -------------------------------------------------------------------------------- /app/templates/www/lib/less/vars-md.less: -------------------------------------------------------------------------------- 1 | @blockBorderColor: rgba(0,0,0,0.12); 2 | @blockBorderColorDark: rgba(255,255,255,0.08); 3 | @blockBgDark: rgba(255,255,255,0.03); 4 | @barsBg: @themeColor; 5 | @navbarSize: 56px; 6 | @navbarSizeTablet: 64px; 7 | @navbarBg: @barsBg; 8 | @toolbarBg: @barsBg; 9 | @toolbarColor: #fff; 10 | @toolbarLinkColor: #fff; 11 | @toolbarSize: 48px; 12 | @tabbarLabelsSize: 72px; 13 | @tabbarLabelsBottomSize: 56px; 14 | @tabbarLinkColor: rgba(255,255,255,0.7); 15 | @tabbarActiveLinkColor: rgba(255,255,255,1); 16 | @searchbarSize: 48px; 17 | @searchbarBg: #fff; 18 | @messageReceivedBg: #fff; 19 | @messageReceivedColor: #333; 20 | @messageSentBg: #c8e6c9; 21 | @messageSentColor: #333; 22 | -------------------------------------------------------------------------------- /app/templates/www/lib/modules/history/history.js: -------------------------------------------------------------------------------- 1 | import History from '../../utils/history'; 2 | 3 | export default { 4 | name: 'history', 5 | static: { 6 | history: History, 7 | }, 8 | on: { 9 | init() { 10 | History.init(this); 11 | }, 12 | }, 13 | }; 14 | -------------------------------------------------------------------------------- /app/templates/www/lib/modules/request/request.js: -------------------------------------------------------------------------------- 1 | /* eslint no-param-reassign: "off" */ 2 | import Request from '../../utils/request'; 3 | 4 | export default { 5 | name: 'request', 6 | proto: { 7 | request: Request, 8 | }, 9 | static: { 10 | request: Request, 11 | }, 12 | }; 13 | -------------------------------------------------------------------------------- /app/templates/www/lib/modules/router/router.js: -------------------------------------------------------------------------------- 1 | import Router from './router-class'; 2 | 3 | export default { 4 | name: 'router', 5 | static: { 6 | Router, 7 | }, 8 | instance: { 9 | cache: { 10 | xhr: [], 11 | templates: [], 12 | components: [], 13 | }, 14 | }, 15 | create() { 16 | const instance = this; 17 | if (instance.app) { 18 | // View Router 19 | if (instance.params.router) { 20 | instance.router = new Router(instance.app, instance); 21 | } 22 | } else { 23 | // App Router 24 | instance.router = new Router(instance); 25 | } 26 | }, 27 | }; 28 | 29 | -------------------------------------------------------------------------------- /app/templates/www/lib/modules/support/support.js: -------------------------------------------------------------------------------- 1 | import { document } from 'ssr-window'; 2 | import Support from '../../utils/support'; 3 | 4 | export default { 5 | name: 'support', 6 | proto: { 7 | support: Support, 8 | }, 9 | static: { 10 | support: Support, 11 | }, 12 | on: { 13 | init() { 14 | const html = document.querySelector('html'); 15 | if (!html) return; 16 | const classNames = []; 17 | if (Support.positionSticky) { 18 | classNames.push('support-position-sticky'); 19 | } 20 | // Add html classes 21 | classNames.forEach((className) => { 22 | html.classList.add(className); 23 | }); 24 | }, 25 | }, 26 | }; 27 | -------------------------------------------------------------------------------- /app/templates/www/lib/modules/utils/utils.js: -------------------------------------------------------------------------------- 1 | import Utils from '../../utils/utils'; 2 | 3 | export default { 4 | name: 'utils', 5 | proto: { 6 | utils: Utils, 7 | }, 8 | static: { 9 | utils: Utils, 10 | }, 11 | }; 12 | -------------------------------------------------------------------------------- /app/templates/www/pages/404.html: -------------------------------------------------------------------------------- 1 |
2 | 13 |
14 |
15 |

Sorry

16 |

Requested content not found.

17 |
18 |
19 |
20 | -------------------------------------------------------------------------------- /app/templates/www/pages/tabs.html: -------------------------------------------------------------------------------- 1 |
2 | 13 |
14 | 30 |
31 |
32 | -------------------------------------------------------------------------------- /app/templates/www/pages/timeline.html: -------------------------------------------------------------------------------- 1 |
2 | 13 |
14 | 27 |
28 | 29 |
30 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "generator-framework7-phonegap", 3 | "version": "0.1.2", 4 | "description": "Yeoman generator", 5 | "license": "MIT", 6 | "main": "app/index.js", 7 | "repository": "arvindr21/generator-framework7-phonegap", 8 | "author": { 9 | "name": "Arvind Ravulavaru", 10 | "email": "", 11 | "url": "https://github.com/arvindr21" 12 | }, 13 | "engines": { 14 | "node": ">=0.10.0" 15 | }, 16 | "scripts": { 17 | "test": "mocha" 18 | }, 19 | "files": [ 20 | "app" 21 | ], 22 | "keywords": [ 23 | "yeoman-generator", 24 | "framwork7", 25 | "phonegap" 26 | ], 27 | "dependencies": { 28 | "yeoman-generator": "~0.16.0", 29 | "chalk": "~0.4.0", 30 | "yosay": "^0.1.0" 31 | }, 32 | "devDependencies": { 33 | "mocha": "*" 34 | }, 35 | "peerDependencies": { 36 | "yo": ">=1.0.0" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /test/test-load.js: -------------------------------------------------------------------------------- 1 | /*global describe, beforeEach, it*/ 2 | 'use strict'; 3 | var assert = require('assert'); 4 | 5 | describe('framework7-phonegap generator', function () { 6 | it('can be imported without blowing up', function () { 7 | var app = require('../app'); 8 | assert(app !== undefined); 9 | }); 10 | }); 11 | --------------------------------------------------------------------------------