vuetify
Version:
Vue Material Component Framework
43 lines • 1.27 kB
JavaScript
import { mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
// Components
import { VIcon } from "../VIcon/index.js"; // Composables
import { useLocale } from "../../composables/locale.js"; // Utilities
import { callEvent } from "../../util/index.js"; // Types
export function useInputIcon(props) {
const {
t
} = useLocale();
function InputIcon(_ref) {
let {
name,
color,
...attrs
} = _ref;
const localeKey = {
prepend: 'prependAction',
prependInner: 'prependAction',
append: 'appendAction',
appendInner: 'appendAction',
clear: 'clear'
}[name];
const listener = props[`onClick:${name}`];
function onKeydown(e) {
if (e.key !== 'Enter' && e.key !== ' ') return;
e.preventDefault();
e.stopPropagation();
callEvent(listener, new PointerEvent('click', e));
}
const label = listener && localeKey ? t(`$vuetify.input.${localeKey}`, props.label ?? '') : undefined;
return _createVNode(VIcon, _mergeProps({
"icon": props[`${name}Icon`],
"aria-label": label,
"onClick": listener,
"onKeydown": onKeydown,
"color": color
}, attrs), null);
}
return {
InputIcon
};
}
//# sourceMappingURL=InputIcon.js.map