@placeholderco/placeholder-ui 1.0.12 → 2.0.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.
- package/LICENSE +1 -1
- package/README.md +134 -130
- package/dist/app.css +178 -0
- package/dist/bootstrap.min.css +3600 -0
- package/dist/cards/GitCard.svelte +115 -0
- package/dist/cards/GitCard.svelte.d.ts +22 -0
- package/dist/display/Avatar.svelte +29 -17
- package/dist/display/Avatar.svelte.d.ts +12 -2
- package/dist/display/LinkCollection.svelte +40 -18
- package/dist/display/LinkCollection.svelte.d.ts +9 -2
- package/dist/display/Paper.svelte +31 -19
- package/dist/display/Paper.svelte.d.ts +12 -3
- package/dist/display/alert/Alert.svelte +129 -0
- package/dist/display/alert/Alert.svelte.d.ts +15 -0
- package/dist/display/alert/AlertVariant.d.ts +1 -0
- package/dist/display/alert/AlertVariant.js +1 -0
- package/dist/display/filetree/FileTree.svelte +259 -0
- package/dist/display/filetree/FileTree.svelte.d.ts +76 -0
- package/dist/display/filetree/FileTreeItem.svelte +396 -0
- package/dist/display/filetree/FileTreeItem.svelte.d.ts +40 -0
- package/dist/display/filetree/FileTreeNode.d.ts +46 -0
- package/dist/display/filetree/FileTreeNode.js +115 -0
- package/dist/display/filetree/index.d.ts +5 -0
- package/dist/display/filetree/index.js +3 -0
- package/dist/editors/CodeMirror.svelte +306 -0
- package/dist/editors/CodeMirror.svelte.d.ts +31 -0
- package/dist/editors/tiptap/LinkActionMenu.svelte +307 -0
- package/dist/editors/tiptap/LinkActionMenu.svelte.d.ts +8 -0
- package/dist/editors/tiptap/TipTap.svelte +856 -0
- package/dist/editors/tiptap/TipTap.svelte.d.ts +54 -0
- package/dist/editors/tiptap/TipTapBubble.svelte +790 -0
- package/dist/editors/tiptap/TipTapBubble.svelte.d.ts +44 -0
- package/dist/editors/tiptap/collaboration.d.ts +55 -0
- package/dist/editors/tiptap/collaboration.js +1 -0
- package/dist/editors/tiptap/extensions/Alert.d.ts +18 -0
- package/dist/editors/tiptap/extensions/Alert.js +72 -0
- package/dist/editors/tiptap/extensions/CodeBlockEditor.d.ts +21 -0
- package/dist/editors/tiptap/extensions/CodeBlockEditor.js +326 -0
- package/dist/editors/tiptap/extensions/Div.d.ts +19 -0
- package/dist/editors/tiptap/extensions/Div.js +89 -0
- package/dist/editors/tiptap/extensions/Span.d.ts +5 -0
- package/dist/editors/tiptap/extensions/Span.js +56 -0
- package/dist/editors/tiptap/extensions/codeBlockEditor.css +236 -0
- package/dist/editors/tiptap/extensions/codeBlockLanguages.d.ts +17 -0
- package/dist/editors/tiptap/extensions/codeBlockLanguages.js +124 -0
- package/dist/editors/tiptap/extensions/index.d.ts +7 -0
- package/dist/editors/tiptap/extensions/index.js +5 -0
- package/dist/editors/tiptap/toolbar/AlertButton.svelte +261 -0
- package/dist/editors/tiptap/toolbar/AlertButton.svelte.d.ts +7 -0
- package/dist/editors/tiptap/toolbar/AlignCenterButton.svelte +18 -0
- package/dist/editors/tiptap/toolbar/AlignCenterButton.svelte.d.ts +7 -0
- package/dist/editors/tiptap/toolbar/AlignJustifyButton.svelte +18 -0
- package/dist/editors/tiptap/toolbar/AlignJustifyButton.svelte.d.ts +7 -0
- package/dist/editors/tiptap/toolbar/AlignLeftButton.svelte +18 -0
- package/dist/editors/tiptap/toolbar/AlignLeftButton.svelte.d.ts +7 -0
- package/dist/editors/tiptap/toolbar/AlignRightButton.svelte +18 -0
- package/dist/editors/tiptap/toolbar/AlignRightButton.svelte.d.ts +7 -0
- package/dist/editors/tiptap/toolbar/BoldButton.svelte +18 -0
- package/dist/editors/tiptap/toolbar/BoldButton.svelte.d.ts +7 -0
- package/dist/editors/tiptap/toolbar/BulletListButton.svelte +18 -0
- package/dist/editors/tiptap/toolbar/BulletListButton.svelte.d.ts +7 -0
- package/dist/editors/tiptap/toolbar/CodeBlockButton.svelte +18 -0
- package/dist/editors/tiptap/toolbar/CodeBlockButton.svelte.d.ts +7 -0
- package/dist/editors/tiptap/toolbar/CodeButton.svelte +18 -0
- package/dist/editors/tiptap/toolbar/CodeButton.svelte.d.ts +7 -0
- package/dist/editors/tiptap/toolbar/ColorButton.svelte +299 -0
- package/dist/editors/tiptap/toolbar/ColorButton.svelte.d.ts +20 -0
- package/dist/editors/tiptap/toolbar/DocumentButton.svelte +58 -0
- package/dist/editors/tiptap/toolbar/DocumentButton.svelte.d.ts +9 -0
- package/dist/editors/tiptap/toolbar/HeadingButton.svelte +30 -0
- package/dist/editors/tiptap/toolbar/HeadingButton.svelte.d.ts +8 -0
- package/dist/editors/tiptap/toolbar/HtmlButton.svelte +68 -0
- package/dist/editors/tiptap/toolbar/HtmlButton.svelte.d.ts +7 -0
- package/dist/editors/tiptap/toolbar/ImageButton.svelte +54 -0
- package/dist/editors/tiptap/toolbar/ImageButton.svelte.d.ts +8 -0
- package/dist/editors/tiptap/toolbar/ItalicButton.svelte +18 -0
- package/dist/editors/tiptap/toolbar/ItalicButton.svelte.d.ts +7 -0
- package/dist/editors/tiptap/toolbar/LinkButton.svelte +257 -0
- package/dist/editors/tiptap/toolbar/LinkButton.svelte.d.ts +7 -0
- package/dist/editors/tiptap/toolbar/OrderedListButton.svelte +18 -0
- package/dist/editors/tiptap/toolbar/OrderedListButton.svelte.d.ts +7 -0
- package/dist/editors/tiptap/toolbar/RedoButton.svelte +18 -0
- package/dist/editors/tiptap/toolbar/RedoButton.svelte.d.ts +7 -0
- package/dist/editors/tiptap/toolbar/StrikethroughButton.svelte +18 -0
- package/dist/editors/tiptap/toolbar/StrikethroughButton.svelte.d.ts +7 -0
- package/dist/editors/tiptap/toolbar/SubscriptButton.svelte +18 -0
- package/dist/editors/tiptap/toolbar/SubscriptButton.svelte.d.ts +7 -0
- package/dist/editors/tiptap/toolbar/SuperscriptButton.svelte +18 -0
- package/dist/editors/tiptap/toolbar/SuperscriptButton.svelte.d.ts +7 -0
- package/dist/editors/tiptap/toolbar/TableButton.svelte +258 -0
- package/dist/editors/tiptap/toolbar/TableButton.svelte.d.ts +7 -0
- package/dist/editors/tiptap/toolbar/ToolbarButton.svelte +84 -0
- package/dist/editors/tiptap/toolbar/ToolbarButton.svelte.d.ts +10 -0
- package/dist/editors/tiptap/toolbar/UnderlineButton.svelte +18 -0
- package/dist/editors/tiptap/toolbar/UnderlineButton.svelte.d.ts +7 -0
- package/dist/editors/tiptap/toolbar/UndoButton.svelte +18 -0
- package/dist/editors/tiptap/toolbar/UndoButton.svelte.d.ts +7 -0
- package/dist/form/Autocomplete.svelte +86 -135
- package/dist/form/Autocomplete.svelte.d.ts +6 -8
- package/dist/form/AutocompleteMulti.svelte +385 -227
- package/dist/form/AutocompleteMulti.svelte.d.ts +59 -10
- package/dist/form/Checkbox.svelte +59 -54
- package/dist/form/Checkbox.svelte.d.ts +14 -5
- package/dist/form/Chips.svelte +29 -13
- package/dist/form/Chips.svelte.d.ts +16 -2
- package/dist/form/ComboBox.svelte +30 -20
- package/dist/form/ComboBox.svelte.d.ts +1 -1
- package/dist/form/ComboBoxItemBuilder.svelte +161 -188
- package/dist/form/ComboBoxItemBuilder.svelte.d.ts +19 -2
- package/dist/form/ComboBoxMulti.svelte +38 -24
- package/dist/form/ComboBoxMulti.svelte.d.ts +1 -1
- package/dist/form/CronBuilder.svelte +84 -67
- package/dist/form/CronBuilder.svelte.d.ts +16 -3
- package/dist/form/DatePicker.svelte +148 -195
- package/dist/form/DateRangePicker.svelte +101 -98
- package/dist/form/DateTimePicker.svelte +167 -208
- package/dist/form/DateTimePicker.svelte.d.ts +10 -2
- package/dist/form/FormGroup.svelte +33 -10
- package/dist/form/FormGroup.svelte.d.ts +12 -2
- package/dist/form/Number.svelte +70 -47
- package/dist/form/Number.svelte.d.ts +36 -6
- package/dist/form/Radio.svelte +18 -18
- package/dist/form/RadioGroup.svelte +23 -12
- package/dist/form/RadioGroup.svelte.d.ts +13 -2
- package/dist/form/SegmentedControl.svelte +76 -56
- package/dist/form/SegmentedControl.svelte.d.ts +9 -4
- package/dist/form/Select.svelte +150 -233
- package/dist/form/Select.svelte.d.ts +29 -5
- package/dist/form/SelectMulti.svelte +163 -277
- package/dist/form/SelectMulti.svelte.d.ts +36 -7
- package/dist/form/Slider.svelte +183 -269
- package/dist/form/Slider.svelte.d.ts +32 -17
- package/dist/form/StringArrayBuilder.svelte +249 -0
- package/dist/form/StringArrayBuilder.svelte.d.ts +15 -0
- package/dist/form/Switch.svelte +164 -106
- package/dist/form/Switch.svelte.d.ts +22 -3
- package/dist/form/TextArea.svelte +49 -29
- package/dist/form/TextArea.svelte.d.ts +23 -3
- package/dist/form/Textbox.svelte +69 -68
- package/dist/form/Textbox.svelte.d.ts +32 -4
- package/dist/form/TimePicker.svelte +42 -47
- package/dist/form/TimePicker.svelte.d.ts +12 -2
- package/dist/form/comboBoxCore.svelte.d.ts +99 -0
- package/dist/form/comboBoxCore.svelte.js +243 -0
- package/dist/icon/Icon.svelte +8 -3
- package/dist/icon/Icon.svelte.d.ts +8 -3
- package/dist/icon/file-type-bmp.svg +1 -0
- package/dist/icon/file-type-csv.svg +1 -0
- package/dist/icon/file-type-doc.svg +1 -0
- package/dist/icon/file-type-docx.svg +1 -0
- package/dist/icon/file-type-jpg.svg +1 -0
- package/dist/icon/file-type-pdf.svg +1 -0
- package/dist/icon/file-type-png.svg +1 -0
- package/dist/icon/file-type-ppt.svg +1 -0
- package/dist/icon/file-type-svg.svg +1 -0
- package/dist/icon/file-type-txt.svg +1 -0
- package/dist/icon/file-type-xls.svg +1 -0
- package/dist/icon/file-type-zip.svg +1 -0
- package/dist/icon/index.d.ts +166 -151
- package/dist/icon/index.js +166 -152
- package/dist/icon/logo-placeholder.svg +6 -0
- package/dist/icon/source-code.svg +1 -0
- package/dist/icon/sun-moon.svg +1 -0
- package/dist/icon/table.svg +6 -0
- package/dist/index.d.ts +87 -26
- package/dist/index.js +25 -28
- package/dist/layout/AppShell.svelte +12 -162
- package/dist/layout/AppShell.svelte.d.ts +6 -27
- package/dist/layout/CustomNavbar.svelte +9 -7
- package/dist/layout/CustomNavbar.svelte.d.ts +4 -2
- package/dist/layout/Navbar.svelte +161 -129
- package/dist/layout/Navbar.svelte.d.ts +29 -15
- package/dist/layout/NavbarItemDisplay.svelte +2 -2
- package/dist/layout/NavbarItemView.svelte +182 -0
- package/dist/layout/NavbarItemView.svelte.d.ts +10 -0
- package/dist/layout/Sidenav.svelte +280 -341
- package/dist/layout/Sidenav.svelte.d.ts +36 -4
- package/dist/models/ComboBoxItem.d.ts +2 -0
- package/dist/models/Employee.d.ts +53 -0
- package/dist/models/Employee.js +23 -0
- package/dist/models/Hyperlink.d.ts +3 -1
- package/dist/models/LinkCollectionItem.d.ts +3 -1
- package/dist/models/NavbarItem.d.ts +6 -2
- package/dist/theme.svelte.d.ts +0 -1
- package/dist/theme.svelte.js +46 -58
- package/dist/ui/Accordion.svelte +81 -242
- package/dist/ui/Accordion.svelte.d.ts +37 -14
- package/dist/ui/AccordionItem.svelte +303 -0
- package/dist/ui/AccordionItem.svelte.d.ts +21 -0
- package/dist/ui/ActionIcon.svelte +25 -21
- package/dist/ui/ActionIcon.svelte.d.ts +15 -2
- package/dist/ui/Badge.svelte +163 -171
- package/dist/ui/Badge.svelte.d.ts +13 -5
- package/dist/ui/Button.svelte +178 -205
- package/dist/ui/Button.svelte.d.ts +19 -2
- package/dist/ui/ButtonVariant.d.ts +15 -1
- package/dist/ui/ContextMenu.svelte +146 -0
- package/dist/ui/ContextMenu.svelte.d.ts +37 -0
- package/dist/ui/ContextMenuList.svelte +188 -0
- package/dist/ui/ContextMenuList.svelte.d.ts +12 -0
- package/dist/ui/Dialog.svelte +183 -111
- package/dist/ui/Dialog.svelte.d.ts +21 -4
- package/dist/ui/Drawer.svelte +237 -184
- package/dist/ui/Drawer.svelte.d.ts +20 -2
- package/dist/ui/Dropdown.svelte +24 -14
- package/dist/ui/Dropdown.svelte.d.ts +11 -2
- package/dist/ui/Dropzone.svelte +159 -57
- package/dist/ui/Dropzone.svelte.d.ts +29 -2
- package/dist/ui/Link.svelte +12 -4
- package/dist/ui/Link.svelte.d.ts +8 -2
- package/dist/ui/Loader.svelte +23 -18
- package/dist/ui/Loader.svelte.d.ts +5 -2
- package/dist/ui/Logo.svelte +37 -0
- package/dist/ui/Logo.svelte.d.ts +16 -0
- package/dist/ui/MultiSortable.svelte +287 -0
- package/dist/ui/MultiSortable.svelte.d.ts +50 -0
- package/dist/ui/Pagination.svelte +15 -9
- package/dist/ui/Pagination.svelte.d.ts +6 -2
- package/dist/ui/Popover.svelte +43 -65
- package/dist/ui/Popover.svelte.d.ts +14 -5
- package/dist/ui/ProgressBar.svelte +28 -30
- package/dist/ui/ProgressBarVariant.d.ts +7 -1
- package/dist/ui/SegmentedControl.svelte +0 -0
- package/dist/ui/SegmentedControl.svelte.d.ts +26 -0
- package/dist/ui/Sortable.svelte +163 -0
- package/dist/ui/Sortable.svelte.d.ts +47 -0
- package/dist/ui/Table.svelte +383 -80
- package/dist/ui/Table.svelte.d.ts +43 -2
- package/dist/ui/Tabs.svelte +22 -18
- package/dist/ui/Tabs.svelte.d.ts +6 -2
- package/dist/ui/ThemeSwitcher.svelte +26 -7
- package/dist/ui/ThemeSwitcher.svelte.d.ts +4 -2
- package/dist/ui/Tooltip.svelte +312 -180
- package/dist/ui/Tooltip.svelte.d.ts +4 -3
- package/dist/uiTheme.svelte.d.ts +86 -0
- package/dist/uiTheme.svelte.js +214 -0
- package/dist/util/DateFunctions.js +1 -1
- package/dist/util/DragDrop.d.ts +50 -0
- package/dist/util/DragDrop.js +154 -0
- package/dist/util/NavigateTo.js +2 -2
- package/dist/util/dayjs.d.ts +4 -0
- package/dist/util/dayjs.js +15 -0
- package/package.json +66 -26
- package/dist/display/Alert.svelte +0 -179
- package/dist/display/Alert.svelte.d.ts +0 -13
- package/dist/form/FileInput.svelte +0 -235
- package/dist/form/FileInput.svelte.d.ts +0 -23
- package/dist/form/PasswordInput.svelte +0 -253
- package/dist/form/PasswordInput.svelte.d.ts +0 -34
- package/dist/form/Rating.svelte +0 -235
- package/dist/form/Rating.svelte.d.ts +0 -21
- package/dist/styles/components.css +0 -199
- package/dist/styles/dark.css +0 -146
- package/dist/styles/index.css +0 -116
- package/dist/styles/reset.css +0 -110
- package/dist/styles/semantic.css +0 -86
- package/dist/styles/tokens.css +0 -203
- package/dist/styles/utilities.css +0 -523
- package/dist/ui/Breadcrumbs.svelte +0 -131
- package/dist/ui/Breadcrumbs.svelte.d.ts +0 -16
- package/dist/ui/LoadingOverlay.svelte +0 -53
- package/dist/ui/LoadingOverlay.svelte.d.ts +0 -11
- package/dist/ui/Progress.svelte +0 -191
- package/dist/ui/Progress.svelte.d.ts +0 -15
- package/dist/ui/RingProgress.svelte +0 -141
- package/dist/ui/RingProgress.svelte.d.ts +0 -18
- package/dist/ui/Skeleton.svelte +0 -85
- package/dist/ui/Skeleton.svelte.d.ts +0 -12
- package/dist/ui/Stepper.svelte +0 -355
- package/dist/ui/Stepper.svelte.d.ts +0 -24
- package/dist/ui/Timeline.svelte +0 -225
- package/dist/ui/Timeline.svelte.d.ts +0 -23
- /package/dist/{actions → util}/ClickOutside.d.ts +0 -0
- /package/dist/{actions → util}/ClickOutside.js +0 -0
- /package/dist/{transitions → util}/Transitions.d.ts +0 -0
- /package/dist/{transitions → util}/Transitions.js +0 -0
|
@@ -1,22 +1,32 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import dayjs from "dayjs";
|
|
5
|
-
import { clickOutside } from "../actions/ClickOutside.js";
|
|
6
|
-
import ActionIcon from "../ui/ActionIcon.svelte";
|
|
7
|
-
import { iconChevronLeft, iconChevronRight, iconX } from "../icon/index.js";
|
|
8
|
-
import TimePicker from "./TimePicker.svelte";
|
|
9
|
-
|
|
10
|
-
interface Props {
|
|
1
|
+
<script module lang="ts">
|
|
2
|
+
export interface DateTimePickerProps {
|
|
3
|
+
/** Label text displayed above the picker */
|
|
11
4
|
label?: string;
|
|
5
|
+
/** Disable the date/time picker */
|
|
12
6
|
disabled?: boolean;
|
|
7
|
+
/** Mark field as required (shows asterisk) */
|
|
13
8
|
required?: boolean;
|
|
9
|
+
/** CSS classes for the container element */
|
|
14
10
|
containerClass?: string;
|
|
11
|
+
/** Selected date/time value in ISO format (bindable) */
|
|
15
12
|
value?: string | undefined;
|
|
13
|
+
/** Minimum selectable date/time in ISO format */
|
|
16
14
|
minDate?: string | undefined;
|
|
15
|
+
/** Maximum selectable date/time in ISO format */
|
|
17
16
|
maxDate?: string | undefined;
|
|
17
|
+
/** Callback when selected date/time changes */
|
|
18
18
|
onchange?: (date: string | undefined) => void;
|
|
19
19
|
}
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
<script lang="ts">
|
|
23
|
+
import Textbox from './Textbox.svelte';
|
|
24
|
+
import { fade } from 'svelte/transition';
|
|
25
|
+
import dayjs from '../util/dayjs.js';
|
|
26
|
+
import { clickOutside } from '../util/ClickOutside.js';
|
|
27
|
+
import ActionIcon from '../ui/ActionIcon.svelte';
|
|
28
|
+
import { iconChevronLeft, iconChevronRight, iconX } from '../icon/index.js';
|
|
29
|
+
import TimePicker from './TimePicker.svelte';
|
|
20
30
|
|
|
21
31
|
let {
|
|
22
32
|
label,
|
|
@@ -26,20 +36,16 @@
|
|
|
26
36
|
value = $bindable(undefined),
|
|
27
37
|
minDate,
|
|
28
38
|
maxDate,
|
|
29
|
-
onchange
|
|
30
|
-
}:
|
|
39
|
+
onchange
|
|
40
|
+
}: DateTimePickerProps = $props();
|
|
31
41
|
|
|
32
|
-
const days = [
|
|
42
|
+
const days = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];
|
|
33
43
|
|
|
34
44
|
// Parse min and max dates
|
|
35
|
-
const minDateParsed = $derived(
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
maxDate ? dayjs(maxDate).startOf("date") : undefined,
|
|
40
|
-
);
|
|
41
|
-
|
|
42
|
-
type DisplayedDateColor = "normal" | "red" | "grey" | "disabled";
|
|
45
|
+
const minDateParsed = $derived(minDate ? dayjs(minDate).startOf('date') : undefined);
|
|
46
|
+
const maxDateParsed = $derived(maxDate ? dayjs(maxDate).startOf('date') : undefined);
|
|
47
|
+
|
|
48
|
+
type DisplayedDateColor = 'normal' | 'red' | 'grey' | 'disabled';
|
|
43
49
|
type DisplayedDate = {
|
|
44
50
|
date: dayjs.Dayjs;
|
|
45
51
|
text: string;
|
|
@@ -48,7 +54,7 @@
|
|
|
48
54
|
isDisabled: boolean;
|
|
49
55
|
};
|
|
50
56
|
|
|
51
|
-
const todayDate = dayjs().startOf(
|
|
57
|
+
const todayDate = dayjs().startOf('date');
|
|
52
58
|
|
|
53
59
|
let selectedDate: dayjs.Dayjs | undefined = $state(undefined);
|
|
54
60
|
let selectedTime: string | undefined = $state(undefined);
|
|
@@ -57,8 +63,8 @@
|
|
|
57
63
|
if (value) {
|
|
58
64
|
const date = dayjs(value);
|
|
59
65
|
// Extract time if present BEFORE calling setDate
|
|
60
|
-
if (date.isValid() && value.includes(
|
|
61
|
-
selectedTime = date.format(
|
|
66
|
+
if (date.isValid() && value.includes('T')) {
|
|
67
|
+
selectedTime = date.format('HH:mm:ss');
|
|
62
68
|
}
|
|
63
69
|
setDate(date, false, true);
|
|
64
70
|
} else {
|
|
@@ -66,13 +72,13 @@
|
|
|
66
72
|
setDate(undefined, false, true);
|
|
67
73
|
}
|
|
68
74
|
if (selectedDate) {
|
|
69
|
-
focusedMonth = selectedDate.startOf(
|
|
75
|
+
focusedMonth = selectedDate.startOf('month');
|
|
70
76
|
}
|
|
71
77
|
});
|
|
72
78
|
|
|
73
79
|
let showRequiredRing = $state(false);
|
|
74
80
|
// svelte-ignore state_referenced_locally
|
|
75
|
-
let focusedMonth = $state((selectedDate ?? todayDate).startOf(
|
|
81
|
+
let focusedMonth = $state((selectedDate ?? todayDate).startOf('month'));
|
|
76
82
|
|
|
77
83
|
function startOfWeek(date: dayjs.Dayjs) {
|
|
78
84
|
// We celebrate Monday as the one true start of the week in this household. NO exceptions
|
|
@@ -86,7 +92,7 @@
|
|
|
86
92
|
function getFullWeekCount(month: dayjs.Dayjs) {
|
|
87
93
|
const start = startOfWeek(month.date(1));
|
|
88
94
|
const end = endOfWeek(month.date(month.daysInMonth()));
|
|
89
|
-
const diff = end.diff(start,
|
|
95
|
+
const diff = end.diff(start, 'day', true);
|
|
90
96
|
|
|
91
97
|
return Math.ceil(diff / 7) * 7;
|
|
92
98
|
}
|
|
@@ -97,10 +103,7 @@
|
|
|
97
103
|
return true;
|
|
98
104
|
}
|
|
99
105
|
|
|
100
|
-
function calculateDays(
|
|
101
|
-
selectedDate: dayjs.Dayjs | undefined,
|
|
102
|
-
focusedMonth: dayjs.Dayjs,
|
|
103
|
-
) {
|
|
106
|
+
function calculateDays(selectedDate: dayjs.Dayjs | undefined, focusedMonth: dayjs.Dayjs) {
|
|
104
107
|
// Fill out the entire 7 day grid
|
|
105
108
|
const length = getFullWeekCount(focusedMonth);
|
|
106
109
|
|
|
@@ -109,31 +112,29 @@
|
|
|
109
112
|
const startDate = startOfWeek(focusedMonth);
|
|
110
113
|
|
|
111
114
|
for (let i = 0; i < length; i++) {
|
|
112
|
-
const date = startDate.add(i,
|
|
115
|
+
const date = startDate.add(i, 'day');
|
|
113
116
|
|
|
114
117
|
let color: DisplayedDateColor;
|
|
115
118
|
let isDisabled = false;
|
|
116
119
|
|
|
117
120
|
// Check if date is outside of min/max range
|
|
118
121
|
if (!isDateInRange(date)) {
|
|
119
|
-
color =
|
|
122
|
+
color = 'disabled';
|
|
120
123
|
isDisabled = true;
|
|
121
|
-
} else if (!date.isSame(focusedMonth,
|
|
122
|
-
color =
|
|
124
|
+
} else if (!date.isSame(focusedMonth, 'month')) {
|
|
125
|
+
color = 'grey';
|
|
123
126
|
} else if (date.day() == 0 || date.day() == 6) {
|
|
124
|
-
color =
|
|
127
|
+
color = 'red';
|
|
125
128
|
} else {
|
|
126
|
-
color =
|
|
129
|
+
color = 'normal';
|
|
127
130
|
}
|
|
128
131
|
|
|
129
132
|
displayedDates.push({
|
|
130
133
|
date,
|
|
131
134
|
text: date.date().toString(),
|
|
132
135
|
color,
|
|
133
|
-
isSelected:
|
|
134
|
-
|
|
135
|
-
selectedDate.isSame(date, "date"),
|
|
136
|
-
isDisabled,
|
|
136
|
+
isSelected: selectedDate !== undefined && selectedDate.isSame(date, 'date'),
|
|
137
|
+
isDisabled
|
|
137
138
|
});
|
|
138
139
|
}
|
|
139
140
|
|
|
@@ -144,29 +145,25 @@
|
|
|
144
145
|
let classes = [];
|
|
145
146
|
|
|
146
147
|
if (date.isDisabled) {
|
|
147
|
-
classes.push(
|
|
148
|
-
} else if (date.color ===
|
|
149
|
-
classes.push(
|
|
150
|
-
} else if (date.color ===
|
|
151
|
-
classes.push(
|
|
148
|
+
classes.push('disabled');
|
|
149
|
+
} else if (date.color === 'red') {
|
|
150
|
+
classes.push('text-red');
|
|
151
|
+
} else if (date.color === 'grey') {
|
|
152
|
+
classes.push('text-grey');
|
|
152
153
|
}
|
|
153
154
|
|
|
154
155
|
if (date.isSelected && !date.isDisabled) {
|
|
155
|
-
classes.push(
|
|
156
|
+
classes.push('selected');
|
|
156
157
|
} else {
|
|
157
|
-
if (date.date.isSame(todayDate,
|
|
158
|
-
classes.push(
|
|
158
|
+
if (date.date.isSame(todayDate, 'date') && !date.isDisabled) {
|
|
159
|
+
classes.push('today');
|
|
159
160
|
}
|
|
160
161
|
}
|
|
161
162
|
|
|
162
|
-
return classes.join(
|
|
163
|
+
return classes.join(' ');
|
|
163
164
|
}
|
|
164
165
|
|
|
165
|
-
function setDate(
|
|
166
|
-
newDate: dayjs.Dayjs | undefined,
|
|
167
|
-
fromTextbox: boolean,
|
|
168
|
-
fromValue: boolean,
|
|
169
|
-
) {
|
|
166
|
+
function setDate(newDate: dayjs.Dayjs | undefined, fromTextbox: boolean, fromValue: boolean) {
|
|
170
167
|
if (newDate === undefined && selectedDate === undefined) return;
|
|
171
168
|
|
|
172
169
|
// Check if the new date is within the allowed range
|
|
@@ -176,55 +173,46 @@
|
|
|
176
173
|
}
|
|
177
174
|
|
|
178
175
|
const isSameDate =
|
|
179
|
-
newDate !== undefined &&
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
if (
|
|
184
|
-
newDate === undefined ||
|
|
185
|
-
!newDate.isValid() ||
|
|
186
|
-
(isSameDate && !fromTextbox && !fromValue)
|
|
187
|
-
) {
|
|
176
|
+
newDate !== undefined && selectedDate !== undefined && newDate.isSame(selectedDate, 'date');
|
|
177
|
+
|
|
178
|
+
if (newDate === undefined || !newDate.isValid() || (isSameDate && !fromTextbox && !fromValue)) {
|
|
188
179
|
value = undefined;
|
|
189
180
|
selectedDate = undefined;
|
|
190
|
-
readableDate =
|
|
181
|
+
readableDate = '';
|
|
191
182
|
return;
|
|
192
183
|
} else if (isSameDate) {
|
|
193
184
|
return;
|
|
194
185
|
}
|
|
195
186
|
|
|
196
187
|
selectedDate = newDate;
|
|
197
|
-
focusedMonth = newDate.startOf(
|
|
188
|
+
focusedMonth = newDate.startOf('month');
|
|
198
189
|
|
|
199
190
|
// Combine date and time
|
|
200
|
-
let dateString = newDate.format(
|
|
201
|
-
let timeString = selectedTime ||
|
|
191
|
+
let dateString = newDate.format('YYYY-MM-DD');
|
|
192
|
+
let timeString = selectedTime || '00:00:00';
|
|
202
193
|
value = `${dateString}T${timeString}`;
|
|
203
|
-
value = dayjs(value).format(
|
|
194
|
+
value = dayjs(value).format('YYYY-MM-DDTHH:mm:ssZ');
|
|
204
195
|
onchange?.(value);
|
|
205
196
|
|
|
206
|
-
if (!fromTextbox)
|
|
207
|
-
readableDate = dayjs(value).format("D MMMM YYYY - h:mma");
|
|
197
|
+
if (!fromTextbox) readableDate = dayjs(value).format('D MMMM YYYY - h:mma');
|
|
208
198
|
}
|
|
209
199
|
|
|
210
200
|
function incrementFocusedMonth(value: number) {
|
|
211
|
-
focusedMonth = focusedMonth.add(value,
|
|
201
|
+
focusedMonth = focusedMonth.add(value, 'month');
|
|
212
202
|
}
|
|
213
203
|
|
|
214
204
|
// -----------------------------
|
|
215
205
|
// Control code
|
|
216
206
|
|
|
217
207
|
let textboxElement: HTMLElement | undefined = $state(undefined);
|
|
218
|
-
let readableDate: string = $state(
|
|
208
|
+
let readableDate: string = $state('');
|
|
219
209
|
let showCalendar = $state(false);
|
|
220
210
|
let showYearPicker = $state(false);
|
|
221
|
-
let dropdownPosition:
|
|
211
|
+
let dropdownPosition: 'above' | 'below' = $state('below');
|
|
222
212
|
|
|
223
213
|
// Year picker: show a range of years centered around the focused year
|
|
224
214
|
const yearRangeSize = 12;
|
|
225
|
-
let yearRangeStart = $state(
|
|
226
|
-
Math.floor(dayjs().year() / yearRangeSize) * yearRangeSize,
|
|
227
|
-
);
|
|
215
|
+
let yearRangeStart = $state(Math.floor(dayjs().year() / yearRangeSize) * yearRangeSize);
|
|
228
216
|
|
|
229
217
|
function getYearRange() {
|
|
230
218
|
const years: number[] = [];
|
|
@@ -252,25 +240,24 @@
|
|
|
252
240
|
function toggleYearPicker() {
|
|
253
241
|
if (!showYearPicker) {
|
|
254
242
|
// Center the range around the focused year
|
|
255
|
-
yearRangeStart =
|
|
256
|
-
Math.floor(focusedMonth.year() / yearRangeSize) * yearRangeSize;
|
|
243
|
+
yearRangeStart = Math.floor(focusedMonth.year() / yearRangeSize) * yearRangeSize;
|
|
257
244
|
}
|
|
258
245
|
showYearPicker = !showYearPicker;
|
|
259
246
|
}
|
|
260
247
|
|
|
261
248
|
function checkDropdownPosition() {
|
|
262
249
|
if (!textboxElement) return;
|
|
263
|
-
|
|
250
|
+
|
|
264
251
|
const rect = textboxElement.getBoundingClientRect();
|
|
265
252
|
const dropdownHeight = 400; // Approximate height of the calendar + time picker dropdown
|
|
266
253
|
const spaceBelow = window.innerHeight - rect.bottom;
|
|
267
254
|
const spaceAbove = rect.top;
|
|
268
|
-
|
|
255
|
+
|
|
269
256
|
// If not enough space below and more space above, position above
|
|
270
257
|
if (spaceBelow < dropdownHeight && spaceAbove > spaceBelow) {
|
|
271
|
-
dropdownPosition =
|
|
258
|
+
dropdownPosition = 'above';
|
|
272
259
|
} else {
|
|
273
|
-
dropdownPosition =
|
|
260
|
+
dropdownPosition = 'below';
|
|
274
261
|
}
|
|
275
262
|
}
|
|
276
263
|
|
|
@@ -287,7 +274,7 @@
|
|
|
287
274
|
function onDateTextChange(event: Event) {
|
|
288
275
|
const textbox = event.target as HTMLInputElement;
|
|
289
276
|
|
|
290
|
-
const date = dayjs(textbox.value, [
|
|
277
|
+
const date = dayjs(textbox.value, ['D MMMM YYYY', 'DD/MM/YYYY']);
|
|
291
278
|
if (date.isValid()) {
|
|
292
279
|
setDate(date, true, false);
|
|
293
280
|
}
|
|
@@ -297,15 +284,11 @@
|
|
|
297
284
|
value = undefined;
|
|
298
285
|
selectedDate = undefined;
|
|
299
286
|
selectedTime = undefined;
|
|
300
|
-
readableDate =
|
|
287
|
+
readableDate = '';
|
|
301
288
|
onchange?.(undefined);
|
|
302
289
|
}
|
|
303
290
|
|
|
304
|
-
function handleDateChangeClick(
|
|
305
|
-
event: MouseEvent,
|
|
306
|
-
date: dayjs.Dayjs,
|
|
307
|
-
isDisabled: boolean,
|
|
308
|
-
) {
|
|
291
|
+
function handleDateChangeClick(event: MouseEvent, date: dayjs.Dayjs, isDisabled: boolean) {
|
|
309
292
|
if (isDisabled) {
|
|
310
293
|
event.stopPropagation();
|
|
311
294
|
return;
|
|
@@ -332,7 +315,7 @@
|
|
|
332
315
|
showCalendar = true;
|
|
333
316
|
}}
|
|
334
317
|
onkeyup={onDateTextChange}
|
|
335
|
-
class={showRequiredRing ?
|
|
318
|
+
class={showRequiredRing ? '!border-required' : ''}
|
|
336
319
|
>
|
|
337
320
|
{#snippet right()}
|
|
338
321
|
{#if readableDate && !disabled}
|
|
@@ -351,11 +334,7 @@
|
|
|
351
334
|
{/snippet}
|
|
352
335
|
<div class="date-picker">
|
|
353
336
|
{#if showCalendar}
|
|
354
|
-
<div
|
|
355
|
-
class="calendar {dropdownPosition}"
|
|
356
|
-
transition:fade={{ duration: 200 }}
|
|
357
|
-
use:clickOutside={onClickOutside}
|
|
358
|
-
>
|
|
337
|
+
<div class="calendar {dropdownPosition}" transition:fade={{ duration: 200 }} use:clickOutside={onClickOutside}>
|
|
359
338
|
<div class="month-buttons">
|
|
360
339
|
{#if showYearPicker}
|
|
361
340
|
<ActionIcon
|
|
@@ -363,13 +342,8 @@
|
|
|
363
342
|
size="1.5rem"
|
|
364
343
|
onclick={() => incrementYearRange(-1)}
|
|
365
344
|
/>
|
|
366
|
-
<button
|
|
367
|
-
|
|
368
|
-
onclick={toggleYearPicker}
|
|
369
|
-
>
|
|
370
|
-
{yearRangeStart} - {yearRangeStart +
|
|
371
|
-
yearRangeSize -
|
|
372
|
-
1}
|
|
345
|
+
<button class="month-label clickable" onclick={toggleYearPicker}>
|
|
346
|
+
{yearRangeStart} - {yearRangeStart + yearRangeSize - 1}
|
|
373
347
|
</button>
|
|
374
348
|
<ActionIcon
|
|
375
349
|
svg={iconChevronRight}
|
|
@@ -382,11 +356,8 @@
|
|
|
382
356
|
size="1.5rem"
|
|
383
357
|
onclick={() => incrementFocusedMonth(-1)}
|
|
384
358
|
/>
|
|
385
|
-
<button
|
|
386
|
-
|
|
387
|
-
onclick={toggleYearPicker}
|
|
388
|
-
>
|
|
389
|
-
{focusedMonth.format("MMMM YYYY")}
|
|
359
|
+
<button class="month-label clickable" onclick={toggleYearPicker}>
|
|
360
|
+
{focusedMonth.format('MMMM YYYY')}
|
|
390
361
|
</button>
|
|
391
362
|
<ActionIcon
|
|
392
363
|
svg={iconChevronRight}
|
|
@@ -401,10 +372,8 @@
|
|
|
401
372
|
{#each getYearRange() as year}
|
|
402
373
|
<button
|
|
403
374
|
class="year-button"
|
|
404
|
-
class:selected={focusedMonth.year() ===
|
|
405
|
-
|
|
406
|
-
class:current-year={todayDate.year() ===
|
|
407
|
-
year}
|
|
375
|
+
class:selected={focusedMonth.year() === year}
|
|
376
|
+
class:current-year={todayDate.year() === year}
|
|
408
377
|
class:disabled={!isYearInRange(year)}
|
|
409
378
|
disabled={!isYearInRange(year)}
|
|
410
379
|
onclick={() => selectYear(year)}
|
|
@@ -426,12 +395,7 @@
|
|
|
426
395
|
<button
|
|
427
396
|
class="day-button {buildDayClasses(day)}"
|
|
428
397
|
disabled={day.isDisabled}
|
|
429
|
-
onclick={(e) =>
|
|
430
|
-
handleDateChangeClick(
|
|
431
|
-
e,
|
|
432
|
-
day.date,
|
|
433
|
-
day.isDisabled,
|
|
434
|
-
)}
|
|
398
|
+
onclick={(e) => handleDateChangeClick(e, day.date, day.isDisabled)}
|
|
435
399
|
>
|
|
436
400
|
{day.text}
|
|
437
401
|
</button>
|
|
@@ -441,23 +405,18 @@
|
|
|
441
405
|
|
|
442
406
|
<TimePicker
|
|
443
407
|
bind:value={selectedTime}
|
|
444
|
-
{minDate}
|
|
445
|
-
{maxDate}
|
|
446
|
-
selectedDate={selectedDate?.format(
|
|
408
|
+
minDate={minDate}
|
|
409
|
+
maxDate={maxDate}
|
|
410
|
+
selectedDate={selectedDate?.format('YYYY-MM-DD')}
|
|
447
411
|
onchange={(t) => {
|
|
448
412
|
selectedTime = t!;
|
|
449
413
|
if (selectedDate) {
|
|
450
|
-
let dateString =
|
|
451
|
-
|
|
452
|
-
let timeString = selectedTime || "00:00:00";
|
|
414
|
+
let dateString = selectedDate.format('YYYY-MM-DD');
|
|
415
|
+
let timeString = selectedTime || '00:00:00';
|
|
453
416
|
value = `${dateString}T${timeString}`;
|
|
454
|
-
value = dayjs(value).format(
|
|
455
|
-
"YYYY-MM-DDTHH:mm:ssZ",
|
|
456
|
-
);
|
|
417
|
+
value = dayjs(value).format('YYYY-MM-DDTHH:mm:ssZ');
|
|
457
418
|
onchange?.(value);
|
|
458
|
-
readableDate = dayjs(value).format(
|
|
459
|
-
"D MMMM YYYY - h:mma",
|
|
460
|
-
);
|
|
419
|
+
readableDate = dayjs(value).format('D MMMM YYYY - h:mma');
|
|
461
420
|
}
|
|
462
421
|
}}
|
|
463
422
|
/>
|
|
@@ -474,7 +433,7 @@
|
|
|
474
433
|
|
|
475
434
|
.clear-button {
|
|
476
435
|
position: absolute;
|
|
477
|
-
right:
|
|
436
|
+
right: 0.5rem;
|
|
478
437
|
top: 50%;
|
|
479
438
|
transform: translateY(-50%);
|
|
480
439
|
line-height: 0;
|
|
@@ -484,17 +443,17 @@
|
|
|
484
443
|
width: 18rem;
|
|
485
444
|
text-align: center;
|
|
486
445
|
position: absolute;
|
|
487
|
-
z-index:
|
|
446
|
+
z-index: 10;
|
|
488
447
|
user-select: none;
|
|
489
|
-
background-color: var(--
|
|
490
|
-
border: 1px solid var(--
|
|
491
|
-
border-radius:
|
|
492
|
-
box-shadow:
|
|
493
|
-
padding:
|
|
448
|
+
background-color: var(--paper-body-bg);
|
|
449
|
+
border: 1px solid var(--border-color);
|
|
450
|
+
border-radius: 0.375rem;
|
|
451
|
+
box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
|
|
452
|
+
padding: 0.5rem;
|
|
494
453
|
}
|
|
495
454
|
|
|
496
455
|
.calendar.below {
|
|
497
|
-
top: 0
|
|
456
|
+
top: 0
|
|
498
457
|
}
|
|
499
458
|
|
|
500
459
|
.calendar.above {
|
|
@@ -505,13 +464,13 @@
|
|
|
505
464
|
display: flex;
|
|
506
465
|
justify-content: space-between;
|
|
507
466
|
align-items: center;
|
|
508
|
-
padding:
|
|
467
|
+
padding: 0.5rem;
|
|
509
468
|
}
|
|
510
469
|
|
|
511
470
|
.month-label {
|
|
512
|
-
font-weight:
|
|
513
|
-
color: var(--
|
|
514
|
-
font-size:
|
|
471
|
+
font-weight: 600;
|
|
472
|
+
color: var(--text-color);
|
|
473
|
+
font-size: 1.125rem;
|
|
515
474
|
background: none;
|
|
516
475
|
border: none;
|
|
517
476
|
cursor: default;
|
|
@@ -519,53 +478,53 @@
|
|
|
519
478
|
|
|
520
479
|
.month-label.clickable {
|
|
521
480
|
cursor: pointer;
|
|
522
|
-
padding:
|
|
523
|
-
border-radius:
|
|
524
|
-
transition: background-color
|
|
481
|
+
padding: 0.25rem 0.5rem;
|
|
482
|
+
border-radius: 0.25rem;
|
|
483
|
+
transition: background-color 0.15s ease;
|
|
525
484
|
}
|
|
526
485
|
|
|
527
486
|
.month-label.clickable:hover {
|
|
528
|
-
background-color: var(--
|
|
487
|
+
background-color: rgba(var(--ui-primary-rgbc), 0.1);
|
|
529
488
|
}
|
|
530
489
|
|
|
531
490
|
.year-grid {
|
|
532
491
|
display: grid;
|
|
533
492
|
grid-template-columns: repeat(3, 1fr);
|
|
534
|
-
gap:
|
|
535
|
-
margin-top:
|
|
536
|
-
padding:
|
|
493
|
+
gap: 0.5rem;
|
|
494
|
+
margin-top: 0.5rem;
|
|
495
|
+
padding: 0.5rem;
|
|
537
496
|
}
|
|
538
497
|
|
|
539
498
|
.year-button {
|
|
540
|
-
color: var(--
|
|
541
|
-
padding:
|
|
542
|
-
border-radius:
|
|
499
|
+
color: var(--text-color);
|
|
500
|
+
padding: 0.75rem 0.5rem;
|
|
501
|
+
border-radius: 0.375rem;
|
|
543
502
|
border: none;
|
|
544
503
|
background: transparent;
|
|
545
504
|
cursor: pointer;
|
|
546
|
-
font-size:
|
|
547
|
-
transition: all
|
|
505
|
+
font-size: 0.875rem;
|
|
506
|
+
transition: all 0.15s ease;
|
|
548
507
|
}
|
|
549
508
|
|
|
550
509
|
.year-button:hover:not(.disabled) {
|
|
551
|
-
background-color: var(--
|
|
552
|
-
color: var(--
|
|
510
|
+
background-color: rgba(var(--ui-primary-rgbc), 0.1);
|
|
511
|
+
color: var(--ui-primary);
|
|
553
512
|
}
|
|
554
513
|
|
|
555
514
|
.year-button.current-year {
|
|
556
|
-
background-color: var(--
|
|
557
|
-
color: var(--
|
|
558
|
-
font-weight:
|
|
515
|
+
background-color: rgba(var(--ui-primary-rgbc), 0.15);
|
|
516
|
+
color: var(--ui-primary);
|
|
517
|
+
font-weight: 600;
|
|
559
518
|
}
|
|
560
519
|
|
|
561
520
|
.year-button.selected {
|
|
562
|
-
background-color: var(--
|
|
563
|
-
color:
|
|
564
|
-
font-weight:
|
|
521
|
+
background-color: var(--ui-primary);
|
|
522
|
+
color: white;
|
|
523
|
+
font-weight: 600;
|
|
565
524
|
}
|
|
566
525
|
|
|
567
526
|
.year-button.disabled {
|
|
568
|
-
color:
|
|
527
|
+
color: rgb(163 163 163) !important;
|
|
569
528
|
background-color: transparent !important;
|
|
570
529
|
cursor: not-allowed !important;
|
|
571
530
|
opacity: 0.5;
|
|
@@ -574,17 +533,17 @@
|
|
|
574
533
|
.days-header-bar {
|
|
575
534
|
display: grid;
|
|
576
535
|
grid-template-columns: repeat(7, 1fr);
|
|
577
|
-
margin-top:
|
|
578
|
-
background-color:
|
|
579
|
-
border-radius:
|
|
580
|
-
border: 1px solid var(--
|
|
536
|
+
margin-top: 0.5rem;
|
|
537
|
+
background-color: #f8f9fa;
|
|
538
|
+
border-radius: 0.25rem;
|
|
539
|
+
border: 1px solid var(--border-color);
|
|
581
540
|
}
|
|
582
541
|
|
|
583
542
|
.day-label {
|
|
584
|
-
color:
|
|
585
|
-
padding:
|
|
586
|
-
font-size:
|
|
587
|
-
font-weight:
|
|
543
|
+
color: #6b7280;
|
|
544
|
+
padding: 0.5rem;
|
|
545
|
+
font-size: 0.75rem;
|
|
546
|
+
font-weight: 600;
|
|
588
547
|
text-transform: uppercase;
|
|
589
548
|
text-align: center;
|
|
590
549
|
}
|
|
@@ -592,50 +551,50 @@
|
|
|
592
551
|
.days-grid {
|
|
593
552
|
display: grid;
|
|
594
553
|
grid-template-columns: repeat(7, 1fr);
|
|
595
|
-
gap:
|
|
596
|
-
margin-top:
|
|
554
|
+
gap: 0.125rem;
|
|
555
|
+
margin-top: 0.5rem;
|
|
597
556
|
}
|
|
598
557
|
|
|
599
558
|
.day-button {
|
|
600
|
-
color: var(--
|
|
559
|
+
color: var(--text-color);
|
|
601
560
|
width: 2.25rem;
|
|
602
561
|
height: 2.25rem;
|
|
603
|
-
border-radius:
|
|
562
|
+
border-radius: 0.375rem;
|
|
604
563
|
border: none;
|
|
605
564
|
background: transparent;
|
|
606
565
|
cursor: pointer;
|
|
607
|
-
font-size:
|
|
608
|
-
transition: all
|
|
566
|
+
font-size: 0.875rem;
|
|
567
|
+
transition: all 0.15s ease;
|
|
609
568
|
justify-self: center;
|
|
610
569
|
}
|
|
611
570
|
|
|
612
571
|
.day-button:hover {
|
|
613
|
-
background-color: var(--
|
|
614
|
-
color: var(--
|
|
572
|
+
background-color: rgba(var(--ui-primary-rgbc), 0.1);
|
|
573
|
+
color: var(--ui-primary);
|
|
615
574
|
}
|
|
616
575
|
|
|
617
576
|
.today {
|
|
618
|
-
background-color: var(--
|
|
619
|
-
color: var(--
|
|
620
|
-
font-weight:
|
|
577
|
+
background-color: rgba(var(--ui-primary-rgbc), 0.15);
|
|
578
|
+
color: var(--ui-primary);
|
|
579
|
+
font-weight: 600;
|
|
621
580
|
}
|
|
622
581
|
|
|
623
582
|
.selected {
|
|
624
|
-
background-color: var(--
|
|
625
|
-
color:
|
|
626
|
-
font-weight:
|
|
583
|
+
background-color: var(--ui-primary);
|
|
584
|
+
color: white;
|
|
585
|
+
font-weight: 600;
|
|
627
586
|
}
|
|
628
587
|
|
|
629
588
|
.text-red {
|
|
630
|
-
color:
|
|
589
|
+
color: rgb(248 113 113);
|
|
631
590
|
}
|
|
632
591
|
|
|
633
592
|
.text-grey {
|
|
634
|
-
color:
|
|
593
|
+
color: rgb(163 163 163);
|
|
635
594
|
}
|
|
636
595
|
|
|
637
596
|
.disabled {
|
|
638
|
-
color:
|
|
597
|
+
color: rgb(163 163 163) !important;
|
|
639
598
|
background-color: transparent !important;
|
|
640
599
|
cursor: not-allowed !important;
|
|
641
600
|
opacity: 0.5;
|
|
@@ -643,39 +602,39 @@
|
|
|
643
602
|
|
|
644
603
|
.disabled:hover {
|
|
645
604
|
background-color: transparent !important;
|
|
646
|
-
color:
|
|
605
|
+
color: rgb(163 163 163) !important;
|
|
647
606
|
}
|
|
648
607
|
|
|
649
608
|
:global(.dark) {
|
|
650
609
|
.days-header-bar {
|
|
651
|
-
background-color:
|
|
610
|
+
background-color: #252529;
|
|
652
611
|
}
|
|
653
612
|
|
|
654
613
|
.day-label {
|
|
655
|
-
color:
|
|
614
|
+
color: #d1d5db;
|
|
656
615
|
}
|
|
657
616
|
|
|
658
617
|
.day-button:hover {
|
|
659
|
-
background-color: var(--
|
|
660
|
-
color: var(--
|
|
618
|
+
background-color: rgba(var(--ui-accent-rgbc), 0.1);
|
|
619
|
+
color: var(--ui-accent);
|
|
661
620
|
}
|
|
662
621
|
|
|
663
622
|
.today {
|
|
664
|
-
background-color: var(--
|
|
665
|
-
color: var(--
|
|
623
|
+
background-color: rgba(var(--ui-accent-rgbc), 0.15);
|
|
624
|
+
color: var(--ui-accent);
|
|
666
625
|
}
|
|
667
626
|
|
|
668
627
|
.selected {
|
|
669
|
-
background-color: var(--
|
|
670
|
-
color: var(--
|
|
628
|
+
background-color: var(--ui-accent);
|
|
629
|
+
color: var(--ui-primary);
|
|
671
630
|
}
|
|
672
631
|
|
|
673
632
|
.text-grey {
|
|
674
|
-
color:
|
|
633
|
+
color: #6b7280;
|
|
675
634
|
}
|
|
676
635
|
|
|
677
636
|
.disabled {
|
|
678
|
-
color:
|
|
637
|
+
color: #6b7280 !important;
|
|
679
638
|
background-color: transparent !important;
|
|
680
639
|
cursor: not-allowed !important;
|
|
681
640
|
opacity: 0.5;
|
|
@@ -683,30 +642,30 @@
|
|
|
683
642
|
|
|
684
643
|
.disabled:hover {
|
|
685
644
|
background-color: transparent !important;
|
|
686
|
-
color:
|
|
645
|
+
color: #6b7280 !important;
|
|
687
646
|
}
|
|
688
647
|
|
|
689
648
|
.month-label.clickable:hover {
|
|
690
|
-
background-color: var(--
|
|
649
|
+
background-color: rgba(var(--ui-accent-rgbc), 0.1);
|
|
691
650
|
}
|
|
692
651
|
|
|
693
652
|
.year-button:hover:not(.disabled) {
|
|
694
|
-
background-color: var(--
|
|
695
|
-
color: var(--
|
|
653
|
+
background-color: rgba(var(--ui-accent-rgbc), 0.1);
|
|
654
|
+
color: var(--ui-accent);
|
|
696
655
|
}
|
|
697
656
|
|
|
698
657
|
.year-button.current-year {
|
|
699
|
-
background-color: var(--
|
|
700
|
-
color: var(--
|
|
658
|
+
background-color: rgba(var(--ui-accent-rgbc), 0.15);
|
|
659
|
+
color: var(--ui-accent);
|
|
701
660
|
}
|
|
702
661
|
|
|
703
662
|
.year-button.selected {
|
|
704
|
-
background-color: var(--
|
|
705
|
-
color: var(--
|
|
663
|
+
background-color: var(--ui-accent);
|
|
664
|
+
color: var(--ui-primary);
|
|
706
665
|
}
|
|
707
666
|
|
|
708
667
|
.year-button.disabled {
|
|
709
|
-
color:
|
|
668
|
+
color: #6b7280 !important;
|
|
710
669
|
}
|
|
711
670
|
}
|
|
712
671
|
</style>
|