@brickclay-org/ui 0.1.88 → 0.1.89
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/package.json +1 -1
- package/src/lib/calender/components/custom-calendar/custom-calendar.component.css +1025 -0
- package/src/lib/calender/components/scheduled-date-picker/scheduled-date-picker.component.css +373 -0
- package/src/lib/calender/components/time-picker/time-picker.component.css +331 -0
- package/src/styles.css +3 -0
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
.scheduled-date-picker-container {
|
|
2
|
+
font-family: 'Inter', sans-serif;
|
|
3
|
+
background: #ffffff;
|
|
4
|
+
border-radius: 12px;
|
|
5
|
+
padding: 0;
|
|
6
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
7
|
+
overflow: hidden;
|
|
8
|
+
width: 100%;
|
|
9
|
+
max-width: 100%;
|
|
10
|
+
box-sizing: border-box;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/* Header Section */
|
|
14
|
+
.scheduled-header {
|
|
15
|
+
padding: 24px 24px 16px;
|
|
16
|
+
border-bottom: 1px solid #e5e7eb;
|
|
17
|
+
background: #ffffff;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.scheduled-title {
|
|
21
|
+
font-size: 18px;
|
|
22
|
+
font-weight: 500;
|
|
23
|
+
line-height: 26px;
|
|
24
|
+
color: #111827;
|
|
25
|
+
letter-spacing: -0.28px;
|
|
26
|
+
margin: 0 0 16px 0;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/* Tabs */
|
|
30
|
+
.tabs {
|
|
31
|
+
display: flex;
|
|
32
|
+
/* gap: 8px; */
|
|
33
|
+
/* border-bottom: 1px solid #e5e7eb; */
|
|
34
|
+
margin-bottom: 16px;
|
|
35
|
+
border-radius: 6px;
|
|
36
|
+
padding: 3px;
|
|
37
|
+
background-color: #54578E12;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.tab-button {
|
|
41
|
+
padding: 5px 11px;
|
|
42
|
+
border: none;
|
|
43
|
+
background: transparent;
|
|
44
|
+
color: #6B7080;
|
|
45
|
+
font-size: 11px;
|
|
46
|
+
font-weight: 500;
|
|
47
|
+
cursor: pointer;
|
|
48
|
+
border: 1px solid transparent;
|
|
49
|
+
transition: all 0.2s;
|
|
50
|
+
font-family: "Inter", sans-serif;
|
|
51
|
+
flex: 1;
|
|
52
|
+
border-radius: 4px;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/* .tab-button:hover {
|
|
56
|
+
color: #111827;
|
|
57
|
+
background: #f9fafb;
|
|
58
|
+
} */
|
|
59
|
+
|
|
60
|
+
.tab-button.active {
|
|
61
|
+
color: #15191E;
|
|
62
|
+
border-color: #42578A26;
|
|
63
|
+
background: #FFFFFF;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/* Main Content Area */
|
|
67
|
+
.scheduled-content {
|
|
68
|
+
display: flex;
|
|
69
|
+
gap: 0;
|
|
70
|
+
align-items: stretch;
|
|
71
|
+
/* Two-column layout by default on large screens */
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/* Calendar Section (Left) */
|
|
75
|
+
.calendar-section {
|
|
76
|
+
flex: 0 0 55%;
|
|
77
|
+
max-width: 55%;
|
|
78
|
+
padding: 12px;
|
|
79
|
+
border-right: 1px solid #e5e7eb;
|
|
80
|
+
background: #ffffff;
|
|
81
|
+
box-sizing: border-box;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.calendar-wrapper-inline {
|
|
85
|
+
width: 100%;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.calendar-wrapper-inline app-custom-calendar {
|
|
89
|
+
width: 100%;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/* Time Configuration Section (Right) */
|
|
93
|
+
.time-config-section {
|
|
94
|
+
flex: 0 0 45%;
|
|
95
|
+
max-width: 45%;
|
|
96
|
+
padding: 12px;
|
|
97
|
+
background: #ffffff;
|
|
98
|
+
overflow-y: auto;
|
|
99
|
+
max-height: 600px;
|
|
100
|
+
box-sizing: border-box;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.time-config-title {
|
|
104
|
+
font-size: 16px;
|
|
105
|
+
font-weight: 600;
|
|
106
|
+
color: #111827;
|
|
107
|
+
margin: 17px 0 14px 0;
|
|
108
|
+
/* padding-bottom: 12px; */
|
|
109
|
+
/* border-bottom: 1px solid #e5e7eb; */
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/* Time Configuration Item */
|
|
113
|
+
.time-config-item {
|
|
114
|
+
padding: 14px;
|
|
115
|
+
border: 1px solid #e5e7eb;
|
|
116
|
+
border-radius: 8px;
|
|
117
|
+
/* margin-bottom: 12px; */
|
|
118
|
+
background: #ffffff;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.time-config-header {
|
|
122
|
+
display: flex;
|
|
123
|
+
justify-content: space-between;
|
|
124
|
+
align-items: center;
|
|
125
|
+
/* margin-bottom: 12px; */
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.date-label {
|
|
129
|
+
font-size: 12px;
|
|
130
|
+
font-weight: 500;
|
|
131
|
+
color: #15191E;
|
|
132
|
+
/* text-transform: uppercase; */
|
|
133
|
+
letter-spacing: -0.28px;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/* All Day Toggle */
|
|
137
|
+
.all-day-toggle {
|
|
138
|
+
display: flex;
|
|
139
|
+
align-items: center;
|
|
140
|
+
gap: 5px;
|
|
141
|
+
cursor: pointer;
|
|
142
|
+
user-select: none;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.all-day-toggle input[type="checkbox"] {
|
|
146
|
+
width: 28px;
|
|
147
|
+
height: 16px;
|
|
148
|
+
appearance: none;
|
|
149
|
+
background: #BBBDC5;
|
|
150
|
+
border-radius: 10px;
|
|
151
|
+
position: relative;
|
|
152
|
+
cursor: pointer;
|
|
153
|
+
transition: background 0.2s;
|
|
154
|
+
margin: 0;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.all-day-toggle input[type="checkbox"]:checked {
|
|
158
|
+
background: #22973F;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.all-day-toggle input[type="checkbox"]::before {
|
|
162
|
+
content: "";
|
|
163
|
+
position: absolute;
|
|
164
|
+
width: 12px;
|
|
165
|
+
height: 12px;
|
|
166
|
+
border-radius: 50%;
|
|
167
|
+
background: #ffffff;
|
|
168
|
+
top: 1.5px;
|
|
169
|
+
left: 2.5px;
|
|
170
|
+
transition: transform 0.2s;
|
|
171
|
+
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
.all-day-toggle input[type="checkbox"]:checked::before {
|
|
175
|
+
transform: translateX(12px);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
.toggle-label {
|
|
179
|
+
font-size: 12px;
|
|
180
|
+
font-weight: 500;
|
|
181
|
+
color: #111827;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
.all-day-toggle input[type="checkbox"]:checked + .toggle-label {
|
|
185
|
+
color: #111827;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/* Time Inputs */
|
|
189
|
+
.time-inputs {
|
|
190
|
+
display: flex;
|
|
191
|
+
gap: 14px;
|
|
192
|
+
margin-top: 12px;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
/* Time Configuration List (for multiple dates) */
|
|
197
|
+
.time-config-list {
|
|
198
|
+
display: flex;
|
|
199
|
+
flex-direction: column;
|
|
200
|
+
gap: 14px;
|
|
201
|
+
max-height: 350px;
|
|
202
|
+
overflow-y: auto;
|
|
203
|
+
padding-right: 4px;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
/* Scrollbar Styling */
|
|
208
|
+
.time-config-list::-webkit-scrollbar {
|
|
209
|
+
width: 6px;
|
|
210
|
+
height: 6px;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
.time-config-list::-webkit-scrollbar-track {
|
|
214
|
+
background: #f1f1f1;
|
|
215
|
+
border-radius: 3px;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
.time-config-list::-webkit-scrollbar-thumb {
|
|
219
|
+
background: #b4b4b4;
|
|
220
|
+
border-radius: 3px;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
.time-config-list::-webkit-scrollbar-thumb:hover {
|
|
224
|
+
background: #9b9b9b;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
.no-selection {
|
|
228
|
+
padding: 24px;
|
|
229
|
+
text-align: center;
|
|
230
|
+
color: #9ca3af;
|
|
231
|
+
font-size: 14px;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
/* Action Buttons */
|
|
235
|
+
.action-buttons {
|
|
236
|
+
display: flex;
|
|
237
|
+
justify-content: flex-end;
|
|
238
|
+
gap: 12px;
|
|
239
|
+
padding: 12px;
|
|
240
|
+
border-top: 1px solid #e5e7eb;
|
|
241
|
+
background: #ffffff;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
.btn-clear,
|
|
245
|
+
.btn-apply {
|
|
246
|
+
padding: 10px 20px;
|
|
247
|
+
border: none;
|
|
248
|
+
border-radius: 6px;
|
|
249
|
+
font-size: 14px;
|
|
250
|
+
font-weight: 500;
|
|
251
|
+
cursor: pointer;
|
|
252
|
+
transition: all 0.2s;
|
|
253
|
+
font-family: 'Inter', sans-serif;
|
|
254
|
+
min-width: 80px;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
.btn-clear {
|
|
258
|
+
background: #ffffff;
|
|
259
|
+
color: #6b7280;
|
|
260
|
+
border: 1px solid #d1d5db;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
.btn-clear:hover {
|
|
264
|
+
background: #f9fafb;
|
|
265
|
+
border-color: #9ca3af;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
.btn-apply {
|
|
269
|
+
background: #111827;
|
|
270
|
+
color: #ffffff;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
.btn-apply:hover {
|
|
274
|
+
background: #374151;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
/* Responsive Design */
|
|
278
|
+
@media (max-width: 1200px) {
|
|
279
|
+
.calendar-section {
|
|
280
|
+
flex: 0 0 52%;
|
|
281
|
+
max-width: 52%;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
.time-config-section {
|
|
285
|
+
flex: 0 0 48%;
|
|
286
|
+
max-width: 48%;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
@media (max-width: 1024px) {
|
|
291
|
+
.scheduled-content {
|
|
292
|
+
flex-direction: column;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
.calendar-section {
|
|
296
|
+
flex: 1 1 auto;
|
|
297
|
+
max-width: 100%;
|
|
298
|
+
border-right: none;
|
|
299
|
+
border-bottom: 1px solid #e5e7eb;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
.time-config-section {
|
|
303
|
+
flex: 1 1 auto;
|
|
304
|
+
max-width: 100%;
|
|
305
|
+
max-height: none;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
.time-config-list {
|
|
309
|
+
max-height: 320px;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
@media (max-width: 768px) {
|
|
314
|
+
.scheduled-date-picker-container {
|
|
315
|
+
border-radius: 0;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
.scheduled-header {
|
|
319
|
+
padding: 16px;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
.calendar-section,
|
|
323
|
+
.time-config-section {
|
|
324
|
+
padding: 12px 16px;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
.tabs {
|
|
328
|
+
overflow-x: auto;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
.tab-button {
|
|
332
|
+
white-space: nowrap;
|
|
333
|
+
font-size: 12px;
|
|
334
|
+
padding: 6px 10px;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
.time-inputs {
|
|
338
|
+
flex-direction: column;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
.time-config-item {
|
|
342
|
+
padding: 12px;
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
.action-buttons {
|
|
346
|
+
padding: 10px;
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
@media (max-width: 480px) {
|
|
351
|
+
.scheduled-title {
|
|
352
|
+
font-size: 16px;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
.time-config-title {
|
|
356
|
+
font-size: 14px;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
.date-label {
|
|
360
|
+
font-size: 11px;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
.time-config-list {
|
|
364
|
+
max-height: 260px;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
.btn-clear,
|
|
368
|
+
.btn-apply {
|
|
369
|
+
padding: 8px 14px;
|
|
370
|
+
font-size: 13px;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
.time-picker-wrapper {
|
|
2
|
+
width: 100%;
|
|
3
|
+
font-family: 'Inter', sans-serif;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.time-input-group {
|
|
7
|
+
display: flex;
|
|
8
|
+
flex-direction: column;
|
|
9
|
+
gap: 4px;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.time-input-group label {
|
|
13
|
+
font-size: 11px;
|
|
14
|
+
font-weight: 500;
|
|
15
|
+
color: #15191E;
|
|
16
|
+
text-transform: uppercase;
|
|
17
|
+
letter-spacing: -0.28px;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.time-input-wrapper {
|
|
21
|
+
position: relative;
|
|
22
|
+
display: flex;
|
|
23
|
+
align-items: center;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.time-input-wrapper.has-value .time-input {
|
|
27
|
+
padding-right: 56px;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.time-input {
|
|
31
|
+
border: 1px solid #d1d5db;
|
|
32
|
+
border-radius: 4px;
|
|
33
|
+
font-family: 'Inter', sans-serif;
|
|
34
|
+
color: #707280;
|
|
35
|
+
background: #ffffff;
|
|
36
|
+
transition: all 0.2s;
|
|
37
|
+
width: 100%;
|
|
38
|
+
box-sizing: border-box;
|
|
39
|
+
cursor: pointer;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.time-input::placeholder {
|
|
43
|
+
color: #6B7080;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.time-input-group.default .time-input {
|
|
47
|
+
font-size: 12px;
|
|
48
|
+
padding: 6px 40px 5px 12px;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.time-input-group.lg .time-input {
|
|
52
|
+
font-size: 14px;
|
|
53
|
+
line-height: 18px;
|
|
54
|
+
padding: 10px 40px 10px 12px;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.time-input:focus {
|
|
58
|
+
outline: none;
|
|
59
|
+
border-color: #111827;
|
|
60
|
+
/* box-shadow: 0 0 0 3px rgba(17, 24, 39, 0.1); */
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.time-input:hover {
|
|
64
|
+
border-color: #9ca3af;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.time-clear-btn {
|
|
68
|
+
position: absolute;
|
|
69
|
+
/* right: 32px; */
|
|
70
|
+
right: 26px;
|
|
71
|
+
background: none;
|
|
72
|
+
border: none;
|
|
73
|
+
font-size: 18px;
|
|
74
|
+
color: #9ca3af;
|
|
75
|
+
cursor: pointer;
|
|
76
|
+
padding: 0;
|
|
77
|
+
width: 20px;
|
|
78
|
+
height: 20px;
|
|
79
|
+
display: flex;
|
|
80
|
+
align-items: center;
|
|
81
|
+
justify-content: center;
|
|
82
|
+
line-height: 1;
|
|
83
|
+
/* */
|
|
84
|
+
/* top: 7px; */
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
.time-clear-btn:hover {
|
|
89
|
+
color: #374151;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.time-input-group.default .time-clear-btn {
|
|
93
|
+
top: 5px;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.time-input-group.lg .time-clear-btn {
|
|
97
|
+
top: 10px;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.time-icon {
|
|
101
|
+
position: absolute;
|
|
102
|
+
right: 12px;
|
|
103
|
+
font-size: 16px;
|
|
104
|
+
pointer-events: none;
|
|
105
|
+
color: #9ca3af;
|
|
106
|
+
cursor: pointer;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/* Custom Time Picker Dropdown */
|
|
110
|
+
/* .custom-time-picker-dropdown {
|
|
111
|
+
position: absolute;
|
|
112
|
+
top: calc(100% + 4px);
|
|
113
|
+
left: 0;
|
|
114
|
+
z-index: 1000;
|
|
115
|
+
width: 172px;
|
|
116
|
+
min-width: 172px;
|
|
117
|
+
} */
|
|
118
|
+
|
|
119
|
+
.custom-time-picker-wrapper {
|
|
120
|
+
width: 100%;
|
|
121
|
+
display: flex;
|
|
122
|
+
justify-content: center;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.custom-time-picker {
|
|
126
|
+
/* Position is owned by the CDK overlay pane (see the component's cdkConnectedOverlay
|
|
127
|
+
template) — no position/top/left/z-index here; this element renders at natural (0,0) offset
|
|
128
|
+
inside the pane, which CDK has already placed correctly. */
|
|
129
|
+
display: flex;
|
|
130
|
+
align-items: flex-start;
|
|
131
|
+
gap: 8px;
|
|
132
|
+
background: #ffffff;
|
|
133
|
+
border: 1px solid #e5e7eb;
|
|
134
|
+
border-radius: 8px;
|
|
135
|
+
padding: 10px;
|
|
136
|
+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
|
137
|
+
width: 182px;
|
|
138
|
+
/* CDK's overlay container lives outside .time-picker-wrapper, so any inherited font from an
|
|
139
|
+
ancestor no longer reaches this element in the common (non-inline) case — re-declare it. */
|
|
140
|
+
font-family: 'Inter', sans-serif;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/* 24-hour format: no AM/PM column, narrower width */
|
|
144
|
+
.custom-time-picker.format-24 {
|
|
145
|
+
width: 124px;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/* `left-position`/`right-position` no longer position anything themselves (CDK's
|
|
149
|
+
cdkConnectedOverlayPositions does, driven by the same `position` input) — kept as pure style
|
|
150
|
+
hooks in case a future tweak needs to key off which side the dropdown opened on. */
|
|
151
|
+
|
|
152
|
+
.time-column {
|
|
153
|
+
display: flex;
|
|
154
|
+
flex-direction: column;
|
|
155
|
+
position: relative;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.time-scroll {
|
|
159
|
+
display: flex;
|
|
160
|
+
flex-direction: column;
|
|
161
|
+
max-height: 96px; /* exactly 3 rows * 32px so items always align cleanly (no half-cut slivers) */
|
|
162
|
+
overflow-y: auto;
|
|
163
|
+
overflow-x: hidden;
|
|
164
|
+
/* Row-boundary snapping is done in JS (see settleColumn() in the component), not via CSS
|
|
165
|
+
scroll-snap-type. CSS snap on a list this short (rows only 28-32px apart) hits a well-known
|
|
166
|
+
Chrome/Windows mouse-wheel bug: each wheel tick is its own scroll gesture, and the browser
|
|
167
|
+
re-snaps after every one, so the list can appear to "get stuck" and need several more ticks
|
|
168
|
+
to move past a snap point. JS settling only runs once scrolling has actually stopped, so it
|
|
169
|
+
never fights an in-progress wheel/trackpad gesture. */
|
|
170
|
+
scrollbar-width: thin;
|
|
171
|
+
scrollbar-color: #cbd5e1 transparent;
|
|
172
|
+
/* padding: 4px 0; */
|
|
173
|
+
scrollbar-width: none;
|
|
174
|
+
/* For Firefox */
|
|
175
|
+
-ms-overflow-style: none;
|
|
176
|
+
/* For Internet Explorer and Edge */
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
.time-scroll::-webkit-scrollbar {
|
|
181
|
+
display: none;
|
|
182
|
+
/* For Chrome, Safari, and Opera */
|
|
183
|
+
/* width: 4px; */
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
.time-scroll::-webkit-scrollbar-track {
|
|
187
|
+
background: transparent;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.time-scroll::-webkit-scrollbar-thumb {
|
|
191
|
+
background: #cbd5e1;
|
|
192
|
+
border-radius: 2px;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.time-scroll::-webkit-scrollbar-thumb:hover {
|
|
196
|
+
background: #94a3b8;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
.time-item {
|
|
200
|
+
min-width: 40px;
|
|
201
|
+
width: 40px;
|
|
202
|
+
height: 32px;
|
|
203
|
+
min-height: 32px;
|
|
204
|
+
/* No scroll-snap-align — snapping is handled in JS (see .time-scroll's comment above). */
|
|
205
|
+
display: flex;
|
|
206
|
+
align-items: center;
|
|
207
|
+
justify-content: center;
|
|
208
|
+
font-size: 14px;
|
|
209
|
+
font-weight: 400;
|
|
210
|
+
color: #374151;
|
|
211
|
+
cursor: pointer;
|
|
212
|
+
border-radius: 4px;
|
|
213
|
+
transition: all 0.15s ease;
|
|
214
|
+
user-select: none;
|
|
215
|
+
font-family: 'Inter', sans-serif;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
.time-item:hover {
|
|
219
|
+
background: #f3f4f6;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
.time-item.selected {
|
|
223
|
+
background: #111827;
|
|
224
|
+
color: #ffffff;
|
|
225
|
+
font-weight: 500;
|
|
226
|
+
/* box-shadow: 0 1px 2px rgba(37, 99, 235, 0.3); */
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/* Scroll highlight on the minute/second wheels: shows where the wheel is currently
|
|
230
|
+
pointing while scrolling. It is NOT the committed value — the user must click to
|
|
231
|
+
select it. Suppressed when it coincides with the committed `.selected` item. */
|
|
232
|
+
.time-item.active:not(.selected) {
|
|
233
|
+
background: #eef2ff;
|
|
234
|
+
color: #111827;
|
|
235
|
+
font-weight: 500;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
.ampm-column .time-item {
|
|
239
|
+
min-width: 40px;
|
|
240
|
+
width: 40px;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
.time-separator {
|
|
244
|
+
font-size: 16px;
|
|
245
|
+
font-weight: 600;
|
|
246
|
+
color: #6b7280;
|
|
247
|
+
margin: 5px 0 0px;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
.time-input:disabled {
|
|
251
|
+
cursor: not-allowed;
|
|
252
|
+
border-color: rgb(227 227 231);
|
|
253
|
+
background-color: rgb(244 244 246);
|
|
254
|
+
color: rgb(161 163 174);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/* --------------------------
|
|
258
|
+
COMPACT DROPDOWN (default variation)
|
|
259
|
+
The base rules above match the `lg` dropdown. These overrides apply only
|
|
260
|
+
to the `default` variation so it gets a smaller, compact dropdown.
|
|
261
|
+
NOTE: .time-item height MUST stay in sync with ITEM_HEIGHT (28) in the TS,
|
|
262
|
+
otherwise the cyclic minute/second wheel will not snap correctly.
|
|
263
|
+
---------------------------*/
|
|
264
|
+
.time-input-group.default .custom-time-picker {
|
|
265
|
+
width: fit-content;
|
|
266
|
+
gap: 6px;
|
|
267
|
+
padding: 8px;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
.time-input-group.default .custom-time-picker.format-24 {
|
|
271
|
+
width: fit-content;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
.time-input-group.default .time-scroll {
|
|
275
|
+
max-height: 84px; /* 3 rows * 28px */
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
.time-input-group.default .time-item {
|
|
279
|
+
min-width: 26px;
|
|
280
|
+
width: 26px;
|
|
281
|
+
height: 28px;
|
|
282
|
+
min-height: 28px;
|
|
283
|
+
font-size: 12px;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
.time-input-group.default .ampm-column .time-item {
|
|
287
|
+
min-width: 26px;
|
|
288
|
+
width: 26px;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
.time-input-group.default .time-separator {
|
|
292
|
+
font-size: 14px;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
/* --------------------------
|
|
296
|
+
CDK-PORTAL-SAFE COMPACT SIZING
|
|
297
|
+
The dropdown is now always portalled into the shared cdk-overlay-container (see
|
|
298
|
+
.custom-time-picker's own comment), which leaves the `.time-input-group.default` ancestor that
|
|
299
|
+
used to supply compact sizing. This self-class rule re-applies it on the portalled panel — the
|
|
300
|
+
font-family equivalent now lives directly on .custom-time-picker instead, unconditionally.
|
|
301
|
+
---------------------------*/
|
|
302
|
+
.custom-time-picker.tp-compact {
|
|
303
|
+
width: fit-content;
|
|
304
|
+
gap: 6px;
|
|
305
|
+
padding: 8px;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
.custom-time-picker.tp-compact.format-24 {
|
|
309
|
+
width: fit-content;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
.custom-time-picker.tp-compact .time-scroll {
|
|
313
|
+
max-height: 84px; /* 3 rows * 28px */
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
.custom-time-picker.tp-compact .time-item {
|
|
317
|
+
min-width: 26px;
|
|
318
|
+
width: 26px;
|
|
319
|
+
height: 28px;
|
|
320
|
+
min-height: 28px;
|
|
321
|
+
font-size: 12px;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
.custom-time-picker.tp-compact .ampm-column .time-item {
|
|
325
|
+
min-width: 26px;
|
|
326
|
+
width: 26px;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
.custom-time-picker.tp-compact .time-separator {
|
|
330
|
+
font-size: 14px;
|
|
331
|
+
}
|
package/src/styles.css
CHANGED
|
@@ -44,3 +44,6 @@
|
|
|
44
44
|
@import './lib/menu/menu.css';
|
|
45
45
|
@import './lib/ui-avatar-group/ui-avatar-group.css';
|
|
46
46
|
@import './lib/table/table.css';
|
|
47
|
+
@import './lib/calender/components/custom-calendar/custom-calendar.component.css';
|
|
48
|
+
@import './lib/calender/components/scheduled-date-picker/scheduled-date-picker.component.css';
|
|
49
|
+
@import './lib/calender/components/time-picker/time-picker.component.css';
|