Click or scroll to zoom
Tap or pinch to zoom
${modalName.includes('Color') ? `
As Pictured
` : '' }
${designs.filter(validIcon => { return (validIcon.value !== "" && validIcon.value !== 'As Pictured')}).map (option => { return `
${!modalName.includes('Color Select') && !modalName.includes('Vinyl') && !modalName.includes('Font') ? `${option.value}`:``}
` }).join('')}
`const wrapperClass = "select_modal_"+modalSelectAttrName;modalWrapper.classList = ("select_modal_wrapper " +wrapperClass);modalWrapper.setAttribute('data-selectname',modalSelectAttrName);modalWrapper.innerHTML = modal;}const initDropDowns = function(){ const dropDownContainer = document.querySelectorAll(".bold_option_dropdown"); const dropDownNames = document.querySelectorAll(".bold_option_dropdown select"); let reg = new RegExp(/^properties\[(.* (Choices|Color Select)?\d?)\]$/); let regVinyl = new RegExp(/^properties\[(Vinyl \w+ Select|Vinyl \w+ Colors)\]$/); dropDownContainer.forEach(dd => { if(dd.childNodes.length > 0 ){ let ddSelect = dd.querySelector("select"); let titleElement = dd.querySelector(".bold_option_title"); let title = titleElement.innerText; if(reg.test(ddSelect.name) || regVinyl.test(ddSelect.name)){ let idValue = title.toLowerCase().replace(/\s/g, '_').replace(/\*/g, ''); ddSelect.id=idValue; } } })}const hideModals = function(posY) { modals = document.querySelectorAll(".select_modal_wrapper"); modals.forEach(m => { if (!m.classList.contains("select_modal_hidden")){ m.classList.toggle("select_modal_hidden"); } })}const hideColorSelects = function(){ const colorSelects = document.querySelectorAll(".oak_color_select"); colorSelects.forEach( select => { select.parentNode.parentNode.parentNode.classList.add("oak_selector") })}const hideThreadSelects = function(type){ const dropDowns = document.querySelectorAll("."+type +"_color_picker"); dropDowns.forEach(dd => { dd.parentNode.parentNode.parentNode.classList.add("oak_selector"); })}const toggleModalDisplay = function(){ let modal = document.querySelector(".select_modal_wrapper"); modal.classList.toggle('select_modal_hidden')}const labelColorSelects = function(){ const selects = document.querySelectorAll(".bold_option_set select"); const reg = new RegExp(/^properties\[(.* Color Select \d)\]$/); selects.forEach(select => { const selName = select.name; if (reg.test(selName)){ let match = selName.match(reg); let idLabel = match[1].toString().toLowerCase().replace(/\s/g, '_') let classLabel = idLabel.slice(0,-2); select.classList.add("oak_color_select",classLabel); select.parentNode.parentNode.parentNode.classList.add("oak_selector") select.setAttribute("data-selector-target", classLabel); } })}const displayColorSelectors = function(name,type){ hideThreadSelects(type); let className = type.slice(0,-7); const toBeDisplayed = getDisplayOptionObject(name,type); const selects = document.querySelectorAll("."+className+'color_select'); let i = 0; toBeDisplayed[0].threadNames.forEach(t => { selects[i].name = selects[i].name.replace("]", " - "+t+"]") selects[i].parentNode.parentNode.parentNode.classList.remove("oak_selector") let title = selects[i].parentNode.parentNode.querySelector(".bold_option_title"); title.innerText = t; i++ })}const getDisplayOptionObject = function(name,type){ if (type === "signature_embellishment_choices") return designs.signatureEmbellishments.filter(design => name.toLowerCase() === design.name); else if (type === "embellishment_choices") return designs.embellishments.filter(design => name.toLowerCase() === design.name); else if (type === "small_embellishment_choices") return designs.smallEmbellishments.filter(design => name.toLowerCase() === design.name); else if (type === "monogram_choices") return designs.monograms.filter(design => name.toLowerCase() === design.name); else if (type === "font_choices") return designs.fonts.filter(design => name.toLowerCase() === design.name); else if (type === "borders_and_frames_choices") return designs.bordersAndFrames.filter(design => name.toLowerCase() === design.name); else if (type === "signature_monogram_choices") return designs.signatureMonograms.filter(design => name.toLowerCase() === design.name); else if (type === "monogram_two_letter_choices") return designs.doubleMonograms.filter(design => name.toLowerCase() === design.name); else if (type === "monogram_one_letter_choices") return designs.singleMonograms.filter(design => name.toLowerCase() === design.name); }//*****EVENT LISTENERS*****const evt = new Event("change");document.addEventListener("click", (e) =>{ if (e.target.classList.contains("select_modal_button_close")){ hideModals(screenY); } if (e.target.id === "as-pictured-button") { const targetAttr = e.target.parentNode.getAttribute("data-selectname"); const valueAttr = e.target.getAttribute("data-value") const dataValueAttr = e.target.getAttribute("data-option_value_key") const target = document.querySelector("#"+targetAttr); target.value = valueAttr; target.dispatchEvent(evt); hideModals(screenY); } if (e.target.classList.contains("select_modal_button_clear")){ const targetDropdown = e.target.parentNode.parentNode.getAttribute("data-selectname"); const target = document.querySelector("#"+targetDropdown); target.value = ""; const type = e.target.getAttribute("data-colorselect"); hideThreadSelects(type); hideModals(screenY); } if(e.target.parentNode.classList.contains("select_modal_option")){ const targetAttr = e.target.parentNode.getAttribute("data-selectname"); const valueAttr = e.target.parentNode.getAttribute("data-value") const dataValueAttr = e.target.getAttribute("data-option_value_key"); let removeColorName = targetAttr if( targetAttr.includes("-")){ removeColorName = targetAttr.split(" -")[0] + "]"; } const target = document.querySelector("#"+removeColorName); target.value = valueAttr; target.dispatchEvent(evt); let colorTarget = e.target.parentNode.getAttribute("data-colorselect"); if(!colorTarget.includes("color_select") && !colorTarget.includes("vinyl")){ hideColorSelects(); if(colorTarget !== 'as_pictured'){ displayColorSelectors(target.value.toLowerCase().replace(/\s/g, ''),colorTarget) } hideModals(screenY); } else { hideModals(screenY); } } if (e.target.type === 'select-one' && e.target.id && !e.target.classList.contains("form-field-input")){ let targetID = e.target.id let targetClass = targetID; let targetSelect = document.querySelector('#'+targetID); generateModal(targetSelect); }})document.addEventListener("mousedown", (e) =>{ if (e.target.type === 'select-one' && e.target.id && !e.target.classList.contains("form-field-input")){ e.preventDefault(); }})
Lost teeth need to be guarded like treasure. Enter our pirate stuffed tooth fairy doll, the protector of childhood memories with his secure tooth pouch and swashbuckling attire that keeps intruders at bay. Ideal as a birthday or holiday present for little ones of tooth-losing age, the intricately crafted tooth fairy doll allows parents and kids to bond over the milestone moment. Our pirate stuffed doll carries an embroidered tooth pouch that can be opened and closed with a little gold string.
- 10 in / 25.5 cm
- 100% polyester
- Spot clean only
-
$8.00
Wooden Planes Pull Back Racers
More product options avaliable
Pull them back and watch them go!Ages 3+
-
$26.00
Girl's Bucket Hat - Tippy
DescriptionRetro striped bucket hat looks bright and fresh on. Made from quick dry material making it perfect to wear as a swim h...
View full details
-
$48.00
Garden Gisselle Bubble
More product options avaliable
65% Polyester35% CottonThe Adorable Garden Gisselle Bubble is a delightful and charming garment designed for baby girls. This adorable bubble sho...
View full details
-
$52.00
Garden Gisselle Dress
More product options avaliable
65% Polyester35% CottonThe Adorable Garden Gisselle Bubble is a delightful and charming garment designed for baby girls. This adorable bubble sho...
View full details
-
$54.00
Sweetness Sophie Bubble
More product options avaliable
65% Polyester35% CottonThe Light Pink Sweetness Sophie Bubble is an absolutely adorable and charming garment designed specifically for baby girls...
View full details