use-radio.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
  2. require("../../../_virtual/_rolldown/runtime.js");
  3. require("../../../constants/event.js");
  4. const require_types = require("../../../utils/types.js");
  5. const require_index = require("../../../hooks/use-deprecated/index.js");
  6. const require_use_form_common_props = require("../../form/src/hooks/use-form-common-props.js");
  7. const require_constants = require("./constants.js");
  8. let vue = require("vue");
  9. //#region ../../packages/components/radio/src/use-radio.ts
  10. const useRadio = (props, emit) => {
  11. const radioRef = (0, vue.ref)();
  12. const radioGroup = (0, vue.inject)(require_constants.radioGroupKey, void 0);
  13. const isGroup = (0, vue.computed)(() => !!radioGroup);
  14. const actualValue = (0, vue.computed)(() => {
  15. if (!require_types.isPropAbsent(props.value)) return props.value;
  16. return props.label;
  17. });
  18. const modelValue = (0, vue.computed)({
  19. get() {
  20. return isGroup.value ? radioGroup.modelValue : props.modelValue;
  21. },
  22. set(val) {
  23. if (isGroup.value) radioGroup.changeEvent(val);
  24. else emit && emit("update:modelValue", val);
  25. radioRef.value.checked = props.modelValue === actualValue.value;
  26. }
  27. });
  28. const size = require_use_form_common_props.useFormSize((0, vue.computed)(() => radioGroup?.size));
  29. const disabled = require_use_form_common_props.useFormDisabled((0, vue.computed)(() => radioGroup?.disabled));
  30. const focus = (0, vue.ref)(false);
  31. const tabIndex = (0, vue.computed)(() => {
  32. return disabled.value || isGroup.value && modelValue.value !== actualValue.value ? -1 : 0;
  33. });
  34. require_index.useDeprecated({
  35. from: "label act as value",
  36. replacement: "value",
  37. version: "3.0.0",
  38. scope: "el-radio",
  39. ref: "https://element-plus.org/en-US/component/radio.html"
  40. }, (0, vue.computed)(() => isGroup.value && require_types.isPropAbsent(props.value)));
  41. return {
  42. radioRef,
  43. isGroup,
  44. radioGroup,
  45. focus,
  46. size,
  47. disabled,
  48. tabIndex,
  49. modelValue,
  50. actualValue
  51. };
  52. };
  53. //#endregion
  54. exports.useRadio = useRadio;
  55. //# sourceMappingURL=use-radio.js.map