{"version":3,"file":"benefitsService.js","sources":["../../../src/constants/cards/cardRank.js","../../../src/constants/cards/business.js","../../../src/assets/scripts/creditcard/benefitsService.js"],"sourcesContent":["//それぞれmicroCMSのcontentsIdに合わせる。\nconst CARD_RANKS = {\n NORMAL: { ID: 'normal', LABEL: '一般カード' },\n GOLD: { ID: 'gold', LABEL: 'ゴールドカード' },\n PLATINUM: { ID: 'platinum', LABEL: 'プラチナカード' },\n}\nmodule.exports = { CARD_RANKS }\n","const BUSINESS_CATEGORY = {\n SELF_EMPLOYEE: '個人事業主',\n SMALL_COMPANY: '中小企業',\n BIG_COMPANY: '大企業',\n}\n\nconst BUSINESS_CARD_LABEL_NAME = 'business' //card-filteringで検索に使われる条件値の名称\n\nconst BUSINESS_CARD_FILTER_NAME = 'ビジネスカード'\n\nmodule.exports = { BUSINESS_CATEGORY, BUSINESS_CARD_LABEL_NAME, BUSINESS_CARD_FILTER_NAME }\n","import { CARD_RANKS } from '../../../constants/cards/cardRank'\nimport { BUSINESS_CARD_LABEL_NAME } from '../../../constants/cards/business'\nconst kindOfCards = [Object.keys(CARD_RANKS).map(key => CARD_RANKS[key].ID), BUSINESS_CARD_LABEL_NAME].flat()\nconst noResultView = document.querySelector('.sc21-CreditCardBenefitList-noResult')\nconst submitButton = document.querySelector('.sc21-CreditCardBenefitListForm-submit')\nconst categoryInputs = document.getElementsByName('category')\nconst benefitItems = document.getElementsByClassName('benefitFilterItem')\nconst cardTypeInputs = document.getElementsByName('type')\nconst contentsArea = document.querySelector('.sc21-CreditCardBenefitList-list')\ncardTypeInputs.forEach(elm => elm.addEventListener('click', onChangeCardTypeInput))\nsubmitButton.addEventListener('click', onClickSearchButton)\ncategoryInputs.forEach(elm => elm.addEventListener('change', onChangeCategoryInput))\n\nlet searchCategoryConditions = []\nlet searchCardTypeConditions = []\nfunction onChangeCategoryInput(event) {\n event.target.checked\n ? searchCategoryConditions.push(event.target.value)\n : (searchCategoryConditions = searchCategoryConditions.filter(key => key !== event.target.value))\n}\nfunction onChangeCardTypeInput(event) {\n if (searchCardTypeConditions.includes(event.target.value)) {\n event.target.checked = false\n searchCardTypeConditions = searchCardTypeConditions.filter(tag => tag !== event.target.value)\n } else {\n searchCardTypeConditions = [\n searchCardTypeConditions.filter(tag => !kindOfCards.includes(tag)),\n event.target.value,\n ].flat()\n }\n}\n\nfunction onClickSearchButton() {\n scrollToTarget(contentsArea)\n Array.from(benefitItems).forEach(elm => {\n elm.style.display = 'none'\n const ranks = elm.dataset.ranks.split(',')\n const category = elm.dataset.categories.split(',')\n const isFullfilledRankCondition = searchCardTypeConditions.length\n ? ranks.includes(searchCardTypeConditions[0])\n : true\n const isFullfilledCategoryConditions = searchCategoryConditions.length\n ? searchCategoryConditions.some(inputValue => category.includes(inputValue))\n : true\n const isFullfilledConditions = isFullfilledRankCondition && isFullfilledCategoryConditions\n if (isFullfilledConditions) {\n fadeIn(elm, 'list-item')\n }\n })\n const isResultLength = [...benefitItems].every(elm => elm.style.display === 'none')\n isResultLength ? (noResultView.style.display = 'block') : (noResultView.style.display = 'none')\n}\n\nfunction fadeIn(el, display) {\n el.style.opacity = 0\n el.style.display = display || 'block'\n ;(function fade() {\n let val = parseFloat(el.style.opacity)\n if (!((val += 0.1) > 1)) {\n el.style.opacity = val\n requestAnimationFrame(fade)\n }\n })()\n}\n\nfunction scrollToTarget(target) {\n const targetPosition = target.getBoundingClientRect().top\n const offset = window.pageYOffset\n window.scrollTo({\n top: offset + targetPosition,\n behavior: 'smooth',\n })\n}\n"],"names":["cardRank","CARD_RANKS","NORMAL","ID","LABEL","GOLD","PLATINUM","business","BUSINESS_CATEGORY","SELF_EMPLOYEE","SMALL_COMPANY","BIG_COMPANY","BUSINESS_CARD_LABEL_NAME","BUSINESS_CARD_FILTER_NAME","kindOfCards","Object","keys","map","key","flat","noResultView","document","querySelector","submitButton","categoryInputs","getElementsByName","benefitItems","getElementsByClassName","cardTypeInputs","contentsArea","forEach","elm","addEventListener","onChangeCardTypeInput","target","targetPosition","getBoundingClientRect","top","offset","window","pageYOffset","scrollTo","behavior","scrollToTarget","Array","from","style","display","ranks","dataset","split","category","categories","isFullfilledRankCondition","searchCardTypeConditions","length","includes","isFullfilledCategoryConditions","searchCategoryConditions","some","inputValue","el","opacity","fade","val","parseFloat","requestAnimationFrame","every","onChangeCategoryInput","event","checked","push","value","filter","tag"],"mappings":"+FAMAA,EAAiB,CAAEC,WALA,CACjBC,OAAQ,CAAEC,GAAI,SAAUC,MAAO,SAC/BC,KAAM,CAAEF,GAAI,OAAQC,MAAO,WAC3BE,SAAU,CAAEH,GAAI,WAAYC,MAAO,aCMrC,IAAAG,EAAiB,CAAEC,kBAVO,CACxBC,cAAe,QACfC,cAAe,OACfC,YAAa,OAOuBC,yBAJL,WAI+BC,0BAF9B,WCNlC,MAAMC,EAAc,CAACC,OAAOC,KAAKf,EAAUA,YAAEgB,KAAIC,GAAOjB,EAAUA,WAACiB,GAAKf,KAAKS,EAAwBA,0BAAEO,OACjGC,EAAeC,SAASC,cAAc,wCACtCC,EAAeF,SAASC,cAAc,0CACtCE,EAAiBH,SAASI,kBAAkB,YAC5CC,EAAeL,SAASM,uBAAuB,qBAC/CC,EAAiBP,SAASI,kBAAkB,QAC5CI,EAAeR,SAASC,cAAc,oCAC5CM,EAAeE,SAAQC,GAAOA,EAAIC,iBAAiB,QAASC,KAC5DV,EAAaS,iBAAiB,SAsB9B,YAiCA,SAAwBE,GACtB,MAAMC,EAAiBD,EAAOE,wBAAwBC,IAChDC,EAASC,OAAOC,YACtBD,OAAOE,SAAS,CACdJ,IAAKC,EAASH,EACdO,SAAU,UAEd,EAvCEC,CAAed,GACfe,MAAMC,KAAKnB,GAAcI,SAAQC,IAC/BA,EAAIe,MAAMC,QAAU,OACpB,MAAMC,EAAQjB,EAAIkB,QAAQD,MAAME,MAAM,KAChCC,EAAWpB,EAAIkB,QAAQG,WAAWF,MAAM,KACxCG,GAA4BC,EAAyBC,QACvDP,EAAMQ,SAASF,EAAyB,IAEtCG,GAAiCC,EAAyBH,QAC5DG,EAAyBC,MAAKC,GAAcT,EAASK,SAASI,KAWtE,IAAgBC,EAAId,EATeM,GAA6BI,IAS5CV,EAPF,aAOFc,EAPH9B,GAQRe,MAAMgB,QAAU,EACnBD,EAAGf,MAAMC,QAAUA,GAAW,QAC7B,SAAUgB,IACT,IAAIC,EAAMC,WAAWJ,EAAGf,MAAMgB,UACvBE,GAAO,IAAO,IACnBH,EAAGf,MAAMgB,QAAUE,EACnBE,sBAAsBH,GAEzB,CANA,GATE,IAEoB,IAAIrC,GAAcyC,OAAMpC,GAA6B,SAAtBA,EAAIe,MAAMC,UAC9C3B,EAAa0B,MAAMC,QAAU,QAAY3B,EAAa0B,MAAMC,QAAU,MAC1F,IAxCAvB,EAAeM,SAAQC,GAAOA,EAAIC,iBAAiB,SAAUoC,KAE7D,IAAIV,EAA2B,GAC3BJ,EAA2B,GAC/B,SAASc,EAAsBC,GAC7BA,EAAMnC,OAAOoC,QACTZ,EAAyBa,KAAKF,EAAMnC,OAAOsC,OAC1Cd,EAA2BA,EAAyBe,QAAOvD,GAAOA,IAAQmD,EAAMnC,OAAOsC,OAC9F,CACA,SAASvC,EAAsBoC,GACzBf,EAAyBE,SAASa,EAAMnC,OAAOsC,QACjDH,EAAMnC,OAAOoC,SAAU,EACvBhB,EAA2BA,EAAyBmB,QAAOC,GAAOA,IAAQL,EAAMnC,OAAOsC,SAEvFlB,EAA2B,CACzBA,EAAyBmB,QAAOC,IAAQ5D,EAAY0C,SAASkB,KAC7DL,EAAMnC,OAAOsC,OACbrD,MAEN"}