news

20 Bits of Fun to wave 2020 GOODBYE

Victoria Myers

So, I figured 2020 is just such a stink-o year, that poor #20 might need a good association with it...so there are TWENTY things for this weekend - from Thursday (at 12:01am) to Monday (at 11:59pm).  Hopefully, all my lists come together and it all works!  Here they are - in absolutely no particular order!

1 - Buy a $50 Giftcard and get a $5 bonus giftcard!  (I have to send these separately so it might not be for an hour or two depending on your timing.)

2 - Win a FREE Mad Ball!  Hidden inside one of the Mad Balls currently for sale, is a token for a FREE Mad Ball!  I had my daughter hide it, so don't try to get it out of me - I have no idea which on she put it in!

3 - NEW Me Hat Kits!  Beautiful new Quick to Knit Kit for those of you still trying to churn out more gifts!

4 - FREE Foldable Shopping Bags!  (These are hidden in the listings - so go treasure hunt for them - one per person, please!)

5 - Double Stash Cash Points for all five days!

6 - Louisa Harding Enorme - now 40% off!! - All GONE!

7 - Free shipping on order over $50 for all 5 days!

8 - NEW Grande Dragon Scales Kit!  (It wouldn't be any fun without NEW Dragon Scales!)

9 - FREE Simplicity Shawl Pin when you order any Dragon Scales Shawl Kit (perfect little addition to your gifts)!

10 - Combo XL - now 50% off!

11 - NEW Ladders Shawl Kit!

12 - FREE Mystery pattern with every order!

13 - Save 25% off our Samples and finished items with code GIFTY (just in case you can't get everything done, but love to give handmade!)

14 - NEW Acorn Path Shawl Kit!!  Fast and snuggly - this one could still get done by gifty time!

15 - Ella Rae Phoenix is now 30% off!

16 - There are FIVE Learn to Knit Kits that include FREE needles and a mystery color - just five, get them fast!

17 - Noro Kumo is now 40% off!

18 - Noro Mirai is now 40% off! - ALMOST GONE

19 - Albina is now 50% off!

20 - NEW Candy Basket Kits - perfect for all those little neighbor gifts to help cheer up the world this year!

Phew - I tried to make all of these fun for online shopping so that you don't feel like you have to come out to have a little yarny fun.  I hope you all stay safe and healthy over Thanksgiving!


Leave a Comment

Please note, comments must be approved before they are published

const selectVariantByClickingImage = { // Create variant images from productJson object _createVariantImage: function (product) { const variantImageObject = {}; product.variants.forEach((variant) => { if ( typeof variant.featured_image !== 'undefined' && variant.featured_image !== null ) { const variantImage = variant.featured_image.src .split('?')[0] .replace(/http(s)?:/, ''); variantImageObject[variantImage] = variantImageObject[variantImage] || {}; product.options.forEach((option, index) => { const optionValue = variant.options[index]; const optionKey = `option-${index}`; if ( typeof variantImageObject[variantImage][optionKey] === 'undefined' ) { variantImageObject[variantImage][optionKey] = optionValue; } else { const oldValue = variantImageObject[variantImage][optionKey]; if (oldValue !== null && oldValue !== optionValue) { variantImageObject[variantImage][optionKey] = null; } } }); } }); return variantImageObject; }, _updateVariant: function (event, id, product, variantImages) { const arrImage = event.target.src .split('?')[0] .replace(/http(s)?:/, '') .split('.'); const strExtention = arrImage.pop(); const strRemaining = arrImage.pop().replace(/_[a-zA-Z0-9@]+$/, ''); const strNewImage = `${arrImage.join('.')}.${strRemaining}.${strExtention}`; if (typeof variantImages[strNewImage] !== 'undefined') { product.variants.forEach((option, index) => { const optionValue = variantImages[strNewImage][`option-${index}`]; if (optionValue !== null && optionValue !== undefined) { const selects = document.querySelectorAll('#'+ id + ' [class*=single-option-selector]'); const options = selects[index].options; for (let option, n = 0; (option = options[n]); n += 1) { if (option.value === optionValue) { selects[index].selectedIndex = n; selects[index].dispatchEvent(new Event('change')); break; } } } }); } }, _selectVariant: function() { const productJson = document.querySelectorAll('[id^=ProductJson-'); if (productJson.length > 0) { productJson.forEach((product) => { const sectionId = product.id.replace("ProductJson-", "shopify-section-"); const thumbnails = document.querySelectorAll('#'+ sectionId + ' img[src*="/products/"]'); if (thumbnails.length > 1) { const productObject = JSON.parse(product.innerHTML); const variantImages = this._createVariantImage(productObject); // need to check variants > 1 if (productObject.variants.length > 1) { thumbnails.forEach((thumbnail) => { thumbnail.addEventListener('click', (e) => this._updateVariant(e, sectionId, productObject, variantImages), ); }); } } }); } }, }; if (document.readyState !== 'loading') { selectVariantByClickingImage._selectVariant(); } else { document.addEventListener( 'DOMContentLoaded', selectVariantByClickingImage._selectVariant(), ); }