├── config
├── dev.env.js
├── server.env.js
└── index.js
├── .eslintignore
├── dev
├── static
│ ├── layout.png
│ └── logo.png
├── src
│ ├── main.js
│ └── App.vue
└── index.html
├── .editorconfig
├── src
├── index.js
├── util
│ ├── dom.js
│ └── lang.js
└── BetterSlider.vue
├── .gitignore
├── .postcssrc.js
├── .babelrc
├── .eslintrc.js
├── LICENSE
├── README.md
├── package.json
└── dist
├── vue-sliding-button.js
└── vue-sliding-button.js.map
/config/dev.env.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | module.exports = {
3 | NODE_ENV: '"production"'
4 | }
5 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | /build/
2 | /config/
3 | /dist/
4 | /*.js
5 | /test/unit/coverage/
6 | /dev/dist/
7 |
--------------------------------------------------------------------------------
/dev/static/layout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SyMind/vue-sliding-button/HEAD/dev/static/layout.png
--------------------------------------------------------------------------------
/dev/static/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SyMind/vue-sliding-button/HEAD/dev/static/logo.png
--------------------------------------------------------------------------------
/config/server.env.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const merge = require('webpack-merge')
3 | const prodEnv = require('./dev.env')
4 |
5 | module.exports = merge(prodEnv, {
6 | NODE_ENV: '"development"'
7 | })
8 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | import BetterSlider from './BetterSlider'
2 |
3 | const plugin = {
4 | install (Vue, options) {
5 | Vue.component(BetterSlider.name, BetterSlider)
6 | }
7 | }
8 |
9 | export default plugin
10 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules/
3 | /dev/dist/
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | /test/unit/coverage/
8 | /test/e2e/reports/
9 | selenium-debug.log
10 |
11 | # Editor directories and files
12 | .idea
13 | .vscode
14 | *.suo
15 | *.ntvs*
16 | *.njsproj
17 | *.sln
18 |
--------------------------------------------------------------------------------
/.postcssrc.js:
--------------------------------------------------------------------------------
1 | // https://github.com/michael-ciniawsky/postcss-load-config
2 |
3 | module.exports = {
4 | "plugins": {
5 | "postcss-import": {},
6 | "postcss-url": {},
7 | // to edit target browsers: use "browserslist" field in package.json
8 | "autoprefixer": {}
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/dev/src/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './App.vue'
3 | import BetterSlider from '../../src/index.js'
4 |
5 | Vue.config.productionTip = false
6 |
7 | Vue.use(BetterSlider)
8 |
9 | /* eslint-disable no-new */
10 | new Vue({
11 | el: '#app',
12 | components: { App },
13 | template: ''
14 | })
15 |
--------------------------------------------------------------------------------
/src/util/dom.js:
--------------------------------------------------------------------------------
1 | export const TOUCH_EVENT = 1
2 | export const MOUSE_EVENT = 2
3 |
4 | export const eventType = {
5 | touchstart: TOUCH_EVENT,
6 | touchmove: TOUCH_EVENT,
7 | touchend: TOUCH_EVENT,
8 |
9 | mousedown: MOUSE_EVENT,
10 | mousemove: MOUSE_EVENT,
11 | mouseup: MOUSE_EVENT,
12 | mouseleave: MOUSE_EVENT
13 | }
14 |
--------------------------------------------------------------------------------
/dev/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | vue-better-slider
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | ["env", {
4 | "modules": false,
5 | "targets": {
6 | "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
7 | }
8 | }],
9 | "stage-2"
10 | ],
11 | "plugins": ["transform-vue-jsx", "transform-runtime"],
12 | "env": {
13 | "test": {
14 | "presets": ["env", "stage-2"],
15 | "plugins": ["transform-vue-jsx", "transform-es2015-modules-commonjs", "dynamic-import-node"]
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | // https://eslint.org/docs/user-guide/configuring
2 |
3 | module.exports = {
4 | root: true,
5 | parserOptions: {
6 | parser: 'babel-eslint'
7 | },
8 | env: {
9 | browser: true,
10 | },
11 | extends: [
12 | // https://github.com/vuejs/eslint-plugin-vue#priority-a-essential-error-prevention
13 | // consider switching to `plugin:vue/strongly-recommended` or `plugin:vue/recommended` for stricter rules.
14 | 'plugin:vue/essential',
15 | // https://github.com/standard/standard/blob/master/docs/RULES-en.md
16 | 'standard'
17 | ],
18 | // required to lint *.vue files
19 | plugins: [
20 | 'vue'
21 | ],
22 | // add your custom rules here
23 | rules: {
24 | // allow async-await
25 | 'generator-star-spacing': 'off',
26 | // allow debugger during development
27 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off'
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 SyMind
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/src/util/lang.js:
--------------------------------------------------------------------------------
1 | export function getNow () {
2 | return window.performance && window.performance.now ? (window.performance.now() + window.performance.timing.navigationStart) : +new Date()
3 | }
4 |
5 | export function computeMomentum (current, start, time, minScrollX, maxScrollX, wrapperSize, momentumTime, deceleration) {
6 | let distance = current - start
7 | let speed = Math.abs(distance) / time
8 |
9 | let momentum = speed / deceleration
10 | let duration = momentumTime
11 | let destination = current + momentum * (distance < 0 ? -1 : 1)
12 |
13 | if (destination < maxScrollX - wrapperSize) {
14 | destination = maxScrollX - wrapperSize
15 | } else if (destination > wrapperSize + minScrollX) {
16 | destination = wrapperSize + minScrollX
17 | }
18 |
19 | return {
20 | destination: Math.round(destination),
21 | duration
22 | }
23 | }
24 |
25 | const PERCENTAGE_REGEX = /^(\d+\.?\d*)|(\d*\.\d+)[%]$/g
26 |
27 | export function parsePercentage (input) {
28 | if (typeof input !== 'string') {
29 | return
30 | }
31 | const match = PERCENTAGE_REGEX.exec(input)
32 | const value = match && match[0]
33 | const number = parseInt(value)
34 | return isNaN(number) ? undefined : number * 0.01
35 | }
36 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # vue-better-slider
2 |
3 | > 一个 Vue 的滑动按钮组件,拥有优雅的惯性与回弹动画,有关动画方面的处理借鉴 better-scroll 的实现。
4 |
5 | [在线例子](https://symind.github.io/vue-better-slider/index.html)
6 |
7 | 
8 |
9 | # 起步
10 | ## 安装
11 | ``` bash
12 | npm i --save vue-sliding-button
13 | ```
14 |
15 | ## 引入
16 | ``` js
17 | import Vue from 'vue'
18 | import SlidingButton from 'vue-sliding-button'
19 |
20 | Vue.use(SlidingButton)
21 | ```
22 | ## 使用
23 | ``` html
24 |
25 |
26 |
27 |
28 | 前面的内容
29 |
30 |
31 | 后面的内容
32 |
33 |
34 |
35 |
36 |
39 | ```
40 |
41 | # 原理
42 | ## 布局
43 | 
44 |
45 | 绿色部分为 wrapper,它拥有两个子元素为 back 和 front,它的高度会被 front 撑起。黄色部分为 back,它使用**绝对定位**,它的高度与 wrapper 相同,值得注意的是为了提高性能,back 在用户触摸该控件是才被插入。front 与 back 同级。
46 | ## 关闭
47 | 组件提供关闭动画,调用组件的 close 方法使用,可以通过监听 clickBackEvent 等事件,通过传入的组件引用已调用该方法。需要注意的是,该方法并不会删除该组件,可以通过监听 closeTransitionEndEvent 事件,在其中进行自己的处理。
48 | # 选项
49 | SlidingButton 支持很多属性。
50 | ## right
51 | * 类型:Number
52 | * 默认值:80
53 | * 作用:从左向右滑动时,右边展示宽度
54 | ## left
55 | * 类型:Number
56 | * 默认值:80
57 | * 作用:从右向左滑动时,左边展示宽度
58 | ## rightBackgroundColor
59 | * 类型:Number
60 | * 默认值:80
61 | * 作用:从左向右滑动时,组件底色,主要用于关闭动画
62 | ## leftBackgroundColor
63 | * 类型:Number
64 | * 默认值:0
65 | * 作用:从右向左滑动时,组件底色,主要用于关闭动画
66 | ## momentum
67 | * 类型:Boolean
68 | * 默认值:true
69 | * 作用:表示是否开启惯性动画
70 | ## momentumTime
71 | * 类型:Number
72 | * 默认值:100
73 | * 作用:表示惯性动画持续时间
74 | ## deceleration
75 | * 类型:Number
76 | * 默认值:0.01
77 | * 作用:表示惯性动画的减速度
78 | ## closeTime
79 | * 类型:Number
80 | * 默认值:300
81 | * 作用:表示关闭动画的持续时间
82 | ## trigger
83 | * 类型:Boolean
84 | * 默认值:true
85 | * 作用:该属性为 true 或 false 并无区别,只要该值发生改变,且用户没有触摸该组件时,就会将组件的 front 置于原始位置。当在列表中使用多个该组件时,可以使用该属性。
86 | # 事件
87 | 注意:event 是事件原生参数,component 是指向该组件的引用。
88 | ## clickBackEvent
89 | * 参数:{ Object }.{ event, component }
90 | * 触发时机:用户点击 back 时
91 | ## clickFrontEvent
92 | * 参数:{ Object }.{ event, component }
93 | * 触发时机:用户点击 front 时
94 | ## touchStartEvent
95 | * 参数:{ Object }.{ event, component }
96 | * 触发时机:用户开始触摸该组件时
97 | ## closeTransitionEndEvent
98 | * 参数:{ Object }.{ event, component }
99 | * 触发时机:关闭动画结束时调用
100 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vue-sliding-button",
3 | "version": "1.0.6",
4 | "description": "一个 Vue 的滑动按钮组件,拥有优雅的惯性与回弹动画。",
5 | "author": "SyMind ",
6 | "keywords": [
7 | "vue",
8 | "vuejs",
9 | "vue-component"
10 | ],
11 | "main": "dist/vue-sliding-button.js",
12 | "repository": {
13 | "type": "git",
14 | "url": "git+https://github.com/SyMind/vue-sliding-button.git"
15 | },
16 | "bugs": {
17 | "url": "https://github.com/SyMind/vue-sliding-button/issues"
18 | },
19 | "scripts": {
20 | "start": "webpack-dev-server --inline --progress --config build/webpack.server.conf.js",
21 | "unit": "jest --config test/unit/jest.conf.js --coverage",
22 | "e2e": "node test/e2e/runner.js",
23 | "test": "npm run unit && npm run e2e",
24 | "lint": "eslint --ext .js,.vue src test/unit test/e2e/specs",
25 | "build:dev": "node build/build.js",
26 | "build:lib": "node build/build.js lib"
27 | },
28 | "devDependencies": {
29 | "vue": "^2.5.16",
30 | "autoprefixer": "^7.1.2",
31 | "babel-core": "^6.22.1",
32 | "babel-eslint": "^8.2.1",
33 | "babel-helper-vue-jsx-merge-props": "^2.0.3",
34 | "babel-jest": "^21.0.2",
35 | "babel-loader": "^7.1.1",
36 | "babel-plugin-dynamic-import-node": "^1.2.0",
37 | "babel-plugin-syntax-jsx": "^6.18.0",
38 | "babel-plugin-transform-es2015-modules-commonjs": "^6.26.0",
39 | "babel-plugin-transform-runtime": "^6.22.0",
40 | "babel-plugin-transform-vue-jsx": "^3.5.0",
41 | "babel-preset-env": "^1.3.2",
42 | "babel-preset-stage-2": "^6.22.0",
43 | "chalk": "^2.0.1",
44 | "copy-webpack-plugin": "^4.0.1",
45 | "css-loader": "^0.28.0",
46 | "eslint": "^4.15.0",
47 | "eslint-config-standard": "^10.2.1",
48 | "eslint-friendly-formatter": "^3.0.0",
49 | "eslint-loader": "^1.7.1",
50 | "eslint-plugin-import": "^2.7.0",
51 | "eslint-plugin-node": "^5.2.0",
52 | "eslint-plugin-promise": "^3.4.0",
53 | "eslint-plugin-standard": "^3.0.1",
54 | "eslint-plugin-vue": "^4.0.0",
55 | "express": "^4.16.2",
56 | "extract-text-webpack-plugin": "^3.0.0",
57 | "file-loader": "^1.1.4",
58 | "friendly-errors-webpack-plugin": "^1.6.1",
59 | "html-webpack-plugin": "^2.30.1",
60 | "jest": "^22.0.4",
61 | "jest-serializer-vue": "^0.3.0",
62 | "node-notifier": "^5.1.2",
63 | "node-sass": "^4.7.2",
64 | "optimize-css-assets-webpack-plugin": "^3.2.0",
65 | "ora": "^1.2.0",
66 | "portfinder": "^1.0.13",
67 | "postcss-import": "^11.0.0",
68 | "postcss-loader": "^2.0.8",
69 | "postcss-url": "^7.2.1",
70 | "rimraf": "^2.6.0",
71 | "sass-loader": "^6.0.6",
72 | "semver": "^5.3.0",
73 | "shelljs": "^0.7.6",
74 | "uglifyjs-webpack-plugin": "^1.1.1",
75 | "url-loader": "^0.5.8",
76 | "vue-jest": "^1.0.2",
77 | "vue-loader": "^13.3.0",
78 | "vue-style-loader": "^3.0.1",
79 | "vue-template-compiler": "^2.5.2",
80 | "webpack": "^3.6.0",
81 | "webpack-bundle-analyzer": "^2.9.0",
82 | "webpack-dev-server": "^2.9.1",
83 | "webpack-merge": "^4.1.0"
84 | }
85 | }
86 |
--------------------------------------------------------------------------------
/config/index.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | // Template version: 1.3.1
3 | // see http://vuejs-templates.github.io/webpack for documentation.
4 |
5 | const path = require('path')
6 |
7 | module.exports = {
8 | server: {
9 |
10 | // Paths
11 | assetsSubDirectory: 'static',
12 | assetsPublicPath: '/',
13 | proxyTable: {},
14 |
15 | // Various Dev Server settings
16 | host: '0.0.0.0', // can be overwritten by process.env.HOST
17 | port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
18 | autoOpenBrowser: false,
19 | errorOverlay: true,
20 | notifyOnErrors: true,
21 | poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
22 |
23 | // Use Eslint Loader?
24 | // If true, your code will be linted during bundling and
25 | // linting errors and warnings will be shown in the console.
26 | useEslint: true,
27 | // If true, eslint errors and warnings will also be shown in the error overlay
28 | // in the browser.
29 | showEslintErrorsInOverlay: false,
30 |
31 | /**
32 | * Source Maps
33 | */
34 |
35 | // https://webpack.js.org/configuration/devtool/#development
36 | devtool: 'cheap-module-eval-source-map',
37 |
38 | // If you have problems debugging vue-files in devtools,
39 | // set this to false - it *may* help
40 | // https://vue-loader.vuejs.org/en/options.html#cachebusting
41 | cacheBusting: true,
42 |
43 | cssSourceMap: true
44 | },
45 |
46 | dev: {
47 | // Template for index.html
48 | index: path.resolve(__dirname, '../dev/dist/index.html'),
49 |
50 | // Paths
51 | assetsRoot: path.resolve(__dirname, '../dev/dist'),
52 | assetsSubDirectory: 'static',
53 | assetsPublicPath: '/vue-better-slider',
54 |
55 | /**
56 | * Source Maps
57 | */
58 |
59 | productionSourceMap: true,
60 | // https://webpack.js.org/configuration/devtool/#production
61 | devtool: '#source-map',
62 |
63 | // Gzip off by default as many popular static hosts such as
64 | // Surge or Netlify already gzip all static assets for you.
65 | // Before setting to `true`, make sure to:
66 | // npm install --save-dev compression-webpack-plugin
67 | productionGzip: false,
68 | productionGzipExtensions: ['js', 'css'],
69 |
70 | // Run the build command with an extra argument to
71 | // View the bundle analyzer report after build finishes:
72 | // `npm run build --report`
73 | // Set to `true` or `false` to always turn it on or off
74 | bundleAnalyzerReport: process.env.npm_config_report
75 | },
76 |
77 | lib: {
78 | // Paths
79 | assetsRoot: path.resolve(__dirname, '../dist'),
80 | assetsSubDirectory: 'static',
81 |
82 | /**
83 | * Source Maps
84 | */
85 |
86 | productionSourceMap: true,
87 | // https://webpack.js.org/configuration/devtool/#production
88 | devtool: '#source-map',
89 |
90 | // Gzip off by default as many popular static hosts such as
91 | // Surge or Netlify already gzip all static assets for you.
92 | // Before setting to `true`, make sure to:
93 | // npm install --save-dev compression-webpack-plugin
94 | productionGzip: false,
95 | productionGzipExtensions: ['js', 'css'],
96 |
97 | // Run the build command with an extra argument to
98 | // View the bundle analyzer report after build finishes:
99 | // `npm run build --report`
100 | // Set to `true` or `false` to always turn it on or off
101 | bundleAnalyzerReport: process.env.npm_config_report
102 | }
103 | }
104 |
--------------------------------------------------------------------------------
/dev/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
11 |
12 |
这是一条消息
13 |
左边“已读”,右边“删除”
14 |
15 |
16 |
20 |
21 |
29 |
30 |
31 |
这是一条消息
32 |
向左滑动删除消息
33 |
34 |
35 |
38 |
39 |
45 |
46 |
47 |
第 {{ item.id }} 个消息
48 |
左滑出现删除按钮
49 |
50 |
51 |
54 |
55 |
56 |
57 |
58 |
84 |
85 |
151 |
--------------------------------------------------------------------------------
/src/BetterSlider.vue:
--------------------------------------------------------------------------------
1 |
2 |
11 |
16 |
32 |
33 |
34 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
75 |
76 |
355 |
--------------------------------------------------------------------------------
/dist/vue-sliding-button.js:
--------------------------------------------------------------------------------
1 | !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports["vue-sliding-button"]=e():t["vue-sliding-button"]=e()}("undefined"!=typeof self?self:this,function(){return function(t){var e={};function i(n){if(e[n])return e[n].exports;var s=e[n]={i:n,l:!1,exports:{}};return t[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=t,i.c=e,i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="/dist/",i(i.s=1)}([function(t,e,i){"use strict";var n=i(9),s=i(10);e.a={name:"better-slider",props:{right:{type:[Number,String],default:80},left:{type:[Number,String],default:0},deceleration:{type:Number,default:.01},momentum:{type:Boolean,default:!0},momentumTime:{type:Number,default:100},momentumLimitTime:{type:Number,default:300},momentumLimitDistance:{type:Number,default:15},bounce:{type:Boolean,default:!0},bounceTime:{type:Number,default:200},slideTime:{type:Number,default:200},closeTime:{type:Number,default:300},rightBackgroundColor:{type:String,default:"#e6454a"},leftBackgroundColor:{type:String,default:"#ccc"},trigger:{type:Boolean,default:!1}},data:function(){return{x:0,wrapperX:0,duration:0,easing:{}}},methods:{clickBackEventHandle:function(t){this.$emit("clickBackEvent",{event:t,component:this})},clickFrontEventHandle:function(t){this.$emit("clickFrontEvent",{event:t,component:this})},close:function(){this.$el.style.height=0;var t=this.$refs.wrapper.style;t.transitionDuration=this.closeTime+"ms",t.transform="translate("+-this.$refs.front.offsetWidth+"px, 0px) translateZ(0px)",this.wrapperX=-this.$refs.front.offsetWidth,this.isClosing=!0},start:function(t){var e=n.b[t.type];if(!(e!==n.a&&0!==t.button||this.initiated&&this.initiated!==e)){this.initiated=e,this.$emit("touchStartEvent",{event:t,component:this}),this.duration=this.slideTime,this.x=0,this.distX=0,this.startTime=Object(s.b)();var i=t.touches?t.touches[0]:t;this.startX=this.x,this.absStartX=this.x,this.touchX=i.pageX}},move:function(t){if(n.b[t.type]===this.initiated){this.duration=0;var e=t.touches?t.touches[0]:t,i=e.pageX-this.touchX;this.touchX=e.pageX,this.distX+=i;var r=Math.abs(this.distX),o=Object(s.b)();if(!(o-this.endTime>this.momentumLimitTime&&rthis.maxScrollX||0===this.right&&athis.maxScrollX)&&(a=this.bounce?this.x+i/3:athis.momentumLimitTime&&(this.startTime=o,this.startX=this.x))}}},end:function(t){if(n.b[t.type]===this.initiated){this.initiated=!1,this.endTime=Object(s.b)();var e=this.endTime-this.startTime,i=Math.abs(this.x-this.startX);if(this.momentum&ðis.momentumLimitDistance){var r=Object(s.a)(this.x,this.startX,e,this.minScrollX,this.maxScrollX,this.$el.offsetWidth,this.momentumTime,this.deceleration);this.duration=r.duration,this.x=r.destination,this.easing=this.ease.momentum}else this.x<1/3*this.minScrollX?(this.duration=this.slideTime,this.easing=this.ease.slide,this.x=this.minScrollX):this.x>1/3*this.maxScrollX?(this.duration=this.slideTime,this.easing=this.ease.slide,this.x=this.maxScrollX):(this.duration=this.bounceTime,this.easing=this.ease.slideTime,this.x=0)}},transitionEnd:function(t){t.target.className.indexOf("better-slider")>-1&&this.isClosing&&0===this.$el.offsetHeight?this.$emit("closeTransitionEndEvent",{event:t,component:this}):(this.isRightOpened&&this.x===this.minScrollX&&this.$emit("rightOpenedEvent",{event:t,component:this}),this.isLeftOpened&&this.x===this.maxScrollX&&this.$emit("leftOpenedEvent",{event:t,component:this}),this.resetPosition(this.bounceTime,this.ease.bounce))},resetPosition:function(t,e){this.isRightOpened?this.x=this.minScrollX:this.isLeftOpened?this.x=this.maxScrollX:this.x=0,this.duration=t,this.easing=e},computeX:function(t){if("string"==typeof t){var e=Object(s.c)(t),i=parseInt(window.getComputedStyle(this.$refs.wrapper,null).width);return"number"==typeof e?Math.ceil(e*i):0}return t}},computed:{sliderStyle:function(){return{"transition-duration":this.duration+"ms"}},frontStyle:function(){return{"transition-timing-function":this.easing,"transition-duration":this.duration+"ms",transform:"translate("+this.x+"px, 0px) translateZ(0px)"}}},created:function(){this.isClosing=!1,this.ease={slide:"ease-in",momentum:"ease-out"}},mounted:function(){this.minScrollX=-this.computeX(this.right),this.maxScrollX=this.computeX(this.left),this.$el.style.height=Math.ceil(this.$slots.front[0].elm.offsetHeight)+"px"},watch:{x:function(){var t=this.$el.style;0===this.x?(t.backgroundColor="",this.isLeftOpened=!1,this.isRightOpened=!1):this.x>0?(this.isLeftOpened=!0,this.isRightOpened=!1,t.backgroundColor=this.leftBackgroundColor):(this.isLeftOpened=!1,this.isRightOpened=!0,t.backgroundColor=this.rightBackgroundColor)},trigger:function(){this.initiated||(this.duration=this.slideTime,this.x=0)}}}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=i(2),s={install:function(t,e){t.component(n.a.name,n.a)}};e.default=s},function(t,e,i){"use strict";var n=i(0),s=i(11);var r=function(t){i(3)},o=i(8)(n.a,s.a,!1,r,"data-v-185a413c",null);e.a=o.exports},function(t,e,i){var n=i(4);"string"==typeof n&&(n=[[t.i,n,""]]),n.locals&&(t.exports=n.locals);i(6)("6abb6cc8",n,!0,{})},function(t,e,i){(t.exports=i(5)(!1)).push([t.i,"\n.better-slider[data-v-185a413c] {\n position: relative;\n overflow-x: hidden;\n width: 100%;\n -webkit-transition: all 300ms ease-in-out;\n transition: all 300ms ease-in-out;\n}\n.better-slider .better-slider-wrapper[data-v-185a413c] {\n overflow: hidden;\n height: 100%;\n}\n.better-slider .better-slider-wrapper .better-slider-back[data-v-185a413c] {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n.better-slider .better-slider-front[data-v-185a413c] {\n position: absolute;\n top: 0;\n left: 0;\n display: block;\n width: 100%;\n border: 0;\n margin: 0;\n padding: 0;\n z-index: 10;\n}\n",""])},function(t,e){t.exports=function(t){var e=[];return e.toString=function(){return this.map(function(e){var i=function(t,e){var i=t[1]||"",n=t[3];if(!n)return i;if(e&&"function"==typeof btoa){var s=(o=n,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+" */"),r=n.sources.map(function(t){return"/*# sourceURL="+n.sourceRoot+t+" */"});return[i].concat(r).concat([s]).join("\n")}var o;return[i].join("\n")}(e,t);return e[2]?"@media "+e[2]+"{"+i+"}":i}).join("")},e.i=function(t,i){"string"==typeof t&&(t=[[null,t,""]]);for(var n={},s=0;si.parts.length&&(n.parts.length=i.parts.length)}else{var o=[];for(s=0;sr+n&&(l=r+n);return{destination:Math.round(l),duration:d}},e.c=function(t){if("string"!=typeof t)return;var e=n.exec(t),i=e&&e[0],s=parseInt(i);return isNaN(s)?void 0:.01*s};var n=/^(\d+\.?\d*)|(\d*\.\d+)[%]$/g},function(t,e,i){"use strict";var n={render:function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"better-slider",staticStyle:{"transition-property":"height","transition-timing-function":"ease-in"},style:t.sliderStyle,on:{transitionEnd:t.transitionEnd,webkitTransitionEnd:t.transitionEnd,oTransitionEnd:t.transitionEnd,MSTransitionEnd:t.transitionEnd}},[i("div",{ref:"wrapper",staticClass:"better-slider-wrapper",staticStyle:{"transition-property":"transform","transition-timing-function":"ease-in-out"}},[i("div",{ref:"front",staticClass:"better-slider-front",staticStyle:{"transition-property":"transform"},style:t.frontStyle,on:{touchstart:t.start,mousedown:t.start,touchmove:t.move,mousemove:t.move,touchend:t.end,mouseup:t.end,touchcancel:t.end,mousecancel:t.end,mouseleave:t.end,click:t.clickFrontEventHandle}},[t._t("front")],2),t._v(" "),i("div",{ref:"back",staticClass:"better-slider-back",on:{click:t.clickBackEventHandle}},[t._t("back")],2)])])},staticRenderFns:[]};e.a=n}])});
2 | //# sourceMappingURL=vue-sliding-button.js.map
--------------------------------------------------------------------------------
/dist/vue-sliding-button.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap be0f9850f8d6b9c8347e","webpack:///src/BetterSlider.vue","webpack:///./src/index.js","webpack:///./src/BetterSlider.vue","webpack:///./src/BetterSlider.vue?41fd","webpack:///./src/BetterSlider.vue?7e01","webpack:///./node_modules/css-loader/lib/css-base.js","webpack:///./node_modules/vue-style-loader/lib/addStylesClient.js","webpack:///./node_modules/vue-style-loader/lib/listToStyles.js","webpack:///./node_modules/vue-loader/lib/component-normalizer.js","webpack:///./src/util/dom.js","webpack:///./src/util/lang.js","webpack:///./src/BetterSlider.vue?27d2"],"names":["root","factory","exports","module","define","amd","self","this","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","props","right","type","Number","String","default","left","deceleration","momentum","Boolean","momentumTime","momentumLimitTime","momentumLimitDistance","bounce","bounceTime","slideTime","closeTime","rightBackgroundColor","leftBackgroundColor","trigger","data","x","wrapperX","duration","easing","methods","clickBackEventHandle","event","$emit","component","clickFrontEventHandle","close","$el","style","height","wrapperStyle","$refs","wrapper","transitionDuration","transform","front","offsetWidth","isClosing","start","_eventType","__WEBPACK_IMPORTED_MODULE_0__util_dom__","button","initiated","distX","startTime","__WEBPACK_IMPORTED_MODULE_1__util_lang__","touch","touches","startX","absStartX","touchX","pageX","move","deltaX","absDistX","Math","abs","timestamp","endTime","newX","maxScrollX","minScrollX","end","momentumX","destination","ease","slide","transitionEnd","target","className","indexOf","offsetHeight","isRightOpened","isLeftOpened","resetPosition","time","computeX","input","percentage","wrapperWidth","parseInt","window","getComputedStyle","width","ceil","computed","sliderStyle","transition-duration","frontStyle","transition-timing-function","created","mounted","$slots","elm","watch","elStyle","backgroundColor","value","__WEBPACK_IMPORTED_MODULE_0__BetterSlider__","plugin","install","Vue","options","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_BetterSlider_vue__","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_185a413c_hasScoped_true_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_BetterSlider_vue__","__vue_styles__","ssrContext","Component","normalizeComponent","content","locals","push","useSourceMap","list","toString","map","item","cssMapping","btoa","sourceMapping","sourceMap","unescape","encodeURIComponent","JSON","stringify","sourceURLs","sources","source","sourceRoot","concat","join","cssWithMappingToString","mediaQuery","alreadyImportedModules","length","id","hasDocument","document","DEBUG","Error","listToStyles","stylesInDom","head","getElementsByTagName","singletonElement","singletonCounter","isProduction","noop","ssrIdKey","isOldIE","navigator","test","userAgent","toLowerCase","addStylesToDom","styles","domStyle","refs","j","parts","addStyle","createStyleElement","styleElement","createElement","appendChild","obj","update","remove","querySelector","parentNode","removeChild","styleIndex","applyToSingletonTag","bind","css","media","setAttribute","ssrId","styleSheet","cssText","firstChild","createTextNode","newObj","parentId","_isProduction","_options","newList","mayRemove","textStore","replaceText","index","replacement","filter","cssNode","childNodes","insertBefore","newStyles","part","rawScriptExports","compiledTemplate","functionalTemplate","injectStyles","scopeId","moduleIdentifier","esModule","scriptExports","hook","render","staticRenderFns","_compiled","functional","_scopeId","context","$vnode","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","existing","beforeCreate","_injectStyles","h","TOUCH_EVENT","eventType","touchstart","touchmove","touchend","mousedown","mousemove","mouseup","mouseleave","performance","now","timing","navigationStart","Date","current","wrapperSize","distance","speed","round","match","PERCENTAGE_REGEX","exec","number","isNaN","undefined","esExports","_vm","_h","$createElement","_c","_self","staticClass","staticStyle","transition-property","on","webkitTransitionEnd","oTransitionEnd","MSTransitionEnd","ref","touchcancel","mousecancel","click","_t","_v"],"mappings":"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","file":"vue-sliding-button.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"vue-sliding-button\"] = factory();\n\telse\n\t\troot[\"vue-sliding-button\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/dist/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap be0f9850f8d6b9c8347e","\n \n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/BetterSlider.vue","import BetterSlider from './BetterSlider'\n\nconst plugin = {\n install (Vue, options) {\n Vue.component(BetterSlider.name, BetterSlider)\n }\n}\n\nexport default plugin\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","function injectStyle (ssrContext) {\n require(\"!!vue-style-loader!css-loader!../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-185a413c\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader!../node_modules/vue-loader/lib/selector?type=styles&index=0!./BetterSlider.vue\")\n}\nvar normalizeComponent = require(\"!../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./BetterSlider.vue\"\nimport __vue_script__ from \"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./BetterSlider.vue\"\n/* template */\nimport __vue_template__ from \"!!../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-185a413c\\\",\\\"hasScoped\\\":true,\\\"buble\\\":{\\\"transforms\\\":{}}}!../node_modules/vue-loader/lib/selector?type=template&index=0!./BetterSlider.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-185a413c\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/BetterSlider.vue\n// module id = 2\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a