jobdone-shared-files 1.1.19 → 1.1.20-beta.1

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.
@@ -0,0 +1,265 @@
1
+ @use "../../../../bootstrap/scss/functions" as *;
2
+ @use "../Settings/bs-variables" as *;
3
+ @use "../../../../bootstrap/scss/mixins" as *;
4
+ @use "../Settings/custom-variables" as *;
5
+ @use "../Settings/Mixins" as *;
6
+
7
+ .main-content {
8
+ display: flex;
9
+ height: 100%;
10
+ width: 100%;
11
+ .sidebar-content, .detail-content {
12
+ border-radius: 0.25rem;
13
+ border-bottom-left-radius: 0;
14
+ border-bottom-right-radius: 0;
15
+ }
16
+ .sidebar-content {
17
+ flex-basis: 250px;
18
+ margin-right: 0.75rem;
19
+ height: 100%;
20
+
21
+ }
22
+ .detail-content {
23
+ flex-grow: 1;
24
+ flex-shrink: 1;
25
+ flex-basis: 500px;
26
+ .title-nav {
27
+ display: flex;
28
+ align-items: center;
29
+ position: sticky;
30
+ top: 0;
31
+ z-index: $zindex-sticky + 2;
32
+ height: 2.75rem;
33
+ }
34
+ }
35
+ }
36
+
37
+ .form-filter-input{
38
+ min-width: 18rem !important;
39
+ }
40
+
41
+ #col-main{
42
+ display: flex;
43
+ flex-direction: column;
44
+ height: 100%;
45
+ width: 100%;
46
+ .main-content{
47
+ height: auto;
48
+ overflow: hidden;
49
+ }
50
+ }
51
+
52
+ .sidebar-content{
53
+ .thead-sidebar{
54
+ top: calc( -0.5rem - #{$border-width} );
55
+ }
56
+ .table {
57
+ tbody {
58
+ .th-num {
59
+ @include tableTdNum();
60
+ }
61
+ tr {
62
+ cursor: pointer;
63
+ &.is-edit{
64
+ cursor: auto;
65
+ }
66
+ &.disabled, &:disabled{
67
+ cursor: not-allowed;
68
+ }
69
+ &.disabled, &:disabled, &.is-edit{
70
+ th, td{
71
+ color: $gray-500;
72
+ }
73
+ &.clicked th, &.clicked td{
74
+ background-color: $gray-200;
75
+ color: $gray-600;
76
+ }
77
+
78
+ &.clicked td:nth-last-child(1){
79
+ &:nth-last-child(1):after{
80
+ background-color: $gray-600;
81
+ }
82
+ }
83
+ }
84
+ }
85
+ .clicked {
86
+ th,
87
+ td {
88
+ background-color: rgba($primary, 0.1);
89
+ color: $primary;
90
+ }
91
+ td:nth-last-child(1) {
92
+ position: relative;
93
+ &:after {
94
+ content: "";
95
+ position: absolute;
96
+ height: 100%;
97
+ width: 0.25rem;
98
+ right: 0;
99
+ top: 0;
100
+ z-index: 1;
101
+ background-color: $primary;
102
+ }
103
+ }
104
+ }
105
+ }
106
+ }
107
+ }
108
+
109
+ .fs-7 {
110
+ font-size: 0.85rem;
111
+ }
112
+
113
+
114
+ $w-shadow: 10px;
115
+
116
+ .th-shadow-end, .th-shadow-start{
117
+ position: relative;
118
+ &:after {
119
+ content: "";
120
+ display: block;
121
+ position: absolute;
122
+ top: 0;
123
+ bottom: 0;
124
+ width: $w-shadow;
125
+ pointer-events: none;
126
+ }
127
+
128
+ }
129
+ .th-shadow-end{
130
+ &:after {
131
+ right: -$w-shadow;
132
+ background: linear-gradient(90deg, rgba($primary, 0.1) 0%, rgba($primary, 0) 100%);
133
+ }
134
+ }
135
+ .th-shadow-start{
136
+ &:after{
137
+ left: -$w-shadow;
138
+ background: linear-gradient(90deg, rgba($primary, 0) 0%, rgba($primary, 0.1) 100%);
139
+ }
140
+ }
141
+
142
+
143
+ .th-num, .th-code, .th-name, .th-end {
144
+ position: sticky;
145
+ z-index: $zindex-dropdown + 1;
146
+ }
147
+
148
+ .th-num {
149
+ left: 0;
150
+ }
151
+
152
+ .th-code {
153
+ left: 39px;
154
+ }
155
+
156
+ .th-name{
157
+ left: 166px;
158
+ > div{
159
+ display: flex;
160
+ }
161
+ }
162
+
163
+ .th-end{
164
+ right: 0;
165
+ }
166
+
167
+ .title-nav, .nav-paginate{
168
+ position: sticky;
169
+ top: 0;
170
+ left: 0;
171
+ }
172
+
173
+ .btn-more{
174
+ transition: .5s;
175
+ }
176
+
177
+ .text-title:not(.text-line-clamp-1){
178
+ + .btn-more{
179
+ transform: rotate(-180deg);
180
+ }
181
+ }
182
+
183
+
184
+ // TODO: 統一 UI
185
+ $check-full-width: 23rem;
186
+ .check-btn{
187
+ position: relative;
188
+ display: inline-block;
189
+ margin: 1rem;
190
+ .check-btn-label{
191
+ width: $check-full-width;
192
+ padding: 1rem 1rem;
193
+ color: var(--gray-500);
194
+ border: $border-width solid $border-color;
195
+ border-radius: $border-radius;
196
+ text-align: center;
197
+ cursor: pointer;
198
+ transition: $transition-base;
199
+ &:hover{
200
+ color: $info;
201
+ border-color: $info;
202
+ background-color: $table-hover-bg;
203
+ }
204
+ &.check-btn-label-lg{
205
+ padding: 2rem 1rem;
206
+ width: 10.5rem;
207
+ }
208
+ }
209
+ .material-icons{
210
+ font-size: 4rem;
211
+ }
212
+ input[type="checkbox"], input[type="radio"]{
213
+ position: absolute;
214
+ pointer-events: none;
215
+ @include size(0);
216
+ opacity: 0;
217
+ &:checked ~ .check-btn-label{
218
+ color: $primary;
219
+ border-color: $primary;
220
+ background-color: $table-hover-bg;
221
+
222
+ }
223
+ }
224
+ }
225
+
226
+ .list-group-flush{
227
+ --bs-list-group-bg: transparent;
228
+ }
229
+
230
+
231
+
232
+
233
+ .modal-belong-options{
234
+ .content-options, .content-items{
235
+ padding: .5rem;
236
+ background-color: $gray-600;
237
+ }
238
+ .content-options{
239
+ padding-bottom: 0;
240
+ }
241
+ .content-items{
242
+ $line-h: 1.5rem;
243
+ position: relative;
244
+ padding-left: 2.25rem;
245
+ .overflow-y-auto{
246
+ height: 62vh;
247
+ }
248
+ &:before, &:after{
249
+ content: "";
250
+ position: absolute;
251
+ }
252
+ &:before{
253
+ left: 1.5rem;
254
+ top: 0;
255
+ height: $line-h;
256
+ border-left: 4px solid $gray-500;
257
+ }
258
+ &:after{
259
+ left: 1.5rem;
260
+ top: $line-h;
261
+ width: .7rem;
262
+ border-top: 4px solid $gray-500;
263
+ }
264
+ }
265
+ }
@@ -0,0 +1,126 @@
1
+ @use "../../../../bootstrap/scss/functions" as *;
2
+ @use "../Settings/bs-variables" as *;
3
+ @use "../../../../bootstrap/scss/mixins" as *;
4
+ @use "../Settings/custom-variables" as *;
5
+ @use "../Settings/Mixins" as *;
6
+
7
+ html, body, #app{
8
+ height: 100%;
9
+ }
10
+
11
+ #app{
12
+ display: flex;
13
+ flex-direction: column;
14
+ }
15
+
16
+ body{
17
+ background-color: var(--gray-300);
18
+ }
19
+
20
+
21
+
22
+ // 兩欄開合 UI
23
+
24
+ #col-aside:has(label[for="toggle-aside"]:hover){
25
+ will-change: margin-left;
26
+ ~ #col-main{
27
+ will-change: width;
28
+ }
29
+ }
30
+
31
+
32
+ .content-2-column{
33
+ position: relative;
34
+ display: flex;
35
+ flex-grow: 1;
36
+ overflow: hidden;
37
+ z-index: 1;
38
+ }
39
+
40
+ #col-aside, #col-main{
41
+ height: 100%;
42
+ overflow-y: auto;
43
+ @include scrollbar();
44
+ }
45
+
46
+
47
+ $aside-w: 16.25rem;
48
+ $aside-close-w: 2.5rem;
49
+ $aside-transition: .5s;
50
+ #col-aside{
51
+ @include solid-size($aside-w, auto);
52
+ background-color: var(--gray-100);
53
+ transition: $aside-transition;
54
+ }
55
+
56
+ #col-main{
57
+ flex-grow: 1;
58
+ transition: $aside-transition;
59
+ }
60
+
61
+ .toggler-open{
62
+ padding: 0.5rem;
63
+ background-color: var(--gray-200);
64
+ > label[for="toggle-aside"]{
65
+ cursor: pointer;
66
+ }
67
+ > label[for="toggle-aside"]:hover{
68
+ .material-icons{
69
+ color: var(--bs-primary);
70
+ }
71
+ .toggler-open-text{
72
+ color: rgba(var(--bs-link-color-rgb), 0.5);
73
+ }
74
+ }
75
+
76
+ .toggler-open-text, .material-icons{
77
+ transition: $transition-base;
78
+ }
79
+ .material-icons{
80
+ color: var(--gray-600);
81
+ margin-right: 0.2rem;
82
+ margin-left: 0.5rem;
83
+ }
84
+ }
85
+
86
+ .toggler-text{
87
+ color: var(--gray-500);
88
+ }
89
+
90
+ .content-menu{
91
+ position: relative;
92
+ }
93
+
94
+ .toggler-close{
95
+ display: none;
96
+ position: absolute;
97
+ top: 0;
98
+ right: 0;
99
+ width: $aside-close-w;
100
+ text-align: center;
101
+ padding: .5rem;
102
+ line-height: 1.25;
103
+ cursor: pointer;
104
+ transition: $aside-transition;
105
+ .toggler-close-text:hover{
106
+ color: rgba(var(--bs-link-color-rgb), 0.5);
107
+ }
108
+ }
109
+
110
+ #toggle-aside:checked{
111
+ ~ #col-aside{
112
+ margin-left: -$aside-w + $aside-close-w;
113
+ .toggler-open-text, nav{
114
+ display: none;
115
+ }
116
+ .toggler-close{
117
+ display: block;
118
+ }
119
+ }
120
+ }
121
+
122
+ .thead-sticky{
123
+ position: sticky;
124
+ top: 2.7rem;
125
+ z-index: $zindex-dropdown + 2;
126
+ }
@@ -0,0 +1,19 @@
1
+ @use "../../../../bootstrap/scss/functions" as *;
2
+ @use "../Settings/bs-variables" as *;
3
+ @use "../../../../bootstrap/scss/mixins" as *;
4
+ @use "../Settings/custom-variables" as *;
5
+ @use "../Settings/Mixins" as *;
6
+
7
+ html{
8
+ background:
9
+ linear-gradient(138deg, rgba(100, 148, 241, 0.05) 26.2%, rgba(165, 185, 255, 0.29) 88.06%),
10
+ var(--gray-000);
11
+ background-repeat: no-repeat;
12
+ min-height: 100%;
13
+ }
14
+
15
+ body{
16
+ @include flex-center();
17
+ background: transparent;
18
+ min-height: 100%;
19
+ }
@@ -0,0 +1,61 @@
1
+ @use "../../../../bootstrap/scss/functions" as *;
2
+ @use "../Settings/bs-variables" as *;
3
+ @use "../../../../bootstrap/scss/mixins" as *;
4
+ @use "../Settings/custom-variables" as *;
5
+ @use "../Settings/Mixins" as *;
6
+
7
+ html, body, #app.layout-two-column,
8
+ #col-aside, #col-main{
9
+ height: 100%;
10
+ }
11
+
12
+ body, #app.layout-two-column{
13
+ overflow: hidden;
14
+ }
15
+
16
+ #app.layout-two-column{
17
+ display: flex;
18
+ flex-direction: row-reverse;
19
+ }
20
+
21
+ #col-aside, #col-main{
22
+ overflow: hidden;
23
+ transition: all .5s ease-in-out;
24
+ }
25
+
26
+
27
+ $aside-w: 18rem;
28
+ #col-aside{
29
+ display: flex;
30
+ flex-direction: column;
31
+ @include solid-size($aside-w, auto);
32
+ background-color: var(--gray-200);
33
+ border-right: $border-width solid var(--bs-border-color);
34
+ }
35
+
36
+ #col-main{
37
+ flex-grow: 1;
38
+ background-color: var(--gray-400);
39
+ @include scrollbar();
40
+ }
41
+
42
+
43
+ // navbar 開關 ------------------------------------------
44
+ #col-main:has(label[for="toggle-aside"]:hover){
45
+ will-change: width;
46
+ ~ #col-aside{
47
+ will-change: margin-left;
48
+ }
49
+ }
50
+
51
+ #toggle-aside:checked{
52
+ ~ #col-aside{
53
+ margin-left: -$aside-w;
54
+ }
55
+ ~ #col-main{
56
+ label[for="toggle-aside"] .material-icons{
57
+ transform: rotate(180deg);
58
+ }
59
+ }
60
+ }
61
+ // navbar 開關 ------------------------------------------
@@ -0,0 +1,232 @@
1
+ // ====================================
2
+ // Custom Mixins 清單 (依順序排序)
3
+ // ====================================
4
+
5
+ // Layout 各種置中方法
6
+ // scrollbar樣式
7
+
8
+ // 尺寸設定: rwd-square / size / solid-size
9
+ // Text: 文字溢排
10
+ // List Style: 數字標號
11
+
12
+ // Image 背景 2x 3x 設定
13
+
14
+ // ====================================
15
+ // Layout 各種置中方法
16
+ // ====================================
17
+
18
+ // 使用 flex 上下左右置中
19
+ @mixin flex-center() {
20
+ display: flex;
21
+ justify-content: center;
22
+ align-items: center;
23
+ }
24
+
25
+ // 使用 position 上下左右置中
26
+ @mixin position-center() {
27
+ position: absolute;
28
+ top: 0;
29
+ left: 0;
30
+ right: 0;
31
+ bottom: 0;
32
+ margin: auto;
33
+ }
34
+
35
+ // 使用inline-block:before垂直至中
36
+ @mixin vertical-middle() {
37
+ // 加在父層
38
+ &:before {
39
+ content: "";
40
+ display: inline-block;
41
+ vertical-align: middle;
42
+ width: 0;
43
+ height: 100%;
44
+ }
45
+ }
46
+
47
+ @mixin vertical-middle-item() {
48
+ // 加在要置中的項目
49
+ display: inline-block;
50
+ vertical-align: middle;
51
+ }
52
+
53
+
54
+ // ====================================
55
+ // scrollbar樣式
56
+ // ====================================
57
+
58
+ // 自訂變數 (--scrollbar-width) 在 "LayoutBase" 中設定
59
+ @mixin scrollbar(
60
+ $background: var(--gray-200),
61
+ $default-color: var(--gray-500),
62
+ $hover-color: var(--bs-primary),
63
+ $width: var(--scrollbar-width),
64
+ $height: var(--scrollbar-width),
65
+ $border-radius: var(--scrollbar-width),
66
+ $y: auto,
67
+ $x: hidden
68
+ ) {
69
+ overflow-y: $y;
70
+ overflow-x: $x;
71
+
72
+ // Chrome 121 / Edge 121 / FireFox
73
+ @supports (scrollbar-width: auto) {
74
+ scrollbar-width: auto;
75
+ scrollbar-color: $default-color $background;
76
+ &:hover{
77
+ scrollbar-color: $hover-color $background;
78
+ }
79
+ }
80
+
81
+ @supports selector(::-webkit-scrollbar) {
82
+ &::-webkit-scrollbar-thumb {
83
+ background-color: $default-color;
84
+ border-radius: $border-radius;
85
+ }
86
+ &::-webkit-scrollbar,
87
+ &::-webkit-scrollbar-track {
88
+ background-color: $background;
89
+ }
90
+ &::-webkit-scrollbar {
91
+ width: $width;
92
+ height: $height;
93
+ }
94
+ &:hover {
95
+ &::-webkit-scrollbar,
96
+ &::-webkit-scrollbar-thumb {
97
+ background-color: $hover-color;
98
+ }
99
+ }
100
+ }
101
+
102
+ }
103
+
104
+ // ====================================
105
+ // 尺寸設定: rwd-square / size / solid-width
106
+ // ====================================
107
+
108
+ @mixin rwd-square($size) {
109
+ width: $size;
110
+ height: auto;
111
+ &:before {
112
+ content: "";
113
+ display: block;
114
+ padding-bottom: 100%;
115
+ }
116
+ }
117
+
118
+ @mixin size($w, $h: $w) {
119
+ width: $w;
120
+ height: $h;
121
+ }
122
+
123
+ @mixin solid-size($w, $h: $w) {
124
+ width: $w;
125
+ max-width: $w;
126
+ min-width: $w;
127
+ height: $h;
128
+ }
129
+
130
+ // ====================================
131
+ // Text: 文字溢排
132
+ // ====================================
133
+
134
+ // 單行
135
+ @mixin text-overflow() {
136
+ overflow: hidden;
137
+ text-overflow: ellipsis;
138
+ white-space: nowrap;
139
+ }
140
+
141
+ // 多行
142
+ @mixin text-line-clamp($line-clamp) {
143
+ display: -webkit-box;
144
+ -webkit-line-clamp: $line-clamp;
145
+ -webkit-box-orient: vertical;
146
+ overflow: hidden;
147
+ }
148
+
149
+ // ====================================
150
+ // List Style: 數字標號
151
+ // ====================================
152
+
153
+ // 數字標號
154
+ @mixin list-counter() {
155
+ list-style-type: none;
156
+ padding: 0;
157
+ margin: auto;
158
+ li {
159
+ counter-increment: step-counter;
160
+ &:before {
161
+ content: counter(step-counter);
162
+ display: inline-block;
163
+ vertical-align: top;
164
+ font-size: 16px;
165
+ text-align: center;
166
+ }
167
+ }
168
+ }
169
+
170
+ // ====================================
171
+ // Image 背景 2x 3x 設定
172
+ // ====================================
173
+ @mixin background-image-retina($file, $type) {
174
+ background-image: url($file + "." + $type);
175
+ @media screen and (-webkit-min-device-pixel-ratio: 2),
176
+ (-moz-min-device-pixel-ratio: 2),
177
+ screen and (min--moz-device-pixel-ratio: 2) {
178
+ background-image: url($file + "@2x." + $type);
179
+ }
180
+ @media screen and (-webkit-min-device-pixel-ratio: 3),
181
+ (-moz-min-device-pixel-ratio: 3),
182
+ screen and (min--moz-device-pixel-ratio: 3) {
183
+ background-image: url($file + "@3x." + $type);
184
+ }
185
+ }
186
+
187
+ @mixin background-image-retina-amp($file, $type) {
188
+ background-image: url($file + "." + $type);
189
+ @media screen and (-webkit-min-device-pixel-ratio: 2),
190
+ (-moz-min-device-pixel-ratio: 2),
191
+ screen and (min-resolution: 2dppx) {
192
+ background-image: url($file + "@2x." + $type);
193
+ }
194
+ @media screen and (-webkit-min-device-pixel-ratio: 3),
195
+ (-moz-min-device-pixel-ratio: 3),
196
+ screen and (min-resolution: 3dppx) {
197
+ background-image: url($file + "@3x." + $type);
198
+ }
199
+ }
200
+
201
+ // ====================================
202
+ // Construction Mixins
203
+ // ====================================
204
+
205
+ @mixin tableHeadTH() {
206
+ border-radius: 0;
207
+ background-color: $gray-200;
208
+ font-size: 0.85rem;
209
+ font-weight: normal;
210
+ letter-spacing: 0.5px;
211
+ color: $gray-600;
212
+ padding-left: 0.75rem;
213
+ }
214
+
215
+ @mixin tableTdNum() {
216
+ color: $gray-500;
217
+ font-size: 0.85rem;
218
+ vertical-align: middle !important;
219
+ }
220
+
221
+ // TODO: 待刪除,已改成 LayoutBase 的 .btn-link-light-bg
222
+ @mixin linkBtn() {
223
+ text-decoration: none;
224
+ letter-spacing: 0.5px;
225
+ display: flex;
226
+ align-items: center;
227
+ margin-right: 0.5rem;
228
+ &:hover {
229
+ color: $primary;
230
+ background-color: rgba($primary, 0.1);
231
+ }
232
+ }
@@ -0,0 +1,12 @@
1
+ $safe-area-inset-top: env(safe-area-inset-top);
2
+ $safe-area-inset-bottom: env(safe-area-inset-bottom);
3
+
4
+ $gradient-bg: linear-gradient(138deg, rgba(100, 148, 241, 0.05) 26.2%, rgba(165, 185, 255, 0.29) 88.06%), var(--gray-000);
5
+
6
+ $gradient-main: linear-gradient(270deg, #647AF1 33.33%, #0084E4 100%);
7
+ $gradient-main-translucent: linear-gradient(270deg, rgba(63, 90, 233, 0.8) 33.33%, rgba(0, 130, 220, 0.8) 100%);
8
+
9
+ $gradient-glow: linear-gradient(131deg, rgba(17, 198, 245, 0.55) 0%, rgba(24, 196, 255, 0.00) 100%);
10
+ $gradient-glow-2end: linear-gradient(131deg, rgba(17, 198, 245, 0.20) 0%, rgba(24, 196, 255, 0.00) 45.31%, rgba(17, 198, 245, 0.20) 100%);
11
+
12
+ $backdrop-blur-base: blur(5px);