@keenmate/web-daterangepicker 1.7.0 → 1.8.1

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.
@@ -1,241 +0,0 @@
1
- // ==============================================================================
2
- // DATE RANGE PICKER - CALENDAR GRID
3
- // ==============================================================================
4
- // Weekday labels, days grid, and individual day cells with all states
5
-
6
- @use 'variables' as *;
7
-
8
- // ==============================================================================
9
- // WEEKDAY LABELS
10
- // ==============================================================================
11
-
12
- .drp-date-picker__weekdays {
13
- display: grid;
14
- grid-template-columns: repeat(7, 1fr);
15
- gap: var(--drp-spacing-xs);
16
- margin-bottom: var(--drp-spacing-sm);
17
- }
18
-
19
- .drp-date-picker__weekday {
20
- text-align: center;
21
- font-size: var(--drp-font-size-xs);
22
- font-weight: var(--drp-font-weight-semibold);
23
- color: var(--drp-weekday-color);
24
- padding: var(--drp-spacing-xs);
25
- text-transform: uppercase;
26
- }
27
-
28
- // ==============================================================================
29
- // DAYS GRID
30
- // ==============================================================================
31
-
32
- .drp-date-picker__days {
33
- display: flex;
34
- flex-direction: column;
35
- gap: var(--drp-spacing-xs);
36
- margin-bottom: var(--drp-spacing-md);
37
- }
38
-
39
- .drp-date-picker__date-row {
40
- display: grid;
41
- grid-template-columns: repeat(7, 1fr);
42
- gap: var(--drp-spacing-xs);
43
- }
44
-
45
- // ==============================================================================
46
- // DAY CELLS
47
- // ==============================================================================
48
-
49
- .drp-date-picker__day {
50
- aspect-ratio: 1;
51
- display: flex;
52
- align-items: center;
53
- justify-content: center;
54
- font-size: var(--drp-font-size-sm);
55
- color: var(--drp-day-text-color);
56
- border-radius: var(--drp-border-radius);
57
- cursor: pointer;
58
- border: $drp-day-border-width solid $drp-day-border-color;
59
- position: relative; // For absolute positioning of labels
60
-
61
- &:hover:not(.drp-date-picker__day--disabled):not(.drp-date-picker__day--other-month) {
62
- background-color: var(--drp-day-bg-hover);
63
- border-color: var(--drp-day-border-hover);
64
- }
65
-
66
- // --------------------------------------
67
- // Today
68
- // --------------------------------------
69
- &--today {
70
- border-color: var(--drp-day-today-border);
71
- font-weight: var(--drp-font-weight-semibold);
72
- }
73
-
74
- // --------------------------------------
75
- // Selected
76
- // --------------------------------------
77
- &--selected {
78
- background-color: var(--drp-day-selected-bg);
79
- color: var(--drp-day-selected-color);
80
- font-weight: var(--drp-font-weight-semibold);
81
-
82
- &:hover {
83
- background-color: var(--drp-day-selected-bg-hover);
84
- }
85
- }
86
-
87
- // --------------------------------------
88
- // Focused (keyboard navigation)
89
- // --------------------------------------
90
- &--focused {
91
- outline: $drp-day-focused-outline-width solid var(--drp-day-focused-outline);
92
- outline-offset: $drp-day-focused-outline-offset;
93
- }
94
-
95
- // --------------------------------------
96
- // Disabled
97
- // --------------------------------------
98
- &--disabled {
99
- color: var(--drp-day-disabled-color);
100
- opacity: $drp-day-disabled-opacity;
101
- cursor: not-allowed;
102
- position: relative;
103
-
104
- // Diagonal hatched pattern overlay
105
- &::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, $drp-day-disabled-pattern-opacity) 0px,
115
- rgba(0, 0, 0, $drp-day-disabled-pattern-opacity) 1px,
116
- transparent 1px,
117
- transparent 6px
118
- );
119
- border-radius: var(--drp-border-radius);
120
- pointer-events: none;
121
- }
122
-
123
- &: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--in-range {
130
- background-color: color-mix(in srgb, var(--drp-day-range-bg) $drp-day-in-range-bg-opacity * 100%, transparent);
131
- }
132
- }
133
-
134
- // --------------------------------------
135
- // Other month days (previous/next month)
136
- // --------------------------------------
137
- &--other-month {
138
- color: var(--drp-day-other-month-color);
139
- opacity: $drp-day-other-month-opacity;
140
-
141
- // Reset opacity when other-month days are part of range selection
142
- &.drp-date-picker__day--range-start,
143
- &.drp-date-picker__day--range-end,
144
- &.drp-date-picker__day--in-range,
145
- &.drp-date-picker__day--drag-preview {
146
- opacity: 1;
147
- }
148
- }
149
-
150
- // --------------------------------------
151
- // Range selection states
152
- // --------------------------------------
153
- &--range-start,
154
- &--range-end {
155
- background-color: var(--drp-day-range-bg);
156
- color: var(--drp-day-range-color);
157
- font-weight: var(--drp-font-weight-semibold);
158
- cursor: grab;
159
- user-select: none;
160
-
161
- &:active {
162
- cursor: grabbing;
163
- }
164
- }
165
-
166
- &--in-range {
167
- background-color: color-mix(in srgb, var(--drp-day-range-bg) $drp-day-in-range-bg-opacity * 100%, transparent);
168
-
169
- &:hover {
170
- background-color: color-mix(in srgb, var(--drp-day-range-bg) $drp-day-in-range-hover-bg-opacity * 100%, transparent);
171
- }
172
- }
173
-
174
- // --------------------------------------
175
- // Dragging states
176
- // --------------------------------------
177
- &--dragging {
178
- cursor: grabbing !important;
179
- opacity: $drp-day-dragging-opacity;
180
- transform: scale($drp-day-dragging-scale);
181
- transition: transform var(--drp-transition-fast) var(--drp-easing-snappy);
182
- }
183
-
184
- &--drag-preview {
185
- background-color: color-mix(in srgb, var(--drp-day-range-bg) $drp-day-drag-preview-bg-opacity * 100%, transparent);
186
- border: $drp-day-border-width $drp-day-drag-preview-border-style var(--drp-day-range-bg);
187
-
188
- &.drp-date-picker__day--range-start,
189
- &.drp-date-picker__day--range-end {
190
- background-color: color-mix(in srgb, var(--drp-day-range-bg) $drp-day-drag-preview-edge-bg-opacity * 100%, transparent);
191
- color: var(--drp-day-range-color);
192
- }
193
- }
194
-
195
- &--drag-invalid {
196
- background-color: color-mix(in srgb, $drp-day-drag-invalid-bg $drp-day-drag-invalid-bg-opacity * 100%, transparent) !important;
197
- border-color: $drp-day-drag-invalid-bg !important;
198
- border-style: dashed !important;
199
- }
200
- }
201
-
202
- // ==============================================================================
203
- // SPECIAL DATE HIGHLIGHTING (EXAMPLES)
204
- // ==============================================================================
205
- // These are example classes showing how to highlight special dates.
206
- // Applications should define their own classes with appropriate colors.
207
- // The .holiday and .event classes here use component colors as examples only.
208
-
209
- .drp-date-picker__day.holiday {
210
- background-color: color-mix(in srgb, $drp-color-error $drp-holiday-bg-opacity * 100%, transparent);
211
-
212
- &:hover:not(.drp-date-picker__day--disabled) {
213
- background-color: color-mix(in srgb, $drp-color-error $drp-holiday-hover-bg-opacity * 100%, transparent);
214
- }
215
- }
216
-
217
- .drp-date-picker__day.event {
218
- background-color: color-mix(in srgb, $drp-color-success $drp-event-bg-opacity * 100%, transparent);
219
-
220
- &:hover:not(.drp-date-picker__day--disabled) {
221
- background-color: color-mix(in srgb, $drp-color-success $drp-event-hover-bg-opacity * 100%, transparent);
222
- }
223
- }
224
-
225
- // ==============================================================================
226
- // ROLLING SELECTOR - DISABLED ITEMS
227
- // ==============================================================================
228
- // Styling for disabled years/months in the rolling selector
229
- // (e.g., when outside rollingYearRange/rollingMonthRange or minDate/maxDate)
230
-
231
- .drp-date-picker__rolling-item--disabled {
232
- color: var(--drp-unified-rolling-disabled-color);
233
- opacity: 0.4;
234
- cursor: not-allowed;
235
- pointer-events: none; // Prevent clicking
236
- text-decoration: line-through;
237
-
238
- &:hover {
239
- background-color: transparent;
240
- }
241
- }
@@ -1,370 +0,0 @@
1
- // ==============================================================================
2
- // DATE RANGE PICKER - HEADER & NAVIGATION
3
- // ==============================================================================
4
- // Month/year header, navigation buttons, and rolling selector
5
-
6
- @use 'variables' as *;
7
-
8
- // ==============================================================================
9
- // CALENDAR HEADER
10
- // ==============================================================================
11
-
12
- .drp-date-picker__header {
13
- display: flex;
14
- align-items: center;
15
- justify-content: space-between;
16
- margin-bottom: var(--drp-spacing-md);
17
- gap: var(--drp-spacing-sm);
18
-
19
- // Static header (used in unified navigation mode)
20
- &--static {
21
- justify-content: center;
22
-
23
- .drp-date-picker__month-year {
24
- cursor: default;
25
-
26
- &:hover {
27
- background-color: transparent;
28
- }
29
- }
30
- }
31
- }
32
-
33
- // ==============================================================================
34
- // MONTH/YEAR DISPLAY (CLICKABLE TO OPEN ROLLING SELECTOR)
35
- // ==============================================================================
36
-
37
- .drp-date-picker__month-year {
38
- flex: 1;
39
- text-align: center;
40
- font-weight: var(--drp-font-weight-semibold);
41
- font-size: var(--drp-font-size-base);
42
- color: var(--drp-header-text-color);
43
- padding: var(--drp-spacing-sm) var(--drp-spacing-md);
44
- border-radius: var(--drp-border-radius);
45
- cursor: pointer;
46
-
47
- &:hover {
48
- background-color: var(--drp-header-bg-hover);
49
- }
50
-
51
- &:active {
52
- background-color: var(--drp-header-bg-active);
53
- }
54
- }
55
-
56
- // ==============================================================================
57
- // NAVIGATION BUTTONS (PREVIOUS/NEXT MONTH)
58
- // ==============================================================================
59
-
60
- .drp-date-picker__nav {
61
- width: $drp-nav-size;
62
- height: $drp-nav-size;
63
- display: flex;
64
- align-items: center;
65
- justify-content: center;
66
- border: var(--drp-border-width-base) solid var(--drp-nav-border-color);
67
- border-radius: var(--drp-border-radius);
68
- background: transparent;
69
- cursor: pointer;
70
- font-size: var(--drp-font-size-lg);
71
- color: var(--drp-nav-text-color);
72
-
73
- &:hover {
74
- background-color: var(--drp-nav-bg-hover);
75
- border-color: var(--drp-nav-border-hover);
76
- }
77
-
78
- &:active {
79
- background-color: var(--drp-nav-bg-active);
80
- }
81
-
82
- // Disabled state
83
- &--disabled,
84
- &[disabled] {
85
- opacity: $drp-nav-opacity-disabled;
86
- cursor: not-allowed;
87
- pointer-events: none;
88
-
89
- &:hover {
90
- background-color: transparent;
91
- border-color: var(--drp-nav-border-color);
92
- }
93
- }
94
-
95
- &--prev::before {
96
- content: '‹';
97
- }
98
-
99
- &--next::before {
100
- content: '›';
101
- }
102
- }
103
-
104
- // ==============================================================================
105
- // ROLLING SELECTOR VIEW (MONTH/YEAR SELECTION)
106
- // ==============================================================================
107
-
108
- .drp-date-picker__rolling-selector {
109
- // Absolutely positioned to overlay calendar grid
110
- position: absolute;
111
- inset: 0; // Fill entire container from all edges
112
- display: none;
113
- z-index: 10; // Above calendar grid
114
-
115
- &.drp-date-picker__rolling-selector--visible {
116
- display: flex;
117
-
118
- // Hide calendar grid when rolling selector is visible
119
- ~ .drp-date-picker__weekdays,
120
- ~ .drp-date-picker__days {
121
- visibility: hidden; // Keeps elements in layout flow (maintains container height)
122
- }
123
- }
124
-
125
- gap: var(--drp-spacing-xs);
126
- }
127
-
128
- .drp-date-picker__rolling-list {
129
- flex: 1;
130
- min-width: 0; // Allow flex child to shrink below content size (enables ellipsis on items)
131
- height: 100%; // Fill parent height
132
- overflow-y: auto;
133
- border: var(--drp-border-width-base) solid var(--drp-rolling-border-color);
134
- border-radius: var(--drp-border-radius);
135
-
136
- // Flex layout to control child item sizing
137
- display: flex;
138
- flex-direction: column;
139
-
140
- // Smooth scrolling
141
- scroll-behavior: smooth;
142
-
143
- // Custom scrollbar
144
- &::-webkit-scrollbar {
145
- width: $drp-rolling-scrollbar-width;
146
- }
147
-
148
- &::-webkit-scrollbar-track {
149
- background: var(--drp-rolling-bg);
150
- }
151
-
152
- &::-webkit-scrollbar-thumb {
153
- background: var(--drp-rolling-scrollbar-thumb);
154
- border-radius: 3px;
155
-
156
- &:hover {
157
- background: var(--drp-rolling-scrollbar-thumb-hover);
158
- }
159
- }
160
- }
161
-
162
- .drp-date-picker__rolling-item {
163
- padding: #{$drp-rolling-item-padding-v} #{$drp-rolling-item-padding-h};
164
- cursor: pointer;
165
- font-size: #{$drp-rolling-item-font-size};
166
- min-height: $drp-rolling-item-min-height;
167
- flex-shrink: 0;
168
-
169
- // Flexbox for vertical and horizontal centering
170
- display: flex;
171
- align-items: center;
172
- justify-content: var(--drp-rolling-item-justify-content, #{$drp-rolling-item-justify-content});
173
-
174
- &:hover {
175
- background-color: var(--drp-rolling-item-bg-hover);
176
- }
177
-
178
- &--selected {
179
- background-color: var(--drp-rolling-item-bg-selected);
180
- color: var(--drp-rolling-item-color-selected);
181
- font-weight: $drp-rolling-item-font-weight-selected;
182
-
183
- &:hover {
184
- background-color: var(--drp-rolling-item-bg-selected-hover);
185
- }
186
- }
187
- }
188
-
189
- // Text wrapper for ellipsis support
190
- .drp-date-picker__rolling-item-text {
191
- // Text overflow handling for long month names
192
- overflow: hidden;
193
- text-overflow: ellipsis;
194
- white-space: nowrap;
195
- width: 100%;
196
- min-width: 0; // Allow flex child to shrink below content size
197
- }
198
-
199
- // ==============================================================================
200
- // UNIFIED NAVIGATION (MULTI-MONTH CALENDARS)
201
- // ==============================================================================
202
-
203
- // Unified header - appears above all months
204
- .drp-date-picker__unified-header {
205
- display: flex;
206
- align-items: center;
207
- justify-content: space-between;
208
- margin-bottom: var(--drp-spacing-lg);
209
- gap: var(--drp-spacing-sm);
210
- padding: 0 var(--drp-spacing-sm);
211
- }
212
-
213
- // Date range display in unified header (e.g., "Jan 2025 - Jun 2025")
214
- .drp-date-picker__unified-range {
215
- flex: 1;
216
- text-align: center;
217
- font-weight: var(--drp-font-weight-semibold);
218
- font-size: var(--drp-font-size-lg);
219
- color: var(--drp-unified-range-text-color);
220
- padding: var(--drp-spacing-sm) var(--drp-spacing-md);
221
- border-radius: var(--drp-border-radius);
222
- cursor: pointer;
223
-
224
- &:hover {
225
- background-color: var(--drp-unified-range-bg-hover);
226
- }
227
-
228
- &:active {
229
- background-color: var(--drp-unified-range-bg-active);
230
- }
231
-
232
- // Non-interactive state (when unifiedHeaderInteractive is false)
233
- &--static {
234
- cursor: default !important;
235
-
236
- &:hover {
237
- background-color: transparent;
238
- }
239
-
240
- &:active {
241
- background-color: transparent;
242
- }
243
- }
244
- }
245
-
246
- // Unified rolling selector - overlay for all months
247
- .drp-date-picker__unified-rolling-selector {
248
- position: absolute;
249
- // Position below unified header
250
- top: calc(var(--drp-spacing-lg) + var(--drp-spacing-lg) * 2);
251
- // Center horizontally
252
- left: 50%;
253
- transform: translateX(-50%);
254
-
255
- // Size constraints (responsive but limited)
256
- width: min(90%, 450px); // 90% of calendar width or 450px, whichever is smaller
257
- height: 350px;
258
- max-height: 350px;
259
-
260
- display: none;
261
- z-index: 100; // Above everything
262
- background: var(--drp-dropdown-background); // White background to cover calendar below
263
- gap: var(--drp-spacing-xs); // Match normal rolling selector gap
264
-
265
- &--visible {
266
- display: flex;
267
- }
268
-
269
- // Apply rolling list styles to child lists
270
- .drp-date-picker__rolling-list {
271
- flex: 1;
272
- min-width: 0;
273
- height: 100%;
274
- overflow-y: auto;
275
- border: var(--drp-border-width-base) solid var(--drp-rolling-border-color);
276
- border-radius: var(--drp-border-radius);
277
- display: flex;
278
- flex-direction: column;
279
- scroll-behavior: smooth;
280
-
281
- // Custom scrollbar
282
- &::-webkit-scrollbar {
283
- width: $drp-rolling-scrollbar-width;
284
- }
285
-
286
- &::-webkit-scrollbar-track {
287
- background: var(--drp-rolling-bg);
288
- }
289
-
290
- &::-webkit-scrollbar-thumb {
291
- background: var(--drp-rolling-scrollbar-thumb);
292
- border-radius: 3px;
293
-
294
- &:hover {
295
- background: var(--drp-rolling-scrollbar-thumb-hover);
296
- }
297
- }
298
- }
299
-
300
- // Apply rolling item styles to child items
301
- .drp-date-picker__rolling-item {
302
- padding: #{$drp-rolling-item-padding-v} #{$drp-rolling-item-padding-h};
303
- cursor: pointer;
304
- font-size: #{$drp-rolling-item-font-size};
305
- min-height: $drp-rolling-item-min-height;
306
- flex-shrink: 0;
307
- display: flex;
308
- align-items: center;
309
- justify-content: var(--drp-rolling-item-justify-content, #{$drp-rolling-item-justify-content});
310
-
311
- &:hover {
312
- background-color: var(--drp-rolling-item-bg-hover);
313
- }
314
-
315
- &--selected {
316
- background-color: var(--drp-rolling-item-bg-selected);
317
- color: var(--drp-rolling-item-color-selected);
318
- font-weight: $drp-rolling-item-font-weight-selected;
319
-
320
- &:hover {
321
- background-color: var(--drp-rolling-item-bg-selected-hover);
322
- }
323
- }
324
-
325
- &--disabled {
326
- color: var(--drp-unified-rolling-disabled-color);
327
- opacity: 0.4;
328
- cursor: not-allowed;
329
- }
330
- }
331
-
332
- // Text wrapper for ellipsis support
333
- .drp-date-picker__rolling-item-text {
334
- overflow: hidden;
335
- text-overflow: ellipsis;
336
- white-space: nowrap;
337
- width: 100%;
338
- min-width: 0;
339
- }
340
- }
341
-
342
- // When unified navigation is enabled, hide individual month headers nav buttons
343
- // but keep the month/year text visible (it becomes static display, not clickable)
344
- .drp-date-picker--unified-nav {
345
- .drp-date-picker__month {
346
- .drp-date-picker__header {
347
- // Hide nav buttons in individual month headers
348
- .drp-date-picker__nav {
349
- display: none;
350
- }
351
-
352
- // Make month/year display static (not clickable)
353
- .drp-date-picker__month-year {
354
- cursor: default;
355
- font-size: var(--drp-font-size-base);
356
- font-weight: var(--drp-font-weight-normal);
357
- color: var(--drp-unified-month-color);
358
-
359
- &:hover {
360
- background-color: transparent;
361
- }
362
- }
363
- }
364
-
365
- // Hide individual month rolling selectors
366
- .drp-date-picker__rolling-selector {
367
- display: none !important;
368
- }
369
- }
370
- }
@@ -1,39 +0,0 @@
1
- /**
2
- * Loading Overlay & Spinner Styles
3
- *
4
- * Used during async validation (e.g., when validateRangeCallback is processing).
5
- */
6
-
7
- @use 'variables' as *;
8
-
9
- .drp-date-picker__loading-overlay {
10
- position: absolute;
11
- top: 0;
12
- left: 0;
13
- right: 0;
14
- bottom: 0;
15
- background-color: var(--drp-loading-overlay-background);
16
- display: flex;
17
- align-items: center;
18
- justify-content: center;
19
- z-index: $drp-z-index-dropdown;
20
- border-radius: var(--drp-border-radius);
21
- }
22
-
23
- .drp-date-picker__loading-spinner {
24
- width: 40px;
25
- height: 40px;
26
- border: 4px solid var(--drp-loading-spinner-color);
27
- border-top-color: var(--drp-loading-spinner-accent);
28
- border-radius: 50%;
29
- animation: drp-spin 0.8s linear infinite;
30
- }
31
-
32
- @keyframes drp-spin {
33
- 0% {
34
- transform: rotate(0deg);
35
- }
36
- 100% {
37
- transform: rotate(360deg);
38
- }
39
- }
@@ -1,50 +0,0 @@
1
- // ==============================================================================
2
- // DATE RANGE PICKER - MODIFIERS
3
- // ==============================================================================
4
-
5
- @use 'variables' as *;
6
-
7
- // ==============================================================================
8
- // TRANSITIONS (OPT-IN FOR PERFORMANCE)
9
- // ==============================================================================
10
- // By default, no transitions for maximum performance
11
- // Add enable-transitions attribute to enable smooth animations
12
-
13
- .drp-date-picker.drp-transitions-enabled {
14
- // Badges - scale animation on hover
15
- .drp-date-picker__badge-cell {
16
- transition: transform var(--drp-transition-fast) var(--drp-easing-snappy);
17
- }
18
-
19
- // Nav buttons - background and border changes
20
- .drp-date-picker__nav {
21
- transition: background-color var(--drp-transition-fast) var(--drp-easing-snappy),
22
- border-color var(--drp-transition-fast) var(--drp-easing-snappy);
23
- }
24
-
25
- // Action buttons - background and border changes
26
- .drp-date-picker__action-btn {
27
- transition: background-color var(--drp-transition-fast) var(--drp-easing-snappy),
28
- border-color var(--drp-transition-fast) var(--drp-easing-snappy);
29
- }
30
-
31
- // Month/year selector - background change
32
- .drp-date-picker__month-year {
33
- transition: background-color var(--drp-transition-fast) var(--drp-easing-snappy);
34
- }
35
-
36
- // Rolling selector items - background change
37
- .drp-date-picker__rolling-item {
38
- transition: background-color var(--drp-transition-fast) var(--drp-easing-snappy);
39
- }
40
- }
41
-
42
- // ==============================================================================
43
- // INLINE MODE MODIFIER
44
- // ==============================================================================
45
-
46
- .drp-date-picker--inline {
47
- position: static;
48
- display: block;
49
- box-shadow: none;
50
- }