jobdone-shared-files 0.0.1-beta.80 → 0.0.1-beta.82

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.
Files changed (37) hide show
  1. package/ProjectManagement/projectNavbar.vue +116 -84
  2. package/README.md +1 -0
  3. package/common/directives/collapse.js +12 -12
  4. package/common/directives/popovers.js +10 -10
  5. package/common/directives/tooltip.js +10 -10
  6. package/common/format.js +26 -26
  7. package/index.js +14 -14
  8. package/lightboxWithOverview.vue +131 -131
  9. package/package.json +19 -19
  10. package/paginate.vue +138 -138
  11. package/style/css/vue-loading-overlay/index.css +40 -40
  12. package/style/scss/Common/Animation.scss +5 -5
  13. package/style/scss/Common/SelectableTable.scss +30 -30
  14. package/style/scss/Common/filepond.scss +27 -27
  15. package/style/scss/Common/thumbnail-group.scss +14 -14
  16. package/style/scss/Layout/LayoutBase.scss +1014 -1014
  17. package/style/scss/Layout/LayoutMobile.scss +202 -202
  18. package/style/scss/Layout/LayoutProject.scss +122 -122
  19. package/style/scss/Layout/LayoutSinglePage.scss +13 -13
  20. package/style/scss/Layout/LayoutTwoColumn.scss +56 -56
  21. package/style/scss/Settings/_Mixins.scss +229 -229
  22. package/style/scss/Settings/_MobileVariables.scss +11 -11
  23. package/style/scss/Settings/_basic-import.scss +5 -5
  24. package/style/scss/Settings/_bs-variables-dark.scss +70 -70
  25. package/style/scss/Settings/_bs-variables.scss +1743 -1743
  26. package/style/scss/Settings/_color-mode.scss +122 -122
  27. package/style/scss/Settings/_custom-variables.scss +13 -13
  28. package/tagEditor.vue +263 -263
  29. package/tree.vue +69 -69
  30. package/treeItem.vue +366 -366
  31. package/vueLoadingOverlay.vue +70 -70
  32. package/.vs/VSWorkspaceState.json +0 -6
  33. package/.vs/jobdone_sharejs/FileContentIndex/a973f22d-a16a-4ca9-ab6a-75ab92ec6af7.vsidx +0 -0
  34. package/.vs/jobdone_sharejs/FileContentIndex/bacf95a3-2185-41c2-b12a-e93bb40f2204.vsidx +0 -0
  35. package/.vs/jobdone_sharejs/config/applicationhost.config +0 -1021
  36. package/.vs/jobdone_sharejs/v17/.wsuo +0 -0
  37. package/.vs/slnx.sqlite +0 -0
@@ -12,11 +12,11 @@
12
12
  <div class="border-end">
13
13
  <a :href="arrowBackLink" class="btn btn-normal btn-square" title="離開專案"><span class="material-icons">arrow_back</span></a>
14
14
  </div>
15
- <span class="fs-6 mb-0 mx-4 text-nowrap text-project-title"><b>{{projectInfo?.name}}</b></span>
15
+ <span class="fs-6 mb-0 mx-4 text-nowrap text-project-title text-overflow"><b class="">{{projectInfo?.name}}</b></span>
16
16
  <!--TODO: 解決 overflow scroll 與 dropdown 衝突-->
17
17
  <div class="flex-grow-1 text-nowrap">
18
18
  <div class="d-flex flex-grow-1 border-start">
19
- <nav class="navbar-nav navbar-main navbar-line navbar-line-lg">
19
+ <nav class="navbar-nav navbar-main navbar-tab navbar-line navbar-line-lg">
20
20
  <div class="nav-item navbar-line-item btn nav-link border-0 dropdown"
21
21
  :class="{'active': isActive(null)}">
22
22
  <a class="dropdown-link" :href="finalRootDomain + '/ProjectManagement/ProjectInfo?id=' + projectId">
@@ -30,12 +30,15 @@
30
30
  {{ navLinkObj?.moduleLink?.name }}
31
31
  </a>
32
32
  <span class="dropdown-link dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false" v-else>
33
- <span class="material-icons icon-18 me-2">{{ navLinkObj?.moduleLink?.icon }}</span>
34
- {{ navLinkObj?.moduleLink?.name }}
33
+ <span class="material-icons icon-18 icon-shine me-1">{{ navLinkObj?.moduleLink?.icon }}</span>
34
+ 功能選單
35
35
  </span>
36
- <ul class="dropdown-menu" :class="{'p-0': navLinkObj?.moduleLink?.apps?.length??0 == 0}">
37
- <li v-if="navLinkObj?.moduleLink?.apps?.length??0 > 0">
38
- <a class="dropdown-item" :href="app.url + '?projectId=' + projectId" v-for="(app, index) in navLinkObj.moduleLink.apps" :key="index">{{app.name}}</a>
36
+ <ul class="dropdown-menu" :class="{'p-0': navLinkObj?.moduleLink?.apps?.length == 0}">
37
+ <li v-if="navLinkObj?.moduleLink?.apps?.length > 0">
38
+ <a class="dropdown-item" :href="app.url + '?projectId=' + projectId" v-for="(app, index) in navLinkObj.moduleLink.apps" :key="index">
39
+ <span class="material-icons icon-18 align-middle me-2">{{app.icon}}</span>
40
+ <span class="align-middle">{{app.name}}</span>
41
+ </a>
39
42
  </li>
40
43
  </ul>
41
44
  </div>
@@ -50,15 +53,19 @@
50
53
  </nav>
51
54
  <nav class="navbar-nav navbar-main navbar-line navbar-line-lg ms-auto">
52
55
  <div class="nav-item navbar-line-item btn nav-link border-0 dropdown">
53
- <a class="dropdown-link" :href="finalRootDomain + '/Profile'">
54
- <div class="thumbnail-content thumbnail-32 rounded-circle me-1" :style="'background-image: url(' + userPicture + ');'"></div>
55
- <span class="text-user-name text-overflow">{{userId}}</span>
56
- </a>
57
- </div>
58
- <div class="nav-item navbar-line-item btn nav-link border-0 dropdown">
59
- <a class="dropdown-link" :href="logOutLink">
60
- 登出
61
- </a>
56
+ <span class="dropdown-link dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
57
+ <div class="thumbnail-content thumbnail-32 rounded-circle me-2" :style="'background-image: url(' + userPicture + ');'"></div>
58
+ {{userId}}
59
+ </span>
60
+ <ul class="dropdown-menu dropdown-menu-end">
61
+ <li>
62
+ <a class="dropdown-item" :href="finalRootDomain + '/Profile'">個人資訊</a>
63
+ </li>
64
+ <li><hr class="dropdown-divider"></li>
65
+ <li>
66
+ <a class="dropdown-item" :href="logOutLink">登出</a>
67
+ </li>
68
+ </ul>
62
69
  </div>
63
70
  </nav>
64
71
  </div>
@@ -72,6 +79,7 @@
72
79
  <span class="placeholder placeholder-xs w-6rem"></span>
73
80
  </div>
74
81
  <div class="navbar-content opacity-0 d-flex align-items-center">
82
+ <span class="badge badge-outline-purple me-3">{{ navLinkObj?.moduleLink?.name }}</span>
75
83
  <small class="d-flex me-4" v-if="projectInfo?.caseNo">
76
84
  <b class="me-2">案號</b>
77
85
  <span>{{projectInfo?.caseNo}}</span>
@@ -144,37 +152,37 @@
144
152
  const projectInfo = ref({});
145
153
  const navLinkObj = ref({});
146
154
  const finalRootDomain = computed(() => {
147
- if (props.rootDomain.substr(-1) === "/") {
148
- return props.rootDomain.slice(0, -1);
155
+ if (props.rootDomain.substr(-1) === "/") {
156
+ return props.rootDomain.slice(0, -1);
149
157
  }
150
158
  return props.rootDomain;
151
159
  });
152
160
 
153
161
  const isActive = (target) => {
154
- if (target === null) {
155
- return target === null && !props.activeClientId;
162
+ if (target === null) {
163
+ return target === null && !props.activeClientId;
156
164
  }
157
- if (typeof target === 'object') {
158
- return !!props.activeClientId && (target.clientId === props.activeClientId || target.apps.some(x => x.id == props.activeClientId))
165
+ if (typeof target === 'object') {
166
+ return !!props.activeClientId && (target.clientId === props.activeClientId || target.apps.some(x => x.clientId == props.activeClientId))
159
167
  }
160
- if (!!props.activeClientId && target == props.activeClientId) {
161
- return true;
168
+ if (!!props.activeClientId && target == props.activeClientId) {
169
+ return true;
162
170
  }
163
171
  return false;
164
172
  }
165
173
 
166
174
  onMounted(async () => {
167
- try {
168
- switch (typeof props.projectInfo) {
169
- case 'string':
170
- axios.get(props.projectInfo).then((res) => {
171
- projectInfo.value = res.data;
172
- });
173
- break;
174
- case 'object':
175
- projectInfo.value = props.projectInfo;
176
- break;
177
- default:
175
+ try {
176
+ switch (typeof props.projectInfo) {
177
+ case 'string':
178
+ axios.get(props.projectInfo).then((res) => {
179
+ projectInfo.value = res.data;
180
+ });
181
+ break;
182
+ case 'object':
183
+ projectInfo.value = props.projectInfo;
184
+ break;
185
+ default:
178
186
  projectInfo.value = {
179
187
  caseNo: '',
180
188
  name: '',
@@ -183,10 +191,10 @@
183
191
  approvedWorkingPeriod: '',
184
192
  extendToDT: '',
185
193
  extendDays: ''
186
- };
187
- break;
188
- }
189
- } catch (e) {
194
+ };
195
+ break;
196
+ }
197
+ } catch (e) {
190
198
  projectInfo.value = {
191
199
  caseNo: '',
192
200
  name: '',
@@ -195,48 +203,48 @@
195
203
  approvedWorkingPeriod: '',
196
204
  extendToDT: '',
197
205
  extendDays: ''
198
- };
206
+ };
199
207
  }
200
- try {
201
- switch (typeof props.projectApps) {
202
- case 'string':
203
- axios.get(props.projectApps).then((res) => {
204
- navLinkObj.value = res.data;
205
- });
206
- break;
207
- case 'object':
208
- navLinkObj.value = props.projectApps;
209
- break;
210
- default:
211
- navLinkObj.value = {
212
- "moduleLink": {
213
- "apps": [],
214
- "icon": "edit_document",
215
- "name": "Module",
216
- "url": "",
217
- "mobileUrl": "",
218
- "mobileAppRoute": "",
219
- "clientId": null,
220
- "selfIsApp": false
221
- },
222
- "generalLink": []
223
- }
224
- break;
225
- }
226
- } catch (e) {
227
- navLinkObj.value = {
228
- "moduleLink": {
229
- "apps": [],
230
- "icon": "edit_document",
231
- "name": "Module",
232
- "url": "",
233
- "mobileUrl": "",
234
- "mobileAppRoute": "",
235
- "clientId": null,
236
- "selfIsApp": false
237
- },
238
- "generalLink": []
239
- }
208
+ try {
209
+ switch (typeof props.projectApps) {
210
+ case 'string':
211
+ axios.get(props.projectApps).then((res) => {
212
+ navLinkObj.value = res.data;
213
+ });
214
+ break;
215
+ case 'object':
216
+ navLinkObj.value = props.projectApps;
217
+ break;
218
+ default:
219
+ navLinkObj.value = {
220
+ "moduleLink": {
221
+ "apps": [],
222
+ "icon": "edit_document",
223
+ "name": "Module",
224
+ "url": "",
225
+ "mobileUrl": "",
226
+ "mobileAppRoute": "",
227
+ "clientId": null,
228
+ "selfIsApp": false
229
+ },
230
+ "generalLink": []
231
+ }
232
+ break;
233
+ }
234
+ } catch (e) {
235
+ navLinkObj.value = {
236
+ "moduleLink": {
237
+ "apps": [],
238
+ "icon": "edit_document",
239
+ "name": "Module",
240
+ "url": "",
241
+ "mobileUrl": "",
242
+ "mobileAppRoute": "",
243
+ "clientId": null,
244
+ "selfIsApp": false
245
+ },
246
+ "generalLink": []
247
+ }
240
248
  }
241
249
 
242
250
 
@@ -291,24 +299,48 @@
291
299
  }
292
300
 
293
301
  .navbar-main {
294
- background-color: var(--gray-800);
295
-
296
302
  .navbar-line-item {
297
303
  --bs-navbar-nav-link-padding-x: 1rem;
298
304
  }
299
-
300
305
  .dropdown-menu {
301
306
  max-height: 80vh;
302
307
  }
303
308
  }
304
309
 
310
+
311
+ .navbar[data-bs-theme="dark"], .navbar-main {
312
+ background-color: var(--gray-900);
313
+ }
314
+
315
+ .navbar-line-item.active {
316
+ background-color: var(--gray-800);
317
+ }
318
+
319
+ .navbar-tab{
320
+ min-height: 60px;
321
+ padding-top: 0.75rem;
322
+ padding-left: 0.5rem;
323
+ .navbar-line-item{
324
+ min-height: auto;
325
+ }
326
+ }
327
+
305
328
  .navbar-line-item.dropdown .dropdown-menu {
306
329
  z-index: $zindex-sticky + 1;
307
330
  }
331
+ .navbar-line-item.dropdown .dropdown-toggle[aria-expanded=true]{
332
+ color: $white;
333
+ }
308
334
 
309
335
  .info-project {
310
336
  position: relative;
311
- padding-left: 5.25rem;
337
+ padding-left: 60px;
312
338
  padding-right: 1rem;
313
339
  }
340
+
341
+ .icon-shine{
342
+ background: linear-gradient(120deg, #fff 20%, #24BCE7 40%, #e8ecff 45%, #5872ff 60%, #fff 90%);
343
+ -webkit-background-clip: text;
344
+ color: transparent;
345
+ }
314
346
  </style>
package/README.md CHANGED
@@ -73,6 +73,7 @@
73
73
  | 數值名稱 | 說明 | 必要 |
74
74
  |------------------|-----------------------------------------------------------------|----|
75
75
  | pictures-data | 格式為: `[{src: "", title: ""}]` | 是 |
76
+ | preview | 是否要顯示縮圖,可傳入 `true` or `false` | 否 |
76
77
  | display-index | 預設 index 為 0 | 否 |
77
78
  | preview-count | preview 的圖片陣列數量,預設為 5,可使用 `lightboxWithOverviewRef?.previewPictures` 與 `lightboxWithOverviewRef?.otherPictureCount` | 否 |
78
79
 
@@ -1,13 +1,13 @@
1
- import { Collapse } from 'bootstrap'
2
-
3
- export default {
4
- mounted(el) {
5
- Collapse.getOrCreateInstance(el, {
6
- toggle: false
7
- });
8
- },
9
- unmounted(el) {
10
- var instance = Collapse.getOrCreateInstance(el);
11
- instance.dispose();
12
- }
1
+ import { Collapse } from 'bootstrap'
2
+
3
+ export default {
4
+ mounted(el) {
5
+ Collapse.getOrCreateInstance(el, {
6
+ toggle: false
7
+ });
8
+ },
9
+ unmounted(el) {
10
+ var instance = Collapse.getOrCreateInstance(el);
11
+ instance.dispose();
12
+ }
13
13
  }
@@ -1,11 +1,11 @@
1
- import { Popover } from 'bootstrap'
2
-
3
- export default {
4
- mounted(el) {
5
- Popover.getOrCreateInstance(el);
6
- },
7
- unmounted(el) {
8
- var instance = Popover.getOrCreateInstance(el);
9
- instance.dispose();
10
- }
1
+ import { Popover } from 'bootstrap'
2
+
3
+ export default {
4
+ mounted(el) {
5
+ Popover.getOrCreateInstance(el);
6
+ },
7
+ unmounted(el) {
8
+ var instance = Popover.getOrCreateInstance(el);
9
+ instance.dispose();
10
+ }
11
11
  }
@@ -1,11 +1,11 @@
1
- import { Tooltip } from 'bootstrap'
2
-
3
- export default {
4
- mounted(el) {
5
- Tooltip.getOrCreateInstance(el);
6
- },
7
- unmounted(el) {
8
- var instance = Tooltip.getOrCreateInstance(el);
9
- instance.dispose();
10
- }
1
+ import { Tooltip } from 'bootstrap'
2
+
3
+ export default {
4
+ mounted(el) {
5
+ Tooltip.getOrCreateInstance(el);
6
+ },
7
+ unmounted(el) {
8
+ var instance = Tooltip.getOrCreateInstance(el);
9
+ instance.dispose();
10
+ }
11
11
  }
package/common/format.js CHANGED
@@ -1,27 +1,27 @@
1
- import dayjs from 'dayjs';
2
- import { computed } from 'vue';
3
-
4
- // 時間格式
5
- export const formatDate = (value) => {
6
- if (value === null || !value) {
7
- return value;
8
- } else {
9
- return dayjs(value).format('YYYY-MM-DD');
10
- }
11
- };
12
-
13
- export const formatDT = (value) => {
14
- if (value === null || !value) {
15
- return value;
16
- } else {
17
- return dayjs(value).format('YYYY-MM-DD HH:mm:ss');
18
- }
19
- };
20
-
21
-
22
- // 千分位格式
23
- export const formatThousands = computed(() => {
24
- return function(number){
25
- return new Intl.NumberFormat().format(number);
26
- }
1
+ import dayjs from 'dayjs';
2
+ import { computed } from 'vue';
3
+
4
+ // 時間格式
5
+ export const formatDate = (value) => {
6
+ if (value === null || !value) {
7
+ return value;
8
+ } else {
9
+ return dayjs(value).format('YYYY-MM-DD');
10
+ }
11
+ };
12
+
13
+ export const formatDT = (value) => {
14
+ if (value === null || !value) {
15
+ return value;
16
+ } else {
17
+ return dayjs(value).format('YYYY-MM-DD HH:mm:ss');
18
+ }
19
+ };
20
+
21
+
22
+ // 千分位格式
23
+ export const formatThousands = computed(() => {
24
+ return function(number){
25
+ return new Intl.NumberFormat().format(number);
26
+ }
27
27
  });
package/index.js CHANGED
@@ -1,15 +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
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
15
  }