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