diff --git a/example/components/doc-page/index.js b/example/components/doc-page/index.js new file mode 100644 index 00000000..187df4be --- /dev/null +++ b/example/components/doc-page/index.js @@ -0,0 +1,8 @@ +Component({ + properties: { + title: { + type: String, + value: '' + } + } +}); diff --git a/example/components/doc-page/index.json b/example/components/doc-page/index.json new file mode 100644 index 00000000..467ce294 --- /dev/null +++ b/example/components/doc-page/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/example/components/doc-page/index.wxml b/example/components/doc-page/index.wxml new file mode 100644 index 00000000..5a21e4ae --- /dev/null +++ b/example/components/doc-page/index.wxml @@ -0,0 +1,6 @@ + + {{ title }} + + + + diff --git a/example/components/doc-page/index.wxss b/example/components/doc-page/index.wxss new file mode 100644 index 00000000..9b186794 --- /dev/null +++ b/example/components/doc-page/index.wxss @@ -0,0 +1,23 @@ +.doc-container { + background: #F9F9F9; + overflow: hidden; + min-height: 100vh; + box-sizing: border-box; + padding: 15px 0; +} + +.doc-title { + position: relative; + padding: 15px 0; + margin: 10px 15px; + line-height: 25px; + font-size: 25px; + color: #666; + border-bottom: 1rpx solid #e5e5e5; +} + +.doc-content { + padding: 15px; + overflow: hidden; + color: #666; +} diff --git a/example/pages/icon/index.json b/example/pages/icon/index.json index 6a80c719..b2a90ffd 100644 --- a/example/pages/icon/index.json +++ b/example/pages/icon/index.json @@ -1,5 +1,7 @@ { + "navigationBarTitleText": "Icon 图标", "usingComponents": { - "zan-icon": "../../dist/icon/index" + "zan-icon": "../../dist/icon/index", + "doc-page": "../../components/doc-page/index" } } diff --git a/example/pages/icon/index.wxml b/example/pages/icon/index.wxml index 4b71a57d..34ca4220 100644 --- a/example/pages/icon/index.wxml +++ b/example/pages/icon/index.wxml @@ -1,13 +1,8 @@ - - - ICON - - - - - - - zan-icon-{{ icon }} + + + + + zan-icon-{{ icon }} - + diff --git a/example/pages/popup/index.json b/example/pages/popup/index.json index ca281fb4..f61f05c8 100644 --- a/example/pages/popup/index.json +++ b/example/pages/popup/index.json @@ -1,3 +1,8 @@ { - "navigationBarTitleText": "Popup 弹出层" + "navigationBarTitleText": "Popup 弹出层", + "usingComponents": { + "doc-page": "../../components/doc-page/index", + "zan-popup": "../../dist/popup/index" + } } + diff --git a/example/pages/popup/index.wxml b/example/pages/popup/index.wxml index db3bc03c..28ec446e 100644 --- a/example/pages/popup/index.wxml +++ b/example/pages/popup/index.wxml @@ -1,8 +1,5 @@ - - - POPUP - - + + @@ -20,55 +17,73 @@ - - - - + + + + - + - - - + + + - - + - - - + + + - + - - - - 内容 - - + + + 内容 + - - - + + + - + - + diff --git a/example/pages/popup/index.wxss b/example/pages/popup/index.wxss index 26e9f409..06ec830f 100644 --- a/example/pages/popup/index.wxss +++ b/example/pages/popup/index.wxss @@ -1,30 +1,21 @@ -.popup-example--center { - border-radius: 4px; -} - -.popup-example--right .zan-popup__container { - top: 0; - bottom: 0; -} - -.popup-example--left .zan-popup__container { - top: 0; - bottom: 0; -} - -.popup-example--top .zan-popup__container { - left: 0; - right: 0; +.pop-example--top { + width: 100vw; padding: 15px; - background-color: rgba(0, 0, 0, 0.7); + background: rgba(0, 0, 0, 0.7); color: #fff; - font-size: 16px; -} -.popup-example--top .zan-popup__mask { - opacity: 0; + font-size: 12px; + text-align: center; } -.popup-example--bottom .zan-popup__container { - left: 0; - right: 0; +.pop-example__container { + overflow: hidden; + background: #fff; +} + +.pop-example__container--bottom { + width: 100vw; +} + +.pop-example__container--left, .pop-example__container--right { + height: 100vh; } diff --git a/packages/common/pop-manager/index.js b/packages/common/pop-manager/index.js new file mode 100644 index 00000000..26e392a8 --- /dev/null +++ b/packages/common/pop-manager/index.js @@ -0,0 +1,23 @@ +Component({ + properties: { + show: { + type: Boolean, + value: false + }, + overlay: { + type: Boolean, + value: true + }, + // 内容从哪个方向出,可选 center top bottom left right + type: { + type: String, + value: 'center' + } + }, + + methods: { + handleMaskClick() { + this.triggerEvent('clickmask', {}); + } + } +}); diff --git a/packages/common/pop-manager/index.json b/packages/common/pop-manager/index.json new file mode 100644 index 00000000..467ce294 --- /dev/null +++ b/packages/common/pop-manager/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/packages/common/pop-manager/index.pcss b/packages/common/pop-manager/index.pcss new file mode 100644 index 00000000..29694f01 --- /dev/null +++ b/packages/common/pop-manager/index.pcss @@ -0,0 +1,78 @@ +.pop { + visibility: hidden; +} +.pop--show { + visibility: visible; +} +.pop__mask { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 10; + background: rgba(0, 0, 0, 0.7); + display: none; +} +.pop__mask--hide { + background: transparent; +} +.pop__container { + position: fixed; + left: 50%; + top: 50%; + transform: translate3d(-50%, -50%, 0); + transform-origin: center; + transition: all 0.4s ease; + z-index: 11; + opacity: 0; +} +.pop--show .pop__container { + opacity: 1; +} +.pop--show .pop__mask { + display: block; +} + +/* 显示方向 */ +/* 左侧popup */ +.pop--left .pop__container { + left: 0; + top: 50%; + transform: translate3d(-100%, -50%, 0); +} +.pop--show.pop--left .pop__container { + transform: translate3d(0, -50%, 0); +} + +/* 右侧popup */ +.pop--right .pop__container { + right: 0; + top: 50%; + left: auto; + transform: translate3d(100%, -50%, 0); +} +.pop--show.pop--right .pop__container { + transform: translate3d(0, -50%, 0); +} + +/* 底部popup */ +.pop--bottom .pop__container { + top: auto; + left: 50%; + bottom: 0; + transform: translate3d(-50%, 100%, 0); +} +.pop--show.pop--bottom .pop__container { + transform: translate3d(-50%, 0, 0); +} + +/* 顶部popup */ +.pop--top .pop__container { + top: 0; + left: 50%; + transform: translate3d(-50%, -100%, 0); +} +.pop--show.pop--top .pop__container { + transform: translate3d(-50%, 0, 0); +} diff --git a/packages/common/pop-manager/index.wxml b/packages/common/pop-manager/index.wxml new file mode 100644 index 00000000..55602556 --- /dev/null +++ b/packages/common/pop-manager/index.wxml @@ -0,0 +1,11 @@ + + + + + + diff --git a/packages/icon/README.md b/packages/icon/README.md index 3d746567..5edddb91 100644 --- a/packages/icon/README.md +++ b/packages/icon/README.md @@ -8,6 +8,7 @@ "zan-icon": "path/to/zanui-weapp/dist/icon/index" } } +``` ### 代码演示 可以在任意位置上使用 zan-icon 标签。通过 type 可以控制 icon 显示的图标 diff --git a/packages/popup/README.md b/packages/popup/README.md index deda39f8..78091a24 100644 --- a/packages/popup/README.md +++ b/packages/popup/README.md @@ -1,54 +1,49 @@ ## Popup 轻提示 ### 使用指南 -在 app.wxss 中引入组件库所有样式 -```css -@import "path/to/zanui-weapp/dist/index.wxss"; -``` - -在需要使用的页面里使用特定的 wxml 结构 -```html - - - - - - - +在 index.json 中引入组件 +```json +{ + "usingComponents": { + "zan-popup": "path/to/zanui-weapp/dist/popup/index" + } +} ``` ### 代码演示 +可以在页面任意位置上使用 zan-popup 标签。通过 show 可以控制弹窗是否展示 +```html + +``` #### popup 动画 -popup 额外支持了 上下左右 四种动画方式,通过在顶层加指定的类即可。使用方式如下 +popup 额外支持了 上下左右 四种动画方式,通过增加 type 属性即可控制。使用方式如下 ```html - - - + - - - + - - - + - - - + ``` -#### 样式配置 -popup 中内容区域的样式,可以通过自定义 zan-popup__container 或者内部元素来实现。 -```html - - - - - - -``` +### 具体参数和事件 +#### 参数说明 +| 参数 | 说明 | 类型 | 默认值 | 必须 | +|-----------|-----------|-----------|-------------|-------------| +| show | 是否显示弹出层 | Boolean | false | | +| overlay | 是否显示遮罩层 | Boolean | false | | +| closeOnClickOverlay | 遮罩层点击时,是否触发关闭事件 | Boolean | true | | +| type | 弹出层动画方式, 可选`center`, `left`, `right`, `top`, `bottom` | String | center | | + +#### 事件说明 +| 事件名 | 说明 | 参数 | +|-----------|-----------|-----------| +| click-overlay | 遮罩层点击触发 | | +| close | 遮罩层关闭时触发 | | + + diff --git a/packages/popup/index.js b/packages/popup/index.js new file mode 100644 index 00000000..71bb69f4 --- /dev/null +++ b/packages/popup/index.js @@ -0,0 +1,35 @@ +Component({ + properties: { + show: { + type: Boolean, + value: false + }, + + overlay: { + type: Boolean, + value: true + }, + + closeOnClickOverlay: { + type: Boolean, + value: true + }, + + // 弹出方向 + type: { + type: String, + value: 'center' + } + }, + + methods: { + handleMaskClick() { + this.triggerEvent('click-overlay', {}); + + if (!this.data.closeOnClickOverlay) { + return; + } + this.triggerEvent('close', {}); + } + } +}); diff --git a/packages/popup/index.json b/packages/popup/index.json new file mode 100644 index 00000000..58663aee --- /dev/null +++ b/packages/popup/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "pop-manager": "../common/pop-manager/index" + } +} diff --git a/packages/popup/index.pcss b/packages/popup/index.pcss index e15be8e5..8b137891 100644 --- a/packages/popup/index.pcss +++ b/packages/popup/index.pcss @@ -1,75 +1 @@ -.zan-popup { - visibility: hidden; -} -.zan-popup--show { - visibility: visible; -} -.zan-popup__mask { - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 10; - background: rgba(0, 0, 0, 0.7); - display: none; -} -.zan-popup__container { - position: fixed; - left: 50%; - top: 50%; - background: #fff; - transform: translate3d(-50%, -50%, 0); - transform-origin: center; - transition: all 0.4s ease; - z-index: 11; - opacity: 0; -} -.zan-popup--show .zan-popup__container { - opacity: 1; -} -.zan-popup--show .zan-popup__mask { - display: block; -} -/* 左侧popup */ -.zan-popup--left .zan-popup__container { - left: 0; - top: auto; - transform: translate3d(-100%, 0, 0); -} -.zan-popup--show.zan-popup--left .zan-popup__container { - transform: translate3d(0, 0, 0); -} - -/* 右侧popup */ -.zan-popup--right .zan-popup__container { - right: 0; - top: auto; - left: auto; - transform: translate3d(100%, 0, 0); -} -.zan-popup--show.zan-popup--right .zan-popup__container { - transform: translate3d(0, 0, 0); -} - -/* 底部popup */ -.zan-popup--bottom .zan-popup__container { - top: auto; - left: auto; - bottom: 0; - transform: translate3d(0, 100%, 0); -} -.zan-popup--show.zan-popup--bottom .zan-popup__container { - transform: translate3d(0, 0, 0); -} - -/* 顶部popup */ -.zan-popup--top .zan-popup__container { - top: 0; - left: auto; - transform: translate3d(0, -100%, 0); -} -.zan-popup--show.zan-popup--top .zan-popup__container { - transform: translate3d(0, 0, 0); -} diff --git a/packages/popup/index.wxml b/packages/popup/index.wxml new file mode 100644 index 00000000..fa9fe642 --- /dev/null +++ b/packages/popup/index.wxml @@ -0,0 +1,8 @@ + + +