framework7 6.3.4 → 7.0.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/accordion/accordion.js +132 -1
- package/components/accordion/accordion.umd.js +1 -0
- package/components/actions/actions-class.js +365 -0
- package/components/actions/actions-rtl.css +1 -1
- package/components/actions/actions.css +1 -1
- package/components/actions/actions.js +42 -1
- package/components/actions/actions.umd.js +1 -0
- package/components/app/app-class.d.ts +10 -10
- package/{esm/components → components}/app/app-class.js +107 -140
- package/components/app/app.less +3 -3
- package/{esm/components → components}/app/load-module.js +32 -32
- package/components/appbar/appbar.js +3 -1
- package/components/appbar/appbar.umd.js +1 -0
- package/components/area-chart/area-chart-class.js +507 -0
- package/components/area-chart/area-chart-rtl.css +1 -1
- package/components/area-chart/area-chart.css +1 -1
- package/components/area-chart/area-chart.js +47 -1
- package/components/area-chart/area-chart.umd.js +1 -0
- package/{esm/components → components}/autocomplete/autocomplete-class.js +241 -253
- package/components/autocomplete/autocomplete-rtl.css +1 -1
- package/components/autocomplete/autocomplete.css +1 -1
- package/components/autocomplete/autocomplete.js +86 -1
- package/components/autocomplete/autocomplete.umd.js +1 -0
- package/{esm/components → components}/badge/badge.js +0 -0
- package/{esm/components → components}/block/block.js +0 -0
- package/{esm/components → components}/button/button.js +0 -0
- package/{esm/components → components}/calendar/calendar-class.js +676 -643
- package/components/calendar/calendar-rtl.css +1 -1
- package/components/calendar/calendar.css +1 -1
- package/components/calendar/calendar.js +111 -1
- package/components/calendar/calendar.umd.js +1 -0
- package/components/card/card-rtl.css +1 -1
- package/components/card/card.css +1 -1
- package/components/card/card.js +592 -1
- package/components/card/card.umd.js +1 -0
- package/components/checkbox/checkbox-rtl.css +1 -1
- package/components/checkbox/checkbox.css +1 -1
- package/components/checkbox/checkbox.js +3 -1
- package/components/checkbox/checkbox.umd.js +1 -0
- package/components/chip/chip-rtl.css +1 -1
- package/components/chip/chip.css +1 -1
- package/components/chip/chip.js +3 -1
- package/components/chip/chip.umd.js +1 -0
- package/{esm/components → components}/color-picker/color-picker-class.js +336 -349
- package/components/color-picker/color-picker-rtl.css +1 -1
- package/components/color-picker/color-picker.css +1 -1
- package/components/color-picker/color-picker.js +92 -1
- package/components/color-picker/color-picker.umd.js +1 -0
- package/{esm/components → components}/color-picker/modules/alpha-slider.js +30 -19
- package/{esm/components → components}/color-picker/modules/brightness-slider.js +35 -24
- package/{esm/components → components}/color-picker/modules/current-color.js +4 -2
- package/{esm/components → components}/color-picker/modules/hex.js +27 -16
- package/{esm/components → components}/color-picker/modules/hs-spectrum.js +37 -25
- package/{esm/components → components}/color-picker/modules/hsb-sliders.js +54 -41
- package/{esm/components → components}/color-picker/modules/hue-slider.js +29 -18
- package/{esm/components → components}/color-picker/modules/initial-current-colors.js +14 -9
- package/{esm/components → components}/color-picker/modules/palette.js +14 -11
- package/{esm/components → components}/color-picker/modules/rgb-bars.js +42 -29
- package/{esm/components → components}/color-picker/modules/rgb-sliders.js +47 -34
- package/{esm/components → components}/color-picker/modules/sb-spectrum.js +38 -26
- package/{esm/components → components}/color-picker/modules/wheel.js +59 -47
- package/components/contacts-list/contacts-list-rtl.css +1 -1
- package/components/contacts-list/contacts-list.css +1 -1
- package/components/contacts-list/contacts-list.js +3 -1
- package/components/contacts-list/contacts-list.umd.js +1 -0
- package/{esm/components → components}/data-table/data-table-class.js +40 -59
- package/components/data-table/data-table-rtl.css +1 -1
- package/components/data-table/data-table.css +1 -1
- package/components/data-table/data-table.js +72 -1
- package/components/data-table/data-table.umd.js +1 -0
- package/{esm/components → components}/dialog/dialog-class.js +58 -67
- package/components/dialog/dialog-rtl.css +1 -1
- package/components/dialog/dialog.css +1 -1
- package/components/dialog/dialog.js +254 -1
- package/components/dialog/dialog.umd.js +1 -0
- package/components/elevation/elevation.js +3 -1
- package/components/elevation/elevation.umd.js +1 -0
- package/components/fab/fab.js +181 -1
- package/components/fab/fab.umd.js +1 -0
- package/components/form/form.js +347 -1
- package/components/form/form.umd.js +1 -0
- package/components/gauge/gauge-class.js +306 -0
- package/components/gauge/gauge.js +99 -1
- package/components/gauge/gauge.umd.js +1 -0
- package/components/grid/grid-rtl.css +1 -1
- package/components/grid/grid.css +1 -1
- package/components/grid/grid.js +227 -1
- package/components/grid/grid.umd.js +1 -0
- package/{esm/components → components}/icon/icon.js +0 -0
- package/components/infinite-scroll/infinite-scroll.js +110 -1
- package/components/infinite-scroll/infinite-scroll.umd.js +1 -0
- package/components/input/input-rtl.css +1 -1
- package/components/input/input.css +1 -1
- package/components/input/input.js +394 -1
- package/components/input/input.less +1 -1
- package/components/input/input.umd.js +1 -0
- package/components/lazy/lazy.js +283 -1
- package/components/lazy/lazy.umd.js +1 -0
- package/{esm/components → components}/link/link.js +0 -0
- package/{esm/components → components}/list/list.js +0 -0
- package/{esm/components → components}/list-index/list-index-class.js +113 -121
- package/components/list-index/list-index-rtl.css +1 -1
- package/components/list-index/list-index.css +1 -1
- package/components/list-index/list-index.js +73 -1
- package/components/list-index/list-index.umd.js +1 -0
- package/components/login-screen/login-screen-class.js +43 -0
- package/components/login-screen/login-screen-rtl.css +1 -1
- package/components/login-screen/login-screen.css +1 -1
- package/components/login-screen/login-screen.js +28 -1
- package/components/login-screen/login-screen.less +1 -1
- package/components/login-screen/login-screen.umd.js +1 -0
- package/components/menu/menu.js +79 -1
- package/components/menu/menu.umd.js +1 -0
- package/{esm/components → components}/messagebar/messagebar-class.js +124 -152
- package/components/messagebar/messagebar-rtl.css +1 -1
- package/components/messagebar/messagebar.css +1 -1
- package/components/messagebar/messagebar.js +74 -1
- package/components/messagebar/messagebar.umd.js +1 -0
- package/{esm/components → components}/messages/messages-class.js +162 -242
- package/components/messages/messages-rtl.css +1 -1
- package/components/messages/messages.css +1 -1
- package/components/messages/messages.js +73 -1
- package/components/messages/messages.umd.js +1 -0
- package/{esm/components → components}/modal/custom-modal-class.js +16 -29
- package/{esm/components → components}/modal/modal-class.js +68 -83
- package/{esm/components → components}/modal/modal.js +8 -5
- package/{esm/components → components}/navbar/navbar.js +166 -171
- package/components/notification/notification-aurora.less +1 -1
- package/{esm/components → components}/notification/notification-class.js +65 -78
- package/components/notification/notification-ios.less +1 -1
- package/components/notification/notification-rtl.css +1 -1
- package/components/notification/notification.css +1 -1
- package/components/notification/notification.js +35 -1
- package/components/notification/notification.umd.js +1 -0
- package/components/page/page-vars.less +1 -1
- package/{esm/components → components}/page/page.js +0 -0
- package/{esm/components → components}/panel/panel-class.js +183 -214
- package/components/panel/panel-rtl.css +1 -1
- package/components/panel/panel.css +1 -1
- package/components/panel/panel.js +190 -1
- package/components/panel/panel.umd.js +1 -0
- package/{esm/components → components}/panel/resizable-panel.js +30 -28
- package/{esm/components → components}/panel/swipe-panel.js +46 -44
- package/{esm/components → components}/photo-browser/photo-browser-class.js +206 -234
- package/components/photo-browser/photo-browser.js +73 -1
- package/components/photo-browser/photo-browser.umd.js +1 -0
- package/{esm/components → components}/picker/picker-class.js +233 -233
- package/{esm/components → components}/picker/picker-column.js +70 -72
- package/components/picker/picker-rtl.css +1 -1
- package/components/picker/picker.css +1 -1
- package/components/picker/picker.js +64 -1
- package/components/picker/picker.umd.js +1 -0
- package/components/pie-chart/pie-chart-class.js +264 -0
- package/components/pie-chart/pie-chart.js +35 -1
- package/components/pie-chart/pie-chart.umd.js +1 -0
- package/{esm/components → components}/popover/popover-class.js +72 -97
- package/components/popover/popover-rtl.css +1 -1
- package/components/popover/popover.css +1 -1
- package/components/popover/popover.js +76 -1
- package/components/popover/popover.umd.js +1 -0
- package/{esm/components → components}/popup/popup-class.js +66 -81
- package/components/popup/popup-rtl.css +1 -1
- package/components/popup/popup.css +1 -1
- package/components/popup/popup.js +41 -1
- package/components/popup/popup.less +21 -21
- package/components/popup/popup.umd.js +1 -0
- package/components/preloader/preloader.js +115 -1
- package/components/preloader/preloader.umd.js +1 -0
- package/components/progressbar/progressbar-rtl.css +1 -1
- package/components/progressbar/progressbar.css +1 -1
- package/components/progressbar/progressbar.js +166 -1
- package/components/progressbar/progressbar.umd.js +1 -0
- package/{esm/components → components}/pull-to-refresh/pull-to-refresh-class.js +101 -118
- package/components/pull-to-refresh/pull-to-refresh.js +70 -1
- package/components/pull-to-refresh/pull-to-refresh.umd.js +1 -0
- package/components/radio/radio-rtl.css +1 -1
- package/components/radio/radio.css +1 -1
- package/components/radio/radio.js +3 -1
- package/components/radio/radio.umd.js +1 -0
- package/{esm/components → components}/range/range-class.js +191 -192
- package/components/range/range-rtl.css +1 -1
- package/components/range/range.css +1 -1
- package/components/range/range.js +79 -1
- package/components/range/range.umd.js +1 -0
- package/components/searchbar/remove-diacritics.js +275 -0
- package/{esm/components → components}/searchbar/searchbar-class.js +129 -146
- package/components/searchbar/searchbar-rtl.css +1 -1
- package/components/searchbar/searchbar.css +1 -1
- package/components/searchbar/searchbar.js +121 -1
- package/components/searchbar/searchbar.less +1 -1
- package/components/searchbar/searchbar.umd.js +1 -0
- package/{esm/components → components}/sheet/sheet-class.js +87 -106
- package/components/sheet/sheet-rtl.css +1 -1
- package/components/sheet/sheet.css +1 -1
- package/components/sheet/sheet.js +68 -1
- package/components/sheet/sheet.less +16 -16
- package/components/sheet/sheet.umd.js +1 -0
- package/components/skeleton/skeleton-rtl.css +1 -1
- package/components/skeleton/skeleton-vars.less +1 -1
- package/components/skeleton/skeleton.css +1 -1
- package/components/skeleton/skeleton.js +3 -1
- package/components/skeleton/skeleton.less +1 -1
- package/components/skeleton/skeleton.umd.js +1 -0
- package/{esm/components → components}/smart-select/smart-select-class.js +284 -296
- package/components/smart-select/smart-select.js +149 -1
- package/components/smart-select/smart-select.umd.js +1 -0
- package/components/sortable/sortable-rtl.css +1 -1
- package/components/sortable/sortable.css +1 -1
- package/components/sortable/sortable.js +293 -1
- package/components/sortable/sortable.umd.js +1 -0
- package/{esm/components → components}/statusbar/statusbar.js +48 -41
- package/{esm/components → components}/stepper/stepper-class.js +104 -115
- package/components/stepper/stepper-rtl.css +1 -1
- package/components/stepper/stepper.css +1 -1
- package/components/stepper/stepper.js +86 -1
- package/components/stepper/stepper.umd.js +1 -0
- package/{esm/components → components}/subnavbar/subnavbar.js +3 -2
- package/components/swipeout/swipeout-rtl.css +1 -1
- package/components/swipeout/swipeout.css +1 -1
- package/components/swipeout/swipeout.js +597 -1
- package/components/swipeout/swipeout.umd.js +1 -0
- package/components/swiper/swiper-rtl.css +1 -1
- package/components/swiper/swiper.css +1 -1
- package/components/swiper/swiper.js +191 -1
- package/components/swiper/swiper.less +1 -1
- package/components/swiper/swiper.umd.js +1 -0
- package/components/tabs/tabs.js +272 -1
- package/components/tabs/tabs.umd.js +1 -0
- package/{esm/components → components}/text-editor/text-editor-class.js +170 -182
- package/components/text-editor/text-editor-rtl.css +1 -1
- package/components/text-editor/text-editor.css +1 -1
- package/components/text-editor/text-editor.js +89 -1
- package/components/text-editor/text-editor.umd.js +1 -0
- package/components/timeline/timeline-rtl.css +1 -1
- package/components/timeline/timeline.css +1 -1
- package/components/timeline/timeline.js +3 -1
- package/components/timeline/timeline.umd.js +1 -0
- package/components/toast/toast-class.js +119 -0
- package/components/toast/toast.js +43 -1
- package/components/toast/toast.umd.js +1 -0
- package/{esm/components → components}/toggle/toggle-class.js +46 -63
- package/components/toggle/toggle-rtl.css +1 -1
- package/components/toggle/toggle.css +1 -1
- package/components/toggle/toggle.js +65 -1
- package/components/toggle/toggle.umd.js +1 -0
- package/{esm/components → components}/toolbar/toolbar.js +63 -59
- package/{esm/components → components}/tooltip/tooltip-class.js +95 -106
- package/components/tooltip/tooltip.js +144 -1
- package/components/tooltip/tooltip.umd.js +1 -0
- package/components/touch-ripple/touch-ripple-class.js +98 -0
- package/components/touch-ripple/touch-ripple-vars.less +1 -1
- package/components/touch-ripple/touch-ripple.js +18 -0
- package/components/treeview/treeview-rtl.css +1 -1
- package/components/treeview/treeview.css +1 -1
- package/components/treeview/treeview.js +83 -1
- package/components/treeview/treeview.umd.js +1 -0
- package/components/typography/typography.js +3 -1
- package/components/typography/typography.umd.js +1 -0
- package/{esm/components → components}/view/resizable-view.js +23 -21
- package/{esm/components → components}/view/view-class.js +48 -67
- package/{esm/components → components}/view/view.js +37 -28
- package/{esm/components → components}/virtual-list/virtual-list-class.js +153 -170
- package/components/virtual-list/virtual-list.js +19 -1
- package/components/virtual-list/virtual-list.umd.js +1 -0
- package/framework7-bundle-rtl.css +268 -852
- package/framework7-bundle-rtl.min.css +3 -3
- package/framework7-bundle.css +268 -852
- package/{esm/framework7-bundle.js → framework7-bundle.esm.js} +2 -2
- package/framework7-bundle.js +30782 -31429
- package/framework7-bundle.js.map +1 -1
- package/framework7-bundle.less +2 -2
- package/framework7-bundle.min.css +3 -3
- package/framework7-bundle.min.js +3 -3
- package/framework7-bundle.min.js.map +1 -1
- package/{esm/framework7-lite-bundle.js → framework7-lite-bundle.esm.js} +2 -2
- package/{esm/framework7-lite.js → framework7-lite.esm.js} +2 -2
- package/framework7-rtl.css +52 -56
- package/framework7-rtl.min.css +3 -3
- package/{types/types.d.ts → framework7-types.d.ts} +0 -0
- package/framework7.css +52 -56
- package/framework7.d.ts +81 -81
- package/{esm/framework7.js → framework7.esm.js} +2 -2
- package/framework7.js +3386 -4049
- package/framework7.js.map +1 -1
- package/framework7.less +2 -2
- package/framework7.min.css +3 -3
- package/framework7.min.js +3 -3
- package/framework7.min.js.map +1 -1
- package/less/mixins.less +2 -2
- package/{esm/modules → modules}/clicks/clicks.js +17 -16
- package/modules/component/$h.js +14 -0
- package/modules/component/$jsx.js +18 -0
- package/modules/component/component-class.js +382 -0
- package/modules/component/component.d.ts +2 -0
- package/{esm/modules → modules}/component/component.js +23 -17
- package/{esm/modules → modules}/component/custom-components.js +0 -0
- package/{esm/modules → modules}/component/eventslisteners.js +14 -18
- package/modules/component/parse-component.js +80 -0
- package/{esm/modules → modules}/component/patch.js +1 -1
- package/{esm/modules → modules}/component/snabbdom/h.js +0 -0
- package/{esm/modules → modules}/component/snabbdom/helpers/attachto.js +0 -0
- package/{esm/modules → modules}/component/snabbdom/hooks.js +0 -0
- package/{esm/modules → modules}/component/snabbdom/htmldomapi.js +0 -0
- package/{esm/modules → modules}/component/snabbdom/is.js +0 -0
- package/{esm/modules → modules}/component/snabbdom/modules/attributes.js +0 -0
- package/{esm/modules → modules}/component/snabbdom/modules/class.js +0 -0
- package/{esm/modules → modules}/component/snabbdom/modules/dataset.js +0 -0
- package/{esm/modules → modules}/component/snabbdom/modules/eventlisteners.js +0 -0
- package/{esm/modules → modules}/component/snabbdom/modules/hero.js +1 -1
- package/{esm/modules → modules}/component/snabbdom/modules/module.js +0 -0
- package/{esm/modules → modules}/component/snabbdom/modules/props.js +0 -0
- package/{esm/modules → modules}/component/snabbdom/modules/style.js +1 -1
- package/{esm/modules → modules}/component/snabbdom/snabbdom.bundle.js +0 -0
- package/{esm/modules → modules}/component/snabbdom/snabbdom.js +6 -18
- package/{esm/modules → modules}/component/snabbdom/thunk.js +0 -0
- package/{esm/modules → modules}/component/snabbdom/tovnode.js +0 -0
- package/{esm/modules → modules}/component/snabbdom/vnode.js +0 -0
- package/{esm/modules → modules}/component/vdom.js +106 -130
- package/{esm/modules → modules}/demo-module.js +15 -7
- package/{esm/modules → modules}/device/device.js +12 -11
- package/{esm/modules → modules}/history/history.js +2 -1
- package/{esm/modules → modules}/request/request.js +2 -2
- package/modules/resize/resize.js +65 -0
- package/{esm/modules → modules}/router/app-router-check.js +1 -1
- package/{esm/modules → modules}/router/async-component.js +3 -3
- package/{esm/modules → modules}/router/back.js +117 -117
- package/{esm/modules → modules}/router/clear-previous-history.js +8 -8
- package/modules/router/component-loader.js +174 -0
- package/{esm/modules → modules}/router/modal.js +49 -49
- package/{esm/modules → modules}/router/navigate.js +140 -221
- package/{esm/modules → modules}/router/process-route-queue.js +20 -17
- package/{esm/modules → modules}/router/redirect.js +7 -11
- package/{esm/modules → modules}/router/router-class.js +411 -432
- package/{esm/modules → modules}/router/router.js +5 -3
- package/{esm/modules → modules}/router/swipe-back.js +143 -177
- package/{esm/modules → modules}/router/tab.js +46 -46
- package/{esm/modules → modules}/service-worker/service-worker.js +41 -37
- package/modules/store/create-store.js +149 -0
- package/{esm/modules → modules}/store/store.js +2 -2
- package/{esm/modules → modules}/support/support.js +1 -1
- package/{esm/modules → modules}/touch/touch.js +71 -70
- package/{esm/modules → modules}/utils/utils.js +2 -2
- package/package.json +252 -11
- package/shared/$jsx.js +22 -0
- package/shared/class.js +143 -0
- package/shared/constructor-methods.js +42 -0
- package/{esm/shared → shared}/dom7.js +2 -1
- package/shared/events-class.js +100 -0
- package/{types/shared → shared}/get-device.d.ts +0 -0
- package/{esm/shared → shared}/get-device.js +32 -37
- package/{types/shared → shared}/get-support.d.ts +0 -0
- package/{esm/shared → shared}/get-support.js +7 -6
- package/{esm/shared → shared}/history.js +61 -47
- package/shared/modal-methods.js +90 -0
- package/{types/shared → shared}/request.d.ts +0 -0
- package/shared/request.js +474 -0
- package/{types/shared → shared}/utils.d.ts +0 -0
- package/{esm/shared → shared}/utils.js +125 -162
- package/bundle/package.json +0 -8
- package/cjs/components/accordion/accordion.js +0 -136
- package/cjs/components/actions/actions-class.js +0 -383
- package/cjs/components/actions/actions.js +0 -58
- package/cjs/components/app/app-class.js +0 -378
- package/cjs/components/app/load-module.js +0 -155
- package/cjs/components/appbar/appbar.js +0 -8
- package/cjs/components/area-chart/area-chart-class.js +0 -526
- package/cjs/components/area-chart/area-chart.js +0 -56
- package/cjs/components/autocomplete/autocomplete-class.js +0 -975
- package/cjs/components/autocomplete/autocomplete.js +0 -93
- package/cjs/components/badge/badge.js +0 -8
- package/cjs/components/block/block.js +0 -8
- package/cjs/components/button/button.js +0 -8
- package/cjs/components/calendar/calendar-class.js +0 -2078
- package/cjs/components/calendar/calendar.js +0 -124
- package/cjs/components/card/card.js +0 -625
- package/cjs/components/checkbox/checkbox.js +0 -8
- package/cjs/components/chip/chip.js +0 -8
- package/cjs/components/color-picker/color-picker-class.js +0 -1022
- package/cjs/components/color-picker/color-picker.js +0 -105
- package/cjs/components/color-picker/modules/alpha-slider.js +0 -101
- package/cjs/components/color-picker/modules/brightness-slider.js +0 -86
- package/cjs/components/color-picker/modules/current-color.js +0 -23
- package/cjs/components/color-picker/modules/hex.js +0 -81
- package/cjs/components/color-picker/modules/hs-spectrum.js +0 -137
- package/cjs/components/color-picker/modules/hsb-sliders.js +0 -206
- package/cjs/components/color-picker/modules/hue-slider.js +0 -78
- package/cjs/components/color-picker/modules/initial-current-colors.js +0 -54
- package/cjs/components/color-picker/modules/palette.js +0 -61
- package/cjs/components/color-picker/modules/rgb-bars.js +0 -196
- package/cjs/components/color-picker/modules/rgb-sliders.js +0 -198
- package/cjs/components/color-picker/modules/sb-spectrum.js +0 -137
- package/cjs/components/color-picker/modules/wheel.js +0 -198
- package/cjs/components/contacts-list/contacts-list.js +0 -8
- package/cjs/components/data-table/data-table-class.js +0 -188
- package/cjs/components/data-table/data-table.js +0 -75
- package/cjs/components/dialog/dialog-class.js +0 -250
- package/cjs/components/dialog/dialog.js +0 -297
- package/cjs/components/elevation/elevation.js +0 -8
- package/cjs/components/fab/fab.js +0 -195
- package/cjs/components/form/form.js +0 -341
- package/cjs/components/gauge/gauge-class.js +0 -332
- package/cjs/components/gauge/gauge.js +0 -103
- package/cjs/components/grid/grid.js +0 -233
- package/cjs/components/icon/icon.js +0 -8
- package/cjs/components/infinite-scroll/infinite-scroll.js +0 -111
- package/cjs/components/input/input.js +0 -396
- package/cjs/components/lazy/lazy.js +0 -283
- package/cjs/components/link/link.js +0 -8
- package/cjs/components/list/list.js +0 -8
- package/cjs/components/list-index/list-index-class.js +0 -405
- package/cjs/components/list-index/list-index.js +0 -77
- package/cjs/components/login-screen/login-screen-class.js +0 -68
- package/cjs/components/login-screen/login-screen.js +0 -44
- package/cjs/components/menu/menu.js +0 -92
- package/cjs/components/messagebar/messagebar-class.js +0 -446
- package/cjs/components/messagebar/messagebar.js +0 -78
- package/cjs/components/messages/messages-class.js +0 -633
- package/cjs/components/messages/messages.js +0 -76
- package/cjs/components/modal/custom-modal-class.js +0 -99
- package/cjs/components/modal/modal-class.js +0 -277
- package/cjs/components/modal/modal.js +0 -32
- package/cjs/components/navbar/navbar.js +0 -833
- package/cjs/components/notification/notification-class.js +0 -269
- package/cjs/components/notification/notification.js +0 -44
- package/cjs/components/page/page.js +0 -8
- package/cjs/components/panel/panel-class.js +0 -660
- package/cjs/components/panel/panel.js +0 -219
- package/cjs/components/panel/resizable-panel.js +0 -197
- package/cjs/components/panel/swipe-panel.js +0 -363
- package/cjs/components/photo-browser/photo-browser-class.js +0 -781
- package/cjs/components/photo-browser/photo-browser.js +0 -78
- package/cjs/components/picker/picker-class.js +0 -704
- package/cjs/components/picker/picker-column.js +0 -389
- package/cjs/components/picker/picker.js +0 -77
- package/cjs/components/pie-chart/pie-chart-class.js +0 -290
- package/cjs/components/pie-chart/pie-chart.js +0 -44
- package/cjs/components/popover/popover-class.js +0 -365
- package/cjs/components/popover/popover.js +0 -93
- package/cjs/components/popup/popup-class.js +0 -416
- package/cjs/components/popup/popup.js +0 -57
- package/cjs/components/preloader/preloader.js +0 -111
- package/cjs/components/progressbar/progressbar.js +0 -185
- package/cjs/components/pull-to-refresh/pull-to-refresh-class.js +0 -627
- package/cjs/components/pull-to-refresh/pull-to-refresh.js +0 -74
- package/cjs/components/radio/radio.js +0 -8
- package/cjs/components/range/range-class.js +0 -674
- package/cjs/components/range/range.js +0 -93
- package/cjs/components/searchbar/remove-diacritics.js +0 -283
- package/cjs/components/searchbar/searchbar-class.js +0 -739
- package/cjs/components/searchbar/searchbar.js +0 -141
- package/cjs/components/sheet/sheet-class.js +0 -583
- package/cjs/components/sheet/sheet.js +0 -83
- package/cjs/components/skeleton/skeleton.js +0 -8
- package/cjs/components/smart-select/smart-select-class.js +0 -1005
- package/cjs/components/smart-select/smart-select.js +0 -151
- package/cjs/components/sortable/sortable.js +0 -322
- package/cjs/components/statusbar/statusbar.js +0 -226
- package/cjs/components/stepper/stepper-class.js +0 -497
- package/cjs/components/stepper/stepper.js +0 -96
- package/cjs/components/subnavbar/subnavbar.js +0 -28
- package/cjs/components/swipeout/swipeout.js +0 -618
- package/cjs/components/swiper/swiper.js +0 -189
- package/cjs/components/tabs/tabs.js +0 -296
- package/cjs/components/text-editor/text-editor-class.js +0 -627
- package/cjs/components/text-editor/text-editor.js +0 -93
- package/cjs/components/timeline/timeline.js +0 -8
- package/cjs/components/toast/toast-class.js +0 -142
- package/cjs/components/toast/toast.js +0 -51
- package/cjs/components/toggle/toggle-class.js +0 -213
- package/cjs/components/toggle/toggle.js +0 -72
- package/cjs/components/toolbar/toolbar.js +0 -234
- package/cjs/components/tooltip/tooltip-class.js +0 -409
- package/cjs/components/tooltip/tooltip.js +0 -146
- package/cjs/components/touch-ripple/touch-ripple-class.js +0 -110
- package/cjs/components/touch-ripple/touch-ripple.js +0 -34
- package/cjs/components/treeview/treeview.js +0 -88
- package/cjs/components/typography/typography.js +0 -8
- package/cjs/components/view/resizable-view.js +0 -155
- package/cjs/components/view/view-class.js +0 -251
- package/cjs/components/view/view.js +0 -196
- package/cjs/components/virtual-list/virtual-list-class.js +0 -654
- package/cjs/components/virtual-list/virtual-list.js +0 -27
- package/cjs/framework7-bundle.js +0 -208
- package/cjs/framework7-lite-bundle.js +0 -191
- package/cjs/framework7-lite.js +0 -87
- package/cjs/framework7.js +0 -98
- package/cjs/modules/clicks/clicks.js +0 -115
- package/cjs/modules/component/$h.js +0 -31
- package/cjs/modules/component/$jsx.js +0 -31
- package/cjs/modules/component/component-class.js +0 -415
- package/cjs/modules/component/component.js +0 -58
- package/cjs/modules/component/custom-components.js +0 -6
- package/cjs/modules/component/eventslisteners.js +0 -90
- package/cjs/modules/component/parse-component.js +0 -80
- package/cjs/modules/component/patch.js +0 -21
- package/cjs/modules/component/snabbdom/h.js +0 -72
- package/cjs/modules/component/snabbdom/helpers/attachto.js +0 -62
- package/cjs/modules/component/snabbdom/hooks.js +0 -1
- package/cjs/modules/component/snabbdom/htmldomapi.js +0 -90
- package/cjs/modules/component/snabbdom/is.js +0 -11
- package/cjs/modules/component/snabbdom/modules/attributes.js +0 -61
- package/cjs/modules/component/snabbdom/modules/class.js +0 -38
- package/cjs/modules/component/snabbdom/modules/dataset.js +0 -47
- package/cjs/modules/component/snabbdom/modules/eventlisteners.js +0 -106
- package/cjs/modules/component/snabbdom/modules/hero.js +0 -193
- package/cjs/modules/component/snabbdom/modules/module.js +0 -1
- package/cjs/modules/component/snabbdom/modules/props.js +0 -40
- package/cjs/modules/component/snabbdom/modules/style.js +0 -116
- package/cjs/modules/component/snabbdom/snabbdom.bundle.js +0 -33
- package/cjs/modules/component/snabbdom/snabbdom.js +0 -374
- package/cjs/modules/component/snabbdom/thunk.js +0 -66
- package/cjs/modules/component/snabbdom/tovnode.js +0 -57
- package/cjs/modules/component/snabbdom/vnode.js +0 -20
- package/cjs/modules/component/vdom.js +0 -393
- package/cjs/modules/demo-module.js +0 -49
- package/cjs/modules/device/device.js +0 -56
- package/cjs/modules/history/history.js +0 -21
- package/cjs/modules/request/request.js +0 -20
- package/cjs/modules/resize/resize.js +0 -72
- package/cjs/modules/router/app-router-check.js +0 -10
- package/cjs/modules/router/async-component.js +0 -33
- package/cjs/modules/router/back.js +0 -899
- package/cjs/modules/router/clear-previous-history.js +0 -50
- package/cjs/modules/router/component-loader.js +0 -140
- package/cjs/modules/router/modal.js +0 -254
- package/cjs/modules/router/navigate.js +0 -1054
- package/cjs/modules/router/process-route-queue.js +0 -80
- package/cjs/modules/router/redirect.js +0 -52
- package/cjs/modules/router/router-class.js +0 -1500
- package/cjs/modules/router/router.js +0 -36
- package/cjs/modules/router/swipe-back.js +0 -735
- package/cjs/modules/router/tab.js +0 -264
- package/cjs/modules/service-worker/service-worker.js +0 -101
- package/cjs/modules/store/create-store.js +0 -169
- package/cjs/modules/store/store.js +0 -21
- package/cjs/modules/support/support.js +0 -14
- package/cjs/modules/touch/touch.js +0 -585
- package/cjs/modules/utils/utils.js +0 -21
- package/cjs/shared/$jsx.js +0 -39
- package/cjs/shared/class.js +0 -206
- package/cjs/shared/constructor-methods.js +0 -73
- package/cjs/shared/dom7.js +0 -17
- package/cjs/shared/events-class.js +0 -125
- package/cjs/shared/get-device.js +0 -157
- package/cjs/shared/get-support.js +0 -44
- package/cjs/shared/history.js +0 -185
- package/cjs/shared/modal-methods.js +0 -105
- package/cjs/shared/request.js +0 -552
- package/cjs/shared/utils.js +0 -472
- package/components/accordion/package.json +0 -9
- package/components/actions/package.json +0 -9
- package/components/app/package.json +0 -9
- package/components/appbar/package.json +0 -9
- package/components/area-chart/package.json +0 -9
- package/components/autocomplete/package.json +0 -9
- package/components/badge/package.json +0 -9
- package/components/block/package.json +0 -9
- package/components/button/package.json +0 -9
- package/components/calendar/package.json +0 -9
- package/components/card/package.json +0 -9
- package/components/checkbox/package.json +0 -9
- package/components/chip/package.json +0 -9
- package/components/color-picker/package.json +0 -9
- package/components/contacts-list/package.json +0 -9
- package/components/data-table/package.json +0 -9
- package/components/dialog/package.json +0 -9
- package/components/elevation/package.json +0 -9
- package/components/fab/package.json +0 -9
- package/components/form/package.json +0 -9
- package/components/gauge/package.json +0 -9
- package/components/grid/package.json +0 -9
- package/components/icon/package.json +0 -9
- package/components/infinite-scroll/package.json +0 -9
- package/components/input/package.json +0 -9
- package/components/lazy/package.json +0 -9
- package/components/link/package.json +0 -9
- package/components/list/package.json +0 -9
- package/components/list-index/package.json +0 -9
- package/components/login-screen/package.json +0 -9
- package/components/menu/package.json +0 -9
- package/components/messagebar/package.json +0 -9
- package/components/messages/package.json +0 -9
- package/components/modal/package.json +0 -9
- package/components/navbar/package.json +0 -9
- package/components/notification/package.json +0 -9
- package/components/page/package.json +0 -9
- package/components/panel/package.json +0 -9
- package/components/photo-browser/package.json +0 -9
- package/components/picker/package.json +0 -9
- package/components/pie-chart/package.json +0 -9
- package/components/popover/package.json +0 -9
- package/components/popup/package.json +0 -9
- package/components/preloader/package.json +0 -9
- package/components/progressbar/package.json +0 -9
- package/components/pull-to-refresh/package.json +0 -9
- package/components/radio/package.json +0 -9
- package/components/range/package.json +0 -9
- package/components/searchbar/package.json +0 -9
- package/components/sheet/package.json +0 -9
- package/components/skeleton/package.json +0 -9
- package/components/smart-select/package.json +0 -9
- package/components/sortable/package.json +0 -9
- package/components/statusbar/package.json +0 -9
- package/components/stepper/package.json +0 -9
- package/components/subnavbar/package.json +0 -9
- package/components/swipeout/package.json +0 -9
- package/components/swiper/package.json +0 -9
- package/components/tabs/package.json +0 -9
- package/components/text-editor/package.json +0 -9
- package/components/timeline/package.json +0 -9
- package/components/toast/package.json +0 -9
- package/components/toggle/package.json +0 -9
- package/components/toolbar/package.json +0 -9
- package/components/tooltip/package.json +0 -9
- package/components/touch-ripple/package.json +0 -9
- package/components/treeview/package.json +0 -9
- package/components/typography/package.json +0 -9
- package/components/view/package.json +0 -9
- package/components/virtual-list/package.json +0 -9
- package/core/package.json +0 -8
- package/esm/components/accordion/accordion.js +0 -126
- package/esm/components/actions/actions-class.js +0 -373
- package/esm/components/actions/actions.js +0 -48
- package/esm/components/appbar/appbar.js +0 -3
- package/esm/components/area-chart/area-chart-class.js +0 -517
- package/esm/components/area-chart/area-chart.js +0 -45
- package/esm/components/autocomplete/autocomplete.js +0 -82
- package/esm/components/calendar/calendar.js +0 -113
- package/esm/components/card/card.js +0 -612
- package/esm/components/checkbox/checkbox.js +0 -3
- package/esm/components/chip/chip.js +0 -3
- package/esm/components/color-picker/color-picker.js +0 -94
- package/esm/components/contacts-list/contacts-list.js +0 -3
- package/esm/components/data-table/data-table.js +0 -64
- package/esm/components/dialog/dialog.js +0 -286
- package/esm/components/elevation/elevation.js +0 -3
- package/esm/components/fab/fab.js +0 -185
- package/esm/components/form/form.js +0 -330
- package/esm/components/gauge/gauge-class.js +0 -323
- package/esm/components/gauge/gauge.js +0 -91
- package/esm/components/grid/grid.js +0 -223
- package/esm/components/infinite-scroll/infinite-scroll.js +0 -101
- package/esm/components/input/input.js +0 -384
- package/esm/components/lazy/lazy.js +0 -271
- package/esm/components/list-index/list-index.js +0 -65
- package/esm/components/login-screen/login-screen-class.js +0 -58
- package/esm/components/login-screen/login-screen.js +0 -34
- package/esm/components/menu/menu.js +0 -82
- package/esm/components/messagebar/messagebar.js +0 -66
- package/esm/components/messages/messages.js +0 -65
- package/esm/components/notification/notification.js +0 -33
- package/esm/components/panel/panel.js +0 -208
- package/esm/components/photo-browser/photo-browser.js +0 -68
- package/esm/components/picker/picker.js +0 -66
- package/esm/components/pie-chart/pie-chart-class.js +0 -281
- package/esm/components/pie-chart/pie-chart.js +0 -33
- package/esm/components/popover/popover.js +0 -81
- package/esm/components/popup/popup.js +0 -47
- package/esm/components/preloader/preloader.js +0 -101
- package/esm/components/progressbar/progressbar.js +0 -175
- package/esm/components/pull-to-refresh/pull-to-refresh.js +0 -62
- package/esm/components/radio/radio.js +0 -3
- package/esm/components/range/range.js +0 -81
- package/esm/components/searchbar/remove-diacritics.js +0 -277
- package/esm/components/searchbar/searchbar.js +0 -129
- package/esm/components/sheet/sheet.js +0 -71
- package/esm/components/skeleton/skeleton.js +0 -3
- package/esm/components/smart-select/smart-select.js +0 -139
- package/esm/components/sortable/sortable.js +0 -310
- package/esm/components/stepper/stepper.js +0 -84
- package/esm/components/swipeout/swipeout.js +0 -606
- package/esm/components/swiper/swiper.js +0 -177
- package/esm/components/tabs/tabs.js +0 -286
- package/esm/components/text-editor/text-editor.js +0 -81
- package/esm/components/timeline/timeline.js +0 -3
- package/esm/components/toast/toast-class.js +0 -132
- package/esm/components/toast/toast.js +0 -40
- package/esm/components/toggle/toggle.js +0 -61
- package/esm/components/tooltip/tooltip.js +0 -135
- package/esm/components/touch-ripple/touch-ripple-class.js +0 -103
- package/esm/components/touch-ripple/touch-ripple.js +0 -25
- package/esm/components/treeview/treeview.js +0 -78
- package/esm/components/typography/typography.js +0 -3
- package/esm/components/virtual-list/virtual-list.js +0 -17
- package/esm/modules/component/$h.js +0 -20
- package/esm/modules/component/$jsx.js +0 -24
- package/esm/modules/component/component-class.js +0 -402
- package/esm/modules/component/parse-component.js +0 -70
- package/esm/modules/resize/resize.js +0 -64
- package/esm/modules/router/component-loader.js +0 -133
- package/esm/modules/store/create-store.js +0 -164
- package/esm/shared/$jsx.js +0 -33
- package/esm/shared/class.js +0 -197
- package/esm/shared/constructor-methods.js +0 -65
- package/esm/shared/events-class.js +0 -119
- package/esm/shared/modal-methods.js +0 -95
- package/esm/shared/request.js +0 -545
- package/lite/package.json +0 -8
- package/lite-bundle/package.json +0 -8
- package/modules/clicks/package.json +0 -9
- package/modules/component/package.json +0 -9
- package/modules/device/package.json +0 -9
- package/modules/history/package.json +0 -9
- package/modules/request/package.json +0 -9
- package/modules/resize/package.json +0 -9
- package/modules/router/package.json +0 -9
- package/modules/service-worker/package.json +0 -9
- package/modules/store/package.json +0 -9
- package/modules/support/package.json +0 -9
- package/modules/touch/package.json +0 -9
- package/modules/utils/package.json +0 -9
- package/types/components/accordion/accordion.d.ts +0 -55
- package/types/components/actions/actions.d.ts +0 -158
- package/types/components/app/app-class.d.ts +0 -196
- package/types/components/appbar/appbar.d.ts +0 -10
- package/types/components/area-chart/area-chart.d.ts +0 -124
- package/types/components/autocomplete/autocomplete.d.ts +0 -191
- package/types/components/badge/badge.d.ts +0 -10
- package/types/components/block/block.d.ts +0 -10
- package/types/components/button/button.d.ts +0 -10
- package/types/components/calendar/calendar.d.ts +0 -304
- package/types/components/card/card.d.ts +0 -65
- package/types/components/checkbox/checkbox.d.ts +0 -10
- package/types/components/chip/chip.d.ts +0 -10
- package/types/components/color-picker/color-picker.d.ts +0 -229
- package/types/components/contacts-list/contacts-list.d.ts +0 -10
- package/types/components/data-table/data-table.d.ts +0 -57
- package/types/components/dialog/dialog.d.ts +0 -241
- package/types/components/elevation/elevation.d.ts +0 -10
- package/types/components/fab/fab.d.ts +0 -28
- package/types/components/form/form.d.ts +0 -60
- package/types/components/gauge/gauge.d.ts +0 -96
- package/types/components/grid/grid.d.ts +0 -17
- package/types/components/icon/icon.d.ts +0 -10
- package/types/components/infinite-scroll/infinite-scroll.d.ts +0 -23
- package/types/components/input/input.d.ts +0 -56
- package/types/components/lazy/lazy.d.ts +0 -53
- package/types/components/link/link.d.ts +0 -10
- package/types/components/list/list.d.ts +0 -10
- package/types/components/list-index/list-index.d.ts +0 -99
- package/types/components/login-screen/login-screen.d.ts +0 -95
- package/types/components/menu/menu.d.ts +0 -28
- package/types/components/messagebar/messagebar.d.ts +0 -161
- package/types/components/messages/messages.d.ts +0 -158
- package/types/components/modal/modal.d.ts +0 -78
- package/types/components/navbar/navbar.d.ts +0 -75
- package/types/components/notification/notification.d.ts +0 -118
- package/types/components/page/page.d.ts +0 -10
- package/types/components/panel/panel.d.ts +0 -194
- package/types/components/photo-browser/photo-browser.d.ts +0 -194
- package/types/components/picker/picker.d.ts +0 -216
- package/types/components/pie-chart/pie-chart.d.ts +0 -95
- package/types/components/popover/popover.d.ts +0 -127
- package/types/components/popup/popup.d.ts +0 -135
- package/types/components/preloader/preloader.d.ts +0 -18
- package/types/components/progressbar/progressbar.d.ts +0 -27
- package/types/components/pull-to-refresh/pull-to-refresh.d.ts +0 -99
- package/types/components/radio/radio.d.ts +0 -10
- package/types/components/range/range.d.ts +0 -121
- package/types/components/searchbar/searchbar.d.ts +0 -157
- package/types/components/sheet/sheet.d.ts +0 -149
- package/types/components/skeleton/skeleton.d.ts +0 -10
- package/types/components/smart-select/smart-select.d.ts +0 -199
- package/types/components/sortable/sortable.d.ts +0 -46
- package/types/components/statusbar/statusbar.d.ts +0 -50
- package/types/components/stepper/stepper.d.ts +0 -117
- package/types/components/subnavbar/subnavbar.d.ts +0 -11
- package/types/components/swipeout/swipeout.d.ts +0 -68
- package/types/components/swiper/swiper.d.ts +0 -21
- package/types/components/tabs/tabs.d.ts +0 -39
- package/types/components/text-editor/text-editor.d.ts +0 -162
- package/types/components/timeline/timeline.d.ts +0 -10
- package/types/components/toast/toast.d.ts +0 -117
- package/types/components/toggle/toggle.d.ts +0 -69
- package/types/components/toolbar/toolbar.d.ts +0 -43
- package/types/components/tooltip/tooltip.d.ts +0 -101
- package/types/components/touch-ripple/touch-ripple.d.ts +0 -21
- package/types/components/treeview/treeview.d.ts +0 -38
- package/types/components/typography/typography.d.ts +0 -10
- package/types/components/view/view.d.ts +0 -205
- package/types/components/virtual-list/virtual-list.d.ts +0 -138
- package/types/modules/clicks/clicks.d.ts +0 -19
- package/types/modules/component/component.d.ts +0 -94
- package/types/modules/component/snabbdom/h.d.ts +0 -10
- package/types/modules/component/snabbdom/helpers/attachto.d.ts +0 -9
- package/types/modules/component/snabbdom/hooks.d.ts +0 -23
- package/types/modules/component/snabbdom/htmldomapi.d.ts +0 -19
- package/types/modules/component/snabbdom/is.d.ts +0 -2
- package/types/modules/component/snabbdom/modules/attributes.d.ts +0 -4
- package/types/modules/component/snabbdom/modules/class.d.ts +0 -4
- package/types/modules/component/snabbdom/modules/dataset.d.ts +0 -4
- package/types/modules/component/snabbdom/modules/eventlisteners.d.ts +0 -8
- package/types/modules/component/snabbdom/modules/hero.d.ts +0 -6
- package/types/modules/component/snabbdom/modules/module.d.ts +0 -9
- package/types/modules/component/snabbdom/modules/props.d.ts +0 -4
- package/types/modules/component/snabbdom/modules/style.d.ts +0 -7
- package/types/modules/component/snabbdom/snabbdom.bundle.d.ts +0 -5
- package/types/modules/component/snabbdom/snabbdom.d.ts +0 -6
- package/types/modules/component/snabbdom/thunk.d.ts +0 -14
- package/types/modules/component/snabbdom/tovnode.d.ts +0 -4
- package/types/modules/component/snabbdom/vnode.d.ts +0 -36
- package/types/modules/device/device.d.ts +0 -14
- package/types/modules/request/request.d.ts +0 -15
- package/types/modules/resize/resize.d.ts +0 -25
- package/types/modules/router/router.d.ts +0 -356
- package/types/modules/service-worker/service-worker.d.ts +0 -38
- package/types/modules/store/store.d.ts +0 -40
- package/types/modules/support/support.d.ts +0 -15
- package/types/modules/touch/touch.d.ts +0 -62
- package/types/modules/utils/utils.d.ts +0 -15
- package/types/package.json +0 -6
|
@@ -0,0 +1,507 @@
|
|
|
1
|
+
import $ from '../../shared/dom7';
|
|
2
|
+
import { extend, deleteProps } from '../../shared/utils';
|
|
3
|
+
import Framework7Class from '../../shared/class';
|
|
4
|
+
/** @jsx $jsx */
|
|
5
|
+
|
|
6
|
+
import $jsx from '../../shared/$jsx';
|
|
7
|
+
|
|
8
|
+
class AreaChart extends Framework7Class {
|
|
9
|
+
constructor(app, params = {}) {
|
|
10
|
+
super(params, [app]);
|
|
11
|
+
const self = this;
|
|
12
|
+
const defaults = extend({}, app.params.areaChart); // Extend defaults with modules params
|
|
13
|
+
|
|
14
|
+
self.useModulesParams(defaults);
|
|
15
|
+
self.params = extend(defaults, params);
|
|
16
|
+
const {
|
|
17
|
+
el
|
|
18
|
+
} = self.params;
|
|
19
|
+
if (!el) return self;
|
|
20
|
+
const $el = $(el);
|
|
21
|
+
if ($el.length === 0) return self;
|
|
22
|
+
if ($el[0].f7AreaChart) return $el[0].f7AreaChart;
|
|
23
|
+
extend(self, {
|
|
24
|
+
app,
|
|
25
|
+
$el,
|
|
26
|
+
el: $el && $el[0],
|
|
27
|
+
currentIndex: null,
|
|
28
|
+
hiddenDatasets: [],
|
|
29
|
+
f7Tooltip: null,
|
|
30
|
+
linesOffsets: null
|
|
31
|
+
});
|
|
32
|
+
$el[0].f7AreaChart = self; // Install Modules
|
|
33
|
+
|
|
34
|
+
self.useModules();
|
|
35
|
+
self.onMouseEnter = self.onMouseEnter.bind(self);
|
|
36
|
+
self.onMouseMove = self.onMouseMove.bind(self);
|
|
37
|
+
self.onMouseLeave = self.onMouseLeave.bind(self);
|
|
38
|
+
self.onLegendClick = self.onLegendClick.bind(self);
|
|
39
|
+
self.init();
|
|
40
|
+
return self;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
getVisibleLabels() {
|
|
44
|
+
const {
|
|
45
|
+
maxAxisLabels,
|
|
46
|
+
axisLabels
|
|
47
|
+
} = this.params;
|
|
48
|
+
if (!maxAxisLabels || axisLabels.length <= maxAxisLabels) return axisLabels;
|
|
49
|
+
const skipStep = Math.ceil(axisLabels.length / maxAxisLabels);
|
|
50
|
+
const filtered = axisLabels.filter((label, index) => index % skipStep === 0);
|
|
51
|
+
return filtered;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
getSummValues() {
|
|
55
|
+
const {
|
|
56
|
+
datasets
|
|
57
|
+
} = this.params;
|
|
58
|
+
const {
|
|
59
|
+
hiddenDatasets
|
|
60
|
+
} = this;
|
|
61
|
+
const summValues = [];
|
|
62
|
+
datasets.filter((dataset, index) => !hiddenDatasets.includes(index)).forEach(({
|
|
63
|
+
values
|
|
64
|
+
}) => {
|
|
65
|
+
values.forEach((value, valueIndex) => {
|
|
66
|
+
if (!summValues[valueIndex]) summValues[valueIndex] = 0;
|
|
67
|
+
summValues[valueIndex] += value;
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
return summValues;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
getChartData() {
|
|
74
|
+
const {
|
|
75
|
+
datasets,
|
|
76
|
+
lineChart,
|
|
77
|
+
width,
|
|
78
|
+
height
|
|
79
|
+
} = this.params;
|
|
80
|
+
const {
|
|
81
|
+
hiddenDatasets
|
|
82
|
+
} = this;
|
|
83
|
+
const data = [];
|
|
84
|
+
|
|
85
|
+
if (!datasets.length) {
|
|
86
|
+
return data;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const lastValues = datasets[0].values.map(() => 0);
|
|
90
|
+
let maxValue = 0;
|
|
91
|
+
|
|
92
|
+
if (lineChart) {
|
|
93
|
+
datasets.filter((dataset, index) => !hiddenDatasets.includes(index)).forEach(({
|
|
94
|
+
values
|
|
95
|
+
}) => {
|
|
96
|
+
const datasetMaxValue = Math.max(...values);
|
|
97
|
+
if (datasetMaxValue > maxValue) maxValue = datasetMaxValue;
|
|
98
|
+
});
|
|
99
|
+
} else {
|
|
100
|
+
maxValue = Math.max(...this.getSummValues());
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
datasets.filter((dataset, index) => !hiddenDatasets.includes(index)).forEach(({
|
|
104
|
+
label,
|
|
105
|
+
values,
|
|
106
|
+
color
|
|
107
|
+
}) => {
|
|
108
|
+
const points = values.map((originalValue, valueIndex) => {
|
|
109
|
+
lastValues[valueIndex] += originalValue;
|
|
110
|
+
const value = lineChart ? originalValue : lastValues[valueIndex];
|
|
111
|
+
const x = valueIndex / (values.length - 1) * width;
|
|
112
|
+
const y = height - value / maxValue * height;
|
|
113
|
+
|
|
114
|
+
if (lineChart) {
|
|
115
|
+
return `${valueIndex === 0 ? 'M' : 'L'}${x},${y}`;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
return `${x} ${y}`;
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
if (!lineChart) {
|
|
122
|
+
points.push(`${width} ${height} 0 ${height}`);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
data.push({
|
|
126
|
+
label,
|
|
127
|
+
points: points.join(' '),
|
|
128
|
+
color
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
return data.reverse();
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
getVerticalLines() {
|
|
135
|
+
const {
|
|
136
|
+
datasets,
|
|
137
|
+
width
|
|
138
|
+
} = this.params;
|
|
139
|
+
const lines = [];
|
|
140
|
+
|
|
141
|
+
if (!datasets.length) {
|
|
142
|
+
return lines;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
const values = datasets[0].values;
|
|
146
|
+
values.forEach((value, valueIndex) => {
|
|
147
|
+
const x = valueIndex / (values.length - 1) * width;
|
|
148
|
+
lines.push(x);
|
|
149
|
+
});
|
|
150
|
+
return lines;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
toggleDataset(index) {
|
|
154
|
+
const {
|
|
155
|
+
hiddenDatasets,
|
|
156
|
+
params: {
|
|
157
|
+
toggleDatasets
|
|
158
|
+
}
|
|
159
|
+
} = this;
|
|
160
|
+
if (!toggleDatasets) return;
|
|
161
|
+
|
|
162
|
+
if (hiddenDatasets.includes(index)) {
|
|
163
|
+
hiddenDatasets.splice(hiddenDatasets.indexOf(index), 1);
|
|
164
|
+
} else {
|
|
165
|
+
hiddenDatasets.push(index);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
if (this.$legendEl) {
|
|
169
|
+
this.$legendEl.find('.area-chart-legend-item').removeClass('area-chart-legend-item-hidden');
|
|
170
|
+
hiddenDatasets.forEach(i => {
|
|
171
|
+
this.$legendEl.find(`.area-chart-legend-item[data-index="${i}"]`).addClass('area-chart-legend-item-hidden');
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
this.update({}, true);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
formatAxisLabel(label) {
|
|
179
|
+
const {
|
|
180
|
+
formatAxisLabel
|
|
181
|
+
} = this.params;
|
|
182
|
+
if (formatAxisLabel) return formatAxisLabel.call(this, label);
|
|
183
|
+
return label;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
formatLegendLabel(label) {
|
|
187
|
+
const {
|
|
188
|
+
formatLegendLabel
|
|
189
|
+
} = this.params;
|
|
190
|
+
if (formatLegendLabel) return formatLegendLabel.call(this, label);
|
|
191
|
+
return label;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
calcLinesOffsets() {
|
|
195
|
+
const lines = this.svgEl.querySelectorAll('line');
|
|
196
|
+
this.linesOffsets = [];
|
|
197
|
+
|
|
198
|
+
for (let i = 0; i < lines.length; i += 1) {
|
|
199
|
+
this.linesOffsets.push(lines[i].getBoundingClientRect().left);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
formatTooltip() {
|
|
204
|
+
const self = this;
|
|
205
|
+
const {
|
|
206
|
+
currentIndex,
|
|
207
|
+
hiddenDatasets,
|
|
208
|
+
params: {
|
|
209
|
+
datasets,
|
|
210
|
+
axisLabels,
|
|
211
|
+
formatTooltip,
|
|
212
|
+
formatTooltipTotal,
|
|
213
|
+
formatTooltipAxisLabel,
|
|
214
|
+
formatTooltipDataset
|
|
215
|
+
}
|
|
216
|
+
} = self;
|
|
217
|
+
if (currentIndex === null) return '';
|
|
218
|
+
let total = 0;
|
|
219
|
+
const currentValues = datasets.filter((dataset, index) => !hiddenDatasets.includes(index)).map(dataset => ({
|
|
220
|
+
color: dataset.color,
|
|
221
|
+
label: dataset.label,
|
|
222
|
+
value: dataset.values[currentIndex]
|
|
223
|
+
}));
|
|
224
|
+
currentValues.forEach(dataset => {
|
|
225
|
+
total += dataset.value;
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
if (formatTooltip) {
|
|
229
|
+
return formatTooltip({
|
|
230
|
+
index: currentIndex,
|
|
231
|
+
total,
|
|
232
|
+
datasets: currentValues
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
let labelText = formatTooltipAxisLabel ? formatTooltipAxisLabel.call(self, axisLabels[currentIndex]) : this.formatAxisLabel(axisLabels[currentIndex]);
|
|
237
|
+
if (!labelText) labelText = '';
|
|
238
|
+
const totalText = formatTooltipTotal ? formatTooltipTotal.call(self, total) : total; // prettier-ignore
|
|
239
|
+
|
|
240
|
+
const datasetsText = currentValues.length > 0 ? `
|
|
241
|
+
<ul class="area-chart-tooltip-list">
|
|
242
|
+
${currentValues.map(({
|
|
243
|
+
label,
|
|
244
|
+
color,
|
|
245
|
+
value
|
|
246
|
+
}) => {
|
|
247
|
+
const valueText = formatTooltipDataset ? formatTooltipDataset.call(self, label, value, color) : `${label ? `${label}: ` : ''}${value}`;
|
|
248
|
+
return `
|
|
249
|
+
<li><span style="background-color: ${color};"></span>${valueText}</li>
|
|
250
|
+
`;
|
|
251
|
+
}).join('')}
|
|
252
|
+
</ul>` : ''; // prettier-ignore
|
|
253
|
+
|
|
254
|
+
return `
|
|
255
|
+
<div class="area-chart-tooltip-label">${labelText}</div>
|
|
256
|
+
<div class="area-chart-tooltip-total">${totalText}</div>
|
|
257
|
+
${datasetsText}
|
|
258
|
+
`;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
setTooltip() {
|
|
262
|
+
const self = this;
|
|
263
|
+
const {
|
|
264
|
+
app,
|
|
265
|
+
el,
|
|
266
|
+
svgEl,
|
|
267
|
+
hiddenDatasets,
|
|
268
|
+
currentIndex,
|
|
269
|
+
params: {
|
|
270
|
+
tooltip,
|
|
271
|
+
datasets
|
|
272
|
+
}
|
|
273
|
+
} = self;
|
|
274
|
+
if (!tooltip) return;
|
|
275
|
+
const hasVisibleDataSets = datasets.filter((dataset, index) => !hiddenDatasets.includes(index)).length > 0;
|
|
276
|
+
|
|
277
|
+
if (!hasVisibleDataSets) {
|
|
278
|
+
if (self.f7Tooltip && self.f7Tooltip.hide) self.f7Tooltip.hide();
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
if (currentIndex !== null && !self.f7Tooltip) {
|
|
283
|
+
self.f7Tooltip = app.tooltip.create({
|
|
284
|
+
trigger: 'manual',
|
|
285
|
+
containerEl: el,
|
|
286
|
+
targetEl: svgEl.querySelector(`line[data-index="${currentIndex}"]`),
|
|
287
|
+
text: self.formatTooltip(),
|
|
288
|
+
cssClass: 'area-chart-tooltip'
|
|
289
|
+
});
|
|
290
|
+
|
|
291
|
+
if (self.f7Tooltip && self.f7Tooltip.show) {
|
|
292
|
+
self.f7Tooltip.show();
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
if (!self.f7Tooltip || !self.f7Tooltip.hide || !self.f7Tooltip.show) {
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
if (currentIndex !== null) {
|
|
303
|
+
self.f7Tooltip.setText(self.formatTooltip());
|
|
304
|
+
self.f7Tooltip.setTargetEl(svgEl.querySelector(`line[data-index="${currentIndex}"]`));
|
|
305
|
+
self.f7Tooltip.show();
|
|
306
|
+
} else {
|
|
307
|
+
self.f7Tooltip.hide();
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
setCurrentIndex(index) {
|
|
312
|
+
if (index === this.currentIndex) return;
|
|
313
|
+
this.currentIndex = index;
|
|
314
|
+
this.$el.trigger('areachart:select', {
|
|
315
|
+
index
|
|
316
|
+
});
|
|
317
|
+
this.emit('local::select areaChartSelect', this, index);
|
|
318
|
+
this.$svgEl.find('line').removeClass('area-chart-current-line');
|
|
319
|
+
this.$svgEl.find(`line[data-index="${index}"]`).addClass('area-chart-current-line');
|
|
320
|
+
this.setTooltip();
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
onLegendClick(e) {
|
|
324
|
+
const index = parseInt($(e.target).closest('.area-chart-legend-item').attr('data-index'), 10);
|
|
325
|
+
this.toggleDataset(index);
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
onMouseEnter() {
|
|
329
|
+
this.calcLinesOffsets();
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
onMouseMove(e) {
|
|
333
|
+
const self = this;
|
|
334
|
+
|
|
335
|
+
if (!self.linesOffsets) {
|
|
336
|
+
self.calcLinesOffsets();
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
let currentLeft = e.pageX;
|
|
340
|
+
if (typeof currentLeft === 'undefined') currentLeft = 0;
|
|
341
|
+
const distances = self.linesOffsets.map(left => Math.abs(currentLeft - left));
|
|
342
|
+
const minDistance = Math.min(...distances);
|
|
343
|
+
const closestIndex = distances.indexOf(minDistance);
|
|
344
|
+
self.setCurrentIndex(closestIndex);
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
onMouseLeave() {
|
|
348
|
+
this.setCurrentIndex(null);
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
attachEvents() {
|
|
352
|
+
const {
|
|
353
|
+
svgEl,
|
|
354
|
+
$el
|
|
355
|
+
} = this;
|
|
356
|
+
if (!svgEl) return;
|
|
357
|
+
svgEl.addEventListener('mouseenter', this.onMouseEnter);
|
|
358
|
+
svgEl.addEventListener('mousemove', this.onMouseMove);
|
|
359
|
+
svgEl.addEventListener('mouseleave', this.onMouseLeave);
|
|
360
|
+
$el.on('click', '.area-chart-legend-item', this.onLegendClick);
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
detachEvents() {
|
|
364
|
+
const {
|
|
365
|
+
svgEl,
|
|
366
|
+
$el
|
|
367
|
+
} = this;
|
|
368
|
+
if (!svgEl) return;
|
|
369
|
+
svgEl.removeEventListener('mouseenter', this.onMouseEnter);
|
|
370
|
+
svgEl.removeEventListener('mousemove', this.onMouseMove);
|
|
371
|
+
svgEl.removeEventListener('mouseleave', this.onMouseLeave);
|
|
372
|
+
$el.off('click', '.area-chart-legend-item', this.onLegendClick);
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
render() {
|
|
376
|
+
const self = this;
|
|
377
|
+
const {
|
|
378
|
+
lineChart,
|
|
379
|
+
toggleDatasets,
|
|
380
|
+
width,
|
|
381
|
+
height,
|
|
382
|
+
axis,
|
|
383
|
+
axisLabels,
|
|
384
|
+
legend,
|
|
385
|
+
datasets
|
|
386
|
+
} = self.params;
|
|
387
|
+
const chartData = self.getChartData();
|
|
388
|
+
const verticalLines = self.getVerticalLines();
|
|
389
|
+
const visibleLegends = self.getVisibleLabels();
|
|
390
|
+
const LegendItemTag = toggleDatasets ? 'button' : 'span';
|
|
391
|
+
return $jsx("div", null, $jsx("svg", {
|
|
392
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
393
|
+
width: width,
|
|
394
|
+
height: height,
|
|
395
|
+
viewBox: `0 0 ${width} ${height}`,
|
|
396
|
+
preserveAspectRatio: "none"
|
|
397
|
+
}, chartData.map(data => lineChart ? $jsx("path", {
|
|
398
|
+
stroke: data.color,
|
|
399
|
+
"fill-rule": "evenodd",
|
|
400
|
+
d: data.points
|
|
401
|
+
}) : $jsx("polygon", {
|
|
402
|
+
fill: data.color,
|
|
403
|
+
"fill-rule": "evenodd",
|
|
404
|
+
points: data.points
|
|
405
|
+
})), verticalLines.map((line, index) => $jsx("line", {
|
|
406
|
+
"data-index": index,
|
|
407
|
+
fill: "#000",
|
|
408
|
+
x1: line,
|
|
409
|
+
y1: 0,
|
|
410
|
+
x2: line,
|
|
411
|
+
y2: height
|
|
412
|
+
}))), axis && $jsx("div", {
|
|
413
|
+
class: "area-chart-axis"
|
|
414
|
+
}, axisLabels.map(label => $jsx("span", null, visibleLegends.includes(label) && $jsx("span", null, self.formatAxisLabel(label))))), legend && $jsx("div", {
|
|
415
|
+
class: "area-chart-legend"
|
|
416
|
+
}, datasets.map((dataset, index) => $jsx(LegendItemTag, {
|
|
417
|
+
"data-index": index,
|
|
418
|
+
class: `area-chart-legend-item ${toggleDatasets ? 'area-chart-legend-button' : ''}`,
|
|
419
|
+
_type: toggleDatasets ? 'button' : undefined
|
|
420
|
+
}, $jsx("span", {
|
|
421
|
+
style: `background-color: ${dataset.color}`
|
|
422
|
+
}), self.formatLegendLabel(dataset.label)))));
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
update(newParams = {}, onlySvg = false) {
|
|
426
|
+
const self = this;
|
|
427
|
+
const {
|
|
428
|
+
params
|
|
429
|
+
} = self;
|
|
430
|
+
Object.keys(newParams).forEach(param => {
|
|
431
|
+
if (typeof newParams[param] !== 'undefined') {
|
|
432
|
+
params[param] = newParams[param];
|
|
433
|
+
}
|
|
434
|
+
});
|
|
435
|
+
if (self.$svgEl.length === 0) return self;
|
|
436
|
+
self.detachEvents();
|
|
437
|
+
self.$svgEl.remove();
|
|
438
|
+
|
|
439
|
+
if (!onlySvg) {
|
|
440
|
+
self.$axisEl.remove();
|
|
441
|
+
self.$legendEl.remove();
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
const $rendered = $(self.render());
|
|
445
|
+
const $svgEl = $rendered.find('svg');
|
|
446
|
+
extend(self, {
|
|
447
|
+
svgEl: $svgEl && $svgEl[0],
|
|
448
|
+
$svgEl
|
|
449
|
+
});
|
|
450
|
+
|
|
451
|
+
if (!onlySvg) {
|
|
452
|
+
const $axisEl = $rendered.find('.area-chart-axis');
|
|
453
|
+
const $legendEl = $rendered.find('.area-chart-legend');
|
|
454
|
+
extend(self, {
|
|
455
|
+
$axisEl,
|
|
456
|
+
$legendEl
|
|
457
|
+
});
|
|
458
|
+
self.$el.append($axisEl);
|
|
459
|
+
self.$el.append($legendEl);
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
self.$el.prepend($svgEl);
|
|
463
|
+
self.attachEvents();
|
|
464
|
+
return self;
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
init() {
|
|
468
|
+
const self = this;
|
|
469
|
+
const $rendered = $(self.render());
|
|
470
|
+
const $svgEl = $rendered.find('svg');
|
|
471
|
+
const $axisEl = $rendered.find('.area-chart-axis');
|
|
472
|
+
const $legendEl = $rendered.find('.area-chart-legend');
|
|
473
|
+
extend(self, {
|
|
474
|
+
svgEl: $svgEl && $svgEl[0],
|
|
475
|
+
$svgEl,
|
|
476
|
+
$axisEl,
|
|
477
|
+
$legendEl
|
|
478
|
+
});
|
|
479
|
+
self.$el.append($svgEl);
|
|
480
|
+
self.$el.append($axisEl);
|
|
481
|
+
self.$el.append($legendEl);
|
|
482
|
+
self.attachEvents();
|
|
483
|
+
return self;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
destroy() {
|
|
487
|
+
const self = this;
|
|
488
|
+
if (!self.$el || self.destroyed) return;
|
|
489
|
+
self.$el.trigger('piechart:beforedestroy');
|
|
490
|
+
self.emit('local::beforeDestroy areaChartBeforeDestroy', self);
|
|
491
|
+
self.detachEvents();
|
|
492
|
+
self.$svgEl.remove();
|
|
493
|
+
self.$axisEl.remove();
|
|
494
|
+
self.$legendEl.remove();
|
|
495
|
+
|
|
496
|
+
if (self.f7Tooltip && self.f7Tooltip.destroy) {
|
|
497
|
+
self.f7Tooltip.destroy();
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
delete self.$el[0].f7AreaChart;
|
|
501
|
+
deleteProps(self);
|
|
502
|
+
self.destroyed = true;
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
export default AreaChart;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--f7-area-chart-current-line-stroke-width:2px;--f7-area-chart-current-line-stroke:rgba(0, 0, 0, 0.15);--f7-area-chart-axis-text-color:inherit;--f7-area-chart-axis-height:1px;--f7-area-chart-axis-font-size:10px;--f7-area-chart-axis-font-weight:500;--f7-area-chart-tooltip-font-size:12px;--f7-area-chart-tooltip-total-label-text-color:rgba(255, 255, 255, 0.75);--f7-area-chart-tooltip-total-font-size:16px;--f7-area-chart-tooltip-total-font-weight:bold;--f7-area-chart-tooltip-color-size:10px;--f7-area-chart-legend-font-size:14px;--f7-area-chart-legend-font-weight:500;--f7-area-chart-legend-text-color:inherit;--f7-area-chart-legend-padding:4px 8px;--f7-area-chart-legend-border-radius:4px;--f7-area-chart-legend-color-size:14px;--f7-area-chart-line-stroke-width:2px;--f7-area-chart-axis-bg-color:rgba(0, 0, 0, 0.15);--f7-area-chart-legend-disabled-text-color:rgba(0, 0, 0, 0.22)}:root .
|
|
1
|
+
:root{--f7-area-chart-current-line-stroke-width:2px;--f7-area-chart-current-line-stroke:rgba(0, 0, 0, 0.15);--f7-area-chart-axis-text-color:inherit;--f7-area-chart-axis-height:1px;--f7-area-chart-axis-font-size:10px;--f7-area-chart-axis-font-weight:500;--f7-area-chart-tooltip-font-size:12px;--f7-area-chart-tooltip-total-label-text-color:rgba(255, 255, 255, 0.75);--f7-area-chart-tooltip-total-font-size:16px;--f7-area-chart-tooltip-total-font-weight:bold;--f7-area-chart-tooltip-color-size:10px;--f7-area-chart-legend-font-size:14px;--f7-area-chart-legend-font-weight:500;--f7-area-chart-legend-text-color:inherit;--f7-area-chart-legend-padding:4px 8px;--f7-area-chart-legend-border-radius:4px;--f7-area-chart-legend-color-size:14px;--f7-area-chart-line-stroke-width:2px;--f7-area-chart-axis-bg-color:rgba(0, 0, 0, 0.15);--f7-area-chart-legend-disabled-text-color:rgba(0, 0, 0, 0.22)}:root .dark,:root.dark{--f7-area-chart-axis-bg-color:rgba(255, 255, 255, 0.15);--f7-area-chart-legend-disabled-text-color:rgba(255, 255, 255, 0.22)}.area-chart{position:relative}.area-chart svg{display:block;width:100%;font-size:0;height:auto;margin:0 auto}.area-chart path{fill:none;stroke-width:var(--f7-area-chart-line-stroke-width)}.area-chart-current-line{stroke:var(--f7-area-chart-current-line-stroke);stroke-width:var(--f7-area-chart-current-line-stroke-width)}.area-chart-axis{height:var(--f7-area-chart-axis-height);background:var(--f7-area-chart-axis-bg-color);color:var(--f7-area-chart-axis-text-color);display:flex;font-size:var(--f7-area-chart-axis-font-size);font-weight:var(--f7-area-chart-axis-font-weight);justify-content:space-between;line-height:1;margin-bottom:2em}.area-chart-axis>span{padding-top:10px;width:0;display:flex;align-items:flex-start;justify-content:center;white-space:nowrap}.area-chart-axis>span:first-child{justify-content:flex-start}.area-chart-axis>span:last-child{justify-content:flex-end}.area-chart-tooltip{pointer-events:none;text-align:left;font-size:var(--f7-area-chart-tooltip-font-size);line-height:1.4}.area-chart-tooltip-label{color:var(--f7-area-chart-tooltip-total-label-text-color)}.area-chart-tooltip-total{font-size:var(--f7-area-chart-tooltip-total-font-size);font-weight:var(--f7-area-chart-tooltip-total-font-weight)}.area-chart-tooltip-list{list-style:none;margin:0;padding:0}.area-chart-tooltip-list li{white-space:nowrap}.area-chart-tooltip-list span{display:inline-block;width:var(--f7-area-chart-tooltip-color-size);height:var(--f7-area-chart-tooltip-color-size);border-radius:50%;margin-right:4px}.area-chart-axis~.area-chart-legend{margin-top:2em}.area-chart-legend{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;font-size:var(--f7-area-chart-legend-font-size);width:100%;margin-top:1em}.area-chart-legend-button{-webkit-appearance:none!important;appearance:none!important;background-color:transparent;border-radius:0;border:none;outline:0!important;cursor:pointer;font-family:inherit;font-size:inherit;box-shadow:none!important}.area-chart-legend-item{position:relative;color:var(--f7-area-chart-legend-text-color);width:auto;display:flex;align-items:center;font-weight:var(--f7-area-chart-legend-font-weight);transition-duration:.2s;padding:var(--f7-area-chart-legend-padding);border-radius:var(--f7-area-chart-legend-border-radius);overflow:hidden}.area-chart-legend-item span{width:var(--f7-area-chart-legend-color-size);height:var(--f7-area-chart-legend-color-size);margin-right:4px;border-radius:50%;transition-duration:.2s}.area-chart-legend-item-hidden{color:var(--f7-area-chart-legend-disabled-text-color)}.area-chart-legend-item-hidden span{background-color:var(--f7-area-chart-legend-disabled-text-color)!important}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--f7-area-chart-current-line-stroke-width:2px;--f7-area-chart-current-line-stroke:rgba(0, 0, 0, 0.15);--f7-area-chart-axis-text-color:inherit;--f7-area-chart-axis-height:1px;--f7-area-chart-axis-font-size:10px;--f7-area-chart-axis-font-weight:500;--f7-area-chart-tooltip-font-size:12px;--f7-area-chart-tooltip-total-label-text-color:rgba(255, 255, 255, 0.75);--f7-area-chart-tooltip-total-font-size:16px;--f7-area-chart-tooltip-total-font-weight:bold;--f7-area-chart-tooltip-color-size:10px;--f7-area-chart-legend-font-size:14px;--f7-area-chart-legend-font-weight:500;--f7-area-chart-legend-text-color:inherit;--f7-area-chart-legend-padding:4px 8px;--f7-area-chart-legend-border-radius:4px;--f7-area-chart-legend-color-size:14px;--f7-area-chart-line-stroke-width:2px;--f7-area-chart-axis-bg-color:rgba(0, 0, 0, 0.15);--f7-area-chart-legend-disabled-text-color:rgba(0, 0, 0, 0.22)}:root .
|
|
1
|
+
:root{--f7-area-chart-current-line-stroke-width:2px;--f7-area-chart-current-line-stroke:rgba(0, 0, 0, 0.15);--f7-area-chart-axis-text-color:inherit;--f7-area-chart-axis-height:1px;--f7-area-chart-axis-font-size:10px;--f7-area-chart-axis-font-weight:500;--f7-area-chart-tooltip-font-size:12px;--f7-area-chart-tooltip-total-label-text-color:rgba(255, 255, 255, 0.75);--f7-area-chart-tooltip-total-font-size:16px;--f7-area-chart-tooltip-total-font-weight:bold;--f7-area-chart-tooltip-color-size:10px;--f7-area-chart-legend-font-size:14px;--f7-area-chart-legend-font-weight:500;--f7-area-chart-legend-text-color:inherit;--f7-area-chart-legend-padding:4px 8px;--f7-area-chart-legend-border-radius:4px;--f7-area-chart-legend-color-size:14px;--f7-area-chart-line-stroke-width:2px;--f7-area-chart-axis-bg-color:rgba(0, 0, 0, 0.15);--f7-area-chart-legend-disabled-text-color:rgba(0, 0, 0, 0.22)}:root .dark,:root.dark{--f7-area-chart-axis-bg-color:rgba(255, 255, 255, 0.15);--f7-area-chart-legend-disabled-text-color:rgba(255, 255, 255, 0.22)}.area-chart{position:relative}.area-chart svg{display:block;width:100%;font-size:0;height:auto;margin:0 auto}.area-chart path{fill:none;stroke-width:var(--f7-area-chart-line-stroke-width)}.area-chart-current-line{stroke:var(--f7-area-chart-current-line-stroke);stroke-width:var(--f7-area-chart-current-line-stroke-width)}.area-chart-axis{height:var(--f7-area-chart-axis-height);background:var(--f7-area-chart-axis-bg-color);color:var(--f7-area-chart-axis-text-color);display:flex;font-size:var(--f7-area-chart-axis-font-size);font-weight:var(--f7-area-chart-axis-font-weight);justify-content:space-between;line-height:1;margin-bottom:2em}.area-chart-axis>span{padding-top:10px;width:0;display:flex;align-items:flex-start;justify-content:center;white-space:nowrap}.area-chart-axis>span:first-child{justify-content:flex-start}.area-chart-axis>span:last-child{justify-content:flex-end}.area-chart-tooltip{pointer-events:none;text-align:left;font-size:var(--f7-area-chart-tooltip-font-size);line-height:1.4}.area-chart-tooltip-label{color:var(--f7-area-chart-tooltip-total-label-text-color)}.area-chart-tooltip-total{font-size:var(--f7-area-chart-tooltip-total-font-size);font-weight:var(--f7-area-chart-tooltip-total-font-weight)}.area-chart-tooltip-list{list-style:none;margin:0;padding:0}.area-chart-tooltip-list li{white-space:nowrap}.area-chart-tooltip-list span{display:inline-block;width:var(--f7-area-chart-tooltip-color-size);height:var(--f7-area-chart-tooltip-color-size);border-radius:50%;margin-right:4px}.area-chart-axis~.area-chart-legend{margin-top:2em}.area-chart-legend{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;font-size:var(--f7-area-chart-legend-font-size);width:100%;margin-top:1em}.area-chart-legend-button{-webkit-appearance:none!important;appearance:none!important;background-color:transparent;border-radius:0;border:none;outline:0!important;cursor:pointer;font-family:inherit;font-size:inherit;box-shadow:none!important}.area-chart-legend-item{position:relative;color:var(--f7-area-chart-legend-text-color);width:auto;display:flex;align-items:center;font-weight:var(--f7-area-chart-legend-font-weight);transition-duration:.2s;padding:var(--f7-area-chart-legend-padding);border-radius:var(--f7-area-chart-legend-border-radius);overflow:hidden}.area-chart-legend-item span{width:var(--f7-area-chart-legend-color-size);height:var(--f7-area-chart-legend-color-size);margin-right:4px;border-radius:50%;transition-duration:.2s}.area-chart-legend-item-hidden{color:var(--f7-area-chart-legend-disabled-text-color)}.area-chart-legend-item-hidden span{background-color:var(--f7-area-chart-legend-disabled-text-color)!important}
|
|
@@ -1 +1,47 @@
|
|
|
1
|
-
(function framework7ComponentLoader(e,t){void 0===t&&(t=!0);var a=e.$,n=e.utils,r=(e.getDevice,e.getSupport,e.Class),o=(e.Modal,e.ConstructorMethods);e.ModalMethods;function i(e){this.wrapped=e}function s(e){var t,a;function n(t,a){try{var o=e[t](a),s=o.value,l=s instanceof i;Promise.resolve(l?s.wrapped:s).then((function(e){l?n("return"===t?"return":"next",e):r(o.done?"return":"normal",e)}),(function(e){n("throw",e)}))}catch(e){r("throw",e)}}function r(e,r){switch(e){case"return":t.resolve({value:r,done:!0});break;case"throw":t.reject(r);break;default:t.resolve({value:r,done:!1})}(t=t.next)?n(t.key,t.arg):a=null}this._invoke=function(e,r){return new Promise((function(o,i){var s={key:e,arg:r,resolve:o,reject:i,next:null};a?a=a.next=s:(t=a=s,n(e,r))}))},"function"!=typeof e.return&&(this.return=void 0)}function l(e,t){return(l=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function u(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}s.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},s.prototype.next=function(e){return this._invoke("next",e)},s.prototype.throw=function(e){return this._invoke("throw",e)},s.prototype.return=function(e){return this._invoke("return",e)};var c=n.extend,d=n.deleteProps,h=function(e){var t,n;function r(t,n){var r;void 0===n&&(n={});var o=u(r=e.call(this,n,[t])||this),i=c({},t.params.areaChart);o.useModulesParams(i),o.params=c(i,n);var s=o.params.el;if(!s)return o||u(r);var l=a(s);return 0===l.length?o||u(r):l[0].f7AreaChart?l[0].f7AreaChart||u(r):(c(o,{app:t,$el:l,el:l&&l[0],currentIndex:null,hiddenDatasets:[],f7Tooltip:null,linesOffsets:null}),l[0].f7AreaChart=o,o.useModules(),o.onMouseEnter=o.onMouseEnter.bind(o),o.onMouseMove=o.onMouseMove.bind(o),o.onMouseLeave=o.onMouseLeave.bind(o),o.onLegendClick=o.onLegendClick.bind(o),o.init(),o||u(r))}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,l(t,n);var o=r.prototype;return o.getVisibleLabels=function(){var e=this.params,t=e.maxAxisLabels,a=e.axisLabels;if(!t||a.length<=t)return a;var n=Math.ceil(a.length/t);return a.filter((function(e,t){return t%n==0}))},o.getSummValues=function(){var e=this.params.datasets,t=this.hiddenDatasets,a=[];return e.filter((function(e,a){return!t.includes(a)})).forEach((function(e){e.values.forEach((function(e,t){a[t]||(a[t]=0),a[t]+=e}))})),a},o.getChartData=function(){var e=this.params,t=e.datasets,a=e.lineChart,n=e.width,r=e.height,o=this.hiddenDatasets,i=[];if(!t.length)return i;var s=t[0].values.map((function(){return 0})),l=0;return a?t.filter((function(e,t){return!o.includes(t)})).forEach((function(e){var t=e.values,a=Math.max.apply(Math,t);a>l&&(l=a)})):l=Math.max.apply(Math,this.getSummValues()),t.filter((function(e,t){return!o.includes(t)})).forEach((function(e){var t=e.label,o=e.values,u=e.color,c=o.map((function(e,t){s[t]+=e;var i=a?e:s[t],u=t/(o.length-1)*n,c=r-i/l*r;return a?(0===t?"M":"L")+u+","+c:u+" "+c}));a||c.push(n+" "+r+" 0 "+r),i.push({label:t,points:c.join(" "),color:u})})),i.reverse()},o.getVerticalLines=function(){var e=this.params,t=e.datasets,a=e.width,n=[];if(!t.length)return n;var r=t[0].values;return r.forEach((function(e,t){var o=t/(r.length-1)*a;n.push(o)})),n},o.toggleDataset=function(e){var t=this,a=this.hiddenDatasets;this.params.toggleDatasets&&(a.includes(e)?a.splice(a.indexOf(e),1):a.push(e),this.$legendEl&&(this.$legendEl.find(".area-chart-legend-item").removeClass("area-chart-legend-item-hidden"),a.forEach((function(e){t.$legendEl.find('.area-chart-legend-item[data-index="'+e+'"]').addClass("area-chart-legend-item-hidden")}))),this.update({},!0))},o.formatAxisLabel=function(e){var t=this.params.formatAxisLabel;return t?t.call(this,e):e},o.formatLegendLabel=function(e){var t=this.params.formatLegendLabel;return t?t.call(this,e):e},o.calcLinesOffsets=function(){var e=this.svgEl.querySelectorAll("line");this.linesOffsets=[];for(var t=0;t<e.length;t+=1)this.linesOffsets.push(e[t].getBoundingClientRect().left)},o.formatTooltip=function(){var e=this,t=e.currentIndex,a=e.hiddenDatasets,n=e.params,r=n.datasets,o=n.axisLabels,i=n.formatTooltip,s=n.formatTooltipTotal,l=n.formatTooltipAxisLabel,u=n.formatTooltipDataset;if(null===t)return"";var c=0,d=r.filter((function(e,t){return!a.includes(t)})).map((function(e){return{color:e.color,label:e.label,value:e.values[t]}}));if(d.forEach((function(e){c+=e.value})),i)return i({index:t,total:c,datasets:d});var h=l?l.call(e,o[t]):this.formatAxisLabel(o[t]);return h||(h=""),'\n <div class="area-chart-tooltip-label">'+h+'</div>\n <div class="area-chart-tooltip-total">'+(s?s.call(e,c):c)+"</div>\n "+(d.length>0?'\n <ul class="area-chart-tooltip-list">\n '+d.map((function(t){var a=t.label,n=t.color,r=t.value;return'\n <li><span style="background-color: '+n+';"></span>'+(u?u.call(e,a,r,n):(a?a+": ":"")+r)+"</li>\n "})).join("")+"\n </ul>":"")+"\n "},o.setTooltip=function(){var e=this,t=e.app,a=e.el,n=e.svgEl,r=e.hiddenDatasets,o=e.currentIndex,i=e.params,s=i.tooltip,l=i.datasets;if(s){if(l.filter((function(e,t){return!r.includes(t)})).length>0)return null===o||e.f7Tooltip?void(e.f7Tooltip&&e.f7Tooltip.hide&&e.f7Tooltip.show&&(null!==o?(e.f7Tooltip.setText(e.formatTooltip()),e.f7Tooltip.setTargetEl(n.querySelector('line[data-index="'+o+'"]')),e.f7Tooltip.show()):e.f7Tooltip.hide())):(e.f7Tooltip=t.tooltip.create({trigger:"manual",containerEl:a,targetEl:n.querySelector('line[data-index="'+o+'"]'),text:e.formatTooltip(),cssClass:"area-chart-tooltip"}),void(e.f7Tooltip&&e.f7Tooltip.show&&e.f7Tooltip.show()));e.f7Tooltip&&e.f7Tooltip.hide&&e.f7Tooltip.hide()}},o.setCurrentIndex=function(e){e!==this.currentIndex&&(this.currentIndex=e,this.$el.trigger("areachart:select",{index:e}),this.emit("local::select areaChartSelect",this,e),this.$svgEl.find("line").removeClass("area-chart-current-line"),this.$svgEl.find('line[data-index="'+e+'"]').addClass("area-chart-current-line"),this.setTooltip())},o.onLegendClick=function(e){var t=parseInt(a(e.target).closest(".area-chart-legend-item").attr("data-index"),10);this.toggleDataset(t)},o.onMouseEnter=function(){this.calcLinesOffsets()},o.onMouseMove=function(e){var t=this;t.linesOffsets||t.calcLinesOffsets();var a=e.pageX;void 0===a&&(a=0);var n=t.linesOffsets.map((function(e){return Math.abs(a-e)})),r=Math.min.apply(Math,n),o=n.indexOf(r);t.setCurrentIndex(o)},o.onMouseLeave=function(){this.setCurrentIndex(null)},o.attachEvents=function(){var e=this.svgEl,t=this.$el;e&&(e.addEventListener("mouseenter",this.onMouseEnter),e.addEventListener("mousemove",this.onMouseMove),e.addEventListener("mouseleave",this.onMouseLeave),t.on("click",".area-chart-legend-item",this.onLegendClick))},o.detachEvents=function(){var e=this.svgEl,t=this.$el;e&&(e.removeEventListener("mouseenter",this.onMouseEnter),e.removeEventListener("mousemove",this.onMouseMove),e.removeEventListener("mouseleave",this.onMouseLeave),t.off("click",".area-chart-legend-item",this.onLegendClick))},o.render=function(){var e=this,t=e.params,a=t.lineChart,n=t.toggleDatasets,r=t.width,o=t.height,i=t.axis,s=t.axisLabels,l=t.legend,u=t.datasets,c=e.getChartData(),d=e.getVerticalLines(),h=e.getVisibleLabels(),f=n?"button":"span";return $jsx("div",null,$jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:r,height:o,viewBox:"0 0 "+r+" "+o,preserveAspectRatio:"none"},c.map((function(e){return a?$jsx("path",{stroke:e.color,"fill-rule":"evenodd",d:e.points}):$jsx("polygon",{fill:e.color,"fill-rule":"evenodd",points:e.points})})),d.map((function(e,t){return $jsx("line",{"data-index":t,fill:"#000",x1:e,y1:0,x2:e,y2:o})}))),i&&$jsx("div",{class:"area-chart-axis"},s.map((function(t){return $jsx("span",null,h.includes(t)&&$jsx("span",null,e.formatAxisLabel(t)))}))),l&&$jsx("div",{class:"area-chart-legend"},u.map((function(t,a){return $jsx(f,{"data-index":a,class:"area-chart-legend-item "+(n?"area-chart-legend-button":""),_type:n?"button":void 0},$jsx("span",{style:"background-color: "+t.color}),e.formatLegendLabel(t.label))}))))},o.update=function(e,t){void 0===e&&(e={}),void 0===t&&(t=!1);var n=this,r=n.params;if(Object.keys(e).forEach((function(t){void 0!==e[t]&&(r[t]=e[t])})),0===n.$svgEl.length)return n;n.detachEvents(),n.$svgEl.remove(),t||(n.$axisEl.remove(),n.$legendEl.remove());var o=a(n.render()),i=o.find("svg");if(c(n,{svgEl:i&&i[0],$svgEl:i}),!t){var s=o.find(".area-chart-axis"),l=o.find(".area-chart-legend");c(n,{$axisEl:s,$legendEl:l}),n.$el.append(s),n.$el.append(l)}return n.$el.prepend(i),n.attachEvents(),n},o.init=function(){var e=this,t=a(e.render()),n=t.find("svg"),r=t.find(".area-chart-axis"),o=t.find(".area-chart-legend");return c(e,{svgEl:n&&n[0],$svgEl:n,$axisEl:r,$legendEl:o}),e.$el.append(n),e.$el.append(r),e.$el.append(o),e.attachEvents(),e},o.destroy=function(){var e=this;e.$el&&!e.destroyed&&(e.$el.trigger("piechart:beforedestroy"),e.emit("local::beforeDestroy areaChartBeforeDestroy",e),e.detachEvents(),e.$svgEl.remove(),e.$axisEl.remove(),e.$legendEl.remove(),e.f7Tooltip&&e.f7Tooltip.destroy&&e.f7Tooltip.destroy(),delete e.$el[0].f7AreaChart,d(e),e.destroyed=!0)},r}(r),f={name:"areaChart",params:{areaChart:{el:null,lineChart:!1,datasets:[],axis:!1,axisLabels:[],tooltip:!1,legend:!1,toggleDatasets:!1,width:640,height:320,maxAxisLabels:8,formatAxisLabel:null,formatLegendLabel:null,formatTooltip:null,formatTooltipAxisLabel:null,formatTooltipTotal:null,formatTooltipDataset:null}},create:function(){var e=this;e.areaChart=o({defaultSelector:".area-chart",constructor:h,app:e,domProp:"f7AreaChart"}),e.areaChart.update=function(t,n){if(0!==a(t).length){var r=e.areaChart.get(t);if(r)return r.update(n),r}}}};if(t){if(e.prototype.modules&&e.prototype.modules[f.name])return;e.use(f),e.instance&&(e.instance.useModuleParams(f,e.instance.params),e.instance.useModule(f))}return f}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
|
|
1
|
+
import $ from '../../shared/dom7';
|
|
2
|
+
import AreaChart from './area-chart-class';
|
|
3
|
+
import ConstructorMethods from '../../shared/constructor-methods';
|
|
4
|
+
export default {
|
|
5
|
+
name: 'areaChart',
|
|
6
|
+
params: {
|
|
7
|
+
areaChart: {
|
|
8
|
+
el: null,
|
|
9
|
+
lineChart: false,
|
|
10
|
+
datasets: [],
|
|
11
|
+
axis: false,
|
|
12
|
+
axisLabels: [],
|
|
13
|
+
tooltip: false,
|
|
14
|
+
legend: false,
|
|
15
|
+
toggleDatasets: false,
|
|
16
|
+
width: 640,
|
|
17
|
+
height: 320,
|
|
18
|
+
maxAxisLabels: 8,
|
|
19
|
+
formatAxisLabel: null,
|
|
20
|
+
formatLegendLabel: null,
|
|
21
|
+
formatTooltip: null,
|
|
22
|
+
formatTooltipAxisLabel: null,
|
|
23
|
+
formatTooltipTotal: null,
|
|
24
|
+
formatTooltipDataset: null
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
|
|
28
|
+
create() {
|
|
29
|
+
const app = this;
|
|
30
|
+
app.areaChart = ConstructorMethods({
|
|
31
|
+
defaultSelector: '.area-chart',
|
|
32
|
+
constructor: AreaChart,
|
|
33
|
+
app,
|
|
34
|
+
domProp: 'f7AreaChart'
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
app.areaChart.update = function update(el, newParams) {
|
|
38
|
+
const $el = $(el);
|
|
39
|
+
if ($el.length === 0) return undefined;
|
|
40
|
+
const areaChart = app.areaChart.get(el);
|
|
41
|
+
if (!areaChart) return undefined;
|
|
42
|
+
areaChart.update(newParams);
|
|
43
|
+
return areaChart;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(function framework7ComponentLoader(e,t){void 0===t&&(t=!0);var a=e.$,s=e.utils,l=(e.getDevice,e.getSupport,e.Class),n=(e.Modal,e.ConstructorMethods),o=(e.ModalMethods,s.extend),r=s.deleteProps;class i extends l{constructor(e,t={}){super(t,[e]);const s=this,l=o({},e.params.areaChart);s.useModulesParams(l),s.params=o(l,t);const{el:n}=s.params;if(!n)return s;const r=a(n);return 0===r.length?s:r[0].f7AreaChart?r[0].f7AreaChart:(o(s,{app:e,$el:r,el:r&&r[0],currentIndex:null,hiddenDatasets:[],f7Tooltip:null,linesOffsets:null}),r[0].f7AreaChart=s,s.useModules(),s.onMouseEnter=s.onMouseEnter.bind(s),s.onMouseMove=s.onMouseMove.bind(s),s.onMouseLeave=s.onMouseLeave.bind(s),s.onLegendClick=s.onLegendClick.bind(s),s.init(),s)}getVisibleLabels(){const{maxAxisLabels:e,axisLabels:t}=this.params;if(!e||t.length<=e)return t;const a=Math.ceil(t.length/e);return t.filter(((e,t)=>t%a==0))}getSummValues(){const{datasets:e}=this.params,{hiddenDatasets:t}=this,a=[];return e.filter(((e,a)=>!t.includes(a))).forEach((({values:e})=>{e.forEach(((e,t)=>{a[t]||(a[t]=0),a[t]+=e}))})),a}getChartData(){const{datasets:e,lineChart:t,width:a,height:s}=this.params,{hiddenDatasets:l}=this,n=[];if(!e.length)return n;const o=e[0].values.map((()=>0));let r=0;return t?e.filter(((e,t)=>!l.includes(t))).forEach((({values:e})=>{const t=Math.max(...e);t>r&&(r=t)})):r=Math.max(...this.getSummValues()),e.filter(((e,t)=>!l.includes(t))).forEach((({label:e,values:l,color:i})=>{const d=l.map(((e,n)=>{o[n]+=e;const i=t?e:o[n],d=n/(l.length-1)*a,h=s-i/r*s;return t?`${0===n?"M":"L"}${d},${h}`:`${d} ${h}`}));t||d.push(`${a} ${s} 0 ${s}`),n.push({label:e,points:d.join(" "),color:i})})),n.reverse()}getVerticalLines(){const{datasets:e,width:t}=this.params,a=[];if(!e.length)return a;const s=e[0].values;return s.forEach(((e,l)=>{const n=l/(s.length-1)*t;a.push(n)})),a}toggleDataset(e){const{hiddenDatasets:t,params:{toggleDatasets:a}}=this;a&&(t.includes(e)?t.splice(t.indexOf(e),1):t.push(e),this.$legendEl&&(this.$legendEl.find(".area-chart-legend-item").removeClass("area-chart-legend-item-hidden"),t.forEach((e=>{this.$legendEl.find(`.area-chart-legend-item[data-index="${e}"]`).addClass("area-chart-legend-item-hidden")}))),this.update({},!0))}formatAxisLabel(e){const{formatAxisLabel:t}=this.params;return t?t.call(this,e):e}formatLegendLabel(e){const{formatLegendLabel:t}=this.params;return t?t.call(this,e):e}calcLinesOffsets(){const e=this.svgEl.querySelectorAll("line");this.linesOffsets=[];for(let t=0;t<e.length;t+=1)this.linesOffsets.push(e[t].getBoundingClientRect().left)}formatTooltip(){const e=this,{currentIndex:t,hiddenDatasets:a,params:{datasets:s,axisLabels:l,formatTooltip:n,formatTooltipTotal:o,formatTooltipAxisLabel:r,formatTooltipDataset:i}}=e;if(null===t)return"";let d=0;const h=s.filter(((e,t)=>!a.includes(t))).map((e=>({color:e.color,label:e.label,value:e.values[t]})));if(h.forEach((e=>{d+=e.value})),n)return n({index:t,total:d,datasets:h});let c=r?r.call(e,l[t]):this.formatAxisLabel(l[t]);c||(c="");return`\n <div class="area-chart-tooltip-label">${c}</div>\n <div class="area-chart-tooltip-total">${o?o.call(e,d):d}</div>\n ${h.length>0?`\n <ul class="area-chart-tooltip-list">\n ${h.map((({label:t,color:a,value:s})=>`\n <li><span style="background-color: ${a};"></span>${i?i.call(e,t,s,a):`${t?`${t}: `:""}${s}`}</li>\n `)).join("")}\n </ul>`:""}\n `}setTooltip(){const e=this,{app:t,el:a,svgEl:s,hiddenDatasets:l,currentIndex:n,params:{tooltip:o,datasets:r}}=e;if(!o)return;if(r.filter(((e,t)=>!l.includes(t))).length>0)return null===n||e.f7Tooltip?void(e.f7Tooltip&&e.f7Tooltip.hide&&e.f7Tooltip.show&&(null!==n?(e.f7Tooltip.setText(e.formatTooltip()),e.f7Tooltip.setTargetEl(s.querySelector(`line[data-index="${n}"]`)),e.f7Tooltip.show()):e.f7Tooltip.hide())):(e.f7Tooltip=t.tooltip.create({trigger:"manual",containerEl:a,targetEl:s.querySelector(`line[data-index="${n}"]`),text:e.formatTooltip(),cssClass:"area-chart-tooltip"}),void(e.f7Tooltip&&e.f7Tooltip.show&&e.f7Tooltip.show()));e.f7Tooltip&&e.f7Tooltip.hide&&e.f7Tooltip.hide()}setCurrentIndex(e){e!==this.currentIndex&&(this.currentIndex=e,this.$el.trigger("areachart:select",{index:e}),this.emit("local::select areaChartSelect",this,e),this.$svgEl.find("line").removeClass("area-chart-current-line"),this.$svgEl.find(`line[data-index="${e}"]`).addClass("area-chart-current-line"),this.setTooltip())}onLegendClick(e){const t=parseInt(a(e.target).closest(".area-chart-legend-item").attr("data-index"),10);this.toggleDataset(t)}onMouseEnter(){this.calcLinesOffsets()}onMouseMove(e){const t=this;t.linesOffsets||t.calcLinesOffsets();let a=e.pageX;void 0===a&&(a=0);const s=t.linesOffsets.map((e=>Math.abs(a-e))),l=Math.min(...s),n=s.indexOf(l);t.setCurrentIndex(n)}onMouseLeave(){this.setCurrentIndex(null)}attachEvents(){const{svgEl:e,$el:t}=this;e&&(e.addEventListener("mouseenter",this.onMouseEnter),e.addEventListener("mousemove",this.onMouseMove),e.addEventListener("mouseleave",this.onMouseLeave),t.on("click",".area-chart-legend-item",this.onLegendClick))}detachEvents(){const{svgEl:e,$el:t}=this;e&&(e.removeEventListener("mouseenter",this.onMouseEnter),e.removeEventListener("mousemove",this.onMouseMove),e.removeEventListener("mouseleave",this.onMouseLeave),t.off("click",".area-chart-legend-item",this.onLegendClick))}render(){const e=this,{lineChart:t,toggleDatasets:a,width:s,height:l,axis:n,axisLabels:o,legend:r,datasets:i}=e.params,d=e.getChartData(),h=e.getVerticalLines(),c=e.getVisibleLabels(),u=a?"button":"span";return $jsx("div",null,$jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:s,height:l,viewBox:`0 0 ${s} ${l}`,preserveAspectRatio:"none"},d.map((e=>t?$jsx("path",{stroke:e.color,"fill-rule":"evenodd",d:e.points}):$jsx("polygon",{fill:e.color,"fill-rule":"evenodd",points:e.points}))),h.map(((e,t)=>$jsx("line",{"data-index":t,fill:"#000",x1:e,y1:0,x2:e,y2:l})))),n&&$jsx("div",{class:"area-chart-axis"},o.map((t=>$jsx("span",null,c.includes(t)&&$jsx("span",null,e.formatAxisLabel(t)))))),r&&$jsx("div",{class:"area-chart-legend"},i.map(((t,s)=>$jsx(u,{"data-index":s,class:"area-chart-legend-item "+(a?"area-chart-legend-button":""),_type:a?"button":void 0},$jsx("span",{style:`background-color: ${t.color}`}),e.formatLegendLabel(t.label))))))}update(e={},t=!1){const s=this,{params:l}=s;if(Object.keys(e).forEach((t=>{void 0!==e[t]&&(l[t]=e[t])})),0===s.$svgEl.length)return s;s.detachEvents(),s.$svgEl.remove(),t||(s.$axisEl.remove(),s.$legendEl.remove());const n=a(s.render()),r=n.find("svg");if(o(s,{svgEl:r&&r[0],$svgEl:r}),!t){const e=n.find(".area-chart-axis"),t=n.find(".area-chart-legend");o(s,{$axisEl:e,$legendEl:t}),s.$el.append(e),s.$el.append(t)}return s.$el.prepend(r),s.attachEvents(),s}init(){const e=this,t=a(e.render()),s=t.find("svg"),l=t.find(".area-chart-axis"),n=t.find(".area-chart-legend");return o(e,{svgEl:s&&s[0],$svgEl:s,$axisEl:l,$legendEl:n}),e.$el.append(s),e.$el.append(l),e.$el.append(n),e.attachEvents(),e}destroy(){const e=this;e.$el&&!e.destroyed&&(e.$el.trigger("piechart:beforedestroy"),e.emit("local::beforeDestroy areaChartBeforeDestroy",e),e.detachEvents(),e.$svgEl.remove(),e.$axisEl.remove(),e.$legendEl.remove(),e.f7Tooltip&&e.f7Tooltip.destroy&&e.f7Tooltip.destroy(),delete e.$el[0].f7AreaChart,r(e),e.destroyed=!0)}}var d={name:"areaChart",params:{areaChart:{el:null,lineChart:!1,datasets:[],axis:!1,axisLabels:[],tooltip:!1,legend:!1,toggleDatasets:!1,width:640,height:320,maxAxisLabels:8,formatAxisLabel:null,formatLegendLabel:null,formatTooltip:null,formatTooltipAxisLabel:null,formatTooltipTotal:null,formatTooltipDataset:null}},create(){const e=this;e.areaChart=n({defaultSelector:".area-chart",constructor:i,app:e,domProp:"f7AreaChart"}),e.areaChart.update=function(t,s){if(0===a(t).length)return;const l=e.areaChart.get(t);return l?(l.update(s),l):void 0}}};if(t){if(e.prototype.modules&&e.prototype.modules[d.name])return;e.use(d),e.instance&&(e.instance.useModuleParams(d,e.instance.params),e.instance.useModule(d))}return d}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
|