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
package/treeItem.vue CHANGED
@@ -1,367 +1,367 @@
1
- <template>
2
- <li class="tree-item" :class="[itemClass]">
3
- <div class="card flex-row d-flex input-group flex-nowrap">
4
- <button type="button" class="btn text-primary border-end px-1" :disabled="!item.children" data-bs-toggle="collapse" :data-bs-target="'#collapse-'+item.id">
5
- <span class="material-icons">arrow_drop_down</span>
6
- </button>
7
- <input type="radio" name="tree-item" :id="item.id">
8
- <label class="btn-title d-flex text-start rounded-0 flex-grow-1"
9
- :for="item.id" @click="clickItem(item)">
10
- <div class="btn btn-text border-start">{{item.title}}</div>
11
- <slot name="icon">
12
- <div class="btn d-flex align-items-center border-start rounded-0 text-primary h-100 ms-auto">
13
- <span class="material-icons icon-18"></span>
14
- </div>
15
- </slot>
16
- </label>
17
- </div>
18
- <template v-if="item.children">
19
- <ul :id="'collapse-'+item.id" class="content-children show" v-collapse>
20
- <TreeItem class="children-box" v-for="(subItem, subIndex) in item.children"
21
- :key="subItem.id"
22
- :item="subItem"
23
- :index="subIndex"
24
- :click-item="clickItem"
25
- :active-id="activeId"
26
- :tree-item-class="treeItemClass">
27
- <template v-slot:icon>
28
- <slot name="icon">
29
- <div class="btn d-flex align-items-center border-start rounded-0 text-primary h-100 ms-auto">
30
- <span class="material-icons icon-18"></span>
31
- </div>
32
- </slot>
33
- </template>
34
- </TreeItem>
35
- </ul>
36
- </template>
37
- </li>
38
- </template>
39
-
40
- <script>
41
- import { ref, computed } from 'vue';
42
- import collapse from './common/directives/collapse';
43
- export default {
44
- name: 'TreeItem',
45
- props: {
46
- item: {
47
- type: Object,
48
- required: true
49
- },
50
- index: {
51
- type: Number,
52
- required: true
53
- },
54
- clickItem: {
55
- type: Function
56
- },
57
- activeId: {
58
- type: String,
59
- required: true
60
- },
61
- treeItemClass: {
62
- type: Array,
63
- default: function () {
64
- return [];
65
- }
66
- }
67
- },
68
- directives: {
69
- collapse
70
- },
71
- setup(props, { emit }) {
72
- const itemClass = computed(() => {
73
- var classList = [...props.treeItemClass];
74
- if (props.activeId === props.item.id) {
75
- classList.push('active');
76
- }
77
- return classList;
78
- });
79
- return {
80
- itemClass: itemClass
81
- };
82
- }
83
- }
84
- </script>
85
-
86
- <style scoped lang="scss">
87
- @import "./style/scss/Settings/basic-import";
88
-
89
- li {
90
- list-style-type: none;
91
- }
92
-
93
- // 基本 sizes
94
- .tree-item {
95
- .btn {
96
- --bs-btn-padding-x: 0.75em;
97
- --bs-btn-padding-y: 0.375em;
98
- --bs-btn-font-size: 1em;
99
- }
100
-
101
- .card {
102
- --bs-card-spacer-y: 1em;
103
- --bs-card-spacer-x: 1em;
104
- --bs-card-title-spacer-y: 0.5em;
105
- --bs-card-cap-padding-y: 0.5em;
106
- --bs-card-cap-padding-x: 1em;
107
- --bs-card-img-overlay-padding: 1em;
108
- --bs-card-group-margin: 0.75em;
109
- }
110
-
111
- .material-icons {
112
- font-size: 1.5em;
113
-
114
- &.icon-14 {
115
- font-size: 0.875em;
116
- }
117
-
118
- &.icon-18 {
119
- font-size: 1.125em;
120
- }
121
-
122
- &.icon-28 {
123
- font-size: 1.75em;
124
- }
125
-
126
- &.icon-32 {
127
- font-size: 2em;
128
- }
129
- }
130
- }
131
-
132
- // hover效果與優化
133
- // firefox 暫不支援 has
134
- .tree-item:has([data-bs-toggle="collapse"]:hover) + .collapse {
135
- will-change: height;
136
- }
137
-
138
- .tree-item:hover > .card,
139
- .tree-item .card:focus-within {
140
- background-color: lighten( $primary, 32% );
141
- border-color: rgba( $primary, .4 );
142
- }
143
-
144
- // active效果
145
- .tree-item.active {
146
- > .card {
147
- background-color: lighten( $primary, 30% );
148
- border-color: rgba( $primary, .5 );
149
- }
150
-
151
- .btn-title {
152
- color: $primary;
153
- }
154
- }
155
-
156
- .btn-title {
157
- .btn {
158
- border-radius: 0;
159
-
160
- &:focus, &:active {
161
- border-color: transparent;
162
- }
163
- }
164
-
165
- .btn-text {
166
- width: 100%;
167
- text-align: left;
168
- }
169
- }
170
-
171
- label.btn-title {
172
- cursor: pointer;
173
- }
174
-
175
- // 隱藏 input
176
- .tree-item {
177
- position: relative;
178
-
179
- input[type="checkbox"], input[type="radio"] {
180
- position: absolute;
181
- @include size(0);
182
- pointer-events: none;
183
-
184
- ~ .btn-title .material-icons:before {
185
- content: "\e836";
186
- display: inline-block;
187
- font-family: inherit;
188
- }
189
-
190
- &:checked ~ .btn-title .material-icons:before {
191
- content: "\e837";
192
- }
193
- }
194
- }
195
-
196
-
197
- // 刪除子層標示 UI
198
- .tree-item:has(.btn.text-danger:hover) {
199
- .card {
200
- background-color: lighten( $danger, 43% );
201
- border-color: rgba( $danger, .5 );
202
-
203
- .btn {
204
- color: $danger;
205
- }
206
- }
207
- }
208
- // 刪除子層標示 UI (含子層)
209
- // .tree-child:has(.btn.text-danger:hover){
210
- // .card, + .content-children .card{
211
- // background-color: lighten( $danger, 43% );
212
- // border-color: rgba( $danger, .5 );
213
- // .btn{
214
- // color: $danger;
215
- // }
216
- // }
217
- // }
218
-
219
- .btn-no-children {
220
- cursor: auto;
221
-
222
- &:focus {
223
- border-color: transparent;
224
- }
225
- }
226
-
227
- // 基本 style
228
- $card-margin: .2em;
229
- $line-padding: .7em;
230
-
231
- .tree-item {
232
- display: flex;
233
- flex-direction: column;
234
- width: 100%;
235
- margin-top: $card-margin;
236
-
237
- .card {
238
- position: relative;
239
- flex-grow: 1;
240
- transition: $transition-base;
241
- z-index: 2;
242
- }
243
- }
244
-
245
- .col-action {
246
- @include flex-center;
247
- width: 2.8rem;
248
- }
249
-
250
-
251
- // 開合 style
252
- .btn[data-bs-toggle="collapse"] {
253
- .material-icons {
254
- transition: $transition-base;
255
- }
256
-
257
- &[aria-expanded="false"] .material-icons {
258
- transform: rotate(-90deg);
259
- }
260
-
261
- &:disabled, &.disabled {
262
- border-color: transparent;
263
- }
264
- }
265
-
266
- // 畫線 style
267
- .content-children {
268
- padding-left: 1.5rem;
269
- --tree-border-color: #fff;
270
- position: relative;
271
-
272
- &:before {
273
- content: "";
274
- position: absolute;
275
- display: block;
276
- left: -$line-padding;
277
- bottom: 24px;
278
- width: 1px;
279
- height: 100%;
280
- z-index: 1;
281
- background-color: var(--tree-border-color);
282
- }
283
- // // line color
284
- &:before, .tree-item .card:before, .tree-item .card:after {
285
- background-color: var(--tree-border-color);
286
- }
287
- }
288
-
289
- .tree-item {
290
- &:last-child > .content-children:before {
291
- display: none;
292
- }
293
-
294
- .card {
295
- position: relative;
296
-
297
- &:before, &:after {
298
- content: "";
299
- position: absolute;
300
- left: calc(-#{$line-padding} - #{$border-width});
301
- z-index: 1;
302
- }
303
-
304
- &:before {
305
- bottom: 50%;
306
- width: 1px;
307
- height: calc(100% + #{$card-margin}*2 + #{$border-width}*2);
308
- }
309
-
310
- &:after {
311
- top: 0;
312
- bottom: 0;
313
- width: $line-padding;
314
- height: 1px;
315
- margin: auto;
316
- }
317
- }
318
-
319
- &:nth-child(1) > .card:before {
320
- height: calc(50% + #{$card-margin} + #{$border-width});
321
- }
322
- }
323
-
324
-
325
- // 小版本
326
- .tree-item-sm {
327
- > .card {
328
- font-size: 86%;
329
- }
330
-
331
- .content-children {
332
- padding-left: 1rem;
333
- }
334
-
335
- .content-children:before {
336
- left: -10px;
337
- bottom: 19px;
338
- }
339
- }
340
- // .tree-item-sm + .content-children{
341
- // > .children-box{
342
- // padding-left: 1rem;
343
- // }
344
- // }
345
-
346
-
347
- // 白背景版本
348
- .tree-item-in-white {
349
- .content-children {
350
- --tree-border-color: var(--bs-border-color);
351
- }
352
-
353
- .card {
354
- --bs-card-bg: var(--gray-100);
355
- --bs-card-border-color: var(--bs-border-color);
356
- }
357
-
358
- &:hover > .card,
359
- .card:focus-within {
360
- background-color: $white;
361
- }
362
- // active效果
363
- &.active .card {
364
- background-color: $white;
365
- }
366
- }
1
+ <template>
2
+ <li class="tree-item" :class="[itemClass]">
3
+ <div class="card flex-row d-flex input-group flex-nowrap">
4
+ <button type="button" class="btn text-primary border-end px-1" :disabled="!item.children" data-bs-toggle="collapse" :data-bs-target="'#collapse-'+item.id">
5
+ <span class="material-icons">arrow_drop_down</span>
6
+ </button>
7
+ <input type="radio" name="tree-item" :id="item.id">
8
+ <label class="btn-title d-flex text-start rounded-0 flex-grow-1"
9
+ :for="item.id" @click="clickItem(item)">
10
+ <div class="btn btn-text border-start">{{item.title}}</div>
11
+ <slot name="icon">
12
+ <div class="btn d-flex align-items-center border-start rounded-0 text-primary h-100 ms-auto">
13
+ <span class="material-icons icon-18"></span>
14
+ </div>
15
+ </slot>
16
+ </label>
17
+ </div>
18
+ <template v-if="item.children">
19
+ <ul :id="'collapse-'+item.id" class="content-children show" v-collapse>
20
+ <TreeItem class="children-box" v-for="(subItem, subIndex) in item.children"
21
+ :key="subItem.id"
22
+ :item="subItem"
23
+ :index="subIndex"
24
+ :click-item="clickItem"
25
+ :active-id="activeId"
26
+ :tree-item-class="treeItemClass">
27
+ <template v-slot:icon>
28
+ <slot name="icon">
29
+ <div class="btn d-flex align-items-center border-start rounded-0 text-primary h-100 ms-auto">
30
+ <span class="material-icons icon-18"></span>
31
+ </div>
32
+ </slot>
33
+ </template>
34
+ </TreeItem>
35
+ </ul>
36
+ </template>
37
+ </li>
38
+ </template>
39
+
40
+ <script>
41
+ import { ref, computed } from 'vue';
42
+ import collapse from './common/directives/collapse';
43
+ export default {
44
+ name: 'TreeItem',
45
+ props: {
46
+ item: {
47
+ type: Object,
48
+ required: true
49
+ },
50
+ index: {
51
+ type: Number,
52
+ required: true
53
+ },
54
+ clickItem: {
55
+ type: Function
56
+ },
57
+ activeId: {
58
+ type: String,
59
+ required: true
60
+ },
61
+ treeItemClass: {
62
+ type: Array,
63
+ default: function () {
64
+ return [];
65
+ }
66
+ }
67
+ },
68
+ directives: {
69
+ collapse
70
+ },
71
+ setup(props, { emit }) {
72
+ const itemClass = computed(() => {
73
+ var classList = [...props.treeItemClass];
74
+ if (props.activeId === props.item.id) {
75
+ classList.push('active');
76
+ }
77
+ return classList;
78
+ });
79
+ return {
80
+ itemClass: itemClass
81
+ };
82
+ }
83
+ }
84
+ </script>
85
+
86
+ <style scoped lang="scss">
87
+ @import "./style/scss/Settings/basic-import";
88
+
89
+ li {
90
+ list-style-type: none;
91
+ }
92
+
93
+ // 基本 sizes
94
+ .tree-item {
95
+ .btn {
96
+ --bs-btn-padding-x: 0.75em;
97
+ --bs-btn-padding-y: 0.375em;
98
+ --bs-btn-font-size: 1em;
99
+ }
100
+
101
+ .card {
102
+ --bs-card-spacer-y: 1em;
103
+ --bs-card-spacer-x: 1em;
104
+ --bs-card-title-spacer-y: 0.5em;
105
+ --bs-card-cap-padding-y: 0.5em;
106
+ --bs-card-cap-padding-x: 1em;
107
+ --bs-card-img-overlay-padding: 1em;
108
+ --bs-card-group-margin: 0.75em;
109
+ }
110
+
111
+ .material-icons {
112
+ font-size: 1.5em;
113
+
114
+ &.icon-14 {
115
+ font-size: 0.875em;
116
+ }
117
+
118
+ &.icon-18 {
119
+ font-size: 1.125em;
120
+ }
121
+
122
+ &.icon-28 {
123
+ font-size: 1.75em;
124
+ }
125
+
126
+ &.icon-32 {
127
+ font-size: 2em;
128
+ }
129
+ }
130
+ }
131
+
132
+ // hover效果與優化
133
+ // firefox 暫不支援 has
134
+ .tree-item:has([data-bs-toggle="collapse"]:hover) + .collapse {
135
+ will-change: height;
136
+ }
137
+
138
+ .tree-item:hover > .card,
139
+ .tree-item .card:focus-within {
140
+ background-color: lighten( $primary, 32% );
141
+ border-color: rgba( $primary, .4 );
142
+ }
143
+
144
+ // active效果
145
+ .tree-item.active {
146
+ > .card {
147
+ background-color: lighten( $primary, 30% );
148
+ border-color: rgba( $primary, .5 );
149
+ }
150
+
151
+ .btn-title {
152
+ color: $primary;
153
+ }
154
+ }
155
+
156
+ .btn-title {
157
+ .btn {
158
+ border-radius: 0;
159
+
160
+ &:focus, &:active {
161
+ border-color: transparent;
162
+ }
163
+ }
164
+
165
+ .btn-text {
166
+ width: 100%;
167
+ text-align: left;
168
+ }
169
+ }
170
+
171
+ label.btn-title {
172
+ cursor: pointer;
173
+ }
174
+
175
+ // 隱藏 input
176
+ .tree-item {
177
+ position: relative;
178
+
179
+ input[type="checkbox"], input[type="radio"] {
180
+ position: absolute;
181
+ @include size(0);
182
+ pointer-events: none;
183
+
184
+ ~ .btn-title .material-icons:before {
185
+ content: "\e836";
186
+ display: inline-block;
187
+ font-family: inherit;
188
+ }
189
+
190
+ &:checked ~ .btn-title .material-icons:before {
191
+ content: "\e837";
192
+ }
193
+ }
194
+ }
195
+
196
+
197
+ // 刪除子層標示 UI
198
+ .tree-item:has(.btn.text-danger:hover) {
199
+ .card {
200
+ background-color: lighten( $danger, 43% );
201
+ border-color: rgba( $danger, .5 );
202
+
203
+ .btn {
204
+ color: $danger;
205
+ }
206
+ }
207
+ }
208
+ // 刪除子層標示 UI (含子層)
209
+ // .tree-child:has(.btn.text-danger:hover){
210
+ // .card, + .content-children .card{
211
+ // background-color: lighten( $danger, 43% );
212
+ // border-color: rgba( $danger, .5 );
213
+ // .btn{
214
+ // color: $danger;
215
+ // }
216
+ // }
217
+ // }
218
+
219
+ .btn-no-children {
220
+ cursor: auto;
221
+
222
+ &:focus {
223
+ border-color: transparent;
224
+ }
225
+ }
226
+
227
+ // 基本 style
228
+ $card-margin: .2em;
229
+ $line-padding: .7em;
230
+
231
+ .tree-item {
232
+ display: flex;
233
+ flex-direction: column;
234
+ width: 100%;
235
+ margin-top: $card-margin;
236
+
237
+ .card {
238
+ position: relative;
239
+ flex-grow: 1;
240
+ transition: $transition-base;
241
+ z-index: 2;
242
+ }
243
+ }
244
+
245
+ .col-action {
246
+ @include flex-center;
247
+ width: 2.8rem;
248
+ }
249
+
250
+
251
+ // 開合 style
252
+ .btn[data-bs-toggle="collapse"] {
253
+ .material-icons {
254
+ transition: $transition-base;
255
+ }
256
+
257
+ &[aria-expanded="false"] .material-icons {
258
+ transform: rotate(-90deg);
259
+ }
260
+
261
+ &:disabled, &.disabled {
262
+ border-color: transparent;
263
+ }
264
+ }
265
+
266
+ // 畫線 style
267
+ .content-children {
268
+ padding-left: 1.5rem;
269
+ --tree-border-color: #fff;
270
+ position: relative;
271
+
272
+ &:before {
273
+ content: "";
274
+ position: absolute;
275
+ display: block;
276
+ left: -$line-padding;
277
+ bottom: 24px;
278
+ width: 1px;
279
+ height: 100%;
280
+ z-index: 1;
281
+ background-color: var(--tree-border-color);
282
+ }
283
+ // // line color
284
+ &:before, .tree-item .card:before, .tree-item .card:after {
285
+ background-color: var(--tree-border-color);
286
+ }
287
+ }
288
+
289
+ .tree-item {
290
+ &:last-child > .content-children:before {
291
+ display: none;
292
+ }
293
+
294
+ .card {
295
+ position: relative;
296
+
297
+ &:before, &:after {
298
+ content: "";
299
+ position: absolute;
300
+ left: calc(-#{$line-padding} - #{$border-width});
301
+ z-index: 1;
302
+ }
303
+
304
+ &:before {
305
+ bottom: 50%;
306
+ width: 1px;
307
+ height: calc(100% + #{$card-margin}*2 + #{$border-width}*2);
308
+ }
309
+
310
+ &:after {
311
+ top: 0;
312
+ bottom: 0;
313
+ width: $line-padding;
314
+ height: 1px;
315
+ margin: auto;
316
+ }
317
+ }
318
+
319
+ &:nth-child(1) > .card:before {
320
+ height: calc(50% + #{$card-margin} + #{$border-width});
321
+ }
322
+ }
323
+
324
+
325
+ // 小版本
326
+ .tree-item-sm {
327
+ > .card {
328
+ font-size: 86%;
329
+ }
330
+
331
+ .content-children {
332
+ padding-left: 1rem;
333
+ }
334
+
335
+ .content-children:before {
336
+ left: -10px;
337
+ bottom: 19px;
338
+ }
339
+ }
340
+ // .tree-item-sm + .content-children{
341
+ // > .children-box{
342
+ // padding-left: 1rem;
343
+ // }
344
+ // }
345
+
346
+
347
+ // 白背景版本
348
+ .tree-item-in-white {
349
+ .content-children {
350
+ --tree-border-color: var(--bs-border-color);
351
+ }
352
+
353
+ .card {
354
+ --bs-card-bg: var(--gray-100);
355
+ --bs-card-border-color: var(--bs-border-color);
356
+ }
357
+
358
+ &:hover > .card,
359
+ .card:focus-within {
360
+ background-color: $white;
361
+ }
362
+ // active效果
363
+ &.active .card {
364
+ background-color: $white;
365
+ }
366
+ }
367
367
  </style>