{"version":3,"file":"validation-23babaa5.js","sources":["../../../app/javascript/javascripts/utils/custom_validators.ts","../../../app/javascript/javascripts/composables/inquiry/validation.ts"],"sourcesContent":["// Vuelidateã§ä½¿ã†ã‚«ã‚¹ã‚¿ãƒ ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³é–¢æ•°\n\nimport { helpers } from '@vuelidate/validators';\n\n/**\n * 電話番å·ã®æ¡æ•°ãŒæ£ã—ã„\n */\nexport const telDigitLength = (tel: number | string) => {\n if(!helpers.req(tel)) return true;\n\n // ãƒã‚¤ãƒ•ãƒ³ãªã©ã‚’å–り除ã\n const numOnly = tel.toString().replace(/[-ï¼ãƒ¼â€•]/g, \"\");\n\n // æ£ã—ã„æ¡æ•°ï¼šæºå¸¯é›»è©±ã®å ´åˆã¯11æ¡ã€ãれ以外ã¯10æ¡\n const validLength = /^(090|080|070|050|ï¼ï¼™ï¼|ï¼ï¼˜ï¼|ï¼ï¼—ï¼|ï¼ï¼•ï¼)/.test(numOnly) ? 11 : 10;\n\n return numOnly.length === validLength;\n}\n\n/**\n * 電話番å·ã®ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆãŒæ£ã—ã„\n */\nexport const telFormat = (tel: number | string) => {\n return !helpers.req(tel) || !telDigitLength(tel) || /^[0ï¼][0-9ï¼-ï¼™]{1,4}[-ï¼ãƒ¼â€•]{0,1}[0-9ï¼-ï¼™]{2,4}[-ï¼ãƒ¼â€•]{0,1}[0-9ï¼-ï¼™]{4}$/.test(tel.toString())\n}\n\n/**\n * å¹´åŽã®ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆãŒæ£ã—ã„\n */\nexport const annualIncomeFormat = (num: number | string) => {\n // åŠè§’æ•°å—ã®ã¿ã‚’許容ã—ã€0ã§å§‹ã¾ã‚‰ãªã„ã“ã¨ã‚’確èªã™ã‚‹æ£è¦è¡¨ç¾\n const regex = /^(?!0)[0-9]+$/;\n return regex.test(num.toString());\n}\n\nexport default {\n telDigitLength,\n telFormat,\n annualIncomeFormat\n};\n","// å•ã„åˆã‚ã›ãƒ•ã‚©ãƒ¼ãƒ ã®ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³\n// vuelidateã®ãƒ©ãƒƒãƒ‘ーãªã®ã§ã€åˆ©ç”¨ã®éš›ã¯vuelidateã®ãƒ‰ã‚ュメント(https://vuelidate-next.netlify.app/)ã‚‚å‚ç…§ãã ã•ã„。\n\nimport { useVuelidate } from '@vuelidate/core';\nimport { required, maxLength, email, helpers } from '@vuelidate/validators';\nimport { telDigitLength, telFormat } from '@/javascripts/utils/custom_validators';\n\nimport type { Ref } from 'vue';\nimport type { Validation, ValidationRuleCollection } from '@vuelidate/core';\nimport type Inquiry from '@/javascripts/utils/inquiry';\n\n/** ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³ã™ã‚‹é …ç›® */\nexport type ValidationKey =\n 'employmentTypeCd' | 'wishfulTimeCd' | 'prefectureCd' |\n 'lastName' | 'firstName' | 'lastNameKana' | 'firstNameKana' |\n 'birthYearCd' | 'phone' | 'email' | 'comment';\n\n/** ãŠåå‰ã®ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³ãƒ«ãƒ¼ãƒ« */\nconst nameValidators: ValidationRuleCollection<string> = {\n required: helpers.withMessage('ãŠåå‰ã‚’入力ã—ã¦ãã ã•ã„', required),\n maxLength: helpers.withMessage('30æ–‡å—以内ã§å…¥åŠ›ã—ã¦ãã ã•ã„', maxLength(30))\n};\n\n/** ãµã‚ŠãŒãªã®ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³ãƒ«ãƒ¼ãƒ« */\nconst kanaValidators: ValidationRuleCollection<string> = {\n required: helpers.withMessage('ãµã‚ŠãŒãªã‚’入力ã—ã¦ãã ã•ã„', required),\n maxLength: helpers.withMessage('30æ–‡å—以内ã§å…¥åŠ›ã—ã¦ãã ã•ã„', maxLength(30))\n};\n\n/** ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³ãƒ«ãƒ¼ãƒ«ã®ãƒ†ãƒ³ãƒ—レート */\nexport type ValidationRules = {\n [keys in ValidationKey]: ValidationRuleCollection<Inquiry[keys]>\n};\n\nexport const rules: ValidationRules = {\n employmentTypeCd: {\n required: helpers.withMessage('ã”希望ã®é›‡ç”¨å½¢æ…‹ã‚’é¸æŠžã—ã¦ãã ã•ã„', required)\n },\n wishfulTimeCd: {\n required: helpers.withMessage('ã”希望ã®è»¢è·æ™‚期をé¸æŠžã—ã¦ãã ã•ã„', required)\n },\n prefectureCd: {\n required: helpers.withMessage('ãŠä½ã¾ã„ã®éƒ½é“府県をé¸æŠžã—ã¦ãã ã•ã„', required)\n },\n lastName: nameValidators,\n firstName: nameValidators,\n lastNameKana: kanaValidators,\n firstNameKana: kanaValidators,\n birthYearCd: {\n required: helpers.withMessage('生ã¾ã‚Œå¹´ã‚’é¸æŠžã—ã¦ãã ã•ã„', required)\n },\n phone: {\n required: helpers.withMessage('電話番å·ã‚’入力ã—ã¦ãã ã•ã„', required),\n telDigitLength: helpers.withMessage('電話番å·ã®æ¡æ•°ãŒæ£ã—ãã‚ã‚Šã¾ã›ã‚“', telDigitLength),\n telFormat: helpers.withMessage('電話番å·ãŒæ£ã—ãã‚ã‚Šã¾ã›ã‚“', telFormat)\n },\n email: {\n email: helpers.withMessage('メールアドレスãŒæ£ã—ãã‚ã‚Šã¾ã›ã‚“', email),\n maxLength: helpers.withMessage('80æ–‡å—以内ã§å…¥åŠ›ã—ã¦ãã ã•ã„', maxLength(80))\n },\n comment: {\n maxLength: helpers.withMessage('400æ–‡å—以内ã§å…¥åŠ›ã—ã¦ãã ã•ã„', maxLength(400))\n }\n}\n\n/** ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³å¯¾è±¡ã¨ãªã‚‹å•ã„åˆã‚ã›ã‚ªãƒ–ジェクト */\ntype InquiryObj = Pick<Inquiry, ValidationKey>;\n\n/** å•ã„åˆã‚ã›ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³ */\nexport type InquiryValidation = Validation<ValidationRules, InquiryObj>;\n\n/** ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³ãƒ«ãƒ¼ãƒ«(ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³é …目を指定) */\nexport type PickValidationRules<T extends ValidationKey> = Pick<ValidationRules, T>;\n/** å•ã„åˆã‚ã›ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³(ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³é …目を指定) */\nexport type PickInquiryValidation<T extends ValidationKey> = Validation<PickValidationRules<T>, InquiryObj>;\n\n/**\n * å•ã„åˆã‚ã›ãƒ•ã‚©ãƒ¼ãƒ ã®ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³ã«é–¢ã™ã‚‹ã‚³ãƒ³ãƒãƒ¼ã‚¶ãƒ–ル関数\n * @param inquiry ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³ã™ã‚‹å•ã„åˆã‚ã›ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹\n */\nexport function useInquiryValidation(inquiry: InquiryObj | Ref<InquiryObj>): Ref<InquiryValidation>;\n\n/**\n * å•ã„åˆã‚ã›ãƒ•ã‚©ãƒ¼ãƒ ã®ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³ã«é–¢ã™ã‚‹ã‚³ãƒ³ãƒãƒ¼ã‚¶ãƒ–ル関数(ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³é …目を指定)\n * @param inquiry ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³ã™ã‚‹å•ã„åˆã‚ã›ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹\n * @param validationFields ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³ã™ã‚‹é …ç›®\n */\nexport function useInquiryValidation<T extends ValidationKey>(\n inquiry: InquiryObj | Ref<InquiryObj>,\n validationFields: T[]\n): Ref<PickInquiryValidation<T>>;\n\n// オーãƒãƒ¼ãƒãƒ¼ãƒ‰é–¢æ•°ã®å®Ÿè£…\nexport function useInquiryValidation<T extends ValidationKey>(\n inquiry: InquiryObj | Ref<InquiryObj>,\n validationFields?: T[]\n) {\n if (validationFields) {\n const pickRules = validationFields.reduce((obj, key) => {\n obj[key] = rules[key];\n return obj;\n }, {} as PickValidationRules<T>);\n return useVuelidate(pickRules, inquiry, { $autoDirty: true });\n }\n else {\n return useVuelidate(rules, inquiry, { $autoDirty: true });\n }\n}\n\nexport default useInquiryValidation;\n"],"names":["telDigitLength","tel","helpers","numOnly","validLength","telFormat","annualIncomeFormat","num","nameValidators","required","maxLength","kanaValidators","rules","email","useInquiryValidation","inquiry","validationFields","pickRules","obj","key","useVuelidate"],"mappings":"+XAOa,MAAAA,EAAkBC,GAAyB,CACnD,GAAA,CAACC,EAAQ,IAAID,CAAG,EAAU,MAAA,GAG7B,MAAME,EAAUF,EAAI,SAAA,EAAW,QAAQ,UAAW,EAAE,EAG9CG,EAAc,qCAAqC,KAAKD,CAAO,EAAI,GAAK,GAE9E,OAAOA,EAAQ,SAAWC,CAC5B,EAKaC,EAAaJ,GACjB,CAACC,EAAQ,IAAID,CAAG,GAAK,CAACD,EAAeC,CAAG,GAAK,oEAAoE,KAAKA,EAAI,SAAU,CAAA,EAMhIK,EAAsBC,GAEnB,gBACD,KAAKA,EAAI,SAAU,CAAA,ECd5BC,EAAmD,CACvD,SAAUN,EAAQ,YAAY,eAAgBO,CAAQ,EACtD,UAAWP,EAAQ,YAAY,kBAAmBQ,EAAU,EAAE,CAAC,CACjE,EAGMC,EAAmD,CACvD,SAAUT,EAAQ,YAAY,gBAAiBO,CAAQ,EACvD,UAAWP,EAAQ,YAAY,kBAAmBQ,EAAU,EAAE,CAAC,CACjE,EAOaE,EAAyB,CACpC,iBAAkB,CAChB,SAAUV,EAAQ,YAAY,oBAAqBO,CAAQ,CAC7D,EACA,cAAe,CACb,SAAUP,EAAQ,YAAY,oBAAqBO,CAAQ,CAC7D,EACA,aAAc,CACZ,SAAUP,EAAQ,YAAY,qBAAsBO,CAAQ,CAC9D,EACA,SAAUD,EACV,UAAWA,EACX,aAAcG,EACd,cAAeA,EACf,YAAa,CACX,SAAUT,EAAQ,YAAY,gBAAiBO,CAAQ,CACzD,EACA,MAAO,CACL,SAAUP,EAAQ,YAAY,gBAAiBO,CAAQ,EACvD,eAAgBP,EAAQ,YAAY,mBAAoBF,CAAc,EACtE,UAAWE,EAAQ,YAAY,gBAAiBG,CAAS,CAC3D,EACA,MAAO,CACL,MAAOH,EAAQ,YAAY,mBAAoBW,CAAK,EACpD,UAAWX,EAAQ,YAAY,kBAAmBQ,EAAU,EAAE,CAAC,CACjE,EACA,QAAS,CACP,UAAWR,EAAQ,YAAY,mBAAoBQ,EAAU,GAAG,CAAC,CACnE,CACF,EA8BgB,SAAAI,EACdC,EACAC,EACA,CACA,GAAIA,EAAkB,CACpB,MAAMC,EAAYD,EAAiB,OAAO,CAACE,EAAKC,KAC1CD,EAAAC,CAAG,EAAIP,EAAMO,CAAG,EACbD,GACN,CAA4B,CAAA,EAC/B,OAAOE,EAAaH,EAAWF,EAAS,CAAE,WAAY,GAAM,CAAA,KAG5D,QAAOK,EAAaR,EAAOG,EAAS,CAAE,WAAY,GAAM,CAE5D"}