Ice Cream Maker Attachment KSMICM | KitchenAid (2024)

Ice Cream Maker Attachment

Model: KSMICM

Model: KSMICM

KSMICM

Model: KSMICM

Hurry! Limited Time Offer Ends Soon

Customize Your Stand Mixer (Free)

Personalize your stand mixer with laser engraving and special offers on additional bowls and attachments. Available on select colors.

CUSTOMIZE IT

Ice Cream Maker Attachment KSMICM | KitchenAid (1)

'; setTimeout(function (){ if (window.location.href.indexOf("ksm150") > -1) { if (window.digitalData.product[0].productInfo.availability == "inStock"){ $(".productvariants").append(customSection); } } }, 5000); // How long you want the delay to be, measured in milliseconds. });

Preview in your space

Use your phone camera to see it in your space.

`; class AgileVideoComponent extends HTMLElement { constructor() { super(); this.cfUrl = this.getAttribute("cf-data-url"); this.vidUniqId = `video-`+String(Date.now()); this.jsonData = {}; this.urlSku = ""; this.pageType = window.digitalData.page.pageInfo.pageType; this.pageType = 'productdetail'; if (this.pageType.includes("productdetail")) { this.urlSku = window.location.pathname.split('p.').pop().split('.') } // ===================== ATTACHING SHADOW AND SETTING DELEGATES FOCUS TO MAKE ELEMENTS INSIDE THE COMPONENT FOCUSABLE ===================== this.attachShadow({ mode: "open", delegatesFocus: true }); this.shadowRoot.appendChild(pdpTemplate.content.cloneNode(true)); this.classList.add('hidden') } connectedCallback() { this.shadowRoot.querySelector('[name=play-icon]').addEventListener('slotchange', (e)=>{ // *** Can I move this to document scoped CSS since it cannot be changed from the within the component scoped styles? *** // If/when this is moved to codebase, we can bring in and use YT internally, which would eliminate the need to bring these in via slots and allow us to use/style them within the component. const playSvg = this.querySelector('.play-svg svg') playSvg.setAttribute('style', 'height:100%;') playSvg.addEventListener('mouseenter',()=>{ playSvg.parentElement.style.scale = '1.15' }) playSvg.addEventListener('mouseleave',()=>{ playSvg.parentElement.style.scale = '1' }) // ************* }) const modal = document.getElementById(this.getAttribute('modal-id')) // if(!window.location.host.includes('aem-author.whirlpool') ){ // this.classList.add('hidden') // }else if(window.location.host.includes('aem-author.whirlpool') ){ this.classList.remove('hidden') this.shadowRoot.querySelector('.headline').textContent = 'Agile Video Placeholder' this.closest('.xf-content-height').style.margin = '0'; this.shadowRoot.querySelector('.img-placeholder').style.display = 'inline-block' } // *** Fetch Content Fragment, Or JSON Data *** // // this.getCfData.bind(this)(); document.addEventListener('readystatechange', ()=>this.getCfData.bind(this)() ) // ************* // } // ===================== FETCH CONTENT FRAGMENT/JSON DATA ===================== // **** Newest Version uses web-workers to handle most of the logic, that will further improve the performance as nearly all the logic will be taken off the main thread **** async getCfData () { if(document.readyState == 'complete' ){ await fetch(this.cfUrl) .then( response => response.json() ) .then( data => this.jsonData = data ) .then( () => this.parseSet.bind(this)(this.jsonData) ) .catch( err => console.log("Getting cf data failed: ", err)) } } // ===================== PARSE CONTENT FRAGMENT DATA ===================== // **** Newest Version uses web-workers to handle most of the logic, that will further improve the performance as nearly all the logic will be taken off the main thread **** async parseSet(data) { let cfObj = this.jsonData || data;// console.log(cfObj, this.urlSku) let foundVid = cfObj["videos"].forEach((vid, i) => { let loadVid = this.urlSku.filter(item=>{ if(!vid["skus"])return return vid["skus"].includes(item) }) // console.log(loadVid) if (this.pageType.includes("productdetail") && loadVid.length>0 ) { this.setPdpVidAttrs({ overline: vid.overline, headline: vid.headline, subtitle: vid.subtitle, dataVideoId: vid.dataVideoId, mobileImg: vid.mobileImg, desktopImg: vid.desktopImg, ctaText: vid.ctaText, ctaTitle: vid.ctaTitle, dataUniqueId: this.vidUniqId, }); } }); } // ===================== SET ATTRIBUTES ===================== setPdpVidAttrs = (vidDataToRender) => { // ===================== CONTENT CARD SELECTORS ===================== const vidSel = this.shadowRoot ? { overline: this.shadowRoot.querySelector(".overline"), headline: this.shadowRoot.querySelector(".headline"), subtitle: this.shadowRoot.querySelector(".subtitle"), ctaText: this.querySelector(".platform-components-video__button .button-text"), playSvg: this.querySelector(".play-svg"), playBtn: this.querySelector('.platform-components-video__button'), desktopImg: this.shadowRoot.querySelector('[media="(min-width: 768px)"]'), mobileImg: this.shadowRoot.querySelector('[media="(max-width: 767px)"]'), img: this.shadowRoot.querySelector( ".image" ), } : ""; this.videoId = vidDataToRender.dataVideoId // Check to see if the agile-video element has been hydrated first to avoid unneccessary work. if(!this.getAttribute('hyrdrated')){ for(const prop in vidDataToRender){ switch(prop){ case 'overline': let contentContainer = this.shadowRoot.querySelector('.agile-pdp-content') let overline = document.createElement('h1') contentContainer.insertAdjacentElement('afterbegin',overline) overline.textContent = vidDataToRender[prop] overline.classList.add('overline') break; case 'headline': // Check to see if ® is in the text, if it is, superscript it vidDataToRender[prop].includes('®') ? vidSel[prop].innerHTML = vidDataToRender[prop].replace('®','®') : vidSel[prop].textContent = vidDataToRender[prop] break; case 'subtitle': // Check to see if ® is in the text, if it is, superscript it vidDataToRender[prop].includes('®') ? vidSel[prop].innerHTML = vidDataToRender[prop].replace('®','®') : vidSel[prop].textContent = vidDataToRender[prop] break; case 'desktopImg': vidSel[prop].getAttribute('srcset', vidDataToRender[prop]) vidSel["img"].setAttribute('src', (window.innerWidth >= 768 ? vidDataToRender[prop] :vidDataToRender["mobileImg"])) break; case 'mobileImg': vidSel[prop].getAttribute('srcset', vidDataToRender[prop]) break; case 'ctaTitle': vidSel["playSvg"].setAttribute('title', vidDataToRender[prop]) vidSel["playBtn"].setAttribute('title', vidDataToRender[prop]) break; case 'dataVideoId': {vidSel["playSvg"].setAttribute('data-video-id', vidDataToRender[prop]) vidSel["playBtn"].setAttribute('data-video-id', vidDataToRender[prop])} break; case 'dataUniqueId': { vidSel["playSvg"].setAttribute('data-unique-id', this.vidUniqId) vidSel["playBtn"].setAttribute('data-unique-id', this.vidUniqId)} break; } } } this.setAttribute('hydrated', ''); this.classList.remove('hidden'); }; } // ===================== CHECK TO MAKE SURE ELEMENT ISN'T ALREADY REGISTERED & REGISTER ===================== if (!customElements.get("agile-video")) { window.customElements.define("agile-video", AgileVideoComponent); }

How to Preview in Your Space

Scan QR Code to view product in your space

  • Point your Phone Camera at a flat surface

    Try a different space if you cannot view the product

  • Moving the product in your space

    Use one finger to move product

  • Scale to see product detail

    Use two fingers to pinch, scale, and rotate product

  • Tap twice to reset

    Return to original scale by double tapping with one finger on the product

Augmented Reality experience is currently supported on the following devices: iPhone on iOS 12+ Android 8.0+ with ARCore 1.9 support

Get Started

Key Features

Make Thick and Creamy Ice Cream at Home

Frozen Treats in Under 30 minutes

Fits select KitchenAid® Stand Mixers*

Bowl Easily Connects to your KitchenAid® Stand Mixer*

Redesigned Dasher for Thorough Ingredient Incorporation

Color:

Other

Hurry! Limited Time Offer Ends Soon

Sign in to unlock lower pricing

FREE SHIPPING

Temporarily out of stock

Success!

We will send you an email when this product is back in stock. Thank you.

in.stock.toast.message

FREE SHIPPING

Provide your ZIP code to check availability in your area.

Estimating In-Home Delivery for ...

Change this location?

Estimated Shipping Date for :

product.tray.arrival.date.unavailable.label

Change this location?

Ice Cream Maker Attachment KSMICM | KitchenAid (3) Ice Cream Maker Attachment KSMICM | KitchenAid (4) Ice Cream Maker Attachment KSMICM | KitchenAid (5) Ice Cream Maker Attachment KSMICM | KitchenAid (6)

Protection Plans(Optional)

  • No-hassle Claim Process
  • Service Scheduled at Your Convenience
  • Multi-year Protection Options
  • Convenient Payment Options

View Full Policy

Flexible Appliance Protection Plans for Your NeedsLearn More

Accessories & Attachments

Items frequently bought together

Ice Cream Maker Attachment KSMICM | KitchenAid (2024)
Top Articles
Latest Posts
Article information

Author: Geoffrey Lueilwitz

Last Updated:

Views: 5839

Rating: 5 / 5 (60 voted)

Reviews: 83% of readers found this page helpful

Author information

Name: Geoffrey Lueilwitz

Birthday: 1997-03-23

Address: 74183 Thomas Course, Port Micheal, OK 55446-1529

Phone: +13408645881558

Job: Global Representative

Hobby: Sailing, Vehicle restoration, Rowing, Ghost hunting, Scrapbooking, Rugby, Board sports

Introduction: My name is Geoffrey Lueilwitz, I am a zealous, encouraging, sparkling, enchanting, graceful, faithful, nice person who loves writing and wants to share my knowledge and understanding with you.