@pequity/squirrel 10.1.0 → 11.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/chunks/p-inline-date-picker.js +51 -84
- package/dist/cjs/dateLocale.js +886 -0
- package/dist/cjs/index.js +2 -2
- package/dist/cjs/p-date-picker.js +146 -2
- package/dist/cjs/p-select-pill.js +1 -1
- package/dist/es/chunks/p-inline-date-picker.js +50 -83
- package/dist/es/dateLocale.js +886 -0
- package/dist/es/index.js +50 -50
- package/dist/es/p-date-picker.js +146 -2
- package/dist/es/p-select-pill.js +1 -1
- package/dist/squirrel/components/p-date-picker/p-date-picker.vue.d.ts +19 -23
- package/dist/squirrel/components/p-drawer/p-drawer.vue.d.ts +2 -2
- package/dist/squirrel/components/p-inline-date-picker/p-inline-date-picker.vue.d.ts +12 -13
- package/dist/squirrel/components/p-modal/p-modal.vue.d.ts +2 -2
- package/dist/squirrel/components/p-steps/p-steps.vue.d.ts +1 -1
- package/dist/squirrel/utils/dateLocale.d.ts +2 -0
- package/dist/squirrel.css +34 -1
- package/package.json +24 -23
- package/squirrel/components/p-date-picker/p-date-picker.spec.js +49 -4
- package/squirrel/components/p-date-picker/p-date-picker.vue +84 -12
- package/squirrel/components/p-inline-date-picker/p-inline-date-picker.spec.js +33 -18
- package/squirrel/components/p-inline-date-picker/p-inline-date-picker.vue +21 -10
- package/squirrel/components/p-select-pill/p-select-pill.vue +1 -1
- package/squirrel/utils/dateLocale.spec.ts +20 -0
- package/squirrel/utils/dateLocale.ts +19 -0
- package/dist/cjs/chunks/p-date-picker.js +0 -171
- package/dist/es/chunks/p-date-picker.js +0 -172
package/dist/squirrel.css
CHANGED
|
@@ -152,6 +152,39 @@ input[type='checkbox'][data-v-c0f571ea]:checked {
|
|
|
152
152
|
.bg-cross[data-v-a6ae49f4] {
|
|
153
153
|
background-image: url("data:image/svg+xml,%3csvg%20width='6'%20height='6'%20viewBox='0%200%206%206'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_2511_8629)'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M3%203.51667L5.42083%205.9375L5.9375%205.42083L3.51667%203L5.9375%200.57917L5.42083%200.0625L3%202.48333L0.57917%200.0625L0.0625%200.57917L2.48333%203L0.0625%205.42083L0.57917%205.9375L3%203.51667Z'%20fill='%231A123B'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_2511_8629'%3e%3crect%20width='6'%20height='6'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e");
|
|
154
154
|
}
|
|
155
|
+
|
|
156
|
+
/* Fix clear button positioning when label is present */
|
|
157
|
+
.has-label.size-sm[data-v-5f4efd82] .dp--clear-btn {
|
|
158
|
+
margin-top: 11px;
|
|
159
|
+
}
|
|
160
|
+
.has-label.size-md[data-v-5f4efd82] .dp--clear-btn {
|
|
161
|
+
margin-top: 12px;
|
|
162
|
+
}
|
|
163
|
+
.has-label.size-lg[data-v-5f4efd82] .dp--clear-btn {
|
|
164
|
+
margin-top: 14px;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/* Fix clear button positioning when error is present */
|
|
168
|
+
.has-error.size-sm[data-v-5f4efd82] .dp--clear-btn {
|
|
169
|
+
margin-top: -11px;
|
|
170
|
+
}
|
|
171
|
+
.has-error.size-md[data-v-5f4efd82] .dp--clear-btn {
|
|
172
|
+
margin-top: -11px;
|
|
173
|
+
}
|
|
174
|
+
.has-error.size-lg[data-v-5f4efd82] .dp--clear-btn {
|
|
175
|
+
margin-top: -11px;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/* Fix clear button positioning when label and error are present */
|
|
179
|
+
.has-label.has-error.size-sm[data-v-5f4efd82] .dp--clear-btn {
|
|
180
|
+
margin-top: 0px;
|
|
181
|
+
}
|
|
182
|
+
.has-label.has-error.size-md[data-v-5f4efd82] .dp--clear-btn {
|
|
183
|
+
margin-top: 1px;
|
|
184
|
+
}
|
|
185
|
+
.has-label.has-error.size-lg[data-v-5f4efd82] .dp--clear-btn {
|
|
186
|
+
margin-top: 3px;
|
|
187
|
+
}
|
|
155
188
|
.drawer[data-v-e3739b6f] {
|
|
156
189
|
position: fixed;
|
|
157
190
|
bottom: 0px;
|
|
@@ -968,7 +1001,7 @@ to {
|
|
|
968
1001
|
transition-timing-function: ease-in-out;
|
|
969
1002
|
transition-property: all;
|
|
970
1003
|
transition-duration: 400ms;
|
|
971
|
-
}.dp__input_wrap{position:relative;width:100%;box-sizing:unset}.dp__input_wrap:focus{border-color:var(--dp-border-color-hover);outline:none}.dp__input_valid{box-shadow:0 0 var(--dp-border-radius) var(--dp-success-color);border-color:var(--dp-success-color)}.dp__input_valid:hover{border-color:var(--dp-success-color)}.dp__input_invalid{box-shadow:0 0 var(--dp-border-radius) var(--dp-danger-color);border-color:var(--dp-danger-color)}.dp__input_invalid:hover{border-color:var(--dp-danger-color)}.dp__input{background-color:var(--dp-background-color);border-radius:var(--dp-border-radius);font-family:var(--dp-font-family);border:1px solid var(--dp-border-color);outline:none;transition:border-color .2s cubic-bezier(0.645, 0.045, 0.355, 1);width:100%;font-size:var(--dp-font-size);line-height:calc(var(--dp-font-size)*1.5);padding:var(--dp-input-padding);color:var(--dp-text-color);box-sizing:border-box}.dp__input::-moz-placeholder{opacity:.7}.dp__input::placeholder{opacity:.7}.dp__input:hover:not(.dp__input_focus){border-color:var(--dp-border-color-hover)}.dp__input_not_clearable{padding-inline-end:var(--dp-input-not-clearable-padding) !important}.dp__input_reg{caret-color:rgba(0,0,0,0)}.dp__input_focus{border-color:var(--dp-border-color-focus)}.dp__disabled{background:var(--dp-disabled-color)}.dp__disabled::-moz-placeholder{color:var(--dp-disabled-color-text)}.dp__disabled::placeholder{color:var(--dp-disabled-color-text)}.dp__input_icons{display:inline-block;width:var(--dp-font-size);height:var(--dp-font-size);stroke-width:0;font-size:var(--dp-font-size);line-height:calc(var(--dp-font-size)*1.5);padding:6px 12px;color:var(--dp-icon-color);box-sizing:content-box}.dp__input_icon{cursor:pointer;position:absolute;top:50%;inset-inline-start:0;transform:translateY(-50%);color:var(--dp-icon-color)}.dp--clear-btn{position:absolute;top:50%;inset-inline-end:0;transform:translateY(-50%);cursor:pointer;color:var(--dp-icon-color);background:rgba(0,0,0,0);border:none;display:inline-flex;align-items:center;padding:0;margin:0}.dp__input_icon_pad{padding-inline-start:var(--dp-input-icon-padding)}.dp__menu{background:var(--dp-background-color);border-radius:var(--dp-border-radius);min-width:var(--dp-menu-min-width);font-family:var(--dp-font-family);font-size:var(--dp-font-size);-webkit-user-select:none;-moz-user-select:none;user-select:none;border:1px solid var(--dp-menu-border-color);box-sizing:border-box}.dp__menu::after{box-sizing:border-box}.dp__menu::before{box-sizing:border-box}.dp__menu:focus{border:1px solid var(--dp-menu-border-color);outline:none}.dp--menu-wrapper{position:absolute;z-index:99999}.dp__menu_inner{padding:var(--dp-menu-padding)}.dp--menu--inner-stretched{padding:6px 0}.dp__menu_index{z-index:99999}.dp-menu-loading,.dp__menu_readonly,.dp__menu_disabled{position:absolute;inset:0;z-index:999999}.dp__menu_disabled{background:hsla(0,0%,100%,.5);cursor:not-allowed}.dp__menu_readonly{background:rgba(0,0,0,0);cursor:default}.dp-menu-loading{background:hsla(0,0%,100%,.5);cursor:default}.dp--menu-load-container{display:flex;height:100%;width:100%;justify-content:center;align-items:center}.dp--menu-loader{width:48px;height:48px;border:var(--dp-loader);border-bottom-color:rgba(0,0,0,0);border-radius:50%;display:inline-block;box-sizing:border-box;animation:dp-load-rotation 1s linear infinite;position:absolute}@keyframes dp-load-rotation{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.dp__arrow_top{left:var(--dp-arrow-left);top:0;height:12px;width:12px;background-color:var(--dp-background-color);position:absolute;border-inline-end:1px solid var(--dp-menu-border-color);border-top:1px solid var(--dp-menu-border-color);transform:translate(-50%, -50%) rotate(-45deg)}.dp__arrow_bottom{left:var(--dp-arrow-left);bottom:0;height:12px;width:12px;background-color:var(--dp-background-color);position:absolute;border-inline-end:1px solid var(--dp-menu-border-color);border-bottom:1px solid var(--dp-menu-border-color);transform:translate(-50%, 50%) rotate(45deg)}.dp__action_extra{text-align:center;padding:2px 0}.dp--preset-dates{padding:5px;border-inline-end:1px solid var(--dp-border-color)}.dp--preset-dates[data-dp-mobile]{display:flex;align-self:center;border:none;overflow-x:auto;max-width:calc(var(--dp-menu-width) - var(--dp-action-row-padding)*2)}.dp--preset-dates-collapsed{display:flex;align-self:center;border:none;overflow-x:auto;max-width:calc(var(--dp-menu-width) - var(--dp-action-row-padding)*2)}.dp__sidebar_left{padding:5px;border-inline-end:1px solid var(--dp-border-color)}.dp__sidebar_right{padding:5px;margin-inline-end:1px solid var(--dp-border-color)}.dp--preset-range{display:block;width:100%;padding:5px;text-align:left;white-space:nowrap;color:var(--dp-text-color);border-radius:var(--dp-border-radius);transition:var(--dp-common-transition)}.dp--preset-range:hover{background-color:var(--dp-hover-color);color:var(--dp-hover-text-color);cursor:pointer}.dp--preset-range[data-dp-mobile]{border:1px solid var(--dp-border-color);margin:0 3px}.dp--preset-range[data-dp-mobile]:first-child{margin-left:0}.dp--preset-range[data-dp-mobile]:last-child{margin-right:0}.dp--preset-range-collapsed{border:1px solid var(--dp-border-color);margin:0 3px}.dp--preset-range-collapsed:first-child{margin-left:0}.dp--preset-range-collapsed:last-child{margin-right:0}.dp__menu_content_wrapper{display:flex}.dp__menu_content_wrapper[data-dp-mobile]{flex-direction:column-reverse}.dp--menu-content-wrapper-collapsed{flex-direction:column-reverse}.dp__calendar_header{position:relative;display:flex;justify-content:center;align-items:center;color:var(--dp-text-color);white-space:nowrap;font-weight:bold}.dp__calendar_header_item{text-align:center;flex-grow:1;height:var(--dp-cell-size);padding:var(--dp-cell-padding);width:var(--dp-cell-size);box-sizing:border-box}.dp__calendar_row{display:flex;justify-content:center;align-items:center;margin:var(--dp-row-margin)}.dp__calendar_item{text-align:center;flex-grow:1;box-sizing:border-box;color:var(--dp-text-color)}.dp__calendar{position:relative}.dp__calendar_header_cell{border-bottom:thin solid var(--dp-border-color);padding:var(--dp-calendar-header-cell-padding)}.dp__cell_inner{display:flex;align-items:center;text-align:center;justify-content:center;border-radius:var(--dp-cell-border-radius);height:var(--dp-cell-size);padding:var(--dp-cell-padding);width:var(--dp-cell-size);border:1px solid rgba(0,0,0,0);box-sizing:border-box;position:relative}.dp__cell_inner:hover{transition:all .2s}.dp__cell_auto_range_start,.dp__date_hover_start:hover,.dp__range_start{border-end-end-radius:0;border-start-end-radius:0}.dp__cell_auto_range_end,.dp__date_hover_end:hover,.dp__range_end{border-end-start-radius:0;border-start-start-radius:0}.dp__range_end,.dp__range_start,.dp__active_date{background:var(--dp-primary-color);color:var(--dp-primary-text-color)}.dp__date_hover_end:hover,.dp__date_hover_start:hover,.dp__date_hover:hover{background:var(--dp-hover-color);color:var(--dp-hover-text-color)}.dp__cell_offset{color:var(--dp-secondary-color)}.dp__cell_disabled{color:var(--dp-secondary-color);cursor:not-allowed}.dp__range_between{background:var(--dp-range-between-dates-background-color);color:var(--dp-range-between-dates-text-color);border-radius:0;border:1px solid var(--dp-range-between-border-color)}.dp__range_between_week{background:var(--dp-primary-color);color:var(--dp-primary-text-color);border-radius:0;border-top:1px solid var(--dp-primary-color);border-bottom:1px solid var(--dp-primary-color)}.dp__today{border:1px solid var(--dp-primary-color)}.dp__week_num{color:var(--dp-secondary-color);text-align:center}.dp__cell_auto_range{border-radius:0;border-top:1px dashed var(--dp-primary-color);border-bottom:1px dashed var(--dp-primary-color)}.dp__cell_auto_range_start{border-start-start-radius:var(--dp-cell-border-radius);border-end-start-radius:var(--dp-cell-border-radius);border-inline-start:1px dashed var(--dp-primary-color);border-top:1px dashed var(--dp-primary-color);border-bottom:1px dashed var(--dp-primary-color)}.dp__cell_auto_range_end{border-start-end-radius:var(--dp-cell-border-radius);border-end-end-radius:var(--dp-cell-border-radius);border-top:1px dashed var(--dp-primary-color);border-bottom:1px dashed var(--dp-primary-color);border-inline-end:1px dashed var(--dp-primary-color)}.dp__calendar_header_separator{width:100%;height:1px;background:var(--dp-border-color)}.dp__calendar_next{margin-inline-start:var(--dp-multi-calendars-spacing)}.dp__marker_line,.dp__marker_dot{height:5px;background-color:var(--dp-marker-color);position:absolute;bottom:0}.dp__marker_dot{width:5px;border-radius:50%;left:50%;transform:translateX(-50%)}.dp__marker_line{width:100%;left:0}.dp__marker_tooltip{position:absolute;border-radius:var(--dp-border-radius);background-color:var(--dp-tooltip-color);padding:5px;border:1px solid var(--dp-border-color);z-index:99999;box-sizing:border-box;cursor:default}.dp__tooltip_content{white-space:nowrap}.dp__tooltip_text{display:flex;align-items:center;flex-flow:row nowrap;color:var(--dp-text-color)}.dp__tooltip_mark{height:5px;width:5px;border-radius:50%;background-color:var(--dp-text-color);color:var(--dp-text-color);margin-inline-end:5px}.dp__arrow_bottom_tp{bottom:0;height:8px;width:8px;background-color:var(--dp-tooltip-color);position:absolute;border-inline-end:1px solid var(--dp-border-color);border-bottom:1px solid var(--dp-border-color);transform:translate(-50%, 50%) rotate(45deg)}.dp__instance_calendar{position:relative;width:100%}.dp__flex_display[data-dp-mobile]{flex-direction:column}.dp--flex-display-collapsed{flex-direction:column}.dp__cell_highlight{background-color:var(--dp-highlight-color)}.dp__month_year_row{display:flex;align-items:center;height:var(--dp-month-year-row-height);color:var(--dp-text-color);box-sizing:border-box}.dp__inner_nav{display:flex;align-items:center;justify-content:center;cursor:pointer;height:var(--dp-month-year-row-button-size);width:var(--dp-month-year-row-button-size);color:var(--dp-icon-color);text-align:center;border-radius:50%}.dp__inner_nav svg{height:var(--dp-button-icon-height);width:var(--dp-button-icon-height)}.dp__inner_nav:hover{background:var(--dp-hover-color);color:var(--dp-hover-icon-color)}[dir=rtl] .dp__inner_nav{transform:rotate(180deg)}.dp__inner_nav_disabled:hover,.dp__inner_nav_disabled{background:var(--dp-disabled-color);color:var(--dp-disabled-color-text);cursor:not-allowed}.dp--year-select,.dp__month_year_select{text-align:center;cursor:pointer;height:var(--dp-month-year-row-height);display:flex;align-items:center;justify-content:center;border-radius:var(--dp-border-radius);box-sizing:border-box;color:var(--dp-text-color)}.dp--year-select:hover,.dp__month_year_select:hover{background:var(--dp-hover-color);color:var(--dp-hover-text-color);transition:var(--dp-common-transition)}.dp__month_year_select{width:50%}.dp--year-select{width:100%}.dp__month_year_wrap{display:flex;flex-direction:row;width:100%}.dp__year_disable_select{justify-content:space-around}.dp--header-wrap{display:flex;width:100%;flex-direction:column}.dp__overlay{width:100%;background:var(--dp-background-color);transition:opacity 1s ease-out;z-index:99999;font-family:var(--dp-font-family);color:var(--dp-text-color);box-sizing:border-box}.dp--overlay-absolute{position:absolute;height:100%;top:0;left:0}.dp--overlay-relative{position:relative}.dp__overlay_container::-webkit-scrollbar-track{box-shadow:var(--dp-scroll-bar-background);background-color:var(--dp-scroll-bar-background)}.dp__overlay_container::-webkit-scrollbar{width:5px;background-color:var(--dp-scroll-bar-background)}.dp__overlay_container::-webkit-scrollbar-thumb{background-color:var(--dp-scroll-bar-color);border-radius:10px}.dp__overlay:focus{border:none;outline:none}.dp__container_flex{display:flex}.dp__container_block{display:block}.dp__overlay_container{flex-direction:column;overflow-y:auto;height:var(--dp-overlay-height)}.dp__time_picker_overlay_container{height:100%}.dp__overlay_row{padding:0;box-sizing:border-box;display:flex;margin-inline:auto;flex-wrap:wrap;max-width:100%;width:100%;align-items:center}.dp__flex_row{flex:1}.dp__overlay_col{box-sizing:border-box;width:33%;padding:var(--dp-overlay-col-padding);white-space:nowrap}.dp__overlay_cell_pad{padding:var(--dp-common-padding) 0}.dp__overlay_cell_active{cursor:pointer;border-radius:var(--dp-border-radius);text-align:center;background:var(--dp-primary-color);color:var(--dp-primary-text-color)}.dp__overlay_cell{cursor:pointer;border-radius:var(--dp-border-radius);text-align:center}.dp__overlay_cell:hover{background:var(--dp-hover-color);color:var(--dp-hover-text-color);transition:var(--dp-common-transition)}.dp__cell_in_between{background:var(--dp-hover-color);color:var(--dp-hover-text-color)}.dp__over_action_scroll{right:5px;box-sizing:border-box}.dp__overlay_cell_disabled{cursor:not-allowed;background:var(--dp-disabled-color)}.dp__overlay_cell_disabled:hover{background:var(--dp-disabled-color)}.dp__overlay_cell_active_disabled{cursor:not-allowed;background:var(--dp-primary-disabled-color)}.dp__overlay_cell_active_disabled:hover{background:var(--dp-primary-disabled-color)}.dp__btn,.dp--qr-btn,.dp--time-overlay-btn,.dp--time-invalid{border:none;font:inherit;transition:var(--dp-common-transition);line-height:normal}.dp--year-mode-picker{display:flex;width:100%;align-items:center;justify-content:space-between;height:var(--dp-cell-size)}.dp--tp-wrap{max-width:var(--dp-menu-min-width)}.dp--tp-wrap[data-dp-mobile]{max-width:100%}.dp__time_input{width:100%;display:flex;align-items:center;justify-content:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;font-family:var(--dp-font-family);color:var(--dp-text-color)}.dp__time_col_reg_block{padding:0 20px}.dp__time_col_reg_inline{padding:0 10px}.dp__time_col_reg_with_button{padding:0 15px}.dp__time_col_reg_with_button[data-compact~=true]{padding:0 5px}.dp__time_col_sec{padding:0 10px}.dp__time_col_sec_with_button{padding:0 5px}.dp__time_col_sec_with_button[data-collapsed~=true]{padding:0}.dp__time_col{text-align:center;display:flex;align-items:center;justify-content:center;flex-direction:column}.dp__time_col_block{font-size:var(--dp-time-font-size)}.dp__time_display_block{padding:0 3px}.dp__time_display_inline{padding:5px}.dp__time_picker_inline_container{display:flex;width:100%;justify-content:center}.dp__inc_dec_button{padding:5px;margin:0;height:var(--dp-time-inc-dec-button-size);width:var(--dp-time-inc-dec-button-size);display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:50%;color:var(--dp-icon-color);box-sizing:border-box}.dp__inc_dec_button svg{height:var(--dp-time-inc-dec-button-size);width:var(--dp-time-inc-dec-button-size)}.dp__inc_dec_button:hover{background:var(--dp-hover-color);color:var(--dp-hover-icon-color)}.dp__time_display{cursor:pointer;color:var(--dp-text-color);border-radius:var(--dp-border-radius);display:flex;align-items:center;justify-content:center}.dp__time_display:hover:enabled{background:var(--dp-hover-color);color:var(--dp-hover-text-color)}.dp__inc_dec_button_inline{width:100%;padding:0;height:8px;cursor:pointer;display:flex;align-items:center}.dp__inc_dec_button_disabled,.dp__inc_dec_button_disabled:hover{background:var(--dp-disabled-color);color:var(--dp-disabled-color-text);cursor:not-allowed}.dp__pm_am_button{background:var(--dp-primary-color);color:var(--dp-primary-text-color);border:none;padding:var(--dp-common-padding);border-radius:var(--dp-border-radius);cursor:pointer}.dp__pm_am_button[data-compact~=true]{padding:7px}.dp__tp_inline_btn_bar{width:100%;height:4px;background-color:var(--dp-secondary-color);transition:var(--dp-common-transition);border-collapse:collapse}.dp__tp_inline_btn_top:hover .dp__tp_btn_in_r{background-color:var(--dp-primary-color);transform:rotate(12deg) scale(1.15) translateY(-2px)}.dp__tp_inline_btn_top:hover .dp__tp_btn_in_l{background-color:var(--dp-primary-color);transform:rotate(-12deg) scale(1.15) translateY(-2px)}.dp__tp_inline_btn_bottom:hover .dp__tp_btn_in_r{background-color:var(--dp-primary-color);transform:rotate(-12deg) scale(1.15) translateY(-2px)}.dp__tp_inline_btn_bottom:hover .dp__tp_btn_in_l{background-color:var(--dp-primary-color);transform:rotate(12deg) scale(1.15) translateY(-2px)}.dp--time-overlay-btn{background:none}.dp--time-invalid{background-color:var(--dp-disabled-color)}.dp__action_row{display:flex;align-items:center;width:100%;padding:var(--dp-action-row-padding);box-sizing:border-box;color:var(--dp-text-color);flex-flow:row nowrap}.dp__action_row svg{height:var(--dp-button-icon-height);width:auto}.dp__selection_preview{display:block;color:var(--dp-text-color);font-size:var(--dp-preview-font-size);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.dp__action_buttons{display:flex;flex:0;white-space:nowrap;align-items:center;justify-content:flex-end;margin-inline-start:auto}.dp__action_button{display:inline-flex;align-items:center;background:rgba(0,0,0,0);border:1px solid rgba(0,0,0,0);padding:var(--dp-action-buttons-padding);line-height:var(--dp-action-button-height);margin-inline-start:3px;height:var(--dp-action-button-height);cursor:pointer;border-radius:var(--dp-border-radius);font-size:var(--dp-preview-font-size);font-family:var(--dp-font-family)}.dp__action_cancel{color:var(--dp-text-color);border:1px solid var(--dp-border-color)}.dp__action_cancel:hover{border-color:var(--dp-primary-color);transition:var(--dp-action-row-transition)}.dp__action_buttons .dp__action_select{background:var(--dp-primary-color);color:var(--dp-primary-text-color)}.dp__action_buttons .dp__action_select:hover{background:var(--dp-primary-color);transition:var(--dp-action-row-transition)}.dp__action_buttons .dp__action_select:disabled{background:var(--dp-primary-disabled-color);cursor:not-allowed}.dp-quarter-picker-wrap{display:flex;flex-direction:column;height:100%;min-width:var(--dp-menu-min-width)}.dp--qr-btn-disabled{cursor:not-allowed;background:var(--dp-disabled-color)}.dp--qr-btn-disabled:hover{background:var(--dp-disabled-color)}.dp--qr-btn{width:100%;padding:var(--dp-common-padding)}.dp--qr-btn:not(.dp--highlighted,.dp--qr-btn-active,.dp--qr-btn-disabled,.dp--qr-btn-between){background:none}.dp--qr-btn:hover:not(.dp--qr-btn-active,.dp--qr-btn-disabled){background:var(--dp-hover-color);color:var(--dp-hover-text-color);transition:var(--dp-common-transition)}.dp--quarter-items{display:flex;flex-direction:column;flex:1;width:100%;height:100%;justify-content:space-evenly}.dp--qr-btn-active{background:var(--dp-primary-color);color:var(--dp-primary-text-color)}.dp--qr-btn-between{background:var(--dp-hover-color);color:var(--dp-hover-text-color)}:root{--dp-common-transition: all 0.1s ease-in;--dp-menu-padding: 6px 8px;--dp-animation-duration: 0.1s;--dp-menu-appear-transition-timing: cubic-bezier(.4, 0, 1, 1);--dp-transition-timing: ease-out;--dp-action-row-transition: all 0.2s ease-in;--dp-font-family: -apple-system, blinkmacsystemfont, "Segoe UI", roboto, oxygen, ubuntu, cantarell, "Open Sans", "Helvetica Neue", sans-serif;--dp-border-radius: 4px;--dp-cell-border-radius: 4px;--dp-transition-length: 22px;--dp-transition-timing-general: 0.1s;--dp-button-height: 35px;--dp-month-year-row-height: 35px;--dp-month-year-row-button-size: 25px;--dp-button-icon-height: 20px;--dp-calendar-wrap-padding: 0 5px;--dp-cell-size: 35px;--dp-cell-padding: 5px;--dp-common-padding: 10px;--dp-input-icon-padding: 35px;--dp-input-padding: 6px 30px 6px 12px;--dp-input-not-clearable-padding: 12px;--dp-menu-min-width: 260px;--dp-action-buttons-padding: 1px 6px;--dp-row-margin: 5px 0;--dp-calendar-header-cell-padding: 0.5rem;--dp-multi-calendars-spacing: 10px;--dp-overlay-col-padding: 3px;--dp-time-inc-dec-button-size: 32px;--dp-font-size: 1rem;--dp-preview-font-size: 0.8rem;--dp-time-font-size: 2rem;--dp-action-button-height: 22px;--dp-action-row-padding: 8px;--dp-direction: ltr}.dp__theme_dark{--dp-background-color: #212121;--dp-text-color: #fff;--dp-hover-color: #484848;--dp-hover-text-color: #fff;--dp-hover-icon-color: #959595;--dp-primary-color: #005cb2;--dp-primary-disabled-color: #61a8ea;--dp-primary-text-color: #fff;--dp-secondary-color: #a9a9a9;--dp-border-color: #2d2d2d;--dp-menu-border-color: #2d2d2d;--dp-border-color-hover: #aaaeb7;--dp-border-color-focus: #aaaeb7;--dp-disabled-color: #737373;--dp-disabled-color-text: #d0d0d0;--dp-scroll-bar-background: #212121;--dp-scroll-bar-color: #484848;--dp-success-color: #00701a;--dp-success-color-disabled: #428f59;--dp-icon-color: #959595;--dp-danger-color: #e53935;--dp-marker-color: #e53935;--dp-tooltip-color: #3e3e3e;--dp-highlight-color: rgb(0 92 178 / 20%);--dp-range-between-dates-background-color: var(--dp-hover-color, #484848);--dp-range-between-dates-text-color: var(--dp-hover-text-color, #fff);--dp-range-between-border-color: var(--dp-hover-color, #fff);--dp-loader: 5px solid #005cb2}.dp__theme_light{--dp-background-color: #fff;--dp-text-color: #212121;--dp-hover-color: #f3f3f3;--dp-hover-text-color: #212121;--dp-hover-icon-color: #959595;--dp-primary-color: #1976d2;--dp-primary-disabled-color: #6bacea;--dp-primary-text-color: #fff;--dp-secondary-color: #c0c4cc;--dp-border-color: #ddd;--dp-menu-border-color: #ddd;--dp-border-color-hover: #aaaeb7;--dp-border-color-focus: #aaaeb7;--dp-disabled-color: #f6f6f6;--dp-scroll-bar-background: #f3f3f3;--dp-scroll-bar-color: #959595;--dp-success-color: #76d275;--dp-success-color-disabled: #a3d9b1;--dp-icon-color: #959595;--dp-danger-color: #ff6f60;--dp-marker-color: #ff6f60;--dp-tooltip-color: #fafafa;--dp-disabled-color-text: #8e8e8e;--dp-highlight-color: rgb(25 118 210 / 10%);--dp-range-between-dates-background-color: var(--dp-hover-color, #f3f3f3);--dp-range-between-dates-text-color: var(--dp-hover-text-color, #212121);--dp-range-between-border-color: var(--dp-hover-color, #f3f3f3);--dp-loader: 5px solid #1976d2}.dp__flex{display:flex;align-items:center}.dp__btn{background:none}.dp__main{font-family:var(--dp-font-family);-webkit-user-select:none;-moz-user-select:none;user-select:none;box-sizing:border-box;position:relative;width:100%}.dp__main *{direction:var(--dp-direction, ltr)}.dp__pointer{cursor:pointer}.dp__icon{stroke:currentcolor;fill:currentcolor}.dp__button{width:100%;text-align:center;color:var(--dp-icon-color);cursor:pointer;display:flex;align-items:center;place-content:center center;padding:var(--dp-common-padding);box-sizing:border-box;height:var(--dp-button-height)}.dp__button.dp__overlay_action{position:absolute;bottom:0}.dp__button:hover{background:var(--dp-hover-color);color:var(--dp-hover-icon-color)}.dp__button svg{height:var(--dp-button-icon-height);width:auto}.dp__button_bottom{border-bottom-left-radius:var(--dp-border-radius);border-bottom-right-radius:var(--dp-border-radius)}.dp__flex_display{display:flex}.dp__flex_display_with_input{flex-direction:column;align-items:flex-start}.dp__relative{position:relative}.calendar-next-enter-active,.calendar-next-leave-active,.calendar-prev-enter-active,.calendar-prev-leave-active{transition:all var(--dp-transition-timing-general) ease-out}.calendar-next-enter-from{opacity:0;transform:translateX(var(--dp-transition-length))}.calendar-next-leave-to{opacity:0;transform:translateX(calc(var(--dp-transition-length) * -1))}.calendar-prev-enter-from{opacity:0;transform:translateX(calc(var(--dp-transition-length) * -1))}.calendar-prev-leave-to{opacity:0;transform:translateX(var(--dp-transition-length))}.dp-menu-appear-bottom-enter-active,.dp-menu-appear-bottom-leave-active,.dp-menu-appear-top-enter-active,.dp-menu-appear-top-leave-active,.dp-slide-up-enter-active,.dp-slide-up-leave-active,.dp-slide-down-enter-active,.dp-slide-down-leave-active{transition:all var(--dp-animation-duration) var(--dp-transition-timing)}.dp-menu-appear-top-enter-from,.dp-menu-appear-top-leave-to,.dp-slide-down-leave-to,.dp-slide-up-enter-from{opacity:0;transform:translateY(var(--dp-transition-length))}.dp-menu-appear-bottom-enter-from,.dp-menu-appear-bottom-leave-to,.dp-slide-down-enter-from,.dp-slide-up-leave-to{opacity:0;transform:translateY(calc(var(--dp-transition-length) * -1))}.dp--arrow-btn-nav{transition:var(--dp-common-transition)}.dp--highlighted{background-color:var(--dp-highlight-color)}.dp--hidden-el{visibility:hidden}:root {
|
|
1004
|
+
}.dp__input_wrap{position:relative;width:100%;box-sizing:unset}.dp__input_wrap:focus{border-color:var(--dp-border-color-hover);outline:none}.dp__input_valid{box-shadow:0 0 var(--dp-border-radius) var(--dp-success-color);border-color:var(--dp-success-color)}.dp__input_valid:hover{border-color:var(--dp-success-color)}.dp__input_invalid{box-shadow:0 0 var(--dp-border-radius) var(--dp-danger-color);border-color:var(--dp-danger-color)}.dp__input_invalid:hover{border-color:var(--dp-danger-color)}.dp__input{background-color:var(--dp-background-color);border-radius:var(--dp-border-radius);font-family:var(--dp-font-family);border:1px solid var(--dp-border-color);outline:none;transition:border-color .2s cubic-bezier(0.645, 0.045, 0.355, 1);width:100%;font-size:var(--dp-font-size);line-height:calc(var(--dp-font-size)*1.5);padding:var(--dp-input-padding);color:var(--dp-text-color);box-sizing:border-box}.dp__input::-moz-placeholder{opacity:.7}.dp__input::placeholder{opacity:.7}.dp__input:hover:not(.dp__input_focus){border-color:var(--dp-border-color-hover)}.dp__input_not_clearable{padding-inline-end:var(--dp-input-not-clearable-padding) !important}.dp__input_reg{caret-color:rgba(0,0,0,0)}.dp__input_focus{border-color:var(--dp-border-color-focus)}.dp__disabled{background:var(--dp-disabled-color)}.dp__disabled::-moz-placeholder{color:var(--dp-disabled-color-text)}.dp__disabled::placeholder{color:var(--dp-disabled-color-text)}.dp__input_icons{display:inline-block;width:var(--dp-font-size);height:var(--dp-font-size);stroke-width:0;font-size:var(--dp-font-size);line-height:calc(var(--dp-font-size)*1.5);padding:6px 12px;color:var(--dp-icon-color);box-sizing:content-box}.dp__input_icon{cursor:pointer;position:absolute;top:50%;inset-inline-start:0;transform:translateY(-50%);color:var(--dp-icon-color)}.dp--clear-btn{position:absolute;top:50%;inset-inline-end:0;transform:translateY(-50%);cursor:pointer;color:var(--dp-icon-color);background:rgba(0,0,0,0);border:none;display:inline-flex;align-items:center;padding:0;margin:0}.dp__input_icon_pad{padding-inline-start:var(--dp-input-icon-padding)}.dp__menu{background:var(--dp-background-color);border-radius:var(--dp-border-radius);min-width:var(--dp-menu-min-width);font-family:var(--dp-font-family);font-size:var(--dp-font-size);-webkit-user-select:none;-moz-user-select:none;user-select:none;border:1px solid var(--dp-menu-border-color);box-sizing:border-box}.dp__menu::after{box-sizing:border-box}.dp__menu::before{box-sizing:border-box}.dp__menu:focus{border:1px solid var(--dp-menu-border-color);outline:none}.dp--menu-wrapper{position:absolute;z-index:99999}.dp__menu_inner{padding:var(--dp-menu-padding)}.dp--menu--inner-stretched{padding:6px 0}.dp__menu_index{z-index:99999}.dp-menu-loading,.dp__menu_readonly,.dp__menu_disabled{position:absolute;inset:0;z-index:999999}.dp__menu_disabled{background:hsla(0,0%,100%,.5);cursor:not-allowed}.dp__menu_readonly{background:rgba(0,0,0,0);cursor:default}.dp-menu-loading{background:hsla(0,0%,100%,.5);cursor:default}.dp--menu-load-container{display:flex;height:100%;width:100%;justify-content:center;align-items:center}.dp--menu-loader{width:48px;height:48px;border:var(--dp-loader);border-bottom-color:rgba(0,0,0,0);border-radius:50%;display:inline-block;box-sizing:border-box;animation:dp-load-rotation 1s linear infinite;position:absolute}@keyframes dp-load-rotation{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.dp__arrow_top{height:12px;width:12px;background-color:var(--dp-background-color);position:absolute;border-inline-end:1px solid var(--dp-menu-border-color);border-top:1px solid var(--dp-menu-border-color);transform:translate(0, -50%) rotate(-45deg)}.dp__arrow_bottom{left:var(--dp-arrow-left);bottom:0;height:12px;width:12px;background-color:var(--dp-background-color);position:absolute;border-inline-end:1px solid var(--dp-menu-border-color);border-bottom:1px solid var(--dp-menu-border-color);transform:translate(-50%, 50%) rotate(45deg)}.dp__action_extra{text-align:center;padding:2px 0}.dp--preset-dates{padding:5px;border-inline-end:1px solid var(--dp-border-color)}.dp--preset-dates[data-dp-mobile]{display:flex;align-self:center;border:none;overflow-x:auto;max-width:calc(var(--dp-menu-width) - var(--dp-action-row-padding)*2)}.dp--preset-dates-collapsed{display:flex;align-self:center;border:none;overflow-x:auto;max-width:calc(var(--dp-menu-width) - var(--dp-action-row-padding)*2)}.dp__sidebar_left{padding:5px;border-inline-end:1px solid var(--dp-border-color)}.dp__sidebar_right{padding:5px;margin-inline-end:1px solid var(--dp-border-color)}.dp--preset-range{display:block;width:100%;padding:5px;text-align:left;white-space:nowrap;color:var(--dp-text-color);border-radius:var(--dp-border-radius);transition:var(--dp-common-transition)}.dp--preset-range:hover{background-color:var(--dp-hover-color);color:var(--dp-hover-text-color);cursor:pointer}.dp--preset-range[data-dp-mobile]{border:1px solid var(--dp-border-color);margin:0 3px}.dp--preset-range[data-dp-mobile]:first-child{margin-left:0}.dp--preset-range[data-dp-mobile]:last-child{margin-right:0}.dp--preset-range-collapsed{border:1px solid var(--dp-border-color);margin:0 3px}.dp--preset-range-collapsed:first-child{margin-left:0}.dp--preset-range-collapsed:last-child{margin-right:0}.dp__menu_content_wrapper{display:flex}.dp__menu_content_wrapper[data-dp-mobile]{flex-direction:column-reverse}.dp--menu-content-wrapper-collapsed{flex-direction:column-reverse}.dp__calendar_header{position:relative;display:flex;justify-content:center;align-items:center;color:var(--dp-text-color);white-space:nowrap;font-weight:bold}.dp__calendar_header_item{text-align:center;flex-grow:1;height:var(--dp-cell-size);padding:var(--dp-cell-padding);width:var(--dp-cell-size);box-sizing:border-box}.dp__calendar_row{display:flex;justify-content:center;align-items:center;margin:var(--dp-row-margin)}.dp__calendar_item{text-align:center;flex-grow:1;box-sizing:border-box;color:var(--dp-text-color)}.dp__calendar{position:relative}.dp__calendar_header_cell{border-bottom:thin solid var(--dp-border-color);padding:var(--dp-calendar-header-cell-padding)}.dp__cell_inner{display:flex;align-items:center;text-align:center;justify-content:center;border-radius:var(--dp-cell-border-radius);height:var(--dp-cell-size);padding:var(--dp-cell-padding);width:var(--dp-cell-size);border:1px solid rgba(0,0,0,0);box-sizing:border-box;position:relative}.dp__cell_inner:hover{transition:all .2s}.dp__cell_auto_range_start,.dp__date_hover_start:hover,.dp__range_start{border-end-end-radius:0;border-start-end-radius:0}.dp__cell_auto_range_end,.dp__date_hover_end:hover,.dp__range_end{border-end-start-radius:0;border-start-start-radius:0}.dp__range_end,.dp__range_start,.dp__active_date{background:var(--dp-primary-color);color:var(--dp-primary-text-color)}.dp__date_hover_end:hover,.dp__date_hover_start:hover,.dp__date_hover:hover{background:var(--dp-hover-color);color:var(--dp-hover-text-color)}.dp__cell_offset{color:var(--dp-secondary-color)}.dp__cell_disabled{color:var(--dp-secondary-color);cursor:not-allowed}.dp__range_between{background:var(--dp-range-between-dates-background-color);color:var(--dp-range-between-dates-text-color);border-radius:0;border:1px solid var(--dp-range-between-border-color)}.dp__range_between_week{background:var(--dp-primary-color);color:var(--dp-primary-text-color);border-radius:0;border-top:1px solid var(--dp-primary-color);border-bottom:1px solid var(--dp-primary-color)}.dp__today{border:1px solid var(--dp-primary-color)}.dp__week_num{color:var(--dp-secondary-color);text-align:center}.dp__cell_auto_range{border-radius:0;border-top:1px dashed var(--dp-primary-color);border-bottom:1px dashed var(--dp-primary-color)}.dp__cell_auto_range_start{border-start-start-radius:var(--dp-cell-border-radius);border-end-start-radius:var(--dp-cell-border-radius);border-inline-start:1px dashed var(--dp-primary-color);border-top:1px dashed var(--dp-primary-color);border-bottom:1px dashed var(--dp-primary-color)}.dp__cell_auto_range_end{border-start-end-radius:var(--dp-cell-border-radius);border-end-end-radius:var(--dp-cell-border-radius);border-top:1px dashed var(--dp-primary-color);border-bottom:1px dashed var(--dp-primary-color);border-inline-end:1px dashed var(--dp-primary-color)}.dp__calendar_header_separator{width:100%;height:1px;background:var(--dp-border-color)}.dp__calendar_next{margin-inline-start:var(--dp-multi-calendars-spacing)}.dp__marker_line,.dp__marker_dot{height:5px;background-color:var(--dp-marker-color);position:absolute;bottom:0}.dp__marker_dot{width:5px;border-radius:50%;left:50%;transform:translateX(-50%)}.dp__marker_line{width:100%;left:0}.dp__marker_tooltip{position:absolute;border-radius:var(--dp-border-radius);background-color:var(--dp-tooltip-color);padding:5px;border:1px solid var(--dp-border-color);z-index:99999;box-sizing:border-box;cursor:default}.dp__tooltip_content{white-space:nowrap}.dp__tooltip_text{display:flex;align-items:center;flex-flow:row nowrap;color:var(--dp-text-color)}.dp__tooltip_mark{height:5px;width:5px;border-radius:50%;background-color:var(--dp-text-color);color:var(--dp-text-color);margin-inline-end:5px}.dp__arrow_bottom_tp{bottom:0;height:8px;width:8px;background-color:var(--dp-tooltip-color);position:absolute;border-inline-end:1px solid var(--dp-border-color);border-bottom:1px solid var(--dp-border-color);transform:translate(-50%, 50%) rotate(45deg)}.dp__instance_calendar{position:relative;width:100%}.dp__flex_display[data-dp-mobile]{flex-direction:column}.dp--flex-display-collapsed{flex-direction:column}.dp__cell_highlight{background-color:var(--dp-highlight-color)}.dp__month_year_row{display:flex;align-items:center;height:var(--dp-month-year-row-height);color:var(--dp-text-color);box-sizing:border-box}.dp__inner_nav{display:flex;align-items:center;justify-content:center;cursor:pointer;height:var(--dp-month-year-row-button-size);width:var(--dp-month-year-row-button-size);color:var(--dp-icon-color);text-align:center;border-radius:50%}.dp__inner_nav svg{height:var(--dp-button-icon-height);width:var(--dp-button-icon-height)}.dp__inner_nav:hover{background:var(--dp-hover-color);color:var(--dp-hover-icon-color)}[dir=rtl] .dp__inner_nav{transform:rotate(180deg)}.dp__inner_nav_disabled:hover,.dp__inner_nav_disabled{background:var(--dp-disabled-color);color:var(--dp-disabled-color-text);cursor:not-allowed}.dp--year-select,.dp__month_year_select{text-align:center;cursor:pointer;height:var(--dp-month-year-row-height);display:flex;align-items:center;justify-content:center;border-radius:var(--dp-border-radius);box-sizing:border-box;color:var(--dp-text-color)}.dp--year-select:hover,.dp__month_year_select:hover{background:var(--dp-hover-color);color:var(--dp-hover-text-color);transition:var(--dp-common-transition)}.dp__month_year_select{width:50%}.dp--year-select{width:100%}.dp__month_year_wrap{display:flex;flex-direction:row;width:100%}.dp__year_disable_select{justify-content:space-around}.dp--header-wrap{display:flex;width:100%;flex-direction:column}.dp__overlay{width:100%;background:var(--dp-background-color);transition:opacity 1s ease-out;z-index:99999;font-family:var(--dp-font-family);color:var(--dp-text-color);box-sizing:border-box}.dp--overlay-absolute{position:absolute;height:100%;top:0;left:0}.dp--overlay-relative{position:relative}.dp__overlay_container::-webkit-scrollbar-track{box-shadow:var(--dp-scroll-bar-background);background-color:var(--dp-scroll-bar-background)}.dp__overlay_container::-webkit-scrollbar{width:5px;background-color:var(--dp-scroll-bar-background)}.dp__overlay_container::-webkit-scrollbar-thumb{background-color:var(--dp-scroll-bar-color);border-radius:10px}.dp__overlay:focus{border:none;outline:none}.dp__container_flex{display:flex}.dp__container_block{display:block}.dp__overlay_container{flex-direction:column;overflow-y:auto;height:var(--dp-overlay-height)}.dp__time_picker_overlay_container{height:100%}.dp__overlay_row{padding:0;box-sizing:border-box;display:flex;margin-inline:auto;flex-wrap:wrap;max-width:100%;width:100%;align-items:center}.dp__flex_row{flex:1}.dp__overlay_col{box-sizing:border-box;width:33%;padding:var(--dp-overlay-col-padding);white-space:nowrap}.dp__overlay_cell_pad{padding:var(--dp-common-padding) 0}.dp__overlay_cell_active{cursor:pointer;border-radius:var(--dp-border-radius);text-align:center;background:var(--dp-primary-color);color:var(--dp-primary-text-color)}.dp__overlay_cell{cursor:pointer;border-radius:var(--dp-border-radius);text-align:center}.dp__overlay_cell:hover{background:var(--dp-hover-color);color:var(--dp-hover-text-color);transition:var(--dp-common-transition)}.dp__cell_in_between{background:var(--dp-hover-color);color:var(--dp-hover-text-color)}.dp__over_action_scroll{right:5px;box-sizing:border-box}.dp__overlay_cell_disabled{cursor:not-allowed;background:var(--dp-disabled-color)}.dp__overlay_cell_disabled:hover{background:var(--dp-disabled-color)}.dp__overlay_cell_active_disabled{cursor:not-allowed;background:var(--dp-primary-disabled-color)}.dp__overlay_cell_active_disabled:hover{background:var(--dp-primary-disabled-color)}.dp__btn,.dp--qr-btn,.dp--time-overlay-btn,.dp--time-invalid{border:none;font:inherit;transition:var(--dp-common-transition);line-height:normal}.dp--year-mode-picker{display:flex;width:100%;align-items:center;justify-content:space-between;height:var(--dp-cell-size)}.dp--tp-wrap{width:100%}.dp--tp-wrap[data-dp-mobile]{max-width:100%}.dp__time_input{width:100%;display:flex;align-items:center;justify-content:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;font-family:var(--dp-font-family);color:var(--dp-text-color)}.dp__time_col_reg_block{padding:0 20px}.dp__time_col_reg_inline{padding:0 10px}.dp__time_col_reg_with_button{padding:0 15px}.dp__time_col_reg_with_button[data-compact~=true]{padding:0 5px}.dp__time_col_sec{padding:0 10px}.dp__time_col_sec_with_button{padding:0 5px}.dp__time_col_sec_with_button[data-collapsed~=true]{padding:0}.dp__time_col{text-align:center;display:flex;align-items:center;justify-content:center;flex-direction:column}.dp__time_col_block{font-size:var(--dp-time-font-size)}.dp__time_display_block{padding:0 3px}.dp__time_display_inline{padding:5px}.dp__time_picker_inline_container{display:flex;width:100%;justify-content:center}.dp__inc_dec_button{padding:5px;margin:0;height:var(--dp-time-inc-dec-button-size);width:var(--dp-time-inc-dec-button-size);display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:50%;color:var(--dp-icon-color);box-sizing:border-box}.dp__inc_dec_button svg{height:var(--dp-time-inc-dec-button-size);width:var(--dp-time-inc-dec-button-size)}.dp__inc_dec_button:hover{background:var(--dp-hover-color);color:var(--dp-hover-icon-color)}.dp__time_display{cursor:pointer;color:var(--dp-text-color);border-radius:var(--dp-border-radius);display:flex;align-items:center;justify-content:center}.dp__time_display:hover:enabled{background:var(--dp-hover-color);color:var(--dp-hover-text-color)}.dp__inc_dec_button_inline{width:100%;padding:0;height:8px;cursor:pointer;display:flex;align-items:center}.dp__inc_dec_button_disabled,.dp__inc_dec_button_disabled:hover{background:var(--dp-disabled-color);color:var(--dp-disabled-color-text);cursor:not-allowed}.dp__pm_am_button{background:var(--dp-primary-color);color:var(--dp-primary-text-color);border:none;padding:var(--dp-common-padding);border-radius:var(--dp-border-radius);cursor:pointer}.dp__pm_am_button[data-compact~=true]{padding:7px}.dp__tp_inline_btn_bar{width:100%;height:4px;background-color:var(--dp-secondary-color);transition:var(--dp-common-transition);border-collapse:collapse}.dp__tp_inline_btn_top:hover .dp__tp_btn_in_r{background-color:var(--dp-primary-color);transform:rotate(12deg) scale(1.15) translateY(-2px)}.dp__tp_inline_btn_top:hover .dp__tp_btn_in_l{background-color:var(--dp-primary-color);transform:rotate(-12deg) scale(1.15) translateY(-2px)}.dp__tp_inline_btn_bottom:hover .dp__tp_btn_in_r{background-color:var(--dp-primary-color);transform:rotate(-12deg) scale(1.15) translateY(-2px)}.dp__tp_inline_btn_bottom:hover .dp__tp_btn_in_l{background-color:var(--dp-primary-color);transform:rotate(12deg) scale(1.15) translateY(-2px)}.dp--time-overlay-btn{background:none}.dp--time-invalid{background-color:var(--dp-disabled-color)}.dp__action_row{display:flex;align-items:center;width:100%;padding:var(--dp-action-row-padding);box-sizing:border-box;color:var(--dp-text-color);flex-flow:row nowrap}.dp__action_row svg{height:var(--dp-button-icon-height);width:auto}.dp__selection_preview{display:block;color:var(--dp-text-color);font-size:var(--dp-preview-font-size);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.dp__action_buttons{display:flex;flex:0;white-space:nowrap;align-items:center;justify-content:flex-end;margin-inline-start:auto}.dp__action_button{display:inline-flex;align-items:center;background:rgba(0,0,0,0);border:1px solid rgba(0,0,0,0);padding:var(--dp-action-buttons-padding);line-height:var(--dp-action-button-height);margin-inline-start:3px;height:var(--dp-action-button-height);cursor:pointer;border-radius:var(--dp-border-radius);font-size:var(--dp-preview-font-size);font-family:var(--dp-font-family)}.dp__action_cancel{color:var(--dp-text-color);border:1px solid var(--dp-border-color)}.dp__action_cancel:hover{border-color:var(--dp-primary-color);transition:var(--dp-action-row-transition)}.dp__action_buttons .dp__action_select{background:var(--dp-primary-color);color:var(--dp-primary-text-color)}.dp__action_buttons .dp__action_select:hover{background:var(--dp-primary-color);transition:var(--dp-action-row-transition)}.dp__action_buttons .dp__action_select:disabled{background:var(--dp-primary-disabled-color);cursor:not-allowed}.dp-quarter-picker-wrap{display:flex;flex-direction:column;height:100%;min-width:var(--dp-menu-min-width)}.dp--qr-btn-disabled{cursor:not-allowed;background:var(--dp-disabled-color)}.dp--qr-btn-disabled:hover{background:var(--dp-disabled-color)}.dp--qr-btn{width:100%;padding:var(--dp-common-padding)}.dp--qr-btn:not(.dp--highlighted,.dp--qr-btn-active,.dp--qr-btn-disabled,.dp--qr-btn-between){background:none}.dp--qr-btn:hover:not(.dp--qr-btn-active,.dp--qr-btn-disabled){background:var(--dp-hover-color);color:var(--dp-hover-text-color);transition:var(--dp-common-transition)}.dp--quarter-items{display:flex;flex-direction:column;flex:1;width:100%;height:100%;justify-content:space-evenly}.dp--qr-btn-active{background:var(--dp-primary-color);color:var(--dp-primary-text-color)}.dp--qr-btn-between{background:var(--dp-hover-color);color:var(--dp-hover-text-color)}:root{--dp-common-transition: all 0.1s ease-in;--dp-menu-padding: 6px 8px;--dp-animation-duration: 0.1s;--dp-menu-appear-transition-timing: cubic-bezier(.4, 0, 1, 1);--dp-transition-timing: ease-out;--dp-action-row-transition: all 0.2s ease-in;--dp-font-family: -apple-system, blinkmacsystemfont, "Segoe UI", roboto, oxygen, ubuntu, cantarell, "Open Sans", "Helvetica Neue", sans-serif;--dp-border-radius: 4px;--dp-cell-border-radius: 4px;--dp-transition-length: 22px;--dp-transition-timing-general: 0.1s;--dp-button-height: 35px;--dp-month-year-row-height: 35px;--dp-month-year-row-button-size: 25px;--dp-button-icon-height: 20px;--dp-calendar-wrap-padding: 0 5px;--dp-cell-size: 35px;--dp-cell-padding: 5px;--dp-common-padding: 10px;--dp-input-icon-padding: 35px;--dp-input-padding: 6px 30px 6px 12px;--dp-input-not-clearable-padding: 12px;--dp-menu-min-width: 260px;--dp-action-buttons-padding: 1px 6px;--dp-row-margin: 5px 0;--dp-calendar-header-cell-padding: 0.5rem;--dp-multi-calendars-spacing: 10px;--dp-overlay-col-padding: 3px;--dp-time-inc-dec-button-size: 32px;--dp-font-size: 1rem;--dp-preview-font-size: 0.8rem;--dp-time-font-size: 2rem;--dp-action-button-height: 22px;--dp-action-row-padding: 8px;--dp-direction: ltr}.dp__theme_dark{--dp-background-color: #212121;--dp-text-color: #fff;--dp-hover-color: #484848;--dp-hover-text-color: #fff;--dp-hover-icon-color: #959595;--dp-primary-color: #005cb2;--dp-primary-disabled-color: #61a8ea;--dp-primary-text-color: #fff;--dp-secondary-color: #a9a9a9;--dp-border-color: #2d2d2d;--dp-menu-border-color: #2d2d2d;--dp-border-color-hover: #aaaeb7;--dp-border-color-focus: #aaaeb7;--dp-disabled-color: #737373;--dp-disabled-color-text: #d0d0d0;--dp-scroll-bar-background: #212121;--dp-scroll-bar-color: #484848;--dp-success-color: #00701a;--dp-success-color-disabled: #428f59;--dp-icon-color: #959595;--dp-danger-color: #e53935;--dp-marker-color: #e53935;--dp-tooltip-color: #3e3e3e;--dp-highlight-color: rgb(0 92 178 / 20%);--dp-range-between-dates-background-color: var(--dp-hover-color, #484848);--dp-range-between-dates-text-color: var(--dp-hover-text-color, #fff);--dp-range-between-border-color: var(--dp-hover-color, #fff);--dp-loader: 5px solid #005cb2}.dp__theme_light{--dp-background-color: #fff;--dp-text-color: #212121;--dp-hover-color: #f3f3f3;--dp-hover-text-color: #212121;--dp-hover-icon-color: #959595;--dp-primary-color: #1976d2;--dp-primary-disabled-color: #6bacea;--dp-primary-text-color: #fff;--dp-secondary-color: #c0c4cc;--dp-border-color: #ddd;--dp-menu-border-color: #ddd;--dp-border-color-hover: #aaaeb7;--dp-border-color-focus: #aaaeb7;--dp-disabled-color: #f6f6f6;--dp-scroll-bar-background: #f3f3f3;--dp-scroll-bar-color: #959595;--dp-success-color: #76d275;--dp-success-color-disabled: #a3d9b1;--dp-icon-color: #959595;--dp-danger-color: #ff6f60;--dp-marker-color: #ff6f60;--dp-tooltip-color: #fafafa;--dp-disabled-color-text: #8e8e8e;--dp-highlight-color: rgb(25 118 210 / 10%);--dp-range-between-dates-background-color: var(--dp-hover-color, #f3f3f3);--dp-range-between-dates-text-color: var(--dp-hover-text-color, #212121);--dp-range-between-border-color: var(--dp-hover-color, #f3f3f3);--dp-loader: 5px solid #1976d2}.dp__flex{display:flex;align-items:center}.dp__btn{background:none}.dp__main{font-family:var(--dp-font-family);-webkit-user-select:none;-moz-user-select:none;user-select:none;box-sizing:border-box;position:relative;width:100%}.dp__main *{direction:var(--dp-direction, ltr)}.dp__pointer{cursor:pointer}.dp__icon{stroke:currentcolor;fill:currentcolor}.dp__button{width:100%;text-align:center;color:var(--dp-icon-color);cursor:pointer;display:flex;align-items:center;place-content:center center;padding:var(--dp-common-padding);box-sizing:border-box;height:var(--dp-button-height)}.dp__button.dp__overlay_action{position:absolute;bottom:0}.dp__button:hover{background:var(--dp-hover-color);color:var(--dp-hover-icon-color)}.dp__button svg{height:var(--dp-button-icon-height);width:auto}.dp__button_bottom{border-bottom-left-radius:var(--dp-border-radius);border-bottom-right-radius:var(--dp-border-radius)}.dp__flex_display{display:flex}.dp__flex_display_with_input{flex-direction:column;align-items:flex-start}.dp__relative{position:relative}.calendar-next-enter-active,.calendar-next-leave-active,.calendar-prev-enter-active,.calendar-prev-leave-active{transition:all var(--dp-transition-timing-general) ease-out}.calendar-next-enter-from{opacity:0;transform:translateX(var(--dp-transition-length))}.calendar-next-leave-to{opacity:0;transform:translateX(calc(var(--dp-transition-length) * -1))}.calendar-prev-enter-from{opacity:0;transform:translateX(calc(var(--dp-transition-length) * -1))}.calendar-prev-leave-to{opacity:0;transform:translateX(var(--dp-transition-length))}.dp-menu-appear-bottom-enter-active,.dp-menu-appear-bottom-leave-active,.dp-menu-appear-top-enter-active,.dp-menu-appear-top-leave-active,.dp-slide-up-enter-active,.dp-slide-up-leave-active,.dp-slide-down-enter-active,.dp-slide-down-leave-active{transition:all var(--dp-animation-duration) var(--dp-transition-timing)}.dp-menu-appear-top-enter-from,.dp-menu-appear-top-leave-to,.dp-slide-down-leave-to,.dp-slide-up-enter-from{opacity:0;transform:translateY(var(--dp-transition-length))}.dp-menu-appear-bottom-enter-from,.dp-menu-appear-bottom-leave-to,.dp-slide-down-enter-from,.dp-slide-up-leave-to{opacity:0;transform:translateY(calc(var(--dp-transition-length) * -1))}.dp--arrow-btn-nav{transition:var(--dp-common-transition)}.dp--highlighted{background-color:var(--dp-highlight-color)}.dp--hidden-el{visibility:hidden}.dp--centered{top:50%;left:50%;transform:translate(-50%, -50%);position:fixed}:root {
|
|
972
1005
|
/* Design system colors */
|
|
973
1006
|
--color-white: 255 255 255;
|
|
974
1007
|
--color-black: 0 0 0;
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pequity/squirrel",
|
|
3
3
|
"description": "Squirrel component library",
|
|
4
|
-
"version": "
|
|
5
|
-
"packageManager": "pnpm@10.
|
|
4
|
+
"version": "11.0.0",
|
|
5
|
+
"packageManager": "pnpm@10.20.0",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"scripts": {
|
|
8
8
|
"preinstall": "npx only-allow pnpm",
|
|
@@ -56,30 +56,30 @@
|
|
|
56
56
|
"@playwright/test": "^1.56.1",
|
|
57
57
|
"@semantic-release/changelog": "^6.0.3",
|
|
58
58
|
"@semantic-release/git": "^10.0.1",
|
|
59
|
-
"@storybook/addon-a11y": "^
|
|
60
|
-
"@storybook/addon-docs": "^
|
|
61
|
-
"@storybook/addon-links": "^
|
|
62
|
-
"@storybook/addon-vitest": "^
|
|
63
|
-
"@storybook/vue3-vite": "^
|
|
59
|
+
"@storybook/addon-a11y": "^10.0.6",
|
|
60
|
+
"@storybook/addon-docs": "^10.0.6",
|
|
61
|
+
"@storybook/addon-links": "^10.0.6",
|
|
62
|
+
"@storybook/addon-vitest": "^10.0.6",
|
|
63
|
+
"@storybook/vue3-vite": "^10.0.6",
|
|
64
64
|
"@tanstack/vue-virtual": "3.13.12",
|
|
65
65
|
"@types/jsdom": "^27.0.0",
|
|
66
66
|
"@types/lodash-es": "^4.17.12",
|
|
67
|
-
"@types/node": "^24.
|
|
67
|
+
"@types/node": "^24.10.0",
|
|
68
68
|
"@vitejs/plugin-vue": "^6.0.1",
|
|
69
|
-
"@vitest/browser": "4.0.
|
|
70
|
-
"@vitest/browser-playwright": "^4.0.
|
|
71
|
-
"@vitest/coverage-v8": "^4.0.
|
|
72
|
-
"@vue/compiler-sfc": "3.5.
|
|
69
|
+
"@vitest/browser": "4.0.8",
|
|
70
|
+
"@vitest/browser-playwright": "^4.0.8",
|
|
71
|
+
"@vitest/coverage-v8": "^4.0.8",
|
|
72
|
+
"@vue/compiler-sfc": "3.5.24",
|
|
73
73
|
"@vue/test-utils": "^2.4.6",
|
|
74
|
-
"@vuepic/vue-datepicker": "
|
|
74
|
+
"@vuepic/vue-datepicker": "12.0.2",
|
|
75
75
|
"autoprefixer": "^10.4.21",
|
|
76
|
-
"eslint": "^9.
|
|
77
|
-
"eslint-plugin-storybook": "^
|
|
76
|
+
"eslint": "^9.39.1",
|
|
77
|
+
"eslint-plugin-storybook": "^10.0.6",
|
|
78
78
|
"floating-vue": "5.2.2",
|
|
79
79
|
"glob": "^11.0.3",
|
|
80
80
|
"husky": "^9.1.7",
|
|
81
81
|
"iconify-icon": "^3.0.2",
|
|
82
|
-
"jsdom": "^27.0
|
|
82
|
+
"jsdom": "^27.1.0",
|
|
83
83
|
"lint-staged": "^16.2.6",
|
|
84
84
|
"lodash-es": "4.17.21",
|
|
85
85
|
"make-coverage-badge": "^1.2.0",
|
|
@@ -88,23 +88,24 @@
|
|
|
88
88
|
"prettier": "^3.6.2",
|
|
89
89
|
"prettier-plugin-tailwindcss": "^0.7.1",
|
|
90
90
|
"resolve-tspaths": "^0.8.23",
|
|
91
|
-
"rimraf": "^6.0
|
|
92
|
-
"sass": "^1.93.
|
|
91
|
+
"rimraf": "^6.1.0",
|
|
92
|
+
"sass": "^1.93.3",
|
|
93
93
|
"semantic-release": "^25.0.1",
|
|
94
|
-
"storybook": "^
|
|
94
|
+
"storybook": "^10.0.6",
|
|
95
95
|
"svgo": "^4.0.0",
|
|
96
96
|
"tailwindcss": "^3.4.17",
|
|
97
97
|
"typescript": "5.9.3",
|
|
98
|
-
"vite": "^7.
|
|
99
|
-
"vitest": "^4.0.
|
|
100
|
-
"vue": "3.5.
|
|
98
|
+
"vite": "^7.2.2",
|
|
99
|
+
"vitest": "^4.0.8",
|
|
100
|
+
"vue": "3.5.24",
|
|
101
101
|
"vue-currency-input": "3.2.1",
|
|
102
102
|
"vue-i18n": "^11.1.12",
|
|
103
103
|
"vue-router": "4.6.3",
|
|
104
104
|
"vue-toastification": "2.0.0-rc.5",
|
|
105
|
-
"vue-tsc": "3.1.
|
|
105
|
+
"vue-tsc": "3.1.3"
|
|
106
106
|
},
|
|
107
107
|
"dependencies": {
|
|
108
|
+
"date-fns": "^4.1.0",
|
|
108
109
|
"tailwind-merge": "^3.3.1",
|
|
109
110
|
"tailwind-variants": "^3.1.1"
|
|
110
111
|
}
|
|
@@ -1,6 +1,51 @@
|
|
|
1
1
|
import PDatePicker from '@squirrel/components/p-date-picker/p-date-picker.vue';
|
|
2
2
|
import { createWrapperFor } from '@tests/vitest.helpers';
|
|
3
3
|
|
|
4
|
+
// Mock VueDatePicker
|
|
5
|
+
vi.mock('@vuepic/vue-datepicker', () => ({
|
|
6
|
+
VueDatePicker: {
|
|
7
|
+
name: 'VueDatePicker',
|
|
8
|
+
template: `
|
|
9
|
+
<div data-testid="vue-date-picker-mock">
|
|
10
|
+
<slot
|
|
11
|
+
name="dp-input"
|
|
12
|
+
:value="modelValue"
|
|
13
|
+
:onInput="onInput"
|
|
14
|
+
:onEnter="onEnter"
|
|
15
|
+
:onTab="onTab"
|
|
16
|
+
:onFocus="onFocus"
|
|
17
|
+
:onBlur="onBlur"
|
|
18
|
+
:onClear="onClear"
|
|
19
|
+
/>
|
|
20
|
+
</div>
|
|
21
|
+
`,
|
|
22
|
+
props: {
|
|
23
|
+
modelValue: {},
|
|
24
|
+
placeholder: String,
|
|
25
|
+
disabled: Boolean,
|
|
26
|
+
minDate: Date,
|
|
27
|
+
maxDate: Date,
|
|
28
|
+
timezone: String,
|
|
29
|
+
format: String,
|
|
30
|
+
locale: Object,
|
|
31
|
+
autoApply: Boolean,
|
|
32
|
+
timeConfig: Object,
|
|
33
|
+
modelType: String,
|
|
34
|
+
weekStart: [String, Number],
|
|
35
|
+
textInput: Boolean,
|
|
36
|
+
},
|
|
37
|
+
emits: ['update:modelValue', 'update:view'],
|
|
38
|
+
methods: {
|
|
39
|
+
onInput: vi.fn(),
|
|
40
|
+
onEnter: vi.fn(),
|
|
41
|
+
onTab: vi.fn(),
|
|
42
|
+
onFocus: vi.fn(),
|
|
43
|
+
onBlur: vi.fn(),
|
|
44
|
+
onClear: vi.fn(),
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
}));
|
|
48
|
+
|
|
4
49
|
const createWrapper = (props) => {
|
|
5
50
|
return createWrapperFor(PDatePicker, {
|
|
6
51
|
props,
|
|
@@ -14,10 +59,10 @@ describe('PDatePicker.vue', () => {
|
|
|
14
59
|
const datePicker = wrapper.findComponent({ name: 'VueDatePicker' });
|
|
15
60
|
|
|
16
61
|
expect(datePicker.props()).toMatchObject({
|
|
17
|
-
modelValue:
|
|
18
|
-
minDate:
|
|
19
|
-
maxDate:
|
|
20
|
-
timezone:
|
|
62
|
+
modelValue: undefined,
|
|
63
|
+
minDate: undefined,
|
|
64
|
+
maxDate: undefined,
|
|
65
|
+
timezone: undefined,
|
|
21
66
|
});
|
|
22
67
|
|
|
23
68
|
expect(wrapper.find('label').exists()).toBe(false);
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<VueDatePicker
|
|
2
|
+
<VueDatePicker
|
|
3
|
+
v-model="model"
|
|
4
|
+
:class="[
|
|
5
|
+
{ hidden: $attrs.hidden },
|
|
6
|
+
$attrs.class,
|
|
7
|
+
{ 'has-label': !!label },
|
|
8
|
+
{ 'has-error': !!errorMsg },
|
|
9
|
+
`size-${$attrs.size || 'md'}`,
|
|
10
|
+
]"
|
|
11
|
+
v-bind="datePickerProps"
|
|
12
|
+
>
|
|
3
13
|
<template #dp-input="{ value, onInput, onEnter, onTab, onFocus, onBlur, onClear }">
|
|
4
14
|
<PInput
|
|
5
15
|
:model-value="value"
|
|
@@ -16,9 +26,11 @@
|
|
|
16
26
|
|
|
17
27
|
<script setup lang="ts">
|
|
18
28
|
import PInput from '@squirrel/components/p-input/p-input.vue';
|
|
19
|
-
import
|
|
29
|
+
import { getDateFnsLocale } from '@squirrel/utils/dateLocale';
|
|
30
|
+
import { type RootProps, VueDatePicker } from '@vuepic/vue-datepicker';
|
|
20
31
|
import { computed, useAttrs } from 'vue';
|
|
21
32
|
import { useI18n } from 'vue-i18n';
|
|
33
|
+
|
|
22
34
|
/**
|
|
23
35
|
* A date picker component that displays a dropdown calendar for date selection.
|
|
24
36
|
* Wraps VueDatePicker with a custom input field using PInput component.
|
|
@@ -31,7 +43,14 @@ defineOptions({
|
|
|
31
43
|
inheritAttrs: false,
|
|
32
44
|
});
|
|
33
45
|
|
|
34
|
-
|
|
46
|
+
// Extend RootProps to inherit all VueDatePicker props and add our custom ones
|
|
47
|
+
// Exclude modelValue since we use defineModel() for v-model handling
|
|
48
|
+
type Props = Omit<RootProps, 'modelValue'> & {
|
|
49
|
+
/**
|
|
50
|
+
* The name of the date picker field.
|
|
51
|
+
* Passed to the underlying PInput component.
|
|
52
|
+
*/
|
|
53
|
+
name?: string;
|
|
35
54
|
/**
|
|
36
55
|
* Text label for the date picker field.
|
|
37
56
|
* Passed to the underlying PInput component.
|
|
@@ -47,27 +66,30 @@ type Props = {
|
|
|
47
66
|
* Passed to the underlying PInput component and adds visual indicator.
|
|
48
67
|
*/
|
|
49
68
|
required?: boolean;
|
|
50
|
-
}
|
|
69
|
+
};
|
|
51
70
|
|
|
52
71
|
const props = withDefaults(defineProps<Props>(), {
|
|
72
|
+
// Custom component defaults
|
|
73
|
+
name: '',
|
|
53
74
|
label: '',
|
|
54
75
|
errorMsg: '',
|
|
55
76
|
required: false,
|
|
56
|
-
|
|
77
|
+
// VueDatePicker props with intentional defaults
|
|
78
|
+
placeholder: '',
|
|
57
79
|
autoApply: true,
|
|
58
|
-
enableTimePicker: false,
|
|
80
|
+
timeConfig: () => ({ enableTimePicker: false }),
|
|
59
81
|
modelType: 'yyyy-MM-dd',
|
|
60
82
|
hideOffsetDates: true,
|
|
61
83
|
weekStart: 0,
|
|
62
84
|
textInput: true,
|
|
63
|
-
|
|
85
|
+
formats: () => ({ input: 'dd-MMM-yyyy' }),
|
|
64
86
|
});
|
|
65
87
|
|
|
66
88
|
/**
|
|
67
89
|
* The selected date value (v-model).
|
|
68
|
-
* Supports
|
|
90
|
+
* Supports all VueDatePicker model types: Date, Date[], string, TimeModel, etc.
|
|
69
91
|
*/
|
|
70
|
-
const model = defineModel<
|
|
92
|
+
const model = defineModel<RootProps['modelValue']>();
|
|
71
93
|
|
|
72
94
|
// Data
|
|
73
95
|
const { locale } = useI18n();
|
|
@@ -75,9 +97,14 @@ const attrs = useAttrs();
|
|
|
75
97
|
|
|
76
98
|
// Computed
|
|
77
99
|
const datePickerProps = computed(() => {
|
|
78
|
-
const {
|
|
100
|
+
const { name, label, errorMsg, required, ...vueDatePickerProps } = props;
|
|
101
|
+
const { class: classes, style, ...attrsWithoutClassAndStyle } = attrs;
|
|
79
102
|
|
|
80
|
-
return {
|
|
103
|
+
return {
|
|
104
|
+
...vueDatePickerProps,
|
|
105
|
+
...attrsWithoutClassAndStyle,
|
|
106
|
+
locale: getDateFnsLocale(locale.value),
|
|
107
|
+
};
|
|
81
108
|
});
|
|
82
109
|
|
|
83
110
|
const inputPropsAndAttrs = computed(() => {
|
|
@@ -87,7 +114,11 @@ const inputPropsAndAttrs = computed(() => {
|
|
|
87
114
|
res.errorMsg = props.errorMsg;
|
|
88
115
|
res.required = props.required;
|
|
89
116
|
res.disabled = props.disabled;
|
|
90
|
-
res.placeholder = props.placeholder
|
|
117
|
+
res.placeholder = props.placeholder
|
|
118
|
+
? props.placeholder
|
|
119
|
+
: typeof props.formats?.input === 'string'
|
|
120
|
+
? props.formats.input
|
|
121
|
+
: 'dd-MMM-yyyy';
|
|
91
122
|
res.name = props.name;
|
|
92
123
|
res.readonly = props.readonly;
|
|
93
124
|
|
|
@@ -104,3 +135,44 @@ const handleInput = (e: Event, onInputFn: (e: Event) => void, onClearFn: (e: Eve
|
|
|
104
135
|
return onInputFn(e);
|
|
105
136
|
};
|
|
106
137
|
</script>
|
|
138
|
+
|
|
139
|
+
<style scoped>
|
|
140
|
+
/* Fix clear button positioning when label is present */
|
|
141
|
+
.has-label.size-sm :deep(.dp--clear-btn) {
|
|
142
|
+
margin-top: 11px;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.has-label.size-md :deep(.dp--clear-btn) {
|
|
146
|
+
margin-top: 12px;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.has-label.size-lg :deep(.dp--clear-btn) {
|
|
150
|
+
margin-top: 14px;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/* Fix clear button positioning when error is present */
|
|
154
|
+
.has-error.size-sm :deep(.dp--clear-btn) {
|
|
155
|
+
margin-top: -11px;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.has-error.size-md :deep(.dp--clear-btn) {
|
|
159
|
+
margin-top: -11px;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
.has-error.size-lg :deep(.dp--clear-btn) {
|
|
163
|
+
margin-top: -11px;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/* Fix clear button positioning when label and error are present */
|
|
167
|
+
.has-label.has-error.size-sm :deep(.dp--clear-btn) {
|
|
168
|
+
margin-top: 0px;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.has-label.has-error.size-md :deep(.dp--clear-btn) {
|
|
172
|
+
margin-top: 1px;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.has-label.has-error.size-lg :deep(.dp--clear-btn) {
|
|
176
|
+
margin-top: 3px;
|
|
177
|
+
}
|
|
178
|
+
</style>
|
|
@@ -1,14 +1,31 @@
|
|
|
1
1
|
import PInlineDatePicker from '@squirrel/components/p-inline-date-picker/p-inline-date-picker.vue';
|
|
2
2
|
import { createWrapperFor } from '@tests/vitest.helpers';
|
|
3
3
|
|
|
4
|
+
// Mock VueDatePicker
|
|
5
|
+
vi.mock('@vuepic/vue-datepicker', () => ({
|
|
6
|
+
VueDatePicker: {
|
|
7
|
+
name: 'VueDatePicker',
|
|
8
|
+
template: '<div data-testid="vue-date-picker-mock" />',
|
|
9
|
+
props: {
|
|
10
|
+
modelValue: {},
|
|
11
|
+
placeholder: String,
|
|
12
|
+
disabled: Boolean,
|
|
13
|
+
hideOffsetDates: Boolean,
|
|
14
|
+
inline: Boolean,
|
|
15
|
+
locale: Object,
|
|
16
|
+
autoApply: Boolean,
|
|
17
|
+
timeConfig: Object,
|
|
18
|
+
modelType: String,
|
|
19
|
+
weekStart: [String, Number],
|
|
20
|
+
textInput: Boolean,
|
|
21
|
+
},
|
|
22
|
+
emits: ['update:modelValue', 'update:view'],
|
|
23
|
+
},
|
|
24
|
+
}));
|
|
25
|
+
|
|
4
26
|
const createWrapper = (props) => {
|
|
5
27
|
return createWrapperFor(PInlineDatePicker, {
|
|
6
28
|
props,
|
|
7
|
-
global: {
|
|
8
|
-
stubs: {
|
|
9
|
-
VueDatePicker: true,
|
|
10
|
-
},
|
|
11
|
-
},
|
|
12
29
|
});
|
|
13
30
|
};
|
|
14
31
|
|
|
@@ -18,31 +35,29 @@ describe('PInlineDatePicker.vue', () => {
|
|
|
18
35
|
|
|
19
36
|
const datePicker = wrapper.findComponent({ name: 'VueDatePicker' });
|
|
20
37
|
|
|
38
|
+
expect(datePicker.exists()).toBe(true);
|
|
21
39
|
expect(datePicker.props()).toMatchObject({
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
40
|
+
inline: true,
|
|
41
|
+
autoApply: true,
|
|
42
|
+
hideOffsetDates: true,
|
|
43
|
+
textInput: false,
|
|
26
44
|
});
|
|
27
45
|
|
|
28
46
|
expect(wrapper.find('label').exists()).toBe(false);
|
|
29
47
|
expect(wrapper.find('div.text-xs.text-on-error.mt-1').isVisible()).toBe(false);
|
|
30
48
|
});
|
|
31
49
|
|
|
32
|
-
it('passes
|
|
50
|
+
it('passes fallthrough attributes to the datepicker', () => {
|
|
33
51
|
const wrapper = createWrapper({
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
maxDate: new Date('2024-05-31'),
|
|
37
|
-
timezone: 'UTC',
|
|
52
|
+
placeholder: 'Select date',
|
|
53
|
+
hideOffsetDates: false,
|
|
38
54
|
});
|
|
39
55
|
|
|
40
56
|
const datePicker = wrapper.findComponent({ name: 'VueDatePicker' });
|
|
41
57
|
|
|
42
|
-
expect(datePicker.props().
|
|
43
|
-
expect(datePicker.props().
|
|
44
|
-
expect(datePicker.props().
|
|
45
|
-
expect(datePicker.props().timezone).toBe('UTC');
|
|
58
|
+
expect(datePicker.props().placeholder).toBe('Select date');
|
|
59
|
+
expect(datePicker.props().hideOffsetDates).toBe(false);
|
|
60
|
+
expect(datePicker.props().inline).toBe(true); // Always true for inline picker
|
|
46
61
|
});
|
|
47
62
|
|
|
48
63
|
it('renders a label when the label prop is set', () => {
|
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
|
|
13
13
|
<script setup lang="ts">
|
|
14
14
|
import { useInputClasses } from '@squirrel/composables/useInputClasses';
|
|
15
|
-
import
|
|
15
|
+
import { getDateFnsLocale } from '@squirrel/utils/dateLocale';
|
|
16
|
+
import { type RootProps, VueDatePicker } from '@vuepic/vue-datepicker';
|
|
16
17
|
import { computed, type StyleValue, useAttrs } from 'vue';
|
|
17
18
|
import { useI18n } from 'vue-i18n';
|
|
18
19
|
|
|
@@ -37,7 +38,9 @@ defineSlots<{
|
|
|
37
38
|
label?: (props: { label: string; labelClasses: string }) => unknown;
|
|
38
39
|
}>();
|
|
39
40
|
|
|
40
|
-
|
|
41
|
+
// Extend RootProps to inherit all VueDatePicker props and add our custom ones
|
|
42
|
+
// Exclude modelValue since we use defineModel() for v-model handling
|
|
43
|
+
type Props = Omit<RootProps, 'modelValue'> & {
|
|
41
44
|
/**
|
|
42
45
|
* Text label for the date picker field.
|
|
43
46
|
* If not provided, you can use the label slot instead.
|
|
@@ -53,25 +56,28 @@ type Props = {
|
|
|
53
56
|
* Adds required attribute and visual indicator.
|
|
54
57
|
*/
|
|
55
58
|
required?: boolean;
|
|
56
|
-
}
|
|
59
|
+
};
|
|
57
60
|
|
|
58
61
|
const props = withDefaults(defineProps<Props>(), {
|
|
62
|
+
// Custom component defaults
|
|
59
63
|
label: '',
|
|
60
64
|
errorMsg: '',
|
|
61
65
|
required: false,
|
|
62
|
-
|
|
66
|
+
// VueDatePicker props with intentional defaults
|
|
67
|
+
placeholder: '',
|
|
63
68
|
autoApply: true,
|
|
64
|
-
enableTimePicker: false,
|
|
69
|
+
timeConfig: () => ({ enableTimePicker: false }),
|
|
65
70
|
modelType: 'yyyy-MM-dd',
|
|
66
71
|
hideOffsetDates: true,
|
|
67
72
|
weekStart: 0,
|
|
73
|
+
textInput: false,
|
|
68
74
|
});
|
|
69
75
|
|
|
70
76
|
/**
|
|
71
77
|
* The selected date value (v-model).
|
|
72
|
-
* Supports
|
|
78
|
+
* Supports all VueDatePicker model types: Date, Date[], string, TimeModel, etc.
|
|
73
79
|
*/
|
|
74
|
-
const model = defineModel<
|
|
80
|
+
const model = defineModel<RootProps['modelValue']>();
|
|
75
81
|
|
|
76
82
|
// Data
|
|
77
83
|
const { locale } = useI18n();
|
|
@@ -79,11 +85,16 @@ const attrs = useAttrs();
|
|
|
79
85
|
const { labelClasses, errorMsgClasses } = useInputClasses(props);
|
|
80
86
|
|
|
81
87
|
// Computed
|
|
82
|
-
const datePickerProps = computed
|
|
83
|
-
const {
|
|
88
|
+
const datePickerProps = computed(() => {
|
|
89
|
+
const { label, errorMsg, required, ...vueDatePickerProps } = props;
|
|
84
90
|
const { class: classes, style, ...attrsWithoutClassAndStyle } = attrs;
|
|
85
91
|
|
|
86
|
-
return {
|
|
92
|
+
return {
|
|
93
|
+
...vueDatePickerProps,
|
|
94
|
+
...attrsWithoutClassAndStyle,
|
|
95
|
+
locale: getDateFnsLocale(locale.value),
|
|
96
|
+
inline: true,
|
|
97
|
+
};
|
|
87
98
|
});
|
|
88
99
|
|
|
89
100
|
const style = computed(() => {
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { getDateFnsLocale } from '@squirrel/utils/dateLocale';
|
|
2
|
+
import { enUS, frCA } from 'date-fns/locale';
|
|
3
|
+
|
|
4
|
+
describe('getDateFnsLocale', () => {
|
|
5
|
+
it('should return correct locale for valid codes', () => {
|
|
6
|
+
expect(getDateFnsLocale('fr-CA')).toBe(frCA);
|
|
7
|
+
expect(getDateFnsLocale('en-US')).toBe(enUS);
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
it('should return enUS as fallback for invalid locale codes', () => {
|
|
11
|
+
expect(getDateFnsLocale('fr-FR')).toBe(enUS);
|
|
12
|
+
expect(getDateFnsLocale('invalid')).toBe(enUS);
|
|
13
|
+
expect(getDateFnsLocale('')).toBe(enUS);
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it('should be case-sensitive', () => {
|
|
17
|
+
expect(getDateFnsLocale('FR-CA')).toBe(enUS);
|
|
18
|
+
expect(getDateFnsLocale('fr-ca')).toBe(enUS);
|
|
19
|
+
});
|
|
20
|
+
});
|