Mini Pouch Sewing Template - With Tutorial
Mini Pouch Sewing Template - With Tutorial
Mini Pouch Sewing Template - With Tutorial
Mini Pouch Sewing Template - With Tutorial
Mini Pouch Sewing Template - With Tutorial
Mini Pouch Sewing Template - With Tutorial
Mini Pouch Sewing Template - With Tutorial
Mini Pouch Sewing Template - With Tutorial

Mini Pouch Sewing Template - With Tutorial

Price

$15.37 $9.99
Save 35%
/** * ไผ˜ๆƒ ็ ็ป„ไปถๆจกๅž‹็ฑป * ๅค„็†ไผ˜ๆƒ ็ ็š„ๆ˜พ็คบๅ’Œไบคไบ’้€ป่พ‘ */ class SpzCustomDiscountCodeModel extends SPZ.BaseElement { constructor(element) { super(element); // ๅคๅˆถๆŒ‰้’ฎๅ’Œๅ†…ๅฎน็š„็ฑปๅ this.copyBtnClass = "discount_code_btn" this.copyClass = "discount_code_value" } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { // ๅˆๅง‹ๅŒ–ๆœๅŠก this.action_ = SPZServices.actionServiceForDoc(this.element); this.templates_ = SPZServices.templatesForDoc(this.element); this.xhr_ = SPZServices.xhrFor(this.win); } /** * ๆธฒๆŸ“ไผ˜ๆƒ ็ ็ป„ไปถ * @param {Object} data - ๆธฒๆŸ“ๆ•ฐๆฎ */ doRender_(data) { return this.templates_ .findAndRenderTemplate(this.element, Object.assign(this.getDefaultData(), data) ) .then((el) => { this.clearDom(); this.element.appendChild(el); // ็ป‘ๅฎšๅคๅˆถไปฃ็ ๅŠŸ่ƒฝ this.copyCode(el, data); }); } /** * ่Žทๅ–ๆธฒๆŸ“ๆจกๆฟ * @param {Object} data - ๆธฒๆŸ“ๆ•ฐๆฎ */ getRenderTemplate(data) { const renderData = Object.assign(this.getDefaultData(), data); return this.templates_ .findAndRenderTemplate(this.element, renderData) .then((el) => { this.clearDom(); return el; }); } /** * ๆธ…้™คDOMๅ†…ๅฎน */ clearDom() { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); } /** * ่Žทๅ–้ป˜่ฎคๆ•ฐๆฎ * @returns {Object} ้ป˜่ฎคๆ•ฐๆฎๅฏน่ฑก */ getDefaultData() { return { isMobile: appDiscountUtils.judgeMobile(), isRTL: appDiscountUtils.judgeRTL(), image_domain: this.win.SHOPLAZZA.image_domain, copyBtnClass: this.copyBtnClass, copyClass: this.copyClass } } /** * ๅคๅˆถไผ˜ๆƒ ็ ๅŠŸ่ƒฝ * @param {Element} el - ๅฝ“ๅ‰ๅ…ƒ็ด  */ copyCode(el) { const copyBtnList = el.querySelectorAll(`.${this.copyBtnClass}`); if (copyBtnList.length > 0) { copyBtnList.forEach(item => { item.onclick = async () => { // ็กฎไฟ่Žทๅ–ๆญฃ็กฎ็š„ๅ…ƒ็ด ๅ’Œๅ†…ๅฎน const codeElement = item.querySelector(`.${this.copyClass}`); if (!codeElement) return; // ่Žทๅ–็บฏๆ–‡ๆœฌๅ†…ๅฎน const textToCopy = codeElement.innerText.trim(); // ๅฐ่ฏ•ไฝฟ็”จ็ŽฐไปฃAPI๏ผŒๅฆ‚ๆžœๅคฑ่ดฅๅˆ™ไฝฟ็”จๅค‡็”จๆ–นๆกˆ try { if (navigator.clipboard && navigator.clipboard.writeText) { await navigator.clipboard.writeText(textToCopy); } else { throw new Error('Clipboard API not available'); } // ๆ˜พ็คบๅคๅˆถๆˆๅŠŸๆ็คบ this.showCopySuccessToast(textToCopy, el); } catch (err) { console.error('Modern clipboard API failed, trying fallback...', err); // ไฝฟ็”จๅค‡็”จๅคๅˆถๆ–นๆกˆ this.fallbackCopy(textToCopy, el); } const discountId = item.dataset["discountId"]; // ๆ˜ฏๅฆ่ทณ่ฝฌ่ฝๅœฐ้กต้…็ฝฎ const redirection = item.dataset["redirection"] === "true"; // ่ทณ่ฝฌๅˆฐ่ฝๅœฐ้กต if (redirection && appDiscountUtils.inProductBody(this.element)) { this.win.open(`/promotions/discount-default/${discountId}`); } } }) } } /** * ไฝฟ็”จ execCommand ็š„ๅคๅˆถๆ–นๆกˆ * @param {string} codeText - ่ฆๅคๅˆถ็š„ๆ–‡ๆœฌ * @param {Element} el - ๅฝ“ๅ‰ๅ…ƒ็ด  */ fallbackCopy(codeText, el) { const textarea = this.win.document.createElement('textarea'); textarea.value = codeText; // ่ฎพ็ฝฎๆ ทๅผไฝฟๆ–‡ๆœฌๆก†ไธๅฏ่ง textarea.style.position = 'fixed'; textarea.style.left = '-9999px'; textarea.style.top = '0'; // ๆทปๅŠ  readonly ๅฑžๆ€ง้˜ฒๆญข็งปๅŠจ็ซฏ่™šๆ‹Ÿ้”ฎ็›˜ๅผนๅ‡บ textarea.setAttribute('readonly', 'readonly'); this.win.document.body.appendChild(textarea); textarea.focus(); textarea.select(); try { this.win.document.execCommand('copy'); // ๆ˜พ็คบๅคๅˆถๆˆๅŠŸๆ็คบ this.showCopySuccessToast(codeText, el); } catch (err) { console.error('Copy failed:', err); } this.win.document.body.removeChild(textarea); } /** * ๅˆ›ๅปบ Toast ๅ…ƒ็ด  * @returns {Element} ๅˆ›ๅปบ็š„ Toast ๅ…ƒ็ด  */ createToastEl_() { const toast = document.createElement('ljs-toast'); toast.setAttribute('layout', 'nodisplay'); toast.setAttribute('hidden', ''); toast.setAttribute('id', 'discount-code-toast'); toast.style.zIndex = '1051'; return toast; } /** * ๆŒ‚่ฝฝ Toast ๅ…ƒ็ด ๅˆฐ body * @returns {Element} ๆŒ‚่ฝฝ็š„ Toast ๅ…ƒ็ด  */ mountToastToBody_() { const existingToast = this.win.document.getElementById('discount-code-toast'); if (existingToast) { return existingToast; } const toast = this.createToastEl_(); this.win.document.body.appendChild(toast); return toast; } /** * ๅคๅˆถๆˆๅŠŸ็š„ๆ้†’ * @param {string} codeText - ่ฆๅคๅˆถ็š„ๆ–‡ๆœฌ * @param {Element} el - ๅฝ“ๅ‰ๅ…ƒ็ด  */ showCopySuccessToast(codeText, el) { const $toast = this.mountToastToBody_(); SPZ.whenApiDefined($toast).then(toast => { toast.showToast("Discount code copied !"); this.codeCopyInSessionStorage(codeText); }); } /** * ๅคๅˆถไผ˜ๆƒ ็ ๆˆๅŠŸๅŽ่ฆๅญ˜ไธ€ไปฝๅˆฐๆœฌๅœฐๅญ˜ๅ‚จไธญ๏ผŒ่ดญ็‰ฉ่ฝฆไฝฟ็”จ * @param {string} codeText - ่ฆๅคๅˆถ็š„ๆ–‡ๆœฌ */ codeCopyInSessionStorage(codeText) { try { sessionStorage.setItem('other-copied-coupon', codeText); } catch (error) { console.error(error) } } } // ๆณจๅ†Œ่‡ชๅฎšไน‰ๅ…ƒ็ด  SPZ.defineElement('spz-custom-discount-code-model', SpzCustomDiscountCodeModel);
/** * Custom discount code component that handles displaying and managing discount codes * @extends {SPZ.BaseElement} */ class SpzCustomDiscountCode extends SPZ.BaseElement { constructor(element) { super(element); // API endpoint for fetching discount codes this.getDiscountCodeApi = "\/api\/storefront\/promotion\/code\/list"; // Debounce timer for resize events this.timer = null; // Current variant ID this.variantId = "0db3ef3f-4968-49a5-b4b0-396742c4a755"; // Store discount code data this.discountCodeData = {} } /** * Check if layout is supported * @param {string} layout - Layout type * @return {boolean} */ isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } /** * Initialize component after build */ buildCallback() { this.templates_ = SPZServices.templatesForDoc(); this.viewport_ = this.getViewport(); // Bind methods to maintain context this.render = this.render.bind(this); this.resize = this.resize.bind(this); this.switchVariant = this.switchVariant.bind(this); } /** * Setup component when mounted */ mountCallback() { this.getData(); // Add event listeners this.viewport_.onResize(this.resize); this.win.document.addEventListener('dj.variantChange', this.switchVariant); } /** * Cleanup when component is unmounted */ unmountCallback() { this.viewport_.removeResize(this.resize); this.win.document.removeEventListener('dj.variantChange', this.switchVariant); // ๆธ…้™คๅฎšๆ—ถๅ™จ if (this.timer) { clearTimeout(this.timer); this.timer = null; } } /** * Handle resize events with debouncing */ resize() { if (this.timer) { clearTimeout(this.timer) this.timer = null; } this.timer = setTimeout(() => { if (appDiscountUtils.inProductBody(this.element)) { this.render(); } else { this.renderSkeleton(); } }, 200); } /** * Handle variant changes * @param {Event} event - Variant change event */ switchVariant(event) { const variant = event.detail.selected; if (variant.product_id == '1ebbe88d-3b4b-4ad8-89b9-c87b637f9d14' && variant.id != this.variantId) { this.variantId = variant.id; this.getData(); } } /** * Fetch discount code data from API */ getData() { if (appDiscountUtils.inProductBody(this.element)) { const reqBody = { product_id: "1ebbe88d-3b4b-4ad8-89b9-c87b637f9d14", variant_id: this.variantId, product_type: "default", } if (!reqBody.product_id || !reqBody.variant_id) return; this.discountCodeData = {}; this.win.fetch(this.getDiscountCodeApi, { method: "POST", body: JSON.stringify(reqBody), headers: { "Content-Type": "application/json" } }).then(async (response) => { if (response.ok) { let data = await response.json(); if (data.list && data.list.length > 0) { data.list[0].product_setting.template_config = JSON.parse(data.list[0].product_setting.template_config); // Format timestamps to local timezone const zone = this.win.SHOPLAZZA.shop.time_zone; data.list = data.list.map(item => { if(+item.ends_at !== -1) { item.ends_at = appDiscountUtils.convertTimestampToFormat(+item.ends_at, zone); } item.starts_at = appDiscountUtils.convertTimestampToFormat(+item.starts_at, zone); return item; }); } this.discountCodeData = data; this.render(); } else { this.clearDom(); } }).catch(err => { console.error("discount_code", err) this.clearDom(); }); } else { this.renderSkeleton(); } } /** * Clear component DOM except template */ clearDom() { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); } /** * Render discount codes with formatted dates */ render() { // Render using discount code model SPZ.whenApiDefined(document.querySelector('#spz_custom_discount_code_model')).then(renderApi => { renderApi.doRender_({ discountCodeData: this.discountCodeData }) }).catch(err => { this.clearDom(); }) } renderSkeleton() { // Render template for non-product pages this.templates_ .findAndRenderTemplate(this.element, { isMobile: appDiscountUtils.judgeMobile() }) .then((el) => { this.clearDom(); this.element.appendChild(el); }) .catch(err => { this.clearDom(); }); } } // Register custom element SPZ.defineElement('spz-custom-discount-code', SpzCustomDiscountCode);

finish size

Please select a finish size

Quantity

Free worldwide shipping over $39.99
30-Day Returns
24h Customer service
Secure payments

Craft the Perfect Mini Pouch for Everyday Essentials!

Looking for a cute, functional way to store your everyday items? The Mini Pouch Sewing Template is your ticket to crafting adorable pouches that are as stylish as they are practical. With three different sizesโ€”4.5 inches, 5.5 inches, and 7 inchesโ€”these pouches are perfect for storing makeup, small gadgets, or any of your favorite on-the-go essentials. Whether you need an organizer for your purse or a fun, handmade gift, these mini pouches are the perfect project to show off your sewing skills. ๐Ÿงต๐Ÿ’„

  • Three Versatile Sizes: Choose the perfect size for your needs. From the smaller 4.5-inch pouch for a compact option, to the 7-inch pouch that holds more, you can create pouches that fit any purpose!
  • No Measuring, No Stress: Forget the hassle of measuring! Our precision sewing templates make cutting fabric a breeze. Just follow the tutorial, and youโ€™ll have a perfectly sized pouch every time. Plus, these templates are reusable, so you can make multiple pouches in different fabrics and themes! ๐ŸŽจ
  • Customizable Designs: Use your creativity to personalize your pouches. Want two compartments for makeup brushes and lip gloss? You got it! Make pouches with a single opening, multiple compartments, or add fun embellishments like buttons and ribbons. ๐ŸŒŸ

Whatโ€™s Inside the Kit? ๐Ÿ“ฆ

  1. Precision Sewing Templates
    • Accurate, easy-to-use templates to ensure your pouches are perfectly sized.
  2. Clear, Step-by-Step Instructions
    • Even if you're a beginner, our simple and detailed tutorial will guide you through the entire process, so you can craft like a pro! ๐Ÿชก
  3. Creative Flexibility
    • Use different fabrics, colors, and patterns to create a whole collection of pouches for any occasion. The possibilities are endless!

Perfect for Crafters & DIY Lovers ๐Ÿงต๐ŸŽจ

  • Sewing Beginners: If youโ€™re new to sewing, this is the perfect project to practice your skills while making something practical and fun!
  • DIY Enthusiasts: If you love creating your own accessories or home decor, these pouches are ideal for adding your personal touch to everyday items.
  • Gift-Giving Lovers: Need a thoughtful gift for a friend or family member? These handmade pouches are perfect for gifting, whether filled with beauty products, jewelry, or just as a charming organizer. ๐ŸŽ๐Ÿ’

The Perfect Gift for Any Occasion ๐ŸŽ

Looking for a gift idea thatโ€™s both thoughtful and handmade? These mini pouches make perfect gifts for birthdays, holidays, or just because! Fill them with small treats or keep them simple for a chic accessory. Either way, youโ€™ll be giving a gift thatโ€™s personal and practical.

Ready to Sew Your Mini Pouch? ๐Ÿ›’

Get the Mini Pouch Sewing Template and start creating beautiful, functional pouches today! Whether youโ€™re organizing your makeup, tech gadgets, or creating a unique gift, these pouches are the perfect addition to your DIY collection.

[ย ย After purchase, we will also attach a detailed sewing tutorial with your productย ย ]

  • Fast and precise without sacrificing accuracy!
  • Instructions and video tutorials!
  • Easy to follow, concise, fast and easy to understand.

our guarantee

We believe we make some of the most innovative products in the world, and we want to make sure we'reย ย ย backingย our 180-day risk-free ironclad guarantee.

If for anyย ย reason you do not have a positive experience, we will do everythingย ย ย toย ย ย make sure you are 100% satisfied with your purchaseย ย .

Buying something online can be a daunting task, so we want you to know that there is absolutely zero risk in buying and trying it outย ย .ย If you don't like it, no hard feelings, we'll make it right.

We haveย ย ย 24/7/365ย ย ย ticket and email support.ย If you need help, please contact us.

๐Ÿ”’ Payment

Welcome to PayPal here.ย If you don't have a PayPal account, we accept all credit cards: just selectย ย ย "PayPal"ย ย ย and clickย  theย "Pay with Debit or Credit Card"ย ย ย button.

Customer Reviews

6
Kathy Nunn
Jul 35,2024

Very pretty!

Pamela Ade
Aug 11, 2024

Canโ€™t wait to stitch this for my daughter in law. It really is โ€œjust her!โ€ ๐Ÿ˜

Jane Bautch
Aug 6,2024

I have been adding a key chain to mine.For the one I kept for myself i also added a charm and a second hook for my keys!

Brenda Gerritsen
Sep 18, 2023

Oh my gosh, so cute! Planning on giving it to my daughter for Christmas after I finish it. I know she is going to love it. The kit itself would also be a great gift. Itโ€™s all packaged up very nicely with clear instructions.

Alyssa
Aug 20, 2024

I loved this kit! It came with everything needed including detailed directions. I'm so happy with how it turned out!

Anna Holubkovรก
Jul 19, 2024

Amazing pattern, easy to stitch, with all the instructions (including videos) and recommendations for the threats!