!function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,e){var a="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!a){if(Array.isArray(t)||(a=o(t))||e&&t&&"number"==typeof t.length){a&&(t=a);var i=0,n=function(){};return{s:n,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,s=!0,l=!1;return{s:function(){a=a.call(t)},n:function(){var t=a.next();return s=t.done,t},e:function(t){l=!0,r=t},f:function(){try{s||null==a.return||a.return()}finally{if(l)throw r}}}}function a(t,e){for(var a=0;at.length)&&(e=t.length);for(var a=0,i=new Array(e);a0&&void 0!==arguments[0]?arguments[0]:{};return function(e,a){if(function(t){return!!t.path&&-1!==t.path.indexOf("woo-variation-swatches")||!!t.url&&-1!==t.url.indexOf("woo-variation-swatches")}(e)&&Object.keys(t).length>0)for(var o=0,r=Object.entries(t);o',this.$element.addClass("wvs-loaded"),this.init(),this.update(),r(document).trigger("woo_variation_swatches_loaded",this)}var s,l,c;return s=t,(l=[{key:"isAjaxVariation",value:function(){return this.is_ajax_variation}},{key:"init",value:function(){this.prepareLabel(),this.prepareItems(),this.setupItems(),this.setupEvents(),this.setUpStockInfo()}},{key:"prepareLabel",value:function(){var t=this;woo_variation_swatches_options.show_variation_label&&this.$element.find(".variations .label").each((function(e,a){r(a).append(t.selected_item_template)}))}},{key:"prepareItems",value:function(){this.$element.find("ul.variable-items-wrapper").each((function(t,e){r(e).parent().addClass("woo-variation-items-wrapper")}))}},{key:"setupItems",value:function(){var t=this;this.$element.find("ul.variable-items-wrapper").each((function(e,a){var i="",n=r(a).parent().prev().find(".woo-selected-variation-item-name"),o=r(a).parent().find("select.woo-variation-raw-select"),s=o.find("option"),l=o.find("option:disabled"),c=o.find("option.enabled.out-of-stock"),u=o.find("option:selected"),d=o.find("option").eq(1),v=[],f=[],h=[];s.each((function(){""!==r(this).val()&&(v.push(r(this).val()),i=0===u.length?d.val():u.val())})),l.each((function(){""!==r(this).val()&&f.push(r(this).val())})),c.each((function(){""!==r(this).val()&&h.push(r(this).val())}));var p=_.difference(v,f);t.setupItem(a,i,p,h,n)}))}},{key:"setupItem",value:function(t,e,a,i,n){var o=this;r(t).find("li.variable-item").each((function(t,s){var l=r(s).attr("data-value"),c=r(s).attr("data-title");r(s).removeClass("selected disabled no-stock").addClass("disabled"),r(s).attr("aria-checked","false"),r(s).attr("tabindex","-1"),r(s).attr("data-wvstooltip-out-of-stock",""),r(s).find("input.variable-item-radio-input:radio").prop("disabled",!0).prop("checked",!1),e.length<1&&woo_variation_swatches_options.show_variation_label&&n.text(""),o.isAjaxVariation()?(r(s).find("input.variable-item-radio-input:radio").prop("disabled",!1),r(s).removeClass("selected disabled no-stock"),l===e&&(r(s).addClass("selected"),r(s).attr("aria-checked","true"),r(s).attr("tabindex","0"),r(s).find("input.variable-item-radio-input:radio").prop("disabled",!1).prop("checked",!0),woo_variation_swatches_options.show_variation_label&&n.text("".concat(woo_variation_swatches_options.variation_label_separator," ").concat(c)),r(s).trigger("wvs-item-updated",[e,l]))):(_.includes(a,l)&&(r(s).removeClass("selected disabled"),r(s).removeAttr("aria-hidden"),r(s).attr("tabindex","0"),r(s).find("input.variable-item-radio-input:radio").prop("disabled",!1),l===e&&(r(s).addClass("selected"),r(s).attr("aria-checked","true"),r(s).find("input.variable-item-radio-input:radio").prop("checked",!0),woo_variation_swatches_options.show_variation_label&&n.text("".concat(woo_variation_swatches_options.variation_label_separator," ").concat(c)),r(s).trigger("wvs-item-updated",[e,l]))),_.includes(i,l)&&woo_variation_swatches_options.clickable_out_of_stock&&(r(s).removeClass("disabled").addClass("no-stock"),r(s).attr("data-wvstooltip-out-of-stock",woo_variation_swatches_options.out_of_stock_tooltip_text)))}))}},{key:"setupEvents",value:function(){var t=this;this.$element.find("ul.variable-items-wrapper").each((function(e,a){var i=r(a).parent().find("select.woo-variation-raw-select");woo_variation_swatches_options.clear_on_reselect?(r(a).on("click.wvs","li.variable-item:not(.selected):not(.radio-variable-item)",(function(e){e.preventDefault(),e.stopPropagation();var a=r(this).data("value");i.val(a).trigger("change"),i.trigger("click"),woo_variation_swatches_options.is_mobile,r(this).trigger("wvs-selected-item",[a,i,t.$element])})),r(a).on("click.wvs","li.variable-item.selected:not(.radio-variable-item)",(function(e){e.preventDefault(),e.stopPropagation();var a=r(this).val();i.val("").trigger("change"),i.trigger("click"),woo_variation_swatches_options.is_mobile,r(this).trigger("wvs-unselected-item",[a,i,t.$element])})),r(a).on("click.wvs","input.variable-item-radio-input:radio",(function(t){t.stopPropagation(),r(this).trigger("change.wvs",{radioChange:!0})})),r(a).on("change.wvs","input.variable-item-radio-input:radio",(function(e,a){if(e.preventDefault(),e.stopPropagation(),a&&a.radioChange){var n=r(this).val();r(this).parent("li.radio-variable-item").hasClass("selected")?(i.val("").trigger("change"),r(this).parent("li.radio-variable-item").trigger("wvs-unselected-item",[n,i,t.$element])):(i.val(n).trigger("change"),r(this).parent("li.radio-variable-item").trigger("wvs-selected-item",[n,i,t.$element])),i.trigger("click"),woo_variation_swatches_options.is_mobile}}))):(r(a).on("click.wvs","li.variable-item:not(.radio-variable-item)",(function(e){e.preventDefault(),e.stopPropagation();var a=r(this).data("value");i.val(a).trigger("change"),i.trigger("click"),woo_variation_swatches_options.is_mobile,r(this).trigger("wvs-selected-item",[a,i,t.$element])})),r(a).on("change.wvs","input.variable-item-radio-input:radio",(function(e){e.preventDefault(),e.stopPropagation();var a=r(this).val();i.val(a).trigger("change"),i.trigger("click"),woo_variation_swatches_options.is_mobile,r(this).parent("li.radio-variable-item").removeClass("selected disabled no-stock").addClass("selected"),r(this).parent("li.radio-variable-item").trigger("wvs-selected-item",[a,i,t.$element])}))),r(a).on("keydown.wvs","li.variable-item:not(.disabled)",(function(t){(t.keyCode&&32===t.keyCode||t.key&&" "===t.key||t.keyCode&&13===t.keyCode||t.key&&"enter"===t.key.toLowerCase())&&(t.preventDefault(),r(this).trigger("click"))}))})),this.$element.on("click.wvs",".woo-variation-swatches-variable-item-more",(function(t){t.preventDefault(),r(this).parent().removeClass("enabled-display-limit-mode enabled-catalog-display-limit-mode"),r(this).remove()})),this.$element.find("[data-wvstooltip]").each((function(t,e){r(e).on("mouseenter",(function(t){var a=e.getBoundingClientRect(),i=o.getComputedStyle(e,":before"),n=o.getComputedStyle(e,":after"),r=parseInt(n.getPropertyValue("border-top-width"),10),s=parseInt(i.getPropertyValue("height"),10),l=parseInt(i.getPropertyValue("width"),10),c=s+r+2;e.classList.toggle("wvs-tooltip-position-bottom",a.topd,h=u+d,p=document.body.clientWidth1&&i.count===i.chosenCount&&t.resetStockInfo(),i.count>1&&i.count===i.mayChosenCount&&n.forEach((function(a){var i='[data-attribute_name="'.concat(a.attribute_name,'"] > [data-value="').concat(a.attribute_value,'"]');a.variation.is_in_stock&&a.variation.max_qty&&a.variation.variation_stock_left&&a.variation.max_qty<=e?(t.$element.find("".concat(i," .wvs-stock-left-info")).attr("data-wvs-stock-info",a.variation.variation_stock_left),t.$element.find(i).addClass("wvs-show-stock-left-info")):(t.$element.find(i).removeClass("wvs-show-stock-left-info"),t.$element.find("".concat(i," .wvs-stock-left-info")).attr("data-wvs-stock-info",""))}))})),this.$element.on("hide_variation.wvs",(function(){t.resetStockInfo()}))}}},{key:"resetStockInfo",value:function(){this.$element.find(".variable-item").removeClass("wvs-show-stock-left-info"),this.$element.find(".wvs-stock-left-info").attr("data-wvs-stock-info","")}},{key:"getChosenAttributes",value:function(){var t={},e=0,a=0;return this.attributeFields.each((function(){var i=r(this).data("attribute_name")||r(this).attr("name"),n=r(this).val()||"";n.length>0&&a++,e++,t[i]=n})),{count:e,chosenCount:a,mayChosenCount:a+1,data:t}}},{key:"findStockVariations",value:function(t,a){for(var o=[],r=0,s=Object.entries(a.data);r0){var p=h.shift(),m={};m.attribute_name=c,m.attribute_value=v,m.variation=p,o.push(m)}}}catch(t){d.e(t)}finally{d.f()}}}return o}},{key:"findMatchingVariations",value:function(t,e){for(var a=[],i=0;i1?r-1:0),l=1;l1?n-1:0),r=1;rsavings app – Eduardo Menezes
https://eduardomenezes.com
Desenvolvedor Web e Gestão de Rede SocialSun, 04 Oct 2026 03:04:26 +0000pt-PT
hourly
1 https://eduardomenezes.com/wp-content/uploads/2022/09/cropped-LOGOTIPO_PNG_TONS-DE-CINZA-1024x327-1-32x32.pngsavings app – Eduardo Menezes
https://eduardomenezes.com
3232Step 1: Pin Down the Exact Cost of Your Holiday
https://eduardomenezes.com/2026/10/03/book-holiday-united-kingdom/
https://eduardomenezes.com/2026/10/03/book-holiday-united-kingdom/#respondSat, 03 Oct 2026 08:16:25 +0000https://eduardomenezes.com/?p=87192Before you can save, you need a concrete target. Pick a destination, then add up flights, accommodation, meals, and activities. For a week in Lisbon, a round‑trip flight from London costs about £350, hotels average £80 per night, and daily meals run £30. Add a buffer for unexpected expenses – say 10% – and you’re looking at roughly £1,200. Write this figure down; it becomes the north star for every saving decision.
Step 2: Choose an App That Matches Your Spending Habits
Not every budgeting app is created equal. If you’re a “set‑it‑and‑forget‑it” type, a simple envelope system in an app like YNAB (You Need A Budget) will push you to allocate money to a “Holiday” category each month. If you prefer visual cues, Monzo or Revolut display spending heat maps that quickly show where you can cut back. Test a free trial for two weeks; note how many categories you can customise and whether the app syncs with all your cards.
Step 3: Automate the Transfer to a Dedicated Savings Account
Most budgeting apps let you set up recurring transfers. Set a monthly rule: every 15th, move £100 from your checking to a high‑interest savings account earmarked for travel. The app will flag the transfer, so you never forget. If you’re on a tight budget, start with £50 and increase by £10 each month until you hit the target.
Step 4: Track Progress and Adjust When Needed
Open the app each week and check the “Holiday” bucket. If you overspend on groceries, the app will suggest reallocating a small amount from that category to your holiday fund. The key is to keep the target visible; most apps let you set a visual goal bar that fills as you save. When the bar reaches 100%, you’ll know exactly when you can book that flight.
Step 5: Avoid the Common Mistake of “I’ll Save More Next Month”
It’s tempting to postpone saving when a bill comes due. However, the compounding effect of delayed savings means you’ll need to save a larger sum later. Instead, treat the holiday fund like a bill itself: pay it first, then pay the rest of your expenses. This habit keeps the goal from slipping down the priority list.
While budgeting for a holiday, you might wonder how to keep your leisure time enjoyable without overspending. If you’re looking for a way to unwind that doesn’t drain your savings, you could try an online gaming platform that offers free-to-play titles. For instance, spinboss provides a range of casual games that let you relax without any cost.
Closing Thoughts
By setting a clear price, picking the right app, automating transfers, monitoring progress, and resisting the urge to delay, you can turn a dream holiday into a realistic plan. The process is straightforward, and the payoff is a stress‑free getaway that’s funded on time, not on impulse.
Frequently Asked Questions
How do I calculate the total cost of a holiday?
Add flights, accommodation, meals, activities, and a 10% buffer for unexpected expenses. Write the sum down as your target.
Why is a concrete budget important?
It gives you a clear savings goal, helps prioritize expenses, and keeps you on track throughout the planning process.