@keenmate/web-daterangepicker 1.0.0-rc01 → 1.0.0-rc03
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 +264 -0
- package/dist/date-range-picker.js +2633 -1348
- package/dist/date-range-picker.umd.js +28 -26
- package/dist/style.css +1 -1
- package/package.json +12 -3
- package/src/scss/_badges.scss +72 -0
- package/src/scss/_base.scss +171 -0
- package/src/scss/_calendar-grid.scss +219 -0
- package/src/scss/_header-navigation.scss +164 -0
- package/src/scss/_loading.scss +39 -0
- package/src/scss/_modifiers.scss +367 -0
- package/src/scss/_summary-actions.scss +87 -0
- package/src/scss/_tooltips.scss +39 -0
- package/src/scss/_variables.scss +349 -0
- package/src/scss/main.scss +30 -0
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@charset "UTF-8";:root{--drp-card-bg: #ffffff;--drp-border-color: #e5e7eb;--drp-primary-bg: #f3f4f6;--drp-primary-bg-hover: #e5e7eb;--drp-accent-color: #3b82f6;--drp-accent-color-hover: #2563eb;--drp-text-primary: #111827;--drp-text-secondary: #6b7280;--drp-spacing-xs: .25rem;--drp-spacing-sm: .5rem;--drp-spacing-md: 1rem;--drp-spacing-lg: 1.5rem;--drp-spacing-xl: 2rem;--drp-font-size-2xs: .625rem;--drp-font-size-xs: .75rem;--drp-font-size-sm: .875rem;--drp-font-size-base: 1rem;--drp-font-size-lg: 1.125rem;--drp-font-size-xl: 1.25rem;--drp-font-size-2xl: 1.5rem;--drp-font-weight-medium: 500;--drp-font-weight-semibold: 600;--drp-border-width-base: 1px;--drp-border-radius: .375rem;--drp-shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--drp-transition-fast: .15s;--drp-easing-snappy: cubic-bezier(.4, 0, .2, 1);--drp-input-padding-h: .75rem}.pa-date-picker-input{position:relative;cursor:pointer}.pa-date-picker-input:after{content:"📅";position:absolute;right:var(--drp-input-padding-h);top:50%;transform:translateY(-50%);pointer-events:none;opacity:.6}.pa-date-picker{position:absolute;z-index:9500;background:var(--drp-card-bg);border:var(--drp-border-width-base) solid var(--drp-border-color);border-radius:var(--drp-border-radius);box-shadow:var(--drp-shadow-xl);padding:var(--drp-spacing-md);min-width:280px;-webkit-user-select:none;user-select:none}.pa-date-picker:not(.pa-date-picker--visible){display:none}.pa-date-picker__months{display:flex;gap:var(--drp-spacing-lg)}.pa-date-picker__month{flex:1;min-width:280px}.pa-date-picker__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--drp-spacing-md);gap:var(--drp-spacing-sm)}.pa-date-picker__month-year{flex:1;text-align:center;font-weight:var(--drp-font-weight-semibold);font-size:var(--drp-font-size-base);padding:var(--drp-spacing-sm) var(--drp-spacing-md);border-radius:var(--drp-border-radius);cursor:pointer;transition:background-color var(--drp-transition-fast) var(--drp-easing-snappy)}.pa-date-picker__month-year:hover{background-color:var(--drp-primary-bg)}.pa-date-picker__month-year:active{background-color:var(--drp-primary-bg-hover)}.pa-date-picker__nav{width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;border:var(--drp-border-width-base) solid var(--drp-border-color);border-radius:var(--drp-border-radius);background:transparent;cursor:pointer;transition:all var(--drp-transition-fast) var(--drp-easing-snappy);font-size:var(--drp-font-size-lg);color:var(--drp-text-primary)}.pa-date-picker__nav:hover{background-color:var(--drp-primary-bg);border-color:var(--drp-accent-color)}.pa-date-picker__nav:active{background-color:var(--drp-primary-bg-hover)}.pa-date-picker__nav--prev:before{content:"‹"}.pa-date-picker__nav--next:before{content:"›"}.pa-date-picker__rolling-selector{display:none}.pa-date-picker__rolling-selector.pa-date-picker__rolling-selector--visible{display:flex}.pa-date-picker__rolling-selector.pa-date-picker__rolling-selector--visible~.pa-date-picker__weekdays,.pa-date-picker__rolling-selector.pa-date-picker__rolling-selector--visible~.pa-date-picker__days{display:none}.pa-date-picker__rolling-selector{gap:var(--drp-spacing-md);margin-bottom:var(--drp-spacing-md)}.pa-date-picker__rolling-list{flex:1;height:100%;overflow-y:auto;border:var(--drp-border-width-base) solid var(--drp-border-color);border-radius:var(--drp-border-radius);scroll-behavior:smooth}.pa-date-picker__rolling-list::-webkit-scrollbar{width:6px}.pa-date-picker__rolling-list::-webkit-scrollbar-track{background:var(--drp-primary-bg)}.pa-date-picker__rolling-list::-webkit-scrollbar-thumb{background:var(--drp-border-color);border-radius:3px}.pa-date-picker__rolling-list::-webkit-scrollbar-thumb:hover{background:var(--drp-accent-color)}.pa-date-picker__rolling-item{padding:var(--drp-spacing-sm) var(--drp-spacing-md);text-align:center;cursor:pointer;font-size:var(--drp-font-size-sm);transition:background-color var(--drp-transition-fast) var(--drp-easing-snappy)}.pa-date-picker__rolling-item:hover{background-color:var(--drp-primary-bg)}.pa-date-picker__rolling-item--selected{background-color:var(--drp-accent-color);color:#fff;font-weight:var(--drp-font-weight-semibold)}.pa-date-picker__rolling-item--selected:hover{background-color:var(--drp-accent-color-hover)}.pa-date-picker__weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--drp-spacing-xs);margin-bottom:var(--drp-spacing-sm)}.pa-date-picker__weekday{text-align:center;font-size:var(--drp-font-size-xs);font-weight:var(--drp-font-weight-semibold);color:var(--drp-text-secondary);padding:var(--drp-spacing-xs);text-transform:uppercase}.pa-date-picker__days{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--drp-spacing-xs);margin-bottom:var(--drp-spacing-md)}.pa-date-picker__day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:var(--drp-font-size-sm);border-radius:var(--drp-border-radius);cursor:pointer;transition:all var(--drp-transition-fast) var(--drp-easing-snappy);border:2px solid transparent}.pa-date-picker__day:hover:not(.pa-date-picker__day--disabled):not(.pa-date-picker__day--other-month){background-color:var(--drp-primary-bg);border-color:var(--drp-accent-color)}.pa-date-picker__day--today{border-color:var(--drp-accent-color);font-weight:var(--drp-font-weight-semibold)}.pa-date-picker__day--selected{background-color:var(--drp-accent-color);color:#fff;font-weight:var(--drp-font-weight-semibold)}.pa-date-picker__day--selected:hover{background-color:var(--drp-accent-color-hover)}.pa-date-picker__day--focused{outline:2px solid var(--drp-accent-color);outline-offset:2px}.pa-date-picker__day--disabled{color:var(--drp-text-secondary);opacity:.4;cursor:not-allowed}.pa-date-picker__day--disabled:hover{background-color:transparent;border-color:transparent}.pa-date-picker__day--other-month{color:var(--drp-text-secondary);opacity:.5}.pa-date-picker__day--other-month.pa-date-picker__day--range-start,.pa-date-picker__day--other-month.pa-date-picker__day--range-end,.pa-date-picker__day--other-month.pa-date-picker__day--in-range,.pa-date-picker__day--other-month.pa-date-picker__day--drag-preview{opacity:1}.pa-date-picker__day--range-start,.pa-date-picker__day--range-end{background-color:var(--drp-accent-color);color:#fff;font-weight:var(--drp-font-weight-semibold);cursor:grab;-webkit-user-select:none;user-select:none}.pa-date-picker__day--range-start:active,.pa-date-picker__day--range-end:active{cursor:grabbing}.pa-date-picker__day--in-range{background-color:color-mix(in srgb,var(--drp-accent-color) 15%,transparent)}.pa-date-picker__day--in-range:hover{background-color:color-mix(in srgb,var(--drp-accent-color) 25%,transparent)}.pa-date-picker__day--dragging{cursor:grabbing!important;opacity:.7;transform:scale(1.1);transition:transform var(--drp-transition-fast) var(--drp-easing-snappy)}.pa-date-picker__day--drag-preview{background-color:color-mix(in srgb,var(--drp-accent-color) 30%,transparent);border:2px dashed var(--drp-accent-color)}.pa-date-picker__day--drag-preview.pa-date-picker__day--range-start,.pa-date-picker__day--drag-preview.pa-date-picker__day--range-end{background-color:color-mix(in srgb,var(--drp-accent-color) 60%,transparent);color:#fff}.pa-date-picker__summary{text-align:center;padding:var(--drp-spacing-md);border-top:var(--drp-border-width-base) solid var(--drp-border-color);font-size:var(--drp-font-size-sm);color:var(--drp-text-secondary)}.pa-date-picker__summary--visible{display:block}.pa-date-picker__summary--hidden{display:none}.pa-date-picker__summary-count{font-weight:var(--drp-font-weight-semibold);color:var(--drp-accent-color);font-size:var(--drp-font-size-base)}.pa-date-picker__actions{display:flex;gap:var(--drp-spacing-sm);justify-content:space-between;padding-top:var(--drp-spacing-sm);border-top:var(--drp-border-width-base) solid var(--drp-border-color)}.pa-date-picker__button{flex:1;padding:var(--drp-spacing-sm) var(--drp-spacing-md);border:var(--drp-border-width-base) solid var(--drp-border-color);border-radius:var(--drp-border-radius);background:transparent;cursor:pointer;font-size:var(--drp-font-size-sm);font-weight:var(--drp-font-weight-medium);transition:all var(--drp-transition-fast) var(--drp-easing-snappy)}.pa-date-picker__button:hover{background-color:var(--drp-primary-bg);border-color:var(--drp-accent-color)}.pa-date-picker__button--today{color:var(--drp-accent-color)}.pa-date-picker__button--clear{color:var(--drp-text-secondary)}.pa-date-picker__button--apply{background-color:var(--drp-accent-color);color:#fff;border-color:var(--drp-accent-color)}.pa-date-picker__button--apply:hover{background-color:var(--drp-accent-color-hover)}.pa-date-picker__button--cancel{color:var(--drp-text-secondary)}.pa-date-picker--xs{padding:var(--drp-spacing-sm);min-width:240px}.pa-date-picker--xs .pa-date-picker__month-year{font-size:var(--drp-font-size-xs);padding:var(--drp-spacing-xs) var(--drp-spacing-sm)}.pa-date-picker--xs .pa-date-picker__nav{width:1.5rem;height:1.5rem;font-size:var(--drp-font-size-sm)}.pa-date-picker--xs .pa-date-picker__weekday{font-size:var(--drp-font-size-2xs)}.pa-date-picker--xs .pa-date-picker__day{font-size:var(--drp-font-size-xs)}.pa-date-picker--sm{padding:var(--drp-spacing-sm);min-width:260px}.pa-date-picker--sm .pa-date-picker__month-year{font-size:var(--drp-font-size-sm);padding:var(--drp-spacing-xs) var(--drp-spacing-sm)}.pa-date-picker--sm .pa-date-picker__nav{width:1.75rem;height:1.75rem;font-size:var(--drp-font-size-base)}.pa-date-picker--sm .pa-date-picker__day{font-size:var(--drp-font-size-xs)}.pa-date-picker--lg{padding:var(--drp-spacing-lg);min-width:320px}.pa-date-picker--lg .pa-date-picker__month-year{font-size:var(--drp-font-size-lg);padding:var(--drp-spacing-md) var(--drp-spacing-lg)}.pa-date-picker--lg .pa-date-picker__nav{width:2.5rem;height:2.5rem;font-size:var(--drp-font-size-xl)}.pa-date-picker--lg .pa-date-picker__day{font-size:var(--drp-font-size-base)}.pa-date-picker--xl{padding:var(--drp-spacing-xl);min-width:360px}.pa-date-picker--xl .pa-date-picker__month-year{font-size:var(--drp-font-size-xl);padding:var(--drp-spacing-lg) var(--drp-spacing-xl)}.pa-date-picker--xl .pa-date-picker__nav{width:3rem;height:3rem;font-size:var(--drp-font-size-2xl)}.pa-date-picker--xl .pa-date-picker__day{font-size:var(--drp-font-size-lg)}.pa-date-picker--inline{position:static;display:block;box-shadow:none}
|
|
1
|
+
@charset "UTF-8";:host{--drp-card-bg: #ffffff;--drp-border-color: #e5e7eb;--drp-primary-bg: #f3f4f6;--drp-primary-bg-hover: #e5e7eb;--drp-accent-color: #3b82f6;--drp-accent-color-hover: #2563eb;--drp-text-primary: #111827;--drp-text-secondary: #6b7280;--drp-accent-text-color: #ffffff;--drp-button-text-color: #ffffff;--drp-spacing-xs: .25rem;--drp-spacing-sm: .5rem;--drp-spacing-md: 1rem;--drp-spacing-lg: 1.5rem;--drp-spacing-xl: 2rem;--drp-font-size-2xs: .625rem;--drp-font-size-xs: .75rem;--drp-font-size-sm: .875rem;--drp-font-size-base: 1rem;--drp-font-size-lg: 1.125rem;--drp-font-size-xl: 1.25rem;--drp-font-size-2xl: 1.5rem;--drp-font-weight-medium: 500;--drp-font-weight-semibold: 600;--drp-border-width-base: 1px;--drp-border-radius: .375rem;--drp-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 8px 10px -6px rgba(0, 0, 0, .1);--drp-transition-fast: .15s;--drp-easing-snappy: cubic-bezier(.4, 0, .2, 1);--drp-input-padding-h: .75rem;--drp-grid-columns: 3;--drp-grid-rows: 2}.drp-date-picker-input{position:relative;cursor:pointer}.drp-date-picker-input:after{content:"📅";position:absolute;right:var(--drp-input-padding-h);top:50%;transform:translateY(-50%);pointer-events:none;opacity:.6}.drp-date-picker{position:absolute;z-index:9500;background:var(--drp-card-bg);border:var(--drp-border-width-base) solid var(--drp-border-color);border-radius:var(--drp-border-radius);box-shadow:var(--drp-shadow-xl);padding:var(--drp-spacing-md);min-width:280px;max-width:calc(100vw - 2rem);box-sizing:border-box;-webkit-user-select:none;user-select:none}.drp-date-picker:not(.drp-date-picker--visible){display:none}.drp-date-picker--inline{position:relative!important;display:block!important;z-index:auto;min-width:0;max-width:100%;width:fit-content;box-sizing:border-box}.drp-date-picker__months{display:flex;gap:var(--drp-spacing-lg)}.drp-date-picker--inline .drp-date-picker__months{flex-wrap:wrap}.drp-date-picker__months--grid{display:grid;grid-template-columns:repeat(var(--drp-grid-columns, 3),minmax(0,1fr));grid-template-rows:repeat(var(--drp-grid-rows, 2),auto);gap:var(--drp-spacing-lg);width:100%}@media (max-width: 1200px){.drp-date-picker__months--grid{grid-template-columns:repeat(min(var(--drp-grid-columns, 3),3),minmax(0,1fr))}}@media (max-width: 768px){.drp-date-picker__months--grid{grid-template-columns:repeat(min(var(--drp-grid-columns, 3),2),minmax(0,1fr))}}@media (max-width: 480px){.drp-date-picker__months--grid{grid-template-columns:minmax(0,1fr)}}.drp-date-picker__month{flex:1;min-width:280px}.drp-date-picker--inline .drp-date-picker__month{min-width:250px}.drp-date-picker__months--grid .drp-date-picker__month{min-width:0;width:100%}.drp-date-picker__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--drp-spacing-md);gap:var(--drp-spacing-sm)}.drp-date-picker__month-year{flex:1;text-align:center;font-weight:var(--drp-font-weight-semibold);font-size:var(--drp-font-size-base);color:var(--drp-text-primary);padding:var(--drp-spacing-sm) var(--drp-spacing-md);border-radius:var(--drp-border-radius);cursor:pointer;transition:background-color var(--drp-transition-fast) var(--drp-easing-snappy)}.drp-date-picker__month-year:hover{background-color:var(--drp-primary-bg)}.drp-date-picker__month-year:active{background-color:var(--drp-primary-bg-hover)}.drp-date-picker__nav{width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;border:var(--drp-border-width-base) solid var(--drp-border-color);border-radius:var(--drp-border-radius);background:transparent;cursor:pointer;transition:all var(--drp-transition-fast) var(--drp-easing-snappy);font-size:var(--drp-font-size-lg);color:var(--drp-text-primary)}.drp-date-picker__nav:hover{background-color:var(--drp-primary-bg);border-color:var(--drp-accent-color)}.drp-date-picker__nav:active{background-color:var(--drp-primary-bg-hover)}.drp-date-picker__nav--disabled,.drp-date-picker__nav[disabled]{opacity:.6;cursor:not-allowed;pointer-events:none}.drp-date-picker__nav--disabled:hover,.drp-date-picker__nav[disabled]:hover{background-color:transparent;border-color:var(--drp-border-color)}.drp-date-picker__nav--prev:before{content:"‹"}.drp-date-picker__nav--next:before{content:"›"}.drp-date-picker__rolling-selector{display:none}.drp-date-picker__rolling-selector.drp-date-picker__rolling-selector--visible{display:flex}.drp-date-picker__rolling-selector.drp-date-picker__rolling-selector--visible~.drp-date-picker__weekdays,.drp-date-picker__rolling-selector.drp-date-picker__rolling-selector--visible~.drp-date-picker__days{display:none}.drp-date-picker__rolling-selector{gap:var(--drp-spacing-md);margin-bottom:var(--drp-spacing-md)}.drp-date-picker__rolling-list{flex:1;height:100%;overflow-y:auto;border:var(--drp-border-width-base) solid var(--drp-border-color);border-radius:var(--drp-border-radius);scroll-behavior:smooth}.drp-date-picker__rolling-list::-webkit-scrollbar{width:6px}.drp-date-picker__rolling-list::-webkit-scrollbar-track{background:var(--drp-primary-bg)}.drp-date-picker__rolling-list::-webkit-scrollbar-thumb{background:var(--drp-border-color);border-radius:3px}.drp-date-picker__rolling-list::-webkit-scrollbar-thumb:hover{background:var(--drp-accent-color)}.drp-date-picker__rolling-item{padding:var(--drp-spacing-sm) var(--drp-spacing-md);text-align:center;cursor:pointer;font-size:var(--drp-font-size-sm);transition:background-color var(--drp-transition-fast) var(--drp-easing-snappy)}.drp-date-picker__rolling-item:hover{background-color:var(--drp-primary-bg)}.drp-date-picker__rolling-item--selected{background-color:var(--drp-accent-color);color:var(--drp-accent-text-color);font-weight:var(--drp-font-weight-semibold)}.drp-date-picker__rolling-item--selected:hover{background-color:var(--drp-accent-color-hover)}.drp-date-picker__weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--drp-spacing-xs);margin-bottom:var(--drp-spacing-sm)}.drp-date-picker__weekday{text-align:center;font-size:var(--drp-font-size-xs);font-weight:var(--drp-font-weight-semibold);color:var(--drp-text-secondary);padding:var(--drp-spacing-xs);text-transform:uppercase}.drp-date-picker__days{display:flex;flex-direction:column;gap:var(--drp-spacing-xs);margin-bottom:var(--drp-spacing-md)}.drp-date-picker__date-row{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--drp-spacing-xs)}.drp-date-picker__day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:var(--drp-font-size-sm);color:var(--drp-text-primary);border-radius:var(--drp-border-radius);cursor:pointer;transition:all var(--drp-transition-fast) var(--drp-easing-snappy);border:2px solid transparent;position:relative}.drp-date-picker__day:hover:not(.drp-date-picker__day--disabled):not(.drp-date-picker__day--other-month){background-color:var(--drp-primary-bg);border-color:var(--drp-accent-color)}.drp-date-picker__day--today{border-color:var(--drp-accent-color);font-weight:var(--drp-font-weight-semibold)}.drp-date-picker__day--selected{background-color:var(--drp-accent-color);color:var(--drp-accent-text-color);font-weight:var(--drp-font-weight-semibold)}.drp-date-picker__day--selected:hover{background-color:var(--drp-accent-color-hover)}.drp-date-picker__day--focused{outline:2px solid var(--drp-accent-color);outline-offset:2px}.drp-date-picker__day--disabled{color:var(--drp-text-secondary);opacity:.6;cursor:not-allowed;position:relative}.drp-date-picker__day--disabled:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background-image:repeating-linear-gradient(45deg,rgba(0,0,0,.1) 0px,rgba(0,0,0,.1) 1px,transparent 1px,transparent 6px);border-radius:var(--drp-border-radius);pointer-events:none}.drp-date-picker__day--disabled:hover{background-color:transparent;border-color:transparent}.drp-date-picker__day--other-month{color:var(--drp-text-secondary);opacity:.5}.drp-date-picker__day--other-month.drp-date-picker__day--range-start,.drp-date-picker__day--other-month.drp-date-picker__day--range-end,.drp-date-picker__day--other-month.drp-date-picker__day--in-range,.drp-date-picker__day--other-month.drp-date-picker__day--drag-preview{opacity:1}.drp-date-picker__day--range-start,.drp-date-picker__day--range-end{background-color:var(--drp-accent-color);color:var(--drp-accent-text-color);font-weight:var(--drp-font-weight-semibold);cursor:grab;-webkit-user-select:none;user-select:none}.drp-date-picker__day--range-start:active,.drp-date-picker__day--range-end:active{cursor:grabbing}.drp-date-picker__day--in-range{background-color:color-mix(in srgb,var(--drp-accent-color) 15%,transparent)}.drp-date-picker__day--in-range:hover{background-color:color-mix(in srgb,var(--drp-accent-color) 25%,transparent)}.drp-date-picker__day--dragging{cursor:grabbing!important;opacity:.7;transform:scale(1.1);transition:transform var(--drp-transition-fast) var(--drp-easing-snappy)}.drp-date-picker__day--drag-preview{background-color:color-mix(in srgb,var(--drp-accent-color) 30%,transparent);border:2px dashed var(--drp-accent-color)}.drp-date-picker__day--drag-preview.drp-date-picker__day--range-start,.drp-date-picker__day--drag-preview.drp-date-picker__day--range-end{background-color:color-mix(in srgb,var(--drp-accent-color) 60%,transparent);color:var(--drp-accent-text-color)}.drp-date-picker__day--drag-invalid{background-color:color-mix(in srgb,#ef4444 20%,transparent)!important;border-color:#ef4444!important;border-style:dashed!important}.drp-date-picker__day.holiday{background-color:color-mix(in srgb,#ef4444 10%,transparent)}.drp-date-picker__day.holiday:hover:not(.drp-date-picker__day--disabled){background-color:color-mix(in srgb,#ef4444 20%,transparent)}.drp-date-picker__day.event{background-color:color-mix(in srgb,#10b981 10%,transparent)}.drp-date-picker__day.event:hover:not(.drp-date-picker__day--disabled){background-color:color-mix(in srgb,#10b981 20%,transparent)}.drp-date-picker__badge-row{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--drp-spacing-xs);margin-bottom:var(--drp-spacing-xs);max-height:1rem;min-height:1rem}.drp-date-picker__badge-cell{display:flex;align-items:center;justify-content:center;font-size:var(--drp-font-size-2xs);padding:1px 2px;border-radius:2px;transition:all var(--drp-transition-fast) var(--drp-easing-snappy);cursor:pointer;height:100%;max-height:1rem}.drp-date-picker__badge-cell:empty{visibility:hidden}.drp-date-picker__badge-cell:hover:not(:empty){transform:scale(1.05)}.drp-date-picker__badge-cell.badge-number{background-color:#10b981;color:#fff;font-size:.7rem;font-weight:600}.drp-date-picker__badge-cell.badge-count{background-color:#ef4444;color:#fff;font-size:.7rem;font-weight:700}.drp-date-picker__badge-cell.badge-text{background-color:#6b7280;color:#fff;font-size:.65rem;font-weight:700;text-transform:uppercase}.drp-date-picker__summary{text-align:center;padding:var(--drp-spacing-md);border-top:var(--drp-border-width-base) solid var(--drp-border-color);font-size:var(--drp-font-size-sm);color:var(--drp-text-secondary)}.drp-date-picker__summary--visible{display:block}.drp-date-picker__summary--hidden{display:none}.drp-date-picker__summary-count{font-weight:var(--drp-font-weight-semibold);color:var(--drp-accent-color);font-size:var(--drp-font-size-base)}.drp-date-picker__actions{display:flex;gap:var(--drp-spacing-sm);justify-content:space-between;padding-top:var(--drp-spacing-sm);border-top:var(--drp-border-width-base) solid var(--drp-border-color)}.drp-date-picker__button{flex:1;padding:var(--drp-spacing-sm) var(--drp-spacing-md);border:var(--drp-border-width-base) solid var(--drp-border-color);border-radius:var(--drp-border-radius);background:transparent;cursor:pointer;font-size:var(--drp-font-size-sm);font-weight:var(--drp-font-weight-medium);transition:all var(--drp-transition-fast) var(--drp-easing-snappy)}.drp-date-picker__button:hover{background-color:var(--drp-primary-bg);border-color:var(--drp-accent-color)}.drp-date-picker__button--today{color:var(--drp-accent-color)}.drp-date-picker__button--clear{color:var(--drp-text-secondary)}.drp-date-picker__button--apply{background-color:var(--drp-accent-color);color:var(--drp-button-text-color);border-color:var(--drp-accent-color)}.drp-date-picker__button--apply:hover{background-color:var(--drp-accent-color-hover)}.drp-date-picker__button--cancel{color:var(--drp-text-secondary)}.drp-date-picker__tooltip{position:absolute;z-index:9999;background-color:var(--drp-text-primary);color:#fff;padding:var(--drp-spacing-xs) var(--drp-spacing-sm);border-radius:var(--drp-border-radius);font-size:var(--drp-font-size-xs);line-height:1.4;max-width:200px;word-wrap:break-word;pointer-events:none;opacity:0;transition:opacity var(--drp-transition-fast) var(--drp-easing-snappy)}.drp-date-picker__tooltip--visible{opacity:1}.drp-date-picker__tooltip-arrow{position:absolute;background-color:var(--drp-text-primary);width:8px;height:8px;transform:rotate(45deg)}.drp-date-picker__loading-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background-color:#fffc;display:flex;align-items:center;justify-content:center;z-index:9500;border-radius:.375rem}.drp-date-picker__loading-spinner{width:40px;height:40px;border:4px solid #e5e7eb;border-top-color:#3b82f6;border-radius:50%;animation:drp-spin .8s linear infinite}@keyframes drp-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.drp-font-xs{--drp-font-size-2xs: .4375rem;--drp-font-size-xs: .525rem;--drp-font-size-sm: .6125rem;--drp-font-size-base: .7rem;--drp-font-size-lg: .7875rem;--drp-font-size-xl: .875rem;--drp-font-size-2xl: 1.05rem}.drp-font-sm{--drp-font-size-2xs: .53125rem;--drp-font-size-xs: .6375rem;--drp-font-size-sm: .74375rem;--drp-font-size-base: .85rem;--drp-font-size-lg: .95625rem;--drp-font-size-xl: 1.0625rem;--drp-font-size-2xl: 1.275rem}.drp-font-lg{--drp-font-size-2xs: .75rem;--drp-font-size-xs: .9rem;--drp-font-size-sm: 1.05rem;--drp-font-size-base: 1.2rem;--drp-font-size-lg: 1.35rem;--drp-font-size-xl: 1.5rem;--drp-font-size-2xl: 1.8rem}.drp-font-xl{--drp-font-size-2xs: .875rem;--drp-font-size-xs: 1.05rem;--drp-font-size-sm: 1.225rem;--drp-font-size-base: 1.4rem;--drp-font-size-lg: 1.575rem;--drp-font-size-xl: 1.75rem;--drp-font-size-2xl: 2.1rem}.drp-spacing-xs{--drp-spacing-xs: .175rem;--drp-spacing-sm: .35rem;--drp-spacing-md: .7rem;--drp-spacing-lg: 1.05rem;--drp-spacing-xl: 1.4rem}.drp-spacing-xs .drp-date-picker__month{min-width:196px}.drp-spacing-sm{--drp-spacing-xs: .2125rem;--drp-spacing-sm: .425rem;--drp-spacing-md: .85rem;--drp-spacing-lg: 1.275rem;--drp-spacing-xl: 1.7rem}.drp-spacing-sm .drp-date-picker__month{min-width:238px}.drp-spacing-lg{--drp-spacing-xs: .3rem;--drp-spacing-sm: .6rem;--drp-spacing-md: 1.2rem;--drp-spacing-lg: 1.8rem;--drp-spacing-xl: 2.4rem}.drp-spacing-lg .drp-date-picker__month{min-width:336px}.drp-spacing-xl{--drp-spacing-xs: .35rem;--drp-spacing-sm: .7rem;--drp-spacing-md: 1.4rem;--drp-spacing-lg: 2.1rem;--drp-spacing-xl: 2.8rem}.drp-spacing-xl .drp-date-picker__month{min-width:392px}@media (max-width: 1200px){.drp-responsive.drp-font-xl{--drp-font-size-2xs: .75rem;--drp-font-size-xs: .9rem;--drp-font-size-sm: 1.05rem;--drp-font-size-base: 1.2rem;--drp-font-size-lg: 1.35rem;--drp-font-size-xl: 1.5rem;--drp-font-size-2xl: 1.8rem}}@media (max-width: 768px){.drp-responsive.drp-font-xl{--drp-font-size-2xs: .625rem;--drp-font-size-xs: .75rem;--drp-font-size-sm: .875rem;--drp-font-size-base: 1rem;--drp-font-size-lg: 1.125rem;--drp-font-size-xl: 1.25rem;--drp-font-size-2xl: 1.5rem}}@media (max-width: 1200px){.drp-responsive.drp-font-lg{--drp-font-size-2xs: .625rem;--drp-font-size-xs: .75rem;--drp-font-size-sm: .875rem;--drp-font-size-base: 1rem;--drp-font-size-lg: 1.125rem;--drp-font-size-xl: 1.25rem;--drp-font-size-2xl: 1.5rem}}@media (max-width: 768px){.drp-responsive.drp-font-lg{--drp-font-size-2xs: .53125rem;--drp-font-size-xs: .6375rem;--drp-font-size-sm: .74375rem;--drp-font-size-base: .85rem;--drp-font-size-lg: .95625rem;--drp-font-size-xl: 1.0625rem;--drp-font-size-2xl: 1.275rem}}@media (max-width: 768px){.drp-responsive.drp-font-md{--drp-font-size-2xs: .53125rem;--drp-font-size-xs: .6375rem;--drp-font-size-sm: .74375rem;--drp-font-size-base: .85rem;--drp-font-size-lg: .95625rem;--drp-font-size-xl: 1.0625rem;--drp-font-size-2xl: 1.275rem}}@media (max-width: 768px){.drp-responsive.drp-font-sm{--drp-font-size-2xs: .4375rem;--drp-font-size-xs: .525rem;--drp-font-size-sm: .6125rem;--drp-font-size-base: .7rem;--drp-font-size-lg: .7875rem;--drp-font-size-xl: .875rem;--drp-font-size-2xl: 1.05rem}}@media (max-width: 1200px){.drp-responsive.drp-spacing-xl{--drp-spacing-xs: .3rem;--drp-spacing-sm: .6rem;--drp-spacing-md: 1.2rem;--drp-spacing-lg: 1.8rem;--drp-spacing-xl: 2.4rem}.drp-responsive.drp-spacing-xl .drp-date-picker__month{min-width:336px}}@media (max-width: 768px){.drp-responsive.drp-spacing-xl{--drp-spacing-xs: .25rem;--drp-spacing-sm: .5rem;--drp-spacing-md: 1rem;--drp-spacing-lg: 1.5rem;--drp-spacing-xl: 2rem}.drp-responsive.drp-spacing-xl .drp-date-picker__month{min-width:280px}}@media (max-width: 1200px){.drp-responsive.drp-spacing-lg{--drp-spacing-xs: .25rem;--drp-spacing-sm: .5rem;--drp-spacing-md: 1rem;--drp-spacing-lg: 1.5rem;--drp-spacing-xl: 2rem}.drp-responsive.drp-spacing-lg .drp-date-picker__month{min-width:280px}}@media (max-width: 768px){.drp-responsive.drp-spacing-lg{--drp-spacing-xs: .2125rem;--drp-spacing-sm: .425rem;--drp-spacing-md: .85rem;--drp-spacing-lg: 1.275rem;--drp-spacing-xl: 1.7rem}.drp-responsive.drp-spacing-lg .drp-date-picker__month{min-width:238px}}@media (max-width: 768px){.drp-responsive.drp-spacing-md{--drp-spacing-xs: .2125rem;--drp-spacing-sm: .425rem;--drp-spacing-md: .85rem;--drp-spacing-lg: 1.275rem;--drp-spacing-xl: 1.7rem}.drp-responsive.drp-spacing-md .drp-date-picker__month{min-width:238px}}@media (max-width: 768px){.drp-responsive.drp-spacing-sm{--drp-spacing-xs: .175rem;--drp-spacing-sm: .35rem;--drp-spacing-md: .7rem;--drp-spacing-lg: 1.05rem;--drp-spacing-xl: 1.4rem}.drp-responsive.drp-spacing-sm .drp-date-picker__month{min-width:196px}}.drp-date-picker--xs{padding:var(--drp-spacing-sm);min-width:240px}.drp-date-picker--xs .drp-date-picker__month-year{font-size:var(--drp-font-size-xs);padding:var(--drp-spacing-xs) var(--drp-spacing-sm)}.drp-date-picker--xs .drp-date-picker__nav{width:1.5rem;height:1.5rem;font-size:var(--drp-font-size-sm)}.drp-date-picker--xs .drp-date-picker__weekday{font-size:var(--drp-font-size-2xs)}.drp-date-picker--xs .drp-date-picker__day{font-size:var(--drp-font-size-xs)}.drp-date-picker--sm{padding:var(--drp-spacing-sm);min-width:260px}.drp-date-picker--sm .drp-date-picker__month-year{font-size:var(--drp-font-size-sm);padding:var(--drp-spacing-xs) var(--drp-spacing-sm)}.drp-date-picker--sm .drp-date-picker__nav{width:1.75rem;height:1.75rem;font-size:var(--drp-font-size-base)}.drp-date-picker--sm .drp-date-picker__day{font-size:var(--drp-font-size-xs)}.drp-date-picker--lg{padding:var(--drp-spacing-lg);min-width:320px}.drp-date-picker--lg .drp-date-picker__month-year{font-size:var(--drp-font-size-lg);padding:var(--drp-spacing-md) var(--drp-spacing-lg)}.drp-date-picker--lg .drp-date-picker__nav{width:2.5rem;height:2.5rem;font-size:var(--drp-font-size-xl)}.drp-date-picker--lg .drp-date-picker__day{font-size:var(--drp-font-size-base)}.drp-date-picker--xl{padding:var(--drp-spacing-xl);min-width:360px}.drp-date-picker--xl .drp-date-picker__month-year{font-size:var(--drp-font-size-xl);padding:var(--drp-spacing-lg) var(--drp-spacing-xl)}.drp-date-picker--xl .drp-date-picker__nav{width:3rem;height:3rem;font-size:var(--drp-font-size-2xl)}.drp-date-picker--xl .drp-date-picker__day{font-size:var(--drp-font-size-lg)}.drp-date-picker--inline{position:static;display:block;box-shadow:none}
|
package/package.json
CHANGED
|
@@ -1,19 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@keenmate/web-daterangepicker",
|
|
3
|
-
"version": "1.0.0-
|
|
3
|
+
"version": "1.0.0-rc03",
|
|
4
4
|
"description": "Lightweight date picker web component with excellent keyboard navigation and range selection",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/date-range-picker.umd.js",
|
|
7
7
|
"module": "./dist/date-range-picker.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
8
9
|
"style": "./dist/style.css",
|
|
9
10
|
"exports": {
|
|
10
11
|
".": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
11
13
|
"import": "./dist/date-range-picker.js",
|
|
12
14
|
"require": "./dist/date-range-picker.umd.js",
|
|
13
15
|
"default": "./dist/date-range-picker.js"
|
|
14
16
|
},
|
|
15
17
|
"./style.css": "./dist/style.css",
|
|
18
|
+
"./scss": "./src/scss/main.scss",
|
|
19
|
+
"./scss/variables": "./src/scss/_variables.scss",
|
|
20
|
+
"./scss/base": "./src/scss/_base.scss",
|
|
16
21
|
"./dist/*": "./dist/*",
|
|
22
|
+
"./src/scss/*": "./src/scss/*",
|
|
17
23
|
"./package.json": "./package.json"
|
|
18
24
|
},
|
|
19
25
|
"sideEffects": [
|
|
@@ -22,7 +28,8 @@
|
|
|
22
28
|
"*.css"
|
|
23
29
|
],
|
|
24
30
|
"files": [
|
|
25
|
-
"dist"
|
|
31
|
+
"dist",
|
|
32
|
+
"src/scss"
|
|
26
33
|
],
|
|
27
34
|
"scripts": {
|
|
28
35
|
"dev": "vite",
|
|
@@ -63,6 +70,8 @@
|
|
|
63
70
|
"vite": "^5.0.8"
|
|
64
71
|
},
|
|
65
72
|
"dependencies": {
|
|
66
|
-
"@floating-ui/dom": "^1.5.3"
|
|
73
|
+
"@floating-ui/dom": "^1.5.3",
|
|
74
|
+
"loglevel": "^1.9.2",
|
|
75
|
+
"loglevel-plugin-prefix": "^0.8.4"
|
|
67
76
|
}
|
|
68
77
|
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
// ==============================================================================
|
|
2
|
+
// DATE RANGE PICKER - BADGES
|
|
3
|
+
// ==============================================================================
|
|
4
|
+
// Badge system for displaying event markers, counts, and labels on calendar days
|
|
5
|
+
|
|
6
|
+
@use 'variables' as *;
|
|
7
|
+
|
|
8
|
+
// ==============================================================================
|
|
9
|
+
// BADGE ROWS (GRID-BASED SYSTEM)
|
|
10
|
+
// ==============================================================================
|
|
11
|
+
|
|
12
|
+
.drp-date-picker__badge-row {
|
|
13
|
+
display: grid;
|
|
14
|
+
grid-template-columns: repeat(7, 1fr);
|
|
15
|
+
gap: var(--drp-spacing-xs);
|
|
16
|
+
margin-bottom: var(--drp-spacing-xs);
|
|
17
|
+
max-height: $drp-badge-max-height;
|
|
18
|
+
min-height: $drp-badge-max-height;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.drp-date-picker__badge-cell {
|
|
22
|
+
display: flex;
|
|
23
|
+
align-items: center;
|
|
24
|
+
justify-content: center;
|
|
25
|
+
font-size: var(--drp-font-size-2xs);
|
|
26
|
+
padding: $drp-badge-padding-v $drp-badge-padding-h;
|
|
27
|
+
border-radius: $drp-badge-border-radius;
|
|
28
|
+
transition: all var(--drp-transition-fast) var(--drp-easing-snappy);
|
|
29
|
+
cursor: pointer;
|
|
30
|
+
height: 100%;
|
|
31
|
+
max-height: $drp-badge-max-height;
|
|
32
|
+
|
|
33
|
+
&:empty {
|
|
34
|
+
visibility: hidden;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
&:hover:not(:empty) {
|
|
38
|
+
transform: scale(1.05);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// ==============================================================================
|
|
43
|
+
// BADGE TYPE STYLES
|
|
44
|
+
// ==============================================================================
|
|
45
|
+
|
|
46
|
+
// Number Badge (e.g., day number, count)
|
|
47
|
+
.drp-date-picker__badge-cell.badge-number {
|
|
48
|
+
background-color: $drp-badge-number-bg;
|
|
49
|
+
color: $drp-badge-number-color;
|
|
50
|
+
font-size: 0.7rem;
|
|
51
|
+
font-weight: 600;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Count Badge (e.g., number of events)
|
|
55
|
+
.drp-date-picker__badge-cell.badge-count {
|
|
56
|
+
background-color: $drp-badge-count-bg;
|
|
57
|
+
color: $drp-badge-count-color;
|
|
58
|
+
font-size: 0.7rem;
|
|
59
|
+
font-weight: 700;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Text Badge (generic)
|
|
63
|
+
// Note: Background colors for specific badge types (holiday, event, birthday, etc.)
|
|
64
|
+
// should be defined by the application, not the component library.
|
|
65
|
+
// See index.html examples for how to customize badge colors for your use case.
|
|
66
|
+
.drp-date-picker__badge-cell.badge-text {
|
|
67
|
+
background-color: $drp-badge-text-bg;
|
|
68
|
+
color: $drp-badge-text-color;
|
|
69
|
+
font-size: 0.65rem;
|
|
70
|
+
font-weight: 700;
|
|
71
|
+
text-transform: uppercase;
|
|
72
|
+
}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
// ==============================================================================
|
|
2
|
+
// DATE RANGE PICKER - BASE STYLES
|
|
3
|
+
// ==============================================================================
|
|
4
|
+
// Base container styles, FOUC prevention, and root CSS custom properties
|
|
5
|
+
|
|
6
|
+
@use 'variables' as *;
|
|
7
|
+
|
|
8
|
+
// ==============================================================================
|
|
9
|
+
// CSS CUSTOM PROPERTIES (CSS VARIABLES)
|
|
10
|
+
// ==============================================================================
|
|
11
|
+
// Define CSS custom properties with SCSS fallbacks for runtime customization
|
|
12
|
+
// Using :host instead of :root for proper shadow DOM support
|
|
13
|
+
|
|
14
|
+
:host {
|
|
15
|
+
// Colors
|
|
16
|
+
--drp-card-bg: #{$drp-calendar-bg};
|
|
17
|
+
--drp-border-color: #{$drp-border-color};
|
|
18
|
+
--drp-primary-bg: #{$drp-color-neutral-lighter};
|
|
19
|
+
--drp-primary-bg-hover: #{$drp-color-neutral-light};
|
|
20
|
+
--drp-accent-color: #{$drp-color-accent};
|
|
21
|
+
--drp-accent-color-hover: #{$drp-color-accent-dark};
|
|
22
|
+
--drp-text-primary: #{$drp-color-neutral-darkest};
|
|
23
|
+
--drp-text-secondary: #{$drp-color-neutral-dark};
|
|
24
|
+
--drp-accent-text-color: #{$drp-color-white};
|
|
25
|
+
--drp-button-text-color: #{$drp-color-white};
|
|
26
|
+
|
|
27
|
+
// Spacing
|
|
28
|
+
--drp-spacing-xs: #{$drp-spacing-xs};
|
|
29
|
+
--drp-spacing-sm: #{$drp-spacing-sm};
|
|
30
|
+
--drp-spacing-md: #{$drp-spacing-md};
|
|
31
|
+
--drp-spacing-lg: #{$drp-spacing-lg};
|
|
32
|
+
--drp-spacing-xl: #{$drp-spacing-xl};
|
|
33
|
+
|
|
34
|
+
// Typography
|
|
35
|
+
--drp-font-size-2xs: #{$drp-font-size-2xs};
|
|
36
|
+
--drp-font-size-xs: #{$drp-font-size-xs};
|
|
37
|
+
--drp-font-size-sm: #{$drp-font-size-sm};
|
|
38
|
+
--drp-font-size-base: #{$drp-font-size-base};
|
|
39
|
+
--drp-font-size-lg: #{$drp-font-size-lg};
|
|
40
|
+
--drp-font-size-xl: #{$drp-font-size-xl};
|
|
41
|
+
--drp-font-size-2xl: #{$drp-font-size-2xl};
|
|
42
|
+
--drp-font-weight-medium: #{$drp-font-weight-medium};
|
|
43
|
+
--drp-font-weight-semibold: #{$drp-font-weight-semibold};
|
|
44
|
+
|
|
45
|
+
// Borders
|
|
46
|
+
--drp-border-width-base: #{$drp-border-width-base};
|
|
47
|
+
--drp-border-radius: #{$drp-border-radius};
|
|
48
|
+
|
|
49
|
+
// Shadows
|
|
50
|
+
--drp-shadow-xl: #{$drp-shadow-xl};
|
|
51
|
+
|
|
52
|
+
// Transitions
|
|
53
|
+
--drp-transition-fast: #{$drp-transition-fast};
|
|
54
|
+
--drp-easing-snappy: #{$drp-easing-snappy};
|
|
55
|
+
|
|
56
|
+
// Input
|
|
57
|
+
--drp-input-padding-h: #{$drp-input-padding-h};
|
|
58
|
+
|
|
59
|
+
// Grid
|
|
60
|
+
--drp-grid-columns: #{$drp-grid-columns};
|
|
61
|
+
--drp-grid-rows: #{$drp-grid-rows};
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// ==============================================================================
|
|
65
|
+
// DATE PICKER INPUT FIELD
|
|
66
|
+
// ==============================================================================
|
|
67
|
+
|
|
68
|
+
.drp-date-picker-input {
|
|
69
|
+
position: relative;
|
|
70
|
+
cursor: pointer;
|
|
71
|
+
|
|
72
|
+
&::after {
|
|
73
|
+
content: '📅';
|
|
74
|
+
position: absolute;
|
|
75
|
+
right: var(--drp-input-padding-h);
|
|
76
|
+
top: 50%;
|
|
77
|
+
transform: translateY(-50%);
|
|
78
|
+
pointer-events: none;
|
|
79
|
+
opacity: $drp-input-icon-opacity;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// ==============================================================================
|
|
84
|
+
// CALENDAR POPUP CONTAINER
|
|
85
|
+
// ==============================================================================
|
|
86
|
+
|
|
87
|
+
.drp-date-picker {
|
|
88
|
+
position: absolute;
|
|
89
|
+
z-index: $drp-z-index-dropdown;
|
|
90
|
+
background: var(--drp-card-bg);
|
|
91
|
+
border: var(--drp-border-width-base) solid var(--drp-border-color);
|
|
92
|
+
border-radius: var(--drp-border-radius);
|
|
93
|
+
box-shadow: var(--drp-shadow-xl);
|
|
94
|
+
padding: var(--drp-spacing-md);
|
|
95
|
+
min-width: $drp-month-min-width;
|
|
96
|
+
max-width: $drp-calendar-max-width;
|
|
97
|
+
box-sizing: border-box;
|
|
98
|
+
user-select: none;
|
|
99
|
+
|
|
100
|
+
// Hide by default
|
|
101
|
+
&:not(.drp-date-picker--visible) {
|
|
102
|
+
display: none;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// Inline mode modifier
|
|
106
|
+
&--inline {
|
|
107
|
+
position: relative !important;
|
|
108
|
+
display: block !important;
|
|
109
|
+
z-index: auto;
|
|
110
|
+
min-width: 0;
|
|
111
|
+
max-width: 100%;
|
|
112
|
+
width: fit-content;
|
|
113
|
+
box-sizing: border-box;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// ==============================================================================
|
|
118
|
+
// MONTHS CONTAINER (MULTI-MONTH LAYOUT)
|
|
119
|
+
// ==============================================================================
|
|
120
|
+
|
|
121
|
+
.drp-date-picker__months {
|
|
122
|
+
display: flex;
|
|
123
|
+
gap: var(--drp-spacing-lg);
|
|
124
|
+
|
|
125
|
+
// Allow wrapping for inline mode on small screens
|
|
126
|
+
.drp-date-picker--inline & {
|
|
127
|
+
flex-wrap: wrap;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// Grid layout mode
|
|
131
|
+
&--grid {
|
|
132
|
+
display: grid;
|
|
133
|
+
grid-template-columns: repeat(var(--drp-grid-columns, 3), minmax(0, 1fr));
|
|
134
|
+
grid-template-rows: repeat(var(--drp-grid-rows, 2), auto);
|
|
135
|
+
gap: var(--drp-spacing-lg);
|
|
136
|
+
width: 100%;
|
|
137
|
+
|
|
138
|
+
// Responsive breakpoints
|
|
139
|
+
@media (max-width: 1200px) {
|
|
140
|
+
grid-template-columns: repeat(min(var(--drp-grid-columns, 3), 3), minmax(0, 1fr));
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
@media (max-width: 768px) {
|
|
144
|
+
grid-template-columns: repeat(min(var(--drp-grid-columns, 3), 2), minmax(0, 1fr));
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
@media (max-width: 480px) {
|
|
148
|
+
grid-template-columns: minmax(0, 1fr);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// ==============================================================================
|
|
154
|
+
// INDIVIDUAL MONTH CONTAINER
|
|
155
|
+
// ==============================================================================
|
|
156
|
+
|
|
157
|
+
.drp-date-picker__month {
|
|
158
|
+
flex: 1;
|
|
159
|
+
min-width: $drp-month-min-width;
|
|
160
|
+
|
|
161
|
+
// Allow shrinking for inline mode
|
|
162
|
+
.drp-date-picker--inline & {
|
|
163
|
+
min-width: $drp-month-min-width-inline;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// Grid layout: remove min-width to allow proper grid sizing
|
|
167
|
+
.drp-date-picker__months--grid & {
|
|
168
|
+
min-width: 0;
|
|
169
|
+
width: 100%;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
@@ -0,0 +1,219 @@
|
|
|
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-text-secondary);
|
|
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-text-primary);
|
|
56
|
+
border-radius: var(--drp-border-radius);
|
|
57
|
+
cursor: pointer;
|
|
58
|
+
transition: all var(--drp-transition-fast) var(--drp-easing-snappy);
|
|
59
|
+
border: $drp-day-border-width solid $drp-day-border-color;
|
|
60
|
+
position: relative; // For absolute positioning of labels
|
|
61
|
+
|
|
62
|
+
&:hover:not(.drp-date-picker__day--disabled):not(.drp-date-picker__day--other-month) {
|
|
63
|
+
background-color: var(--drp-primary-bg);
|
|
64
|
+
border-color: var(--drp-accent-color);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// --------------------------------------
|
|
68
|
+
// Today
|
|
69
|
+
// --------------------------------------
|
|
70
|
+
&--today {
|
|
71
|
+
border-color: var(--drp-accent-color);
|
|
72
|
+
font-weight: var(--drp-font-weight-semibold);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// --------------------------------------
|
|
76
|
+
// Selected
|
|
77
|
+
// --------------------------------------
|
|
78
|
+
&--selected {
|
|
79
|
+
background-color: var(--drp-accent-color);
|
|
80
|
+
color: var(--drp-accent-text-color);
|
|
81
|
+
font-weight: var(--drp-font-weight-semibold);
|
|
82
|
+
|
|
83
|
+
&:hover {
|
|
84
|
+
background-color: var(--drp-accent-color-hover);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// --------------------------------------
|
|
89
|
+
// Focused (keyboard navigation)
|
|
90
|
+
// --------------------------------------
|
|
91
|
+
&--focused {
|
|
92
|
+
outline: $drp-day-focused-outline-width solid var(--drp-accent-color);
|
|
93
|
+
outline-offset: $drp-day-focused-outline-offset;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// --------------------------------------
|
|
97
|
+
// Disabled
|
|
98
|
+
// --------------------------------------
|
|
99
|
+
&--disabled {
|
|
100
|
+
color: var(--drp-text-secondary);
|
|
101
|
+
opacity: $drp-day-disabled-opacity;
|
|
102
|
+
cursor: not-allowed;
|
|
103
|
+
position: relative;
|
|
104
|
+
|
|
105
|
+
// Diagonal hatched pattern overlay
|
|
106
|
+
&::before {
|
|
107
|
+
content: '';
|
|
108
|
+
position: absolute;
|
|
109
|
+
top: 0;
|
|
110
|
+
left: 0;
|
|
111
|
+
right: 0;
|
|
112
|
+
bottom: 0;
|
|
113
|
+
background-image: repeating-linear-gradient(
|
|
114
|
+
45deg,
|
|
115
|
+
rgba(0, 0, 0, $drp-day-disabled-pattern-opacity) 0px,
|
|
116
|
+
rgba(0, 0, 0, $drp-day-disabled-pattern-opacity) 1px,
|
|
117
|
+
transparent 1px,
|
|
118
|
+
transparent 6px
|
|
119
|
+
);
|
|
120
|
+
border-radius: var(--drp-border-radius);
|
|
121
|
+
pointer-events: none;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
&:hover {
|
|
125
|
+
background-color: transparent;
|
|
126
|
+
border-color: transparent;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// --------------------------------------
|
|
131
|
+
// Other month days (previous/next month)
|
|
132
|
+
// --------------------------------------
|
|
133
|
+
&--other-month {
|
|
134
|
+
color: var(--drp-text-secondary);
|
|
135
|
+
opacity: $drp-day-other-month-opacity;
|
|
136
|
+
|
|
137
|
+
// Reset opacity when other-month days are part of range selection
|
|
138
|
+
&.drp-date-picker__day--range-start,
|
|
139
|
+
&.drp-date-picker__day--range-end,
|
|
140
|
+
&.drp-date-picker__day--in-range,
|
|
141
|
+
&.drp-date-picker__day--drag-preview {
|
|
142
|
+
opacity: 1;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// --------------------------------------
|
|
147
|
+
// Range selection states
|
|
148
|
+
// --------------------------------------
|
|
149
|
+
&--range-start,
|
|
150
|
+
&--range-end {
|
|
151
|
+
background-color: var(--drp-accent-color);
|
|
152
|
+
color: var(--drp-accent-text-color);
|
|
153
|
+
font-weight: var(--drp-font-weight-semibold);
|
|
154
|
+
cursor: grab;
|
|
155
|
+
user-select: none;
|
|
156
|
+
|
|
157
|
+
&:active {
|
|
158
|
+
cursor: grabbing;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
&--in-range {
|
|
163
|
+
background-color: color-mix(in srgb, var(--drp-accent-color) $drp-day-in-range-bg-opacity * 100%, transparent);
|
|
164
|
+
|
|
165
|
+
&:hover {
|
|
166
|
+
background-color: color-mix(in srgb, var(--drp-accent-color) $drp-day-in-range-hover-bg-opacity * 100%, transparent);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// --------------------------------------
|
|
171
|
+
// Dragging states
|
|
172
|
+
// --------------------------------------
|
|
173
|
+
&--dragging {
|
|
174
|
+
cursor: grabbing !important;
|
|
175
|
+
opacity: $drp-day-dragging-opacity;
|
|
176
|
+
transform: scale($drp-day-dragging-scale);
|
|
177
|
+
transition: transform var(--drp-transition-fast) var(--drp-easing-snappy);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
&--drag-preview {
|
|
181
|
+
background-color: color-mix(in srgb, var(--drp-accent-color) $drp-day-drag-preview-bg-opacity * 100%, transparent);
|
|
182
|
+
border: $drp-day-border-width $drp-day-drag-preview-border-style var(--drp-accent-color);
|
|
183
|
+
|
|
184
|
+
&.drp-date-picker__day--range-start,
|
|
185
|
+
&.drp-date-picker__day--range-end {
|
|
186
|
+
background-color: color-mix(in srgb, var(--drp-accent-color) $drp-day-drag-preview-edge-bg-opacity * 100%, transparent);
|
|
187
|
+
color: var(--drp-accent-text-color);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
&--drag-invalid {
|
|
192
|
+
background-color: color-mix(in srgb, $drp-day-drag-invalid-bg $drp-day-drag-invalid-bg-opacity * 100%, transparent) !important;
|
|
193
|
+
border-color: $drp-day-drag-invalid-bg !important;
|
|
194
|
+
border-style: dashed !important;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// ==============================================================================
|
|
199
|
+
// SPECIAL DATE HIGHLIGHTING (EXAMPLES)
|
|
200
|
+
// ==============================================================================
|
|
201
|
+
// These are example classes showing how to highlight special dates.
|
|
202
|
+
// Applications should define their own classes with appropriate colors.
|
|
203
|
+
// The .holiday and .event classes here use component colors as examples only.
|
|
204
|
+
|
|
205
|
+
.drp-date-picker__day.holiday {
|
|
206
|
+
background-color: color-mix(in srgb, $drp-color-error $drp-holiday-bg-opacity * 100%, transparent);
|
|
207
|
+
|
|
208
|
+
&:hover:not(.drp-date-picker__day--disabled) {
|
|
209
|
+
background-color: color-mix(in srgb, $drp-color-error $drp-holiday-hover-bg-opacity * 100%, transparent);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
.drp-date-picker__day.event {
|
|
214
|
+
background-color: color-mix(in srgb, $drp-color-success $drp-event-bg-opacity * 100%, transparent);
|
|
215
|
+
|
|
216
|
+
&:hover:not(.drp-date-picker__day--disabled) {
|
|
217
|
+
background-color: color-mix(in srgb, $drp-color-success $drp-event-hover-bg-opacity * 100%, transparent);
|
|
218
|
+
}
|
|
219
|
+
}
|