UNPKG

reka-ui

Version:

Vue port for Radix UI Primitives.

92 lines (89 loc) 2.59 kB
const require_rolldown_runtime = require('../rolldown-runtime.cjs'); const require_VisuallyHidden_VisuallyHidden = require('../VisuallyHidden/VisuallyHidden.cjs'); const vue = require_rolldown_runtime.__toESM(require("vue")); //#region src/Select/BubbleSelect.vue?vue&type=script&setup=true&lang.ts var BubbleSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ __name: "BubbleSelect", props: { autocomplete: { type: String, required: false }, autofocus: { type: Boolean, required: false }, disabled: { type: Boolean, required: false }, form: { type: String, required: false }, multiple: { type: Boolean, required: false }, name: { type: String, required: false }, required: { type: Boolean, required: false }, size: { type: Number, required: false }, value: { type: null, required: false } }, setup(__props) { const props = __props; const selectElement = (0, vue.ref)(); (0, 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); } }); /** * We purposefully use a `select` here to support form autofill as much * as possible. * * We purposefully do not add the `value` attribute here to allow the value * to be set programmatically and bubble to any parent form `onChange` event. * * We use `VisuallyHidden` rather than `display: "none"` because Safari autofill * won't work otherwise. */ return (_ctx, _cache) => { return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(require_VisuallyHidden_VisuallyHidden.VisuallyHidden_default), { "as-child": "" }, { default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("select", (0, vue.mergeProps)({ ref_key: "selectElement", ref: selectElement }, props), [(0, vue.renderSlot)(_ctx.$slots, "default")], 16)]), _: 3 }); }; } }); //#endregion //#region src/Select/BubbleSelect.vue var BubbleSelect_default = BubbleSelect_vue_vue_type_script_setup_true_lang_default; //#endregion Object.defineProperty(exports, 'BubbleSelect_default', { enumerable: true, get: function () { return BubbleSelect_default; } }); //# sourceMappingURL=BubbleSelect.cjs.map