reka-ui
Version:
Vue port for Radix UI Primitives.
53 lines (49 loc) • 1.55 kB
JavaScript
;
const vue = require('vue');
const VisuallyHidden_VisuallyHidden = require('../VisuallyHidden/VisuallyHidden.cjs');
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
__name: "BubbleSelect",
props: {
autocomplete: {},
autofocus: { type: Boolean },
disabled: { type: Boolean },
form: {},
multiple: { type: Boolean },
name: {},
required: { type: Boolean },
size: {},
value: {}
},
setup(__props) {
const props = __props;
const selectElement = vue.ref();
vue.watch(() => props.value, (cur, prev) => {
const selectProto = window.HTMLSelectElement.prototype;
const descriptor = Object.getOwnPropertyDescriptor(
selectProto,
"value"
);
const setValue = descriptor.set;
if (cur !== prev && setValue && selectElement.value) {
const event = new Event("change", { bubbles: true });
setValue.call(selectElement.value, cur);
selectElement.value.dispatchEvent(event);
}
});
return (_ctx, _cache) => {
return vue.openBlock(), vue.createBlock(vue.unref(VisuallyHidden_VisuallyHidden._sfc_main), { "as-child": "" }, {
default: vue.withCtx(() => [
vue.createElementVNode("select", vue.mergeProps({
ref_key: "selectElement",
ref: selectElement
}, props), [
vue.renderSlot(_ctx.$slots, "default")
], 16)
]),
_: 3
});
};
}
});
exports._sfc_main = _sfc_main;
//# sourceMappingURL=BubbleSelect.cjs.map