{"version":3,"file":"ComboBox.cjs","sources":["../../common/ComboBox/ComboBox.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from \"vue\";\n\nimport { ComboBoxProps, ItemType } from \"./types\";\n\nconst { label = \"\", errors = [], items = [], modelValue = \"\" } = defineProps<ComboBoxProps>();\n\nconst emits = defineEmits([\"update:modelValue\"]);\n\nconst value = computed({\n  get: () => modelValue,\n  set: (value2) => emits(\"update:modelValue\", value2),\n});\n\nconst isListOpen = ref(false);\nconst filteredItems = computed(() => {\n  return items.filter((item) => {\n    return item.text.toLowerCase().indexOf(value.value.toLowerCase()) >= 0;\n  });\n});\nconst setSelectedItem = (item: ItemType) => {\n  value.value = item.value;\n  isListOpen.value = false;\n};\nconst onBlur = () => {\n  // delay hiding selection to get the click event\n  setTimeout(() => {\n    isListOpen.value = false;\n  }, 500);\n};\n</script>\n\n<template>\n  <div class=\"combo-container flex flex-col\">\n    <div v-show=\"filteredItems.length > 0 && isListOpen\" class=\"absolute inset-0 z-10\" @click=\"isListOpen = false\" @keydown=\"isListOpen = false\" />\n\n    <div class=\"text-app-gray-900 dark:text-app-gray-300 mb-1 text-sm\" data-testid=\"combobox-label\">\n      {{ label }}\n    </div>\n    <input\n      v-model=\"value\"\n      aria-label=\"input\"\n      type=\"text\"\n      class=\"combo-input-field\"\n      :data-selected-option=\"value\"\n      @focus=\"isListOpen = true\"\n      @blur=\"onBlur\"\n    />\n\n    <div v-if=\"errors.length\" class=\"mt-1 flex px-1\">\n      <div class=\"text-app-error text-xs\">\n        {{ errors[0].$message }}\n      </div>\n    </div>\n    <div v-show=\"filteredItems.length > 0 && isListOpen\" class=\"z-20\">\n      <ul class=\"bg-app-white dark:bg-app-gray-700 dark:shadow-dark absolute w-full overflow-hidden rounded-md shadow-sm\">\n        <li\n          v-for=\"filteredItem in filteredItems\"\n          :key=\"filteredItem.text\"\n          class=\"text-app-gray-500 hover:bg-app-gray-200 dark:text-app-gray-300 dark:hover:bg-app-gray-500 cursor-pointer px-4 py-3 text-sm\"\n          data-testid=\"combobox-option\"\n          @click=\"setSelectedItem(filteredItem)\"\n          @keydown=\"setSelectedItem(filteredItem)\"\n        >\n          {{ filteredItem.text }}\n        </li>\n      </ul>\n    </div>\n  </div>\n</template>\n\n<style scoped>\n@reference \"../../styles/main.css\";\n\n.combo-input-field {\n  @apply z-20 dark:bg-app-gray-800 shadow-inner dark:shadow-none bg-app-white rounded-md border-0 text-app-gray-500 dark:text-app-gray-300;\n  height: 54px;\n}\n</style>\n"],"names":["emits","__emit","value","computed","__props","value2","isListOpen","ref","filteredItems","item","setSelectedItem","onBlur","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_toDisplayString","$event","_hoisted_4","_hoisted_5","_withDirectives","_hoisted_6","_hoisted_7","_Fragment","_renderList","filteredItem","_hoisted_8"],"mappings":"2pBAOA,MAAMA,EAAQC,EAERC,EAAQC,EAAAA,SAAS,CACrB,IAAK,IAAMC,EAAA,WACX,IAAMC,GAAWL,EAAM,oBAAqBK,CAAM,CAAA,CACnD,EAEKC,EAAaC,EAAAA,IAAI,EAAK,EACtBC,EAAgBL,EAAAA,SAAS,IACtBC,EAAA,MAAM,OAAQK,GACZA,EAAK,KAAK,cAAc,QAAQP,EAAM,MAAM,YAAA,CAAa,GAAK,CACtE,CACF,EACKQ,EAAmBD,GAAmB,CAC1CP,EAAM,MAAQO,EAAK,MACnBH,EAAW,MAAQ,EACrB,EACMK,EAAS,IAAM,CAEnB,WAAW,IAAM,CACfL,EAAW,MAAQ,EACrB,EAAG,GAAG,CACR,gBAIEM,YAAA,EAAAC,qBAmCM,MAnCNC,EAmCM,kBAlCJC,EAAAA,mBAA+I,MAAA,CAA1F,MAAM,wBAAyB,uBAAOT,EAAA,MAAU,IAAW,yBAASA,EAAA,MAAU,GAAA,sBAAtHE,EAAA,MAAc,OAAM,GAAQF,EAAA,KAAU,CAAA,GAEnDS,EAAAA,mBAEM,MAFNC,EAEMC,EAAAA,gBADDb,EAAA,KAAK,EAAA,CAAA,mBAEVW,EAAAA,mBAQE,QAAA,sCAPSb,EAAK,MAAAgB,GACd,aAAW,QACX,KAAK,OACL,MAAM,oBACL,uBAAsBhB,EAAA,MACtB,uBAAOI,EAAA,MAAU,IACjB,OAAAK,CAAA,4BANQT,EAAA,KAAK,CAAA,GASLE,EAAA,OAAO,QAAlBQ,EAAAA,YAAAC,EAAAA,mBAIM,MAJNM,EAIM,CAHJJ,qBAEM,MAFNK,EAEMH,kBADDb,EAAA,UAAU,QAAQ,EAAA,CAAA,CAAA,gCAGzBiB,iBAAAN,EAAAA,mBAaM,MAbNO,EAaM,CAZJP,EAAAA,mBAWK,KAXLQ,EAWK,kBAVHV,EAAAA,mBASKW,EAAAA,SAAA,KAAAC,EAAAA,WARoBjB,EAAA,MAAhBkB,kBADTb,EAAAA,mBASK,KAAA,CAPF,IAAKa,EAAa,KACnB,MAAM,6HACN,cAAY,kBACX,QAAKR,GAAER,EAAgBgB,CAAY,EACnC,UAAOR,GAAER,EAAgBgB,CAAY,CAAA,EAEnCT,EAAAA,gBAAAS,EAAa,IAAI,EAAA,GAAAC,CAAA,4BAVbnB,EAAA,MAAc,OAAM,GAAQF,EAAA,KAAU,CAAA"}