bt-core-app 1.1.1 → 1.1.3

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/style.css ADDED
@@ -0,0 +1 @@
1
+ .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{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(.645,.045,.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::placeholder{opacity:.7}.dp__input:hover{border-color:var(--dp-border-color-hover)}.dp__input_reg{caret-color:#0000}.dp__input_focus{border-color:var(--dp-border-color-hover)}.dp__disabled{background:var(--dp-disabled-color)}.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_icon{position:absolute;top:50%;inset-inline-end:0;transform:translateY(-50%);cursor:pointer;color:var(--dp-icon-color)}.dp__input_icon_pad{padding-inline-start:var(--dp-input-icon-padding)}.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__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;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;top:0;right:0;bottom:0;left:0;z-index:999999}.dp__menu_disabled{background:#ffffff80;cursor:not-allowed}.dp__menu_readonly{background:#0000;cursor:default}.dp-menu-loading{background:#ffffff80;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:#0000;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(0)}to{transform:rotate(360deg)}}.dp__arrow_top{left:50%;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:50%;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)}@media only screen and (width <= 600px){.dp--preset-dates{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}@media only screen and (width <= 600px){.dp--preset-range{border:1px solid var(--dp-border-color);margin:0 3px}.dp--preset-range:first-child{margin-left:0}.dp--preset-range: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}@media only screen and (width <= 600px){.dp__menu_content_wrapper{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:700}.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__cell_auto_range_end,.dp__cell_auto_range_start{border-top:1px dashed var(--dp-primary-color);border-bottom:1px dashed var(--dp-primary-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-inline-start:1px dashed var(--dp-primary-color)}.dp__cell_auto_range_end{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:translate(-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%}@media only screen and (width <= 600px){.dp__flex_display{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;width:100%}.dp__year_disable_select{justify-content:space-around}.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}.dp__time_picker_overlay_container{height:100%}.dp__overlay_row{padding:0;box-sizing:border-box;display:flex;margin-inline:auto 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-invalid,.dp--time-overlay-btn{border:none;font:inherit;transition:var(--dp-common-transition);line-height:normal}.dp--tp-wrap{max-width:var(--dp-menu-min-width)}.dp__time_input{width:100%;display:flex;align-items:center;justify-content:center;-webkit-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_sec{padding:0 10px}.dp__time_col_sec_with_button{padding:0 5px}.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{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__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-primary-color)}.dp__inc_dec_button_inline{width:100%;padding:0;height:8px;cursor:pointer;display:flex;align-items:center}.dp__inc_dec_button_disabled:hover,.dp__inc_dec_button_disabled{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__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,.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:#0000;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_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-transtion)}.dp__action_buttons .dp__action_select:disabled{background:var(--dp-primary-disabled-color);cursor:not-allowed}.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-transtion)}.dp-quarter-picker-wrap{display:flex;flex-direction:column;height:100%;min-width:var(--dp-menu-min-width)}.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)}.dp--qr-btn-disabled{cursor:not-allowed;background:var(--dp-disabled-color)}.dp--qr-btn-disabled:hover{background:var(--dp-disabled-color)}.dp__btn,.dp--time-overlay-btn,.dp--time-invalid,.dp--qr-btn{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)}:root{--dp-common-transition: all .1s ease-in;--dp-menu-padding: 6px 8px;--dp-animation-duration: .1s;--dp-menu-appear-transition-timing: cubic-bezier(.4, 0, 1, 1);--dp-transition-timing: ease-out;--dp-action-row-transtion: all .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: .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-menu-min-width: 260px;--dp-action-buttons-padding: 1px 6px;--dp-row-margin: 5px 0;--dp-calendar-header-cell-padding: .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: .8rem;--dp-time-font-size: 2rem;--dp-action-button-height: 22px;--dp-action-row-padding: 8px}.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-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: #f8f5f5;--dp-secondary-color: #c0c4cc;--dp-border-color: #ddd;--dp-menu-border-color: #ddd;--dp-border-color-hover: #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;user-select:none;box-sizing:border-box;position:relative;width:100%}.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:translate(var(--dp-transition-length))}.calendar-next-leave-to,.calendar-prev-enter-from{opacity:0;transform:translate(calc(var(--dp-transition-length) * -1))}.calendar-prev-leave-to{opacity:0;transform:translate(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)}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bt-core-app",
3
- "version": "1.1.1",
3
+ "version": "1.1.3",
4
4
  "description": "Core app tools for some basic features like navigation, authentication, server apis, and cosmetics",
5
5
  "homepage": "https://github.com/BlitzItTech/bt-core",
6
6
  "bugs": {
@@ -0,0 +1,84 @@
1
+ import { describe, test, expect, afterAll, afterEach, beforeAll } from 'vitest'
2
+ import { createApi } from '../src/composables/api'
3
+ import { setupServer } from 'msw/node'
4
+ import { http, HttpResponse } from 'msw'
5
+
6
+ const handlers = [
7
+ http.get('https://test-api/get/1', () => {
8
+ return HttpResponse.json({
9
+ data: { test: 'a' },
10
+ count: 0,
11
+ filters: ['test']
12
+ })
13
+ }),
14
+ http.get('https://test-api/get/2', () => {
15
+ return new HttpResponse('not found', {
16
+ status: 304
17
+ })
18
+ }),
19
+ http.get('https://test-api/getAll', () => {
20
+ return HttpResponse.json({
21
+ data: [{ test: 'a' }, { test: 'b' }],
22
+ count: 2,
23
+ filters: ['test', 'test two']
24
+ })
25
+ }),
26
+ http.post('https://test-api/post', () => {
27
+ return HttpResponse.json({ data: { test: 'b' } })
28
+ }),
29
+ http.patch('https://test-api/patch', () => {
30
+ return HttpResponse.json({ data: { test: 'c' } })
31
+ })
32
+ ]
33
+
34
+ const server = setupServer(...handlers)
35
+
36
+ beforeAll(() => server.listen({ onUnhandledRequest: 'error' }))
37
+
38
+ afterAll(() => server.close())
39
+
40
+ afterEach(() => server.resetHandlers())
41
+
42
+ describe('default api', () => {
43
+ const api = createApi({
44
+ findPath: () => 'https://test-api/',
45
+ defaultThrowError: false
46
+ })
47
+
48
+ test('get', async () => {
49
+ const res = await api.get<any>({ additionalUrl: 'get', id: '1', nav: 'test' })
50
+ expect(res).not.toBeNull()
51
+ expect(res.data.test).toEqual('a')
52
+ expect(res.filters[0]).toEqual('test')
53
+ })
54
+
55
+ test('get fails', async () => {
56
+ const res = await api.get<any>({ additionalUrl: 'get', id: '2', nav: 'test' })
57
+ expect(res.status).toEqual(304)
58
+ })
59
+
60
+ test('getAll', async () => {
61
+ const res = await api.get<any>({ additionalUrl: 'getAll', nav: 'test' })
62
+ expect(res).not.toBeNull()
63
+ expect(res.data.length).toEqual(2)
64
+ expect(res.count).toEqual(2)
65
+ expect(res.filters[0]).toEqual('test')
66
+ expect(res.filters[1]).toEqual('test two')
67
+ })
68
+
69
+ test('post', async () => {
70
+ const res = await api.post<any>({ additionalUrl: 'post', nav: 'test', data: { data: 'a' }})
71
+ expect(res).not.toBeNull()
72
+ expect(res).toEqual({ data: { test: 'b' } })
73
+ })
74
+
75
+ test('patch', async () => {
76
+ const res = await api.patch<any>({ additionalUrl: 'patch', nav: 'test', data: { data: 'a' }})
77
+ expect(res).not.toBeNull()
78
+ expect(res).toEqual({ data: { test: 'c' } })
79
+ })
80
+ })
81
+
82
+ // describe('default api fails', () => {
83
+
84
+ // })
@@ -0,0 +1,31 @@
1
+ import { describe, expect, test } from 'vitest'
2
+ import { withSetup } from './utils'
3
+ import { useLocalDb } from '../src/composables/forage'
4
+
5
+ describe('foraging', () => {
6
+ const [db] = withSetup(() => useLocalDb())
7
+
8
+ test('local db exists', () => {
9
+ expect(db).not.toBeNull()
10
+ expect(db._config.name).toEqual('Db_undefined')
11
+ })
12
+
13
+ })
14
+
15
+ // describe('local cache', () => {
16
+ // const [cache] = withSetup(() => useLocalCache())
17
+
18
+ // test('save', async () => {
19
+ // expect(cache).not.toBeNull()
20
+
21
+ // await cache.saveAsync({ test: 'a' }, 'test-key')
22
+
23
+ // const res = await cache.getAsync('test-key')
24
+
25
+ // expect(res.test).toEqual('a')
26
+
27
+ // await cache.clearAsync()
28
+
29
+ // const none = await cache.getAsync('test-key')
30
+ // })
31
+ // })
@@ -0,0 +1,231 @@
1
+ import { nestedValue, toCompareString, hasSearch, deepSelect, containsSearch, copyItemByAlphabet, copyDeep, csvContains, toggleCSV, roundTo, isArrayOfLength, isLengthyArray, addWeekday, removeWeekday, appendUrl, getAreaAround, getAreaToLeft, getAreaToRight, getLocationLine, capitalizeWords, fromCamelCase, toCamelCase, weekdayValue, weekdayShortName, containsWeekday, validEmail } from '../src/composables/helpers'
2
+ import { describe, expect, test } from 'vitest'
3
+
4
+ describe("helpers", () => {
5
+
6
+ test('append url', () => {
7
+ expect(appendUrl('https://test.com/', '/test')).toEqual('https://test.com/test')
8
+ expect(appendUrl('https://test.com', 'test')).toEqual('https://test.com/test')
9
+ expect(appendUrl('https://test.com/', 'test')).toEqual('https://test.com/test')
10
+ expect(appendUrl('https://test.com', '/test')).toEqual('https://test.com/test')
11
+ expect(appendUrl('https://test.com///', '///test')).toEqual('https://test.com/test')
12
+ })
13
+
14
+ test('get area around', () => {
15
+ //starts with top left and goes anti-clockwise
16
+ expect(getAreaAround({ lat: 0, lng: 0 }, 1)).toEqual([{ lat: -1, lng: 1 },{ lat: -1, lng: -1 },{ lat: 1, lng: -1 },{ lat: 1, lng: 1 }])
17
+ expect(getAreaAround({ lat: 0, lng: 0 }, 2)).toEqual([{ lat: -2, lng: 2 },{ lat: -2, lng: -2 },{ lat: 2, lng: -2 },{ lat: 2, lng: 2 }])
18
+ expect(getAreaAround({ lat: 2, lng: 6 }, 1)).toEqual([{ lat: 1, lng: 7 },{ lat: 1, lng: 5 },{ lat: 3, lng: 5 },{ lat: 3, lng: 7 }])
19
+ })
20
+
21
+ test('get area to left', () => {
22
+ //starts with top left and goes anti-clockwise
23
+ expect(getAreaToLeft({ lat: 0, lng: 0 }, 1)).toEqual([{ lat: -2, lng: 1 },{ lat: -2, lng: -1 },{ lat: 0, lng: -1 },{ lat: 0, lng: 1 }])
24
+ expect(getAreaToLeft({ lat: 0, lng: 0 }, 2)).toEqual([{ lat: -4, lng: 2 },{ lat: -4, lng: -2 },{ lat: 0, lng: -2 },{ lat: 0, lng: 2 }])
25
+ })
26
+
27
+ test('get area to right', () => {
28
+ //starts with top left and goes anti-clockwise
29
+ expect(getAreaToRight({ lat: 0, lng: 0 }, 1)).toEqual([{ lat: 0, lng: 1 },{ lat: 0, lng: -1 },{ lat: 2, lng: -1 },{ lat: 2, lng: 1 }])
30
+ expect(getAreaToRight({ lat: 2, lng: 0 }, 2)).toEqual([{ lat: 2, lng: 2 },{ lat: 2, lng: -2 },{ lat: 6, lng: -2 },{ lat: 6, lng: 2 }])
31
+ })
32
+
33
+ test('get location line', () => {
34
+ expect(getLocationLine(null)).toEqual('')
35
+ expect(getLocationLine({ streetNumber: '9', streetName: 'Morgan St', suburb: 'Timboon', state: 'VIC', postcode: '3268' })).toEqual('9 Morgan St, Timboon VIC 3268')
36
+ })
37
+
38
+ test('from camel case', () => {
39
+ expect(fromCamelCase('testOneTwo')).toEqual('Test One Two')
40
+ expect(fromCamelCase('testOne Two')).toEqual('Test One Two')
41
+ expect(fromCamelCase('tesTOneTwo')).not.toEqual('Test One Two')
42
+ expect(fromCamelCase()).toBeUndefined()
43
+ })
44
+
45
+ test('to camel case', () => {
46
+ expect(toCamelCase(undefined)).toBeUndefined()
47
+ expect(toCamelCase({ Test: 't' })).not.toEqual({ Test: 't' })
48
+ expect(toCamelCase({ Test: 't' })).toEqual({ test: 't' })
49
+ })
50
+
51
+ test('capitalize', () => {
52
+ expect(capitalizeWords('test')).toEqual('Test')
53
+ expect(capitalizeWords('test one')).toEqual('Test One')
54
+ })
55
+
56
+ test('weekdays csv string sort value', () => {
57
+ expect(weekdayValue('sun, wed, sat')).toEqual(1)
58
+ expect(weekdayValue('wed, sat')).toEqual(4)
59
+ expect(weekdayValue('')).toEqual(8)
60
+ expect(weekdayValue()).toEqual(0)
61
+ expect(weekdayValue('sun, wed, sat, always')).toEqual(0)
62
+ expect(weekdayValue('Tuesday')).toEqual(3)
63
+ })
64
+
65
+ test('weekday short name conversion', () => {
66
+ expect(weekdayShortName('Sun, Mon, tuesday')).toEqual('sun,mon,tue')
67
+ expect(weekdayShortName('Sun, Mon, blah')).toEqual('sun,mon')
68
+ expect(weekdayShortName('Sun, Fri, Wedne')).toEqual('sun,fri')
69
+ expect(weekdayShortName('Sunday')).toEqual('sun')
70
+ })
71
+
72
+ test('contains weekday', () => {
73
+ expect(containsWeekday('sun', 'sun')).toEqual(true)
74
+ expect(containsWeekday('sun', 'Sunday')).toEqual(true)
75
+ expect(containsWeekday('sun,mon,tue, wed', 'Tuesday')).toEqual(true)
76
+ expect(containsWeekday('sun,mon,tuesday, wed', 'Tuesday')).toEqual(true)
77
+ expect(containsWeekday('sun,mon, wed', 'tue')).toEqual(false)
78
+ })
79
+
80
+ test('add weekday', () => {
81
+ expect(addWeekday(undefined, 'sun')).toEqual('sun')
82
+ expect(addWeekday(undefined, 'sun')).toEqual('sun')
83
+ expect(addWeekday('mon,sun', 'sun')).toEqual('sun,mon')
84
+ expect(addWeekday('mon,sun, always, m', 'sun')).toEqual('always,sun,mon')
85
+ })
86
+
87
+ test('remove weekday', () => {
88
+ expect(removeWeekday(undefined, 'sun')).toEqual(undefined)
89
+ expect(removeWeekday('sun', 'sun')).toEqual(undefined)
90
+ expect(removeWeekday('sun, thur, tue', 'sun')).toEqual('tue,thu')
91
+ expect(removeWeekday('always', 'sun')).toEqual('always')
92
+ })
93
+
94
+ test('is array of length', () => {
95
+ expect(isArrayOfLength([], 0)).toEqual(true)
96
+ expect(isArrayOfLength([1,1,1], 3)).toEqual(true)
97
+ expect(isArrayOfLength(undefined, 0)).toEqual(false)
98
+ expect(isArrayOfLength({}, 0)).toEqual(false)
99
+ })
100
+
101
+ test('is lengthy array', () => {
102
+ expect(isLengthyArray([])).toEqual(false)
103
+ expect(isLengthyArray(undefined)).toEqual(false)
104
+ expect(isLengthyArray([1])).toEqual(true)
105
+ expect(isLengthyArray([1,1])).toEqual(true)
106
+ expect(isLengthyArray([1,1], 1)).toEqual(true)
107
+ expect(isLengthyArray([1,1], 3)).toEqual(false)
108
+ })
109
+
110
+ test('rounding decimal places', () => {
111
+ expect(roundTo(1, 0)).toEqual(1)
112
+ expect(roundTo(1.1, 0)).toEqual(1)
113
+ expect(roundTo(1.6, 0)).toEqual(2)
114
+ expect(roundTo(2.22567, 3)).toEqual(2.226)
115
+ expect(roundTo(2.22547, 3)).toEqual(2.225)
116
+ })
117
+
118
+ test('toggle csv', () => {
119
+ expect(toggleCSV('one,two,three', 'two')).toEqual('one,three')
120
+ expect(toggleCSV('two', 'two')).toEqual(null)
121
+ })
122
+
123
+ test('csv contains', () => {
124
+ expect(csvContains('one,two,three', 'two')).toEqual(true)
125
+ expect(csvContains('one,two,three', 'three')).toEqual(true)
126
+ expect(csvContains('one,three', 'two')).toEqual(false)
127
+ expect(csvContains(undefined, 'two')).toEqual(false)
128
+ })
129
+
130
+ test('copy deep', () => {
131
+ expect(copyDeep(null)).toStrictEqual(null)
132
+ expect(copyDeep(undefined)).toStrictEqual(undefined)
133
+
134
+ let item = { test: { one: 'treat' } }
135
+ let copy = copyDeep(item)
136
+ item.test.one = 'other'
137
+
138
+ expect(item.test).not.toEqual(copy.test)
139
+ expect(item).not.toEqual(copy)
140
+ })
141
+
142
+ test('copy by property alphabet', () => {
143
+ expect(copyItemByAlphabet(null)).toStrictEqual(null)
144
+ expect(copyItemByAlphabet(undefined)).toStrictEqual(undefined)
145
+
146
+ let item = { test: { b: 'treat', a: 't' }, v: 'a', s: 'a', z: undefined }
147
+ //consistency
148
+ expect(JSON.stringify(copyItemByAlphabet(item))).toEqual(JSON.stringify(copyItemByAlphabet(item)))
149
+ expect(JSON.stringify(copyItemByAlphabet(item))).toEqual(JSON.stringify({ s: 'a', test: { a: 't', b: 'treat' }, v: 'a', z: undefined }))
150
+ expect(JSON.stringify(copyItemByAlphabet(item))).not.toEqual(JSON.stringify({ s: 'a', test: { b: 'treat', a: 't' }, v: 'a' }))
151
+ })
152
+
153
+ test('contains search', () => {
154
+ expect(containsSearch(undefined, undefined)).toEqual(true)
155
+ expect(containsSearch('a', undefined)).toEqual(true)
156
+ expect(containsSearch('aa', 'aa')).toEqual(true)
157
+ expect(containsSearch('aa', 'a')).toEqual(true)
158
+ expect(containsSearch('aa', 'b')).toEqual(false)
159
+ expect(containsSearch('Testing One Two Three', ' one')).toEqual(true)
160
+ expect(containsSearch('Testing One Two Three', ' one')).toEqual(false)
161
+ })
162
+
163
+ test('deep select', () => {
164
+ expect(deepSelect(null)).toEqual([])
165
+
166
+ let item = [
167
+ { a: 'a', b: [{ a: 'd' }] },
168
+ { a: 'b'},
169
+ { a: 'c' }
170
+ ]
171
+
172
+ expect(deepSelect(item, x => x.b).length).toEqual(4)
173
+
174
+ let ite = [{
175
+ b: [
176
+ { a: 'a', b: [{ a: 'b', b: [{ a: 'c' }] }]},
177
+ { a: 'd' },
178
+ { a: 'e', b: [{ a: 'f' }]}
179
+ ]
180
+ }]
181
+
182
+ expect(deepSelect(ite, x => x.b).length).toEqual(7)
183
+
184
+ let te = {
185
+ b: [
186
+ { a: 'a', b: [{ a: 'b', b: [{ a: 'c' }] }]},
187
+ { a: 'd' },
188
+ { a: 'e', b: [{ a: 'f' }]}
189
+ ]
190
+ }
191
+
192
+ //misses the parent
193
+ expect(deepSelect(te, x => x.b).length).toEqual(6)
194
+ })
195
+
196
+ test('has search', () => {
197
+ expect(hasSearch(undefined, 'test', ['a', 'b'])).toEqual(false)
198
+ expect(hasSearch('test', undefined, ['a', 'b'])).toEqual(true)
199
+ expect(hasSearch({ test: 'one two three', a: 'one' }, 'four', ['test', 'a'])).toEqual(false)
200
+ expect(hasSearch({ test: 'two', a: 'one' }, 'one', undefined)).toEqual(false)
201
+ expect(hasSearch({ test: 'one two three', a: 'one', b: 'two' }, 'three', ['a', 'b'])).toEqual(false)
202
+ expect(hasSearch({ test: 'one two three', a: 'one', b: 'two' }, 'three', ['a', 'b', 'test'])).toEqual(true)
203
+ expect(hasSearch({ test: 'one two three', a: 'one', b: 'two' }, 'one', ['b'])).toEqual(false)
204
+ expect(hasSearch({ test: 'one two three', a: 'one', b: 'two' }, 'one', ['a', 'b'])).toEqual(true)
205
+ })
206
+
207
+ test('to compare string', () => {
208
+ expect(toCompareString('one')).toEqual('one')
209
+ expect(toCompareString(undefined)).toStrictEqual(null)
210
+ expect(toCompareString('one two three')).toEqual('onetwothree')
211
+ })
212
+
213
+ test('nested value', () => {
214
+ let item = {
215
+ a: { b: 'b', c: { d: 'd' } },
216
+ b: 'str'
217
+ }
218
+
219
+ expect(nestedValue(item, 'b')).toEqual('str')
220
+ expect(nestedValue(item, 'a.c.d')).toEqual('d')
221
+ expect(nestedValue(item, 'a.b')).toEqual('b')
222
+ })
223
+
224
+ test('valid email', () => {
225
+ expect(validEmail('andrewderoon@gmail.com')).toEqual(true)
226
+ expect(validEmail('@gmail.com')).toEqual(false)
227
+ expect(validEmail('a@')).toEqual(false)
228
+ expect(validEmail('a@e')).toEqual(true)
229
+ expect(validEmail('andrewderoon.com')).toEqual(false)
230
+ })
231
+ })
@@ -0,0 +1,99 @@
1
+ import { createNavigation } from '../src/composables/navigation'
2
+ import { describe, expect, test } from 'vitest'
3
+
4
+ describe("navigation", () => {
5
+ const nav = createNavigation({
6
+ defaultCacheExpiryHours: 3,
7
+ navItems: [
8
+ {
9
+ name: 'test-nav'
10
+ },
11
+ {
12
+ name: 'navA',
13
+ background: 'b',
14
+ displayName: 'discs',
15
+ hideAppBar: true,
16
+ hideNavigation: true,
17
+ hesitate: true,
18
+ icon: 'mdi-plus',
19
+ path: '/testing/one',
20
+ children: [
21
+ {
22
+ name: 'navB',
23
+ cacheExpiryHours: 4,
24
+ children: [
25
+ {
26
+ archiveName: 'nav-archive',
27
+ aliases: ['nav-alias', 'nav-alia'],
28
+ name: 'navC',
29
+ path: '/test/alias'
30
+ }
31
+ ],
32
+ singleName: 'navone'
33
+ }
34
+ ]
35
+ }
36
+ ]
37
+ })
38
+
39
+ test('find archive name', () => {
40
+ expect(nav.findArchiveName('navC')).toEqual('nav-archive')
41
+ expect(nav.findArchiveName('navB')).toEqual(undefined)
42
+ expect(nav.findArchiveName('navD')).toEqual(undefined)
43
+ })
44
+
45
+ test('find cache length', () => {
46
+ expect(nav.findCacheHours('navC')).toEqual(3)
47
+ expect(nav.findCacheHours('navB')).toEqual(4)
48
+ })
49
+
50
+ test('find display', () => {
51
+ expect(nav.findDisplay('test-nav')).toEqual(undefined)
52
+ expect(nav.findDisplay('navA')).toEqual('discs')
53
+ })
54
+
55
+ test('find icon', () => {
56
+ expect(nav.findIcon('test-nav')).toEqual(undefined)
57
+ expect(nav.findIcon('navA')).toEqual('mdi-plus')
58
+ })
59
+
60
+ test('find item', () => {
61
+ expect(nav.findItem('test-nav')).not.toBeNull()
62
+ expect(nav.findItem('test-navs')).toBeNull()
63
+ expect(nav.findItem('test-nav')?.name).toEqual('test-nav')
64
+ expect(nav.findItem('nav-alias')?.name).toEqual('navC')
65
+ })
66
+
67
+ test('find store name', () => {
68
+ expect(nav.findStoreName('navA')).toEqual('navA')
69
+ expect(nav.findStoreName('navB')).toEqual('navB')
70
+ expect(nav.findStoreName('test-nav')).toEqual('test-nav')
71
+ })
72
+
73
+ test('find path', () => {
74
+ expect(nav.findPath('test-nav')).toEqual('')
75
+ expect(nav.findPath('navA')).toEqual('/testing/one')
76
+ expect(nav.findPath('nav-alias')).toEqual('/test/alias')
77
+ })
78
+
79
+ test('find single display', () => {
80
+ expect(nav.findSingleDisplay('navA')).toEqual('disc')
81
+ expect(nav.findSingleDisplay('navB')).toEqual('navone')
82
+ })
83
+
84
+ test('update nav props', () => {
85
+ nav.updateNavigationProperties('test-nav')
86
+
87
+ expect(nav.showAppBar.value).toEqual(true)
88
+ expect(nav.showAppNavigation.value).toEqual(true)
89
+ expect(nav.backgroundName.value).toEqual(undefined)
90
+ expect(nav.hesitate.value).toEqual(false)
91
+
92
+ nav.updateNavigationProperties('navA')
93
+
94
+ expect(nav.showAppBar.value).toEqual(false)
95
+ expect(nav.showAppNavigation.value).toEqual(false)
96
+ expect(nav.backgroundName.value).toEqual('b')
97
+ expect(nav.hesitate.value).toEqual(true)
98
+ })
99
+ })
@@ -0,0 +1,138 @@
1
+ import { setActivePinia, createPinia } from 'pinia'
2
+ import { createSessionStore, createWholeLastUpdateStore } from '../src/composables/stores'
3
+ import { createApi } from '../src/composables/api'
4
+ import { describe, test, expect, beforeEach, afterAll, afterEach, beforeAll } from 'vitest'
5
+ import { setupServer } from 'msw/node'
6
+ import { http, HttpResponse } from 'msw'
7
+ import { createApp } from 'vue'
8
+ import { withSetup } from './utils'
9
+
10
+ const handlers = [
11
+ http.get('https://api/get/1', () => {
12
+ return HttpResponse.json({
13
+ data: { test: 'g' }
14
+ })
15
+ }),
16
+ http.get('https://api/getAll', () => {
17
+ return HttpResponse.json({
18
+ data: [{ test: 'a', id: '1' }, { test: 'b', id: '2' }],
19
+ count: 2,
20
+ filters: ['test', 'test two']
21
+ })
22
+ }),
23
+ http.post('https://api/post', () => {
24
+ return HttpResponse.json({ data: { test: 'd', id: '11' } })
25
+ }),
26
+ http.patch('https://api/patch', () => {
27
+ return HttpResponse.json({ data: { test: 'e', rowVersion: 2 } })
28
+ })
29
+ ]
30
+
31
+ const server = setupServer(...handlers)
32
+
33
+ beforeAll(() => server.listen({ onUnhandledRequest: 'error' }))
34
+
35
+ afterAll(() => server.close())
36
+
37
+ afterEach(() => {
38
+ server.resetHandlers()
39
+ })
40
+
41
+ describe('use last update store no api no caching', () => {
42
+ const [api, app] = withSetup(() => createApi({
43
+ findPath: () => 'https://api/',
44
+ defaultThrowError: false
45
+ }))
46
+
47
+ const pinia = createPinia()
48
+ app.use(pinia)
49
+
50
+ setActivePinia(pinia)
51
+
52
+ const store = createWholeLastUpdateStore({
53
+ api: null,
54
+ storageMode: 'session',
55
+ storeName: 'whole'
56
+ })()
57
+
58
+ test('all session activity', async () => {
59
+
60
+ await store.post<any>({ data: { id: '1', test: 'a' }})
61
+ await store.post<any>({ data: { id: '2', test: 'b' }})
62
+ await store.post<any>({ data: { id: '3', test: 'c' }})
63
+
64
+ let postRes = await store.get<any>({ id: '1' })
65
+ expect(postRes.data).toEqual({ id: '1', test: 'a' })
66
+
67
+ await store.patch<any>({ data: { id: '1', test: 'd' }})
68
+ postRes = await store.get<any>({ id: '1' })
69
+ expect(postRes.data).toEqual({ id: '1', test: 'd' })
70
+
71
+ let getAll = await store.getAll<any>({})
72
+ expect(getAll.data.length).toEqual(3)
73
+ expect(getAll.count).toEqual(3)
74
+
75
+
76
+ await store.deleteItem({ data: { id: '1' }})
77
+ postRes = await store.get<any>({ id: '1' })
78
+ expect(postRes.data).toEqual(undefined)
79
+
80
+ getAll = await store.getAll<any>({})
81
+ expect(getAll.data.length).toEqual(2)
82
+ expect(getAll.count).toEqual(2)
83
+ })
84
+
85
+ })
86
+
87
+
88
+ describe('use last update store with api no caching', () => {
89
+ const [api, app] = withSetup(() => createApi({
90
+ findPath: () => 'https://api/',
91
+ defaultThrowError: false
92
+ }))
93
+
94
+ const pinia = createPinia()
95
+ app.use(pinia)
96
+ setActivePinia(pinia)
97
+
98
+ const store = createWholeLastUpdateStore({
99
+ storageMode: 'session',
100
+ api: api,
101
+ storeName: 'whole-api'
102
+ })()
103
+
104
+
105
+ test('get', async () => {
106
+ const res = await store.get<any>({ id: '1' })
107
+ expect(res.data).toEqual({ test: 'a', id: '1' })
108
+ let getAll = await store.getAll<any>({})
109
+ expect(getAll.data.length).toEqual(2)
110
+ expect(getAll.count).toEqual(2)
111
+ })
112
+
113
+
114
+ test('get all', async () => {
115
+ const res = await store.getAll<any>({})
116
+ expect(res).toEqual({
117
+ data: [{test: 'a', id: '1' },{test: 'b', id: '2' }],
118
+ count: 2,
119
+ filters: []
120
+ })
121
+ })
122
+
123
+ test('post', async () => {
124
+ const res = await store.post<any>({ data: { test: 'a', id: '11' }})
125
+ expect(res).not.toBeNull()
126
+
127
+ //gets api post return
128
+ let getRes = await store.get<any>({ id: '11' })
129
+ expect(getRes.data).toEqual({ test: 'd', id: '11' })
130
+ })
131
+
132
+ test('patch', async () => {
133
+ const res = await store.patch<any>({ data: { test: 'a', id: '1', rowVersion: 1 }})
134
+ let getRes = await store.get<any>({ id: '1' })
135
+ expect(getRes.data.rowVersion).toEqual(2)
136
+ })
137
+
138
+ })