UNPKG

rsuite

Version:

A suite of react components

173 lines (144 loc) 3.86 kB
@import '../../styles/common'; @import 'mixin'; .rs-checkbox { .radio-checkbox-common(); [type='checkbox']:focus-visible ~ .rs-checkbox-inner::before { box-shadow: var(--rs-state-focus-shadow); } } .rs-checkbox-checker { padding-top: 10px; padding-bottom: 10px; padding-left: (@checkbox-sense-width*2 + @checkbox-width-height); min-height: (@checkbox-sense-width*2 + @checkbox-width-height); line-height: 1; position: relative; } /* rtl:begin:ignore */ .rs-checkbox-control { &::before, .rs-checkbox-inner::before, .rs-checkbox-inner::after { content: ''; position: absolute; left: 0; top: 0; display: block; } // Check mark .rs-checkbox-inner::after { opacity: 0; transform: rotate(45deg) scale(0); transition: opacity 0.2s ease-in, transform 0.2s cubic-bezier(0.12, 0.4, 0.29, 1.46); .high-contrast-mode({ transition: none; }); .rs-checkbox-checked &, .rs-checkbox-indeterminate & { border: solid var(--rs-checkbox-icon); width: 6px; height: 9px; margin-top: 2px; margin-left: 5px; opacity: 1; } .rs-checkbox-checked & { border-width: 0 2px 2px 0; transform: rotate(45deg) scale(1); } .rs-checkbox-indeterminate & { border-width: 0 0 2px; transform: rotate(0deg) scale(1); width: 10px; margin-top: 0; margin-left: 3px; } } } /* rtl:end:ignore */ /* stylelint-disable-next-line */ // For RTL Scope .rs-checkbox-control { position: absolute; width: @checkbox-width-height; height: @checkbox-width-height; display: inline-block; left: @checkbox-sense-width; top: @checkbox-sense-width; [type='checkbox'] { position: absolute; opacity: 0; z-index: 1; // Sense area(Can be clicked) top: -@checkbox-sense-width; right: -@checkbox-sense-width; bottom: -@checkbox-sense-width; left: -@checkbox-sense-width; min-width: 36px; min-height: 36px; } &::before, .rs-checkbox-inner::before, .rs-checkbox-inner::after { width: @checkbox-width-height; height: @checkbox-width-height; } // Ripple effect area &::before { .checkbox-inner-wrap(var(--rs-checkbox-checked-bg)); transform: scale(1); opacity: 0.7; visibility: hidden; transition: transform 0.2s linear, opacity 0.2s linear; .high-contrast-mode({ transition: none; }); .rs-checkbox-checked & { transform: scale(1.5); opacity: 0; visibility: visible; } } // Out border .rs-checkbox-inner::before { .checkbox-inner-wrap(var(--rs-checkbox-border)); transition: background 0.2s linear, border 0.2s linear, box-shadow 0.2s linear; .high-contrast-mode({ transition: none; }); label:hover & { border-color: var(--rs-checkbox-checked-bg); } .rs-checkbox-disabled:not(.rs-checkbox-checked):not(.rs-checkbox-indeterminate) & { border-color: var(--rs-checkbox-disabled-bg); background-color: var(--rs-checkbox-disabled-bg); } .rs-checkbox-checked &, .rs-checkbox-indeterminate & { border-color: var(--rs-checkbox-checked-bg); background-color: var(--rs-checkbox-checked-bg); } .rs-checkbox-disabled.rs-checkbox-checked &, .rs-checkbox-disabled.rs-checkbox-indeterminate & { opacity: 0.5; } } } each(@spectrum, .(@color) { .rs-checkbox-@{color} { .rs-checkbox-control::before{ border-color: var(~'--rs-@{color}-500'); } label:hover{ .rs-checkbox-inner::before { border-color: var(~'--rs-@{color}-500'); } } &.rs-checkbox-checked, &.rs-checkbox-indeterminate { .rs-checkbox-inner::before{ border-color: var(~'--rs-@{color}-500'); background-color:var(~'--rs-@{color}-500'); } } } });