使用VUE重构项目
Some checks failed
build / build (api, amd64, linux) (push) Failing after -51s
build / build (api, arm64, linux) (push) Failing after -52s
build / build (api.exe, amd64, windows) (push) Failing after -51s

This commit is contained in:
2026-04-20 00:19:11 +08:00
parent c080bb8d4a
commit db7f1ba82f
12743 changed files with 1250466 additions and 359982 deletions

View File

@@ -0,0 +1,19 @@
import { SFCWithInstall } from "../../utils/vue/typescript.js";
import "../../utils/index.js";
import { RadioEmits, RadioInstance, RadioProps, RadioPropsBase, RadioPropsPublic, radioEmits, radioProps, radioPropsBase, radioPropsDefaults } from "./src/radio.js";
import { _default } from "./src/radio.vue.js";
import { RadioButtonInstance, RadioButtonProps, RadioButtonPropsPublic, radioButtonProps, radioButtonPropsDefaults } from "./src/radio-button.js";
import { _default as _default$1 } from "./src/radio-button.vue.js";
import { RadioGroupEmits, RadioGroupInstance, RadioGroupProps, RadioGroupPropsPublic, radioDefaultProps, radioGroupEmits, radioGroupProps, radioGroupPropsDefaults, radioOption, radioOptionProp } from "./src/radio-group.js";
import { _default as _default$2 } from "./src/radio-group.vue.js";
import { RadioGroupContext, radioGroupKey } from "./src/constants.js";
//#region ../../packages/components/radio/index.d.ts
declare const ElRadio: SFCWithInstall<typeof _default> & {
RadioButton: typeof _default$1;
RadioGroup: typeof _default$2;
};
declare const ElRadioGroup: SFCWithInstall<typeof _default$2>;
declare const ElRadioButton: SFCWithInstall<typeof _default$1>;
//#endregion
export { ElRadio, ElRadio as default, ElRadioButton, ElRadioGroup, RadioButtonInstance, RadioButtonProps, RadioButtonPropsPublic, RadioEmits, RadioGroupContext, RadioGroupEmits, RadioGroupInstance, RadioGroupProps, RadioGroupPropsPublic, RadioInstance, RadioProps, RadioPropsBase, RadioPropsPublic, radioButtonProps, radioButtonPropsDefaults, radioDefaultProps, radioEmits, radioGroupEmits, radioGroupKey, radioGroupProps, radioGroupPropsDefaults, radioOption, radioOptionProp, radioProps, radioPropsBase, radioPropsDefaults };

View File

@@ -0,0 +1,35 @@
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
const require_install = require('../../utils/vue/install.js');
const require_radio = require('./src/radio.js');
const require_constants = require('./src/constants.js');
const require_radio$1 = require('./src/radio2.js');
const require_radio_button = require('./src/radio-button.js');
const require_radio_button$1 = require('./src/radio-button2.js');
const require_radio_group = require('./src/radio-group.js');
const require_radio_group$1 = require('./src/radio-group2.js');
//#region ../../packages/components/radio/index.ts
const ElRadio = require_install.withInstall(require_radio$1.default, {
RadioButton: require_radio_button$1.default,
RadioGroup: require_radio_group$1.default
});
const ElRadioGroup = require_install.withNoopInstall(require_radio_group$1.default);
const ElRadioButton = require_install.withNoopInstall(require_radio_button$1.default);
//#endregion
exports.ElRadio = ElRadio;
exports.default = ElRadio;
exports.ElRadioButton = ElRadioButton;
exports.ElRadioGroup = ElRadioGroup;
exports.radioButtonProps = require_radio_button.radioButtonProps;
exports.radioButtonPropsDefaults = require_radio_button.radioButtonPropsDefaults;
exports.radioDefaultProps = require_radio_group.radioDefaultProps;
exports.radioEmits = require_radio.radioEmits;
exports.radioGroupEmits = require_radio_group.radioGroupEmits;
exports.radioGroupKey = require_constants.radioGroupKey;
exports.radioGroupProps = require_radio_group.radioGroupProps;
exports.radioGroupPropsDefaults = require_radio_group.radioGroupPropsDefaults;
exports.radioProps = require_radio.radioProps;
exports.radioPropsBase = require_radio.radioPropsBase;
exports.radioPropsDefaults = require_radio.radioPropsDefaults;
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.js","names":["withInstall","Radio","withNoopInstall","RadioGroup","RadioButton"],"sources":["../../../../../packages/components/radio/index.ts"],"sourcesContent":["import { withInstall, withNoopInstall } from '@element-plus/utils'\nimport Radio from './src/radio.vue'\nimport RadioButton from './src/radio-button.vue'\nimport RadioGroup from './src/radio-group.vue'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElRadio: SFCWithInstall<typeof Radio> & {\n RadioButton: typeof RadioButton\n RadioGroup: typeof RadioGroup\n} = withInstall(Radio, {\n RadioButton,\n RadioGroup,\n})\nexport default ElRadio\nexport const ElRadioGroup: SFCWithInstall<typeof RadioGroup> =\n withNoopInstall(RadioGroup)\nexport const ElRadioButton: SFCWithInstall<typeof RadioButton> =\n withNoopInstall(RadioButton)\n\nexport * from './src/radio'\nexport * from './src/radio-group'\nexport * from './src/radio-button'\nexport * from './src/constants'\n"],"mappings":";;;;;;;;;;;AAOA,MAAa,UAGTA,4BAAYC,yBAAO;CACrB;CACA;CACD,CAAC;AAEF,MAAa,eACXC,gCAAgBC,8BAAW;AAC7B,MAAa,gBACXD,gCAAgBE,+BAAY"}

View File

@@ -0,0 +1,10 @@
import { RadioGroupProps } from "./radio-group.js";
import { InjectionKey } from "vue";
//#region ../../packages/components/radio/src/constants.d.ts
interface RadioGroupContext extends RadioGroupProps {
changeEvent: (val: RadioGroupProps['modelValue']) => void;
}
declare const radioGroupKey: InjectionKey<RadioGroupContext>;
//#endregion
export { RadioGroupContext, radioGroupKey };

View File

@@ -0,0 +1,8 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
//#region ../../packages/components/radio/src/constants.ts
const radioGroupKey = Symbol("radioGroupKey");
//#endregion
exports.radioGroupKey = radioGroupKey;
//# sourceMappingURL=constants.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"constants.js","names":[],"sources":["../../../../../../packages/components/radio/src/constants.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { RadioGroupProps } from './radio-group'\n\nexport interface RadioGroupContext extends RadioGroupProps {\n changeEvent: (val: RadioGroupProps['modelValue']) => void\n}\n\nexport const radioGroupKey: InjectionKey<RadioGroupContext> =\n Symbol('radioGroupKey')\n"],"mappings":";;;AAOA,MAAa,gBACX,OAAO,gBAAgB"}

View File

@@ -0,0 +1,42 @@
import { EpPropFinalized, EpPropMergeType } from "../../../utils/vue/props/types.js";
import "../../../utils/index.js";
import { RadioPropsBase } from "./radio.js";
import { _default } from "./radio-button.vue.js";
import * as vue from "vue";
import { ExtractPublicPropTypes } from "vue";
//#region ../../packages/components/radio/src/radio-button.d.ts
interface RadioButtonProps extends RadioPropsBase {}
/**
* @deprecated Removed after 3.0.0, Use `RadioButtonProps` instead.
*/
declare const radioButtonProps: {
readonly modelValue: EpPropFinalized<(BooleanConstructor | NumberConstructor | StringConstructor)[], unknown, unknown, undefined, boolean>;
readonly size: {
readonly type: vue.PropType<EpPropMergeType<StringConstructor, "" | "default" | "small" | "large", never>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly disabled: EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
readonly label: EpPropFinalized<(BooleanConstructor | NumberConstructor | StringConstructor)[], unknown, unknown, undefined, boolean>;
readonly value: EpPropFinalized<(BooleanConstructor | NumberConstructor | StringConstructor)[], unknown, unknown, undefined, boolean>;
readonly name: EpPropFinalized<StringConstructor, unknown, unknown, undefined, boolean>;
};
/**
* @deprecated Removed after 3.0.0, Use `RadioButtonProps` instead.
*/
type RadioButtonPropsPublic = ExtractPublicPropTypes<typeof radioButtonProps>;
type RadioButtonInstance = InstanceType<typeof _default> & unknown;
/**
* @description default values for RadioButtonProps
*/
declare const radioButtonPropsDefaults: {
readonly modelValue: undefined;
readonly disabled: undefined;
readonly label: undefined;
readonly value: undefined;
readonly name: undefined;
};
//#endregion
export { RadioButtonInstance, RadioButtonProps, RadioButtonPropsPublic, radioButtonProps, radioButtonPropsDefaults };

View File

@@ -0,0 +1,24 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('../../../utils/vue/props/runtime.js');
const require_radio = require('./radio.js');
//#region ../../packages/components/radio/src/radio-button.ts
/**
* @deprecated Removed after 3.0.0, Use `RadioButtonProps` instead.
*/
const radioButtonProps = require_runtime.buildProps({ ...require_radio.radioPropsBase });
/**
* @description default values for RadioButtonProps
*/
const radioButtonPropsDefaults = {
modelValue: void 0,
disabled: void 0,
label: void 0,
value: void 0,
name: void 0
};
//#endregion
exports.radioButtonProps = radioButtonProps;
exports.radioButtonPropsDefaults = radioButtonPropsDefaults;
//# sourceMappingURL=radio-button.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"radio-button.js","names":["buildProps","radioPropsBase"],"sources":["../../../../../../packages/components/radio/src/radio-button.ts"],"sourcesContent":["import { buildProps } from '@element-plus/utils'\nimport { radioPropsBase } from './radio'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type { RadioPropsBase } from './radio'\nimport type RadioButton from './radio-button.vue'\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface RadioButtonProps extends RadioPropsBase {}\n\n/**\n * @deprecated Removed after 3.0.0, Use `RadioButtonProps` instead.\n */\nexport const radioButtonProps = buildProps({\n ...radioPropsBase,\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `RadioButtonProps` instead.\n */\nexport type RadioButtonPropsPublic = ExtractPublicPropTypes<\n typeof radioButtonProps\n>\nexport type RadioButtonInstance = InstanceType<typeof RadioButton> & unknown\n\n/**\n * @description default values for RadioButtonProps\n */\nexport const radioButtonPropsDefaults = {\n modelValue: undefined,\n disabled: undefined,\n label: undefined,\n value: undefined,\n name: undefined,\n} as const\n"],"mappings":";;;;;;;;AAaA,MAAa,mBAAmBA,2BAAW,EACzC,GAAGC,8BACJ,CAAU;;;;AAaX,MAAa,2BAA2B;CACtC,YAAY;CACZ,UAAU;CACV,OAAO;CACP,OAAO;CACP,MAAM;CACP"}

View File

@@ -0,0 +1,24 @@
import { RadioButtonProps } from "./radio-button.js";
import * as vue from "vue";
//#region ../../packages/components/radio/src/radio-button.vue.d.ts
declare var __VLS_1: {};
type __VLS_Slots = {} & {
default?: (props: typeof __VLS_1) => any;
};
declare const __VLS_base: vue.DefineComponent<RadioButtonProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<RadioButtonProps> & Readonly<{}>, {
disabled: boolean;
modelValue: string | number | boolean;
name: string;
value: string | number | boolean;
label: string | number | boolean;
}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
declare const _default: typeof __VLS_export;
type __VLS_WithSlots<T, S> = T & {
new (): {
$slots: S;
};
};
//#endregion
export { _default };

View File

@@ -0,0 +1,59 @@
const require_runtime = require('../../../_virtual/_rolldown/runtime.js');
const require_index = require('../../../hooks/use-namespace/index.js');
const require_use_radio = require('./use-radio.js');
const require_radio_button = require('./radio-button.js');
let vue = require("vue");
//#region ../../packages/components/radio/src/radio-button.vue?vue&type=script&setup=true&lang.ts
const _hoisted_1 = [
"value",
"name",
"disabled"
];
var radio_button_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({
name: "ElRadioButton",
__name: "radio-button",
props: require_radio_button.radioButtonProps,
setup(__props) {
const props = __props;
const ns = require_index.useNamespace("radio");
const { radioRef, focus, size, disabled, modelValue, radioGroup, actualValue } = require_use_radio.useRadio(props);
const activeStyle = (0, vue.computed)(() => {
return {
backgroundColor: radioGroup?.fill || "",
borderColor: radioGroup?.fill || "",
boxShadow: radioGroup?.fill ? `-1px 0 0 0 ${radioGroup.fill}` : "",
color: radioGroup?.textColor || ""
};
});
return (_ctx, _cache) => {
return (0, vue.openBlock)(), (0, vue.createElementBlock)("label", { class: (0, vue.normalizeClass)([
(0, vue.unref)(ns).b("button"),
(0, vue.unref)(ns).is("active", (0, vue.unref)(modelValue) === (0, vue.unref)(actualValue)),
(0, vue.unref)(ns).is("disabled", (0, vue.unref)(disabled)),
(0, vue.unref)(ns).is("focus", (0, vue.unref)(focus)),
(0, vue.unref)(ns).bm("button", (0, vue.unref)(size))
]) }, [(0, vue.withDirectives)((0, vue.createElementVNode)("input", {
ref_key: "radioRef",
ref: radioRef,
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => (0, vue.isRef)(modelValue) ? modelValue.value = $event : null),
class: (0, vue.normalizeClass)((0, vue.unref)(ns).be("button", "original-radio")),
value: (0, vue.unref)(actualValue),
type: "radio",
name: __props.name || (0, vue.unref)(radioGroup)?.name,
disabled: (0, vue.unref)(disabled),
onFocus: _cache[1] || (_cache[1] = ($event) => focus.value = true),
onBlur: _cache[2] || (_cache[2] = ($event) => focus.value = false),
onClick: _cache[3] || (_cache[3] = (0, vue.withModifiers)(() => {}, ["stop"]))
}, null, 42, _hoisted_1), [[vue.vModelRadio, (0, vue.unref)(modelValue)]]), (0, vue.createElementVNode)("span", {
class: (0, vue.normalizeClass)((0, vue.unref)(ns).be("button", "inner")),
style: (0, vue.normalizeStyle)((0, vue.unref)(modelValue) === (0, vue.unref)(actualValue) ? activeStyle.value : {}),
onKeydown: _cache[4] || (_cache[4] = (0, vue.withModifiers)(() => {}, ["stop"]))
}, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.label), 1)])], 38)], 2);
};
}
});
//#endregion
exports.default = radio_button_vue_vue_type_script_setup_true_lang_default;
//# sourceMappingURL=radio-button.vue_vue_type_script_setup_true_lang.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"radio-button.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../../../../packages/components/radio/src/radio-button.vue"],"sourcesContent":["<template>\n <label\n :class=\"[\n ns.b('button'),\n ns.is('active', modelValue === actualValue),\n ns.is('disabled', disabled),\n ns.is('focus', focus),\n ns.bm('button', size),\n ]\"\n >\n <input\n ref=\"radioRef\"\n v-model=\"modelValue\"\n :class=\"ns.be('button', 'original-radio')\"\n :value=\"actualValue\"\n type=\"radio\"\n :name=\"name || radioGroup?.name\"\n :disabled=\"disabled\"\n @focus=\"focus = true\"\n @blur=\"focus = false\"\n @click.stop\n />\n <span\n :class=\"ns.be('button', 'inner')\"\n :style=\"modelValue === actualValue ? activeStyle : {}\"\n @keydown.stop\n >\n <slot>\n {{ label }}\n </slot>\n </span>\n </label>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport { useRadio } from './use-radio'\nimport { radioButtonPropsDefaults } from './radio-button'\n\nimport type { RadioButtonProps } from './radio-button'\nimport type { CSSProperties } from 'vue'\n\ndefineOptions({\n name: 'ElRadioButton',\n})\n\nconst props = withDefaults(\n defineProps<RadioButtonProps>(),\n radioButtonPropsDefaults\n)\n\nconst ns = useNamespace('radio')\nconst { radioRef, focus, size, disabled, modelValue, radioGroup, actualValue } =\n useRadio(props)\n\nconst activeStyle = computed<CSSProperties>(() => {\n return {\n backgroundColor: radioGroup?.fill || '',\n borderColor: radioGroup?.fill || '',\n boxShadow: radioGroup?.fill ? `-1px 0 0 0 ${radioGroup.fill}` : '',\n color: radioGroup?.textColor || '',\n }\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;EA+CA,MAAM,QAAQ;EAKd,MAAM,KAAK,2BAAa,QAAO;EAC/B,MAAM,EAAE,UAAU,OAAO,MAAM,UAAU,YAAY,YAAY,gBAC/D,2BAAS,MAAK;EAEhB,MAAM,sCAA4C;AAChD,UAAO;IACL,iBAAiB,YAAY,QAAQ;IACrC,aAAa,YAAY,QAAQ;IACjC,WAAW,YAAY,OAAO,cAAc,WAAW,SAAS;IAChE,OAAO,YAAY,aAAa;IAClC;IACD;;4DAhCS,SAAA,EA7BL,+BAAK;mBAAU,GAAE,CAAC,EAAC,SAAA;mBAAkB,GAAE,CAAC,GAAE,yBAAW,WAAU,oBAAK,YAAW,CAAA;mBAAS,GAAE,CAAC,GAAE,2BAAa,SAAQ,CAAA;mBAAS,GAAE,CAAC,GAAE,wBAAU,MAAK,CAAA;mBAAS,GAAE,CAAC,GAAE,yBAAW,KAAI,CAAA;8DAmB3K,SAAA;aAVI;IAAJ,KAAI;8FACK,WAAU,QAAA,SAAA;IAClB,8CAAO,GAAE,CAAC,GAAE,UAAA,iBAAA,CAAA;IACZ,sBAAO,YAAW;IACnB,MAAK;IACJ,MAAM,QAAA,uBAAQ,WAAU,EAAE;IAC1B,yBAAU,SAAQ;IAClB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,MAAA,QAAK;IACZ,QAAI,OAAA,OAAA,OAAA,MAAA,WAAE,MAAA,QAAK;IACX,SAAK,OAAA,OAAA,OAAA,kCAAN,IAAW,CAAA,OAAA,CAAA;+DARF,WAAU,CAAA,gCAkBd,QAAA;IAPJ,8CAAO,GAAE,CAAC,GAAE,UAAA,QAAA,CAAA;IACZ,8CAAO,WAAU,oBAAK,YAAW,GAAG,YAAA,QAAW,EAAA,CAAA;IAC/C,WAAO,OAAA,OAAA,OAAA,kCAAR,IAAa,CAAA,OAAA,CAAA;2BAIN,KAAA,QAAA,WAAA,EAAA,QAAA,mDADF,QAAA,MAAK,EAAA,EAAA"}

View File

@@ -0,0 +1,9 @@
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
const require_radio_button_vue_vue_type_script_setup_true_lang = require('./radio-button.vue_vue_type_script_setup_true_lang.js');
//#region ../../packages/components/radio/src/radio-button.vue
var radio_button_default = require_radio_button_vue_vue_type_script_setup_true_lang.default;
//#endregion
exports.default = radio_button_default;
//# sourceMappingURL=radio-button2.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"radio-button2.js","names":[],"sources":["../../../../../../packages/components/radio/src/radio-button.vue"],"sourcesContent":["<template>\n <label\n :class=\"[\n ns.b('button'),\n ns.is('active', modelValue === actualValue),\n ns.is('disabled', disabled),\n ns.is('focus', focus),\n ns.bm('button', size),\n ]\"\n >\n <input\n ref=\"radioRef\"\n v-model=\"modelValue\"\n :class=\"ns.be('button', 'original-radio')\"\n :value=\"actualValue\"\n type=\"radio\"\n :name=\"name || radioGroup?.name\"\n :disabled=\"disabled\"\n @focus=\"focus = true\"\n @blur=\"focus = false\"\n @click.stop\n />\n <span\n :class=\"ns.be('button', 'inner')\"\n :style=\"modelValue === actualValue ? activeStyle : {}\"\n @keydown.stop\n >\n <slot>\n {{ label }}\n </slot>\n </span>\n </label>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport { useRadio } from './use-radio'\nimport { radioButtonPropsDefaults } from './radio-button'\n\nimport type { RadioButtonProps } from './radio-button'\nimport type { CSSProperties } from 'vue'\n\ndefineOptions({\n name: 'ElRadioButton',\n})\n\nconst props = withDefaults(\n defineProps<RadioButtonProps>(),\n radioButtonPropsDefaults\n)\n\nconst ns = useNamespace('radio')\nconst { radioRef, focus, size, disabled, modelValue, radioGroup, actualValue } =\n useRadio(props)\n\nconst activeStyle = computed<CSSProperties>(() => {\n return {\n backgroundColor: radioGroup?.fill || '',\n borderColor: radioGroup?.fill || '',\n boxShadow: radioGroup?.fill ? `-1px 0 0 0 ${radioGroup.fill}` : '',\n color: radioGroup?.textColor || '',\n }\n})\n</script>\n"],"mappings":""}

View File

@@ -0,0 +1,118 @@
import { EpPropFinalized, EpPropMergeType } from "../../../utils/vue/props/types.js";
import { ComponentSize } from "../../../constants/size.js";
import "../../../utils/index.js";
import { _default } from "./radio-group.vue.js";
import * as vue from "vue";
import { ExtractPublicPropTypes } from "vue";
//#region ../../packages/components/radio/src/radio-group.d.ts
type radioOptionProp = {
value?: string;
label?: string;
disabled?: string;
};
declare const radioDefaultProps: Required<radioOptionProp>;
type radioOption = Record<string, any>;
interface RadioGroupProps {
/**
* @description native `id` attribute
*/
id?: string;
/**
* @description the size of radio buttons or bordered radios
*/
size?: ComponentSize;
/**
* @description whether the nesting radios are disabled
*/
disabled?: boolean;
/**
* @description binding value
*/
modelValue?: string | number | boolean;
/**
* @description border and background color when button is active
*/
fill?: string;
/**
* @description font color when button is active
*/
textColor?: string;
/**
* @description native `name` attribute
*/
name?: string;
/**
* @description whether to trigger form validation
*/
validateEvent?: boolean;
/**
* @description radio options
*/
options?: radioOption[];
/**
* @description custom prop names for options
*/
props?: radioOptionProp;
/**
* @description radio type
*/
type?: 'radio' | 'button';
/**
* @description native `aria-label` attribute
*/
ariaLabel?: string;
}
/**
* @deprecated Removed after 3.0.0, Use `RadioGroupProps` instead.
*/
declare const radioGroupProps: {
readonly ariaLabel: StringConstructor;
readonly id: EpPropFinalized<StringConstructor, unknown, unknown, undefined, boolean>;
readonly size: {
readonly type: vue.PropType<EpPropMergeType<StringConstructor, "" | "default" | "small" | "large", never>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly disabled: EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
readonly modelValue: EpPropFinalized<readonly [StringConstructor, NumberConstructor, BooleanConstructor], unknown, unknown, undefined, boolean>;
readonly fill: EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
readonly textColor: EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
readonly name: EpPropFinalized<StringConstructor, unknown, unknown, undefined, boolean>;
readonly validateEvent: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly options: {
readonly type: vue.PropType<radioOption[]>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly props: EpPropFinalized<(new (...args: any[]) => radioOptionProp) | (() => radioOptionProp) | (((new (...args: any[]) => radioOptionProp) | (() => radioOptionProp)) | null)[], unknown, unknown, () => Required<radioOptionProp>, boolean>;
readonly type: EpPropFinalized<StringConstructor, "button" | "radio", unknown, "radio", boolean>;
};
/**
* @deprecated Removed after 3.0.0, Use `RadioGroupProps` instead.
*/
type RadioGroupPropsPublic = ExtractPublicPropTypes<typeof radioGroupProps>;
declare const radioGroupEmits: {
"update:modelValue": (val: string | number | boolean | undefined) => val is string | number | boolean;
change: (val: string | number | boolean | undefined) => val is string | number | boolean;
};
type RadioGroupEmits = typeof radioGroupEmits;
type RadioGroupInstance = InstanceType<typeof _default> & unknown;
/**
* @description default values for RadioGroupProps
*/
declare const radioGroupPropsDefaults: {
readonly id: undefined;
readonly disabled: undefined;
readonly modelValue: undefined;
readonly fill: "";
readonly textColor: "";
readonly name: undefined;
readonly validateEvent: true;
readonly props: () => Required<radioOptionProp>;
readonly type: "radio";
};
//#endregion
export { RadioGroupEmits, RadioGroupInstance, RadioGroupProps, RadioGroupPropsPublic, radioDefaultProps, radioGroupEmits, radioGroupProps, radioGroupPropsDefaults, radioOption, radioOptionProp };

View File

@@ -0,0 +1,83 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('../../../utils/vue/props/runtime.js');
const require_index = require('../../../hooks/use-size/index.js');
const require_index$1 = require('../../../hooks/use-aria/index.js');
const require_radio = require('./radio.js');
//#region ../../packages/components/radio/src/radio-group.ts
const radioDefaultProps = {
label: "label",
value: "value",
disabled: "disabled"
};
/**
* @deprecated Removed after 3.0.0, Use `RadioGroupProps` instead.
*/
const radioGroupProps = require_runtime.buildProps({
id: {
type: String,
default: void 0
},
size: require_index.useSizeProp,
disabled: {
type: Boolean,
default: void 0
},
modelValue: {
type: [
String,
Number,
Boolean
],
default: void 0
},
fill: {
type: String,
default: ""
},
textColor: {
type: String,
default: ""
},
name: {
type: String,
default: void 0
},
validateEvent: {
type: Boolean,
default: true
},
options: { type: require_runtime.definePropType(Array) },
props: {
type: require_runtime.definePropType(Object),
default: () => radioDefaultProps
},
type: {
type: String,
values: ["radio", "button"],
default: "radio"
},
...require_index$1.useAriaProps(["ariaLabel"])
});
const radioGroupEmits = require_radio.radioEmits;
/**
* @description default values for RadioGroupProps
*/
const radioGroupPropsDefaults = {
id: void 0,
disabled: void 0,
modelValue: void 0,
fill: "",
textColor: "",
name: void 0,
validateEvent: true,
props: () => radioDefaultProps,
type: "radio"
};
//#endregion
exports.radioDefaultProps = radioDefaultProps;
exports.radioGroupEmits = radioGroupEmits;
exports.radioGroupProps = radioGroupProps;
exports.radioGroupPropsDefaults = radioGroupPropsDefaults;
//# sourceMappingURL=radio-group.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"radio-group.js","names":["buildProps","useSizeProp","definePropType","useAriaProps","radioEmits"],"sources":["../../../../../../packages/components/radio/src/radio-group.ts"],"sourcesContent":["import { buildProps, definePropType } from '@element-plus/utils'\nimport { useAriaProps, useSizeProp } from '@element-plus/hooks'\nimport { radioEmits } from './radio'\n\nimport type { ComponentSize } from '@element-plus/constants'\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type RadioGroup from './radio-group.vue'\n\nexport type radioOptionProp = {\n value?: string\n label?: string\n disabled?: string\n}\n\nexport const radioDefaultProps: Required<radioOptionProp> = {\n label: 'label',\n value: 'value',\n disabled: 'disabled',\n}\n\nexport type radioOption = Record<string, any>\n\nexport interface RadioGroupProps {\n /**\n * @description native `id` attribute\n */\n id?: string\n /**\n * @description the size of radio buttons or bordered radios\n */\n size?: ComponentSize\n /**\n * @description whether the nesting radios are disabled\n */\n disabled?: boolean\n /**\n * @description binding value\n */\n modelValue?: string | number | boolean\n /**\n * @description border and background color when button is active\n */\n fill?: string\n /**\n * @description font color when button is active\n */\n textColor?: string\n /**\n * @description native `name` attribute\n */\n name?: string\n /**\n * @description whether to trigger form validation\n */\n validateEvent?: boolean\n /**\n * @description radio options\n */\n options?: radioOption[]\n /**\n * @description custom prop names for options\n */\n props?: radioOptionProp\n /**\n * @description radio type\n */\n type?: 'radio' | 'button'\n /**\n * @description native `aria-label` attribute\n */\n ariaLabel?: string\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `RadioGroupProps` instead.\n */\nexport const radioGroupProps = buildProps({\n /**\n * @description native `id` attribute\n */\n id: {\n type: String,\n default: undefined,\n },\n /**\n * @description the size of radio buttons or bordered radios\n */\n size: useSizeProp,\n /**\n * @description whether the nesting radios are disabled\n */\n disabled: {\n type: Boolean,\n default: undefined,\n },\n /**\n * @description binding value\n */\n modelValue: {\n type: [String, Number, Boolean],\n default: undefined,\n },\n /**\n * @description border and background color when button is active\n */\n fill: {\n type: String,\n default: '',\n },\n /**\n * @description font color when button is active\n */\n textColor: {\n type: String,\n default: '',\n },\n /**\n * @description native `name` attribute\n */\n name: {\n type: String,\n default: undefined,\n },\n /**\n * @description whether to trigger form validation\n */\n validateEvent: {\n type: Boolean,\n default: true,\n },\n options: {\n type: definePropType<radioOption[]>(Array),\n },\n props: {\n type: definePropType<radioOptionProp>(Object),\n default: () => radioDefaultProps,\n },\n type: {\n type: String,\n values: ['radio', 'button'] as const,\n default: 'radio',\n },\n ...useAriaProps(['ariaLabel']),\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `RadioGroupProps` instead.\n */\nexport type RadioGroupPropsPublic = ExtractPublicPropTypes<\n typeof radioGroupProps\n>\n\nexport const radioGroupEmits = radioEmits\nexport type RadioGroupEmits = typeof radioGroupEmits\nexport type RadioGroupInstance = InstanceType<typeof RadioGroup> & unknown\n\n/**\n * @description default values for RadioGroupProps\n */\nexport const radioGroupPropsDefaults = {\n id: undefined,\n disabled: undefined,\n modelValue: undefined,\n fill: '',\n textColor: '',\n name: undefined,\n validateEvent: true,\n props: () => radioDefaultProps,\n type: 'radio',\n} as const\n"],"mappings":";;;;;;;AAcA,MAAa,oBAA+C;CAC1D,OAAO;CACP,OAAO;CACP,UAAU;CACX;;;;AA0DD,MAAa,kBAAkBA,2BAAW;CAIxC,IAAI;EACF,MAAM;EACN,SAAS;EACV;CAID,MAAMC;CAIN,UAAU;EACR,MAAM;EACN,SAAS;EACV;CAID,YAAY;EACV,MAAM;GAAC;GAAQ;GAAQ;GAAQ;EAC/B,SAAS;EACV;CAID,MAAM;EACJ,MAAM;EACN,SAAS;EACV;CAID,WAAW;EACT,MAAM;EACN,SAAS;EACV;CAID,MAAM;EACJ,MAAM;EACN,SAAS;EACV;CAID,eAAe;EACb,MAAM;EACN,SAAS;EACV;CACD,SAAS,EACP,MAAMC,+BAA8B,MAAM,EAC3C;CACD,OAAO;EACL,MAAMA,+BAAgC,OAAO;EAC7C,eAAe;EAChB;CACD,MAAM;EACJ,MAAM;EACN,QAAQ,CAAC,SAAS,SAAS;EAC3B,SAAS;EACV;CACD,GAAGC,6BAAa,CAAC,YAAY,CAAC;CAC/B,CAAU;AASX,MAAa,kBAAkBC;;;;AAO/B,MAAa,0BAA0B;CACrC,IAAI;CACJ,UAAU;CACV,YAAY;CACZ,MAAM;CACN,WAAW;CACX,MAAM;CACN,eAAe;CACf,aAAa;CACb,MAAM;CACP"}

View File

@@ -0,0 +1,34 @@
import { RadioGroupProps, radioOptionProp } from "./radio-group.js";
import * as vue from "vue";
//#region ../../packages/components/radio/src/radio-group.vue.d.ts
declare var __VLS_1: {};
type __VLS_Slots = {} & {
default?: (props: typeof __VLS_1) => any;
};
declare const __VLS_base: vue.DefineComponent<RadioGroupProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
change: (val: string | number | boolean | undefined) => void;
"update:modelValue": (val: string | number | boolean | undefined) => void;
}, string, vue.PublicProps, Readonly<RadioGroupProps> & Readonly<{
onChange?: ((val: string | number | boolean | undefined) => any) | undefined;
"onUpdate:modelValue"?: ((val: string | number | boolean | undefined) => any) | undefined;
}>, {
fill: string;
props: radioOptionProp;
type: "radio" | "button";
id: string;
disabled: boolean;
modelValue: string | number | boolean;
validateEvent: boolean;
name: string;
textColor: string;
}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
declare const _default: typeof __VLS_export;
type __VLS_WithSlots<T, S> = T & {
new (): {
$slots: S;
};
};
//#endregion
export { _default };

View File

@@ -0,0 +1,92 @@
const require_runtime = require('../../../_virtual/_rolldown/runtime.js');
const require_event = require('../../../constants/event.js');
const require_error = require('../../../utils/error.js');
const require_index = require('../../../hooks/use-namespace/index.js');
const require_index$1 = require('../../../hooks/use-id/index.js');
const require_use_form_item = require('../../form/src/hooks/use-form-item.js');
const require_constants = require('./constants.js');
const require_radio = require('./radio2.js');
const require_radio_button = require('./radio-button2.js');
const require_radio_group = require('./radio-group.js');
let lodash_unified = require("lodash-unified");
let vue = require("vue");
//#region ../../packages/components/radio/src/radio-group.vue?vue&type=script&setup=true&lang.ts
const _hoisted_1 = [
"id",
"aria-label",
"aria-labelledby"
];
var radio_group_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({
name: "ElRadioGroup",
__name: "radio-group",
props: require_radio_group.radioGroupProps,
emits: require_radio_group.radioGroupEmits,
setup(__props, { emit: __emit }) {
const props = __props;
const emit = __emit;
const ns = require_index.useNamespace("radio");
const radioId = require_index$1.useId();
const radioGroupRef = (0, vue.ref)();
const { formItem } = require_use_form_item.useFormItem();
const { inputId: groupId, isLabeledByFormItem } = require_use_form_item.useFormItemInputId(props, { formItemContext: formItem });
const changeEvent = (value) => {
emit(require_event.UPDATE_MODEL_EVENT, value);
(0, vue.nextTick)(() => emit(require_event.CHANGE_EVENT, value));
};
(0, vue.onMounted)(() => {
const radios = radioGroupRef.value.querySelectorAll("[type=radio]");
const firstLabel = radios[0];
if (!Array.from(radios).some((radio) => radio.checked) && firstLabel) firstLabel.tabIndex = 0;
});
const name = (0, vue.computed)(() => {
return props.name || radioId.value;
});
const aliasProps = (0, vue.computed)(() => ({
...require_radio_group.radioDefaultProps,
...props.props
}));
const getOptionProps = (option) => {
const { label, value, disabled } = aliasProps.value;
const base = {
label: option[label],
value: option[value],
disabled: option[disabled]
};
return {
...(0, lodash_unified.omit)(option, [
label,
value,
disabled
]),
...base
};
};
const optionComponent = (0, vue.computed)(() => props.type === "button" ? require_radio_button.default : require_radio.default);
(0, vue.provide)(require_constants.radioGroupKey, (0, vue.reactive)({
...(0, vue.toRefs)(props),
changeEvent,
name
}));
(0, vue.watch)(() => props.modelValue, (newVal, oldValue) => {
if (props.validateEvent && !(0, lodash_unified.isEqual)(newVal, oldValue)) formItem?.validate("change").catch((err) => require_error.debugWarn(err));
});
return (_ctx, _cache) => {
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
id: (0, vue.unref)(groupId),
ref_key: "radioGroupRef",
ref: radioGroupRef,
class: (0, vue.normalizeClass)((0, vue.unref)(ns).b("group")),
role: "radiogroup",
"aria-label": !(0, vue.unref)(isLabeledByFormItem) ? __props.ariaLabel || "radio-group" : void 0,
"aria-labelledby": (0, vue.unref)(isLabeledByFormItem) ? (0, vue.unref)(formItem).labelId : void 0
}, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, () => [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(__props.options, (item, index) => {
return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(optionComponent.value), (0, vue.mergeProps)({ key: index }, { ref_for: true }, getOptionProps(item)), null, 16);
}), 128))])], 10, _hoisted_1);
};
}
});
//#endregion
exports.default = radio_group_vue_vue_type_script_setup_true_lang_default;
//# sourceMappingURL=radio-group.vue_vue_type_script_setup_true_lang.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"radio-group.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../../../../packages/components/radio/src/radio-group.vue"],"sourcesContent":["<template>\n <div\n :id=\"groupId\"\n ref=\"radioGroupRef\"\n :class=\"ns.b('group')\"\n role=\"radiogroup\"\n :aria-label=\"!isLabeledByFormItem ? ariaLabel || 'radio-group' : undefined\"\n :aria-labelledby=\"isLabeledByFormItem ? formItem!.labelId : undefined\"\n >\n <slot>\n <component\n :is=\"optionComponent\"\n v-for=\"(item, index) in options\"\n :key=\"index\"\n v-bind=\"getOptionProps(item)\"\n />\n </slot>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n computed,\n nextTick,\n onMounted,\n provide,\n reactive,\n ref,\n toRefs,\n watch,\n} from 'vue'\nimport { useFormItem, useFormItemInputId } from '@element-plus/components/form'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport { useId, useNamespace } from '@element-plus/hooks'\nimport { debugWarn } from '@element-plus/utils'\nimport {\n type RadioGroupProps,\n radioDefaultProps,\n radioGroupEmits,\n radioGroupPropsDefaults,\n} from './radio-group'\nimport { radioGroupKey } from './constants'\nimport { isEqual, omit } from 'lodash-unified'\nimport ElRadio from './radio.vue'\nimport ElRadioButton from './radio-button.vue'\n\ndefineOptions({\n name: 'ElRadioGroup',\n})\n\nconst props = withDefaults(\n defineProps<RadioGroupProps>(),\n radioGroupPropsDefaults\n)\nconst emit = defineEmits(radioGroupEmits)\n\nconst ns = useNamespace('radio')\nconst radioId = useId()\nconst radioGroupRef = ref<HTMLDivElement>()\nconst { formItem } = useFormItem()\nconst { inputId: groupId, isLabeledByFormItem } = useFormItemInputId(props, {\n formItemContext: formItem,\n})\n\nconst changeEvent = (value: RadioGroupProps['modelValue']) => {\n emit(UPDATE_MODEL_EVENT, value)\n nextTick(() => emit(CHANGE_EVENT, value))\n}\n\nonMounted(() => {\n const radios =\n radioGroupRef.value!.querySelectorAll<HTMLInputElement>('[type=radio]')\n const firstLabel = radios[0]\n if (!Array.from(radios).some((radio) => radio.checked) && firstLabel) {\n firstLabel.tabIndex = 0\n }\n})\n\nconst name = computed(() => {\n return props.name || radioId.value\n})\n\nconst aliasProps = computed(() => ({\n ...radioDefaultProps,\n ...props.props,\n}))\nconst getOptionProps = (option: Record<string, any>) => {\n const { label, value, disabled } = aliasProps.value\n const base = {\n label: option[label],\n value: option[value],\n disabled: option[disabled],\n }\n return { ...omit(option, [label, value, disabled]), ...base }\n}\n\nconst optionComponent = computed(() =>\n props.type === 'button' ? ElRadioButton : ElRadio\n)\n\nprovide(\n radioGroupKey,\n reactive({\n ...toRefs(props),\n changeEvent,\n name,\n })\n)\n\nwatch(\n () => props.modelValue,\n (newVal, oldValue) => {\n if (props.validateEvent && !isEqual(newVal, oldValue)) {\n formItem?.validate('change').catch((err) => debugWarn(err))\n }\n }\n)\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;EAkDA,MAAM,QAAQ;EAId,MAAM,OAAO;EAEb,MAAM,KAAK,2BAAa,QAAO;EAC/B,MAAM,UAAU,uBAAM;EACtB,MAAM,8BAAoC;EAC1C,MAAM,EAAE,aAAa,mCAAY;EACjC,MAAM,EAAE,SAAS,SAAS,wBAAwB,yCAAmB,OAAO,EAC1E,iBAAiB,UAClB,CAAA;EAED,MAAM,eAAe,UAAyC;AAC5D,QAAK,kCAAoB,MAAK;AAC9B,2BAAe,KAAK,4BAAc,MAAM,CAAA;;AAG1C,2BAAgB;GACd,MAAM,SACJ,cAAc,MAAO,iBAAmC,eAAc;GACxE,MAAM,aAAa,OAAO;AAC1B,OAAI,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,UAAU,MAAM,QAAQ,IAAI,WACxD,YAAW,WAAW;IAEzB;EAED,MAAM,+BAAsB;AAC1B,UAAO,MAAM,QAAQ,QAAQ;IAC9B;EAED,MAAM,sCAA6B;GACjC,GAAG;GACH,GAAG,MAAM;GACV,EAAC;EACF,MAAM,kBAAkB,WAAgC;GACtD,MAAM,EAAE,OAAO,OAAO,aAAa,WAAW;GAC9C,MAAM,OAAO;IACX,OAAO,OAAO;IACd,OAAO,OAAO;IACd,UAAU,OAAO;IACnB;AACA,UAAO;IAAE,4BAAQ,QAAQ;KAAC;KAAO;KAAO;KAAS,CAAC;IAAE,GAAG;IAAK;;EAG9D,MAAM,0CACJ,MAAM,SAAS,WAAW,+BAAgB,sBAC5C;AAEA,mBACE,mDACS;GACP,mBAAU,MAAM;GAChB;GACA;GACD,CAAA,CACH;AAEA,uBACQ,MAAM,aACX,QAAQ,aAAa;AACpB,OAAI,MAAM,iBAAiB,6BAAS,QAAQ,SAAS,CACnD,WAAU,SAAS,SAAS,CAAC,OAAO,QAAQ,wBAAU,IAAI,CAAA;IAGhE;;4DAnGQ,OAAA;IAfH,mBAAI,QAAO;aACR;IAAJ,KAAI;IACH,8CAAO,GAAE,CAAC,EAAC,QAAA,CAAA;IACZ,MAAK;IACJ,cAAU,gBAAG,oBAAmB,GAAG,QAAA,aAAS,gBAAoB;IAChE,kCAAiB,oBAAmB,kBAAG,SAAQ,CAAE,UAAU;2BASrD,KAAA,QAAA,WAAA,EAAA,QAAA,wDADH,cAAA,0BAHwB,QAAA,UAAhB,MAAM,UAAK;uFADd,gBAAA,MAAe,sBAIpB,EAFC,KAAK,OAAK,EAAA,EAAA,SAAA,MAAA,EACH,eAAe,KAAI,CAAA,EAAA,MAAA,GAAA"}

View File

@@ -0,0 +1,9 @@
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
const require_radio_group_vue_vue_type_script_setup_true_lang = require('./radio-group.vue_vue_type_script_setup_true_lang.js');
//#region ../../packages/components/radio/src/radio-group.vue
var radio_group_default = require_radio_group_vue_vue_type_script_setup_true_lang.default;
//#endregion
exports.default = radio_group_default;
//# sourceMappingURL=radio-group2.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"radio-group2.js","names":[],"sources":["../../../../../../packages/components/radio/src/radio-group.vue"],"sourcesContent":["<template>\n <div\n :id=\"groupId\"\n ref=\"radioGroupRef\"\n :class=\"ns.b('group')\"\n role=\"radiogroup\"\n :aria-label=\"!isLabeledByFormItem ? ariaLabel || 'radio-group' : undefined\"\n :aria-labelledby=\"isLabeledByFormItem ? formItem!.labelId : undefined\"\n >\n <slot>\n <component\n :is=\"optionComponent\"\n v-for=\"(item, index) in options\"\n :key=\"index\"\n v-bind=\"getOptionProps(item)\"\n />\n </slot>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n computed,\n nextTick,\n onMounted,\n provide,\n reactive,\n ref,\n toRefs,\n watch,\n} from 'vue'\nimport { useFormItem, useFormItemInputId } from '@element-plus/components/form'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport { useId, useNamespace } from '@element-plus/hooks'\nimport { debugWarn } from '@element-plus/utils'\nimport {\n type RadioGroupProps,\n radioDefaultProps,\n radioGroupEmits,\n radioGroupPropsDefaults,\n} from './radio-group'\nimport { radioGroupKey } from './constants'\nimport { isEqual, omit } from 'lodash-unified'\nimport ElRadio from './radio.vue'\nimport ElRadioButton from './radio-button.vue'\n\ndefineOptions({\n name: 'ElRadioGroup',\n})\n\nconst props = withDefaults(\n defineProps<RadioGroupProps>(),\n radioGroupPropsDefaults\n)\nconst emit = defineEmits(radioGroupEmits)\n\nconst ns = useNamespace('radio')\nconst radioId = useId()\nconst radioGroupRef = ref<HTMLDivElement>()\nconst { formItem } = useFormItem()\nconst { inputId: groupId, isLabeledByFormItem } = useFormItemInputId(props, {\n formItemContext: formItem,\n})\n\nconst changeEvent = (value: RadioGroupProps['modelValue']) => {\n emit(UPDATE_MODEL_EVENT, value)\n nextTick(() => emit(CHANGE_EVENT, value))\n}\n\nonMounted(() => {\n const radios =\n radioGroupRef.value!.querySelectorAll<HTMLInputElement>('[type=radio]')\n const firstLabel = radios[0]\n if (!Array.from(radios).some((radio) => radio.checked) && firstLabel) {\n firstLabel.tabIndex = 0\n }\n})\n\nconst name = computed(() => {\n return props.name || radioId.value\n})\n\nconst aliasProps = computed(() => ({\n ...radioDefaultProps,\n ...props.props,\n}))\nconst getOptionProps = (option: Record<string, any>) => {\n const { label, value, disabled } = aliasProps.value\n const base = {\n label: option[label],\n value: option[value],\n disabled: option[disabled],\n }\n return { ...omit(option, [label, value, disabled]), ...base }\n}\n\nconst optionComponent = computed(() =>\n props.type === 'button' ? ElRadioButton : ElRadio\n)\n\nprovide(\n radioGroupKey,\n reactive({\n ...toRefs(props),\n changeEvent,\n name,\n })\n)\n\nwatch(\n () => props.modelValue,\n (newVal, oldValue) => {\n if (props.validateEvent && !isEqual(newVal, oldValue)) {\n formItem?.validate('change').catch((err) => debugWarn(err))\n }\n }\n)\n</script>\n"],"mappings":""}

View File

@@ -0,0 +1,96 @@
import { EpPropFinalized, EpPropMergeType } from "../../../utils/vue/props/types.js";
import { ComponentSize } from "../../../constants/size.js";
import "../../../utils/index.js";
import { _default } from "./radio.vue.js";
import * as vue from "vue";
import { ExtractPublicPropTypes } from "vue";
//#region ../../packages/components/radio/src/radio.d.ts
interface RadioPropsBase {
/**
* @description binding value
*/
modelValue?: string | number | boolean;
/**
* @description size of the Radio
*/
size?: ComponentSize;
/**
* @description whether Radio is disabled
*/
disabled?: boolean;
/**
* @description the label of Radio
*/
label?: string | number | boolean;
/**
* @description the value of Radio
*/
value?: string | number | boolean;
/**
* @description native `name` attribute
*/
name?: string;
}
interface RadioProps extends RadioPropsBase {
/**
* @description whether to add a border around Radio
*/
border?: boolean;
}
/**
* @deprecated Removed after 3.0.0, Use `RadioPropsBase` instead.
*/
declare const radioPropsBase: {
modelValue: EpPropFinalized<(BooleanConstructor | NumberConstructor | StringConstructor)[], unknown, unknown, undefined, boolean>;
size: {
readonly type: vue.PropType<EpPropMergeType<StringConstructor, "" | "default" | "small" | "large", never>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
disabled: EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
label: EpPropFinalized<(BooleanConstructor | NumberConstructor | StringConstructor)[], unknown, unknown, undefined, boolean>;
value: EpPropFinalized<(BooleanConstructor | NumberConstructor | StringConstructor)[], unknown, unknown, undefined, boolean>;
name: EpPropFinalized<StringConstructor, unknown, unknown, undefined, boolean>;
};
/**
* @deprecated Removed after 3.0.0, Use `RadioProps` instead.
*/
declare const radioProps: {
readonly border: BooleanConstructor;
readonly modelValue: EpPropFinalized<(BooleanConstructor | NumberConstructor | StringConstructor)[], unknown, unknown, undefined, boolean>;
readonly size: {
readonly type: vue.PropType<EpPropMergeType<StringConstructor, "" | "default" | "small" | "large", never>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly disabled: EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
readonly label: EpPropFinalized<(BooleanConstructor | NumberConstructor | StringConstructor)[], unknown, unknown, undefined, boolean>;
readonly value: EpPropFinalized<(BooleanConstructor | NumberConstructor | StringConstructor)[], unknown, unknown, undefined, boolean>;
readonly name: EpPropFinalized<StringConstructor, unknown, unknown, undefined, boolean>;
};
declare const radioEmits: {
"update:modelValue": (val: string | number | boolean | undefined) => val is string | number | boolean;
change: (val: string | number | boolean | undefined) => val is string | number | boolean;
};
/**
* @deprecated Removed after 3.0.0, Use `RadioProps` instead.
*/
type RadioPropsPublic = ExtractPublicPropTypes<typeof radioProps>;
type RadioEmits = typeof radioEmits;
type RadioInstance = InstanceType<typeof _default> & unknown;
/**
* @description default values for RadioProps
*/
declare const radioPropsDefaults: {
readonly modelValue: undefined;
readonly disabled: undefined;
readonly label: undefined;
readonly value: undefined;
readonly name: undefined;
readonly border: false;
};
//#endregion
export { RadioEmits, RadioInstance, RadioProps, RadioPropsBase, RadioPropsPublic, radioEmits, radioProps, radioPropsBase, radioPropsDefaults };

View File

@@ -0,0 +1,76 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('../../../_virtual/_rolldown/runtime.js');
const require_event = require('../../../constants/event.js');
const require_types = require('../../../utils/types.js');
const require_runtime$1 = require('../../../utils/vue/props/runtime.js');
const require_index = require('../../../hooks/use-size/index.js');
let _vue_shared = require("@vue/shared");
//#region ../../packages/components/radio/src/radio.ts
/**
* @deprecated Removed after 3.0.0, Use `RadioPropsBase` instead.
*/
const radioPropsBase = require_runtime$1.buildProps({
modelValue: {
type: [
String,
Number,
Boolean
],
default: void 0
},
size: require_index.useSizeProp,
disabled: {
type: Boolean,
default: void 0
},
label: {
type: [
String,
Number,
Boolean
],
default: void 0
},
value: {
type: [
String,
Number,
Boolean
],
default: void 0
},
name: {
type: String,
default: void 0
}
});
/**
* @deprecated Removed after 3.0.0, Use `RadioProps` instead.
*/
const radioProps = require_runtime$1.buildProps({
...radioPropsBase,
border: Boolean
});
const radioEmits = {
[require_event.UPDATE_MODEL_EVENT]: (val) => (0, _vue_shared.isString)(val) || require_types.isNumber(val) || require_types.isBoolean(val),
[require_event.CHANGE_EVENT]: (val) => (0, _vue_shared.isString)(val) || require_types.isNumber(val) || require_types.isBoolean(val)
};
/**
* @description default values for RadioProps
*/
const radioPropsDefaults = {
modelValue: void 0,
disabled: void 0,
label: void 0,
value: void 0,
name: void 0,
border: false
};
//#endregion
exports.radioEmits = radioEmits;
exports.radioProps = radioProps;
exports.radioPropsBase = radioPropsBase;
exports.radioPropsDefaults = radioPropsDefaults;
//# sourceMappingURL=radio.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"radio.js","names":["buildProps","useSizeProp","UPDATE_MODEL_EVENT","isNumber","isBoolean","CHANGE_EVENT"],"sources":["../../../../../../packages/components/radio/src/radio.ts"],"sourcesContent":["import { buildProps, isBoolean, isNumber, isString } from '@element-plus/utils'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport { useSizeProp } from '@element-plus/hooks'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type { ComponentSize } from '@element-plus/constants'\nimport type Radio from './radio.vue'\n\nexport interface RadioPropsBase {\n /**\n * @description binding value\n */\n modelValue?: string | number | boolean\n /**\n * @description size of the Radio\n */\n size?: ComponentSize\n /**\n * @description whether Radio is disabled\n */\n disabled?: boolean\n /**\n * @description the label of Radio\n */\n label?: string | number | boolean\n /**\n * @description the value of Radio\n */\n value?: string | number | boolean\n /**\n * @description native `name` attribute\n */\n name?: string\n}\n\nexport interface RadioProps extends RadioPropsBase {\n /**\n * @description whether to add a border around Radio\n */\n border?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `RadioPropsBase` instead.\n */\nexport const radioPropsBase = buildProps({\n /**\n * @description binding value\n */\n modelValue: {\n type: [String, Number, Boolean],\n default: undefined,\n },\n /**\n * @description size of the Radio\n */\n size: useSizeProp,\n /**\n * @description whether Radio is disabled\n */\n disabled: {\n type: Boolean,\n default: undefined,\n },\n /**\n * @description the label of Radio\n */\n label: {\n type: [String, Number, Boolean],\n default: undefined,\n },\n /**\n * @description the value of Radio\n */\n value: {\n type: [String, Number, Boolean],\n default: undefined,\n },\n /**\n * @description native `name` attribute\n */\n name: {\n type: String,\n default: undefined,\n },\n})\n\n/**\n * @deprecated Removed after 3.0.0, Use `RadioProps` instead.\n */\nexport const radioProps = buildProps({\n ...radioPropsBase,\n /**\n * @description whether to add a border around Radio\n */\n border: Boolean,\n} as const)\n\nexport const radioEmits = {\n [UPDATE_MODEL_EVENT]: (val: string | number | boolean | undefined) =>\n isString(val) || isNumber(val) || isBoolean(val),\n [CHANGE_EVENT]: (val: string | number | boolean | undefined) =>\n isString(val) || isNumber(val) || isBoolean(val),\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `RadioProps` instead.\n */\nexport type RadioPropsPublic = ExtractPublicPropTypes<typeof radioProps>\nexport type RadioEmits = typeof radioEmits\nexport type RadioInstance = InstanceType<typeof Radio> & unknown\n\n/**\n * @description default values for RadioProps\n */\nexport const radioPropsDefaults = {\n modelValue: undefined,\n disabled: undefined,\n label: undefined,\n value: undefined,\n name: undefined,\n border: false,\n} as const\n"],"mappings":";;;;;;;;;;;;AA6CA,MAAa,iBAAiBA,6BAAW;CAIvC,YAAY;EACV,MAAM;GAAC;GAAQ;GAAQ;GAAQ;EAC/B,SAAS;EACV;CAID,MAAMC;CAIN,UAAU;EACR,MAAM;EACN,SAAS;EACV;CAID,OAAO;EACL,MAAM;GAAC;GAAQ;GAAQ;GAAQ;EAC/B,SAAS;EACV;CAID,OAAO;EACL,MAAM;GAAC;GAAQ;GAAQ;GAAQ;EAC/B,SAAS;EACV;CAID,MAAM;EACJ,MAAM;EACN,SAAS;EACV;CACF,CAAC;;;;AAKF,MAAa,aAAaD,6BAAW;CACnC,GAAG;CAIH,QAAQ;CACT,CAAU;AAEX,MAAa,aAAa;EACvBE,oCAAsB,kCACZ,IAAI,IAAIC,uBAAS,IAAI,IAAIC,wBAAU,IAAI;EACjDC,8BAAgB,kCACN,IAAI,IAAIF,uBAAS,IAAI,IAAIC,wBAAU,IAAI;CACnD;;;;AAYD,MAAa,qBAAqB;CAChC,YAAY;CACZ,UAAU;CACV,OAAO;CACP,OAAO;CACP,MAAM;CACN,QAAQ;CACT"}

View File

@@ -0,0 +1,31 @@
import { RadioProps } from "./radio.js";
import * as vue from "vue";
//#region ../../packages/components/radio/src/radio.vue.d.ts
declare var __VLS_1: {};
type __VLS_Slots = {} & {
default?: (props: typeof __VLS_1) => any;
};
declare const __VLS_base: vue.DefineComponent<RadioProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
change: (val: string | number | boolean | undefined) => void;
"update:modelValue": (val: string | number | boolean | undefined) => void;
}, string, vue.PublicProps, Readonly<RadioProps> & Readonly<{
onChange?: ((val: string | number | boolean | undefined) => any) | undefined;
"onUpdate:modelValue"?: ((val: string | number | boolean | undefined) => any) | undefined;
}>, {
disabled: boolean;
modelValue: string | number | boolean;
name: string;
value: string | number | boolean;
border: boolean;
label: string | number | boolean;
}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
declare const _default: typeof __VLS_export;
type __VLS_WithSlots<T, S> = T & {
new (): {
$slots: S;
};
};
//#endregion
export { _default };

View File

@@ -0,0 +1,64 @@
const require_runtime = require('../../../_virtual/_rolldown/runtime.js');
const require_event = require('../../../constants/event.js');
const require_index = require('../../../hooks/use-namespace/index.js');
const require_radio = require('./radio.js');
const require_use_radio = require('./use-radio.js');
let vue = require("vue");
//#region ../../packages/components/radio/src/radio.vue?vue&type=script&setup=true&lang.ts
const _hoisted_1 = [
"value",
"name",
"disabled",
"checked"
];
var radio_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({
name: "ElRadio",
__name: "radio",
props: require_radio.radioProps,
emits: require_radio.radioEmits,
setup(__props, { emit: __emit }) {
const props = __props;
const emit = __emit;
const ns = require_index.useNamespace("radio");
const { radioRef, radioGroup, focus, size, disabled, modelValue, actualValue } = require_use_radio.useRadio(props, emit);
function handleChange() {
(0, vue.nextTick)(() => emit(require_event.CHANGE_EVENT, modelValue.value));
}
return (_ctx, _cache) => {
return (0, vue.openBlock)(), (0, vue.createElementBlock)("label", { class: (0, vue.normalizeClass)([
(0, vue.unref)(ns).b(),
(0, vue.unref)(ns).is("disabled", (0, vue.unref)(disabled)),
(0, vue.unref)(ns).is("focus", (0, vue.unref)(focus)),
(0, vue.unref)(ns).is("bordered", __props.border),
(0, vue.unref)(ns).is("checked", (0, vue.unref)(modelValue) === (0, vue.unref)(actualValue)),
(0, vue.unref)(ns).m((0, vue.unref)(size))
]) }, [(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)([
(0, vue.unref)(ns).e("input"),
(0, vue.unref)(ns).is("disabled", (0, vue.unref)(disabled)),
(0, vue.unref)(ns).is("checked", (0, vue.unref)(modelValue) === (0, vue.unref)(actualValue))
]) }, [(0, vue.withDirectives)((0, vue.createElementVNode)("input", {
ref_key: "radioRef",
ref: radioRef,
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => (0, vue.isRef)(modelValue) ? modelValue.value = $event : null),
class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("original")),
value: (0, vue.unref)(actualValue),
name: __props.name || (0, vue.unref)(radioGroup)?.name,
disabled: (0, vue.unref)(disabled),
checked: (0, vue.unref)(modelValue) === (0, vue.unref)(actualValue),
type: "radio",
onFocus: _cache[1] || (_cache[1] = ($event) => focus.value = true),
onBlur: _cache[2] || (_cache[2] = ($event) => focus.value = false),
onChange: handleChange,
onClick: _cache[3] || (_cache[3] = (0, vue.withModifiers)(() => {}, ["stop"]))
}, null, 42, _hoisted_1), [[vue.vModelRadio, (0, vue.unref)(modelValue)]]), (0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("inner")) }, null, 2)], 2), (0, vue.createElementVNode)("span", {
class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("label")),
onKeydown: _cache[4] || (_cache[4] = (0, vue.withModifiers)(() => {}, ["stop"]))
}, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.label), 1)])], 34)], 2);
};
}
});
//#endregion
exports.default = radio_vue_vue_type_script_setup_true_lang_default;
//# sourceMappingURL=radio.vue_vue_type_script_setup_true_lang.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"radio.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../../../../packages/components/radio/src/radio.vue"],"sourcesContent":["<template>\n <label\n :class=\"[\n ns.b(),\n ns.is('disabled', disabled),\n ns.is('focus', focus),\n ns.is('bordered', border),\n ns.is('checked', modelValue === actualValue),\n ns.m(size),\n ]\"\n >\n <span\n :class=\"[\n ns.e('input'),\n ns.is('disabled', disabled),\n ns.is('checked', modelValue === actualValue),\n ]\"\n >\n <input\n ref=\"radioRef\"\n v-model=\"modelValue\"\n :class=\"ns.e('original')\"\n :value=\"actualValue\"\n :name=\"name || radioGroup?.name\"\n :disabled=\"disabled\"\n :checked=\"modelValue === actualValue\"\n type=\"radio\"\n @focus=\"focus = true\"\n @blur=\"focus = false\"\n @change=\"handleChange\"\n @click.stop\n />\n <span :class=\"ns.e('inner')\" />\n </span>\n <span :class=\"ns.e('label')\" @keydown.stop>\n <slot>\n {{ label }}\n </slot>\n </span>\n </label>\n</template>\n\n<script lang=\"ts\" setup>\nimport { nextTick } from 'vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport { CHANGE_EVENT } from '@element-plus/constants'\nimport { type RadioProps, radioEmits, radioPropsDefaults } from './radio'\nimport { useRadio } from './use-radio'\n\ndefineOptions({\n name: 'ElRadio',\n})\n\nconst props = withDefaults(defineProps<RadioProps>(), radioPropsDefaults)\nconst emit = defineEmits(radioEmits)\n\nconst ns = useNamespace('radio')\nconst { radioRef, radioGroup, focus, size, disabled, modelValue, actualValue } =\n useRadio(props, emit)\n\nfunction handleChange() {\n nextTick(() => emit(CHANGE_EVENT, modelValue.value))\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;EAqDA,MAAM,QAAQ;EACd,MAAM,OAAO;EAEb,MAAM,KAAK,2BAAa,QAAO;EAC/B,MAAM,EAAE,UAAU,YAAY,OAAO,MAAM,UAAU,YAAY,gBAC/D,2BAAS,OAAO,KAAI;EAEtB,SAAS,eAAe;AACtB,2BAAe,KAAK,4BAAc,WAAW,MAAM,CAAA;;;4DAtB3C,SAAA,EArCL,+BAAK;mBAAU,GAAE,CAAC,GAAC;mBAAU,GAAE,CAAC,GAAE,2BAAa,SAAQ,CAAA;mBAAS,GAAE,CAAC,GAAE,wBAAU,MAAK,CAAA;mBAAS,GAAE,CAAC,GAAE,YAAa,QAAA,OAAM;mBAAS,GAAE,CAAC,GAAE,0BAAY,WAAU,oBAAK,YAAW,CAAA;mBAAS,GAAE,CAAC,iBAAE,KAAI,CAAA;sCA+BrL,QAAA,EArBJ,+BAAK;mBAAY,GAAE,CAAC,EAAC,QAAA;mBAAmB,GAAE,CAAC,GAAE,2BAAa,SAAQ,CAAA;mBAAW,GAAE,CAAC,GAAE,0BAAY,WAAU,oBAAK,YAAW,CAAA;8DAmBvH,SAAA;aAZI;IAAJ,KAAI;8FACK,WAAU,QAAA,SAAA;IAClB,8CAAO,GAAE,CAAC,EAAC,WAAA,CAAA;IACX,sBAAO,YAAW;IAClB,MAAM,QAAA,uBAAQ,WAAU,EAAE;IAC1B,yBAAU,SAAQ;IAClB,wBAAS,WAAU,oBAAK,YAAW;IACpC,MAAK;IACJ,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,MAAA,QAAK;IACZ,QAAI,OAAA,OAAA,OAAA,MAAA,WAAE,MAAA,QAAK;IACX,UAAQ;IACR,SAAK,OAAA,OAAA,OAAA,kCAAN,IAAW,CAAA,OAAA,CAAA;+DAVF,WAAU,CAAA,gCAYU,QAAA,EAAxB,8CAAO,GAAE,CAAC,EAAC,QAAA,CAAA,+CAMb,QAAA;IAJA,8CAAO,GAAE,CAAC,EAAC,QAAA,CAAA;IAAY,WAAO,OAAA,OAAA,OAAA,kCAAR,IAAa,CAAA,OAAA,CAAA;2BAGjC,KAAA,QAAA,WAAA,EAAA,QAAA,mDADF,QAAA,MAAK,EAAA,EAAA"}

View File

@@ -0,0 +1,9 @@
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
const require_radio_vue_vue_type_script_setup_true_lang = require('./radio.vue_vue_type_script_setup_true_lang.js');
//#region ../../packages/components/radio/src/radio.vue
var radio_default = require_radio_vue_vue_type_script_setup_true_lang.default;
//#endregion
exports.default = radio_default;
//# sourceMappingURL=radio2.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"radio2.js","names":[],"sources":["../../../../../../packages/components/radio/src/radio.vue"],"sourcesContent":["<template>\n <label\n :class=\"[\n ns.b(),\n ns.is('disabled', disabled),\n ns.is('focus', focus),\n ns.is('bordered', border),\n ns.is('checked', modelValue === actualValue),\n ns.m(size),\n ]\"\n >\n <span\n :class=\"[\n ns.e('input'),\n ns.is('disabled', disabled),\n ns.is('checked', modelValue === actualValue),\n ]\"\n >\n <input\n ref=\"radioRef\"\n v-model=\"modelValue\"\n :class=\"ns.e('original')\"\n :value=\"actualValue\"\n :name=\"name || radioGroup?.name\"\n :disabled=\"disabled\"\n :checked=\"modelValue === actualValue\"\n type=\"radio\"\n @focus=\"focus = true\"\n @blur=\"focus = false\"\n @change=\"handleChange\"\n @click.stop\n />\n <span :class=\"ns.e('inner')\" />\n </span>\n <span :class=\"ns.e('label')\" @keydown.stop>\n <slot>\n {{ label }}\n </slot>\n </span>\n </label>\n</template>\n\n<script lang=\"ts\" setup>\nimport { nextTick } from 'vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport { CHANGE_EVENT } from '@element-plus/constants'\nimport { type RadioProps, radioEmits, radioPropsDefaults } from './radio'\nimport { useRadio } from './use-radio'\n\ndefineOptions({\n name: 'ElRadio',\n})\n\nconst props = withDefaults(defineProps<RadioProps>(), radioPropsDefaults)\nconst emit = defineEmits(radioEmits)\n\nconst ns = useNamespace('radio')\nconst { radioRef, radioGroup, focus, size, disabled, modelValue, actualValue } =\n useRadio(props, emit)\n\nfunction handleChange() {\n nextTick(() => emit(CHANGE_EVENT, modelValue.value))\n}\n</script>\n"],"mappings":""}

View File

@@ -0,0 +1,57 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('../../../_virtual/_rolldown/runtime.js');
const require_event = require('../../../constants/event.js');
const require_types = require('../../../utils/types.js');
const require_index = require('../../../hooks/use-deprecated/index.js');
const require_use_form_common_props = require('../../form/src/hooks/use-form-common-props.js');
const require_constants = require('./constants.js');
let vue = require("vue");
//#region ../../packages/components/radio/src/use-radio.ts
const useRadio = (props, emit) => {
const radioRef = (0, vue.ref)();
const radioGroup = (0, vue.inject)(require_constants.radioGroupKey, void 0);
const isGroup = (0, vue.computed)(() => !!radioGroup);
const actualValue = (0, vue.computed)(() => {
if (!require_types.isPropAbsent(props.value)) return props.value;
return props.label;
});
const modelValue = (0, vue.computed)({
get() {
return isGroup.value ? radioGroup.modelValue : props.modelValue;
},
set(val) {
if (isGroup.value) radioGroup.changeEvent(val);
else emit && emit(require_event.UPDATE_MODEL_EVENT, val);
radioRef.value.checked = props.modelValue === actualValue.value;
}
});
const size = require_use_form_common_props.useFormSize((0, vue.computed)(() => radioGroup?.size));
const disabled = require_use_form_common_props.useFormDisabled((0, vue.computed)(() => radioGroup?.disabled));
const focus = (0, vue.ref)(false);
const tabIndex = (0, vue.computed)(() => {
return disabled.value || isGroup.value && modelValue.value !== actualValue.value ? -1 : 0;
});
require_index.useDeprecated({
from: "label act as value",
replacement: "value",
version: "3.0.0",
scope: "el-radio",
ref: "https://element-plus.org/en-US/component/radio.html"
}, (0, vue.computed)(() => isGroup.value && require_types.isPropAbsent(props.value)));
return {
radioRef,
isGroup,
radioGroup,
focus,
size,
disabled,
tabIndex,
modelValue,
actualValue
};
};
//#endregion
exports.useRadio = useRadio;
//# sourceMappingURL=use-radio.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"use-radio.js","names":["radioGroupKey","isPropAbsent","UPDATE_MODEL_EVENT","useFormSize","useFormDisabled"],"sources":["../../../../../../packages/components/radio/src/use-radio.ts"],"sourcesContent":["import { computed, inject, ref } from 'vue'\nimport { UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport { useFormDisabled, useFormSize } from '@element-plus/components/form'\nimport { useDeprecated } from '@element-plus/hooks'\nimport { isPropAbsent } from '@element-plus/utils'\nimport { radioGroupKey } from './constants'\n\nimport type { RadioButtonProps } from './radio-button'\nimport type { SetupContext } from 'vue'\nimport type { RadioEmits, RadioProps } from './radio'\n\nexport const useRadio = (\n props: RadioProps | RadioButtonProps,\n emit?: SetupContext<RadioEmits>['emit']\n) => {\n const radioRef = ref<HTMLInputElement>()\n const radioGroup = inject(radioGroupKey, undefined)\n const isGroup = computed(() => !!radioGroup)\n const actualValue = computed(() => {\n // In version 2.x, if there's no props.value, props.label will act as props.value\n // In version 3.x, remove this computed value, use props.value instead.\n if (!isPropAbsent(props.value)) {\n return props.value\n }\n return props.label\n })\n const modelValue = computed<RadioProps['modelValue']>({\n get() {\n return isGroup.value ? radioGroup!.modelValue : props.modelValue!\n },\n set(val) {\n if (isGroup.value) {\n radioGroup!.changeEvent(val)\n } else {\n emit && emit(UPDATE_MODEL_EVENT, val)\n }\n radioRef.value!.checked = props.modelValue === actualValue.value\n },\n })\n\n const size = useFormSize(computed(() => radioGroup?.size))\n const disabled = useFormDisabled(computed(() => radioGroup?.disabled))\n const focus = ref(false)\n const tabIndex = computed(() => {\n return disabled.value ||\n (isGroup.value && modelValue.value !== actualValue.value)\n ? -1\n : 0\n })\n\n useDeprecated(\n {\n from: 'label act as value',\n replacement: 'value',\n version: '3.0.0',\n scope: 'el-radio',\n ref: 'https://element-plus.org/en-US/component/radio.html',\n },\n computed(() => isGroup.value && isPropAbsent(props.value))\n )\n\n return {\n radioRef,\n isGroup,\n radioGroup,\n focus,\n size,\n disabled,\n tabIndex,\n modelValue,\n actualValue,\n }\n}\n"],"mappings":";;;;;;;;;;AAWA,MAAa,YACX,OACA,SACG;CACH,MAAM,yBAAkC;CACxC,MAAM,6BAAoBA,iCAAe,OAAU;CACnD,MAAM,kCAAyB,CAAC,CAAC,WAAW;CAC5C,MAAM,sCAA6B;AAGjC,MAAI,CAACC,2BAAa,MAAM,MAAM,CAC5B,QAAO,MAAM;AAEf,SAAO,MAAM;GACb;CACF,MAAM,+BAAgD;EACpD,MAAM;AACJ,UAAO,QAAQ,QAAQ,WAAY,aAAa,MAAM;;EAExD,IAAI,KAAK;AACP,OAAI,QAAQ,MACV,YAAY,YAAY,IAAI;OAE5B,SAAQ,KAAKC,kCAAoB,IAAI;AAEvC,YAAS,MAAO,UAAU,MAAM,eAAe,YAAY;;EAE9D,CAAC;CAEF,MAAM,OAAOC,kEAA2B,YAAY,KAAK,CAAC;CAC1D,MAAM,WAAWC,sEAA+B,YAAY,SAAS,CAAC;CACtE,MAAM,qBAAY,MAAM;CACxB,MAAM,mCAA0B;AAC9B,SAAO,SAAS,SACb,QAAQ,SAAS,WAAW,UAAU,YAAY,QACjD,KACA;GACJ;AAEF,6BACE;EACE,MAAM;EACN,aAAa;EACb,SAAS;EACT,OAAO;EACP,KAAK;EACN,0BACc,QAAQ,SAASH,2BAAa,MAAM,MAAM,CAAC,CAC3D;AAED,QAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD"}

View File

@@ -0,0 +1,3 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
require('../../base/style/css.js');
require("element-plus/theme-chalk/el-radio.css");

View File

@@ -0,0 +1,3 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
require('../../base/style/index.js');
require("element-plus/theme-chalk/src/radio.scss");