@placeholderco/placeholder-ui 1.0.11 → 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 +270 -137
- package/dist/form/Autocomplete.svelte.d.ts +58 -10
- package/dist/form/AutocompleteMulti.svelte +385 -227
- package/dist/form/AutocompleteMulti.svelte.d.ts +59 -10
- package/dist/form/Checkbox.svelte +124 -43
- package/dist/form/Checkbox.svelte.d.ts +26 -2
- package/dist/form/Chips.svelte +47 -17
- package/dist/form/Chips.svelte.d.ts +24 -3
- 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 +177 -191
- package/dist/form/DatePicker.svelte.d.ts +17 -2
- package/dist/form/DateRangePicker.svelte +775 -0
- package/dist/form/DateRangePicker.svelte.d.ts +23 -0
- package/dist/form/DateTimePicker.svelte +168 -209
- 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 +71 -29
- package/dist/form/Number.svelte.d.ts +39 -6
- package/dist/form/Radio.svelte +174 -0
- package/dist/form/Radio.svelte.d.ts +21 -0
- package/dist/form/RadioGroup.svelte +52 -138
- package/dist/form/RadioGroup.svelte.d.ts +19 -2
- package/dist/form/SegmentedControl.svelte +103 -57
- package/dist/form/SegmentedControl.svelte.d.ts +12 -2
- package/dist/form/Select.svelte +160 -229
- package/dist/form/Select.svelte.d.ts +35 -6
- package/dist/form/SelectMulti.svelte +166 -277
- package/dist/form/SelectMulti.svelte.d.ts +37 -6
- package/dist/form/Slider.svelte +185 -268
- package/dist/form/Slider.svelte.d.ts +33 -16
- 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 +80 -45
- package/dist/form/TextArea.svelte.d.ts +35 -10
- package/dist/form/Textbox.svelte +80 -47
- package/dist/form/Textbox.svelte.d.ts +41 -8
- 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/cube-send.svg +1 -0
- 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 -145
- package/dist/icon/index.js +166 -146
- package/dist/icon/layout-sidebar-left-collapse.svg +1 -0
- package/dist/icon/layout-sidebar-left-expand.svg +1 -0
- package/dist/icon/logo-placeholder.svg +6 -0
- package/dist/icon/paperclip.svg +1 -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/icon/thumb-down.svg +1 -0
- package/dist/icon/thumb-up.svg +1 -0
- package/dist/index.d.ts +93 -22
- package/dist/index.js +28 -27
- 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 +158 -110
- package/dist/layout/Navbar.svelte.d.ts +26 -12
- 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 +170 -161
- package/dist/ui/Badge.svelte.d.ts +16 -4
- 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 -104
- package/dist/ui/Dialog.svelte.d.ts +21 -2
- 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 +12 -6
- 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 +169 -0
- package/dist/ui/ProgressBar.svelte.d.ts +30 -0
- package/dist/ui/ProgressBarVariant.d.ts +7 -0
- package/dist/ui/ProgressBarVariant.js +1 -0
- 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 +497 -56
- package/dist/ui/Table.svelte.d.ts +64 -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/dist/util/interceptLinkClick.d.ts +13 -0
- package/dist/util/interceptLinkClick.js +33 -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 -252
- package/dist/form/PasswordInput.svelte.d.ts +0 -33
- 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,21 +1,39 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
import ActionIcon from "../ui/ActionIcon.svelte";
|
|
7
|
-
import { iconChevronLeft, iconChevronRight, iconX } from "../icon/index.js";
|
|
8
|
-
|
|
9
|
-
interface Props {
|
|
1
|
+
<script module lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
|
|
4
|
+
export interface DatePickerProps {
|
|
5
|
+
/** Label text displayed above the input */
|
|
10
6
|
label?: string;
|
|
7
|
+
/** Disable the date picker */
|
|
11
8
|
disabled?: boolean;
|
|
9
|
+
/** Mark field as required (shows asterisk) */
|
|
12
10
|
required?: boolean;
|
|
11
|
+
/** CSS classes for the container element */
|
|
13
12
|
containerClass?: string;
|
|
13
|
+
/** Selected date value in ISO format (bindable) */
|
|
14
14
|
value?: string | undefined;
|
|
15
|
+
/** Minimum selectable date in ISO format */
|
|
15
16
|
minDate?: string | undefined;
|
|
17
|
+
/** Maximum selectable date in ISO format */
|
|
16
18
|
maxDate?: string | undefined;
|
|
19
|
+
/** Position of the tooltip */
|
|
20
|
+
tooltipLocation?: 'top' | 'bottom' | 'left' | 'right';
|
|
21
|
+
/** Rich tooltip content using a Svelte snippet */
|
|
22
|
+
tooltipContent?: Snippet;
|
|
23
|
+
/** Simple tooltip text */
|
|
24
|
+
tooltipText?: string;
|
|
25
|
+
/** Callback when selected date changes */
|
|
17
26
|
onchange?: (date: string | undefined) => void;
|
|
18
27
|
}
|
|
28
|
+
</script>
|
|
29
|
+
|
|
30
|
+
<script lang="ts">
|
|
31
|
+
import Textbox from './Textbox.svelte';
|
|
32
|
+
import { fade } from 'svelte/transition';
|
|
33
|
+
import dayjs from '../util/dayjs.js';
|
|
34
|
+
import { clickOutside } from '../util/ClickOutside.js';
|
|
35
|
+
import ActionIcon from '../ui/ActionIcon.svelte';
|
|
36
|
+
import { iconChevronLeft, iconChevronRight, iconX } from '../icon/index.js';
|
|
19
37
|
|
|
20
38
|
let {
|
|
21
39
|
label,
|
|
@@ -25,20 +43,19 @@
|
|
|
25
43
|
value = $bindable(undefined),
|
|
26
44
|
minDate,
|
|
27
45
|
maxDate,
|
|
28
|
-
|
|
29
|
-
|
|
46
|
+
tooltipLocation = 'top',
|
|
47
|
+
tooltipContent,
|
|
48
|
+
tooltipText,
|
|
49
|
+
onchange
|
|
50
|
+
}: DatePickerProps = $props();
|
|
30
51
|
|
|
31
|
-
const days = [
|
|
52
|
+
const days = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];
|
|
32
53
|
|
|
33
54
|
// Parse min and max dates
|
|
34
|
-
const minDateParsed = $derived(
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
maxDate ? dayjs(maxDate).startOf("date") : undefined,
|
|
39
|
-
);
|
|
40
|
-
|
|
41
|
-
type DisplayedDateColor = "normal" | "red" | "grey" | "disabled";
|
|
55
|
+
const minDateParsed = $derived(minDate ? dayjs(minDate).startOf('date') : undefined);
|
|
56
|
+
const maxDateParsed = $derived(maxDate ? dayjs(maxDate).startOf('date') : undefined);
|
|
57
|
+
|
|
58
|
+
type DisplayedDateColor = 'normal' | 'red' | 'grey' | 'disabled';
|
|
42
59
|
type DisplayedDate = {
|
|
43
60
|
date: dayjs.Dayjs;
|
|
44
61
|
text: string;
|
|
@@ -47,20 +64,20 @@
|
|
|
47
64
|
isDisabled: boolean;
|
|
48
65
|
};
|
|
49
66
|
|
|
50
|
-
const todayDate = dayjs().startOf(
|
|
67
|
+
const todayDate = dayjs().startOf('date');
|
|
51
68
|
|
|
52
69
|
let selectedDate: dayjs.Dayjs | undefined = $state(undefined);
|
|
53
70
|
|
|
54
71
|
$effect(() => {
|
|
55
72
|
setDate(value ? dayjs(value) : undefined, false, true);
|
|
56
73
|
if (selectedDate) {
|
|
57
|
-
focusedMonth = selectedDate.startOf(
|
|
74
|
+
focusedMonth = selectedDate.startOf('month');
|
|
58
75
|
}
|
|
59
76
|
});
|
|
60
77
|
|
|
61
78
|
let showRequiredRing = $state(false);
|
|
62
79
|
// svelte-ignore state_referenced_locally
|
|
63
|
-
let focusedMonth = $state((selectedDate ?? todayDate).startOf(
|
|
80
|
+
let focusedMonth = $state((selectedDate ?? todayDate).startOf('month'));
|
|
64
81
|
|
|
65
82
|
function startOfWeek(date: dayjs.Dayjs) {
|
|
66
83
|
// We celebrate Monday as the one true start of the week in this household. NO exceptions
|
|
@@ -74,7 +91,7 @@
|
|
|
74
91
|
function getFullWeekCount(month: dayjs.Dayjs) {
|
|
75
92
|
const start = startOfWeek(month.date(1));
|
|
76
93
|
const end = endOfWeek(month.date(month.daysInMonth()));
|
|
77
|
-
const diff = end.diff(start,
|
|
94
|
+
const diff = end.diff(start, 'day', true);
|
|
78
95
|
|
|
79
96
|
return Math.ceil(diff / 7) * 7;
|
|
80
97
|
}
|
|
@@ -85,10 +102,7 @@
|
|
|
85
102
|
return true;
|
|
86
103
|
}
|
|
87
104
|
|
|
88
|
-
function calculateDays(
|
|
89
|
-
selectedDate: dayjs.Dayjs | undefined,
|
|
90
|
-
focusedMonth: dayjs.Dayjs,
|
|
91
|
-
) {
|
|
105
|
+
function calculateDays(selectedDate: dayjs.Dayjs | undefined, focusedMonth: dayjs.Dayjs) {
|
|
92
106
|
// Fill out the entire 7 day grid
|
|
93
107
|
const length = getFullWeekCount(focusedMonth);
|
|
94
108
|
|
|
@@ -97,31 +111,29 @@
|
|
|
97
111
|
const startDate = startOfWeek(focusedMonth);
|
|
98
112
|
|
|
99
113
|
for (let i = 0; i < length; i++) {
|
|
100
|
-
const date = startDate.add(i,
|
|
114
|
+
const date = startDate.add(i, 'day');
|
|
101
115
|
|
|
102
116
|
let color: DisplayedDateColor;
|
|
103
117
|
let isDisabled = false;
|
|
104
118
|
|
|
105
119
|
// Check if date is outside of min/max range
|
|
106
120
|
if (!isDateInRange(date)) {
|
|
107
|
-
color =
|
|
121
|
+
color = 'disabled';
|
|
108
122
|
isDisabled = true;
|
|
109
|
-
} else if (!date.isSame(focusedMonth,
|
|
110
|
-
color =
|
|
123
|
+
} else if (!date.isSame(focusedMonth, 'month')) {
|
|
124
|
+
color = 'grey';
|
|
111
125
|
} else if (date.day() == 0 || date.day() == 6) {
|
|
112
|
-
color =
|
|
126
|
+
color = 'red';
|
|
113
127
|
} else {
|
|
114
|
-
color =
|
|
128
|
+
color = 'normal';
|
|
115
129
|
}
|
|
116
130
|
|
|
117
131
|
displayedDates.push({
|
|
118
132
|
date,
|
|
119
133
|
text: date.date().toString(),
|
|
120
134
|
color,
|
|
121
|
-
isSelected:
|
|
122
|
-
|
|
123
|
-
selectedDate.isSame(date, "date"),
|
|
124
|
-
isDisabled,
|
|
135
|
+
isSelected: selectedDate !== undefined && selectedDate.isSame(date, 'date'),
|
|
136
|
+
isDisabled
|
|
125
137
|
});
|
|
126
138
|
}
|
|
127
139
|
|
|
@@ -132,29 +144,25 @@
|
|
|
132
144
|
let classes = [];
|
|
133
145
|
|
|
134
146
|
if (date.isDisabled) {
|
|
135
|
-
classes.push(
|
|
136
|
-
} else if (date.color ===
|
|
137
|
-
classes.push(
|
|
138
|
-
} else if (date.color ===
|
|
139
|
-
classes.push(
|
|
147
|
+
classes.push('disabled');
|
|
148
|
+
} else if (date.color === 'red') {
|
|
149
|
+
classes.push('text-red');
|
|
150
|
+
} else if (date.color === 'grey') {
|
|
151
|
+
classes.push('text-grey');
|
|
140
152
|
}
|
|
141
153
|
|
|
142
154
|
if (date.isSelected && !date.isDisabled) {
|
|
143
|
-
classes.push(
|
|
155
|
+
classes.push('selected');
|
|
144
156
|
} else {
|
|
145
|
-
if (date.date.isSame(todayDate,
|
|
146
|
-
classes.push(
|
|
157
|
+
if (date.date.isSame(todayDate, 'date') && !date.isDisabled) {
|
|
158
|
+
classes.push('today');
|
|
147
159
|
}
|
|
148
160
|
}
|
|
149
161
|
|
|
150
|
-
return classes.join(
|
|
162
|
+
return classes.join(' ');
|
|
151
163
|
}
|
|
152
164
|
|
|
153
|
-
function setDate(
|
|
154
|
-
newDate: dayjs.Dayjs | undefined,
|
|
155
|
-
fromTextbox: boolean,
|
|
156
|
-
fromValue: boolean,
|
|
157
|
-
) {
|
|
165
|
+
function setDate(newDate: dayjs.Dayjs | undefined, fromTextbox: boolean, fromValue: boolean) {
|
|
158
166
|
if (newDate === undefined && selectedDate === undefined) return;
|
|
159
167
|
|
|
160
168
|
// Check if the new date is within the allowed range
|
|
@@ -164,18 +172,12 @@
|
|
|
164
172
|
}
|
|
165
173
|
|
|
166
174
|
const isSameDate =
|
|
167
|
-
newDate !== undefined &&
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
if (
|
|
172
|
-
newDate === undefined ||
|
|
173
|
-
!newDate.isValid() ||
|
|
174
|
-
(isSameDate && !fromTextbox && !fromValue)
|
|
175
|
-
) {
|
|
175
|
+
newDate !== undefined && selectedDate !== undefined && newDate.isSame(selectedDate, 'date');
|
|
176
|
+
|
|
177
|
+
if (newDate === undefined || !newDate.isValid() || (isSameDate && !fromTextbox && !fromValue)) {
|
|
176
178
|
value = undefined;
|
|
177
179
|
selectedDate = undefined;
|
|
178
|
-
readableDate =
|
|
180
|
+
readableDate = '';
|
|
179
181
|
|
|
180
182
|
return;
|
|
181
183
|
} else if (isSameDate) {
|
|
@@ -183,32 +185,30 @@
|
|
|
183
185
|
}
|
|
184
186
|
|
|
185
187
|
selectedDate = newDate;
|
|
186
|
-
focusedMonth = newDate.startOf(
|
|
188
|
+
focusedMonth = newDate.startOf('month');
|
|
187
189
|
|
|
188
|
-
value = newDate.format(
|
|
190
|
+
value = newDate.format('YYYY-MM-DD');
|
|
189
191
|
onchange?.(value);
|
|
190
192
|
|
|
191
|
-
if (!fromTextbox) readableDate = newDate.format(
|
|
193
|
+
if (!fromTextbox) readableDate = newDate.format('D MMMM YYYY');
|
|
192
194
|
}
|
|
193
195
|
|
|
194
196
|
function incrementFocusedMonth(value: number) {
|
|
195
|
-
focusedMonth = focusedMonth.add(value,
|
|
197
|
+
focusedMonth = focusedMonth.add(value, 'month');
|
|
196
198
|
}
|
|
197
199
|
|
|
198
200
|
// -----------------------------
|
|
199
201
|
// Control code
|
|
200
202
|
|
|
201
203
|
let textboxElement: HTMLElement | undefined = $state(undefined);
|
|
202
|
-
let readableDate: string = $state(
|
|
204
|
+
let readableDate: string = $state('');
|
|
203
205
|
let showCalendar = $state(false);
|
|
204
206
|
let showYearPicker = $state(false);
|
|
205
|
-
let dropdownPosition:
|
|
207
|
+
let dropdownPosition: 'above' | 'below' = $state('below');
|
|
206
208
|
|
|
207
209
|
// Year picker: show a range of years centered around the focused year
|
|
208
210
|
const yearRangeSize = 12;
|
|
209
|
-
let yearRangeStart = $state(
|
|
210
|
-
Math.floor(dayjs().year() / yearRangeSize) * yearRangeSize,
|
|
211
|
-
);
|
|
211
|
+
let yearRangeStart = $state(Math.floor(dayjs().year() / yearRangeSize) * yearRangeSize);
|
|
212
212
|
|
|
213
213
|
function getYearRange() {
|
|
214
214
|
const years: number[] = [];
|
|
@@ -236,25 +236,24 @@
|
|
|
236
236
|
function toggleYearPicker() {
|
|
237
237
|
if (!showYearPicker) {
|
|
238
238
|
// Center the range around the focused year
|
|
239
|
-
yearRangeStart =
|
|
240
|
-
Math.floor(focusedMonth.year() / yearRangeSize) * yearRangeSize;
|
|
239
|
+
yearRangeStart = Math.floor(focusedMonth.year() / yearRangeSize) * yearRangeSize;
|
|
241
240
|
}
|
|
242
241
|
showYearPicker = !showYearPicker;
|
|
243
242
|
}
|
|
244
243
|
|
|
245
244
|
function checkDropdownPosition() {
|
|
246
245
|
if (!textboxElement) return;
|
|
247
|
-
|
|
246
|
+
|
|
248
247
|
const rect = textboxElement.getBoundingClientRect();
|
|
249
248
|
const dropdownHeight = 300; // Approximate height of the calendar dropdown
|
|
250
249
|
const spaceBelow = window.innerHeight - rect.bottom;
|
|
251
250
|
const spaceAbove = rect.top;
|
|
252
|
-
|
|
251
|
+
|
|
253
252
|
// If not enough space below and more space above, position above
|
|
254
253
|
if (spaceBelow < dropdownHeight && spaceAbove > spaceBelow) {
|
|
255
|
-
dropdownPosition =
|
|
254
|
+
dropdownPosition = 'above';
|
|
256
255
|
} else {
|
|
257
|
-
dropdownPosition =
|
|
256
|
+
dropdownPosition = 'below';
|
|
258
257
|
}
|
|
259
258
|
}
|
|
260
259
|
|
|
@@ -271,24 +270,26 @@
|
|
|
271
270
|
function onDateTextChange(event: Event) {
|
|
272
271
|
const textbox = event.target as HTMLInputElement;
|
|
273
272
|
|
|
274
|
-
const date = dayjs(textbox.value, [
|
|
273
|
+
const date = dayjs(textbox.value, ['D MMMM YYYY', 'DD/MM/YYYY']);
|
|
275
274
|
if (date.isValid()) {
|
|
276
275
|
setDate(date, true, false);
|
|
277
276
|
}
|
|
278
277
|
}
|
|
279
278
|
|
|
279
|
+
function onDateTextBlur() {
|
|
280
|
+
if (selectedDate) {
|
|
281
|
+
readableDate = selectedDate.format('D MMMM YYYY');
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
|
|
280
285
|
function clearDate() {
|
|
281
286
|
value = undefined;
|
|
282
287
|
selectedDate = undefined;
|
|
283
|
-
readableDate =
|
|
288
|
+
readableDate = '';
|
|
284
289
|
onchange?.(undefined);
|
|
285
290
|
}
|
|
286
291
|
|
|
287
|
-
function handleDateChangeClick(
|
|
288
|
-
event: MouseEvent,
|
|
289
|
-
date: dayjs.Dayjs,
|
|
290
|
-
isDisabled: boolean,
|
|
291
|
-
) {
|
|
292
|
+
function handleDateChangeClick(event: MouseEvent, date: dayjs.Dayjs, isDisabled: boolean) {
|
|
292
293
|
if (isDisabled) {
|
|
293
294
|
event.stopPropagation();
|
|
294
295
|
return;
|
|
@@ -307,7 +308,10 @@
|
|
|
307
308
|
placeholder="Enter date"
|
|
308
309
|
{disabled}
|
|
309
310
|
{required}
|
|
310
|
-
|
|
311
|
+
autocomplete="off"
|
|
312
|
+
{tooltipLocation}
|
|
313
|
+
{tooltipContent}
|
|
314
|
+
{tooltipText}
|
|
311
315
|
bind:textboxElement
|
|
312
316
|
value={readableDate}
|
|
313
317
|
onfocus={() => {
|
|
@@ -315,7 +319,8 @@
|
|
|
315
319
|
showCalendar = true;
|
|
316
320
|
}}
|
|
317
321
|
onkeyup={onDateTextChange}
|
|
318
|
-
|
|
322
|
+
onblur={onDateTextBlur}
|
|
323
|
+
class={showRequiredRing ? '!border-required' : ''}
|
|
319
324
|
>
|
|
320
325
|
{#snippet right()}
|
|
321
326
|
{#if readableDate && !disabled}
|
|
@@ -334,11 +339,7 @@
|
|
|
334
339
|
{/snippet}
|
|
335
340
|
<div class="date-picker">
|
|
336
341
|
{#if showCalendar}
|
|
337
|
-
<div
|
|
338
|
-
class="calendar {dropdownPosition}"
|
|
339
|
-
transition:fade={{ duration: 200 }}
|
|
340
|
-
use:clickOutside={onClickOutside}
|
|
341
|
-
>
|
|
342
|
+
<div class="calendar {dropdownPosition}" transition:fade={{ duration: 200 }} use:clickOutside={onClickOutside}>
|
|
342
343
|
<div class="month-buttons">
|
|
343
344
|
{#if showYearPicker}
|
|
344
345
|
<ActionIcon
|
|
@@ -346,13 +347,8 @@
|
|
|
346
347
|
size="1.5rem"
|
|
347
348
|
onclick={() => incrementYearRange(-1)}
|
|
348
349
|
/>
|
|
349
|
-
<button
|
|
350
|
-
|
|
351
|
-
onclick={toggleYearPicker}
|
|
352
|
-
>
|
|
353
|
-
{yearRangeStart} - {yearRangeStart +
|
|
354
|
-
yearRangeSize -
|
|
355
|
-
1}
|
|
350
|
+
<button class="month-label clickable" onclick={toggleYearPicker}>
|
|
351
|
+
{yearRangeStart} - {yearRangeStart + yearRangeSize - 1}
|
|
356
352
|
</button>
|
|
357
353
|
<ActionIcon
|
|
358
354
|
svg={iconChevronRight}
|
|
@@ -365,11 +361,8 @@
|
|
|
365
361
|
size="1.5rem"
|
|
366
362
|
onclick={() => incrementFocusedMonth(-1)}
|
|
367
363
|
/>
|
|
368
|
-
<button
|
|
369
|
-
|
|
370
|
-
onclick={toggleYearPicker}
|
|
371
|
-
>
|
|
372
|
-
{focusedMonth.format("MMMM YYYY")}
|
|
364
|
+
<button class="month-label clickable" onclick={toggleYearPicker}>
|
|
365
|
+
{focusedMonth.format('MMMM YYYY')}
|
|
373
366
|
</button>
|
|
374
367
|
<ActionIcon
|
|
375
368
|
svg={iconChevronRight}
|
|
@@ -384,10 +377,8 @@
|
|
|
384
377
|
{#each getYearRange() as year}
|
|
385
378
|
<button
|
|
386
379
|
class="year-button"
|
|
387
|
-
class:selected={focusedMonth.year() ===
|
|
388
|
-
|
|
389
|
-
class:current-year={todayDate.year() ===
|
|
390
|
-
year}
|
|
380
|
+
class:selected={focusedMonth.year() === year}
|
|
381
|
+
class:current-year={todayDate.year() === year}
|
|
391
382
|
class:disabled={!isYearInRange(year)}
|
|
392
383
|
disabled={!isYearInRange(year)}
|
|
393
384
|
onclick={() => selectYear(year)}
|
|
@@ -409,12 +400,7 @@
|
|
|
409
400
|
<button
|
|
410
401
|
class="day-button {buildDayClasses(day)}"
|
|
411
402
|
disabled={day.isDisabled}
|
|
412
|
-
onclick={(e) =>
|
|
413
|
-
handleDateChangeClick(
|
|
414
|
-
e,
|
|
415
|
-
day.date,
|
|
416
|
-
day.isDisabled,
|
|
417
|
-
)}
|
|
403
|
+
onclick={(e) => handleDateChangeClick(e, day.date, day.isDisabled)}
|
|
418
404
|
>
|
|
419
405
|
{day.text}
|
|
420
406
|
</button>
|
|
@@ -434,7 +420,7 @@
|
|
|
434
420
|
|
|
435
421
|
.clear-button {
|
|
436
422
|
position: absolute;
|
|
437
|
-
right:
|
|
423
|
+
right: 0.5rem;
|
|
438
424
|
top: 50%;
|
|
439
425
|
transform: translateY(-50%);
|
|
440
426
|
line-height: 0;
|
|
@@ -444,17 +430,17 @@
|
|
|
444
430
|
width: 18rem;
|
|
445
431
|
text-align: center;
|
|
446
432
|
position: absolute;
|
|
447
|
-
z-index:
|
|
433
|
+
z-index: 10;
|
|
448
434
|
user-select: none;
|
|
449
|
-
background-color: var(--
|
|
450
|
-
border: 1px solid var(--
|
|
451
|
-
border-radius:
|
|
452
|
-
box-shadow:
|
|
453
|
-
padding:
|
|
435
|
+
background-color: var(--paper-body-bg);
|
|
436
|
+
border: 1px solid var(--border-color);
|
|
437
|
+
border-radius: 0.375rem;
|
|
438
|
+
box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
|
|
439
|
+
padding: 0.5rem;
|
|
454
440
|
}
|
|
455
441
|
|
|
456
442
|
.calendar.below {
|
|
457
|
-
top: 0
|
|
443
|
+
top: 0
|
|
458
444
|
}
|
|
459
445
|
|
|
460
446
|
.calendar.above {
|
|
@@ -465,13 +451,13 @@
|
|
|
465
451
|
display: flex;
|
|
466
452
|
justify-content: space-between;
|
|
467
453
|
align-items: center;
|
|
468
|
-
padding:
|
|
454
|
+
padding: 0.5rem;
|
|
469
455
|
}
|
|
470
456
|
|
|
471
457
|
.month-label {
|
|
472
|
-
font-weight:
|
|
473
|
-
color: var(--
|
|
474
|
-
font-size:
|
|
458
|
+
font-weight: 600;
|
|
459
|
+
color: var(--text-color);
|
|
460
|
+
font-size: 1.125rem;
|
|
475
461
|
background: none;
|
|
476
462
|
border: none;
|
|
477
463
|
cursor: default;
|
|
@@ -479,53 +465,53 @@
|
|
|
479
465
|
|
|
480
466
|
.month-label.clickable {
|
|
481
467
|
cursor: pointer;
|
|
482
|
-
padding:
|
|
483
|
-
border-radius:
|
|
484
|
-
transition: background-color
|
|
468
|
+
padding: 0.25rem 0.5rem;
|
|
469
|
+
border-radius: 0.25rem;
|
|
470
|
+
transition: background-color 0.15s ease;
|
|
485
471
|
}
|
|
486
472
|
|
|
487
473
|
.month-label.clickable:hover {
|
|
488
|
-
background-color: var(--
|
|
474
|
+
background-color: rgba(var(--ui-primary-rgbc), 0.1);
|
|
489
475
|
}
|
|
490
476
|
|
|
491
477
|
.year-grid {
|
|
492
478
|
display: grid;
|
|
493
479
|
grid-template-columns: repeat(3, 1fr);
|
|
494
|
-
gap:
|
|
495
|
-
margin-top:
|
|
496
|
-
padding:
|
|
480
|
+
gap: 0.5rem;
|
|
481
|
+
margin-top: 0.5rem;
|
|
482
|
+
padding: 0.5rem;
|
|
497
483
|
}
|
|
498
484
|
|
|
499
485
|
.year-button {
|
|
500
|
-
color: var(--
|
|
501
|
-
padding:
|
|
502
|
-
border-radius:
|
|
486
|
+
color: var(--text-color);
|
|
487
|
+
padding: 0.75rem 0.5rem;
|
|
488
|
+
border-radius: 0.375rem;
|
|
503
489
|
border: none;
|
|
504
490
|
background: transparent;
|
|
505
491
|
cursor: pointer;
|
|
506
|
-
font-size:
|
|
507
|
-
transition: all
|
|
492
|
+
font-size: 0.875rem;
|
|
493
|
+
transition: all 0.15s ease;
|
|
508
494
|
}
|
|
509
495
|
|
|
510
496
|
.year-button:hover:not(.disabled) {
|
|
511
|
-
background-color: var(--
|
|
512
|
-
color: var(--
|
|
497
|
+
background-color: rgba(var(--ui-primary-rgbc), 0.1);
|
|
498
|
+
color: var(--ui-primary);
|
|
513
499
|
}
|
|
514
500
|
|
|
515
501
|
.year-button.current-year {
|
|
516
|
-
background-color: var(--
|
|
517
|
-
color: var(--
|
|
518
|
-
font-weight:
|
|
502
|
+
background-color: rgba(var(--ui-primary-rgbc), 0.15);
|
|
503
|
+
color: var(--ui-primary);
|
|
504
|
+
font-weight: 600;
|
|
519
505
|
}
|
|
520
506
|
|
|
521
507
|
.year-button.selected {
|
|
522
|
-
background-color: var(--
|
|
523
|
-
color:
|
|
524
|
-
font-weight:
|
|
508
|
+
background-color: var(--ui-primary);
|
|
509
|
+
color: white;
|
|
510
|
+
font-weight: 600;
|
|
525
511
|
}
|
|
526
512
|
|
|
527
513
|
.year-button.disabled {
|
|
528
|
-
color:
|
|
514
|
+
color: rgb(163 163 163) !important;
|
|
529
515
|
background-color: transparent !important;
|
|
530
516
|
cursor: not-allowed !important;
|
|
531
517
|
opacity: 0.5;
|
|
@@ -534,17 +520,17 @@
|
|
|
534
520
|
.days-header-bar {
|
|
535
521
|
display: grid;
|
|
536
522
|
grid-template-columns: repeat(7, 1fr);
|
|
537
|
-
margin-top:
|
|
538
|
-
background-color:
|
|
539
|
-
border-radius:
|
|
540
|
-
border: 1px solid var(--
|
|
523
|
+
margin-top: 0.5rem;
|
|
524
|
+
background-color: #f8f9fa;
|
|
525
|
+
border-radius: 0.25rem;
|
|
526
|
+
border: 1px solid var(--border-color);
|
|
541
527
|
}
|
|
542
528
|
|
|
543
529
|
.day-label {
|
|
544
|
-
color:
|
|
545
|
-
padding:
|
|
546
|
-
font-size:
|
|
547
|
-
font-weight:
|
|
530
|
+
color: #6b7280;
|
|
531
|
+
padding: 0.5rem;
|
|
532
|
+
font-size: 0.75rem;
|
|
533
|
+
font-weight: 600;
|
|
548
534
|
text-transform: uppercase;
|
|
549
535
|
text-align: center;
|
|
550
536
|
}
|
|
@@ -552,50 +538,50 @@
|
|
|
552
538
|
.days-grid {
|
|
553
539
|
display: grid;
|
|
554
540
|
grid-template-columns: repeat(7, 1fr);
|
|
555
|
-
gap:
|
|
556
|
-
margin-top:
|
|
541
|
+
gap: 0.125rem;
|
|
542
|
+
margin-top: 0.5rem;
|
|
557
543
|
}
|
|
558
544
|
|
|
559
545
|
.day-button {
|
|
560
|
-
color: var(--
|
|
546
|
+
color: var(--text-color);
|
|
561
547
|
width: 2.25rem;
|
|
562
548
|
height: 2.25rem;
|
|
563
|
-
border-radius:
|
|
549
|
+
border-radius: 0.375rem;
|
|
564
550
|
border: none;
|
|
565
551
|
background: transparent;
|
|
566
552
|
cursor: pointer;
|
|
567
|
-
font-size:
|
|
568
|
-
transition: all
|
|
553
|
+
font-size: 0.875rem;
|
|
554
|
+
transition: all 0.15s ease;
|
|
569
555
|
justify-self: center;
|
|
570
556
|
}
|
|
571
557
|
|
|
572
558
|
.day-button:hover {
|
|
573
|
-
background-color: var(--
|
|
574
|
-
color: var(--
|
|
559
|
+
background-color: rgba(var(--ui-primary-rgbc), 0.1);
|
|
560
|
+
color: var(--ui-primary);
|
|
575
561
|
}
|
|
576
562
|
|
|
577
563
|
.today {
|
|
578
|
-
background-color: var(--
|
|
579
|
-
color: var(--
|
|
580
|
-
font-weight:
|
|
564
|
+
background-color: rgba(var(--ui-primary-rgbc), 0.15);
|
|
565
|
+
color: var(--ui-primary);
|
|
566
|
+
font-weight: 600;
|
|
581
567
|
}
|
|
582
568
|
|
|
583
569
|
.selected {
|
|
584
|
-
background-color: var(--
|
|
585
|
-
color:
|
|
586
|
-
font-weight:
|
|
570
|
+
background-color: var(--ui-primary);
|
|
571
|
+
color: white;
|
|
572
|
+
font-weight: 600;
|
|
587
573
|
}
|
|
588
574
|
|
|
589
575
|
.text-red {
|
|
590
|
-
color:
|
|
576
|
+
color: rgb(248 113 113);
|
|
591
577
|
}
|
|
592
578
|
|
|
593
579
|
.text-grey {
|
|
594
|
-
color:
|
|
580
|
+
color: rgb(163 163 163);
|
|
595
581
|
}
|
|
596
582
|
|
|
597
583
|
.disabled {
|
|
598
|
-
color:
|
|
584
|
+
color: rgb(163 163 163) !important;
|
|
599
585
|
background-color: transparent !important;
|
|
600
586
|
cursor: not-allowed !important;
|
|
601
587
|
opacity: 0.5;
|
|
@@ -603,39 +589,39 @@
|
|
|
603
589
|
|
|
604
590
|
.disabled:hover {
|
|
605
591
|
background-color: transparent !important;
|
|
606
|
-
color:
|
|
592
|
+
color: rgb(163 163 163) !important;
|
|
607
593
|
}
|
|
608
594
|
|
|
609
595
|
:global(.dark) {
|
|
610
596
|
.days-header-bar {
|
|
611
|
-
background-color:
|
|
597
|
+
background-color: #252529;
|
|
612
598
|
}
|
|
613
599
|
|
|
614
600
|
.day-label {
|
|
615
|
-
color:
|
|
601
|
+
color: #d1d5db;
|
|
616
602
|
}
|
|
617
603
|
|
|
618
604
|
.day-button:hover {
|
|
619
|
-
background-color: var(--
|
|
620
|
-
color: var(--
|
|
605
|
+
background-color: rgba(var(--ui-accent-rgbc), 0.1);
|
|
606
|
+
color: var(--ui-accent);
|
|
621
607
|
}
|
|
622
608
|
|
|
623
609
|
.today {
|
|
624
|
-
background-color: var(--
|
|
625
|
-
color: var(--
|
|
610
|
+
background-color: rgba(var(--ui-accent-rgbc), 0.15);
|
|
611
|
+
color: var(--ui-accent);
|
|
626
612
|
}
|
|
627
613
|
|
|
628
614
|
.selected {
|
|
629
|
-
background-color: var(--
|
|
630
|
-
color: var(--
|
|
615
|
+
background-color: var(--ui-accent);
|
|
616
|
+
color: var(--ui-primary);
|
|
631
617
|
}
|
|
632
618
|
|
|
633
619
|
.text-grey {
|
|
634
|
-
color:
|
|
620
|
+
color: #6b7280;
|
|
635
621
|
}
|
|
636
622
|
|
|
637
623
|
.disabled {
|
|
638
|
-
color:
|
|
624
|
+
color: #6b7280 !important;
|
|
639
625
|
background-color: transparent !important;
|
|
640
626
|
cursor: not-allowed !important;
|
|
641
627
|
opacity: 0.5;
|
|
@@ -643,30 +629,30 @@
|
|
|
643
629
|
|
|
644
630
|
.disabled:hover {
|
|
645
631
|
background-color: transparent !important;
|
|
646
|
-
color:
|
|
632
|
+
color: #6b7280 !important;
|
|
647
633
|
}
|
|
648
634
|
|
|
649
635
|
.month-label.clickable:hover {
|
|
650
|
-
background-color: var(--
|
|
636
|
+
background-color: rgba(var(--ui-accent-rgbc), 0.1);
|
|
651
637
|
}
|
|
652
638
|
|
|
653
639
|
.year-button:hover:not(.disabled) {
|
|
654
|
-
background-color: var(--
|
|
655
|
-
color: var(--
|
|
640
|
+
background-color: rgba(var(--ui-accent-rgbc), 0.1);
|
|
641
|
+
color: var(--ui-accent);
|
|
656
642
|
}
|
|
657
643
|
|
|
658
644
|
.year-button.current-year {
|
|
659
|
-
background-color: var(--
|
|
660
|
-
color: var(--
|
|
645
|
+
background-color: rgba(var(--ui-accent-rgbc), 0.15);
|
|
646
|
+
color: var(--ui-accent);
|
|
661
647
|
}
|
|
662
648
|
|
|
663
649
|
.year-button.selected {
|
|
664
|
-
background-color: var(--
|
|
665
|
-
color: var(--
|
|
650
|
+
background-color: var(--ui-accent);
|
|
651
|
+
color: var(--ui-primary);
|
|
666
652
|
}
|
|
667
653
|
|
|
668
654
|
.year-button.disabled {
|
|
669
|
-
color:
|
|
655
|
+
color: #6b7280 !important;
|
|
670
656
|
}
|
|
671
657
|
}
|
|
672
658
|
</style>
|