├── .eslintignore
├── .gitignore
├── .npmignore
├── LICENSE
├── README.md
├── babel.config.js
├── examples
├── App.vue
├── form.vue
├── form1.vue
└── main.js
├── lib
├── demo.html
├── img
│ └── iconfont.a3512340.svg
├── vue-layer.common.js
├── vue-layer.common.js.map
├── vue-layer.css
├── vue-layer.umd.js
├── vue-layer.umd.js.map
├── vue-layer.umd.min.js
└── vue-layer.umd.min.js.map
├── package-lock.json
├── package.json
├── packages
├── button
│ ├── index.js
│ └── src
│ │ └── button.vue
└── layer
│ ├── index.js
│ └── src
│ ├── alert.vue
│ ├── components
│ ├── button
│ │ ├── button.vue
│ │ └── css
│ │ │ ├── button.less
│ │ │ ├── mixin.less
│ │ │ └── var.less
│ ├── drag
│ │ └── drag.vue
│ └── input
│ │ └── input.vue
│ ├── css
│ ├── icon
│ │ ├── iconfont.css
│ │ ├── iconfont.eot
│ │ ├── iconfont.svg
│ │ ├── iconfont.ttf
│ │ ├── iconfont.woff
│ │ └── iconfont.woff2
│ ├── iconfont.css
│ ├── iconfont.eot
│ ├── iconfont.js
│ ├── iconfont.svg
│ ├── iconfont.ttf
│ ├── iconfont.woff
│ ├── iconfont.woff2
│ └── index.less
│ ├── helper
│ └── helper.js
│ ├── iframe.vue
│ ├── layer.js
│ ├── layer.vue
│ ├── loading.vue
│ ├── mask.vue
│ ├── msg.vue
│ ├── page.vue
│ ├── prompt.vue
│ └── tips.vue
├── public
└── index.html
├── vue.config.js
└── wx.jpg
/.eslintignore:
--------------------------------------------------------------------------------
1 | /lib/**.js
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | /dist
4 |
5 | # local env files
6 | .env.local
7 | .env.*.local
8 |
9 | # Log files
10 | npm-debug.log*
11 | yarn-debug.log*
12 | yarn-error.log*
13 |
14 | # Editor directories and files
15 | .idea
16 | .vscode
17 | *.suo
18 | *.ntvs*
19 | *.njsproj
20 | *.sln
21 | *.sw?
22 | /temp
23 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | *.json.gizp
3 | *.map
4 | tmp
5 | temp
6 | /examples/
7 | /packages/
8 | /public/
9 | babel.config.js
10 | vue.config.js
11 | *.jpg
12 | .eslintignore
13 |
14 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017-present 左盐
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 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | [](https://www.npmjs.com/package/vue-layer)
2 | [](https://www.npmjs.com/package/vue-layer)
3 | [](https://www.npmjs.com/package/vue-layer)
4 | [](https://www.npmjs.com/package/vue-layer)
5 | ## vue-layer
6 | install
7 | ```shell
8 | npm install vue-layer
9 | ```
10 | // "eslint:recommended"
11 | ## Quick Start
12 |
13 | 在程序入口添加
14 | ```js
15 | import Vue from 'vue';
16 | import layer from 'vue-layer'
17 | import 'vue-layer/lib/vue-layer.css';
18 |
19 | Vue.prototype.$layer = layer(Vue);
20 | ```
21 | 全局参数重置
22 | ```js
23 | import Vue from 'vue';
24 | import layer from 'vue-layer'
25 | Vue.prototype.$layer = layer({
26 | msgtime: 3,//目前只有一项,即msg方法的默认消失时间,单位:秒
27 | });
28 | ```
29 | 调用
30 | ```js
31 | this.$layer.alert("找不到对象!");
32 | ```
33 |
34 | ## Attribut
35 | ```js
36 | {
37 | type: 0, //0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)
38 | title: '信息',
39 | content: '',
40 | area: 'auto',
41 | offset: 'auto',
42 | icon: -1,
43 | btn: '确定',
44 | time: 0,
45 | shade: true,//是否显示遮罩
46 | yes: '',
47 | cancel: '',
48 | tips: [0,{}],//支持上右下左四个方向,通过1-4进行方向设定,可以设定tips: [1, '#c00']
49 | tipsMore: false,//是否允许多个tips
50 | shadeClose: true,//点击遮罩是否关闭
51 | maxmin: true,//开启最大化最小化
52 | scrollbar: true, //是否允许浏览器出现滚动条:默认是允许
53 | resize: false //是否允许拉伸,默认是不允许
54 | }
55 | ```
56 | ## Method
57 | ```js
58 | layer.alert(content, [options, yes]);
59 | // options和yes可以省略, 如果您不愿意写options,则可以直接写确定按钮的函数,即yes
60 | // content 可以为html
61 | //yes如果是个function,这会自动添加参数layerid,
62 | (layerid)=>{
63 | this.$layer.close(layerid);
64 | }
65 | ```
66 |
67 | ```js
68 | layer.confirm(content, [options, yes, cancel]);
69 | // options,yes和cancel可以省略, 如果您不愿意写options,则可以直接写确定按钮的函数,即yes,或者覆盖默认的cancel方法。PS:yes和cancel方法不能互换
70 | //content 可以为html
71 | //yes,cancel如果是个function,这会自动添加参数layerid,
72 | (layerid)=>{
73 | this.$layer.close(layerid);
74 | }
75 | ```
76 |
77 | ```js
78 | layer.loadding(option);
79 | // options ={time:3},3秒自动关闭
80 | //options = {content:'请等待'} //可传入文字
81 | ```
82 |
83 | ```js
84 | layer.msg(content, [options, end]);
85 | // options和end可以省略, 如果您不愿意写options,则可以直接写时间到期的回调即可,即end方法
86 | // 默认msg的关闭时间为1.5秒
87 | // content 可以为html
88 | ```
89 |
90 |
91 | ```js
92 | layer.prompt(options, yes);
93 | //特殊参数: value 要回显的值
94 | //formType: 1text,2password,3textarea
95 | ```
96 |
97 |
98 | ```js
99 | layer.tips(content, follow, options);
100 | //content 可以为html
101 | //follow对css选择器,用来定位目标
102 | ```
103 | ```js
104 | layer.iframe({
105 | content: {
106 | content: componentName, //传递的组件对象
107 | parent: this,//当前的vue对象
108 | data:{}//props
109 | },
110 | area:['800px','600px'],
111 | title: 'title',
112 | cancel:()=>{//关闭事件
113 | alert('关闭iframe');
114 | }
115 | });
116 | // data参数可认为是componentName的props,同时 该方法会自动添加一个key为layerid的值, 该值为创建层的id, 可以直接用来关闭该层
117 | // options参数直接写到json里即可,比如title
118 | ```
119 | ```js
120 | layer.close(id);
121 | ```
122 | ```js
123 | layer.closeAll(type);
124 | ```
125 |
126 | ```js
127 | //弹窗最大化
128 | layer.full(layerid);
129 | ```
130 | ```js
131 | //弹窗最小化
132 | layer.min(layerid);
133 | ```
134 | ```js
135 | //还原弹窗
136 | layer.restore(layerid);
137 | ```
138 |
139 |
140 |
141 |
142 | ### 关于this.$layer.iframe
143 | 其实使用iframe层,除了操作方便外,主要的目的是隔离代码, 降低代码复杂度。而在vue中,组件就是功能块的基本单位了,所以vue-layer中并不存在iframe的DOM元素,这里用的都是组件。 这里的content有三个参数:
144 |
145 | ##### content:
146 | 此参数为组件对象, 比如
147 | ```js
148 | import editFrom from './edir-form.vue';
149 | ```
150 | 此处content就为editFrom即可。
151 |
152 | ##### parent:
153 |
154 | 此参数其实就是当前调用layer的vue对象, 即this即可。在editForm中可以直接使用, this.$parent来获取调用layer的vue对象,然后父子传值神马的,就很easy,当然也可以直接使用vuex,就不用this.$parent了,另外自动注入了原始数据的浅拷贝lydata,也可以直接赋值这个数据来同步父对象的数据
155 |
156 | ##### data:
157 | 此参数可认为是editForm的props,传递到iframe后是这个数据的深拷贝,改变数据不会影响来源数据,然后你懂得。
158 | > * 该方法会自动添加一个key为layerid的值, 该值为创建层的id, 可以直接使用
159 | > * 该方法会自动添加一个key为lydata的值, 该值为data的浅拷贝, 当iframe要更改父窗口传递的数据的时候,可以直接使用lydata来修改,对于表单使用非常方便
160 |
161 | 结果即为:
162 | ```js
163 | methods:{
164 | eidt() {
165 | this.$layer.iframe({
166 | content: {
167 | content: editForm, //传递的组件对象
168 | parent: this,//当前的vue对象
169 | data:{
170 | info:{a:1}
171 | }//props
172 | },
173 | area:['800px','600px'],
174 | title:"editForm"
175 | });
176 | }
177 | }
178 | ```
179 | iframe组件中
180 | ```js
181 | export default {
182 | data() {
183 | return {
184 | form: {
185 | }
186 | };
187 | },
188 | props: {
189 | info: {
190 | type: Object,
191 | default: () => {
192 | return {};
193 | }
194 | },
195 | layerid: {
196 | type: String,
197 | default: ""
198 | },
199 | lydata: {
200 | type: Object,
201 | default: () => {
202 | return {};
203 | }
204 | },
205 | lyoption: {
206 | type: Object,
207 | default: () => {
208 | return {};
209 | }
210 | }
211 | },
212 | methods: {
213 | onSubmit() {
214 | this.$layer.msg("提交成功", () => {
215 | this.lydata.info.name = this.form.name;
216 | this.$layer.close(this.layerid);
217 | });
218 | },
219 | cancel() {
220 | this.$layer.close(this.layerid);
221 | }
222 | },
223 | mounted() {
224 | this.form = this.info
225 | }
226 | };
227 | ```
228 |
229 |
230 | ### 样式调整
231 | 该包的css都为vl-notice开头, 需要重写css样式,覆盖即可
232 |
233 | ### 觉的作者付出的时间和精力有价值,就给作者买杯咖啡吧
234 |
235 |
236 | ### 入群交流
237 |
238 |
239 |
240 |
241 |
242 |
243 | ### 更新日志
244 |
245 | 更新日志
--------------------------------------------------------------------------------
/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | '@vue/app'
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/examples/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
alert
4 |
提交
5 |
confirm
6 |
删除
7 |
msg
8 |
msg
9 |
带回调
10 |
loading
11 |
默认样式
12 |
prompt
13 |
弹出
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
tips
28 |
上
29 |
右
30 |
下
31 |
左-自定义样式
32 |
page
33 | {{ this.info }}
34 |
自定义
35 |
36 |
37 |
表格测试
38 |
39 |
40 |
41 |
42 | {{ scope.row.date }}
43 |
44 |
45 |
46 |
47 |
48 | 姓名: {{ scope.row.name }}
49 | 住址: {{ scope.row.address }}
50 |
51 | {{ scope.row.name }}
52 |
53 |
54 |
55 |
56 |
57 |
58 | 编辑
59 | 删除
60 | 上
61 |
62 |
63 |
64 |
65 |
66 |
67 |
265 |
266 |
276 |
--------------------------------------------------------------------------------
/examples/form.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 | -
25 |
26 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | 立即创建
56 | 新弹窗
57 | 取消
58 |
59 |
60 |
61 |
62 |
173 |
174 |
--------------------------------------------------------------------------------
/examples/form1.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | 立即创建
22 | 新弹窗
23 | 取消
24 |
25 |
26 |
27 |
28 |
118 |
119 |
--------------------------------------------------------------------------------
/examples/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './App.vue'
3 | import layer from '../packages/layer/index';
4 | import ElementUI from 'element-ui';
5 | import 'element-ui/lib/theme-chalk/index.css';
6 |
7 | Vue.prototype.$layer = layer(Vue);
8 | Vue.use(ElementUI);
9 |
10 | Vue.config.productionTip = false
11 |
12 | new Vue({
13 | render: h => h(App),
14 | }).$mount('#app');
--------------------------------------------------------------------------------
/lib/demo.html:
--------------------------------------------------------------------------------
1 |
2 |
vue-layer demo
3 |
4 |
5 |
6 |
7 |
8 |
11 |
--------------------------------------------------------------------------------
/lib/img/iconfont.a3512340.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
48 |
--------------------------------------------------------------------------------
/lib/vue-layer.css:
--------------------------------------------------------------------------------
1 | .notify-btn[data-v-56ca3248]{position:relative;display:inline-block;padding:6px 10px;margin-bottom:0;font-size:14px;min-width:10px;text-align:center;white-space:nowrap;vertical-align:top;cursor:pointer;background-color:#f7f7f7;border:1px solid #dddee1;border-radius:4px;outline:0;-webkit-appearance:none}.notify-btn.active[data-v-56ca3248],.notify-btn[data-v-56ca3248]:active{color:inherit;background-color:#e3e3e3}.btn-default[data-v-56ca3248]{color:#fff;background-color:#f7f7f7;border:1px solid #eaeaea;color:#000}.btn-default.active[data-v-56ca3248],.btn-default.hover[data-v-56ca3248],.btn-default[data-v-56ca3248]:active,.btn-default[data-v-56ca3248]:hover{color:#fff;background-color:#e3e3e3}.btn-default[data-v-56ca3248]:hover{color:#000}.notify-btn-primary[data-v-56ca3248]{color:#fff;background-color:#20a0ff;border:1px solid #0695ff}.notify-btn-primary.active[data-v-56ca3248],.notify-btn-primary.hover[data-v-56ca3248],.notify-btn-primary[data-v-56ca3248]:active,.notify-btn-primary[data-v-56ca3248]:hover{color:#fff;background-color:#008df6}.notify-btn-success[data-v-56ca3248]{color:#fff;background-color:#449d44;border:1px solid #3c8b3c}.notify-btn-success.active[data-v-56ca3248],.notify-btn-success.hover[data-v-56ca3248],.notify-btn-success[data-v-56ca3248]:active,.notify-btn-success[data-v-56ca3248]:hover{color:#fff;background-color:#388138}.notify-btn-info[data-v-56ca3248]{color:#fff;background-color:#31b0d5;border:1px solid #28a1c4}.notify-btn-info.active[data-v-56ca3248],.notify-btn-info.hover[data-v-56ca3248],.notify-btn-info[data-v-56ca3248]:active,.notify-btn-info[data-v-56ca3248]:hover{color:#fff;background-color:#2597b8}.notify-btn-warning[data-v-56ca3248]{color:#fff;background-color:#ec971f;border:1px solid #df8a13}.notify-btn-warning.active[data-v-56ca3248],.notify-btn-warning.hover[data-v-56ca3248],.notify-btn-warning[data-v-56ca3248]:active,.notify-btn-warning[data-v-56ca3248]:hover{color:#fff;background-color:#d18112}.notify-btn-danger[data-v-56ca3248]{color:#fff;background-color:#d9534f;border:1px solid #d43f3a}.notify-btn-danger.active[data-v-56ca3248],.notify-btn-danger.hover[data-v-56ca3248],.notify-btn-danger[data-v-56ca3248]:active,.notify-btn-danger[data-v-56ca3248]:hover{color:#fff;background-color:#d2322d}.btn-small[data-v-56ca3248]{font-size:12px;min-width:31px;min-height:14px;padding:6px 9px}.vl-input[data-v-6c69dd9a]{height:35px;line-height:35px;padding:0 15px}.vl-input[data-v-6c69dd9a],.vl-textarea[data-v-6c69dd9a]{width:100%;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;color:#606266;display:inline-block;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);-webkit-box-sizing:border-box;box-sizing:border-box}.vl-textarea[data-v-6c69dd9a]{line-height:22px;padding:10px;word-break:break-all;height:calc(100% - 70px)}.prompt-btn[data-v-6c69dd9a]{margin-top:30px;text-align:right}.prompt-btn button[data-v-6c69dd9a]{margin-right:20px}@font-face{font-family:vlayer;src:url(data:application/vnd.ms-fontobject;base64,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BQX0tNj+4gUFAR7Y2AEdBgb+49gSFRUjFQEBFRESFRUjFRUxBfS0tfQEBPS1tPQDowX+4tjY/uMGBgEd2NgBHuUVEv7IERUVEQE4EhX+LBUkFBQkFQAAAAAE/+3/bQQTA5MADwATACIAMQAAASEOAQcRHgEXIT4BNxEuAQMhESEBPgE3IRU3JxUhDgEHFTMXIT4BNzUjFQ4BByE1BxcDv/yCJC4BAS4kA34kLgEBLiT8ggN+/WEBFxIBWY+P/qc1RgFSPQFZNUYBUgEXEv6nj48DkgEuJPyCJC4BAS4kA34kLvwwA37+qhIXAUNsbUQBRjV51gJGNXh4EhcBQ2xtAAAEAAD/ggP+A34AFwAvAEcAXwAAFzMyFhQGByEuAScRPgEyFh0BATYyFhQHASMiJjQ2NyEeARcRDgEiJj0BAQYiJjQ3ATU0NjIWFxEOAQchLgE0NjsBASY0NjIXARUUBiImJxE+ATchHgEUBisBARYUBiInf8sPFRUP/t0QFAEBFB8VAQAMHRUKAgPMDxUVDwEjEBQBARQfFf8ACx4VCgE0FR8UAQEUEP7dDxUVD8v/AAoVHgv9lhUfFAEBFBABIw8VFQ/LAQAKFR0MNRUfFAEBFBABIw8VFQ/MAQEKFR4LAmoVHxQBARQQ/t0PFRUPy/8AChUdDP3Kyw8VFQ/+3RAUAQEUHxUBAAseFQoCAssPFRUPASMQFAEBFB8V/wAMHRUKAAAAAAASAN4AAQAAAAAAAAAVAAAAAQAAAAAAAQAGABUAAQAAAAAAAgAHABsAAQAAAAAAAwAGACIAAQAAAAAABAAGACgAAQAAAAAABQALAC4AAQAAAAAABgAGADkAAQAAAAAACgArAD8AAQAAAAAACwATAGoAAwABBAkAAAAqAH0AAwABBAkAAQAMAKcAAwABBAkAAgAOALMAAwABBAkAAwAMAMEAAwABBAkABAAMAM0AAwABBAkABQAWANkAAwABBAkABgAMAO8AAwABBAkACgBWAPsAAwABBAkACwAmAVEKQ3JlYXRlZCBieSBpY29uZm9udAp2bGF5ZXJSZWd1bGFydmxheWVydmxheWVyVmVyc2lvbiAxLjB2bGF5ZXJHZW5lcmF0ZWQgYnkgc3ZnMnR0ZiBmcm9tIEZvbnRlbGxvIHByb2plY3QuaHR0cDovL2ZvbnRlbGxvLmNvbQAKAEMAcgBlAGEAdABlAGQAIABiAHkAIABpAGMAbwBuAGYAbwBuAHQACgB2AGwAYQB5AGUAcgBSAGUAZwB1AGwAYQByAHYAbABhAHkAZQByAHYAbABhAHkAZQByAFYAZQByAHMAaQBvAG4AIAAxAC4AMAB2AGwAYQB5AGUAcgBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAAAAAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAQIBAwEEAQUBBgEHAQgBCQAFd2VudGkFZXJyb3IHc3VjY2VzcwRtaW5pB3dhcm5pbmcIaHVhbnl1YW4DbWF4AAAA);src:url(data:application/vnd.ms-fontobject;base64,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BQX0tNj+4gUFAR7Y2AEdBgb+49gSFRUjFQEBFRESFRUjFRUxBfS0tfQEBPS1tPQDowX+4tjY/uMGBgEd2NgBHuUVEv7IERUVEQE4EhX+LBUkFBQkFQAAAAAE/+3/bQQTA5MADwATACIAMQAAASEOAQcRHgEXIT4BNxEuAQMhESEBPgE3IRU3JxUhDgEHFTMXIT4BNzUjFQ4BByE1BxcDv/yCJC4BAS4kA34kLgEBLiT8ggN+/WEBFxIBWY+P/qc1RgFSPQFZNUYBUgEXEv6nj48DkgEuJPyCJC4BAS4kA34kLvwwA37+qhIXAUNsbUQBRjV51gJGNXh4EhcBQ2xtAAAEAAD/ggP+A34AFwAvAEcAXwAAFzMyFhQGByEuAScRPgEyFh0BATYyFhQHASMiJjQ2NyEeARcRDgEiJj0BAQYiJjQ3ATU0NjIWFxEOAQchLgE0NjsBASY0NjIXARUUBiImJxE+ATchHgEUBisBARYUBiInf8sPFRUP/t0QFAEBFB8VAQAMHRUKAgPMDxUVDwEjEBQBARQfFf8ACx4VCgE0FR8UAQEUEP7dDxUVD8v/AAoVHgv9lhUfFAEBFBABIw8VFQ/LAQAKFR0MNRUfFAEBFBABIw8VFQ/MAQEKFR4LAmoVHxQBARQQ/t0PFRUPy/8AChUdDP3Kyw8VFQ/+3RAUAQEUHxUBAAseFQoCAssPFRUPASMQFAEBFB8V/wAMHRUKAAAAAAASAN4AAQAAAAAAAAAVAAAAAQAAAAAAAQAGABUAAQAAAAAAAgAHABsAAQAAAAAAAwAGACIAAQAAAAAABAAGACgAAQAAAAAABQALAC4AAQAAAAAABgAGADkAAQAAAAAACgArAD8AAQAAAAAACwATAGoAAwABBAkAAAAqAH0AAwABBAkAAQAMAKcAAwABBAkAAgAOALMAAwABBAkAAwAMAMEAAwABBAkABAAMAM0AAwABBAkABQAWANkAAwABBAkABgAMAO8AAwABBAkACgBWAPsAAwABBAkACwAmAVEKQ3JlYXRlZCBieSBpY29uZm9udAp2bGF5ZXJSZWd1bGFydmxheWVydmxheWVyVmVyc2lvbiAxLjB2bGF5ZXJHZW5lcmF0ZWQgYnkgc3ZnMnR0ZiBmcm9tIEZvbnRlbGxvIHByb2plY3QuaHR0cDovL2ZvbnRlbGxvLmNvbQAKAEMAcgBlAGEAdABlAGQAIABiAHkAIABpAGMAbwBuAGYAbwBuAHQACgB2AGwAYQB5AGUAcgBSAGUAZwB1AGwAYQByAHYAbABhAHkAZQByAHYAbABhAHkAZQByAFYAZQByAHMAaQBvAG4AIAAxAC4AMAB2AGwAYQB5AGUAcgBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAAAAAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAQIBAwEEAQUBBgEHAQgBCQAFd2VudGkFZXJyb3IHc3VjY2VzcwRtaW5pB3dhcm5pbmcIaHVhbnl1YW4DbWF4AAAA#iefix) format("embedded-opentype"),url("data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAV0AAsAAAAAC0gAAAUlAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCDdAqJEIc1ATYCJAMgCxIABCAFhFUHYxuSCRGVpB+Q/TiwG6/2sC8uo0XES9qRzSd4INxe3+UuEMxrSNVpZxJmjtbN+X8mCjPlzz2HczZgo06oktwTefRZdknaEDwLJViZRwYbDsUXYvL/jpVuPl9bzG+LtiTzZ6NybKPyio60nke0FciBN98J45lI518yoSleXGfdDAE4SdAJkbn4yiwGCmUSqBs3euRgjIIb1SESGDZbw4kKsQkdQ1utvQhsjN5ffEMPYYCGLlEXuXbERcM4v6Y3eOUiaxH95FZEs7sgMNgSJNAJUOxe0xheg0wynZA4Z6WKAYBf/qKEml6L1TrUirVhtTkNXsuqjMIsNhrCv3igI5DYUGjYQdhQZjcJh2XtUNONicgSgxMBSwc4kbAU4cQGyzA4UbDMgRIaNHg7sANguBP8QBMQ14L4DGVNs1EXq3wNi5Xb3VI4NGdUicljShx+5fM1Uhef++bn2be+yFUbCpXarEolX60W3nor9+abA/Q1sovKa+vFwVfeei2+7cZ2px5tRmlTsfeWjvVPJCuVfs7dvfVaXLfm1FAxcBubXTfsennD8GsHV2r5FmwPvvn5nO0iIeHmPw9Htzl3RMP5G3Ijr+sbwD9+zYVztpjOrjmFduhkU7mnrpijgzewuG6u/84Hm9n2P9QrcM8jSfuBh2f57YFJe+vbeijkcT/5ZgpXzvNMtaVwsutUK7fI5nKuteVFp8LuHXVRubO+z6DvzspB4ZnONXWL62Oe7eWItu0UmBDZbWCx0WKxB51Tf5Ixlyu/o8IiM1jkQTen/iRjTmdue2WDaErOrahEQlWEOLT6rMkztXyP+u03BcM9jBji137NFKUiF/oyybRP+S4D5Xk9cN+LtrTfTJj+NL/13FmWmKWSmT7N9n0X2ZDjmyh9/7aeSulvB4SR9dzk2Xr/Q+rffxUMDzFCz+XGwRa7d7cYg2ashZ8qmdLfEeKWvaO42XP09vvUH3+o+4gQWj0/wZf9VwWGGrcuZ8/eHvPmBUM9cd779ZSvkd3uVL/8Iu+Qd5Lxzj6BWN2p7mh2mUerKh5XVRHHm1V1Z7Nm9iLVZvHq58FM8PRApmWG00XG/0ZB0spsabba7axftizo9oFcID/oFiU089UF6rIHcmKEv2RuGLthXKZ0/kUXqdnXn/1W6YI4Puv6WfWMBekXrt9vMz9u+WNPX0tvOpnxvWhxXzyT2KONfnGyxQuWVU5k4nt79vLvTntb+nr+2PJjE5w9qhLl0cKxN45H3sdAAKxl8l85D6xFCrkYQP4m7pvdbrG05CzrO2v8LCS3grVE/i8X/BXuxq/K4s//BvoOf7uuAnincJaJhrgKg4aB5ovv7KiD851+rlMeo9NJBn21m1dgGGSOlAacEgeL4kF/u7RGvM38t6yRDDR2TUGyacFVwnagc+litIn1DIBTRyenu4QMpkQf6OAjAMHtJGi87gDJ7TGuEr4EuqhPsHH7AZzy/i/o0ibXbS4CkoR72L1AT61h+qS0KYq8YLhFnhUJU40zPFJX7K2BtmpKgRs0VrfpIbHwLiUGLFgN11u5HSplwQU7IE2VSMlt65o1vVJFrR5tmAJEJGgP7LwAPcoymDs82ZhBIV6g4DYIc7myODSOZOZHCkf95iuDVqXp5N6YTTL20K1RwXWSBBkwqcDSbL0+GSMOCDIWcM3GYV5JJRWxQcrZqmUp5muuLsqqn10jmEI9tZGRmWZl5+Tm0T+a1M8xBBuWMVOKMc50b/rlEwmuxfCVyMS8mLKpJs+jEQAAAA==") format("woff2"),url(data:font/woff;base64,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) format("woff"),url(data:font/ttf;base64,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) format("truetype"),url(img/iconfont.a3512340.svg#vlayer) format("svg")}.vlayer{font-family:vlayer!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.vlicon-wenti:before{content:"\e617"}.vlicon-error:before{content:"\e67a"}.vlicon-success:before{content:"\e62a"}.vlicon-mini:before{content:"\e664"}.vlicon-warning:before{content:"\e605"}.vlicon-huanyuan:before{content:"\e658"}.vlicon-max:before{content:"\e70e"}[class^=vl-notify]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0;margin:0;outline:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@-webkit-keyframes fadein{0%{opacity:0;-webkit-transform:scale(.5) translate(-100%,-100%);transform:scale(.5) translate(-100%,-100%)}to{opacity:1;-webkit-transform:scale(1) translate(-50%,-50%);transform:scale(1) translate(-50%,-50%)}}@keyframes fadein{0%{opacity:0;-webkit-transform:scale(.5) translate(-100%,-100%);transform:scale(.5) translate(-100%,-100%)}to{opacity:1;-webkit-transform:scale(1) translate(-50%,-50%);transform:scale(1) translate(-50%,-50%)}}.vl-html-scrollbar-hidden{overflow-y:hidden!important}.vl-notify{position:fixed;z-index:1000;-webkit-box-sizing:border-box;box-sizing:border-box}.vl-notify,.vl-notify.vl-notify-msg-p{left:50%;top:50%;-webkit-transform:perspective(1px) translate(-50%,-50%);transform:perspective(1px) translate(-50%,-50%);-ms-transform:perspective(1px) translate(-50%,-50%)}.vl-notify.vl-notify-msg-p{display:inline;height:0;background-color:rgba(0,0,0,.6)}.vl-notify.vl-notify-tips-p{display:inline;height:0;top:0;left:0;position:absolute}.vl-notify.vl-notify-main{min-width:250px;max-width:1500px;min-height:100px;background-color:#fff;border:1px solid #eee;-webkit-box-shadow:1px 1px 15px rgba(0,0,0,.3);box-shadow:1px 1px 15px rgba(0,0,0,.3);border-radius:2px;padding-bottom:5px}.vl-notify .vl-notify-content{min-height:65px;padding:20px;max-height:calc(100% - 42px)}.vl-notify .vl-notify-content iframe{width:100%;height:100%;border:none;overflow:none}.vl-notify .vl-notify-btns{text-align:right;padding:0 8px 0 0}.vl-notify.vl-notify-alert{-webkit-animation:fadein .3s;animation:fadein .3s;max-width:500px}.vl-notify.vl-notify-alert h2.vl-notice-title{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;height:42px;line-height:43px;background-color:#f8f8f8;border-bottom:1px solid #eee;font-size:14px;padding-left:15px;cursor:move;-moz-user-select:-moz-none;-webkit-user-select:none;margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;z-index:100000;word-break:keep-all;overflow:hidden}.vl-notify.vl-notify-alert h2.vl-notice-title .lv-title{text-overflow:ellipsis;-webkit-box-flex:1;-ms-flex:1;flex:1;height:100%}.vl-notify.vl-notify-alert h2.vl-notice-title .icon-remove{position:absolute;right:10px;font-size:14px;text-shadow:0 1px 0 hsla(0,0%,100%,.5);top:0;font-weight:400;cursor:pointer;color:#333;font-style:normal}.vl-notify.vl-notify-alert h2.vl-notice-title .icon-remove:before{content:"\2716"}.vl-notify.vl-notify-alert h2.vl-notice-title .lv-icon-maxmini{min-width:10px;font-size:14px;text-shadow:0 1px 0 hsla(0,0%,100%,.5);font-weight:400;cursor:pointer;color:#333;font-style:normal;margin-right:25px}.vl-notify.vl-notify-alert h2.vl-notice-title .lv-icon-maxmini i{margin:0 3px;font-size:14px;text-shadow:0 1px 0 hsla(0,0%,100%,.5);font-weight:400;cursor:pointer;color:#333;font-style:normal}.vl-notify.vl-notify-alert .vl-notify-content{display:-webkit-box;display:-ms-flexbox;display:flex}.vl-notify.vl-notify-alert .vl-notify-content .vl-notify-content-div{margin-left:10px;-webkit-box-flex:1;-ms-flex:1;flex:1}.vl-notify.vl-notify-iframe{max-width:2000px}.vl-notify.vl-notify-iframe .vl-notify-content{padding:0}.vl-notify.vl-notify-loading{-webkit-animation:fadein .2s;animation:fadein .2s;display:inline-block;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);min-width:50px;min-height:50px;display:none}.vl-notify.vl-notify-loading:last-child{display:inline-block!important}@-webkit-keyframes loading{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loading{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.vl-notify.vl-notify-loading span{display:inline-block;width:30px;height:30px;border:2px solid #f3f3f3;border-top:2px solid #999;border-right:2px solid #999;border-radius:50%;-webkit-animation:loading 1s linear infinite;animation:loading 1s linear infinite}.vl-notify.vl-notify-msg{-webkit-animation:fadein .2s;animation:fadein .2s;min-width:50px;display:inline;min-height:44px;font-size:14px;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);background-color:rgba(0,0,0,.6);color:#fff;padding:12px 25px;text-align:center;border-radius:5px}.vl-notify.vl-notify-msg.vl-notify-loading{min-height:50px}.vl-notify.vl-notify-msg.vl-notify-loading span{width:20px;height:20px;vertical-align:middle;margin-right:7px}.vl-notify.vl-notify-msg.vl-notify-loading i{font-style:normal;font-size:14px}.vl-notify.vl-notify-tips{min-width:50px;max-width:400px;display:inline;min-height:32px;position:absolute;left:-50%;background-color:#303133;color:#fff;padding:6px 12px;border-radius:5px;-webkit-transform:none;transform:none}.vl-notify.vl-notify-tips:after{content:" ";border:10px solid #303133;position:absolute;display:inline-block}.vl-notify.vl-notify-tips-0:after{border-bottom-color:transparent!important;left:15px;bottom:-8px}.vl-notify.vl-notify-tips-0:after,.vl-notify.vl-notify-tips-1:after{border-top-color:transparent!important;border-right-color:transparent!important}.vl-notify.vl-notify-tips-1:after{border-left-color:transparent!important;left:-8px;top:0}.vl-notify.vl-notify-tips-2:after{border-top-color:transparent!important;border-left-color:transparent!important;border-bottom-color:transparent!important;left:15px;top:-8px}.vl-notify.vl-notify-tips-3{max-width:300px}.vl-notify.vl-notify-tips-3:after{border-top-color:transparent!important;border-left-color:transparent!important;border-right-color:transparent!important;right:-8px;top:0}.vl-notify .vl-drag-resize{display:inline-block;width:17px;height:17px;position:absolute;right:0;bottom:0;z-index:100000;cursor:nw-resize;background:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg' width='17' height='17'%3E%3Cpath d='M765.558 510.004a93.65 93.65 0 10191.665 0 93.65 93.65 0 10-191.665 0zm0 311.456a93.65 93.65 0 10191.665 0 93.65 93.65 0 10-191.665 0zm-343.401 0a93.65 93.65 0 10191.665 0 93.65 93.65 0 10-191.665 0zm0-311.456a93.65 93.65 0 10191.665 0 93.65 93.65 0 10-191.665 0zM765.558 202.54a93.65 93.65 0 10191.665 0 93.65 93.65 0 10-191.665 0zM66.777 821.46a93.65 93.65 0 10191.665 0 93.65 93.65 0 10-191.665 0z' fill='%23BFBFBF'/%3E%3C/svg%3E") no-repeat 50%}.vl-notify-mask{background-color:#ccc;opacity:.4;position:fixed;top:0;left:0;width:100%;height:100%}
--------------------------------------------------------------------------------
/lib/vue-layer.umd.min.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-layer"]=e():t["vue-layer"]=e()})("undefined"!==typeof self?self:this,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"===typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t["default"]}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s="fb15")}({"00ee":function(t,e,n){var r=n("b622"),o=r("toStringTag"),i={};i[o]="z",t.exports="[object z]"===String(i)},"0366":function(t,e,n){var r=n("1c0b");t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 0:return function(){return t.call(e)};case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},"06cf":function(t,e,n){var r=n("83ab"),o=n("d1e7"),i=n("5c6c"),c=n("fc6a"),a=n("c04e"),s=n("5135"),u=n("0cfb"),f=Object.getOwnPropertyDescriptor;e.f=r?f:function(t,e){if(t=c(t),e=a(e,!0),u)try{return f(t,e)}catch(n){}if(s(t,e))return i(!o.f.call(t,e),t[e])}},"0cb2":function(t,e,n){var r=n("7b0b"),o=Math.floor,i="".replace,c=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,a=/\$([$&'`]|\d{1,2})/g;t.exports=function(t,e,n,s,u,f){var l=n+t.length,p=s.length,d=a;return void 0!==u&&(u=r(u),d=c),i.call(f,d,(function(r,i){var c;switch(i.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,n);case"'":return e.slice(l);case"<":c=u[i.slice(1,-1)];break;default:var a=+i;if(0===a)return r;if(a>p){var f=o(a/10);return 0===f?r:f<=p?void 0===s[f-1]?i.charAt(1):s[f-1]+i.charAt(1):r}c=s[a-1]}return void 0===c?"":c}))}},"0cfb":function(t,e,n){var r=n("83ab"),o=n("d039"),i=n("cc12");t.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},"14c3":function(t,e,n){var r=n("c6b6"),o=n("9263");t.exports=function(t,e){var n=t.exec;if("function"===typeof n){var i=n.call(t,e);if("object"!==typeof i)throw TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==r(t))throw TypeError("RegExp#exec called on incompatible receiver");return o.call(t,e)}},"159b":function(t,e,n){var r=n("da84"),o=n("fdbc"),i=n("17c2"),c=n("9112");for(var a in o){var s=r[a],u=s&&s.prototype;if(u&&u.forEach!==i)try{c(u,"forEach",i)}catch(f){u.forEach=i}}},"17c2":function(t,e,n){"use strict";var r=n("b727").forEach,o=n("a640"),i=o("forEach");t.exports=i?[].forEach:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}},"19aa":function(t,e){t.exports=function(t,e,n){if(!(t instanceof e))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return t}},"1be4":function(t,e,n){var r=n("d066");t.exports=r("document","documentElement")},"1c0b":function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},"1c7e":function(t,e,n){var r=n("b622"),o=r("iterator"),i=!1;try{var c=0,a={next:function(){return{done:!!c++}},return:function(){i=!0}};a[o]=function(){return this},Array.from(a,(function(){throw 2}))}catch(s){}t.exports=function(t,e){if(!e&&!i)return!1;var n=!1;try{var r={};r[o]=function(){return{next:function(){return{done:n=!0}}}},t(r)}catch(s){}return n}},"1cdc":function(t,e,n){var r=n("342f");t.exports=/(iphone|ipod|ipad).*applewebkit/i.test(r)},"1d80":function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},"1dde":function(t,e,n){var r=n("d039"),o=n("b622"),i=n("2d00"),c=o("species");t.exports=function(t){return i>=51||!r((function(){var e=[],n=e.constructor={};return n[c]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},2005:function(t,e,n){},2266:function(t,e,n){var r=n("825a"),o=n("e95a"),i=n("50c4"),c=n("0366"),a=n("35a1"),s=n("2a62"),u=function(t,e){this.stopped=t,this.result=e};t.exports=function(t,e,n){var f,l,p,d,v,h,m,y=n&&n.that,g=!(!n||!n.AS_ENTRIES),b=!(!n||!n.IS_ITERATOR),x=!(!n||!n.INTERRUPTED),w=c(e,y,1+g+x),E=function(t){return f&&s(f),new u(!0,t)},S=function(t){return g?(r(t),x?w(t[0],t[1],E):w(t[0],t[1])):x?w(t,E):w(t)};if(b)f=t;else{if(l=a(t),"function"!=typeof l)throw TypeError("Target is not iterable");if(o(l)){for(p=0,d=i(t.length);d>p;p++)if(v=S(t[p]),v&&v instanceof u)return v;return new u(!1)}f=l.call(t)}h=f.next;while(!(m=h.call(f)).done){try{v=S(m.value)}catch(T){throw s(f),T}if("object"==typeof v&&v&&v instanceof u)return v}return new u(!1)}},"23cb":function(t,e,n){var r=n("a691"),o=Math.max,i=Math.min;t.exports=function(t,e){var n=r(t);return n<0?o(n+e,0):i(n,e)}},"23e7":function(t,e,n){var r=n("da84"),o=n("06cf").f,i=n("9112"),c=n("6eeb"),a=n("ce4e"),s=n("e893"),u=n("94ca");t.exports=function(t,e){var n,f,l,p,d,v,h=t.target,m=t.global,y=t.stat;if(f=m?r:y?r[h]||a(h,{}):(r[h]||{}).prototype,f)for(l in e){if(d=e[l],t.noTargetGet?(v=o(f,l),p=v&&v.value):p=f[l],n=u(m?l:h+(y?".":"#")+l,t.forced),!n&&void 0!==p){if(typeof d===typeof p)continue;s(d,p)}(t.sham||p&&p.sham)&&i(d,"sham",!0),c(f,l,d,t)}}},"241c":function(t,e,n){var r=n("ca84"),o=n("7839"),i=o.concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,i)}},2626:function(t,e,n){"use strict";var r=n("d066"),o=n("9bf2"),i=n("b622"),c=n("83ab"),a=i("species");t.exports=function(t){var e=r(t),n=o.f;c&&e&&!e[a]&&n(e,a,{configurable:!0,get:function(){return this}})}},"2a62":function(t,e,n){var r=n("825a");t.exports=function(t){var e=t["return"];if(void 0!==e)return r(e.call(t)).value}},"2cf4":function(t,e,n){var r,o,i,c=n("da84"),a=n("d039"),s=n("0366"),u=n("1be4"),f=n("cc12"),l=n("1cdc"),p=n("605d"),d=c.location,v=c.setImmediate,h=c.clearImmediate,m=c.process,y=c.MessageChannel,g=c.Dispatch,b=0,x={},w="onreadystatechange",E=function(t){if(x.hasOwnProperty(t)){var e=x[t];delete x[t],e()}},S=function(t){return function(){E(t)}},T=function(t){E(t.data)},_=function(t){c.postMessage(t+"",d.protocol+"//"+d.host)};v&&h||(v=function(t){var e=[],n=1;while(arguments.length>n)e.push(arguments[n++]);return x[++b]=function(){("function"==typeof t?t:Function(t)).apply(void 0,e)},r(b),b},h=function(t){delete x[t]},p?r=function(t){m.nextTick(S(t))}:g&&g.now?r=function(t){g.now(S(t))}:y&&!l?(o=new y,i=o.port2,o.port1.onmessage=T,r=s(i.postMessage,i,1)):c.addEventListener&&"function"==typeof postMessage&&!c.importScripts&&d&&"file:"!==d.protocol&&!a(_)?(r=_,c.addEventListener("message",T,!1)):r=w in f("script")?function(t){u.appendChild(f("script"))[w]=function(){u.removeChild(this),E(t)}}:function(t){setTimeout(S(t),0)}),t.exports={set:v,clear:h}},"2d00":function(t,e,n){var r,o,i=n("da84"),c=n("342f"),a=i.process,s=a&&a.versions,u=s&&s.v8;u?(r=u.split("."),o=r[0]+r[1]):c&&(r=c.match(/Edge\/(\d+)/),(!r||r[1]>=74)&&(r=c.match(/Chrome\/(\d+)/),r&&(o=r[1]))),t.exports=o&&+o},"342f":function(t,e,n){var r=n("d066");t.exports=r("navigator","userAgent")||""},"35a1":function(t,e,n){var r=n("f5df"),o=n("3f8c"),i=n("b622"),c=i("iterator");t.exports=function(t){if(void 0!=t)return t[c]||t["@@iterator"]||o[r(t)]}},"3a3b":function(t,e,n){"use strict";n("bfed")},"3a87":function(t,e,n){"use strict";n("2005")},"3f8c":function(t,e){t.exports={}},"428f":function(t,e,n){var r=n("da84");t.exports=r},"44ad":function(t,e,n){var r=n("d039"),o=n("c6b6"),i="".split;t.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==o(t)?i.call(t,""):Object(t)}:Object},"44de":function(t,e,n){var r=n("da84");t.exports=function(t,e){var n=r.console;n&&n.error&&(1===arguments.length?n.error(t):n.error(t,e))}},"466d":function(t,e,n){"use strict";var r=n("d784"),o=n("825a"),i=n("50c4"),c=n("1d80"),a=n("8aa5"),s=n("14c3");r("match",1,(function(t,e,n){return[function(e){var n=c(this),r=void 0==e?void 0:e[t];return void 0!==r?r.call(e,n):new RegExp(e)[t](String(n))},function(t){var r=n(e,t,this);if(r.done)return r.value;var c=o(t),u=String(this);if(!c.global)return s(c,u);var f=c.unicode;c.lastIndex=0;var l,p=[],d=0;while(null!==(l=s(c,u))){var v=String(l[0]);p[d]=v,""===v&&(c.lastIndex=a(u,i(c.lastIndex),f)),d++}return 0===d?null:p}]}))},4840:function(t,e,n){var r=n("825a"),o=n("1c0b"),i=n("b622"),c=i("species");t.exports=function(t,e){var n,i=r(t).constructor;return void 0===i||void 0==(n=r(i)[c])?e:o(n)}},4930:function(t,e,n){var r=n("605d"),o=n("2d00"),i=n("d039");t.exports=!!Object.getOwnPropertySymbols&&!i((function(){return!Symbol.sham&&(r?38===o:o>37&&o<41)}))},"4d64":function(t,e,n){var r=n("fc6a"),o=n("50c4"),i=n("23cb"),c=function(t){return function(e,n,c){var a,s=r(e),u=o(s.length),f=i(c,u);if(t&&n!=n){while(u>f)if(a=s[f++],a!=a)return!0}else for(;u>f;f++)if((t||f in s)&&s[f]===n)return t||f||0;return!t&&-1}};t.exports={includes:c(!0),indexOf:c(!1)}},"50c4":function(t,e,n){var r=n("a691"),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},5135:function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},5319:function(t,e,n){"use strict";var r=n("d784"),o=n("825a"),i=n("50c4"),c=n("a691"),a=n("1d80"),s=n("8aa5"),u=n("0cb2"),f=n("14c3"),l=Math.max,p=Math.min,d=function(t){return void 0===t?t:String(t)};r("replace",2,(function(t,e,n,r){var v=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,h=r.REPLACE_KEEPS_$0,m=v?"$":"$0";return[function(n,r){var o=a(this),i=void 0==n?void 0:n[t];return void 0!==i?i.call(n,o,r):e.call(String(o),n,r)},function(t,r){if(!v&&h||"string"===typeof r&&-1===r.indexOf(m)){var a=n(e,t,this,r);if(a.done)return a.value}var y=o(t),g=String(this),b="function"===typeof r;b||(r=String(r));var x=y.global;if(x){var w=y.unicode;y.lastIndex=0}var E=[];while(1){var S=f(y,g);if(null===S)break;if(E.push(S),!x)break;var T=String(S[0]);""===T&&(y.lastIndex=s(g,i(y.lastIndex),w))}for(var _="",k=0,L=0;L=k&&(_+=g.slice(k,j)+z,k=j+C.length)}return _+g.slice(k)}]}))},5692:function(t,e,n){var r=n("c430"),o=n("c6cd");(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.9.1",mode:r?"pure":"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})},"56ef":function(t,e,n){var r=n("d066"),o=n("241c"),i=n("7418"),c=n("825a");t.exports=r("Reflect","ownKeys")||function(t){var e=o.f(c(t)),n=i.f;return n?e.concat(n(t)):e}},"5c6c":function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},"605d":function(t,e,n){var r=n("c6b6"),o=n("da84");t.exports="process"==r(o.process)},6547:function(t,e,n){var r=n("a691"),o=n("1d80"),i=function(t){return function(e,n){var i,c,a=String(o(e)),s=r(n),u=a.length;return s<0||s>=u?t?"":void 0:(i=a.charCodeAt(s),i<55296||i>56319||s+1===u||(c=a.charCodeAt(s+1))<56320||c>57343?t?a.charAt(s):i:t?a.slice(s,s+2):c-56320+(i-55296<<10)+65536)}};t.exports={codeAt:i(!1),charAt:i(!0)}},"65f0":function(t,e,n){var r=n("861d"),o=n("e8b5"),i=n("b622"),c=i("species");t.exports=function(t,e){var n;return o(t)&&(n=t.constructor,"function"!=typeof n||n!==Array&&!o(n.prototype)?r(n)&&(n=n[c],null===n&&(n=void 0)):n=void 0),new(void 0===n?Array:n)(0===e?0:e)}},"69f3":function(t,e,n){var r,o,i,c=n("7f9a"),a=n("da84"),s=n("861d"),u=n("9112"),f=n("5135"),l=n("c6cd"),p=n("f772"),d=n("d012"),v=a.WeakMap,h=function(t){return i(t)?o(t):r(t,{})},m=function(t){return function(e){var n;if(!s(e)||(n=o(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}};if(c){var y=l.state||(l.state=new v),g=y.get,b=y.has,x=y.set;r=function(t,e){return e.facade=t,x.call(y,t,e),e},o=function(t){return g.call(y,t)||{}},i=function(t){return b.call(y,t)}}else{var w=p("state");d[w]=!0,r=function(t,e){return e.facade=t,u(t,w,e),e},o=function(t){return f(t,w)?t[w]:{}},i=function(t){return f(t,w)}}t.exports={set:r,get:o,has:i,enforce:h,getterFor:m}},"6eeb":function(t,e,n){var r=n("da84"),o=n("9112"),i=n("5135"),c=n("ce4e"),a=n("8925"),s=n("69f3"),u=s.get,f=s.enforce,l=String(String).split("String");(t.exports=function(t,e,n,a){var s,u=!!a&&!!a.unsafe,p=!!a&&!!a.enumerable,d=!!a&&!!a.noTargetGet;"function"==typeof n&&("string"!=typeof e||i(n,"name")||o(n,"name",e),s=f(n),s.source||(s.source=l.join("string"==typeof e?e:""))),t!==r?(u?!d&&t[e]&&(p=!0):delete t[e],p?t[e]=n:o(t,e,n)):p?t[e]=n:c(e,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&u(this).source||a(this)}))},"72af":function(t,e,n){"use strict";n("b2a0")},7418:function(t,e){e.f=Object.getOwnPropertySymbols},7839:function(t,e){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},"7b0b":function(t,e,n){var r=n("1d80");t.exports=function(t){return Object(r(t))}},"7f9a":function(t,e,n){var r=n("da84"),o=n("8925"),i=r.WeakMap;t.exports="function"===typeof i&&/native code/.test(o(i))},"825a":function(t,e,n){var r=n("861d");t.exports=function(t){if(!r(t))throw TypeError(String(t)+" is not an object");return t}},"83ab":function(t,e,n){var r=n("d039");t.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},8418:function(t,e,n){"use strict";var r=n("c04e"),o=n("9bf2"),i=n("5c6c");t.exports=function(t,e,n){var c=r(e);c in t?o.f(t,c,i(0,n)):t[c]=n}},"861d":function(t,e){t.exports=function(t){return"object"===typeof t?null!==t:"function"===typeof t}},8875:function(t,e,n){var r,o,i;(function(n,c){o=[],r=c,i="function"===typeof r?r.apply(e,o):r,void 0===i||(t.exports=i)})("undefined"!==typeof self&&self,(function(){function t(){var e=Object.getOwnPropertyDescriptor(document,"currentScript");if(!e&&"currentScript"in document&&document.currentScript)return document.currentScript;if(e&&e.get!==t&&document.currentScript)return document.currentScript;try{throw new Error}catch(d){var n,r,o,i=/.*at [^(]*\((.*):(.+):(.+)\)$/gi,c=/@([^@]*):(\d+):(\d+)\s*$/gi,a=i.exec(d.stack)||c.exec(d.stack),s=a&&a[1]||!1,u=a&&a[2]||!1,f=document.location.href.replace(document.location.hash,""),l=document.getElementsByTagName("script");s===f&&(n=document.documentElement.outerHTML,r=new RegExp("(?:[^\\n]+?\\n){0,"+(u-2)+"}[^<]*
10 |
11 |
14 |
--------------------------------------------------------------------------------
/packages/layer/index.js:
--------------------------------------------------------------------------------
1 | import layer from './src/layer.js'
2 |
3 | // 为组件提供 install 安装方法,供按需引入
4 | layer.install = function (Vue) {
5 | Vue.component('layer', layer);
6 | }
7 |
8 | // 默认导出组件
9 | export default layer;
--------------------------------------------------------------------------------
/packages/layer/src/alert.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
17 |
22 |
27 |
32 |
33 |
34 |
35 |
{{btns[0]}}
36 |
{{btns[1]}}
43 |
44 |
45 |
46 |
47 |
98 |
--------------------------------------------------------------------------------
/packages/layer/src/components/button/button.vue:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
21 |
22 |
23 |
58 |
--------------------------------------------------------------------------------
/packages/layer/src/components/button/css/button.less:
--------------------------------------------------------------------------------
1 | @import "var.less";
2 | @import "mixin.less"; //button按钮生成工厂
3 |
4 | .btn-css(@bgcolor: @btn-primary-bgcolor) {
5 | color: @btn-color;
6 | background-color: @bgcolor;
7 | .border(darken(@bgcolor,5%));
8 |
9 | &.hover,
10 | &:hover {
11 | color: #fff;
12 | background-color: darken(@bgcolor, 8%);
13 | }
14 |
15 | &.active,
16 | &:active {
17 | color: #fff;
18 | background-color: darken(@bgcolor, 8%);
19 | }
20 | }
21 | //具体样式
22 | //---------------------------------------------
23 |
24 | .notify-btn {
25 | position: relative;
26 | display: inline-block;
27 | padding: 6px 10px;
28 | margin-bottom: 0;
29 | font-size: @btn-font-size;
30 | min-width: 10px;
31 | text-align: center;
32 | white-space: nowrap;
33 | vertical-align: top;
34 | cursor: pointer;
35 | background-color: #f7f7f7;
36 | border: 1px solid #dddee1;
37 | border-radius: 4px;
38 | outline: 0;
39 | -webkit-appearance: none;
40 |
41 | &.active,
42 | &:active {
43 | color: inherit;
44 | // background-color: #f7f7f7;
45 | background-color: darken(#f7f7f7, 8%);;
46 | }
47 | }
48 |
49 | .btn-default {
50 | .btn-css(#f7f7f7);
51 | color: #000;
52 |
53 | &:hover {
54 | color: #000;
55 | }
56 | }
57 |
58 | .notify-btn-primary {
59 | .btn-css(@btn-primary-bgcolor);
60 | }
61 |
62 | .notify-btn-success {
63 | .btn-css(@bgcolor-success);
64 | }
65 |
66 | .notify-btn-info {
67 | .btn-css(@bgcolor-info);
68 | }
69 |
70 | .notify-btn-warning {
71 | .btn-css(@bgcolor-warning);
72 | }
73 |
74 | .notify-btn-danger {
75 | .btn-css(@bgcolor-danger);
76 | }
77 |
78 | .btn-small {
79 | font-size: 12px;
80 | min-width: 31px;
81 | min-height: 14px;
82 | padding: 6px 9px;
83 | }
84 |
--------------------------------------------------------------------------------
/packages/layer/src/components/button/css/mixin.less:
--------------------------------------------------------------------------------
1 | //border
2 | .border(@color: #999,@width: 1px, @style: solid){
3 | border: @width @style @color;
4 | }
5 |
6 | .border-radius(@value: 5px){
7 | border-radius: @value;
8 | }
9 |
10 | .box-shadow (@x: 0, @y: 0, @blur: 1px, @color: #000) {
11 | box-shadow: @x @y @blur @color;
12 | -moz-box-shadow: @x @y @blur @color;
13 | -webkit-box-shadow: @x @y @blur @color;
14 | }
15 |
--------------------------------------------------------------------------------
/packages/layer/src/components/button/css/var.less:
--------------------------------------------------------------------------------
1 |
2 |
3 | /// bg colors
4 | @bgcolor: #fff;
5 | @bgcolor-disable: #e6ecf5;
6 | @bgcolor-success: #449d44; //绿色
7 | @bgcolor-info: #31b0d5; // 浅蓝
8 | @bgcolor-warning: #ec971f; //橙色
9 | @bgcolor-danger: #d9534f; //红色
10 |
11 |
12 |
13 | //border default
14 | @border-color: #c0c8c8;
15 | @border: 1px solid @border-color;
16 |
17 | // button
18 | // --------------------------------------------
19 | @btn-color: #fff;
20 | @btn-bgcolor: #ccc;
21 | @btn-bgcolor-hover: #58b4e6;
22 | @btn-font-size: 14px;
23 | @btn-primary-bgcolor: #20a0ff;
24 |
--------------------------------------------------------------------------------
/packages/layer/src/components/drag/drag.vue:
--------------------------------------------------------------------------------
1 |
2 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
38 |
39 |
40 |
330 |
331 |
333 |
334 |
--------------------------------------------------------------------------------
/packages/layer/src/components/input/input.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
8 |
9 |
11 |
--------------------------------------------------------------------------------
/packages/layer/src/css/icon/iconfont.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: "vlayer";
3 | src: url('./iconfont.eot');
4 | /* IE9 */
5 | src: url('./iconfont.eot#iefix') format('embedded-opentype'),
6 | /* IE6-IE8 */
7 | url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAXAAAsAAAAAC7gAAAVzAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCECgqJWIdsATYCJAMkCxQABCAFhFUHbRvtCVGUL06c7GeCTae24EV0GNtYV9qWt+CBzYL/4+FrP37n7u57/tVRb9ZgOomsmqBSSZ4IhemExHRKFZ+u/29qv2OqCsnz3fLGWp6SD6FAEuZto86rrcwd/5416XurQgsWS3dPSk5/q2pFHqS2JzA52Anz//9e1czjsYBcC1pI3n1/ZozxQmOtbipXbB1PSnPq9IIXrLoFvTrKeYGZQNWZyqs3E+htGqqdOzi7g65CzIGmu1JQ6JY8So8utPa65cQinoOZNj3lnAeexe8f3+BEdEmqTC5y/vp+BlsfzV4I0RO2RUL+AOXPF8LsNDIOAYV40xp5DaW5Qxr6zefFbgKzBhrSR7Pn9n66jLppL4QsS32abBVm9Z88UAtZo5IULVGDZWTtw3zLRzPfQM1He5eA1Q8uGVYdXBpYM2B2jLUOLgnWaTBQ+CTs0YIuPGEW2ABxGSB+E9uZ2FSpMvP/Z3kZx53RS6GppKmJttRRRXc/MRaJHOTi9defxt54pmZeaOnnNTStYRjtjRvq69eTvGvEthj6TcTSSzeuyGat91l32AUqC4mFm/xNxxQ0ncCdP9mrVmPfunQi+RSLojKiUUxmZCr9XNOB3aHrT+tOi4SEx/9FG7tZ3Dl2NpoYdXZUPYeLJYhnViNEIjUX8QlRvATEhadaW3eJbGzfOuDcTdoZLTDqCnT2BlqN9eLt+13MFx+IkOw6pLBYcrBGbCEpWWjyFoBWA/zj15XAUwtOMe4EF+at8+ATsWo1r9/Qss6GP8doh+aapgwgfm7tIJtqbp+x1WQvmG2w5cxaB0YQsbPA7HOJVgPdUjvJGY+nmVNjtlXQYqDHUzvJGZernl2bY6dE9TSWyzGtJMRAytsE5YZd+Ns3DHkXI8b4ua+QhF4HY0SUQiXCookAWHBVsue8uUpMykmxCr6FzzUgIPV6UjXQ/H2QzoXV00D//qaZUml20xFGlrhNMHPvAfz3L4Z8gBESV1sudZs/3y0P7cA238IKpdktJeGmW5jbBSu37sE/fuA9RAgDiS//MrFHkm65uRMWLAxraJBah4PAvdr/3DFP/4HSJ71JM5LOZueovicnAXf367LXgEK24y9f0Da0nU3bpwR6vB1va+eRKxksk2FG9TIXxszl4hK8FuMiY55KKekgCeVOwSCCEl+TUh6kO+lBwdAvM5pC7qEmdC8kTnLIy01y2SVqIkusJ6fkTymg9KPGjsW10cNu6EcniZrommYGTapzr/WjkQ/dP4aL3IUqBSU6z8IeGSVfwMk9v9rnHMsa5JRsYXiEvV8ldBeFf3R/SEKxwJjckEs4F8rwSHsguQUAgO1Af1EDANuCAbUCsL3oB6oGAEDfiD2b27UiFtWw79hCbI1mArBt6D9qGmHuBry2Xz+SRcO+WfIwAADcpMPa4jGuE6+VmPGjh6tAj+KdtBXF25X1Uny0C+eo0bmohUxCrwn+U2LW33ltC2aLcdC2kEPSWIOstkNZtPugMjhiqtV2EtA7aPP0wZylhigdDnh3EEZvIZn0DrLRe2XRfoDKok+ojX5B74L/Cw72xHV/1yENmJHFM5GsLLh3UugnTZ/R3aCImro1H8oP1OdlWZDZeFoJHmIRiMce4pOYh8AJd6UhBye5HWpdksqVS2RhnIdQrUwmvO2Zxqw00HeWg6gAZYiFZ4TElAo8PDzoe0SjniHnxkWEWFvvWidyywNFPHn89sTM2LRXeWgp0qnX7vQSYS5oiCN+xikZth3cjQlnBLkSUbWblttaJhjLj8hUVkx0I261jJ/KZn5fEyxBnr6LFDlKVFFHE2100aseYxFkC50rXcdHxtD7jqFPRhayGSQ7j9RNOwrRzSMtnn1To8cNAAA=') format('woff2'),
8 | url('./iconfont.woff') format('woff'),
9 | }
10 |
11 | .vlayer {
12 | font-family: "vlayer" !important;
13 | font-size: 16px;
14 | font-style: normal;
15 | -webkit-font-smoothing: antialiased;
16 | -moz-osx-font-smoothing: grayscale;
17 | }
18 |
19 | .vlicon-wenti:before {
20 | content: "\e617";
21 | }
22 |
23 | .vlicon-error:before {
24 | content: "\e67a";
25 | }
26 |
27 | .vlicon-success:before {
28 | content: "\e62a";
29 | }
30 |
31 | .vlicon-maxmini:before {
32 | content: "\e690";
33 | }
34 |
35 | .vlicon-mini:before {
36 | content: "\e664";
37 | }
38 |
39 | .vlicon-warning:before {
40 | content: "\e605";
41 | }
42 |
43 | .vlicon-huanyuan:before {
44 | content: "\e658";
45 | }
46 |
47 | .vlicon-max:before {
48 | content: "\e70e";
49 | }
--------------------------------------------------------------------------------
/packages/layer/src/css/icon/iconfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zuoyanart/vue-layer/78857770435d0bff6e604687b96cb0f22c0d3a59/packages/layer/src/css/icon/iconfont.eot
--------------------------------------------------------------------------------
/packages/layer/src/css/icon/iconfont.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
51 |
--------------------------------------------------------------------------------
/packages/layer/src/css/icon/iconfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zuoyanart/vue-layer/78857770435d0bff6e604687b96cb0f22c0d3a59/packages/layer/src/css/icon/iconfont.ttf
--------------------------------------------------------------------------------
/packages/layer/src/css/icon/iconfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zuoyanart/vue-layer/78857770435d0bff6e604687b96cb0f22c0d3a59/packages/layer/src/css/icon/iconfont.woff
--------------------------------------------------------------------------------
/packages/layer/src/css/icon/iconfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zuoyanart/vue-layer/78857770435d0bff6e604687b96cb0f22c0d3a59/packages/layer/src/css/icon/iconfont.woff2
--------------------------------------------------------------------------------
/packages/layer/src/css/iconfont.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: "vlayer";
3 | src: url('iconfont.eot?t=1563499118921');
4 | /* IE9 */
5 | src: url('iconfont.eot?t=1563499118921#iefix') format('embedded-opentype'),
6 | /* IE6-IE8 */
7 | url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAV0AAsAAAAAC0gAAAUlAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCDdAqJEIc1ATYCJAMgCxIABCAFhFUHYxuSCRGVpB+Q/TiwG6/2sC8uo0XES9qRzSd4INxe3+UuEMxrSNVpZxJmjtbN+X8mCjPlzz2HczZgo06oktwTefRZdknaEDwLJViZRwYbDsUXYvL/jpVuPl9bzG+LtiTzZ6NybKPyio60nke0FciBN98J45lI518yoSleXGfdDAE4SdAJkbn4yiwGCmUSqBs3euRgjIIb1SESGDZbw4kKsQkdQ1utvQhsjN5ffEMPYYCGLlEXuXbERcM4v6Y3eOUiaxH95FZEs7sgMNgSJNAJUOxe0xheg0wynZA4Z6WKAYBf/qKEml6L1TrUirVhtTkNXsuqjMIsNhrCv3igI5DYUGjYQdhQZjcJh2XtUNONicgSgxMBSwc4kbAU4cQGyzA4UbDMgRIaNHg7sANguBP8QBMQ14L4DGVNs1EXq3wNi5Xb3VI4NGdUicljShx+5fM1Uhef++bn2be+yFUbCpXarEolX60W3nor9+abA/Q1sovKa+vFwVfeei2+7cZ2px5tRmlTsfeWjvVPJCuVfs7dvfVaXLfm1FAxcBubXTfsennD8GsHV2r5FmwPvvn5nO0iIeHmPw9Htzl3RMP5G3Ijr+sbwD9+zYVztpjOrjmFduhkU7mnrpijgzewuG6u/84Hm9n2P9QrcM8jSfuBh2f57YFJe+vbeijkcT/5ZgpXzvNMtaVwsutUK7fI5nKuteVFp8LuHXVRubO+z6DvzspB4ZnONXWL62Oe7eWItu0UmBDZbWCx0WKxB51Tf5Ixlyu/o8IiM1jkQTen/iRjTmdue2WDaErOrahEQlWEOLT6rMkztXyP+u03BcM9jBji137NFKUiF/oyybRP+S4D5Xk9cN+LtrTfTJj+NL/13FmWmKWSmT7N9n0X2ZDjmyh9/7aeSulvB4SR9dzk2Xr/Q+rffxUMDzFCz+XGwRa7d7cYg2ashZ8qmdLfEeKWvaO42XP09vvUH3+o+4gQWj0/wZf9VwWGGrcuZ8/eHvPmBUM9cd779ZSvkd3uVL/8Iu+Qd5Lxzj6BWN2p7mh2mUerKh5XVRHHm1V1Z7Nm9iLVZvHq58FM8PRApmWG00XG/0ZB0spsabba7axftizo9oFcID/oFiU089UF6rIHcmKEv2RuGLthXKZ0/kUXqdnXn/1W6YI4Puv6WfWMBekXrt9vMz9u+WNPX0tvOpnxvWhxXzyT2KONfnGyxQuWVU5k4nt79vLvTntb+nr+2PJjE5w9qhLl0cKxN45H3sdAAKxl8l85D6xFCrkYQP4m7pvdbrG05CzrO2v8LCS3grVE/i8X/BXuxq/K4s//BvoOf7uuAnincJaJhrgKg4aB5ovv7KiD851+rlMeo9NJBn21m1dgGGSOlAacEgeL4kF/u7RGvM38t6yRDDR2TUGyacFVwnagc+litIn1DIBTRyenu4QMpkQf6OAjAMHtJGi87gDJ7TGuEr4EuqhPsHH7AZzy/i/o0ibXbS4CkoR72L1AT61h+qS0KYq8YLhFnhUJU40zPFJX7K2BtmpKgRs0VrfpIbHwLiUGLFgN11u5HSplwQU7IE2VSMlt65o1vVJFrR5tmAJEJGgP7LwAPcoymDs82ZhBIV6g4DYIc7myODSOZOZHCkf95iuDVqXp5N6YTTL20K1RwXWSBBkwqcDSbL0+GSMOCDIWcM3GYV5JJRWxQcrZqmUp5muuLsqqn10jmEI9tZGRmWZl5+Tm0T+a1M8xBBuWMVOKMc50b/rlEwmuxfCVyMS8mLKpJs+jEQAAAA==') format('woff2'),
8 | url('iconfont.woff?t=1563499118921') format('woff'),
9 | url('iconfont.ttf?t=1563499118921') format('truetype'),
10 | /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
11 | url('iconfont.svg?t=1563499118921#vlayer') format('svg');
12 | /* iOS 4.1- */
13 | }
14 |
15 | .vlayer {
16 | font-family: "vlayer" !important;
17 | font-size: 16px;
18 | font-style: normal;
19 | -webkit-font-smoothing: antialiased;
20 | -moz-osx-font-smoothing: grayscale;
21 | }
22 |
23 | .vlicon-wenti:before {
24 | content: "\e617";
25 | }
26 |
27 | .vlicon-error:before {
28 | content: "\e67a";
29 | }
30 |
31 | .vlicon-success:before {
32 | content: "\e62a";
33 | }
34 |
35 | .vlicon-mini:before {
36 | content: "\e664";
37 | }
38 |
39 | .vlicon-warning:before {
40 | content: "\e605";
41 | }
42 |
43 | .vlicon-huanyuan:before {
44 | content: "\e658";
45 | }
46 |
47 | .vlicon-max:before {
48 | content: "\e70e";
49 | }
--------------------------------------------------------------------------------
/packages/layer/src/css/iconfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zuoyanart/vue-layer/78857770435d0bff6e604687b96cb0f22c0d3a59/packages/layer/src/css/iconfont.eot
--------------------------------------------------------------------------------
/packages/layer/src/css/iconfont.js:
--------------------------------------------------------------------------------
1 | !function(a){var t,n='',e=(t=document.getElementsByTagName("script"))[t.length-1].getAttribute("data-injectcss");if(e&&!a.__iconfont__svg__cssinject__){a.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(t){console&&console.log(t)}}!function(t){if(document.addEventListener)if(~["complete","loaded","interactive"].indexOf(document.readyState))setTimeout(t,0);else{var e=function(){document.removeEventListener("DOMContentLoaded",e,!1),t()};document.addEventListener("DOMContentLoaded",e,!1)}else document.attachEvent&&(c=t,i=a.document,o=!1,(l=function(){try{i.documentElement.doScroll("left")}catch(t){return void setTimeout(l,50)}n()})(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,n())});function n(){o||(o=!0,c())}var c,i,o,l}(function(){var t,e;(t=document.createElement("div")).innerHTML=n,n=null,(e=t.getElementsByTagName("svg")[0])&&(e.setAttribute("aria-hidden","true"),e.style.position="absolute",e.style.width=0,e.style.height=0,e.style.overflow="hidden",function(t,e){e.firstChild?function(t,e){e.parentNode.insertBefore(t,e)}(t,e.firstChild):e.appendChild(t)}(e,document.body))})}(window);
--------------------------------------------------------------------------------
/packages/layer/src/css/iconfont.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
48 |
--------------------------------------------------------------------------------
/packages/layer/src/css/iconfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zuoyanart/vue-layer/78857770435d0bff6e604687b96cb0f22c0d3a59/packages/layer/src/css/iconfont.ttf
--------------------------------------------------------------------------------
/packages/layer/src/css/iconfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zuoyanart/vue-layer/78857770435d0bff6e604687b96cb0f22c0d3a59/packages/layer/src/css/iconfont.woff
--------------------------------------------------------------------------------
/packages/layer/src/css/iconfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zuoyanart/vue-layer/78857770435d0bff6e604687b96cb0f22c0d3a59/packages/layer/src/css/iconfont.woff2
--------------------------------------------------------------------------------
/packages/layer/src/css/index.less:
--------------------------------------------------------------------------------
1 | /**
2 | * @Author: 左盐
3 | * @Date: 2018-03-19 17:30:29
4 | * @Email: huabinglan@163.com
5 | * @Project: xxx
6 | * @Last modified by: 左盐
7 | * @Last modified time: 2018-03-24 15:59:18
8 | */
9 |
10 | *[class^="vl-notify"] {
11 | box-sizing: border-box;
12 | padding: 0;
13 | margin: 0;
14 | outline: none;
15 | -webkit-font-smoothing: antialiased;
16 | -moz-osx-font-smoothing: grayscale;
17 | }
18 |
19 | @keyframes fadein {
20 | from {
21 | opacity: 0;
22 | transform: scale(0.5) translate(-100%, -100%);
23 | }
24 |
25 | to {
26 | opacity: 1;
27 | transform: scale(1) translate(-50%, -50%);
28 | }
29 | }
30 |
31 | .vl-html-scrollbar-hidden {
32 | overflow-y: hidden !important;
33 | }
34 |
35 | .vl-notify {
36 | position: fixed;
37 | z-index: 1000;
38 | left: 50%;
39 | top: 50%;
40 | transform: perspective(1px) translate(-50%, -50%);
41 | -ms-transform: perspective(1px) translate(-50%, -50%);
42 | box-sizing: border-box;
43 |
44 | &.vl-notify-msg-p {
45 | display: inline;
46 | height: 0;
47 | left: 50%;
48 | top: 50%;
49 | transform: perspective(1px) translate(-50%, -50%);
50 | -ms-transform: perspective(1px) translate(-50%, -50%);
51 | background-color: rgba(0, 0, 0, .6);
52 | }
53 |
54 | &.vl-notify-tips-p {
55 | display: inline;
56 | height: 0;
57 | top: 0;
58 | left: 0;
59 | position: absolute;
60 | }
61 |
62 | &.vl-notify-main {
63 | min-width: 250px;
64 | max-width: 1500px;
65 | min-height: 100px;
66 | background-color: #fff;
67 | border: 1px solid #eee;
68 | box-shadow: 1px 1px 15px rgba(0, 0, 0, 0.3);
69 | border-radius: 2px;
70 | padding-bottom: 5px;
71 | }
72 |
73 | .vl-notify-content {
74 | min-height: 65px;
75 | padding: 20px;
76 | max-height: calc(100% - 42px);
77 |
78 | iframe {
79 | width: 100%;
80 | height: 100%;
81 | border: none;
82 | overflow: none;
83 | }
84 | }
85 |
86 | .vl-notify-btns {
87 | text-align: right;
88 | padding: 0 8px 0 0;
89 | }
90 |
91 | &.vl-notify-alert {
92 | animation: fadein 0.3s;
93 | max-width: 500px;
94 |
95 | h2.vl-notice-title {
96 | box-sizing: border-box;
97 | width: 100%;
98 | height: 42px;
99 | line-height: 43px;
100 | background-color: #F8F8F8;
101 | border-bottom: 1px solid #eee;
102 | font-size: 14px;
103 | padding-left: 15px;
104 | cursor: move;
105 | -moz-user-select: -moz-none;
106 | -webkit-user-select: none;
107 | margin: 0;
108 | display: flex;
109 | position: relative;
110 | z-index: 100000;
111 | word-break: keep-all;
112 | overflow: hidden;
113 |
114 | .lv-title {
115 | text-overflow: ellipsis;
116 | flex: 1;
117 | height: 100%;
118 | }
119 |
120 | .icon-remove {
121 | position: absolute;
122 | right: 10px;
123 | font-size: 14px;
124 | text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
125 | top: 0px;
126 | font-weight: normal;
127 | cursor: pointer;
128 | color: rgb(51, 51, 51);
129 | font-style: normal;
130 |
131 | &::before {
132 | content: "\2716";
133 | }
134 | }
135 |
136 | .lv-icon-maxmini {
137 | // position: absolute;
138 | // right: 32px;
139 | // top: 0px;
140 | min-width: 10px;
141 | font-size: 14px;
142 | text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
143 | font-weight: normal;
144 | cursor: pointer;
145 | color: rgb(51, 51, 51);
146 | font-style: normal;
147 | margin-right: 25px;
148 |
149 | i {
150 | margin: 0 3px;
151 | font-size: 14px;
152 | text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
153 | font-weight: normal;
154 | cursor: pointer;
155 | color: rgb(51, 51, 51);
156 | font-style: normal;
157 | }
158 | }
159 |
160 | .lv-icon-max {}
161 |
162 | .lv-icon-mini {}
163 | }
164 |
165 | .vl-notify-content {
166 | display: flex;
167 |
168 | .vl-notify-content-div {
169 | margin-left: 10px;
170 | flex: 1;
171 | }
172 | }
173 | }
174 |
175 | &.vl-notify-iframe {
176 | max-width: 2000px;
177 |
178 | .vl-notify-content {
179 | padding: 0;
180 | }
181 | }
182 |
183 | &.vl-notify-loading {
184 | animation: fadein 0.2s;
185 | display: inline-block;
186 | left: 50%;
187 | top: 50%;
188 | transform: translate(-50%, -50%);
189 | -ms-transform: translate(-50%, -50%);
190 | min-width: 50px;
191 | min-height: 50px;
192 | display: none;
193 |
194 | // &:nth-last-child(2) {
195 | // display: inline-block !important;
196 | // }
197 |
198 | &:nth-last-child(1) {
199 | display: inline-block !important;
200 | }
201 |
202 | @keyframes loading {
203 | from {
204 | -webkit-transform: rotate(0deg);
205 | transform: rotate(0deg);
206 | }
207 |
208 | to {
209 | -webkit-transform: rotate(360deg);
210 | transform: rotate(360deg);
211 | }
212 | }
213 |
214 | span {
215 | display: inline-block;
216 | width: 30px;
217 | height: 30px;
218 | border: 2px solid #f3f3f3;
219 | border-top: 2px solid #999999;
220 | border-right: 2px solid #999999;
221 | border-radius: 50%;
222 | animation: loading 1.0s infinite linear;
223 | }
224 | }
225 |
226 | &.vl-notify-msg {
227 | animation: fadein 0.2s;
228 | min-width: 50px;
229 | display: inline;
230 | min-height: 44px;
231 | font-size: 14px;
232 | left: 50%;
233 | top: 50%;
234 | transform: translate(-50%, -50%);
235 | -ms-transform: translate(-50%, -50%);
236 | background-color: rgba(0, 0, 0, .6);
237 | color: #fff;
238 | padding: 12px 25px;
239 | text-align: center;
240 | border-radius: 5px;
241 |
242 | &.vl-notify-loading {
243 | min-height: 50px;
244 |
245 | span {
246 | width: 20px;
247 | height: 20px;
248 | vertical-align: middle;
249 | margin-right: 7px;
250 | }
251 |
252 | i {
253 | font-style: normal;
254 | font-size: 14px;
255 | }
256 | }
257 | }
258 |
259 | &.vl-notify-tips {
260 | min-width: 50px;
261 | max-width: 400px;
262 | display: inline;
263 | min-height: 32px;
264 | position: absolute;
265 | left: -50%;
266 | background-color: #303133;
267 | color: #fff;
268 | padding: 6px 12px;
269 | border-radius: 5px;
270 | transform: none;
271 |
272 | &:after {
273 | content: " ";
274 | border: 10px solid #303133;
275 | position: absolute;
276 | display: inline-block;
277 | }
278 | }
279 |
280 | &.vl-notify-tips-0 {
281 |
282 | //上
283 | &:after {
284 | border-top-color: transparent !important;
285 | border-right-color: transparent !important;
286 | border-bottom-color: transparent !important;
287 | left: 15px;
288 | bottom: -8px;
289 | }
290 | }
291 |
292 | &.vl-notify-tips-1 {
293 |
294 | //右
295 | &:after {
296 | border-top-color: transparent !important;
297 | border-left-color: transparent !important;
298 | border-right-color: transparent !important;
299 | left: -8px;
300 | top: 0;
301 | }
302 | }
303 |
304 | &.vl-notify-tips-2 {
305 |
306 | //下
307 | &:after {
308 | border-top-color: transparent !important;
309 | border-left-color: transparent !important;
310 | border-bottom-color: transparent !important;
311 | left: 15px;
312 | top: -8px;
313 | }
314 | }
315 |
316 | &.vl-notify-tips-3 {
317 | //左
318 | max-width: 300px;
319 |
320 | &:after {
321 | border-top-color: transparent !important;
322 | border-left-color: transparent !important;
323 | border-right-color: transparent !important;
324 | right: -8px;
325 | top: 0;
326 | }
327 | }
328 |
329 | .vl-drag-resize {
330 | display: inline-block;
331 | width: 17px;
332 | height: 17px;
333 | position: absolute;
334 | right: 0px;
335 | bottom: 0;
336 | z-index: 100000;
337 | cursor: nw-resize;
338 | background: url("data:image/svg+xml,%3Csvg viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg' width='17' height='17'%3E%3Cpath d='M765.558 510.004a93.65 93.65 0 1 0 191.665 0 93.65 93.65 0 1 0-191.665 0zM765.558 821.46a93.65 93.65 0 1 0 191.665 0 93.65 93.65 0 1 0-191.665 0zM422.15700000000004 821.46a93.65 93.65 0 1 0 191.665 0 93.65 93.65 0 1 0-191.665 0zM422.15700000000004 510.004a93.65 93.65 0 1 0 191.665 0 93.65 93.65 0 1 0-191.665 0zM765.558 202.54a93.65 93.65 0 1 0 191.665 0 93.65 93.65 0 1 0-191.665 0zM66.77700000000002 821.46a93.65 93.65 0 1 0 191.665 0 93.65 93.65 0 1 0-191.665 0z' fill='%23BFBFBF'/%3E%3C/svg%3E") no-repeat center;
339 | }
340 | }
--------------------------------------------------------------------------------
/packages/layer/src/helper/helper.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @Author: 左盐
3 | * @Date: 2018-03-23 18:27:59
4 | * @Email: huabinglan@163.com
5 | * @Project: xxx
6 | * @Last modified by: 左盐
7 | * @Last modified time: 2018-03-23 18:27:59
8 | */
9 | export default class helper {
10 | /**
11 | * 点击mask关闭弹窗
12 | * @param {[type]} event [description]
13 | * @param {[type]} layer [description]
14 | * @return {[type]} [description]
15 | */
16 | static clickMaskCloseAll(event, layer, id) {
17 | let mask = event.target.getAttribute("class");
18 | if (mask && (mask.indexOf("notify-mask") > -1 || mask.indexOf("icon-remove") > -1)) {
19 | layer.close(id);
20 | }
21 | }
22 | /**
23 | * 默认的yes按钮操作
24 | * @param {[type]} event [description]
25 | * @return {[type]} [description]
26 | */
27 | static btnyes(event, options, formValue) {
28 | if (typeof (options.yes) == "function") {
29 | if (options.type === 6) {
30 | options.yes(formValue, options.id);
31 | } else {
32 | options.yes(options.id);
33 | }
34 | } else {
35 | options.layer.close(options.id);
36 | }
37 | }
38 | /**
39 | * 默认取消按钮操作
40 | * @param {[type]} event [description]
41 | * @return {[type]} [description]
42 | */
43 | static async btncancel(event, options) {
44 | if (typeof (options.cancel) == "function") {
45 | await options.cancel(options.id);
46 | } else {
47 | options.layer.close(options.id);
48 | }
49 | }
50 | /**
51 | * 隐藏滚动条
52 | */
53 | static hiddenScrollBar(options) {
54 | if (!options.scrollbar) {
55 | const htmlDom = document.getElementsByTagName("html")[0];
56 | const htmlClass = [...htmlDom.classList];
57 | if (htmlClass.indexOf('vl-html-scrollbar-hidden') > -1) {
58 | return;
59 | }
60 |
61 | const htmlWidth = htmlDom.offsetWidth;
62 | //隐藏滚动条
63 | // htmlDom.style.overflowY = "hidden";
64 | htmlDom.classList.add("vl-html-scrollbar-hidden");
65 | const htmlWidthH = htmlDom.offsetWidth;
66 | htmlDom.style.marginRight = htmlWidthH - htmlWidth + "px";
67 | }
68 | }
69 | /**
70 | * 鼠标拖动弹窗
71 | * @param {[type]} event [description]
72 | * @param {[type]} options [description]
73 | * @return {[type]} [description]
74 | */
75 | static moveStart(event, options) {
76 | options.offset = options.offset == 'auto' ? [] : options.offset;
77 | if (options.offset.length == 0) {
78 | options.offset.push(document.getElementById(options.id + "").offsetLeft);
79 | options.offset.push(document.getElementById(options.id + "").offsetTop);
80 | options.offset.push(0);
81 | }
82 | if (options.offset.length == 2) {
83 | options.offset.push(0);
84 | }
85 | options.offset[0] = (document.getElementById(options.id + "").offsetLeft);
86 | options.offset[1] = (document.getElementById(options.id + "").offsetTop);
87 | }
88 | /**
89 | * 拖动弹窗
90 | * @param {[type]} event [description]
91 | * @param {[type]} ismove [description]
92 | * @return {[type]} [description]
93 | */
94 | static move(event, options, ismove) {
95 | if (ismove) {
96 | let o = document.getElementById(options.id + "_alert");
97 | o.style.left = options.offset[0] + (event.clientX - this.moveLeft) + "px";
98 | o.style.top = options.offset[1] + (event.clientY - this.moveTop) + "px";
99 | }
100 | }
101 | /**
102 | * [sleep description]
103 | * @param {[type]} ms [description]
104 | * @return {[type]} [description]
105 | */
106 | static sleep(ms) {
107 | return new Promise(resolve => setTimeout(resolve, ms))
108 | }
109 | /**
110 | * 深度拷贝
111 | * @param {*} source
112 | */
113 | static deepClone(target) {
114 | let copyed_objs = []; //此数组解决了循环引用和相同引用的问题,它存放已经递归到的目标对象
115 | function _deepCopy(target) {
116 | if ((typeof target !== 'object') || !target) {
117 | return target;
118 | }
119 | for (let i = 0; i < copyed_objs.length; i++) {
120 | if (copyed_objs[i].target === target) {
121 | return copyed_objs[i].copyTarget;
122 | }
123 | }
124 | let obj = {};
125 | if (Array.isArray(target)) {
126 | obj = []; //处理target是数组的情况
127 | }
128 | copyed_objs.push({
129 | target: target,
130 | copyTarget: obj
131 | })
132 | Object.keys(target).forEach(key => {
133 | if (obj[key]) {
134 | return;
135 | }
136 | obj[key] = _deepCopy(target[key]);
137 | });
138 | return obj;
139 | }
140 | return _deepCopy(target);
141 | }
142 | /**
143 | * 取偶数
144 | * @param {*} str
145 | */
146 | static evenNumber(str = '') {
147 | const result = str.match(/\d+/g);
148 | if (result) {
149 | const n = parseInt(result[0]);
150 | if (n % 2 === 0) {
151 | return str;
152 | } else {
153 | str = str.replace(n, n + 1);
154 | return str;
155 | }
156 | } else {
157 | return str;
158 | }
159 |
160 | }
161 |
162 |
163 | }
--------------------------------------------------------------------------------
/packages/layer/src/iframe.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
78 |
--------------------------------------------------------------------------------
/packages/layer/src/layer.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @Author: 左盐
3 | * @Date: 2018-03-05 16:12:17
4 | * @Email: huabinglan@163.com
5 | * @Last modified by: 左盐
6 | * @Last modified time: 2018-03-31 10:39:54
7 | */
8 |
9 | import layerVue from './layer.vue';
10 | import maskVue from './mask.vue';
11 | let Notification = (function (Vue, globalOption = {
12 | msgtime: 1.5, //msg消失时间
13 | }) {
14 | let NotificationConstructor = Vue.extend(layerVue);
15 | let maskLayer = Vue.extend(maskVue);
16 | let self = {};
17 | const defOptions = {
18 | type: 0, //0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层),5msg,6prompt
19 | title: '信息',
20 | content: '',
21 | area: 'auto',
22 | offset: 'auto',
23 | icon: -1,
24 | btn: '确定',
25 | time: 0,
26 | maxmin: false, //最大最小化
27 | shade: true,
28 | yes: '',
29 | cancel: '',
30 | tips: [0, {}], //支持上右下左四个方向,通过1-4进行方向设定,可以设定tips: [1, '#c00']
31 | tipsMore: false, //是否允许多个tips
32 | shadeClose: true,
33 | scrollbar: true, //是否允许浏览器出现滚动条:默认是允许
34 | resize: false //是否允许拉伸,默认是不允许
35 | };
36 | self.instances = {};
37 | self.instancesVue = [];
38 | self.iframeMinList = [];
39 | let seed = 0;
40 |
41 |
42 | /**
43 | * [function description]
44 | * @method function
45 | * @param {[type]} options [description]
46 | * @return {[type]} [description]
47 | */
48 | self.open = function (options) {
49 | options = mergeJson(options, defOptions);
50 | let id = `notification_${new Date().getTime()}_${seed++}`;
51 | options.id = id;
52 | options.layer = self;
53 | let instance = new NotificationConstructor({
54 | data: options
55 | });
56 | if (options.type == 2) {
57 | options.content.content = Vue.extend(options.content.content);
58 | }
59 | instance.id = id;
60 | instance.vm = instance.$mount();
61 | self.instances[id] = {
62 | inst: instance,
63 | type: options.type
64 | };
65 | document.body.appendChild(instance.vm.$el);
66 | self.instancesVue[id] = {
67 | 'mask': '',
68 | 'main': instance.vm,
69 | 'iframe': '',
70 | }
71 | if (options.shade) { //是否显示遮罩,始终添加遮罩
72 | // let layerMask = document.querySelector('.vl-notify-mask');
73 | // if (layerMask) { //layerMask
74 | // return;
75 | // document.body.removeChild(layerMask);
76 | // } else {
77 | let maskInstance = new maskLayer({
78 | data: options
79 | });
80 | maskInstance.vm = maskInstance.$mount();
81 | // document.body.appendChild(maskInstance.vm.$el);
82 | document.body.insertBefore(maskInstance.vm.$el, instance.vm.$el);
83 | self.instancesVue[id].mask = maskInstance.vm;
84 | // }
85 | }
86 | return id;
87 | };
88 | /**
89 | * alert
90 | * @param {[type]} content [description]
91 | * @param {[type]} options [description]
92 | * @param {[type]} yes [description]
93 | * @return {[type]} [description]
94 | */
95 | self.alert = function (content, options, yes) {
96 | switch (typeof (options)) {
97 | case 'function':
98 | yes = options;
99 | options = {};
100 | break;
101 | case 'object':
102 | break;
103 | default:
104 | options = {};
105 | break;
106 | }
107 | yes = typeof (yes) === 'function' ? yes : '';
108 |
109 | options.content = content || '';
110 | options.yes = yes;
111 | return self.open(options);
112 | }
113 | /**
114 | * alert
115 | * @param {[type]} content [description]
116 | * @param {[type]} options [description]
117 | * @param {[type]} yes [description]
118 | * @return {[type]} [description]
119 | */
120 | self.confirm = function (content, options, yes, cancel) {
121 | switch (typeof (options)) {
122 | case 'function':
123 | cancel = yes;
124 | yes = options;
125 | options = {};
126 | break;
127 | case 'object':
128 | break;
129 | default:
130 | options = {};
131 | break;
132 | }
133 | yes = typeof (yes) === 'function' ? yes : '';
134 | cancel = typeof (cancel) === 'function' ? cancel : 'cancel';
135 |
136 | options.content = content || '';
137 | options.yes = yes;
138 | options.cancel = cancel;
139 | return self.open(options);
140 | }
141 | /**
142 | * [function description]
143 | * @method function
144 | * @param {[type]} content [description]
145 | * @param {[type]} options [description]
146 | * @param {[type]} end [description]
147 | * @return {[type]} [description]
148 | */
149 | self.msg = function (content, options, end) {
150 | switch (typeof (options)) {
151 | case 'function':
152 | end = options;
153 | options = {};
154 | break;
155 | case 'object':
156 | break;
157 | default:
158 | options = {};
159 | break;
160 | }
161 | end = typeof (end) === 'function' ? end : '';
162 | options.type = 5;
163 | options.time = options.time ? options.time : globalOption.msgtime;
164 | options.content = content || 'this is a msg!!';
165 | options.yes = end;
166 | if (options.shade == undefined) {
167 | options.shade = false;
168 | }
169 | self.closeAll('msg');
170 | return self.open(options);
171 | }
172 | //loading
173 | self.loading = function (icon, options) {
174 | if (typeof (icon) === 'object') {
175 | options = icon;
176 | icon = 0;
177 | }
178 | options = options || {};
179 | options.icon = icon ? icon : 0;
180 | if (options.icon < 0 || options.icon > 2) {
181 | options.icon = 0;
182 | }
183 | if (!options.time) { //单位秒
184 | options.time = 100;
185 | }
186 | options.type = 3;
187 | if (options.shade == undefined) {
188 | options.shade = true;
189 | }
190 | if (options.shadeClose == undefined) {
191 | options.shadeClose = false;
192 | }
193 | return self.open(options);
194 | }
195 | /**
196 | * tips
197 | * @method function
198 | * @param {[type]} content [description]
199 | * @param {[type]} follow [description]
200 | * @param {[type]} options [description]
201 | * @return {[type]} [description]
202 | */
203 | self.tips = function (content, follow, options) {
204 | options = options || {};
205 | options.type = 4;
206 | options.content = content || '';
207 | options.title = follow || 'body';
208 | options.tips = options.tips || [0, {}];
209 | if (typeof (options.tips) !== 'object') {
210 | options.tips = [options.tips, {}];
211 | }
212 | if (options.shade == undefined) {
213 | options.shade = false;
214 | }
215 | if (!options.tipsMore) {
216 | self.closeAll('tips');
217 | }
218 | return self.open(options);
219 | }
220 | /**
221 | * [description]
222 | * @param {[type]} options [description]
223 | * @return {[type]} [description]
224 | */
225 | self.iframe = function (opt) {
226 | let option = {
227 | type: 2,
228 | content: opt.content,
229 | area: opt.area
230 | };
231 | option = mergeJson(option, opt);
232 | return self.open(option);
233 | }
234 | /**
235 | * 获取信息框
236 | */
237 | self.prompt = function (options = {
238 | formType: 1,
239 | value: ''
240 | }, yes = '', cancel = '', ) {
241 | switch (typeof (cancel)) {
242 | case 'object':
243 | options = cancel;
244 | break;
245 | }
246 | options.content = '';
247 | options.yes = yes;
248 | options.cancel = cancel;
249 | options.type = 6;
250 | //如果是textarea
251 | if (options.formType == 3) {
252 | if (!options.area) {
253 | options.area = ['500px', '500px'];
254 | }
255 | }
256 | // options.title = title || '';
257 | return self.open(options);
258 | }
259 | /**
260 | * 关闭一个弹窗
261 | * @param {[type]} id [description]
262 | * @return {[type]} [description]
263 | */
264 | self.close = function (id) {
265 | let oElm = document.getElementById(id);
266 | if (oElm) {
267 | document.body.removeChild(oElm);
268 | delete self.instances[id];
269 | self.instancesVue[id].main.$destroy();
270 | if (self.instancesVue[id].iframe != '') {
271 | const minindex = parseInt(self.instancesVue[id].main.$el.getAttribute('minindex') || -2);
272 | if (minindex > -1) {
273 | self.iframeMinList[minindex] = -1;
274 | }
275 | self.instancesVue[id].iframe.$destroy();
276 | }
277 | //取消隐藏滚动条
278 | if (!self.instancesVue[id].main.scrollbar) {
279 | let scrollbarCount = 0;
280 | for (let key in self.instancesVue) {
281 | if (!self.instancesVue[key].main.scrollbar) {
282 | scrollbarCount++;
283 | }
284 | }
285 | if (scrollbarCount === 1) {
286 | const htmlDom = document.getElementsByTagName("html")[0];
287 | htmlDom.style.marginRight = "auto";
288 | htmlDom.classList.remove('vl-html-scrollbar-hidden');
289 | }
290 | }
291 | //控制遮罩,删除掉当前的遮罩
292 | if (self.instancesVue[id].main.shade) {
293 | let layerMask = document.getElementById(id + '_mask');
294 | let maskId = id + '_mask';
295 | document.body.removeChild(layerMask);
296 | if (self.instancesVue[maskId]) {
297 | self.instancesVue[maskId].mask.$destroy();
298 | }
299 | }
300 | delete self.instancesVue[id];
301 | } else {
302 | setTimeout(function () {
303 | let oElm = document.getElementById(id);
304 | if (oElm) {
305 | document.body.removeChild(oElm);
306 | delete self.instances[id];
307 | self.instancesVue[id].main.$destroy();
308 | if (self.instancesVue[id].iframe != '') {
309 | self.instancesVue[id].iframe.$destroy();
310 | }
311 | }
312 | }, 200);
313 | }
314 | }
315 | /**
316 | * 关闭一个弹窗
317 | * @param {[type]} id [description]
318 | * @return {[type]} [description]
319 | */
320 | self.closeAll = function (type = -1) {
321 | let types = {
322 | 'alert': 0,
323 | 'page': 1,
324 | 'iframe': 2,
325 | 'loading': 3,
326 | 'tips': 4,
327 | 'msg': 5
328 | };
329 | if (type === -1) {
330 | for (let k in self.instances) {
331 | self.close(k);
332 | }
333 | } else {
334 | let targetType = types[type];
335 | for (let k in self.instances) {
336 | if (self.instances[k].type === targetType) {
337 | self.close(k);
338 | }
339 | }
340 | }
341 | }
342 | /**
343 | * 手动最大化
344 | */
345 | self.full = function (id = '') {
346 | document.querySelector('#' + id + ' .lv-icon-max').click();
347 | }
348 | /**
349 | * 手动最小化
350 | */
351 | self.min = function (id = '') {
352 | document.querySelector('#' + id + ' .lv-icon-mini').click();
353 | }
354 | /**
355 | * 手动最小化
356 | */
357 | self.restore = function (id = '') {
358 | document.querySelector('#' + id + ' .lv-icon-huanyuan').click();
359 | }
360 |
361 |
362 | /**
363 | * get offset
364 | */
365 | // function getOffset() {
366 | // let offset = [];
367 | // offset.push(document.body.clientWidth);
368 | // offset.push(document.body.clientHeight);
369 | // return offset;
370 | // }
371 |
372 | /**
373 | * 合并json
374 | * @method mergeJson
375 | * @param {[type]} optons [description]
376 | * @param {[type]} def [description]
377 | * @return {[type]} [description]
378 | */
379 | function mergeJson(options, def) {
380 | for (let key in def) {
381 | if (options[key] == undefined) {
382 | options[key] = def[key];
383 | }
384 | }
385 | return options;
386 | }
387 |
388 | return self;
389 | });
390 |
391 | // module.exports = Notification;
392 | export default Notification;
--------------------------------------------------------------------------------
/packages/layer/src/layer.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
73 |
74 |
78 |
--------------------------------------------------------------------------------
/packages/layer/src/loading.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
14 |
15 |
16 |
51 |
--------------------------------------------------------------------------------
/packages/layer/src/mask.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
71 |
72 |
83 |
--------------------------------------------------------------------------------
/packages/layer/src/msg.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
43 |
--------------------------------------------------------------------------------
/packages/layer/src/page.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
{{options.title}}
8 |
9 |
10 |
11 |
12 |
13 |
88 |
--------------------------------------------------------------------------------
/packages/layer/src/prompt.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
13 |
14 |
15 |
16 |
77 |
78 |
79 |
118 |
--------------------------------------------------------------------------------
/packages/layer/src/tips.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
18 |
19 |
20 |
131 |
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | vue-layer
9 |
10 |
11 |
12 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/vue.config.js:
--------------------------------------------------------------------------------
1 | const path = require('path')
2 | module.exports = {
3 | // 修改 pages 入口
4 | pages: {
5 | index: {
6 | entry: 'examples/main.js', // 入口
7 | template: 'public/index.html', // 模板
8 | filename: 'index.html' // 输出文件
9 | }
10 | },
11 | // 扩展 webpack 配置
12 | chainWebpack: config => {
13 | // @ 默认指向 src 目录,这里要改成 examples
14 | // 另外也可以新增一个 ~ 指向 packages
15 | config.resolve.alias
16 | .set('@', path.resolve('examples'))
17 | .set('~', path.resolve('packages'))
18 |
19 | // 把 packages 和 examples 加入编译,因为新增的文件默认是不被 webpack 处理的
20 | config.module
21 | .rule('js')
22 | .include.add(/packages/).end()
23 | .include.add(/examples/).end()
24 | .use('babel')
25 | .loader('babel-loader')
26 | .tap(options => {
27 | // 修改它的选项...
28 | return options
29 | })
30 | }
31 | }
--------------------------------------------------------------------------------
/wx.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zuoyanart/vue-layer/78857770435d0bff6e604687b96cb0f22c0d3a59/wx.jpg
--------------------------------------------------------------------------------