@keenmate/web-daterangepicker 1.11.0 → 1.13.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 +27 -2
- package/dist/style.css +1 -1
- package/dist/web-daterangepicker.js +1460 -1262
- package/dist/web-daterangepicker.umd.js +5 -5
- package/package.json +84 -79
- package/src/css/_base.css +285 -232
- package/src/css/_calendar-grid.css +14 -0
- package/src/css/_header-navigation.css +7 -0
- package/src/css/_modal.css +191 -0
- package/src/css/_summary-actions.css +12 -0
- package/src/css/_tooltips.css +37 -37
- package/src/css/_variables.css +25 -0
- package/src/css/main.css +2 -0
package/src/css/_base.css
CHANGED
|
@@ -1,232 +1,285 @@
|
|
|
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-bg);
|
|
18
|
-
border: var(--drp-input-border);
|
|
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: var(--drp-input-border-hover);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
.drp-input:focus {
|
|
38
|
-
outline: none;
|
|
39
|
-
border: var(--drp-input-border-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-bg-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:
|
|
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-bg);
|
|
131
|
-
border: var(--drp-border);
|
|
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
|
-
/*
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
.
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
/*
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
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-bg);
|
|
18
|
+
border: var(--drp-input-border);
|
|
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: var(--drp-input-border-hover);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.drp-input:focus {
|
|
38
|
+
outline: none;
|
|
39
|
+
border: var(--drp-input-border-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-bg-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: fixed;
|
|
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-bg);
|
|
131
|
+
border: var(--drp-border);
|
|
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
|
+
/* Non-inline pickers (floating + modal) use a flex column layout so that
|
|
142
|
+
the months area is the only scrollable region — header, summary, and
|
|
143
|
+
action bar stay anchored at the top/bottom regardless of how tall the
|
|
144
|
+
multi-month content is. Without this, when the calendar is taller than
|
|
145
|
+
its constrained height (modal max-height, or Floating UI's size
|
|
146
|
+
middleware in floating mode), the action buttons scroll out of view.
|
|
147
|
+
`min-height: 0` on the months area is required so it can shrink below
|
|
148
|
+
its intrinsic content size — flex defaults to `min-height: auto` which
|
|
149
|
+
prevents shrinking and breaks the inner scroll. */
|
|
150
|
+
.drp-date-picker:not(.drp-date-picker--inline) {
|
|
151
|
+
display: flex;
|
|
152
|
+
flex-direction: column;
|
|
153
|
+
overflow: hidden;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.drp-date-picker:not(.drp-date-picker--inline) > .drp-date-picker__months,
|
|
157
|
+
.drp-date-picker:not(.drp-date-picker--inline) > .drp-date-picker__months--grid {
|
|
158
|
+
flex: 1 1 auto;
|
|
159
|
+
min-height: 0;
|
|
160
|
+
overflow-y: auto;
|
|
161
|
+
/* Inline padding gives breathing room for visual decoration that
|
|
162
|
+
extends beyond the day-cell box: the focused-day outline (4px:
|
|
163
|
+
2px offset + 2px width) and the badge cell's hover scale(1.05).
|
|
164
|
+
Two reasons this matters:
|
|
165
|
+
1. Without the padding, first-column cells have their outline
|
|
166
|
+
clipped on the left.
|
|
167
|
+
2. `overflow-y: auto` silently coerces `overflow-x: visible` to
|
|
168
|
+
`auto`, so any pixel of horizontal overflow trips a scrollbar.
|
|
169
|
+
The badge scale on the rightmost cell would do exactly that. */
|
|
170
|
+
padding-inline: 4px;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
.drp-date-picker:not(.drp-date-picker--inline) > .drp-date-picker__unified-header,
|
|
174
|
+
.drp-date-picker:not(.drp-date-picker--inline) > .drp-date-picker__summary,
|
|
175
|
+
.drp-date-picker:not(.drp-date-picker--inline) > .drp-date-picker__actions {
|
|
176
|
+
flex-shrink: 0;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/* Per-month headers (month name + prev/next nav, or static text in unified
|
|
180
|
+
mode) stick to the top of the scrolling months area so they stay visible
|
|
181
|
+
as the user scrolls through days. For multi-month layouts in a single row,
|
|
182
|
+
all headers stick simultaneously and look like a continuous header bar.
|
|
183
|
+
For grid layouts, each row's headers stick when that row is being scrolled
|
|
184
|
+
through, then unstick once the row is fully past. */
|
|
185
|
+
.drp-date-picker:not(.drp-date-picker--inline) .drp-date-picker__month .drp-date-picker__header {
|
|
186
|
+
position: sticky;
|
|
187
|
+
top: 0;
|
|
188
|
+
background: var(--drp-dropdown-bg);
|
|
189
|
+
/* Above day cells (z-index: auto = 0) so the days scroll behind the header
|
|
190
|
+
instead of bleeding through it. */
|
|
191
|
+
z-index: 2;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/* Hide by default */
|
|
195
|
+
.drp-date-picker:not(.drp-date-picker--visible) {
|
|
196
|
+
display: none;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/* Inline mode modifier */
|
|
200
|
+
.drp-date-picker--inline {
|
|
201
|
+
position: relative !important;
|
|
202
|
+
display: block !important;
|
|
203
|
+
z-index: auto;
|
|
204
|
+
min-width: 0;
|
|
205
|
+
max-width: 100%;
|
|
206
|
+
width: fit-content;
|
|
207
|
+
box-sizing: border-box;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/* ==============================================================================
|
|
211
|
+
MONTHS CONTAINER (MULTI-MONTH LAYOUT)
|
|
212
|
+
============================================================================== */
|
|
213
|
+
|
|
214
|
+
.drp-date-picker__months {
|
|
215
|
+
display: flex;
|
|
216
|
+
gap: var(--drp-spacing-lg);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/* Allow wrapping for inline mode on small screens */
|
|
220
|
+
.drp-date-picker--inline .drp-date-picker__months {
|
|
221
|
+
flex-wrap: wrap;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/* Grid layout mode */
|
|
225
|
+
.drp-date-picker__months--grid {
|
|
226
|
+
display: grid;
|
|
227
|
+
grid-template-columns: repeat(var(--drp-grid-columns, 3), minmax(0, 1fr));
|
|
228
|
+
grid-template-rows: repeat(var(--drp-grid-rows, 2), auto);
|
|
229
|
+
gap: var(--drp-spacing-lg);
|
|
230
|
+
width: 100%;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/* Responsive breakpoints for grid */
|
|
234
|
+
@media (max-width: 1200px) {
|
|
235
|
+
.drp-date-picker__months--grid {
|
|
236
|
+
grid-template-columns: repeat(min(var(--drp-grid-columns, 3), 3), minmax(0, 1fr));
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
@media (max-width: 768px) {
|
|
241
|
+
.drp-date-picker__months--grid {
|
|
242
|
+
grid-template-columns: repeat(min(var(--drp-grid-columns, 3), 2), minmax(0, 1fr));
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
@media (max-width: 480px) {
|
|
247
|
+
.drp-date-picker__months--grid {
|
|
248
|
+
grid-template-columns: minmax(0, 1fr);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/* ==============================================================================
|
|
253
|
+
INDIVIDUAL MONTH CONTAINER
|
|
254
|
+
============================================================================== */
|
|
255
|
+
|
|
256
|
+
.drp-date-picker__month {
|
|
257
|
+
flex: 1;
|
|
258
|
+
min-width: var(--drp-month-min-width);
|
|
259
|
+
/* Make month a flex column container so calendar-container can fill vertical space */
|
|
260
|
+
display: flex;
|
|
261
|
+
flex-direction: column;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/* Allow shrinking for inline mode */
|
|
265
|
+
.drp-date-picker--inline .drp-date-picker__month {
|
|
266
|
+
min-width: var(--drp-month-min-width-inline);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/* Grid layout: remove min-width to allow proper grid sizing */
|
|
270
|
+
.drp-date-picker__months--grid .drp-date-picker__month {
|
|
271
|
+
min-width: 0;
|
|
272
|
+
width: 100%;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/* Calendar container for swapping between calendar grid and rolling selector */
|
|
276
|
+
.drp-date-picker__calendar-container {
|
|
277
|
+
position: relative; /* Establishes containing block for absolute positioning */
|
|
278
|
+
/* Fill available vertical space in month container */
|
|
279
|
+
flex: 1;
|
|
280
|
+
display: flex;
|
|
281
|
+
flex-direction: column;
|
|
282
|
+
min-height: 0; /* Allow flex item to shrink below content size if needed */
|
|
283
|
+
/* Calendar grid (weekdays + days) determines minimum size
|
|
284
|
+
Rolling selector overlays absolutely and fills this expanded space */
|
|
285
|
+
}
|
|
@@ -206,6 +206,20 @@
|
|
|
206
206
|
border-style: dashed !important;
|
|
207
207
|
}
|
|
208
208
|
|
|
209
|
+
/* --------------------------------------
|
|
210
|
+
Hover preview (range mode, half-selected state)
|
|
211
|
+
Paints the would-be range live as the user moves the mouse looking for an
|
|
212
|
+
end date. Quieter than drag-preview by design: this is exploratory, not
|
|
213
|
+
committed action.
|
|
214
|
+
-------------------------------------- */
|
|
215
|
+
.drp-date-picker__day--hover-preview {
|
|
216
|
+
background-color: color-mix(in srgb, var(--drp-day-range-bg) calc(var(--drp-day-hover-preview-bg-opacity) * 100%), transparent);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
.drp-date-picker__day--hover-preview-invalid {
|
|
220
|
+
background-color: color-mix(in srgb, var(--drp-day-drag-invalid-bg) calc(var(--drp-day-hover-preview-invalid-bg-opacity) * 100%), transparent);
|
|
221
|
+
}
|
|
222
|
+
|
|
209
223
|
/* --------------------------------------
|
|
210
224
|
Invalid range states (showInvalidRange)
|
|
211
225
|
Used when beforeDateSelectCallback returns { action: 'restore', showInvalidRange: true }
|
|
@@ -127,7 +127,14 @@
|
|
|
127
127
|
flex: 1;
|
|
128
128
|
min-width: 0; /* Allow flex child to shrink below content size (enables ellipsis on items) */
|
|
129
129
|
height: 100%; /* Fill parent height */
|
|
130
|
+
/* Without border-box, the 1px top+bottom border pushes the rendered height to
|
|
131
|
+
100% + 2px, overflowing the rolling-selector container and overlapping the
|
|
132
|
+
elements below it. */
|
|
133
|
+
box-sizing: border-box;
|
|
130
134
|
overflow-y: auto;
|
|
135
|
+
/* Prevent scroll chaining: when the user reaches the top/bottom of this list,
|
|
136
|
+
the wheel/touch event would otherwise bubble up and scroll the page. */
|
|
137
|
+
overscroll-behavior: contain;
|
|
131
138
|
border: var(--drp-rolling-border);
|
|
132
139
|
border-radius: var(--drp-border-radius-lg);
|
|
133
140
|
/* Flex layout to control child item sizing */
|