{"version":3,"file":"useClearable.mjs","sources":["../../../../src/composables/useClearable.ts"],"sourcesContent":["import { computed, Ref } from 'vue'\n\nimport { useFocus } from './useFocus'\n\ninterface ClearableProps {\n  clearable: boolean\n  clearableIcon: string\n  clearValue?: any\n  disabled?: boolean\n  readonly?: boolean\n  success?: boolean\n  color?: string\n}\n\nexport const useClearableProps = {\n  clearable: { type: Boolean, default: false },\n  clearableIcon: { type: String, default: 'va-clear' },\n  clearValue: { type: String, default: '' },\n}\n\nexport const useClearableEmits = ['clear'] as const\n\nexport const useClearable = (\n  props: ClearableProps,\n  inputValue: Ref<any>,\n  el?: Ref<any>,\n  hasError?: Ref<boolean>,\n) => {\n  const { isFocused, onFocus, onBlur } = useFocus(el)\n\n  const clearedValues = [null, undefined, props.clearValue]\n\n  const canBeCleared = computed(() => (\n    props.clearable &&\n    !props.disabled &&\n    !props.readonly &&\n    !clearedValues.includes(inputValue.value)\n  ))\n\n  const clearIconColor = computed(() => {\n    if (isFocused?.value) { return props.color || 'primary' }\n    if (hasError?.value) { return 'danger' }\n    if (props.success) { return 'success' }\n\n    return 'secondary'\n  })\n\n  const clearIconProps = computed(() => ({\n    name: props.clearableIcon,\n    color: clearIconColor.value,\n    size: 'medium',\n    tabindex: canBeCleared.value ? 0 : -1,\n  }))\n\n  return {\n    canBeCleared,\n    clearIconColor,\n    clearIconProps,\n    onFocus,\n    onBlur,\n  }\n}\n"],"names":[],"mappings":";;AAcO,MAAM,oBAAoB;AAAA,EAC/B,WAAW,EAAE,MAAM,SAAS,SAAS,MAAM;AAAA,EAC3C,eAAe,EAAE,MAAM,QAAQ,SAAS,WAAW;AAAA,EACnD,YAAY,EAAE,MAAM,QAAQ,SAAS,GAAG;AAC1C;AAEa,MAAA,oBAAoB,CAAC,OAAO;AAElC,MAAM,eAAe,CAC1B,OACA,YACA,IACA,aACG;AACH,QAAM,EAAE,WAAW,SAAS,OAAO,IAAI,SAAS,EAAE;AAElD,QAAM,gBAAgB,CAAC,MAAM,QAAW,MAAM,UAAU;AAExD,QAAM,eAAe,SAAS,MAC5B,MAAM,aACN,CAAC,MAAM,YACP,CAAC,MAAM,YACP,CAAC,cAAc,SAAS,WAAW,KAAK,CACzC;AAEK,QAAA,iBAAiB,SAAS,MAAM;AACpC,QAAI,uCAAW,OAAO;AAAE,aAAO,MAAM,SAAS;AAAA,IAAU;AACxD,QAAI,qCAAU,OAAO;AAAS,aAAA;AAAA,IAAS;AACvC,QAAI,MAAM,SAAS;AAAS,aAAA;AAAA,IAAU;AAE/B,WAAA;AAAA,EAAA,CACR;AAEK,QAAA,iBAAiB,SAAS,OAAO;AAAA,IACrC,MAAM,MAAM;AAAA,IACZ,OAAO,eAAe;AAAA,IACtB,MAAM;AAAA,IACN,UAAU,aAAa,QAAQ,IAAI;AAAA,EACnC,EAAA;AAEK,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;"}