@keenmate/web-daterangepicker 1.7.0 → 1.8.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/README.md +25 -15
- package/dist/style.css +1 -1
- package/dist/web-daterangepicker.js +819 -819
- package/dist/web-daterangepicker.umd.js +9 -9
- package/package.json +6 -7
- package/src/css/_badges.css +67 -0
- package/src/css/_base.css +232 -0
- package/src/css/_calendar-grid.css +240 -0
- package/src/css/_header-navigation.css +356 -0
- package/src/css/_loading.css +36 -0
- package/src/css/_modifiers.css +41 -0
- package/src/css/_summary-actions.css +99 -0
- package/src/css/_tooltips.css +37 -0
- package/src/css/_variables.css +331 -0
- package/src/css/main.css +29 -0
- package/src/scss/_badges.scss +0 -70
- package/src/scss/_base.scss +0 -465
- package/src/scss/_calendar-grid.scss +0 -241
- package/src/scss/_header-navigation.scss +0 -370
- package/src/scss/_loading.scss +0 -39
- package/src/scss/_modifiers.scss +0 -50
- package/src/scss/_summary-actions.scss +0 -100
- package/src/scss/_tooltips.scss +0 -39
- package/src/scss/_variables.scss +0 -342
- package/src/scss/main.scss +0 -30
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@keenmate/web-daterangepicker",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.8.0",
|
|
4
4
|
"description": "Lightweight date picker web component with excellent keyboard navigation and range selection",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/web-daterangepicker.umd.js",
|
|
@@ -15,11 +15,11 @@
|
|
|
15
15
|
"default": "./dist/web-daterangepicker.js"
|
|
16
16
|
},
|
|
17
17
|
"./style.css": "./dist/style.css",
|
|
18
|
-
"./
|
|
19
|
-
"./
|
|
20
|
-
"./
|
|
18
|
+
"./css": "./src/css/main.css",
|
|
19
|
+
"./css/variables": "./src/css/_variables.css",
|
|
20
|
+
"./css/base": "./src/css/_base.css",
|
|
21
21
|
"./dist/*": "./dist/*",
|
|
22
|
-
"./src/
|
|
22
|
+
"./src/css/*": "./src/css/*",
|
|
23
23
|
"./package.json": "./package.json"
|
|
24
24
|
},
|
|
25
25
|
"sideEffects": [
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
],
|
|
30
30
|
"files": [
|
|
31
31
|
"dist",
|
|
32
|
-
"src/
|
|
32
|
+
"src/css"
|
|
33
33
|
],
|
|
34
34
|
"scripts": {
|
|
35
35
|
"dev": "vite",
|
|
@@ -66,7 +66,6 @@
|
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
68
|
"rimraf": "^5.0.5",
|
|
69
|
-
"sass": "^1.69.5",
|
|
70
69
|
"typescript": "^5.3.3",
|
|
71
70
|
"vite": "^5.0.8"
|
|
72
71
|
},
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/* ==============================================================================
|
|
2
|
+
DATE RANGE PICKER - BADGES
|
|
3
|
+
==============================================================================
|
|
4
|
+
Badge system for displaying event markers, counts, and labels on calendar days */
|
|
5
|
+
|
|
6
|
+
/* ==============================================================================
|
|
7
|
+
BADGE ROWS (GRID-BASED SYSTEM)
|
|
8
|
+
============================================================================== */
|
|
9
|
+
|
|
10
|
+
.drp-date-picker__badge-row {
|
|
11
|
+
display: grid;
|
|
12
|
+
grid-template-columns: repeat(7, 1fr);
|
|
13
|
+
gap: var(--drp-spacing-xs);
|
|
14
|
+
max-height: var(--drp-badge-row-height);
|
|
15
|
+
min-height: var(--drp-badge-row-height);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.drp-date-picker__badge-cell {
|
|
19
|
+
display: flex;
|
|
20
|
+
align-items: center;
|
|
21
|
+
justify-content: center;
|
|
22
|
+
font-size: var(--drp-font-size-2xs);
|
|
23
|
+
padding: var(--drp-badge-padding-v) var(--drp-badge-padding-h);
|
|
24
|
+
border-radius: var(--drp-badge-border-radius);
|
|
25
|
+
cursor: pointer;
|
|
26
|
+
max-height: var(--drp-badge-row-height);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.drp-date-picker__badge-cell:empty {
|
|
30
|
+
visibility: hidden;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.drp-date-picker__badge-cell:hover:not(:empty) {
|
|
34
|
+
transform: scale(1.05);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/* ==============================================================================
|
|
38
|
+
BADGE TYPE STYLES
|
|
39
|
+
============================================================================== */
|
|
40
|
+
|
|
41
|
+
/* Number Badge (e.g., day number, count) */
|
|
42
|
+
.drp-date-picker__badge-cell.badge-number {
|
|
43
|
+
background-color: var(--drp-badge-number-bg);
|
|
44
|
+
color: var(--drp-badge-number-color);
|
|
45
|
+
font-size: calc(1.12 * var(--drp-rem)); /* 11.2px */
|
|
46
|
+
font-weight: 600;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/* Count Badge (e.g., number of events) */
|
|
50
|
+
.drp-date-picker__badge-cell.badge-count {
|
|
51
|
+
background-color: var(--drp-badge-count-bg);
|
|
52
|
+
color: var(--drp-badge-count-color);
|
|
53
|
+
font-size: calc(1.12 * var(--drp-rem)); /* 11.2px */
|
|
54
|
+
font-weight: 700;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/* Text Badge (generic)
|
|
58
|
+
Note: Background colors for specific badge types (holiday, event, birthday, etc.)
|
|
59
|
+
should be defined by the application, not the component library.
|
|
60
|
+
See index.html examples for how to customize badge colors for your use case. */
|
|
61
|
+
.drp-date-picker__badge-cell.badge-text {
|
|
62
|
+
background-color: var(--drp-badge-text-bg);
|
|
63
|
+
color: var(--drp-badge-text-color);
|
|
64
|
+
font-size: calc(1.04 * var(--drp-rem)); /* 10.4px */
|
|
65
|
+
font-weight: 700;
|
|
66
|
+
text-transform: uppercase;
|
|
67
|
+
}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/* ==============================================================================
|
|
2
|
+
DATE RANGE PICKER - BASE STYLES
|
|
3
|
+
==============================================================================
|
|
4
|
+
Base container styles, input field, and calendar popup */
|
|
5
|
+
|
|
6
|
+
/* ==============================================================================
|
|
7
|
+
DATE PICKER INPUT FIELD
|
|
8
|
+
============================================================================== */
|
|
9
|
+
|
|
10
|
+
/* Input element itself (actual <input> tag) */
|
|
11
|
+
.drp-input {
|
|
12
|
+
width: 100%;
|
|
13
|
+
font-family: var(--drp-font-family, var(--base-font-family, inherit));
|
|
14
|
+
font-size: var(--drp-input-size-md-font);
|
|
15
|
+
line-height: var(--drp-line-height-normal);
|
|
16
|
+
color: var(--drp-input-color);
|
|
17
|
+
background-color: var(--drp-input-background);
|
|
18
|
+
border: var(--drp-border-width-base) solid var(--drp-input-border-color);
|
|
19
|
+
border-radius: var(--drp-border-radius);
|
|
20
|
+
padding: var(--drp-input-size-md-padding-v) var(--drp-input-size-md-padding-h);
|
|
21
|
+
padding-right: calc(var(--drp-input-size-md-padding-h) * 2.5); /* Extra space for calendar icon */
|
|
22
|
+
height: var(--drp-input-size-md-height);
|
|
23
|
+
box-sizing: border-box;
|
|
24
|
+
transition: border-color var(--drp-transition-fast) var(--drp-easing-snappy),
|
|
25
|
+
box-shadow var(--drp-transition-fast) var(--drp-easing-snappy);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.drp-input::placeholder {
|
|
29
|
+
color: var(--drp-input-placeholder-color);
|
|
30
|
+
opacity: 0.6;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.drp-input:hover:not(:disabled) {
|
|
34
|
+
border-color: var(--drp-input-border-color-hover);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.drp-input:focus {
|
|
38
|
+
outline: none;
|
|
39
|
+
border-color: var(--drp-input-border-color-focus);
|
|
40
|
+
box-shadow: 0 0 0 var(--drp-input-focus-shadow-size) var(--drp-input-focus-shadow-color);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.drp-input:disabled {
|
|
44
|
+
opacity: var(--drp-opacity-disabled);
|
|
45
|
+
cursor: not-allowed;
|
|
46
|
+
background-color: var(--drp-input-background-disabled);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/* Input Size Variants */
|
|
50
|
+
.drp-input.drp-input--xs {
|
|
51
|
+
font-size: var(--drp-input-size-xs-font);
|
|
52
|
+
padding: var(--drp-input-size-xs-padding-v) var(--drp-input-size-xs-padding-h);
|
|
53
|
+
padding-right: calc(var(--drp-input-size-xs-padding-h) * 2.5);
|
|
54
|
+
height: var(--drp-input-size-xs-height);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.drp-input.drp-input--sm {
|
|
58
|
+
font-size: var(--drp-input-size-sm-font);
|
|
59
|
+
padding: var(--drp-input-size-sm-padding-v) var(--drp-input-size-sm-padding-h);
|
|
60
|
+
padding-right: calc(var(--drp-input-size-sm-padding-h) * 2.5);
|
|
61
|
+
height: var(--drp-input-size-sm-height);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.drp-input.drp-input--lg {
|
|
65
|
+
font-size: var(--drp-input-size-lg-font);
|
|
66
|
+
padding: var(--drp-input-size-lg-padding-v) var(--drp-input-size-lg-padding-h);
|
|
67
|
+
padding-right: calc(var(--drp-input-size-lg-padding-h) * 2.5);
|
|
68
|
+
height: var(--drp-input-size-lg-height);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.drp-input.drp-input--xl {
|
|
72
|
+
font-size: var(--drp-input-size-xl-font);
|
|
73
|
+
padding: var(--drp-input-size-xl-padding-v) var(--drp-input-size-xl-padding-h);
|
|
74
|
+
padding-right: calc(var(--drp-input-size-xl-padding-h) * 2.5);
|
|
75
|
+
height: var(--drp-input-size-xl-height);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/* ==============================================================================
|
|
79
|
+
INPUT WRAPPER CONTAINER (for positioning calendar icon)
|
|
80
|
+
============================================================================== */
|
|
81
|
+
|
|
82
|
+
.drp-date-picker-input {
|
|
83
|
+
position: relative;
|
|
84
|
+
cursor: pointer;
|
|
85
|
+
display: inline-block;
|
|
86
|
+
width: 100%;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/* Calendar icon */
|
|
90
|
+
.drp-date-picker-input::after {
|
|
91
|
+
content: '📅';
|
|
92
|
+
position: absolute;
|
|
93
|
+
right: var(--drp-input-size-md-padding-h);
|
|
94
|
+
top: 50%;
|
|
95
|
+
transform: translateY(-50%);
|
|
96
|
+
pointer-events: none;
|
|
97
|
+
opacity: var(--drp-input-icon-opacity);
|
|
98
|
+
font-size: var(--drp-input-size-md-icon-size);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/* Size variant icon positioning */
|
|
102
|
+
.drp-date-picker-input.drp-date-picker-input--xs::after {
|
|
103
|
+
right: var(--drp-input-size-xs-padding-h);
|
|
104
|
+
font-size: var(--drp-input-size-xs-icon-size);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.drp-date-picker-input.drp-date-picker-input--sm::after {
|
|
108
|
+
right: var(--drp-input-size-sm-padding-h);
|
|
109
|
+
font-size: var(--drp-input-size-sm-icon-size);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.drp-date-picker-input.drp-date-picker-input--lg::after {
|
|
113
|
+
right: var(--drp-input-size-lg-padding-h);
|
|
114
|
+
font-size: var(--drp-input-size-lg-icon-size);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.drp-date-picker-input.drp-date-picker-input--xl::after {
|
|
118
|
+
right: var(--drp-input-size-xl-padding-h);
|
|
119
|
+
font-size: var(--drp-input-size-xl-icon-size);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/* ==============================================================================
|
|
123
|
+
CALENDAR POPUP CONTAINER
|
|
124
|
+
============================================================================== */
|
|
125
|
+
|
|
126
|
+
.drp-date-picker {
|
|
127
|
+
position: absolute;
|
|
128
|
+
z-index: var(--drp-z-index-dropdown);
|
|
129
|
+
font-family: var(--drp-font-family, var(--base-font-family, inherit));
|
|
130
|
+
background: var(--drp-dropdown-background);
|
|
131
|
+
border: var(--drp-border-width-base) solid var(--drp-border-color);
|
|
132
|
+
border-radius: var(--drp-border-radius-lg);
|
|
133
|
+
box-shadow: var(--drp-shadow-xl);
|
|
134
|
+
padding: var(--drp-spacing-md);
|
|
135
|
+
min-width: var(--drp-month-min-width);
|
|
136
|
+
max-width: var(--drp-calendar-max-width);
|
|
137
|
+
box-sizing: border-box;
|
|
138
|
+
user-select: none;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/* Hide by default */
|
|
142
|
+
.drp-date-picker:not(.drp-date-picker--visible) {
|
|
143
|
+
display: none;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/* Inline mode modifier */
|
|
147
|
+
.drp-date-picker--inline {
|
|
148
|
+
position: relative !important;
|
|
149
|
+
display: block !important;
|
|
150
|
+
z-index: auto;
|
|
151
|
+
min-width: 0;
|
|
152
|
+
max-width: 100%;
|
|
153
|
+
width: fit-content;
|
|
154
|
+
box-sizing: border-box;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/* ==============================================================================
|
|
158
|
+
MONTHS CONTAINER (MULTI-MONTH LAYOUT)
|
|
159
|
+
============================================================================== */
|
|
160
|
+
|
|
161
|
+
.drp-date-picker__months {
|
|
162
|
+
display: flex;
|
|
163
|
+
gap: var(--drp-spacing-lg);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/* Allow wrapping for inline mode on small screens */
|
|
167
|
+
.drp-date-picker--inline .drp-date-picker__months {
|
|
168
|
+
flex-wrap: wrap;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/* Grid layout mode */
|
|
172
|
+
.drp-date-picker__months--grid {
|
|
173
|
+
display: grid;
|
|
174
|
+
grid-template-columns: repeat(var(--drp-grid-columns, 3), minmax(0, 1fr));
|
|
175
|
+
grid-template-rows: repeat(var(--drp-grid-rows, 2), auto);
|
|
176
|
+
gap: var(--drp-spacing-lg);
|
|
177
|
+
width: 100%;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/* Responsive breakpoints for grid */
|
|
181
|
+
@media (max-width: 1200px) {
|
|
182
|
+
.drp-date-picker__months--grid {
|
|
183
|
+
grid-template-columns: repeat(min(var(--drp-grid-columns, 3), 3), minmax(0, 1fr));
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
@media (max-width: 768px) {
|
|
188
|
+
.drp-date-picker__months--grid {
|
|
189
|
+
grid-template-columns: repeat(min(var(--drp-grid-columns, 3), 2), minmax(0, 1fr));
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
@media (max-width: 480px) {
|
|
194
|
+
.drp-date-picker__months--grid {
|
|
195
|
+
grid-template-columns: minmax(0, 1fr);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/* ==============================================================================
|
|
200
|
+
INDIVIDUAL MONTH CONTAINER
|
|
201
|
+
============================================================================== */
|
|
202
|
+
|
|
203
|
+
.drp-date-picker__month {
|
|
204
|
+
flex: 1;
|
|
205
|
+
min-width: var(--drp-month-min-width);
|
|
206
|
+
/* Make month a flex column container so calendar-container can fill vertical space */
|
|
207
|
+
display: flex;
|
|
208
|
+
flex-direction: column;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/* Allow shrinking for inline mode */
|
|
212
|
+
.drp-date-picker--inline .drp-date-picker__month {
|
|
213
|
+
min-width: var(--drp-month-min-width-inline);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/* Grid layout: remove min-width to allow proper grid sizing */
|
|
217
|
+
.drp-date-picker__months--grid .drp-date-picker__month {
|
|
218
|
+
min-width: 0;
|
|
219
|
+
width: 100%;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/* Calendar container for swapping between calendar grid and rolling selector */
|
|
223
|
+
.drp-date-picker__calendar-container {
|
|
224
|
+
position: relative; /* Establishes containing block for absolute positioning */
|
|
225
|
+
/* Fill available vertical space in month container */
|
|
226
|
+
flex: 1;
|
|
227
|
+
display: flex;
|
|
228
|
+
flex-direction: column;
|
|
229
|
+
min-height: 0; /* Allow flex item to shrink below content size if needed */
|
|
230
|
+
/* Calendar grid (weekdays + days) determines minimum size
|
|
231
|
+
Rolling selector overlays absolutely and fills this expanded space */
|
|
232
|
+
}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
/* ==============================================================================
|
|
2
|
+
DATE RANGE PICKER - CALENDAR GRID
|
|
3
|
+
==============================================================================
|
|
4
|
+
Weekday labels, days grid, and individual day cells with all states */
|
|
5
|
+
|
|
6
|
+
/* ==============================================================================
|
|
7
|
+
WEEKDAY LABELS
|
|
8
|
+
============================================================================== */
|
|
9
|
+
|
|
10
|
+
.drp-date-picker__weekdays {
|
|
11
|
+
display: grid;
|
|
12
|
+
grid-template-columns: repeat(7, 1fr);
|
|
13
|
+
gap: var(--drp-spacing-xs);
|
|
14
|
+
margin-bottom: var(--drp-spacing-sm);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.drp-date-picker__weekday {
|
|
18
|
+
text-align: center;
|
|
19
|
+
font-size: var(--drp-font-size-xs);
|
|
20
|
+
font-weight: var(--drp-font-weight-semibold);
|
|
21
|
+
color: var(--drp-weekday-color);
|
|
22
|
+
padding: var(--drp-spacing-xs);
|
|
23
|
+
text-transform: uppercase;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/* ==============================================================================
|
|
27
|
+
DAYS GRID
|
|
28
|
+
============================================================================== */
|
|
29
|
+
|
|
30
|
+
.drp-date-picker__days {
|
|
31
|
+
display: flex;
|
|
32
|
+
flex-direction: column;
|
|
33
|
+
gap: var(--drp-spacing-xs);
|
|
34
|
+
margin-bottom: var(--drp-spacing-md);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.drp-date-picker__date-row {
|
|
38
|
+
display: grid;
|
|
39
|
+
grid-template-columns: repeat(7, 1fr);
|
|
40
|
+
gap: var(--drp-spacing-xs);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/* ==============================================================================
|
|
44
|
+
DAY CELLS
|
|
45
|
+
============================================================================== */
|
|
46
|
+
|
|
47
|
+
.drp-date-picker__day {
|
|
48
|
+
aspect-ratio: 1;
|
|
49
|
+
display: flex;
|
|
50
|
+
align-items: center;
|
|
51
|
+
justify-content: center;
|
|
52
|
+
font-size: var(--drp-font-size-sm);
|
|
53
|
+
color: var(--drp-day-text-color);
|
|
54
|
+
border-radius: var(--drp-border-radius-sm);
|
|
55
|
+
cursor: pointer;
|
|
56
|
+
border: var(--drp-day-border-width) solid var(--drp-day-border-color);
|
|
57
|
+
position: relative; /* For absolute positioning of labels */
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.drp-date-picker__day:hover:not(.drp-date-picker__day--disabled):not(.drp-date-picker__day--other-month) {
|
|
61
|
+
background-color: var(--drp-day-bg-hover);
|
|
62
|
+
border-color: var(--drp-day-border-hover);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/* --------------------------------------
|
|
66
|
+
Today
|
|
67
|
+
-------------------------------------- */
|
|
68
|
+
.drp-date-picker__day--today {
|
|
69
|
+
border-color: var(--drp-day-today-border);
|
|
70
|
+
font-weight: var(--drp-font-weight-semibold);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/* --------------------------------------
|
|
74
|
+
Selected
|
|
75
|
+
-------------------------------------- */
|
|
76
|
+
.drp-date-picker__day--selected {
|
|
77
|
+
background-color: var(--drp-day-selected-bg);
|
|
78
|
+
color: var(--drp-day-selected-color);
|
|
79
|
+
font-weight: var(--drp-font-weight-semibold);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.drp-date-picker__day--selected:hover {
|
|
83
|
+
background-color: var(--drp-day-selected-bg-hover);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/* --------------------------------------
|
|
87
|
+
Focused (keyboard navigation)
|
|
88
|
+
-------------------------------------- */
|
|
89
|
+
.drp-date-picker__day--focused {
|
|
90
|
+
outline: var(--drp-day-focused-outline-width) solid var(--drp-day-focused-outline);
|
|
91
|
+
outline-offset: var(--drp-day-focused-outline-offset);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/* --------------------------------------
|
|
95
|
+
Disabled
|
|
96
|
+
-------------------------------------- */
|
|
97
|
+
.drp-date-picker__day--disabled {
|
|
98
|
+
color: var(--drp-day-disabled-color);
|
|
99
|
+
opacity: var(--drp-opacity-disabled);
|
|
100
|
+
cursor: not-allowed;
|
|
101
|
+
position: relative;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/* Diagonal hatched pattern overlay */
|
|
105
|
+
.drp-date-picker__day--disabled::before {
|
|
106
|
+
content: '';
|
|
107
|
+
position: absolute;
|
|
108
|
+
top: 0;
|
|
109
|
+
left: 0;
|
|
110
|
+
right: 0;
|
|
111
|
+
bottom: 0;
|
|
112
|
+
background-image: repeating-linear-gradient(
|
|
113
|
+
45deg,
|
|
114
|
+
rgba(0, 0, 0, var(--drp-day-disabled-pattern-opacity)) 0px,
|
|
115
|
+
rgba(0, 0, 0, var(--drp-day-disabled-pattern-opacity)) 1px,
|
|
116
|
+
transparent 1px,
|
|
117
|
+
transparent 6px
|
|
118
|
+
);
|
|
119
|
+
border-radius: var(--drp-border-radius-sm);
|
|
120
|
+
pointer-events: none;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.drp-date-picker__day--disabled:hover {
|
|
124
|
+
background-color: transparent;
|
|
125
|
+
border-color: transparent;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/* Disabled day that is also in range - show range background behind disabled overlay */
|
|
129
|
+
.drp-date-picker__day--disabled.drp-date-picker__day--in-range {
|
|
130
|
+
background-color: color-mix(in srgb, var(--drp-day-range-bg) calc(var(--drp-day-in-range-bg-opacity) * 100%), transparent);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/* --------------------------------------
|
|
134
|
+
Other month days (previous/next month)
|
|
135
|
+
-------------------------------------- */
|
|
136
|
+
.drp-date-picker__day--other-month {
|
|
137
|
+
color: var(--drp-day-other-month-color);
|
|
138
|
+
opacity: var(--drp-opacity-other-month);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/* Reset opacity when other-month days are part of range selection */
|
|
142
|
+
.drp-date-picker__day--other-month.drp-date-picker__day--range-start,
|
|
143
|
+
.drp-date-picker__day--other-month.drp-date-picker__day--range-end,
|
|
144
|
+
.drp-date-picker__day--other-month.drp-date-picker__day--in-range,
|
|
145
|
+
.drp-date-picker__day--other-month.drp-date-picker__day--drag-preview {
|
|
146
|
+
opacity: 1;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/* --------------------------------------
|
|
150
|
+
Range selection states
|
|
151
|
+
-------------------------------------- */
|
|
152
|
+
.drp-date-picker__day--range-start,
|
|
153
|
+
.drp-date-picker__day--range-end {
|
|
154
|
+
background-color: var(--drp-day-range-bg);
|
|
155
|
+
color: var(--drp-day-range-color);
|
|
156
|
+
font-weight: var(--drp-font-weight-semibold);
|
|
157
|
+
cursor: grab;
|
|
158
|
+
user-select: none;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.drp-date-picker__day--range-start:active,
|
|
162
|
+
.drp-date-picker__day--range-end:active {
|
|
163
|
+
cursor: grabbing;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.drp-date-picker__day--in-range {
|
|
167
|
+
background-color: color-mix(in srgb, var(--drp-day-range-bg) calc(var(--drp-day-in-range-bg-opacity) * 100%), transparent);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
.drp-date-picker__day--in-range:hover {
|
|
171
|
+
background-color: color-mix(in srgb, var(--drp-day-range-bg) calc(var(--drp-day-in-range-hover-bg-opacity) * 100%), transparent);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/* --------------------------------------
|
|
175
|
+
Dragging states
|
|
176
|
+
-------------------------------------- */
|
|
177
|
+
.drp-date-picker__day--dragging {
|
|
178
|
+
cursor: grabbing !important;
|
|
179
|
+
opacity: var(--drp-opacity-dragging);
|
|
180
|
+
transform: scale(var(--drp-day-dragging-scale));
|
|
181
|
+
transition: transform var(--drp-transition-fast) var(--drp-easing-snappy);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
.drp-date-picker__day--drag-preview {
|
|
185
|
+
background-color: color-mix(in srgb, var(--drp-day-range-bg) calc(var(--drp-day-drag-preview-bg-opacity) * 100%), transparent);
|
|
186
|
+
border: var(--drp-day-border-width) var(--drp-day-drag-preview-border-style) var(--drp-day-range-bg);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
.drp-date-picker__day--drag-preview.drp-date-picker__day--range-start,
|
|
190
|
+
.drp-date-picker__day--drag-preview.drp-date-picker__day--range-end {
|
|
191
|
+
background-color: color-mix(in srgb, var(--drp-day-range-bg) calc(var(--drp-day-drag-preview-edge-bg-opacity) * 100%), transparent);
|
|
192
|
+
color: var(--drp-day-range-color);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.drp-date-picker__day--drag-invalid {
|
|
196
|
+
background-color: color-mix(in srgb, var(--drp-day-drag-invalid-bg) calc(var(--drp-day-drag-invalid-bg-opacity) * 100%), transparent) !important;
|
|
197
|
+
border-color: var(--drp-day-drag-invalid-bg) !important;
|
|
198
|
+
border-style: dashed !important;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/* ==============================================================================
|
|
202
|
+
SPECIAL DATE HIGHLIGHTING (EXAMPLES)
|
|
203
|
+
==============================================================================
|
|
204
|
+
These are example classes showing how to highlight special dates.
|
|
205
|
+
Applications should define their own classes with appropriate colors.
|
|
206
|
+
The .holiday and .event classes here use component colors as examples only. */
|
|
207
|
+
|
|
208
|
+
.drp-date-picker__day.holiday {
|
|
209
|
+
background-color: color-mix(in srgb, var(--drp-holiday-color) calc(var(--drp-holiday-bg-opacity) * 100%), transparent);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
.drp-date-picker__day.holiday:hover:not(.drp-date-picker__day--disabled) {
|
|
213
|
+
background-color: color-mix(in srgb, var(--drp-holiday-color) calc(var(--drp-holiday-hover-bg-opacity) * 100%), transparent);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
.drp-date-picker__day.event {
|
|
217
|
+
background-color: color-mix(in srgb, var(--drp-event-color) calc(var(--drp-event-bg-opacity) * 100%), transparent);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
.drp-date-picker__day.event:hover:not(.drp-date-picker__day--disabled) {
|
|
221
|
+
background-color: color-mix(in srgb, var(--drp-event-color) calc(var(--drp-event-hover-bg-opacity) * 100%), transparent);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/* ==============================================================================
|
|
225
|
+
ROLLING SELECTOR - DISABLED ITEMS
|
|
226
|
+
==============================================================================
|
|
227
|
+
Styling for disabled years/months in the rolling selector
|
|
228
|
+
(e.g., when outside rollingYearRange/rollingMonthRange or minDate/maxDate) */
|
|
229
|
+
|
|
230
|
+
.drp-date-picker__rolling-item--disabled {
|
|
231
|
+
color: var(--drp-unified-rolling-disabled-color);
|
|
232
|
+
opacity: 0.4;
|
|
233
|
+
cursor: not-allowed;
|
|
234
|
+
pointer-events: none; /* Prevent clicking */
|
|
235
|
+
text-decoration: line-through;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
.drp-date-picker__rolling-item--disabled:hover {
|
|
239
|
+
background-color: transparent;
|
|
240
|
+
}
|