@lambo-design/shared 1.0.0-beta.17 → 1.0.0-beta.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/directives/index.js +23 -0
- package/directives/module/draggable.js +56 -0
- package/directives/module/permission.js +49 -0
- package/index.js +2 -1
- package/package.json +1 -1
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
const importDirective = Vue => {
|
|
2
|
+
const requireDirective = require.context(
|
|
3
|
+
// 其组件目录的相对路径
|
|
4
|
+
'./module',
|
|
5
|
+
// 是否查询其子目录
|
|
6
|
+
false,
|
|
7
|
+
// 匹配基础组件文件名的正则表达式
|
|
8
|
+
/[a-zA-Z]\w+\.(vue|js)$/
|
|
9
|
+
)
|
|
10
|
+
requireDirective.keys().forEach(fileName => {
|
|
11
|
+
// 获取组件配置
|
|
12
|
+
const directiveConfig = requireDirective(fileName)
|
|
13
|
+
|
|
14
|
+
// 获取组件的 PascalCase 命名
|
|
15
|
+
const directiveName = fileName
|
|
16
|
+
.split('/')
|
|
17
|
+
.pop()
|
|
18
|
+
.replace(/\.\w+$/, '')
|
|
19
|
+
Vue.directive(directiveName.toLowerCase(), directiveConfig.default || directiveConfig);
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export default importDirective
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import {on} from '../../utils/dom'
|
|
2
|
+
/**
|
|
3
|
+
* 拖拽指令 v-draggable="options"
|
|
4
|
+
* options = {
|
|
5
|
+
* trigger: /这里传入作为拖拽触发器的CSS选择器/,
|
|
6
|
+
* body: /这里传入需要移动容器的CSS选择器/,
|
|
7
|
+
* recover: /拖动结束之后是否恢复到原来的位置/
|
|
8
|
+
* }
|
|
9
|
+
*/
|
|
10
|
+
export default {
|
|
11
|
+
inserted: (el, binding, vnode) => {
|
|
12
|
+
let triggerDom = document.querySelector(binding.value.trigger)
|
|
13
|
+
triggerDom.style.cursor = 'move'
|
|
14
|
+
let bodyDom = document.querySelector(binding.value.body)
|
|
15
|
+
let pageX = 0
|
|
16
|
+
let pageY = 0
|
|
17
|
+
let transformX = 0
|
|
18
|
+
let transformY = 0
|
|
19
|
+
let canMove = false
|
|
20
|
+
const handleMousedown = e => {
|
|
21
|
+
let transform = /\(.*\)/.exec(bodyDom.style.transform)
|
|
22
|
+
if (transform) {
|
|
23
|
+
transform = transform[0].slice(1, transform[0].length - 1)
|
|
24
|
+
let splitxy = transform.split('px, ')
|
|
25
|
+
transformX = parseFloat(splitxy[0])
|
|
26
|
+
transformY = parseFloat(splitxy[1].split('px')[0])
|
|
27
|
+
}
|
|
28
|
+
pageX = e.pageX
|
|
29
|
+
pageY = e.pageY
|
|
30
|
+
canMove = true
|
|
31
|
+
}
|
|
32
|
+
const handleMousemove = e => {
|
|
33
|
+
let xOffset = e.pageX - pageX + transformX
|
|
34
|
+
let yOffset = e.pageY - pageY + transformY
|
|
35
|
+
/*if (e.pageX <= 0) {
|
|
36
|
+
xOffset = pageX
|
|
37
|
+
}*/
|
|
38
|
+
if (e.pageY <= 0) {
|
|
39
|
+
yOffset = transformY - pageY
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if (canMove) bodyDom.style.transform = `translate(${xOffset}px, ${yOffset}px)`
|
|
43
|
+
}
|
|
44
|
+
const handleMouseup = e => {
|
|
45
|
+
canMove = false
|
|
46
|
+
}
|
|
47
|
+
on(triggerDom, 'mousedown', handleMousedown)
|
|
48
|
+
on(document, 'mousemove', handleMousemove)
|
|
49
|
+
on(document, 'mouseup', handleMouseup)
|
|
50
|
+
},
|
|
51
|
+
update: (el, binding, vnode) => {
|
|
52
|
+
if (!binding.value.recover) return
|
|
53
|
+
let bodyDom = document.querySelector(binding.value.body)
|
|
54
|
+
bodyDom.style.transform = ''
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import config from "../../config/config";
|
|
2
|
+
|
|
3
|
+
const checkPermission = function (el, binding) {
|
|
4
|
+
el.style.display = "none"
|
|
5
|
+
const value = binding.value
|
|
6
|
+
const permissionInStore = sessionStorage.getItem(config.routerBase + "-permission");
|
|
7
|
+
if (permissionInStore) {
|
|
8
|
+
const permissionObj = JSON.parse(permissionInStore);
|
|
9
|
+
//判断是否以'/'为开头结尾
|
|
10
|
+
if (/(^\/.*\/$)/.test(value)) {
|
|
11
|
+
//去掉开头结尾的'/'
|
|
12
|
+
let regexStr = value.replace(/(^\/)|(\/$)/g,"");
|
|
13
|
+
|
|
14
|
+
regExCheck(el, permissionObj, regexStr)
|
|
15
|
+
} else {
|
|
16
|
+
normalCheck(el, permissionObj, value)
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const regExCheck = function (el, permissionObj, value) {
|
|
22
|
+
let regex = new RegExp(value,"i");
|
|
23
|
+
for (const item of permissionObj) {
|
|
24
|
+
if (item.permissionValue) {
|
|
25
|
+
if(regex.test(item.permissionValue)){
|
|
26
|
+
console.log(item.permissionValue)
|
|
27
|
+
el.style.display = '';
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const normalCheck = function (el, permissionObj, value) {
|
|
34
|
+
let permission = {};
|
|
35
|
+
for (const item of permissionObj) {
|
|
36
|
+
if (item.permissionValue) {
|
|
37
|
+
permission[item.permissionValue] = true;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
const have = permission[value]
|
|
41
|
+
if (have || value === "all") {
|
|
42
|
+
el.style.display = '';
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export default {
|
|
47
|
+
bind: checkPermission,
|
|
48
|
+
update: checkPermission
|
|
49
|
+
}
|
package/index.js
CHANGED