@fe6/water-pro
Version:
An enterprise-class UI design language and Vue-based implementation
26 lines (20 loc) • 528 B
JavaScript
import * as _ from '../utils/utils';
export default function Selectable(opt = {}) {
opt = Object.assign(
{
onchange: () => 0,
className: '',
elements: [],
},
opt,
);
const onTap = _.on(opt.elements, 'click', (evt) => {
opt.elements.forEach((e) => e.classList[evt.target === e ? 'add' : 'remove'](opt.className));
opt.onchange(evt);
// Fix for https://github.com/Simonwep/pickr/issues/243
evt.stopPropagation();
});
return {
destroy: () => _.off(...onTap),
};
}