067dc007d27e173073caf3dd75a0bdc5c79c90bd0ccca605f6456f4c2fb94b11586628ddd56e24756ca76bf04f8f71006dcb4f0e6fbe4786da44641c2a258b 1.9 KB

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