Plugin Directory

Changeset 2709284


Ignore:
Timestamp:
04/13/2022 03:57:42 PM (4 years ago)
Author:
orderable
Message:

Update to version 1.3.0 from GitHub

Location:
orderable
Files:
6 added
2 deleted
68 edited
1 copied

Legend:

Unmodified
Added
Removed
  • orderable/tags/1.3.0/assets/admin/css/main.css

    r2666071 r2709284  
    107107  width: 50px !important;
    108108  text-align: center;
    109 }
    110 
    111 .orderable-table__row:first-child .orderable-table__column--remove .orderable-table__remove-row {
    112   display: none;
    113109}
    114110
  • orderable/tags/1.3.0/assets/admin/css/main.min.css

    r2666071 r2709284  
    1 .orderable-table{table-layout:fixed;max-width:712px;border-collapse:collapse;border-radius:8px;background:#f4f5f6;border:none;width:100%}.orderable-table td,.orderable-table th{width:auto;vertical-align:middle!important}.orderable-table th{padding-top:12px!important;padding-bottom:12px!important}.orderable-table thead,.orderable-table tr{border-bottom:1px solid #d8dbdf}.orderable-table>tbody th{padding-left:14px;border-right:1px solid #d8dbdf}.orderable-table tr.orderable-table__row--last,.orderable-table tr:last-child{border:none}.orderable-table__row--hidden .orderable-table__column:not(.orderable-table__column--always-visible){position:relative}.orderable-table__row--hidden .orderable-table__column:not(.orderable-table__column--always-visible):after{content:'';position:absolute;top:0;left:0;right:0;bottom:0}.orderable-table__row--hidden .orderable-table__column:not(.orderable-table__column--always-visible)>*{opacity:.3}.orderable-table .orderable-table__row--repeatable{border-bottom-color:#fff;border-bottom-width:8px}.orderable-table__column{padding:8px 14px!important;vertical-align:middle!important;text-align:left;border-left:none;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-table__column--checkbox{width:36px!important;padding-right:0!important;border-right:none}.orderable-table__column--label{padding-left:4px!important;width:100px!important}@media (max-width:782px){.orderable-table__column--label{width:auto!important}}.orderable-table__column--medium{width:156px!important}@media (max-width:782px){.orderable-table__column--medium{width:auto!important}}.orderable-table__column--time{width:190px!important}@media (max-width:782px){.orderable-table__column--time{width:auto!important}}.orderable-table__column--remove{width:50px!important;text-align:center}.orderable-table__row:first-child .orderable-table__column--remove .orderable-table__remove-row{display:none}.orderable-table__column--last{width:auto}.orderable-table__column input,.orderable-table__column select{max-width:100%}.orderable-table__no-td-border{border-bottom:none!important}.orderable-table__no-td-border th{border-bottom:1px solid #d8dbdf}.orderable-table__cell--no-padding{padding:0!important}.orderable-table__cell .orderable-table__cell-column{float:left;width:50%;-webkit-box-sizing:border-box;box-sizing:border-box;padding:0 14px}.orderable-table__cell .orderable-table__cell-column--first{padding-left:0}.orderable-table__cell .orderable-table__cell-column--last{padding-right:0}.orderable-table__cell--2-col{overflow:hidden}@media (max-width:782px){.orderable-table__cell,.orderable-table__column--remove{display:table-cell!important}}.orderable-table__fieldset{display:inline-block;margin:0 15px 0 0}.orderable-table__fieldset legend{font-weight:600;margin:0 0 4px;padding:0;color:#23282d}.orderable-table__fieldset--nowrap{white-space:nowrap}.orderable-table__rwd-labels{display:none;margin:0 0 4px;min-width:160px}.orderable-table--child{border-radius:0;background:0 0}.orderable-table--child td:last-child,.orderable-table--child th:last-child{border-right:1px solid #d8dbdf}.orderable-table--compact td,.orderable-table--compact th{padding:8px 14px!important}@media (max-width:782px){.orderable-table--compact th{padding-bottom:4px!important}.orderable-table--compact td{padding-top:0!important}.orderable-table--compact tr:first-child th{padding-top:10px!important}.orderable-table--compact tr.orderable-table__row--last td{padding-bottom:15px!important}}@media (max-width:1210px){.orderable-table--open-hours thead{display:none}.orderable-table--open-hours td,.orderable-table--open-hours th{display:block;width:100%!important;height:auto;margin:0}.orderable-table--open-hours .orderable-table__column--checkbox,.orderable-table--open-hours .orderable-table__column--label{padding-top:20px!important}.orderable-table--open-hours .orderable-table__column--checkbox{width:36px!important;float:left}.orderable-table--open-hours .orderable-table__column--label{float:left;width:auto!important;font-weight:700}.orderable-table--open-hours .orderable-table__column--time{clear:both}.orderable-table--open-hours .orderable-table__column--last{padding-bottom:20px!important}.orderable-table--open-hours .orderable-table__rwd-labels{display:inline-block}}@media (max-width:782px){.orderable-table--open-hours .orderable-table__column--checkbox{width:45px!important}.orderable-table--open-hours .orderable-table__column--label{line-height:21px}.orderable-table--open-hours .orderable-table__rwd-labels{display:block}}.orderable-admin-button,body .submit .button-primary{background:#2271b6;border:none;padding:8px 15px;border-radius:8px;line-height:1.3;font-weight:600;cursor:pointer;-webkit-box-shadow:none;box-shadow:none;margin:0;text-decoration:none;display:inline-block;color:#fff;font-size:14px}.orderable-admin-button:active,.orderable-admin-button:focus,.orderable-admin-button:hover,body .submit .button-primary:active,body .submit .button-primary:focus,body .submit .button-primary:hover{background:#164975;color:#fff}.orderable-admin-button:focus,body .submit .button-primary:focus{outline:0;-webkit-box-shadow:none;box-shadow:none}.orderable-admin-button.orderable-trigger-element--active,body .submit .button-primary.orderable-trigger-element--active{background:#0A2135;color:#fff;cursor:default}.orderable-admin-button .dashicons,body .submit .button-primary .dashicons{width:16px;height:16px;font-size:16px;vertical-align:middle}.orderable-admin-button--pro .dashicons{line-height:12px}.orderable-toolbar{margin:0 0 15px;display:block;overflow:hidden}.orderable-toolbar .orderable-admin-button{margin-right:4px}.orderable-toolbar__actions{display:inline-block}.multi-select-container{display:inline-block;position:relative;width:100%;max-width:100%}.multi-select-menu{position:absolute;left:0;top:17px;z-index:1;float:left;min-width:100%;background:#fff;margin:1em 0;border:1px solid #aaa;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.2);box-shadow:0 1px 3px rgba(0,0,0,.2);display:none;padding:4px 0}.multi-select-menuitem{display:block;font-size:14px;padding:4px 10px 4px 36px;white-space:nowrap;position:relative}.multi-select-menuitem--none{padding-left:10px}@media (max-width:782px){.multi-select-menu{top:27px}.multi-select-menuitem{min-height:32px;line-height:32px;padding-left:44px}}.multi-select-menuitem--titled:before{display:block;font-weight:700;content:attr(data-group-title);margin:0 0 .25em -20px}.multi-select-menuitem--titledsr:before{display:block;font-weight:700;content:attr(data-group-title);border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.multi-select-presets{border-bottom:1px solid #ddd}.multi-select-menuitem input{position:absolute;left:10px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);margin:0!important}.multi-select-button{display:inline-block;font-size:14px;padding:0 28px 0 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:-.5em;background-color:#fff;border:1px solid #7e8993;border-radius:4px;-webkit-box-shadow:0 0 0 transparent;box-shadow:0 0 0 transparent;cursor:pointer;line-height:2;min-height:30px;position:relative;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}@media (max-width:782px){.multi-select-button{min-height:40px;height:40px;line-height:38px}}.multi-select-button:focus,.multi-select-container--open .multi-select-button{border-color:#007cba;-webkit-box-shadow:0 0 0 1px #007cba;box-shadow:0 0 0 1px #007cba;outline:transparent solid 2px}.multi-select-button:after{content:"";display:inline-block;width:0;height:0;border-style:solid;border-width:6px 6px 0;border-color:#999 transparent transparent;vertical-align:.1em;position:absolute;right:8px;top:50%;-webkit-transform:translateY(-48%);transform:translateY(-48%)}.multi-select-container--open .multi-select-menu{display:block}.multi-select-container--open .multi-select-button:after{border-width:0 .4em .4em;border-color:transparent transparent #999}.multi-select-container--positioned .multi-select-menu{-webkit-box-sizing:border-box;box-sizing:border-box}.multi-select-container--positioned .multi-select-menu label{white-space:normal}.orderable-toggle-wrapper{display:none}.orderable-toggle-wrapper--active{display:inline-block}.orderable-element--disabled{opacity:.3;position:relative}.orderable-element--disabled:after{content:'';position:absolute;top:0;left:0;right:0;bottom:0}.iconic-onboard-modal-setting__field-section{margin:1em 0}.orderable-time{white-space:nowrap}.orderable-time__select{display:inline-block!important;width:auto!important}#orderable_settings_store_general_service_hours_pickup_same_label{margin:5px 4px 20px;display:inline-block}.wpsf-section .form-table td p{margin:0 0 15px}.wpsf-section .form-table td p:last-child{margin-bottom:0}body .wpsf-tab .postbox h2{background:#0A2135}body input.datepicker{background-color:#fff!important}.wpsf-section-description--getting_started+table th{display:none}.orderable-ui-hide{display:none!important}[v-cloak]{display:none}.orderable-fields-row{background:#fff;border:1px solid #d8dbdf;border-radius:8px;margin-bottom:15px;overflow:visible}.orderable-fields-row:after{content:"";display:table}.orderable-fields-row:hover .orderable-fields-row__header-action{visibility:visible}.orderable-fields-row__header{padding:12px 15px;display:grid;grid-template-columns:34px auto 68px;-ms-user-select:none;user-select:none;-moz-user-select:none;-webkit-user-select:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.orderable-fields-row__header-title{cursor:pointer}.orderable-fields-row__header-title h3{margin-top:0;margin-bottom:0;font-size:14px;min-height:19px}.orderable-fields-row__header-title span{font-size:12px;opacity:.8}.orderable-fields-row__header-action{visibility:hidden;text-align:right}.orderable-fields-row__body{display:none;-webkit-transform:scaleY(0);transform:scaleY(0);opacity:0;-webkit-transition:.5s all;transition:.5s all}.orderable-fields-row__body-row{display:-webkit-box;display:-ms-flexbox;display:flex;border-bottom:1px solid #d8dbdf;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.orderable-fields-row__body-row:last-child{border-bottom:none}.orderable-fields-row__body-row-left{background:#f4f5f6;padding:15px;width:20%;-ms-flex-negative:0;flex-shrink:0}.orderable-fields-row__body-row-left h3{margin-top:0;margin-bottom:5px;font-size:14px}.orderable-fields-row__body-row-left p{margin:0}.orderable-fields-row__body-row-right{padding:0 25px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;overflow:visible;-webkit-box-flex:1;-ms-flex:1;flex:1}.orderable-fields-row__body-row-right *{min-width:0}.orderable-fields-row__body-row-right--empty{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.orderable-fields-row--open{border:none}.orderable-fields-row--open .orderable-fields-row__body{display:block;-webkit-transform:scaleY(1);transform:scaleY(1);opacity:1;border:1px solid #d8dbdf;border-top:none;border-radius:0 0 8px 8px;overflow:hidden}.orderable-fields-row--open .orderable-fields-row__header-action .orderable-dashicons:hover{color:#fff!important;opacity:.6}.orderable-fields-row--open .orderable-fields-row__header{background:#0A2135;border:1px solid #0A2135;border-bottom:none;border-radius:8px 8px 0 0}.orderable-fields-row--open .orderable-fields-row__header,.orderable-fields-row--open .orderable-fields-row__header h3{color:#fff}.orderable-fields-row--meta{border:none;padding:0;border-radius:0;margin:-6px -12px -12px}.orderable-fields-row--meta .orderable-fields-row__body{display:block;-webkit-transform:scaleY(1);transform:scaleY(1);opacity:1}.orderable-fields-row--meta .orderable-fields-row__body-row{grid-template-columns:30% 70%}.orderable-fields-row--empty{padding:30px 15px;text-align:center}.orderable-fields-row--empty p:last-child{margin-bottom:0}.orderable-fields-row textarea{margin:20px 0;min-height:100px;min-width:300px}.orderable-fields-options{width:100%;margin:20px 0;overflow-x:scroll}.orderable-fields-options__row{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;margin:0 0 15px;background:#F4F5F6;border-radius:8px;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-fields-options__row input[type=text],.orderable-fields-options__row input[type=number],.orderable-fields-options__row select{max-width:100%;width:100%}.orderable-fields-options__row input[type=checkbox],.orderable-fields-options__row input[type=radio]{margin:-2px 4px 0 0}.orderable-fields-options__row-fields{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;margin:0;-webkit-box-flex:1;-ms-flex:1;flex:1}.orderable-fields-options__row-fields-row{display:-webkit-box;display:-ms-flexbox;display:flex;margin:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;-ms-flex-preferred-size:50%;flex-basis:50%}@media (max-width:1090px){.orderable-fields-options__row-fields-row{-webkit-box-align:normal;-ms-flex-align:normal;align-items:normal;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media (max-width:1440px){.orderable-fields-options__row-fields-row{-ms-flex-preferred-size:100%;flex-basis:100%;border-bottom:1px solid #d8dbdf;border-right:none}.orderable-fields-options__row-fields-row:last-child{border-bottom:none}}.orderable-fields-options__row-field{-ms-flex-preferred-size:50%;flex-basis:50%;margin:0;padding:8px 8px 10px;border-right:1px solid #d8dbdf}.orderable-fields-options__row-fields-row:last-child .orderable-fields-options__row-field:last-child{border-right:none}.orderable-fields-options__row-field-spacer{height:30px;line-height:30px}.orderable-fields-options__row-field--visual{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.orderable-fields-options__row-field--full{-ms-flex-preferred-size:100%;flex-basis:100%}@media (max-width:1440px){.orderable-fields-options__row-field--full,.orderable-fields-options__row-field:last-child{border-right:none}}@media (max-width:1090px){.orderable-fields-options__row-field{border-right:none;border-bottom:1px solid #d8dbdf}.orderable-fields-options__row-field--full,.orderable-fields-options__row-field:last-child{border-bottom:none}}.orderable-fields-options__row-field-label{font-weight:600;display:block;margin:0 0 4px}.orderable-fields-options__row-field-label--inline{margin:0}.orderable-fields-options__row-type{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.orderable-fields-options__row-visual{margin:0 0 -4px 10px}@media (max-width:782px){.orderable-fields-options__row-field-spacer{height:40px;line-height:40px}.orderable-fields-options__row-visual{margin-bottom:0}}.orderable-fields-options__row-action,.orderable-fields-options__row-drag{min-width:20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 10px;-webkit-box-sizing:content-box;box-sizing:content-box}.orderable-fields-options__row-drag{border-right:1px solid #d8dbdf}.orderable-fields-options__row-action{border-left:1px solid #d8dbdf}.orderable-fields-options__grid{display:grid;grid-template-columns:20px 1fr 80px 45px 1fr 70px 20px;grid-auto-columns:1fr;grid-auto-flow:column;grid-gap:20px}.orderable-fields-options__grid--select{grid-template-columns:20px repeat(2,1fr) 70px 20px}.orderable-fields-options__header{font-weight:700;margin-bottom:15px}.orderable-fields-options__bullets{margin:0}.orderable-fields-options__bullets li:last-child{margin-bottom:0}.orderable-fields-option__empty{display:inline-block;width:40px;height:40px}input[type=color].orderable-fields-option-color{width:40px;max-width:40px;border:1px solid #d8dbdf;border-radius:8px;padding:3px;height:40px;display:block;margin:0;cursor:pointer}input[type=color].orderable-fields-option-color::-webkit-color-swatch-wrapper{padding:0}input[type=color].orderable-fields-option-color::-webkit-color-swatch{border:none;border-radius:5px}input[type=color].orderable-fields-option-color:focus,input[type=color].orderable-fields-option-color:hover{outline:0;border-color:#7E8993;-webkit-box-shadow:none;box-shadow:none}.orderable-fields-option-img__dummy{position:relative;width:40px;text-align:center;height:40px;line-height:40px;font-size:24px;color:#0073aa;border:1px solid #d8dbdf;border-radius:8px;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-fields-option-img__dummy:hover{color:#006799;border-color:#7E8993}.orderable-fields-option-img__img-wrapper{position:relative;width:40px;max-width:40px;border:1px solid #d8dbdf;border-radius:8px;padding:3px;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-fields-option-img__img{width:100%;height:auto;border-radius:5px;display:block}.orderable-fields-option-img__delete{position:absolute;top:-6px;right:-6px;color:#fff;background:#dc3232;border-radius:100%;padding:4px;font-size:14px;line-height:14px;width:14px;height:14px;border:3px solid #fff;-webkit-box-sizing:content-box;box-sizing:content-box}.orderable-fields-option-img__delete:hover{background:#a00;color:#fff!important}.orderable-pro-modal{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.orderable-pro-modal__content{text-align:center;padding:20px;margin:auto 0}.orderable-pointer .wp-pointer-content h3{background:#F5F0FE;border-radius:8px 8px 0 0;color:#1d2327;border-color:#BF9EF9;padding-left:50px}.orderable-pointer .wp-pointer-content h3:before{background-color:#7031F5;color:#fff;font-size:16px;height:26px;width:26px;line-height:26px;top:12px}.orderable-pointer.wp-pointer-bottom .wp-pointer-arrow,.orderable-pointer.wp-pointer-top .wp-pointer-arrow,.orderable-pointer.wp-pointer-undefined .wp-pointer-arrow{left:30px}.orderable-pointer.wp-pointer-top .wp-pointer-arrow,.orderable-pointer.wp-pointer-undefined .wp-pointer-arrow{border-bottom-color:#bf9ff9}.orderable-pointer.wp-pointer-top .wp-pointer-arrow-inner,.orderable-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#F5F0FE}.orderable-pointer .wp-pointer-content{border-radius:8px}.wp-core-ui .orderable-pointer .button-secondary{margin-right:.5em}
     1.orderable-table{table-layout:fixed;max-width:712px;border-collapse:collapse;border-radius:8px;background:#f4f5f6;border:none;width:100%}.orderable-table td,.orderable-table th{width:auto;vertical-align:middle!important}.orderable-table th{padding-top:12px!important;padding-bottom:12px!important}.orderable-table thead,.orderable-table tr{border-bottom:1px solid #d8dbdf}.orderable-table>tbody th{padding-left:14px;border-right:1px solid #d8dbdf}.orderable-table tr.orderable-table__row--last,.orderable-table tr:last-child{border:none}.orderable-table__row--hidden .orderable-table__column:not(.orderable-table__column--always-visible){position:relative}.orderable-table__row--hidden .orderable-table__column:not(.orderable-table__column--always-visible):after{content:'';position:absolute;top:0;left:0;right:0;bottom:0}.orderable-table__row--hidden .orderable-table__column:not(.orderable-table__column--always-visible)>*{opacity:.3}.orderable-table .orderable-table__row--repeatable{border-bottom-color:#fff;border-bottom-width:8px}.orderable-table__column{padding:8px 14px!important;vertical-align:middle!important;text-align:left;border-left:none;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-table__column--checkbox{width:36px!important;padding-right:0!important;border-right:none}.orderable-table__column--label{padding-left:4px!important;width:100px!important}@media (max-width:782px){.orderable-table__column--label{width:auto!important}}.orderable-table__column--medium{width:156px!important}@media (max-width:782px){.orderable-table__column--medium{width:auto!important}}.orderable-table__column--time{width:190px!important}@media (max-width:782px){.orderable-table__column--time{width:auto!important}.orderable-table__column--remove{display:table-cell!important}}.orderable-table__column--remove{width:50px!important;text-align:center}.orderable-table__column--last{width:auto}.orderable-table__column input,.orderable-table__column select{max-width:100%}.orderable-table__no-td-border{border-bottom:none!important}.orderable-table__no-td-border th{border-bottom:1px solid #d8dbdf}.orderable-table__cell--no-padding{padding:0!important}.orderable-table__cell .orderable-table__cell-column{float:left;width:50%;-webkit-box-sizing:border-box;box-sizing:border-box;padding:0 14px}.orderable-table__cell .orderable-table__cell-column--first{padding-left:0}.orderable-table__cell .orderable-table__cell-column--last{padding-right:0}.orderable-table__cell--2-col{overflow:hidden}@media (max-width:782px){.orderable-table__cell{display:table-cell!important}}.orderable-table__fieldset{display:inline-block;margin:0 15px 0 0}.orderable-table__fieldset legend{font-weight:600;margin:0 0 4px;padding:0;color:#23282d}.orderable-table__fieldset--nowrap{white-space:nowrap}.orderable-table__rwd-labels{display:none;margin:0 0 4px;min-width:160px}.orderable-table--child{border-radius:0;background:0 0}.orderable-table--child td:last-child,.orderable-table--child th:last-child{border-right:1px solid #d8dbdf}.orderable-table--compact td,.orderable-table--compact th{padding:8px 14px!important}@media (max-width:782px){.orderable-table--compact th{padding-bottom:4px!important}.orderable-table--compact td{padding-top:0!important}.orderable-table--compact tr:first-child th{padding-top:10px!important}.orderable-table--compact tr.orderable-table__row--last td{padding-bottom:15px!important}}@media (max-width:1210px){.orderable-table--open-hours thead{display:none}.orderable-table--open-hours td,.orderable-table--open-hours th{display:block;width:100%!important;height:auto;margin:0}.orderable-table--open-hours .orderable-table__column--checkbox,.orderable-table--open-hours .orderable-table__column--label{padding-top:20px!important}.orderable-table--open-hours .orderable-table__column--checkbox{width:36px!important;float:left}.orderable-table--open-hours .orderable-table__column--label{float:left;width:auto!important;font-weight:700}.orderable-table--open-hours .orderable-table__column--time{clear:both}.orderable-table--open-hours .orderable-table__column--last{padding-bottom:20px!important}.orderable-table--open-hours .orderable-table__rwd-labels{display:inline-block}}@media (max-width:782px){.orderable-table--open-hours .orderable-table__column--checkbox{width:45px!important}.orderable-table--open-hours .orderable-table__column--label{line-height:21px}.orderable-table--open-hours .orderable-table__rwd-labels{display:block}}.orderable-admin-button,body .submit .button-primary{background:#2271b6;border:none;padding:8px 15px;border-radius:8px;line-height:1.3;font-weight:600;cursor:pointer;-webkit-box-shadow:none;box-shadow:none;margin:0;text-decoration:none;display:inline-block;color:#fff;font-size:14px}.orderable-admin-button:active,.orderable-admin-button:focus,.orderable-admin-button:hover,body .submit .button-primary:active,body .submit .button-primary:focus,body .submit .button-primary:hover{background:#164975;color:#fff}.orderable-admin-button:focus,body .submit .button-primary:focus{outline:0;-webkit-box-shadow:none;box-shadow:none}.orderable-admin-button.orderable-trigger-element--active,body .submit .button-primary.orderable-trigger-element--active{background:#0A2135;color:#fff;cursor:default}.orderable-admin-button .dashicons,body .submit .button-primary .dashicons{width:16px;height:16px;font-size:16px;vertical-align:middle}.orderable-admin-button--pro .dashicons{line-height:12px}.orderable-toolbar{margin:0 0 15px;display:block;overflow:hidden}.orderable-toolbar .orderable-admin-button{margin-right:4px}.orderable-toolbar__actions{display:inline-block}.multi-select-container{display:inline-block;position:relative;width:100%;max-width:100%}.multi-select-menu{position:absolute;left:0;top:17px;z-index:1;float:left;min-width:100%;background:#fff;margin:1em 0;border:1px solid #aaa;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.2);box-shadow:0 1px 3px rgba(0,0,0,.2);display:none;padding:4px 0}.multi-select-menuitem{display:block;font-size:14px;padding:4px 10px 4px 36px;white-space:nowrap;position:relative}.multi-select-menuitem--none{padding-left:10px}@media (max-width:782px){.multi-select-menu{top:27px}.multi-select-menuitem{min-height:32px;line-height:32px;padding-left:44px}}.multi-select-menuitem--titled:before{display:block;font-weight:700;content:attr(data-group-title);margin:0 0 .25em -20px}.multi-select-menuitem--titledsr:before{display:block;font-weight:700;content:attr(data-group-title);border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.multi-select-presets{border-bottom:1px solid #ddd}.multi-select-menuitem input{position:absolute;left:10px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);margin:0!important}.multi-select-button{display:inline-block;font-size:14px;padding:0 28px 0 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:-.5em;background-color:#fff;border:1px solid #7e8993;border-radius:4px;-webkit-box-shadow:0 0 0 transparent;box-shadow:0 0 0 transparent;cursor:pointer;line-height:2;min-height:30px;position:relative;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}@media (max-width:782px){.multi-select-button{min-height:40px;height:40px;line-height:38px}}.multi-select-button:focus,.multi-select-container--open .multi-select-button{border-color:#007cba;-webkit-box-shadow:0 0 0 1px #007cba;box-shadow:0 0 0 1px #007cba;outline:transparent solid 2px}.multi-select-button:after{content:"";display:inline-block;width:0;height:0;border-style:solid;border-width:6px 6px 0;border-color:#999 transparent transparent;vertical-align:.1em;position:absolute;right:8px;top:50%;-webkit-transform:translateY(-48%);transform:translateY(-48%)}.multi-select-container--open .multi-select-menu{display:block}.multi-select-container--open .multi-select-button:after{border-width:0 .4em .4em;border-color:transparent transparent #999}.multi-select-container--positioned .multi-select-menu{-webkit-box-sizing:border-box;box-sizing:border-box}.multi-select-container--positioned .multi-select-menu label{white-space:normal}.orderable-toggle-wrapper{display:none}.orderable-toggle-wrapper--active{display:inline-block}.orderable-element--disabled{opacity:.3;position:relative}.orderable-element--disabled:after{content:'';position:absolute;top:0;left:0;right:0;bottom:0}.iconic-onboard-modal-setting__field-section{margin:1em 0}.orderable-time{white-space:nowrap}.orderable-time__select{display:inline-block!important;width:auto!important}#orderable_settings_store_general_service_hours_pickup_same_label{margin:5px 4px 20px;display:inline-block}.wpsf-section .form-table td p{margin:0 0 15px}.wpsf-section .form-table td p:last-child{margin-bottom:0}body .wpsf-tab .postbox h2{background:#0A2135}body input.datepicker{background-color:#fff!important}.wpsf-section-description--getting_started+table th{display:none}.orderable-ui-hide{display:none!important}[v-cloak]{display:none}.orderable-fields-row{background:#fff;border:1px solid #d8dbdf;border-radius:8px;margin-bottom:15px;overflow:visible}.orderable-fields-row:after{content:"";display:table}.orderable-fields-row:hover .orderable-fields-row__header-action{visibility:visible}.orderable-fields-row__header{padding:12px 15px;display:grid;grid-template-columns:34px auto 68px;-ms-user-select:none;user-select:none;-moz-user-select:none;-webkit-user-select:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.orderable-fields-row__header-title{cursor:pointer}.orderable-fields-row__header-title h3{margin-top:0;margin-bottom:0;font-size:14px;min-height:19px}.orderable-fields-row__header-title span{font-size:12px;opacity:.8}.orderable-fields-row__header-action{visibility:hidden;text-align:right}.orderable-fields-row__body{display:none;-webkit-transform:scaleY(0);transform:scaleY(0);opacity:0;-webkit-transition:.5s all;transition:.5s all}.orderable-fields-row__body-row{display:-webkit-box;display:-ms-flexbox;display:flex;border-bottom:1px solid #d8dbdf;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.orderable-fields-row__body-row:last-child{border-bottom:none}.orderable-fields-row__body-row-left{background:#f4f5f6;padding:15px;width:20%;-ms-flex-negative:0;flex-shrink:0}.orderable-fields-row__body-row-left h3{margin-top:0;margin-bottom:5px;font-size:14px}.orderable-fields-row__body-row-left p{margin:0}.orderable-fields-row__body-row-right{padding:0 25px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;overflow:visible;-webkit-box-flex:1;-ms-flex:1;flex:1}.orderable-fields-row__body-row-right *{min-width:0}.orderable-fields-row__body-row-right--empty{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.orderable-fields-row--open{border:none}.orderable-fields-row--open .orderable-fields-row__body{display:block;-webkit-transform:scaleY(1);transform:scaleY(1);opacity:1;border:1px solid #d8dbdf;border-top:none;border-radius:0 0 8px 8px;overflow:hidden}.orderable-fields-row--open .orderable-fields-row__header-action .orderable-dashicons:hover{color:#fff!important;opacity:.6}.orderable-fields-row--open .orderable-fields-row__header{background:#0A2135;border:1px solid #0A2135;border-bottom:none;border-radius:8px 8px 0 0}.orderable-fields-row--open .orderable-fields-row__header,.orderable-fields-row--open .orderable-fields-row__header h3{color:#fff}.orderable-fields-row--meta{border:none;padding:0;border-radius:0;margin:-6px -12px -12px}.orderable-fields-row--meta .orderable-fields-row__body{display:block;-webkit-transform:scaleY(1);transform:scaleY(1);opacity:1}.orderable-fields-row--meta .orderable-fields-row__body-row{grid-template-columns:30% 70%}.orderable-fields-row--empty{padding:30px 15px;text-align:center}.orderable-fields-row--empty p:last-child{margin-bottom:0}.orderable-fields-row textarea{margin:20px 0;min-height:100px;min-width:300px}.orderable-fields-options{width:100%;margin:20px 0;overflow-x:scroll}.orderable-fields-options__row{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;margin:0 0 15px;background:#F4F5F6;border-radius:8px;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-fields-options__row input[type=text],.orderable-fields-options__row input[type=number],.orderable-fields-options__row select{max-width:100%;width:100%}.orderable-fields-options__row input[type=checkbox],.orderable-fields-options__row input[type=radio]{margin:-2px 4px 0 0}.orderable-fields-options__row-fields{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;margin:0;-webkit-box-flex:1;-ms-flex:1;flex:1}.orderable-fields-options__row-fields-row{display:-webkit-box;display:-ms-flexbox;display:flex;margin:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;-ms-flex-preferred-size:50%;flex-basis:50%}@media (max-width:1090px){.orderable-fields-options__row-fields-row{-webkit-box-align:normal;-ms-flex-align:normal;align-items:normal;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media (max-width:1440px){.orderable-fields-options__row-fields-row{-ms-flex-preferred-size:100%;flex-basis:100%;border-bottom:1px solid #d8dbdf;border-right:none}.orderable-fields-options__row-fields-row:last-child{border-bottom:none}}.orderable-fields-options__row-field{-ms-flex-preferred-size:50%;flex-basis:50%;margin:0;padding:8px 8px 10px;border-right:1px solid #d8dbdf}.orderable-fields-options__row-fields-row:last-child .orderable-fields-options__row-field:last-child{border-right:none}.orderable-fields-options__row-field-spacer{height:30px;line-height:30px}.orderable-fields-options__row-field--visual{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.orderable-fields-options__row-field--full{-ms-flex-preferred-size:100%;flex-basis:100%}@media (max-width:1440px){.orderable-fields-options__row-field--full,.orderable-fields-options__row-field:last-child{border-right:none}}@media (max-width:1090px){.orderable-fields-options__row-field{border-right:none;border-bottom:1px solid #d8dbdf}.orderable-fields-options__row-field--full,.orderable-fields-options__row-field:last-child{border-bottom:none}}.orderable-fields-options__row-field-label{font-weight:600;display:block;margin:0 0 4px}.orderable-fields-options__row-field-label--inline{margin:0}.orderable-fields-options__row-type{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.orderable-fields-options__row-visual{margin:0 0 -4px 10px}@media (max-width:782px){.orderable-fields-options__row-field-spacer{height:40px;line-height:40px}.orderable-fields-options__row-visual{margin-bottom:0}}.orderable-fields-options__row-action,.orderable-fields-options__row-drag{min-width:20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 10px;-webkit-box-sizing:content-box;box-sizing:content-box}.orderable-fields-options__row-drag{border-right:1px solid #d8dbdf}.orderable-fields-options__row-action{border-left:1px solid #d8dbdf}.orderable-fields-options__grid{display:grid;grid-template-columns:20px 1fr 80px 45px 1fr 70px 20px;grid-auto-columns:1fr;grid-auto-flow:column;grid-gap:20px}.orderable-fields-options__grid--select{grid-template-columns:20px repeat(2,1fr) 70px 20px}.orderable-fields-options__header{font-weight:700;margin-bottom:15px}.orderable-fields-options__bullets{margin:0}.orderable-fields-options__bullets li:last-child{margin-bottom:0}.orderable-fields-option__empty{display:inline-block;width:40px;height:40px}input[type=color].orderable-fields-option-color{width:40px;max-width:40px;border:1px solid #d8dbdf;border-radius:8px;padding:3px;height:40px;display:block;margin:0;cursor:pointer}input[type=color].orderable-fields-option-color::-webkit-color-swatch-wrapper{padding:0}input[type=color].orderable-fields-option-color::-webkit-color-swatch{border:none;border-radius:5px}input[type=color].orderable-fields-option-color:focus,input[type=color].orderable-fields-option-color:hover{outline:0;border-color:#7E8993;-webkit-box-shadow:none;box-shadow:none}.orderable-fields-option-img__dummy{position:relative;width:40px;text-align:center;height:40px;line-height:40px;font-size:24px;color:#0073aa;border:1px solid #d8dbdf;border-radius:8px;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-fields-option-img__dummy:hover{color:#006799;border-color:#7E8993}.orderable-fields-option-img__img-wrapper{position:relative;width:40px;max-width:40px;border:1px solid #d8dbdf;border-radius:8px;padding:3px;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-fields-option-img__img{width:100%;height:auto;border-radius:5px;display:block}.orderable-fields-option-img__delete{position:absolute;top:-6px;right:-6px;color:#fff;background:#dc3232;border-radius:100%;padding:4px;font-size:14px;line-height:14px;width:14px;height:14px;border:3px solid #fff;-webkit-box-sizing:content-box;box-sizing:content-box}.orderable-fields-option-img__delete:hover{background:#a00;color:#fff!important}.orderable-pro-modal{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.orderable-pro-modal__content{text-align:center;padding:20px;margin:auto 0}.orderable-pointer .wp-pointer-content h3{background:#F5F0FE;border-radius:8px 8px 0 0;color:#1d2327;border-color:#BF9EF9;padding-left:50px}.orderable-pointer .wp-pointer-content h3:before{background-color:#7031F5;color:#fff;font-size:16px;height:26px;width:26px;line-height:26px;top:12px}.orderable-pointer.wp-pointer-bottom .wp-pointer-arrow,.orderable-pointer.wp-pointer-top .wp-pointer-arrow,.orderable-pointer.wp-pointer-undefined .wp-pointer-arrow{left:30px}.orderable-pointer.wp-pointer-top .wp-pointer-arrow,.orderable-pointer.wp-pointer-undefined .wp-pointer-arrow{border-bottom-color:#bf9ff9}.orderable-pointer.wp-pointer-top .wp-pointer-arrow-inner,.orderable-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#F5F0FE}.orderable-pointer .wp-pointer-content{border-radius:8px}.wp-core-ui .orderable-pointer .button-secondary{margin-right:.5em}
  • orderable/tags/1.3.0/assets/admin/js/main.js

    r2641784 r2709284  
    522522             * On remove row.
    523523             */
    524             $( document.body ).on( 'orderable-remove-row', function( e, data ) {
     524            $( document.body ).on( 'orderable-remove-row', function ( e, data ) {
    525525                var $button = $( data.trigger_element ),
    526                     $row = $button.closest( 'tr' );
    527 
    528                 $row.remove();
     526                    $row = $button.closest( 'tr' ),
     527                    $tbody = $button.closest( 'tbody' ),
     528                    row_count = $tbody.find( '>tr' ).length;
     529
     530                if ( row_count === 1 ) {
     531                    $row.find( 'input' ).val( '' );
     532                    $row.find( 'input[type="checkbox"], input[type="radio"]' ).prop( 'checked', false );
     533
     534                    $row.find( 'select' ).each(function() {
     535                        if ( $( this ).hasClass( 'orderable-select--multi-select' ) ) {
     536                            return;
     537                        }
     538
     539                        this.selectedIndex = 0;
     540                        $( this ).trigger( 'change' );
     541                    } );
     542
     543                    $row.find( '.multi-select-container input[type="checkbox"]' ).trigger( 'change' );
     544                } else {
     545                    $row.remove();
     546                }
    529547
    530548                $( document ).trigger( 'orderable-add-last-row-class' );
     
    561579                    selected = $trigger_element.val();
    562580
    563                 if ( $parent.length <= 0 || typeof targets[ selected ] === 'undefined' ) {
     581                if ( $parent.length <= 0 || typeof targets === 'undefined' || typeof targets[ selected ] === 'undefined' ) {
    564582                    return;
    565583                }
     
    618636            $last_rows.removeClass( last_row_class );
    619637            $last_row.addClass( last_row_class );
    620         }
     638        },
    621639    };
    622640
  • orderable/tags/1.3.0/assets/admin/js/main.min.js

    r2641784 r2709284  
    1 !function(n,e){"use strict";var t=function(){n(e.body).on("change",".orderable-table--product-lists input, .orderable-table--product-lists select",function(e){var t=n(this).closest(".orderable-table__row--repeatable"),r=t.find(".orderable-field--product-list-shortcode"),o={categories:"",layout:"grid",images:"true"},t={categories:t.find(".orderable-select--categories").val().toString(),layout:t.find(".orderable-select--layout").val().toString(),images:t.find(".orderable-checkbox--images").is(":checked").toString()},a="[orderable";n.each(t,function(e,t){t!==o[e]&&(a+=" "+e+'="'+t+'"')}),a+="]",r.val(a)})};n(e).ready(t)}(jQuery,document),function(n,e){"use strict";var r={on_ready:function(){r.init(n(".orderable-select--multi-select")),n(e).on("orderable-init-multiselects",function(e,t){void 0!==t.selects&&r.init(t.selects)}),n(e).on("orderable-destroy-multiselects",function(e,t){void 0!==t.selects&&r.destroy(t.selects)})},init:function(e){e.multiSelect(),e.each(function(e,t){var r=n(t),o=r.siblings(".multi-select-container"),a=o.find(".multi-select-menuitem--none"),t=r.data("orderable-select-none-option");a.remove();r=o.find(".multi-select-menuitem"),a=o.find(".multi-select-menuitems input:disabled").parent();r.show(),a.hide(),r.length===a.length&&t&&o.find(".multi-select-menuitems").append('<span class="multi-select-menuitem multi-select-menuitem--none">'+t+"</span>")})},destroy:function(e){e.siblings(".multi-select-container").remove(),e.data("plugin_multiSelect",!1)}};n(e).ready(r.on_ready)}(jQuery,document),function(a,e){"use strict";var r={on_ready:function(){a(e.body).on("iconic_onboard_wait_complete",r.init.woo_installed)},init:{woo_installed:function(e,t){void 0!==t&&"install_plugin"===t.wait_event&&"woocommerce"===t.json.plugin_data["repo-slug"]&&r.populate_woo_fields()}},populate_woo_fields:function(){var e={default_country:{type:"select",selector:"select#iconic_onboard_default_country"},business_name:{type:"text",selector:"input#iconic_onboard_business_name"},business_address:{type:"text",selector:"input#iconic_onboard_business_address"},business_address_2:{type:"text",selector:"input#iconic_onboard_business_address_2"},business_city:{type:"text",selector:"input#iconic_onboard_business_city"},business_postcode:{type:"text",selector:"input#iconic_onboard_business_postcode"}};a.post(ajaxurl,{action:"orderable_get_onboard_woo_fields",fields:e}).done(function(o){try{o.success&&a.each(e,function(e,t){var r=a(t.selector);r.length<=0||void 0===o.data[e]||("select"===t.type?r.html(o.data[e]):r.val(o.data[e]))})}catch(e){console.log(o),console.log(e),alert("Couldn't save.")}}).fail(function(){alert("Couldn't save. Are you connected to the internet? ")}).always(function(){})}};a(e).ready(r.on_ready)}(jQuery,document),jQuery(document).ready(function(){setTimeout(function(){"undefined"!=typeof orderable_pointers&&jQuery.each(orderable_pointers.pointers,function(e){return function e(t){var r,o,n=orderable_pointers.pointers[t];void 0!==n&&(r=jQuery.extend(n.options,{pointerClass:"wp-pointer wc-pointer orderable-pointer",close:function(){jQuery.post(orderable_pointers.ajax_url,{pointer:t,action:"dismiss-wp-pointer"}),n&&n.next&&orderable_pointers.pointers[n.next]&&setTimeout(function(){e(n.next)},250)},skip:function(){var e=document.querySelectorAll(".wp-pointer.orderable-pointer");Array.from(e).forEach(function(e){e.remove()}),jQuery.post(orderable_pointers.ajax_url,{pointer:"orderable-tour-dismissed",action:"dismiss-wp-pointer"})},buttons:function(e,t){var r=n&&n.next&&orderable_pointers.pointers[n.next]?orderable_pointers.i18n.next:orderable_pointers.i18n.close,o=jQuery('<a class="button button-primary" href="#">'+r+"</a>"),a=jQuery('<div class="wc-pointer-buttons" />'),r=orderable_pointers.i18n.skip,r=jQuery('<a class="button button-secondary" href="#">'+r+"</a>");return o.bind("click.pointer",function(e){e.preventDefault(),t.element.pointer("close")}),r.bind("click.pointer",function(e){e.preventDefault(),n.options.skip()}),a.append(o),a.append(r),a}}),(o=jQuery(n.target).pointer(r)).pointer("open"),n.next_trigger&&jQuery(n.next_trigger.target).on(n.next_trigger.event,function(){setTimeout(function(){o.pointer("close")},400)}))}(e),!1})},800)}),function(e,t){"use strict";var r={on_ready:function(){e(t.body).on("orderable-pro-modal",r.trigger_pro_modal)},trigger_pro_modal:function(){console.log("Pro only."),tb_show("Pro Feature","#TB_inline?inlineId=orderable-pro-modal")}};e(t).ready(r.on_ready)}(jQuery,document),function(l,i){"use strict";var e=function(){l(i.body).on("change",".orderable-enable-day",function(e){var t=l(this),r=t.data("orderable-day"),o=t.is(":checked"),t=l(".orderable-select--days");t.find('option[value="'+r+'"]').attr("disabled",!o).attr("selected",!1),l(i).trigger("orderable-destroy-multiselects",{selects:t}),l(i).trigger("orderable-init-multiselects",{selects:t})}),l(i.body).on("change",'[name*="\\[store_general_services\\]"]',function(e){var t=l(this),r=t.val(),o=t.is(":checked"),a=l(".orderable-toggle-wrapper--"+r+', button[data-orderable-wrapper="'+r+'"]'),t="orderable-ui-hide",r=l(".orderable-notice--select-service");o?a.removeClass(t):a.addClass(t);a=l('[name*="\\[store_general_services\\]"]:checked');a.length<=0?r.removeClass(t):(r.addClass(t),n=a.eq(0).val(),l('button[data-orderable-wrapper="'+n+'"]').click());var r=l("#orderable_settings_store_general_service_hours_pickup_same"),n=r.data("default-state");void 0===n&&(n=r.is(":checked"),r.data("default-state",n)),1===a.length&&"pickup"===a.val()?(r.prop("checked",!1).parent().addClass(t),l(i.body).trigger("orderable-toggle-element",{trigger_element:r[0],add_class:!1})):(r.prop("checked",n).parent().removeClass(t),l(i.body).trigger("orderable-toggle-element",{trigger_element:r[0],add_class:n})),l(i).trigger("orderable-add-last-row-class")}),l(i.body).on("change","#orderable_settings_store_general_service_hours_pickup_same",function(e){l(this).data("default-state",l(this).is(":checked"))}),l(".orderable-enable-day").on("change",function(){jQuery(this).closest("tr").toggleClass("orderable-table__row--hidden",!this.checked)})};l(i).ready(e)}(jQuery,document),function(a,n){"use strict";var e={on_ready:function(){a(n.body).on("click change","[data-orderable-trigger]",function(e){var t=a(this),r=t.data("orderable-trigger");"click"===e.type&&(t.is("select")||t.is("input")||t.is("label"))||((t.is("button")||t.is("a"))&&e.preventDefault(),a(n.body).trigger("orderable-"+r,{trigger_element:t}))}),a(n.body).on("orderable-new-row",function(e,t){var r=a(t.trigger_element),o=a(r.data("orderable-target")).find(".orderable-table__body"),t=o.find(".orderable-table__row--repeatable:last-child"),r=parseInt(t.data("orderable-index"))+1,r=t[0].outerHTML.replace(/\[\d+\]/gm,"["+r+"]").replace(/data-orderable-index="\d+"/gm,'data-orderable-index="'+r+'"');o.append(r);r=o.find(".orderable-table__row--repeatable:last-child");r.find("input").not('input[type="checkbox"]').val(""),r.find(".hasDatepicker").each(function(e,t){a(t).removeClass("hasDatepicker").attr("id","")}),r.find("select").each(function(e,t){var r=a(t),o=r.find('option[value=""]'),t=r.hasClass("orderable-select--multi-select"),o=o.length||t?"":r.find("option:first-child").val();r.val(o),t&&r.change()}),r.find('input[type="checkbox"]').prop("checked",!1),r.find(".multi-select-container").remove(),a(n).trigger("orderable-init-multiselects",{selects:o.find(".orderable-select--multi-select")}),o.find('[data-orderable-trigger="toggle-element-select"]').change(),a(n).trigger("orderable-add-last-row-class")}),a(n.body).on("orderable-remove-row",function(e,t){a(t.trigger_element).closest("tr").remove(),a(n).trigger("orderable-add-last-row-class")}),a(n.body).on("orderable-toggle-element",function(e,t){t.add_class=void 0!==t.add_class?t.add_class:null;var r=a(t.trigger_element),o=a(r.data("orderable-target")),r=r.data("orderable-toggle-class");null===t.add_class?o.toggleClass(r):!0===t.add_class?o.addClass(r):!1===t.add_class&&o.removeClass(r),a(n).trigger("orderable-add-last-row-class")}),a(n.body).on("orderable-toggle-element-select",function(e,t){var r=a(t.trigger_element),o=r.closest(r.data("orderable-parent")),t=r.data("orderable-target"),r=r.val();o.length<=0||void 0===t[r]||(a.each(t[r],function(e,t){t=o.find(t);"show"===e?t.show():"hide"===e&&t.hide()}),a(n).trigger("orderable-add-last-row-class"))}),a(n.body).on("orderable-toggle-wrapper",function(e,t){var r=a(t.trigger_element),o=r.data("orderable-wrapper"),t=r.data("orderable-wrapper-group"),r=a(".orderable-toggle-wrapper--"+o+'[data-orderable-wrapper-group="'+t+'"]');a('.orderable-toggle-wrapper[data-orderable-wrapper-group="'+t+'"]').removeClass("orderable-toggle-wrapper--active"),r.addClass("orderable-toggle-wrapper--active"),a('[data-orderable-wrapper-group="'+t+'"]').removeClass("orderable-trigger-element--active"),a('[data-orderable-wrapper="'+o+'"]').addClass("orderable-trigger-element--active"),a(n).trigger("orderable-add-last-row-class")}),a(n).on("orderable-add-last-row-class",e.add_last_row_class),a(n).trigger("orderable-add-last-row-class")},add_last_row_class:function(){var e=a(".orderable-table"),t="orderable-table__row--last",r=e.find("."+t),e=e.find("tbody > tr:visible:last");r.removeClass(t),e.addClass(t)}};a(n).ready(e.on_ready)}(jQuery,document);
     1!function(n,e){"use strict";var t=function(){n(e.body).on("change",".orderable-table--product-lists input, .orderable-table--product-lists select",function(e){var t=n(this).closest(".orderable-table__row--repeatable"),r=t.find(".orderable-field--product-list-shortcode"),o={categories:"",layout:"grid",images:"true"},t={categories:t.find(".orderable-select--categories").val().toString(),layout:t.find(".orderable-select--layout").val().toString(),images:t.find(".orderable-checkbox--images").is(":checked").toString()},a="[orderable";n.each(t,function(e,t){t!==o[e]&&(a+=" "+e+'="'+t+'"')}),a+="]",r.val(a)})};n(e).ready(t)}(jQuery,document),function(n,e){"use strict";var r={on_ready:function(){r.init(n(".orderable-select--multi-select")),n(e).on("orderable-init-multiselects",function(e,t){void 0!==t.selects&&r.init(t.selects)}),n(e).on("orderable-destroy-multiselects",function(e,t){void 0!==t.selects&&r.destroy(t.selects)})},init:function(e){e.multiSelect(),e.each(function(e,t){var t=n(t),r=t.siblings(".multi-select-container"),o=r.find(".multi-select-menuitem--none"),t=t.data("orderable-select-none-option"),o=(o.remove(),r.find(".multi-select-menuitem")),a=r.find(".multi-select-menuitems input:disabled").parent();o.show(),a.hide(),o.length===a.length&&t&&r.find(".multi-select-menuitems").append('<span class="multi-select-menuitem multi-select-menuitem--none">'+t+"</span>")})},destroy:function(e){e.siblings(".multi-select-container").remove(),e.data("plugin_multiSelect",!1)}};n(e).ready(r.on_ready)}(jQuery,document),function(a,e){"use strict";var r={on_ready:function(){a(e.body).on("iconic_onboard_wait_complete",r.init.woo_installed)},init:{woo_installed:function(e,t){void 0!==t&&"install_plugin"===t.wait_event&&"woocommerce"===t.json.plugin_data["repo-slug"]&&r.populate_woo_fields()}},populate_woo_fields:function(){var e={default_country:{type:"select",selector:"select#iconic_onboard_default_country"},business_name:{type:"text",selector:"input#iconic_onboard_business_name"},business_address:{type:"text",selector:"input#iconic_onboard_business_address"},business_address_2:{type:"text",selector:"input#iconic_onboard_business_address_2"},business_city:{type:"text",selector:"input#iconic_onboard_business_city"},business_postcode:{type:"text",selector:"input#iconic_onboard_business_postcode"}};a.post(ajaxurl,{action:"orderable_get_onboard_woo_fields",fields:e}).done(function(o){try{o.success&&a.each(e,function(e,t){var r=a(t.selector);r.length<=0||void 0===o.data[e]||("select"===t.type?r.html(o.data[e]):r.val(o.data[e]))})}catch(e){console.log(o),console.log(e),alert("Couldn't save.")}}).fail(function(){alert("Couldn't save. Are you connected to the internet? ")}).always(function(){})}};a(e).ready(r.on_ready)}(jQuery,document),jQuery(document).ready(function(){setTimeout(function(){"undefined"!=typeof orderable_pointers&&jQuery.each(orderable_pointers.pointers,function(e){return function e(t){var r,o,n=orderable_pointers.pointers[t];void 0!==n&&(r=jQuery.extend(n.options,{pointerClass:"wp-pointer wc-pointer orderable-pointer",close:function(){jQuery.post(orderable_pointers.ajax_url,{pointer:t,action:"dismiss-wp-pointer"}),n&&n.next&&orderable_pointers.pointers[n.next]&&setTimeout(function(){e(n.next)},250)},skip:function(){var e=document.querySelectorAll(".wp-pointer.orderable-pointer");Array.from(e).forEach(function(e){e.remove()}),jQuery.post(orderable_pointers.ajax_url,{pointer:"orderable-tour-dismissed",action:"dismiss-wp-pointer"})},buttons:function(e,t){var r=n&&n.next&&orderable_pointers.pointers[n.next]?orderable_pointers.i18n.next:orderable_pointers.i18n.close,r=jQuery('<a class="button button-primary" href="#">'+r+"</a>"),o=jQuery('<div class="wc-pointer-buttons" />'),a=orderable_pointers.i18n.skip,a=jQuery('<a class="button button-secondary" href="#">'+a+"</a>");return r.bind("click.pointer",function(e){e.preventDefault(),t.element.pointer("close")}),a.bind("click.pointer",function(e){e.preventDefault(),n.options.skip()}),o.append(r),o.append(a),o}}),(o=jQuery(n.target).pointer(r)).pointer("open"),n.next_trigger&&jQuery(n.next_trigger.target).on(n.next_trigger.event,function(){setTimeout(function(){o.pointer("close")},400)}))}(e),!1})},800)}),function(e,t){"use strict";var r={on_ready:function(){e(t.body).on("orderable-pro-modal",r.trigger_pro_modal)},trigger_pro_modal:function(){console.log("Pro only."),tb_show("Pro Feature","#TB_inline?inlineId=orderable-pro-modal")}};e(t).ready(r.on_ready)}(jQuery,document),function(n,l){"use strict";var e=function(){n(l.body).on("change",".orderable-enable-day",function(e){var t=n(this),r=t.data("orderable-day"),t=t.is(":checked"),o=n(".orderable-select--days");o.find('option[value="'+r+'"]').attr("disabled",!t).attr("selected",!1),n(l).trigger("orderable-destroy-multiselects",{selects:o}),n(l).trigger("orderable-init-multiselects",{selects:o})}),n(l.body).on("change",'[name*="\\[store_general_services\\]"]',function(e){var t=n(this),r=t.val(),t=t.is(":checked"),r=n(".orderable-toggle-wrapper--"+r+', button[data-orderable-wrapper="'+r+'"]'),o="orderable-ui-hide",a=n(".orderable-notice--select-service"),t=(t?r.removeClass(o):r.addClass(o),n('[name*="\\[store_general_services\\]"]:checked')),a=(t.length<=0?a.removeClass(o):(a.addClass(o),r=t.eq(0).val(),n('button[data-orderable-wrapper="'+r+'"]').click()),n("#orderable_settings_store_general_service_hours_pickup_same")),r=a.data("default-state");void 0===r&&(r=a.is(":checked"),a.data("default-state",r)),1===t.length&&"pickup"===t.val()?(a.prop("checked",!1).parent().addClass(o),n(l.body).trigger("orderable-toggle-element",{trigger_element:a[0],add_class:!1})):(a.prop("checked",r).parent().removeClass(o),n(l.body).trigger("orderable-toggle-element",{trigger_element:a[0],add_class:r})),n(l).trigger("orderable-add-last-row-class")}),n(l.body).on("change","#orderable_settings_store_general_service_hours_pickup_same",function(e){n(this).data("default-state",n(this).is(":checked"))}),n(".orderable-enable-day").on("change",function(){jQuery(this).closest("tr").toggleClass("orderable-table__row--hidden",!this.checked)})};n(l).ready(e)}(jQuery,document),function(a,n){"use strict";var e={on_ready:function(){a(n.body).on("click change","[data-orderable-trigger]",function(e){var t=a(this),r=t.data("orderable-trigger");"click"===e.type&&(t.is("select")||t.is("input")||t.is("label"))||((t.is("button")||t.is("a"))&&e.preventDefault(),a(n.body).trigger("orderable-"+r,{trigger_element:t}))}),a(n.body).on("orderable-new-row",function(e,t){var t=a(t.trigger_element),t=a(t.data("orderable-target")).find(".orderable-table__body"),r=t.find(".orderable-table__row--repeatable:last-child"),o=parseInt(r.data("orderable-index"))+1,r=r[0].outerHTML.replace(/\[\d+\]/gm,"["+o+"]").replace(/data-orderable-index="\d+"/gm,'data-orderable-index="'+o+'"'),o=(t.append(r),t.find(".orderable-table__row--repeatable:last-child"));o.find("input").not('input[type="checkbox"]').val(""),o.find(".hasDatepicker").each(function(e,t){a(t).removeClass("hasDatepicker").attr("id","")}),o.find("select").each(function(e,t){var t=a(t),r=t.find('option[value=""]'),o=t.hasClass("orderable-select--multi-select"),r=r.length||o?"":t.find("option:first-child").val();t.val(r),o&&t.change()}),o.find('input[type="checkbox"]').prop("checked",!1),o.find(".multi-select-container").remove(),a(n).trigger("orderable-init-multiselects",{selects:t.find(".orderable-select--multi-select")}),t.find('[data-orderable-trigger="toggle-element-select"]').change(),a(n).trigger("orderable-add-last-row-class")}),a(n.body).on("orderable-remove-row",function(e,t){var t=a(t.trigger_element),r=t.closest("tr");1===t.closest("tbody").find(">tr").length?(r.find("input").val(""),r.find('input[type="checkbox"], input[type="radio"]').prop("checked",!1),r.find("select").each(function(){a(this).hasClass("orderable-select--multi-select")||(this.selectedIndex=0,a(this).trigger("change"))}),r.find('.multi-select-container input[type="checkbox"]').trigger("change")):r.remove(),a(n).trigger("orderable-add-last-row-class")}),a(n.body).on("orderable-toggle-element",function(e,t){t.add_class=void 0!==t.add_class?t.add_class:null;var r=a(t.trigger_element),o=a(r.data("orderable-target")),r=r.data("orderable-toggle-class");null===t.add_class?o.toggleClass(r):!0===t.add_class?o.addClass(r):!1===t.add_class&&o.removeClass(r),a(n).trigger("orderable-add-last-row-class")}),a(n.body).on("orderable-toggle-element-select",function(e,t){var t=a(t.trigger_element),r=t.closest(t.data("orderable-parent")),o=t.data("orderable-target"),t=t.val();r.length<=0||void 0===o||void 0===o[t]||(a.each(o[t],function(e,t){t=r.find(t);"show"===e?t.show():"hide"===e&&t.hide()}),a(n).trigger("orderable-add-last-row-class"))}),a(n.body).on("orderable-toggle-wrapper",function(e,t){var t=a(t.trigger_element),r=t.data("orderable-wrapper"),t=t.data("orderable-wrapper-group"),o=a(".orderable-toggle-wrapper--"+r+'[data-orderable-wrapper-group="'+t+'"]');a('.orderable-toggle-wrapper[data-orderable-wrapper-group="'+t+'"]').removeClass("orderable-toggle-wrapper--active"),o.addClass("orderable-toggle-wrapper--active"),a('[data-orderable-wrapper-group="'+t+'"]').removeClass("orderable-trigger-element--active"),a('[data-orderable-wrapper="'+r+'"]').addClass("orderable-trigger-element--active"),a(n).trigger("orderable-add-last-row-class")}),a(n).on("orderable-add-last-row-class",e.add_last_row_class),a(n).trigger("orderable-add-last-row-class")},add_last_row_class:function(){var e=a(".orderable-table"),t="orderable-table__row--last",r=e.find("."+t),e=e.find("tbody > tr:visible:last");r.removeClass(t),e.addClass(t)}};a(n).ready(e.on_ready)}(jQuery,document);
  • orderable/tags/1.3.0/assets/frontend/css/main.css

    r2641784 r2709284  
    8787}
    8888
    89 .orderable-main--sections-side_tabs {
    90   display: -webkit-box;
    91   display: -ms-flexbox;
    92   display: flex;
    93 }
    94 
    95 .orderable-main--sections-side_tabs .orderable-main__tabs {
    96   margin: 0 24px 0 0 !important;
    97 }
    98 
    99 .orderable-main--sections-side_tabs .orderable-main__sections {
    100   -webkit-box-flex: 1;
    101       -ms-flex: 1;
    102           flex: 1;
     89@media screen and (min-width: 620px) {
     90  .orderable-main--sections-side_tabs {
     91    display: -webkit-box;
     92    display: -ms-flexbox;
     93    display: flex;
     94  }
     95  .orderable-main--sections-side_tabs .orderable-main__tabs {
     96    margin: 0 24px 0 0 !important;
     97  }
     98  .orderable-main--sections-side_tabs .orderable-main__sections {
     99    -webkit-box-flex: 1;
     100        -ms-flex: 1;
     101            flex: 1;
     102  }
    103103}
    104104
     
    206206}
    207207
     208.orderable-button--icon {
     209  padding: 10px !important;
     210  width: 44px;
     211  height: 44px;
     212  line-height: 24px;
     213  border: none;
     214  background: none !important;
     215}
     216
     217body .orderable-button--icon:hover,
     218body .orderable-button--icon:focus,
     219body .orderable-button--icon:active {
     220  background: none !important;
     221  opacity: 0.6;
     222}
     223
     224.orderable-button--icon svg {
     225  width: 24px;
     226  height: 24px;
     227  border-radius: 12px;
     228  overflow: hidden;
     229  -webkit-transition: opacity 250ms ease-in-out;
     230  transition: opacity 250ms ease-in-out;
     231}
     232
     233.orderable-button--icon.orderable-button--loading:after {
     234  display: none;
     235}
     236
    208237/* Block */
    209238/* Modifiers */
     
    465494
    466495.orderable-product__options {
    467   margin: 12px 0 24px;
     496  margin: 0 0 24px;
    468497  padding: 0;
    469498  border-radius: 6px;
    470 }
    471 
    472 .orderable-product__options:last-child {
    473   margin-bottom: 0;
    474499}
    475500
     
    483508
    484509.orderable-product__options th {
    485   font-size: 18px;
    486510  line-height: 22px;
    487511}
     
    529553.orderable-product__actions-button {
    530554  margin: 0 0 0 auto;
     555}
     556
     557.orderable-product__tabs {
     558  margin: 24px 0;
     559}
     560
     561.orderable-product__tabs-section {
     562  display: none;
     563}
     564
     565.orderable-product__tabs-section:first-child {
     566  display: block;
     567}
     568
     569.orderable-product__tabs-section *:last-child {
     570  margin-bottom: 0;
    531571}
    532572
     
    544584}
    545585
     586.orderable-product--options .orderable-product__hero {
     587  margin: -24px -24px 0;
     588}
     589
     590.orderable-product--options .orderable-product__title {
     591  text-align: left;
     592  margin: 24px 0 !important;
     593}
     594
    546595.orderable-product--options .orderable-product__actions {
    547596  margin-top: auto;
     
    553602}
    554603
    555 .orderable-product--clickable {
     604.orderable-product--add-to-cart,
     605.orderable-product--product-options,
     606.orderable-product--view-product {
    556607  cursor: pointer;
    557608}
    558609
    559 .orderable-product__hero--title {
     610.orderable-product--image-cropped .orderable-product__hero {
    560611  overflow: hidden;
    561   padding: 24px 24px 0;
    562   margin: -24px -24px 24px;
     612  padding: 0;
    563613  text-align: center;
    564614  -webkit-box-flex: 0;
    565615      -ms-flex: 0 0 auto;
    566616          flex: 0 0 auto;
    567 }
    568 
    569 .orderable-product__hero--title:before {
    570   background: #fff;
    571   top: auto;
    572   left: -10px;
    573   right: -10px;
    574   bottom: -10px;
    575   position: absolute;
    576   height: 24px;
    577   z-index: 5;
    578   -webkit-transform: rotate(-1.5deg);
    579           transform: rotate(-1.5deg);
    580 }
    581 
    582 .orderable-product__hero--title:after {
    583   content: "";
    584   position: absolute;
    585   top: 0;
    586   left: 0;
    587   right: 0;
    588   bottom: 0;
    589   background: -webkit-gradient(linear, left bottom, left top, from(rgba(24, 33, 37, 0.8)), to(rgba(24, 33, 37, 0.3)));
    590   background: linear-gradient(0deg, rgba(24, 33, 37, 0.8), rgba(24, 33, 37, 0.3));
    591   z-index: 1;
    592   mix-blend-mode: multiply;
    593 }
    594 
    595 .orderable-product__hero--title .orderable-product__image {
     617  height: 72px;
     618}
     619
     620.orderable-product--image-cropped .orderable-product__image {
    596621  -o-object-fit: cover;
    597622     object-fit: cover;
     
    602627  left: 0;
    603628  top: 0;
    604 }
    605 
    606 .orderable-product__hero--title .orderable-product__title {
    607   color: #fff;
    608   position: relative;
    609   z-index: 10;
    610629}
    611630
     
    636655    width: 100%;
    637656    min-width: 60px;
    638     max-width: 80px;
     657    max-width: 95px;
    639658    border-radius: 6px;
    640659    overflow: hidden;
     
    756775  -ms-flex-preferred-size: 100%;
    757776      flex-basis: 100%;
     777  margin-bottom: -1px;
    758778}
    759779
     
    768788}
    769789
    770 .orderable-drawer__cart .widget_shopping_cart_content {
     790.orderable-drawer__cart .orderable-mini-cart-wrapper {
    771791  height: 100%;
    772792  display: -webkit-box;
     
    886906  background: #fce9e9;
    887907  color: #dc2323;
    888   padding: 6px 12px;
     908  padding: 6px 12px 6px 28px !important;
    889909  text-align: center;
    890910  margin: 0 0 6px;
     
    899919.orderable-drawer__cart .orderable-mini-cart__notices .button {
    900920  display: none;
     921}
     922
     923.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-message::before, .orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error::before, .orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-info::before {
     924  left: 12px;
    901925}
    902926
     
    10251049
    10261050.orderable-drawer__close:focus:before, .orderable-drawer__close:focus:after, .orderable-drawer__close:active:before, .orderable-drawer__close:active:after, .orderable-drawer__close:hover:before, .orderable-drawer__close:hover:after {
    1027   background-color: #fff;
     1051  background-color: #405763;
    10281052}
    10291053
     
    11901214
    11911215.orderable-tabs {
    1192   margin: 0 0 24px !important;
     1216  margin: 0 0 24px;
     1217  position: relative;
     1218}
     1219
     1220.orderable-tabs__list {
     1221  margin: 0 1px 0 0 !important;
    11931222  padding: 0 !important;
    11941223  list-style: none none outside;
    1195 }
    1196 
    1197 .orderable-main--sections-side_tabs .orderable-tabs {
    1198   -webkit-box-flex: 0;
    1199       -ms-flex: 0 1 auto;
    1200           flex: 0 1 auto;
     1224  position: relative;
     1225  display: -webkit-box;
     1226  display: -ms-flexbox;
     1227  display: flex;
     1228  -ms-flex-wrap: nowrap;
     1229      flex-wrap: nowrap;
     1230  -webkit-box-flex: 1;
     1231      -ms-flex: 1 1 auto;
     1232          flex: 1 1 auto;
     1233  overflow-x: auto;
     1234  overflow-y: hidden;
     1235  overflow: -moz-scrollbars-none;
     1236  scrollbar-base-color: transparent;
     1237  -webkit-overflow-scrolling: touch;
     1238}
     1239
     1240.orderable-tabs__list::-webkit-scrollbar {
     1241  display: none;
     1242}
     1243
     1244@media screen and (min-width: 620px) {
     1245  .orderable-main--sections-side_tabs .orderable-tabs__list {
     1246    -webkit-box-flex: 0;
     1247        -ms-flex: 0 1 auto;
     1248            flex: 0 1 auto;
     1249    -webkit-box-orient: vertical;
     1250    -webkit-box-direction: normal;
     1251        -ms-flex-direction: column;
     1252            flex-direction: column;
     1253    height: auto;
     1254  }
    12011255}
    12021256
    12031257.orderable-tabs__item {
    12041258  display: inline-block;
    1205   margin: 0;
     1259  margin: 0 10px 0 0;
    12061260  padding: 0;
    12071261}
    12081262
    1209 .orderable-main--sections-side_tabs .orderable-tabs__item {
    1210   margin: 0 0 6px;
    1211   display: block;
    1212 }
    1213 
    1214 .orderable-main--sections-side_tabs .orderable-tabs__item:last-child {
    1215   margin: 0;
     1263.orderable-tabs__item:last-child {
     1264  margin-right: 0;
     1265}
     1266
     1267@media screen and (min-width: 620px) {
     1268  .orderable-main--sections-side_tabs .orderable-tabs__item {
     1269    margin: 0 0 12px;
     1270    display: block;
     1271  }
     1272  .orderable-main--sections-side_tabs .orderable-tabs__item:last-child {
     1273    margin: 0;
     1274  }
    12161275}
    12171276
     
    12221281  white-space: nowrap;
    12231282  line-height: 40px;
    1224   color: #000;
     1283  color: #405763;
    12251284  font-weight: 400;
    12261285  border-radius: 20px;
    1227   -webkit-transition: none;
    1228   transition: none;
     1286  -webkit-transition: all 150ms ease-out;
     1287  transition: all 150ms ease-out;
     1288  background: #ecf1f3;
    12291289}
    12301290
     
    12361296
    12371297a.orderable-tabs__link:hover, a.orderable-tabs__link:active, a.orderable-tabs__link:focus {
    1238   color: #000;
     1298  color: #405763;
    12391299  text-decoration: none;
    1240   background: #ecf1f3;
     1300  background: #c7d4db;
    12411301}
    12421302
     
    12481308.orderable--button-style-square a.orderable-tabs__link {
    12491309  border-radius: 0;
     1310}
     1311
     1312.orderable-tabs__arrow {
     1313  background: #fff;
     1314  -webkit-box-shadow: 0 0.4px 1.3px rgba(0, 0, 0, 0.05), 0 1.3px 4.5px rgba(0, 0, 0, 0.06), 0 6px 16px rgba(0, 0, 0, 0.07);
     1315          box-shadow: 0 0.4px 1.3px rgba(0, 0, 0, 0.05), 0 1.3px 4.5px rgba(0, 0, 0, 0.06), 0 6px 16px rgba(0, 0, 0, 0.07);
     1316  border: none;
     1317  width: 40px !important;
     1318  height: 40px !important;
     1319  padding: 0 !important;
     1320  margin: 0 !important;
     1321  border-radius: 20px !important;
     1322  position: absolute;
     1323  top: 0;
     1324  right: 0;
     1325  text-align: center;
     1326  line-height: 40px;
     1327  display: none;
     1328}
     1329
     1330.orderable-tabs__arrow:hover, .orderable-tabs__arrow:focus, .orderable-tabs__arrow:active {
     1331  background: #fff;
     1332  outline: none;
     1333}
     1334
     1335.orderable-tabs__arrow svg {
     1336  width: 21px;
     1337  height: 24px;
     1338  margin: 8px 0;
     1339}
     1340
     1341/**
     1342 * Accordion.
     1343 */
     1344.orderable-accordion {
     1345  margin: 24px 0;
     1346  background: #f6f8f9;
     1347  padding: 0 24px;
     1348  border-radius: 6px;
     1349}
     1350
     1351.orderable-product__options + .orderable-accordion,
     1352.orderable-product-fields-group-wrap + .orderable-accordion {
     1353  margin-top: 36px;
     1354}
     1355
     1356.orderable-accordion__item {
     1357  border-top: 1px solid #E6ECEF;
     1358}
     1359
     1360.orderable-accordion__item:first-child {
     1361  border-top: none;
     1362}
     1363
     1364.orderable-accordion__item-link {
     1365  display: block;
     1366  padding: 18px 0;
     1367  margin: 0;
     1368  color: inherit;
     1369  position: relative;
     1370}
     1371
     1372.orderable-accordion__item-link--active, .orderable-accordion__item-link:hover, .orderable-accordion__item-link:active, .orderable-accordion__item-link:focus {
     1373  color: #000;
     1374  border: none;
     1375  outline: none;
     1376}
     1377
     1378.orderable-accordion__item-link--active:before, .orderable-accordion__item-link--active:after, .orderable-accordion__item-link:hover:before, .orderable-accordion__item-link:hover:after, .orderable-accordion__item-link:active:before, .orderable-accordion__item-link:active:after, .orderable-accordion__item-link:focus:before, .orderable-accordion__item-link:focus:after {
     1379  background-color: #405763 !important;
     1380}
     1381
     1382.orderable-accordion__item-link:before, .orderable-accordion__item-link:after {
     1383  position: absolute;
     1384  right: 5px;
     1385  content: ' ';
     1386  height: 11px;
     1387  width: 2px;
     1388  background-color: #c7d4db;
     1389  top: 50%;
     1390  display: block;
     1391  margin: -4px 0 0;
     1392}
     1393
     1394.orderable-accordion__item-link:before {
     1395  -webkit-transform: rotate(45deg);
     1396          transform: rotate(45deg);
     1397}
     1398
     1399.orderable-accordion__item-link:after {
     1400  -webkit-transform: rotate(-45deg);
     1401          transform: rotate(-45deg);
     1402  right: 12px;
     1403}
     1404
     1405.orderable-accordion__item-link--active:before {
     1406  right: 12px;
     1407}
     1408
     1409.orderable-accordion__item-link--active:after {
     1410  right: 5px;
     1411}
     1412
     1413.orderable-accordion__item-content {
     1414  display: none;
     1415}
     1416
     1417.orderable-accordion__item-content--active {
     1418  display: block;
     1419}
     1420
     1421.orderable-accordion__item-content:after {
     1422  content: "";
     1423  display: table;
     1424  clear: both;
    12501425}
    12511426
     
    13741549.orderable-quantity-roller__button:hover, .orderable-quantity-roller__button:focus, .orderable-quantity-roller__button:visited {
    13751550  background-color: #c7d4db;
    1376   color: #fff;
     1551  color: #405763;
    13771552  -webkit-box-shadow: none;
    13781553          box-shadow: none;
     
    13821557
    13831558.orderable-quantity-roller__button:hover:before, .orderable-quantity-roller__button:hover:after, .orderable-quantity-roller__button:focus:before, .orderable-quantity-roller__button:focus:after, .orderable-quantity-roller__button:visited:before, .orderable-quantity-roller__button:visited:after {
    1384   background: #fff;
     1559  background: #405763;
    13851560}
    13861561
     
    14091584  padding: 0 6px;
    14101585  min-width: 24px;
     1586  outline: none;
    14111587}
    14121588
  • orderable/tags/1.3.0/assets/frontend/css/main.min.css

    r2641784 r2709284  
    1 @-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes wobble-hor-bottom{0%,100%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:50% 50%;transform-origin:50% 50%}15%{-webkit-transform:translateX(-10%) rotate(-6deg);transform:translateX(-10%) rotate(-6deg)}30%{-webkit-transform:translateX(5%) rotate(6deg);transform:translateX(5%) rotate(6deg)}45%{-webkit-transform:translateX(-5%) rotate(-3.6deg);transform:translateX(-5%) rotate(-3.6deg)}60%{-webkit-transform:translateX(2%) rotate(2.4deg);transform:translateX(2%) rotate(2.4deg)}75%{-webkit-transform:translateX(-1%) rotate(-1.2deg);transform:translateX(-1%) rotate(-1.2deg)}}@keyframes wobble-hor-bottom{0%,100%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:50% 50%;transform-origin:50% 50%}15%{-webkit-transform:translateX(-10%) rotate(-6deg);transform:translateX(-10%) rotate(-6deg)}30%{-webkit-transform:translateX(5%) rotate(6deg);transform:translateX(5%) rotate(6deg)}45%{-webkit-transform:translateX(-5%) rotate(-3.6deg);transform:translateX(-5%) rotate(-3.6deg)}60%{-webkit-transform:translateX(2%) rotate(2.4deg);transform:translateX(2%) rotate(2.4deg)}75%{-webkit-transform:translateX(-1%) rotate(-1.2deg);transform:translateX(-1%) rotate(-1.2deg)}}.orderable-main__group{margin:0 0 36px}.orderable-main--sections-tabs .orderable-main__group{display:none}.orderable-main--sections-tabs .orderable-main__group:first-of-type{display:block}.orderable-main--sections-side_tabs{display:-webkit-box;display:-ms-flexbox;display:flex}.orderable-main--sections-side_tabs .orderable-main__tabs{margin:0 24px 0 0!important}.orderable-main--sections-side_tabs .orderable-main__sections{-webkit-box-flex:1;-ms-flex:1;flex:1}.orderable-button,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout,.orderable-drawer__close{display:inline-block;border:2px solid #000;background:0 0;padding:0 24px!important;height:40px;line-height:36px;white-space:nowrap;border-radius:20px;color:#000;text-transform:none;margin:0;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out;-webkit-box-shadow:none;box-shadow:none;cursor:pointer}.orderable-button:active,.orderable-button:focus,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:active,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:focus,.orderable-drawer__close:active,.orderable-drawer__close:focus{outline:0}.orderable-button--active,.orderable-button--hover,.orderable-button:active,.orderable-button:focus,.orderable-button:hover,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:active,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:focus,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:hover,.orderable-drawer__close:active,.orderable-drawer__close:focus,.orderable-drawer__close:hover{border-color:#000;background:#000;color:#fff;text-decoration:none;-webkit-box-shadow:none;box-shadow:none}.orderable-button--filled,.orderable-button--filled--hover,.orderable-button--filled:hover,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:hover{background:#000!important;color:#fff}.orderable-button--full{width:100%}.orderable-button--loading{position:relative;padding-right:48px!important}.orderable-button--loading:after{content:'';display:block;width:16px;height:16px;position:absolute;top:10px;right:22px;background:0 0;-webkit-box-sizing:border-box;box-sizing:border-box;border-top:2px solid #000;border-left:2px solid #000;border-right:2px solid transparent;border-bottom:2px solid transparent;border-radius:100%;-webkit-animation:spin .6s ease-out infinite;animation:spin .6s ease-out infinite}.orderable-button--filled .orderable-button--loading:after,.orderable-button--loading.orderable-button--hover:after,.orderable-button--loading:active:after,.orderable-button--loading:focus:after,.orderable-button--loading:hover:after,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout .orderable-button--loading:after{border-top-color:#fff;border-left-color:#fff}.orderable-button--out-of-stock.orderable-button--hover.orderable-drawer__close,.orderable-button--out-of-stock.orderable-drawer__close,.orderable-button--out-of-stock.orderable-drawer__close:active,.orderable-button--out-of-stock.orderable-drawer__close:focus,.orderable-button--out-of-stock.orderable-drawer__close:hover,.orderable-button.orderable-button--out-of-stock,.orderable-button.orderable-button--out-of-stock.orderable-button--hover,.orderable-button.orderable-button--out-of-stock:active,.orderable-button.orderable-button--out-of-stock:focus,.orderable-button.orderable-button--out-of-stock:hover,.orderable-drawer__cart .orderable-mini-cart__buttons .orderable-button--out-of-stock.button.checkout,.orderable-drawer__cart .orderable-mini-cart__buttons .orderable-button--out-of-stock.button.checkout:active,.orderable-drawer__cart .orderable-mini-cart__buttons .orderable-button--out-of-stock.button.checkout:focus,.orderable-drawer__cart .orderable-mini-cart__buttons .orderable-button--out-of-stock.button.checkout:hover,.orderable-drawer__cart .orderable-mini-cart__buttons .orderable-button--out-of-stock.orderable-button--hover.button.checkout{cursor:not-allowed;border-color:#c7d4db;color:#a8bdc7;background:0 0!important}.orderable--button-style-square .orderable-button,.orderable--button-style-square .orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout,.orderable--button-style-square .orderable-drawer__close,.orderable-drawer__cart .orderable-mini-cart__buttons .orderable--button-style-square .button.checkout{border-radius:0}.orderable-input--select,select.orderable-input--select{width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:10px;border:2px solid #E6ECEF;border-radius:8px;background-color:#fff;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23c1cfd7'><polygon points='0,0 100,0 50,50'/></svg>");background-size:16px;background-position:calc(100% - 14px) 19px;background-repeat:no-repeat;cursor:pointer}.orderable-input--select:focus,select.orderable-input--select:focus{outline:0;border-color:#000;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23000000'><polygon points='0,0 100,0 50,50'/></svg>")}.orderable-input.orderable-input--text{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:10px;border:2px solid #E6ECEF;border-radius:8px;width:100%;background-color:#fff;-webkit-box-shadow:none;box-shadow:none}.orderable-floating-cart__button,.orderable-products-list__item .orderable-product{-webkit-box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07)}.orderable-input.orderable-input--text:focus{outline:0;border-color:#000;background-color:#fff}.orderable-category-heading{margin:0 0 24px}.orderable-products-list{margin-bottom:12px;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-products-list *{-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-products-list:last-child{margin-bottom:0}@media screen and (min-width:480px){.orderable-products-list .orderable-product{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px}.orderable-products-list .orderable-product__hero{width:200px}.orderable-products-list .orderable-product__image{-o-object-fit:cover;object-fit:cover;width:100%!important;height:100%!important}.orderable-products-list .orderable-product__content-wrap{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column nowrap;flex-flow:column nowrap}}.orderable-products-list .orderable-product__actions{padding:12px 24px 18px;margin-top:auto}.orderable-products-list__item{width:100%;margin:0 0 24px}@media screen and (max-width:480px){.orderable-products-list__item{padding:0 0 24px;border-bottom:1px solid #ecf1f3}.orderable-products-list__item:last-child{border-bottom:none}}@media screen and (min-width:540px){.orderable-products-list--grid{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:-12px;margin-right:-12px}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-products-list__item{margin:0 0 24px;padding:0 12px;width:50%}.orderable-products-list--grid .orderable-product{padding:0 0 88px;display:block;margin:0;-webkit-box-flex:0;-ms-flex:none;flex:none}}@media screen and (min-width:1120px){.orderable-products-list--grid .orderable-products-list__item{width:33.33%}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-product__hero{width:auto}.orderable-products-list--grid .orderable-product__hero img{-o-object-fit:fill;object-fit:fill;width:100%;height:auto}.orderable-products-list--grid .orderable-product__content-wrap{-webkit-box-flex:0;-ms-flex:none;flex:none;display:block}.orderable-products-list--grid .orderable-product__actions{padding:0;margin-top:0;position:absolute;bottom:24px;left:24px;right:24px}}.orderable-product{overflow:hidden;position:relative}.orderable-product__hero{position:relative}.orderable-product__image{border-radius:0;margin:0;display:block;width:100%;height:auto!important;max-width:none!important}.orderable-product__content{padding:18px 24px 12px}.orderable-product__content :last-child{margin-bottom:0}.orderable-product__title{margin:0 0 12px!important}.orderable-product__description{margin:0}.orderable-product__tags{overflow:hidden;margin:0;padding:0;list-style:none}img+.orderable-product__tags{position:absolute;bottom:0;left:0;padding:12px;z-index:20}.orderable-product__tags li{margin:6px 0 0}.orderable-product__options{margin:12px 0 24px;padding:0;border-radius:6px}.orderable-product__actions:last-child,.orderable-product__options:last-child{margin-bottom:0}.orderable-product__options td,.orderable-product__options th{background-color:transparent!important;padding:0 0 12px;text-align:left;display:block;margin:0}.orderable-product__options th{font-size:18px;line-height:22px}.orderable-product__options td{padding-bottom:24px}.orderable-product__options tr{padding:0;margin:0}.orderable-product__options tr:last-child td{padding-bottom:0}.orderable-product__actions{overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.orderable-product__actions-price{margin:0 4px 0 0}.orderable-product__actions-price .amount{white-space:nowrap;margin:0 6px 0 0;font-weight:700;color:#000;font-size:20px;line-height:24px}.orderable-product__actions-button{margin:0 0 0 auto}.orderable-product--options{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:visible;height:100%}.orderable-product--options .orderable-product__actions{margin-top:auto;padding-top:24px;border-top:1px solid #E6ECEF;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.orderable-product--clickable{cursor:pointer}.orderable-product__hero--title{overflow:hidden;padding:24px 24px 0;margin:-24px -24px 24px;text-align:center;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.orderable-product__hero--title:before{background:#fff;top:auto;left:-10px;right:-10px;bottom:-10px;position:absolute;height:24px;z-index:5;-webkit-transform:rotate(-1.5deg);transform:rotate(-1.5deg)}.orderable-product__hero--title:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:-webkit-gradient(linear,left bottom,left top,from(rgba(24,33,37,.8)),to(rgba(24,33,37,.3)));background:linear-gradient(0deg,rgba(24,33,37,.8),rgba(24,33,37,.3));z-index:1;mix-blend-mode:multiply}.orderable-product__hero--title .orderable-product__image{-o-object-fit:cover;object-fit:cover;position:absolute;z-index:-1;width:100%;height:100%!important;left:0;top:0}.orderable-product__hero--title .orderable-product__title{color:#fff;position:relative;z-index:10}.orderable-products-list__item .orderable-product{height:100%;width:100%;box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);border-radius:6px}@media screen and (max-width:480px){.orderable-products-list__item .orderable-product{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.orderable-products-list__item .orderable-product__hero{width:100%;min-width:60px;max-width:80px;border-radius:6px;overflow:hidden}.orderable-products-list__item .orderable-product__content-wrap{-webkit-box-flex:1;-ms-flex:1;flex:1}.orderable-products-list__item .orderable-product__content{padding:0 0 0 24px}.orderable-products-list__item .orderable-product__actions{padding:6px 0 0 24px}.orderable-products-list__item .orderable-product__title{margin:0 0 6px!important}}.orderable-tag{display:inline-block;background:#EDF2F6;border-radius:15px;height:30px;line-height:30px;white-space:nowrap;color:#495568;padding:0 12px;font-size:14px}body.orderable-drawer-open{overflow:hidden}.orderable-drawer-overlay{height:100%;z-index:999998;position:fixed;top:0;left:0;opacity:0;visibility:hidden;background-color:rgba(34,34,34,.6);-webkit-transition:opacity .2s linear,visibility .1s,width 1s ease-in;transition:opacity .2s linear,visibility .1s,width 1s ease-in}.orderable-drawer{width:100%;visibility:hidden;-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-transition:all .2s;transition:all .2s;border-radius:0;-webkit-box-shadow:0 4px 56px -2px rgba(0,0,0,.2),0 3px 6px -1px rgba(0,0,0,.4);box-shadow:0 4px 56px -2px rgba(0,0,0,.2),0 3px 6px -1px rgba(0,0,0,.4);display:block;position:fixed;top:0;right:0;height:100%;z-index:999999;background-color:#fff;overflow:hidden;padding:24px}@media screen and (min-width:640px){.orderable-drawer{max-width:600px}}.orderable-drawer h3{margin:0 60px 24px!important;font-size:20px;line-height:24px;text-align:center}.orderable-drawer h4{font-size:18px;line-height:22px}.orderable-drawer__inner{padding:0;height:100%;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.orderable-drawer__cart,.orderable-drawer__cart .widget_shopping_cart_content{display:-webkit-box;display:-ms-flexbox;-webkit-box-orient:vertical;-webkit-box-direction:normal}.orderable-drawer__inner .orderable-sb-container{-ms-flex-preferred-size:100%;flex-basis:100%}.orderable-drawer__cart{display:flex;-ms-flex-direction:column;flex-direction:column}.orderable-drawer__cart .widget_shopping_cart_content{height:100%;display:flex;-ms-flex-direction:column;flex-direction:column;overflow:hidden;border-top:1px solid #E6ECEF}.orderable-drawer__cart .orderable-mini-cart{margin:0;padding:0;list-style:none;overflow:hidden;min-height:100%}.orderable-drawer__cart .orderable-mini-cart-item{margin:0;padding:10px 44px 10px 0;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-bottom:1px solid #E6ECEF}.orderable-drawer__cart .orderable-mini-cart-item:last-child{border-bottom:none}.orderable-drawer__cart .orderable-mini-cart-item .variation{margin:7.5px 0}.orderable-drawer__cart .orderable-mini-cart-item .variation dd,.orderable-drawer__cart .orderable-mini-cart-item .variation dt,.orderable-drawer__cart .orderable-mini-cart-item .variation p{margin:0}.orderable-drawer__cart .orderable-mini-cart-item .blockOverlay{background:#fff!important;opacity:.8!important}.orderable-drawer__cart .orderable-mini-cart-item__remove{position:absolute;bottom:16px;right:0;z-index:20;color:#c7d4db;-webkit-box-shadow:none;box-shadow:none;height:40px;width:40px;text-indent:250%;white-space:nowrap;font-size:0;-webkit-transition:none;transition:none;-webkit-box-sizing:border-box;box-sizing:border-box;border:none}.orderable-drawer__cart .orderable-mini-cart-item__remove svg{display:block;height:20px;width:20px;position:absolute;left:50%;top:50%;-webkit-transition:none;transition:none;fill:#c7d4db;margin:-10px 0 0 -10px}.orderable-drawer__cart .orderable-mini-cart-item__remove:hover svg{opacity:.8}.orderable--button-style-square .orderable-drawer__cart .orderable-mini-cart-item__remove{border-radius:0}.orderable-drawer__cart .quantity{font-weight:700}.orderable-drawer__cart .orderable-mini-cart__notices{padding:15px 0;border-top:1px solid #E6ECEF}.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error{margin:0;padding:0;list-style:none}.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error li{border:1px solid #E34F4F;background:#fce9e9;color:#dc2323;padding:6px 12px;text-align:center;margin:0 0 6px;display:block;border-radius:8px}.orderable-drawer__cart .orderable-mini-cart__buttons .button,.orderable-drawer__cart .orderable-mini-cart__notices .button{display:none}.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error li:last-child{margin-bottom:0}.orderable-drawer__cart .orderable-mini-cart__buttons,.orderable-drawer__cart .orderable-mini-cart__total{margin:0;padding:0;text-align:center}.orderable-drawer__cart .orderable-mini-cart__total{padding:15px 0;border-top:1px solid #E6ECEF}.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout{display:block;width:100%}.orderable-drawer__cart .orderable-mini-cart__empty-message{margin:auto 0;text-align:center}.orderable-drawer__cart .orderable-services-selector__lookup,.orderable-drawer__cart .orderable-services-selector__selected{margin:0 0 15px}.orderable-drawer__cart .orderable-services-selector__lookup input{width:100%;margin:0 0 8px}.orderable-drawer__cart .orderable-services-selector__lookup-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.orderable-drawer__cart .orderable-services-selector__lookup-buttons button{display:block;width:100%}.orderable-drawer__cart .orderable-services-selector__lookup-buttons button:first-child{margin-right:4px}.orderable-drawer__cart .orderable-services-selector__lookup-buttons button:last-child{margin-left:4px}.orderable-drawer__actions{bottom:-24px;margin:auto 0 -24px;background:#fff;padding:24px 0;left:0;right:0;border-top:1px solid #F2F2F2}.orderable-drawer__actions--cart{border-top:none;padding-top:10px}.orderable-drawer__close{position:absolute;top:16px;left:24px;font-size:0;text-indent:250%!important;white-space:nowrap!important;overflow:hidden!important;padding:0!important;width:40px;height:40px;margin:0;z-index:100;border-color:#c7d4db}.orderable-drawer__close:after,.orderable-drawer__close:before{position:absolute;left:54%;content:' ';height:18px;width:2px;background-color:#c7d4db;top:50%;margin:-9px 0 0 -2px;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out;display:block}.orderable-drawer__close:before{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.orderable-drawer__close:after{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.orderable-drawer__close:active,.orderable-drawer__close:focus,.orderable-drawer__close:hover{background-color:#c7d4db;border-color:#c7d4db}.orderable-drawer__close:active:after,.orderable-drawer__close:active:before,.orderable-drawer__close:focus:after,.orderable-drawer__close:focus:before,.orderable-drawer__close:hover:after,.orderable-drawer__close:hover:before{background-color:#fff}.orderable-drawer .orderable-product__content{padding:15px 0}.orderable-drawer-overlay--open{-webkit-transition:opacity .2s ease,width 0s;transition:opacity .2s ease,width 0s;opacity:1;width:100%;visibility:visible}.orderable-drawer--open{visibility:visible;-webkit-transform:translateX(0);transform:translateX(0);-webkit-transition:-webkit-transform .2s;transition:-webkit-transform .2s;transition:transform .2s;transition:transform .2s,-webkit-transform .2s}.orderable-floating-cart{position:fixed;z-index:20}.orderable-floating-cart__button{padding:0;width:60px;height:60px;border:none;border-radius:100%;display:block;margin:0;text-align:center;line-height:60px;background:#fff;box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);outline:0!important;-webkit-transition:-webkit-transform 150ms ease-in-out;transition:-webkit-transform 150ms ease-in-out;transition:transform 150ms ease-in-out;transition:transform 150ms ease-in-out,-webkit-transform 150ms ease-in-out}.orderable-floating-cart__button:hover{background:#fff;-webkit-animation:wobble-hor-bottom .8s both;animation:wobble-hor-bottom .8s both;-webkit-box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07)}.orderable-floating-cart__button svg{width:24px;height:24px;display:block;margin:0 auto}.orderable-floating-cart__count{position:absolute;top:0;right:0;white-space:nowrap;padding:0 4px;background:#E52C23;color:#fff;height:22px;line-height:22px;font-size:13px;border-radius:11px;min-width:22px;text-align:center}.orderable-floating-cart--bl,.orderable-floating-cart--br{bottom:40px}.orderable-floating-cart--br,.orderable-floating-cart--tr{right:40px}.orderable-floating-cart--bl,.orderable-floating-cart--tl{left:40px}.orderable-floating-cart--tl,.orderable-floating-cart--tr{top:40px}.orderable-services-selector__selected p{margin:0}.orderable-services-selector__selected-change{padding:0;margin:0;font-size:inherit;background:0 0;display:inline;color:#333;-webkit-transition:none;transition:none;text-transform:none;-webkit-box-shadow:none;box-shadow:none}.orderable-services-selector__selected-change:active,.orderable-services-selector__selected-change:focus,.orderable-services-selector__selected-change:hover{padding:0;margin:0;background:0 0;color:#333;text-decoration:underline;-webkit-transform:none;transform:none;-webkit-box-shadow:none;box-shadow:none}.orderable-services-selector--selected .orderable-services-selector__lookup{display:none}.orderable-open-hours__date,.orderable-open-hours__service{margin:0 0 0 6px;padding:2px 6px;background:#000;color:#fff;border-radius:4px;display:inline-block;font-size:80%}.orderable-open-hours__service--closed{background-color:#E34F4F;display:none}.orderable-open-hours__date{margin:0 4px 0 0;text-align:center;min-width:30px;border:1px solid #E6ECEF;background:0 0;color:inherit}.orderable-tabs{margin:0 0 24px!important;padding:0!important;list-style:none}.orderable-main--sections-side_tabs .orderable-tabs{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.orderable-tabs__item{display:inline-block;margin:0;padding:0}.orderable-main--sections-side_tabs .orderable-tabs__item{margin:0 0 6px;display:block}.orderable-main--sections-side_tabs .orderable-tabs__item:last-child{margin:0}a.orderable-tabs__link{text-decoration:none!important;display:inline-block;padding:0 24px;white-space:nowrap;line-height:40px;color:#000;font-weight:400;border-radius:20px;-webkit-transition:none;transition:none}a.orderable-tabs__link:active,a.orderable-tabs__link:focus{outline:0;-webkit-box-shadow:none;box-shadow:none}a.orderable-tabs__link:active,a.orderable-tabs__link:focus,a.orderable-tabs__link:hover{color:#000;text-decoration:none;background:#ecf1f3}.orderable-tabs__item--active a.orderable-tabs__link{background:#000;color:#fff}.orderable--button-style-square a.orderable-tabs__link{border-radius:0}.orderable-sb-container{position:relative;overflow:hidden;padding-right:25px}.orderable-sb-content{height:100%;width:120%;padding-right:20%;overflow-y:scroll;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-sb-scrollbar-container{position:absolute;right:0;bottom:10px;top:10px;width:10px}.orderable-sb-container-noscroll .orderable-sb-scrollbar-container{right:-20px}.orderable-sb-scrollbar{position:absolute;right:0;height:30px;width:10px;border-radius:10px;background:#d6e0e5}.orderable-sb-scrollbar:hover{background:#c7d4db}.orderable--button-style-square .orderable-sb-scrollbar{border-radius:0}.orderable-sb-container-noscroll{padding-right:0}.orderable-sb-container-noscroll .orderable-sb-content{width:100%;padding-right:0;overflow:hidden}.orderable-quantity-roller{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.orderable-quantity-roller *{-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-quantity-roller__roller{border:2px solid #c7d4db;border-radius:20px;height:40px;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex}.orderable--button-style-square .orderable-quantity-roller__roller{border-radius:0}.orderable-quantity-roller__button{height:36px;width:24px;background:0 0;border:none;border-radius:0;text-align:center;color:#c7d4db;line-height:36px;-webkit-box-shadow:none;box-shadow:none;text-shadow:none;padding:0 6px;-webkit-box-sizing:content-box;box-sizing:content-box;position:relative;font-size:0;text-indent:250%;overflow:hidden;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out}.orderable-quantity-roller__button:after,.orderable-quantity-roller__button:before{content:"";position:absolute;display:block!important;height:2px;width:12px;background:#c7d4db;top:50%;left:50%;margin:-1px 0 0 -6px;-webkit-transition:background 150ms ease-out;transition:background 150ms ease-out}.orderable-quantity-roller__button:focus,.orderable-quantity-roller__button:hover,.orderable-quantity-roller__button:visited{background-color:#c7d4db;color:#fff;-webkit-box-shadow:none;box-shadow:none;text-shadow:none;outline:0}.orderable-quantity-roller__button:focus:after,.orderable-quantity-roller__button:focus:before,.orderable-quantity-roller__button:hover:after,.orderable-quantity-roller__button:hover:before,.orderable-quantity-roller__button:visited:after,.orderable-quantity-roller__button:visited:before{background:#fff}.orderable-quantity-roller__button--decrease{padding-right:4px}.orderable-quantity-roller__button--decrease:after{display:none!important}.orderable-quantity-roller__button--increase{padding-left:4px}.orderable-quantity-roller__button--increase:after{height:12px;width:2px;margin:-6px 0 0 -1px}.orderable-quantity-roller__quantity{text-align:center;display:inline-block;line-height:36px;padding:0 6px;min-width:24px}.orderable-quantity-roller__price{margin-left:8px}.orderable-quantity-roller__price:before{content:"x";margin:0 8px;color:#c7d4db}.orderable-drawer__cart .orderable-quantity-roller{margin:12px 0 6px}
     1@-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes wobble-hor-bottom{0%,100%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:50% 50%;transform-origin:50% 50%}15%{-webkit-transform:translateX(-10%) rotate(-6deg);transform:translateX(-10%) rotate(-6deg)}30%{-webkit-transform:translateX(5%) rotate(6deg);transform:translateX(5%) rotate(6deg)}45%{-webkit-transform:translateX(-5%) rotate(-3.6deg);transform:translateX(-5%) rotate(-3.6deg)}60%{-webkit-transform:translateX(2%) rotate(2.4deg);transform:translateX(2%) rotate(2.4deg)}75%{-webkit-transform:translateX(-1%) rotate(-1.2deg);transform:translateX(-1%) rotate(-1.2deg)}}@keyframes wobble-hor-bottom{0%,100%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:50% 50%;transform-origin:50% 50%}15%{-webkit-transform:translateX(-10%) rotate(-6deg);transform:translateX(-10%) rotate(-6deg)}30%{-webkit-transform:translateX(5%) rotate(6deg);transform:translateX(5%) rotate(6deg)}45%{-webkit-transform:translateX(-5%) rotate(-3.6deg);transform:translateX(-5%) rotate(-3.6deg)}60%{-webkit-transform:translateX(2%) rotate(2.4deg);transform:translateX(2%) rotate(2.4deg)}75%{-webkit-transform:translateX(-1%) rotate(-1.2deg);transform:translateX(-1%) rotate(-1.2deg)}}.orderable-main__group{margin:0 0 36px}.orderable-main--sections-tabs .orderable-main__group{display:none}.orderable-main--sections-tabs .orderable-main__group:first-of-type{display:block}@media screen and (min-width:620px){.orderable-main--sections-side_tabs{display:-webkit-box;display:-ms-flexbox;display:flex}.orderable-main--sections-side_tabs .orderable-main__tabs{margin:0 24px 0 0!important}.orderable-main--sections-side_tabs .orderable-main__sections{-webkit-box-flex:1;-ms-flex:1;flex:1}}.orderable-button,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout,.orderable-drawer__close{display:inline-block;border:2px solid #000;background:0 0;padding:0 24px!important;height:40px;line-height:36px;white-space:nowrap;border-radius:20px;color:#000;text-transform:none;margin:0;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out;-webkit-box-shadow:none;box-shadow:none;cursor:pointer}.orderable-button:active,.orderable-button:focus,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:active,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:focus,.orderable-drawer__close:active,.orderable-drawer__close:focus{outline:0}.orderable-button--active,.orderable-button--hover,.orderable-button:active,.orderable-button:focus,.orderable-button:hover,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:active,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:focus,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:hover,.orderable-drawer__close:active,.orderable-drawer__close:focus,.orderable-drawer__close:hover{border-color:#000;background:#000;color:#fff;text-decoration:none;-webkit-box-shadow:none;box-shadow:none}.orderable-button--filled,.orderable-button--filled--hover,.orderable-button--filled:hover,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:hover{background:#000!important;color:#fff}.orderable-button--full{width:100%}.orderable-button--loading{position:relative;padding-right:48px!important}.orderable-button--loading:after{content:'';display:block;width:16px;height:16px;position:absolute;top:10px;right:22px;background:0 0;-webkit-box-sizing:border-box;box-sizing:border-box;border-top:2px solid #000;border-left:2px solid #000;border-right:2px solid transparent;border-bottom:2px solid transparent;border-radius:100%;-webkit-animation:spin .6s ease-out infinite;animation:spin .6s ease-out infinite}.orderable-button--filled .orderable-button--loading:after,.orderable-button--loading.orderable-button--hover:after,.orderable-button--loading:active:after,.orderable-button--loading:focus:after,.orderable-button--loading:hover:after,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout .orderable-button--loading:after{border-top-color:#fff;border-left-color:#fff}.orderable-button--out-of-stock.orderable-button--hover.orderable-drawer__close,.orderable-button--out-of-stock.orderable-drawer__close,.orderable-button--out-of-stock.orderable-drawer__close:active,.orderable-button--out-of-stock.orderable-drawer__close:focus,.orderable-button--out-of-stock.orderable-drawer__close:hover,.orderable-button.orderable-button--out-of-stock,.orderable-button.orderable-button--out-of-stock.orderable-button--hover,.orderable-button.orderable-button--out-of-stock:active,.orderable-button.orderable-button--out-of-stock:focus,.orderable-button.orderable-button--out-of-stock:hover,.orderable-drawer__cart .orderable-mini-cart__buttons .orderable-button--out-of-stock.button.checkout,.orderable-drawer__cart .orderable-mini-cart__buttons .orderable-button--out-of-stock.button.checkout:active,.orderable-drawer__cart .orderable-mini-cart__buttons .orderable-button--out-of-stock.button.checkout:focus,.orderable-drawer__cart .orderable-mini-cart__buttons .orderable-button--out-of-stock.button.checkout:hover,.orderable-drawer__cart .orderable-mini-cart__buttons .orderable-button--out-of-stock.orderable-button--hover.button.checkout{cursor:not-allowed;border-color:#c7d4db;color:#a8bdc7;background:0 0!important}.orderable--button-style-square .orderable-button,.orderable--button-style-square .orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout,.orderable--button-style-square .orderable-drawer__close,.orderable-drawer__cart .orderable-mini-cart__buttons .orderable--button-style-square .button.checkout{border-radius:0}.orderable-button--icon{padding:10px!important;width:44px;height:44px;line-height:24px;border:none;background:0 0!important}body .orderable-button--icon:active,body .orderable-button--icon:focus,body .orderable-button--icon:hover{background:0 0!important;opacity:.6}.orderable-button--icon svg{width:24px;height:24px;border-radius:12px;overflow:hidden;-webkit-transition:opacity 250ms ease-in-out;transition:opacity 250ms ease-in-out}.orderable-button--icon.orderable-button--loading:after{display:none}.orderable-input--select,select.orderable-input--select{width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:10px;border:2px solid #E6ECEF;border-radius:8px;background-color:#fff;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23c1cfd7'><polygon points='0,0 100,0 50,50'/></svg>");background-size:16px;background-position:calc(100% - 14px) 19px;background-repeat:no-repeat;cursor:pointer}.orderable-input--select:focus,select.orderable-input--select:focus{outline:0;border-color:#000;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23000000'><polygon points='0,0 100,0 50,50'/></svg>")}.orderable-input.orderable-input--text{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:10px;border:2px solid #E6ECEF;border-radius:8px;width:100%;background-color:#fff;-webkit-box-shadow:none;box-shadow:none}.orderable-floating-cart__button,.orderable-products-list__item .orderable-product{-webkit-box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07)}.orderable-input.orderable-input--text:focus{outline:0;border-color:#000;background-color:#fff}.orderable-category-heading{margin:0 0 24px}.orderable-products-list{margin-bottom:12px;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-products-list *{-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-products-list:last-child{margin-bottom:0}@media screen and (min-width:480px){.orderable-products-list .orderable-product{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px}.orderable-products-list .orderable-product__hero{width:200px}.orderable-products-list .orderable-product__image{-o-object-fit:cover;object-fit:cover;width:100%!important;height:100%!important}.orderable-products-list .orderable-product__content-wrap{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column nowrap;flex-flow:column nowrap}}.orderable-products-list .orderable-product__actions{padding:12px 24px 18px;margin-top:auto}.orderable-products-list__item{width:100%;margin:0 0 24px}@media screen and (max-width:480px){.orderable-products-list__item{padding:0 0 24px;border-bottom:1px solid #ecf1f3}.orderable-products-list__item:last-child{border-bottom:none}}@media screen and (min-width:540px){.orderable-products-list--grid{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:-12px;margin-right:-12px}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-products-list__item{margin:0 0 24px;padding:0 12px;width:50%}.orderable-products-list--grid .orderable-product{padding:0 0 88px;display:block;margin:0;-webkit-box-flex:0;-ms-flex:none;flex:none}}@media screen and (min-width:1120px){.orderable-products-list--grid .orderable-products-list__item{width:33.33%}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-product__hero{width:auto}.orderable-products-list--grid .orderable-product__hero img{-o-object-fit:fill;object-fit:fill;width:100%;height:auto}.orderable-products-list--grid .orderable-product__content-wrap{-webkit-box-flex:0;-ms-flex:none;flex:none;display:block}.orderable-products-list--grid .orderable-product__actions{padding:0;margin-top:0;position:absolute;bottom:24px;left:24px;right:24px}}.orderable-product{overflow:hidden;position:relative}.orderable-product__hero{position:relative}.orderable-product__image{border-radius:0;margin:0;display:block;width:100%;height:auto!important;max-width:none!important}.orderable-product__content{padding:18px 24px 12px}.orderable-product__content :last-child{margin-bottom:0}.orderable-product__title{margin:0 0 12px!important}.orderable-product__description{margin:0}.orderable-product__tags{overflow:hidden;margin:0;padding:0;list-style:none}img+.orderable-product__tags{position:absolute;bottom:0;left:0;padding:12px;z-index:20}.orderable-product__tags li{margin:6px 0 0}.orderable-product__options{margin:0 0 24px;padding:0;border-radius:6px}.orderable-product__options td,.orderable-product__options th{background-color:transparent!important;padding:0 0 12px;text-align:left;display:block;margin:0}.orderable-product__options th{line-height:22px}.orderable-product__options td{padding-bottom:24px}.orderable-product__options tr{padding:0;margin:0}.orderable-product__options tr:last-child td{padding-bottom:0}.orderable-product__actions{overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.orderable-product__actions:last-child{margin-bottom:0}.orderable-product__actions-price{margin:0 4px 0 0}.orderable-product__actions-price .amount{white-space:nowrap;margin:0 6px 0 0;font-weight:700;color:#000;font-size:20px;line-height:24px}.orderable-product__actions-button{margin:0 0 0 auto}.orderable-product__tabs{margin:24px 0}.orderable-product__tabs-section{display:none}.orderable-product__tabs-section:first-child{display:block}.orderable-product__tabs-section :last-child{margin-bottom:0}.orderable-product--options{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:visible;height:100%}.orderable-product--options .orderable-product__hero{margin:-24px -24px 0}.orderable-product--options .orderable-product__title{text-align:left;margin:24px 0!important}.orderable-product--options .orderable-product__actions{margin-top:auto;padding-top:24px;border-top:1px solid #E6ECEF;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.orderable-product--add-to-cart,.orderable-product--product-options,.orderable-product--view-product{cursor:pointer}.orderable-product--image-cropped .orderable-product__hero{overflow:hidden;padding:0;text-align:center;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;height:72px}.orderable-product--image-cropped .orderable-product__image{-o-object-fit:cover;object-fit:cover;position:absolute;z-index:-1;width:100%;height:100%!important;left:0;top:0}.orderable-products-list__item .orderable-product{height:100%;width:100%;box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);border-radius:6px}@media screen and (max-width:480px){.orderable-products-list__item .orderable-product{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.orderable-products-list__item .orderable-product__hero{width:100%;min-width:60px;max-width:95px;border-radius:6px;overflow:hidden}.orderable-products-list__item .orderable-product__content-wrap{-webkit-box-flex:1;-ms-flex:1;flex:1}.orderable-products-list__item .orderable-product__content{padding:0 0 0 24px}.orderable-products-list__item .orderable-product__actions{padding:6px 0 0 24px}.orderable-products-list__item .orderable-product__title{margin:0 0 6px!important}}.orderable-tag{display:inline-block;background:#EDF2F6;border-radius:15px;height:30px;line-height:30px;white-space:nowrap;color:#495568;padding:0 12px;font-size:14px}body.orderable-drawer-open{overflow:hidden}.orderable-drawer-overlay{height:100%;z-index:999998;position:fixed;top:0;left:0;opacity:0;visibility:hidden;background-color:rgba(34,34,34,.6);-webkit-transition:opacity .2s linear,visibility .1s,width 1s ease-in;transition:opacity .2s linear,visibility .1s,width 1s ease-in}.orderable-drawer{width:100%;visibility:hidden;-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-transition:all .2s;transition:all .2s;border-radius:0;-webkit-box-shadow:0 4px 56px -2px rgba(0,0,0,.2),0 3px 6px -1px rgba(0,0,0,.4);box-shadow:0 4px 56px -2px rgba(0,0,0,.2),0 3px 6px -1px rgba(0,0,0,.4);display:block;position:fixed;top:0;right:0;height:100%;z-index:999999;background-color:#fff;overflow:hidden;padding:24px}@media screen and (min-width:640px){.orderable-drawer{max-width:600px}}.orderable-drawer h3{margin:0 60px 24px!important;font-size:20px;line-height:24px;text-align:center}.orderable-drawer h4{font-size:18px;line-height:22px}.orderable-drawer__inner{padding:0;height:100%;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.orderable-drawer__cart,.orderable-drawer__cart .orderable-mini-cart-wrapper{display:-webkit-box;display:-ms-flexbox;-webkit-box-orient:vertical;-webkit-box-direction:normal}.orderable-drawer__inner .orderable-sb-container{-ms-flex-preferred-size:100%;flex-basis:100%;margin-bottom:-1px}.orderable-drawer__cart{display:flex;-ms-flex-direction:column;flex-direction:column}.orderable-drawer__cart .orderable-mini-cart-wrapper{height:100%;display:flex;-ms-flex-direction:column;flex-direction:column;overflow:hidden;border-top:1px solid #E6ECEF}.orderable-drawer__cart .orderable-mini-cart{margin:0;padding:0;list-style:none;overflow:hidden;min-height:100%}.orderable-drawer__cart .orderable-mini-cart-item{margin:0;padding:10px 44px 10px 0;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-bottom:1px solid #E6ECEF}.orderable-drawer__cart .orderable-mini-cart-item:last-child{border-bottom:none}.orderable-drawer__cart .orderable-mini-cart-item .variation{margin:7.5px 0}.orderable-drawer__cart .orderable-mini-cart-item .variation dd,.orderable-drawer__cart .orderable-mini-cart-item .variation dt,.orderable-drawer__cart .orderable-mini-cart-item .variation p{margin:0}.orderable-drawer__cart .orderable-mini-cart-item .blockOverlay{background:#fff!important;opacity:.8!important}.orderable-drawer__cart .orderable-mini-cart-item__remove{position:absolute;bottom:16px;right:0;z-index:20;color:#c7d4db;-webkit-box-shadow:none;box-shadow:none;height:40px;width:40px;text-indent:250%;white-space:nowrap;font-size:0;-webkit-transition:none;transition:none;-webkit-box-sizing:border-box;box-sizing:border-box;border:none}.orderable-drawer__cart .orderable-mini-cart-item__remove svg{display:block;height:20px;width:20px;position:absolute;left:50%;top:50%;-webkit-transition:none;transition:none;fill:#c7d4db;margin:-10px 0 0 -10px}.orderable-drawer__cart .orderable-mini-cart-item__remove:hover svg{opacity:.8}.orderable--button-style-square .orderable-drawer__cart .orderable-mini-cart-item__remove{border-radius:0}.orderable-drawer__cart .quantity{font-weight:700}.orderable-drawer__cart .orderable-mini-cart__notices{padding:15px 0;border-top:1px solid #E6ECEF}.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error{margin:0;padding:0;list-style:none}.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error li{border:1px solid #E34F4F;background:#fce9e9;color:#dc2323;padding:6px 12px 6px 28px!important;text-align:center;margin:0 0 6px;display:block;border-radius:8px}.orderable-drawer__cart .orderable-mini-cart__buttons .button,.orderable-drawer__cart .orderable-mini-cart__notices .button{display:none}.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error li:last-child{margin-bottom:0}.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error::before,.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-info::before,.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-message::before{left:12px}.orderable-drawer__cart .orderable-mini-cart__buttons,.orderable-drawer__cart .orderable-mini-cart__total{margin:0;padding:0;text-align:center}.orderable-drawer__cart .orderable-mini-cart__total{padding:15px 0;border-top:1px solid #E6ECEF}.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout{display:block;width:100%}.orderable-drawer__cart .orderable-mini-cart__empty-message{margin:auto 0;text-align:center}.orderable-drawer__cart .orderable-services-selector__lookup,.orderable-drawer__cart .orderable-services-selector__selected{margin:0 0 15px}.orderable-drawer__cart .orderable-services-selector__lookup input{width:100%;margin:0 0 8px}.orderable-drawer__cart .orderable-services-selector__lookup-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.orderable-drawer__cart .orderable-services-selector__lookup-buttons button{display:block;width:100%}.orderable-drawer__cart .orderable-services-selector__lookup-buttons button:first-child{margin-right:4px}.orderable-drawer__cart .orderable-services-selector__lookup-buttons button:last-child{margin-left:4px}.orderable-drawer__actions{bottom:-24px;margin:auto 0 -24px;background:#fff;padding:24px 0;left:0;right:0;border-top:1px solid #F2F2F2}.orderable-drawer__actions--cart{border-top:none;padding-top:10px}.orderable-drawer__close{position:absolute;top:16px;left:24px;font-size:0;text-indent:250%!important;white-space:nowrap!important;overflow:hidden!important;padding:0!important;width:40px;height:40px;margin:0;z-index:100;border-color:#c7d4db}.orderable-drawer__close:after,.orderable-drawer__close:before{position:absolute;left:54%;content:' ';height:18px;width:2px;background-color:#c7d4db;top:50%;margin:-9px 0 0 -2px;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out;display:block}.orderable-drawer__close:before{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.orderable-drawer__close:after{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.orderable-drawer__close:active,.orderable-drawer__close:focus,.orderable-drawer__close:hover{background-color:#c7d4db;border-color:#c7d4db}.orderable-drawer__close:active:after,.orderable-drawer__close:active:before,.orderable-drawer__close:focus:after,.orderable-drawer__close:focus:before,.orderable-drawer__close:hover:after,.orderable-drawer__close:hover:before{background-color:#405763}.orderable-drawer .orderable-product__content{padding:15px 0}.orderable-drawer-overlay--open{-webkit-transition:opacity .2s ease,width 0s;transition:opacity .2s ease,width 0s;opacity:1;width:100%;visibility:visible}.orderable-drawer--open{visibility:visible;-webkit-transform:translateX(0);transform:translateX(0);-webkit-transition:-webkit-transform .2s;transition:-webkit-transform .2s;transition:transform .2s;transition:transform .2s,-webkit-transform .2s}.orderable-floating-cart{position:fixed;z-index:20}.orderable-floating-cart__button{padding:0;width:60px;height:60px;border:none;border-radius:100%;display:block;margin:0;text-align:center;line-height:60px;background:#fff;box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);outline:0!important;-webkit-transition:-webkit-transform 150ms ease-in-out;transition:-webkit-transform 150ms ease-in-out;transition:transform 150ms ease-in-out;transition:transform 150ms ease-in-out,-webkit-transform 150ms ease-in-out}.orderable-floating-cart__button:hover{background:#fff;-webkit-animation:wobble-hor-bottom .8s both;animation:wobble-hor-bottom .8s both;-webkit-box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07)}.orderable-floating-cart__button svg{width:24px;height:24px;display:block;margin:0 auto}.orderable-floating-cart__count{position:absolute;top:0;right:0;white-space:nowrap;padding:0 4px;background:#E52C23;color:#fff;height:22px;line-height:22px;font-size:13px;border-radius:11px;min-width:22px;text-align:center}.orderable-floating-cart--bl,.orderable-floating-cart--br{bottom:40px}.orderable-floating-cart--br,.orderable-floating-cart--tr{right:40px}.orderable-floating-cart--bl,.orderable-floating-cart--tl{left:40px}.orderable-floating-cart--tl,.orderable-floating-cart--tr{top:40px}.orderable-services-selector__selected p{margin:0}.orderable-services-selector__selected-change{padding:0;margin:0;font-size:inherit;background:0 0;display:inline;color:#333;-webkit-transition:none;transition:none;text-transform:none;-webkit-box-shadow:none;box-shadow:none}.orderable-services-selector__selected-change:active,.orderable-services-selector__selected-change:focus,.orderable-services-selector__selected-change:hover{padding:0;margin:0;background:0 0;color:#333;text-decoration:underline;-webkit-transform:none;transform:none;-webkit-box-shadow:none;box-shadow:none}.orderable-services-selector--selected .orderable-services-selector__lookup{display:none}.orderable-open-hours__date,.orderable-open-hours__service{margin:0 0 0 6px;padding:2px 6px;background:#000;color:#fff;border-radius:4px;display:inline-block;font-size:80%}.orderable-open-hours__service--closed{background-color:#E34F4F;display:none}.orderable-open-hours__date{margin:0 4px 0 0;text-align:center;min-width:30px;border:1px solid #E6ECEF;background:0 0;color:inherit}.orderable-tabs{margin:0 0 24px;position:relative}.orderable-tabs__list{margin:0 1px 0 0!important;padding:0!important;list-style:none;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;overflow-x:auto;overflow-y:hidden;overflow:-moz-scrollbars-none;scrollbar-base-color:transparent;-webkit-overflow-scrolling:touch}.orderable-tabs__list::-webkit-scrollbar{display:none}.orderable-tabs__item{display:inline-block;margin:0 10px 0 0;padding:0}.orderable-tabs__item:last-child{margin-right:0}@media screen and (min-width:620px){.orderable-main--sections-side_tabs .orderable-tabs__list{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:auto}.orderable-main--sections-side_tabs .orderable-tabs__item{margin:0 0 12px;display:block}.orderable-main--sections-side_tabs .orderable-tabs__item:last-child{margin:0}}a.orderable-tabs__link{text-decoration:none!important;display:inline-block;padding:0 24px;white-space:nowrap;line-height:40px;color:#405763;font-weight:400;border-radius:20px;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out;background:#ecf1f3}a.orderable-tabs__link:active,a.orderable-tabs__link:focus{outline:0;-webkit-box-shadow:none;box-shadow:none}a.orderable-tabs__link:active,a.orderable-tabs__link:focus,a.orderable-tabs__link:hover{color:#405763;text-decoration:none;background:#c7d4db}.orderable-tabs__item--active a.orderable-tabs__link{background:#000;color:#fff}.orderable--button-style-square a.orderable-tabs__link{border-radius:0}.orderable-tabs__arrow{background:#fff;-webkit-box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);border:none;width:40px!important;height:40px!important;padding:0!important;margin:0!important;border-radius:20px!important;position:absolute;top:0;right:0;text-align:center;line-height:40px;display:none}.orderable-tabs__arrow:active,.orderable-tabs__arrow:focus,.orderable-tabs__arrow:hover{background:#fff;outline:0}.orderable-tabs__arrow svg{width:21px;height:24px;margin:8px 0}.orderable-accordion{margin:24px 0;background:#f6f8f9;padding:0 24px;border-radius:6px}.orderable-product-fields-group-wrap+.orderable-accordion,.orderable-product__options+.orderable-accordion{margin-top:36px}.orderable-accordion__item{border-top:1px solid #E6ECEF}.orderable-accordion__item:first-child{border-top:none}.orderable-accordion__item-link{display:block;padding:18px 0;margin:0;color:inherit;position:relative}.orderable-accordion__item-link--active,.orderable-accordion__item-link:active,.orderable-accordion__item-link:focus,.orderable-accordion__item-link:hover{color:#000;border:none;outline:0}.orderable-accordion__item-link--active:after,.orderable-accordion__item-link--active:before,.orderable-accordion__item-link:active:after,.orderable-accordion__item-link:active:before,.orderable-accordion__item-link:focus:after,.orderable-accordion__item-link:focus:before,.orderable-accordion__item-link:hover:after,.orderable-accordion__item-link:hover:before{background-color:#405763!important}.orderable-accordion__item-link:after,.orderable-accordion__item-link:before{position:absolute;right:5px;content:' ';height:11px;width:2px;background-color:#c7d4db;top:50%;display:block;margin:-4px 0 0}.orderable-accordion__item-link:before{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.orderable-accordion__item-link:after{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);right:12px}.orderable-accordion__item-link--active:before{right:12px}.orderable-accordion__item-link--active:after{right:5px}.orderable-accordion__item-content{display:none}.orderable-accordion__item-content--active{display:block}.orderable-accordion__item-content:after{content:"";display:table;clear:both}.orderable-sb-container{position:relative;overflow:hidden;padding-right:25px}.orderable-sb-content{height:100%;width:120%;padding-right:20%;overflow-y:scroll;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-sb-scrollbar-container{position:absolute;right:0;bottom:10px;top:10px;width:10px}.orderable-sb-container-noscroll .orderable-sb-scrollbar-container{right:-20px}.orderable-sb-scrollbar{position:absolute;right:0;height:30px;width:10px;border-radius:10px;background:#d6e0e5}.orderable-sb-scrollbar:hover{background:#c7d4db}.orderable--button-style-square .orderable-sb-scrollbar{border-radius:0}.orderable-sb-container-noscroll{padding-right:0}.orderable-sb-container-noscroll .orderable-sb-content{width:100%;padding-right:0;overflow:hidden}.orderable-quantity-roller{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.orderable-quantity-roller *{-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-quantity-roller__roller{border:2px solid #c7d4db;border-radius:20px;height:40px;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex}.orderable--button-style-square .orderable-quantity-roller__roller{border-radius:0}.orderable-quantity-roller__button{height:36px;width:24px;background:0 0;border:none;border-radius:0;text-align:center;color:#c7d4db;line-height:36px;-webkit-box-shadow:none;box-shadow:none;text-shadow:none;padding:0 6px;-webkit-box-sizing:content-box;box-sizing:content-box;position:relative;font-size:0;text-indent:250%;overflow:hidden;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out}.orderable-quantity-roller__button:after,.orderable-quantity-roller__button:before{content:"";position:absolute;display:block!important;height:2px;width:12px;background:#c7d4db;top:50%;left:50%;margin:-1px 0 0 -6px;-webkit-transition:background 150ms ease-out;transition:background 150ms ease-out}.orderable-quantity-roller__button:focus,.orderable-quantity-roller__button:hover,.orderable-quantity-roller__button:visited{background-color:#c7d4db;color:#405763;-webkit-box-shadow:none;box-shadow:none;text-shadow:none;outline:0}.orderable-quantity-roller__button:focus:after,.orderable-quantity-roller__button:focus:before,.orderable-quantity-roller__button:hover:after,.orderable-quantity-roller__button:hover:before,.orderable-quantity-roller__button:visited:after,.orderable-quantity-roller__button:visited:before{background:#405763}.orderable-quantity-roller__button--decrease{padding-right:4px}.orderable-quantity-roller__button--decrease:after{display:none!important}.orderable-quantity-roller__button--increase{padding-left:4px}.orderable-quantity-roller__button--increase:after{height:12px;width:2px;margin:-6px 0 0 -1px}.orderable-quantity-roller__quantity{text-align:center;display:inline-block;line-height:36px;padding:0 6px;min-width:24px;outline:0}.orderable-quantity-roller__price{margin-left:8px}.orderable-quantity-roller__price:before{content:"x";margin:0 8px;color:#c7d4db}.orderable-drawer__cart .orderable-quantity-roller{margin:12px 0 6px}
  • orderable/tags/1.3.0/assets/frontend/js/main.js

    r2666071 r2709284  
    33    "use strict";
    44
     5    var orderable_accordion = {
     6        /**
     7         * On doc ready.
     8         */
     9        on_ready: function() {
     10            orderable_accordion.cache();
     11            orderable_accordion.watch();
     12        },
     13
     14        /**
     15         * Cache.
     16         */
     17        cache: function() {
     18            orderable_accordion.vars = {
     19                classes: {
     20                    parent: 'orderable-accordion',
     21                    link: 'orderable-accordion__item-link',
     22                    content: 'orderable-accordion__item-content',
     23                    link_active: 'orderable-accordion__item-link--active',
     24                    content_active: 'orderable-accordion__item-content--active',
     25                },
     26            };
     27        },
     28
     29        /**
     30         * Watch.
     31         */
     32        watch: function() {
     33            /**
     34             * When click accordion link.
     35             */
     36            $( document.body ).on( 'click', '.' + orderable_accordion.vars.classes.link, function( e ) {
     37                e.preventDefault();
     38
     39                var $link = $( this ),
     40                    $parent = $link.closest( '.' + orderable_accordion.vars.classes.parent ),
     41                    content_id = $link.attr( 'href' ),
     42                    $content = $( content_id ),
     43                    is_active = $link.hasClass( orderable_accordion.vars.classes.link_active );
     44
     45                $parent.find( '.' + orderable_accordion.vars.classes.link ).removeClass( orderable_accordion.vars.classes.link_active );
     46                $parent.find( '.' + orderable_accordion.vars.classes.content ).removeClass( orderable_accordion.vars.classes.content_active );
     47
     48                if ( ! is_active ) {
     49                    $link.addClass( orderable_accordion.vars.classes.link_active );
     50                    $content.addClass( orderable_accordion.vars.classes.content_active );
     51                }
     52
     53                $( document.body ).trigger( 'orderable-accordion.toggled', {
     54                    'link': $link,
     55                    'content': $content
     56                } );
     57            } );
     58
     59            /**
     60             * When drawer is opened.
     61             */
     62            $( document.body ).on( 'orderable-scrollbar.created', function( e, args ) {
     63                var $active_accordion = $( '.orderable-drawer .' + orderable_accordion.vars.classes.link_active );
     64
     65                if ( $active_accordion.length <= 0 ) {
     66                    return;
     67                }
     68
     69                var $scroll_content = args.content,
     70                    scroll_position = $scroll_content.scrollTop() - $scroll_content.offset().top + $active_accordion.offset().top;
     71
     72                $scroll_content.scrollTop( scroll_position );
     73            } );
     74        },
     75    };
     76
     77    $( document ).ready( orderable_accordion.on_ready );
     78}( jQuery, document ));
     79(function( $, document ) {
     80    "use strict";
     81
    582    var orderable_drawer = {
     83        /**
     84         * Delays invoking function
     85         *
     86         * @param {Function} func The function to debounce.
     87         * @param {number} timeout The number of milliseconds to delay.
     88         * @returns {Function} Returns the new debounced function.
     89         */
     90        debounce: function (func, timeout = 700) {
     91            let timer;
     92   
     93            return (...args) => {
     94              clearTimeout(timer);
     95              timer = setTimeout(() => { func.apply(this, args); }, timeout);
     96            };
     97        },
     98
     99        /**
     100         * Allow only number for events like keypress
     101         *
     102         * @param {Event} event
     103         */
     104        allow_only_numbers: function (event) {
     105            const value = String.fromCharCode(event.which);
     106   
     107            if ( ! /^\d+$/.test(value) ) {
     108                event.preventDefault();
     109            }
     110        },
     111
     112        /**
     113         * Send a request to change the quantity.
     114         *
     115         * @param {Event} event
     116         */
     117        on_change_quantity: function (event) {
     118            const quantityElement = $(event.currentTarget);
     119   
     120            const product_id = quantityElement.data( 'orderable-product-id' );
     121            const cart_item_key = quantityElement.data( 'orderable-cart-item-key' );
     122            const quantity = parseInt( quantityElement.text() );
     123   
     124            var data = {
     125                'action': 'orderable_cart_quantity',
     126                cart_item_key,
     127                product_id,
     128                quantity
     129            };
     130   
     131            jQuery.post(
     132                orderable_vars.ajax_url,
     133                data,
     134                function( response ) {
     135                    if ( ! response ) {
     136                        return;
     137                    }
     138   
     139                    $( document.body ).trigger( 'added_to_cart', [ response.fragments, response.cart_hash, quantityElement ] );
     140                    $( document.body ).trigger( 'orderable-drawer.quantity-updated' );
     141                }
     142            );
     143        },
     144
    6145        /**
    7146         * On doc ready.
     
    10149            orderable_drawer.cache();
    11150            orderable_drawer.watch();
     151
     152            /**
     153             * Handle manually changing the quantity of a product.
     154             */
     155            $( document.body ).on('keypress', '.orderable-quantity-roller__quantity', orderable_drawer.allow_only_numbers);
     156            $( '.orderable-drawer__cart' ).on('input', '.orderable-quantity-roller__quantity', orderable_drawer.debounce(orderable_drawer.on_change_quantity));
     157
     158            /**
     159             * We turn off the click event for .add_to_cart_button elements
     160             * to keep the AJAX behaviour only on Mini cart when the option
     161             * "Enable AJAX add to cart buttons on archives" is disabled.
     162             */
     163            if (orderable_vars && ! orderable_vars.woocommerce_enable_ajax_add_to_cart) {
     164                $( document.body ).off('click', '.add_to_cart_button');
     165            }
    12166        },
    13167
     
    138292
    139293                jQuery.post(
    140                     wc_add_to_cart_params.ajax_url,
     294                    orderable_vars.ajax_url,
    141295                    data,
    142296                    function( response ) {
     
    158312    "use strict";
    159313
    160     var orderable_layouts = {
    161         /**
    162          * On doc ready.
    163          */
    164         on_ready: function() {
    165             orderable_layouts.cache();
    166             orderable_layouts.watch();
    167         },
    168 
    169         /**
    170          * Cache.
    171          */
    172         cache: function() {
    173             orderable_layouts.vars = {
    174                 classes: {
    175                     main: 'orderable-main',
    176                     tabs: 'orderable-tabs',
    177                     tab_items: 'orderable-tabs__item',
    178                     tab_item_active: 'orderable-tabs__item--active',
    179                     tab_links: 'orderable-tabs__link',
    180                     sections: 'orderable-main__group',
    181                 },
    182             };
    183 
    184             orderable_layouts.elements = {};
    185         },
    186 
    187         /**
    188          * Watch.
    189          */
    190         watch: function() {
    191             $( document.body ).on( 'click mouseup touchend', '.' + orderable_layouts.vars.classes.tab_links, function( e ) {
    192                 e.preventDefault();
    193 
    194                 var $link = $( this ),
    195                     section_id = $link.attr( 'href' ),
    196                     $tab = $link.closest( '.' + orderable_layouts.vars.classes.tab_items ),
    197                     $tabs = $link.closest( '.' + orderable_layouts.vars.classes.tabs ),
    198                     $tab_items = $tabs.find( '.' + orderable_layouts.vars.classes.tab_items ),
    199                     $main = $link.closest( '.' + orderable_layouts.vars.classes.main ),
    200                     $sections = $main.find( '.' + orderable_layouts.vars.classes.sections ),
    201                     $section = $main.find( section_id );
    202 
    203                 $sections.hide();
    204                 $section.show();
    205 
    206                 $tab_items.removeClass( orderable_layouts.vars.classes.tab_item_active );
    207                 $tab.addClass( orderable_layouts.vars.classes.tab_item_active );
    208             } );
    209         },
    210     };
    211 
    212     $( document ).ready( orderable_layouts.on_ready );
    213 }( jQuery, document ));
    214 (function( $, document ) {
    215     "use strict";
    216 
    217314    var orderable_products = {
    218315        /**
     
    230327            orderable_products.vars = {
    231328                classes: {
    232                     clickable_product: 'orderable-product--clickable',
     329                    clickable_product: 'orderable-product--add-to-cart ',
    233330                    add_to_order_button: 'orderable-product__add-to-order',
    234331                    product_messages: 'orderable-product__messages',
     
    252349            $( document.body ).on( 'orderable-add-to-cart', orderable_products.click_add_to_order );
    253350            $( document.body ).on( 'orderable-product-options', orderable_products.click_add_to_order );
     351            $( document.body ).on( 'orderable-view-product', orderable_products.view_product );
    254352            $( document.body ).on( 'mouseenter mouseleave', '.' + orderable_products.vars.classes.clickable_product, orderable_products.simulate_add_to_order_hover );
    255             $( document.body ).on( 'click', '.' + orderable_products.vars.classes.clickable_product, orderable_products.click_add_to_order );
    256353        },
    257354
     
    311408                orderable_products.get_product_options(
    312409                    {
    313                         'product_id': product_id
     410                        'product_id': product_id,
     411                        'focus': $button.data( 'orderable-focus' )
    314412                    },
    315413                    function( response ) {
     
    321419                );
    322420            }
     421        },
     422
     423        /**
     424         * View product.
     425         *
     426         * @param event
     427         * @param $element
     428         */
     429        view_product: function( event, $element ) {
     430            var product_id = $element.data( 'orderable-product-id' ),
     431                args = { action: 'product-options' };
     432
     433            orderable_products.get_product_options(
     434                {
     435                    'product_id': product_id,
     436                    'focus': $element.data( 'orderable-focus' )
     437                },
     438                function( response ) {
     439                    args.html = response.html;
     440
     441                    $( document.body ).trigger( 'orderable-drawer.open', args );
     442                }
     443            );
    323444        },
    324445
     
    348469
    349470            jQuery.post(
    350                 wc_add_to_cart_params.ajax_url,
     471                orderable_vars.ajax_url,
    351472                data,
    352473                function( response ) {
     
    403524
    404525            jQuery.post(
    405                 wc_add_to_cart_params.ajax_url,
     526                orderable_vars.ajax_url,
    406527                args,
    407528                function( response ) {
     
    723844        watch: function() {
    724845            $( document.body ).on( 'orderable-drawer.opened', orderable_scrollbar.trigger );
     846            $( document.body ).on( 'orderable-tabs.changed', orderable_scrollbar.trigger );
     847            $( document.body ).on( 'orderable-accordion.toggled', orderable_scrollbar.trigger );
    725848            $( document.body ).on( 'wc_fragments_loaded', orderable_scrollbar.trigger );
    726849        },
     
    753876                        }
    754877                    }
     878
     879                    $( document.body ).trigger( 'orderable-scrollbar.created', {
     880                        'element': $element,
     881                        'content': $content
     882                    } );
    755883                }
    756884            } );
     
    824952
    825953                jQuery.post(
    826                     wc_add_to_cart_params.ajax_url,
     954                    orderable_vars.ajax_url,
    827955                    data,
    828956                    function( response ) {
     
    849977
    850978    $( document ).ready( orderable_services.on_ready );
     979}( jQuery, document ));
     980(function( $, document ) {
     981    "use strict";
     982
     983    var orderable_tabs = {
     984        /**
     985         * On doc ready.
     986         */
     987        on_ready: function() {
     988            orderable_tabs.cache();
     989            orderable_tabs.watch();
     990            orderable_tabs.toggle_scroll();
     991        },
     992
     993        /**
     994         * On resize.
     995         */
     996        on_resize: function() {
     997            orderable_tabs.toggle_scroll();
     998        },
     999
     1000        /**
     1001         * Cache.
     1002         */
     1003        cache: function() {
     1004            orderable_tabs.vars = {
     1005                classes: {
     1006                    tabs: 'orderable-tabs',
     1007                    tabs_list: 'orderable-tabs__list',
     1008                    tab_items: 'orderable-tabs__item',
     1009                    tab_item_active: 'orderable-tabs__item--active',
     1010                    tab_links: 'orderable-tabs__link',
     1011                    tab_arrow: 'orderable-tabs__arrow'
     1012                },
     1013                dragging: false
     1014            };
     1015
     1016            orderable_tabs.elements = {};
     1017        },
     1018
     1019        /**
     1020         * Watch.
     1021         */
     1022        watch: function() {
     1023            $( 'body' ).on( 'touchstart', function() {
     1024                orderable_tabs.vars.dragging = false;
     1025            } ).on( 'touchmove', function() {
     1026                orderable_tabs.vars.dragging = true;
     1027            } );
     1028
     1029            $( document.body ).on( 'click mouseup touchend', '.' + orderable_tabs.vars.classes.tab_links, function( e ) {
     1030                if ( orderable_tabs.vars.dragging ) {
     1031                    return;
     1032                }
     1033
     1034                e.preventDefault();
     1035
     1036                var $link = $( this ),
     1037                    section_id = $link.attr( 'href' ),
     1038                    $tab = $link.closest( '.' + orderable_tabs.vars.classes.tab_items ),
     1039                    $tabs = $link.closest( '.' + orderable_tabs.vars.classes.tabs ),
     1040                    $tabs_list = $tabs.find( '.' + orderable_tabs.vars.classes.tabs_list ),
     1041                    $tab_items = $tabs.find( '.' + orderable_tabs.vars.classes.tab_items ),
     1042                    tabs_args = $tabs.data( 'orderable-tabs' ),
     1043                    $wrapper = $link.closest( tabs_args.wrapper ),
     1044                    $sections = $wrapper.find( tabs_args.sections ),
     1045                    $section = $wrapper.find( section_id );
     1046
     1047                $sections.hide();
     1048                $section.show();
     1049
     1050                $tab_items.removeClass( orderable_tabs.vars.classes.tab_item_active );
     1051                $tab.addClass( orderable_tabs.vars.classes.tab_item_active );
     1052
     1053                $tabs_list.animate( {
     1054                    scrollLeft: $tabs_list.scrollLeft() + $tab.position().left
     1055                } );
     1056
     1057                $( document.body ).trigger( 'orderable-tabs.changed', {
     1058                    'tab': $tab
     1059                } );
     1060            } );
     1061
     1062            /**
     1063             * Watch scroll position of tabs.
     1064             */
     1065            $( '.' + orderable_tabs.vars.classes.tabs_list ).on( 'scroll', function( e ) {
     1066                if ( $( this ).scrollLeft() > 0 ) {
     1067                    $( '.' + orderable_tabs.vars.classes.tab_arrow ).fadeOut();
     1068                }
     1069            } );
     1070
     1071            /**
     1072             * Stop animated scroll if user manually scrolls.
     1073             */
     1074            $( '.' + orderable_tabs.vars.classes.tabs_list ).on( "wheel DOMMouseScroll mousewheel touchmove", function() {
     1075                $( this ).stop();
     1076            } );
     1077
     1078            /**
     1079             * Click tab arrow.
     1080             */
     1081            $(document).on( 'click', '.' + orderable_tabs.vars.classes.tab_arrow, function( e ) {
     1082                e.preventDefault();
     1083
     1084                var $arrow = $( this ),
     1085                    $wrapper = $arrow.parent(),
     1086                    $list = $wrapper.find( '.' + orderable_tabs.vars.classes.tabs_list );
     1087
     1088                $list.animate( {
     1089                    scrollLeft: $list.scrollLeft() + ( $wrapper.width() * 0.5 )
     1090                } );
     1091
     1092                $arrow.fadeOut();
     1093            } );
     1094        },
     1095
     1096        /**
     1097         * Toggle scroll arrow.
     1098         */
     1099        toggle_scroll: function() {
     1100            $( '.' + orderable_tabs.vars.classes.tabs ).each( function( index, wrapper ){
     1101                var $tabs = $( this ),
     1102                    tabs_args = $tabs.data( 'orderable-tabs' ),
     1103                    $wrapper = $tabs.closest( tabs_args.wrapper ),
     1104                    $list = $wrapper.find( '.' + orderable_tabs.vars.classes.tabs_list ),
     1105                    $arrow = $wrapper.find( '.' + orderable_tabs.vars.classes.tab_arrow ),
     1106                    wrapper_width = $wrapper.outerWidth(),
     1107                    list_width = $list[0].scrollWidth;
     1108
     1109                if ( list_width > wrapper_width ) {
     1110                    $arrow.show();
     1111                } else {
     1112                    $arrow.hide();
     1113                }
     1114            } );
     1115        }
     1116    };
     1117
     1118    $( document ).ready( orderable_tabs.on_ready );
     1119    $( window ).on( 'resize', orderable_tabs.on_resize );
    8511120}( jQuery, document ));
    8521121var orderable_timings = {}; // Make this global so pro modules can access it.
     
    10141283         * Fire trigger.
    10151284         */
    1016         trigger: function() {
     1285        trigger: function( e ) {
     1286            // Prevent even bubbling up.
     1287            e.stopImmediatePropagation();
     1288
    10171289            var $trigger_element = $( this ),
    10181290                trigger = $trigger_element.data( 'orderable-trigger' );
  • orderable/tags/1.3.0/assets/frontend/js/main.min.js

    r2666071 r2709284  
    1 !function(n,i){"use strict";var r={on_ready:function(){r.cache(),r.watch()},cache:function(){r.vars={classes:{overlay:"orderable-drawer-overlay",drawer:"orderable-drawer",drawer_cart:"orderable-drawer__cart",drawer_html:"orderable-drawer__html",overlay_open:"orderable-drawer-overlay--open",drawer_open:"orderable-drawer--open",drawer_open_body:"orderable-drawer-open"}},r.elements={body:n("body"),overlay:n("."+r.vars.classes.overlay),drawer:n("."+r.vars.classes.drawer),drawer_cart:n("."+r.vars.classes.drawer_cart),drawer_html:n("."+r.vars.classes.drawer_html),floating_cart_button_class:".orderable-floating-cart__button"}},watch:function(){var e,t;void 0!==r.elements.drawer&&(n(i.body).on("orderable-drawer.open",r.open),n(i.body).on("orderable-drawer.close",r.close),n(i.body).on("click",r.elements.floating_cart_button_class,function(){n(i.body).trigger("orderable-drawer.open",{show_cart:!0})}),n(i.body).on("orderable-increase-quantity",r.cart.click_increase_decrease_quantity),n(i.body).on("orderable-decrease-quantity",r.cart.click_increase_decrease_quantity),e=i.querySelector("body:not( .rtl ) .orderable-drawer"),t=i.querySelector("body.rtl .orderable-drawer"),e&&e.addEventListener("swiped-right",function(e){r.close()}),t&&t.addEventListener("swiped-left",function(e){r.close()}))},open:function(e,t){t.html=t.html||!1,t.show_cart=t.show_cart||!1,r.elements.drawer_html.hide(),r.elements.drawer_cart.hide(),t.html&&(r.elements.drawer_html.html(t.html),r.elements.drawer_html.show()),t.show_cart&&(r.elements.drawer_html.html(""),r.elements.drawer_cart.show()),r.elements.overlay.addClass(r.vars.classes.overlay_open),r.elements.drawer.addClass(r.vars.classes.drawer_open),r.elements.body.addClass(r.vars.classes.drawer_open_body),n(i.body).trigger("orderable-drawer.opened",t)},close:function(){r.elements.overlay.removeClass(r.vars.classes.overlay_open),r.elements.drawer.removeClass(r.vars.classes.drawer_open),r.elements.body.removeClass(r.vars.classes.drawer_open_body),r.elements.drawer_html.html(""),n(i.body).trigger("orderable-drawer.closed")},cart:{click_increase_decrease_quantity:function(e,t){var r=t.data("orderable-product-id"),a=t.data("orderable-cart-item-key"),o=t.data("orderable-trigger"),s=parseInt(t.data("orderable-quantity"));jQuery.post(wc_add_to_cart_params.ajax_url,{action:"orderable_cart_quantity",cart_item_key:a,product_id:r,quantity:"increase-quantity"===o?s+1:s-1},function(e){e&&(n(i.body).trigger("added_to_cart",[e.fragments,e.cart_hash,t]),n(i.body).trigger("orderable-drawer.quantity-updated"))})}}};n(i).ready(r.on_ready)}(jQuery,document),function(s,e){"use strict";var n={on_ready:function(){n.cache(),n.watch()},cache:function(){n.vars={classes:{main:"orderable-main",tabs:"orderable-tabs",tab_items:"orderable-tabs__item",tab_item_active:"orderable-tabs__item--active",tab_links:"orderable-tabs__link",sections:"orderable-main__group"}},n.elements={}},watch:function(){s(e.body).on("click mouseup touchend","."+n.vars.classes.tab_links,function(e){e.preventDefault();var t=s(this),r=t.attr("href"),a=t.closest("."+n.vars.classes.tab_items),o=t.closest("."+n.vars.classes.tabs).find("."+n.vars.classes.tab_items),e=t.closest("."+n.vars.classes.main),t=e.find("."+n.vars.classes.sections),r=e.find(r);t.hide(),r.show(),o.removeClass(n.vars.classes.tab_item_active),a.addClass(n.vars.classes.tab_item_active)})}};s(e).ready(n.on_ready)}(jQuery,document),function(i,l){"use strict";var d={on_ready:function(){d.cache(),d.watch()},cache:function(){d.vars={classes:{clickable_product:"orderable-product--clickable",add_to_order_button:"orderable-product__add-to-order",product_messages:"orderable-product__messages",product_price:"orderable-product__actions-price",invalid_field:"orderable-field--invalid",option_select_td:"orderable-product__option-select",button_loading:"orderable-button--loading",out_of_stock:"orderable-button--out-of-stock"},parent_price:null},d.elements={}},watch:function(){i(l.body).on("orderable-drawer.opened",d.init_product_options),i(l.body).on("orderable-add-to-cart",d.click_add_to_order),i(l.body).on("orderable-product-options",d.click_add_to_order),i(l.body).on("mouseenter mouseleave","."+d.vars.classes.clickable_product,d.simulate_add_to_order_hover),i(l.body).on("click","."+d.vars.classes.clickable_product,d.click_add_to_order)},simulate_add_to_order_hover:function(e){i(this).find("."+d.vars.classes.add_to_order_button).toggleClass("orderable-button--hover","mouseenter"===e.type)},click_add_to_order:function(e,t){var r=(t=void 0!==t?t:i(this)).is("button")?t:t.find("."+d.vars.classes.add_to_order_button),a=r.data("orderable-trigger"),o=r.data("orderable-product-id"),s=r.data("orderable-variation-id"),t=r.data("orderable-variation-attributes"),n={action:a};r.hasClass(d.vars.classes.button_loading)||r.hasClass(d.vars.classes.out_of_stock)||(r.addClass(d.vars.classes.button_loading),"add-to-cart"===a?d.add_to_cart({product_id:o,variation_id:s,attributes:t},function(e){n.show_cart=!0,n.response=e,i(l.body).trigger("orderable-drawer.open",n),r.removeClass(d.vars.classes.button_loading)}):"product-options"===a&&d.get_product_options({product_id:o},function(e){n.html=e.html,i(l.body).trigger("orderable-drawer.open",n),r.removeClass(d.vars.classes.button_loading)}))},add_to_cart:function(e,t){var r;void 0!==e.product_id&&(r={action:"orderable_add_to_cart",product_id:e.product_id,variation_id:e.variation_id||!1,attributes:e.attributes||!1},i(".orderable-product-fields-group").length&&(e=jQuery(".orderable-product-fields-group :input").serializeArray(),e=d.convert_to_flat_object(e),jQuery.isEmptyObject(e)||(r=Object.assign(r,e))),jQuery.post(wc_add_to_cart_params.ajax_url,r,function(e){e&&(i(l.body).trigger("added_to_cart",[e.fragments,e.cart_hash]),"function"==typeof t&&t(e))}))},convert_to_flat_object:function(e){var a={};return e.forEach(function(e){var t="[]"===e.name.substr(-2)||Array.isArray(e.name),r=t?e.name.substr(0,e.name.length-2):e.name;t?(a[r]=void 0===a[r]?[]:a[r],a[r].push(e.value)):a[r]=e.value}),a},get_product_options:function(e,t){void 0!==e.product_id&&(e.action="orderable_get_product_options",jQuery.post(wc_add_to_cart_params.ajax_url,e,function(e){e.success&&"function"==typeof t&&t(e.data)}))},init_product_options:function(e,t){var r,a,o;void 0!==t.action&&"product-options"===t.action&&(r=i(t=".orderable-drawer .orderable-product__options input, .orderable-drawer .orderable-product__options select"),d.vars.parent_price=i(".orderable-drawer .orderable-product__actions-price").html(),d.product_options_change(r),d.update_button_state(),a=d.debounce(d.update_button_state,500),o=d.debounce(d.product_options_change,500),i(l).on("change keyup",t,function(){o(r),a()}))},product_options_change:function(e){var t=i(".orderable-drawer .orderable-product__add-to-order"),r=d.check_options(e),a=t.data("orderable-product-type");t.attr("data-orderable-trigger","add-to-cart"),i("."+d.vars.classes.product_messages).html(""),"variable"===a&&(r?(e=d.check_variation(e),d.set_variation(t,e)):d.clear_variation(t))},check_options:function(e){if(e.length<=0)return!1;var r=!0;return e.each(function(e,t){i(t).hasClass("orderable-input--validate")&&(""===i(t).val()?(i(t).addClass(d.vars.classes.invalid_field),r=!1):i(t).removeClass(d.vars.classes.invalid_field))}),r},check_variation:function(e){var t=e.closest(".orderable-drawer"),t=i.parseJSON(t.find(".orderable-product__variations").text()),e=d.serialize_object(e),t=d.find_matching_variations(t,e);if(d.is_empty(t))return!1;t=t.shift();return t.attributes=e,t.attributes_json=JSON.stringify(e),void 0!==t&&t},set_variation:function(e,t){var r=t.variation_id||"",a=t.attributes_json||"",o=t.price_html||d.vars.parent_price,s="";t&&""!==t.availability_html&&(s=t.availability_html),t&&!t.is_in_stock&&(s="<p>"+orderable_vars.i18n.out_of_stock+"</p>"),t&&!t.is_purchasable&&(s="<p>"+orderable_vars.i18n.unavailable+"</p>"),!1===t&&(s="<p>"+orderable_vars.i18n.no_exist+"</p>"),!t||t.is_purchasable&&t.is_in_stock||(a=r=""),""!==s&&i("."+d.vars.classes.product_messages).html(s),e.data("orderable-variation-id",r),e.data("orderable-variation-attributes",a),i(".orderable-drawer .orderable-product__actions-price").html(o),e.trigger("orderable_variation_set",{variation:t,variation_id:r,attributes:a,price:o})},clear_variation:function(e){d.set_variation(e,""),d.vars.parent_price&&i(".orderable-drawer .orderable-product__actions-price").html(d.vars.parent_price)},find_matching_variations:function(e,t){for(var r=[],a=0;a<e.length;a++){var o=e[a];d.is_matching_variation(o.attributes,t)&&r.push(o)}return r},is_matching_variation:function(e,t){var r,a,o,s=!0;for(r in e)e.hasOwnProperty(r)&&(a=e[r],o=t[r],void 0!==a&&void 0!==o&&0!==a.length&&0!==o.length&&a!==o&&(s=!1));return s},is_empty:function(e){return void 0===e||!1===e||e.length<=0||!e},serialize_object:function(e){for(var t=e.serializeArray(),r={},a=0;a<t.length;a++)r[t[a].name]=t[a].value;return r},update_button_state:function(){setTimeout(function(){var e=i(".orderable-drawer .orderable-product__add-to-order"),t=i(".orderable-drawer__html ."+d.vars.classes.invalid_field).length,r=!0;"variable"===e.data("orderable-product-type")&&(r=""!==e.data("orderable-variation-id")),e.prop("disabled",t||!r)},50)},debounce:function(a,o,s){var n;return function(){var e=this,t=arguments,r=s&&!n;clearTimeout(n),n=setTimeout(function(){n=null,s||a.apply(e,t)},o),r&&a.apply(e,t)}}};i(l).ready(d.on_ready)}(jQuery,document),function(a,e){"use strict";var o={on_ready:function(){o.cache(),o.watch()},cache:function(){o.vars={top:{}},o.elements={}},watch:function(){a(e.body).on("orderable-drawer.opened",o.trigger),a(e.body).on("wc_fragments_loaded",o.trigger)},trigger:function(){a(".orderable-sb-container").each(function(e,t){var r=a(t),t=r.data("orderable-scroll-id");o.has_scrollbar(r)||(r.scrollBox({containerClass:"orderable-sb-container",containerNoScrollClass:"orderable-sb-container-noscroll",contentClass:"orderable-sb-content",scrollbarContainerClass:"orderable-sb-scrollbar-container",scrollBarClass:"orderable-sb-scrollbar"}),0<(r=r.find(".orderable-sb-content")).length&&(r.on("scroll.scrollBox",o.log_top_position),void 0!==o.vars.top[t]&&r.scrollTop(o.vars.top[t])))}),a(window).trigger("resize.scrollBox")},has_scrollbar:function(e){return 0<e.find(".orderable-sb-content").length},log_top_position:function(e){var t=a(e.currentTarget).closest(".orderable-sb-container").data("orderable-scroll-id");o.vars.top[t]=a(e.currentTarget).scrollTop()}};a(e).ready(o.on_ready)}(jQuery,document),function(n,e){"use strict";var t={on_ready:function(){t.watch()},watch:function(){n(e.body).on("orderable-show-lookup-services",function(e,t){var r=t.closest(".orderable-services-selector").find(".orderable-services-selector__lookup");t.hide(),r.show()}),n(e.body).on("orderable-lookup-services",function(e,t){var r=t.closest(".orderable-services-selector"),a=r.find(".orderable-services-selector__lookup-message"),o=r.find(".orderable-services-selector__selected-change"),s=r.find(".orderable-services-selector__lookup-city").val(),r=r.find(".orderable-services-selector__lookup-postcode").val(),t=t.data("orderable-service");jQuery.post(wc_add_to_cart_params.ajax_url,{action:"orderable_lookup_service",postcode:r,city:s,service:t},function(e){e.success?(a.html(""),o.show(),void 0!==e.data.fragments&&n.each(e.data.fragments,function(e,t){n(e).html(t)}),console.log(e)):a.html("<p>"+e.data.message+"</p>")})})}};n(e).ready(t.on_ready)}(jQuery,document);var orderable_timings={};!function(i,a){"use strict";orderable_timings={on_ready:function(){orderable_timings.watch(),orderable_timings.set_date_and_time()},set_date_and_time:function(){var e,t=a.querySelector("#orderable-date"),r="";t&&(e=t.options[t.selectedIndex])&&!(r=e.value)&&t.options[t.selectedIndex+1]&&(t.options[t.selectedIndex+1].selected=!0,i(t).change()),"asap"!==r&&(t="",(r=a.querySelector("#orderable-time"))&&(t=r.options[r.selectedIndex])&&r.options[r.selectedIndex+1]&&(t.value||(r.options[r.selectedIndex+1].selected=!0,i(r).change())))},restore:function(){var e=orderable_timings.get_timings();e&&e.date&&(i(".orderable-order-timings__date").val(e.date),i(".orderable-order-timings__date").change(),e.time&&(i(".orderable-order-timings__time").val(e.time),i(".orderable-order-timings__time").change()))},watch:function(){i(a.body).on("wc_fragments_refreshed",function(){orderable_timings.restore(),orderable_timings.set_date_and_time()}),i(a.body).on("updated_checkout",function(){orderable_timings.restore(),orderable_timings.set_date_and_time()}),i(a.body).on("change",".orderable-order-timings__date",function(e){var t=i(this).find("option:selected").data("orderable-slots"),r=i(".orderable-order-timings--time"),a=i(".orderable-order-timings__time"),o=a.find("option").first(),s=a.find('option[value="asap"]').first(),n=orderable_timings.get_timings();if(n.date=i(".orderable-order-timings__date").val(),window.localStorage.setItem("orderable_timings",JSON.stringify(n)),a.html(o),s&&a.append(s),!t)return a.prop("disabled",!0),void r.hide();"all-day"===t[0].value?(r.hide(),a.prop("disabled",!0)):(a.prop("disabled",!1),r.show(),i.each(t,function(e,t){a.append(i("<option />").attr("value",t.value).text(t.formatted))}))}),i(a.body).on("change",".orderable-order-timings__time",function(e){var t=orderable_timings.get_timings();t.time=i(".orderable-order-timings__time").val(),window.localStorage.setItem("orderable_timings",JSON.stringify(t))})},get_timings:function(){return JSON.parse(window.localStorage.getItem("orderable_timings"))||{}}},i(a).ready(orderable_timings.on_ready)}(jQuery,document),function(r,a){"use strict";var e={on_ready:function(){e.watch()},watch:function(){r(a.body).on("click","[data-orderable-trigger]",e.trigger)},trigger:function(){var e=r(this),t=e.data("orderable-trigger");r(a.body).trigger("orderable-"+t,[e])}};r(a).ready(e.on_ready)}(jQuery,document),function(o,e,s){"use strict";var n="scrollBox",r={containerClass:"sb-container",containerNoScrollClass:"sb-container-noscroll",contentClass:"sb-content",scrollbarContainerClass:"sb-scrollbar-container",scrollBarClass:"sb-scrollbar"};function t(e,t){this.element=e,this.settings=o.extend({},r,t),this._defaults=r,this._name=n,this.init()}o.extend(t.prototype,{init:function(){this.addScrollbar(),this.addEvents(),this.onResize()},addScrollbar:function(){o(this.element).addClass(this.settings.containerClass),this.wrapper=o("<div class='"+this.settings.contentClass+"' />"),this.wrapper.append(o(this.element).contents()),o(this.element).append(this.wrapper),this.scollbarContainer=o("<div class='"+this.settings.scrollbarContainerClass+"' />"),this.scrollBar=o("<div class='"+this.settings.scrollBarClass+"' />"),this.scollbarContainer.append(this.scrollBar),o(this.element).prepend(this.scollbarContainer)},addEvents:function(){this.wrapper.on("scroll."+n,o.proxy(this.onScroll,this)),o(e).on("resize."+n,o.proxy(this.onResize,this)),this.scrollBar.on("mousedown."+n,o.proxy(this.onMousedown,this)),this.scrollBar.on("touchstart."+n,o.proxy(this.onTouchstart,this))},onTouchstart:function(t){var r=this;t.preventDefault();var a=r.scrollBar[0].offsetTop;o(s).on("touchmove."+n,function(e){e=e.touches[0].pageY-t.touches[0].pageY;r.scrollBar[0].style.top=Math.min(r.scollbarContainer[0].clientHeight-r.scrollBar[0].clientHeight,Math.max(0,a+e))+"px",r.wrapper[0].scrollTop=r.wrapper[0].scrollHeight*r.scrollBar[0].offsetTop/r.scollbarContainer[0].clientHeight}),o(s).on("touchend."+n,function(){o(s).off("touchmove."+n),o(s).off("touchend."+n)})},onMousedown:function(t){var r=this;t.preventDefault();var a=r.scrollBar[0].offsetTop;o(s).on("mousemove."+n,function(e){e=e.pageY-t.pageY;r.scrollBar[0].style.top=Math.min(r.scollbarContainer[0].clientHeight-r.scrollBar[0].clientHeight,Math.max(0,a+e))+"px",r.wrapper[0].scrollTop=r.wrapper[0].scrollHeight*r.scrollBar[0].offsetTop/r.scollbarContainer[0].clientHeight}),o(s).on("mouseup."+n,function(){o(s).off("mousemove."+n),o(s).off("mouseup."+n)})},onResize:function(){this.wrapper.css("max-height",o(this.element).height());var e=this.wrapper[0].clientHeight;this.scrollBar.css("height",this.scollbarContainer[0].clientHeight*e/this.wrapper[0].scrollHeight+"px"),this.scollbarContainer[0].clientHeight<=this.scrollBar[0].clientHeight?o(this.element).addClass(this.settings.containerNoScrollClass):o(this.element).removeClass(this.settings.containerNoScrollClass),this.onScroll()},onScroll:function(){this.scrollBar.css("top",Math.min(this.scollbarContainer[0].clientHeight-this.scrollBar[0].clientHeight,this.scollbarContainer[0].clientHeight*this.wrapper[0].scrollTop/this.wrapper[0].scrollHeight)+"px")}}),o.fn[n]=function(e){return this.each(function(){o.data(this,"plugin_"+n)||o.data(this,"plugin_"+n,new t(this,e))})}}(jQuery,window,document),function(e,o){"use strict";"function"!=typeof e.CustomEvent&&(e.CustomEvent=function(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var r=o.createEvent("CustomEvent");return r.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),r},e.CustomEvent.prototype=e.Event.prototype),o.addEventListener("touchstart",function(e){"true"!==e.target.getAttribute("data-swipe-ignore")&&(c=e.target,d=Date.now(),s=e.touches[0].clientX,n=e.touches[0].clientY,l=i=0)},!1),o.addEventListener("touchmove",function(e){var t;s&&n&&(t=e.touches[0].clientX,e=e.touches[0].clientY,i=s-t,l=n-e)},!1),o.addEventListener("touchend",function(e){var t,r,a,o;c===e.target&&(t=parseInt(_(c,"data-swipe-threshold","20"),10),r=parseInt(_(c,"data-swipe-timeout","500"),10),a=Date.now()-d,o="",e=e.changedTouches||e.touches||[],Math.abs(i)>Math.abs(l)?Math.abs(i)>t&&a<r&&(o=0<i?"swiped-left":"swiped-right"):Math.abs(l)>t&&a<r&&(o=0<l?"swiped-up":"swiped-down"),""!==o&&(e={dir:o.replace(/swiped-/,""),touchType:(e[0]||{}).touchType||"direct",xStart:parseInt(s,10),xEnd:parseInt((e[0]||{}).clientX||-1,10),yStart:parseInt(n,10),yEnd:parseInt((e[0]||{}).clientY||-1,10)},c.dispatchEvent(new CustomEvent("swiped",{bubbles:!0,cancelable:!0,detail:e})),c.dispatchEvent(new CustomEvent(o,{bubbles:!0,cancelable:!0,detail:e}))),d=n=s=null)},!1);var s=null,n=null,i=null,l=null,d=null,c=null;function _(e,t,r){for(;e&&e!==o.documentElement;){var a=e.getAttribute(t);if(a)return a;e=e.parentNode}return r}}(window,document);
     1!function(o,s){"use strict";var n={on_ready:function(){n.cache(),n.watch()},cache:function(){n.vars={classes:{parent:"orderable-accordion",link:"orderable-accordion__item-link",content:"orderable-accordion__item-content",link_active:"orderable-accordion__item-link--active",content_active:"orderable-accordion__item-content--active"}}},watch:function(){o(s.body).on("click","."+n.vars.classes.link,function(e){e.preventDefault();var e=o(this),r=e.closest("."+n.vars.classes.parent),t=e.attr("href"),t=o(t),a=e.hasClass(n.vars.classes.link_active);r.find("."+n.vars.classes.link).removeClass(n.vars.classes.link_active),r.find("."+n.vars.classes.content).removeClass(n.vars.classes.content_active),a||(e.addClass(n.vars.classes.link_active),t.addClass(n.vars.classes.content_active)),o(s.body).trigger("orderable-accordion.toggled",{link:e,content:t})}),o(s.body).on("orderable-scrollbar.created",function(e,r){var t=o(".orderable-drawer ."+n.vars.classes.link_active);t.length<=0||(t=(r=r.content).scrollTop()-r.offset().top+t.offset().top,r.scrollTop(t))})}};o(s).ready(n.on_ready)}(jQuery,document),function(n,i){"use strict";var t={debounce:function(r,t=700){let a;return(...e)=>{clearTimeout(a),a=setTimeout(()=>{r.apply(this,e)},t)}},allow_only_numbers:function(e){var r=String.fromCharCode(e.which);/^\d+$/.test(r)||e.preventDefault()},on_change_quantity:function(e){const r=n(e.currentTarget);var e=r.data("orderable-product-id"),t=r.data("orderable-cart-item-key"),a=parseInt(r.text());jQuery.post(orderable_vars.ajax_url,{action:"orderable_cart_quantity",cart_item_key:t,product_id:e,quantity:a},function(e){e&&(n(i.body).trigger("added_to_cart",[e.fragments,e.cart_hash,r]),n(i.body).trigger("orderable-drawer.quantity-updated"))})},on_ready:function(){t.cache(),t.watch(),n(i.body).on("keypress",".orderable-quantity-roller__quantity",t.allow_only_numbers),n(".orderable-drawer__cart").on("input",".orderable-quantity-roller__quantity",t.debounce(t.on_change_quantity)),orderable_vars&&!orderable_vars.woocommerce_enable_ajax_add_to_cart&&n(i.body).off("click",".add_to_cart_button")},cache:function(){t.vars={classes:{overlay:"orderable-drawer-overlay",drawer:"orderable-drawer",drawer_cart:"orderable-drawer__cart",drawer_html:"orderable-drawer__html",overlay_open:"orderable-drawer-overlay--open",drawer_open:"orderable-drawer--open",drawer_open_body:"orderable-drawer-open"}},t.elements={body:n("body"),overlay:n("."+t.vars.classes.overlay),drawer:n("."+t.vars.classes.drawer),drawer_cart:n("."+t.vars.classes.drawer_cart),drawer_html:n("."+t.vars.classes.drawer_html),floating_cart_button_class:".orderable-floating-cart__button"}},watch:function(){var e,r;void 0!==t.elements.drawer&&(n(i.body).on("orderable-drawer.open",t.open),n(i.body).on("orderable-drawer.close",t.close),n(i.body).on("click",t.elements.floating_cart_button_class,function(){n(i.body).trigger("orderable-drawer.open",{show_cart:!0})}),n(i.body).on("orderable-increase-quantity",t.cart.click_increase_decrease_quantity),n(i.body).on("orderable-decrease-quantity",t.cart.click_increase_decrease_quantity),e=i.querySelector("body:not( .rtl ) .orderable-drawer"),r=i.querySelector("body.rtl .orderable-drawer"),e&&e.addEventListener("swiped-right",function(e){t.close()}),r&&r.addEventListener("swiped-left",function(e){t.close()}))},open:function(e,r){r.html=r.html||!1,r.show_cart=r.show_cart||!1,t.elements.drawer_html.hide(),t.elements.drawer_cart.hide(),r.html&&(t.elements.drawer_html.html(r.html),t.elements.drawer_html.show()),r.show_cart&&(t.elements.drawer_html.html(""),t.elements.drawer_cart.show()),t.elements.overlay.addClass(t.vars.classes.overlay_open),t.elements.drawer.addClass(t.vars.classes.drawer_open),t.elements.body.addClass(t.vars.classes.drawer_open_body),n(i.body).trigger("orderable-drawer.opened",r)},close:function(){t.elements.overlay.removeClass(t.vars.classes.overlay_open),t.elements.drawer.removeClass(t.vars.classes.drawer_open),t.elements.body.removeClass(t.vars.classes.drawer_open_body),t.elements.drawer_html.html(""),n(i.body).trigger("orderable-drawer.closed")},cart:{click_increase_decrease_quantity:function(e,r){var t=r.data("orderable-product-id"),a=r.data("orderable-cart-item-key"),o=r.data("orderable-trigger"),s=parseInt(r.data("orderable-quantity"));jQuery.post(orderable_vars.ajax_url,{action:"orderable_cart_quantity",cart_item_key:a,product_id:t,quantity:"increase-quantity"===o?s+1:s-1},function(e){e&&(n(i.body).trigger("added_to_cart",[e.fragments,e.cart_hash,r]),n(i.body).trigger("orderable-drawer.quantity-updated"))})}}};n(i).ready(t.on_ready)}(jQuery,document),function(i,l){"use strict";var d={on_ready:function(){d.cache(),d.watch()},cache:function(){d.vars={classes:{clickable_product:"orderable-product--add-to-cart ",add_to_order_button:"orderable-product__add-to-order",product_messages:"orderable-product__messages",product_price:"orderable-product__actions-price",invalid_field:"orderable-field--invalid",option_select_td:"orderable-product__option-select",button_loading:"orderable-button--loading",out_of_stock:"orderable-button--out-of-stock"},parent_price:null},d.elements={}},watch:function(){i(l.body).on("orderable-drawer.opened",d.init_product_options),i(l.body).on("orderable-add-to-cart",d.click_add_to_order),i(l.body).on("orderable-product-options",d.click_add_to_order),i(l.body).on("orderable-view-product",d.view_product),i(l.body).on("mouseenter mouseleave","."+d.vars.classes.clickable_product,d.simulate_add_to_order_hover)},simulate_add_to_order_hover:function(e){i(this).find("."+d.vars.classes.add_to_order_button).toggleClass("orderable-button--hover","mouseenter"===e.type)},click_add_to_order:function(e,r){var t=(r=void 0!==r?r:i(this)).is("button")?r:r.find("."+d.vars.classes.add_to_order_button),r=t.data("orderable-trigger"),a=t.data("orderable-product-id"),o=t.data("orderable-variation-id"),s=t.data("orderable-variation-attributes"),n={action:r};t.hasClass(d.vars.classes.button_loading)||t.hasClass(d.vars.classes.out_of_stock)||(t.addClass(d.vars.classes.button_loading),"add-to-cart"===r?d.add_to_cart({product_id:a,variation_id:o,attributes:s},function(e){n.show_cart=!0,n.response=e,i(l.body).trigger("orderable-drawer.open",n),t.removeClass(d.vars.classes.button_loading)}):"product-options"===r&&d.get_product_options({product_id:a,focus:t.data("orderable-focus")},function(e){n.html=e.html,i(l.body).trigger("orderable-drawer.open",n),t.removeClass(d.vars.classes.button_loading)}))},view_product:function(e,r){var t=r.data("orderable-product-id"),a={action:"product-options"};d.get_product_options({product_id:t,focus:r.data("orderable-focus")},function(e){a.html=e.html,i(l.body).trigger("orderable-drawer.open",a)})},add_to_cart:function(e,r){var t;void 0!==e.product_id&&(e={action:"orderable_add_to_cart",product_id:e.product_id,variation_id:e.variation_id||!1,attributes:e.attributes||!1},i(".orderable-product-fields-group").length&&(t=jQuery(".orderable-product-fields-group :input").serializeArray(),t=d.convert_to_flat_object(t),jQuery.isEmptyObject(t)||(e=Object.assign(e,t))),jQuery.post(orderable_vars.ajax_url,e,function(e){e&&(i(l.body).trigger("added_to_cart",[e.fragments,e.cart_hash]),"function"==typeof r&&r(e))}))},convert_to_flat_object:function(e){var a={};return e.forEach(function(e){var r="[]"===e.name.substr(-2)||Array.isArray(e.name),t=r?e.name.substr(0,e.name.length-2):e.name;r?(a[t]=void 0===a[t]?[]:a[t],a[t].push(e.value)):a[t]=e.value}),a},get_product_options:function(e,r){void 0!==e.product_id&&(e.action="orderable_get_product_options",jQuery.post(orderable_vars.ajax_url,e,function(e){e.success&&"function"==typeof r&&r(e.data)}))},init_product_options:function(e,r){var t,a,o;void 0!==r.action&&"product-options"===r.action&&(t=i(r=".orderable-drawer .orderable-product__options input, .orderable-drawer .orderable-product__options select"),d.vars.parent_price=i(".orderable-drawer .orderable-product__actions-price").html(),d.product_options_change(t),d.update_button_state(),a=d.debounce(d.update_button_state,500),o=d.debounce(d.product_options_change,500),i(l).on("change keyup",r,function(){o(t),a()}))},product_options_change:function(e){var r=i(".orderable-drawer .orderable-product__add-to-order"),t=d.check_options(e),a=r.data("orderable-product-type");r.attr("data-orderable-trigger","add-to-cart"),i("."+d.vars.classes.product_messages).html(""),"variable"===a&&(t?(a=d.check_variation(e),d.set_variation(r,a)):d.clear_variation(r))},check_options:function(e){if(e.length<=0)return!1;var t=!0;return e.each(function(e,r){i(r).hasClass("orderable-input--validate")&&(""===i(r).val()?(i(r).addClass(d.vars.classes.invalid_field),t=!1):i(r).removeClass(d.vars.classes.invalid_field))}),t},check_variation:function(e){var r=e.closest(".orderable-drawer"),r=i.parseJSON(r.find(".orderable-product__variations").text()),e=d.serialize_object(e),r=d.find_matching_variations(r,e);if(d.is_empty(r))return!1;r=r.shift();return r.attributes=e,r.attributes_json=JSON.stringify(e),void 0!==r&&r},set_variation:function(e,r){var t=r.variation_id||"",a=r.attributes_json||"",o=r.price_html||d.vars.parent_price,s="";r&&""!==r.availability_html&&(s=r.availability_html),r&&!r.is_in_stock&&(s="<p>"+orderable_vars.i18n.out_of_stock+"</p>"),r&&!r.is_purchasable&&(s="<p>"+orderable_vars.i18n.unavailable+"</p>"),!1===r&&(s="<p>"+orderable_vars.i18n.no_exist+"</p>"),!r||r.is_purchasable&&r.is_in_stock||(a=t=""),""!==s&&i("."+d.vars.classes.product_messages).html(s),e.data("orderable-variation-id",t),e.data("orderable-variation-attributes",a),i(".orderable-drawer .orderable-product__actions-price").html(o),e.trigger("orderable_variation_set",{variation:r,variation_id:t,attributes:a,price:o})},clear_variation:function(e){d.set_variation(e,""),d.vars.parent_price&&i(".orderable-drawer .orderable-product__actions-price").html(d.vars.parent_price)},find_matching_variations:function(e,r){for(var t=[],a=0;a<e.length;a++){var o=e[a];d.is_matching_variation(o.attributes,r)&&t.push(o)}return t},is_matching_variation:function(e,r){var t,a,o,s=!0;for(t in e)e.hasOwnProperty(t)&&(a=e[t],o=r[t],void 0!==a&&void 0!==o&&0!==a.length&&0!==o.length&&a!==o&&(s=!1));return s},is_empty:function(e){return void 0===e||!1===e||e.length<=0||!e},serialize_object:function(e){for(var r=e.serializeArray(),t={},a=0;a<r.length;a++)t[r[a].name]=r[a].value;return t},update_button_state:function(){setTimeout(function(){var e=i(".orderable-drawer .orderable-product__add-to-order"),r=i(".orderable-drawer__html ."+d.vars.classes.invalid_field).length,t=!0;"variable"===e.data("orderable-product-type")&&(t=""!==e.data("orderable-variation-id")),e.prop("disabled",r||!t)},50)},debounce:function(a,o,s){var n;return function(){var e=this,r=arguments,t=s&&!n;clearTimeout(n),n=setTimeout(function(){n=null,s||a.apply(e,r)},o),t&&a.apply(e,r)}}};i(l).ready(d.on_ready)}(jQuery,document),function(o,s){"use strict";var n={on_ready:function(){n.cache(),n.watch()},cache:function(){n.vars={top:{}},n.elements={}},watch:function(){o(s.body).on("orderable-drawer.opened",n.trigger),o(s.body).on("orderable-tabs.changed",n.trigger),o(s.body).on("orderable-accordion.toggled",n.trigger),o(s.body).on("wc_fragments_loaded",n.trigger)},trigger:function(){o(".orderable-sb-container").each(function(e,r){var t,r=o(r),a=r.data("orderable-scroll-id");n.has_scrollbar(r)||(r.scrollBox({containerClass:"orderable-sb-container",containerNoScrollClass:"orderable-sb-container-noscroll",contentClass:"orderable-sb-content",scrollbarContainerClass:"orderable-sb-scrollbar-container",scrollBarClass:"orderable-sb-scrollbar"}),0<(t=r.find(".orderable-sb-content")).length&&(t.on("scroll.scrollBox",n.log_top_position),void 0!==n.vars.top[a]&&t.scrollTop(n.vars.top[a])),o(s.body).trigger("orderable-scrollbar.created",{element:r,content:t}))}),o(window).trigger("resize.scrollBox")},has_scrollbar:function(e){return 0<e.find(".orderable-sb-content").length},log_top_position:function(e){var r=o(e.currentTarget).closest(".orderable-sb-container").data("orderable-scroll-id");n.vars.top[r]=o(e.currentTarget).scrollTop()}};o(s).ready(n.on_ready)}(jQuery,document),function(n,e){"use strict";var r={on_ready:function(){r.watch()},watch:function(){n(e.body).on("orderable-show-lookup-services",function(e,r){var t=r.closest(".orderable-services-selector").find(".orderable-services-selector__lookup");r.hide(),t.show()}),n(e.body).on("orderable-lookup-services",function(e,r){var t=r.closest(".orderable-services-selector"),a=t.find(".orderable-services-selector__lookup-message"),o=t.find(".orderable-services-selector__selected-change"),s=t.find(".orderable-services-selector__lookup-city").val(),t=t.find(".orderable-services-selector__lookup-postcode").val(),r=r.data("orderable-service");jQuery.post(orderable_vars.ajax_url,{action:"orderable_lookup_service",postcode:t,city:s,service:r},function(e){e.success?(a.html(""),o.show(),void 0!==e.data.fragments&&n.each(e.data.fragments,function(e,r){n(e).html(r)}),console.log(e)):a.html("<p>"+e.data.message+"</p>")})})}};n(e).ready(r.on_ready)}(jQuery,document),function(n,i){"use strict";var l={on_ready:function(){l.cache(),l.watch(),l.toggle_scroll()},on_resize:function(){l.toggle_scroll()},cache:function(){l.vars={classes:{tabs:"orderable-tabs",tabs_list:"orderable-tabs__list",tab_items:"orderable-tabs__item",tab_item_active:"orderable-tabs__item--active",tab_links:"orderable-tabs__link",tab_arrow:"orderable-tabs__arrow"},dragging:!1},l.elements={}},watch:function(){n("body").on("touchstart",function(){l.vars.dragging=!1}).on("touchmove",function(){l.vars.dragging=!0}),n(i.body).on("click mouseup touchend","."+l.vars.classes.tab_links,function(e){var r,t,a,o,s;l.vars.dragging||(e.preventDefault(),r=(e=n(this)).attr("href"),t=e.closest("."+l.vars.classes.tab_items),a=(s=e.closest("."+l.vars.classes.tabs)).find("."+l.vars.classes.tabs_list),o=s.find("."+l.vars.classes.tab_items),s=s.data("orderable-tabs"),s=(e=e.closest(s.wrapper)).find(s.sections),e=e.find(r),s.hide(),e.show(),o.removeClass(l.vars.classes.tab_item_active),t.addClass(l.vars.classes.tab_item_active),a.animate({scrollLeft:a.scrollLeft()+t.position().left}),n(i.body).trigger("orderable-tabs.changed",{tab:t}))}),n("."+l.vars.classes.tabs_list).on("scroll",function(e){0<n(this).scrollLeft()&&n("."+l.vars.classes.tab_arrow).fadeOut()}),n("."+l.vars.classes.tabs_list).on("wheel DOMMouseScroll mousewheel touchmove",function(){n(this).stop()}),n(i).on("click","."+l.vars.classes.tab_arrow,function(e){e.preventDefault();var e=n(this),r=e.parent(),t=r.find("."+l.vars.classes.tabs_list);t.animate({scrollLeft:t.scrollLeft()+.5*r.width()}),e.fadeOut()})},toggle_scroll:function(){n("."+l.vars.classes.tabs).each(function(e,r){var t=n(this),a=t.data("orderable-tabs"),t=t.closest(a.wrapper),a=t.find("."+l.vars.classes.tabs_list),o=t.find("."+l.vars.classes.tab_arrow);t.outerWidth()<a[0].scrollWidth?o.show():o.hide()})}};n(i).ready(l.on_ready),n(window).on("resize",l.on_resize)}(jQuery,document);var orderable_timings={};!function(i,a){"use strict";orderable_timings={on_ready:function(){orderable_timings.watch(),orderable_timings.set_date_and_time()},set_date_and_time:function(){var e,r=a.querySelector("#orderable-date"),t="";r&&(e=r.options[r.selectedIndex])&&!(t=e.value)&&r.options[r.selectedIndex+1]&&(r.options[r.selectedIndex+1].selected=!0,i(r).change()),"asap"!==t&&(e="",(r=a.querySelector("#orderable-time"))&&(e=r.options[r.selectedIndex])&&r.options[r.selectedIndex+1]&&(e.value||(r.options[r.selectedIndex+1].selected=!0,i(r).change())))},restore:function(){var e=orderable_timings.get_timings();e&&e.date&&(i(".orderable-order-timings__date").val(e.date),i(".orderable-order-timings__date").change(),e.time&&(i(".orderable-order-timings__time").val(e.time),i(".orderable-order-timings__time").change()))},watch:function(){i(a.body).on("wc_fragments_refreshed",function(){orderable_timings.restore(),orderable_timings.set_date_and_time()}),i(a.body).on("updated_checkout",function(){orderable_timings.restore(),orderable_timings.set_date_and_time()}),i(a.body).on("change",".orderable-order-timings__date",function(e){var r=i(this).find("option:selected").data("orderable-slots"),t=i(".orderable-order-timings--time"),a=i(".orderable-order-timings__time"),o=a.find("option").first(),s=a.find('option[value="asap"]').first(),n=orderable_timings.get_timings();if(n.date=i(".orderable-order-timings__date").val(),window.localStorage.setItem("orderable_timings",JSON.stringify(n)),a.html(o),s&&a.append(s),!r)return a.prop("disabled",!0),void t.hide();"all-day"===r[0].value?(t.hide(),a.prop("disabled",!0)):(a.prop("disabled",!1),t.show(),i.each(r,function(e,r){a.append(i("<option />").attr("value",r.value).text(r.formatted))}))}),i(a.body).on("change",".orderable-order-timings__time",function(e){var r=orderable_timings.get_timings();r.time=i(".orderable-order-timings__time").val(),window.localStorage.setItem("orderable_timings",JSON.stringify(r))})},get_timings:function(){return JSON.parse(window.localStorage.getItem("orderable_timings"))||{}}},i(a).ready(orderable_timings.on_ready)}(jQuery,document),function(t,a){"use strict";var e={on_ready:function(){e.watch()},watch:function(){t(a.body).on("click","[data-orderable-trigger]",e.trigger)},trigger:function(e){e.stopImmediatePropagation();var e=t(this),r=e.data("orderable-trigger");t(a.body).trigger("orderable-"+r,[e])}};t(a).ready(e.on_ready)}(jQuery,document),function(o,e,s){"use strict";var n="scrollBox",t={containerClass:"sb-container",containerNoScrollClass:"sb-container-noscroll",contentClass:"sb-content",scrollbarContainerClass:"sb-scrollbar-container",scrollBarClass:"sb-scrollbar"};function r(e,r){this.element=e,this.settings=o.extend({},t,r),this._defaults=t,this._name=n,this.init()}o.extend(r.prototype,{init:function(){this.addScrollbar(),this.addEvents(),this.onResize()},addScrollbar:function(){o(this.element).addClass(this.settings.containerClass),this.wrapper=o("<div class='"+this.settings.contentClass+"' />"),this.wrapper.append(o(this.element).contents()),o(this.element).append(this.wrapper),this.scollbarContainer=o("<div class='"+this.settings.scrollbarContainerClass+"' />"),this.scrollBar=o("<div class='"+this.settings.scrollBarClass+"' />"),this.scollbarContainer.append(this.scrollBar),o(this.element).prepend(this.scollbarContainer)},addEvents:function(){this.wrapper.on("scroll."+n,o.proxy(this.onScroll,this)),o(e).on("resize."+n,o.proxy(this.onResize,this)),this.scrollBar.on("mousedown."+n,o.proxy(this.onMousedown,this)),this.scrollBar.on("touchstart."+n,o.proxy(this.onTouchstart,this))},onTouchstart:function(r){var t=this,a=(r.preventDefault(),t.scrollBar[0].offsetTop);o(s).on("touchmove."+n,function(e){e=e.touches[0].pageY-r.touches[0].pageY;t.scrollBar[0].style.top=Math.min(t.scollbarContainer[0].clientHeight-t.scrollBar[0].clientHeight,Math.max(0,a+e))+"px",t.wrapper[0].scrollTop=t.wrapper[0].scrollHeight*t.scrollBar[0].offsetTop/t.scollbarContainer[0].clientHeight}),o(s).on("touchend."+n,function(){o(s).off("touchmove."+n),o(s).off("touchend."+n)})},onMousedown:function(r){var t=this,a=(r.preventDefault(),t.scrollBar[0].offsetTop);o(s).on("mousemove."+n,function(e){e=e.pageY-r.pageY;t.scrollBar[0].style.top=Math.min(t.scollbarContainer[0].clientHeight-t.scrollBar[0].clientHeight,Math.max(0,a+e))+"px",t.wrapper[0].scrollTop=t.wrapper[0].scrollHeight*t.scrollBar[0].offsetTop/t.scollbarContainer[0].clientHeight}),o(s).on("mouseup."+n,function(){o(s).off("mousemove."+n),o(s).off("mouseup."+n)})},onResize:function(){this.wrapper.css("max-height",o(this.element).height());var e=this.wrapper[0].clientHeight;this.scrollBar.css("height",this.scollbarContainer[0].clientHeight*e/this.wrapper[0].scrollHeight+"px"),this.scollbarContainer[0].clientHeight<=this.scrollBar[0].clientHeight?o(this.element).addClass(this.settings.containerNoScrollClass):o(this.element).removeClass(this.settings.containerNoScrollClass),this.onScroll()},onScroll:function(){this.scrollBar.css("top",Math.min(this.scollbarContainer[0].clientHeight-this.scrollBar[0].clientHeight,this.scollbarContainer[0].clientHeight*this.wrapper[0].scrollTop/this.wrapper[0].scrollHeight)+"px")}}),o.fn[n]=function(e){return this.each(function(){o.data(this,"plugin_"+n)||o.data(this,"plugin_"+n,new r(this,e))})}}(jQuery,window,document),function(e,o){"use strict";"function"!=typeof e.CustomEvent&&(e.CustomEvent=function(e,r){r=r||{bubbles:!1,cancelable:!1,detail:void 0};var t=o.createEvent("CustomEvent");return t.initCustomEvent(e,r.bubbles,r.cancelable,r.detail),t},e.CustomEvent.prototype=e.Event.prototype),o.addEventListener("touchstart",function(e){"true"!==e.target.getAttribute("data-swipe-ignore")&&(c=e.target,d=Date.now(),s=e.touches[0].clientX,n=e.touches[0].clientY,l=i=0)},!1),o.addEventListener("touchmove",function(e){var r;s&&n&&(r=e.touches[0].clientX,e=e.touches[0].clientY,i=s-r,l=n-e)},!1),o.addEventListener("touchend",function(e){var r,t,a,o;c===e.target&&(o=parseInt(u(c,"data-swipe-threshold","20"),10),r=parseInt(u(c,"data-swipe-timeout","500"),10),t=Date.now()-d,a="",e=e.changedTouches||e.touches||[],Math.abs(i)>Math.abs(l)?Math.abs(i)>o&&t<r&&(a=0<i?"swiped-left":"swiped-right"):Math.abs(l)>o&&t<r&&(a=0<l?"swiped-up":"swiped-down"),""!==a&&(o={dir:a.replace(/swiped-/,""),touchType:(e[0]||{}).touchType||"direct",xStart:parseInt(s,10),xEnd:parseInt((e[0]||{}).clientX||-1,10),yStart:parseInt(n,10),yEnd:parseInt((e[0]||{}).clientY||-1,10)},c.dispatchEvent(new CustomEvent("swiped",{bubbles:!0,cancelable:!0,detail:o})),c.dispatchEvent(new CustomEvent(a,{bubbles:!0,cancelable:!0,detail:o}))),d=n=s=null)},!1);var s=null,n=null,i=null,l=null,d=null,c=null;function u(e,r,t){for(;e&&e!==o.documentElement;){var a=e.getAttribute(r);if(a)return a;e=e.parentNode}return t}}(window,document);
  • orderable/tags/1.3.0/inc/class-admin-notices.php

    r2549156 r2709284  
    8585                continue;
    8686            } ?>
    87             <div class="notice notice--orderable" style="border-left-color: #bc47f5;">
     87            <div class="notice notice--orderable" style="border-left-color: #7031F5;">
    8888                <p><strong><?php echo wp_kses_post( $notice['title'] ); ?></strong></p>
    8989                <p><?php echo wp_kses_post( $notice['description'] ); ?></p>
  • orderable/tags/1.3.0/inc/class-ajax.php

    r2626120 r2709284  
    5656        }
    5757
     58        $focus   = filter_input( INPUT_POST, 'focus', FILTER_SANITIZE_STRING );
    5859        $product = wc_get_product( $product_id );
    5960
     
    6970        }
    7071
    71         $args = array( 'images' => true );
     72        $args = array(
     73            'images' => true,
     74            'focus'  => $focus,
     75        );
    7276
    7377        ob_start();
  • orderable/tags/1.3.0/inc/class-assets.php

    r2666071 r2709284  
    3333
    3434        wp_enqueue_style( 'orderable', ORDERABLE_ASSETS_URL . 'frontend/css/main' .  $suffix_css . '.css', array(), ORDERABLE_VERSION );
    35         wp_enqueue_script( 'orderable', ORDERABLE_ASSETS_URL . 'frontend/js/main' . $suffix . '.js', array( 'jquery' ), ORDERABLE_VERSION, true );
     35        wp_enqueue_script( 'orderable', ORDERABLE_ASSETS_URL . 'frontend/js/main' . $suffix . '.js', array( 'jquery' , 'wc-add-to-cart' ), ORDERABLE_VERSION, true );
    3636
    3737        wp_add_inline_style( 'orderable', self::get_styles() );
    3838
    3939        wp_localize_script( 'orderable', 'orderable_vars', array(
    40             'i18n' => array(
     40            'i18n'                                => array(
    4141                'out_of_stock' => __( 'Sorry, that product is out of stock.', 'orderable' ),
    4242                'unavailable'  => __( 'Sorry, that product is unavailable.', 'orderable' ),
    4343                'no_exist'     => __( 'Sorry, that combination does not exist.', 'orderable' ),
    44             )
     44            ),
     45            'ajax_url'                            => WC()->ajax_url(),
     46            /**
     47             * If the option "Enable AJAX add to cart buttons on archives" is not enabled,
     48             * we need to turn off the click event for .add_to_cart_button elements on drawer.js
     49             * to keep the AJAX behaviour only on Mini cart.
     50             */
     51            'woocommerce_enable_ajax_add_to_cart' => 'yes' === get_option( 'woocommerce_enable_ajax_add_to_cart' ),
    4552        ) );
    4653
     
    6875            '.orderable-button--loading:after { border-top-color: %1$s; border-left-color: %1$s; }',
    6976            '.orderable-product-option--checked .orderable-product-option__label-state { border-color: %1$s !important; }',
    70             ".orderable-product__title { font-size: {$product_title_font_size}px; line-height: {$product_title_line_height}px; }",
     77            ".orderable-products-list .orderable-product__title { font-size: {$product_title_font_size}px; line-height: {$product_title_line_height}px; }",
    7178            ".orderable-product__actions-price .amount { font-size: {$product_price_font_size}px; line-height: {$product_price_line_height}px; }",
    7279        );
  • orderable/tags/1.3.0/inc/class-modules.php

    r2666071 r2709284  
    3535            'checkout',
    3636            'timed-products',
     37            'custom-order-status',
    3738        );
    3839
  • orderable/tags/1.3.0/inc/class-products.php

    r2637423 r2709284  
    2222        add_filter( 'woocommerce_product_query_tax_query', array( __CLASS__, 'remove_hidden_categories_from_products_query' ), 10, 2 );
    2323        add_filter( 'get_terms_args', array( __CLASS__, 'remove_hidden_categories_from_terms_query' ), 10, 2 );
     24        add_filter( 'wp_sitemaps_posts_query_args', array( __CLASS__, 'remove_hidden_products_from_sitemap' ), 10, 2 );
     25        add_filter( 'wp_sitemaps_taxonomies_query_args', array( __CLASS__, 'remove_hidden_categories_from_sitemap' ), 10, 2 );
    2426    }
    2527
     
    119121                    if ( ! empty( $category_products ) ) {
    120122                        $products[ $category_id ]['products'] = $category_products;
    121                        
     123
    122124                        // Add parent attribute if parent is a root category.
    123                         if ( in_array( $category->parent, $categories ) ) {
     125                        if ( in_array( $category->parent, $categories, true ) ) {
    124126                            $products[ $category_id ]['category']['parent'] = $category->parent;
    125127                        }
     
    166168     *
    167169     * @param array $args Arguments.
     170     *
    168171     * @return array
    169172     */
    170173    public static function get_products( $args ) {
    171174        $args['status'] = 'publish'; // Ensure only published products are returned.
    172         $products       = wc_get_products( $args );
     175
     176        if ( 'yes' === get_option( 'woocommerce_hide_out_of_stock_items' ) ) {
     177            $args['stock_status'] = 'instock';
     178        }
     179
     180        /**
     181         * Filter arguments used to retrieve products from database
     182         *
     183         * @param array $args WC_Product_Query arguments
     184         *
     185         * @return array New query arguments
     186         * @since 1.2.1
     187         * @hook  orderable_get_products_args
     188         */
     189        $products = wc_get_products( apply_filters( 'orderable_get_products_args', $args ) );
    173190
    174191        if ( ! empty( $products ) && isset( $args['orderby'] ) ) {
     
    184201     *
    185202     * @param array $categories Categories.
     203     *
    186204     * @return array
    187205     */
     
    288306
    289307        $args = array(
    290             'trigger'              => 'add-to-cart',
     308            'trigger'              => self::get_add_to_cart_trigger( $product ),
    291309            'product_id'           => $product->get_id(),
    292310            'product_type'         => $product->get_type(),
     
    298316
    299317        if ( 'variable' === $args['product_type'] ) {
    300             $args['trigger'] = 'product-options';
    301             $args['text']    = empty( $orderable_single_product ) ? __( 'Select', 'orderable' ) : $args['text'];
     318            $args['text'] = empty( $orderable_single_product ) ? __( 'Select', 'orderable' ) : $args['text'];
    302319        } elseif ( 'variation' === $args['product_type'] ) {
    303320            $args['product_id']   = $product->get_parent_id();
     
    307324        if ( ! $product->is_in_stock() ) {
    308325            $args['classes'] .= ' orderable-button--out-of-stock';
    309             $args['text']     = __( 'Out of Stock', 'orderable' );
     326            $args['text']    = __( 'Out of Stock', 'orderable' );
    310327        }
    311328
     
    313330
    314331        return sprintf( '<button class="orderable-button %s" data-orderable-trigger="%s" data-orderable-product-id="%d" data-orderable-product-type="%s" data-orderable-variation-id="%d" data-orderable-variation-attributes="">%s</button>', esc_attr( $args['classes'] ), esc_attr( $args['trigger'] ), esc_attr( $args['product_id'] ), esc_attr( $args['product_type'] ), esc_attr( $args['variation_id'] ), wp_kses_post( $args['text'] ) );
     332    }
     333
     334    /**
     335     * Get add to cart trigger value.
     336     *
     337     * @param WC_Product $product
     338     *
     339     * @return string
     340     */
     341    public static function get_add_to_cart_trigger( $product ) {
     342        $trigger = $product->is_type( 'variable' ) ? 'product-options' : 'add-to-cart';
     343
     344        return apply_filters( 'orderable_get_add_to_cart_trigger', $trigger, $product );
    315345    }
    316346
     
    517547     * this also disables the archive page.
    518548     *
    519      * @param array $args
    520      * @param array $taxonomies
     549     * @param array $args       Args.
     550     * @param array $taxonomies Taxonomies.
    521551     *
    522552     * @return mixed
     
    540570        return $args;
    541571    }
     572
     573    /**
     574     * Remove hidden products from sitemap.
     575     *
     576     * @param array  $query_args Query args.
     577     * @param string $post_type  Post type.
     578     *
     579     * @return mixed
     580     */
     581    public static function remove_hidden_products_from_sitemap( $query_args, $post_type ) {
     582        if ( 'product' !== $post_type ) {
     583            return $query_args;
     584        }
     585
     586        $hidden_categories = Orderable_Settings::get_hidden_categories();
     587
     588        if ( empty( $hidden_categories ) ) {
     589            return $query_args;
     590        }
     591
     592        $tax_query = array(
     593            'taxonomy'         => 'product_cat',
     594            'terms'            => $hidden_categories,
     595            'field'            => 'term_id',
     596            'include_children' => true,
     597            'operator'         => 'NOT IN',
     598        );
     599
     600        if ( ! isset( $query_args['tax_query'] ) ) {
     601            $query_args['tax_query'] = array();
     602        }
     603
     604        $query_args['tax_query'][] = $tax_query;
     605
     606        return $query_args;
     607    }
     608
     609    /**
     610     * Exclude hidden categories from sitemap.
     611     *
     612     * @param array  $query_args Query args.
     613     * @param string $taxonomy   Taxonomy.
     614     *
     615     * @return mixed
     616     */
     617    public static function remove_hidden_categories_from_sitemap( $query_args, $taxonomy ) {
     618        if ( 'product_cat' !== $taxonomy ) {
     619            return $query_args;
     620        }
     621
     622        $hidden_categories = Orderable_Settings::get_hidden_categories();
     623
     624        if ( empty( $hidden_categories ) ) {
     625            return $query_args;
     626        }
     627
     628        if ( ! isset( $query_args['exclude'] ) ) {
     629            $query_args['exclude'] = $hidden_categories;
     630        } else {
     631            if ( is_array( $hidden_categories ) ) {
     632                $query_args['exclude'] = array_merge( $query_args['exclude'], $hidden_categories );
     633            } else {
     634                $query_args['exclude'] = $query_args['exclude'] . ',' . implode( ',', $hidden_categories );
     635            }
     636        }
     637
     638        return $query_args;
     639    }
     640
     641    /**
     642     * Get product accordion data.
     643     *
     644     * @param WC_Product $product Product.
     645     *
     646     * @return array
     647     */
     648    public static function get_accordion_data( $product ) {
     649        $data = array();
     650
     651        $description = Orderable_Settings::get_setting( 'drawer_quickview_description' );
     652
     653        if ( 'none' !== $description ) {
     654            $description = 'short' === $description ? $product->get_short_description() : $product->get_description();
     655
     656            $data[] = array(
     657                'title'   => __( 'Description', 'orderable' ),
     658                'content' => apply_filters( 'the_content', $description ),
     659                'id'      => 'accordion-description',
     660            );
     661        }
     662
     663        /**
     664         * Filter product accordion data.
     665         *
     666         * @var array      $data
     667         * @var WC_Product $product
     668         */
     669        return apply_filters( 'orderable_get_accordion_data', $data, $product );
     670    }
    542671}
  • orderable/tags/1.3.0/inc/class-settings.php

    r2666071 r2709284  
    928928                'next'    => 'orderable-order-view',
    929929                'options' => array(
    930                     'content'  => '<h3>' . esc_html__( 'Layout Builder', 'orderable' ) . '</h3>' .
     930                    'content'  => '<h3>' . esc_html__( 'Product Layouts', 'orderable' ) . '</h3>' .
    931931                                  '<p>' .
    932932                                  esc_html__( 'Use the Layout Builder to create a product list based on category. Embed your layout using the shortcode or block.', 'orderable' ) .
     
    10591059        Orderable_Webhooks::subscribe();
    10601060    }
     1061
     1062    /**
     1063     * Universal upgrade page content.
     1064     *
     1065     * @param string $campaign Campaign for UTM.
     1066     */
     1067    public static function upgrade_page_content( $campaign = '' ) {
     1068        ?>
     1069        <style>
     1070            body {
     1071                background: #fff;
     1072            }
     1073
     1074            .orderable-pro-upgrade__logo {
     1075                margin: 0 0 36px;
     1076                display: block;
     1077            }
     1078
     1079            .orderable-pro-upgrade__content {
     1080                margin: 0;
     1081                padding: 24px;
     1082                max-width: 500px;
     1083            }
     1084
     1085            .orderable-pro-upgrade__intro {
     1086                font-size: 22px;
     1087                margin: 0 0 36px;
     1088                line-height: 1.4;
     1089                color: #000;
     1090            }
     1091
     1092            .orderable-pro-upgrade__intro a {
     1093                color: #7031F5;
     1094            }
     1095
     1096            .orderable-pro-upgrade__features {
     1097                font-size: 16px;
     1098                margin: 0 0 48px;
     1099            }
     1100
     1101            .orderable-pro-upgrade__features li {
     1102                margin: 0 0 12px;
     1103                line-height: 1.4;
     1104            }
     1105
     1106            .orderable-pro-upgrade__features li:last-child {
     1107                margin-bottom: 0;
     1108            }
     1109
     1110            .orderable-pro-upgrade__features li strong {
     1111                color: #000;
     1112            }
     1113
     1114            .orderable-pro-upgrade__content .orderable-admin-button--pro {
     1115                padding: 16px 30px;
     1116                font-size: 16px;
     1117                background: #7031F5;
     1118            }
     1119        </style>
     1120        <div class="wrap orderable-pro-upgrade">
     1121            <div class="orderable-pro-upgrade__content">
     1122                <?php printf( '<img class="orderable-pro-upgrade__logo" src="%s" width="164" height="36" />', esc_url( ORDERABLE_ASSETS_URL . 'img/orderable-logo.svg' ) ); ?>
     1123
     1124                <p class="orderable-pro-upgrade__intro"> <a href="https://orderable.com/?utm_source=Orderable&utm_medium=Plugin&utm_campaign=<?php echo esc_attr( $campaign ); ?>" target="_blank"><?php esc_attr_e( 'Upgrade to Orderable Pro', 'orderable' ); ?></a> <?php esc_attr_e( 'to access this feature, plus many more revenue boosting features.', 'orderable' ); ?></p>
     1125
     1126                <ul class="orderable-pro-upgrade__features">
     1127                    <li><strong><?php esc_attr_e( 'Product Addons', 'orderable' ); ?></strong> &mdash; <?php esc_attr_e( 'Add options to your products like toppings, allergy information, size, etc.', 'orderable' ); ?></li>
     1128                    <li><strong><?php esc_attr_e( 'Cart Bumps', 'orderable' ); ?></strong> &mdash; <?php esc_attr_e( 'Increase sales by offering related products right in the side cart.', 'orderable' ); ?></li>
     1129                    <li><strong><?php esc_attr_e( 'Time Slots', 'orderable' ); ?></strong> &mdash; <?php esc_attr_e( 'Improve customer satisfaction by offering specific time slots for their order.', 'orderable' ); ?></li>
     1130                    <li><strong><?php esc_attr_e( 'Custom Checkout', 'orderable' ); ?></strong> &mdash; <?php esc_attr_e( 'Use our custom checkout experience to drive conversions at the most important step of your online store.', 'orderable' ); ?></li>
     1131                    <li><strong><?php esc_attr_e( 'Checkout Tipping', 'orderable' ); ?></strong> &mdash; <?php esc_attr_e( 'Make it easy for your customers to include a tip with their order.', 'orderable' ); ?></li>
     1132                    <li><strong><?php esc_attr_e( 'Timed Products', 'orderable' ); ?></strong> &mdash; <?php esc_attr_e( 'Show/hide products in your store based on time/date conditions.', 'orderable' ); ?></li>
     1133                    <li><strong><?php esc_attr_e( 'Custom Order Statuses', 'orderable' ); ?></strong> &mdash; <?php esc_attr_e( 'Add and modify order statuses to improve the backend flow of your store. Create custom notifications for each status.', 'orderable' ); ?></li>
     1134                    <li><strong><?php esc_attr_e( 'Checkout Tipping', 'orderable' ); ?></strong> &mdash; <?php esc_attr_e( 'Make it easy for your customers to include a tip with their order.', 'orderable' ); ?></li>
     1135                </ul>
     1136
     1137                <?php echo Orderable_Helpers::get_pro_button( $campaign, __( 'Upgrade Now', 'orderable' ) ); ?>
     1138            </div>
     1139        </div>
     1140        <?php
     1141    }
    10611142}
  • orderable/tags/1.3.0/inc/modules/addons/class-addons.php

    r2549156 r2709284  
    4040     */
    4141    public static function product_addons_page() {
    42         ?>
    43         <div class="wrap">
    44             <h1 class="wp-heading-inline"><?php _e( 'Product Addons', 'orderable' ); ?></h1>
    45             <div>
    46                 <?php echo Orderable_Helpers::get_pro_button(); ?>
    47             </div>
    48         </div>
    49         <?php
     42        Orderable_Settings::upgrade_page_content( 'product-addons' );
    5043    }
    5144}
  • orderable/tags/1.3.0/inc/modules/drawer/class-drawer-ajax.php

    r2558994 r2709284  
    2525     */
    2626    public static function cart_quantity() {
    27         $product_id   = filter_input( INPUT_POST, 'product_id', FILTER_SANITIZE_STRING );
     27        $product_id    = filter_input( INPUT_POST, 'product_id', FILTER_SANITIZE_STRING );
    2828        $cart_item_key = filter_input( INPUT_POST, 'cart_item_key', FILTER_SANITIZE_STRING );
    29         $quantity     = filter_input( INPUT_POST, 'quantity', FILTER_SANITIZE_NUMBER_INT );
     29        $quantity      = filter_input( INPUT_POST, 'quantity', FILTER_SANITIZE_NUMBER_INT );
    3030
    3131        if ( empty( $product_id ) || empty( $cart_item_key ) || ! is_numeric( $quantity ) ) {
     
    3939        }
    4040
    41         $passed_validation = true;
    42         $cart_updated = false;
     41        $passed_validation        = true;
     42        $cart_updated             = false;
     43        $current_session_order_id = isset( WC()->session->order_awaiting_payment ) ? absint( WC()->session->order_awaiting_payment ) : 0;
     44        $product_qty_in_cart      = WC()->cart->get_cart_item_quantities();
    4345
    4446        // is_sold_individually.
    4547        if ( $_product->is_sold_individually() && $quantity > 1 ) {
    4648            /* Translators: %s Product title. */
    47             wc_add_notice( sprintf( __( 'You can only have 1 %s in your cart.', 'woocommerce' ), $_product->get_name() ), 'error' );
     49            wc_add_notice( sprintf( __( 'You can only have 1 %s in your cart.', 'orderable' ), $_product->get_name() ), 'error' );
    4850            $passed_validation = false;
    4951        }
    5052
     53        // We only need to check products managing stock, with a limited stock qty.
     54        if ( $_product->managing_stock() || $_product->backorders_allowed() ) {
     55            // Check stock based on all items in the cart and consider any held stock within pending orders.
     56            $held_stock = wc_get_held_stock_quantity( $_product, $current_session_order_id );
     57
     58            if ( $_product->get_stock_quantity() < ( $held_stock + $quantity ) ) {
     59                /* translators: 1: product name 2: quantity in stock */
     60                wc_add_notice( sprintf( __( 'Sorry, we do not have enough "%1$s" in stock to fulfill your order (%2$s available). We apologize for any inconvenience caused.', 'woocommerce' ), $_product->get_name(), wc_format_stock_quantity_for_display( $_product->get_stock_quantity() - $held_stock, $_product ) ), 'error' );
     61
     62                $passed_validation = false;
     63            }
     64        }
     65
    5166        if ( $passed_validation ) {
    52             WC()->cart->set_quantity( $cart_item_key, $quantity, false );
     67            WC()->cart->set_quantity( $cart_item_key, intval( $quantity ), false );
    5368            $cart_updated = true;
    5469        }
  • orderable/tags/1.3.0/inc/modules/drawer/class-drawer-settings.php

    r2558994 r2709284  
    2424        add_filter( 'wpsf_register_settings_orderable', array( __CLASS__, 'register_settings' ), 20 );
    2525        add_filter( 'orderable_settings_validate', array( __CLASS__, 'validate_settings' ), 10 );
     26        add_action( 'init', array( __CLASS__, 'position_accordion' ) );
    2627    }
    2728
     
    4243        );
    4344
     45        $default_settings['drawer_quickview_description']        = 'none';
     46        $default_settings['drawer_quickview_accordion_position'] = 'orderable_side_menu_before_product_options';
     47
    4448        return $default_settings;
    4549    }
     
    5357     */
    5458    public static function register_settings( $settings = array() ) {
     59        $settings['tabs']['drawer'] = array(
     60            'id'       => 'drawer',
     61            'title'    => __( 'Side Drawer', 'orderable' ),
     62            'priority' => 30,
     63        );
     64
    5565        $settings['sections']['cart'] = array(
    5666            'tab_id'              => 'style',
     
    8595        );
    8696
     97        $settings['sections']['quickview'] = array(
     98            'tab_id'              => 'drawer',
     99            'section_id'          => 'quickview',
     100            'section_title'       => __( 'Quickview Settings', 'orderable' ),
     101            'section_description' => __( 'Settings for when products are displayed in the Orderable drawer.', 'orderable' ),
     102            'section_order'       => 10,
     103            'fields'              => array(
     104                'accordion_position' => array(
     105                    'id'       => 'accordion_position',
     106                    'title'    => __( 'Accordion Position', 'orderable' ),
     107                    'subtitle' => __( 'Where should the product information accordion be displayed in the side drawer.', 'orderable' ),
     108                    'type'     => 'select',
     109                    'choices'  => array(
     110                        'orderable_side_menu_before_product_options' => __( 'Before Product Options', 'orderable' ),
     111                        'orderable_side_menu_after_product_options'  => __( 'After Product Options', 'orderable' ),
     112                    ),
     113                    'default'  => Orderable_Settings::get_setting_default( 'drawer_quickview_accordion_position' ),
     114                ),
     115                'description'        => array(
     116                    'id'       => 'description',
     117                    'title'    => __( 'Product Description', 'orderable' ),
     118                    'subtitle' => __( 'Choose which product description to display in the side drawer.', 'orderable' ),
     119                    'type'     => 'select',
     120                    'choices'  => array(
     121                        'none'  => __( 'None', 'orderable' ),
     122                        'short' => __( 'Short Description', 'orderable' ),
     123                        'full'  => __( 'Full Description', 'orderable' ),
     124                    ),
     125                    'default'  => Orderable_Settings::get_setting_default( 'drawer_quickview_description' ),
     126                ),
     127            ),
     128        );
     129
    87130        return $settings;
    88131    }
     
    190233
    191234                    $table.find( 'tr' ).removeClass( 'orderable-table__row--last' );
    192                     $table.find( 'tr' ).not( '[style*="display: none"]').last().addClass( 'orderable-table__row--last' );
     235                    $table.find( 'tr' ).not( '[style*="display: none"]' ).last().addClass( 'orderable-table__row--last' );
    193236                }
    194237
     
    215258        $settings = Orderable_Settings::get_setting( self::$fine_tune_cart_key );
    216259        $settings = array_filter( $settings );
    217         $css = '';
     260        $css      = '';
    218261
    219262        if ( ! empty( $settings ) ) {
     
    240283        return apply_filters( 'orderable_get_cart_icon_css', $style, $cart_count );
    241284    }
     285
     286    /**
     287     * Position product accordion in drawer.
     288     */
     289    public static function position_accordion() {
     290        $position = Orderable_Settings::get_setting( 'drawer_quickview_accordion_position' );
     291
     292        add_filter( $position, array( __CLASS__, 'display_product_accordion' ), 10, 2 );
     293    }
     294
     295    /**
     296     * Display product accordion.
     297     *
     298     * @param WC_Product $product Product.
     299     * @param array      $args    Args.
     300     */
     301    public static function display_product_accordion( $product, $args = array() ) {
     302        include ORDERABLE_TEMPLATES_PATH . 'product/accordion.php';
     303    }
    242304}
  • orderable/tags/1.3.0/inc/modules/drawer/class-drawer.php

    r2558994 r2709284  
    2020        add_action( 'wp_footer', array( __CLASS__, 'add' ) );
    2121        add_filter( 'woocommerce_add_to_cart_fragments', array( __CLASS__, 'cart_count_fragments' ), 10, 1 );
     22        add_filter( 'woocommerce_add_to_cart_fragments', array( __CLASS__, 'cart_content_fragments' ), 10, 1 );
    2223        add_filter( 'woocommerce_cart_item_permalink', '__return_false' );
    2324        add_filter( 'wc_get_template', array( __CLASS__, 'mini_cart_template' ), 100, 5 );
     
    7172
    7273    /**
     74     * Update cart content after adding to cart.
     75     *
     76     * @param array $fragments Array of HTML fragments.
     77     *
     78     * @return mixed
     79     */
     80    public static function cart_content_fragments( $fragments ) {
     81        ob_start();
     82
     83        self::mini_cart();
     84
     85        $fragments['.orderable-mini-cart-wrapper'] = ob_get_clean();
     86
     87        return $fragments;
     88    }
     89
     90    /**
    7391     * Replace mini cart template.
    7492     *
     
    86104        }
    87105
     106        if ( empty( $args['orderable'] ) ) {
     107            return $template;
     108        }
     109
    88110        return ORDERABLE_PATH . 'woocommerce/cart/mini-cart.php';
    89111    }
     112
     113    /**
     114     * Output mini cart with Orderable param set.
     115     */
     116    public static function mini_cart() {
     117        ?>
     118        <div class="orderable-mini-cart-wrapper">
     119            <?php woocommerce_mini_cart( array( 'orderable' => true ) ); ?>
     120        </div>
     121        <?php
     122    }
    90123}
  • orderable/tags/1.3.0/inc/modules/drawer/templates/drawer.php

    r2549156 r2709284  
    1616        <h3><?php _e( 'Your Order', 'orderable' ); ?></h3>
    1717
    18         <div class="widget_shopping_cart_content">
    19             <?php woocommerce_mini_cart(); ?>
     18        <div class="orderable-mini-cart-wrapper">
     19            <?php Orderable_Drawer::mini_cart(); ?>
    2020        </div>
    2121    </div>
  • orderable/tags/1.3.0/inc/modules/layouts/assets/admin/css/layouts.css

    r2637423 r2709284  
    8787}
    8888
    89 .orderable-main--sections-side_tabs {
    90   display: -webkit-box;
    91   display: -ms-flexbox;
    92   display: flex;
    93 }
    94 
    95 .orderable-main--sections-side_tabs .orderable-main__tabs {
    96   margin: 0 24px 0 0 !important;
    97 }
    98 
    99 .orderable-main--sections-side_tabs .orderable-main__sections {
    100   -webkit-box-flex: 1;
    101       -ms-flex: 1;
    102           flex: 1;
     89@media screen and (min-width: 620px) {
     90  .orderable-main--sections-side_tabs {
     91    display: -webkit-box;
     92    display: -ms-flexbox;
     93    display: flex;
     94  }
     95  .orderable-main--sections-side_tabs .orderable-main__tabs {
     96    margin: 0 24px 0 0 !important;
     97  }
     98  .orderable-main--sections-side_tabs .orderable-main__sections {
     99    -webkit-box-flex: 1;
     100        -ms-flex: 1;
     101            flex: 1;
     102  }
    103103}
    104104
     
    310310
    311311.orderable-product__options {
    312   margin: 12px 0 24px;
     312  margin: 0 0 24px;
    313313  padding: 0;
    314314  border-radius: 6px;
    315 }
    316 
    317 .orderable-product__options:last-child {
    318   margin-bottom: 0;
    319315}
    320316
     
    328324
    329325.orderable-product__options th {
    330   font-size: 18px;
    331326  line-height: 22px;
    332327}
     
    374369.orderable-product__actions-button {
    375370  margin: 0 0 0 auto;
     371}
     372
     373.orderable-product__tabs {
     374  margin: 24px 0;
     375}
     376
     377.orderable-product__tabs-section {
     378  display: none;
     379}
     380
     381.orderable-product__tabs-section:first-child {
     382  display: block;
     383}
     384
     385.orderable-product__tabs-section *:last-child {
     386  margin-bottom: 0;
    376387}
    377388
     
    389400}
    390401
     402.orderable-product--options .orderable-product__hero {
     403  margin: -24px -24px 0;
     404}
     405
     406.orderable-product--options .orderable-product__title {
     407  text-align: left;
     408  margin: 24px 0 !important;
     409}
     410
    391411.orderable-product--options .orderable-product__actions {
    392412  margin-top: auto;
     
    398418}
    399419
    400 .orderable-product--clickable {
     420.orderable-product--add-to-cart,
     421.orderable-product--product-options,
     422.orderable-product--view-product {
    401423  cursor: pointer;
    402424}
    403425
    404 .orderable-product__hero--title {
     426.orderable-product--image-cropped .orderable-product__hero {
    405427  overflow: hidden;
    406   padding: 24px 24px 0;
    407   margin: -24px -24px 24px;
     428  padding: 0;
    408429  text-align: center;
    409430  -webkit-box-flex: 0;
    410431      -ms-flex: 0 0 auto;
    411432          flex: 0 0 auto;
    412 }
    413 
    414 .orderable-product__hero--title:before {
    415   background: #fff;
    416   top: auto;
    417   left: -10px;
    418   right: -10px;
    419   bottom: -10px;
    420   position: absolute;
    421   height: 24px;
    422   z-index: 5;
    423   -webkit-transform: rotate(-1.5deg);
    424           transform: rotate(-1.5deg);
    425 }
    426 
    427 .orderable-product__hero--title:after {
    428   content: "";
    429   position: absolute;
    430   top: 0;
    431   left: 0;
    432   right: 0;
    433   bottom: 0;
    434   background: -webkit-gradient(linear, left bottom, left top, from(rgba(24, 33, 37, 0.8)), to(rgba(24, 33, 37, 0.3)));
    435   background: linear-gradient(0deg, rgba(24, 33, 37, 0.8), rgba(24, 33, 37, 0.3));
    436   z-index: 1;
    437   mix-blend-mode: multiply;
    438 }
    439 
    440 .orderable-product__hero--title .orderable-product__image {
     433  height: 72px;
     434}
     435
     436.orderable-product--image-cropped .orderable-product__image {
    441437  -o-object-fit: cover;
    442438     object-fit: cover;
     
    447443  left: 0;
    448444  top: 0;
    449 }
    450 
    451 .orderable-product__hero--title .orderable-product__title {
    452   color: #fff;
    453   position: relative;
    454   z-index: 10;
    455445}
    456446
     
    481471    width: 100%;
    482472    min-width: 60px;
    483     max-width: 80px;
     473    max-width: 95px;
    484474    border-radius: 6px;
    485475    overflow: hidden;
     
    607597}
    608598
     599.orderable-button--icon {
     600  padding: 10px !important;
     601  width: 44px;
     602  height: 44px;
     603  line-height: 24px;
     604  border: none;
     605  background: none !important;
     606}
     607
     608body .orderable-button--icon:hover,
     609body .orderable-button--icon:focus,
     610body .orderable-button--icon:active {
     611  background: none !important;
     612  opacity: 0.6;
     613}
     614
     615.orderable-button--icon svg {
     616  width: 24px;
     617  height: 24px;
     618  border-radius: 12px;
     619  overflow: hidden;
     620  -webkit-transition: opacity 250ms ease-in-out;
     621  transition: opacity 250ms ease-in-out;
     622}
     623
     624.orderable-button--icon.orderable-button--loading:after {
     625  display: none;
     626}
     627
    609628.orderable-tabs {
    610   margin: 0 0 24px !important;
     629  margin: 0 0 24px;
     630  position: relative;
     631}
     632
     633.orderable-tabs__list {
     634  margin: 0 1px 0 0 !important;
    611635  padding: 0 !important;
    612636  list-style: none none outside;
    613 }
    614 
    615 .orderable-main--sections-side_tabs .orderable-tabs {
    616   -webkit-box-flex: 0;
    617       -ms-flex: 0 1 auto;
    618           flex: 0 1 auto;
     637  position: relative;
     638  display: -webkit-box;
     639  display: -ms-flexbox;
     640  display: flex;
     641  -ms-flex-wrap: nowrap;
     642      flex-wrap: nowrap;
     643  -webkit-box-flex: 1;
     644      -ms-flex: 1 1 auto;
     645          flex: 1 1 auto;
     646  overflow-x: auto;
     647  overflow-y: hidden;
     648  overflow: -moz-scrollbars-none;
     649  scrollbar-base-color: transparent;
     650  -webkit-overflow-scrolling: touch;
     651}
     652
     653.orderable-tabs__list::-webkit-scrollbar {
     654  display: none;
     655}
     656
     657@media screen and (min-width: 620px) {
     658  .orderable-main--sections-side_tabs .orderable-tabs__list {
     659    -webkit-box-flex: 0;
     660        -ms-flex: 0 1 auto;
     661            flex: 0 1 auto;
     662    -webkit-box-orient: vertical;
     663    -webkit-box-direction: normal;
     664        -ms-flex-direction: column;
     665            flex-direction: column;
     666    height: auto;
     667  }
    619668}
    620669
    621670.orderable-tabs__item {
    622671  display: inline-block;
    623   margin: 0;
     672  margin: 0 10px 0 0;
    624673  padding: 0;
    625674}
    626675
    627 .orderable-main--sections-side_tabs .orderable-tabs__item {
    628   margin: 0 0 6px;
    629   display: block;
    630 }
    631 
    632 .orderable-main--sections-side_tabs .orderable-tabs__item:last-child {
    633   margin: 0;
     676.orderable-tabs__item:last-child {
     677  margin-right: 0;
     678}
     679
     680@media screen and (min-width: 620px) {
     681  .orderable-main--sections-side_tabs .orderable-tabs__item {
     682    margin: 0 0 12px;
     683    display: block;
     684  }
     685  .orderable-main--sections-side_tabs .orderable-tabs__item:last-child {
     686    margin: 0;
     687  }
    634688}
    635689
     
    640694  white-space: nowrap;
    641695  line-height: 40px;
    642   color: #000;
     696  color: #405763;
    643697  font-weight: 400;
    644698  border-radius: 20px;
    645   -webkit-transition: none;
    646   transition: none;
     699  -webkit-transition: all 150ms ease-out;
     700  transition: all 150ms ease-out;
     701  background: #ecf1f3;
    647702}
    648703
     
    654709
    655710a.orderable-tabs__link:hover, a.orderable-tabs__link:active, a.orderable-tabs__link:focus {
    656   color: #000;
     711  color: #405763;
    657712  text-decoration: none;
    658   background: #ecf1f3;
     713  background: #c7d4db;
    659714}
    660715
     
    666721.orderable--button-style-square a.orderable-tabs__link {
    667722  border-radius: 0;
     723}
     724
     725.orderable-tabs__arrow {
     726  background: #fff;
     727  -webkit-box-shadow: 0 0.4px 1.3px rgba(0, 0, 0, 0.05), 0 1.3px 4.5px rgba(0, 0, 0, 0.06), 0 6px 16px rgba(0, 0, 0, 0.07);
     728          box-shadow: 0 0.4px 1.3px rgba(0, 0, 0, 0.05), 0 1.3px 4.5px rgba(0, 0, 0, 0.06), 0 6px 16px rgba(0, 0, 0, 0.07);
     729  border: none;
     730  width: 40px !important;
     731  height: 40px !important;
     732  padding: 0 !important;
     733  margin: 0 !important;
     734  border-radius: 20px !important;
     735  position: absolute;
     736  top: 0;
     737  right: 0;
     738  text-align: center;
     739  line-height: 40px;
     740  display: none;
     741}
     742
     743.orderable-tabs__arrow:hover, .orderable-tabs__arrow:focus, .orderable-tabs__arrow:active {
     744  background: #fff;
     745  outline: none;
     746}
     747
     748.orderable-tabs__arrow svg {
     749  width: 21px;
     750  height: 24px;
     751  margin: 8px 0;
    668752}
    669753
     
    710794  margin: 0 0 25px;
    711795  padding: 1px 12px;
    712   border-left-color: #bc47f5;
     796  border-left-color: #7031F5;
    713797}
    714798
  • orderable/tags/1.3.0/inc/modules/layouts/assets/admin/css/layouts.min.css

    r2637423 r2709284  
    1 @-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes wobble-hor-bottom{0%,100%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:50% 50%;transform-origin:50% 50%}15%{-webkit-transform:translateX(-10%) rotate(-6deg);transform:translateX(-10%) rotate(-6deg)}30%{-webkit-transform:translateX(5%) rotate(6deg);transform:translateX(5%) rotate(6deg)}45%{-webkit-transform:translateX(-5%) rotate(-3.6deg);transform:translateX(-5%) rotate(-3.6deg)}60%{-webkit-transform:translateX(2%) rotate(2.4deg);transform:translateX(2%) rotate(2.4deg)}75%{-webkit-transform:translateX(-1%) rotate(-1.2deg);transform:translateX(-1%) rotate(-1.2deg)}}@keyframes wobble-hor-bottom{0%,100%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:50% 50%;transform-origin:50% 50%}15%{-webkit-transform:translateX(-10%) rotate(-6deg);transform:translateX(-10%) rotate(-6deg)}30%{-webkit-transform:translateX(5%) rotate(6deg);transform:translateX(5%) rotate(6deg)}45%{-webkit-transform:translateX(-5%) rotate(-3.6deg);transform:translateX(-5%) rotate(-3.6deg)}60%{-webkit-transform:translateX(2%) rotate(2.4deg);transform:translateX(2%) rotate(2.4deg)}75%{-webkit-transform:translateX(-1%) rotate(-1.2deg);transform:translateX(-1%) rotate(-1.2deg)}}.orderable-main__group{margin:0 0 36px}.orderable-main--sections-tabs .orderable-main__group{display:none}.orderable-main--sections-tabs .orderable-main__group:first-of-type{display:block}.orderable-main--sections-side_tabs{display:-webkit-box;display:-ms-flexbox;display:flex}.orderable-main--sections-side_tabs .orderable-main__tabs{margin:0 24px 0 0!important}.orderable-main--sections-side_tabs .orderable-main__sections{-webkit-box-flex:1;-ms-flex:1;flex:1}.orderable-products-list{margin-bottom:12px;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-products-list *{-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-products-list:last-child{margin-bottom:0}@media screen and (min-width:480px){.orderable-products-list .orderable-product{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px}.orderable-products-list .orderable-product__hero{width:200px}.orderable-products-list .orderable-product__image{-o-object-fit:cover;object-fit:cover;width:100%!important;height:100%!important}.orderable-products-list .orderable-product__content-wrap{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column nowrap;flex-flow:column nowrap}}.orderable-products-list .orderable-product__actions{padding:12px 24px 18px;margin-top:auto}.orderable-products-list__item{width:100%;margin:0 0 24px}@media screen and (max-width:480px){.orderable-products-list__item{padding:0 0 24px;border-bottom:1px solid #ecf1f3}.orderable-products-list__item:last-child{border-bottom:none}}@media screen and (min-width:540px){.orderable-products-list--grid{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:-12px;margin-right:-12px}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-products-list__item{margin:0 0 24px;padding:0 12px;width:50%}.orderable-products-list--grid .orderable-product{padding:0 0 88px;display:block;margin:0;-webkit-box-flex:0;-ms-flex:none;flex:none}}@media screen and (min-width:1120px){.orderable-products-list--grid .orderable-products-list__item{width:33.33%}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-product__hero{width:auto}.orderable-products-list--grid .orderable-product__hero img{-o-object-fit:fill;object-fit:fill;width:100%;height:auto}.orderable-products-list--grid .orderable-product__content-wrap{-webkit-box-flex:0;-ms-flex:none;flex:none;display:block}.orderable-products-list--grid .orderable-product__actions{padding:0;margin-top:0;position:absolute;bottom:24px;left:24px;right:24px}}.orderable-product{overflow:hidden;position:relative}.orderable-product__hero{position:relative}.orderable-product__image{border-radius:0;margin:0;display:block;width:100%;height:auto!important;max-width:none!important}.orderable-product__content{padding:18px 24px 12px}.orderable-product__content :last-child{margin-bottom:0}.orderable-product__title{margin:0 0 12px!important}.orderable-product__description{margin:0}.orderable-product__tags{overflow:hidden;margin:0;padding:0;list-style:none}img+.orderable-product__tags{position:absolute;bottom:0;left:0;padding:12px;z-index:20}.orderable-product__tags li{margin:6px 0 0}.orderable-product__options{margin:12px 0 24px;padding:0;border-radius:6px}.orderable-product__actions:last-child,.orderable-product__options:last-child{margin-bottom:0}.orderable-product__options td,.orderable-product__options th{background-color:transparent!important;padding:0 0 12px;text-align:left;display:block;margin:0}.orderable-product__options th{font-size:18px;line-height:22px}.orderable-product__options td{padding-bottom:24px}.orderable-product__options tr{padding:0;margin:0}.orderable-product__options tr:last-child td{padding-bottom:0}.orderable-product__actions{overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.orderable-product__actions-price{margin:0 4px 0 0}.orderable-product__actions-price .amount{white-space:nowrap;margin:0 6px 0 0;font-weight:700;color:#000;font-size:20px;line-height:24px}.orderable-product__actions-button{margin:0 0 0 auto}.orderable-product--options{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:visible;height:100%}.orderable-product--options .orderable-product__actions{margin-top:auto;padding-top:24px;border-top:1px solid #E6ECEF;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.orderable-product--clickable{cursor:pointer}.orderable-product__hero--title{overflow:hidden;padding:24px 24px 0;margin:-24px -24px 24px;text-align:center;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.orderable-product__hero--title:before{background:#fff;top:auto;left:-10px;right:-10px;bottom:-10px;position:absolute;height:24px;z-index:5;-webkit-transform:rotate(-1.5deg);transform:rotate(-1.5deg)}.orderable-product__hero--title:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:-webkit-gradient(linear,left bottom,left top,from(rgba(24,33,37,.8)),to(rgba(24,33,37,.3)));background:linear-gradient(0deg,rgba(24,33,37,.8),rgba(24,33,37,.3));z-index:1;mix-blend-mode:multiply}.orderable-product__hero--title .orderable-product__image{-o-object-fit:cover;object-fit:cover;position:absolute;z-index:-1;width:100%;height:100%!important;left:0;top:0}.orderable-product__hero--title .orderable-product__title{color:#fff;position:relative;z-index:10}.orderable-products-list__item .orderable-product{height:100%;width:100%;-webkit-box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);border-radius:6px}@media screen and (max-width:480px){.orderable-products-list__item .orderable-product{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.orderable-products-list__item .orderable-product__hero{width:100%;min-width:60px;max-width:80px;border-radius:6px;overflow:hidden}.orderable-products-list__item .orderable-product__content-wrap{-webkit-box-flex:1;-ms-flex:1;flex:1}.orderable-products-list__item .orderable-product__content{padding:0 0 0 24px}.orderable-products-list__item .orderable-product__actions{padding:6px 0 0 24px}.orderable-products-list__item .orderable-product__title{margin:0 0 6px!important}}.orderable-button{display:inline-block;border:2px solid #000;background:0 0;padding:0 24px!important;height:40px;line-height:36px;white-space:nowrap;border-radius:20px;color:#000;text-transform:none;margin:0;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out;-webkit-box-shadow:none;box-shadow:none;cursor:pointer}.orderable-button:active,.orderable-button:focus{outline:0}.orderable-button--active,.orderable-button--hover,.orderable-button:active,.orderable-button:focus,.orderable-button:hover{border-color:#000;background:#000;color:#fff;text-decoration:none;-webkit-box-shadow:none;box-shadow:none}.orderable-button--filled,.orderable-button--filled--hover,.orderable-button--filled:hover{background:#000!important;color:#fff}.orderable-button--full{width:100%}.orderable-button--loading{position:relative;padding-right:48px!important}.orderable-button--loading:after{content:'';display:block;width:16px;height:16px;position:absolute;top:10px;right:22px;background:0 0;-webkit-box-sizing:border-box;box-sizing:border-box;border-top:2px solid #000;border-left:2px solid #000;border-right:2px solid transparent;border-bottom:2px solid transparent;border-radius:100%;-webkit-animation:spin .6s ease-out infinite;animation:spin .6s ease-out infinite}.orderable-button--filled .orderable-button--loading:after,.orderable-button--loading.orderable-button--hover:after,.orderable-button--loading:active:after,.orderable-button--loading:focus:after,.orderable-button--loading:hover:after{border-top-color:#fff;border-left-color:#fff}.orderable-button.orderable-button--out-of-stock,.orderable-button.orderable-button--out-of-stock.orderable-button--hover,.orderable-button.orderable-button--out-of-stock:active,.orderable-button.orderable-button--out-of-stock:focus,.orderable-button.orderable-button--out-of-stock:hover{cursor:not-allowed;border-color:#c7d4db;color:#a8bdc7;background:0 0!important}.orderable--button-style-square .orderable-button{border-radius:0}.orderable-tabs{margin:0 0 24px!important;padding:0!important;list-style:none}.orderable-main--sections-side_tabs .orderable-tabs{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.orderable-tabs__item{display:inline-block;margin:0;padding:0}.orderable-main--sections-side_tabs .orderable-tabs__item{margin:0 0 6px;display:block}.orderable-main--sections-side_tabs .orderable-tabs__item:last-child{margin:0}a.orderable-tabs__link{text-decoration:none!important;display:inline-block;padding:0 24px;white-space:nowrap;line-height:40px;color:#000;font-weight:400;border-radius:20px;-webkit-transition:none;transition:none}a.orderable-tabs__link:active,a.orderable-tabs__link:focus{outline:0;-webkit-box-shadow:none;box-shadow:none}a.orderable-tabs__link:active,a.orderable-tabs__link:focus,a.orderable-tabs__link:hover{color:#000;text-decoration:none;background:#ecf1f3}.orderable-tabs__item--active a.orderable-tabs__link{background:#000;color:#fff}.orderable--button-style-square a.orderable-tabs__link{border-radius:0}#orderable-layout-settings-metabox{z-index:1000}#orderable-layout-preview-metabox .inside{padding:24px 24px 0;margin:0}#orderable-layout-preview-metabox .inside h2.orderable-category-heading__title,#orderable-layout-preview-metabox .inside h3{margin:0 0 24px}#orderable-layout-preview-metabox .inside h2{padding:0;font-weight:600;font-size:20px;line-height:1.2}#orderable-layout-preview-metabox .orderable-category-heading__description{margin:-12px 0 24px}#orderable-layout-preview-metabox .orderable-main{max-width:1000px;margin:0}#orderable-layout-preview-metabox .orderable-main--sections-side_tabs .orderable-main__tabs{margin:0 24px 24px 0!important}.orderable-layout-preview-notice{background:#fff;border:1px solid #c3c4c7;border-left-width:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);margin:0 0 25px;padding:1px 12px;border-left-color:#bc47f5}.orderable-layout-preview-notice p{margin:.5em 0;padding:2px}
     1@-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes wobble-hor-bottom{0%,100%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:50% 50%;transform-origin:50% 50%}15%{-webkit-transform:translateX(-10%) rotate(-6deg);transform:translateX(-10%) rotate(-6deg)}30%{-webkit-transform:translateX(5%) rotate(6deg);transform:translateX(5%) rotate(6deg)}45%{-webkit-transform:translateX(-5%) rotate(-3.6deg);transform:translateX(-5%) rotate(-3.6deg)}60%{-webkit-transform:translateX(2%) rotate(2.4deg);transform:translateX(2%) rotate(2.4deg)}75%{-webkit-transform:translateX(-1%) rotate(-1.2deg);transform:translateX(-1%) rotate(-1.2deg)}}@keyframes wobble-hor-bottom{0%,100%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:50% 50%;transform-origin:50% 50%}15%{-webkit-transform:translateX(-10%) rotate(-6deg);transform:translateX(-10%) rotate(-6deg)}30%{-webkit-transform:translateX(5%) rotate(6deg);transform:translateX(5%) rotate(6deg)}45%{-webkit-transform:translateX(-5%) rotate(-3.6deg);transform:translateX(-5%) rotate(-3.6deg)}60%{-webkit-transform:translateX(2%) rotate(2.4deg);transform:translateX(2%) rotate(2.4deg)}75%{-webkit-transform:translateX(-1%) rotate(-1.2deg);transform:translateX(-1%) rotate(-1.2deg)}}.orderable-main__group{margin:0 0 36px}.orderable-main--sections-tabs .orderable-main__group{display:none}.orderable-main--sections-tabs .orderable-main__group:first-of-type{display:block}@media screen and (min-width:620px){.orderable-main--sections-side_tabs{display:-webkit-box;display:-ms-flexbox;display:flex}.orderable-main--sections-side_tabs .orderable-main__tabs{margin:0 24px 0 0!important}.orderable-main--sections-side_tabs .orderable-main__sections{-webkit-box-flex:1;-ms-flex:1;flex:1}}.orderable-products-list{margin-bottom:12px;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-products-list *{-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-products-list:last-child{margin-bottom:0}@media screen and (min-width:480px){.orderable-products-list .orderable-product{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px}.orderable-products-list .orderable-product__hero{width:200px}.orderable-products-list .orderable-product__image{-o-object-fit:cover;object-fit:cover;width:100%!important;height:100%!important}.orderable-products-list .orderable-product__content-wrap{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column nowrap;flex-flow:column nowrap}}.orderable-products-list .orderable-product__actions{padding:12px 24px 18px;margin-top:auto}.orderable-products-list__item{width:100%;margin:0 0 24px}@media screen and (max-width:480px){.orderable-products-list__item{padding:0 0 24px;border-bottom:1px solid #ecf1f3}.orderable-products-list__item:last-child{border-bottom:none}}@media screen and (min-width:540px){.orderable-products-list--grid{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:-12px;margin-right:-12px}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-products-list__item{margin:0 0 24px;padding:0 12px;width:50%}.orderable-products-list--grid .orderable-product{padding:0 0 88px;display:block;margin:0;-webkit-box-flex:0;-ms-flex:none;flex:none}}@media screen and (min-width:1120px){.orderable-products-list--grid .orderable-products-list__item{width:33.33%}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-product__hero{width:auto}.orderable-products-list--grid .orderable-product__hero img{-o-object-fit:fill;object-fit:fill;width:100%;height:auto}.orderable-products-list--grid .orderable-product__content-wrap{-webkit-box-flex:0;-ms-flex:none;flex:none;display:block}.orderable-products-list--grid .orderable-product__actions{padding:0;margin-top:0;position:absolute;bottom:24px;left:24px;right:24px}}.orderable-product{overflow:hidden;position:relative}.orderable-product__hero{position:relative}.orderable-product__image{border-radius:0;margin:0;display:block;width:100%;height:auto!important;max-width:none!important}.orderable-product__content{padding:18px 24px 12px}.orderable-product__content :last-child{margin-bottom:0}.orderable-product__title{margin:0 0 12px!important}.orderable-product__description{margin:0}.orderable-product__tags{overflow:hidden;margin:0;padding:0;list-style:none}img+.orderable-product__tags{position:absolute;bottom:0;left:0;padding:12px;z-index:20}.orderable-product__tags li{margin:6px 0 0}.orderable-product__options{margin:0 0 24px;padding:0;border-radius:6px}.orderable-product__options td,.orderable-product__options th{background-color:transparent!important;padding:0 0 12px;text-align:left;display:block;margin:0}.orderable-product__options th{line-height:22px}.orderable-product__options td{padding-bottom:24px}.orderable-product__options tr{padding:0;margin:0}.orderable-product__options tr:last-child td{padding-bottom:0}.orderable-product__actions{overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.orderable-product__actions:last-child{margin-bottom:0}.orderable-product__actions-price{margin:0 4px 0 0}.orderable-product__actions-price .amount{white-space:nowrap;margin:0 6px 0 0;font-weight:700;color:#000;font-size:20px;line-height:24px}.orderable-product__actions-button{margin:0 0 0 auto}.orderable-product__tabs{margin:24px 0}.orderable-product__tabs-section{display:none}.orderable-product__tabs-section:first-child{display:block}.orderable-product__tabs-section :last-child{margin-bottom:0}.orderable-product--options{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:visible;height:100%}.orderable-product--options .orderable-product__hero{margin:-24px -24px 0}.orderable-product--options .orderable-product__title{text-align:left;margin:24px 0!important}.orderable-product--options .orderable-product__actions{margin-top:auto;padding-top:24px;border-top:1px solid #E6ECEF;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.orderable-product--add-to-cart,.orderable-product--product-options,.orderable-product--view-product{cursor:pointer}.orderable-product--image-cropped .orderable-product__hero{overflow:hidden;padding:0;text-align:center;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;height:72px}.orderable-product--image-cropped .orderable-product__image{-o-object-fit:cover;object-fit:cover;position:absolute;z-index:-1;width:100%;height:100%!important;left:0;top:0}.orderable-products-list__item .orderable-product{height:100%;width:100%;-webkit-box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);border-radius:6px}@media screen and (max-width:480px){.orderable-products-list__item .orderable-product{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.orderable-products-list__item .orderable-product__hero{width:100%;min-width:60px;max-width:95px;border-radius:6px;overflow:hidden}.orderable-products-list__item .orderable-product__content-wrap{-webkit-box-flex:1;-ms-flex:1;flex:1}.orderable-products-list__item .orderable-product__content{padding:0 0 0 24px}.orderable-products-list__item .orderable-product__actions{padding:6px 0 0 24px}.orderable-products-list__item .orderable-product__title{margin:0 0 6px!important}}.orderable-button{display:inline-block;border:2px solid #000;background:0 0;padding:0 24px!important;height:40px;line-height:36px;white-space:nowrap;border-radius:20px;color:#000;text-transform:none;margin:0;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out;-webkit-box-shadow:none;box-shadow:none;cursor:pointer}.orderable-button:active,.orderable-button:focus{outline:0}.orderable-button--active,.orderable-button--hover,.orderable-button:active,.orderable-button:focus,.orderable-button:hover{border-color:#000;background:#000;color:#fff;text-decoration:none;-webkit-box-shadow:none;box-shadow:none}.orderable-button--filled,.orderable-button--filled--hover,.orderable-button--filled:hover{background:#000!important;color:#fff}.orderable-button--full{width:100%}.orderable-button--loading{position:relative;padding-right:48px!important}.orderable-button--loading:after{content:'';display:block;width:16px;height:16px;position:absolute;top:10px;right:22px;background:0 0;-webkit-box-sizing:border-box;box-sizing:border-box;border-top:2px solid #000;border-left:2px solid #000;border-right:2px solid transparent;border-bottom:2px solid transparent;border-radius:100%;-webkit-animation:spin .6s ease-out infinite;animation:spin .6s ease-out infinite}.orderable-button--filled .orderable-button--loading:after,.orderable-button--loading.orderable-button--hover:after,.orderable-button--loading:active:after,.orderable-button--loading:focus:after,.orderable-button--loading:hover:after{border-top-color:#fff;border-left-color:#fff}.orderable-button.orderable-button--out-of-stock,.orderable-button.orderable-button--out-of-stock.orderable-button--hover,.orderable-button.orderable-button--out-of-stock:active,.orderable-button.orderable-button--out-of-stock:focus,.orderable-button.orderable-button--out-of-stock:hover{cursor:not-allowed;border-color:#c7d4db;color:#a8bdc7;background:0 0!important}.orderable--button-style-square .orderable-button{border-radius:0}.orderable-button--icon{padding:10px!important;width:44px;height:44px;line-height:24px;border:none;background:0 0!important}body .orderable-button--icon:active,body .orderable-button--icon:focus,body .orderable-button--icon:hover{background:0 0!important;opacity:.6}.orderable-button--icon svg{width:24px;height:24px;border-radius:12px;overflow:hidden;-webkit-transition:opacity 250ms ease-in-out;transition:opacity 250ms ease-in-out}.orderable-button--icon.orderable-button--loading:after{display:none}.orderable-tabs{margin:0 0 24px;position:relative}.orderable-tabs__list{margin:0 1px 0 0!important;padding:0!important;list-style:none;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;overflow-x:auto;overflow-y:hidden;overflow:-moz-scrollbars-none;scrollbar-base-color:transparent;-webkit-overflow-scrolling:touch}.orderable-tabs__list::-webkit-scrollbar{display:none}.orderable-tabs__item{display:inline-block;margin:0 10px 0 0;padding:0}.orderable-tabs__item:last-child{margin-right:0}@media screen and (min-width:620px){.orderable-main--sections-side_tabs .orderable-tabs__list{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:auto}.orderable-main--sections-side_tabs .orderable-tabs__item{margin:0 0 12px;display:block}.orderable-main--sections-side_tabs .orderable-tabs__item:last-child{margin:0}}a.orderable-tabs__link{text-decoration:none!important;display:inline-block;padding:0 24px;white-space:nowrap;line-height:40px;color:#405763;font-weight:400;border-radius:20px;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out;background:#ecf1f3}a.orderable-tabs__link:active,a.orderable-tabs__link:focus{outline:0;-webkit-box-shadow:none;box-shadow:none}a.orderable-tabs__link:active,a.orderable-tabs__link:focus,a.orderable-tabs__link:hover{color:#405763;text-decoration:none;background:#c7d4db}.orderable-tabs__item--active a.orderable-tabs__link{background:#000;color:#fff}.orderable--button-style-square a.orderable-tabs__link{border-radius:0}.orderable-tabs__arrow{background:#fff;-webkit-box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);border:none;width:40px!important;height:40px!important;padding:0!important;margin:0!important;border-radius:20px!important;position:absolute;top:0;right:0;text-align:center;line-height:40px;display:none}.orderable-tabs__arrow:active,.orderable-tabs__arrow:focus,.orderable-tabs__arrow:hover{background:#fff;outline:0}.orderable-tabs__arrow svg{width:21px;height:24px;margin:8px 0}#orderable-layout-settings-metabox{z-index:1000}#orderable-layout-preview-metabox .inside{padding:24px 24px 0;margin:0}#orderable-layout-preview-metabox .inside h2.orderable-category-heading__title,#orderable-layout-preview-metabox .inside h3{margin:0 0 24px}#orderable-layout-preview-metabox .inside h2{padding:0;font-weight:600;font-size:20px;line-height:1.2}#orderable-layout-preview-metabox .orderable-category-heading__description{margin:-12px 0 24px}#orderable-layout-preview-metabox .orderable-main{max-width:1000px;margin:0}#orderable-layout-preview-metabox .orderable-main--sections-side_tabs .orderable-main__tabs{margin:0 24px 24px 0!important}.orderable-layout-preview-notice{background:#fff;border:1px solid #c3c4c7;border-left-width:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);margin:0 0 25px;padding:1px 12px;border-left-color:#7031F5}.orderable-layout-preview-notice p{margin:.5em 0;padding:2px}
  • orderable/tags/1.3.0/inc/modules/layouts/assets/admin/js/main.min.js

    r2637423 r2709284  
    1 !function(n,l){"use strict";var c={on_ready:function(){c.builder.init()},helpers:{get_field_type:function(e){return"SELECT"===e.get(0).tagName?"select":e.attr("type")},strip_prefix:function(e){return e.replace("orderable_","")}},builder:{init:function(){c.builder.watch()},watch:function(){n(l.body).on("change","#orderable-layout-settings-metabox input, #orderable-layout-settings-metabox select",function(){var e=n(this).closest("#orderable-layout-settings-metabox"),a={},o=!0;e.find(".form-field > input, .form-field > select").each(function(e,t){var r=n(t),i=c.helpers.get_field_type(r),t="";"string"==typeof(t="checkbox"===i?n(this).is(":checked"):("select"===i&&r.attr("multiple"),r.val()))&&0===t.indexOf("pro_")&&(o=!1,n(l.body).trigger("orderable-pro-modal")),a[c.helpers.strip_prefix(this.name.replace("[]",""))]=t}),o&&c.builder.reload_preview(a)})},reload_preview:function(e){n.post(ajaxurl,{action:"orderable_preview",data:e},function(e){e.success&&n("#orderable-layout-preview-metabox .orderable-main-wrap").html(e.data.shortcode)})}}};n(l).ready(c.on_ready)}(jQuery,document);
     1!function(n,l){"use strict";var c={on_ready:function(){c.builder.init()},helpers:{get_field_type:function(e){return"SELECT"===e.get(0).tagName?"select":e.attr("type")},strip_prefix:function(e){return e.replace("orderable_","")}},builder:{init:function(){c.builder.watch()},watch:function(){n(l.body).on("change","#orderable-layout-settings-metabox input, #orderable-layout-settings-metabox select",function(){var e=n(this).closest("#orderable-layout-settings-metabox"),a={},o=!0;e.find(".form-field > input, .form-field > select").each(function(e,t){var t=n(t),r=c.helpers.get_field_type(t),i="";"string"==typeof(i="checkbox"===r?n(this).is(":checked"):("select"===r&&t.attr("multiple"),t.val()))&&0===i.indexOf("pro_")&&(o=!1,n(l.body).trigger("orderable-pro-modal")),a[c.helpers.strip_prefix(this.name.replace("[]",""))]=i}),o&&c.builder.reload_preview(a)})},reload_preview:function(e){n.post(ajaxurl,{action:"orderable_preview",data:e},function(e){e.success&&n("#orderable-layout-preview-metabox .orderable-main-wrap").html(e.data.shortcode)})}}};n(l).ready(c.on_ready)}(jQuery,document);
  • orderable/tags/1.3.0/inc/modules/layouts/class-layouts.php

    r2637423 r2709284  
    9696        );
    9797
    98         $labels['all_items'] = __( 'Layout Builder', 'orderable' );
     98        $labels['all_items'] = __( 'Product Layouts', 'orderable' );
    9999
    100100        $args = array(
     
    183183
    184184        $layout_settings = apply_filters( 'orderable_layout_settings_save_data', array(
    185             'categories'     => (array) filter_input( INPUT_POST, 'orderable_categories', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY ),
    186             'layout'         => filter_input( INPUT_POST, 'orderable_layout', FILTER_SANITIZE_STRING ),
    187             'images'         => 'yes' === filter_input( INPUT_POST, 'orderable_images', FILTER_SANITIZE_STRING ),
    188             'card_clickable' => 'yes' === filter_input( INPUT_POST, 'orderable_card_clickable', FILTER_SANITIZE_STRING ),
     185            'categories' => (array) filter_input( INPUT_POST, 'orderable_categories', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY ),
     186            'layout'     => filter_input( INPUT_POST, 'orderable_layout', FILTER_SANITIZE_STRING ),
     187            'images'     => 'yes' === filter_input( INPUT_POST, 'orderable_images', FILTER_SANITIZE_STRING ),
     188            'card_click' => filter_input( INPUT_POST, 'orderable_card_click', FILTER_SANITIZE_STRING ),
    189189        ) );
    190190
     
    236236        <div class="orderable-main-wrap">
    237237            <?php
    238                 echo do_shortcode( sprintf( '[orderable id="%d"]', $post->ID ) );
     238            echo do_shortcode( sprintf( '[orderable id="%d"]', $post->ID ) );
    239239            ?>
    240240        </div>
     
    271271        $defaults = self::get_layout_defaults();
    272272
    273         $args                   = wp_parse_args( $args, $defaults );
    274         $args['images']         = (boolean) json_decode( strtolower( $args['images'] ) );
    275         $args['card_clickable'] = (boolean) json_decode( strtolower( $args['card_clickable'] ) );
     273        $args           = wp_parse_args( $args, $defaults );
     274        $args['images'] = (boolean) json_decode( strtolower( $args['images'] ) );
    276275
    277276        if ( ! is_null( $args['id'] ) ) {
     
    308307     * @param array $categories Categories.
    309308     * @param array $args       Layout Settings.
     309     *
    310310     * @return array
    311311     */
     
    314314         * Exclude Sections for Unique Categories.
    315315         *
    316          * @param array $exclude_sections  The Excluded sections.
    317          * @param array $categories        The Unfiltered Categories.
    318          * @param array $args              Layout Settings.
     316         * @param array $exclude_sections The Excluded sections.
     317         * @param array $categories       The Unfiltered Categories.
     318         * @param array $args             Layout Settings.
    319319         *
    320320         * @return array
     
    322322        $exclude_sections = apply_filters( 'orderable_exclude_sections_for_unique_categories', array( 'side_tabs', 'top_tabs' ), $categories, $args );
    323323
    324         if ( in_array( $args['sections'], $exclude_sections ) ) {
     324        if ( isset( $args['sections'] ) && in_array( $args['sections'], $exclude_sections, true ) ) {
    325325            $unique_categories = $categories;
    326326        } else {
     
    404404     */
    405405    public static function get_layout_defaults( $layout_id = null ) {
    406         return apply_filters( 'orderable_layout_defaults', array(
    407             'id'             => $layout_id,
    408             'categories'     => array(),
    409             'layout'         => 'grid',
    410             'images'         => true,
    411             'card_clickable' => false,
    412         ), $layout_id );
     406        return apply_filters(
     407            'orderable_layout_defaults',
     408            array(
     409                'id'         => $layout_id,
     410                'categories' => array(),
     411                'layout'     => 'grid',
     412                'images'     => true,
     413                'card_click' => '',
     414            ),
     415            $layout_id
     416        );
    413417    }
    414418
     
    486490
    487491        $notices[] = array(
    488             'name' => 'layout_builder',
    489             'title' => __( 'What is the Orderable Layout Builder?', 'orderable' ),
     492            'name'        => 'layout_builder',
     493            'title'       => __( 'What are Product Layouts?', 'orderable' ),
    490494            'description' => __( 'This is where you can create product layouts and customize their settings. Save your layouts here and reuse them later using the block editor, shortcode (great for page builders), or PHP snippet.', 'orderable' ),
    491495        );
     
    503507    public static function get_product_card_classes( $args = array() ) {
    504508        $class = array(
    505             'orderable-product'
     509            'orderable-product',
    506510        );
    507511
     
    510514        }
    511515
    512         if ( ! empty( $args['card_clickable'] ) ) {
    513             $class[] = 'orderable-product--clickable';
     516        if ( ! empty( $args['card_click'] ) ) {
     517            $class[] = 'orderable-product--' . $args['card_click'];
    514518        }
    515519
  • orderable/tags/1.3.0/inc/modules/layouts/templates/admin/layout-settings-metabox.php

    r2575142 r2709284  
    9292                    <label for="clickable_card"><?php _e( 'Clickable Card', 'orderable' ); ?></label>
    9393                </h3>
    94                 <p><?php _e( 'When enabled, the whole product card is clickable, instead of just the button.', 'orderable' ); ?></p>
     94                <p><?php _e( 'Choose what happens when you click the product card.', 'orderable' ); ?></p>
    9595            </div>
    9696            <div class="orderable-fields-row__body-row-right">
    9797                <?php
    98                 // Card Clickable.
    99                 woocommerce_wp_checkbox(
     98                // Layout.
     99                woocommerce_wp_select(
    100100                    array(
    101                         'id'    => 'orderable_card_clickable',
    102                         'label' => '',
    103                         'value' => wc_bool_to_string( $layout_settings['card_clickable'] ),
     101                        'id'      => 'orderable_card_click',
     102                        'label'   => '',
     103                        'options' => array(
     104                            ''             => __( 'Nothing', 'orderable' ),
     105                            'add-to-cart'  => __( 'Add to Cart', 'orderable' ),
     106                            'view-product' => __( 'Quick View Product', 'orderable' ),
     107                        ),
     108                        'value'   => esc_attr( $layout_settings['card_click'] ),
    104109                    )
    105110                );
  • orderable/tags/1.3.0/inc/modules/layouts/templates/product.php

    r2575142 r2709284  
    1414$class = Orderable_Layouts::get_product_card_classes( $args ); ?>
    1515
    16 <div class="<?php echo esc_attr( implode( ' ', $class ) ); ?>">
     16<div class="<?php echo esc_attr( implode( ' ', $class ) ); ?>"
     17     <?php if ( ! empty( $args['card_click'] ) ) { ?>
     18     data-orderable-trigger="<?php echo esc_attr( $args['card_click'] ); ?>"
     19     data-orderable-product-id="<?php echo esc_attr( $product->is_type( 'variation' ) ? $product->get_parent_id() : $product->get_id() ); ?>"
     20     data-orderable-product-type="<?php echo esc_attr( $product->get_type() ); ?>"
     21     data-orderable-variation-id="<?php echo esc_attr( $product->is_type( 'variation' ) ? $product->get_id() : 0 ); ?>"
     22     data-orderable-variation-attributes=""
     23     <?php } ?>
     24>
    1725    <?php include ORDERABLE_TEMPLATES_PATH . 'product/hero.php'; ?>
    1826    <div class="orderable-product__content-wrap">
  • orderable/tags/1.3.0/inc/modules/live-view/class-live-view.php

    r2604252 r2709284  
    2424        add_action( 'admin_menu', array( __CLASS__, 'add_settings_page' ) );
    2525        add_action( 'init', array( __CLASS__, 'create_order_manager_role' ) );
     26        add_action( 'current_screen', array( __CLASS__, 'restrict_order_manager_role_access' ) );
    2627    }
    2728
     
    119120     */
    120121    public static function get_last_order_id() {
    121         $orders = wc_get_orders( array(
    122             'limit' => 1,
    123         ) );
     122        $orders = wc_get_orders(
     123            array(
     124                'limit' => 1,
     125            )
     126        );
    124127
    125128        if ( empty( $orders ) ) {
     
    186189        if ( ! self::is_live_view() ) {
    187190            return;
    188         } ?>
     191        }
     192        ?>
    189193        <input type="hidden" name="orderable_live_view" value="1" />
    190194        <?php
     
    195199     */
    196200    public static function add_settings_page() {
    197         add_submenu_page( 'orderable', __( 'Live Order View', 'orderable' ),  __( 'Live Order View', 'orderable' ), 'manage_shop_order_terms', 'edit.php?post_type=shop_order&orderable_live_view', '', 1 );
     201        add_submenu_page( 'orderable', __( 'Live Order View', 'orderable' ), __( 'Live Order View', 'orderable' ), 'manage_shop_order_terms', 'edit.php?post_type=shop_order&orderable_live_view', '', 1 );
    198202    }
    199203
     
    202206     */
    203207    public static function create_order_manager_role() {
    204         // Capabilities for order manager role. 
     208        // Capabilities for order manager role.
    205209        $capabilities = array(
     210            'edit_posts'                   => true,
    206211            'view_admin_dashboard'         => true,
    207212            'read'                         => true,
     
    225230        );
    226231
    227         if ( ! get_role('order_manager') ) {
    228             add_role( __('order_manager', 'orderable'), __('Order Manager', 'orderable'), $capabilities );
     232        $role         = get_role( 'order_manager' );
     233        $removed_role = false;
     234
     235        // Ensure that we remove the legacy role that does not
     236        // include the new `edit_posts` capability.
     237        if ( $role && ! $role->has_cap( 'edit_posts' ) ) {
     238            remove_role( 'order_manager' );
     239            $removed_role = true;
     240        }
     241
     242        if ( ! $role || $removed_role ) {
     243            add_role( __( 'order_manager', 'orderable' ), __( 'Order Manager', 'orderable' ), $capabilities );
     244        }
     245    }
     246
     247    /**
     248     * Restrict access to parts of the admin dashboard that
     249     * the `edit_posts` capability makes available.
     250     *
     251     * @return void
     252     */
     253    public static function restrict_order_manager_role_access() {
     254        global $pagenow, $current_screen;
     255
     256        $userdata = get_userdata( get_current_user_id() );
     257
     258        if ( ! in_array( 'order_manager', $userdata->roles, true ) ) {
     259            return;
     260        }
     261
     262        // Remove access to menu pages made visible by the `edit_posts` cap.
     263        remove_menu_page( 'edit.php' );
     264        remove_menu_page( 'edit-comments.php' );
     265
     266        // Redirect back to the list of orders if the user tries to directly
     267        // access Add New, All Posts or Comments menu pages.
     268        if (
     269            ( 'post-new.php' === $pagenow && 'shop_order' !== $current_screen->id ) ||
     270            'edit-post' === $current_screen->id ||
     271            'edit-comments' === $current_screen->id
     272            ) {
     273            wp_safe_redirect( admin_url( '/edit.php?post_type=shop_order' ) );
     274            exit;
    229275        }
    230276    }
  • orderable/tags/1.3.0/inc/modules/timed-products/class-timed-products.php

    r2666071 r2709284  
    4040     */
    4141    public static function timed_products_page() {
    42         ?>
    43         <div class="wrap">
    44             <h1 class="wp-heading-inline"><?php _e( 'Timed Products', 'orderable' ); ?></h1>
    45             <div>
    46                 <?php echo Orderable_Helpers::get_pro_button(); ?>
    47             </div>
    48         </div>
    49         <?php
     42        Orderable_Settings::upgrade_page_content( 'timed-products' );
    5043    }
    5144}
  • orderable/tags/1.3.0/inc/modules/timings/class-timings-order.php

    r2549156 r2709284  
    4040        wp_enqueue_script( 'daterangepicker', ORDERABLE_ASSETS_URL . 'vendor/daterangepicker/daterangepicker.js', array( 'jquery', 'momentjs' ), ORDERABLE_VERSION, true );
    4141        wp_enqueue_style( 'daterangepicker', ORDERABLE_ASSETS_URL . 'vendor/daterangepicker/daterangepicker.css', array(), ORDERABLE_VERSION );
     42
     43        wp_localize_script(
     44            'daterangepicker',
     45            'orderable_timings_daterangepicker',
     46            array(
     47                'today'        => esc_html__( 'Today', 'orderable' ),
     48                'tomorrow'     => esc_html__( 'Tomorrow', 'orderable' ),
     49                'next_7_days'  => esc_html__( 'Next 7 Days', 'orderable' ),
     50                'next_30_days' => esc_html__( 'Next 30 Days', 'orderable' ),
     51                'custom_range' => esc_html__( 'Custom Range', 'orderable' ),
     52                'clear'        => esc_html__( 'Clear', 'orderable' ),
     53                'apply'        => esc_html__( 'Apply', 'orderable' ),
     54            )
     55        );
    4256    }
    4357
     
    6478                 */
    6579                init: function() {
     80                    var ranges = {};
     81                    ranges[orderable_timings_daterangepicker.today] = [ moment(), moment() ];
     82                    ranges[orderable_timings_daterangepicker.tomorrow] = [ moment().add( 1, 'days' ), moment().add( 1, 'days' ) ];
     83                    ranges[orderable_timings_daterangepicker.next_7_days] = [ moment(), moment().add( 6, 'days' ) ];
     84                    ranges[orderable_timings_daterangepicker.next_30_days] = [ moment(), moment().add( 29, 'days' ) ];
     85
    6686                    jQuery( 'input[name="orderable_due_date"]' ).daterangepicker( {
    6787                        opens: 'left',
     
    7090                        locale: {
    7191                            format: 'YYYY/MM/DD',
    72                             cancelLabel: 'Clear'
     92                            cancelLabel: orderable_timings_daterangepicker.clear,
     93                            applyLabel: orderable_timings_daterangepicker.apply,
     94                            daysOfWeek: [
     95                                '<?php esc_html_e( 'Su', 'orderable' ); ?>',
     96                                '<?php esc_html_e( 'Mo', 'orderable' ); ?>',
     97                                '<?php esc_html_e( 'Tu', 'orderable' ); ?>',
     98                                '<?php esc_html_e( 'We', 'orderable' ); ?>',
     99                                '<?php esc_html_e( 'Th', 'orderable' ); ?>',
     100                                '<?php esc_html_e( 'Fr', 'orderable' ); ?>',
     101                                '<?php esc_html_e( 'Sa', 'orderable' ); ?>',
     102                            ],
    73103                        },
    74                         ranges: {
    75                             'Today': [ moment(), moment() ],
    76                             'Tomorrow': [ moment().add( 1, 'days' ), moment().add( 1, 'days' ) ],
    77                             'Next 7 Days': [ moment(), moment().add( 6, 'days' ) ],
    78                             'Next 30 Days': [ moment(), moment().add( 29, 'days' ) ]
    79                         }
     104                        ranges: ranges,
    80105                    } );
    81106                },
     
    280305        $due_date = self::get_filtered_due_date();
    281306        ?>
    282         <input type="text" name="orderable_due_date" value="<?php echo esc_attr( $due_date['formatted'] ); ?>" placeholder="<?php esc_attr_e( 'Filter by due date', '' ); ?>" style="min-width: 195px;" />
     307        <input type="text" name="orderable_due_date" value="<?php echo esc_attr( $due_date['formatted'] ); ?>" placeholder="<?php esc_attr_e( 'Filter by due date', 'orderable' ); ?>" style="min-width: 195px;" />
    283308        <?php
    284309    }
  • orderable/tags/1.3.0/languages/orderable.pot

    r2641784 r2709284  
    1 # Copyright (C) 2021 orderable
     1# Copyright (C) 2022 orderable
    22# This file is distributed under the same license as the orderable package.
    33msgid ""
     
    1414"Plural-Forms: nplurals=2; plural=(n != 1);\n"
    1515
    16 #: orderable.php:105
     16#: orderable.php:108
    1717msgid "Orderable requires WooCommerce to be installed and activated."
    1818msgstr ""
    1919
    20 #: orderable.php:118
     20#: orderable.php:121
    2121msgid "Orderable Pro needs to be at least v%s for compatibility. Please update the Orderable Pro plugin."
    2222msgstr ""
    2323
    24 #: orderable.php:119
     24#: orderable.php:122
    2525msgid "Update now"
    2626msgstr ""
     
    3030msgstr ""
    3131
    32 #: inc/class-ajax.php:126
     32#: inc/class-ajax.php:130
    3333msgid "Sorry, there are no delivery or pickup options available."
    3434msgstr ""
    3535
    36 #: inc/class-ajax.php:131
     36#: inc/class-ajax.php:135
    3737msgid "pickup"
    3838msgstr ""
    3939
    40 #: inc/class-ajax.php:131
     40#: inc/class-ajax.php:135
    4141msgid "delivery"
    4242msgstr ""
    4343
    44 #: inc/class-ajax.php:134
     44#: inc/class-ajax.php:138
    4545msgid "Sorry, there are no %s options available. Please try %s instead."
    4646msgstr ""
    4747
    48 #: inc/class-ajax.php:228, inc/class-settings.php:363
     48#: inc/class-ajax.php:232, inc/class-settings.php:380
    4949msgid "Country / State"
    5050msgstr ""
     
    152152msgstr ""
    153153
    154 #: inc/class-products.php:295
     154#: inc/class-products.php:313
    155155msgid "Add"
    156156msgstr ""
    157157
    158 #: inc/class-products.php:301
     158#: inc/class-products.php:318
    159159msgid "Select"
    160160msgstr ""
    161161
    162 #: inc/class-products.php:309
     162#: inc/class-products.php:326
    163163msgid "Out of Stock"
    164164msgstr ""
    165165
    166 #: inc/class-settings.php:80, inc/class-settings.php:97
     166#: inc/class-products.php:657
     167msgid "Description"
     168msgstr ""
     169
     170#: inc/class-settings.php:81, inc/class-settings.php:98
    167171msgid "Settings"
    168172msgstr ""
    169173
    170 #: inc/class-settings.php:96
     174#: inc/class-settings.php:97
    171175msgid "Orderable Settings"
    172176msgstr ""
    173177
    174 #: inc/class-settings.php:137
     178#: inc/class-settings.php:138
    175179msgid "Dashboard"
    176180msgstr ""
    177181
    178 #: inc/class-settings.php:142
     182#: inc/class-settings.php:143
    179183msgid "Style"
    180184msgstr ""
    181185
    182 #: inc/class-settings.php:150
     186#: inc/class-settings.php:151
     187msgid "Getting Started"
     188msgstr ""
     189
     190#: inc/class-settings.php:152
     191msgid "Below you will find a playlist of useful \"getting started\" videos for Orderable. If you need any help getting things set up, please <a href=\"%s\" target=\"_blank\">reach out to our support team</a>."
     192msgstr ""
     193
     194#: inc/class-settings.php:167
    183195msgid "General"
    184196msgstr ""
    185197
    186 #: inc/class-settings.php:156
     198#: inc/class-settings.php:173
    187199msgid "Brand Color"
    188200msgstr ""
    189201
    190 #: inc/class-settings.php:157
     202#: inc/class-settings.php:174
    191203msgid "Select an accent color to be used for buttons and other elements."
    192204msgstr ""
    193205
    194 #: inc/class-settings.php:163
     206#: inc/class-settings.php:180
    195207msgid "Button Style"
    196208msgstr ""
    197209
    198 #: inc/class-settings.php:164
     210#: inc/class-settings.php:181
    199211msgid "Choose a button style which suits your theme."
    200212msgstr ""
    201213
    202 #: inc/class-settings.php:168
     214#: inc/class-settings.php:185
    203215msgid "Rounded"
    204216msgstr ""
    205217
    206 #: inc/class-settings.php:169
     218#: inc/class-settings.php:186
    207219msgid "Square"
    208220msgstr ""
    209221
    210 #: inc/class-settings.php:178
     222#: inc/class-settings.php:195
    211223msgid "Product Cards"
    212224msgstr ""
    213225
    214 #: inc/class-settings.php:184
     226#: inc/class-settings.php:201
    215227msgid "Product Title Size (px)"
    216228msgstr ""
    217229
    218 #: inc/class-settings.php:185
     230#: inc/class-settings.php:202
    219231msgid "Set the product title font size in pixels."
    220232msgstr ""
    221233
    222 #: inc/class-settings.php:191
     234#: inc/class-settings.php:208
    223235msgid "Product Price Size (px)"
    224236msgstr ""
    225237
    226 #: inc/class-settings.php:192
     238#: inc/class-settings.php:209
    227239msgid "Set the product price font size in pixels."
    228240msgstr ""
    229241
    230 #: inc/class-settings.php:323
     242#: inc/class-settings.php:340
    231243msgid "Installing..."
    232244msgstr ""
    233245
    234 #: inc/class-settings.php:325
     246#: inc/class-settings.php:342
    235247msgid "WooCommerce"
    236248msgstr ""
    237249
    238 #: inc/class-settings.php:338
     250#: inc/class-settings.php:355
    239251msgid "Business Name"
    240252msgstr ""
    241253
    242 #: inc/class-settings.php:345
     254#: inc/class-settings.php:362
    243255msgid "Address line 1"
    244256msgstr ""
    245257
    246 #: inc/class-settings.php:351
     258#: inc/class-settings.php:368
    247259msgid "Address line 2"
    248260msgstr ""
    249261
    250 #: inc/class-settings.php:357
     262#: inc/class-settings.php:374
    251263msgid "City"
    252264msgstr ""
    253265
    254 #: inc/class-settings.php:370
     266#: inc/class-settings.php:387
    255267msgid "Postcode / ZIP"
    256268msgstr ""
    257269
    258 #: inc/class-settings.php:376
     270#: inc/class-settings.php:393
    259271msgid "Business Email"
    260272msgstr ""
    261273
    262 #: inc/class-settings.php:384
     274#: inc/class-settings.php:401
    263275msgid "Please keep me up to date via email on new Orderable training and features"
    264276msgstr ""
    265277
    266 #: inc/class-settings.php:397
     278#: inc/class-settings.php:414
    267279msgid "Which services do you offer?"
    268280msgstr ""
    269281
    270 #: inc/class-settings.php:401, inc/modules/services/class-services-order.php:34, inc/modules/services/class-services.php:192, inc/modules/timings/class-timings-settings.php:135, inc/modules/timings/class-timings-settings.php:287, inc/modules/timings/class-timings-settings.php:454
     282#: inc/class-settings.php:418, inc/modules/services/class-services-order.php:34, inc/modules/services/class-services.php:192, inc/modules/timings/class-timings-settings.php:135, inc/modules/timings/class-timings-settings.php:286, inc/modules/timings/class-timings-settings.php:453
    271283msgid "Delivery"
    272284msgstr ""
    273285
    274 #: inc/class-settings.php:402, inc/modules/services/class-services-order.php:35, inc/modules/services/class-services.php:191, inc/modules/timings/class-timings-settings.php:136, inc/modules/timings/class-timings-settings.php:292, inc/modules/timings/class-timings-settings.php:460
     286#: inc/class-settings.php:419, inc/modules/services/class-services-order.php:35, inc/modules/services/class-services.php:191, inc/modules/timings/class-timings-settings.php:136, inc/modules/timings/class-timings-settings.php:291, inc/modules/timings/class-timings-settings.php:459
    275287msgid "Pickup"
    276288msgstr ""
    277289
    278 #: inc/class-settings.php:407
     290#: inc/class-settings.php:424
    279291msgid "Which days of the week are you open?"
    280292msgstr ""
    281293
    282 #: inc/class-settings.php:411, inc/modules/timings/class-timings.php:59
     294#: inc/class-settings.php:428, inc/modules/timings/class-timings.php:59
    283295msgid "Monday"
    284296msgstr ""
    285297
    286 #: inc/class-settings.php:412, inc/modules/timings/class-timings.php:60
     298#: inc/class-settings.php:429, inc/modules/timings/class-timings.php:60
    287299msgid "Tuesday"
    288300msgstr ""
    289301
    290 #: inc/class-settings.php:413, inc/modules/timings/class-timings.php:61
     302#: inc/class-settings.php:430, inc/modules/timings/class-timings.php:61
    291303msgid "Wednesday"
    292304msgstr ""
    293305
    294 #: inc/class-settings.php:414, inc/modules/timings/class-timings.php:62
     306#: inc/class-settings.php:431, inc/modules/timings/class-timings.php:62
    295307msgid "Thursday"
    296308msgstr ""
    297309
    298 #: inc/class-settings.php:415, inc/modules/timings/class-timings.php:63
     310#: inc/class-settings.php:432, inc/modules/timings/class-timings.php:63
    299311msgid "Friday"
    300312msgstr ""
    301313
    302 #: inc/class-settings.php:416, inc/modules/timings/class-timings.php:64
     314#: inc/class-settings.php:433, inc/modules/timings/class-timings.php:64
    303315msgid "Saturday"
    304316msgstr ""
    305317
    306 #: inc/class-settings.php:417, inc/modules/timings/class-timings.php:58
     318#: inc/class-settings.php:434, inc/modules/timings/class-timings.php:58
    307319msgid "Sunday"
    308320msgstr ""
    309321
    310 #: inc/class-settings.php:422
     322#: inc/class-settings.php:439
    311323msgid "What are your normal opening hours?"
    312324msgstr ""
    313325
    314 #: inc/class-settings.php:549
     326#: inc/class-settings.php:570
    315327msgid "Local"
    316328msgstr ""
    317329
    318 #: inc/class-settings.php:664
     330#: inc/class-settings.php:685
    319331msgid "From:"
    320332msgstr ""
    321333
    322 #: inc/class-settings.php:677
     334#: inc/class-settings.php:698
    323335msgid "To:"
    324336msgstr ""
    325337
    326 #: inc/class-settings.php:700, inc/class-settings.php:720
     338#: inc/class-settings.php:721, inc/class-settings.php:741
    327339msgid "Visibility"
    328340msgstr ""
    329341
    330 #: inc/class-settings.php:702, inc/class-settings.php:724
     342#: inc/class-settings.php:723, inc/class-settings.php:745
    331343msgid "Default"
    332344msgstr ""
    333345
    334 #: inc/class-settings.php:703, inc/class-settings.php:725
     346#: inc/class-settings.php:724, inc/class-settings.php:746
    335347msgid "Hidden"
    336348msgstr ""
    337349
    338 #: inc/class-settings.php:705, inc/class-settings.php:727
     350#: inc/class-settings.php:726, inc/class-settings.php:748
    339351msgid "Choose whether to hide (on the frontend) this category archive and all single product pages within this category. Hiding them is recommended if using this category in the Orderable menu shortcode."
    340352msgstr ""
    341353
    342 #: inc/class-settings.php:858
     354#: inc/class-settings.php:882
    343355msgid "Get Help"
    344356msgstr ""
    345357
    346 #: inc/class-settings.php:859
     358#: inc/class-settings.php:886
    347359msgid "Request Feature"
    348360msgstr ""
    349361
    350 #: inc/class-settings.php:860
     362#: inc/class-settings.php:890
    351363msgid "View Docs"
    352364msgstr ""
    353365
    354 #: inc/class-settings.php:884
     366#: inc/class-settings.php:914
    355367msgid "Set Up Your Store"
    356368msgstr ""
    357369
    358 #: inc/class-settings.php:886
     370#: inc/class-settings.php:916
    359371msgid "Use the Store Settings tab to configure your store's opening hours, delivery/pickup schedule, and holidays."
    360372msgstr ""
    361373
    362 #: inc/class-settings.php:900, inc/modules/layouts/class-layouts.php:98
    363 msgid "Layout Builder"
    364 msgstr ""
    365 
    366 #: inc/class-settings.php:902
     374#: inc/class-settings.php:930, inc/modules/layouts/class-layouts.php:93, inc/modules/layouts/class-layouts.php:98
     375msgid "Product Layouts"
     376msgstr ""
     377
     378#: inc/class-settings.php:932
    367379msgid "Use the Layout Builder to create a product list based on category. Embed your layout using the shortcode or block."
    368380msgstr ""
    369381
    370 #: inc/class-settings.php:916, inc/modules/live-view/class-live-view.php:197, inc/modules/live-view/class-live-view.php:197
     382#: inc/class-settings.php:946, inc/modules/live-view/class-live-view.php:201, inc/modules/live-view/class-live-view.php:201
    371383msgid "Live Order View"
    372384msgstr ""
    373385
    374 #: inc/class-settings.php:918
     386#: inc/class-settings.php:948
    375387msgid "Use the Live Order View to get notified and manage orders in real time."
    376388msgstr ""
    377389
    378 #: inc/class-settings.php:931, inc/modules/addons/class-addons.php:35, inc/modules/addons/class-addons.php:44
     390#: inc/class-settings.php:961, inc/class-settings.php:1127, inc/modules/addons/class-addons.php:35
    379391msgid "Product Addons"
    380392msgstr ""
    381393
    382 #: inc/class-settings.php:933
     394#: inc/class-settings.php:963
    383395msgid "Create product options which can be conditionally applied to the products in your store."
    384396msgstr ""
    385397
    386 #: inc/class-settings.php:977, inc/modules/drawer/templates/drawer.php:12
     398#: inc/class-settings.php:1007, inc/modules/drawer/templates/drawer.php:12
    387399msgid "Close"
    388400msgstr ""
    389401
    390 #: inc/class-settings.php:978
     402#: inc/class-settings.php:1008
    391403msgid "Next"
    392404msgstr ""
    393405
    394 #: inc/class-settings.php:979
     406#: inc/class-settings.php:1009
    395407msgid "Skip"
     408msgstr ""
     409
     410#: inc/class-settings.php:1124
     411msgid "Upgrade to Orderable Pro"
     412msgstr ""
     413
     414#: inc/class-settings.php:1124
     415msgid "to access this feature, plus many more revenue boosting features."
     416msgstr ""
     417
     418#: inc/class-settings.php:1127
     419msgid "Add options to your products like toppings, allergy information, size, etc."
     420msgstr ""
     421
     422#: inc/class-settings.php:1128
     423msgid "Cart Bumps"
     424msgstr ""
     425
     426#: inc/class-settings.php:1128
     427msgid "Increase sales by offering related products right in the side cart."
     428msgstr ""
     429
     430#: inc/class-settings.php:1129, inc/modules/timings/class-timings-settings.php:380
     431msgid "Time Slots"
     432msgstr ""
     433
     434#: inc/class-settings.php:1129
     435msgid "Improve customer satisfaction by offering specific time slots for their order."
     436msgstr ""
     437
     438#: inc/class-settings.php:1130
     439msgid "Custom Checkout"
     440msgstr ""
     441
     442#: inc/class-settings.php:1130
     443msgid "Use our custom checkout experience to drive conversions at the most important step of your online store."
     444msgstr ""
     445
     446#: inc/class-settings.php:1131, inc/class-settings.php:1134
     447msgid "Checkout Tipping"
     448msgstr ""
     449
     450#: inc/class-settings.php:1131, inc/class-settings.php:1134
     451msgid "Make it easy for your customers to include a tip with their order."
     452msgstr ""
     453
     454#: inc/class-settings.php:1132, inc/modules/timed-products/class-timed-products.php:35, inc/modules/timed-products/class-timed-products.php:35
     455msgid "Timed Products"
     456msgstr ""
     457
     458#: inc/class-settings.php:1132
     459msgid "Show/hide products in your store based on time/date conditions."
     460msgstr ""
     461
     462#: inc/class-settings.php:1133
     463msgid "Custom Order Statuses"
     464msgstr ""
     465
     466#: inc/class-settings.php:1133
     467msgid "Add and modify order statuses to improve the backend flow of your store. Create custom notifications for each status."
     468msgstr ""
     469
     470#: inc/class-settings.php:1137
     471msgid "Upgrade Now"
    396472msgstr ""
    397473
     
    412488msgstr ""
    413489
    414 #: inc/modules/addons/class-addons.php:35
     490#: inc/modules/addons/class-addons.php:35, inc/modules/custom-order-status/class-custom-order-status.php:35, inc/modules/timed-products/class-timed-products.php:35
    415491msgid "Pro"
    416492msgstr ""
    417493
    418 #: inc/modules/drawer/class-drawer-settings.php:58
     494#: inc/modules/checkout/class-checkout.php:38
     495msgid "Checkout Settings"
     496msgstr ""
     497
     498#: inc/modules/checkout/class-checkout.php:44
     499msgid "Enable Custom Checkout"
     500msgstr ""
     501
     502#: inc/modules/checkout/class-checkout.php:45
     503msgid "When enabled, your theme's checkout will be replaced by Orderable's optimized checkout experience."
     504msgstr ""
     505
     506#: inc/modules/custom-order-status/class-custom-order-status.php:35, inc/modules/custom-order-status/class-custom-order-status.php:35
     507msgid "Order Statuses"
     508msgstr ""
     509
     510#. translators: %s Product title.
     511#: inc/modules/drawer/class-drawer-ajax.php:49
     512msgid "You can only have 1 %s in your cart."
     513msgstr ""
     514
     515#: inc/modules/drawer/class-drawer-settings.php:61
     516msgid "Side Drawer"
     517msgstr ""
     518
     519#: inc/modules/drawer/class-drawer-settings.php:68
    419520msgid "Mini Cart Settings"
    420521msgstr ""
    421522
    422 #: inc/modules/drawer/class-drawer-settings.php:64
     523#: inc/modules/drawer/class-drawer-settings.php:74
    423524msgid "Cart Icon Position"
    424525msgstr ""
    425526
    426 #: inc/modules/drawer/class-drawer-settings.php:65
     527#: inc/modules/drawer/class-drawer-settings.php:75
    427528msgid "Set the position of the mini cart icon when the cart is not empty. Choose \"None\" to disable it."
    428529msgstr ""
    429530
    430 #: inc/modules/drawer/class-drawer-settings.php:68
     531#: inc/modules/drawer/class-drawer-settings.php:78, inc/modules/drawer/class-drawer-settings.php:121
    431532msgid "None"
    432533msgstr ""
    433534
    434 #: inc/modules/drawer/class-drawer-settings.php:69
     535#: inc/modules/drawer/class-drawer-settings.php:79
    435536msgid "Bottom Right"
    436537msgstr ""
    437538
    438 #: inc/modules/drawer/class-drawer-settings.php:70
     539#: inc/modules/drawer/class-drawer-settings.php:80
    439540msgid "Bottom Left"
    440541msgstr ""
    441542
    442 #: inc/modules/drawer/class-drawer-settings.php:71
     543#: inc/modules/drawer/class-drawer-settings.php:81
    443544msgid "Top Left"
    444545msgstr ""
    445546
    446 #: inc/modules/drawer/class-drawer-settings.php:72
     547#: inc/modules/drawer/class-drawer-settings.php:82
    447548msgid "Top Right"
    448549msgstr ""
    449550
    450 #: inc/modules/drawer/class-drawer-settings.php:78
     551#: inc/modules/drawer/class-drawer-settings.php:88
    451552msgid "Fine-Tune Position"
    452553msgstr ""
    453554
    454 #: inc/modules/drawer/class-drawer-settings.php:79
     555#: inc/modules/drawer/class-drawer-settings.php:89
    455556msgid "Fine-tune the position of the mini cart icon in pixels. These settings will push the cart icon away from the respective side."
    456557msgstr ""
    457558
     559#: inc/modules/drawer/class-drawer-settings.php:100
     560msgid "Quickview Settings"
     561msgstr ""
     562
     563#: inc/modules/drawer/class-drawer-settings.php:101
     564msgid "Settings for when products are displayed in the Orderable drawer."
     565msgstr ""
     566
     567#: inc/modules/drawer/class-drawer-settings.php:106
     568msgid "Accordion Position"
     569msgstr ""
     570
     571#: inc/modules/drawer/class-drawer-settings.php:107
     572msgid "Where should the product information accordion be displayed in the side drawer."
     573msgstr ""
     574
     575#: inc/modules/drawer/class-drawer-settings.php:110
     576msgid "Before Product Options"
     577msgstr ""
     578
     579#: inc/modules/drawer/class-drawer-settings.php:111
     580msgid "After Product Options"
     581msgstr ""
     582
     583#: inc/modules/drawer/class-drawer-settings.php:117
     584msgid "Product Description"
     585msgstr ""
     586
    458587#: inc/modules/drawer/class-drawer-settings.php:118
     588msgid "Choose which product description to display in the side drawer."
     589msgstr ""
     590
     591#: inc/modules/drawer/class-drawer-settings.php:122
     592msgid "Short Description"
     593msgstr ""
     594
     595#: inc/modules/drawer/class-drawer-settings.php:123
     596msgid "Full Description"
     597msgstr ""
     598
     599#: inc/modules/drawer/class-drawer-settings.php:161
    459600msgid "Top (px)"
    460601msgstr ""
    461602
    462 #: inc/modules/drawer/class-drawer-settings.php:124
     603#: inc/modules/drawer/class-drawer-settings.php:167
    463604msgid "Bottom (px)"
    464605msgstr ""
    465606
    466 #: inc/modules/drawer/class-drawer-settings.php:130
     607#: inc/modules/drawer/class-drawer-settings.php:173
    467608msgid "Right (px)"
    468609msgstr ""
    469610
    470 #: inc/modules/drawer/class-drawer-settings.php:136
     611#: inc/modules/drawer/class-drawer-settings.php:179
    471612msgid "Left (px)"
    472 msgstr ""
    473 
    474 #: inc/modules/layouts/class-layouts.php:93
    475 msgid "Product Layouts"
    476613msgstr ""
    477614
     
    500637msgstr ""
    501638
    502 #: inc/modules/layouts/class-layouts.php:489
    503 msgid "What is the Orderable Layout Builder?"
    504 msgstr ""
    505 
    506 #: inc/modules/layouts/class-layouts.php:490
     639#: inc/modules/layouts/class-layouts.php:493
     640msgid "What are Product Layouts?"
     641msgstr ""
     642
     643#: inc/modules/layouts/class-layouts.php:494
    507644msgid "This is where you can create product layouts and customize their settings. Save your layouts here and reuse them later using the block editor, shortcode (great for page builders), or PHP snippet."
    508645msgstr ""
    509646
    510 #: inc/modules/live-view/class-live-view.php:159
     647#: inc/modules/live-view/class-live-view.php:162
    511648msgid "Enable Live View"
    512649msgstr ""
    513650
    514 #: inc/modules/live-view/class-live-view.php:164
     651#: inc/modules/live-view/class-live-view.php:167
    515652msgid "Exit Live View"
    516653msgstr ""
    517654
    518 #: inc/modules/live-view/class-live-view.php:165
     655#: inc/modules/live-view/class-live-view.php:168
    519656msgid "Mute"
    520657msgstr ""
    521658
    522 #: inc/modules/live-view/class-live-view.php:165
     659#: inc/modules/live-view/class-live-view.php:168
    523660msgid "Unmute"
    524661msgstr ""
    525662
    526 #: inc/modules/live-view/class-live-view.php:228
     663#: inc/modules/live-view/class-live-view.php:243
    527664msgid "order_manager"
    528665msgstr ""
    529666
    530 #: inc/modules/live-view/class-live-view.php:228
     667#: inc/modules/live-view/class-live-view.php:243
    531668msgid "Order Manager"
    532669msgstr ""
     
    582719msgstr ""
    583720
    584 #: inc/modules/timings/class-timings-order.php:160, inc/modules/timings/class-timings-order.php:198
     721#: inc/modules/timings/class-timings-order.php:47, inc/modules/timings/class-timings.php:299
     722msgid "Today"
     723msgstr ""
     724
     725#: inc/modules/timings/class-timings-order.php:48, inc/modules/timings/class-timings.php:301
     726msgid "Tomorrow"
     727msgstr ""
     728
     729#: inc/modules/timings/class-timings-order.php:49
     730msgid "Next 7 Days"
     731msgstr ""
     732
     733#: inc/modules/timings/class-timings-order.php:50
     734msgid "Next 30 Days"
     735msgstr ""
     736
     737#: inc/modules/timings/class-timings-order.php:51
     738msgid "Custom Range"
     739msgstr ""
     740
     741#: inc/modules/timings/class-timings-order.php:52
     742msgid "Clear"
     743msgstr ""
     744
     745#: inc/modules/timings/class-timings-order.php:53
     746msgid "Apply"
     747msgstr ""
     748
     749#: inc/modules/timings/class-timings-order.php:95
     750msgid "Su"
     751msgstr ""
     752
     753#: inc/modules/timings/class-timings-order.php:96
     754msgid "Mo"
     755msgstr ""
     756
     757#: inc/modules/timings/class-timings-order.php:97
     758msgid "Tu"
     759msgstr ""
     760
     761#: inc/modules/timings/class-timings-order.php:98
     762msgid "We"
     763msgstr ""
     764
     765#: inc/modules/timings/class-timings-order.php:99
     766msgid "Th"
     767msgstr ""
     768
     769#: inc/modules/timings/class-timings-order.php:100
     770msgid "Fr"
     771msgstr ""
     772
     773#: inc/modules/timings/class-timings-order.php:101
     774msgid "Sa"
     775msgstr ""
     776
     777#: inc/modules/timings/class-timings-order.php:185, inc/modules/timings/class-timings-order.php:223
    585778msgid "Date"
    586779msgstr ""
    587780
    588 #: inc/modules/timings/class-timings-order.php:164, inc/modules/timings/class-timings-order.php:202
     781#: inc/modules/timings/class-timings-order.php:189, inc/modules/timings/class-timings-order.php:227
    589782msgid "Time"
    590783msgstr ""
    591784
    592 #: inc/modules/timings/class-timings-order.php:168
     785#: inc/modules/timings/class-timings-order.php:193
    593786msgid "Timestamp"
    594787msgstr ""
    595788
    596 #: inc/modules/timings/class-timings-order.php:181
     789#: inc/modules/timings/class-timings-order.php:206
    597790msgid "Due Date/Time"
     791msgstr ""
     792
     793#: inc/modules/timings/class-timings-order.php:307
     794msgid "Filter by due date"
    598795msgstr ""
    599796
     
    618815msgstr ""
    619816
    620 #: inc/modules/timings/class-timings-settings.php:130, inc/modules/timings/class-timings-settings.php:448
     817#: inc/modules/timings/class-timings-settings.php:130, inc/modules/timings/class-timings-settings.php:447
    621818msgid "Services"
    622819msgstr ""
     
    646843msgstr ""
    647844
    648 #: inc/modules/timings/class-timings-settings.php:155
    649 msgid "Allow \"ASAP\" as an option when choosing delivery time"
     845#: inc/modules/timings/class-timings-settings.php:159
     846msgid "Lead Time"
    650847msgstr ""
    651848
    652849#: inc/modules/timings/class-timings-settings.php:160
    653 msgid "Lead Time"
    654 msgstr ""
    655 
    656 #: inc/modules/timings/class-timings-settings.php:161
    657850msgid "How many days do you need to prepare the order? Leave blank or \"0\" for same day."
    658851msgstr ""
    659852
     853#: inc/modules/timings/class-timings-settings.php:166
     854msgid "Preorder Days"
     855msgstr ""
     856
    660857#: inc/modules/timings/class-timings-settings.php:167
    661 msgid "Preorder Days"
    662 msgstr ""
    663 
    664 #: inc/modules/timings/class-timings-settings.php:168
    665858msgid "For how many days after the lead time will you accept orders?"
    666859msgstr ""
    667860
     861#: inc/modules/timings/class-timings-settings.php:173
     862msgid "Holidays"
     863msgstr ""
     864
    668865#: inc/modules/timings/class-timings-settings.php:174
    669 msgid "Holidays"
    670 msgstr ""
    671 
    672 #: inc/modules/timings/class-timings-settings.php:175
    673866msgid "Days when your store is closed."
    674867msgstr ""
    675868
    676 #: inc/modules/timings/class-timings-settings.php:221, inc/modules/timings/class-timings-settings.php:243
     869#: inc/modules/timings/class-timings-settings.php:220, inc/modules/timings/class-timings-settings.php:242
    677870msgid "Open Hours (From)"
    678871msgstr ""
    679872
    680 #: inc/modules/timings/class-timings-settings.php:222, inc/modules/timings/class-timings-settings.php:247
     873#: inc/modules/timings/class-timings-settings.php:221, inc/modules/timings/class-timings-settings.php:246
    681874msgid "Open Hours (To)"
    682875msgstr ""
    683876
    684 #: inc/modules/timings/class-timings-settings.php:223, inc/modules/timings/class-timings-settings.php:540
     877#: inc/modules/timings/class-timings-settings.php:222, inc/modules/timings/class-timings-settings.php:539
    685878msgid "Max Orders (Day)"
    686879msgstr ""
    687880
    688 #: inc/modules/timings/class-timings-settings.php:280
     881#: inc/modules/timings/class-timings-settings.php:279
    689882msgid "Please select services available for this store."
    690883msgstr ""
    691884
    692 #: inc/modules/timings/class-timings-settings.php:297, inc/modules/timings/class-timings-settings.php:302
     885#: inc/modules/timings/class-timings-settings.php:296, inc/modules/timings/class-timings-settings.php:301
    693886msgid "Add service hours"
    694887msgstr ""
    695888
    696 #: inc/modules/timings/class-timings-settings.php:318
     889#: inc/modules/timings/class-timings-settings.php:317
    697890msgid "Same as delivery service hours"
    698891msgstr ""
    699892
    700 #: inc/modules/timings/class-timings-settings.php:355
     893#: inc/modules/timings/class-timings-settings.php:354
    701894msgid "Days"
    702895msgstr ""
    703896
    704 #: inc/modules/timings/class-timings-settings.php:357
     897#: inc/modules/timings/class-timings-settings.php:356
    705898msgid "Select \"Open Hours\" first"
    706899msgstr ""
    707900
    708 #: inc/modules/timings/class-timings-settings.php:368
     901#: inc/modules/timings/class-timings-settings.php:367
    709902msgid "Period"
    710903msgstr ""
    711904
    712 #: inc/modules/timings/class-timings-settings.php:380, inc/modules/timings/class-timings.php:339
     905#: inc/modules/timings/class-timings-settings.php:379, inc/modules/timings/class-timings.php:379
    713906msgid "All Day"
    714907msgstr ""
    715908
    716 #: inc/modules/timings/class-timings-settings.php:381
    717 msgid "Time Slots"
    718 msgstr ""
    719 
    720 #: inc/modules/timings/class-timings-settings.php:420
     909#: inc/modules/timings/class-timings-settings.php:419
    721910msgid "Add holiday"
    722911msgstr ""
    723912
    724 #: inc/modules/timings/class-timings-settings.php:436
     913#: inc/modules/timings/class-timings-settings.php:435
    725914msgid "From"
    726915msgstr ""
    727916
    728 #: inc/modules/timings/class-timings-settings.php:442
     917#: inc/modules/timings/class-timings-settings.php:441
    729918msgid "To"
    730919msgstr ""
    731920
    732 #: inc/modules/timings/class-timings-settings.php:467
     921#: inc/modules/timings/class-timings-settings.php:466
    733922msgid "Repeat Yearly?"
    734923msgstr ""
    735924
    736 #: inc/modules/timings/class-timings-settings.php:561
     925#: inc/modules/timings/class-timings-settings.php:560
    737926msgid "Hours"
    738927msgstr ""
    739928
    740 #: inc/modules/timings/class-timings-settings.php:569
     929#: inc/modules/timings/class-timings-settings.php:568
    741930msgid "Frequency (Mins)"
    742931msgstr ""
    743932
    744 #: inc/modules/timings/class-timings-settings.php:574
     933#: inc/modules/timings/class-timings-settings.php:573
    745934msgid "Cutoff (Mins)"
    746935msgstr ""
    747936
    748 #: inc/modules/timings/class-timings-settings.php:579
     937#: inc/modules/timings/class-timings-settings.php:578
    749938msgid "Max Orders (Slot)"
    750939msgstr ""
    751940
    752 #: inc/modules/timings/class-timings-settings.php:639
     941#: inc/modules/timings/class-timings-settings.php:638
    753942msgid "Update Timezone"
    754943msgstr ""
     
    8551044
    8561045#: inc/modules/layouts/templates/admin/layout-settings-metabox.php:94
    857 msgid "When enabled, the whole product card is clickable, instead of just the button."
    858 msgstr ""
     1046msgid "Choose what happens when you click the product card."
     1047msgstr ""
     1048
     1049#: inc/modules/layouts/templates/admin/layout-settings-metabox.php:104
     1050msgid "Nothing"
     1051msgstr ""
     1052
     1053#: inc/modules/layouts/templates/admin/layout-settings-metabox.php:105
     1054msgid "Add to Cart"
     1055msgstr ""
     1056
     1057#: inc/modules/layouts/templates/admin/layout-settings-metabox.php:106
     1058msgid "Quick View Product"
     1059msgstr ""
  • orderable/tags/1.3.0/orderable.php

    r2666071 r2709284  
    44 * Author URI: https://orderable.com
    55 * Description: Take local online ordering to a whole new level with Orderable.
    6  * Version: 1.2.0
     6 * Version: 1.3.0
    77 * Author: Orderable
    88 * Text Domain: orderable
    99 * WC requires at least: 5.4.0
    10  * WC tested up to: 6.1.1
     10 * WC tested up to: 6.4.0
    1111 */
    1212
     
    2020     * @var string Plugin version.
    2121     */
    22     public static $version = '1.2.0';
     22    public static $version = '1.3.0';
    2323
    2424    /**
    2525     * @var string Required pro version.
    2626     */
    27     public static $required_pro_version = '1.2.0';
     27    public static $required_pro_version = '1.3.0';
    2828
    2929    /**
  • orderable/tags/1.3.0/readme.txt

    r2666071 r2709284  
    55Tested up to: 5.9
    66Requires PHP: 5.6
    7 Stable tag: 1.2.0
     7Stable tag: 1.3.0
    88License: GPLv2 or later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
     
    142142
    143143== Changelog ==
     144
     145**v1.3.0** (13 Apr 2022)
     146[new] Option to open quickview when card is clicked
     147[new] Allow users to manually change quantity in the side cart
     148[new] Ability to remove/clear any repeatable settings row
     149[new] Quick view settings under Orderable > Settings > Side Drawer
     150[new] Product information accordion added to quick view
     151[update] Renamed "Layout Builder" menu item to "Product Layouts"
     152[update] Updated brand colour in admin area
     153[update] Remove hidden categories/products from sitemap
     154[update] Optimized tabbed layout navigation on mobile
     155[update] Only modify mini cart in Orderable sidebar
     156[update] Show error on quantity change if the requested quantity is more than available quantity
     157[update] Add translation for date range picker element in Live Order View
     158[fix] Make Weekdays and 'Filter by due date' translatable
     159[fix] Increase/decrease quantity on mini cart when "Ajax add to cart" is disabled
     160[fix] Out of stock visibility in Product Layout
     161[fix] Allow order_manager users to place new orders
    144162
    145163**v1.2.0** (26 Jan 2022)
  • orderable/tags/1.3.0/templates/product/hero.php

    r2549156 r2709284  
    1717
    1818<div class="orderable-product__hero">
     19    <?php do_action( 'orderable_before_product_hero', $product, $args ); ?>
     20
    1921    <?php echo $product->get_image( 'woocommerce_thumbnail', array(
    2022        'class' => 'orderable-product__image',
    2123    ) ); ?>
     24
     25    <?php do_action( 'orderable_after_product_hero', $product, $args ); ?>
    2226</div>
  • orderable/tags/1.3.0/templates/product/options.php

    r2626120 r2709284  
    55 * @package Orderable/Templates
    66 *
    7  * @var WC_Product_Variable $product
    8  * @var bool                $orderable_single_product Determines whether it's possible to add to cart (i.e. a single
    9  *      product view).
     7 * @var WC_Product $product                  Product.
     8 * @var bool       $orderable_single_product Determines whether it's possible to add to cart (i.e. a single product view).
     9 * @var array      $args                     Array of args.
    1010 */
    1111
     
    1414global $orderable_single_product;
    1515
    16 $orderable_single_product = true;
    17 $args                     = array( 'images' => true );
    18 ?>
     16$orderable_single_product = true; ?>
    1917
    20 <div class="orderable-product orderable-product--options">
    21     <?php include ORDERABLE_TEMPLATES_PATH . 'product/hero-title.php'; ?>
     18<div class="orderable-product orderable-product--options orderable-product--image-cropped">
     19    <?php include ORDERABLE_TEMPLATES_PATH . 'product/hero.php'; ?>
    2220
    23     <div class="orderable-product__options-wrap orderable-sb-container" data-orderable-scroll-id="product-options">
    24         <?php do_action( 'orderable_side_menu_before_product_options', $product ); ?>
     21    <div class="orderable-sb-container" data-orderable-scroll-id="product">
     22        <?php do_action( 'orderable_side_menu_before_product_title', $product, $args ); ?>
    2523
    26         <?php if ( ! empty( $attributes ) ) { ?>
    27             <table class="orderable-product__options" cellspacing="0" cellpadding="0">
    28                 <?php foreach ( $attributes as $attribute_name => $options ) : ?>
    29                     <tr class="orderable-product__option">
    30                         <th class="orderable-product__option-label">
    31                             <label for="<?php echo esc_attr( sanitize_title( $attribute_name ) ); ?>"><?php echo wc_attribute_label( $attribute_name ); // WPCS: XSS ok. ?></label>
    32                         </th>
    33                         <td class="orderable-product__option-select">
    34                             <?php wc_dropdown_variation_attribute_options(
    35                                 array(
    36                                     'options'          => $options,
    37                                     'attribute'        => $attribute_name,
    38                                     'product'          => $product,
    39                                     'show_option_none' => wc_attribute_label( $attribute_name ),
    40                                     'class'            => 'orderable-input orderable-input--select orderable-input--validate',
    41                                 )
    42                             ); ?>
    43                         </td>
    44                     </tr>
    45                 <?php endforeach; ?>
    46             </table>
    47         <?php } ?>
     24        <h2 class="orderable-product__title"><?php echo wp_kses_post( $product->get_name() ); ?></h2>
    4825
    49         <?php do_action( 'orderable_side_menu_after_product_options', $product ); ?>
     26        <?php do_action( 'orderable_side_menu_before_product_options_wrapper', $product, $args ); ?>
    5027
    51         <div class="orderable-product__messages"></div>
     28        <div class="orderable-product__options-wrap">
     29            <?php do_action( 'orderable_side_menu_before_product_options', $product, $args ); ?>
    5230
    53         <script class="orderable-product__variations" type="application/json">
     31            <?php if ( ! empty( $attributes ) ) { ?>
     32                <table class="orderable-product__options" cellspacing="0" cellpadding="0">
     33                    <?php foreach ( $attributes as $attribute_name => $options ) : ?>
     34                        <tr class="orderable-product__option">
     35                            <th class="orderable-product__option-label">
     36                                <label for="<?php echo esc_attr( sanitize_title( $attribute_name ) ); ?>"><?php echo wc_attribute_label( $attribute_name ); // WPCS: XSS ok. ?></label>
     37                            </th>
     38                            <td class="orderable-product__option-select">
     39                                <?php wc_dropdown_variation_attribute_options(
     40                                    array(
     41                                        'options'          => $options,
     42                                        'attribute'        => $attribute_name,
     43                                        'product'          => $product,
     44                                        'show_option_none' => wc_attribute_label( $attribute_name ),
     45                                        'class'            => 'orderable-input orderable-input--select orderable-input--validate',
     46                                    )
     47                                ); ?>
     48                            </td>
     49                        </tr>
     50                    <?php endforeach; ?>
     51                </table>
     52            <?php } ?>
     53
     54            <?php do_action( 'orderable_side_menu_after_product_options', $product, $args ); ?>
     55
     56            <div class="orderable-product__messages"></div>
     57
     58            <script class="orderable-product__variations" type="application/json">
    5459            <?php echo ! empty( $variations_json ) ? $variations_json : ''; ?>
    5560        </script>
     61        </div>
     62
    5663    </div>
     64
     65    <?php do_action( 'orderable_side_menu_after_product_options_wrapper', $product, $args ); ?>
    5766
    5867    <?php include ORDERABLE_TEMPLATES_PATH . 'product/actions.php'; ?>
  • orderable/tags/1.3.0/woocommerce/cart/mini-cart.php

    r2637423 r2709284  
    6363                            <span class="orderable-quantity-roller__roller">
    6464                                <button class="orderable-quantity-roller__button orderable-quantity-roller__button--decrease" data-orderable-trigger="decrease-quantity" data-orderable-cart-item-key="<?php echo esc_attr( $cart_item_key ); ?>" data-orderable-product-id="<?php echo esc_attr( $product_id ); ?>" data-orderable-quantity="<?php echo esc_attr( $cart_item['quantity'] ); ?>">-</button>
    65                                 <span class="orderable-quantity-roller__quantity"><?php echo esc_html( $cart_item['quantity'] ); ?></span>
     65                                <span
     66                                    class="orderable-quantity-roller__quantity"
     67                                    contenteditable="true"
     68                                    inputmode="numeric"
     69                                    data-orderable-cart-item-key="<?php echo esc_attr( $cart_item_key ); ?>"
     70                                    data-orderable-product-id="<?php echo esc_attr( $product_id ); ?>"
     71                                >
     72                                    <?php echo esc_html( $cart_item['quantity'] ); ?>
     73                                </span>
    6674                                <button class="orderable-quantity-roller__button orderable-quantity-roller__button--increase" data-orderable-trigger="increase-quantity" data-orderable-cart-item-key="<?php echo esc_attr( $cart_item_key ); ?>" data-orderable-product-id="<?php echo esc_attr( $product_id ); ?>" data-orderable-quantity="<?php echo esc_attr( $cart_item['quantity'] ); ?>">+</button>
    6775                            </span>
  • orderable/trunk/assets/admin/css/main.css

    r2666071 r2709284  
    107107  width: 50px !important;
    108108  text-align: center;
    109 }
    110 
    111 .orderable-table__row:first-child .orderable-table__column--remove .orderable-table__remove-row {
    112   display: none;
    113109}
    114110
  • orderable/trunk/assets/admin/css/main.min.css

    r2666071 r2709284  
    1 .orderable-table{table-layout:fixed;max-width:712px;border-collapse:collapse;border-radius:8px;background:#f4f5f6;border:none;width:100%}.orderable-table td,.orderable-table th{width:auto;vertical-align:middle!important}.orderable-table th{padding-top:12px!important;padding-bottom:12px!important}.orderable-table thead,.orderable-table tr{border-bottom:1px solid #d8dbdf}.orderable-table>tbody th{padding-left:14px;border-right:1px solid #d8dbdf}.orderable-table tr.orderable-table__row--last,.orderable-table tr:last-child{border:none}.orderable-table__row--hidden .orderable-table__column:not(.orderable-table__column--always-visible){position:relative}.orderable-table__row--hidden .orderable-table__column:not(.orderable-table__column--always-visible):after{content:'';position:absolute;top:0;left:0;right:0;bottom:0}.orderable-table__row--hidden .orderable-table__column:not(.orderable-table__column--always-visible)>*{opacity:.3}.orderable-table .orderable-table__row--repeatable{border-bottom-color:#fff;border-bottom-width:8px}.orderable-table__column{padding:8px 14px!important;vertical-align:middle!important;text-align:left;border-left:none;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-table__column--checkbox{width:36px!important;padding-right:0!important;border-right:none}.orderable-table__column--label{padding-left:4px!important;width:100px!important}@media (max-width:782px){.orderable-table__column--label{width:auto!important}}.orderable-table__column--medium{width:156px!important}@media (max-width:782px){.orderable-table__column--medium{width:auto!important}}.orderable-table__column--time{width:190px!important}@media (max-width:782px){.orderable-table__column--time{width:auto!important}}.orderable-table__column--remove{width:50px!important;text-align:center}.orderable-table__row:first-child .orderable-table__column--remove .orderable-table__remove-row{display:none}.orderable-table__column--last{width:auto}.orderable-table__column input,.orderable-table__column select{max-width:100%}.orderable-table__no-td-border{border-bottom:none!important}.orderable-table__no-td-border th{border-bottom:1px solid #d8dbdf}.orderable-table__cell--no-padding{padding:0!important}.orderable-table__cell .orderable-table__cell-column{float:left;width:50%;-webkit-box-sizing:border-box;box-sizing:border-box;padding:0 14px}.orderable-table__cell .orderable-table__cell-column--first{padding-left:0}.orderable-table__cell .orderable-table__cell-column--last{padding-right:0}.orderable-table__cell--2-col{overflow:hidden}@media (max-width:782px){.orderable-table__cell,.orderable-table__column--remove{display:table-cell!important}}.orderable-table__fieldset{display:inline-block;margin:0 15px 0 0}.orderable-table__fieldset legend{font-weight:600;margin:0 0 4px;padding:0;color:#23282d}.orderable-table__fieldset--nowrap{white-space:nowrap}.orderable-table__rwd-labels{display:none;margin:0 0 4px;min-width:160px}.orderable-table--child{border-radius:0;background:0 0}.orderable-table--child td:last-child,.orderable-table--child th:last-child{border-right:1px solid #d8dbdf}.orderable-table--compact td,.orderable-table--compact th{padding:8px 14px!important}@media (max-width:782px){.orderable-table--compact th{padding-bottom:4px!important}.orderable-table--compact td{padding-top:0!important}.orderable-table--compact tr:first-child th{padding-top:10px!important}.orderable-table--compact tr.orderable-table__row--last td{padding-bottom:15px!important}}@media (max-width:1210px){.orderable-table--open-hours thead{display:none}.orderable-table--open-hours td,.orderable-table--open-hours th{display:block;width:100%!important;height:auto;margin:0}.orderable-table--open-hours .orderable-table__column--checkbox,.orderable-table--open-hours .orderable-table__column--label{padding-top:20px!important}.orderable-table--open-hours .orderable-table__column--checkbox{width:36px!important;float:left}.orderable-table--open-hours .orderable-table__column--label{float:left;width:auto!important;font-weight:700}.orderable-table--open-hours .orderable-table__column--time{clear:both}.orderable-table--open-hours .orderable-table__column--last{padding-bottom:20px!important}.orderable-table--open-hours .orderable-table__rwd-labels{display:inline-block}}@media (max-width:782px){.orderable-table--open-hours .orderable-table__column--checkbox{width:45px!important}.orderable-table--open-hours .orderable-table__column--label{line-height:21px}.orderable-table--open-hours .orderable-table__rwd-labels{display:block}}.orderable-admin-button,body .submit .button-primary{background:#2271b6;border:none;padding:8px 15px;border-radius:8px;line-height:1.3;font-weight:600;cursor:pointer;-webkit-box-shadow:none;box-shadow:none;margin:0;text-decoration:none;display:inline-block;color:#fff;font-size:14px}.orderable-admin-button:active,.orderable-admin-button:focus,.orderable-admin-button:hover,body .submit .button-primary:active,body .submit .button-primary:focus,body .submit .button-primary:hover{background:#164975;color:#fff}.orderable-admin-button:focus,body .submit .button-primary:focus{outline:0;-webkit-box-shadow:none;box-shadow:none}.orderable-admin-button.orderable-trigger-element--active,body .submit .button-primary.orderable-trigger-element--active{background:#0A2135;color:#fff;cursor:default}.orderable-admin-button .dashicons,body .submit .button-primary .dashicons{width:16px;height:16px;font-size:16px;vertical-align:middle}.orderable-admin-button--pro .dashicons{line-height:12px}.orderable-toolbar{margin:0 0 15px;display:block;overflow:hidden}.orderable-toolbar .orderable-admin-button{margin-right:4px}.orderable-toolbar__actions{display:inline-block}.multi-select-container{display:inline-block;position:relative;width:100%;max-width:100%}.multi-select-menu{position:absolute;left:0;top:17px;z-index:1;float:left;min-width:100%;background:#fff;margin:1em 0;border:1px solid #aaa;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.2);box-shadow:0 1px 3px rgba(0,0,0,.2);display:none;padding:4px 0}.multi-select-menuitem{display:block;font-size:14px;padding:4px 10px 4px 36px;white-space:nowrap;position:relative}.multi-select-menuitem--none{padding-left:10px}@media (max-width:782px){.multi-select-menu{top:27px}.multi-select-menuitem{min-height:32px;line-height:32px;padding-left:44px}}.multi-select-menuitem--titled:before{display:block;font-weight:700;content:attr(data-group-title);margin:0 0 .25em -20px}.multi-select-menuitem--titledsr:before{display:block;font-weight:700;content:attr(data-group-title);border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.multi-select-presets{border-bottom:1px solid #ddd}.multi-select-menuitem input{position:absolute;left:10px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);margin:0!important}.multi-select-button{display:inline-block;font-size:14px;padding:0 28px 0 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:-.5em;background-color:#fff;border:1px solid #7e8993;border-radius:4px;-webkit-box-shadow:0 0 0 transparent;box-shadow:0 0 0 transparent;cursor:pointer;line-height:2;min-height:30px;position:relative;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}@media (max-width:782px){.multi-select-button{min-height:40px;height:40px;line-height:38px}}.multi-select-button:focus,.multi-select-container--open .multi-select-button{border-color:#007cba;-webkit-box-shadow:0 0 0 1px #007cba;box-shadow:0 0 0 1px #007cba;outline:transparent solid 2px}.multi-select-button:after{content:"";display:inline-block;width:0;height:0;border-style:solid;border-width:6px 6px 0;border-color:#999 transparent transparent;vertical-align:.1em;position:absolute;right:8px;top:50%;-webkit-transform:translateY(-48%);transform:translateY(-48%)}.multi-select-container--open .multi-select-menu{display:block}.multi-select-container--open .multi-select-button:after{border-width:0 .4em .4em;border-color:transparent transparent #999}.multi-select-container--positioned .multi-select-menu{-webkit-box-sizing:border-box;box-sizing:border-box}.multi-select-container--positioned .multi-select-menu label{white-space:normal}.orderable-toggle-wrapper{display:none}.orderable-toggle-wrapper--active{display:inline-block}.orderable-element--disabled{opacity:.3;position:relative}.orderable-element--disabled:after{content:'';position:absolute;top:0;left:0;right:0;bottom:0}.iconic-onboard-modal-setting__field-section{margin:1em 0}.orderable-time{white-space:nowrap}.orderable-time__select{display:inline-block!important;width:auto!important}#orderable_settings_store_general_service_hours_pickup_same_label{margin:5px 4px 20px;display:inline-block}.wpsf-section .form-table td p{margin:0 0 15px}.wpsf-section .form-table td p:last-child{margin-bottom:0}body .wpsf-tab .postbox h2{background:#0A2135}body input.datepicker{background-color:#fff!important}.wpsf-section-description--getting_started+table th{display:none}.orderable-ui-hide{display:none!important}[v-cloak]{display:none}.orderable-fields-row{background:#fff;border:1px solid #d8dbdf;border-radius:8px;margin-bottom:15px;overflow:visible}.orderable-fields-row:after{content:"";display:table}.orderable-fields-row:hover .orderable-fields-row__header-action{visibility:visible}.orderable-fields-row__header{padding:12px 15px;display:grid;grid-template-columns:34px auto 68px;-ms-user-select:none;user-select:none;-moz-user-select:none;-webkit-user-select:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.orderable-fields-row__header-title{cursor:pointer}.orderable-fields-row__header-title h3{margin-top:0;margin-bottom:0;font-size:14px;min-height:19px}.orderable-fields-row__header-title span{font-size:12px;opacity:.8}.orderable-fields-row__header-action{visibility:hidden;text-align:right}.orderable-fields-row__body{display:none;-webkit-transform:scaleY(0);transform:scaleY(0);opacity:0;-webkit-transition:.5s all;transition:.5s all}.orderable-fields-row__body-row{display:-webkit-box;display:-ms-flexbox;display:flex;border-bottom:1px solid #d8dbdf;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.orderable-fields-row__body-row:last-child{border-bottom:none}.orderable-fields-row__body-row-left{background:#f4f5f6;padding:15px;width:20%;-ms-flex-negative:0;flex-shrink:0}.orderable-fields-row__body-row-left h3{margin-top:0;margin-bottom:5px;font-size:14px}.orderable-fields-row__body-row-left p{margin:0}.orderable-fields-row__body-row-right{padding:0 25px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;overflow:visible;-webkit-box-flex:1;-ms-flex:1;flex:1}.orderable-fields-row__body-row-right *{min-width:0}.orderable-fields-row__body-row-right--empty{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.orderable-fields-row--open{border:none}.orderable-fields-row--open .orderable-fields-row__body{display:block;-webkit-transform:scaleY(1);transform:scaleY(1);opacity:1;border:1px solid #d8dbdf;border-top:none;border-radius:0 0 8px 8px;overflow:hidden}.orderable-fields-row--open .orderable-fields-row__header-action .orderable-dashicons:hover{color:#fff!important;opacity:.6}.orderable-fields-row--open .orderable-fields-row__header{background:#0A2135;border:1px solid #0A2135;border-bottom:none;border-radius:8px 8px 0 0}.orderable-fields-row--open .orderable-fields-row__header,.orderable-fields-row--open .orderable-fields-row__header h3{color:#fff}.orderable-fields-row--meta{border:none;padding:0;border-radius:0;margin:-6px -12px -12px}.orderable-fields-row--meta .orderable-fields-row__body{display:block;-webkit-transform:scaleY(1);transform:scaleY(1);opacity:1}.orderable-fields-row--meta .orderable-fields-row__body-row{grid-template-columns:30% 70%}.orderable-fields-row--empty{padding:30px 15px;text-align:center}.orderable-fields-row--empty p:last-child{margin-bottom:0}.orderable-fields-row textarea{margin:20px 0;min-height:100px;min-width:300px}.orderable-fields-options{width:100%;margin:20px 0;overflow-x:scroll}.orderable-fields-options__row{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;margin:0 0 15px;background:#F4F5F6;border-radius:8px;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-fields-options__row input[type=text],.orderable-fields-options__row input[type=number],.orderable-fields-options__row select{max-width:100%;width:100%}.orderable-fields-options__row input[type=checkbox],.orderable-fields-options__row input[type=radio]{margin:-2px 4px 0 0}.orderable-fields-options__row-fields{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;margin:0;-webkit-box-flex:1;-ms-flex:1;flex:1}.orderable-fields-options__row-fields-row{display:-webkit-box;display:-ms-flexbox;display:flex;margin:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;-ms-flex-preferred-size:50%;flex-basis:50%}@media (max-width:1090px){.orderable-fields-options__row-fields-row{-webkit-box-align:normal;-ms-flex-align:normal;align-items:normal;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media (max-width:1440px){.orderable-fields-options__row-fields-row{-ms-flex-preferred-size:100%;flex-basis:100%;border-bottom:1px solid #d8dbdf;border-right:none}.orderable-fields-options__row-fields-row:last-child{border-bottom:none}}.orderable-fields-options__row-field{-ms-flex-preferred-size:50%;flex-basis:50%;margin:0;padding:8px 8px 10px;border-right:1px solid #d8dbdf}.orderable-fields-options__row-fields-row:last-child .orderable-fields-options__row-field:last-child{border-right:none}.orderable-fields-options__row-field-spacer{height:30px;line-height:30px}.orderable-fields-options__row-field--visual{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.orderable-fields-options__row-field--full{-ms-flex-preferred-size:100%;flex-basis:100%}@media (max-width:1440px){.orderable-fields-options__row-field--full,.orderable-fields-options__row-field:last-child{border-right:none}}@media (max-width:1090px){.orderable-fields-options__row-field{border-right:none;border-bottom:1px solid #d8dbdf}.orderable-fields-options__row-field--full,.orderable-fields-options__row-field:last-child{border-bottom:none}}.orderable-fields-options__row-field-label{font-weight:600;display:block;margin:0 0 4px}.orderable-fields-options__row-field-label--inline{margin:0}.orderable-fields-options__row-type{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.orderable-fields-options__row-visual{margin:0 0 -4px 10px}@media (max-width:782px){.orderable-fields-options__row-field-spacer{height:40px;line-height:40px}.orderable-fields-options__row-visual{margin-bottom:0}}.orderable-fields-options__row-action,.orderable-fields-options__row-drag{min-width:20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 10px;-webkit-box-sizing:content-box;box-sizing:content-box}.orderable-fields-options__row-drag{border-right:1px solid #d8dbdf}.orderable-fields-options__row-action{border-left:1px solid #d8dbdf}.orderable-fields-options__grid{display:grid;grid-template-columns:20px 1fr 80px 45px 1fr 70px 20px;grid-auto-columns:1fr;grid-auto-flow:column;grid-gap:20px}.orderable-fields-options__grid--select{grid-template-columns:20px repeat(2,1fr) 70px 20px}.orderable-fields-options__header{font-weight:700;margin-bottom:15px}.orderable-fields-options__bullets{margin:0}.orderable-fields-options__bullets li:last-child{margin-bottom:0}.orderable-fields-option__empty{display:inline-block;width:40px;height:40px}input[type=color].orderable-fields-option-color{width:40px;max-width:40px;border:1px solid #d8dbdf;border-radius:8px;padding:3px;height:40px;display:block;margin:0;cursor:pointer}input[type=color].orderable-fields-option-color::-webkit-color-swatch-wrapper{padding:0}input[type=color].orderable-fields-option-color::-webkit-color-swatch{border:none;border-radius:5px}input[type=color].orderable-fields-option-color:focus,input[type=color].orderable-fields-option-color:hover{outline:0;border-color:#7E8993;-webkit-box-shadow:none;box-shadow:none}.orderable-fields-option-img__dummy{position:relative;width:40px;text-align:center;height:40px;line-height:40px;font-size:24px;color:#0073aa;border:1px solid #d8dbdf;border-radius:8px;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-fields-option-img__dummy:hover{color:#006799;border-color:#7E8993}.orderable-fields-option-img__img-wrapper{position:relative;width:40px;max-width:40px;border:1px solid #d8dbdf;border-radius:8px;padding:3px;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-fields-option-img__img{width:100%;height:auto;border-radius:5px;display:block}.orderable-fields-option-img__delete{position:absolute;top:-6px;right:-6px;color:#fff;background:#dc3232;border-radius:100%;padding:4px;font-size:14px;line-height:14px;width:14px;height:14px;border:3px solid #fff;-webkit-box-sizing:content-box;box-sizing:content-box}.orderable-fields-option-img__delete:hover{background:#a00;color:#fff!important}.orderable-pro-modal{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.orderable-pro-modal__content{text-align:center;padding:20px;margin:auto 0}.orderable-pointer .wp-pointer-content h3{background:#F5F0FE;border-radius:8px 8px 0 0;color:#1d2327;border-color:#BF9EF9;padding-left:50px}.orderable-pointer .wp-pointer-content h3:before{background-color:#7031F5;color:#fff;font-size:16px;height:26px;width:26px;line-height:26px;top:12px}.orderable-pointer.wp-pointer-bottom .wp-pointer-arrow,.orderable-pointer.wp-pointer-top .wp-pointer-arrow,.orderable-pointer.wp-pointer-undefined .wp-pointer-arrow{left:30px}.orderable-pointer.wp-pointer-top .wp-pointer-arrow,.orderable-pointer.wp-pointer-undefined .wp-pointer-arrow{border-bottom-color:#bf9ff9}.orderable-pointer.wp-pointer-top .wp-pointer-arrow-inner,.orderable-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#F5F0FE}.orderable-pointer .wp-pointer-content{border-radius:8px}.wp-core-ui .orderable-pointer .button-secondary{margin-right:.5em}
     1.orderable-table{table-layout:fixed;max-width:712px;border-collapse:collapse;border-radius:8px;background:#f4f5f6;border:none;width:100%}.orderable-table td,.orderable-table th{width:auto;vertical-align:middle!important}.orderable-table th{padding-top:12px!important;padding-bottom:12px!important}.orderable-table thead,.orderable-table tr{border-bottom:1px solid #d8dbdf}.orderable-table>tbody th{padding-left:14px;border-right:1px solid #d8dbdf}.orderable-table tr.orderable-table__row--last,.orderable-table tr:last-child{border:none}.orderable-table__row--hidden .orderable-table__column:not(.orderable-table__column--always-visible){position:relative}.orderable-table__row--hidden .orderable-table__column:not(.orderable-table__column--always-visible):after{content:'';position:absolute;top:0;left:0;right:0;bottom:0}.orderable-table__row--hidden .orderable-table__column:not(.orderable-table__column--always-visible)>*{opacity:.3}.orderable-table .orderable-table__row--repeatable{border-bottom-color:#fff;border-bottom-width:8px}.orderable-table__column{padding:8px 14px!important;vertical-align:middle!important;text-align:left;border-left:none;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-table__column--checkbox{width:36px!important;padding-right:0!important;border-right:none}.orderable-table__column--label{padding-left:4px!important;width:100px!important}@media (max-width:782px){.orderable-table__column--label{width:auto!important}}.orderable-table__column--medium{width:156px!important}@media (max-width:782px){.orderable-table__column--medium{width:auto!important}}.orderable-table__column--time{width:190px!important}@media (max-width:782px){.orderable-table__column--time{width:auto!important}.orderable-table__column--remove{display:table-cell!important}}.orderable-table__column--remove{width:50px!important;text-align:center}.orderable-table__column--last{width:auto}.orderable-table__column input,.orderable-table__column select{max-width:100%}.orderable-table__no-td-border{border-bottom:none!important}.orderable-table__no-td-border th{border-bottom:1px solid #d8dbdf}.orderable-table__cell--no-padding{padding:0!important}.orderable-table__cell .orderable-table__cell-column{float:left;width:50%;-webkit-box-sizing:border-box;box-sizing:border-box;padding:0 14px}.orderable-table__cell .orderable-table__cell-column--first{padding-left:0}.orderable-table__cell .orderable-table__cell-column--last{padding-right:0}.orderable-table__cell--2-col{overflow:hidden}@media (max-width:782px){.orderable-table__cell{display:table-cell!important}}.orderable-table__fieldset{display:inline-block;margin:0 15px 0 0}.orderable-table__fieldset legend{font-weight:600;margin:0 0 4px;padding:0;color:#23282d}.orderable-table__fieldset--nowrap{white-space:nowrap}.orderable-table__rwd-labels{display:none;margin:0 0 4px;min-width:160px}.orderable-table--child{border-radius:0;background:0 0}.orderable-table--child td:last-child,.orderable-table--child th:last-child{border-right:1px solid #d8dbdf}.orderable-table--compact td,.orderable-table--compact th{padding:8px 14px!important}@media (max-width:782px){.orderable-table--compact th{padding-bottom:4px!important}.orderable-table--compact td{padding-top:0!important}.orderable-table--compact tr:first-child th{padding-top:10px!important}.orderable-table--compact tr.orderable-table__row--last td{padding-bottom:15px!important}}@media (max-width:1210px){.orderable-table--open-hours thead{display:none}.orderable-table--open-hours td,.orderable-table--open-hours th{display:block;width:100%!important;height:auto;margin:0}.orderable-table--open-hours .orderable-table__column--checkbox,.orderable-table--open-hours .orderable-table__column--label{padding-top:20px!important}.orderable-table--open-hours .orderable-table__column--checkbox{width:36px!important;float:left}.orderable-table--open-hours .orderable-table__column--label{float:left;width:auto!important;font-weight:700}.orderable-table--open-hours .orderable-table__column--time{clear:both}.orderable-table--open-hours .orderable-table__column--last{padding-bottom:20px!important}.orderable-table--open-hours .orderable-table__rwd-labels{display:inline-block}}@media (max-width:782px){.orderable-table--open-hours .orderable-table__column--checkbox{width:45px!important}.orderable-table--open-hours .orderable-table__column--label{line-height:21px}.orderable-table--open-hours .orderable-table__rwd-labels{display:block}}.orderable-admin-button,body .submit .button-primary{background:#2271b6;border:none;padding:8px 15px;border-radius:8px;line-height:1.3;font-weight:600;cursor:pointer;-webkit-box-shadow:none;box-shadow:none;margin:0;text-decoration:none;display:inline-block;color:#fff;font-size:14px}.orderable-admin-button:active,.orderable-admin-button:focus,.orderable-admin-button:hover,body .submit .button-primary:active,body .submit .button-primary:focus,body .submit .button-primary:hover{background:#164975;color:#fff}.orderable-admin-button:focus,body .submit .button-primary:focus{outline:0;-webkit-box-shadow:none;box-shadow:none}.orderable-admin-button.orderable-trigger-element--active,body .submit .button-primary.orderable-trigger-element--active{background:#0A2135;color:#fff;cursor:default}.orderable-admin-button .dashicons,body .submit .button-primary .dashicons{width:16px;height:16px;font-size:16px;vertical-align:middle}.orderable-admin-button--pro .dashicons{line-height:12px}.orderable-toolbar{margin:0 0 15px;display:block;overflow:hidden}.orderable-toolbar .orderable-admin-button{margin-right:4px}.orderable-toolbar__actions{display:inline-block}.multi-select-container{display:inline-block;position:relative;width:100%;max-width:100%}.multi-select-menu{position:absolute;left:0;top:17px;z-index:1;float:left;min-width:100%;background:#fff;margin:1em 0;border:1px solid #aaa;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.2);box-shadow:0 1px 3px rgba(0,0,0,.2);display:none;padding:4px 0}.multi-select-menuitem{display:block;font-size:14px;padding:4px 10px 4px 36px;white-space:nowrap;position:relative}.multi-select-menuitem--none{padding-left:10px}@media (max-width:782px){.multi-select-menu{top:27px}.multi-select-menuitem{min-height:32px;line-height:32px;padding-left:44px}}.multi-select-menuitem--titled:before{display:block;font-weight:700;content:attr(data-group-title);margin:0 0 .25em -20px}.multi-select-menuitem--titledsr:before{display:block;font-weight:700;content:attr(data-group-title);border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.multi-select-presets{border-bottom:1px solid #ddd}.multi-select-menuitem input{position:absolute;left:10px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);margin:0!important}.multi-select-button{display:inline-block;font-size:14px;padding:0 28px 0 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:-.5em;background-color:#fff;border:1px solid #7e8993;border-radius:4px;-webkit-box-shadow:0 0 0 transparent;box-shadow:0 0 0 transparent;cursor:pointer;line-height:2;min-height:30px;position:relative;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}@media (max-width:782px){.multi-select-button{min-height:40px;height:40px;line-height:38px}}.multi-select-button:focus,.multi-select-container--open .multi-select-button{border-color:#007cba;-webkit-box-shadow:0 0 0 1px #007cba;box-shadow:0 0 0 1px #007cba;outline:transparent solid 2px}.multi-select-button:after{content:"";display:inline-block;width:0;height:0;border-style:solid;border-width:6px 6px 0;border-color:#999 transparent transparent;vertical-align:.1em;position:absolute;right:8px;top:50%;-webkit-transform:translateY(-48%);transform:translateY(-48%)}.multi-select-container--open .multi-select-menu{display:block}.multi-select-container--open .multi-select-button:after{border-width:0 .4em .4em;border-color:transparent transparent #999}.multi-select-container--positioned .multi-select-menu{-webkit-box-sizing:border-box;box-sizing:border-box}.multi-select-container--positioned .multi-select-menu label{white-space:normal}.orderable-toggle-wrapper{display:none}.orderable-toggle-wrapper--active{display:inline-block}.orderable-element--disabled{opacity:.3;position:relative}.orderable-element--disabled:after{content:'';position:absolute;top:0;left:0;right:0;bottom:0}.iconic-onboard-modal-setting__field-section{margin:1em 0}.orderable-time{white-space:nowrap}.orderable-time__select{display:inline-block!important;width:auto!important}#orderable_settings_store_general_service_hours_pickup_same_label{margin:5px 4px 20px;display:inline-block}.wpsf-section .form-table td p{margin:0 0 15px}.wpsf-section .form-table td p:last-child{margin-bottom:0}body .wpsf-tab .postbox h2{background:#0A2135}body input.datepicker{background-color:#fff!important}.wpsf-section-description--getting_started+table th{display:none}.orderable-ui-hide{display:none!important}[v-cloak]{display:none}.orderable-fields-row{background:#fff;border:1px solid #d8dbdf;border-radius:8px;margin-bottom:15px;overflow:visible}.orderable-fields-row:after{content:"";display:table}.orderable-fields-row:hover .orderable-fields-row__header-action{visibility:visible}.orderable-fields-row__header{padding:12px 15px;display:grid;grid-template-columns:34px auto 68px;-ms-user-select:none;user-select:none;-moz-user-select:none;-webkit-user-select:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.orderable-fields-row__header-title{cursor:pointer}.orderable-fields-row__header-title h3{margin-top:0;margin-bottom:0;font-size:14px;min-height:19px}.orderable-fields-row__header-title span{font-size:12px;opacity:.8}.orderable-fields-row__header-action{visibility:hidden;text-align:right}.orderable-fields-row__body{display:none;-webkit-transform:scaleY(0);transform:scaleY(0);opacity:0;-webkit-transition:.5s all;transition:.5s all}.orderable-fields-row__body-row{display:-webkit-box;display:-ms-flexbox;display:flex;border-bottom:1px solid #d8dbdf;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.orderable-fields-row__body-row:last-child{border-bottom:none}.orderable-fields-row__body-row-left{background:#f4f5f6;padding:15px;width:20%;-ms-flex-negative:0;flex-shrink:0}.orderable-fields-row__body-row-left h3{margin-top:0;margin-bottom:5px;font-size:14px}.orderable-fields-row__body-row-left p{margin:0}.orderable-fields-row__body-row-right{padding:0 25px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;overflow:visible;-webkit-box-flex:1;-ms-flex:1;flex:1}.orderable-fields-row__body-row-right *{min-width:0}.orderable-fields-row__body-row-right--empty{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.orderable-fields-row--open{border:none}.orderable-fields-row--open .orderable-fields-row__body{display:block;-webkit-transform:scaleY(1);transform:scaleY(1);opacity:1;border:1px solid #d8dbdf;border-top:none;border-radius:0 0 8px 8px;overflow:hidden}.orderable-fields-row--open .orderable-fields-row__header-action .orderable-dashicons:hover{color:#fff!important;opacity:.6}.orderable-fields-row--open .orderable-fields-row__header{background:#0A2135;border:1px solid #0A2135;border-bottom:none;border-radius:8px 8px 0 0}.orderable-fields-row--open .orderable-fields-row__header,.orderable-fields-row--open .orderable-fields-row__header h3{color:#fff}.orderable-fields-row--meta{border:none;padding:0;border-radius:0;margin:-6px -12px -12px}.orderable-fields-row--meta .orderable-fields-row__body{display:block;-webkit-transform:scaleY(1);transform:scaleY(1);opacity:1}.orderable-fields-row--meta .orderable-fields-row__body-row{grid-template-columns:30% 70%}.orderable-fields-row--empty{padding:30px 15px;text-align:center}.orderable-fields-row--empty p:last-child{margin-bottom:0}.orderable-fields-row textarea{margin:20px 0;min-height:100px;min-width:300px}.orderable-fields-options{width:100%;margin:20px 0;overflow-x:scroll}.orderable-fields-options__row{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;margin:0 0 15px;background:#F4F5F6;border-radius:8px;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-fields-options__row input[type=text],.orderable-fields-options__row input[type=number],.orderable-fields-options__row select{max-width:100%;width:100%}.orderable-fields-options__row input[type=checkbox],.orderable-fields-options__row input[type=radio]{margin:-2px 4px 0 0}.orderable-fields-options__row-fields{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;margin:0;-webkit-box-flex:1;-ms-flex:1;flex:1}.orderable-fields-options__row-fields-row{display:-webkit-box;display:-ms-flexbox;display:flex;margin:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;-ms-flex-preferred-size:50%;flex-basis:50%}@media (max-width:1090px){.orderable-fields-options__row-fields-row{-webkit-box-align:normal;-ms-flex-align:normal;align-items:normal;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media (max-width:1440px){.orderable-fields-options__row-fields-row{-ms-flex-preferred-size:100%;flex-basis:100%;border-bottom:1px solid #d8dbdf;border-right:none}.orderable-fields-options__row-fields-row:last-child{border-bottom:none}}.orderable-fields-options__row-field{-ms-flex-preferred-size:50%;flex-basis:50%;margin:0;padding:8px 8px 10px;border-right:1px solid #d8dbdf}.orderable-fields-options__row-fields-row:last-child .orderable-fields-options__row-field:last-child{border-right:none}.orderable-fields-options__row-field-spacer{height:30px;line-height:30px}.orderable-fields-options__row-field--visual{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.orderable-fields-options__row-field--full{-ms-flex-preferred-size:100%;flex-basis:100%}@media (max-width:1440px){.orderable-fields-options__row-field--full,.orderable-fields-options__row-field:last-child{border-right:none}}@media (max-width:1090px){.orderable-fields-options__row-field{border-right:none;border-bottom:1px solid #d8dbdf}.orderable-fields-options__row-field--full,.orderable-fields-options__row-field:last-child{border-bottom:none}}.orderable-fields-options__row-field-label{font-weight:600;display:block;margin:0 0 4px}.orderable-fields-options__row-field-label--inline{margin:0}.orderable-fields-options__row-type{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.orderable-fields-options__row-visual{margin:0 0 -4px 10px}@media (max-width:782px){.orderable-fields-options__row-field-spacer{height:40px;line-height:40px}.orderable-fields-options__row-visual{margin-bottom:0}}.orderable-fields-options__row-action,.orderable-fields-options__row-drag{min-width:20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 10px;-webkit-box-sizing:content-box;box-sizing:content-box}.orderable-fields-options__row-drag{border-right:1px solid #d8dbdf}.orderable-fields-options__row-action{border-left:1px solid #d8dbdf}.orderable-fields-options__grid{display:grid;grid-template-columns:20px 1fr 80px 45px 1fr 70px 20px;grid-auto-columns:1fr;grid-auto-flow:column;grid-gap:20px}.orderable-fields-options__grid--select{grid-template-columns:20px repeat(2,1fr) 70px 20px}.orderable-fields-options__header{font-weight:700;margin-bottom:15px}.orderable-fields-options__bullets{margin:0}.orderable-fields-options__bullets li:last-child{margin-bottom:0}.orderable-fields-option__empty{display:inline-block;width:40px;height:40px}input[type=color].orderable-fields-option-color{width:40px;max-width:40px;border:1px solid #d8dbdf;border-radius:8px;padding:3px;height:40px;display:block;margin:0;cursor:pointer}input[type=color].orderable-fields-option-color::-webkit-color-swatch-wrapper{padding:0}input[type=color].orderable-fields-option-color::-webkit-color-swatch{border:none;border-radius:5px}input[type=color].orderable-fields-option-color:focus,input[type=color].orderable-fields-option-color:hover{outline:0;border-color:#7E8993;-webkit-box-shadow:none;box-shadow:none}.orderable-fields-option-img__dummy{position:relative;width:40px;text-align:center;height:40px;line-height:40px;font-size:24px;color:#0073aa;border:1px solid #d8dbdf;border-radius:8px;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-fields-option-img__dummy:hover{color:#006799;border-color:#7E8993}.orderable-fields-option-img__img-wrapper{position:relative;width:40px;max-width:40px;border:1px solid #d8dbdf;border-radius:8px;padding:3px;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-fields-option-img__img{width:100%;height:auto;border-radius:5px;display:block}.orderable-fields-option-img__delete{position:absolute;top:-6px;right:-6px;color:#fff;background:#dc3232;border-radius:100%;padding:4px;font-size:14px;line-height:14px;width:14px;height:14px;border:3px solid #fff;-webkit-box-sizing:content-box;box-sizing:content-box}.orderable-fields-option-img__delete:hover{background:#a00;color:#fff!important}.orderable-pro-modal{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.orderable-pro-modal__content{text-align:center;padding:20px;margin:auto 0}.orderable-pointer .wp-pointer-content h3{background:#F5F0FE;border-radius:8px 8px 0 0;color:#1d2327;border-color:#BF9EF9;padding-left:50px}.orderable-pointer .wp-pointer-content h3:before{background-color:#7031F5;color:#fff;font-size:16px;height:26px;width:26px;line-height:26px;top:12px}.orderable-pointer.wp-pointer-bottom .wp-pointer-arrow,.orderable-pointer.wp-pointer-top .wp-pointer-arrow,.orderable-pointer.wp-pointer-undefined .wp-pointer-arrow{left:30px}.orderable-pointer.wp-pointer-top .wp-pointer-arrow,.orderable-pointer.wp-pointer-undefined .wp-pointer-arrow{border-bottom-color:#bf9ff9}.orderable-pointer.wp-pointer-top .wp-pointer-arrow-inner,.orderable-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#F5F0FE}.orderable-pointer .wp-pointer-content{border-radius:8px}.wp-core-ui .orderable-pointer .button-secondary{margin-right:.5em}
  • orderable/trunk/assets/admin/js/main.js

    r2641784 r2709284  
    522522             * On remove row.
    523523             */
    524             $( document.body ).on( 'orderable-remove-row', function( e, data ) {
     524            $( document.body ).on( 'orderable-remove-row', function ( e, data ) {
    525525                var $button = $( data.trigger_element ),
    526                     $row = $button.closest( 'tr' );
    527 
    528                 $row.remove();
     526                    $row = $button.closest( 'tr' ),
     527                    $tbody = $button.closest( 'tbody' ),
     528                    row_count = $tbody.find( '>tr' ).length;
     529
     530                if ( row_count === 1 ) {
     531                    $row.find( 'input' ).val( '' );
     532                    $row.find( 'input[type="checkbox"], input[type="radio"]' ).prop( 'checked', false );
     533
     534                    $row.find( 'select' ).each(function() {
     535                        if ( $( this ).hasClass( 'orderable-select--multi-select' ) ) {
     536                            return;
     537                        }
     538
     539                        this.selectedIndex = 0;
     540                        $( this ).trigger( 'change' );
     541                    } );
     542
     543                    $row.find( '.multi-select-container input[type="checkbox"]' ).trigger( 'change' );
     544                } else {
     545                    $row.remove();
     546                }
    529547
    530548                $( document ).trigger( 'orderable-add-last-row-class' );
     
    561579                    selected = $trigger_element.val();
    562580
    563                 if ( $parent.length <= 0 || typeof targets[ selected ] === 'undefined' ) {
     581                if ( $parent.length <= 0 || typeof targets === 'undefined' || typeof targets[ selected ] === 'undefined' ) {
    564582                    return;
    565583                }
     
    618636            $last_rows.removeClass( last_row_class );
    619637            $last_row.addClass( last_row_class );
    620         }
     638        },
    621639    };
    622640
  • orderable/trunk/assets/admin/js/main.min.js

    r2641784 r2709284  
    1 !function(n,e){"use strict";var t=function(){n(e.body).on("change",".orderable-table--product-lists input, .orderable-table--product-lists select",function(e){var t=n(this).closest(".orderable-table__row--repeatable"),r=t.find(".orderable-field--product-list-shortcode"),o={categories:"",layout:"grid",images:"true"},t={categories:t.find(".orderable-select--categories").val().toString(),layout:t.find(".orderable-select--layout").val().toString(),images:t.find(".orderable-checkbox--images").is(":checked").toString()},a="[orderable";n.each(t,function(e,t){t!==o[e]&&(a+=" "+e+'="'+t+'"')}),a+="]",r.val(a)})};n(e).ready(t)}(jQuery,document),function(n,e){"use strict";var r={on_ready:function(){r.init(n(".orderable-select--multi-select")),n(e).on("orderable-init-multiselects",function(e,t){void 0!==t.selects&&r.init(t.selects)}),n(e).on("orderable-destroy-multiselects",function(e,t){void 0!==t.selects&&r.destroy(t.selects)})},init:function(e){e.multiSelect(),e.each(function(e,t){var r=n(t),o=r.siblings(".multi-select-container"),a=o.find(".multi-select-menuitem--none"),t=r.data("orderable-select-none-option");a.remove();r=o.find(".multi-select-menuitem"),a=o.find(".multi-select-menuitems input:disabled").parent();r.show(),a.hide(),r.length===a.length&&t&&o.find(".multi-select-menuitems").append('<span class="multi-select-menuitem multi-select-menuitem--none">'+t+"</span>")})},destroy:function(e){e.siblings(".multi-select-container").remove(),e.data("plugin_multiSelect",!1)}};n(e).ready(r.on_ready)}(jQuery,document),function(a,e){"use strict";var r={on_ready:function(){a(e.body).on("iconic_onboard_wait_complete",r.init.woo_installed)},init:{woo_installed:function(e,t){void 0!==t&&"install_plugin"===t.wait_event&&"woocommerce"===t.json.plugin_data["repo-slug"]&&r.populate_woo_fields()}},populate_woo_fields:function(){var e={default_country:{type:"select",selector:"select#iconic_onboard_default_country"},business_name:{type:"text",selector:"input#iconic_onboard_business_name"},business_address:{type:"text",selector:"input#iconic_onboard_business_address"},business_address_2:{type:"text",selector:"input#iconic_onboard_business_address_2"},business_city:{type:"text",selector:"input#iconic_onboard_business_city"},business_postcode:{type:"text",selector:"input#iconic_onboard_business_postcode"}};a.post(ajaxurl,{action:"orderable_get_onboard_woo_fields",fields:e}).done(function(o){try{o.success&&a.each(e,function(e,t){var r=a(t.selector);r.length<=0||void 0===o.data[e]||("select"===t.type?r.html(o.data[e]):r.val(o.data[e]))})}catch(e){console.log(o),console.log(e),alert("Couldn't save.")}}).fail(function(){alert("Couldn't save. Are you connected to the internet? ")}).always(function(){})}};a(e).ready(r.on_ready)}(jQuery,document),jQuery(document).ready(function(){setTimeout(function(){"undefined"!=typeof orderable_pointers&&jQuery.each(orderable_pointers.pointers,function(e){return function e(t){var r,o,n=orderable_pointers.pointers[t];void 0!==n&&(r=jQuery.extend(n.options,{pointerClass:"wp-pointer wc-pointer orderable-pointer",close:function(){jQuery.post(orderable_pointers.ajax_url,{pointer:t,action:"dismiss-wp-pointer"}),n&&n.next&&orderable_pointers.pointers[n.next]&&setTimeout(function(){e(n.next)},250)},skip:function(){var e=document.querySelectorAll(".wp-pointer.orderable-pointer");Array.from(e).forEach(function(e){e.remove()}),jQuery.post(orderable_pointers.ajax_url,{pointer:"orderable-tour-dismissed",action:"dismiss-wp-pointer"})},buttons:function(e,t){var r=n&&n.next&&orderable_pointers.pointers[n.next]?orderable_pointers.i18n.next:orderable_pointers.i18n.close,o=jQuery('<a class="button button-primary" href="#">'+r+"</a>"),a=jQuery('<div class="wc-pointer-buttons" />'),r=orderable_pointers.i18n.skip,r=jQuery('<a class="button button-secondary" href="#">'+r+"</a>");return o.bind("click.pointer",function(e){e.preventDefault(),t.element.pointer("close")}),r.bind("click.pointer",function(e){e.preventDefault(),n.options.skip()}),a.append(o),a.append(r),a}}),(o=jQuery(n.target).pointer(r)).pointer("open"),n.next_trigger&&jQuery(n.next_trigger.target).on(n.next_trigger.event,function(){setTimeout(function(){o.pointer("close")},400)}))}(e),!1})},800)}),function(e,t){"use strict";var r={on_ready:function(){e(t.body).on("orderable-pro-modal",r.trigger_pro_modal)},trigger_pro_modal:function(){console.log("Pro only."),tb_show("Pro Feature","#TB_inline?inlineId=orderable-pro-modal")}};e(t).ready(r.on_ready)}(jQuery,document),function(l,i){"use strict";var e=function(){l(i.body).on("change",".orderable-enable-day",function(e){var t=l(this),r=t.data("orderable-day"),o=t.is(":checked"),t=l(".orderable-select--days");t.find('option[value="'+r+'"]').attr("disabled",!o).attr("selected",!1),l(i).trigger("orderable-destroy-multiselects",{selects:t}),l(i).trigger("orderable-init-multiselects",{selects:t})}),l(i.body).on("change",'[name*="\\[store_general_services\\]"]',function(e){var t=l(this),r=t.val(),o=t.is(":checked"),a=l(".orderable-toggle-wrapper--"+r+', button[data-orderable-wrapper="'+r+'"]'),t="orderable-ui-hide",r=l(".orderable-notice--select-service");o?a.removeClass(t):a.addClass(t);a=l('[name*="\\[store_general_services\\]"]:checked');a.length<=0?r.removeClass(t):(r.addClass(t),n=a.eq(0).val(),l('button[data-orderable-wrapper="'+n+'"]').click());var r=l("#orderable_settings_store_general_service_hours_pickup_same"),n=r.data("default-state");void 0===n&&(n=r.is(":checked"),r.data("default-state",n)),1===a.length&&"pickup"===a.val()?(r.prop("checked",!1).parent().addClass(t),l(i.body).trigger("orderable-toggle-element",{trigger_element:r[0],add_class:!1})):(r.prop("checked",n).parent().removeClass(t),l(i.body).trigger("orderable-toggle-element",{trigger_element:r[0],add_class:n})),l(i).trigger("orderable-add-last-row-class")}),l(i.body).on("change","#orderable_settings_store_general_service_hours_pickup_same",function(e){l(this).data("default-state",l(this).is(":checked"))}),l(".orderable-enable-day").on("change",function(){jQuery(this).closest("tr").toggleClass("orderable-table__row--hidden",!this.checked)})};l(i).ready(e)}(jQuery,document),function(a,n){"use strict";var e={on_ready:function(){a(n.body).on("click change","[data-orderable-trigger]",function(e){var t=a(this),r=t.data("orderable-trigger");"click"===e.type&&(t.is("select")||t.is("input")||t.is("label"))||((t.is("button")||t.is("a"))&&e.preventDefault(),a(n.body).trigger("orderable-"+r,{trigger_element:t}))}),a(n.body).on("orderable-new-row",function(e,t){var r=a(t.trigger_element),o=a(r.data("orderable-target")).find(".orderable-table__body"),t=o.find(".orderable-table__row--repeatable:last-child"),r=parseInt(t.data("orderable-index"))+1,r=t[0].outerHTML.replace(/\[\d+\]/gm,"["+r+"]").replace(/data-orderable-index="\d+"/gm,'data-orderable-index="'+r+'"');o.append(r);r=o.find(".orderable-table__row--repeatable:last-child");r.find("input").not('input[type="checkbox"]').val(""),r.find(".hasDatepicker").each(function(e,t){a(t).removeClass("hasDatepicker").attr("id","")}),r.find("select").each(function(e,t){var r=a(t),o=r.find('option[value=""]'),t=r.hasClass("orderable-select--multi-select"),o=o.length||t?"":r.find("option:first-child").val();r.val(o),t&&r.change()}),r.find('input[type="checkbox"]').prop("checked",!1),r.find(".multi-select-container").remove(),a(n).trigger("orderable-init-multiselects",{selects:o.find(".orderable-select--multi-select")}),o.find('[data-orderable-trigger="toggle-element-select"]').change(),a(n).trigger("orderable-add-last-row-class")}),a(n.body).on("orderable-remove-row",function(e,t){a(t.trigger_element).closest("tr").remove(),a(n).trigger("orderable-add-last-row-class")}),a(n.body).on("orderable-toggle-element",function(e,t){t.add_class=void 0!==t.add_class?t.add_class:null;var r=a(t.trigger_element),o=a(r.data("orderable-target")),r=r.data("orderable-toggle-class");null===t.add_class?o.toggleClass(r):!0===t.add_class?o.addClass(r):!1===t.add_class&&o.removeClass(r),a(n).trigger("orderable-add-last-row-class")}),a(n.body).on("orderable-toggle-element-select",function(e,t){var r=a(t.trigger_element),o=r.closest(r.data("orderable-parent")),t=r.data("orderable-target"),r=r.val();o.length<=0||void 0===t[r]||(a.each(t[r],function(e,t){t=o.find(t);"show"===e?t.show():"hide"===e&&t.hide()}),a(n).trigger("orderable-add-last-row-class"))}),a(n.body).on("orderable-toggle-wrapper",function(e,t){var r=a(t.trigger_element),o=r.data("orderable-wrapper"),t=r.data("orderable-wrapper-group"),r=a(".orderable-toggle-wrapper--"+o+'[data-orderable-wrapper-group="'+t+'"]');a('.orderable-toggle-wrapper[data-orderable-wrapper-group="'+t+'"]').removeClass("orderable-toggle-wrapper--active"),r.addClass("orderable-toggle-wrapper--active"),a('[data-orderable-wrapper-group="'+t+'"]').removeClass("orderable-trigger-element--active"),a('[data-orderable-wrapper="'+o+'"]').addClass("orderable-trigger-element--active"),a(n).trigger("orderable-add-last-row-class")}),a(n).on("orderable-add-last-row-class",e.add_last_row_class),a(n).trigger("orderable-add-last-row-class")},add_last_row_class:function(){var e=a(".orderable-table"),t="orderable-table__row--last",r=e.find("."+t),e=e.find("tbody > tr:visible:last");r.removeClass(t),e.addClass(t)}};a(n).ready(e.on_ready)}(jQuery,document);
     1!function(n,e){"use strict";var t=function(){n(e.body).on("change",".orderable-table--product-lists input, .orderable-table--product-lists select",function(e){var t=n(this).closest(".orderable-table__row--repeatable"),r=t.find(".orderable-field--product-list-shortcode"),o={categories:"",layout:"grid",images:"true"},t={categories:t.find(".orderable-select--categories").val().toString(),layout:t.find(".orderable-select--layout").val().toString(),images:t.find(".orderable-checkbox--images").is(":checked").toString()},a="[orderable";n.each(t,function(e,t){t!==o[e]&&(a+=" "+e+'="'+t+'"')}),a+="]",r.val(a)})};n(e).ready(t)}(jQuery,document),function(n,e){"use strict";var r={on_ready:function(){r.init(n(".orderable-select--multi-select")),n(e).on("orderable-init-multiselects",function(e,t){void 0!==t.selects&&r.init(t.selects)}),n(e).on("orderable-destroy-multiselects",function(e,t){void 0!==t.selects&&r.destroy(t.selects)})},init:function(e){e.multiSelect(),e.each(function(e,t){var t=n(t),r=t.siblings(".multi-select-container"),o=r.find(".multi-select-menuitem--none"),t=t.data("orderable-select-none-option"),o=(o.remove(),r.find(".multi-select-menuitem")),a=r.find(".multi-select-menuitems input:disabled").parent();o.show(),a.hide(),o.length===a.length&&t&&r.find(".multi-select-menuitems").append('<span class="multi-select-menuitem multi-select-menuitem--none">'+t+"</span>")})},destroy:function(e){e.siblings(".multi-select-container").remove(),e.data("plugin_multiSelect",!1)}};n(e).ready(r.on_ready)}(jQuery,document),function(a,e){"use strict";var r={on_ready:function(){a(e.body).on("iconic_onboard_wait_complete",r.init.woo_installed)},init:{woo_installed:function(e,t){void 0!==t&&"install_plugin"===t.wait_event&&"woocommerce"===t.json.plugin_data["repo-slug"]&&r.populate_woo_fields()}},populate_woo_fields:function(){var e={default_country:{type:"select",selector:"select#iconic_onboard_default_country"},business_name:{type:"text",selector:"input#iconic_onboard_business_name"},business_address:{type:"text",selector:"input#iconic_onboard_business_address"},business_address_2:{type:"text",selector:"input#iconic_onboard_business_address_2"},business_city:{type:"text",selector:"input#iconic_onboard_business_city"},business_postcode:{type:"text",selector:"input#iconic_onboard_business_postcode"}};a.post(ajaxurl,{action:"orderable_get_onboard_woo_fields",fields:e}).done(function(o){try{o.success&&a.each(e,function(e,t){var r=a(t.selector);r.length<=0||void 0===o.data[e]||("select"===t.type?r.html(o.data[e]):r.val(o.data[e]))})}catch(e){console.log(o),console.log(e),alert("Couldn't save.")}}).fail(function(){alert("Couldn't save. Are you connected to the internet? ")}).always(function(){})}};a(e).ready(r.on_ready)}(jQuery,document),jQuery(document).ready(function(){setTimeout(function(){"undefined"!=typeof orderable_pointers&&jQuery.each(orderable_pointers.pointers,function(e){return function e(t){var r,o,n=orderable_pointers.pointers[t];void 0!==n&&(r=jQuery.extend(n.options,{pointerClass:"wp-pointer wc-pointer orderable-pointer",close:function(){jQuery.post(orderable_pointers.ajax_url,{pointer:t,action:"dismiss-wp-pointer"}),n&&n.next&&orderable_pointers.pointers[n.next]&&setTimeout(function(){e(n.next)},250)},skip:function(){var e=document.querySelectorAll(".wp-pointer.orderable-pointer");Array.from(e).forEach(function(e){e.remove()}),jQuery.post(orderable_pointers.ajax_url,{pointer:"orderable-tour-dismissed",action:"dismiss-wp-pointer"})},buttons:function(e,t){var r=n&&n.next&&orderable_pointers.pointers[n.next]?orderable_pointers.i18n.next:orderable_pointers.i18n.close,r=jQuery('<a class="button button-primary" href="#">'+r+"</a>"),o=jQuery('<div class="wc-pointer-buttons" />'),a=orderable_pointers.i18n.skip,a=jQuery('<a class="button button-secondary" href="#">'+a+"</a>");return r.bind("click.pointer",function(e){e.preventDefault(),t.element.pointer("close")}),a.bind("click.pointer",function(e){e.preventDefault(),n.options.skip()}),o.append(r),o.append(a),o}}),(o=jQuery(n.target).pointer(r)).pointer("open"),n.next_trigger&&jQuery(n.next_trigger.target).on(n.next_trigger.event,function(){setTimeout(function(){o.pointer("close")},400)}))}(e),!1})},800)}),function(e,t){"use strict";var r={on_ready:function(){e(t.body).on("orderable-pro-modal",r.trigger_pro_modal)},trigger_pro_modal:function(){console.log("Pro only."),tb_show("Pro Feature","#TB_inline?inlineId=orderable-pro-modal")}};e(t).ready(r.on_ready)}(jQuery,document),function(n,l){"use strict";var e=function(){n(l.body).on("change",".orderable-enable-day",function(e){var t=n(this),r=t.data("orderable-day"),t=t.is(":checked"),o=n(".orderable-select--days");o.find('option[value="'+r+'"]').attr("disabled",!t).attr("selected",!1),n(l).trigger("orderable-destroy-multiselects",{selects:o}),n(l).trigger("orderable-init-multiselects",{selects:o})}),n(l.body).on("change",'[name*="\\[store_general_services\\]"]',function(e){var t=n(this),r=t.val(),t=t.is(":checked"),r=n(".orderable-toggle-wrapper--"+r+', button[data-orderable-wrapper="'+r+'"]'),o="orderable-ui-hide",a=n(".orderable-notice--select-service"),t=(t?r.removeClass(o):r.addClass(o),n('[name*="\\[store_general_services\\]"]:checked')),a=(t.length<=0?a.removeClass(o):(a.addClass(o),r=t.eq(0).val(),n('button[data-orderable-wrapper="'+r+'"]').click()),n("#orderable_settings_store_general_service_hours_pickup_same")),r=a.data("default-state");void 0===r&&(r=a.is(":checked"),a.data("default-state",r)),1===t.length&&"pickup"===t.val()?(a.prop("checked",!1).parent().addClass(o),n(l.body).trigger("orderable-toggle-element",{trigger_element:a[0],add_class:!1})):(a.prop("checked",r).parent().removeClass(o),n(l.body).trigger("orderable-toggle-element",{trigger_element:a[0],add_class:r})),n(l).trigger("orderable-add-last-row-class")}),n(l.body).on("change","#orderable_settings_store_general_service_hours_pickup_same",function(e){n(this).data("default-state",n(this).is(":checked"))}),n(".orderable-enable-day").on("change",function(){jQuery(this).closest("tr").toggleClass("orderable-table__row--hidden",!this.checked)})};n(l).ready(e)}(jQuery,document),function(a,n){"use strict";var e={on_ready:function(){a(n.body).on("click change","[data-orderable-trigger]",function(e){var t=a(this),r=t.data("orderable-trigger");"click"===e.type&&(t.is("select")||t.is("input")||t.is("label"))||((t.is("button")||t.is("a"))&&e.preventDefault(),a(n.body).trigger("orderable-"+r,{trigger_element:t}))}),a(n.body).on("orderable-new-row",function(e,t){var t=a(t.trigger_element),t=a(t.data("orderable-target")).find(".orderable-table__body"),r=t.find(".orderable-table__row--repeatable:last-child"),o=parseInt(r.data("orderable-index"))+1,r=r[0].outerHTML.replace(/\[\d+\]/gm,"["+o+"]").replace(/data-orderable-index="\d+"/gm,'data-orderable-index="'+o+'"'),o=(t.append(r),t.find(".orderable-table__row--repeatable:last-child"));o.find("input").not('input[type="checkbox"]').val(""),o.find(".hasDatepicker").each(function(e,t){a(t).removeClass("hasDatepicker").attr("id","")}),o.find("select").each(function(e,t){var t=a(t),r=t.find('option[value=""]'),o=t.hasClass("orderable-select--multi-select"),r=r.length||o?"":t.find("option:first-child").val();t.val(r),o&&t.change()}),o.find('input[type="checkbox"]').prop("checked",!1),o.find(".multi-select-container").remove(),a(n).trigger("orderable-init-multiselects",{selects:t.find(".orderable-select--multi-select")}),t.find('[data-orderable-trigger="toggle-element-select"]').change(),a(n).trigger("orderable-add-last-row-class")}),a(n.body).on("orderable-remove-row",function(e,t){var t=a(t.trigger_element),r=t.closest("tr");1===t.closest("tbody").find(">tr").length?(r.find("input").val(""),r.find('input[type="checkbox"], input[type="radio"]').prop("checked",!1),r.find("select").each(function(){a(this).hasClass("orderable-select--multi-select")||(this.selectedIndex=0,a(this).trigger("change"))}),r.find('.multi-select-container input[type="checkbox"]').trigger("change")):r.remove(),a(n).trigger("orderable-add-last-row-class")}),a(n.body).on("orderable-toggle-element",function(e,t){t.add_class=void 0!==t.add_class?t.add_class:null;var r=a(t.trigger_element),o=a(r.data("orderable-target")),r=r.data("orderable-toggle-class");null===t.add_class?o.toggleClass(r):!0===t.add_class?o.addClass(r):!1===t.add_class&&o.removeClass(r),a(n).trigger("orderable-add-last-row-class")}),a(n.body).on("orderable-toggle-element-select",function(e,t){var t=a(t.trigger_element),r=t.closest(t.data("orderable-parent")),o=t.data("orderable-target"),t=t.val();r.length<=0||void 0===o||void 0===o[t]||(a.each(o[t],function(e,t){t=r.find(t);"show"===e?t.show():"hide"===e&&t.hide()}),a(n).trigger("orderable-add-last-row-class"))}),a(n.body).on("orderable-toggle-wrapper",function(e,t){var t=a(t.trigger_element),r=t.data("orderable-wrapper"),t=t.data("orderable-wrapper-group"),o=a(".orderable-toggle-wrapper--"+r+'[data-orderable-wrapper-group="'+t+'"]');a('.orderable-toggle-wrapper[data-orderable-wrapper-group="'+t+'"]').removeClass("orderable-toggle-wrapper--active"),o.addClass("orderable-toggle-wrapper--active"),a('[data-orderable-wrapper-group="'+t+'"]').removeClass("orderable-trigger-element--active"),a('[data-orderable-wrapper="'+r+'"]').addClass("orderable-trigger-element--active"),a(n).trigger("orderable-add-last-row-class")}),a(n).on("orderable-add-last-row-class",e.add_last_row_class),a(n).trigger("orderable-add-last-row-class")},add_last_row_class:function(){var e=a(".orderable-table"),t="orderable-table__row--last",r=e.find("."+t),e=e.find("tbody > tr:visible:last");r.removeClass(t),e.addClass(t)}};a(n).ready(e.on_ready)}(jQuery,document);
  • orderable/trunk/assets/frontend/css/main.css

    r2641784 r2709284  
    8787}
    8888
    89 .orderable-main--sections-side_tabs {
    90   display: -webkit-box;
    91   display: -ms-flexbox;
    92   display: flex;
    93 }
    94 
    95 .orderable-main--sections-side_tabs .orderable-main__tabs {
    96   margin: 0 24px 0 0 !important;
    97 }
    98 
    99 .orderable-main--sections-side_tabs .orderable-main__sections {
    100   -webkit-box-flex: 1;
    101       -ms-flex: 1;
    102           flex: 1;
     89@media screen and (min-width: 620px) {
     90  .orderable-main--sections-side_tabs {
     91    display: -webkit-box;
     92    display: -ms-flexbox;
     93    display: flex;
     94  }
     95  .orderable-main--sections-side_tabs .orderable-main__tabs {
     96    margin: 0 24px 0 0 !important;
     97  }
     98  .orderable-main--sections-side_tabs .orderable-main__sections {
     99    -webkit-box-flex: 1;
     100        -ms-flex: 1;
     101            flex: 1;
     102  }
    103103}
    104104
     
    206206}
    207207
     208.orderable-button--icon {
     209  padding: 10px !important;
     210  width: 44px;
     211  height: 44px;
     212  line-height: 24px;
     213  border: none;
     214  background: none !important;
     215}
     216
     217body .orderable-button--icon:hover,
     218body .orderable-button--icon:focus,
     219body .orderable-button--icon:active {
     220  background: none !important;
     221  opacity: 0.6;
     222}
     223
     224.orderable-button--icon svg {
     225  width: 24px;
     226  height: 24px;
     227  border-radius: 12px;
     228  overflow: hidden;
     229  -webkit-transition: opacity 250ms ease-in-out;
     230  transition: opacity 250ms ease-in-out;
     231}
     232
     233.orderable-button--icon.orderable-button--loading:after {
     234  display: none;
     235}
     236
    208237/* Block */
    209238/* Modifiers */
     
    465494
    466495.orderable-product__options {
    467   margin: 12px 0 24px;
     496  margin: 0 0 24px;
    468497  padding: 0;
    469498  border-radius: 6px;
    470 }
    471 
    472 .orderable-product__options:last-child {
    473   margin-bottom: 0;
    474499}
    475500
     
    483508
    484509.orderable-product__options th {
    485   font-size: 18px;
    486510  line-height: 22px;
    487511}
     
    529553.orderable-product__actions-button {
    530554  margin: 0 0 0 auto;
     555}
     556
     557.orderable-product__tabs {
     558  margin: 24px 0;
     559}
     560
     561.orderable-product__tabs-section {
     562  display: none;
     563}
     564
     565.orderable-product__tabs-section:first-child {
     566  display: block;
     567}
     568
     569.orderable-product__tabs-section *:last-child {
     570  margin-bottom: 0;
    531571}
    532572
     
    544584}
    545585
     586.orderable-product--options .orderable-product__hero {
     587  margin: -24px -24px 0;
     588}
     589
     590.orderable-product--options .orderable-product__title {
     591  text-align: left;
     592  margin: 24px 0 !important;
     593}
     594
    546595.orderable-product--options .orderable-product__actions {
    547596  margin-top: auto;
     
    553602}
    554603
    555 .orderable-product--clickable {
     604.orderable-product--add-to-cart,
     605.orderable-product--product-options,
     606.orderable-product--view-product {
    556607  cursor: pointer;
    557608}
    558609
    559 .orderable-product__hero--title {
     610.orderable-product--image-cropped .orderable-product__hero {
    560611  overflow: hidden;
    561   padding: 24px 24px 0;
    562   margin: -24px -24px 24px;
     612  padding: 0;
    563613  text-align: center;
    564614  -webkit-box-flex: 0;
    565615      -ms-flex: 0 0 auto;
    566616          flex: 0 0 auto;
    567 }
    568 
    569 .orderable-product__hero--title:before {
    570   background: #fff;
    571   top: auto;
    572   left: -10px;
    573   right: -10px;
    574   bottom: -10px;
    575   position: absolute;
    576   height: 24px;
    577   z-index: 5;
    578   -webkit-transform: rotate(-1.5deg);
    579           transform: rotate(-1.5deg);
    580 }
    581 
    582 .orderable-product__hero--title:after {
    583   content: "";
    584   position: absolute;
    585   top: 0;
    586   left: 0;
    587   right: 0;
    588   bottom: 0;
    589   background: -webkit-gradient(linear, left bottom, left top, from(rgba(24, 33, 37, 0.8)), to(rgba(24, 33, 37, 0.3)));
    590   background: linear-gradient(0deg, rgba(24, 33, 37, 0.8), rgba(24, 33, 37, 0.3));
    591   z-index: 1;
    592   mix-blend-mode: multiply;
    593 }
    594 
    595 .orderable-product__hero--title .orderable-product__image {
     617  height: 72px;
     618}
     619
     620.orderable-product--image-cropped .orderable-product__image {
    596621  -o-object-fit: cover;
    597622     object-fit: cover;
     
    602627  left: 0;
    603628  top: 0;
    604 }
    605 
    606 .orderable-product__hero--title .orderable-product__title {
    607   color: #fff;
    608   position: relative;
    609   z-index: 10;
    610629}
    611630
     
    636655    width: 100%;
    637656    min-width: 60px;
    638     max-width: 80px;
     657    max-width: 95px;
    639658    border-radius: 6px;
    640659    overflow: hidden;
     
    756775  -ms-flex-preferred-size: 100%;
    757776      flex-basis: 100%;
     777  margin-bottom: -1px;
    758778}
    759779
     
    768788}
    769789
    770 .orderable-drawer__cart .widget_shopping_cart_content {
     790.orderable-drawer__cart .orderable-mini-cart-wrapper {
    771791  height: 100%;
    772792  display: -webkit-box;
     
    886906  background: #fce9e9;
    887907  color: #dc2323;
    888   padding: 6px 12px;
     908  padding: 6px 12px 6px 28px !important;
    889909  text-align: center;
    890910  margin: 0 0 6px;
     
    899919.orderable-drawer__cart .orderable-mini-cart__notices .button {
    900920  display: none;
     921}
     922
     923.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-message::before, .orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error::before, .orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-info::before {
     924  left: 12px;
    901925}
    902926
     
    10251049
    10261050.orderable-drawer__close:focus:before, .orderable-drawer__close:focus:after, .orderable-drawer__close:active:before, .orderable-drawer__close:active:after, .orderable-drawer__close:hover:before, .orderable-drawer__close:hover:after {
    1027   background-color: #fff;
     1051  background-color: #405763;
    10281052}
    10291053
     
    11901214
    11911215.orderable-tabs {
    1192   margin: 0 0 24px !important;
     1216  margin: 0 0 24px;
     1217  position: relative;
     1218}
     1219
     1220.orderable-tabs__list {
     1221  margin: 0 1px 0 0 !important;
    11931222  padding: 0 !important;
    11941223  list-style: none none outside;
    1195 }
    1196 
    1197 .orderable-main--sections-side_tabs .orderable-tabs {
    1198   -webkit-box-flex: 0;
    1199       -ms-flex: 0 1 auto;
    1200           flex: 0 1 auto;
     1224  position: relative;
     1225  display: -webkit-box;
     1226  display: -ms-flexbox;
     1227  display: flex;
     1228  -ms-flex-wrap: nowrap;
     1229      flex-wrap: nowrap;
     1230  -webkit-box-flex: 1;
     1231      -ms-flex: 1 1 auto;
     1232          flex: 1 1 auto;
     1233  overflow-x: auto;
     1234  overflow-y: hidden;
     1235  overflow: -moz-scrollbars-none;
     1236  scrollbar-base-color: transparent;
     1237  -webkit-overflow-scrolling: touch;
     1238}
     1239
     1240.orderable-tabs__list::-webkit-scrollbar {
     1241  display: none;
     1242}
     1243
     1244@media screen and (min-width: 620px) {
     1245  .orderable-main--sections-side_tabs .orderable-tabs__list {
     1246    -webkit-box-flex: 0;
     1247        -ms-flex: 0 1 auto;
     1248            flex: 0 1 auto;
     1249    -webkit-box-orient: vertical;
     1250    -webkit-box-direction: normal;
     1251        -ms-flex-direction: column;
     1252            flex-direction: column;
     1253    height: auto;
     1254  }
    12011255}
    12021256
    12031257.orderable-tabs__item {
    12041258  display: inline-block;
    1205   margin: 0;
     1259  margin: 0 10px 0 0;
    12061260  padding: 0;
    12071261}
    12081262
    1209 .orderable-main--sections-side_tabs .orderable-tabs__item {
    1210   margin: 0 0 6px;
    1211   display: block;
    1212 }
    1213 
    1214 .orderable-main--sections-side_tabs .orderable-tabs__item:last-child {
    1215   margin: 0;
     1263.orderable-tabs__item:last-child {
     1264  margin-right: 0;
     1265}
     1266
     1267@media screen and (min-width: 620px) {
     1268  .orderable-main--sections-side_tabs .orderable-tabs__item {
     1269    margin: 0 0 12px;
     1270    display: block;
     1271  }
     1272  .orderable-main--sections-side_tabs .orderable-tabs__item:last-child {
     1273    margin: 0;
     1274  }
    12161275}
    12171276
     
    12221281  white-space: nowrap;
    12231282  line-height: 40px;
    1224   color: #000;
     1283  color: #405763;
    12251284  font-weight: 400;
    12261285  border-radius: 20px;
    1227   -webkit-transition: none;
    1228   transition: none;
     1286  -webkit-transition: all 150ms ease-out;
     1287  transition: all 150ms ease-out;
     1288  background: #ecf1f3;
    12291289}
    12301290
     
    12361296
    12371297a.orderable-tabs__link:hover, a.orderable-tabs__link:active, a.orderable-tabs__link:focus {
    1238   color: #000;
     1298  color: #405763;
    12391299  text-decoration: none;
    1240   background: #ecf1f3;
     1300  background: #c7d4db;
    12411301}
    12421302
     
    12481308.orderable--button-style-square a.orderable-tabs__link {
    12491309  border-radius: 0;
     1310}
     1311
     1312.orderable-tabs__arrow {
     1313  background: #fff;
     1314  -webkit-box-shadow: 0 0.4px 1.3px rgba(0, 0, 0, 0.05), 0 1.3px 4.5px rgba(0, 0, 0, 0.06), 0 6px 16px rgba(0, 0, 0, 0.07);
     1315          box-shadow: 0 0.4px 1.3px rgba(0, 0, 0, 0.05), 0 1.3px 4.5px rgba(0, 0, 0, 0.06), 0 6px 16px rgba(0, 0, 0, 0.07);
     1316  border: none;
     1317  width: 40px !important;
     1318  height: 40px !important;
     1319  padding: 0 !important;
     1320  margin: 0 !important;
     1321  border-radius: 20px !important;
     1322  position: absolute;
     1323  top: 0;
     1324  right: 0;
     1325  text-align: center;
     1326  line-height: 40px;
     1327  display: none;
     1328}
     1329
     1330.orderable-tabs__arrow:hover, .orderable-tabs__arrow:focus, .orderable-tabs__arrow:active {
     1331  background: #fff;
     1332  outline: none;
     1333}
     1334
     1335.orderable-tabs__arrow svg {
     1336  width: 21px;
     1337  height: 24px;
     1338  margin: 8px 0;
     1339}
     1340
     1341/**
     1342 * Accordion.
     1343 */
     1344.orderable-accordion {
     1345  margin: 24px 0;
     1346  background: #f6f8f9;
     1347  padding: 0 24px;
     1348  border-radius: 6px;
     1349}
     1350
     1351.orderable-product__options + .orderable-accordion,
     1352.orderable-product-fields-group-wrap + .orderable-accordion {
     1353  margin-top: 36px;
     1354}
     1355
     1356.orderable-accordion__item {
     1357  border-top: 1px solid #E6ECEF;
     1358}
     1359
     1360.orderable-accordion__item:first-child {
     1361  border-top: none;
     1362}
     1363
     1364.orderable-accordion__item-link {
     1365  display: block;
     1366  padding: 18px 0;
     1367  margin: 0;
     1368  color: inherit;
     1369  position: relative;
     1370}
     1371
     1372.orderable-accordion__item-link--active, .orderable-accordion__item-link:hover, .orderable-accordion__item-link:active, .orderable-accordion__item-link:focus {
     1373  color: #000;
     1374  border: none;
     1375  outline: none;
     1376}
     1377
     1378.orderable-accordion__item-link--active:before, .orderable-accordion__item-link--active:after, .orderable-accordion__item-link:hover:before, .orderable-accordion__item-link:hover:after, .orderable-accordion__item-link:active:before, .orderable-accordion__item-link:active:after, .orderable-accordion__item-link:focus:before, .orderable-accordion__item-link:focus:after {
     1379  background-color: #405763 !important;
     1380}
     1381
     1382.orderable-accordion__item-link:before, .orderable-accordion__item-link:after {
     1383  position: absolute;
     1384  right: 5px;
     1385  content: ' ';
     1386  height: 11px;
     1387  width: 2px;
     1388  background-color: #c7d4db;
     1389  top: 50%;
     1390  display: block;
     1391  margin: -4px 0 0;
     1392}
     1393
     1394.orderable-accordion__item-link:before {
     1395  -webkit-transform: rotate(45deg);
     1396          transform: rotate(45deg);
     1397}
     1398
     1399.orderable-accordion__item-link:after {
     1400  -webkit-transform: rotate(-45deg);
     1401          transform: rotate(-45deg);
     1402  right: 12px;
     1403}
     1404
     1405.orderable-accordion__item-link--active:before {
     1406  right: 12px;
     1407}
     1408
     1409.orderable-accordion__item-link--active:after {
     1410  right: 5px;
     1411}
     1412
     1413.orderable-accordion__item-content {
     1414  display: none;
     1415}
     1416
     1417.orderable-accordion__item-content--active {
     1418  display: block;
     1419}
     1420
     1421.orderable-accordion__item-content:after {
     1422  content: "";
     1423  display: table;
     1424  clear: both;
    12501425}
    12511426
     
    13741549.orderable-quantity-roller__button:hover, .orderable-quantity-roller__button:focus, .orderable-quantity-roller__button:visited {
    13751550  background-color: #c7d4db;
    1376   color: #fff;
     1551  color: #405763;
    13771552  -webkit-box-shadow: none;
    13781553          box-shadow: none;
     
    13821557
    13831558.orderable-quantity-roller__button:hover:before, .orderable-quantity-roller__button:hover:after, .orderable-quantity-roller__button:focus:before, .orderable-quantity-roller__button:focus:after, .orderable-quantity-roller__button:visited:before, .orderable-quantity-roller__button:visited:after {
    1384   background: #fff;
     1559  background: #405763;
    13851560}
    13861561
     
    14091584  padding: 0 6px;
    14101585  min-width: 24px;
     1586  outline: none;
    14111587}
    14121588
  • orderable/trunk/assets/frontend/css/main.min.css

    r2641784 r2709284  
    1 @-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes wobble-hor-bottom{0%,100%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:50% 50%;transform-origin:50% 50%}15%{-webkit-transform:translateX(-10%) rotate(-6deg);transform:translateX(-10%) rotate(-6deg)}30%{-webkit-transform:translateX(5%) rotate(6deg);transform:translateX(5%) rotate(6deg)}45%{-webkit-transform:translateX(-5%) rotate(-3.6deg);transform:translateX(-5%) rotate(-3.6deg)}60%{-webkit-transform:translateX(2%) rotate(2.4deg);transform:translateX(2%) rotate(2.4deg)}75%{-webkit-transform:translateX(-1%) rotate(-1.2deg);transform:translateX(-1%) rotate(-1.2deg)}}@keyframes wobble-hor-bottom{0%,100%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:50% 50%;transform-origin:50% 50%}15%{-webkit-transform:translateX(-10%) rotate(-6deg);transform:translateX(-10%) rotate(-6deg)}30%{-webkit-transform:translateX(5%) rotate(6deg);transform:translateX(5%) rotate(6deg)}45%{-webkit-transform:translateX(-5%) rotate(-3.6deg);transform:translateX(-5%) rotate(-3.6deg)}60%{-webkit-transform:translateX(2%) rotate(2.4deg);transform:translateX(2%) rotate(2.4deg)}75%{-webkit-transform:translateX(-1%) rotate(-1.2deg);transform:translateX(-1%) rotate(-1.2deg)}}.orderable-main__group{margin:0 0 36px}.orderable-main--sections-tabs .orderable-main__group{display:none}.orderable-main--sections-tabs .orderable-main__group:first-of-type{display:block}.orderable-main--sections-side_tabs{display:-webkit-box;display:-ms-flexbox;display:flex}.orderable-main--sections-side_tabs .orderable-main__tabs{margin:0 24px 0 0!important}.orderable-main--sections-side_tabs .orderable-main__sections{-webkit-box-flex:1;-ms-flex:1;flex:1}.orderable-button,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout,.orderable-drawer__close{display:inline-block;border:2px solid #000;background:0 0;padding:0 24px!important;height:40px;line-height:36px;white-space:nowrap;border-radius:20px;color:#000;text-transform:none;margin:0;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out;-webkit-box-shadow:none;box-shadow:none;cursor:pointer}.orderable-button:active,.orderable-button:focus,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:active,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:focus,.orderable-drawer__close:active,.orderable-drawer__close:focus{outline:0}.orderable-button--active,.orderable-button--hover,.orderable-button:active,.orderable-button:focus,.orderable-button:hover,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:active,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:focus,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:hover,.orderable-drawer__close:active,.orderable-drawer__close:focus,.orderable-drawer__close:hover{border-color:#000;background:#000;color:#fff;text-decoration:none;-webkit-box-shadow:none;box-shadow:none}.orderable-button--filled,.orderable-button--filled--hover,.orderable-button--filled:hover,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:hover{background:#000!important;color:#fff}.orderable-button--full{width:100%}.orderable-button--loading{position:relative;padding-right:48px!important}.orderable-button--loading:after{content:'';display:block;width:16px;height:16px;position:absolute;top:10px;right:22px;background:0 0;-webkit-box-sizing:border-box;box-sizing:border-box;border-top:2px solid #000;border-left:2px solid #000;border-right:2px solid transparent;border-bottom:2px solid transparent;border-radius:100%;-webkit-animation:spin .6s ease-out infinite;animation:spin .6s ease-out infinite}.orderable-button--filled .orderable-button--loading:after,.orderable-button--loading.orderable-button--hover:after,.orderable-button--loading:active:after,.orderable-button--loading:focus:after,.orderable-button--loading:hover:after,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout .orderable-button--loading:after{border-top-color:#fff;border-left-color:#fff}.orderable-button--out-of-stock.orderable-button--hover.orderable-drawer__close,.orderable-button--out-of-stock.orderable-drawer__close,.orderable-button--out-of-stock.orderable-drawer__close:active,.orderable-button--out-of-stock.orderable-drawer__close:focus,.orderable-button--out-of-stock.orderable-drawer__close:hover,.orderable-button.orderable-button--out-of-stock,.orderable-button.orderable-button--out-of-stock.orderable-button--hover,.orderable-button.orderable-button--out-of-stock:active,.orderable-button.orderable-button--out-of-stock:focus,.orderable-button.orderable-button--out-of-stock:hover,.orderable-drawer__cart .orderable-mini-cart__buttons .orderable-button--out-of-stock.button.checkout,.orderable-drawer__cart .orderable-mini-cart__buttons .orderable-button--out-of-stock.button.checkout:active,.orderable-drawer__cart .orderable-mini-cart__buttons .orderable-button--out-of-stock.button.checkout:focus,.orderable-drawer__cart .orderable-mini-cart__buttons .orderable-button--out-of-stock.button.checkout:hover,.orderable-drawer__cart .orderable-mini-cart__buttons .orderable-button--out-of-stock.orderable-button--hover.button.checkout{cursor:not-allowed;border-color:#c7d4db;color:#a8bdc7;background:0 0!important}.orderable--button-style-square .orderable-button,.orderable--button-style-square .orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout,.orderable--button-style-square .orderable-drawer__close,.orderable-drawer__cart .orderable-mini-cart__buttons .orderable--button-style-square .button.checkout{border-radius:0}.orderable-input--select,select.orderable-input--select{width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:10px;border:2px solid #E6ECEF;border-radius:8px;background-color:#fff;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23c1cfd7'><polygon points='0,0 100,0 50,50'/></svg>");background-size:16px;background-position:calc(100% - 14px) 19px;background-repeat:no-repeat;cursor:pointer}.orderable-input--select:focus,select.orderable-input--select:focus{outline:0;border-color:#000;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23000000'><polygon points='0,0 100,0 50,50'/></svg>")}.orderable-input.orderable-input--text{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:10px;border:2px solid #E6ECEF;border-radius:8px;width:100%;background-color:#fff;-webkit-box-shadow:none;box-shadow:none}.orderable-floating-cart__button,.orderable-products-list__item .orderable-product{-webkit-box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07)}.orderable-input.orderable-input--text:focus{outline:0;border-color:#000;background-color:#fff}.orderable-category-heading{margin:0 0 24px}.orderable-products-list{margin-bottom:12px;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-products-list *{-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-products-list:last-child{margin-bottom:0}@media screen and (min-width:480px){.orderable-products-list .orderable-product{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px}.orderable-products-list .orderable-product__hero{width:200px}.orderable-products-list .orderable-product__image{-o-object-fit:cover;object-fit:cover;width:100%!important;height:100%!important}.orderable-products-list .orderable-product__content-wrap{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column nowrap;flex-flow:column nowrap}}.orderable-products-list .orderable-product__actions{padding:12px 24px 18px;margin-top:auto}.orderable-products-list__item{width:100%;margin:0 0 24px}@media screen and (max-width:480px){.orderable-products-list__item{padding:0 0 24px;border-bottom:1px solid #ecf1f3}.orderable-products-list__item:last-child{border-bottom:none}}@media screen and (min-width:540px){.orderable-products-list--grid{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:-12px;margin-right:-12px}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-products-list__item{margin:0 0 24px;padding:0 12px;width:50%}.orderable-products-list--grid .orderable-product{padding:0 0 88px;display:block;margin:0;-webkit-box-flex:0;-ms-flex:none;flex:none}}@media screen and (min-width:1120px){.orderable-products-list--grid .orderable-products-list__item{width:33.33%}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-product__hero{width:auto}.orderable-products-list--grid .orderable-product__hero img{-o-object-fit:fill;object-fit:fill;width:100%;height:auto}.orderable-products-list--grid .orderable-product__content-wrap{-webkit-box-flex:0;-ms-flex:none;flex:none;display:block}.orderable-products-list--grid .orderable-product__actions{padding:0;margin-top:0;position:absolute;bottom:24px;left:24px;right:24px}}.orderable-product{overflow:hidden;position:relative}.orderable-product__hero{position:relative}.orderable-product__image{border-radius:0;margin:0;display:block;width:100%;height:auto!important;max-width:none!important}.orderable-product__content{padding:18px 24px 12px}.orderable-product__content :last-child{margin-bottom:0}.orderable-product__title{margin:0 0 12px!important}.orderable-product__description{margin:0}.orderable-product__tags{overflow:hidden;margin:0;padding:0;list-style:none}img+.orderable-product__tags{position:absolute;bottom:0;left:0;padding:12px;z-index:20}.orderable-product__tags li{margin:6px 0 0}.orderable-product__options{margin:12px 0 24px;padding:0;border-radius:6px}.orderable-product__actions:last-child,.orderable-product__options:last-child{margin-bottom:0}.orderable-product__options td,.orderable-product__options th{background-color:transparent!important;padding:0 0 12px;text-align:left;display:block;margin:0}.orderable-product__options th{font-size:18px;line-height:22px}.orderable-product__options td{padding-bottom:24px}.orderable-product__options tr{padding:0;margin:0}.orderable-product__options tr:last-child td{padding-bottom:0}.orderable-product__actions{overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.orderable-product__actions-price{margin:0 4px 0 0}.orderable-product__actions-price .amount{white-space:nowrap;margin:0 6px 0 0;font-weight:700;color:#000;font-size:20px;line-height:24px}.orderable-product__actions-button{margin:0 0 0 auto}.orderable-product--options{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:visible;height:100%}.orderable-product--options .orderable-product__actions{margin-top:auto;padding-top:24px;border-top:1px solid #E6ECEF;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.orderable-product--clickable{cursor:pointer}.orderable-product__hero--title{overflow:hidden;padding:24px 24px 0;margin:-24px -24px 24px;text-align:center;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.orderable-product__hero--title:before{background:#fff;top:auto;left:-10px;right:-10px;bottom:-10px;position:absolute;height:24px;z-index:5;-webkit-transform:rotate(-1.5deg);transform:rotate(-1.5deg)}.orderable-product__hero--title:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:-webkit-gradient(linear,left bottom,left top,from(rgba(24,33,37,.8)),to(rgba(24,33,37,.3)));background:linear-gradient(0deg,rgba(24,33,37,.8),rgba(24,33,37,.3));z-index:1;mix-blend-mode:multiply}.orderable-product__hero--title .orderable-product__image{-o-object-fit:cover;object-fit:cover;position:absolute;z-index:-1;width:100%;height:100%!important;left:0;top:0}.orderable-product__hero--title .orderable-product__title{color:#fff;position:relative;z-index:10}.orderable-products-list__item .orderable-product{height:100%;width:100%;box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);border-radius:6px}@media screen and (max-width:480px){.orderable-products-list__item .orderable-product{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.orderable-products-list__item .orderable-product__hero{width:100%;min-width:60px;max-width:80px;border-radius:6px;overflow:hidden}.orderable-products-list__item .orderable-product__content-wrap{-webkit-box-flex:1;-ms-flex:1;flex:1}.orderable-products-list__item .orderable-product__content{padding:0 0 0 24px}.orderable-products-list__item .orderable-product__actions{padding:6px 0 0 24px}.orderable-products-list__item .orderable-product__title{margin:0 0 6px!important}}.orderable-tag{display:inline-block;background:#EDF2F6;border-radius:15px;height:30px;line-height:30px;white-space:nowrap;color:#495568;padding:0 12px;font-size:14px}body.orderable-drawer-open{overflow:hidden}.orderable-drawer-overlay{height:100%;z-index:999998;position:fixed;top:0;left:0;opacity:0;visibility:hidden;background-color:rgba(34,34,34,.6);-webkit-transition:opacity .2s linear,visibility .1s,width 1s ease-in;transition:opacity .2s linear,visibility .1s,width 1s ease-in}.orderable-drawer{width:100%;visibility:hidden;-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-transition:all .2s;transition:all .2s;border-radius:0;-webkit-box-shadow:0 4px 56px -2px rgba(0,0,0,.2),0 3px 6px -1px rgba(0,0,0,.4);box-shadow:0 4px 56px -2px rgba(0,0,0,.2),0 3px 6px -1px rgba(0,0,0,.4);display:block;position:fixed;top:0;right:0;height:100%;z-index:999999;background-color:#fff;overflow:hidden;padding:24px}@media screen and (min-width:640px){.orderable-drawer{max-width:600px}}.orderable-drawer h3{margin:0 60px 24px!important;font-size:20px;line-height:24px;text-align:center}.orderable-drawer h4{font-size:18px;line-height:22px}.orderable-drawer__inner{padding:0;height:100%;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.orderable-drawer__cart,.orderable-drawer__cart .widget_shopping_cart_content{display:-webkit-box;display:-ms-flexbox;-webkit-box-orient:vertical;-webkit-box-direction:normal}.orderable-drawer__inner .orderable-sb-container{-ms-flex-preferred-size:100%;flex-basis:100%}.orderable-drawer__cart{display:flex;-ms-flex-direction:column;flex-direction:column}.orderable-drawer__cart .widget_shopping_cart_content{height:100%;display:flex;-ms-flex-direction:column;flex-direction:column;overflow:hidden;border-top:1px solid #E6ECEF}.orderable-drawer__cart .orderable-mini-cart{margin:0;padding:0;list-style:none;overflow:hidden;min-height:100%}.orderable-drawer__cart .orderable-mini-cart-item{margin:0;padding:10px 44px 10px 0;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-bottom:1px solid #E6ECEF}.orderable-drawer__cart .orderable-mini-cart-item:last-child{border-bottom:none}.orderable-drawer__cart .orderable-mini-cart-item .variation{margin:7.5px 0}.orderable-drawer__cart .orderable-mini-cart-item .variation dd,.orderable-drawer__cart .orderable-mini-cart-item .variation dt,.orderable-drawer__cart .orderable-mini-cart-item .variation p{margin:0}.orderable-drawer__cart .orderable-mini-cart-item .blockOverlay{background:#fff!important;opacity:.8!important}.orderable-drawer__cart .orderable-mini-cart-item__remove{position:absolute;bottom:16px;right:0;z-index:20;color:#c7d4db;-webkit-box-shadow:none;box-shadow:none;height:40px;width:40px;text-indent:250%;white-space:nowrap;font-size:0;-webkit-transition:none;transition:none;-webkit-box-sizing:border-box;box-sizing:border-box;border:none}.orderable-drawer__cart .orderable-mini-cart-item__remove svg{display:block;height:20px;width:20px;position:absolute;left:50%;top:50%;-webkit-transition:none;transition:none;fill:#c7d4db;margin:-10px 0 0 -10px}.orderable-drawer__cart .orderable-mini-cart-item__remove:hover svg{opacity:.8}.orderable--button-style-square .orderable-drawer__cart .orderable-mini-cart-item__remove{border-radius:0}.orderable-drawer__cart .quantity{font-weight:700}.orderable-drawer__cart .orderable-mini-cart__notices{padding:15px 0;border-top:1px solid #E6ECEF}.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error{margin:0;padding:0;list-style:none}.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error li{border:1px solid #E34F4F;background:#fce9e9;color:#dc2323;padding:6px 12px;text-align:center;margin:0 0 6px;display:block;border-radius:8px}.orderable-drawer__cart .orderable-mini-cart__buttons .button,.orderable-drawer__cart .orderable-mini-cart__notices .button{display:none}.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error li:last-child{margin-bottom:0}.orderable-drawer__cart .orderable-mini-cart__buttons,.orderable-drawer__cart .orderable-mini-cart__total{margin:0;padding:0;text-align:center}.orderable-drawer__cart .orderable-mini-cart__total{padding:15px 0;border-top:1px solid #E6ECEF}.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout{display:block;width:100%}.orderable-drawer__cart .orderable-mini-cart__empty-message{margin:auto 0;text-align:center}.orderable-drawer__cart .orderable-services-selector__lookup,.orderable-drawer__cart .orderable-services-selector__selected{margin:0 0 15px}.orderable-drawer__cart .orderable-services-selector__lookup input{width:100%;margin:0 0 8px}.orderable-drawer__cart .orderable-services-selector__lookup-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.orderable-drawer__cart .orderable-services-selector__lookup-buttons button{display:block;width:100%}.orderable-drawer__cart .orderable-services-selector__lookup-buttons button:first-child{margin-right:4px}.orderable-drawer__cart .orderable-services-selector__lookup-buttons button:last-child{margin-left:4px}.orderable-drawer__actions{bottom:-24px;margin:auto 0 -24px;background:#fff;padding:24px 0;left:0;right:0;border-top:1px solid #F2F2F2}.orderable-drawer__actions--cart{border-top:none;padding-top:10px}.orderable-drawer__close{position:absolute;top:16px;left:24px;font-size:0;text-indent:250%!important;white-space:nowrap!important;overflow:hidden!important;padding:0!important;width:40px;height:40px;margin:0;z-index:100;border-color:#c7d4db}.orderable-drawer__close:after,.orderable-drawer__close:before{position:absolute;left:54%;content:' ';height:18px;width:2px;background-color:#c7d4db;top:50%;margin:-9px 0 0 -2px;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out;display:block}.orderable-drawer__close:before{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.orderable-drawer__close:after{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.orderable-drawer__close:active,.orderable-drawer__close:focus,.orderable-drawer__close:hover{background-color:#c7d4db;border-color:#c7d4db}.orderable-drawer__close:active:after,.orderable-drawer__close:active:before,.orderable-drawer__close:focus:after,.orderable-drawer__close:focus:before,.orderable-drawer__close:hover:after,.orderable-drawer__close:hover:before{background-color:#fff}.orderable-drawer .orderable-product__content{padding:15px 0}.orderable-drawer-overlay--open{-webkit-transition:opacity .2s ease,width 0s;transition:opacity .2s ease,width 0s;opacity:1;width:100%;visibility:visible}.orderable-drawer--open{visibility:visible;-webkit-transform:translateX(0);transform:translateX(0);-webkit-transition:-webkit-transform .2s;transition:-webkit-transform .2s;transition:transform .2s;transition:transform .2s,-webkit-transform .2s}.orderable-floating-cart{position:fixed;z-index:20}.orderable-floating-cart__button{padding:0;width:60px;height:60px;border:none;border-radius:100%;display:block;margin:0;text-align:center;line-height:60px;background:#fff;box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);outline:0!important;-webkit-transition:-webkit-transform 150ms ease-in-out;transition:-webkit-transform 150ms ease-in-out;transition:transform 150ms ease-in-out;transition:transform 150ms ease-in-out,-webkit-transform 150ms ease-in-out}.orderable-floating-cart__button:hover{background:#fff;-webkit-animation:wobble-hor-bottom .8s both;animation:wobble-hor-bottom .8s both;-webkit-box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07)}.orderable-floating-cart__button svg{width:24px;height:24px;display:block;margin:0 auto}.orderable-floating-cart__count{position:absolute;top:0;right:0;white-space:nowrap;padding:0 4px;background:#E52C23;color:#fff;height:22px;line-height:22px;font-size:13px;border-radius:11px;min-width:22px;text-align:center}.orderable-floating-cart--bl,.orderable-floating-cart--br{bottom:40px}.orderable-floating-cart--br,.orderable-floating-cart--tr{right:40px}.orderable-floating-cart--bl,.orderable-floating-cart--tl{left:40px}.orderable-floating-cart--tl,.orderable-floating-cart--tr{top:40px}.orderable-services-selector__selected p{margin:0}.orderable-services-selector__selected-change{padding:0;margin:0;font-size:inherit;background:0 0;display:inline;color:#333;-webkit-transition:none;transition:none;text-transform:none;-webkit-box-shadow:none;box-shadow:none}.orderable-services-selector__selected-change:active,.orderable-services-selector__selected-change:focus,.orderable-services-selector__selected-change:hover{padding:0;margin:0;background:0 0;color:#333;text-decoration:underline;-webkit-transform:none;transform:none;-webkit-box-shadow:none;box-shadow:none}.orderable-services-selector--selected .orderable-services-selector__lookup{display:none}.orderable-open-hours__date,.orderable-open-hours__service{margin:0 0 0 6px;padding:2px 6px;background:#000;color:#fff;border-radius:4px;display:inline-block;font-size:80%}.orderable-open-hours__service--closed{background-color:#E34F4F;display:none}.orderable-open-hours__date{margin:0 4px 0 0;text-align:center;min-width:30px;border:1px solid #E6ECEF;background:0 0;color:inherit}.orderable-tabs{margin:0 0 24px!important;padding:0!important;list-style:none}.orderable-main--sections-side_tabs .orderable-tabs{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.orderable-tabs__item{display:inline-block;margin:0;padding:0}.orderable-main--sections-side_tabs .orderable-tabs__item{margin:0 0 6px;display:block}.orderable-main--sections-side_tabs .orderable-tabs__item:last-child{margin:0}a.orderable-tabs__link{text-decoration:none!important;display:inline-block;padding:0 24px;white-space:nowrap;line-height:40px;color:#000;font-weight:400;border-radius:20px;-webkit-transition:none;transition:none}a.orderable-tabs__link:active,a.orderable-tabs__link:focus{outline:0;-webkit-box-shadow:none;box-shadow:none}a.orderable-tabs__link:active,a.orderable-tabs__link:focus,a.orderable-tabs__link:hover{color:#000;text-decoration:none;background:#ecf1f3}.orderable-tabs__item--active a.orderable-tabs__link{background:#000;color:#fff}.orderable--button-style-square a.orderable-tabs__link{border-radius:0}.orderable-sb-container{position:relative;overflow:hidden;padding-right:25px}.orderable-sb-content{height:100%;width:120%;padding-right:20%;overflow-y:scroll;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-sb-scrollbar-container{position:absolute;right:0;bottom:10px;top:10px;width:10px}.orderable-sb-container-noscroll .orderable-sb-scrollbar-container{right:-20px}.orderable-sb-scrollbar{position:absolute;right:0;height:30px;width:10px;border-radius:10px;background:#d6e0e5}.orderable-sb-scrollbar:hover{background:#c7d4db}.orderable--button-style-square .orderable-sb-scrollbar{border-radius:0}.orderable-sb-container-noscroll{padding-right:0}.orderable-sb-container-noscroll .orderable-sb-content{width:100%;padding-right:0;overflow:hidden}.orderable-quantity-roller{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.orderable-quantity-roller *{-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-quantity-roller__roller{border:2px solid #c7d4db;border-radius:20px;height:40px;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex}.orderable--button-style-square .orderable-quantity-roller__roller{border-radius:0}.orderable-quantity-roller__button{height:36px;width:24px;background:0 0;border:none;border-radius:0;text-align:center;color:#c7d4db;line-height:36px;-webkit-box-shadow:none;box-shadow:none;text-shadow:none;padding:0 6px;-webkit-box-sizing:content-box;box-sizing:content-box;position:relative;font-size:0;text-indent:250%;overflow:hidden;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out}.orderable-quantity-roller__button:after,.orderable-quantity-roller__button:before{content:"";position:absolute;display:block!important;height:2px;width:12px;background:#c7d4db;top:50%;left:50%;margin:-1px 0 0 -6px;-webkit-transition:background 150ms ease-out;transition:background 150ms ease-out}.orderable-quantity-roller__button:focus,.orderable-quantity-roller__button:hover,.orderable-quantity-roller__button:visited{background-color:#c7d4db;color:#fff;-webkit-box-shadow:none;box-shadow:none;text-shadow:none;outline:0}.orderable-quantity-roller__button:focus:after,.orderable-quantity-roller__button:focus:before,.orderable-quantity-roller__button:hover:after,.orderable-quantity-roller__button:hover:before,.orderable-quantity-roller__button:visited:after,.orderable-quantity-roller__button:visited:before{background:#fff}.orderable-quantity-roller__button--decrease{padding-right:4px}.orderable-quantity-roller__button--decrease:after{display:none!important}.orderable-quantity-roller__button--increase{padding-left:4px}.orderable-quantity-roller__button--increase:after{height:12px;width:2px;margin:-6px 0 0 -1px}.orderable-quantity-roller__quantity{text-align:center;display:inline-block;line-height:36px;padding:0 6px;min-width:24px}.orderable-quantity-roller__price{margin-left:8px}.orderable-quantity-roller__price:before{content:"x";margin:0 8px;color:#c7d4db}.orderable-drawer__cart .orderable-quantity-roller{margin:12px 0 6px}
     1@-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes wobble-hor-bottom{0%,100%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:50% 50%;transform-origin:50% 50%}15%{-webkit-transform:translateX(-10%) rotate(-6deg);transform:translateX(-10%) rotate(-6deg)}30%{-webkit-transform:translateX(5%) rotate(6deg);transform:translateX(5%) rotate(6deg)}45%{-webkit-transform:translateX(-5%) rotate(-3.6deg);transform:translateX(-5%) rotate(-3.6deg)}60%{-webkit-transform:translateX(2%) rotate(2.4deg);transform:translateX(2%) rotate(2.4deg)}75%{-webkit-transform:translateX(-1%) rotate(-1.2deg);transform:translateX(-1%) rotate(-1.2deg)}}@keyframes wobble-hor-bottom{0%,100%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:50% 50%;transform-origin:50% 50%}15%{-webkit-transform:translateX(-10%) rotate(-6deg);transform:translateX(-10%) rotate(-6deg)}30%{-webkit-transform:translateX(5%) rotate(6deg);transform:translateX(5%) rotate(6deg)}45%{-webkit-transform:translateX(-5%) rotate(-3.6deg);transform:translateX(-5%) rotate(-3.6deg)}60%{-webkit-transform:translateX(2%) rotate(2.4deg);transform:translateX(2%) rotate(2.4deg)}75%{-webkit-transform:translateX(-1%) rotate(-1.2deg);transform:translateX(-1%) rotate(-1.2deg)}}.orderable-main__group{margin:0 0 36px}.orderable-main--sections-tabs .orderable-main__group{display:none}.orderable-main--sections-tabs .orderable-main__group:first-of-type{display:block}@media screen and (min-width:620px){.orderable-main--sections-side_tabs{display:-webkit-box;display:-ms-flexbox;display:flex}.orderable-main--sections-side_tabs .orderable-main__tabs{margin:0 24px 0 0!important}.orderable-main--sections-side_tabs .orderable-main__sections{-webkit-box-flex:1;-ms-flex:1;flex:1}}.orderable-button,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout,.orderable-drawer__close{display:inline-block;border:2px solid #000;background:0 0;padding:0 24px!important;height:40px;line-height:36px;white-space:nowrap;border-radius:20px;color:#000;text-transform:none;margin:0;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out;-webkit-box-shadow:none;box-shadow:none;cursor:pointer}.orderable-button:active,.orderable-button:focus,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:active,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:focus,.orderable-drawer__close:active,.orderable-drawer__close:focus{outline:0}.orderable-button--active,.orderable-button--hover,.orderable-button:active,.orderable-button:focus,.orderable-button:hover,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:active,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:focus,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:hover,.orderable-drawer__close:active,.orderable-drawer__close:focus,.orderable-drawer__close:hover{border-color:#000;background:#000;color:#fff;text-decoration:none;-webkit-box-shadow:none;box-shadow:none}.orderable-button--filled,.orderable-button--filled--hover,.orderable-button--filled:hover,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:hover{background:#000!important;color:#fff}.orderable-button--full{width:100%}.orderable-button--loading{position:relative;padding-right:48px!important}.orderable-button--loading:after{content:'';display:block;width:16px;height:16px;position:absolute;top:10px;right:22px;background:0 0;-webkit-box-sizing:border-box;box-sizing:border-box;border-top:2px solid #000;border-left:2px solid #000;border-right:2px solid transparent;border-bottom:2px solid transparent;border-radius:100%;-webkit-animation:spin .6s ease-out infinite;animation:spin .6s ease-out infinite}.orderable-button--filled .orderable-button--loading:after,.orderable-button--loading.orderable-button--hover:after,.orderable-button--loading:active:after,.orderable-button--loading:focus:after,.orderable-button--loading:hover:after,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout .orderable-button--loading:after{border-top-color:#fff;border-left-color:#fff}.orderable-button--out-of-stock.orderable-button--hover.orderable-drawer__close,.orderable-button--out-of-stock.orderable-drawer__close,.orderable-button--out-of-stock.orderable-drawer__close:active,.orderable-button--out-of-stock.orderable-drawer__close:focus,.orderable-button--out-of-stock.orderable-drawer__close:hover,.orderable-button.orderable-button--out-of-stock,.orderable-button.orderable-button--out-of-stock.orderable-button--hover,.orderable-button.orderable-button--out-of-stock:active,.orderable-button.orderable-button--out-of-stock:focus,.orderable-button.orderable-button--out-of-stock:hover,.orderable-drawer__cart .orderable-mini-cart__buttons .orderable-button--out-of-stock.button.checkout,.orderable-drawer__cart .orderable-mini-cart__buttons .orderable-button--out-of-stock.button.checkout:active,.orderable-drawer__cart .orderable-mini-cart__buttons .orderable-button--out-of-stock.button.checkout:focus,.orderable-drawer__cart .orderable-mini-cart__buttons .orderable-button--out-of-stock.button.checkout:hover,.orderable-drawer__cart .orderable-mini-cart__buttons .orderable-button--out-of-stock.orderable-button--hover.button.checkout{cursor:not-allowed;border-color:#c7d4db;color:#a8bdc7;background:0 0!important}.orderable--button-style-square .orderable-button,.orderable--button-style-square .orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout,.orderable--button-style-square .orderable-drawer__close,.orderable-drawer__cart .orderable-mini-cart__buttons .orderable--button-style-square .button.checkout{border-radius:0}.orderable-button--icon{padding:10px!important;width:44px;height:44px;line-height:24px;border:none;background:0 0!important}body .orderable-button--icon:active,body .orderable-button--icon:focus,body .orderable-button--icon:hover{background:0 0!important;opacity:.6}.orderable-button--icon svg{width:24px;height:24px;border-radius:12px;overflow:hidden;-webkit-transition:opacity 250ms ease-in-out;transition:opacity 250ms ease-in-out}.orderable-button--icon.orderable-button--loading:after{display:none}.orderable-input--select,select.orderable-input--select{width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:10px;border:2px solid #E6ECEF;border-radius:8px;background-color:#fff;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23c1cfd7'><polygon points='0,0 100,0 50,50'/></svg>");background-size:16px;background-position:calc(100% - 14px) 19px;background-repeat:no-repeat;cursor:pointer}.orderable-input--select:focus,select.orderable-input--select:focus{outline:0;border-color:#000;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23000000'><polygon points='0,0 100,0 50,50'/></svg>")}.orderable-input.orderable-input--text{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:10px;border:2px solid #E6ECEF;border-radius:8px;width:100%;background-color:#fff;-webkit-box-shadow:none;box-shadow:none}.orderable-floating-cart__button,.orderable-products-list__item .orderable-product{-webkit-box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07)}.orderable-input.orderable-input--text:focus{outline:0;border-color:#000;background-color:#fff}.orderable-category-heading{margin:0 0 24px}.orderable-products-list{margin-bottom:12px;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-products-list *{-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-products-list:last-child{margin-bottom:0}@media screen and (min-width:480px){.orderable-products-list .orderable-product{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px}.orderable-products-list .orderable-product__hero{width:200px}.orderable-products-list .orderable-product__image{-o-object-fit:cover;object-fit:cover;width:100%!important;height:100%!important}.orderable-products-list .orderable-product__content-wrap{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column nowrap;flex-flow:column nowrap}}.orderable-products-list .orderable-product__actions{padding:12px 24px 18px;margin-top:auto}.orderable-products-list__item{width:100%;margin:0 0 24px}@media screen and (max-width:480px){.orderable-products-list__item{padding:0 0 24px;border-bottom:1px solid #ecf1f3}.orderable-products-list__item:last-child{border-bottom:none}}@media screen and (min-width:540px){.orderable-products-list--grid{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:-12px;margin-right:-12px}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-products-list__item{margin:0 0 24px;padding:0 12px;width:50%}.orderable-products-list--grid .orderable-product{padding:0 0 88px;display:block;margin:0;-webkit-box-flex:0;-ms-flex:none;flex:none}}@media screen and (min-width:1120px){.orderable-products-list--grid .orderable-products-list__item{width:33.33%}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-product__hero{width:auto}.orderable-products-list--grid .orderable-product__hero img{-o-object-fit:fill;object-fit:fill;width:100%;height:auto}.orderable-products-list--grid .orderable-product__content-wrap{-webkit-box-flex:0;-ms-flex:none;flex:none;display:block}.orderable-products-list--grid .orderable-product__actions{padding:0;margin-top:0;position:absolute;bottom:24px;left:24px;right:24px}}.orderable-product{overflow:hidden;position:relative}.orderable-product__hero{position:relative}.orderable-product__image{border-radius:0;margin:0;display:block;width:100%;height:auto!important;max-width:none!important}.orderable-product__content{padding:18px 24px 12px}.orderable-product__content :last-child{margin-bottom:0}.orderable-product__title{margin:0 0 12px!important}.orderable-product__description{margin:0}.orderable-product__tags{overflow:hidden;margin:0;padding:0;list-style:none}img+.orderable-product__tags{position:absolute;bottom:0;left:0;padding:12px;z-index:20}.orderable-product__tags li{margin:6px 0 0}.orderable-product__options{margin:0 0 24px;padding:0;border-radius:6px}.orderable-product__options td,.orderable-product__options th{background-color:transparent!important;padding:0 0 12px;text-align:left;display:block;margin:0}.orderable-product__options th{line-height:22px}.orderable-product__options td{padding-bottom:24px}.orderable-product__options tr{padding:0;margin:0}.orderable-product__options tr:last-child td{padding-bottom:0}.orderable-product__actions{overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.orderable-product__actions:last-child{margin-bottom:0}.orderable-product__actions-price{margin:0 4px 0 0}.orderable-product__actions-price .amount{white-space:nowrap;margin:0 6px 0 0;font-weight:700;color:#000;font-size:20px;line-height:24px}.orderable-product__actions-button{margin:0 0 0 auto}.orderable-product__tabs{margin:24px 0}.orderable-product__tabs-section{display:none}.orderable-product__tabs-section:first-child{display:block}.orderable-product__tabs-section :last-child{margin-bottom:0}.orderable-product--options{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:visible;height:100%}.orderable-product--options .orderable-product__hero{margin:-24px -24px 0}.orderable-product--options .orderable-product__title{text-align:left;margin:24px 0!important}.orderable-product--options .orderable-product__actions{margin-top:auto;padding-top:24px;border-top:1px solid #E6ECEF;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.orderable-product--add-to-cart,.orderable-product--product-options,.orderable-product--view-product{cursor:pointer}.orderable-product--image-cropped .orderable-product__hero{overflow:hidden;padding:0;text-align:center;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;height:72px}.orderable-product--image-cropped .orderable-product__image{-o-object-fit:cover;object-fit:cover;position:absolute;z-index:-1;width:100%;height:100%!important;left:0;top:0}.orderable-products-list__item .orderable-product{height:100%;width:100%;box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);border-radius:6px}@media screen and (max-width:480px){.orderable-products-list__item .orderable-product{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.orderable-products-list__item .orderable-product__hero{width:100%;min-width:60px;max-width:95px;border-radius:6px;overflow:hidden}.orderable-products-list__item .orderable-product__content-wrap{-webkit-box-flex:1;-ms-flex:1;flex:1}.orderable-products-list__item .orderable-product__content{padding:0 0 0 24px}.orderable-products-list__item .orderable-product__actions{padding:6px 0 0 24px}.orderable-products-list__item .orderable-product__title{margin:0 0 6px!important}}.orderable-tag{display:inline-block;background:#EDF2F6;border-radius:15px;height:30px;line-height:30px;white-space:nowrap;color:#495568;padding:0 12px;font-size:14px}body.orderable-drawer-open{overflow:hidden}.orderable-drawer-overlay{height:100%;z-index:999998;position:fixed;top:0;left:0;opacity:0;visibility:hidden;background-color:rgba(34,34,34,.6);-webkit-transition:opacity .2s linear,visibility .1s,width 1s ease-in;transition:opacity .2s linear,visibility .1s,width 1s ease-in}.orderable-drawer{width:100%;visibility:hidden;-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-transition:all .2s;transition:all .2s;border-radius:0;-webkit-box-shadow:0 4px 56px -2px rgba(0,0,0,.2),0 3px 6px -1px rgba(0,0,0,.4);box-shadow:0 4px 56px -2px rgba(0,0,0,.2),0 3px 6px -1px rgba(0,0,0,.4);display:block;position:fixed;top:0;right:0;height:100%;z-index:999999;background-color:#fff;overflow:hidden;padding:24px}@media screen and (min-width:640px){.orderable-drawer{max-width:600px}}.orderable-drawer h3{margin:0 60px 24px!important;font-size:20px;line-height:24px;text-align:center}.orderable-drawer h4{font-size:18px;line-height:22px}.orderable-drawer__inner{padding:0;height:100%;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.orderable-drawer__cart,.orderable-drawer__cart .orderable-mini-cart-wrapper{display:-webkit-box;display:-ms-flexbox;-webkit-box-orient:vertical;-webkit-box-direction:normal}.orderable-drawer__inner .orderable-sb-container{-ms-flex-preferred-size:100%;flex-basis:100%;margin-bottom:-1px}.orderable-drawer__cart{display:flex;-ms-flex-direction:column;flex-direction:column}.orderable-drawer__cart .orderable-mini-cart-wrapper{height:100%;display:flex;-ms-flex-direction:column;flex-direction:column;overflow:hidden;border-top:1px solid #E6ECEF}.orderable-drawer__cart .orderable-mini-cart{margin:0;padding:0;list-style:none;overflow:hidden;min-height:100%}.orderable-drawer__cart .orderable-mini-cart-item{margin:0;padding:10px 44px 10px 0;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-bottom:1px solid #E6ECEF}.orderable-drawer__cart .orderable-mini-cart-item:last-child{border-bottom:none}.orderable-drawer__cart .orderable-mini-cart-item .variation{margin:7.5px 0}.orderable-drawer__cart .orderable-mini-cart-item .variation dd,.orderable-drawer__cart .orderable-mini-cart-item .variation dt,.orderable-drawer__cart .orderable-mini-cart-item .variation p{margin:0}.orderable-drawer__cart .orderable-mini-cart-item .blockOverlay{background:#fff!important;opacity:.8!important}.orderable-drawer__cart .orderable-mini-cart-item__remove{position:absolute;bottom:16px;right:0;z-index:20;color:#c7d4db;-webkit-box-shadow:none;box-shadow:none;height:40px;width:40px;text-indent:250%;white-space:nowrap;font-size:0;-webkit-transition:none;transition:none;-webkit-box-sizing:border-box;box-sizing:border-box;border:none}.orderable-drawer__cart .orderable-mini-cart-item__remove svg{display:block;height:20px;width:20px;position:absolute;left:50%;top:50%;-webkit-transition:none;transition:none;fill:#c7d4db;margin:-10px 0 0 -10px}.orderable-drawer__cart .orderable-mini-cart-item__remove:hover svg{opacity:.8}.orderable--button-style-square .orderable-drawer__cart .orderable-mini-cart-item__remove{border-radius:0}.orderable-drawer__cart .quantity{font-weight:700}.orderable-drawer__cart .orderable-mini-cart__notices{padding:15px 0;border-top:1px solid #E6ECEF}.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error{margin:0;padding:0;list-style:none}.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error li{border:1px solid #E34F4F;background:#fce9e9;color:#dc2323;padding:6px 12px 6px 28px!important;text-align:center;margin:0 0 6px;display:block;border-radius:8px}.orderable-drawer__cart .orderable-mini-cart__buttons .button,.orderable-drawer__cart .orderable-mini-cart__notices .button{display:none}.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error li:last-child{margin-bottom:0}.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error::before,.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-info::before,.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-message::before{left:12px}.orderable-drawer__cart .orderable-mini-cart__buttons,.orderable-drawer__cart .orderable-mini-cart__total{margin:0;padding:0;text-align:center}.orderable-drawer__cart .orderable-mini-cart__total{padding:15px 0;border-top:1px solid #E6ECEF}.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout{display:block;width:100%}.orderable-drawer__cart .orderable-mini-cart__empty-message{margin:auto 0;text-align:center}.orderable-drawer__cart .orderable-services-selector__lookup,.orderable-drawer__cart .orderable-services-selector__selected{margin:0 0 15px}.orderable-drawer__cart .orderable-services-selector__lookup input{width:100%;margin:0 0 8px}.orderable-drawer__cart .orderable-services-selector__lookup-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.orderable-drawer__cart .orderable-services-selector__lookup-buttons button{display:block;width:100%}.orderable-drawer__cart .orderable-services-selector__lookup-buttons button:first-child{margin-right:4px}.orderable-drawer__cart .orderable-services-selector__lookup-buttons button:last-child{margin-left:4px}.orderable-drawer__actions{bottom:-24px;margin:auto 0 -24px;background:#fff;padding:24px 0;left:0;right:0;border-top:1px solid #F2F2F2}.orderable-drawer__actions--cart{border-top:none;padding-top:10px}.orderable-drawer__close{position:absolute;top:16px;left:24px;font-size:0;text-indent:250%!important;white-space:nowrap!important;overflow:hidden!important;padding:0!important;width:40px;height:40px;margin:0;z-index:100;border-color:#c7d4db}.orderable-drawer__close:after,.orderable-drawer__close:before{position:absolute;left:54%;content:' ';height:18px;width:2px;background-color:#c7d4db;top:50%;margin:-9px 0 0 -2px;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out;display:block}.orderable-drawer__close:before{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.orderable-drawer__close:after{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.orderable-drawer__close:active,.orderable-drawer__close:focus,.orderable-drawer__close:hover{background-color:#c7d4db;border-color:#c7d4db}.orderable-drawer__close:active:after,.orderable-drawer__close:active:before,.orderable-drawer__close:focus:after,.orderable-drawer__close:focus:before,.orderable-drawer__close:hover:after,.orderable-drawer__close:hover:before{background-color:#405763}.orderable-drawer .orderable-product__content{padding:15px 0}.orderable-drawer-overlay--open{-webkit-transition:opacity .2s ease,width 0s;transition:opacity .2s ease,width 0s;opacity:1;width:100%;visibility:visible}.orderable-drawer--open{visibility:visible;-webkit-transform:translateX(0);transform:translateX(0);-webkit-transition:-webkit-transform .2s;transition:-webkit-transform .2s;transition:transform .2s;transition:transform .2s,-webkit-transform .2s}.orderable-floating-cart{position:fixed;z-index:20}.orderable-floating-cart__button{padding:0;width:60px;height:60px;border:none;border-radius:100%;display:block;margin:0;text-align:center;line-height:60px;background:#fff;box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);outline:0!important;-webkit-transition:-webkit-transform 150ms ease-in-out;transition:-webkit-transform 150ms ease-in-out;transition:transform 150ms ease-in-out;transition:transform 150ms ease-in-out,-webkit-transform 150ms ease-in-out}.orderable-floating-cart__button:hover{background:#fff;-webkit-animation:wobble-hor-bottom .8s both;animation:wobble-hor-bottom .8s both;-webkit-box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07)}.orderable-floating-cart__button svg{width:24px;height:24px;display:block;margin:0 auto}.orderable-floating-cart__count{position:absolute;top:0;right:0;white-space:nowrap;padding:0 4px;background:#E52C23;color:#fff;height:22px;line-height:22px;font-size:13px;border-radius:11px;min-width:22px;text-align:center}.orderable-floating-cart--bl,.orderable-floating-cart--br{bottom:40px}.orderable-floating-cart--br,.orderable-floating-cart--tr{right:40px}.orderable-floating-cart--bl,.orderable-floating-cart--tl{left:40px}.orderable-floating-cart--tl,.orderable-floating-cart--tr{top:40px}.orderable-services-selector__selected p{margin:0}.orderable-services-selector__selected-change{padding:0;margin:0;font-size:inherit;background:0 0;display:inline;color:#333;-webkit-transition:none;transition:none;text-transform:none;-webkit-box-shadow:none;box-shadow:none}.orderable-services-selector__selected-change:active,.orderable-services-selector__selected-change:focus,.orderable-services-selector__selected-change:hover{padding:0;margin:0;background:0 0;color:#333;text-decoration:underline;-webkit-transform:none;transform:none;-webkit-box-shadow:none;box-shadow:none}.orderable-services-selector--selected .orderable-services-selector__lookup{display:none}.orderable-open-hours__date,.orderable-open-hours__service{margin:0 0 0 6px;padding:2px 6px;background:#000;color:#fff;border-radius:4px;display:inline-block;font-size:80%}.orderable-open-hours__service--closed{background-color:#E34F4F;display:none}.orderable-open-hours__date{margin:0 4px 0 0;text-align:center;min-width:30px;border:1px solid #E6ECEF;background:0 0;color:inherit}.orderable-tabs{margin:0 0 24px;position:relative}.orderable-tabs__list{margin:0 1px 0 0!important;padding:0!important;list-style:none;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;overflow-x:auto;overflow-y:hidden;overflow:-moz-scrollbars-none;scrollbar-base-color:transparent;-webkit-overflow-scrolling:touch}.orderable-tabs__list::-webkit-scrollbar{display:none}.orderable-tabs__item{display:inline-block;margin:0 10px 0 0;padding:0}.orderable-tabs__item:last-child{margin-right:0}@media screen and (min-width:620px){.orderable-main--sections-side_tabs .orderable-tabs__list{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:auto}.orderable-main--sections-side_tabs .orderable-tabs__item{margin:0 0 12px;display:block}.orderable-main--sections-side_tabs .orderable-tabs__item:last-child{margin:0}}a.orderable-tabs__link{text-decoration:none!important;display:inline-block;padding:0 24px;white-space:nowrap;line-height:40px;color:#405763;font-weight:400;border-radius:20px;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out;background:#ecf1f3}a.orderable-tabs__link:active,a.orderable-tabs__link:focus{outline:0;-webkit-box-shadow:none;box-shadow:none}a.orderable-tabs__link:active,a.orderable-tabs__link:focus,a.orderable-tabs__link:hover{color:#405763;text-decoration:none;background:#c7d4db}.orderable-tabs__item--active a.orderable-tabs__link{background:#000;color:#fff}.orderable--button-style-square a.orderable-tabs__link{border-radius:0}.orderable-tabs__arrow{background:#fff;-webkit-box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);border:none;width:40px!important;height:40px!important;padding:0!important;margin:0!important;border-radius:20px!important;position:absolute;top:0;right:0;text-align:center;line-height:40px;display:none}.orderable-tabs__arrow:active,.orderable-tabs__arrow:focus,.orderable-tabs__arrow:hover{background:#fff;outline:0}.orderable-tabs__arrow svg{width:21px;height:24px;margin:8px 0}.orderable-accordion{margin:24px 0;background:#f6f8f9;padding:0 24px;border-radius:6px}.orderable-product-fields-group-wrap+.orderable-accordion,.orderable-product__options+.orderable-accordion{margin-top:36px}.orderable-accordion__item{border-top:1px solid #E6ECEF}.orderable-accordion__item:first-child{border-top:none}.orderable-accordion__item-link{display:block;padding:18px 0;margin:0;color:inherit;position:relative}.orderable-accordion__item-link--active,.orderable-accordion__item-link:active,.orderable-accordion__item-link:focus,.orderable-accordion__item-link:hover{color:#000;border:none;outline:0}.orderable-accordion__item-link--active:after,.orderable-accordion__item-link--active:before,.orderable-accordion__item-link:active:after,.orderable-accordion__item-link:active:before,.orderable-accordion__item-link:focus:after,.orderable-accordion__item-link:focus:before,.orderable-accordion__item-link:hover:after,.orderable-accordion__item-link:hover:before{background-color:#405763!important}.orderable-accordion__item-link:after,.orderable-accordion__item-link:before{position:absolute;right:5px;content:' ';height:11px;width:2px;background-color:#c7d4db;top:50%;display:block;margin:-4px 0 0}.orderable-accordion__item-link:before{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.orderable-accordion__item-link:after{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);right:12px}.orderable-accordion__item-link--active:before{right:12px}.orderable-accordion__item-link--active:after{right:5px}.orderable-accordion__item-content{display:none}.orderable-accordion__item-content--active{display:block}.orderable-accordion__item-content:after{content:"";display:table;clear:both}.orderable-sb-container{position:relative;overflow:hidden;padding-right:25px}.orderable-sb-content{height:100%;width:120%;padding-right:20%;overflow-y:scroll;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-sb-scrollbar-container{position:absolute;right:0;bottom:10px;top:10px;width:10px}.orderable-sb-container-noscroll .orderable-sb-scrollbar-container{right:-20px}.orderable-sb-scrollbar{position:absolute;right:0;height:30px;width:10px;border-radius:10px;background:#d6e0e5}.orderable-sb-scrollbar:hover{background:#c7d4db}.orderable--button-style-square .orderable-sb-scrollbar{border-radius:0}.orderable-sb-container-noscroll{padding-right:0}.orderable-sb-container-noscroll .orderable-sb-content{width:100%;padding-right:0;overflow:hidden}.orderable-quantity-roller{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.orderable-quantity-roller *{-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-quantity-roller__roller{border:2px solid #c7d4db;border-radius:20px;height:40px;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex}.orderable--button-style-square .orderable-quantity-roller__roller{border-radius:0}.orderable-quantity-roller__button{height:36px;width:24px;background:0 0;border:none;border-radius:0;text-align:center;color:#c7d4db;line-height:36px;-webkit-box-shadow:none;box-shadow:none;text-shadow:none;padding:0 6px;-webkit-box-sizing:content-box;box-sizing:content-box;position:relative;font-size:0;text-indent:250%;overflow:hidden;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out}.orderable-quantity-roller__button:after,.orderable-quantity-roller__button:before{content:"";position:absolute;display:block!important;height:2px;width:12px;background:#c7d4db;top:50%;left:50%;margin:-1px 0 0 -6px;-webkit-transition:background 150ms ease-out;transition:background 150ms ease-out}.orderable-quantity-roller__button:focus,.orderable-quantity-roller__button:hover,.orderable-quantity-roller__button:visited{background-color:#c7d4db;color:#405763;-webkit-box-shadow:none;box-shadow:none;text-shadow:none;outline:0}.orderable-quantity-roller__button:focus:after,.orderable-quantity-roller__button:focus:before,.orderable-quantity-roller__button:hover:after,.orderable-quantity-roller__button:hover:before,.orderable-quantity-roller__button:visited:after,.orderable-quantity-roller__button:visited:before{background:#405763}.orderable-quantity-roller__button--decrease{padding-right:4px}.orderable-quantity-roller__button--decrease:after{display:none!important}.orderable-quantity-roller__button--increase{padding-left:4px}.orderable-quantity-roller__button--increase:after{height:12px;width:2px;margin:-6px 0 0 -1px}.orderable-quantity-roller__quantity{text-align:center;display:inline-block;line-height:36px;padding:0 6px;min-width:24px;outline:0}.orderable-quantity-roller__price{margin-left:8px}.orderable-quantity-roller__price:before{content:"x";margin:0 8px;color:#c7d4db}.orderable-drawer__cart .orderable-quantity-roller{margin:12px 0 6px}
  • orderable/trunk/assets/frontend/js/main.js

    r2666071 r2709284  
    33    "use strict";
    44
     5    var orderable_accordion = {
     6        /**
     7         * On doc ready.
     8         */
     9        on_ready: function() {
     10            orderable_accordion.cache();
     11            orderable_accordion.watch();
     12        },
     13
     14        /**
     15         * Cache.
     16         */
     17        cache: function() {
     18            orderable_accordion.vars = {
     19                classes: {
     20                    parent: 'orderable-accordion',
     21                    link: 'orderable-accordion__item-link',
     22                    content: 'orderable-accordion__item-content',
     23                    link_active: 'orderable-accordion__item-link--active',
     24                    content_active: 'orderable-accordion__item-content--active',
     25                },
     26            };
     27        },
     28
     29        /**
     30         * Watch.
     31         */
     32        watch: function() {
     33            /**
     34             * When click accordion link.
     35             */
     36            $( document.body ).on( 'click', '.' + orderable_accordion.vars.classes.link, function( e ) {
     37                e.preventDefault();
     38
     39                var $link = $( this ),
     40                    $parent = $link.closest( '.' + orderable_accordion.vars.classes.parent ),
     41                    content_id = $link.attr( 'href' ),
     42                    $content = $( content_id ),
     43                    is_active = $link.hasClass( orderable_accordion.vars.classes.link_active );
     44
     45                $parent.find( '.' + orderable_accordion.vars.classes.link ).removeClass( orderable_accordion.vars.classes.link_active );
     46                $parent.find( '.' + orderable_accordion.vars.classes.content ).removeClass( orderable_accordion.vars.classes.content_active );
     47
     48                if ( ! is_active ) {
     49                    $link.addClass( orderable_accordion.vars.classes.link_active );
     50                    $content.addClass( orderable_accordion.vars.classes.content_active );
     51                }
     52
     53                $( document.body ).trigger( 'orderable-accordion.toggled', {
     54                    'link': $link,
     55                    'content': $content
     56                } );
     57            } );
     58
     59            /**
     60             * When drawer is opened.
     61             */
     62            $( document.body ).on( 'orderable-scrollbar.created', function( e, args ) {
     63                var $active_accordion = $( '.orderable-drawer .' + orderable_accordion.vars.classes.link_active );
     64
     65                if ( $active_accordion.length <= 0 ) {
     66                    return;
     67                }
     68
     69                var $scroll_content = args.content,
     70                    scroll_position = $scroll_content.scrollTop() - $scroll_content.offset().top + $active_accordion.offset().top;
     71
     72                $scroll_content.scrollTop( scroll_position );
     73            } );
     74        },
     75    };
     76
     77    $( document ).ready( orderable_accordion.on_ready );
     78}( jQuery, document ));
     79(function( $, document ) {
     80    "use strict";
     81
    582    var orderable_drawer = {
     83        /**
     84         * Delays invoking function
     85         *
     86         * @param {Function} func The function to debounce.
     87         * @param {number} timeout The number of milliseconds to delay.
     88         * @returns {Function} Returns the new debounced function.
     89         */
     90        debounce: function (func, timeout = 700) {
     91            let timer;
     92   
     93            return (...args) => {
     94              clearTimeout(timer);
     95              timer = setTimeout(() => { func.apply(this, args); }, timeout);
     96            };
     97        },
     98
     99        /**
     100         * Allow only number for events like keypress
     101         *
     102         * @param {Event} event
     103         */
     104        allow_only_numbers: function (event) {
     105            const value = String.fromCharCode(event.which);
     106   
     107            if ( ! /^\d+$/.test(value) ) {
     108                event.preventDefault();
     109            }
     110        },
     111
     112        /**
     113         * Send a request to change the quantity.
     114         *
     115         * @param {Event} event
     116         */
     117        on_change_quantity: function (event) {
     118            const quantityElement = $(event.currentTarget);
     119   
     120            const product_id = quantityElement.data( 'orderable-product-id' );
     121            const cart_item_key = quantityElement.data( 'orderable-cart-item-key' );
     122            const quantity = parseInt( quantityElement.text() );
     123   
     124            var data = {
     125                'action': 'orderable_cart_quantity',
     126                cart_item_key,
     127                product_id,
     128                quantity
     129            };
     130   
     131            jQuery.post(
     132                orderable_vars.ajax_url,
     133                data,
     134                function( response ) {
     135                    if ( ! response ) {
     136                        return;
     137                    }
     138   
     139                    $( document.body ).trigger( 'added_to_cart', [ response.fragments, response.cart_hash, quantityElement ] );
     140                    $( document.body ).trigger( 'orderable-drawer.quantity-updated' );
     141                }
     142            );
     143        },
     144
    6145        /**
    7146         * On doc ready.
     
    10149            orderable_drawer.cache();
    11150            orderable_drawer.watch();
     151
     152            /**
     153             * Handle manually changing the quantity of a product.
     154             */
     155            $( document.body ).on('keypress', '.orderable-quantity-roller__quantity', orderable_drawer.allow_only_numbers);
     156            $( '.orderable-drawer__cart' ).on('input', '.orderable-quantity-roller__quantity', orderable_drawer.debounce(orderable_drawer.on_change_quantity));
     157
     158            /**
     159             * We turn off the click event for .add_to_cart_button elements
     160             * to keep the AJAX behaviour only on Mini cart when the option
     161             * "Enable AJAX add to cart buttons on archives" is disabled.
     162             */
     163            if (orderable_vars && ! orderable_vars.woocommerce_enable_ajax_add_to_cart) {
     164                $( document.body ).off('click', '.add_to_cart_button');
     165            }
    12166        },
    13167
     
    138292
    139293                jQuery.post(
    140                     wc_add_to_cart_params.ajax_url,
     294                    orderable_vars.ajax_url,
    141295                    data,
    142296                    function( response ) {
     
    158312    "use strict";
    159313
    160     var orderable_layouts = {
    161         /**
    162          * On doc ready.
    163          */
    164         on_ready: function() {
    165             orderable_layouts.cache();
    166             orderable_layouts.watch();
    167         },
    168 
    169         /**
    170          * Cache.
    171          */
    172         cache: function() {
    173             orderable_layouts.vars = {
    174                 classes: {
    175                     main: 'orderable-main',
    176                     tabs: 'orderable-tabs',
    177                     tab_items: 'orderable-tabs__item',
    178                     tab_item_active: 'orderable-tabs__item--active',
    179                     tab_links: 'orderable-tabs__link',
    180                     sections: 'orderable-main__group',
    181                 },
    182             };
    183 
    184             orderable_layouts.elements = {};
    185         },
    186 
    187         /**
    188          * Watch.
    189          */
    190         watch: function() {
    191             $( document.body ).on( 'click mouseup touchend', '.' + orderable_layouts.vars.classes.tab_links, function( e ) {
    192                 e.preventDefault();
    193 
    194                 var $link = $( this ),
    195                     section_id = $link.attr( 'href' ),
    196                     $tab = $link.closest( '.' + orderable_layouts.vars.classes.tab_items ),
    197                     $tabs = $link.closest( '.' + orderable_layouts.vars.classes.tabs ),
    198                     $tab_items = $tabs.find( '.' + orderable_layouts.vars.classes.tab_items ),
    199                     $main = $link.closest( '.' + orderable_layouts.vars.classes.main ),
    200                     $sections = $main.find( '.' + orderable_layouts.vars.classes.sections ),
    201                     $section = $main.find( section_id );
    202 
    203                 $sections.hide();
    204                 $section.show();
    205 
    206                 $tab_items.removeClass( orderable_layouts.vars.classes.tab_item_active );
    207                 $tab.addClass( orderable_layouts.vars.classes.tab_item_active );
    208             } );
    209         },
    210     };
    211 
    212     $( document ).ready( orderable_layouts.on_ready );
    213 }( jQuery, document ));
    214 (function( $, document ) {
    215     "use strict";
    216 
    217314    var orderable_products = {
    218315        /**
     
    230327            orderable_products.vars = {
    231328                classes: {
    232                     clickable_product: 'orderable-product--clickable',
     329                    clickable_product: 'orderable-product--add-to-cart ',
    233330                    add_to_order_button: 'orderable-product__add-to-order',
    234331                    product_messages: 'orderable-product__messages',
     
    252349            $( document.body ).on( 'orderable-add-to-cart', orderable_products.click_add_to_order );
    253350            $( document.body ).on( 'orderable-product-options', orderable_products.click_add_to_order );
     351            $( document.body ).on( 'orderable-view-product', orderable_products.view_product );
    254352            $( document.body ).on( 'mouseenter mouseleave', '.' + orderable_products.vars.classes.clickable_product, orderable_products.simulate_add_to_order_hover );
    255             $( document.body ).on( 'click', '.' + orderable_products.vars.classes.clickable_product, orderable_products.click_add_to_order );
    256353        },
    257354
     
    311408                orderable_products.get_product_options(
    312409                    {
    313                         'product_id': product_id
     410                        'product_id': product_id,
     411                        'focus': $button.data( 'orderable-focus' )
    314412                    },
    315413                    function( response ) {
     
    321419                );
    322420            }
     421        },
     422
     423        /**
     424         * View product.
     425         *
     426         * @param event
     427         * @param $element
     428         */
     429        view_product: function( event, $element ) {
     430            var product_id = $element.data( 'orderable-product-id' ),
     431                args = { action: 'product-options' };
     432
     433            orderable_products.get_product_options(
     434                {
     435                    'product_id': product_id,
     436                    'focus': $element.data( 'orderable-focus' )
     437                },
     438                function( response ) {
     439                    args.html = response.html;
     440
     441                    $( document.body ).trigger( 'orderable-drawer.open', args );
     442                }
     443            );
    323444        },
    324445
     
    348469
    349470            jQuery.post(
    350                 wc_add_to_cart_params.ajax_url,
     471                orderable_vars.ajax_url,
    351472                data,
    352473                function( response ) {
     
    403524
    404525            jQuery.post(
    405                 wc_add_to_cart_params.ajax_url,
     526                orderable_vars.ajax_url,
    406527                args,
    407528                function( response ) {
     
    723844        watch: function() {
    724845            $( document.body ).on( 'orderable-drawer.opened', orderable_scrollbar.trigger );
     846            $( document.body ).on( 'orderable-tabs.changed', orderable_scrollbar.trigger );
     847            $( document.body ).on( 'orderable-accordion.toggled', orderable_scrollbar.trigger );
    725848            $( document.body ).on( 'wc_fragments_loaded', orderable_scrollbar.trigger );
    726849        },
     
    753876                        }
    754877                    }
     878
     879                    $( document.body ).trigger( 'orderable-scrollbar.created', {
     880                        'element': $element,
     881                        'content': $content
     882                    } );
    755883                }
    756884            } );
     
    824952
    825953                jQuery.post(
    826                     wc_add_to_cart_params.ajax_url,
     954                    orderable_vars.ajax_url,
    827955                    data,
    828956                    function( response ) {
     
    849977
    850978    $( document ).ready( orderable_services.on_ready );
     979}( jQuery, document ));
     980(function( $, document ) {
     981    "use strict";
     982
     983    var orderable_tabs = {
     984        /**
     985         * On doc ready.
     986         */
     987        on_ready: function() {
     988            orderable_tabs.cache();
     989            orderable_tabs.watch();
     990            orderable_tabs.toggle_scroll();
     991        },
     992
     993        /**
     994         * On resize.
     995         */
     996        on_resize: function() {
     997            orderable_tabs.toggle_scroll();
     998        },
     999
     1000        /**
     1001         * Cache.
     1002         */
     1003        cache: function() {
     1004            orderable_tabs.vars = {
     1005                classes: {
     1006                    tabs: 'orderable-tabs',
     1007                    tabs_list: 'orderable-tabs__list',
     1008                    tab_items: 'orderable-tabs__item',
     1009                    tab_item_active: 'orderable-tabs__item--active',
     1010                    tab_links: 'orderable-tabs__link',
     1011                    tab_arrow: 'orderable-tabs__arrow'
     1012                },
     1013                dragging: false
     1014            };
     1015
     1016            orderable_tabs.elements = {};
     1017        },
     1018
     1019        /**
     1020         * Watch.
     1021         */
     1022        watch: function() {
     1023            $( 'body' ).on( 'touchstart', function() {
     1024                orderable_tabs.vars.dragging = false;
     1025            } ).on( 'touchmove', function() {
     1026                orderable_tabs.vars.dragging = true;
     1027            } );
     1028
     1029            $( document.body ).on( 'click mouseup touchend', '.' + orderable_tabs.vars.classes.tab_links, function( e ) {
     1030                if ( orderable_tabs.vars.dragging ) {
     1031                    return;
     1032                }
     1033
     1034                e.preventDefault();
     1035
     1036                var $link = $( this ),
     1037                    section_id = $link.attr( 'href' ),
     1038                    $tab = $link.closest( '.' + orderable_tabs.vars.classes.tab_items ),
     1039                    $tabs = $link.closest( '.' + orderable_tabs.vars.classes.tabs ),
     1040                    $tabs_list = $tabs.find( '.' + orderable_tabs.vars.classes.tabs_list ),
     1041                    $tab_items = $tabs.find( '.' + orderable_tabs.vars.classes.tab_items ),
     1042                    tabs_args = $tabs.data( 'orderable-tabs' ),
     1043                    $wrapper = $link.closest( tabs_args.wrapper ),
     1044                    $sections = $wrapper.find( tabs_args.sections ),
     1045                    $section = $wrapper.find( section_id );
     1046
     1047                $sections.hide();
     1048                $section.show();
     1049
     1050                $tab_items.removeClass( orderable_tabs.vars.classes.tab_item_active );
     1051                $tab.addClass( orderable_tabs.vars.classes.tab_item_active );
     1052
     1053                $tabs_list.animate( {
     1054                    scrollLeft: $tabs_list.scrollLeft() + $tab.position().left
     1055                } );
     1056
     1057                $( document.body ).trigger( 'orderable-tabs.changed', {
     1058                    'tab': $tab
     1059                } );
     1060            } );
     1061
     1062            /**
     1063             * Watch scroll position of tabs.
     1064             */
     1065            $( '.' + orderable_tabs.vars.classes.tabs_list ).on( 'scroll', function( e ) {
     1066                if ( $( this ).scrollLeft() > 0 ) {
     1067                    $( '.' + orderable_tabs.vars.classes.tab_arrow ).fadeOut();
     1068                }
     1069            } );
     1070
     1071            /**
     1072             * Stop animated scroll if user manually scrolls.
     1073             */
     1074            $( '.' + orderable_tabs.vars.classes.tabs_list ).on( "wheel DOMMouseScroll mousewheel touchmove", function() {
     1075                $( this ).stop();
     1076            } );
     1077
     1078            /**
     1079             * Click tab arrow.
     1080             */
     1081            $(document).on( 'click', '.' + orderable_tabs.vars.classes.tab_arrow, function( e ) {
     1082                e.preventDefault();
     1083
     1084                var $arrow = $( this ),
     1085                    $wrapper = $arrow.parent(),
     1086                    $list = $wrapper.find( '.' + orderable_tabs.vars.classes.tabs_list );
     1087
     1088                $list.animate( {
     1089                    scrollLeft: $list.scrollLeft() + ( $wrapper.width() * 0.5 )
     1090                } );
     1091
     1092                $arrow.fadeOut();
     1093            } );
     1094        },
     1095
     1096        /**
     1097         * Toggle scroll arrow.
     1098         */
     1099        toggle_scroll: function() {
     1100            $( '.' + orderable_tabs.vars.classes.tabs ).each( function( index, wrapper ){
     1101                var $tabs = $( this ),
     1102                    tabs_args = $tabs.data( 'orderable-tabs' ),
     1103                    $wrapper = $tabs.closest( tabs_args.wrapper ),
     1104                    $list = $wrapper.find( '.' + orderable_tabs.vars.classes.tabs_list ),
     1105                    $arrow = $wrapper.find( '.' + orderable_tabs.vars.classes.tab_arrow ),
     1106                    wrapper_width = $wrapper.outerWidth(),
     1107                    list_width = $list[0].scrollWidth;
     1108
     1109                if ( list_width > wrapper_width ) {
     1110                    $arrow.show();
     1111                } else {
     1112                    $arrow.hide();
     1113                }
     1114            } );
     1115        }
     1116    };
     1117
     1118    $( document ).ready( orderable_tabs.on_ready );
     1119    $( window ).on( 'resize', orderable_tabs.on_resize );
    8511120}( jQuery, document ));
    8521121var orderable_timings = {}; // Make this global so pro modules can access it.
     
    10141283         * Fire trigger.
    10151284         */
    1016         trigger: function() {
     1285        trigger: function( e ) {
     1286            // Prevent even bubbling up.
     1287            e.stopImmediatePropagation();
     1288
    10171289            var $trigger_element = $( this ),
    10181290                trigger = $trigger_element.data( 'orderable-trigger' );
  • orderable/trunk/assets/frontend/js/main.min.js

    r2666071 r2709284  
    1 !function(n,i){"use strict";var r={on_ready:function(){r.cache(),r.watch()},cache:function(){r.vars={classes:{overlay:"orderable-drawer-overlay",drawer:"orderable-drawer",drawer_cart:"orderable-drawer__cart",drawer_html:"orderable-drawer__html",overlay_open:"orderable-drawer-overlay--open",drawer_open:"orderable-drawer--open",drawer_open_body:"orderable-drawer-open"}},r.elements={body:n("body"),overlay:n("."+r.vars.classes.overlay),drawer:n("."+r.vars.classes.drawer),drawer_cart:n("."+r.vars.classes.drawer_cart),drawer_html:n("."+r.vars.classes.drawer_html),floating_cart_button_class:".orderable-floating-cart__button"}},watch:function(){var e,t;void 0!==r.elements.drawer&&(n(i.body).on("orderable-drawer.open",r.open),n(i.body).on("orderable-drawer.close",r.close),n(i.body).on("click",r.elements.floating_cart_button_class,function(){n(i.body).trigger("orderable-drawer.open",{show_cart:!0})}),n(i.body).on("orderable-increase-quantity",r.cart.click_increase_decrease_quantity),n(i.body).on("orderable-decrease-quantity",r.cart.click_increase_decrease_quantity),e=i.querySelector("body:not( .rtl ) .orderable-drawer"),t=i.querySelector("body.rtl .orderable-drawer"),e&&e.addEventListener("swiped-right",function(e){r.close()}),t&&t.addEventListener("swiped-left",function(e){r.close()}))},open:function(e,t){t.html=t.html||!1,t.show_cart=t.show_cart||!1,r.elements.drawer_html.hide(),r.elements.drawer_cart.hide(),t.html&&(r.elements.drawer_html.html(t.html),r.elements.drawer_html.show()),t.show_cart&&(r.elements.drawer_html.html(""),r.elements.drawer_cart.show()),r.elements.overlay.addClass(r.vars.classes.overlay_open),r.elements.drawer.addClass(r.vars.classes.drawer_open),r.elements.body.addClass(r.vars.classes.drawer_open_body),n(i.body).trigger("orderable-drawer.opened",t)},close:function(){r.elements.overlay.removeClass(r.vars.classes.overlay_open),r.elements.drawer.removeClass(r.vars.classes.drawer_open),r.elements.body.removeClass(r.vars.classes.drawer_open_body),r.elements.drawer_html.html(""),n(i.body).trigger("orderable-drawer.closed")},cart:{click_increase_decrease_quantity:function(e,t){var r=t.data("orderable-product-id"),a=t.data("orderable-cart-item-key"),o=t.data("orderable-trigger"),s=parseInt(t.data("orderable-quantity"));jQuery.post(wc_add_to_cart_params.ajax_url,{action:"orderable_cart_quantity",cart_item_key:a,product_id:r,quantity:"increase-quantity"===o?s+1:s-1},function(e){e&&(n(i.body).trigger("added_to_cart",[e.fragments,e.cart_hash,t]),n(i.body).trigger("orderable-drawer.quantity-updated"))})}}};n(i).ready(r.on_ready)}(jQuery,document),function(s,e){"use strict";var n={on_ready:function(){n.cache(),n.watch()},cache:function(){n.vars={classes:{main:"orderable-main",tabs:"orderable-tabs",tab_items:"orderable-tabs__item",tab_item_active:"orderable-tabs__item--active",tab_links:"orderable-tabs__link",sections:"orderable-main__group"}},n.elements={}},watch:function(){s(e.body).on("click mouseup touchend","."+n.vars.classes.tab_links,function(e){e.preventDefault();var t=s(this),r=t.attr("href"),a=t.closest("."+n.vars.classes.tab_items),o=t.closest("."+n.vars.classes.tabs).find("."+n.vars.classes.tab_items),e=t.closest("."+n.vars.classes.main),t=e.find("."+n.vars.classes.sections),r=e.find(r);t.hide(),r.show(),o.removeClass(n.vars.classes.tab_item_active),a.addClass(n.vars.classes.tab_item_active)})}};s(e).ready(n.on_ready)}(jQuery,document),function(i,l){"use strict";var d={on_ready:function(){d.cache(),d.watch()},cache:function(){d.vars={classes:{clickable_product:"orderable-product--clickable",add_to_order_button:"orderable-product__add-to-order",product_messages:"orderable-product__messages",product_price:"orderable-product__actions-price",invalid_field:"orderable-field--invalid",option_select_td:"orderable-product__option-select",button_loading:"orderable-button--loading",out_of_stock:"orderable-button--out-of-stock"},parent_price:null},d.elements={}},watch:function(){i(l.body).on("orderable-drawer.opened",d.init_product_options),i(l.body).on("orderable-add-to-cart",d.click_add_to_order),i(l.body).on("orderable-product-options",d.click_add_to_order),i(l.body).on("mouseenter mouseleave","."+d.vars.classes.clickable_product,d.simulate_add_to_order_hover),i(l.body).on("click","."+d.vars.classes.clickable_product,d.click_add_to_order)},simulate_add_to_order_hover:function(e){i(this).find("."+d.vars.classes.add_to_order_button).toggleClass("orderable-button--hover","mouseenter"===e.type)},click_add_to_order:function(e,t){var r=(t=void 0!==t?t:i(this)).is("button")?t:t.find("."+d.vars.classes.add_to_order_button),a=r.data("orderable-trigger"),o=r.data("orderable-product-id"),s=r.data("orderable-variation-id"),t=r.data("orderable-variation-attributes"),n={action:a};r.hasClass(d.vars.classes.button_loading)||r.hasClass(d.vars.classes.out_of_stock)||(r.addClass(d.vars.classes.button_loading),"add-to-cart"===a?d.add_to_cart({product_id:o,variation_id:s,attributes:t},function(e){n.show_cart=!0,n.response=e,i(l.body).trigger("orderable-drawer.open",n),r.removeClass(d.vars.classes.button_loading)}):"product-options"===a&&d.get_product_options({product_id:o},function(e){n.html=e.html,i(l.body).trigger("orderable-drawer.open",n),r.removeClass(d.vars.classes.button_loading)}))},add_to_cart:function(e,t){var r;void 0!==e.product_id&&(r={action:"orderable_add_to_cart",product_id:e.product_id,variation_id:e.variation_id||!1,attributes:e.attributes||!1},i(".orderable-product-fields-group").length&&(e=jQuery(".orderable-product-fields-group :input").serializeArray(),e=d.convert_to_flat_object(e),jQuery.isEmptyObject(e)||(r=Object.assign(r,e))),jQuery.post(wc_add_to_cart_params.ajax_url,r,function(e){e&&(i(l.body).trigger("added_to_cart",[e.fragments,e.cart_hash]),"function"==typeof t&&t(e))}))},convert_to_flat_object:function(e){var a={};return e.forEach(function(e){var t="[]"===e.name.substr(-2)||Array.isArray(e.name),r=t?e.name.substr(0,e.name.length-2):e.name;t?(a[r]=void 0===a[r]?[]:a[r],a[r].push(e.value)):a[r]=e.value}),a},get_product_options:function(e,t){void 0!==e.product_id&&(e.action="orderable_get_product_options",jQuery.post(wc_add_to_cart_params.ajax_url,e,function(e){e.success&&"function"==typeof t&&t(e.data)}))},init_product_options:function(e,t){var r,a,o;void 0!==t.action&&"product-options"===t.action&&(r=i(t=".orderable-drawer .orderable-product__options input, .orderable-drawer .orderable-product__options select"),d.vars.parent_price=i(".orderable-drawer .orderable-product__actions-price").html(),d.product_options_change(r),d.update_button_state(),a=d.debounce(d.update_button_state,500),o=d.debounce(d.product_options_change,500),i(l).on("change keyup",t,function(){o(r),a()}))},product_options_change:function(e){var t=i(".orderable-drawer .orderable-product__add-to-order"),r=d.check_options(e),a=t.data("orderable-product-type");t.attr("data-orderable-trigger","add-to-cart"),i("."+d.vars.classes.product_messages).html(""),"variable"===a&&(r?(e=d.check_variation(e),d.set_variation(t,e)):d.clear_variation(t))},check_options:function(e){if(e.length<=0)return!1;var r=!0;return e.each(function(e,t){i(t).hasClass("orderable-input--validate")&&(""===i(t).val()?(i(t).addClass(d.vars.classes.invalid_field),r=!1):i(t).removeClass(d.vars.classes.invalid_field))}),r},check_variation:function(e){var t=e.closest(".orderable-drawer"),t=i.parseJSON(t.find(".orderable-product__variations").text()),e=d.serialize_object(e),t=d.find_matching_variations(t,e);if(d.is_empty(t))return!1;t=t.shift();return t.attributes=e,t.attributes_json=JSON.stringify(e),void 0!==t&&t},set_variation:function(e,t){var r=t.variation_id||"",a=t.attributes_json||"",o=t.price_html||d.vars.parent_price,s="";t&&""!==t.availability_html&&(s=t.availability_html),t&&!t.is_in_stock&&(s="<p>"+orderable_vars.i18n.out_of_stock+"</p>"),t&&!t.is_purchasable&&(s="<p>"+orderable_vars.i18n.unavailable+"</p>"),!1===t&&(s="<p>"+orderable_vars.i18n.no_exist+"</p>"),!t||t.is_purchasable&&t.is_in_stock||(a=r=""),""!==s&&i("."+d.vars.classes.product_messages).html(s),e.data("orderable-variation-id",r),e.data("orderable-variation-attributes",a),i(".orderable-drawer .orderable-product__actions-price").html(o),e.trigger("orderable_variation_set",{variation:t,variation_id:r,attributes:a,price:o})},clear_variation:function(e){d.set_variation(e,""),d.vars.parent_price&&i(".orderable-drawer .orderable-product__actions-price").html(d.vars.parent_price)},find_matching_variations:function(e,t){for(var r=[],a=0;a<e.length;a++){var o=e[a];d.is_matching_variation(o.attributes,t)&&r.push(o)}return r},is_matching_variation:function(e,t){var r,a,o,s=!0;for(r in e)e.hasOwnProperty(r)&&(a=e[r],o=t[r],void 0!==a&&void 0!==o&&0!==a.length&&0!==o.length&&a!==o&&(s=!1));return s},is_empty:function(e){return void 0===e||!1===e||e.length<=0||!e},serialize_object:function(e){for(var t=e.serializeArray(),r={},a=0;a<t.length;a++)r[t[a].name]=t[a].value;return r},update_button_state:function(){setTimeout(function(){var e=i(".orderable-drawer .orderable-product__add-to-order"),t=i(".orderable-drawer__html ."+d.vars.classes.invalid_field).length,r=!0;"variable"===e.data("orderable-product-type")&&(r=""!==e.data("orderable-variation-id")),e.prop("disabled",t||!r)},50)},debounce:function(a,o,s){var n;return function(){var e=this,t=arguments,r=s&&!n;clearTimeout(n),n=setTimeout(function(){n=null,s||a.apply(e,t)},o),r&&a.apply(e,t)}}};i(l).ready(d.on_ready)}(jQuery,document),function(a,e){"use strict";var o={on_ready:function(){o.cache(),o.watch()},cache:function(){o.vars={top:{}},o.elements={}},watch:function(){a(e.body).on("orderable-drawer.opened",o.trigger),a(e.body).on("wc_fragments_loaded",o.trigger)},trigger:function(){a(".orderable-sb-container").each(function(e,t){var r=a(t),t=r.data("orderable-scroll-id");o.has_scrollbar(r)||(r.scrollBox({containerClass:"orderable-sb-container",containerNoScrollClass:"orderable-sb-container-noscroll",contentClass:"orderable-sb-content",scrollbarContainerClass:"orderable-sb-scrollbar-container",scrollBarClass:"orderable-sb-scrollbar"}),0<(r=r.find(".orderable-sb-content")).length&&(r.on("scroll.scrollBox",o.log_top_position),void 0!==o.vars.top[t]&&r.scrollTop(o.vars.top[t])))}),a(window).trigger("resize.scrollBox")},has_scrollbar:function(e){return 0<e.find(".orderable-sb-content").length},log_top_position:function(e){var t=a(e.currentTarget).closest(".orderable-sb-container").data("orderable-scroll-id");o.vars.top[t]=a(e.currentTarget).scrollTop()}};a(e).ready(o.on_ready)}(jQuery,document),function(n,e){"use strict";var t={on_ready:function(){t.watch()},watch:function(){n(e.body).on("orderable-show-lookup-services",function(e,t){var r=t.closest(".orderable-services-selector").find(".orderable-services-selector__lookup");t.hide(),r.show()}),n(e.body).on("orderable-lookup-services",function(e,t){var r=t.closest(".orderable-services-selector"),a=r.find(".orderable-services-selector__lookup-message"),o=r.find(".orderable-services-selector__selected-change"),s=r.find(".orderable-services-selector__lookup-city").val(),r=r.find(".orderable-services-selector__lookup-postcode").val(),t=t.data("orderable-service");jQuery.post(wc_add_to_cart_params.ajax_url,{action:"orderable_lookup_service",postcode:r,city:s,service:t},function(e){e.success?(a.html(""),o.show(),void 0!==e.data.fragments&&n.each(e.data.fragments,function(e,t){n(e).html(t)}),console.log(e)):a.html("<p>"+e.data.message+"</p>")})})}};n(e).ready(t.on_ready)}(jQuery,document);var orderable_timings={};!function(i,a){"use strict";orderable_timings={on_ready:function(){orderable_timings.watch(),orderable_timings.set_date_and_time()},set_date_and_time:function(){var e,t=a.querySelector("#orderable-date"),r="";t&&(e=t.options[t.selectedIndex])&&!(r=e.value)&&t.options[t.selectedIndex+1]&&(t.options[t.selectedIndex+1].selected=!0,i(t).change()),"asap"!==r&&(t="",(r=a.querySelector("#orderable-time"))&&(t=r.options[r.selectedIndex])&&r.options[r.selectedIndex+1]&&(t.value||(r.options[r.selectedIndex+1].selected=!0,i(r).change())))},restore:function(){var e=orderable_timings.get_timings();e&&e.date&&(i(".orderable-order-timings__date").val(e.date),i(".orderable-order-timings__date").change(),e.time&&(i(".orderable-order-timings__time").val(e.time),i(".orderable-order-timings__time").change()))},watch:function(){i(a.body).on("wc_fragments_refreshed",function(){orderable_timings.restore(),orderable_timings.set_date_and_time()}),i(a.body).on("updated_checkout",function(){orderable_timings.restore(),orderable_timings.set_date_and_time()}),i(a.body).on("change",".orderable-order-timings__date",function(e){var t=i(this).find("option:selected").data("orderable-slots"),r=i(".orderable-order-timings--time"),a=i(".orderable-order-timings__time"),o=a.find("option").first(),s=a.find('option[value="asap"]').first(),n=orderable_timings.get_timings();if(n.date=i(".orderable-order-timings__date").val(),window.localStorage.setItem("orderable_timings",JSON.stringify(n)),a.html(o),s&&a.append(s),!t)return a.prop("disabled",!0),void r.hide();"all-day"===t[0].value?(r.hide(),a.prop("disabled",!0)):(a.prop("disabled",!1),r.show(),i.each(t,function(e,t){a.append(i("<option />").attr("value",t.value).text(t.formatted))}))}),i(a.body).on("change",".orderable-order-timings__time",function(e){var t=orderable_timings.get_timings();t.time=i(".orderable-order-timings__time").val(),window.localStorage.setItem("orderable_timings",JSON.stringify(t))})},get_timings:function(){return JSON.parse(window.localStorage.getItem("orderable_timings"))||{}}},i(a).ready(orderable_timings.on_ready)}(jQuery,document),function(r,a){"use strict";var e={on_ready:function(){e.watch()},watch:function(){r(a.body).on("click","[data-orderable-trigger]",e.trigger)},trigger:function(){var e=r(this),t=e.data("orderable-trigger");r(a.body).trigger("orderable-"+t,[e])}};r(a).ready(e.on_ready)}(jQuery,document),function(o,e,s){"use strict";var n="scrollBox",r={containerClass:"sb-container",containerNoScrollClass:"sb-container-noscroll",contentClass:"sb-content",scrollbarContainerClass:"sb-scrollbar-container",scrollBarClass:"sb-scrollbar"};function t(e,t){this.element=e,this.settings=o.extend({},r,t),this._defaults=r,this._name=n,this.init()}o.extend(t.prototype,{init:function(){this.addScrollbar(),this.addEvents(),this.onResize()},addScrollbar:function(){o(this.element).addClass(this.settings.containerClass),this.wrapper=o("<div class='"+this.settings.contentClass+"' />"),this.wrapper.append(o(this.element).contents()),o(this.element).append(this.wrapper),this.scollbarContainer=o("<div class='"+this.settings.scrollbarContainerClass+"' />"),this.scrollBar=o("<div class='"+this.settings.scrollBarClass+"' />"),this.scollbarContainer.append(this.scrollBar),o(this.element).prepend(this.scollbarContainer)},addEvents:function(){this.wrapper.on("scroll."+n,o.proxy(this.onScroll,this)),o(e).on("resize."+n,o.proxy(this.onResize,this)),this.scrollBar.on("mousedown."+n,o.proxy(this.onMousedown,this)),this.scrollBar.on("touchstart."+n,o.proxy(this.onTouchstart,this))},onTouchstart:function(t){var r=this;t.preventDefault();var a=r.scrollBar[0].offsetTop;o(s).on("touchmove."+n,function(e){e=e.touches[0].pageY-t.touches[0].pageY;r.scrollBar[0].style.top=Math.min(r.scollbarContainer[0].clientHeight-r.scrollBar[0].clientHeight,Math.max(0,a+e))+"px",r.wrapper[0].scrollTop=r.wrapper[0].scrollHeight*r.scrollBar[0].offsetTop/r.scollbarContainer[0].clientHeight}),o(s).on("touchend."+n,function(){o(s).off("touchmove."+n),o(s).off("touchend."+n)})},onMousedown:function(t){var r=this;t.preventDefault();var a=r.scrollBar[0].offsetTop;o(s).on("mousemove."+n,function(e){e=e.pageY-t.pageY;r.scrollBar[0].style.top=Math.min(r.scollbarContainer[0].clientHeight-r.scrollBar[0].clientHeight,Math.max(0,a+e))+"px",r.wrapper[0].scrollTop=r.wrapper[0].scrollHeight*r.scrollBar[0].offsetTop/r.scollbarContainer[0].clientHeight}),o(s).on("mouseup."+n,function(){o(s).off("mousemove."+n),o(s).off("mouseup."+n)})},onResize:function(){this.wrapper.css("max-height",o(this.element).height());var e=this.wrapper[0].clientHeight;this.scrollBar.css("height",this.scollbarContainer[0].clientHeight*e/this.wrapper[0].scrollHeight+"px"),this.scollbarContainer[0].clientHeight<=this.scrollBar[0].clientHeight?o(this.element).addClass(this.settings.containerNoScrollClass):o(this.element).removeClass(this.settings.containerNoScrollClass),this.onScroll()},onScroll:function(){this.scrollBar.css("top",Math.min(this.scollbarContainer[0].clientHeight-this.scrollBar[0].clientHeight,this.scollbarContainer[0].clientHeight*this.wrapper[0].scrollTop/this.wrapper[0].scrollHeight)+"px")}}),o.fn[n]=function(e){return this.each(function(){o.data(this,"plugin_"+n)||o.data(this,"plugin_"+n,new t(this,e))})}}(jQuery,window,document),function(e,o){"use strict";"function"!=typeof e.CustomEvent&&(e.CustomEvent=function(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var r=o.createEvent("CustomEvent");return r.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),r},e.CustomEvent.prototype=e.Event.prototype),o.addEventListener("touchstart",function(e){"true"!==e.target.getAttribute("data-swipe-ignore")&&(c=e.target,d=Date.now(),s=e.touches[0].clientX,n=e.touches[0].clientY,l=i=0)},!1),o.addEventListener("touchmove",function(e){var t;s&&n&&(t=e.touches[0].clientX,e=e.touches[0].clientY,i=s-t,l=n-e)},!1),o.addEventListener("touchend",function(e){var t,r,a,o;c===e.target&&(t=parseInt(_(c,"data-swipe-threshold","20"),10),r=parseInt(_(c,"data-swipe-timeout","500"),10),a=Date.now()-d,o="",e=e.changedTouches||e.touches||[],Math.abs(i)>Math.abs(l)?Math.abs(i)>t&&a<r&&(o=0<i?"swiped-left":"swiped-right"):Math.abs(l)>t&&a<r&&(o=0<l?"swiped-up":"swiped-down"),""!==o&&(e={dir:o.replace(/swiped-/,""),touchType:(e[0]||{}).touchType||"direct",xStart:parseInt(s,10),xEnd:parseInt((e[0]||{}).clientX||-1,10),yStart:parseInt(n,10),yEnd:parseInt((e[0]||{}).clientY||-1,10)},c.dispatchEvent(new CustomEvent("swiped",{bubbles:!0,cancelable:!0,detail:e})),c.dispatchEvent(new CustomEvent(o,{bubbles:!0,cancelable:!0,detail:e}))),d=n=s=null)},!1);var s=null,n=null,i=null,l=null,d=null,c=null;function _(e,t,r){for(;e&&e!==o.documentElement;){var a=e.getAttribute(t);if(a)return a;e=e.parentNode}return r}}(window,document);
     1!function(o,s){"use strict";var n={on_ready:function(){n.cache(),n.watch()},cache:function(){n.vars={classes:{parent:"orderable-accordion",link:"orderable-accordion__item-link",content:"orderable-accordion__item-content",link_active:"orderable-accordion__item-link--active",content_active:"orderable-accordion__item-content--active"}}},watch:function(){o(s.body).on("click","."+n.vars.classes.link,function(e){e.preventDefault();var e=o(this),r=e.closest("."+n.vars.classes.parent),t=e.attr("href"),t=o(t),a=e.hasClass(n.vars.classes.link_active);r.find("."+n.vars.classes.link).removeClass(n.vars.classes.link_active),r.find("."+n.vars.classes.content).removeClass(n.vars.classes.content_active),a||(e.addClass(n.vars.classes.link_active),t.addClass(n.vars.classes.content_active)),o(s.body).trigger("orderable-accordion.toggled",{link:e,content:t})}),o(s.body).on("orderable-scrollbar.created",function(e,r){var t=o(".orderable-drawer ."+n.vars.classes.link_active);t.length<=0||(t=(r=r.content).scrollTop()-r.offset().top+t.offset().top,r.scrollTop(t))})}};o(s).ready(n.on_ready)}(jQuery,document),function(n,i){"use strict";var t={debounce:function(r,t=700){let a;return(...e)=>{clearTimeout(a),a=setTimeout(()=>{r.apply(this,e)},t)}},allow_only_numbers:function(e){var r=String.fromCharCode(e.which);/^\d+$/.test(r)||e.preventDefault()},on_change_quantity:function(e){const r=n(e.currentTarget);var e=r.data("orderable-product-id"),t=r.data("orderable-cart-item-key"),a=parseInt(r.text());jQuery.post(orderable_vars.ajax_url,{action:"orderable_cart_quantity",cart_item_key:t,product_id:e,quantity:a},function(e){e&&(n(i.body).trigger("added_to_cart",[e.fragments,e.cart_hash,r]),n(i.body).trigger("orderable-drawer.quantity-updated"))})},on_ready:function(){t.cache(),t.watch(),n(i.body).on("keypress",".orderable-quantity-roller__quantity",t.allow_only_numbers),n(".orderable-drawer__cart").on("input",".orderable-quantity-roller__quantity",t.debounce(t.on_change_quantity)),orderable_vars&&!orderable_vars.woocommerce_enable_ajax_add_to_cart&&n(i.body).off("click",".add_to_cart_button")},cache:function(){t.vars={classes:{overlay:"orderable-drawer-overlay",drawer:"orderable-drawer",drawer_cart:"orderable-drawer__cart",drawer_html:"orderable-drawer__html",overlay_open:"orderable-drawer-overlay--open",drawer_open:"orderable-drawer--open",drawer_open_body:"orderable-drawer-open"}},t.elements={body:n("body"),overlay:n("."+t.vars.classes.overlay),drawer:n("."+t.vars.classes.drawer),drawer_cart:n("."+t.vars.classes.drawer_cart),drawer_html:n("."+t.vars.classes.drawer_html),floating_cart_button_class:".orderable-floating-cart__button"}},watch:function(){var e,r;void 0!==t.elements.drawer&&(n(i.body).on("orderable-drawer.open",t.open),n(i.body).on("orderable-drawer.close",t.close),n(i.body).on("click",t.elements.floating_cart_button_class,function(){n(i.body).trigger("orderable-drawer.open",{show_cart:!0})}),n(i.body).on("orderable-increase-quantity",t.cart.click_increase_decrease_quantity),n(i.body).on("orderable-decrease-quantity",t.cart.click_increase_decrease_quantity),e=i.querySelector("body:not( .rtl ) .orderable-drawer"),r=i.querySelector("body.rtl .orderable-drawer"),e&&e.addEventListener("swiped-right",function(e){t.close()}),r&&r.addEventListener("swiped-left",function(e){t.close()}))},open:function(e,r){r.html=r.html||!1,r.show_cart=r.show_cart||!1,t.elements.drawer_html.hide(),t.elements.drawer_cart.hide(),r.html&&(t.elements.drawer_html.html(r.html),t.elements.drawer_html.show()),r.show_cart&&(t.elements.drawer_html.html(""),t.elements.drawer_cart.show()),t.elements.overlay.addClass(t.vars.classes.overlay_open),t.elements.drawer.addClass(t.vars.classes.drawer_open),t.elements.body.addClass(t.vars.classes.drawer_open_body),n(i.body).trigger("orderable-drawer.opened",r)},close:function(){t.elements.overlay.removeClass(t.vars.classes.overlay_open),t.elements.drawer.removeClass(t.vars.classes.drawer_open),t.elements.body.removeClass(t.vars.classes.drawer_open_body),t.elements.drawer_html.html(""),n(i.body).trigger("orderable-drawer.closed")},cart:{click_increase_decrease_quantity:function(e,r){var t=r.data("orderable-product-id"),a=r.data("orderable-cart-item-key"),o=r.data("orderable-trigger"),s=parseInt(r.data("orderable-quantity"));jQuery.post(orderable_vars.ajax_url,{action:"orderable_cart_quantity",cart_item_key:a,product_id:t,quantity:"increase-quantity"===o?s+1:s-1},function(e){e&&(n(i.body).trigger("added_to_cart",[e.fragments,e.cart_hash,r]),n(i.body).trigger("orderable-drawer.quantity-updated"))})}}};n(i).ready(t.on_ready)}(jQuery,document),function(i,l){"use strict";var d={on_ready:function(){d.cache(),d.watch()},cache:function(){d.vars={classes:{clickable_product:"orderable-product--add-to-cart ",add_to_order_button:"orderable-product__add-to-order",product_messages:"orderable-product__messages",product_price:"orderable-product__actions-price",invalid_field:"orderable-field--invalid",option_select_td:"orderable-product__option-select",button_loading:"orderable-button--loading",out_of_stock:"orderable-button--out-of-stock"},parent_price:null},d.elements={}},watch:function(){i(l.body).on("orderable-drawer.opened",d.init_product_options),i(l.body).on("orderable-add-to-cart",d.click_add_to_order),i(l.body).on("orderable-product-options",d.click_add_to_order),i(l.body).on("orderable-view-product",d.view_product),i(l.body).on("mouseenter mouseleave","."+d.vars.classes.clickable_product,d.simulate_add_to_order_hover)},simulate_add_to_order_hover:function(e){i(this).find("."+d.vars.classes.add_to_order_button).toggleClass("orderable-button--hover","mouseenter"===e.type)},click_add_to_order:function(e,r){var t=(r=void 0!==r?r:i(this)).is("button")?r:r.find("."+d.vars.classes.add_to_order_button),r=t.data("orderable-trigger"),a=t.data("orderable-product-id"),o=t.data("orderable-variation-id"),s=t.data("orderable-variation-attributes"),n={action:r};t.hasClass(d.vars.classes.button_loading)||t.hasClass(d.vars.classes.out_of_stock)||(t.addClass(d.vars.classes.button_loading),"add-to-cart"===r?d.add_to_cart({product_id:a,variation_id:o,attributes:s},function(e){n.show_cart=!0,n.response=e,i(l.body).trigger("orderable-drawer.open",n),t.removeClass(d.vars.classes.button_loading)}):"product-options"===r&&d.get_product_options({product_id:a,focus:t.data("orderable-focus")},function(e){n.html=e.html,i(l.body).trigger("orderable-drawer.open",n),t.removeClass(d.vars.classes.button_loading)}))},view_product:function(e,r){var t=r.data("orderable-product-id"),a={action:"product-options"};d.get_product_options({product_id:t,focus:r.data("orderable-focus")},function(e){a.html=e.html,i(l.body).trigger("orderable-drawer.open",a)})},add_to_cart:function(e,r){var t;void 0!==e.product_id&&(e={action:"orderable_add_to_cart",product_id:e.product_id,variation_id:e.variation_id||!1,attributes:e.attributes||!1},i(".orderable-product-fields-group").length&&(t=jQuery(".orderable-product-fields-group :input").serializeArray(),t=d.convert_to_flat_object(t),jQuery.isEmptyObject(t)||(e=Object.assign(e,t))),jQuery.post(orderable_vars.ajax_url,e,function(e){e&&(i(l.body).trigger("added_to_cart",[e.fragments,e.cart_hash]),"function"==typeof r&&r(e))}))},convert_to_flat_object:function(e){var a={};return e.forEach(function(e){var r="[]"===e.name.substr(-2)||Array.isArray(e.name),t=r?e.name.substr(0,e.name.length-2):e.name;r?(a[t]=void 0===a[t]?[]:a[t],a[t].push(e.value)):a[t]=e.value}),a},get_product_options:function(e,r){void 0!==e.product_id&&(e.action="orderable_get_product_options",jQuery.post(orderable_vars.ajax_url,e,function(e){e.success&&"function"==typeof r&&r(e.data)}))},init_product_options:function(e,r){var t,a,o;void 0!==r.action&&"product-options"===r.action&&(t=i(r=".orderable-drawer .orderable-product__options input, .orderable-drawer .orderable-product__options select"),d.vars.parent_price=i(".orderable-drawer .orderable-product__actions-price").html(),d.product_options_change(t),d.update_button_state(),a=d.debounce(d.update_button_state,500),o=d.debounce(d.product_options_change,500),i(l).on("change keyup",r,function(){o(t),a()}))},product_options_change:function(e){var r=i(".orderable-drawer .orderable-product__add-to-order"),t=d.check_options(e),a=r.data("orderable-product-type");r.attr("data-orderable-trigger","add-to-cart"),i("."+d.vars.classes.product_messages).html(""),"variable"===a&&(t?(a=d.check_variation(e),d.set_variation(r,a)):d.clear_variation(r))},check_options:function(e){if(e.length<=0)return!1;var t=!0;return e.each(function(e,r){i(r).hasClass("orderable-input--validate")&&(""===i(r).val()?(i(r).addClass(d.vars.classes.invalid_field),t=!1):i(r).removeClass(d.vars.classes.invalid_field))}),t},check_variation:function(e){var r=e.closest(".orderable-drawer"),r=i.parseJSON(r.find(".orderable-product__variations").text()),e=d.serialize_object(e),r=d.find_matching_variations(r,e);if(d.is_empty(r))return!1;r=r.shift();return r.attributes=e,r.attributes_json=JSON.stringify(e),void 0!==r&&r},set_variation:function(e,r){var t=r.variation_id||"",a=r.attributes_json||"",o=r.price_html||d.vars.parent_price,s="";r&&""!==r.availability_html&&(s=r.availability_html),r&&!r.is_in_stock&&(s="<p>"+orderable_vars.i18n.out_of_stock+"</p>"),r&&!r.is_purchasable&&(s="<p>"+orderable_vars.i18n.unavailable+"</p>"),!1===r&&(s="<p>"+orderable_vars.i18n.no_exist+"</p>"),!r||r.is_purchasable&&r.is_in_stock||(a=t=""),""!==s&&i("."+d.vars.classes.product_messages).html(s),e.data("orderable-variation-id",t),e.data("orderable-variation-attributes",a),i(".orderable-drawer .orderable-product__actions-price").html(o),e.trigger("orderable_variation_set",{variation:r,variation_id:t,attributes:a,price:o})},clear_variation:function(e){d.set_variation(e,""),d.vars.parent_price&&i(".orderable-drawer .orderable-product__actions-price").html(d.vars.parent_price)},find_matching_variations:function(e,r){for(var t=[],a=0;a<e.length;a++){var o=e[a];d.is_matching_variation(o.attributes,r)&&t.push(o)}return t},is_matching_variation:function(e,r){var t,a,o,s=!0;for(t in e)e.hasOwnProperty(t)&&(a=e[t],o=r[t],void 0!==a&&void 0!==o&&0!==a.length&&0!==o.length&&a!==o&&(s=!1));return s},is_empty:function(e){return void 0===e||!1===e||e.length<=0||!e},serialize_object:function(e){for(var r=e.serializeArray(),t={},a=0;a<r.length;a++)t[r[a].name]=r[a].value;return t},update_button_state:function(){setTimeout(function(){var e=i(".orderable-drawer .orderable-product__add-to-order"),r=i(".orderable-drawer__html ."+d.vars.classes.invalid_field).length,t=!0;"variable"===e.data("orderable-product-type")&&(t=""!==e.data("orderable-variation-id")),e.prop("disabled",r||!t)},50)},debounce:function(a,o,s){var n;return function(){var e=this,r=arguments,t=s&&!n;clearTimeout(n),n=setTimeout(function(){n=null,s||a.apply(e,r)},o),t&&a.apply(e,r)}}};i(l).ready(d.on_ready)}(jQuery,document),function(o,s){"use strict";var n={on_ready:function(){n.cache(),n.watch()},cache:function(){n.vars={top:{}},n.elements={}},watch:function(){o(s.body).on("orderable-drawer.opened",n.trigger),o(s.body).on("orderable-tabs.changed",n.trigger),o(s.body).on("orderable-accordion.toggled",n.trigger),o(s.body).on("wc_fragments_loaded",n.trigger)},trigger:function(){o(".orderable-sb-container").each(function(e,r){var t,r=o(r),a=r.data("orderable-scroll-id");n.has_scrollbar(r)||(r.scrollBox({containerClass:"orderable-sb-container",containerNoScrollClass:"orderable-sb-container-noscroll",contentClass:"orderable-sb-content",scrollbarContainerClass:"orderable-sb-scrollbar-container",scrollBarClass:"orderable-sb-scrollbar"}),0<(t=r.find(".orderable-sb-content")).length&&(t.on("scroll.scrollBox",n.log_top_position),void 0!==n.vars.top[a]&&t.scrollTop(n.vars.top[a])),o(s.body).trigger("orderable-scrollbar.created",{element:r,content:t}))}),o(window).trigger("resize.scrollBox")},has_scrollbar:function(e){return 0<e.find(".orderable-sb-content").length},log_top_position:function(e){var r=o(e.currentTarget).closest(".orderable-sb-container").data("orderable-scroll-id");n.vars.top[r]=o(e.currentTarget).scrollTop()}};o(s).ready(n.on_ready)}(jQuery,document),function(n,e){"use strict";var r={on_ready:function(){r.watch()},watch:function(){n(e.body).on("orderable-show-lookup-services",function(e,r){var t=r.closest(".orderable-services-selector").find(".orderable-services-selector__lookup");r.hide(),t.show()}),n(e.body).on("orderable-lookup-services",function(e,r){var t=r.closest(".orderable-services-selector"),a=t.find(".orderable-services-selector__lookup-message"),o=t.find(".orderable-services-selector__selected-change"),s=t.find(".orderable-services-selector__lookup-city").val(),t=t.find(".orderable-services-selector__lookup-postcode").val(),r=r.data("orderable-service");jQuery.post(orderable_vars.ajax_url,{action:"orderable_lookup_service",postcode:t,city:s,service:r},function(e){e.success?(a.html(""),o.show(),void 0!==e.data.fragments&&n.each(e.data.fragments,function(e,r){n(e).html(r)}),console.log(e)):a.html("<p>"+e.data.message+"</p>")})})}};n(e).ready(r.on_ready)}(jQuery,document),function(n,i){"use strict";var l={on_ready:function(){l.cache(),l.watch(),l.toggle_scroll()},on_resize:function(){l.toggle_scroll()},cache:function(){l.vars={classes:{tabs:"orderable-tabs",tabs_list:"orderable-tabs__list",tab_items:"orderable-tabs__item",tab_item_active:"orderable-tabs__item--active",tab_links:"orderable-tabs__link",tab_arrow:"orderable-tabs__arrow"},dragging:!1},l.elements={}},watch:function(){n("body").on("touchstart",function(){l.vars.dragging=!1}).on("touchmove",function(){l.vars.dragging=!0}),n(i.body).on("click mouseup touchend","."+l.vars.classes.tab_links,function(e){var r,t,a,o,s;l.vars.dragging||(e.preventDefault(),r=(e=n(this)).attr("href"),t=e.closest("."+l.vars.classes.tab_items),a=(s=e.closest("."+l.vars.classes.tabs)).find("."+l.vars.classes.tabs_list),o=s.find("."+l.vars.classes.tab_items),s=s.data("orderable-tabs"),s=(e=e.closest(s.wrapper)).find(s.sections),e=e.find(r),s.hide(),e.show(),o.removeClass(l.vars.classes.tab_item_active),t.addClass(l.vars.classes.tab_item_active),a.animate({scrollLeft:a.scrollLeft()+t.position().left}),n(i.body).trigger("orderable-tabs.changed",{tab:t}))}),n("."+l.vars.classes.tabs_list).on("scroll",function(e){0<n(this).scrollLeft()&&n("."+l.vars.classes.tab_arrow).fadeOut()}),n("."+l.vars.classes.tabs_list).on("wheel DOMMouseScroll mousewheel touchmove",function(){n(this).stop()}),n(i).on("click","."+l.vars.classes.tab_arrow,function(e){e.preventDefault();var e=n(this),r=e.parent(),t=r.find("."+l.vars.classes.tabs_list);t.animate({scrollLeft:t.scrollLeft()+.5*r.width()}),e.fadeOut()})},toggle_scroll:function(){n("."+l.vars.classes.tabs).each(function(e,r){var t=n(this),a=t.data("orderable-tabs"),t=t.closest(a.wrapper),a=t.find("."+l.vars.classes.tabs_list),o=t.find("."+l.vars.classes.tab_arrow);t.outerWidth()<a[0].scrollWidth?o.show():o.hide()})}};n(i).ready(l.on_ready),n(window).on("resize",l.on_resize)}(jQuery,document);var orderable_timings={};!function(i,a){"use strict";orderable_timings={on_ready:function(){orderable_timings.watch(),orderable_timings.set_date_and_time()},set_date_and_time:function(){var e,r=a.querySelector("#orderable-date"),t="";r&&(e=r.options[r.selectedIndex])&&!(t=e.value)&&r.options[r.selectedIndex+1]&&(r.options[r.selectedIndex+1].selected=!0,i(r).change()),"asap"!==t&&(e="",(r=a.querySelector("#orderable-time"))&&(e=r.options[r.selectedIndex])&&r.options[r.selectedIndex+1]&&(e.value||(r.options[r.selectedIndex+1].selected=!0,i(r).change())))},restore:function(){var e=orderable_timings.get_timings();e&&e.date&&(i(".orderable-order-timings__date").val(e.date),i(".orderable-order-timings__date").change(),e.time&&(i(".orderable-order-timings__time").val(e.time),i(".orderable-order-timings__time").change()))},watch:function(){i(a.body).on("wc_fragments_refreshed",function(){orderable_timings.restore(),orderable_timings.set_date_and_time()}),i(a.body).on("updated_checkout",function(){orderable_timings.restore(),orderable_timings.set_date_and_time()}),i(a.body).on("change",".orderable-order-timings__date",function(e){var r=i(this).find("option:selected").data("orderable-slots"),t=i(".orderable-order-timings--time"),a=i(".orderable-order-timings__time"),o=a.find("option").first(),s=a.find('option[value="asap"]').first(),n=orderable_timings.get_timings();if(n.date=i(".orderable-order-timings__date").val(),window.localStorage.setItem("orderable_timings",JSON.stringify(n)),a.html(o),s&&a.append(s),!r)return a.prop("disabled",!0),void t.hide();"all-day"===r[0].value?(t.hide(),a.prop("disabled",!0)):(a.prop("disabled",!1),t.show(),i.each(r,function(e,r){a.append(i("<option />").attr("value",r.value).text(r.formatted))}))}),i(a.body).on("change",".orderable-order-timings__time",function(e){var r=orderable_timings.get_timings();r.time=i(".orderable-order-timings__time").val(),window.localStorage.setItem("orderable_timings",JSON.stringify(r))})},get_timings:function(){return JSON.parse(window.localStorage.getItem("orderable_timings"))||{}}},i(a).ready(orderable_timings.on_ready)}(jQuery,document),function(t,a){"use strict";var e={on_ready:function(){e.watch()},watch:function(){t(a.body).on("click","[data-orderable-trigger]",e.trigger)},trigger:function(e){e.stopImmediatePropagation();var e=t(this),r=e.data("orderable-trigger");t(a.body).trigger("orderable-"+r,[e])}};t(a).ready(e.on_ready)}(jQuery,document),function(o,e,s){"use strict";var n="scrollBox",t={containerClass:"sb-container",containerNoScrollClass:"sb-container-noscroll",contentClass:"sb-content",scrollbarContainerClass:"sb-scrollbar-container",scrollBarClass:"sb-scrollbar"};function r(e,r){this.element=e,this.settings=o.extend({},t,r),this._defaults=t,this._name=n,this.init()}o.extend(r.prototype,{init:function(){this.addScrollbar(),this.addEvents(),this.onResize()},addScrollbar:function(){o(this.element).addClass(this.settings.containerClass),this.wrapper=o("<div class='"+this.settings.contentClass+"' />"),this.wrapper.append(o(this.element).contents()),o(this.element).append(this.wrapper),this.scollbarContainer=o("<div class='"+this.settings.scrollbarContainerClass+"' />"),this.scrollBar=o("<div class='"+this.settings.scrollBarClass+"' />"),this.scollbarContainer.append(this.scrollBar),o(this.element).prepend(this.scollbarContainer)},addEvents:function(){this.wrapper.on("scroll."+n,o.proxy(this.onScroll,this)),o(e).on("resize."+n,o.proxy(this.onResize,this)),this.scrollBar.on("mousedown."+n,o.proxy(this.onMousedown,this)),this.scrollBar.on("touchstart."+n,o.proxy(this.onTouchstart,this))},onTouchstart:function(r){var t=this,a=(r.preventDefault(),t.scrollBar[0].offsetTop);o(s).on("touchmove."+n,function(e){e=e.touches[0].pageY-r.touches[0].pageY;t.scrollBar[0].style.top=Math.min(t.scollbarContainer[0].clientHeight-t.scrollBar[0].clientHeight,Math.max(0,a+e))+"px",t.wrapper[0].scrollTop=t.wrapper[0].scrollHeight*t.scrollBar[0].offsetTop/t.scollbarContainer[0].clientHeight}),o(s).on("touchend."+n,function(){o(s).off("touchmove."+n),o(s).off("touchend."+n)})},onMousedown:function(r){var t=this,a=(r.preventDefault(),t.scrollBar[0].offsetTop);o(s).on("mousemove."+n,function(e){e=e.pageY-r.pageY;t.scrollBar[0].style.top=Math.min(t.scollbarContainer[0].clientHeight-t.scrollBar[0].clientHeight,Math.max(0,a+e))+"px",t.wrapper[0].scrollTop=t.wrapper[0].scrollHeight*t.scrollBar[0].offsetTop/t.scollbarContainer[0].clientHeight}),o(s).on("mouseup."+n,function(){o(s).off("mousemove."+n),o(s).off("mouseup."+n)})},onResize:function(){this.wrapper.css("max-height",o(this.element).height());var e=this.wrapper[0].clientHeight;this.scrollBar.css("height",this.scollbarContainer[0].clientHeight*e/this.wrapper[0].scrollHeight+"px"),this.scollbarContainer[0].clientHeight<=this.scrollBar[0].clientHeight?o(this.element).addClass(this.settings.containerNoScrollClass):o(this.element).removeClass(this.settings.containerNoScrollClass),this.onScroll()},onScroll:function(){this.scrollBar.css("top",Math.min(this.scollbarContainer[0].clientHeight-this.scrollBar[0].clientHeight,this.scollbarContainer[0].clientHeight*this.wrapper[0].scrollTop/this.wrapper[0].scrollHeight)+"px")}}),o.fn[n]=function(e){return this.each(function(){o.data(this,"plugin_"+n)||o.data(this,"plugin_"+n,new r(this,e))})}}(jQuery,window,document),function(e,o){"use strict";"function"!=typeof e.CustomEvent&&(e.CustomEvent=function(e,r){r=r||{bubbles:!1,cancelable:!1,detail:void 0};var t=o.createEvent("CustomEvent");return t.initCustomEvent(e,r.bubbles,r.cancelable,r.detail),t},e.CustomEvent.prototype=e.Event.prototype),o.addEventListener("touchstart",function(e){"true"!==e.target.getAttribute("data-swipe-ignore")&&(c=e.target,d=Date.now(),s=e.touches[0].clientX,n=e.touches[0].clientY,l=i=0)},!1),o.addEventListener("touchmove",function(e){var r;s&&n&&(r=e.touches[0].clientX,e=e.touches[0].clientY,i=s-r,l=n-e)},!1),o.addEventListener("touchend",function(e){var r,t,a,o;c===e.target&&(o=parseInt(u(c,"data-swipe-threshold","20"),10),r=parseInt(u(c,"data-swipe-timeout","500"),10),t=Date.now()-d,a="",e=e.changedTouches||e.touches||[],Math.abs(i)>Math.abs(l)?Math.abs(i)>o&&t<r&&(a=0<i?"swiped-left":"swiped-right"):Math.abs(l)>o&&t<r&&(a=0<l?"swiped-up":"swiped-down"),""!==a&&(o={dir:a.replace(/swiped-/,""),touchType:(e[0]||{}).touchType||"direct",xStart:parseInt(s,10),xEnd:parseInt((e[0]||{}).clientX||-1,10),yStart:parseInt(n,10),yEnd:parseInt((e[0]||{}).clientY||-1,10)},c.dispatchEvent(new CustomEvent("swiped",{bubbles:!0,cancelable:!0,detail:o})),c.dispatchEvent(new CustomEvent(a,{bubbles:!0,cancelable:!0,detail:o}))),d=n=s=null)},!1);var s=null,n=null,i=null,l=null,d=null,c=null;function u(e,r,t){for(;e&&e!==o.documentElement;){var a=e.getAttribute(r);if(a)return a;e=e.parentNode}return t}}(window,document);
  • orderable/trunk/inc/class-admin-notices.php

    r2549156 r2709284  
    8585                continue;
    8686            } ?>
    87             <div class="notice notice--orderable" style="border-left-color: #bc47f5;">
     87            <div class="notice notice--orderable" style="border-left-color: #7031F5;">
    8888                <p><strong><?php echo wp_kses_post( $notice['title'] ); ?></strong></p>
    8989                <p><?php echo wp_kses_post( $notice['description'] ); ?></p>
  • orderable/trunk/inc/class-ajax.php

    r2626120 r2709284  
    5656        }
    5757
     58        $focus   = filter_input( INPUT_POST, 'focus', FILTER_SANITIZE_STRING );
    5859        $product = wc_get_product( $product_id );
    5960
     
    6970        }
    7071
    71         $args = array( 'images' => true );
     72        $args = array(
     73            'images' => true,
     74            'focus'  => $focus,
     75        );
    7276
    7377        ob_start();
  • orderable/trunk/inc/class-assets.php

    r2666071 r2709284  
    3333
    3434        wp_enqueue_style( 'orderable', ORDERABLE_ASSETS_URL . 'frontend/css/main' .  $suffix_css . '.css', array(), ORDERABLE_VERSION );
    35         wp_enqueue_script( 'orderable', ORDERABLE_ASSETS_URL . 'frontend/js/main' . $suffix . '.js', array( 'jquery' ), ORDERABLE_VERSION, true );
     35        wp_enqueue_script( 'orderable', ORDERABLE_ASSETS_URL . 'frontend/js/main' . $suffix . '.js', array( 'jquery' , 'wc-add-to-cart' ), ORDERABLE_VERSION, true );
    3636
    3737        wp_add_inline_style( 'orderable', self::get_styles() );
    3838
    3939        wp_localize_script( 'orderable', 'orderable_vars', array(
    40             'i18n' => array(
     40            'i18n'                                => array(
    4141                'out_of_stock' => __( 'Sorry, that product is out of stock.', 'orderable' ),
    4242                'unavailable'  => __( 'Sorry, that product is unavailable.', 'orderable' ),
    4343                'no_exist'     => __( 'Sorry, that combination does not exist.', 'orderable' ),
    44             )
     44            ),
     45            'ajax_url'                            => WC()->ajax_url(),
     46            /**
     47             * If the option "Enable AJAX add to cart buttons on archives" is not enabled,
     48             * we need to turn off the click event for .add_to_cart_button elements on drawer.js
     49             * to keep the AJAX behaviour only on Mini cart.
     50             */
     51            'woocommerce_enable_ajax_add_to_cart' => 'yes' === get_option( 'woocommerce_enable_ajax_add_to_cart' ),
    4552        ) );
    4653
     
    6875            '.orderable-button--loading:after { border-top-color: %1$s; border-left-color: %1$s; }',
    6976            '.orderable-product-option--checked .orderable-product-option__label-state { border-color: %1$s !important; }',
    70             ".orderable-product__title { font-size: {$product_title_font_size}px; line-height: {$product_title_line_height}px; }",
     77            ".orderable-products-list .orderable-product__title { font-size: {$product_title_font_size}px; line-height: {$product_title_line_height}px; }",
    7178            ".orderable-product__actions-price .amount { font-size: {$product_price_font_size}px; line-height: {$product_price_line_height}px; }",
    7279        );
  • orderable/trunk/inc/class-modules.php

    r2666071 r2709284  
    3535            'checkout',
    3636            'timed-products',
     37            'custom-order-status',
    3738        );
    3839
  • orderable/trunk/inc/class-products.php

    r2637423 r2709284  
    2222        add_filter( 'woocommerce_product_query_tax_query', array( __CLASS__, 'remove_hidden_categories_from_products_query' ), 10, 2 );
    2323        add_filter( 'get_terms_args', array( __CLASS__, 'remove_hidden_categories_from_terms_query' ), 10, 2 );
     24        add_filter( 'wp_sitemaps_posts_query_args', array( __CLASS__, 'remove_hidden_products_from_sitemap' ), 10, 2 );
     25        add_filter( 'wp_sitemaps_taxonomies_query_args', array( __CLASS__, 'remove_hidden_categories_from_sitemap' ), 10, 2 );
    2426    }
    2527
     
    119121                    if ( ! empty( $category_products ) ) {
    120122                        $products[ $category_id ]['products'] = $category_products;
    121                        
     123
    122124                        // Add parent attribute if parent is a root category.
    123                         if ( in_array( $category->parent, $categories ) ) {
     125                        if ( in_array( $category->parent, $categories, true ) ) {
    124126                            $products[ $category_id ]['category']['parent'] = $category->parent;
    125127                        }
     
    166168     *
    167169     * @param array $args Arguments.
     170     *
    168171     * @return array
    169172     */
    170173    public static function get_products( $args ) {
    171174        $args['status'] = 'publish'; // Ensure only published products are returned.
    172         $products       = wc_get_products( $args );
     175
     176        if ( 'yes' === get_option( 'woocommerce_hide_out_of_stock_items' ) ) {
     177            $args['stock_status'] = 'instock';
     178        }
     179
     180        /**
     181         * Filter arguments used to retrieve products from database
     182         *
     183         * @param array $args WC_Product_Query arguments
     184         *
     185         * @return array New query arguments
     186         * @since 1.2.1
     187         * @hook  orderable_get_products_args
     188         */
     189        $products = wc_get_products( apply_filters( 'orderable_get_products_args', $args ) );
    173190
    174191        if ( ! empty( $products ) && isset( $args['orderby'] ) ) {
     
    184201     *
    185202     * @param array $categories Categories.
     203     *
    186204     * @return array
    187205     */
     
    288306
    289307        $args = array(
    290             'trigger'              => 'add-to-cart',
     308            'trigger'              => self::get_add_to_cart_trigger( $product ),
    291309            'product_id'           => $product->get_id(),
    292310            'product_type'         => $product->get_type(),
     
    298316
    299317        if ( 'variable' === $args['product_type'] ) {
    300             $args['trigger'] = 'product-options';
    301             $args['text']    = empty( $orderable_single_product ) ? __( 'Select', 'orderable' ) : $args['text'];
     318            $args['text'] = empty( $orderable_single_product ) ? __( 'Select', 'orderable' ) : $args['text'];
    302319        } elseif ( 'variation' === $args['product_type'] ) {
    303320            $args['product_id']   = $product->get_parent_id();
     
    307324        if ( ! $product->is_in_stock() ) {
    308325            $args['classes'] .= ' orderable-button--out-of-stock';
    309             $args['text']     = __( 'Out of Stock', 'orderable' );
     326            $args['text']    = __( 'Out of Stock', 'orderable' );
    310327        }
    311328
     
    313330
    314331        return sprintf( '<button class="orderable-button %s" data-orderable-trigger="%s" data-orderable-product-id="%d" data-orderable-product-type="%s" data-orderable-variation-id="%d" data-orderable-variation-attributes="">%s</button>', esc_attr( $args['classes'] ), esc_attr( $args['trigger'] ), esc_attr( $args['product_id'] ), esc_attr( $args['product_type'] ), esc_attr( $args['variation_id'] ), wp_kses_post( $args['text'] ) );
     332    }
     333
     334    /**
     335     * Get add to cart trigger value.
     336     *
     337     * @param WC_Product $product
     338     *
     339     * @return string
     340     */
     341    public static function get_add_to_cart_trigger( $product ) {
     342        $trigger = $product->is_type( 'variable' ) ? 'product-options' : 'add-to-cart';
     343
     344        return apply_filters( 'orderable_get_add_to_cart_trigger', $trigger, $product );
    315345    }
    316346
     
    517547     * this also disables the archive page.
    518548     *
    519      * @param array $args
    520      * @param array $taxonomies
     549     * @param array $args       Args.
     550     * @param array $taxonomies Taxonomies.
    521551     *
    522552     * @return mixed
     
    540570        return $args;
    541571    }
     572
     573    /**
     574     * Remove hidden products from sitemap.
     575     *
     576     * @param array  $query_args Query args.
     577     * @param string $post_type  Post type.
     578     *
     579     * @return mixed
     580     */
     581    public static function remove_hidden_products_from_sitemap( $query_args, $post_type ) {
     582        if ( 'product' !== $post_type ) {
     583            return $query_args;
     584        }
     585
     586        $hidden_categories = Orderable_Settings::get_hidden_categories();
     587
     588        if ( empty( $hidden_categories ) ) {
     589            return $query_args;
     590        }
     591
     592        $tax_query = array(
     593            'taxonomy'         => 'product_cat',
     594            'terms'            => $hidden_categories,
     595            'field'            => 'term_id',
     596            'include_children' => true,
     597            'operator'         => 'NOT IN',
     598        );
     599
     600        if ( ! isset( $query_args['tax_query'] ) ) {
     601            $query_args['tax_query'] = array();
     602        }
     603
     604        $query_args['tax_query'][] = $tax_query;
     605
     606        return $query_args;
     607    }
     608
     609    /**
     610     * Exclude hidden categories from sitemap.
     611     *
     612     * @param array  $query_args Query args.
     613     * @param string $taxonomy   Taxonomy.
     614     *
     615     * @return mixed
     616     */
     617    public static function remove_hidden_categories_from_sitemap( $query_args, $taxonomy ) {
     618        if ( 'product_cat' !== $taxonomy ) {
     619            return $query_args;
     620        }
     621
     622        $hidden_categories = Orderable_Settings::get_hidden_categories();
     623
     624        if ( empty( $hidden_categories ) ) {
     625            return $query_args;
     626        }
     627
     628        if ( ! isset( $query_args['exclude'] ) ) {
     629            $query_args['exclude'] = $hidden_categories;
     630        } else {
     631            if ( is_array( $hidden_categories ) ) {
     632                $query_args['exclude'] = array_merge( $query_args['exclude'], $hidden_categories );
     633            } else {
     634                $query_args['exclude'] = $query_args['exclude'] . ',' . implode( ',', $hidden_categories );
     635            }
     636        }
     637
     638        return $query_args;
     639    }
     640
     641    /**
     642     * Get product accordion data.
     643     *
     644     * @param WC_Product $product Product.
     645     *
     646     * @return array
     647     */
     648    public static function get_accordion_data( $product ) {
     649        $data = array();
     650
     651        $description = Orderable_Settings::get_setting( 'drawer_quickview_description' );
     652
     653        if ( 'none' !== $description ) {
     654            $description = 'short' === $description ? $product->get_short_description() : $product->get_description();
     655
     656            $data[] = array(
     657                'title'   => __( 'Description', 'orderable' ),
     658                'content' => apply_filters( 'the_content', $description ),
     659                'id'      => 'accordion-description',
     660            );
     661        }
     662
     663        /**
     664         * Filter product accordion data.
     665         *
     666         * @var array      $data
     667         * @var WC_Product $product
     668         */
     669        return apply_filters( 'orderable_get_accordion_data', $data, $product );
     670    }
    542671}
  • orderable/trunk/inc/class-settings.php

    r2666071 r2709284  
    928928                'next'    => 'orderable-order-view',
    929929                'options' => array(
    930                     'content'  => '<h3>' . esc_html__( 'Layout Builder', 'orderable' ) . '</h3>' .
     930                    'content'  => '<h3>' . esc_html__( 'Product Layouts', 'orderable' ) . '</h3>' .
    931931                                  '<p>' .
    932932                                  esc_html__( 'Use the Layout Builder to create a product list based on category. Embed your layout using the shortcode or block.', 'orderable' ) .
     
    10591059        Orderable_Webhooks::subscribe();
    10601060    }
     1061
     1062    /**
     1063     * Universal upgrade page content.
     1064     *
     1065     * @param string $campaign Campaign for UTM.
     1066     */
     1067    public static function upgrade_page_content( $campaign = '' ) {
     1068        ?>
     1069        <style>
     1070            body {
     1071                background: #fff;
     1072            }
     1073
     1074            .orderable-pro-upgrade__logo {
     1075                margin: 0 0 36px;
     1076                display: block;
     1077            }
     1078
     1079            .orderable-pro-upgrade__content {
     1080                margin: 0;
     1081                padding: 24px;
     1082                max-width: 500px;
     1083            }
     1084
     1085            .orderable-pro-upgrade__intro {
     1086                font-size: 22px;
     1087                margin: 0 0 36px;
     1088                line-height: 1.4;
     1089                color: #000;
     1090            }
     1091
     1092            .orderable-pro-upgrade__intro a {
     1093                color: #7031F5;
     1094            }
     1095
     1096            .orderable-pro-upgrade__features {
     1097                font-size: 16px;
     1098                margin: 0 0 48px;
     1099            }
     1100
     1101            .orderable-pro-upgrade__features li {
     1102                margin: 0 0 12px;
     1103                line-height: 1.4;
     1104            }
     1105
     1106            .orderable-pro-upgrade__features li:last-child {
     1107                margin-bottom: 0;
     1108            }
     1109
     1110            .orderable-pro-upgrade__features li strong {
     1111                color: #000;
     1112            }
     1113
     1114            .orderable-pro-upgrade__content .orderable-admin-button--pro {
     1115                padding: 16px 30px;
     1116                font-size: 16px;
     1117                background: #7031F5;
     1118            }
     1119        </style>
     1120        <div class="wrap orderable-pro-upgrade">
     1121            <div class="orderable-pro-upgrade__content">
     1122                <?php printf( '<img class="orderable-pro-upgrade__logo" src="%s" width="164" height="36" />', esc_url( ORDERABLE_ASSETS_URL . 'img/orderable-logo.svg' ) ); ?>
     1123
     1124                <p class="orderable-pro-upgrade__intro"> <a href="https://orderable.com/?utm_source=Orderable&utm_medium=Plugin&utm_campaign=<?php echo esc_attr( $campaign ); ?>" target="_blank"><?php esc_attr_e( 'Upgrade to Orderable Pro', 'orderable' ); ?></a> <?php esc_attr_e( 'to access this feature, plus many more revenue boosting features.', 'orderable' ); ?></p>
     1125
     1126                <ul class="orderable-pro-upgrade__features">
     1127                    <li><strong><?php esc_attr_e( 'Product Addons', 'orderable' ); ?></strong> &mdash; <?php esc_attr_e( 'Add options to your products like toppings, allergy information, size, etc.', 'orderable' ); ?></li>
     1128                    <li><strong><?php esc_attr_e( 'Cart Bumps', 'orderable' ); ?></strong> &mdash; <?php esc_attr_e( 'Increase sales by offering related products right in the side cart.', 'orderable' ); ?></li>
     1129                    <li><strong><?php esc_attr_e( 'Time Slots', 'orderable' ); ?></strong> &mdash; <?php esc_attr_e( 'Improve customer satisfaction by offering specific time slots for their order.', 'orderable' ); ?></li>
     1130                    <li><strong><?php esc_attr_e( 'Custom Checkout', 'orderable' ); ?></strong> &mdash; <?php esc_attr_e( 'Use our custom checkout experience to drive conversions at the most important step of your online store.', 'orderable' ); ?></li>
     1131                    <li><strong><?php esc_attr_e( 'Checkout Tipping', 'orderable' ); ?></strong> &mdash; <?php esc_attr_e( 'Make it easy for your customers to include a tip with their order.', 'orderable' ); ?></li>
     1132                    <li><strong><?php esc_attr_e( 'Timed Products', 'orderable' ); ?></strong> &mdash; <?php esc_attr_e( 'Show/hide products in your store based on time/date conditions.', 'orderable' ); ?></li>
     1133                    <li><strong><?php esc_attr_e( 'Custom Order Statuses', 'orderable' ); ?></strong> &mdash; <?php esc_attr_e( 'Add and modify order statuses to improve the backend flow of your store. Create custom notifications for each status.', 'orderable' ); ?></li>
     1134                    <li><strong><?php esc_attr_e( 'Checkout Tipping', 'orderable' ); ?></strong> &mdash; <?php esc_attr_e( 'Make it easy for your customers to include a tip with their order.', 'orderable' ); ?></li>
     1135                </ul>
     1136
     1137                <?php echo Orderable_Helpers::get_pro_button( $campaign, __( 'Upgrade Now', 'orderable' ) ); ?>
     1138            </div>
     1139        </div>
     1140        <?php
     1141    }
    10611142}
  • orderable/trunk/inc/modules/addons/class-addons.php

    r2549156 r2709284  
    4040     */
    4141    public static function product_addons_page() {
    42         ?>
    43         <div class="wrap">
    44             <h1 class="wp-heading-inline"><?php _e( 'Product Addons', 'orderable' ); ?></h1>
    45             <div>
    46                 <?php echo Orderable_Helpers::get_pro_button(); ?>
    47             </div>
    48         </div>
    49         <?php
     42        Orderable_Settings::upgrade_page_content( 'product-addons' );
    5043    }
    5144}
  • orderable/trunk/inc/modules/drawer/class-drawer-ajax.php

    r2558994 r2709284  
    2525     */
    2626    public static function cart_quantity() {
    27         $product_id   = filter_input( INPUT_POST, 'product_id', FILTER_SANITIZE_STRING );
     27        $product_id    = filter_input( INPUT_POST, 'product_id', FILTER_SANITIZE_STRING );
    2828        $cart_item_key = filter_input( INPUT_POST, 'cart_item_key', FILTER_SANITIZE_STRING );
    29         $quantity     = filter_input( INPUT_POST, 'quantity', FILTER_SANITIZE_NUMBER_INT );
     29        $quantity      = filter_input( INPUT_POST, 'quantity', FILTER_SANITIZE_NUMBER_INT );
    3030
    3131        if ( empty( $product_id ) || empty( $cart_item_key ) || ! is_numeric( $quantity ) ) {
     
    3939        }
    4040
    41         $passed_validation = true;
    42         $cart_updated = false;
     41        $passed_validation        = true;
     42        $cart_updated             = false;
     43        $current_session_order_id = isset( WC()->session->order_awaiting_payment ) ? absint( WC()->session->order_awaiting_payment ) : 0;
     44        $product_qty_in_cart      = WC()->cart->get_cart_item_quantities();
    4345
    4446        // is_sold_individually.
    4547        if ( $_product->is_sold_individually() && $quantity > 1 ) {
    4648            /* Translators: %s Product title. */
    47             wc_add_notice( sprintf( __( 'You can only have 1 %s in your cart.', 'woocommerce' ), $_product->get_name() ), 'error' );
     49            wc_add_notice( sprintf( __( 'You can only have 1 %s in your cart.', 'orderable' ), $_product->get_name() ), 'error' );
    4850            $passed_validation = false;
    4951        }
    5052
     53        // We only need to check products managing stock, with a limited stock qty.
     54        if ( $_product->managing_stock() || $_product->backorders_allowed() ) {
     55            // Check stock based on all items in the cart and consider any held stock within pending orders.
     56            $held_stock = wc_get_held_stock_quantity( $_product, $current_session_order_id );
     57
     58            if ( $_product->get_stock_quantity() < ( $held_stock + $quantity ) ) {
     59                /* translators: 1: product name 2: quantity in stock */
     60                wc_add_notice( sprintf( __( 'Sorry, we do not have enough "%1$s" in stock to fulfill your order (%2$s available). We apologize for any inconvenience caused.', 'woocommerce' ), $_product->get_name(), wc_format_stock_quantity_for_display( $_product->get_stock_quantity() - $held_stock, $_product ) ), 'error' );
     61
     62                $passed_validation = false;
     63            }
     64        }
     65
    5166        if ( $passed_validation ) {
    52             WC()->cart->set_quantity( $cart_item_key, $quantity, false );
     67            WC()->cart->set_quantity( $cart_item_key, intval( $quantity ), false );
    5368            $cart_updated = true;
    5469        }
  • orderable/trunk/inc/modules/drawer/class-drawer-settings.php

    r2558994 r2709284  
    2424        add_filter( 'wpsf_register_settings_orderable', array( __CLASS__, 'register_settings' ), 20 );
    2525        add_filter( 'orderable_settings_validate', array( __CLASS__, 'validate_settings' ), 10 );
     26        add_action( 'init', array( __CLASS__, 'position_accordion' ) );
    2627    }
    2728
     
    4243        );
    4344
     45        $default_settings['drawer_quickview_description']        = 'none';
     46        $default_settings['drawer_quickview_accordion_position'] = 'orderable_side_menu_before_product_options';
     47
    4448        return $default_settings;
    4549    }
     
    5357     */
    5458    public static function register_settings( $settings = array() ) {
     59        $settings['tabs']['drawer'] = array(
     60            'id'       => 'drawer',
     61            'title'    => __( 'Side Drawer', 'orderable' ),
     62            'priority' => 30,
     63        );
     64
    5565        $settings['sections']['cart'] = array(
    5666            'tab_id'              => 'style',
     
    8595        );
    8696
     97        $settings['sections']['quickview'] = array(
     98            'tab_id'              => 'drawer',
     99            'section_id'          => 'quickview',
     100            'section_title'       => __( 'Quickview Settings', 'orderable' ),
     101            'section_description' => __( 'Settings for when products are displayed in the Orderable drawer.', 'orderable' ),
     102            'section_order'       => 10,
     103            'fields'              => array(
     104                'accordion_position' => array(
     105                    'id'       => 'accordion_position',
     106                    'title'    => __( 'Accordion Position', 'orderable' ),
     107                    'subtitle' => __( 'Where should the product information accordion be displayed in the side drawer.', 'orderable' ),
     108                    'type'     => 'select',
     109                    'choices'  => array(
     110                        'orderable_side_menu_before_product_options' => __( 'Before Product Options', 'orderable' ),
     111                        'orderable_side_menu_after_product_options'  => __( 'After Product Options', 'orderable' ),
     112                    ),
     113                    'default'  => Orderable_Settings::get_setting_default( 'drawer_quickview_accordion_position' ),
     114                ),
     115                'description'        => array(
     116                    'id'       => 'description',
     117                    'title'    => __( 'Product Description', 'orderable' ),
     118                    'subtitle' => __( 'Choose which product description to display in the side drawer.', 'orderable' ),
     119                    'type'     => 'select',
     120                    'choices'  => array(
     121                        'none'  => __( 'None', 'orderable' ),
     122                        'short' => __( 'Short Description', 'orderable' ),
     123                        'full'  => __( 'Full Description', 'orderable' ),
     124                    ),
     125                    'default'  => Orderable_Settings::get_setting_default( 'drawer_quickview_description' ),
     126                ),
     127            ),
     128        );
     129
    87130        return $settings;
    88131    }
     
    190233
    191234                    $table.find( 'tr' ).removeClass( 'orderable-table__row--last' );
    192                     $table.find( 'tr' ).not( '[style*="display: none"]').last().addClass( 'orderable-table__row--last' );
     235                    $table.find( 'tr' ).not( '[style*="display: none"]' ).last().addClass( 'orderable-table__row--last' );
    193236                }
    194237
     
    215258        $settings = Orderable_Settings::get_setting( self::$fine_tune_cart_key );
    216259        $settings = array_filter( $settings );
    217         $css = '';
     260        $css      = '';
    218261
    219262        if ( ! empty( $settings ) ) {
     
    240283        return apply_filters( 'orderable_get_cart_icon_css', $style, $cart_count );
    241284    }
     285
     286    /**
     287     * Position product accordion in drawer.
     288     */
     289    public static function position_accordion() {
     290        $position = Orderable_Settings::get_setting( 'drawer_quickview_accordion_position' );
     291
     292        add_filter( $position, array( __CLASS__, 'display_product_accordion' ), 10, 2 );
     293    }
     294
     295    /**
     296     * Display product accordion.
     297     *
     298     * @param WC_Product $product Product.
     299     * @param array      $args    Args.
     300     */
     301    public static function display_product_accordion( $product, $args = array() ) {
     302        include ORDERABLE_TEMPLATES_PATH . 'product/accordion.php';
     303    }
    242304}
  • orderable/trunk/inc/modules/drawer/class-drawer.php

    r2558994 r2709284  
    2020        add_action( 'wp_footer', array( __CLASS__, 'add' ) );
    2121        add_filter( 'woocommerce_add_to_cart_fragments', array( __CLASS__, 'cart_count_fragments' ), 10, 1 );
     22        add_filter( 'woocommerce_add_to_cart_fragments', array( __CLASS__, 'cart_content_fragments' ), 10, 1 );
    2223        add_filter( 'woocommerce_cart_item_permalink', '__return_false' );
    2324        add_filter( 'wc_get_template', array( __CLASS__, 'mini_cart_template' ), 100, 5 );
     
    7172
    7273    /**
     74     * Update cart content after adding to cart.
     75     *
     76     * @param array $fragments Array of HTML fragments.
     77     *
     78     * @return mixed
     79     */
     80    public static function cart_content_fragments( $fragments ) {
     81        ob_start();
     82
     83        self::mini_cart();
     84
     85        $fragments['.orderable-mini-cart-wrapper'] = ob_get_clean();
     86
     87        return $fragments;
     88    }
     89
     90    /**
    7391     * Replace mini cart template.
    7492     *
     
    86104        }
    87105
     106        if ( empty( $args['orderable'] ) ) {
     107            return $template;
     108        }
     109
    88110        return ORDERABLE_PATH . 'woocommerce/cart/mini-cart.php';
    89111    }
     112
     113    /**
     114     * Output mini cart with Orderable param set.
     115     */
     116    public static function mini_cart() {
     117        ?>
     118        <div class="orderable-mini-cart-wrapper">
     119            <?php woocommerce_mini_cart( array( 'orderable' => true ) ); ?>
     120        </div>
     121        <?php
     122    }
    90123}
  • orderable/trunk/inc/modules/drawer/templates/drawer.php

    r2549156 r2709284  
    1616        <h3><?php _e( 'Your Order', 'orderable' ); ?></h3>
    1717
    18         <div class="widget_shopping_cart_content">
    19             <?php woocommerce_mini_cart(); ?>
     18        <div class="orderable-mini-cart-wrapper">
     19            <?php Orderable_Drawer::mini_cart(); ?>
    2020        </div>
    2121    </div>
  • orderable/trunk/inc/modules/layouts/assets/admin/css/layouts.css

    r2637423 r2709284  
    8787}
    8888
    89 .orderable-main--sections-side_tabs {
    90   display: -webkit-box;
    91   display: -ms-flexbox;
    92   display: flex;
    93 }
    94 
    95 .orderable-main--sections-side_tabs .orderable-main__tabs {
    96   margin: 0 24px 0 0 !important;
    97 }
    98 
    99 .orderable-main--sections-side_tabs .orderable-main__sections {
    100   -webkit-box-flex: 1;
    101       -ms-flex: 1;
    102           flex: 1;
     89@media screen and (min-width: 620px) {
     90  .orderable-main--sections-side_tabs {
     91    display: -webkit-box;
     92    display: -ms-flexbox;
     93    display: flex;
     94  }
     95  .orderable-main--sections-side_tabs .orderable-main__tabs {
     96    margin: 0 24px 0 0 !important;
     97  }
     98  .orderable-main--sections-side_tabs .orderable-main__sections {
     99    -webkit-box-flex: 1;
     100        -ms-flex: 1;
     101            flex: 1;
     102  }
    103103}
    104104
     
    310310
    311311.orderable-product__options {
    312   margin: 12px 0 24px;
     312  margin: 0 0 24px;
    313313  padding: 0;
    314314  border-radius: 6px;
    315 }
    316 
    317 .orderable-product__options:last-child {
    318   margin-bottom: 0;
    319315}
    320316
     
    328324
    329325.orderable-product__options th {
    330   font-size: 18px;
    331326  line-height: 22px;
    332327}
     
    374369.orderable-product__actions-button {
    375370  margin: 0 0 0 auto;
     371}
     372
     373.orderable-product__tabs {
     374  margin: 24px 0;
     375}
     376
     377.orderable-product__tabs-section {
     378  display: none;
     379}
     380
     381.orderable-product__tabs-section:first-child {
     382  display: block;
     383}
     384
     385.orderable-product__tabs-section *:last-child {
     386  margin-bottom: 0;
    376387}
    377388
     
    389400}
    390401
     402.orderable-product--options .orderable-product__hero {
     403  margin: -24px -24px 0;
     404}
     405
     406.orderable-product--options .orderable-product__title {
     407  text-align: left;
     408  margin: 24px 0 !important;
     409}
     410
    391411.orderable-product--options .orderable-product__actions {
    392412  margin-top: auto;
     
    398418}
    399419
    400 .orderable-product--clickable {
     420.orderable-product--add-to-cart,
     421.orderable-product--product-options,
     422.orderable-product--view-product {
    401423  cursor: pointer;
    402424}
    403425
    404 .orderable-product__hero--title {
     426.orderable-product--image-cropped .orderable-product__hero {
    405427  overflow: hidden;
    406   padding: 24px 24px 0;
    407   margin: -24px -24px 24px;
     428  padding: 0;
    408429  text-align: center;
    409430  -webkit-box-flex: 0;
    410431      -ms-flex: 0 0 auto;
    411432          flex: 0 0 auto;
    412 }
    413 
    414 .orderable-product__hero--title:before {
    415   background: #fff;
    416   top: auto;
    417   left: -10px;
    418   right: -10px;
    419   bottom: -10px;
    420   position: absolute;
    421   height: 24px;
    422   z-index: 5;
    423   -webkit-transform: rotate(-1.5deg);
    424           transform: rotate(-1.5deg);
    425 }
    426 
    427 .orderable-product__hero--title:after {
    428   content: "";
    429   position: absolute;
    430   top: 0;
    431   left: 0;
    432   right: 0;
    433   bottom: 0;
    434   background: -webkit-gradient(linear, left bottom, left top, from(rgba(24, 33, 37, 0.8)), to(rgba(24, 33, 37, 0.3)));
    435   background: linear-gradient(0deg, rgba(24, 33, 37, 0.8), rgba(24, 33, 37, 0.3));
    436   z-index: 1;
    437   mix-blend-mode: multiply;
    438 }
    439 
    440 .orderable-product__hero--title .orderable-product__image {
     433  height: 72px;
     434}
     435
     436.orderable-product--image-cropped .orderable-product__image {
    441437  -o-object-fit: cover;
    442438     object-fit: cover;
     
    447443  left: 0;
    448444  top: 0;
    449 }
    450 
    451 .orderable-product__hero--title .orderable-product__title {
    452   color: #fff;
    453   position: relative;
    454   z-index: 10;
    455445}
    456446
     
    481471    width: 100%;
    482472    min-width: 60px;
    483     max-width: 80px;
     473    max-width: 95px;
    484474    border-radius: 6px;
    485475    overflow: hidden;
     
    607597}
    608598
     599.orderable-button--icon {
     600  padding: 10px !important;
     601  width: 44px;
     602  height: 44px;
     603  line-height: 24px;
     604  border: none;
     605  background: none !important;
     606}
     607
     608body .orderable-button--icon:hover,
     609body .orderable-button--icon:focus,
     610body .orderable-button--icon:active {
     611  background: none !important;
     612  opacity: 0.6;
     613}
     614
     615.orderable-button--icon svg {
     616  width: 24px;
     617  height: 24px;
     618  border-radius: 12px;
     619  overflow: hidden;
     620  -webkit-transition: opacity 250ms ease-in-out;
     621  transition: opacity 250ms ease-in-out;
     622}
     623
     624.orderable-button--icon.orderable-button--loading:after {
     625  display: none;
     626}
     627
    609628.orderable-tabs {
    610   margin: 0 0 24px !important;
     629  margin: 0 0 24px;
     630  position: relative;
     631}
     632
     633.orderable-tabs__list {
     634  margin: 0 1px 0 0 !important;
    611635  padding: 0 !important;
    612636  list-style: none none outside;
    613 }
    614 
    615 .orderable-main--sections-side_tabs .orderable-tabs {
    616   -webkit-box-flex: 0;
    617       -ms-flex: 0 1 auto;
    618           flex: 0 1 auto;
     637  position: relative;
     638  display: -webkit-box;
     639  display: -ms-flexbox;
     640  display: flex;
     641  -ms-flex-wrap: nowrap;
     642      flex-wrap: nowrap;
     643  -webkit-box-flex: 1;
     644      -ms-flex: 1 1 auto;
     645          flex: 1 1 auto;
     646  overflow-x: auto;
     647  overflow-y: hidden;
     648  overflow: -moz-scrollbars-none;
     649  scrollbar-base-color: transparent;
     650  -webkit-overflow-scrolling: touch;
     651}
     652
     653.orderable-tabs__list::-webkit-scrollbar {
     654  display: none;
     655}
     656
     657@media screen and (min-width: 620px) {
     658  .orderable-main--sections-side_tabs .orderable-tabs__list {
     659    -webkit-box-flex: 0;
     660        -ms-flex: 0 1 auto;
     661            flex: 0 1 auto;
     662    -webkit-box-orient: vertical;
     663    -webkit-box-direction: normal;
     664        -ms-flex-direction: column;
     665            flex-direction: column;
     666    height: auto;
     667  }
    619668}
    620669
    621670.orderable-tabs__item {
    622671  display: inline-block;
    623   margin: 0;
     672  margin: 0 10px 0 0;
    624673  padding: 0;
    625674}
    626675
    627 .orderable-main--sections-side_tabs .orderable-tabs__item {
    628   margin: 0 0 6px;
    629   display: block;
    630 }
    631 
    632 .orderable-main--sections-side_tabs .orderable-tabs__item:last-child {
    633   margin: 0;
     676.orderable-tabs__item:last-child {
     677  margin-right: 0;
     678}
     679
     680@media screen and (min-width: 620px) {
     681  .orderable-main--sections-side_tabs .orderable-tabs__item {
     682    margin: 0 0 12px;
     683    display: block;
     684  }
     685  .orderable-main--sections-side_tabs .orderable-tabs__item:last-child {
     686    margin: 0;
     687  }
    634688}
    635689
     
    640694  white-space: nowrap;
    641695  line-height: 40px;
    642   color: #000;
     696  color: #405763;
    643697  font-weight: 400;
    644698  border-radius: 20px;
    645   -webkit-transition: none;
    646   transition: none;
     699  -webkit-transition: all 150ms ease-out;
     700  transition: all 150ms ease-out;
     701  background: #ecf1f3;
    647702}
    648703
     
    654709
    655710a.orderable-tabs__link:hover, a.orderable-tabs__link:active, a.orderable-tabs__link:focus {
    656   color: #000;
     711  color: #405763;
    657712  text-decoration: none;
    658   background: #ecf1f3;
     713  background: #c7d4db;
    659714}
    660715
     
    666721.orderable--button-style-square a.orderable-tabs__link {
    667722  border-radius: 0;
     723}
     724
     725.orderable-tabs__arrow {
     726  background: #fff;
     727  -webkit-box-shadow: 0 0.4px 1.3px rgba(0, 0, 0, 0.05), 0 1.3px 4.5px rgba(0, 0, 0, 0.06), 0 6px 16px rgba(0, 0, 0, 0.07);
     728          box-shadow: 0 0.4px 1.3px rgba(0, 0, 0, 0.05), 0 1.3px 4.5px rgba(0, 0, 0, 0.06), 0 6px 16px rgba(0, 0, 0, 0.07);
     729  border: none;
     730  width: 40px !important;
     731  height: 40px !important;
     732  padding: 0 !important;
     733  margin: 0 !important;
     734  border-radius: 20px !important;
     735  position: absolute;
     736  top: 0;
     737  right: 0;
     738  text-align: center;
     739  line-height: 40px;
     740  display: none;
     741}
     742
     743.orderable-tabs__arrow:hover, .orderable-tabs__arrow:focus, .orderable-tabs__arrow:active {
     744  background: #fff;
     745  outline: none;
     746}
     747
     748.orderable-tabs__arrow svg {
     749  width: 21px;
     750  height: 24px;
     751  margin: 8px 0;
    668752}
    669753
     
    710794  margin: 0 0 25px;
    711795  padding: 1px 12px;
    712   border-left-color: #bc47f5;
     796  border-left-color: #7031F5;
    713797}
    714798
  • orderable/trunk/inc/modules/layouts/assets/admin/css/layouts.min.css

    r2637423 r2709284  
    1 @-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes wobble-hor-bottom{0%,100%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:50% 50%;transform-origin:50% 50%}15%{-webkit-transform:translateX(-10%) rotate(-6deg);transform:translateX(-10%) rotate(-6deg)}30%{-webkit-transform:translateX(5%) rotate(6deg);transform:translateX(5%) rotate(6deg)}45%{-webkit-transform:translateX(-5%) rotate(-3.6deg);transform:translateX(-5%) rotate(-3.6deg)}60%{-webkit-transform:translateX(2%) rotate(2.4deg);transform:translateX(2%) rotate(2.4deg)}75%{-webkit-transform:translateX(-1%) rotate(-1.2deg);transform:translateX(-1%) rotate(-1.2deg)}}@keyframes wobble-hor-bottom{0%,100%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:50% 50%;transform-origin:50% 50%}15%{-webkit-transform:translateX(-10%) rotate(-6deg);transform:translateX(-10%) rotate(-6deg)}30%{-webkit-transform:translateX(5%) rotate(6deg);transform:translateX(5%) rotate(6deg)}45%{-webkit-transform:translateX(-5%) rotate(-3.6deg);transform:translateX(-5%) rotate(-3.6deg)}60%{-webkit-transform:translateX(2%) rotate(2.4deg);transform:translateX(2%) rotate(2.4deg)}75%{-webkit-transform:translateX(-1%) rotate(-1.2deg);transform:translateX(-1%) rotate(-1.2deg)}}.orderable-main__group{margin:0 0 36px}.orderable-main--sections-tabs .orderable-main__group{display:none}.orderable-main--sections-tabs .orderable-main__group:first-of-type{display:block}.orderable-main--sections-side_tabs{display:-webkit-box;display:-ms-flexbox;display:flex}.orderable-main--sections-side_tabs .orderable-main__tabs{margin:0 24px 0 0!important}.orderable-main--sections-side_tabs .orderable-main__sections{-webkit-box-flex:1;-ms-flex:1;flex:1}.orderable-products-list{margin-bottom:12px;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-products-list *{-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-products-list:last-child{margin-bottom:0}@media screen and (min-width:480px){.orderable-products-list .orderable-product{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px}.orderable-products-list .orderable-product__hero{width:200px}.orderable-products-list .orderable-product__image{-o-object-fit:cover;object-fit:cover;width:100%!important;height:100%!important}.orderable-products-list .orderable-product__content-wrap{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column nowrap;flex-flow:column nowrap}}.orderable-products-list .orderable-product__actions{padding:12px 24px 18px;margin-top:auto}.orderable-products-list__item{width:100%;margin:0 0 24px}@media screen and (max-width:480px){.orderable-products-list__item{padding:0 0 24px;border-bottom:1px solid #ecf1f3}.orderable-products-list__item:last-child{border-bottom:none}}@media screen and (min-width:540px){.orderable-products-list--grid{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:-12px;margin-right:-12px}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-products-list__item{margin:0 0 24px;padding:0 12px;width:50%}.orderable-products-list--grid .orderable-product{padding:0 0 88px;display:block;margin:0;-webkit-box-flex:0;-ms-flex:none;flex:none}}@media screen and (min-width:1120px){.orderable-products-list--grid .orderable-products-list__item{width:33.33%}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-product__hero{width:auto}.orderable-products-list--grid .orderable-product__hero img{-o-object-fit:fill;object-fit:fill;width:100%;height:auto}.orderable-products-list--grid .orderable-product__content-wrap{-webkit-box-flex:0;-ms-flex:none;flex:none;display:block}.orderable-products-list--grid .orderable-product__actions{padding:0;margin-top:0;position:absolute;bottom:24px;left:24px;right:24px}}.orderable-product{overflow:hidden;position:relative}.orderable-product__hero{position:relative}.orderable-product__image{border-radius:0;margin:0;display:block;width:100%;height:auto!important;max-width:none!important}.orderable-product__content{padding:18px 24px 12px}.orderable-product__content :last-child{margin-bottom:0}.orderable-product__title{margin:0 0 12px!important}.orderable-product__description{margin:0}.orderable-product__tags{overflow:hidden;margin:0;padding:0;list-style:none}img+.orderable-product__tags{position:absolute;bottom:0;left:0;padding:12px;z-index:20}.orderable-product__tags li{margin:6px 0 0}.orderable-product__options{margin:12px 0 24px;padding:0;border-radius:6px}.orderable-product__actions:last-child,.orderable-product__options:last-child{margin-bottom:0}.orderable-product__options td,.orderable-product__options th{background-color:transparent!important;padding:0 0 12px;text-align:left;display:block;margin:0}.orderable-product__options th{font-size:18px;line-height:22px}.orderable-product__options td{padding-bottom:24px}.orderable-product__options tr{padding:0;margin:0}.orderable-product__options tr:last-child td{padding-bottom:0}.orderable-product__actions{overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.orderable-product__actions-price{margin:0 4px 0 0}.orderable-product__actions-price .amount{white-space:nowrap;margin:0 6px 0 0;font-weight:700;color:#000;font-size:20px;line-height:24px}.orderable-product__actions-button{margin:0 0 0 auto}.orderable-product--options{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:visible;height:100%}.orderable-product--options .orderable-product__actions{margin-top:auto;padding-top:24px;border-top:1px solid #E6ECEF;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.orderable-product--clickable{cursor:pointer}.orderable-product__hero--title{overflow:hidden;padding:24px 24px 0;margin:-24px -24px 24px;text-align:center;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.orderable-product__hero--title:before{background:#fff;top:auto;left:-10px;right:-10px;bottom:-10px;position:absolute;height:24px;z-index:5;-webkit-transform:rotate(-1.5deg);transform:rotate(-1.5deg)}.orderable-product__hero--title:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:-webkit-gradient(linear,left bottom,left top,from(rgba(24,33,37,.8)),to(rgba(24,33,37,.3)));background:linear-gradient(0deg,rgba(24,33,37,.8),rgba(24,33,37,.3));z-index:1;mix-blend-mode:multiply}.orderable-product__hero--title .orderable-product__image{-o-object-fit:cover;object-fit:cover;position:absolute;z-index:-1;width:100%;height:100%!important;left:0;top:0}.orderable-product__hero--title .orderable-product__title{color:#fff;position:relative;z-index:10}.orderable-products-list__item .orderable-product{height:100%;width:100%;-webkit-box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);border-radius:6px}@media screen and (max-width:480px){.orderable-products-list__item .orderable-product{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.orderable-products-list__item .orderable-product__hero{width:100%;min-width:60px;max-width:80px;border-radius:6px;overflow:hidden}.orderable-products-list__item .orderable-product__content-wrap{-webkit-box-flex:1;-ms-flex:1;flex:1}.orderable-products-list__item .orderable-product__content{padding:0 0 0 24px}.orderable-products-list__item .orderable-product__actions{padding:6px 0 0 24px}.orderable-products-list__item .orderable-product__title{margin:0 0 6px!important}}.orderable-button{display:inline-block;border:2px solid #000;background:0 0;padding:0 24px!important;height:40px;line-height:36px;white-space:nowrap;border-radius:20px;color:#000;text-transform:none;margin:0;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out;-webkit-box-shadow:none;box-shadow:none;cursor:pointer}.orderable-button:active,.orderable-button:focus{outline:0}.orderable-button--active,.orderable-button--hover,.orderable-button:active,.orderable-button:focus,.orderable-button:hover{border-color:#000;background:#000;color:#fff;text-decoration:none;-webkit-box-shadow:none;box-shadow:none}.orderable-button--filled,.orderable-button--filled--hover,.orderable-button--filled:hover{background:#000!important;color:#fff}.orderable-button--full{width:100%}.orderable-button--loading{position:relative;padding-right:48px!important}.orderable-button--loading:after{content:'';display:block;width:16px;height:16px;position:absolute;top:10px;right:22px;background:0 0;-webkit-box-sizing:border-box;box-sizing:border-box;border-top:2px solid #000;border-left:2px solid #000;border-right:2px solid transparent;border-bottom:2px solid transparent;border-radius:100%;-webkit-animation:spin .6s ease-out infinite;animation:spin .6s ease-out infinite}.orderable-button--filled .orderable-button--loading:after,.orderable-button--loading.orderable-button--hover:after,.orderable-button--loading:active:after,.orderable-button--loading:focus:after,.orderable-button--loading:hover:after{border-top-color:#fff;border-left-color:#fff}.orderable-button.orderable-button--out-of-stock,.orderable-button.orderable-button--out-of-stock.orderable-button--hover,.orderable-button.orderable-button--out-of-stock:active,.orderable-button.orderable-button--out-of-stock:focus,.orderable-button.orderable-button--out-of-stock:hover{cursor:not-allowed;border-color:#c7d4db;color:#a8bdc7;background:0 0!important}.orderable--button-style-square .orderable-button{border-radius:0}.orderable-tabs{margin:0 0 24px!important;padding:0!important;list-style:none}.orderable-main--sections-side_tabs .orderable-tabs{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.orderable-tabs__item{display:inline-block;margin:0;padding:0}.orderable-main--sections-side_tabs .orderable-tabs__item{margin:0 0 6px;display:block}.orderable-main--sections-side_tabs .orderable-tabs__item:last-child{margin:0}a.orderable-tabs__link{text-decoration:none!important;display:inline-block;padding:0 24px;white-space:nowrap;line-height:40px;color:#000;font-weight:400;border-radius:20px;-webkit-transition:none;transition:none}a.orderable-tabs__link:active,a.orderable-tabs__link:focus{outline:0;-webkit-box-shadow:none;box-shadow:none}a.orderable-tabs__link:active,a.orderable-tabs__link:focus,a.orderable-tabs__link:hover{color:#000;text-decoration:none;background:#ecf1f3}.orderable-tabs__item--active a.orderable-tabs__link{background:#000;color:#fff}.orderable--button-style-square a.orderable-tabs__link{border-radius:0}#orderable-layout-settings-metabox{z-index:1000}#orderable-layout-preview-metabox .inside{padding:24px 24px 0;margin:0}#orderable-layout-preview-metabox .inside h2.orderable-category-heading__title,#orderable-layout-preview-metabox .inside h3{margin:0 0 24px}#orderable-layout-preview-metabox .inside h2{padding:0;font-weight:600;font-size:20px;line-height:1.2}#orderable-layout-preview-metabox .orderable-category-heading__description{margin:-12px 0 24px}#orderable-layout-preview-metabox .orderable-main{max-width:1000px;margin:0}#orderable-layout-preview-metabox .orderable-main--sections-side_tabs .orderable-main__tabs{margin:0 24px 24px 0!important}.orderable-layout-preview-notice{background:#fff;border:1px solid #c3c4c7;border-left-width:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);margin:0 0 25px;padding:1px 12px;border-left-color:#bc47f5}.orderable-layout-preview-notice p{margin:.5em 0;padding:2px}
     1@-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes wobble-hor-bottom{0%,100%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:50% 50%;transform-origin:50% 50%}15%{-webkit-transform:translateX(-10%) rotate(-6deg);transform:translateX(-10%) rotate(-6deg)}30%{-webkit-transform:translateX(5%) rotate(6deg);transform:translateX(5%) rotate(6deg)}45%{-webkit-transform:translateX(-5%) rotate(-3.6deg);transform:translateX(-5%) rotate(-3.6deg)}60%{-webkit-transform:translateX(2%) rotate(2.4deg);transform:translateX(2%) rotate(2.4deg)}75%{-webkit-transform:translateX(-1%) rotate(-1.2deg);transform:translateX(-1%) rotate(-1.2deg)}}@keyframes wobble-hor-bottom{0%,100%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:50% 50%;transform-origin:50% 50%}15%{-webkit-transform:translateX(-10%) rotate(-6deg);transform:translateX(-10%) rotate(-6deg)}30%{-webkit-transform:translateX(5%) rotate(6deg);transform:translateX(5%) rotate(6deg)}45%{-webkit-transform:translateX(-5%) rotate(-3.6deg);transform:translateX(-5%) rotate(-3.6deg)}60%{-webkit-transform:translateX(2%) rotate(2.4deg);transform:translateX(2%) rotate(2.4deg)}75%{-webkit-transform:translateX(-1%) rotate(-1.2deg);transform:translateX(-1%) rotate(-1.2deg)}}.orderable-main__group{margin:0 0 36px}.orderable-main--sections-tabs .orderable-main__group{display:none}.orderable-main--sections-tabs .orderable-main__group:first-of-type{display:block}@media screen and (min-width:620px){.orderable-main--sections-side_tabs{display:-webkit-box;display:-ms-flexbox;display:flex}.orderable-main--sections-side_tabs .orderable-main__tabs{margin:0 24px 0 0!important}.orderable-main--sections-side_tabs .orderable-main__sections{-webkit-box-flex:1;-ms-flex:1;flex:1}}.orderable-products-list{margin-bottom:12px;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-products-list *{-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-products-list:last-child{margin-bottom:0}@media screen and (min-width:480px){.orderable-products-list .orderable-product{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px}.orderable-products-list .orderable-product__hero{width:200px}.orderable-products-list .orderable-product__image{-o-object-fit:cover;object-fit:cover;width:100%!important;height:100%!important}.orderable-products-list .orderable-product__content-wrap{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column nowrap;flex-flow:column nowrap}}.orderable-products-list .orderable-product__actions{padding:12px 24px 18px;margin-top:auto}.orderable-products-list__item{width:100%;margin:0 0 24px}@media screen and (max-width:480px){.orderable-products-list__item{padding:0 0 24px;border-bottom:1px solid #ecf1f3}.orderable-products-list__item:last-child{border-bottom:none}}@media screen and (min-width:540px){.orderable-products-list--grid{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:-12px;margin-right:-12px}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-products-list__item{margin:0 0 24px;padding:0 12px;width:50%}.orderable-products-list--grid .orderable-product{padding:0 0 88px;display:block;margin:0;-webkit-box-flex:0;-ms-flex:none;flex:none}}@media screen and (min-width:1120px){.orderable-products-list--grid .orderable-products-list__item{width:33.33%}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-product__hero{width:auto}.orderable-products-list--grid .orderable-product__hero img{-o-object-fit:fill;object-fit:fill;width:100%;height:auto}.orderable-products-list--grid .orderable-product__content-wrap{-webkit-box-flex:0;-ms-flex:none;flex:none;display:block}.orderable-products-list--grid .orderable-product__actions{padding:0;margin-top:0;position:absolute;bottom:24px;left:24px;right:24px}}.orderable-product{overflow:hidden;position:relative}.orderable-product__hero{position:relative}.orderable-product__image{border-radius:0;margin:0;display:block;width:100%;height:auto!important;max-width:none!important}.orderable-product__content{padding:18px 24px 12px}.orderable-product__content :last-child{margin-bottom:0}.orderable-product__title{margin:0 0 12px!important}.orderable-product__description{margin:0}.orderable-product__tags{overflow:hidden;margin:0;padding:0;list-style:none}img+.orderable-product__tags{position:absolute;bottom:0;left:0;padding:12px;z-index:20}.orderable-product__tags li{margin:6px 0 0}.orderable-product__options{margin:0 0 24px;padding:0;border-radius:6px}.orderable-product__options td,.orderable-product__options th{background-color:transparent!important;padding:0 0 12px;text-align:left;display:block;margin:0}.orderable-product__options th{line-height:22px}.orderable-product__options td{padding-bottom:24px}.orderable-product__options tr{padding:0;margin:0}.orderable-product__options tr:last-child td{padding-bottom:0}.orderable-product__actions{overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.orderable-product__actions:last-child{margin-bottom:0}.orderable-product__actions-price{margin:0 4px 0 0}.orderable-product__actions-price .amount{white-space:nowrap;margin:0 6px 0 0;font-weight:700;color:#000;font-size:20px;line-height:24px}.orderable-product__actions-button{margin:0 0 0 auto}.orderable-product__tabs{margin:24px 0}.orderable-product__tabs-section{display:none}.orderable-product__tabs-section:first-child{display:block}.orderable-product__tabs-section :last-child{margin-bottom:0}.orderable-product--options{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:visible;height:100%}.orderable-product--options .orderable-product__hero{margin:-24px -24px 0}.orderable-product--options .orderable-product__title{text-align:left;margin:24px 0!important}.orderable-product--options .orderable-product__actions{margin-top:auto;padding-top:24px;border-top:1px solid #E6ECEF;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.orderable-product--add-to-cart,.orderable-product--product-options,.orderable-product--view-product{cursor:pointer}.orderable-product--image-cropped .orderable-product__hero{overflow:hidden;padding:0;text-align:center;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;height:72px}.orderable-product--image-cropped .orderable-product__image{-o-object-fit:cover;object-fit:cover;position:absolute;z-index:-1;width:100%;height:100%!important;left:0;top:0}.orderable-products-list__item .orderable-product{height:100%;width:100%;-webkit-box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);border-radius:6px}@media screen and (max-width:480px){.orderable-products-list__item .orderable-product{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.orderable-products-list__item .orderable-product__hero{width:100%;min-width:60px;max-width:95px;border-radius:6px;overflow:hidden}.orderable-products-list__item .orderable-product__content-wrap{-webkit-box-flex:1;-ms-flex:1;flex:1}.orderable-products-list__item .orderable-product__content{padding:0 0 0 24px}.orderable-products-list__item .orderable-product__actions{padding:6px 0 0 24px}.orderable-products-list__item .orderable-product__title{margin:0 0 6px!important}}.orderable-button{display:inline-block;border:2px solid #000;background:0 0;padding:0 24px!important;height:40px;line-height:36px;white-space:nowrap;border-radius:20px;color:#000;text-transform:none;margin:0;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out;-webkit-box-shadow:none;box-shadow:none;cursor:pointer}.orderable-button:active,.orderable-button:focus{outline:0}.orderable-button--active,.orderable-button--hover,.orderable-button:active,.orderable-button:focus,.orderable-button:hover{border-color:#000;background:#000;color:#fff;text-decoration:none;-webkit-box-shadow:none;box-shadow:none}.orderable-button--filled,.orderable-button--filled--hover,.orderable-button--filled:hover{background:#000!important;color:#fff}.orderable-button--full{width:100%}.orderable-button--loading{position:relative;padding-right:48px!important}.orderable-button--loading:after{content:'';display:block;width:16px;height:16px;position:absolute;top:10px;right:22px;background:0 0;-webkit-box-sizing:border-box;box-sizing:border-box;border-top:2px solid #000;border-left:2px solid #000;border-right:2px solid transparent;border-bottom:2px solid transparent;border-radius:100%;-webkit-animation:spin .6s ease-out infinite;animation:spin .6s ease-out infinite}.orderable-button--filled .orderable-button--loading:after,.orderable-button--loading.orderable-button--hover:after,.orderable-button--loading:active:after,.orderable-button--loading:focus:after,.orderable-button--loading:hover:after{border-top-color:#fff;border-left-color:#fff}.orderable-button.orderable-button--out-of-stock,.orderable-button.orderable-button--out-of-stock.orderable-button--hover,.orderable-button.orderable-button--out-of-stock:active,.orderable-button.orderable-button--out-of-stock:focus,.orderable-button.orderable-button--out-of-stock:hover{cursor:not-allowed;border-color:#c7d4db;color:#a8bdc7;background:0 0!important}.orderable--button-style-square .orderable-button{border-radius:0}.orderable-button--icon{padding:10px!important;width:44px;height:44px;line-height:24px;border:none;background:0 0!important}body .orderable-button--icon:active,body .orderable-button--icon:focus,body .orderable-button--icon:hover{background:0 0!important;opacity:.6}.orderable-button--icon svg{width:24px;height:24px;border-radius:12px;overflow:hidden;-webkit-transition:opacity 250ms ease-in-out;transition:opacity 250ms ease-in-out}.orderable-button--icon.orderable-button--loading:after{display:none}.orderable-tabs{margin:0 0 24px;position:relative}.orderable-tabs__list{margin:0 1px 0 0!important;padding:0!important;list-style:none;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;overflow-x:auto;overflow-y:hidden;overflow:-moz-scrollbars-none;scrollbar-base-color:transparent;-webkit-overflow-scrolling:touch}.orderable-tabs__list::-webkit-scrollbar{display:none}.orderable-tabs__item{display:inline-block;margin:0 10px 0 0;padding:0}.orderable-tabs__item:last-child{margin-right:0}@media screen and (min-width:620px){.orderable-main--sections-side_tabs .orderable-tabs__list{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:auto}.orderable-main--sections-side_tabs .orderable-tabs__item{margin:0 0 12px;display:block}.orderable-main--sections-side_tabs .orderable-tabs__item:last-child{margin:0}}a.orderable-tabs__link{text-decoration:none!important;display:inline-block;padding:0 24px;white-space:nowrap;line-height:40px;color:#405763;font-weight:400;border-radius:20px;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out;background:#ecf1f3}a.orderable-tabs__link:active,a.orderable-tabs__link:focus{outline:0;-webkit-box-shadow:none;box-shadow:none}a.orderable-tabs__link:active,a.orderable-tabs__link:focus,a.orderable-tabs__link:hover{color:#405763;text-decoration:none;background:#c7d4db}.orderable-tabs__item--active a.orderable-tabs__link{background:#000;color:#fff}.orderable--button-style-square a.orderable-tabs__link{border-radius:0}.orderable-tabs__arrow{background:#fff;-webkit-box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);border:none;width:40px!important;height:40px!important;padding:0!important;margin:0!important;border-radius:20px!important;position:absolute;top:0;right:0;text-align:center;line-height:40px;display:none}.orderable-tabs__arrow:active,.orderable-tabs__arrow:focus,.orderable-tabs__arrow:hover{background:#fff;outline:0}.orderable-tabs__arrow svg{width:21px;height:24px;margin:8px 0}#orderable-layout-settings-metabox{z-index:1000}#orderable-layout-preview-metabox .inside{padding:24px 24px 0;margin:0}#orderable-layout-preview-metabox .inside h2.orderable-category-heading__title,#orderable-layout-preview-metabox .inside h3{margin:0 0 24px}#orderable-layout-preview-metabox .inside h2{padding:0;font-weight:600;font-size:20px;line-height:1.2}#orderable-layout-preview-metabox .orderable-category-heading__description{margin:-12px 0 24px}#orderable-layout-preview-metabox .orderable-main{max-width:1000px;margin:0}#orderable-layout-preview-metabox .orderable-main--sections-side_tabs .orderable-main__tabs{margin:0 24px 24px 0!important}.orderable-layout-preview-notice{background:#fff;border:1px solid #c3c4c7;border-left-width:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);margin:0 0 25px;padding:1px 12px;border-left-color:#7031F5}.orderable-layout-preview-notice p{margin:.5em 0;padding:2px}
  • orderable/trunk/inc/modules/layouts/assets/admin/js/main.min.js

    r2637423 r2709284  
    1 !function(n,l){"use strict";var c={on_ready:function(){c.builder.init()},helpers:{get_field_type:function(e){return"SELECT"===e.get(0).tagName?"select":e.attr("type")},strip_prefix:function(e){return e.replace("orderable_","")}},builder:{init:function(){c.builder.watch()},watch:function(){n(l.body).on("change","#orderable-layout-settings-metabox input, #orderable-layout-settings-metabox select",function(){var e=n(this).closest("#orderable-layout-settings-metabox"),a={},o=!0;e.find(".form-field > input, .form-field > select").each(function(e,t){var r=n(t),i=c.helpers.get_field_type(r),t="";"string"==typeof(t="checkbox"===i?n(this).is(":checked"):("select"===i&&r.attr("multiple"),r.val()))&&0===t.indexOf("pro_")&&(o=!1,n(l.body).trigger("orderable-pro-modal")),a[c.helpers.strip_prefix(this.name.replace("[]",""))]=t}),o&&c.builder.reload_preview(a)})},reload_preview:function(e){n.post(ajaxurl,{action:"orderable_preview",data:e},function(e){e.success&&n("#orderable-layout-preview-metabox .orderable-main-wrap").html(e.data.shortcode)})}}};n(l).ready(c.on_ready)}(jQuery,document);
     1!function(n,l){"use strict";var c={on_ready:function(){c.builder.init()},helpers:{get_field_type:function(e){return"SELECT"===e.get(0).tagName?"select":e.attr("type")},strip_prefix:function(e){return e.replace("orderable_","")}},builder:{init:function(){c.builder.watch()},watch:function(){n(l.body).on("change","#orderable-layout-settings-metabox input, #orderable-layout-settings-metabox select",function(){var e=n(this).closest("#orderable-layout-settings-metabox"),a={},o=!0;e.find(".form-field > input, .form-field > select").each(function(e,t){var t=n(t),r=c.helpers.get_field_type(t),i="";"string"==typeof(i="checkbox"===r?n(this).is(":checked"):("select"===r&&t.attr("multiple"),t.val()))&&0===i.indexOf("pro_")&&(o=!1,n(l.body).trigger("orderable-pro-modal")),a[c.helpers.strip_prefix(this.name.replace("[]",""))]=i}),o&&c.builder.reload_preview(a)})},reload_preview:function(e){n.post(ajaxurl,{action:"orderable_preview",data:e},function(e){e.success&&n("#orderable-layout-preview-metabox .orderable-main-wrap").html(e.data.shortcode)})}}};n(l).ready(c.on_ready)}(jQuery,document);
  • orderable/trunk/inc/modules/layouts/class-layouts.php

    r2637423 r2709284  
    9696        );
    9797
    98         $labels['all_items'] = __( 'Layout Builder', 'orderable' );
     98        $labels['all_items'] = __( 'Product Layouts', 'orderable' );
    9999
    100100        $args = array(
     
    183183
    184184        $layout_settings = apply_filters( 'orderable_layout_settings_save_data', array(
    185             'categories'     => (array) filter_input( INPUT_POST, 'orderable_categories', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY ),
    186             'layout'         => filter_input( INPUT_POST, 'orderable_layout', FILTER_SANITIZE_STRING ),
    187             'images'         => 'yes' === filter_input( INPUT_POST, 'orderable_images', FILTER_SANITIZE_STRING ),
    188             'card_clickable' => 'yes' === filter_input( INPUT_POST, 'orderable_card_clickable', FILTER_SANITIZE_STRING ),
     185            'categories' => (array) filter_input( INPUT_POST, 'orderable_categories', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY ),
     186            'layout'     => filter_input( INPUT_POST, 'orderable_layout', FILTER_SANITIZE_STRING ),
     187            'images'     => 'yes' === filter_input( INPUT_POST, 'orderable_images', FILTER_SANITIZE_STRING ),
     188            'card_click' => filter_input( INPUT_POST, 'orderable_card_click', FILTER_SANITIZE_STRING ),
    189189        ) );
    190190
     
    236236        <div class="orderable-main-wrap">
    237237            <?php
    238                 echo do_shortcode( sprintf( '[orderable id="%d"]', $post->ID ) );
     238            echo do_shortcode( sprintf( '[orderable id="%d"]', $post->ID ) );
    239239            ?>
    240240        </div>
     
    271271        $defaults = self::get_layout_defaults();
    272272
    273         $args                   = wp_parse_args( $args, $defaults );
    274         $args['images']         = (boolean) json_decode( strtolower( $args['images'] ) );
    275         $args['card_clickable'] = (boolean) json_decode( strtolower( $args['card_clickable'] ) );
     273        $args           = wp_parse_args( $args, $defaults );
     274        $args['images'] = (boolean) json_decode( strtolower( $args['images'] ) );
    276275
    277276        if ( ! is_null( $args['id'] ) ) {
     
    308307     * @param array $categories Categories.
    309308     * @param array $args       Layout Settings.
     309     *
    310310     * @return array
    311311     */
     
    314314         * Exclude Sections for Unique Categories.
    315315         *
    316          * @param array $exclude_sections  The Excluded sections.
    317          * @param array $categories        The Unfiltered Categories.
    318          * @param array $args              Layout Settings.
     316         * @param array $exclude_sections The Excluded sections.
     317         * @param array $categories       The Unfiltered Categories.
     318         * @param array $args             Layout Settings.
    319319         *
    320320         * @return array
     
    322322        $exclude_sections = apply_filters( 'orderable_exclude_sections_for_unique_categories', array( 'side_tabs', 'top_tabs' ), $categories, $args );
    323323
    324         if ( in_array( $args['sections'], $exclude_sections ) ) {
     324        if ( isset( $args['sections'] ) && in_array( $args['sections'], $exclude_sections, true ) ) {
    325325            $unique_categories = $categories;
    326326        } else {
     
    404404     */
    405405    public static function get_layout_defaults( $layout_id = null ) {
    406         return apply_filters( 'orderable_layout_defaults', array(
    407             'id'             => $layout_id,
    408             'categories'     => array(),
    409             'layout'         => 'grid',
    410             'images'         => true,
    411             'card_clickable' => false,
    412         ), $layout_id );
     406        return apply_filters(
     407            'orderable_layout_defaults',
     408            array(
     409                'id'         => $layout_id,
     410                'categories' => array(),
     411                'layout'     => 'grid',
     412                'images'     => true,
     413                'card_click' => '',
     414            ),
     415            $layout_id
     416        );
    413417    }
    414418
     
    486490
    487491        $notices[] = array(
    488             'name' => 'layout_builder',
    489             'title' => __( 'What is the Orderable Layout Builder?', 'orderable' ),
     492            'name'        => 'layout_builder',
     493            'title'       => __( 'What are Product Layouts?', 'orderable' ),
    490494            'description' => __( 'This is where you can create product layouts and customize their settings. Save your layouts here and reuse them later using the block editor, shortcode (great for page builders), or PHP snippet.', 'orderable' ),
    491495        );
     
    503507    public static function get_product_card_classes( $args = array() ) {
    504508        $class = array(
    505             'orderable-product'
     509            'orderable-product',
    506510        );
    507511
     
    510514        }
    511515
    512         if ( ! empty( $args['card_clickable'] ) ) {
    513             $class[] = 'orderable-product--clickable';
     516        if ( ! empty( $args['card_click'] ) ) {
     517            $class[] = 'orderable-product--' . $args['card_click'];
    514518        }
    515519
  • orderable/trunk/inc/modules/layouts/templates/admin/layout-settings-metabox.php

    r2575142 r2709284  
    9292                    <label for="clickable_card"><?php _e( 'Clickable Card', 'orderable' ); ?></label>
    9393                </h3>
    94                 <p><?php _e( 'When enabled, the whole product card is clickable, instead of just the button.', 'orderable' ); ?></p>
     94                <p><?php _e( 'Choose what happens when you click the product card.', 'orderable' ); ?></p>
    9595            </div>
    9696            <div class="orderable-fields-row__body-row-right">
    9797                <?php
    98                 // Card Clickable.
    99                 woocommerce_wp_checkbox(
     98                // Layout.
     99                woocommerce_wp_select(
    100100                    array(
    101                         'id'    => 'orderable_card_clickable',
    102                         'label' => '',
    103                         'value' => wc_bool_to_string( $layout_settings['card_clickable'] ),
     101                        'id'      => 'orderable_card_click',
     102                        'label'   => '',
     103                        'options' => array(
     104                            ''             => __( 'Nothing', 'orderable' ),
     105                            'add-to-cart'  => __( 'Add to Cart', 'orderable' ),
     106                            'view-product' => __( 'Quick View Product', 'orderable' ),
     107                        ),
     108                        'value'   => esc_attr( $layout_settings['card_click'] ),
    104109                    )
    105110                );
  • orderable/trunk/inc/modules/layouts/templates/product.php

    r2575142 r2709284  
    1414$class = Orderable_Layouts::get_product_card_classes( $args ); ?>
    1515
    16 <div class="<?php echo esc_attr( implode( ' ', $class ) ); ?>">
     16<div class="<?php echo esc_attr( implode( ' ', $class ) ); ?>"
     17     <?php if ( ! empty( $args['card_click'] ) ) { ?>
     18     data-orderable-trigger="<?php echo esc_attr( $args['card_click'] ); ?>"
     19     data-orderable-product-id="<?php echo esc_attr( $product->is_type( 'variation' ) ? $product->get_parent_id() : $product->get_id() ); ?>"
     20     data-orderable-product-type="<?php echo esc_attr( $product->get_type() ); ?>"
     21     data-orderable-variation-id="<?php echo esc_attr( $product->is_type( 'variation' ) ? $product->get_id() : 0 ); ?>"
     22     data-orderable-variation-attributes=""
     23     <?php } ?>
     24>
    1725    <?php include ORDERABLE_TEMPLATES_PATH . 'product/hero.php'; ?>
    1826    <div class="orderable-product__content-wrap">
  • orderable/trunk/inc/modules/live-view/class-live-view.php

    r2604252 r2709284  
    2424        add_action( 'admin_menu', array( __CLASS__, 'add_settings_page' ) );
    2525        add_action( 'init', array( __CLASS__, 'create_order_manager_role' ) );
     26        add_action( 'current_screen', array( __CLASS__, 'restrict_order_manager_role_access' ) );
    2627    }
    2728
     
    119120     */
    120121    public static function get_last_order_id() {
    121         $orders = wc_get_orders( array(
    122             'limit' => 1,
    123         ) );
     122        $orders = wc_get_orders(
     123            array(
     124                'limit' => 1,
     125            )
     126        );
    124127
    125128        if ( empty( $orders ) ) {
     
    186189        if ( ! self::is_live_view() ) {
    187190            return;
    188         } ?>
     191        }
     192        ?>
    189193        <input type="hidden" name="orderable_live_view" value="1" />
    190194        <?php
     
    195199     */
    196200    public static function add_settings_page() {
    197         add_submenu_page( 'orderable', __( 'Live Order View', 'orderable' ),  __( 'Live Order View', 'orderable' ), 'manage_shop_order_terms', 'edit.php?post_type=shop_order&orderable_live_view', '', 1 );
     201        add_submenu_page( 'orderable', __( 'Live Order View', 'orderable' ), __( 'Live Order View', 'orderable' ), 'manage_shop_order_terms', 'edit.php?post_type=shop_order&orderable_live_view', '', 1 );
    198202    }
    199203
     
    202206     */
    203207    public static function create_order_manager_role() {
    204         // Capabilities for order manager role. 
     208        // Capabilities for order manager role.
    205209        $capabilities = array(
     210            'edit_posts'                   => true,
    206211            'view_admin_dashboard'         => true,
    207212            'read'                         => true,
     
    225230        );
    226231
    227         if ( ! get_role('order_manager') ) {
    228             add_role( __('order_manager', 'orderable'), __('Order Manager', 'orderable'), $capabilities );
     232        $role         = get_role( 'order_manager' );
     233        $removed_role = false;
     234
     235        // Ensure that we remove the legacy role that does not
     236        // include the new `edit_posts` capability.
     237        if ( $role && ! $role->has_cap( 'edit_posts' ) ) {
     238            remove_role( 'order_manager' );
     239            $removed_role = true;
     240        }
     241
     242        if ( ! $role || $removed_role ) {
     243            add_role( __( 'order_manager', 'orderable' ), __( 'Order Manager', 'orderable' ), $capabilities );
     244        }
     245    }
     246
     247    /**
     248     * Restrict access to parts of the admin dashboard that
     249     * the `edit_posts` capability makes available.
     250     *
     251     * @return void
     252     */
     253    public static function restrict_order_manager_role_access() {
     254        global $pagenow, $current_screen;
     255
     256        $userdata = get_userdata( get_current_user_id() );
     257
     258        if ( ! in_array( 'order_manager', $userdata->roles, true ) ) {
     259            return;
     260        }
     261
     262        // Remove access to menu pages made visible by the `edit_posts` cap.
     263        remove_menu_page( 'edit.php' );
     264        remove_menu_page( 'edit-comments.php' );
     265
     266        // Redirect back to the list of orders if the user tries to directly
     267        // access Add New, All Posts or Comments menu pages.
     268        if (
     269            ( 'post-new.php' === $pagenow && 'shop_order' !== $current_screen->id ) ||
     270            'edit-post' === $current_screen->id ||
     271            'edit-comments' === $current_screen->id
     272            ) {
     273            wp_safe_redirect( admin_url( '/edit.php?post_type=shop_order' ) );
     274            exit;
    229275        }
    230276    }
  • orderable/trunk/inc/modules/timed-products/class-timed-products.php

    r2666071 r2709284  
    4040     */
    4141    public static function timed_products_page() {
    42         ?>
    43         <div class="wrap">
    44             <h1 class="wp-heading-inline"><?php _e( 'Timed Products', 'orderable' ); ?></h1>
    45             <div>
    46                 <?php echo Orderable_Helpers::get_pro_button(); ?>
    47             </div>
    48         </div>
    49         <?php
     42        Orderable_Settings::upgrade_page_content( 'timed-products' );
    5043    }
    5144}
  • orderable/trunk/inc/modules/timings/class-timings-order.php

    r2549156 r2709284  
    4040        wp_enqueue_script( 'daterangepicker', ORDERABLE_ASSETS_URL . 'vendor/daterangepicker/daterangepicker.js', array( 'jquery', 'momentjs' ), ORDERABLE_VERSION, true );
    4141        wp_enqueue_style( 'daterangepicker', ORDERABLE_ASSETS_URL . 'vendor/daterangepicker/daterangepicker.css', array(), ORDERABLE_VERSION );
     42
     43        wp_localize_script(
     44            'daterangepicker',
     45            'orderable_timings_daterangepicker',
     46            array(
     47                'today'        => esc_html__( 'Today', 'orderable' ),
     48                'tomorrow'     => esc_html__( 'Tomorrow', 'orderable' ),
     49                'next_7_days'  => esc_html__( 'Next 7 Days', 'orderable' ),
     50                'next_30_days' => esc_html__( 'Next 30 Days', 'orderable' ),
     51                'custom_range' => esc_html__( 'Custom Range', 'orderable' ),
     52                'clear'        => esc_html__( 'Clear', 'orderable' ),
     53                'apply'        => esc_html__( 'Apply', 'orderable' ),
     54            )
     55        );
    4256    }
    4357
     
    6478                 */
    6579                init: function() {
     80                    var ranges = {};
     81                    ranges[orderable_timings_daterangepicker.today] = [ moment(), moment() ];
     82                    ranges[orderable_timings_daterangepicker.tomorrow] = [ moment().add( 1, 'days' ), moment().add( 1, 'days' ) ];
     83                    ranges[orderable_timings_daterangepicker.next_7_days] = [ moment(), moment().add( 6, 'days' ) ];
     84                    ranges[orderable_timings_daterangepicker.next_30_days] = [ moment(), moment().add( 29, 'days' ) ];
     85
    6686                    jQuery( 'input[name="orderable_due_date"]' ).daterangepicker( {
    6787                        opens: 'left',
     
    7090                        locale: {
    7191                            format: 'YYYY/MM/DD',
    72                             cancelLabel: 'Clear'
     92                            cancelLabel: orderable_timings_daterangepicker.clear,
     93                            applyLabel: orderable_timings_daterangepicker.apply,
     94                            daysOfWeek: [
     95                                '<?php esc_html_e( 'Su', 'orderable' ); ?>',
     96                                '<?php esc_html_e( 'Mo', 'orderable' ); ?>',
     97                                '<?php esc_html_e( 'Tu', 'orderable' ); ?>',
     98                                '<?php esc_html_e( 'We', 'orderable' ); ?>',
     99                                '<?php esc_html_e( 'Th', 'orderable' ); ?>',
     100                                '<?php esc_html_e( 'Fr', 'orderable' ); ?>',
     101                                '<?php esc_html_e( 'Sa', 'orderable' ); ?>',
     102                            ],
    73103                        },
    74                         ranges: {
    75                             'Today': [ moment(), moment() ],
    76                             'Tomorrow': [ moment().add( 1, 'days' ), moment().add( 1, 'days' ) ],
    77                             'Next 7 Days': [ moment(), moment().add( 6, 'days' ) ],
    78                             'Next 30 Days': [ moment(), moment().add( 29, 'days' ) ]
    79                         }
     104                        ranges: ranges,
    80105                    } );
    81106                },
     
    280305        $due_date = self::get_filtered_due_date();
    281306        ?>
    282         <input type="text" name="orderable_due_date" value="<?php echo esc_attr( $due_date['formatted'] ); ?>" placeholder="<?php esc_attr_e( 'Filter by due date', '' ); ?>" style="min-width: 195px;" />
     307        <input type="text" name="orderable_due_date" value="<?php echo esc_attr( $due_date['formatted'] ); ?>" placeholder="<?php esc_attr_e( 'Filter by due date', 'orderable' ); ?>" style="min-width: 195px;" />
    283308        <?php
    284309    }
  • orderable/trunk/languages/orderable.pot

    r2641784 r2709284  
    1 # Copyright (C) 2021 orderable
     1# Copyright (C) 2022 orderable
    22# This file is distributed under the same license as the orderable package.
    33msgid ""
     
    1414"Plural-Forms: nplurals=2; plural=(n != 1);\n"
    1515
    16 #: orderable.php:105
     16#: orderable.php:108
    1717msgid "Orderable requires WooCommerce to be installed and activated."
    1818msgstr ""
    1919
    20 #: orderable.php:118
     20#: orderable.php:121
    2121msgid "Orderable Pro needs to be at least v%s for compatibility. Please update the Orderable Pro plugin."
    2222msgstr ""
    2323
    24 #: orderable.php:119
     24#: orderable.php:122
    2525msgid "Update now"
    2626msgstr ""
     
    3030msgstr ""
    3131
    32 #: inc/class-ajax.php:126
     32#: inc/class-ajax.php:130
    3333msgid "Sorry, there are no delivery or pickup options available."
    3434msgstr ""
    3535
    36 #: inc/class-ajax.php:131
     36#: inc/class-ajax.php:135
    3737msgid "pickup"
    3838msgstr ""
    3939
    40 #: inc/class-ajax.php:131
     40#: inc/class-ajax.php:135
    4141msgid "delivery"
    4242msgstr ""
    4343
    44 #: inc/class-ajax.php:134
     44#: inc/class-ajax.php:138
    4545msgid "Sorry, there are no %s options available. Please try %s instead."
    4646msgstr ""
    4747
    48 #: inc/class-ajax.php:228, inc/class-settings.php:363
     48#: inc/class-ajax.php:232, inc/class-settings.php:380
    4949msgid "Country / State"
    5050msgstr ""
     
    152152msgstr ""
    153153
    154 #: inc/class-products.php:295
     154#: inc/class-products.php:313
    155155msgid "Add"
    156156msgstr ""
    157157
    158 #: inc/class-products.php:301
     158#: inc/class-products.php:318
    159159msgid "Select"
    160160msgstr ""
    161161
    162 #: inc/class-products.php:309
     162#: inc/class-products.php:326
    163163msgid "Out of Stock"
    164164msgstr ""
    165165
    166 #: inc/class-settings.php:80, inc/class-settings.php:97
     166#: inc/class-products.php:657
     167msgid "Description"
     168msgstr ""
     169
     170#: inc/class-settings.php:81, inc/class-settings.php:98
    167171msgid "Settings"
    168172msgstr ""
    169173
    170 #: inc/class-settings.php:96
     174#: inc/class-settings.php:97
    171175msgid "Orderable Settings"
    172176msgstr ""
    173177
    174 #: inc/class-settings.php:137
     178#: inc/class-settings.php:138
    175179msgid "Dashboard"
    176180msgstr ""
    177181
    178 #: inc/class-settings.php:142
     182#: inc/class-settings.php:143
    179183msgid "Style"
    180184msgstr ""
    181185
    182 #: inc/class-settings.php:150
     186#: inc/class-settings.php:151
     187msgid "Getting Started"
     188msgstr ""
     189
     190#: inc/class-settings.php:152
     191msgid "Below you will find a playlist of useful \"getting started\" videos for Orderable. If you need any help getting things set up, please <a href=\"%s\" target=\"_blank\">reach out to our support team</a>."
     192msgstr ""
     193
     194#: inc/class-settings.php:167
    183195msgid "General"
    184196msgstr ""
    185197
    186 #: inc/class-settings.php:156
     198#: inc/class-settings.php:173
    187199msgid "Brand Color"
    188200msgstr ""
    189201
    190 #: inc/class-settings.php:157
     202#: inc/class-settings.php:174
    191203msgid "Select an accent color to be used for buttons and other elements."
    192204msgstr ""
    193205
    194 #: inc/class-settings.php:163
     206#: inc/class-settings.php:180
    195207msgid "Button Style"
    196208msgstr ""
    197209
    198 #: inc/class-settings.php:164
     210#: inc/class-settings.php:181
    199211msgid "Choose a button style which suits your theme."
    200212msgstr ""
    201213
    202 #: inc/class-settings.php:168
     214#: inc/class-settings.php:185
    203215msgid "Rounded"
    204216msgstr ""
    205217
    206 #: inc/class-settings.php:169
     218#: inc/class-settings.php:186
    207219msgid "Square"
    208220msgstr ""
    209221
    210 #: inc/class-settings.php:178
     222#: inc/class-settings.php:195
    211223msgid "Product Cards"
    212224msgstr ""
    213225
    214 #: inc/class-settings.php:184
     226#: inc/class-settings.php:201
    215227msgid "Product Title Size (px)"
    216228msgstr ""
    217229
    218 #: inc/class-settings.php:185
     230#: inc/class-settings.php:202
    219231msgid "Set the product title font size in pixels."
    220232msgstr ""
    221233
    222 #: inc/class-settings.php:191
     234#: inc/class-settings.php:208
    223235msgid "Product Price Size (px)"
    224236msgstr ""
    225237
    226 #: inc/class-settings.php:192
     238#: inc/class-settings.php:209
    227239msgid "Set the product price font size in pixels."
    228240msgstr ""
    229241
    230 #: inc/class-settings.php:323
     242#: inc/class-settings.php:340
    231243msgid "Installing..."
    232244msgstr ""
    233245
    234 #: inc/class-settings.php:325
     246#: inc/class-settings.php:342
    235247msgid "WooCommerce"
    236248msgstr ""
    237249
    238 #: inc/class-settings.php:338
     250#: inc/class-settings.php:355
    239251msgid "Business Name"
    240252msgstr ""
    241253
    242 #: inc/class-settings.php:345
     254#: inc/class-settings.php:362
    243255msgid "Address line 1"
    244256msgstr ""
    245257
    246 #: inc/class-settings.php:351
     258#: inc/class-settings.php:368
    247259msgid "Address line 2"
    248260msgstr ""
    249261
    250 #: inc/class-settings.php:357
     262#: inc/class-settings.php:374
    251263msgid "City"
    252264msgstr ""
    253265
    254 #: inc/class-settings.php:370
     266#: inc/class-settings.php:387
    255267msgid "Postcode / ZIP"
    256268msgstr ""
    257269
    258 #: inc/class-settings.php:376
     270#: inc/class-settings.php:393
    259271msgid "Business Email"
    260272msgstr ""
    261273
    262 #: inc/class-settings.php:384
     274#: inc/class-settings.php:401
    263275msgid "Please keep me up to date via email on new Orderable training and features"
    264276msgstr ""
    265277
    266 #: inc/class-settings.php:397
     278#: inc/class-settings.php:414
    267279msgid "Which services do you offer?"
    268280msgstr ""
    269281
    270 #: inc/class-settings.php:401, inc/modules/services/class-services-order.php:34, inc/modules/services/class-services.php:192, inc/modules/timings/class-timings-settings.php:135, inc/modules/timings/class-timings-settings.php:287, inc/modules/timings/class-timings-settings.php:454
     282#: inc/class-settings.php:418, inc/modules/services/class-services-order.php:34, inc/modules/services/class-services.php:192, inc/modules/timings/class-timings-settings.php:135, inc/modules/timings/class-timings-settings.php:286, inc/modules/timings/class-timings-settings.php:453
    271283msgid "Delivery"
    272284msgstr ""
    273285
    274 #: inc/class-settings.php:402, inc/modules/services/class-services-order.php:35, inc/modules/services/class-services.php:191, inc/modules/timings/class-timings-settings.php:136, inc/modules/timings/class-timings-settings.php:292, inc/modules/timings/class-timings-settings.php:460
     286#: inc/class-settings.php:419, inc/modules/services/class-services-order.php:35, inc/modules/services/class-services.php:191, inc/modules/timings/class-timings-settings.php:136, inc/modules/timings/class-timings-settings.php:291, inc/modules/timings/class-timings-settings.php:459
    275287msgid "Pickup"
    276288msgstr ""
    277289
    278 #: inc/class-settings.php:407
     290#: inc/class-settings.php:424
    279291msgid "Which days of the week are you open?"
    280292msgstr ""
    281293
    282 #: inc/class-settings.php:411, inc/modules/timings/class-timings.php:59
     294#: inc/class-settings.php:428, inc/modules/timings/class-timings.php:59
    283295msgid "Monday"
    284296msgstr ""
    285297
    286 #: inc/class-settings.php:412, inc/modules/timings/class-timings.php:60
     298#: inc/class-settings.php:429, inc/modules/timings/class-timings.php:60
    287299msgid "Tuesday"
    288300msgstr ""
    289301
    290 #: inc/class-settings.php:413, inc/modules/timings/class-timings.php:61
     302#: inc/class-settings.php:430, inc/modules/timings/class-timings.php:61
    291303msgid "Wednesday"
    292304msgstr ""
    293305
    294 #: inc/class-settings.php:414, inc/modules/timings/class-timings.php:62
     306#: inc/class-settings.php:431, inc/modules/timings/class-timings.php:62
    295307msgid "Thursday"
    296308msgstr ""
    297309
    298 #: inc/class-settings.php:415, inc/modules/timings/class-timings.php:63
     310#: inc/class-settings.php:432, inc/modules/timings/class-timings.php:63
    299311msgid "Friday"
    300312msgstr ""
    301313
    302 #: inc/class-settings.php:416, inc/modules/timings/class-timings.php:64
     314#: inc/class-settings.php:433, inc/modules/timings/class-timings.php:64
    303315msgid "Saturday"
    304316msgstr ""
    305317
    306 #: inc/class-settings.php:417, inc/modules/timings/class-timings.php:58
     318#: inc/class-settings.php:434, inc/modules/timings/class-timings.php:58
    307319msgid "Sunday"
    308320msgstr ""
    309321
    310 #: inc/class-settings.php:422
     322#: inc/class-settings.php:439
    311323msgid "What are your normal opening hours?"
    312324msgstr ""
    313325
    314 #: inc/class-settings.php:549
     326#: inc/class-settings.php:570
    315327msgid "Local"
    316328msgstr ""
    317329
    318 #: inc/class-settings.php:664
     330#: inc/class-settings.php:685
    319331msgid "From:"
    320332msgstr ""
    321333
    322 #: inc/class-settings.php:677
     334#: inc/class-settings.php:698
    323335msgid "To:"
    324336msgstr ""
    325337
    326 #: inc/class-settings.php:700, inc/class-settings.php:720
     338#: inc/class-settings.php:721, inc/class-settings.php:741
    327339msgid "Visibility"
    328340msgstr ""
    329341
    330 #: inc/class-settings.php:702, inc/class-settings.php:724
     342#: inc/class-settings.php:723, inc/class-settings.php:745
    331343msgid "Default"
    332344msgstr ""
    333345
    334 #: inc/class-settings.php:703, inc/class-settings.php:725
     346#: inc/class-settings.php:724, inc/class-settings.php:746
    335347msgid "Hidden"
    336348msgstr ""
    337349
    338 #: inc/class-settings.php:705, inc/class-settings.php:727
     350#: inc/class-settings.php:726, inc/class-settings.php:748
    339351msgid "Choose whether to hide (on the frontend) this category archive and all single product pages within this category. Hiding them is recommended if using this category in the Orderable menu shortcode."
    340352msgstr ""
    341353
    342 #: inc/class-settings.php:858
     354#: inc/class-settings.php:882
    343355msgid "Get Help"
    344356msgstr ""
    345357
    346 #: inc/class-settings.php:859
     358#: inc/class-settings.php:886
    347359msgid "Request Feature"
    348360msgstr ""
    349361
    350 #: inc/class-settings.php:860
     362#: inc/class-settings.php:890
    351363msgid "View Docs"
    352364msgstr ""
    353365
    354 #: inc/class-settings.php:884
     366#: inc/class-settings.php:914
    355367msgid "Set Up Your Store"
    356368msgstr ""
    357369
    358 #: inc/class-settings.php:886
     370#: inc/class-settings.php:916
    359371msgid "Use the Store Settings tab to configure your store's opening hours, delivery/pickup schedule, and holidays."
    360372msgstr ""
    361373
    362 #: inc/class-settings.php:900, inc/modules/layouts/class-layouts.php:98
    363 msgid "Layout Builder"
    364 msgstr ""
    365 
    366 #: inc/class-settings.php:902
     374#: inc/class-settings.php:930, inc/modules/layouts/class-layouts.php:93, inc/modules/layouts/class-layouts.php:98
     375msgid "Product Layouts"
     376msgstr ""
     377
     378#: inc/class-settings.php:932
    367379msgid "Use the Layout Builder to create a product list based on category. Embed your layout using the shortcode or block."
    368380msgstr ""
    369381
    370 #: inc/class-settings.php:916, inc/modules/live-view/class-live-view.php:197, inc/modules/live-view/class-live-view.php:197
     382#: inc/class-settings.php:946, inc/modules/live-view/class-live-view.php:201, inc/modules/live-view/class-live-view.php:201
    371383msgid "Live Order View"
    372384msgstr ""
    373385
    374 #: inc/class-settings.php:918
     386#: inc/class-settings.php:948
    375387msgid "Use the Live Order View to get notified and manage orders in real time."
    376388msgstr ""
    377389
    378 #: inc/class-settings.php:931, inc/modules/addons/class-addons.php:35, inc/modules/addons/class-addons.php:44
     390#: inc/class-settings.php:961, inc/class-settings.php:1127, inc/modules/addons/class-addons.php:35
    379391msgid "Product Addons"
    380392msgstr ""
    381393
    382 #: inc/class-settings.php:933
     394#: inc/class-settings.php:963
    383395msgid "Create product options which can be conditionally applied to the products in your store."
    384396msgstr ""
    385397
    386 #: inc/class-settings.php:977, inc/modules/drawer/templates/drawer.php:12
     398#: inc/class-settings.php:1007, inc/modules/drawer/templates/drawer.php:12
    387399msgid "Close"
    388400msgstr ""
    389401
    390 #: inc/class-settings.php:978
     402#: inc/class-settings.php:1008
    391403msgid "Next"
    392404msgstr ""
    393405
    394 #: inc/class-settings.php:979
     406#: inc/class-settings.php:1009
    395407msgid "Skip"
     408msgstr ""
     409
     410#: inc/class-settings.php:1124
     411msgid "Upgrade to Orderable Pro"
     412msgstr ""
     413
     414#: inc/class-settings.php:1124
     415msgid "to access this feature, plus many more revenue boosting features."
     416msgstr ""
     417
     418#: inc/class-settings.php:1127
     419msgid "Add options to your products like toppings, allergy information, size, etc."
     420msgstr ""
     421
     422#: inc/class-settings.php:1128
     423msgid "Cart Bumps"
     424msgstr ""
     425
     426#: inc/class-settings.php:1128
     427msgid "Increase sales by offering related products right in the side cart."
     428msgstr ""
     429
     430#: inc/class-settings.php:1129, inc/modules/timings/class-timings-settings.php:380
     431msgid "Time Slots"
     432msgstr ""
     433
     434#: inc/class-settings.php:1129
     435msgid "Improve customer satisfaction by offering specific time slots for their order."
     436msgstr ""
     437
     438#: inc/class-settings.php:1130
     439msgid "Custom Checkout"
     440msgstr ""
     441
     442#: inc/class-settings.php:1130
     443msgid "Use our custom checkout experience to drive conversions at the most important step of your online store."
     444msgstr ""
     445
     446#: inc/class-settings.php:1131, inc/class-settings.php:1134
     447msgid "Checkout Tipping"
     448msgstr ""
     449
     450#: inc/class-settings.php:1131, inc/class-settings.php:1134
     451msgid "Make it easy for your customers to include a tip with their order."
     452msgstr ""
     453
     454#: inc/class-settings.php:1132, inc/modules/timed-products/class-timed-products.php:35, inc/modules/timed-products/class-timed-products.php:35
     455msgid "Timed Products"
     456msgstr ""
     457
     458#: inc/class-settings.php:1132
     459msgid "Show/hide products in your store based on time/date conditions."
     460msgstr ""
     461
     462#: inc/class-settings.php:1133
     463msgid "Custom Order Statuses"
     464msgstr ""
     465
     466#: inc/class-settings.php:1133
     467msgid "Add and modify order statuses to improve the backend flow of your store. Create custom notifications for each status."
     468msgstr ""
     469
     470#: inc/class-settings.php:1137
     471msgid "Upgrade Now"
    396472msgstr ""
    397473
     
    412488msgstr ""
    413489
    414 #: inc/modules/addons/class-addons.php:35
     490#: inc/modules/addons/class-addons.php:35, inc/modules/custom-order-status/class-custom-order-status.php:35, inc/modules/timed-products/class-timed-products.php:35
    415491msgid "Pro"
    416492msgstr ""
    417493
    418 #: inc/modules/drawer/class-drawer-settings.php:58
     494#: inc/modules/checkout/class-checkout.php:38
     495msgid "Checkout Settings"
     496msgstr ""
     497
     498#: inc/modules/checkout/class-checkout.php:44
     499msgid "Enable Custom Checkout"
     500msgstr ""
     501
     502#: inc/modules/checkout/class-checkout.php:45
     503msgid "When enabled, your theme's checkout will be replaced by Orderable's optimized checkout experience."
     504msgstr ""
     505
     506#: inc/modules/custom-order-status/class-custom-order-status.php:35, inc/modules/custom-order-status/class-custom-order-status.php:35
     507msgid "Order Statuses"
     508msgstr ""
     509
     510#. translators: %s Product title.
     511#: inc/modules/drawer/class-drawer-ajax.php:49
     512msgid "You can only have 1 %s in your cart."
     513msgstr ""
     514
     515#: inc/modules/drawer/class-drawer-settings.php:61
     516msgid "Side Drawer"
     517msgstr ""
     518
     519#: inc/modules/drawer/class-drawer-settings.php:68
    419520msgid "Mini Cart Settings"
    420521msgstr ""
    421522
    422 #: inc/modules/drawer/class-drawer-settings.php:64
     523#: inc/modules/drawer/class-drawer-settings.php:74
    423524msgid "Cart Icon Position"
    424525msgstr ""
    425526
    426 #: inc/modules/drawer/class-drawer-settings.php:65
     527#: inc/modules/drawer/class-drawer-settings.php:75
    427528msgid "Set the position of the mini cart icon when the cart is not empty. Choose \"None\" to disable it."
    428529msgstr ""
    429530
    430 #: inc/modules/drawer/class-drawer-settings.php:68
     531#: inc/modules/drawer/class-drawer-settings.php:78, inc/modules/drawer/class-drawer-settings.php:121
    431532msgid "None"
    432533msgstr ""
    433534
    434 #: inc/modules/drawer/class-drawer-settings.php:69
     535#: inc/modules/drawer/class-drawer-settings.php:79
    435536msgid "Bottom Right"
    436537msgstr ""
    437538
    438 #: inc/modules/drawer/class-drawer-settings.php:70
     539#: inc/modules/drawer/class-drawer-settings.php:80
    439540msgid "Bottom Left"
    440541msgstr ""
    441542
    442 #: inc/modules/drawer/class-drawer-settings.php:71
     543#: inc/modules/drawer/class-drawer-settings.php:81
    443544msgid "Top Left"
    444545msgstr ""
    445546
    446 #: inc/modules/drawer/class-drawer-settings.php:72
     547#: inc/modules/drawer/class-drawer-settings.php:82
    447548msgid "Top Right"
    448549msgstr ""
    449550
    450 #: inc/modules/drawer/class-drawer-settings.php:78
     551#: inc/modules/drawer/class-drawer-settings.php:88
    451552msgid "Fine-Tune Position"
    452553msgstr ""
    453554
    454 #: inc/modules/drawer/class-drawer-settings.php:79
     555#: inc/modules/drawer/class-drawer-settings.php:89
    455556msgid "Fine-tune the position of the mini cart icon in pixels. These settings will push the cart icon away from the respective side."
    456557msgstr ""
    457558
     559#: inc/modules/drawer/class-drawer-settings.php:100
     560msgid "Quickview Settings"
     561msgstr ""
     562
     563#: inc/modules/drawer/class-drawer-settings.php:101
     564msgid "Settings for when products are displayed in the Orderable drawer."
     565msgstr ""
     566
     567#: inc/modules/drawer/class-drawer-settings.php:106
     568msgid "Accordion Position"
     569msgstr ""
     570
     571#: inc/modules/drawer/class-drawer-settings.php:107
     572msgid "Where should the product information accordion be displayed in the side drawer."
     573msgstr ""
     574
     575#: inc/modules/drawer/class-drawer-settings.php:110
     576msgid "Before Product Options"
     577msgstr ""
     578
     579#: inc/modules/drawer/class-drawer-settings.php:111
     580msgid "After Product Options"
     581msgstr ""
     582
     583#: inc/modules/drawer/class-drawer-settings.php:117
     584msgid "Product Description"
     585msgstr ""
     586
    458587#: inc/modules/drawer/class-drawer-settings.php:118
     588msgid "Choose which product description to display in the side drawer."
     589msgstr ""
     590
     591#: inc/modules/drawer/class-drawer-settings.php:122
     592msgid "Short Description"
     593msgstr ""
     594
     595#: inc/modules/drawer/class-drawer-settings.php:123
     596msgid "Full Description"
     597msgstr ""
     598
     599#: inc/modules/drawer/class-drawer-settings.php:161
    459600msgid "Top (px)"
    460601msgstr ""
    461602
    462 #: inc/modules/drawer/class-drawer-settings.php:124
     603#: inc/modules/drawer/class-drawer-settings.php:167
    463604msgid "Bottom (px)"
    464605msgstr ""
    465606
    466 #: inc/modules/drawer/class-drawer-settings.php:130
     607#: inc/modules/drawer/class-drawer-settings.php:173
    467608msgid "Right (px)"
    468609msgstr ""
    469610
    470 #: inc/modules/drawer/class-drawer-settings.php:136
     611#: inc/modules/drawer/class-drawer-settings.php:179
    471612msgid "Left (px)"
    472 msgstr ""
    473 
    474 #: inc/modules/layouts/class-layouts.php:93
    475 msgid "Product Layouts"
    476613msgstr ""
    477614
     
    500637msgstr ""
    501638
    502 #: inc/modules/layouts/class-layouts.php:489
    503 msgid "What is the Orderable Layout Builder?"
    504 msgstr ""
    505 
    506 #: inc/modules/layouts/class-layouts.php:490
     639#: inc/modules/layouts/class-layouts.php:493
     640msgid "What are Product Layouts?"
     641msgstr ""
     642
     643#: inc/modules/layouts/class-layouts.php:494
    507644msgid "This is where you can create product layouts and customize their settings. Save your layouts here and reuse them later using the block editor, shortcode (great for page builders), or PHP snippet."
    508645msgstr ""
    509646
    510 #: inc/modules/live-view/class-live-view.php:159
     647#: inc/modules/live-view/class-live-view.php:162
    511648msgid "Enable Live View"
    512649msgstr ""
    513650
    514 #: inc/modules/live-view/class-live-view.php:164
     651#: inc/modules/live-view/class-live-view.php:167
    515652msgid "Exit Live View"
    516653msgstr ""
    517654
    518 #: inc/modules/live-view/class-live-view.php:165
     655#: inc/modules/live-view/class-live-view.php:168
    519656msgid "Mute"
    520657msgstr ""
    521658
    522 #: inc/modules/live-view/class-live-view.php:165
     659#: inc/modules/live-view/class-live-view.php:168
    523660msgid "Unmute"
    524661msgstr ""
    525662
    526 #: inc/modules/live-view/class-live-view.php:228
     663#: inc/modules/live-view/class-live-view.php:243
    527664msgid "order_manager"
    528665msgstr ""
    529666
    530 #: inc/modules/live-view/class-live-view.php:228
     667#: inc/modules/live-view/class-live-view.php:243
    531668msgid "Order Manager"
    532669msgstr ""
     
    582719msgstr ""
    583720
    584 #: inc/modules/timings/class-timings-order.php:160, inc/modules/timings/class-timings-order.php:198
     721#: inc/modules/timings/class-timings-order.php:47, inc/modules/timings/class-timings.php:299
     722msgid "Today"
     723msgstr ""
     724
     725#: inc/modules/timings/class-timings-order.php:48, inc/modules/timings/class-timings.php:301
     726msgid "Tomorrow"
     727msgstr ""
     728
     729#: inc/modules/timings/class-timings-order.php:49
     730msgid "Next 7 Days"
     731msgstr ""
     732
     733#: inc/modules/timings/class-timings-order.php:50
     734msgid "Next 30 Days"
     735msgstr ""
     736
     737#: inc/modules/timings/class-timings-order.php:51
     738msgid "Custom Range"
     739msgstr ""
     740
     741#: inc/modules/timings/class-timings-order.php:52
     742msgid "Clear"
     743msgstr ""
     744
     745#: inc/modules/timings/class-timings-order.php:53
     746msgid "Apply"
     747msgstr ""
     748
     749#: inc/modules/timings/class-timings-order.php:95
     750msgid "Su"
     751msgstr ""
     752
     753#: inc/modules/timings/class-timings-order.php:96
     754msgid "Mo"
     755msgstr ""
     756
     757#: inc/modules/timings/class-timings-order.php:97
     758msgid "Tu"
     759msgstr ""
     760
     761#: inc/modules/timings/class-timings-order.php:98
     762msgid "We"
     763msgstr ""
     764
     765#: inc/modules/timings/class-timings-order.php:99
     766msgid "Th"
     767msgstr ""
     768
     769#: inc/modules/timings/class-timings-order.php:100
     770msgid "Fr"
     771msgstr ""
     772
     773#: inc/modules/timings/class-timings-order.php:101
     774msgid "Sa"
     775msgstr ""
     776
     777#: inc/modules/timings/class-timings-order.php:185, inc/modules/timings/class-timings-order.php:223
    585778msgid "Date"
    586779msgstr ""
    587780
    588 #: inc/modules/timings/class-timings-order.php:164, inc/modules/timings/class-timings-order.php:202
     781#: inc/modules/timings/class-timings-order.php:189, inc/modules/timings/class-timings-order.php:227
    589782msgid "Time"
    590783msgstr ""
    591784
    592 #: inc/modules/timings/class-timings-order.php:168
     785#: inc/modules/timings/class-timings-order.php:193
    593786msgid "Timestamp"
    594787msgstr ""
    595788
    596 #: inc/modules/timings/class-timings-order.php:181
     789#: inc/modules/timings/class-timings-order.php:206
    597790msgid "Due Date/Time"
     791msgstr ""
     792
     793#: inc/modules/timings/class-timings-order.php:307
     794msgid "Filter by due date"
    598795msgstr ""
    599796
     
    618815msgstr ""
    619816
    620 #: inc/modules/timings/class-timings-settings.php:130, inc/modules/timings/class-timings-settings.php:448
     817#: inc/modules/timings/class-timings-settings.php:130, inc/modules/timings/class-timings-settings.php:447
    621818msgid "Services"
    622819msgstr ""
     
    646843msgstr ""
    647844
    648 #: inc/modules/timings/class-timings-settings.php:155
    649 msgid "Allow \"ASAP\" as an option when choosing delivery time"
     845#: inc/modules/timings/class-timings-settings.php:159
     846msgid "Lead Time"
    650847msgstr ""
    651848
    652849#: inc/modules/timings/class-timings-settings.php:160
    653 msgid "Lead Time"
    654 msgstr ""
    655 
    656 #: inc/modules/timings/class-timings-settings.php:161
    657850msgid "How many days do you need to prepare the order? Leave blank or \"0\" for same day."
    658851msgstr ""
    659852
     853#: inc/modules/timings/class-timings-settings.php:166
     854msgid "Preorder Days"
     855msgstr ""
     856
    660857#: inc/modules/timings/class-timings-settings.php:167
    661 msgid "Preorder Days"
    662 msgstr ""
    663 
    664 #: inc/modules/timings/class-timings-settings.php:168
    665858msgid "For how many days after the lead time will you accept orders?"
    666859msgstr ""
    667860
     861#: inc/modules/timings/class-timings-settings.php:173
     862msgid "Holidays"
     863msgstr ""
     864
    668865#: inc/modules/timings/class-timings-settings.php:174
    669 msgid "Holidays"
    670 msgstr ""
    671 
    672 #: inc/modules/timings/class-timings-settings.php:175
    673866msgid "Days when your store is closed."
    674867msgstr ""
    675868
    676 #: inc/modules/timings/class-timings-settings.php:221, inc/modules/timings/class-timings-settings.php:243
     869#: inc/modules/timings/class-timings-settings.php:220, inc/modules/timings/class-timings-settings.php:242
    677870msgid "Open Hours (From)"
    678871msgstr ""
    679872
    680 #: inc/modules/timings/class-timings-settings.php:222, inc/modules/timings/class-timings-settings.php:247
     873#: inc/modules/timings/class-timings-settings.php:221, inc/modules/timings/class-timings-settings.php:246
    681874msgid "Open Hours (To)"
    682875msgstr ""
    683876
    684 #: inc/modules/timings/class-timings-settings.php:223, inc/modules/timings/class-timings-settings.php:540
     877#: inc/modules/timings/class-timings-settings.php:222, inc/modules/timings/class-timings-settings.php:539
    685878msgid "Max Orders (Day)"
    686879msgstr ""
    687880
    688 #: inc/modules/timings/class-timings-settings.php:280
     881#: inc/modules/timings/class-timings-settings.php:279
    689882msgid "Please select services available for this store."
    690883msgstr ""
    691884
    692 #: inc/modules/timings/class-timings-settings.php:297, inc/modules/timings/class-timings-settings.php:302
     885#: inc/modules/timings/class-timings-settings.php:296, inc/modules/timings/class-timings-settings.php:301
    693886msgid "Add service hours"
    694887msgstr ""
    695888
    696 #: inc/modules/timings/class-timings-settings.php:318
     889#: inc/modules/timings/class-timings-settings.php:317
    697890msgid "Same as delivery service hours"
    698891msgstr ""
    699892
    700 #: inc/modules/timings/class-timings-settings.php:355
     893#: inc/modules/timings/class-timings-settings.php:354
    701894msgid "Days"
    702895msgstr ""
    703896
    704 #: inc/modules/timings/class-timings-settings.php:357
     897#: inc/modules/timings/class-timings-settings.php:356
    705898msgid "Select \"Open Hours\" first"
    706899msgstr ""
    707900
    708 #: inc/modules/timings/class-timings-settings.php:368
     901#: inc/modules/timings/class-timings-settings.php:367
    709902msgid "Period"
    710903msgstr ""
    711904
    712 #: inc/modules/timings/class-timings-settings.php:380, inc/modules/timings/class-timings.php:339
     905#: inc/modules/timings/class-timings-settings.php:379, inc/modules/timings/class-timings.php:379
    713906msgid "All Day"
    714907msgstr ""
    715908
    716 #: inc/modules/timings/class-timings-settings.php:381
    717 msgid "Time Slots"
    718 msgstr ""
    719 
    720 #: inc/modules/timings/class-timings-settings.php:420
     909#: inc/modules/timings/class-timings-settings.php:419
    721910msgid "Add holiday"
    722911msgstr ""
    723912
    724 #: inc/modules/timings/class-timings-settings.php:436
     913#: inc/modules/timings/class-timings-settings.php:435
    725914msgid "From"
    726915msgstr ""
    727916
    728 #: inc/modules/timings/class-timings-settings.php:442
     917#: inc/modules/timings/class-timings-settings.php:441
    729918msgid "To"
    730919msgstr ""
    731920
    732 #: inc/modules/timings/class-timings-settings.php:467
     921#: inc/modules/timings/class-timings-settings.php:466
    733922msgid "Repeat Yearly?"
    734923msgstr ""
    735924
    736 #: inc/modules/timings/class-timings-settings.php:561
     925#: inc/modules/timings/class-timings-settings.php:560
    737926msgid "Hours"
    738927msgstr ""
    739928
    740 #: inc/modules/timings/class-timings-settings.php:569
     929#: inc/modules/timings/class-timings-settings.php:568
    741930msgid "Frequency (Mins)"
    742931msgstr ""
    743932
    744 #: inc/modules/timings/class-timings-settings.php:574
     933#: inc/modules/timings/class-timings-settings.php:573
    745934msgid "Cutoff (Mins)"
    746935msgstr ""
    747936
    748 #: inc/modules/timings/class-timings-settings.php:579
     937#: inc/modules/timings/class-timings-settings.php:578
    749938msgid "Max Orders (Slot)"
    750939msgstr ""
    751940
    752 #: inc/modules/timings/class-timings-settings.php:639
     941#: inc/modules/timings/class-timings-settings.php:638
    753942msgid "Update Timezone"
    754943msgstr ""
     
    8551044
    8561045#: inc/modules/layouts/templates/admin/layout-settings-metabox.php:94
    857 msgid "When enabled, the whole product card is clickable, instead of just the button."
    858 msgstr ""
     1046msgid "Choose what happens when you click the product card."
     1047msgstr ""
     1048
     1049#: inc/modules/layouts/templates/admin/layout-settings-metabox.php:104
     1050msgid "Nothing"
     1051msgstr ""
     1052
     1053#: inc/modules/layouts/templates/admin/layout-settings-metabox.php:105
     1054msgid "Add to Cart"
     1055msgstr ""
     1056
     1057#: inc/modules/layouts/templates/admin/layout-settings-metabox.php:106
     1058msgid "Quick View Product"
     1059msgstr ""
  • orderable/trunk/orderable.php

    r2666071 r2709284  
    44 * Author URI: https://orderable.com
    55 * Description: Take local online ordering to a whole new level with Orderable.
    6  * Version: 1.2.0
     6 * Version: 1.3.0
    77 * Author: Orderable
    88 * Text Domain: orderable
    99 * WC requires at least: 5.4.0
    10  * WC tested up to: 6.1.1
     10 * WC tested up to: 6.4.0
    1111 */
    1212
     
    2020     * @var string Plugin version.
    2121     */
    22     public static $version = '1.2.0';
     22    public static $version = '1.3.0';
    2323
    2424    /**
    2525     * @var string Required pro version.
    2626     */
    27     public static $required_pro_version = '1.2.0';
     27    public static $required_pro_version = '1.3.0';
    2828
    2929    /**
  • orderable/trunk/readme.txt

    r2666071 r2709284  
    55Tested up to: 5.9
    66Requires PHP: 5.6
    7 Stable tag: 1.2.0
     7Stable tag: 1.3.0
    88License: GPLv2 or later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
     
    142142
    143143== Changelog ==
     144
     145**v1.3.0** (13 Apr 2022)
     146[new] Option to open quickview when card is clicked
     147[new] Allow users to manually change quantity in the side cart
     148[new] Ability to remove/clear any repeatable settings row
     149[new] Quick view settings under Orderable > Settings > Side Drawer
     150[new] Product information accordion added to quick view
     151[update] Renamed "Layout Builder" menu item to "Product Layouts"
     152[update] Updated brand colour in admin area
     153[update] Remove hidden categories/products from sitemap
     154[update] Optimized tabbed layout navigation on mobile
     155[update] Only modify mini cart in Orderable sidebar
     156[update] Show error on quantity change if the requested quantity is more than available quantity
     157[update] Add translation for date range picker element in Live Order View
     158[fix] Make Weekdays and 'Filter by due date' translatable
     159[fix] Increase/decrease quantity on mini cart when "Ajax add to cart" is disabled
     160[fix] Out of stock visibility in Product Layout
     161[fix] Allow order_manager users to place new orders
    144162
    145163**v1.2.0** (26 Jan 2022)
  • orderable/trunk/templates/product/hero.php

    r2549156 r2709284  
    1717
    1818<div class="orderable-product__hero">
     19    <?php do_action( 'orderable_before_product_hero', $product, $args ); ?>
     20
    1921    <?php echo $product->get_image( 'woocommerce_thumbnail', array(
    2022        'class' => 'orderable-product__image',
    2123    ) ); ?>
     24
     25    <?php do_action( 'orderable_after_product_hero', $product, $args ); ?>
    2226</div>
  • orderable/trunk/templates/product/options.php

    r2626120 r2709284  
    55 * @package Orderable/Templates
    66 *
    7  * @var WC_Product_Variable $product
    8  * @var bool                $orderable_single_product Determines whether it's possible to add to cart (i.e. a single
    9  *      product view).
     7 * @var WC_Product $product                  Product.
     8 * @var bool       $orderable_single_product Determines whether it's possible to add to cart (i.e. a single product view).
     9 * @var array      $args                     Array of args.
    1010 */
    1111
     
    1414global $orderable_single_product;
    1515
    16 $orderable_single_product = true;
    17 $args                     = array( 'images' => true );
    18 ?>
     16$orderable_single_product = true; ?>
    1917
    20 <div class="orderable-product orderable-product--options">
    21     <?php include ORDERABLE_TEMPLATES_PATH . 'product/hero-title.php'; ?>
     18<div class="orderable-product orderable-product--options orderable-product--image-cropped">
     19    <?php include ORDERABLE_TEMPLATES_PATH . 'product/hero.php'; ?>
    2220
    23     <div class="orderable-product__options-wrap orderable-sb-container" data-orderable-scroll-id="product-options">
    24         <?php do_action( 'orderable_side_menu_before_product_options', $product ); ?>
     21    <div class="orderable-sb-container" data-orderable-scroll-id="product">
     22        <?php do_action( 'orderable_side_menu_before_product_title', $product, $args ); ?>
    2523
    26         <?php if ( ! empty( $attributes ) ) { ?>
    27             <table class="orderable-product__options" cellspacing="0" cellpadding="0">
    28                 <?php foreach ( $attributes as $attribute_name => $options ) : ?>
    29                     <tr class="orderable-product__option">
    30                         <th class="orderable-product__option-label">
    31                             <label for="<?php echo esc_attr( sanitize_title( $attribute_name ) ); ?>"><?php echo wc_attribute_label( $attribute_name ); // WPCS: XSS ok. ?></label>
    32                         </th>
    33                         <td class="orderable-product__option-select">
    34                             <?php wc_dropdown_variation_attribute_options(
    35                                 array(
    36                                     'options'          => $options,
    37                                     'attribute'        => $attribute_name,
    38                                     'product'          => $product,
    39                                     'show_option_none' => wc_attribute_label( $attribute_name ),
    40                                     'class'            => 'orderable-input orderable-input--select orderable-input--validate',
    41                                 )
    42                             ); ?>
    43                         </td>
    44                     </tr>
    45                 <?php endforeach; ?>
    46             </table>
    47         <?php } ?>
     24        <h2 class="orderable-product__title"><?php echo wp_kses_post( $product->get_name() ); ?></h2>
    4825
    49         <?php do_action( 'orderable_side_menu_after_product_options', $product ); ?>
     26        <?php do_action( 'orderable_side_menu_before_product_options_wrapper', $product, $args ); ?>
    5027
    51         <div class="orderable-product__messages"></div>
     28        <div class="orderable-product__options-wrap">
     29            <?php do_action( 'orderable_side_menu_before_product_options', $product, $args ); ?>
    5230
    53         <script class="orderable-product__variations" type="application/json">
     31            <?php if ( ! empty( $attributes ) ) { ?>
     32                <table class="orderable-product__options" cellspacing="0" cellpadding="0">
     33                    <?php foreach ( $attributes as $attribute_name => $options ) : ?>
     34                        <tr class="orderable-product__option">
     35                            <th class="orderable-product__option-label">
     36                                <label for="<?php echo esc_attr( sanitize_title( $attribute_name ) ); ?>"><?php echo wc_attribute_label( $attribute_name ); // WPCS: XSS ok. ?></label>
     37                            </th>
     38                            <td class="orderable-product__option-select">
     39                                <?php wc_dropdown_variation_attribute_options(
     40                                    array(
     41                                        'options'          => $options,
     42                                        'attribute'        => $attribute_name,
     43                                        'product'          => $product,
     44                                        'show_option_none' => wc_attribute_label( $attribute_name ),
     45                                        'class'            => 'orderable-input orderable-input--select orderable-input--validate',
     46                                    )
     47                                ); ?>
     48                            </td>
     49                        </tr>
     50                    <?php endforeach; ?>
     51                </table>
     52            <?php } ?>
     53
     54            <?php do_action( 'orderable_side_menu_after_product_options', $product, $args ); ?>
     55
     56            <div class="orderable-product__messages"></div>
     57
     58            <script class="orderable-product__variations" type="application/json">
    5459            <?php echo ! empty( $variations_json ) ? $variations_json : ''; ?>
    5560        </script>
     61        </div>
     62
    5663    </div>
     64
     65    <?php do_action( 'orderable_side_menu_after_product_options_wrapper', $product, $args ); ?>
    5766
    5867    <?php include ORDERABLE_TEMPLATES_PATH . 'product/actions.php'; ?>
  • orderable/trunk/woocommerce/cart/mini-cart.php

    r2637423 r2709284  
    6363                            <span class="orderable-quantity-roller__roller">
    6464                                <button class="orderable-quantity-roller__button orderable-quantity-roller__button--decrease" data-orderable-trigger="decrease-quantity" data-orderable-cart-item-key="<?php echo esc_attr( $cart_item_key ); ?>" data-orderable-product-id="<?php echo esc_attr( $product_id ); ?>" data-orderable-quantity="<?php echo esc_attr( $cart_item['quantity'] ); ?>">-</button>
    65                                 <span class="orderable-quantity-roller__quantity"><?php echo esc_html( $cart_item['quantity'] ); ?></span>
     65                                <span
     66                                    class="orderable-quantity-roller__quantity"
     67                                    contenteditable="true"
     68                                    inputmode="numeric"
     69                                    data-orderable-cart-item-key="<?php echo esc_attr( $cart_item_key ); ?>"
     70                                    data-orderable-product-id="<?php echo esc_attr( $product_id ); ?>"
     71                                >
     72                                    <?php echo esc_html( $cart_item['quantity'] ); ?>
     73                                </span>
    6674                                <button class="orderable-quantity-roller__button orderable-quantity-roller__button--increase" data-orderable-trigger="increase-quantity" data-orderable-cart-item-key="<?php echo esc_attr( $cart_item_key ); ?>" data-orderable-product-id="<?php echo esc_attr( $product_id ); ?>" data-orderable-quantity="<?php echo esc_attr( $cart_item['quantity'] ); ?>">+</button>
    6775                            </span>
Note: See TracChangeset for help on using the changeset viewer.