Granny Square Blanket Class (CROCHET), Sunday 9/10, 9/17, 11/26, 11am - 12:30pm

Island Yarn


$ 66.00
Granny Square Blanket Class (CROCHET), Sunday 9/10, 9/17, 11/26, 11am - 12:30pm
We'll be using the Summer Garden Granny Blanket to learn basic Granny Squares and make this beautiful and fun project!  The first to classes will be focused on making your granny squares just right.  The final, later class will be for seaming and finishing help, so try to get a bunch of squares done before the 3rd!  You can find the pattern here.  Please make sure you have it before the first class.  This pattern is originally meant for DK, but you can use any of our beautiful yarns for it - pop in soon and we'll help you choose JUST the right one for you!  You'll also need a hook appropriate for your yarn size.
Dates: Sunday, 9/10, 9/17, 11/26, 11am - 12:30pm
Cost: $66  
Taught by Laura Dell

Cost does not include supplies.  Supplies may be purchased at Island Yarn anytime before the first class.

Classes are non-refundable, so please check your calendar to make sure you can make each meeting.  If something comes up, you can check with the teacher about a reschedule, but it is at their convenience and discretion.

Related Products


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(), ); }