UNPKG

vuestic-ui

Version:
1 lines 2.4 kB
{"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;"}