jobdone-shared-files 0.0.1-beta.2
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/ProjectManagement/projectNavbar.vue +168 -0
- package/README.md +27 -0
- package/common/directives/collapse.js +13 -0
- package/common/format.js +13 -0
- package/index.js +15 -0
- package/package.json +18 -0
- package/paginate.vue +139 -0
- package/style/css/vue-loading-overlay/index.css +40 -0
- package/style/scss/Bootstrap/_functions.scss +302 -0
- package/style/scss/Bootstrap/_mixins.scss +42 -0
- package/style/scss/Bootstrap/mixins/_alert.scss +18 -0
- package/style/scss/Bootstrap/mixins/_backdrop.scss +14 -0
- package/style/scss/Bootstrap/mixins/_banner.scss +7 -0
- package/style/scss/Bootstrap/mixins/_border-radius.scss +78 -0
- package/style/scss/Bootstrap/mixins/_box-shadow.scss +18 -0
- package/style/scss/Bootstrap/mixins/_breakpoints.scss +127 -0
- package/style/scss/Bootstrap/mixins/_buttons.scss +70 -0
- package/style/scss/Bootstrap/mixins/_caret.scss +69 -0
- package/style/scss/Bootstrap/mixins/_clearfix.scss +9 -0
- package/style/scss/Bootstrap/mixins/_color-mode.scss +21 -0
- package/style/scss/Bootstrap/mixins/_color-scheme.scss +7 -0
- package/style/scss/Bootstrap/mixins/_container.scss +11 -0
- package/style/scss/Bootstrap/mixins/_deprecate.scss +10 -0
- package/style/scss/Bootstrap/mixins/_forms.scss +153 -0
- package/style/scss/Bootstrap/mixins/_gradients.scss +47 -0
- package/style/scss/Bootstrap/mixins/_grid.scss +151 -0
- package/style/scss/Bootstrap/mixins/_image.scss +16 -0
- package/style/scss/Bootstrap/mixins/_list-group.scss +27 -0
- package/style/scss/Bootstrap/mixins/_lists.scss +7 -0
- package/style/scss/Bootstrap/mixins/_pagination.scss +10 -0
- package/style/scss/Bootstrap/mixins/_reset-text.scss +17 -0
- package/style/scss/Bootstrap/mixins/_resize.scss +6 -0
- package/style/scss/Bootstrap/mixins/_table-variants.scss +24 -0
- package/style/scss/Bootstrap/mixins/_text-truncate.scss +8 -0
- package/style/scss/Bootstrap/mixins/_transition.scss +26 -0
- package/style/scss/Bootstrap/mixins/_utilities.scss +97 -0
- package/style/scss/Bootstrap/mixins/_visually-hidden.scss +29 -0
- package/style/scss/Bootstrap/vendor/_rfs.scss +354 -0
- package/style/scss/Settings/_Mixins.scss +228 -0
- package/style/scss/Settings/_basic-import.scss +5 -0
- package/style/scss/Settings/_bs-variables-dark.scss +70 -0
- package/style/scss/Settings/_bs-variables.scss +1703 -0
- package/style/scss/Settings/_color-mode.scss +123 -0
- package/style/scss/Settings/_custom-variables.scss +7 -0
- package/tagEditor.vue +264 -0
- package/tree.vue +62 -0
- package/treeItem.vue +367 -0
- package/vueLoadingOverlay.vue +77 -0
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="bg-gray-000 sticky-top">
|
|
3
|
+
<nav class="navbar navbar-main navbar-expand-lg border-bottoms py-0" data-bs-theme="dark">
|
|
4
|
+
<div class="d-flex align-items-center flex-fill w-100">
|
|
5
|
+
<div class="border-end">
|
|
6
|
+
<a :href="arrowBackLink" class="btn btn-normal btn-square"><span class="material-icons">arrow_back</span></a>
|
|
7
|
+
</div>
|
|
8
|
+
<span class="fs-6 mb-0 mx-4 text-nowrap text-project-title"><b>{{projectInfo.name}}</b></span>
|
|
9
|
+
<!--TODO: 解決 overflow scroll 與 dropdown 衝突-->
|
|
10
|
+
<div class="flex-grow-1 text-nowrap">
|
|
11
|
+
<div class="d-flex flex-grow-1 border-start">
|
|
12
|
+
<nav class="navbar-nav navbar-main navbar-line navbar-line-lg">
|
|
13
|
+
<!-- <div class="nav-item navbar-line-item btn nav-link border-0 dropdown" :class="{'active':item.isActive}" v-for="item in menuModules">
|
|
14
|
+
<a :href="item.moduleUrl" class="dropdown-link" v-if="item.moduleUrl">
|
|
15
|
+
<span class="material-icons icon-18 me-2" v-if="item.moduleIcon">{{item.moduleIcon}}</span>
|
|
16
|
+
{{item.moduleName}}
|
|
17
|
+
</a>
|
|
18
|
+
<span class="dropdown-link dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false" v-else>
|
|
19
|
+
<span class="material-icons icon-18 me-2" v-if="item.moduleIcon">{{item.moduleIcon}}</span>
|
|
20
|
+
{{item.moduleName}}
|
|
21
|
+
</span>
|
|
22
|
+
<ul class="dropdown-menu" v-if="item.moduleApps.length!==0">
|
|
23
|
+
<li><a class="dropdown-item" href="#" v-for="app in item.moduleApps">{{app.appName}}</a></li>
|
|
24
|
+
</ul>
|
|
25
|
+
</div> -->
|
|
26
|
+
<button type="button" class="nav-item navbar-line-item btn nav-link letter-spacing-1 border-0 active">
|
|
27
|
+
<a :href="'/ProjectManagement/ProjectInfo?id=' + projectInfo.id">
|
|
28
|
+
專案資訊
|
|
29
|
+
</a>
|
|
30
|
+
</button>
|
|
31
|
+
<div class="nav-item navbar-line-item btn nav-link border-0 dropdown" :class="{'active':navLinkObj.isActive}">
|
|
32
|
+
<a :href="navLinkObj.url + '?projectId=' + projectInfo.id" class="dropdown-link" v-if="navLinkObj.selfIsApp">
|
|
33
|
+
<span class="material-icons icon-18 me-2" v-if="navLinkObj.icon">{{navLinkObj.icon}}</span>
|
|
34
|
+
{{navLinkObj.name}}
|
|
35
|
+
</a>
|
|
36
|
+
<span class="dropdown-link dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false" v-else>
|
|
37
|
+
<span class="material-icons icon-18 me-2" v-if="navLinkObj.icon">{{navLinkObj.icon}}</span>
|
|
38
|
+
{{ navLinkObj.name}}
|
|
39
|
+
</span>
|
|
40
|
+
<ul class="dropdown-menu" v-if="navLinkObj.apps.length > 0">
|
|
41
|
+
<li>
|
|
42
|
+
<a class="dropdown-item" :href="app.url + '?projectId=' + projectInfo.id" v-for="(app, index) in navLinkObj.apps" :key="index">{{app.name}}</a>
|
|
43
|
+
</li>
|
|
44
|
+
</ul>
|
|
45
|
+
</div>
|
|
46
|
+
<!--工單流程寫死?-->
|
|
47
|
+
<div class="nav-item navbar-line-item btn nav-link border-0 dropdown">
|
|
48
|
+
<a href="#" class="dropdown-link">
|
|
49
|
+
<span class="material-icons icon-18 me-2">rebase_edit</span>
|
|
50
|
+
工單流程
|
|
51
|
+
</a>
|
|
52
|
+
</div>
|
|
53
|
+
</nav>
|
|
54
|
+
</div>
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
57
|
+
</nav>
|
|
58
|
+
<div class="info-project d-flex align-items-center bg-primary bg-opacity-25 border-top border-bottom border-primary border-opacity-25 py-2">
|
|
59
|
+
<!--TODO: 如果是公共工程才顯示 可能有2種 (公共工程/建築物公共工程)
|
|
60
|
+
<span class="badge rounded-pill text-primary bg-primary bg-opacity-10 border border-primary border-opacity-50 me-4">建築物公共工程</span>-->
|
|
61
|
+
<small class="d-flex me-4" v-if="projectInfo.caseNo">
|
|
62
|
+
<b class="me-2">案號</b>
|
|
63
|
+
<span>{{projectInfo.caseNo}}</span>
|
|
64
|
+
</small>
|
|
65
|
+
<small class="d-flex me-4">
|
|
66
|
+
<b class="me-2">工期</b>
|
|
67
|
+
<span>{{formatDate(projectInfo.beginDT)}} - {{formatDate(projectInfo.endDT)}} ({{projectInfo.approvedWorkingPeriod}}天)</span>
|
|
68
|
+
</small>
|
|
69
|
+
<small class="d-flex" v-if="projectInfo.extendToDT">
|
|
70
|
+
<b class="me-2">展延</b>
|
|
71
|
+
<span>{{ formatDate(projectInfo.extendToDT) }}{{}} ({{projectInfo.extendDays}}天)</span>
|
|
72
|
+
</small>
|
|
73
|
+
<small class="d-flex ms-auto">
|
|
74
|
+
<slot></slot>
|
|
75
|
+
</small>
|
|
76
|
+
</div>
|
|
77
|
+
</div>
|
|
78
|
+
</template>
|
|
79
|
+
|
|
80
|
+
<script>
|
|
81
|
+
import { formatDate } from '../common/format';
|
|
82
|
+
import { onMounted, reactive } from 'vue';
|
|
83
|
+
import axios from 'axios';
|
|
84
|
+
|
|
85
|
+
export default {
|
|
86
|
+
props: {
|
|
87
|
+
arrowBackLink: {
|
|
88
|
+
type: String,
|
|
89
|
+
required: true
|
|
90
|
+
},
|
|
91
|
+
projectInfo: {
|
|
92
|
+
type: Object,
|
|
93
|
+
required: true
|
|
94
|
+
},
|
|
95
|
+
apiUrl: {
|
|
96
|
+
type: String,
|
|
97
|
+
required: true
|
|
98
|
+
}
|
|
99
|
+
// menuModules: {
|
|
100
|
+
// type: Array,
|
|
101
|
+
// default: function () {
|
|
102
|
+
// return [];
|
|
103
|
+
// }
|
|
104
|
+
// }
|
|
105
|
+
},
|
|
106
|
+
setup(props) {
|
|
107
|
+
//TBD
|
|
108
|
+
//projectInfo from props api
|
|
109
|
+
//menuModules from props api
|
|
110
|
+
const navLinkObj = reactive({
|
|
111
|
+
apps: [],
|
|
112
|
+
icon: '',
|
|
113
|
+
name: '',
|
|
114
|
+
url: '',
|
|
115
|
+
selfIsApp: false
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
onMounted(() => {
|
|
119
|
+
axios.get(props.apiUrl)
|
|
120
|
+
.then(res => {
|
|
121
|
+
if (res.status == 200) {
|
|
122
|
+
Object.assign(navLinkObj, res.data);
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
return {
|
|
129
|
+
formatDate,
|
|
130
|
+
navLinkObj
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
</script>
|
|
135
|
+
|
|
136
|
+
<style scoped lang="scss">
|
|
137
|
+
@import "../style/scss/Settings/basic-import";
|
|
138
|
+
|
|
139
|
+
.text-project-title {
|
|
140
|
+
color: lighten($primary, 8%);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.navbar[data-bs-theme="dark"] {
|
|
144
|
+
--bs-body-color: var(--gray-500);
|
|
145
|
+
color: var(--bs-body-color);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.navbar-main {
|
|
149
|
+
background-color: var(--gray-800);
|
|
150
|
+
|
|
151
|
+
.navbar-line-item {
|
|
152
|
+
--bs-navbar-nav-link-padding-x: 1rem;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.dropdown-menu {
|
|
156
|
+
max-height: 80vh;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
.navbar-line-item.dropdown .dropdown-menu {
|
|
161
|
+
z-index: $zindex-sticky + 1;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
.info-project {
|
|
165
|
+
padding-left: 5.25rem;
|
|
166
|
+
padding-right: 1rem;
|
|
167
|
+
}
|
|
168
|
+
</style>
|
package/README.md
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# 共用清單
|
|
2
|
+
如果要使用 vue 檔,需要直接引用 node_modules 裡的檔案,例如:
|
|
3
|
+
`import OOXX from '../../node_modules/jobdone-shared-js/OOXX.vue';`
|
|
4
|
+
|
|
5
|
+
## paginate
|
|
6
|
+
可設定尺寸:`container-class`
|
|
7
|
+
- 小:`pagination-sm`
|
|
8
|
+
- 中:預設
|
|
9
|
+
- 大:`pagination-lg`
|
|
10
|
+
|
|
11
|
+
## tagEditor
|
|
12
|
+
標籤
|
|
13
|
+
|
|
14
|
+
## tree
|
|
15
|
+
尺寸:`size`
|
|
16
|
+
- 小: `sm`
|
|
17
|
+
- 中:預設
|
|
18
|
+
|
|
19
|
+
背景色:`bgColor`
|
|
20
|
+
- 預設用在灰色背景上
|
|
21
|
+
- 用在白背景上:`white`
|
|
22
|
+
|
|
23
|
+
## vueLoadingOverlay
|
|
24
|
+
指定樣式的 vue-loading-overlay
|
|
25
|
+
|
|
26
|
+
## ProjectManagement/projectNavbar
|
|
27
|
+
專案資訊 Navbar
|
package/common/format.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import dayjs from 'dayjs';
|
|
2
|
+
import { computed } from 'vue';
|
|
3
|
+
|
|
4
|
+
// 時間格式
|
|
5
|
+
export const formatDate = (value) => dayjs(value).format('YYYY-MM-DD');
|
|
6
|
+
export const formatDT = (value) => dayjs(value).format('YYYY-MM-DD HH:mm:ss');
|
|
7
|
+
|
|
8
|
+
// 千分位格式
|
|
9
|
+
export const formatThousands = computed(() => {
|
|
10
|
+
return function(number){
|
|
11
|
+
return new Intl.NumberFormat().format(number);
|
|
12
|
+
}
|
|
13
|
+
});
|
package/index.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import paginate from "./paginate.vue";
|
|
2
|
+
import tagEditor from "./tagEditor.vue";
|
|
3
|
+
import tree from "./tree.vue";
|
|
4
|
+
import vueLoadingOverlay from "./vueLoadingOverlay.vue";
|
|
5
|
+
import projectNavbar from "./ProjectManagement/projectNavbar.vue";
|
|
6
|
+
|
|
7
|
+
export default {
|
|
8
|
+
paginate,
|
|
9
|
+
tagEditor,
|
|
10
|
+
tree,
|
|
11
|
+
vueLoadingOverlay,
|
|
12
|
+
|
|
13
|
+
// ProjectManagement
|
|
14
|
+
projectNavbar
|
|
15
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "jobdone-shared-files",
|
|
3
|
+
"version": "0.0.1-beta.2",
|
|
4
|
+
"description": "Shared JS for Jobdone Enterprise.",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
|
8
|
+
},
|
|
9
|
+
"author": "Pyramius",
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"axios": "^1.2.2",
|
|
13
|
+
"vue": "^3.2.45",
|
|
14
|
+
"vue-loading-overlay": "^6.0.3",
|
|
15
|
+
"bootstrap": "^5.3.0-alpha1",
|
|
16
|
+
"dayjs": "^1.11.7"
|
|
17
|
+
}
|
|
18
|
+
}
|
package/paginate.vue
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<ul class="pagination pagination-round mb-0" :class="containerClass">
|
|
3
|
+
<li class="page-item" :class="{'disabled':!pagination.ShowToPrev}">
|
|
4
|
+
<button type="button" class="page-link" @click="toPage(1)">
|
|
5
|
+
<span class="material-icons">first_page</span>
|
|
6
|
+
</button>
|
|
7
|
+
</li>
|
|
8
|
+
<li class="page-item" :class="{'disabled':!pagination.ShowToPrev}">
|
|
9
|
+
<button type="button" class="page-link" @click="toPage(currentPage-1)">
|
|
10
|
+
<span class="material-icons icon-18">chevron_left</span>
|
|
11
|
+
</button>
|
|
12
|
+
</li>
|
|
13
|
+
<li class="page-item page-item-ellipsis" v-if="pagination.ShowPrevPageMore">
|
|
14
|
+
<span>⋯</span>
|
|
15
|
+
</li>
|
|
16
|
+
<li class="page-item" v-for="n in range" :class="{'active':n===currentPage}">
|
|
17
|
+
<button type="button" class="page-link" @click="toPage(n)">{{n}}</button>
|
|
18
|
+
</li>
|
|
19
|
+
<li class="page-item page-item-ellipsis" v-if="pagination.ShowNextPageMore">
|
|
20
|
+
<span>⋯</span>
|
|
21
|
+
</li>
|
|
22
|
+
<li class="page-item" :class="{'disabled':!pagination.ShowToNext}">
|
|
23
|
+
<button type="button" class="page-link" @click="toPage(currentPage+1)">
|
|
24
|
+
<span class="material-icons icon-18">chevron_right</span>
|
|
25
|
+
</button>
|
|
26
|
+
</li>
|
|
27
|
+
<li class="page-item" :class="{'disabled':!pagination.ShowToNext}">
|
|
28
|
+
<button type="button" class="page-link" @click="toPage(totalPages)">
|
|
29
|
+
<span class="material-icons">last_page</span>
|
|
30
|
+
</button>
|
|
31
|
+
</li>
|
|
32
|
+
</ul>
|
|
33
|
+
</template>
|
|
34
|
+
|
|
35
|
+
<script>
|
|
36
|
+
import { computed } from 'vue';
|
|
37
|
+
export default {
|
|
38
|
+
props: {
|
|
39
|
+
currentPage: {
|
|
40
|
+
type: Number,
|
|
41
|
+
default: 1
|
|
42
|
+
},
|
|
43
|
+
totalPages: {
|
|
44
|
+
type: Number,
|
|
45
|
+
default: 1
|
|
46
|
+
},
|
|
47
|
+
pageRange: {
|
|
48
|
+
type: Number,
|
|
49
|
+
default: 5
|
|
50
|
+
},
|
|
51
|
+
containerClass: {
|
|
52
|
+
type: String,
|
|
53
|
+
default: ""
|
|
54
|
+
},
|
|
55
|
+
pageItemClass: {
|
|
56
|
+
type: String,
|
|
57
|
+
default: ""
|
|
58
|
+
},
|
|
59
|
+
clickHandler: {
|
|
60
|
+
type: Function
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
setup(props, { emit}) {
|
|
64
|
+
const range = computed(() => {
|
|
65
|
+
let min = 1;
|
|
66
|
+
let max = 1;
|
|
67
|
+
if (props.pageRange < props.totalPages) {
|
|
68
|
+
max = props.currentPage + Math.floor(props.pageRange / 2);
|
|
69
|
+
max = (max > props.totalPages) ? props.totalPages : max;
|
|
70
|
+
if (max - props.pageRange < 1) {
|
|
71
|
+
min = 1;
|
|
72
|
+
max = props.pageRange;
|
|
73
|
+
} else {
|
|
74
|
+
min = max - props.pageRange + 1;
|
|
75
|
+
}
|
|
76
|
+
} else {
|
|
77
|
+
min = 1;
|
|
78
|
+
max = props.totalPages;
|
|
79
|
+
}
|
|
80
|
+
const range = [];
|
|
81
|
+
for (var i = min; i <= max; i++) {
|
|
82
|
+
range.push(i);
|
|
83
|
+
}
|
|
84
|
+
return range;
|
|
85
|
+
});
|
|
86
|
+
const pagination = computed(() => {
|
|
87
|
+
return {
|
|
88
|
+
ShowToPrev: props.currentPage > 1,
|
|
89
|
+
ShowPrevPageMore: range.value[0] > 2,
|
|
90
|
+
ShowNextPageMore: range.value[range.value.length - 1] < props.totalPages - 1,
|
|
91
|
+
ShowToNext: props.currentPage < props.totalPages
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
const toPage = (pageNum) => {
|
|
95
|
+
emit('to-page', pageNum);
|
|
96
|
+
}
|
|
97
|
+
return {
|
|
98
|
+
range,
|
|
99
|
+
pagination,
|
|
100
|
+
toPage
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
</script>
|
|
105
|
+
|
|
106
|
+
<style scoped lang="scss">
|
|
107
|
+
@import "./style/scss/Settings/basic-import";
|
|
108
|
+
|
|
109
|
+
.page-link{
|
|
110
|
+
height: 100%;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.pagination.pagination-round .page-item{
|
|
114
|
+
&:not(:last-child){
|
|
115
|
+
margin-right: .5em;
|
|
116
|
+
}
|
|
117
|
+
.page-link{
|
|
118
|
+
@include flex-center();
|
|
119
|
+
@include size(35px);
|
|
120
|
+
border-radius: 50%;
|
|
121
|
+
overflow: hidden;
|
|
122
|
+
.material-icons{
|
|
123
|
+
font-size: 130%;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
.pagination-sm.pagination-round .page-item .page-link{
|
|
128
|
+
@include size(30px);
|
|
129
|
+
}
|
|
130
|
+
.pagination-lg.pagination-round .page-item .page-link{
|
|
131
|
+
@include size(60px);
|
|
132
|
+
}
|
|
133
|
+
.page-item-ellipsis{
|
|
134
|
+
display: flex;
|
|
135
|
+
align-items: center;
|
|
136
|
+
color: var(--gray-500);
|
|
137
|
+
font-size: var(--bs-pagination-font-size);
|
|
138
|
+
}
|
|
139
|
+
</style>
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
.vl-shown {
|
|
2
|
+
overflow: hidden;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.vl-overlay {
|
|
6
|
+
bottom: 0;
|
|
7
|
+
left: 0;
|
|
8
|
+
position: absolute;
|
|
9
|
+
right: 0;
|
|
10
|
+
top: 0;
|
|
11
|
+
align-items: center;
|
|
12
|
+
display: none;
|
|
13
|
+
justify-content: center;
|
|
14
|
+
overflow: hidden;
|
|
15
|
+
z-index: 9999;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.vl-overlay.vl-active {
|
|
19
|
+
display: flex;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.vl-overlay.vl-full-page {
|
|
23
|
+
z-index: 9999;
|
|
24
|
+
position: fixed;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.vl-overlay .vl-background {
|
|
28
|
+
bottom: 0;
|
|
29
|
+
left: 0;
|
|
30
|
+
position: absolute;
|
|
31
|
+
right: 0;
|
|
32
|
+
top: 0;
|
|
33
|
+
background: #fff;
|
|
34
|
+
opacity: 0.5;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.vl-overlay .vl-icon, .vl-parent {
|
|
38
|
+
position: relative;
|
|
39
|
+
}
|
|
40
|
+
|