@use 'mixins/mixins';
@use 'mixins/utils';
@use 'mixins/button';
@use './common/var';

@include mixins.b(radio) {
	color: var.$radio-font-color;
	font-weight: var.$radio-font-weight;
	line-height: 1;
	position: relative;
	cursor: pointer;
	display: inline-block;
	white-space: nowrap;
	outline: none;
	font-size: var.$font-size-base;
	margin-right: 30px;
	@include utils.utils-user-select(none);

	@include mixins.when(bordered) {
		padding: var.$radio-bordered-padding;
		border-radius: var(--border-radius-base);
		border: var(--border-base);
		box-sizing: border-box;
		height: var.$radio-bordered-height;

		&.is-checked {
			border-color: var(--color-primary);
		}

		&.is-disabled {
			cursor: not-allowed;
			border-color: var(--border-color-light);
		}

		& + .el-radio.is-bordered {
			margin-left: 10px;
		}
	}

	@include mixins.m(medium) {
		&.is-bordered {
			padding: var.$radio-bordered-medium-padding;
			border-radius: var.$button-medium-border-radius;
			height: var.$radio-bordered-medium-height;
			.el-radio__label {
				font-size: var.$button-medium-font-size;
			}
			.el-radio__inner {
				height: var.$radio-bordered-medium-input-height;
				width: var.$radio-bordered-medium-input-width;
			}
		}
	}
	@include mixins.m(small) {
		&.is-bordered {
			padding: var.$radio-bordered-small-padding;
			border-radius: var.$button-small-border-radius;
			height: var.$radio-bordered-small-height;
			.el-radio__label {
				font-size: var.$button-small-font-size;
			}
			.el-radio__inner {
				height: var.$radio-bordered-small-input-height;
				width: var.$radio-bordered-small-input-width;
			}
		}
	}
	@include mixins.m(mini) {
		&.is-bordered {
			padding: var.$radio-bordered-mini-padding;
			border-radius: var.$button-mini-border-radius;
			height: var.$radio-bordered-mini-height;
			.el-radio__label {
				font-size: var.$button-mini-font-size;
			}
			.el-radio__inner {
				height: var.$radio-bordered-mini-input-height;
				width: var.$radio-bordered-mini-input-width;
			}
		}
	}

	&:last-child {
		margin-right: 0;
	}

	@include mixins.e(input) {
		white-space: nowrap;
		cursor: pointer;
		outline: none;
		display: inline-block;
		line-height: 1;
		position: relative;
		vertical-align: middle;

		@include mixins.when(disabled) {
			.el-radio__inner {
				background-color: var.$radio-disabled-input-fill;
				border-color: var.$radio-disabled-input-border-color;
				cursor: not-allowed;

				&::after {
					cursor: not-allowed;
					background-color: var.$radio-disabled-icon-color;
				}

				& + .el-radio__label {
					cursor: not-allowed;
				}
			}
			&.is-checked {
				.el-radio__inner {
					background-color: var.$radio-disabled-checked-input-fill;
					border-color: var.$radio-disabled-checked-input-border-color;

					&::after {
						background-color: var.$radio-disabled-checked-icon-color;
					}
				}
			}
			& + span.el-radio__label {
				color: var(--color-text-lighter);
				cursor: not-allowed;
			}
		}

		@include mixins.when(checked) {
			.el-radio__inner {
				border-color: var.$radio-checked-input-border-color;
				background: var.$radio-checked-icon-color;

				&::after {
					transform: translate(-50%, -50%) scale(1);
				}
			}

			& + .el-radio__label {
				color: var.$radio-checked-font-color;
			}
		}

		@include mixins.when(focus) {
			.el-radio__inner {
				border-color: var.$radio-input-border-color-hover;
			}
		}
	}
	@include mixins.e(inner) {
		border: var.$radio-input-border;
		border-radius: var.$radio-input-border-radius;
		width: var.$radio-input-width;
		height: var.$radio-input-height;
		background-color: var.$radio-input-background-color;
		position: relative;
		cursor: pointer;
		display: inline-block;
		box-sizing: border-box;

		&:hover {
			border-color: var.$radio-input-border-color-hover;
		}

		&::after {
			width: 4px;
			height: 4px;
			border-radius: var.$radio-input-border-radius;
			background-color: var.$color-white;
			content: '';
			position: absolute;
			left: 50%;
			top: 50%;
			transform: translate(-50%, -50%) scale(0);
			transition: transform 0.15s ease-in;
		}
	}

	@include mixins.e(original) {
		opacity: 0;
		outline: none;
		position: absolute;
		z-index: -1;
		top: 0;
		left: 0;
		right: 0;
		bottom: 0;
		margin: 0;
	}

	&:focus:not(.is-focus):not(:active):not(.is-disabled) {
		/*获得焦点时 样式提醒*/
		.el-radio__inner {
			box-shadow: 0 0 2px 2px var.$radio-input-border-color-hover;
		}
	}

	@include mixins.e(label) {
		font-size: var.$radio-font-size;
		padding-left: 10px;
	}
}
