@design.estate/dees-catalog 3.57.0 → 3.59.0

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 (22) hide show
  1. package/dist_bundle/bundle.js +2721 -2518
  2. package/dist_ts_web/00_commitinfo_data.js +1 -1
  3. package/dist_ts_web/elements/00group-input/dees-input-code/dees-input-code.d.ts +5 -0
  4. package/dist_ts_web/elements/00group-input/dees-input-code/dees-input-code.js +196 -29
  5. package/dist_ts_web/elements/00group-input/dees-input-datepicker/component.d.ts +10 -27
  6. package/dist_ts_web/elements/00group-input/dees-input-datepicker/component.js +118 -281
  7. package/dist_ts_web/elements/00group-input/dees-input-datepicker/datepicker-popup.d.ts +55 -0
  8. package/dist_ts_web/elements/00group-input/dees-input-datepicker/datepicker-popup.js +876 -0
  9. package/dist_ts_web/elements/00group-input/dees-input-datepicker/index.d.ts +1 -0
  10. package/dist_ts_web/elements/00group-input/dees-input-datepicker/index.js +2 -1
  11. package/dist_ts_web/elements/00group-input/dees-input-datepicker/styles.js +1 -408
  12. package/dist_ts_web/elements/00group-input/dees-input-datepicker/template.js +1 -143
  13. package/dist_watch/bundle.js +2721 -2518
  14. package/dist_watch/bundle.js.map +4 -4
  15. package/package.json +1 -1
  16. package/ts_web/00_commitinfo_data.ts +1 -1
  17. package/ts_web/elements/00group-input/dees-input-code/dees-input-code.ts +194 -30
  18. package/ts_web/elements/00group-input/dees-input-datepicker/component.ts +125 -324
  19. package/ts_web/elements/00group-input/dees-input-datepicker/datepicker-popup.ts +758 -0
  20. package/ts_web/elements/00group-input/dees-input-datepicker/index.ts +1 -0
  21. package/ts_web/elements/00group-input/dees-input-datepicker/styles.ts +1 -411
  22. package/ts_web/elements/00group-input/dees-input-datepicker/template.ts +1 -147
@@ -1 +1,2 @@
1
1
  export * from './component.js';
2
+ export * from './datepicker-popup.js';
@@ -56,7 +56,6 @@ export const datepickerStyles = [
56
56
  opacity: 0.5;
57
57
  }
58
58
 
59
- /* Icon container using flexbox for better positioning */
60
59
  .icon-container {
61
60
  position: absolute;
62
61
  right: 0;
@@ -101,414 +100,5 @@ export const datepickerStyles = [
101
100
  background: ${cssManager.bdTheme('hsl(210 20% 98%)', 'hsl(215 27.9% 16.9%)')};
102
101
  color: ${cssManager.bdTheme('hsl(224 71.4% 4.1%)', 'hsl(210 20% 98%)')};
103
102
  }
104
-
105
- .clear-button:disabled {
106
- display: none;
107
- }
108
-
109
- /* Calendar Popup Styles */
110
- .calendar-popup {
111
- will-change: transform, opacity;
112
- pointer-events: none;
113
- transition: all 0.2s ease;
114
- opacity: 0;
115
- transform: translateY(-4px);
116
- background: ${cssManager.bdTheme('hsl(0 0% 100%)', 'hsl(224 71.4% 4.1%)')};
117
- border: 1px solid ${cssManager.bdTheme('hsl(214.3 31.8% 91.4%)', 'hsl(217.2 32.6% 17.5%)')};
118
- box-shadow: ${cssManager.bdTheme(
119
- '0 10px 15px -3px hsl(0 0% 0% / 0.1), 0 4px 6px -4px hsl(0 0% 0% / 0.1)',
120
- '0 10px 15px -3px hsl(0 0% 0% / 0.2), 0 4px 6px -4px hsl(0 0% 0% / 0.2)'
121
- )};
122
- border-radius: 6px;
123
- padding: 12px;
124
- position: absolute;
125
- user-select: none;
126
- margin-top: 4px;
127
- z-index: 50;
128
- left: 0;
129
- min-width: 280px;
130
- }
131
-
132
- .calendar-popup.top {
133
- bottom: calc(100% + 4px);
134
- top: auto;
135
- margin-top: 0;
136
- margin-bottom: 4px;
137
- transform: translateY(4px);
138
- }
139
-
140
- .calendar-popup.bottom {
141
- top: 100%;
142
- }
143
-
144
- .calendar-popup.show {
145
- pointer-events: all;
146
- transform: translateY(0);
147
- opacity: 1;
148
- }
149
-
150
- /* Calendar Header */
151
- .calendar-header {
152
- display: flex;
153
- align-items: center;
154
- justify-content: space-between;
155
- margin-bottom: 16px;
156
- gap: 8px;
157
- }
158
-
159
- .month-year-display {
160
- font-weight: 500;
161
- font-size: 14px;
162
- color: ${cssManager.bdTheme('hsl(224 71.4% 4.1%)', 'hsl(210 20% 98%)')};
163
- flex: 1;
164
- text-align: center;
165
- }
166
-
167
- .nav-button {
168
- width: 28px;
169
- height: 28px;
170
- border: none;
171
- background: transparent;
172
- cursor: pointer;
173
- border-radius: 6px;
174
- display: flex;
175
- align-items: center;
176
- justify-content: center;
177
- color: ${cssManager.bdTheme('hsl(220 8.9% 46.1%)', 'hsl(215 20.2% 65.1%)')};
178
- transition: all 0.2s ease;
179
- }
180
-
181
- .nav-button:hover {
182
- background: ${cssManager.bdTheme('hsl(210 20% 98%)', 'hsl(215 27.9% 16.9%)')};
183
- color: ${cssManager.bdTheme('hsl(224 71.4% 4.1%)', 'hsl(210 20% 98%)')};
184
- }
185
-
186
- .nav-button:active {
187
- background: ${cssManager.bdTheme('hsl(214.3 31.8% 91.4%)', 'hsl(217.2 32.6% 17.5%)')};
188
- }
189
-
190
- /* Weekday headers */
191
- .weekdays {
192
- display: grid;
193
- grid-template-columns: repeat(7, 1fr);
194
- gap: 0;
195
- margin-bottom: 4px;
196
- }
197
-
198
- .weekday {
199
- text-align: center;
200
- font-size: 12px;
201
- font-weight: 400;
202
- color: ${cssManager.bdTheme('hsl(220 8.9% 46.1%)', 'hsl(215 20.2% 65.1%)')};
203
- padding: 0 0 8px 0;
204
- }
205
-
206
- /* Days grid */
207
- .days-grid {
208
- display: grid;
209
- grid-template-columns: repeat(7, 1fr);
210
- gap: 2px;
211
- }
212
-
213
- .day {
214
- aspect-ratio: 1;
215
- display: flex;
216
- align-items: center;
217
- justify-content: center;
218
- cursor: pointer;
219
- border-radius: 6px;
220
- font-size: 14px;
221
- transition: all 0.2s ease;
222
- color: ${cssManager.bdTheme('hsl(224 71.4% 4.1%)', 'hsl(210 20% 98%)')};
223
- border: none;
224
- width: 36px;
225
- height: 36px;
226
- background: transparent;
227
- }
228
-
229
- .day:hover:not(.disabled) {
230
- background: ${cssManager.bdTheme('hsl(210 20% 98%)', 'hsl(215 27.9% 16.9%)')};
231
- }
232
-
233
- .day.other-month {
234
- color: ${cssManager.bdTheme('hsl(220 8.9% 46.1%)', 'hsl(215 20.2% 65.1%)')};
235
- opacity: 0.5;
236
- }
237
-
238
- .day.today {
239
- background: ${cssManager.bdTheme('hsl(210 20% 98%)', 'hsl(215 27.9% 16.9%)')};
240
- font-weight: 500;
241
- }
242
-
243
- .day.selected {
244
- background: ${cssManager.bdTheme('hsl(222.2 47.4% 11.2%)', 'hsl(210 20% 98%)')};
245
- color: ${cssManager.bdTheme('hsl(210 20% 98%)', 'hsl(222.2 47.4% 11.2%)')};
246
- font-weight: 500;
247
- }
248
-
249
- .day.disabled {
250
- color: ${cssManager.bdTheme('hsl(220 8.9% 46.1%)', 'hsl(215 20.2% 65.1%)')};
251
- cursor: not-allowed;
252
- opacity: 0.3;
253
- }
254
-
255
- /* Event indicators */
256
- .day.has-event {
257
- position: relative;
258
- }
259
-
260
- .event-indicator {
261
- position: absolute;
262
- bottom: 4px;
263
- left: 50%;
264
- transform: translateX(-50%);
265
- display: flex;
266
- gap: 2px;
267
- justify-content: center;
268
- }
269
-
270
- .event-dot {
271
- width: 4px;
272
- height: 4px;
273
- border-radius: 50%;
274
- background: ${cssManager.bdTheme('hsl(220 8.9% 46.1%)', 'hsl(215 20.2% 65.1%)')};
275
- }
276
-
277
- .event-dot.info {
278
- background: ${cssManager.bdTheme('hsl(211 70% 52%)', 'hsl(211 70% 62%)')};
279
- }
280
-
281
- .event-dot.warning {
282
- background: ${cssManager.bdTheme('hsl(45 90% 45%)', 'hsl(45 90% 55%)')};
283
- }
284
-
285
- .event-dot.success {
286
- background: ${cssManager.bdTheme('hsl(142 69% 45%)', 'hsl(142 69% 55%)')};
287
- }
288
-
289
- .event-dot.error {
290
- background: ${cssManager.bdTheme('hsl(0 72% 51%)', 'hsl(0 72% 61%)')};
291
- }
292
-
293
- .event-count {
294
- position: absolute;
295
- top: 2px;
296
- right: 2px;
297
- min-width: 16px;
298
- height: 16px;
299
- padding: 0 4px;
300
- background: ${cssManager.bdTheme('hsl(0 72% 51%)', 'hsl(0 72% 61%)')};
301
- color: white;
302
- border-radius: 8px;
303
- font-size: 10px;
304
- font-weight: 600;
305
- display: flex;
306
- align-items: center;
307
- justify-content: center;
308
- line-height: 1;
309
- }
310
-
311
- /* Tooltip for event details */
312
- .event-tooltip {
313
- position: absolute;
314
- bottom: calc(100% + 8px);
315
- left: 50%;
316
- transform: translateX(-50%);
317
- background: ${cssManager.bdTheme('hsl(0 0% 20%)', 'hsl(0 0% 90%)')};
318
- color: ${cssManager.bdTheme('hsl(0 0% 100%)', 'hsl(0 0% 0%)')};
319
- padding: 8px 12px;
320
- border-radius: 6px;
321
- font-size: 12px;
322
- white-space: nowrap;
323
- pointer-events: none;
324
- opacity: 0;
325
- transition: opacity 0.2s ease;
326
- z-index: 10;
327
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
328
- }
329
-
330
- .event-tooltip::after {
331
- content: '';
332
- position: absolute;
333
- top: 100%;
334
- left: 50%;
335
- transform: translateX(-50%);
336
- border: 4px solid transparent;
337
- border-top-color: ${cssManager.bdTheme('hsl(0 0% 20%)', 'hsl(0 0% 90%)')};
338
- }
339
-
340
- .day.has-event:hover .event-tooltip {
341
- opacity: 1;
342
- }
343
-
344
- /* Time selector */
345
- .time-selector {
346
- margin-top: 12px;
347
- padding-top: 12px;
348
- border-top: 1px solid ${cssManager.bdTheme('hsl(214.3 31.8% 91.4%)', 'hsl(217.2 32.6% 17.5%)')};
349
- }
350
-
351
- .time-selector-title {
352
- font-size: 12px;
353
- font-weight: 500;
354
- margin-bottom: 8px;
355
- color: ${cssManager.bdTheme('hsl(220 8.9% 46.1%)', 'hsl(215 20.2% 65.1%)')};
356
- }
357
-
358
- .time-inputs {
359
- display: flex;
360
- gap: 8px;
361
- align-items: center;
362
- }
363
-
364
- .time-input {
365
- width: 65px;
366
- height: 36px;
367
- border: 1px solid ${cssManager.bdTheme('hsl(214.3 31.8% 91.4%)', 'hsl(217.2 32.6% 17.5%)')};
368
- border-radius: 6px;
369
- padding: 0 12px;
370
- font-size: 14px;
371
- text-align: center;
372
- background: ${cssManager.bdTheme('hsl(0 0% 100%)', 'hsl(224 71.4% 4.1%)')};
373
- color: ${cssManager.bdTheme('hsl(224 71.4% 4.1%)', 'hsl(210 20% 98%)')};
374
- transition: all 0.2s ease;
375
- }
376
-
377
- .time-input:hover {
378
- border-color: ${cssManager.bdTheme('hsl(214.3 31.8% 91.4%)', 'hsl(217.2 32.6% 17.5%)')};
379
- background: ${cssManager.bdTheme('hsl(210 20% 98%)', 'hsl(215 27.9% 16.9%)')};
380
- }
381
-
382
- .time-input:focus {
383
- outline: none;
384
- border-color: ${cssManager.bdTheme('hsl(222.2 47.4% 11.2%)', 'hsl(210 20% 98%)')};
385
- box-shadow: 0 0 0 2px ${cssManager.bdTheme('hsl(222.2 47.4% 11.2% / 0.1)', 'hsl(210 20% 98% / 0.1)')};
386
- }
387
-
388
- .time-separator {
389
- font-size: 14px;
390
- font-weight: 500;
391
- color: ${cssManager.bdTheme('hsl(220 8.9% 46.1%)', 'hsl(215 20.2% 65.1%)')};
392
- }
393
-
394
- .am-pm-selector {
395
- display: flex;
396
- gap: 4px;
397
- margin-left: 8px;
398
- }
399
-
400
- .am-pm-button {
401
- padding: 6px 12px;
402
- border: 1px solid ${cssManager.bdTheme('hsl(214.3 31.8% 91.4%)', 'hsl(217.2 32.6% 17.5%)')};
403
- background: ${cssManager.bdTheme('hsl(0 0% 100%)', 'hsl(224 71.4% 4.1%)')};
404
- border-radius: 6px;
405
- font-size: 12px;
406
- font-weight: 500;
407
- cursor: pointer;
408
- transition: all 0.2s ease;
409
- color: ${cssManager.bdTheme('hsl(220 8.9% 46.1%)', 'hsl(215 20.2% 65.1%)')};
410
- }
411
-
412
- .am-pm-button.selected {
413
- background: ${cssManager.bdTheme('hsl(222.2 47.4% 11.2%)', 'hsl(210 20% 98%)')};
414
- color: ${cssManager.bdTheme('hsl(210 20% 98%)', 'hsl(222.2 47.4% 11.2%)')};
415
- border-color: ${cssManager.bdTheme('hsl(222.2 47.4% 11.2%)', 'hsl(210 20% 98%)')};
416
- }
417
-
418
- .am-pm-button:hover:not(.selected) {
419
- background: ${cssManager.bdTheme('hsl(210 20% 98%)', 'hsl(215 27.9% 16.9%)')};
420
- border-color: ${cssManager.bdTheme('hsl(214.3 31.8% 91.4%)', 'hsl(217.2 32.6% 17.5%)')};
421
- }
422
-
423
- /* Action buttons */
424
- .calendar-actions {
425
- display: flex;
426
- gap: 8px;
427
- margin-top: 12px;
428
- padding-top: 12px;
429
- border-top: 1px solid ${cssManager.bdTheme('hsl(214.3 31.8% 91.4%)', 'hsl(217.2 32.6% 17.5%)')};
430
- }
431
-
432
- .action-button {
433
- flex: 1;
434
- height: 36px;
435
- border: none;
436
- border-radius: 6px;
437
- font-size: 14px;
438
- font-weight: 500;
439
- cursor: pointer;
440
- transition: all 0.2s ease;
441
- display: flex;
442
- align-items: center;
443
- justify-content: center;
444
- }
445
-
446
- .today-button {
447
- background: ${cssManager.bdTheme('hsl(0 0% 100%)', 'hsl(224 71.4% 4.1%)')};
448
- border: 1px solid ${cssManager.bdTheme('hsl(214.3 31.8% 91.4%)', 'hsl(217.2 32.6% 17.5%)')};
449
- color: ${cssManager.bdTheme('hsl(224 71.4% 4.1%)', 'hsl(210 20% 98%)')};
450
- }
451
-
452
- .today-button:hover {
453
- background: ${cssManager.bdTheme('hsl(210 20% 98%)', 'hsl(215 27.9% 16.9%)')};
454
- border-color: ${cssManager.bdTheme('hsl(214.3 31.8% 91.4%)', 'hsl(217.2 32.6% 17.5%)')};
455
- }
456
-
457
- .today-button:active {
458
- background: ${cssManager.bdTheme('hsl(214.3 31.8% 91.4%)', 'hsl(217.2 32.6% 17.5%)')};
459
- }
460
-
461
- .clear-button {
462
- background: transparent;
463
- border: 1px solid transparent;
464
- color: ${cssManager.bdTheme('hsl(220 8.9% 46.1%)', 'hsl(215 20.2% 65.1%)')};
465
- }
466
-
467
- .clear-button:hover {
468
- background: ${cssManager.bdTheme('hsl(0 72.2% 50.6% / 0.1)', 'hsl(0 62.8% 30.6% / 0.1)')};
469
- color: ${cssManager.bdTheme('hsl(0 72.2% 50.6%)', 'hsl(0 62.8% 30.6%)')};
470
- }
471
-
472
- .clear-button:active {
473
- background: ${cssManager.bdTheme('hsl(0 72.2% 50.6% / 0.2)', 'hsl(0 62.8% 30.6% / 0.2)')};
474
- }
475
-
476
- /* Timezone selector */
477
- .timezone-selector {
478
- margin-top: 12px;
479
- padding-top: 12px;
480
- border-top: 1px solid ${cssManager.bdTheme('hsl(214.3 31.8% 91.4%)', 'hsl(217.2 32.6% 17.5%)')};
481
- }
482
-
483
- .timezone-selector-title {
484
- font-size: 12px;
485
- font-weight: 500;
486
- margin-bottom: 8px;
487
- color: ${cssManager.bdTheme('hsl(220 8.9% 46.1%)', 'hsl(215 20.2% 65.1%)')};
488
- }
489
-
490
- .timezone-select {
491
- width: 100%;
492
- height: 36px;
493
- border: 1px solid ${cssManager.bdTheme('hsl(214.3 31.8% 91.4%)', 'hsl(217.2 32.6% 17.5%)')};
494
- border-radius: 6px;
495
- padding: 0 12px;
496
- font-size: 14px;
497
- background: ${cssManager.bdTheme('hsl(0 0% 100%)', 'hsl(224 71.4% 4.1%)')};
498
- color: ${cssManager.bdTheme('hsl(224 71.4% 4.1%)', 'hsl(210 20% 98%)')};
499
- cursor: pointer;
500
- transition: all 0.2s ease;
501
- }
502
-
503
- .timezone-select:hover {
504
- border-color: ${cssManager.bdTheme('hsl(214.3 31.8% 91.4%)', 'hsl(217.2 32.6% 17.5%)')};
505
- background: ${cssManager.bdTheme('hsl(210 20% 98%)', 'hsl(215 27.9% 16.9%)')};
506
- }
507
-
508
- .timezone-select:focus {
509
- outline: none;
510
- border-color: ${cssManager.bdTheme('hsl(222.2 47.4% 11.2%)', 'hsl(210 20% 98%)')};
511
- box-shadow: 0 0 0 2px ${cssManager.bdTheme('hsl(222.2 47.4% 11.2% / 0.1)', 'hsl(210 20% 98% / 0.1)')};
512
- }
513
103
  `,
514
- ];
104
+ ];
@@ -2,19 +2,6 @@ import { html, type TemplateResult } from '@design.estate/dees-element';
2
2
  import type { DeesInputDatepicker } from './component.js';
3
3
 
4
4
  export const renderDatepicker = (component: DeesInputDatepicker): TemplateResult => {
5
- const monthNames = [
6
- 'January', 'February', 'March', 'April', 'May', 'June',
7
- 'July', 'August', 'September', 'October', 'November', 'December'
8
- ];
9
-
10
- const weekDays = component.weekStartsOn === 1
11
- ? ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']
12
- : ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];
13
-
14
- const days = component.getDaysInMonth();
15
- const isAM = component.selectedHour < 12;
16
- const timezones = component.getTimezones();
17
-
18
5
  return html`
19
6
  <div class="input-wrapper">
20
7
  <dees-label .label=${component.label} .description=${component.description} .required=${component.required}></dees-label>
@@ -39,141 +26,8 @@ export const renderDatepicker = (component: DeesInputDatepicker): TemplateResult
39
26
  ` : ''}
40
27
  <dees-icon class="calendar-icon" icon="lucide:calendar" iconSize="16"></dees-icon>
41
28
  </div>
42
-
43
- <!-- Calendar Popup -->
44
- <div class="calendar-popup ${component.isOpened ? 'show' : ''} ${component.opensToTop ? 'top' : 'bottom'}">
45
- <!-- Month/Year Navigation -->
46
- <div class="calendar-header">
47
- <button class="nav-button" @click=${component.previousMonth}>
48
- <dees-icon icon="lucide:chevronLeft" iconSize="16"></dees-icon>
49
- </button>
50
- <div class="month-year-display">
51
- ${monthNames[component.viewDate.getMonth()]} ${component.viewDate.getFullYear()}
52
- </div>
53
- <button class="nav-button" @click=${component.nextMonth}>
54
- <dees-icon icon="lucide:chevronRight" iconSize="16"></dees-icon>
55
- </button>
56
- </div>
57
-
58
- <!-- Weekday Headers -->
59
- <div class="weekdays">
60
- ${weekDays.map(day => html`<div class="weekday">${day}</div>`)}
61
- </div>
62
-
63
- <!-- Days Grid -->
64
- <div class="days-grid">
65
- ${days.map(day => {
66
- const isToday = component.isToday(day);
67
- const isSelected = component.isSelected(day);
68
- const isOtherMonth = day.getMonth() !== component.viewDate.getMonth();
69
- const isDisabled = component.isDisabled(day);
70
- const dayEvents = component.getEventsForDate(day);
71
- const hasEvents = dayEvents.length > 0;
72
- const totalEventCount = dayEvents.reduce((sum, event) => sum + (event.count || 1), 0);
73
-
74
- return html`
75
- <div
76
- class="day ${isOtherMonth ? 'other-month' : ''} ${isToday ? 'today' : ''} ${isSelected ? 'selected' : ''} ${isDisabled ? 'disabled' : ''} ${hasEvents ? 'has-event' : ''}"
77
- @click=${() => !isDisabled && component.selectDate(day)}
78
- >
79
- ${day.getDate()}
80
- ${hasEvents ? html`
81
- ${totalEventCount > 3 ? html`
82
- <div class="event-count">${totalEventCount}</div>
83
- ` : html`
84
- <div class="event-indicator">
85
- ${dayEvents.slice(0, 3).map(event => html`
86
- <div class="event-dot ${event.type || 'info'}"></div>
87
- `)}
88
- </div>
89
- `}
90
- ${dayEvents[0].title ? html`
91
- <div class="event-tooltip">
92
- ${dayEvents[0].title}
93
- ${totalEventCount > 1 ? html` (+${totalEventCount - 1} more)` : ''}
94
- </div>
95
- ` : ''}
96
- ` : ''}
97
- </div>
98
- `;
99
- })}
100
- </div>
101
-
102
- <!-- Time Selector -->
103
- ${component.enableTime ? html`
104
- <div class="time-selector">
105
- <div class="time-selector-title">Time</div>
106
- <div class="time-inputs">
107
- <input
108
- type="number"
109
- class="time-input"
110
- .value=${component.timeFormat === '12h'
111
- ? (component.selectedHour === 0 ? 12 : component.selectedHour > 12 ? component.selectedHour - 12 : component.selectedHour).toString().padStart(2, '0')
112
- : component.selectedHour.toString().padStart(2, '0')}
113
- @input=${(e: InputEvent) => component.handleHourInput(e)}
114
- min="${component.timeFormat === '12h' ? 1 : 0}"
115
- max="${component.timeFormat === '12h' ? 12 : 23}"
116
- />
117
- <span class="time-separator">:</span>
118
- <input
119
- type="number"
120
- class="time-input"
121
- .value=${component.selectedMinute.toString().padStart(2, '0')}
122
- @input=${(e: InputEvent) => component.handleMinuteInput(e)}
123
- min="0"
124
- max="59"
125
- step="${component.minuteIncrement || 1}"
126
- />
127
- ${component.timeFormat === '12h' ? html`
128
- <div class="am-pm-selector">
129
- <button
130
- class="am-pm-button ${isAM ? 'selected' : ''}"
131
- @click=${() => component.setAMPM('am')}
132
- >
133
- AM
134
- </button>
135
- <button
136
- class="am-pm-button ${!isAM ? 'selected' : ''}"
137
- @click=${() => component.setAMPM('pm')}
138
- >
139
- PM
140
- </button>
141
- </div>
142
- ` : ''}
143
- </div>
144
- </div>
145
- ` : ''}
146
-
147
- <!-- Timezone Selector -->
148
- ${component.enableTimezone ? html`
149
- <div class="timezone-selector">
150
- <div class="timezone-selector-title">Timezone</div>
151
- <select
152
- class="timezone-select"
153
- .value=${component.timezone}
154
- @change=${(e: Event) => component.handleTimezoneChange(e)}
155
- >
156
- ${timezones.map(tz => html`
157
- <option value="${tz.value}" ?selected=${tz.value === component.timezone}>
158
- ${tz.label}
159
- </option>
160
- `)}
161
- </select>
162
- </div>
163
- ` : ''}
164
-
165
- <!-- Action Buttons -->
166
- <div class="calendar-actions">
167
- <button class="action-button today-button" @click=${component.selectToday}>
168
- Today
169
- </button>
170
- <button class="action-button clear-button" @click=${component.clear}>
171
- Clear
172
- </button>
173
- </div>
174
- </div>
175
29
  </div>
176
30
  </div>
177
31
  `;
178
-
32
+
179
33
  };