jobdone-shared-files 1.1.24 → 1.1.25

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.
@@ -194,7 +194,7 @@ let scrollObserver = null;
194
194
  const dateConfig = {
195
195
  altFormat: "Y-m-d",
196
196
  dateFormat: "Y-m-d",
197
- disableMobile: "true",
197
+ disableMobile: true,
198
198
  mode: "range",
199
199
  locale: MandarinTraditional,
200
200
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jobdone-shared-files",
3
- "version": "1.1.24",
3
+ "version": "1.1.25",
4
4
  "description": "Shared JS and SCSS for Jobdone Enterprise.",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -1,3 +1,5 @@
1
+ @import "flatpickr/dist/flatpickr.css";
2
+
1
3
  .modal-daily-multimedia-images-selector {
2
4
  .modal-title {
3
5
  display: flex;
@@ -258,9 +260,11 @@
258
260
  }
259
261
  }
260
262
  }
261
- .multimedia-list-preview{
263
+
264
+ .multimedia-list-preview {
262
265
  padding: 0 1rem;
263
266
  }
267
+
264
268
  .the-month-content {
265
269
  margin-bottom: 2rem;
266
270
 
@@ -338,5 +342,4 @@
338
342
  }
339
343
 
340
344
  }
341
- }
342
-
345
+ }
@@ -0,0 +1,345 @@
1
+ @import "flatpickr/dist/flatpickr.css";
2
+
3
+ .modal-daily-multimedia-images-selector {
4
+ .modal-title {
5
+ display: flex;
6
+ align-items: center;
7
+ gap: 0.5rem;
8
+
9
+ &::before {
10
+ content: "photo_camera";
11
+ display: block;
12
+ color: var(--bs-primary);
13
+ font-size: 1.25rem;
14
+ line-height: 1.25rem;
15
+ font-family: "Material Icons";
16
+ }
17
+ }
18
+
19
+ .filter-container {
20
+ flex: 1;
21
+ gap: .25rem;
22
+ display: grid;
23
+ grid-template-columns: repeat(auto-fill, minmax(12rem, 1fr));
24
+
25
+ .filter-item {
26
+ flex: 1;
27
+ }
28
+
29
+ .form-label-content {
30
+ display: flex;
31
+ align-items: center;
32
+ gap: .5rem;
33
+ margin-bottom: .5rem;
34
+ }
35
+
36
+ .form-label {
37
+ font-size: .875rem;
38
+ color: var(--gray-500);
39
+ margin: 0
40
+ }
41
+
42
+ .btn-clear-item {
43
+ display: inline-flex;
44
+ align-items: center;
45
+ font-size: .875rem;
46
+ padding: 0;
47
+ background-color: transparent;
48
+ border: 0;
49
+ color: var(--red-500);
50
+ vertical-align: middle;
51
+ gap: .25rem;
52
+
53
+ &::before {
54
+ font-family: "Material Icons";
55
+ content: "close";
56
+ }
57
+
58
+ &::after {
59
+ content: "清除";
60
+ }
61
+ }
62
+ }
63
+
64
+
65
+
66
+ .media-item {
67
+ display: flex;
68
+ justify-content: flex-end;
69
+ flex-direction: column;
70
+ position: relative;
71
+ padding: 0;
72
+
73
+ .media-item-header {
74
+ margin-bottom: 0.25rem;
75
+ font-size: 0.875rem;
76
+ display: grid;
77
+ grid-template-columns: 3px auto 1fr;
78
+ gap: 0.5rem;
79
+ line-height: 1.25rem;
80
+ color: var(--gray-800);
81
+ padding-top: 0.5rem;
82
+ padding-bottom: 0.5rem;
83
+ margin-bottom: auto;
84
+
85
+ &::before {
86
+ display: block;
87
+ content: " ";
88
+ width: 3px;
89
+ background-color: var(--bs-primary);
90
+ border-radius: 99px;
91
+ }
92
+ }
93
+
94
+ .media-item-body {
95
+ position: relative;
96
+ padding: 0;
97
+ transition: 0.1s ease-out;
98
+
99
+ &:has(.multimedia-is-selected) {
100
+ border: 3px solid rgba(var(--bs-primary-rgb), 0.8);
101
+ border-radius: calc(var(--bs-border-radius) + 3px);
102
+ background-color: #fff;
103
+ transform: scale(0.95);
104
+
105
+ .multimedia-preview-content {
106
+ transform: scale(0.95);
107
+ }
108
+ }
109
+ }
110
+
111
+ .multimedia-select-content {
112
+ position: absolute;
113
+ width: 100%;
114
+ width: -webkit-fill-available;
115
+
116
+ .select-control {
117
+ border: 0;
118
+ background-color: transparent;
119
+ top: 0;
120
+ right: 0;
121
+ padding: 0.5rem;
122
+ z-index: 10;
123
+ margin: 0;
124
+ position: absolute;
125
+ user-select: none;
126
+ transition: opacity 0.2s ease-out;
127
+
128
+ &::before {
129
+ content: "check";
130
+ display: block;
131
+ position: absolute;
132
+ margin: auto;
133
+ color: #fff;
134
+ font-size: 1rem;
135
+ line-height: 1rem;
136
+ opacity: 0.5;
137
+ font-family: "Material Icons";
138
+ z-index: 10;
139
+ width: 1rem;
140
+ height: 1rem;
141
+ left: calc(50% - 0.5rem);
142
+ top: calc(50% - 0.5rem);
143
+ transform: translateY(-1px);
144
+ transition: opacity 0.2s ease-out;
145
+ }
146
+
147
+ &::after {
148
+ opacity: 0.8;
149
+ border: 2px solid;
150
+ border-color: #ffffff85;
151
+ content: " ";
152
+ display: block;
153
+ width: 1.75rem;
154
+ height: 1.75rem;
155
+ background-color: rgba(0, 0, 0, 0.2);
156
+ border-radius: var(--bs-border-radius);
157
+ backdrop-filter: blur(2px);
158
+ transition: 0.2s ease-out;
159
+ }
160
+
161
+ &:hover {
162
+ cursor: pointer;
163
+
164
+ &::before {
165
+ opacity: 1;
166
+ }
167
+ }
168
+
169
+ &.multimedia-is-selected {
170
+ opacity: 1;
171
+
172
+ &::before {
173
+ opacity: 1;
174
+ }
175
+
176
+ &::after {
177
+ opacity: 1;
178
+ background-color: var(--bs-primary);
179
+ border-color: #fff;
180
+ }
181
+ }
182
+ }
183
+ }
184
+
185
+ .multimedia-preview-content {
186
+ position: relative;
187
+ display: block;
188
+ border: 0;
189
+ background-color: var(--purple-100);
190
+ width: 100%;
191
+ padding-top: 100%;
192
+ overflow: hidden;
193
+ border-radius: var(--bs-border-radius);
194
+
195
+ img {
196
+ transition: 0.3s ease-out;
197
+ border-radius: var(--bs-border-radius);
198
+ width: 100%;
199
+ height: 100%;
200
+ object-fit: cover;
201
+ position: absolute;
202
+ top: 0;
203
+ left: 0;
204
+ }
205
+ }
206
+
207
+ &:hover {
208
+ cursor: pointer;
209
+
210
+ img {
211
+ transform: scale(1.05);
212
+ }
213
+ }
214
+ }
215
+
216
+ .records-preview-table {
217
+ table-layout: fixed;
218
+
219
+ thead {
220
+ position: sticky;
221
+ top: 0;
222
+ z-index: 20;
223
+ }
224
+
225
+ .date-grid {
226
+ text-align: center;
227
+ vertical-align: middle;
228
+ width: 8rem;
229
+ border-right: 1px solid var(--gray-300);
230
+ }
231
+
232
+ .records-photos {
233
+ display: flex;
234
+ flex-wrap: wrap;
235
+ gap: 0.5rem;
236
+ padding: .75rem 1rem;
237
+ background: var(--gray-100);
238
+ border-radius: var(--bs-border-radius);
239
+
240
+ .media-item {
241
+ background-color: #fff;
242
+ border-radius: var(--bs-border-radius);
243
+ border: 3px solid #fff;
244
+ width: 5rem;
245
+
246
+ .select-control {
247
+ // 觸控區域調整,兼具勾選便利性和預覽操作的流暢性
248
+ padding: 0.25rem 0.25rem 0.5rem 0.5rem;
249
+
250
+ &::before {
251
+ left: calc(50% - 0.4rem);
252
+ top: calc(50% - 0.6rem);
253
+
254
+ }
255
+ }
256
+
257
+ &:has(.multimedia-is-selected) {
258
+ border-radius: var(--bs-border-radius-xl);
259
+ }
260
+ }
261
+ }
262
+ }
263
+
264
+ .multimedia-list-preview {
265
+ padding: 0 1rem;
266
+ }
267
+
268
+ .the-month-content {
269
+ margin-bottom: 2rem;
270
+
271
+ .the-month-content-header {
272
+ font-size: 1.25rem;
273
+ border-bottom: 1px solid var(--gray-300);
274
+ padding-top: 0.75rem;
275
+ padding-bottom: 0.5rem;
276
+ margin-bottom: 0.5rem;
277
+ position: sticky;
278
+ top: 0;
279
+ backdrop-filter: blur(2px);
280
+ background: rgba(255, 255, 255, 0.85);
281
+ z-index: 10;
282
+ }
283
+
284
+ .the-month-content-body {
285
+ display: grid;
286
+ gap: 0.25rem;
287
+ grid-template-columns: repeat(auto-fill, minmax(8.6rem, 1fr));
288
+ }
289
+
290
+ }
291
+
292
+ .selected-preview-bar {
293
+ display: flex;
294
+ flex-direction: column;
295
+ border-top: 1px solid var(--gray-300);
296
+ background-color: var(--gray-100);
297
+ max-height: 25vh;
298
+ overflow: hidden;
299
+ flex-shrink: 0;
300
+
301
+ >* {
302
+ padding: 0.5rem 1rem;
303
+ }
304
+
305
+ .selected-preview-header {
306
+ border-bottom: 1px solid var(--gray-300);
307
+ font-size: 0.875rem;
308
+ color: var(--gray-600);
309
+ flex-shrink: 0;
310
+ }
311
+
312
+ .selected-preview-body {
313
+ overflow: auto;
314
+ background: var(--gray-400);
315
+ }
316
+
317
+ .selected-preview-list {
318
+ display: flex;
319
+ flex-wrap: wrap;
320
+ gap: 0.25rem;
321
+
322
+ .media-item {
323
+ height: 6rem;
324
+ width: 6rem;
325
+ overflow: hidden;
326
+ }
327
+
328
+ .media-item-body {
329
+ position: relative;
330
+ padding: 0;
331
+ transition: 0.1s ease-out;
332
+
333
+ &:has(.multimedia-is-selected) {
334
+ transform: scale(1);
335
+ border: 3px solid #fff;
336
+
337
+ .multimedia-preview-content {
338
+ transform: scale(1);
339
+ }
340
+ }
341
+ }
342
+ }
343
+
344
+ }
345
+ }