MSQC SKU: FBY42756 | MFG SKU: 9900 265
$8.60
Quilters Cash
Earn
18
yards
Description
Lime green Bella solid. Solids are fantastic because of the balance they bring to quilts! If you need to balance out your project, consider Bella solids from Moda Fabrics! When it comes to Bella, you'll always find the color you need, whether it's sangria pink or lemon yellow.
Moda's Bella Solids are made from 100% USA cotton goods certified by the Cotton Council International.
100% Cotton
44"/45" Wide
Details
Brand: Moda Fabrics
Collection: Bella Solids
Color: Green
Designer: Moda Fabrics
Material: Cotton
Product Type: Fabric
Style: Basics
Theme: Solids
Width: 44" / 45"
MSQC SKU: FBY42756
MFG SKU: 9900 265
Free Shipping at $59
Save to:
Email This Wishlist
wishlist will be sent to:0friends
Wishlist sent
Wishlist not found
`).prependTo('.wishlist-entries'); } else { $(`We're having trouble loading your wishlist right now. Please try again later.
`).prependTo('.wishlist-entries'); } } } else if (template === 'page') { if (statusCode === 404) { $(`Wishlist not found
`).prependTo('.wishlist-entries'); } else { $(`We're having trouble loading this wishlist right now. Please try again later.
`).prependTo('.wishlist-entries'); } } } async function populatePdpModal(apiBaseUrl, modal, variantId, onPageLoad = false) { $('form#add-to-wishlists div.toggle-create-wishlist').removeClass('cursor-pointer').addClass('pointer-events-none opacity-75'); $('form#add-to-wishlists button:submit').prop('disabled', true).addClass('pointer-events-none opacity-75'); $('.lds-ring').show(); try { const variantCheck = await checkForVariantOnAllLists(apiBaseUrl, variantId); await getWishlistsFromPdp(modal, variantId, variantCheck); $('form#add-to-wishlists div.toggle-create-wishlist').addClass('cursor-pointer').removeClass('pointer-events-none opacity-75'); $('form#add-to-wishlists button:submit').prop('disabled', false).removeClass('pointer-events-none opacity-75'); $('.lds-ring').hide(); } catch (err) { console.error(err); } } async function checkForVariantOnAllLists(apiBaseUrl, variantId) { let entriesWithThisVariant = []; try { const response = await fetch(`${apiBaseUrl}/wishlists?variant_id=${variantId}&auth=eyJpdiI6IjF4VENIb0tzMHJ0THJaWkxKOFcvdFE9PSIsInZhbHVlIjoiSkxjaVlma1pEVVgxbzRuNXc0YnRGZz09IiwibWFjIjoiY2ji*zmQzNzI2NmQ2MjgyNjZjYmI2M2I0MTRmN2FlY2NkOWY3ZDBlZmJlYTNkZjFkMDY0MGFkN2VkMDg2NDc4NSIsInRhZyI6IiJ9:1713202159::07545f9caf519ef05f69a13363ba89aafb6df088d1ff9829be1d4a79f9953c99&cid=`); const data = await response.json(); if (data.length) { $('svg.wishlist-heart-icon').replaceWith(heartFilledSvg); entriesWithThisVariant = Object.values( data.reduce((acc, obj) => ({ ...acc, [obj.public_id]: obj }), {}) ).map((list) => list.entries) .flat() .filter((entry) => entry.variant_id === parseInt(variantId)); } else { $('svg.wishlist-heart-icon').replaceWith(heartOutlinedSvg); entriesWithThisVariant = []; } } catch (err) { console.error(err); } return entriesWithThisVariant; } async function getFavorites(apiBaseUrl) { let favorites = null; try { const response = await fetch(`${apiBaseUrl}/favorites?auth=eyJpdiI6IjF4VENIb0tzMHJ0THJaWkxKOFcvdFE9PSIsInZhbHVlIjoiSkxjaVlma1pEVVgxbzRuNXc0YnRGZz09IiwibWFjIjoiY2ji*zmQzNzI2NmQ2MjgyNjZjYmI2M2I0MTRmN2FlY2NkOWY3ZDBlZmJlYTNkZjFkMDY0MGFkN2VkMDg2NDc4NSIsInRhZyI6IiJ9:1713202159::07545f9caf519ef05f69a13363ba89aafb6df088d1ff9829be1d4a79f9953c99&cid=`); const data = await response.json(); favorites = data; } catch (err) { console.error(err); favorites = null; } return favorites; } async function getAllWishlists(apiBaseUrl) { $('.lds-grid.lists-loader').show(); try { const response = await fetch(`${apiBaseUrl}/wishlists?auth=eyJpdiI6IjF4VENIb0tzMHJ0THJaWkxKOFcvdFE9PSIsInZhbHVlIjoiSkxjaVlma1pEVVgxbzRuNXc0YnRGZz09IiwibWFjIjoiY2ji*zmQzNzI2NmQ2MjgyNjZjYmI2M2I0MTRmN2FlY2NkOWY3ZDBlZmJlYTNkZjFkMDY0MGFkN2VkMDg2NDc4NSIsInRhZyI6IiJ9:1713202159::07545f9caf519ef05f69a13363ba89aafb6df088d1ff9829be1d4a79f9953c99&cid=`); if (!response.ok) { $('.lds-grid.lists-loader').hide(); cantLoadMessage('account', response.status, 'index'); throw new Error(); } const data = await response.json(); const saveForLaterList = data.find(({ name }) => name.toLowerCase() === "save for later"); let saveForLaterListId = saveForLaterList ? saveForLaterList.public_id : null; const favoritesList = data.find(({ name }) => name.toLowerCase() === "favorites"); let favoritesListId = favoritesList ? favoritesList.public_id : null; const watchTagList = data.find(({ name }) => name.toLowerCase() === "watch tag"); let watchTagListId = watchTagList ? watchTagList.public_id : null; let createFavorites = !favoritesListId && await getFavorites(apiBaseUrl); let createFavoritesListId = !favoritesListId && createFavorites ? createFavorites.public_id : null; $('.lds-grid.lists-loader').hide(); data.forEach((w, index) => { if (w.public_id !== saveForLaterListId && w.public_id !== watchTagListId) { if (favoritesListId && w.public_id === favoritesListId) { createWishlistElement(w, pageValue, favoritesListId); } else { createWishlistElement(w, pageValue); } } }); if (createFavoritesListId) { createWishlistElement(createFavorites, pageValue, createFavoritesListId); } else if (!data.length && !createFavoritesListId) { $('.wishlists-container').append(`No wishlists found. Create a new list to get started!
`); } fillEmptyThumbnails(pageValue); // move Favorites list to the first position $(`.wishlist-item[data-favorites="1"]`).prependTo('.wishlists-container'); // change this later pageValue === 'index' && itemsPerPage(pages, pageValue); } catch (err) { console.error(err); } } function createWishlistElement(wishlist, page, favoritesListId = null) { $('.wishlists-container').prepend(`${wishlist.name}
${wishlist.entries_count} items
${favoritesListId ? '' : ``}
${isEntry && window.location.pathname !== '/pages/lists' ? `` : ''}
$${(parseFloat(variant.price) * purchaseQty).toFixed(2)}
${product.title}
${designer ? 'by ' + designer + ' ' : ''}${brand && brand !== designer ? 'for ' + brand : ''}
${cartWithPlusSvg}add to cart
Your wishlist is now set to Public
'); updateWishlist(wishlistName, true); } } // load products they've added to a specific wishlist async function getItemsInWishlist(apiBaseUrl, wishlistId, startingPage = null) { startingPage && $('.lds-grid.entries-loader').show(); try { const response = await fetch(`${apiBaseUrl}/wishlists/${wishlistId}?auth=eyJpdiI6IjF4VENIb0tzMHJ0THJaWkxKOFcvdFE9PSIsInZhbHVlIjoiSkxjaVlma1pEVVgxbzRuNXc0YnRGZz09IiwibWFjIjoiY2ji*zmQzNzI2NmQ2MjgyNjZjYmI2M2I0MTRmN2FlY2NkOWY3ZDBlZmJlYTNkZjFkMDY0MGFkN2VkMDg2NDc4NSIsInRhZyI6IiJ9:1713202159::07545f9caf519ef05f69a13363ba89aafb6df088d1ff9829be1d4a79f9953c99&cid=`); if (!response.ok) { $('.lds-grid.entries-loader').hide(); if (window.location.pathname === '/pages/lists') { cantLoadMessage('page', response.status); } else { cantLoadMessage('account', response.status, 'wishlist'); } throw new Error(); } const data = await response.json(); if (window.location.pathname === '/pages/lists') { $('#publicWishlistHeader').removeClass('hidden'); $('#wishlistName').text(data.name); $('#entriesCount').text(data.entries.length); } $('form.update-wishlist input#list_name').attr('placeholder', data.name); $('form#create-or-update-list').attr('data-public', data.public); $('form.update-wishlist input#make-public').prop('checked', data.public); $('.copy-url-btn').attr('onclick', `publicStatus(${data.public}, "${data.name}", true)`); $('#sendWishlistBtn').attr('onclick', `publicStatus(${data.public}, "${data.name}", false)`); if (data.public) { $('.public-status-notice').html('Your wishlist is set to Public
'); } else { $('.public-status-notice').html('Your wishlist will be changed to Public
'); } if (startingPage) { $('.lds-grid.entries-loader').hide(); let entriesCount = data.entries.length; let limit = 8; let numOfPages = Math.ceil(entriesCount / limit); let pageNumbers = Array.from({length: numOfPages}, (_, i) => i + 1); $('h1#page-title').text(data.name); $('form#create-or-update-list').attr('data-list-name', data.name); $('input.public-list-url').val(`https://www.missouriquiltco.com/pages/lists?wishlist_id=${data.public_id}`); $('.wishlist-breadcrumb').attr('href', '').text(`/ ${data.name}`); $('#wishlist-entries-header') .removeClass() .addClass('text-xl') .html(`${data.entries.length} items total`); if (!data.entries.length) { $('.wishlist-entries') .removeClass('grid grid-rows-2 grid-cols-4 gap-8') .addClass('flex flex-col justify-center') .children('.no-wishlist-entries') .removeClass('hidden'); } else { numOfPages > 1 && $('#pagination-container').removeClass('hidden'); $('#page-count').removeClass('hidden'); $('span#total-pages').text(numOfPages); let foundStart = pageNumbers.find((page) => page === startingPage); startingPage = foundStart ? startingPage : 1; getCurrentPageEntries(wishlistId, startingPage, data.entries, limit, pageNumbers); injectShopProductIdsForBC(data.entries, $('#wishlist-entries-container')); } } } catch (err) { console.error(err); } } function generatePagination(wid, array, lim, pageNumbers, page, lastPage) { let pagination = $('`); } // wishlist form on PDP makes updates to a customer's wishlists regarding // the variant only. They can add or remove the variant to existing lists, // or they can create a new list and add the variant to it at the same time $('form#add-to-wishlists').on('submit', async function(e) { e.preventDefault(); const variantId = '39280709795875'; // get changes let checked = $(this).find('input:checkbox:checked:not([data-entry-id]):not(#add_to_new_list)'); let unchecked = $(this).find('input:checkbox[data-entry-id]:not(:checked)'); let newWishlistName = $(this).find('input#new-list').length ? $(this).find('input#new-list').val().trim() : null; if (!checked.length && !unchecked.length && !newWishlistName) { toggleModal($('#wishlist-modal'), 'product', variantId); return; } $(this).find('button:submit').prop('disabled', true).addClass('opacity-75 pointer-events-none').html(''); let postReqUrls = []; let deleteReqUrls = []; checked.each(function (i, el) { postReqUrls.push(`${wishlistApiBase}/wishlists/${$(el).attr('id')}/entries?auth=eyJpdiI6IjF4VENIb0tzMHJ0THJaWkxKOFcvdFE9PSIsInZhbHVlIjoiSkxjaVlma1pEVVgxbzRuNXc0YnRGZz09IiwibWFjIjoiY2ji*zmQzNzI2NmQ2MjgyNjZjYmI2M2I0MTRmN2FlY2NkOWY3ZDBlZmJlYTNkZjFkMDY0MGFkN2VkMDg2NDc4NSIsInRhZyI6IiJ9:1713202159::07545f9caf519ef05f69a13363ba89aafb6df088d1ff9829be1d4a79f9953c99&cid=`); }); unchecked.each(function (i, el) { deleteReqUrls.push(`${wishlistApiBase}/wishlists/${$(el).attr('id')}/entries/${$(el).attr('data-entry-id')}?auth=eyJpdiI6IjF4VENIb0tzMHJ0THJaWkxKOFcvdFE9PSIsInZhbHVlIjoiSkxjaVlma1pEVVgxbzRuNXc0YnRGZz09IiwibWFjIjoiY2ji*zmQzNzI2NmQ2MjgyNjZjYmI2M2I0MTRmN2FlY2NkOWY3ZDBlZmJlYTNkZjFkMDY0MGFkN2VkMDg2NDc4NSIsInRhZyI6IiJ9:1713202159::07545f9caf519ef05f69a13363ba89aafb6df088d1ff9829be1d4a79f9953c99&cid=`); }); try { let createWishlist = newWishlistName && await fetch(`${wishlistApiBase}/wishlists?auth=eyJpdiI6IjF4VENIb0tzMHJ0THJaWkxKOFcvdFE9PSIsInZhbHVlIjoiSkxjaVlma1pEVVgxbzRuNXc0YnRGZz09IiwibWFjIjoiY2ji*zmQzNzI2NmQ2MjgyNjZjYmI2M2I0MTRmN2FlY2NkOWY3ZDBlZmJlYTNkZjFkMDY0MGFkN2VkMDg2NDc4NSIsInRhZyI6IiJ9:1713202159::07545f9caf519ef05f69a13363ba89aafb6df088d1ff9829be1d4a79f9953c99&cid=`, { method: 'POST', headers: { "Content-Type": "application/json", "Accept": "application/json", }, body: JSON.stringify({ name: newWishlistName }) }); let createWishlistData = newWishlistName ? await createWishlist.json() : null; createWishlistData && postReqUrls.push(`${wishlistApiBase}/wishlists/${createWishlistData.public_id}/entries?auth=eyJpdiI6IjF4VENIb0tzMHJ0THJaWkxKOFcvdFE9PSIsInZhbHVlIjoiSkxjaVlma1pEVVgxbzRuNXc0YnRGZz09IiwibWFjIjoiY2ji*zmQzNzI2NmQ2MjgyNjZjYmI2M2I0MTRmN2FlY2NkOWY3ZDBlZmJlYTNkZjFkMDY0MGFkN2VkMDg2NDc4NSIsInRhZyI6IiJ9:1713202159::07545f9caf519ef05f69a13363ba89aafb6df088d1ff9829be1d4a79f9953c99&cid=`); await Promise.all(postReqUrls.map(url => fetch(url, { method: 'POST', headers: { "Content-Type": "application/json", "Accept": "application/json", }, body: JSON.stringify({ variant_id: variantId }) } ))).then(async (res) => { return Promise.all( res.map(async (data) => await data.json()) ) }); await Promise.all(deleteReqUrls.map(url => fetch(url, { method: 'DELETE', headers: { "Accept": "application/json", }, }))) .then(async (res) => { return Promise.all( res.map(async (data) => await data.json()) ) }); $(this).find('button:submit').prop('disabled', false).removeClass('opacity-75 pointer-events-none').empty().text('Save'); await toggleModal($('#wishlist-modal'), 'product', variantId); } catch (err) { console.error(err); } }); $('form#create-or-update-list').on('submit', async function(e) { e.preventDefault(); $(this).find('button:submit').prop('disabled', true).addClass('opacity-75 pointer-events-none').html(''); let newListName = $(this).find('input#list_name').val().trim(); let listName = !newListName ? $('form.update-wishlist').attr('data-list-name') : newListName; let makePublic = $('form.update-wishlist input#make-public').is(':checked') ? true : false; try { $(this).hasClass('update-wishlist') ? await updateWishlist(listName, makePublic) : await createWishlist(listName); $(this).find('button:submit').prop('disabled', false).removeClass('opacity-75 pointer-events-none').empty().text($(this).hasClass('update-wishlist') ? 'Save' : 'Create'); await toggleModal($('#wishlist-modal'), 'account'); } catch(err) { console.error(err); } }); // if they don't want to add the item to the new list, remove the input // from the DOM so it's not taken into account on the submit event. // only let them create a new list from the PDP if they want to // add the item to it function newWishlistForm(element, variantId = null) { if ($(element).hasClass('create-wishlist-hide')) { $(element).removeClass('create-wishlist-hide'); $(``).insertBefore($(element).parent()); } else { $(element).addClass('create-wishlist-hide'); $('.select-wishlist.new-wishlist').remove(); } } $(document).on('change', 'input:checkbox#add_to_new_list', function () { if (!$(this).is(":checked")) { newWishlistForm($('.toggle-create-wishlist')); } }); async function toggleModal(modal, pageSrc, variantId = null) { if (modal.hasClass('hidden')) { modal.removeClass('hidden'); } else { modal.addClass('hidden'); $('#recipients').text(''); $('span#emailCount').text('0'); pageSrc === 'product' && $('form#add-to-wishlists .select-wishlist').remove(); pageSrc === 'account' && $('form#create-or-update-list input').val(''); pageSrc === 'product' && await populatePdpModal(wishlistApiBase, modal, variantId, false); } } function splide_check() { document.querySelectorAll('.splide').forEach(carousel => new Splide(carousel, { type: 'slide', perPage: 2, gap: 2, arrows: false, pagination: false, drag: true, mediaQuery: 'min', breakpoints: { 768: { destroy: true, }, } }).mount()); } function injectShopProductIdsForBC(entries, parentElement) { entries.forEach((entry, i) => { if (entry.variant !== null) { let metafield = entry.variant.product.metafields.length ? entry.variant.product.metafields.find((m) => m.key === 'shop_product_id') : null; let shopProductId = metafield ? metafield.value : null; if (shopProductId) { parentElement.append(``); } } }); } function removeRecipient(element) { $('span#emailCount').text(parseInt($('span#emailCount').text()) - 1); element.parent().remove(); } $('#recipients').on('keydown', function(event) { let emailAddress, emails, addresses; switch(event.keyCode) { case 13: addresses = $('#recipients').text().split(/(\s+)/); emails = addresses.filter((email) => /(\s+)/.test(email) === false && email !== ''); emailAddress = emails[emails.length - 1]; $(`${emailAddress}`).appendTo('#recipients'); $('#recipients').contents().filter(function(){ return this.nodeType === 3; }).remove(); $('span#emailCount').text(emails.length); const range = document.createRange(); const selection = window.getSelection(); range.setStart(document.getElementById('recipients'), document.getElementById('recipients').childNodes.length); range.collapse(true); selection.removeAllRanges(); selection.addRange(range); return false; break; case 8: if (!$('#recipients').ignore('span').text()) { return false; } break; } }); $.fn.ignore = function(sel) { return this.clone().find(sel || ">*").remove().end(); }; $('button#sendWishlistBtn').on('click', async function(e) { try { let recipients = $('#recipients').text().split(/(\s+)/); let emails = recipients.filter((email) => /(\s+)/.test(email) === false && email !== '').join('&recipients[]='); let str = emails.replace(/,*$/, ''); let wid = window.location.pathname === '/pages/lists' ? params.get('wishlist_id') : params.get('wid'); await shareWishlist(wishlistApiBase, wid, str); } catch (err) { console.error(err); } }); // request to email wishlist to 1 or more recipients async function shareWishlist(apiBaseUrl, wid, emails) { try { const response = await fetch(`${apiBaseUrl}/wishlists/${wid}/share?recipients[]=${emails}`, { method: 'POST', headers: { 'Authorization': "crinc-voglia-shopify-customer eyJpdiI6IjF4VENIb0tzMHJ0THJaWkxKOFcvdFE9PSIsInZhbHVlIjoiSkxjaVlma1pEVVgxbzRuNXc0YnRGZz09IiwibWFjIjoiY2ji*zmQzNzI2NmQ2MjgyNjZjYmI2M2I0MTRmN2FlY2NkOWY3ZDBlZmJlYTNkZjFkMDY0MGFkN2VkMDg2NDc4NSIsInRhZyI6IiJ9:1713202159::07545f9caf519ef05f69a13363ba89aafb6df088d1ff9829be1d4a79f9953c99", }, }); const data = await response.text(); return data; } catch (err) { console.error(err); } }
Other Products In This Collection
We Think You'll Like These Too
Ratings & Reviews
Lorem ipsum dolor sit amet
consectetur adipisicing elit.
Showing x - x of xx
sort by
There are no reviews yet.
Questions & Answers