Radio.mjs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import { createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
  2. import { defineComponent } from "vue";
  3. import { pick, createNamespace } from "../utils/index.mjs";
  4. import { RADIO_KEY } from "../radio-group/RadioGroup.mjs";
  5. import { useParent } from "@vant/use";
  6. import Checker, { checkerProps } from "../checkbox/Checker.mjs";
  7. const [name, bem] = createNamespace("radio");
  8. var stdin_default = defineComponent({
  9. name,
  10. props: checkerProps,
  11. emits: ["update:modelValue"],
  12. setup(props, {
  13. emit,
  14. slots
  15. }) {
  16. const {
  17. parent
  18. } = useParent(RADIO_KEY);
  19. const checked = () => {
  20. const value = parent ? parent.props.modelValue : props.modelValue;
  21. return value === props.name;
  22. };
  23. const toggle = () => {
  24. if (parent) {
  25. parent.updateValue(props.name);
  26. } else {
  27. emit("update:modelValue", props.name);
  28. }
  29. };
  30. return () => _createVNode(Checker, _mergeProps({
  31. "bem": bem,
  32. "role": "radio",
  33. "parent": parent,
  34. "checked": checked(),
  35. "onToggle": toggle
  36. }, props), pick(slots, ["default", "icon"]));
  37. }
  38. });
  39. export {
  40. stdin_default as default
  41. };