diff --git a/build/webpack.config.js b/build/webpack.config.js index 56b140900..f67f32fef 100644 --- a/build/webpack.config.js +++ b/build/webpack.config.js @@ -35,8 +35,8 @@ function wrap(render) { module.exports = { entry: { 'vendor': ['vue', 'vue-router'], - 'docs': './docs/index.js', - 'examples': './docs/examples.js' + 'zan-docs': './docs/index.js', + 'zan-examples': './docs/examples.js' }, output: { path: path.join(__dirname, '../docs/dist'), @@ -100,13 +100,13 @@ module.exports = { StyleExtractPlugin, new ProgressBarPlugin(), new HtmlWebpackPlugin({ - chunks: ['vendor', 'docs'], + chunks: ['vendor', 'zan-docs'], template: 'docs/index.tpl', filename: 'index.html', inject: true }), new HtmlWebpackPlugin({ - chunks: ['vendor', 'examples'], + chunks: ['vendor', 'zan-examples'], template: 'docs/index.tpl', filename: 'examples.html', inject: true @@ -168,7 +168,7 @@ if (process.env.NODE_ENV === 'production') { delete module.exports.devtool; module.exports.output = { path: path.join(__dirname, '../docs/dist'), - publicPath: './', + publicPath: '/vue', filename: '[name].[hash:8].js' }; module.exports.plugins = module.exports.plugins.concat([ diff --git a/docs/examples-dist/button.vue b/docs/examples-dist/button.vue index ecbc26d0f..3295b1f38 100644 --- a/docs/examples-dist/button.vue +++ b/docs/examples-dist/button.vue @@ -53,13 +53,6 @@ - -
- 确认付款 - 确认收货 - 取消订单 -
-
\ No newline at end of file +import Vue from "vue";import ExampleBlock from "../components/example-block";Vue.component("example-block", ExampleBlock); +export default { + methods: { + handlePageEnd(page, index) { + console.log(page, index); + } + } +}; + \ No newline at end of file diff --git a/docs/examples-docs/progress.md b/docs/examples-docs/progress.md index 0d4291867..b132611df 100644 --- a/docs/examples-docs/progress.md +++ b/docs/examples-docs/progress.md @@ -40,6 +40,7 @@
+
``` ::: @@ -47,7 +48,6 @@ ### 自定义颜色和文字 :::demo 自定义颜色 ```html -
diff --git a/docs/examples-docs/swipe.md b/docs/examples-docs/swipe.md index 0fd446e17..7846421a4 100644 --- a/docs/examples-docs/swipe.md +++ b/docs/examples-docs/swipe.md @@ -12,6 +12,16 @@ } + + ## Swipe 轮播 ### 基础用法 @@ -33,7 +43,7 @@ :::demo 自动轮播 ```html - + @@ -43,3 +53,16 @@ ``` ::: + +### API + +| 参数 | 说明 | 类型 | 默认值 | 可选值 | +|-----------|-----------|-----------|-------------|-------------| +| autoPlay | 是否自动轮播 | `boolean` | `false` | `true`, `false` | +| showIndicators | 是否显示指示器 | `boolean` | `true` | `true`, `false` | + +### 事件 + +| 事件名 | 说明 | 参数 | +|-----------|-----------|-----------| +| `pagechange:end` | 每一页轮播结束后触发 | `(elem, currIndex)`:`elem`为触发页当前的DOM节点 | diff --git a/docs/index.js b/docs/index.js index cdbb3a4cb..4cfc2b19e 100644 --- a/docs/index.js +++ b/docs/index.js @@ -25,7 +25,7 @@ Vue.component('footer-nav', FooterNav); let routesConfig = routes(navConfig); routesConfig.push({ path: '/', - redirect: '/component/button' + redirect: '/component/install' }); const router = new VueRouter({ @@ -38,8 +38,10 @@ router.beforeEach((route, redirect, next) => { if (route.path !== '/') { window.scrollTo(0, 0); } + + const pathname = process.env.NODE_ENV === 'production' ? '/vue/' : '/'; if (isMobile()) { - window.location.replace(location.pathname + 'examples.html#' + route.path); + window.location.replace(pathname + 'examples.html#/'); return; } document.title = route.meta.title || document.title; diff --git a/packages/swipe/src/swipe-item.vue b/packages/swipe/src/swipe-item.vue index 0a7ea92b5..be2dd955a 100644 --- a/packages/swipe/src/swipe-item.vue +++ b/packages/swipe/src/swipe-item.vue @@ -6,6 +6,10 @@ diff --git a/packages/swipe/src/swipe.vue b/packages/swipe/src/swipe.vue index 83e641a6a..0c335da0e 100644 --- a/packages/swipe/src/swipe.vue +++ b/packages/swipe/src/swipe.vue @@ -1,6 +1,14 @@ @@ -13,16 +21,20 @@ export default { name: 'zan-swipe', props: { - autoPlay: { + autoPlay: Boolean, + showIndicators: { type: Boolean, - default: false - }, - onPageChangeEnd: { - type: Function, - default: () => {} + default: true } }, + data() { + return { + currIndex: 0, + swipes: [] + }; + }, + mounted() { this.input = new Input(this.$el, { listenMoving: true @@ -53,6 +65,13 @@ export default { updated() { this.scroll.update(); + }, + + methods: { + onPageChangeEnd(page, currIndex) { + this.currIndex = +currIndex; + this.$emit('pagechange:end', page, currIndex); + } } }; diff --git a/packages/zanui-css/src/swipe.css b/packages/zanui-css/src/swipe.css index e5af9411f..518ded439 100644 --- a/packages/zanui-css/src/swipe.css +++ b/packages/zanui-css/src/swipe.css @@ -1,24 +1,56 @@ +@import './common/var.css'; + @component-namespace zan { - @b swipe { - position: relative; - overflow: hidden; - width: 100%; + @b swipe { + position: relative; + overflow: hidden; + width: 100%; + height: 100%; + + @e indicators { + position: absolute; + bottom: 10px; + left: 50%; + transform: translateX(-50%); } - @b swipe-item { - display: none; - width: 100%; - height: 100%; - overflow: hidden; - text-align: center; + @e indicator { + width: 5px; + height: 5px; + display: inline-block; + border-radius: 100%; + background: #999; + opacity: .8; + margin: 0 3px; + z-index: 1; - img { - width: 100%; - height: auto; - } - - &:first-child { - display: block; - } + @m active { + background: $c-orange; + opacity: 1; + } } + + @e items { + position: relative; + overflow: hidden; + position: relative; + height: 100%; + } + } + + @b swipe-item { + display: none; + height: 100%; + width: 100%; + text-align: center; + + img { + width: 100%; + height: auto; + } + + &:first-child { + display: block; + } + } }