{"version":3,"file":"hearingFieldsOperator-18805c80.js","sources":["../../../app/frontend/models/hearingFieldsOperator.ts"],"sourcesContent":["import { nextTick } from 'vue'\nimport CUSTOM_FIELD_TYPES from '@/constants/customFieldTypes'\n\nexport default function(hearingFieldConfig?: HearingFieldConfig, inputHearingFields?: Inputs) {\n /**\n * サーバから受け取ったヒアリング項目の内容を local state の input の型に assign\n */\n const initInputHearingFields = (): void => {\n let _value: InputValue | undefined = undefined\n\n nextTick(() => {\n hearingFieldConfig?.sections.forEach(section => {\n section.items.forEach(v => {\n _value = v.value !== undefined && v.value !== null\n ? v.value\n : v.fieldType === CUSTOM_FIELD_TYPES.TEXT || v.fieldType === CUSTOM_FIELD_TYPES.SELECT_SINGLE\n ? ''\n : v.fieldType === CUSTOM_FIELD_TYPES.CHECKBOX_MULTI || v.fieldType === CUSTOM_FIELD_TYPES.SELECT_MULTI\n ? []\n : 0\n if (inputHearingFields) {\n Object.assign(inputHearingFields, {\n [`${v.name}`]: {\n name: `${v.name}${hearingFieldConfig.nameSuffix.value}`,\n value: _value,\n validationScheme: v.validationScheme,\n }\n })\n }\n\n // フィールドタイプがテキストボックスか、または ON / OFF タイプのチェックボックスの場合は、追加質問項目は省略\n if (v.fieldType === CUSTOM_FIELD_TYPES.TEXT || v.fieldType === CUSTOM_FIELD_TYPES.CHECKBOX) return\n\n /**\n * 追加質問がある場合の初期処理\n */\n if (v.secondary && v.secondary.primaryItemValues) {\n const isValidType = Array.isArray(v.secondary.primaryItemValues) && v.secondary.primaryItemValues.every(item =>\n typeof item === 'string' || typeof item === 'number'\n )\n const isValidValue = v.secondary.primaryItemValues.every(val =>\n v.selectItems?.some(selector => selector.value === val)\n )\n\n if (!isValidType || !isValidValue) {\n console.warn('invalid pairing value with primary item.')\n return\n }\n\n /**\n * 退避用オブジェクトの生成\n *\n * @description\n * 追加質問項目は、「その他」が選ばれたときしか表示されないため、\n * 「その他」以外が選ばれている場合においても state の input プロパティにオブジェクトが存在してしまうと、\n * 追加質問項目未入力の影響でバリデーションに引っかかり続けてしまうため、\n * 「その他」が選ばれた場合のみ、state にオブジェクトをバインドし、バリデーションの対象とさせる。\n */\n if (\n v.value &&\n v.secondary.primaryItemValues.some(val => (v.value as ReadonlyArray).includes(val))\n ) {\n if (inputHearingFields) {\n Object.assign(inputHearingFields, {\n [`${v.name}${hearingFieldConfig.nameSuffix.secondaryValue}`]: {\n name: `${v.name}${hearingFieldConfig.nameSuffix.secondaryValue}`,\n value: v.secondary.fieldType === CUSTOM_FIELD_TYPES.CHECKBOX_MULTI || v.secondary.fieldType === CUSTOM_FIELD_TYPES.SELECT_MULTI\n ? v.secondary.value || []\n : v.secondary.fieldType === CUSTOM_FIELD_TYPES.CHECKBOX\n ? v.secondary.value || 0\n : v.secondary.value || '',\n validationScheme: v.secondary.validationScheme,\n }\n })\n }\n }\n }\n })\n })\n })\n }\n\n /**\n * ブラウザの「戻る」・「進む」が押下された際にカスタムフィールドのデータを初期化する\n * @description 基本、「戻る」・「進む」であっても、JS オブジェクト自体は揮発するが、\n * テキストフィールド系以外のフォーム系 HTML 要素(select や checkbox 等)は、見た目上選択されているかのような表示になってしまうため、\n * 結果、JS オブジェクトである state の内容は揮発しているが、HTML 要素側の「見た目上」は、さも選択されているかのように振る舞われており、state との乖離が発生する。\n * よって、ブラウザのイベントが発火する際にカスタムフィールドの初期化を行うことで、明示的にコンポーネントの watcher を動かし、初期化データでバインドしてからブラウザ遷移させる\n */\n window.addEventListener('pagehide', () => {\n if (hearingFieldConfig && inputHearingFields) {\n initInputHearingFields()\n }\n })\n\n return {\n // methods\n initInputHearingFields,\n }\n}\n"],"names":["hearingFieldsOperator","hearingFieldConfig","inputHearingFields","initInputHearingFields","_value","nextTick","section","v","CUSTOM_FIELD_TYPES","isValidType","item","isValidValue","_a","selector","val"],"mappings":"0FAGA,SAAAA,EAAwBC,EAAyCC,EAA6B,CAI5F,MAAMC,EAAyB,IAAY,CACzC,IAAIC,EAEJC,EAAS,IAAM,CACOJ,GAAA,MAAAA,EAAA,SAAS,QAAmBK,GAAA,CACtCA,EAAA,MAAM,QAAaC,GAAA,CAmBzB,GAlBSH,EAAAG,EAAE,QAAU,QAAaA,EAAE,QAAU,KAC1CA,EAAE,MACFA,EAAE,YAAcC,EAAmB,MAAQD,EAAE,YAAcC,EAAmB,cAC5E,GACAD,EAAE,YAAcC,EAAmB,gBAAkBD,EAAE,YAAcC,EAAmB,aACtF,CAAA,EACA,EACJN,GACF,OAAO,OAAOA,EAAoB,CAChC,CAAC,GAAGK,EAAE,IAAI,EAAE,EAAG,CACb,KAAM,GAAGA,EAAE,IAAI,GAAGN,EAAmB,WAAW,KAAK,GACrD,MAAOG,EACP,iBAAkBG,EAAE,gBACtB,CAAA,CACD,EAIC,EAAAA,EAAE,YAAcC,EAAmB,MAAQD,EAAE,YAAcC,EAAmB,WAK9ED,EAAE,WAAaA,EAAE,UAAU,kBAAmB,CAC1C,MAAAE,EAAc,MAAM,QAAQF,EAAE,UAAU,iBAAiB,GAAKA,EAAE,UAAU,kBAAkB,MAChGG,GAAA,OAAOA,GAAS,UAAY,OAAOA,GAAS,QAAA,EAExCC,EAAeJ,EAAE,UAAU,kBAAkB,gBACjD,OAAAK,EAAAL,EAAE,cAAF,YAAAK,EAAe,KAAiBC,GAAAA,EAAS,QAAUC,GAAG,EAGpD,GAAA,CAACL,GAAe,CAACE,EAEnB,OAaAJ,EAAE,OACFA,EAAE,UAAU,kBAAkB,KAAaO,GAAAP,EAAE,MAAyC,SAASO,CAAG,CAAC,GAE/FZ,GACF,OAAO,OAAOA,EAAoB,CAChC,CAAC,GAAGK,EAAE,IAAI,GAAGN,EAAmB,WAAW,cAAc,EAAE,EAAG,CAC5D,KAAM,GAAGM,EAAE,IAAI,GAAGN,EAAmB,WAAW,cAAc,GAC9D,MAAOM,EAAE,UAAU,YAAcC,EAAmB,gBAAkBD,EAAE,UAAU,YAAcC,EAAmB,aAC/GD,EAAE,UAAU,OAAS,CACrB,EAAAA,EAAE,UAAU,YAAcC,EAAmB,SAC3CD,EAAE,UAAU,OAAS,EACrBA,EAAE,UAAU,OAAS,GAC3B,iBAAkBA,EAAE,UAAU,gBAChC,CAAA,CACD,CAGP,CAAA,CACD,CAAA,EACF,CACF,CAAA,EAUI,cAAA,iBAAiB,WAAY,IAAM,CACpCN,GAAsBC,GACDC,GACzB,CACD,EAEM,CAEL,uBAAAA,CAAA,CAEJ"}