funda-ui
Version:
React components using pure Bootstrap 5+ which does not contain any external style and script libraries.
228 lines (226 loc) • 6.58 kB
CSS
/* ======================================================
<!-- Cascading Select -->
/* ====================================================== */
.cas-select__wrapper {
--cas-select-arrow-fill: #a5a5a5;
--cas-select-result-arrow-fill: #a5a5a5;
--cas-select-result-font-size: 1rem;
--cas-select-result-padding-x: 0.75rem;
--cas-select-result-padding-y: 0.375rem;
}
.cas-select__wrapper .cas-select__result {
position: absolute;
left: auto;
z-index: 1;
top: 0;
padding: var(--cas-select-result-padding-y) var(--cas-select-result-padding-x);
font-size: var(--cas-select-result-font-size);
font-weight: 400;
line-height: 1.5;
color: inherit;
/* text */
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
max-width: calc(100% - 20px);
/* required */
display: flex;
}
.cas-select__wrapper .cas-select__result div {
/* required */
display: flex;
}
.cas-select__wrapper .cas-select__result span {
padding: 3px;
}
.cas-select__wrapper .cas-select__result svg {
margin: 0 0.3rem;
}
.cas-select__wrapper .cas-select__result svg path {
fill: var(--cas-select-result-arrow-fill);
}
.cas-select__wrapper .cas-select__closemask {
position: absolute;
z-index: 1;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0);
user-select: none;
}
.cas-select__wrapper .cas-select__trigger {
position: relative;
z-index: 0;
}
.cas-select__wrapper .cas-select__val {
position: relative;
}
.cas-select__wrapper .cas-select__val input {
cursor: pointer;
color: transparent ;
}
.cas-select__wrapper .cas-select__val input:focus {
color: transparent ;
}
.cas-select__wrapper .cas-select__val .arrow {
position: absolute;
top: 50%;
transform: translateY(-50%);
right: 0.5rem;
}
.cas-select__wrapper .cas-select__val .arrow svg .arrow-fill-g {
fill: var(--cas-select-arrow-fill);
}
/*------ List ------*/
.cas-select__items-wrapper {
--cas-select-opt-font-size: 0.875rem;
--cas-select-opt-padding-x: .4rem;
--cas-select-opt-padding-y: .3rem;
--cas-select-opt-header-border-color: rgba(1, 1, 1, .2);
--cas-select-opt-header-text-color: #999;
--cas-select-opt-hover-bg: #f7f7f7;
--cas-select-opt-active-bg: #eeeeee;
--cas-select-items-box-shadow: 0 5px 15px 5px rgba(80, 102, 224, 0.08);
--cas-select-items-bg: #fff;
--cas-select-items-color: inherit;
--cas-select-items-border-color: rgba(0, 0, 0, .1);
--cas-select-items-li-border-color: #eee;
--cas-select-loader-color: #000000;
--cas-select-clean-btn-color: #b5b5b5;
--cas-select-searchbox-border-color: #ddd;
box-shadow: var(--cas-select-items-box-shadow);
position: absolute;
left: auto;
max-height: 300px;
border: 1px solid var(--cas-select-items-border-color);
background: var(--cas-select-items-bg);
padding: 10px;
overflow-y: auto;
box-sizing: border-box;
top: 2.3rem;
border-radius: 5px;
width: max-content;
/* required -> the content will not wrap at all even if it causes overflows*/
color: var(--cas-select-items-color);
display: none;
z-index: 1055; /* --bs-modal-zindex */
/* each item */
/* Searchbox */
/* Options */
}
.cas-select__items-wrapper.active {
display: block ;
}
.cas-select__items-wrapper ul,
.cas-select__items-wrapper li {
list-style: none;
margin: 0;
padding: 0;
}
.cas-select__items-wrapper .cas-select__items-loader {
position: absolute;
pointer-events: none;
left: 0;
top: 0;
margin-left: 5px;
z-index: 1;
width: 12px;
height: 12px;
text-align: center;
transform-origin: center;
transform: translate(2px, 5px) rotate(0);
animation: 1s linear infinite cas-select__spinner;
}
.cas-select__items-wrapper .cas-select__items-loader svg {
vertical-align: top;
}
.cas-select__items-wrapper .cas-select__items-loader svg path {
fill: var(--cas-select-loader-color);
}
@keyframes cas-select__spinner {
to {
transform: translate(2px, 5px) rotate(-360deg);
}
}
.cas-select__items-wrapper .cas-select__close svg {
opacity: 0.4;
}
.cas-select__items-wrapper .cas-select__close:hover svg {
transition: 0.2s ease-out;
opacity: 0.7;
}
.cas-select__items-wrapper ul {
transition: 0.2s ease-out;
min-width: 8px;
min-height: 9px;
}
.cas-select__items-wrapper ul > li {
position: relative;
cursor: pointer;
float: left;
padding: 0 10px;
margin-right: 15px;
border-right: 1px dotted var(--cas-select-items-li-border-color);
transition: 0.2s ease-out;
}
.cas-select__items-wrapper ul > li.hide-col {
display: none;
}
.cas-select__items-wrapper ul > li:last-child {
margin-right: 0;
border-right: none;
}
.cas-select__items-wrapper .cas-select__items-col-searchbox input {
border: 1px solid var(--cas-select-searchbox-border-color);
border-radius: 0.35rem;
background: transparent;
font-size: 0.75rem;
}
.cas-select__items-wrapper .cas-select__opt {
padding: var(--cas-select-opt-padding-y) var(--cas-select-opt-padding-x);
font-size: var(--cas-select-opt-font-size);
border-radius: 2px;
}
.cas-select__items-wrapper .cas-select__opt:hover {
background: var(--cas-select-opt-hover-bg);
}
.cas-select__items-wrapper .cas-select__opt.active {
background: var(--cas-select-opt-active-bg);
}
.cas-select__items-wrapper .cas-select__opt-header {
padding: var(--cas-select-opt-padding-y) var(--cas-select-opt-padding-x);
font-size: var(--cas-select-opt-font-size);
border-bottom: 1px dotted var(--cas-select-opt-header-border-color);
border-radius: 2px;
position: sticky;
top: calc(var(--cas-select-opt-font-size) * -1);
background: var(--cas-select-items-bg);
color: var(--cas-select-opt-header-text-color);
display: flex;
align-items: center;
}
.cas-select__items-wrapper .cas-select__opt-header > span {
cursor: default;
}
.cas-select__items-wrapper .cas-select__opt-header:hover {
background: var(--cas-select-opt-hover-bg);
}
.cas-select__items-wrapper .cas-select__opt-header.active {
background: var(--cas-select-opt-active-bg);
}
.cas-select__items-wrapper .cas-select__opt-header .cas-select__opt-header__clean {
display: inline-block;
margin-left: 0.2rem;
padding: 0.1rem;
}
.cas-select__items-wrapper .cas-select__opt-header .cas-select__opt-header__clean:hover {
transform: scale(1.1);
}
.cas-select__items-wrapper .cas-select__opt-header .cas-select__opt-header__clean svg {
border: 1px var(--cas-select-clean-btn-color) solid;
border-radius: 50%;
}
.cas-select__items-wrapper .cas-select__opt-header .cas-select__opt-header__clean svg path {
fill: var(--cas-select-clean-btn-color);
}