@use 'sass:map';

@use 'mixins/mixins' as *;
@use 'common/var' as *;

$checked-icon: "data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E";

@mixin checked-icon {
	content: '';
	position: absolute;
	top: 50%;
	right: 20px;
	border-top: none;
	border-right: none;
	background-repeat: no-repeat;
	background-position: center;
	background-color: map.get($select-option, 'selected-text-color');
	mask: url('#{$checked-icon}') no-repeat;
	mask-size: 100% 100%;
	transform: translateY(-50%);
	width: 12px;
	height: 12px;
}

@include b(select-dropdown) {
	@include e(item) {
		font-size: map.get($select, 'font-size');

		// 20 as the padding of option item, 12 as the size of ✓ icon size
		padding: 0 #{20 + 12}px 0 20px;
		position: relative;
		white-space: nowrap;
		overflow: hidden;
		text-overflow: ellipsis;
		color: map.get($select-option, 'text-color');
		height: map.get($select-option, 'height');
		line-height: map.get($select-option, 'height');
		box-sizing: border-box;
		cursor: pointer;

		@include when(hovering) {
			background-color: map.get($select-option, 'hover-background');
		}

		@include when(selected) {
			color: map.get($select-option, 'selected-text-color');
			font-weight: bold;
		}

		@include when(disabled) {
			color: map.get($select-option, 'disabled-color');
			cursor: not-allowed;
			background-color: unset;
		}
	}

	@include when(multiple) {
		.#{$namespace}-select-dropdown__item.is-selected {
			&::after {
				@include checked-icon;
			}
		}

		.#{$namespace}-select-dropdown__item.is-disabled {
			&::after {
				background-color: map.get($select-option, 'disabled-color');
			}
		}
	}
}
