@firecms/ui 3.0.0-canary.137 → 3.0.0-canary.138

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.
@@ -1,24 +1,15 @@
1
- "use client";
2
- import React, { useRef } from "react";
3
- import * as RDP from "react-datepicker"
4
-
1
+ import React, { useRef, useState } from "react";
5
2
  import { CalendarMonthIcon, ClearIcon, ErrorIcon } from "../icons";
6
3
  import { IconButton } from "./IconButton";
7
- import { fieldBackgroundDisabledMixin, fieldBackgroundHoverMixin, fieldBackgroundMixin, paperMixin } from "../styles";
4
+ import { fieldBackgroundDisabledMixin, fieldBackgroundHoverMixin, fieldBackgroundMixin, } from "../styles";
8
5
  import { InputLabel } from "./InputLabel";
9
6
  import { Typography } from "./Typography";
10
7
  import { cls } from "../util";
11
8
  import { useInjectStyles } from "../hooks";
12
9
 
13
- // this fixes the issue with the default export, affecting Next.js
14
- const DatePicker = (((RDP.default as any).default as any) ||
15
- (RDP.default as any) ||
16
- (RDP as any)) as typeof RDP.default
17
-
18
10
  export type DateTimeFieldProps = {
19
11
  value?: Date | null;
20
12
  onChange?: (date: Date | null) => void;
21
-
22
13
  mode?: "date" | "date_time";
23
14
  disabled?: boolean;
24
15
  clearable?: boolean;
@@ -30,7 +21,7 @@ export type DateTimeFieldProps = {
30
21
  inputClassName?: string;
31
22
  invisible?: boolean;
32
23
  locale?: string;
33
- }
24
+ };
34
25
 
35
26
  export const DateTimeField: React.FC<DateTimeFieldProps> = ({
36
27
  value,
@@ -45,26 +36,73 @@ export const DateTimeField: React.FC<DateTimeFieldProps> = ({
45
36
  style,
46
37
  inputClassName,
47
38
  invisible,
48
- locale
39
+ locale, // Note: The 'locale' prop is not utilized with native inputs as they are managed by the browser.
49
40
  }) => {
50
-
51
- const ref = useRef(null);
52
-
53
- const inputRef = useRef(null);
54
- const [focused, setFocused] = React.useState(document.activeElement === inputRef.current);
41
+ const inputRef = useRef<HTMLInputElement>(null);
42
+ const [focused, setFocused] = useState(false);
55
43
  const hasValue = value !== undefined && value !== null;
56
44
  const invalidValue = value !== undefined && value !== null && !(value instanceof Date);
57
45
 
58
- useInjectStyles("DateTimeField", datePickerCss);
46
+ useInjectStyles("DateTimeField", inputStyles);
59
47
 
60
48
  const handleClear = (e: React.MouseEvent) => {
61
49
  e.preventDefault();
62
50
  onChange?.(null);
63
- }
51
+ };
52
+
53
+ // Convert Date object to input value string
54
+ const valueAsInputValue = (
55
+ dateValue: Date | null,
56
+ mode: "date" | "date_time"
57
+ ) => {
58
+ if (!dateValue) {
59
+ return "";
60
+ }
61
+ const pad = (n: number) => n.toString().padStart(2, "0");
62
+ const year = dateValue.getFullYear();
63
+ const month = pad(dateValue.getMonth() + 1);
64
+ const day = pad(dateValue.getDate());
65
+
66
+ if (mode === "date") {
67
+ return `${year}-${month}-${day}`;
68
+ } else {
69
+ const hours = pad(dateValue.getHours());
70
+ const minutes = pad(dateValue.getMinutes());
71
+ return `${year}-${month}-${day}T${hours}:${minutes}`;
72
+ }
73
+ };
74
+
75
+ // Handle input value change
76
+ const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {
77
+ const inputValue = e.target.value;
78
+
79
+ if (!inputValue) {
80
+ onChange?.(null);
81
+ return;
82
+ }
83
+
84
+ let newDate: Date | null = null;
85
+ try {
86
+ if (mode === "date_time") {
87
+ const [datePart, timePart] = inputValue.split("T");
88
+ const [year, month, day] = datePart.split("-").map(Number);
89
+ const [hours, minutes] = timePart.split(":").map(Number);
90
+ newDate = new Date(year, month - 1, day, hours, minutes);
91
+ } else {
92
+ const [year, month, day] = inputValue.split("-").map(Number);
93
+ newDate = new Date(year, month - 1, day);
94
+ }
95
+ } catch (e) {
96
+ newDate = null;
97
+ }
98
+
99
+ onChange?.(newDate);
100
+ };
64
101
 
65
102
  return (
66
103
  <>
67
-
104
+ {/* Inject the styles to hide the calendar icon */}
105
+ <style>{inputStyles}</style>
68
106
  <div
69
107
  className={cls(
70
108
  "rounded-md relative max-w-full",
@@ -72,912 +110,99 @@ export const DateTimeField: React.FC<DateTimeFieldProps> = ({
72
110
  disabled ? fieldBackgroundDisabledMixin : fieldBackgroundHoverMixin,
73
111
  {
74
112
  "min-h-[48px]": size === "small",
75
- "min-h-[64px]": size === "medium"
113
+ "min-h-[64px]": size === "medium",
76
114
  },
77
- className)}
78
- style={style}>
79
-
115
+ className
116
+ )}
117
+ style={style}
118
+ onClick={() => {
119
+ if (!disabled) {
120
+ inputRef.current?.focus();
121
+ }
122
+ }}
123
+ >
80
124
  {label && (
81
125
  <InputLabel
82
- className={cls("absolute top-1 pointer-events-none",
83
- !error ? (focused ? "text-primary" : "text-text-secondary dark:text-text-secondary-dark") : "text-red-500 dark:text-red-500",
84
- disabled ? "opacity-50" : "")}
85
- shrink={hasValue || focused}
126
+ className={cls(
127
+ "absolute top-1 pointer-events-none",
128
+ !error
129
+ ? focused
130
+ ? "text-primary"
131
+ : "text-text-secondary dark:text-text-secondary-dark"
132
+ : "text-red-500 dark:text-red-500",
133
+ disabled ? "opacity-50" : ""
134
+ )}
135
+ shrink={true}
136
+ // shrink={hasValue || focused}
86
137
  >
87
138
  {label}
88
139
  </InputLabel>
89
140
  )}
90
141
 
91
- <DatePicker
92
- ref={ref}
93
- locale={locale}
94
- selected={(invalidValue ? null : value) ?? null}
95
- onChange={onChange}
96
- disabled={false}
97
- popperClassName={cls(paperMixin, "my-4 shadow")}
98
- onFocus={() => setFocused(true)}
99
- onBlur={() => setFocused(false)}
100
- showTimeSelect={mode === "date_time"}
101
- timeFormat="HH:mm"
102
- timeIntervals={15}
103
- timeCaption="time"
104
- dateFormat={mode === "date_time" ? "Pp" : "P"}
105
- preventOpenOnFocus={true}
106
- className={cls(
107
- "w-full outline-none bg-transparent leading-normal text-base px-3",
108
- clearable ? "pr-14" : "pr-12",
109
- "rounded-md",
110
- size === "small" ? "min-h-[48px]" : "min-h-[64px]",
111
- label ? "pt-8 pb-2" : "py-2",
112
- inputClassName,
113
- disabled && "border border-transparent outline-none opacity-50 dark:opacity-50 text-slate-600 dark:text-slate-500"
114
- )}
115
- />
116
-
142
+ <input
143
+ ref={inputRef}
144
+ type={mode === "date_time" ? "datetime-local" : "date"}
145
+ value={valueAsInputValue(value ?? null, mode)}
146
+ onChange={handleInputChange}
147
+ onFocus={() => setFocused(true)}
148
+ onBlur={() => setFocused(false)}
149
+ disabled={disabled}
150
+ className={cls(
151
+ "w-full outline-none bg-transparent leading-normal text-base px-3",
152
+ clearable ? "pr-14" : "pr-12",
153
+ "rounded-md",
154
+ size === "small" ? "min-h-[48px]" : "min-h-[64px]",
155
+ label ? "pt-8 pb-2" : "py-2",
156
+ inputClassName,
157
+ disabled &&
158
+ "border border-transparent outline-none opacity-50 dark:opacity-50 text-slate-600 dark:text-slate-500"
159
+ )}
160
+ />
117
161
  <IconButton
118
- onClick={() => {
119
- // @ts-ignore
120
- return ref.current?.setOpen(true);
162
+ onClick={(e) => {
163
+ e.stopPropagation();
164
+ inputRef.current?.showPicker();
121
165
  }}
122
- className="absolute right-3 top-1/2 transform -translate-y-1/2 !text-slate-500 ">
166
+ className="absolute right-3 top-1/2 transform -translate-y-1/2 !text-slate-500"
167
+ >
123
168
  <CalendarMonthIcon color={"disabled"}/>
124
169
  </IconButton>
125
-
126
170
  {clearable && value && (
127
171
  <IconButton
128
172
  onClick={handleClear}
129
- className="absolute right-14 top-1/2 transform -translate-y-1/2 text-slate-400 ">
173
+ className="absolute right-14 top-1/2 transform -translate-y-1/2 text-slate-400 "
174
+ >
130
175
  <ClearIcon/>
131
176
  </IconButton>
132
177
  )}
133
178
  </div>
134
-
135
- {invalidValue && <div
136
- className="flex items-center m-2">
137
- <ErrorIcon size={"small"} color={"error"}/>
138
- <div className="pl-2">
139
- <Typography
140
- variant={"body2"}
141
- className="font-medium">Invalid date value for this field</Typography>
142
- <Typography variant={"body2"}>{`The provided value is: ${JSON.stringify(value)}`}</Typography>
179
+ {invalidValue && (
180
+ <div className="flex items-center m-2">
181
+ <ErrorIcon size={"small"} color={"error"}/>
182
+ <div className="pl-2">
183
+ <Typography variant={"body2"} className="font-medium">
184
+ Invalid date value for this field
185
+ </Typography>
186
+ <Typography variant={"body2"}>
187
+ {`The provided value is: ${JSON.stringify(value)}`}
188
+ </Typography>
189
+ </div>
143
190
  </div>
144
- </div>}
191
+ )}
145
192
  </>
146
193
  );
147
- }
148
-
149
- const datePickerCss = `
150
- .react-datepicker__year-read-view--down-arrow,
151
- .react-datepicker__month-read-view--down-arrow,
152
- .react-datepicker__month-year-read-view--down-arrow, .react-datepicker__navigation-icon::before {
153
- border-color: #ccc;
154
- border-style: solid;
155
- border-width: 3px 3px 0 0;
156
- content: "";
157
- display: block;
158
- height: 9px;
159
- position: absolute;
160
- top: 6px;
161
- width: 9px;
162
- }
163
-
164
- .react-datepicker-wrapper {
165
- width: 100%;
166
- height: 100%;
167
- display: flex;
168
- padding: 0;
169
- border: 0;
170
- }
171
-
172
- .react-datepicker {
173
- font-size: 0.875rem;
174
- color: #111;
175
- display: flex;
176
- position: relative;
177
- }
178
-
179
- .react-datepicker--time-only .react-datepicker__time-container {
180
- border-left: 0;
181
- }
182
- .react-datepicker--time-only .react-datepicker__time,
183
- .react-datepicker--time-only .react-datepicker__time-box {
184
- border-bottom-left-radius: 4px;
185
- border-bottom-right-radius: 4px;
186
- }
187
-
188
- .react-datepicker__triangle {
189
- display: none;
190
- }
191
-
192
- .react-datepicker-popper {
193
- z-index: 100;
194
- min-width: 348px;
195
- }
196
-
197
- .react-datepicker__header {
198
- text-align: center;
199
- background-color: #f0f0f0;
200
- border-bottom: 1px solid #e7e7e9;
201
- border-top-left-radius: 4px;
202
- padding: 16px;
203
- position: relative;
204
- }
205
- .react-datepicker__header--time {
206
- padding-bottom: 8px;
207
- padding-left: 5px;
208
- padding-right: 5px;
209
- }
210
- .react-datepicker__header--time:not(.react-datepicker__header--time--only) {
211
- border-top-left-radius: 0;
212
- }
213
- .react-datepicker__header:not(.react-datepicker__header--has-time-select) {
214
- border-top-right-radius: 4px;
215
- }
216
-
217
- .react-datepicker__year-dropdown-container--select,
218
- .react-datepicker__month-dropdown-container--select,
219
- .react-datepicker__month-year-dropdown-container--select,
220
- .react-datepicker__year-dropdown-container--scroll,
221
- .react-datepicker__month-dropdown-container--scroll,
222
- .react-datepicker__month-year-dropdown-container--scroll {
223
- display: inline-block;
224
- margin: 0 15px;
225
- }
226
-
227
- .react-datepicker__current-month,
228
- .react-datepicker-time__header,
229
- .react-datepicker-year-header {
230
- margin-top: 0;
231
- color: #000;
232
- font-weight: 500;
233
- font-size: 0.875rem;
234
- }
235
-
236
- .react-datepicker-time__header {
237
- text-overflow: ellipsis;
238
- white-space: nowrap;
239
- overflow: hidden;
240
- }
241
-
242
- .react-datepicker__navigation {
243
- align-items: center;
244
- background: none;
245
- display: flex;
246
- justify-content: center;
247
- text-align: center;
248
- cursor: pointer;
249
- position: absolute;
250
- top: 2px;
251
- padding: 0;
252
- border: none;
253
- z-index: 1;
254
- height: 32px;
255
- width: 32px;
256
- text-indent: -999em;
257
- overflow: hidden;
258
- }
259
- .react-datepicker__navigation--previous {
260
- top: 12px;
261
- left: 4px;
262
- }
263
- .react-datepicker__navigation--next {
264
- top: 12px;
265
- right: 4px;
266
- }
267
- .react-datepicker__navigation--next--with-time:not(.react-datepicker__navigation--next--with-today-button) {
268
- right: 85px;
269
- }
270
- .react-datepicker__navigation--years {
271
- position: relative;
272
- top: 0;
273
- display: block;
274
- margin-left: auto;
275
- margin-right: auto;
276
- }
277
- .react-datepicker__navigation--years-previous {
278
- top: 4px;
279
- }
280
- .react-datepicker__navigation--years-upcoming {
281
- top: -4px;
282
- }
283
- .react-datepicker__navigation:hover *::before {
284
- border-color: #a6a6a6;
285
- }
286
-
287
- .react-datepicker__navigation-icon {
288
- position: relative;
289
- top: -1px;
290
- font-size: 20px;
291
- width: 0;
292
- }
293
- .react-datepicker__navigation-icon--next {
294
- left: -2px;
295
- }
296
- .react-datepicker__navigation-icon--next::before {
297
- transform: rotate(45deg);
298
- left: -7px;
299
- }
300
- .react-datepicker__navigation-icon--previous {
301
- right: -2px;
302
- }
303
- .react-datepicker__navigation-icon--previous::before {
304
- transform: rotate(225deg);
305
- right: -7px;
306
- }
307
-
308
-
309
- .react-datepicker__year {
310
- margin: 0.4rem;
311
- text-align: center;
312
- }
313
- .react-datepicker__year-wrapper {
314
- display: flex;
315
- flex-wrap: wrap;
316
- max-width: 180px;
317
- }
318
- .react-datepicker__year .react-datepicker__year-text {
319
- display: inline-block;
320
- width: 4rem;
321
- margin: 2px;
322
- }
323
-
324
- .react-datepicker__month {
325
- margin: 16px;
326
- text-align: center;
327
- }
328
- .react-datepicker__month .react-datepicker__month-text,
329
- .react-datepicker__month .react-datepicker__quarter-text {
330
- display: inline-block;
331
- width: 4rem;
332
- margin: 2px;
333
- }
334
-
335
- .react-datepicker__input-time-container {
336
- display: flex;
337
- width: 100%;
338
- height: 100%;
339
- margin: 5px 0 10px 15px;
340
- text-align: left;
341
- }
342
- .react-datepicker__input-time-container .react-datepicker-time__caption {
343
- display: inline-block;
344
- }
345
- .react-datepicker__input-time-container .react-datepicker-time__input-container {
346
- display: inline-block;
347
- }
348
- .react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input {
349
- display: inline-block;
350
- margin-left: 10px;
351
- }
352
- .react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input {
353
- width: auto;
354
- }
355
- .react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]::-webkit-inner-spin-button,
356
- .react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]::-webkit-outer-spin-button {
357
- -webkit-appearance: none;
358
- margin: 0;
359
- }
360
- .react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time] {
361
- -moz-appearance: textfield;
362
- }
363
- .react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__delimiter {
364
- margin-left: 5px;
365
- display: inline-block;
366
- }
367
-
368
- .react-datepicker__time-container {
369
- float: right;
370
- border-left: 1px solid #e7e7e9;
371
- width: 85px;
372
- height: 320px;
373
- }
374
- .react-datepicker__time-container--with-today-button {
375
- display: inline;
376
- border: 1px solid #e7e7e9;
377
- border-radius: 4px;
378
- position: absolute;
379
- right: -87px;
380
- top: 0;
381
- }
382
- .react-datepicker__time-container .react-datepicker__time {
383
- position: relative;
384
- border-bottom-right-radius: 4px;
385
- }
386
- .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box {
387
- width: 85px;
388
- overflow-x: hidden;
389
- margin: 0 auto;
390
- text-align: center;
391
- border-bottom-right-radius: 4px;
392
- }
393
- .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list {
394
- list-style: none;
395
- margin: 0;
396
- height: calc(195px + (1.7rem / 2));
397
- overflow-y: scroll;
398
- padding-right: 0;
399
- padding-left: 0;
400
- width: 100%;
401
- height: 100%;
402
- box-sizing: content-box;
403
- }
404
- .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item {
405
- height: 28px;
406
- padding: 5px 10px;
407
- white-space: nowrap;
408
- }
409
- .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item:hover {
410
- cursor: pointer;
411
- }
412
- .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--selected {
413
- background-color: #5193f6;
414
- color: white;
415
- font-weight: 500;
416
- }
417
- .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--selected:hover {
418
- background-color: #5193f6;
419
- }
420
- .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--disabled {
421
- color: #ccc;
422
- }
423
- .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--disabled:hover {
424
- cursor: default;
425
- }
426
-
427
- .react-datepicker__week-number {
428
- color: #ccc;
429
- display: inline-block;
430
- width: 1.7rem;
431
- line-height: 1.7rem;
432
- text-align: center;
433
- padding: 2px;
434
- margin: 2px;
435
- }
436
- .react-datepicker__week-number.react-datepicker__week-number--clickable {
437
- cursor: pointer;
438
- }
439
- .react-datepicker__week-number.react-datepicker__week-number--clickable:hover {
440
- border-radius: 4px;
441
- background-color: #f0f0f0;
442
- }
443
-
444
- .react-datepicker__day-names,
445
- .react-datepicker__week {
446
- white-space: nowrap;
447
- }
448
-
449
- .react-datepicker__day-names {
450
- margin-bottom: -8px;
451
- }
452
-
453
- .react-datepicker__day-name,
454
- .react-datepicker__day,
455
- .react-datepicker__time-name {
456
- color: #000;
457
- display: inline-block;
458
- width: 1.7rem;
459
- line-height: 1.7rem;
460
- text-align: center;
461
- padding: 2px;
462
- margin: 2px;
463
- }
464
-
465
- .react-datepicker__month-container{
466
- flex-grow: 1;
467
- }
468
-
469
- .react-datepicker__day,
470
- .react-datepicker__month-text,
471
- .react-datepicker__quarter-text,
472
- .react-datepicker__year-text {
473
- width: 32px;
474
- cursor: pointer;
475
- }
476
- .react-datepicker__day:hover,
477
- .react-datepicker__month-text:hover,
478
- .react-datepicker__quarter-text:hover,
479
- .react-datepicker__year-text:hover {
480
- border-radius: 100%;
481
- background-color: #f0f0f0;
482
- }
483
- .react-datepicker__day--today,
484
- .react-datepicker__month-text--today,
485
- .react-datepicker__quarter-text--today,
486
- .react-datepicker__year-text--today {
487
- font-weight: 500;
488
- }
489
- .react-datepicker__day--highlighted,
490
- .react-datepicker__month-text--highlighted,
491
- .react-datepicker__quarter-text--highlighted,
492
- .react-datepicker__year-text--highlighted {
493
- border-radius: 100%;
494
- background-color: #3dcc4a;
495
- color: #fff;
496
- }
497
- .react-datepicker__day--highlighted:hover,
498
- .react-datepicker__month-text--highlighted:hover,
499
- .react-datepicker__quarter-text--highlighted:hover,
500
- .react-datepicker__year-text--highlighted:hover {
501
- background-color: #32be3f;
502
- }
503
- .react-datepicker__day--highlighted-custom-1,
504
- .react-datepicker__month-text--highlighted-custom-1,
505
- .react-datepicker__quarter-text--highlighted-custom-1,
506
- .react-datepicker__year-text--highlighted-custom-1 {
507
- color: magenta;
508
- }
509
- .react-datepicker__day--highlighted-custom-2,
510
- .react-datepicker__month-text--highlighted-custom-2,
511
- .react-datepicker__quarter-text--highlighted-custom-2,
512
- .react-datepicker__year-text--highlighted-custom-2 {
513
- color: green;
514
- }
515
- .react-datepicker__day--selected, .react-datepicker__day--in-selecting-range, .react-datepicker__day--in-range,
516
- .react-datepicker__month-text--selected,
517
- .react-datepicker__month-text--in-selecting-range,
518
- .react-datepicker__month-text--in-range,
519
- .react-datepicker__quarter-text--selected,
520
- .react-datepicker__quarter-text--in-selecting-range,
521
- .react-datepicker__quarter-text--in-range,
522
- .react-datepicker__year-text--selected,
523
- .react-datepicker__year-text--in-selecting-range,
524
- .react-datepicker__year-text--in-range {
525
- border-radius: 100%;
526
- background-color: #186ef0;
527
- color: #fff;
528
- }
529
- .react-datepicker__day--selected:hover, .react-datepicker__day--in-selecting-range:hover, .react-datepicker__day--in-range:hover,
530
- .react-datepicker__month-text--selected:hover,
531
- .react-datepicker__month-text--in-selecting-range:hover,
532
- .react-datepicker__month-text--in-range:hover,
533
- .react-datepicker__quarter-text--selected:hover,
534
- .react-datepicker__quarter-text--in-selecting-range:hover,
535
- .react-datepicker__quarter-text--in-range:hover,
536
- .react-datepicker__year-text--selected:hover,
537
- .react-datepicker__year-text--in-selecting-range:hover,
538
- .react-datepicker__year-text--in-range:hover {
539
- background-color: #5698f9;
540
- }
541
- // .react-datepicker__day--keyboard-selected,
542
- // .react-datepicker__month-text--keyboard-selected,
543
- // .react-datepicker__quarter-text--keyboard-selected,
544
- // .react-datepicker__year-text--keyboard-selected {
545
- // border-radius: 100%;
546
- // background-color: #5193f6;
547
- // color: rgb(0, 0, 0);
548
- // }
549
- // .react-datepicker__day--keyboard-selected:hover,
550
- // .react-datepicker__month-text--keyboard-selected:hover,
551
- // .react-datepicker__quarter-text--keyboard-selected:hover,
552
- // .react-datepicker__year-text--keyboard-selected:hover {
553
- // background-color: #5193f6;
554
- // }
555
- .react-datepicker__day--in-selecting-range:not(.react-datepicker__day--in-range,
556
- .react-datepicker__month-text--in-range,
557
- .react-datepicker__quarter-text--in-range,
558
- .react-datepicker__year-text--in-range),
559
- .react-datepicker__month-text--in-selecting-range:not(.react-datepicker__day--in-range,
560
- .react-datepicker__month-text--in-range,
561
- .react-datepicker__quarter-text--in-range,
562
- .react-datepicker__year-text--in-range),
563
- .react-datepicker__quarter-text--in-selecting-range:not(.react-datepicker__day--in-range,
564
- .react-datepicker__month-text--in-range,
565
- .react-datepicker__quarter-text--in-range,
566
- .react-datepicker__year-text--in-range),
567
- .react-datepicker__year-text--in-selecting-range:not(.react-datepicker__day--in-range,
568
- .react-datepicker__month-text--in-range,
569
- .react-datepicker__quarter-text--in-range,
570
- .react-datepicker__year-text--in-range) {
571
- background-color: rgba(33, 107, 165, 0.5);
572
- }
573
- .react-datepicker__month--selecting-range .react-datepicker__day--in-range:not(.react-datepicker__day--in-selecting-range,
574
- .react-datepicker__month-text--in-selecting-range,
575
- .react-datepicker__quarter-text--in-selecting-range,
576
- .react-datepicker__year-text--in-selecting-range), .react-datepicker__year--selecting-range .react-datepicker__day--in-range:not(.react-datepicker__day--in-selecting-range,
577
- .react-datepicker__month-text--in-selecting-range,
578
- .react-datepicker__quarter-text--in-selecting-range,
579
- .react-datepicker__year-text--in-selecting-range),
580
- .react-datepicker__month--selecting-range .react-datepicker__month-text--in-range:not(.react-datepicker__day--in-selecting-range,
581
- .react-datepicker__month-text--in-selecting-range,
582
- .react-datepicker__quarter-text--in-selecting-range,
583
- .react-datepicker__year-text--in-selecting-range),
584
- .react-datepicker__year--selecting-range .react-datepicker__month-text--in-range:not(.react-datepicker__day--in-selecting-range,
585
- .react-datepicker__month-text--in-selecting-range,
586
- .react-datepicker__quarter-text--in-selecting-range,
587
- .react-datepicker__year-text--in-selecting-range),
588
- .react-datepicker__month--selecting-range .react-datepicker__quarter-text--in-range:not(.react-datepicker__day--in-selecting-range,
589
- .react-datepicker__month-text--in-selecting-range,
590
- .react-datepicker__quarter-text--in-selecting-range,
591
- .react-datepicker__year-text--in-selecting-range),
592
- .react-datepicker__year--selecting-range .react-datepicker__quarter-text--in-range:not(.react-datepicker__day--in-selecting-range,
593
- .react-datepicker__month-text--in-selecting-range,
594
- .react-datepicker__quarter-text--in-selecting-range,
595
- .react-datepicker__year-text--in-selecting-range),
596
- .react-datepicker__month--selecting-range .react-datepicker__year-text--in-range:not(.react-datepicker__day--in-selecting-range,
597
- .react-datepicker__month-text--in-selecting-range,
598
- .react-datepicker__quarter-text--in-selecting-range,
599
- .react-datepicker__year-text--in-selecting-range),
600
- .react-datepicker__year--selecting-range .react-datepicker__year-text--in-range:not(.react-datepicker__day--in-selecting-range,
601
- .react-datepicker__month-text--in-selecting-range,
602
- .react-datepicker__quarter-text--in-selecting-range,
603
- .react-datepicker__year-text--in-selecting-range) {
604
- background-color: #f0f0f0;
605
- color: #000;
606
- }
607
- .react-datepicker__day--disabled,
608
- .react-datepicker__month-text--disabled,
609
- .react-datepicker__quarter-text--disabled,
610
- .react-datepicker__year-text--disabled {
611
- cursor: default;
612
- color: #ccc;
613
- }
614
- .react-datepicker__day--disabled:hover,
615
- .react-datepicker__month-text--disabled:hover,
616
- .react-datepicker__quarter-text--disabled:hover,
617
- .react-datepicker__year-text--disabled:hover {
618
- background-color: transparent;
619
- }
620
-
621
- .react-datepicker__input-container {
622
- position: relative;
623
- display: inline-block;
624
- width: 100%;
625
- height: 100%;
626
- }
627
- .react-datepicker__input-container .react-datepicker__calendar-icon {
628
- position: absolute;
629
- padding: 0.5rem;
630
- }
631
-
632
- .react-datepicker__view-calendar-icon input {
633
- padding: 6px 10px 5px 25px;
634
- }
635
-
636
- .react-datepicker__year-read-view,
637
- .react-datepicker__month-read-view,
638
- .react-datepicker__month-year-read-view {
639
- border: 1px solid transparent;
640
- border-radius: 4px;
641
- position: relative;
642
- }
643
- .react-datepicker__year-read-view:hover,
644
- .react-datepicker__month-read-view:hover,
645
- .react-datepicker__month-year-read-view:hover {
646
- cursor: pointer;
647
- }
648
- .react-datepicker__year-read-view:hover .react-datepicker__year-read-view--down-arrow,
649
- .react-datepicker__year-read-view:hover .react-datepicker__month-read-view--down-arrow,
650
- .react-datepicker__month-read-view:hover .react-datepicker__year-read-view--down-arrow,
651
- .react-datepicker__month-read-view:hover .react-datepicker__month-read-view--down-arrow,
652
- .react-datepicker__month-year-read-view:hover .react-datepicker__year-read-view--down-arrow,
653
- .react-datepicker__month-year-read-view:hover .react-datepicker__month-read-view--down-arrow {
654
- border-top-color: #e7e7e9;
655
- }
656
- .react-datepicker__year-read-view--down-arrow,
657
- .react-datepicker__month-read-view--down-arrow,
658
- .react-datepicker__month-year-read-view--down-arrow {
659
- transform: rotate(135deg);
660
- right: -16px;
661
- top: 0;
662
- }
663
-
664
- .react-datepicker__year-dropdown,
665
- .react-datepicker__month-dropdown,
666
- .react-datepicker__month-year-dropdown {
667
- background-color: #f0f0f0;
668
- position: absolute;
669
- width: 50%;
670
- left: 25%;
671
- top: 30px;
672
- z-index: 1;
673
- text-align: center;
674
- border-radius: 4px;
675
- border: 1px solid #e7e7e9;
676
- }
677
- .react-datepicker__year-dropdown:hover,
678
- .react-datepicker__month-dropdown:hover,
679
- .react-datepicker__month-year-dropdown:hover {
680
- cursor: pointer;
681
- }
682
- .react-datepicker__year-dropdown--scrollable,
683
- .react-datepicker__month-dropdown--scrollable,
684
- .react-datepicker__month-year-dropdown--scrollable {
685
- height: 150px;
686
- overflow-y: scroll;
687
- }
688
-
689
- .react-datepicker__year-option,
690
- .react-datepicker__month-option,
691
- .react-datepicker__month-year-option {
692
- line-height: 20px;
693
- width: 100%;
694
- display: block;
695
- margin-left: auto;
696
- margin-right: auto;
697
- }
698
- .react-datepicker__year-option:first-of-type,
699
- .react-datepicker__month-option:first-of-type,
700
- .react-datepicker__month-year-option:first-of-type {
701
- border-top-left-radius: 4px;
702
- border-top-right-radius: 4px;
703
- }
704
- .react-datepicker__year-option:last-of-type,
705
- .react-datepicker__month-option:last-of-type,
706
- .react-datepicker__month-year-option:last-of-type {
707
- -webkit-user-select: none;
708
- -moz-user-select: none;
709
- -ms-user-select: none;
710
- user-select: none;
711
- border-bottom-left-radius: 4px;
712
- border-bottom-right-radius: 4px;
713
- }
714
- .react-datepicker__year-option:hover,
715
- .react-datepicker__month-option:hover,
716
- .react-datepicker__month-year-option:hover {
717
- background-color: #ccc;
718
- }
719
- .react-datepicker__year-option:hover .react-datepicker__navigation--years-upcoming,
720
- .react-datepicker__month-option:hover .react-datepicker__navigation--years-upcoming,
721
- .react-datepicker__month-year-option:hover .react-datepicker__navigation--years-upcoming {
722
- border-bottom-color: #e7e7e9;
723
- }
724
- .react-datepicker__year-option:hover .react-datepicker__navigation--years-previous,
725
- .react-datepicker__month-option:hover .react-datepicker__navigation--years-previous,
726
- .react-datepicker__month-year-option:hover .react-datepicker__navigation--years-previous {
727
- border-top-color: #e7e7e9;
728
- }
729
- .react-datepicker__year-option--selected,
730
- .react-datepicker__month-option--selected,
731
- .react-datepicker__month-year-option--selected {
732
- position: absolute;
733
- left: 15px;
734
- }
735
-
736
- .react-datepicker__close-icon {
737
- cursor: pointer;
738
- background-color: transparent;
739
- border: 0;
740
- outline: 0;
741
- padding: 0 6px 0 0;
742
- position: absolute;
743
- top: 0;
744
- right: 0;
745
- height: 100%;
746
- display: table-cell;
747
- vertical-align: middle;
748
- }
749
- .react-datepicker__close-icon::after {
750
- cursor: pointer;
751
- background-color: #5193f6;
752
- color: #fff;
753
- border-radius: 50%;
754
- height: 16px;
755
- width: 16px;
756
- padding: 2px;
757
- font-size: 12px;
758
- line-height: 1;
759
- text-align: center;
760
- display: table-cell;
761
- vertical-align: middle;
762
- content: "×";
763
- }
764
-
765
- .react-datepicker__today-button {
766
- background: #f0f0f0;
767
- border-top: 1px solid #e7e7e9;
768
- cursor: pointer;
769
- text-align: center;
770
- font-weight: 500;
771
- padding: 5px 0;
772
- clear: left;
773
- }
774
-
775
- .react-datepicker__portal {
776
- position: fixed;
777
- width: 100vw;
778
- height: 100vh;
779
- background-color: rgba(0, 0, 0, 0.8);
780
- left: 0;
781
- top: 0;
782
- justify-content: center;
783
- align-items: center;
784
- display: flex;
785
- z-index: 2147483647;
786
- }
787
- .react-datepicker__portal .react-datepicker__day-name,
788
- .react-datepicker__portal .react-datepicker__day,
789
- .react-datepicker__portal .react-datepicker__time-name {
790
- width: 3rem;
791
- line-height: 3rem;
792
- }
793
- @media (max-width: 400px), (max-height: 550px) {
794
- .react-datepicker__portal .react-datepicker__day-name,
795
- .react-datepicker__portal .react-datepicker__day,
796
- .react-datepicker__portal .react-datepicker__time-name {
797
- width: 2rem;
798
- line-height: 2rem;
799
- }
800
- }
801
- .react-datepicker__portal .react-datepicker__current-month,
802
- .react-datepicker__portal .react-datepicker-time__header {
803
- font-size: 0.875rem;
804
- }
805
-
806
- .react-datepicker__children-container {
807
- width: 13.8rem;
808
- margin: 0.4rem;
809
- padding-right: 0.2rem;
810
- padding-left: 0.2rem;
811
- height: auto;
812
- }
813
-
814
- .react-datepicker__aria-live {
815
- position: absolute;
816
- clip-path: circle(0);
817
- border: 0;
818
- height: 1px;
819
- margin: -1px;
820
- overflow: hidden;
821
- padding: 0;
822
- width: 1px;
823
- white-space: nowrap;
824
- }
825
-
826
- .react-datepicker__calendar-icon {
827
- width: 1em;
828
- height: 1em;
829
- vertical-align: -0.125em;
830
- }
831
-
832
-
833
- :is([data-theme="dark"]) .react-datepicker__year-read-view--down-arrow,
834
- :is([data-theme="dark"]) .react-datepicker__month-read-view--down-arrow,
835
- :is([data-theme="dark"]) .react-datepicker__month-year-read-view--down-arrow,
836
- :is([data-theme="dark"]) .react-datepicker__navigation-icon::before {
837
- border-color: #999;
838
- }
839
-
840
-
841
- :is([data-theme="dark"]) .react-datepicker-wrapper,
842
- :is([data-theme="dark"]) .react-datepicker {
843
- color: #ccc;
844
- }
845
-
846
- :is([data-theme="dark"]) .react-datepicker__navigation:hover *::before {
847
- border-color: #e7e7e9;
848
- }
849
-
850
- :is([data-theme="dark"]) .react-datepicker__day-names,
851
- :is([data-theme="dark"]) .react-datepicker__week {
852
- color: #ccc;
853
- }
854
-
855
- :is([data-theme="dark"]) .react-datepicker__day,
856
- :is([data-theme="dark"]) .react-datepicker__month-text,
857
- :is([data-theme="dark"]) .react-datepicker__quarter-text,
858
- :is([data-theme="dark"]) .react-datepicker__year-text {
859
- color: #ccc;
860
- }
861
-
862
- :is([data-theme="dark"]) .react-datepicker__current-month,
863
- :is([data-theme="dark"]) .react-datepicker-time__header,
864
- :is([data-theme="dark"]) .react-datepicker-year-header,
865
- :is([data-theme="dark"]) .react-datepicker__day-name,
866
- :is([data-theme="dark"]) .react-datepicker__year-dropdown-container--select,
867
- :is([data-theme="dark"]) .react-datepicker__month-dropdown-container--select,
868
- :is([data-theme="dark"]) .react-datepicker__month-year-dropdown-container--select,
869
- :is([data-theme="dark"]) .react-datepicker__year-dropdown-container--scroll,
870
- :is([data-theme="dark"]) .react-datepicker__month-dropdown-container--scroll,
871
- :is([data-theme="dark"]) .react-datepicker__month-year-dropdown-container--scroll {
872
- color: #ccc;
873
- }
874
-
875
- :is([data-theme="dark"]) .react-datepicker__header {
876
- color: #fff;
877
- }
878
-
879
- :is([data-theme="dark"]) .react-datepicker__day--disabled,
880
- :is([data-theme="dark"]) .react-datepicker__month-text--disabled,
881
- :is([data-theme="dark"]) .react-datepicker__quarter-text--disabled,
882
- :is([data-theme="dark"]) .react-datepicker__year-text--disabled {
883
- color: #666;
884
- }
885
-
886
- :is([data-theme="dark"]) .react-datepicker__day--highlighted,
887
- :is([data-theme="dark"]) .react-datepicker__month-text--highlighted,
888
- :is([data-theme="dark"]) .react-datepicker__quarter-text--highlighted,
889
- :is([data-theme="dark"]) .react-datepicker__year-text--highlighted {
890
- background-color: #1a1a1a;
891
- color: #fff;
892
- }
893
-
894
- :is([data-theme="dark"]) .react-datepicker__day:hover,
895
- :is([data-theme="dark"]) .react-datepicker__day--in-range:hover,
896
- :is([data-theme="dark"]) .react-datepicker__day--selected:hover,
897
- :is([data-theme="dark"]) .react-datepicker__month-text:hover,
898
- :is([data-theme="dark"]) .react-datepicker__day:hover,
899
- :is([data-theme="dark"]) .react-datepicker__month-text--in-range:hover,
900
- :is([data-theme="dark"]) .react-datepicker__month-text--selected:hover,
901
- :is([data-theme="dark"]) .react-datepicker__quarter-text:hover,
902
- :is([data-theme="dark"]) .react-datepicker__day:hover,
903
- :is([data-theme="dark"]) .react-datepicker__quarter-text--in-range:hover,
904
- :is([data-theme="dark"]) .react-datepicker__quarter-text--selected:hover,
905
- :is([data-theme="dark"]) .react-datepicker__year-text:hover,
906
- :is([data-theme="dark"]) .react-datepicker__day:hover,
907
- :is([data-theme="dark"]) .react-datepicker__year-text--in-range:hover,
908
- :is([data-theme="dark"]) .react-datepicker__year-text--selected:hover,
909
- :is([data-theme="dark"]) .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item:hover
910
- {
911
- background-color: #262626;
912
- }
913
-
914
- :is([data-theme="dark"]) .react-datepicker__day--selected,
915
- :is([data-theme="dark"]) .react-datepicker__day--in-range,
916
- :is([data-theme="dark"]) .react-datepicker__day--in-selecting-range,
917
- :is([data-theme="dark"]) .react-datepicker__month-text--selected,
918
- :is([data-theme="dark"]) .react-datepicker__month-text--in-range,
919
- :is([data-theme="dark"]) .react-datepicker__month-text--in-selecting-range,
920
- :is([data-theme="dark"]) .react-datepicker__quarter-text--selected,
921
- :is([data-theme="dark"]) .react-datepicker__quarter-text--in-range,
922
- :is([data-theme="dark"]) .react-datepicker__quarter-text--in-selecting-range,
923
- :is([data-theme="dark"]) .react-datepicker__year-text--selected,
924
- :is([data-theme="dark"]) .react-datepicker__year-text--in-range,
925
- :is([data-theme="dark"]) .react-datepicker__year-text--in-selecting-range {
926
- background-color: #0e528f;
927
- }
928
-
929
- // :is([data-theme="dark"]) .react-datepicker__day--keyboard-selected,
930
- // :is([data-theme="dark"]) .react-datepicker__month-text--keyboard-selected,
931
- // :is([data-theme="dark"]) .react-datepicker__quarter-text--keyboard-selected,
932
- // :is([data-theme="dark"]) .react-datepicker__year-text--keyboard-selected {
933
- // background-color: #0e529f;
934
- // }
935
-
936
- :is([data-theme="dark"]) .react-datepicker__today-button {
937
- background-color: #262626;
938
- color: #ccc;
939
- }
940
-
941
- :is([data-theme="dark"]) .react-datepicker__portal {
942
- background-color: #191919;
943
- }
944
-
945
- :is([data-theme="dark"]) .react-datepicker{
946
- color: #fff;
947
- }
948
-
949
- :is([data-theme="dark"]) .react-datepicker__time-list{
950
- background-color: rgba(0, 0, 0, 0.0);
951
- }
952
-
953
- :is([data-theme="dark"]) .react-datepicker__time-container--with-today-button {
954
- border: 1px solid transparent;
955
- }
956
- :is([data-theme="dark"]) .react-datepicker__year-dropdown,
957
- :is([data-theme="dark"]) .react-datepicker__month-dropdown,
958
- :is([data-theme="dark"]) .react-datepicker__month-year-dropdown {
959
- background-color: rgba(0, 0, 0, 0.9);
960
- border: 1px solid transparent;
961
- }
962
-
963
- :is([data-theme="dark"]) .react-datepicker__header {
964
- background-color: #191919;
965
- border-bottom: 1px solid transparent;
966
- }
967
-
968
- :is([data-theme="dark"]) .react-datepicker__time-container {
969
- border-left: 1px solid transparent;
970
- }
971
- :is([data-theme="dark"]) .react-datepicker__time-container .react-datepicker__time {
972
- background-color: rgba(0, 0, 0, 0.9);
973
- }
974
-
975
- :is([data-theme="dark"]) .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--selected,
976
- :is([data-theme="dark"]) .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--selected {
977
- background-color: #0e528f;
978
- }
979
-
980
- .react-datepicker__day--outside-month{
981
- color: #666 !important;
982
- }
983
- `;
194
+ };
195
+
196
+ const inputStyles = `
197
+ /* Hide the default calendar icon in Chrome, Safari, Edge, Opera */
198
+ input[type="date"]::-webkit-calendar-picker-indicator,
199
+ input[type="datetime-local"]::-webkit-calendar-picker-indicator {
200
+ display: none;
201
+ -webkit-appearance: none;
202
+ }
203
+ /* Hide default calendar icon in Firefox */
204
+ input[type="date"],
205
+ input[type="datetime-local"] {
206
+ -moz-appearance:textfield;
207
+ }
208
+ `;