features/rewrite/modal1 #10
Merged
koma
merged 18 commits from features/rewrite/modal1
into features/rewrite/main
2 years ago
@ -1,5 +1,7 @@
|
||||
@inherits LayoutComponentBase
|
||||
|
||||
<ModalDialog/>
|
||||
|
||||
<main>
|
||||
@Body
|
||||
</main>
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,44 +1,9 @@
|
||||
<button
|
||||
type="button"
|
||||
href="#"
|
||||
@onclick="@OnClick"
|
||||
disabled=@Disabled
|
||||
style="@Style"
|
||||
class="@ClassList">
|
||||
<button type="button"
|
||||
@onclick="@OnClick"
|
||||
disabled=@Disabled
|
||||
style="@StyleList"
|
||||
class="@ClassList">
|
||||
<div class="@ContentClassList">
|
||||
@if (!string.IsNullOrEmpty(Glyph))
|
||||
{
|
||||
@if (GlyphPosition == Position.Top || GlyphPosition == Position.Bottom)
|
||||
{
|
||||
<div style="align-items:center">
|
||||
@if (GlyphPosition == Position.Top)
|
||||
{
|
||||
<Glyph SVG="@Glyph" Color="@GlyphColor"/>
|
||||
}
|
||||
@ChildContent
|
||||
@if (GlyphPosition == Position.Bottom)
|
||||
{
|
||||
<Glyph SVG="@Glyph" Color="@GlyphColor"/>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
@if (GlyphPosition == Position.Left || GlyphPosition == Position.Right)
|
||||
{
|
||||
<div style="display:flex; align-items:center">
|
||||
@if (GlyphPosition == Position.Left)
|
||||
{
|
||||
<Glyph SVG="@Glyph" Color="@GlyphColor" Class="m-1" />
|
||||
}
|
||||
@ChildContent
|
||||
@if (GlyphPosition == Position.Right)
|
||||
{
|
||||
<Glyph SVG="@Glyph" Color="@GlyphColor" Class="m-1" />
|
||||
}
|
||||
</div>
|
||||
}
|
||||
} else
|
||||
{
|
||||
@ChildContent
|
||||
}
|
||||
</div>
|
||||
</button>
|
||||
|
@ -1,9 +0,0 @@
|
||||
@using Connected.Models;
|
||||
|
||||
@inherits InputBase;
|
||||
|
||||
<div>
|
||||
<div class="container">
|
||||
@ChildContent
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,46 @@
|
||||
@inherits Button
|
||||
|
||||
<button type="button"
|
||||
href="#"
|
||||
@onclick="@OnClick"
|
||||
disabled=@Disabled
|
||||
style="@StyleList"
|
||||
class="@ClassList">
|
||||
<div class="@ContentClassList">
|
||||
@if (!string.IsNullOrEmpty(Glyph))
|
||||
{
|
||||
@if (GlyphPosition == Position.Top || GlyphPosition == Position.Bottom)
|
||||
{
|
||||
<div style="align-items:center">
|
||||
@if (GlyphPosition == Position.Top)
|
||||
{
|
||||
<Glyph SVG="@Glyph" Color="@GlyphColor" />
|
||||
}
|
||||
@ChildContent
|
||||
@if (GlyphPosition == Position.Bottom)
|
||||
{
|
||||
<Glyph SVG="@Glyph" Color="@GlyphColor" />
|
||||
}
|
||||
</div>
|
||||
}
|
||||
@if (GlyphPosition == Position.Left || GlyphPosition == Position.Right)
|
||||
{
|
||||
<div style="display:flex; align-items:center">
|
||||
@if (GlyphPosition == Position.Left)
|
||||
{
|
||||
<Glyph SVG="@Glyph" Color="@GlyphColor" Class="m-1" />
|
||||
}
|
||||
@ChildContent
|
||||
@if (GlyphPosition == Position.Right)
|
||||
{
|
||||
<Glyph SVG="@Glyph" Color="@GlyphColor" Class="m-1" />
|
||||
}
|
||||
</div>
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ChildContent
|
||||
}
|
||||
</div>
|
||||
</button>
|
@ -1,7 +1,6 @@
|
||||
<a
|
||||
class="@LinkClassList"
|
||||
style="@LinkStyleList"
|
||||
href="@Url"
|
||||
target="@Target" >
|
||||
<a class="@LinkClassList"
|
||||
style="@LinkStyleList"
|
||||
href="@Url"
|
||||
target="@_target">
|
||||
@Text
|
||||
</a>
|
||||
|
@ -0,0 +1,25 @@
|
||||
@using Connected.Models.Modal;
|
||||
@if (IsVisible)
|
||||
{
|
||||
<div class="modal fade show" @onclick="@CloseIfEnabled" @onkeydown="@(e => CheckEscape(e))" tabindex="-1" @ref="@root">
|
||||
<div class="modal-dialog modal-dialog-scrollable modal-dialog-centered">
|
||||
<div class="modal-content" @onclick="PreventClose">
|
||||
@if (!ModalOptions.NoHeader)
|
||||
{
|
||||
<div class="modal-header">
|
||||
<h3 class="modal-title">@Title</h3>
|
||||
</div>
|
||||
}
|
||||
<div class="modal-body">
|
||||
@Content
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
@foreach (ModalButton button in buttons)
|
||||
{
|
||||
<button type="button" class="btn @button.GetButtonClass" @onclick="@(()=>CloseModal(button))">@button.ButtonText</button>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
@ -0,0 +1,45 @@
|
||||
@using Connected.Models;
|
||||
|
||||
@inherits InputBase;
|
||||
|
||||
<div class="@InputFieldClassList">
|
||||
<textarea value="@Value"
|
||||
placeholder="@Placeholder"
|
||||
disabled="@Disabled"
|
||||
readonly="@Readonly"
|
||||
required="@Required"
|
||||
style="overflow-x: hidden; overflow-y: hidden;"
|
||||
@oninput=@ChangeValueAsync
|
||||
@attributes="@InputAttributes" />
|
||||
|
||||
<span class="highlight"></span>
|
||||
<span class="bar"></span>
|
||||
@if (IsLabel)
|
||||
{
|
||||
<label class="label-animated">@Label</label>
|
||||
}
|
||||
@if (IsHelperText && !IsError)
|
||||
{
|
||||
<div class="input-helper-text">@HelperText</div>
|
||||
}
|
||||
@if (IsError)
|
||||
{
|
||||
<div class="input-error-text">@ErrorText</div>
|
||||
}
|
||||
<span class="input-glyph-wraper">
|
||||
<span class="input-glyph">
|
||||
@if (Clearable && !string.IsNullOrEmpty(Value))
|
||||
{
|
||||
<span class="input-glyph button" @onclick="Clear">
|
||||
<Glyph SVG="@Icons.Material.Rounded.Dangerous" />
|
||||
</span>
|
||||
}
|
||||
@if (IsError)
|
||||
{
|
||||
<span class="input-glyph error">
|
||||
<Glyph SVG="@Icons.Material.Outlined.Error" />
|
||||
</span>
|
||||
}
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
@ -1,15 +1,13 @@
|
||||
@using Connected.Models;
|
||||
|
||||
@inherits InputBase;
|
||||
|
||||
<CascadingValue Value="this">
|
||||
<div>
|
||||
@if (!string.IsNullOrEmpty(Name))
|
||||
{
|
||||
<h5>@Name</h5>
|
||||
}
|
||||
<div class="container">
|
||||
@ChildContent
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
@if (!string.IsNullOrEmpty(Name))
|
||||
{
|
||||
<h5>@Name</h5>
|
||||
}
|
||||
<div class="container">
|
||||
@ChildContent
|
||||
</div>
|
||||
</div>
|
||||
</CascadingValue>
|
@ -0,0 +1,21 @@
|
||||
@inherits Button
|
||||
|
||||
<button type="button"
|
||||
@onclick="@Clicked"
|
||||
disabled=@Disabled
|
||||
style="@StyleList"
|
||||
class="@ClassList">
|
||||
<div class="@ContentClassList">
|
||||
<div style="align-items:center">
|
||||
@if (GlyphPosition == Position.Top)
|
||||
{
|
||||
<Glyph SVG="@Glyph" Color="@GlyphColor" />
|
||||
}
|
||||
@ChildContent
|
||||
@if (GlyphPosition == Position.Bottom)
|
||||
{
|
||||
<Glyph SVG="@Glyph" Color="@GlyphColor" />
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
@ -0,0 +1,17 @@
|
||||
@using Connected.Models;
|
||||
|
||||
@inherits InputBase;
|
||||
|
||||
<label class="toggle-group" for="@Id">
|
||||
<input class="toggle-input"
|
||||
type="checkbox"
|
||||
name="toggle"
|
||||
disabled="@Disabled"
|
||||
id="@Id"
|
||||
checked="@Checked"
|
||||
@onchange="@OnChange"
|
||||
@attributes=@InputAttributes>
|
||||
|
||||
<div class="toggle-fill"></div>
|
||||
<label for="@Id" class="toggle-label">@Label</label>
|
||||
</label>
|
@ -1,102 +1,188 @@
|
||||
$color3: #f4f4f4;
|
||||
$color4: var(--bg-core-primary-darken);
|
||||
$checkbox-primary-color: var(--bg-core-primary-darken);
|
||||
$checkbox-secondary-color: #f4f4f4;
|
||||
$checkbox-disabled-color: darken($checkbox-secondary-color, 25%);
|
||||
|
||||
.checkbox-group {
|
||||
margin: 0.5rem;
|
||||
position:relative;
|
||||
input[type="checkbox"] {
|
||||
position: absolute;
|
||||
opacity: 0;
|
||||
+ .checkbox-label {
|
||||
&:before {
|
||||
content: "";
|
||||
background: transparent;
|
||||
border-radius: 0%;
|
||||
border: 2px solid $color4;
|
||||
display: inline-block;
|
||||
width: 1.25em;
|
||||
height: 1.25em;
|
||||
position: relative;
|
||||
top: .15rem;
|
||||
margin-right: .75em;
|
||||
vertical-align: top;
|
||||
cursor: pointer;
|
||||
text-align: center;
|
||||
z-index: 1;
|
||||
transition: all 250ms ease;
|
||||
}
|
||||
}
|
||||
&:checked {
|
||||
+ .checkbox-label {
|
||||
&:before {
|
||||
background-color: $color4;
|
||||
box-shadow: inset 0 0 0 2px $color3;
|
||||
--width: 1.25rem;
|
||||
--height: var(--width);
|
||||
--inset: calc(var(--width) / 10);
|
||||
|
||||
|
||||
margin: 0.75rem 0;
|
||||
width: max-content;
|
||||
cursor: pointer;
|
||||
position:relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap:.75rem;
|
||||
z-index: 1;
|
||||
|
||||
&.reversed{
|
||||
justify-content: space-between;
|
||||
width: 100%;
|
||||
|
||||
& :nth-child(1) {order:2;}
|
||||
& :nth-child(2) {order:1;}
|
||||
}
|
||||
|
||||
&.column{
|
||||
flex-direction: column;
|
||||
gap:.25rem;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
// &:checked {
|
||||
// + .checkbox-label {
|
||||
// &:after {
|
||||
// background: $color3;
|
||||
// z-index: 1;
|
||||
// opacity: 1;
|
||||
// scale: 0.25;
|
||||
// clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%);
|
||||
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
&:focus {
|
||||
+ .checkbox-label {
|
||||
&:before {
|
||||
outline: none;
|
||||
border-color: $color4;
|
||||
}
|
||||
}
|
||||
}
|
||||
&:disabled {
|
||||
+ .checkbox-label {
|
||||
color: darken($color3, 25%);
|
||||
pointer-events: none;
|
||||
&:before {
|
||||
box-shadow: inset 0 0 0 2px $color3;
|
||||
border-color: darken($color3, 25%);
|
||||
background: darken($color3, 25%);
|
||||
}
|
||||
}
|
||||
}
|
||||
+ .checkbox-label {
|
||||
&:empty {
|
||||
&:before {
|
||||
margin-right: 0;
|
||||
|
||||
input[type="checkbox"] {
|
||||
position: absolute;
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.checkbox-fill {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
width: var(--width);
|
||||
height: var(--height);
|
||||
background: transperent;
|
||||
border: 2px solid $checkbox-primary-color;
|
||||
transition: background 0.2s ease-in-out;
|
||||
}
|
||||
|
||||
.checkbox-input:checked ~ .checkbox-fill {
|
||||
background: var(--bg-core-primary-darken);
|
||||
box-shadow: inset 0 0 0 var(--inset) $checkbox-secondary-color;
|
||||
|
||||
}
|
||||
|
||||
.checkbox-input:focus-within ~ .checkbox-fill {
|
||||
outline: 1px solid $checkbox-primary-color;
|
||||
|
||||
}
|
||||
|
||||
.checkbox-input:disabled ~ .checkbox-fill {
|
||||
box-shadow: inset 0 0 0 var(--inset) $checkbox-secondary-color;
|
||||
border-color: $checkbox-disabled-color;
|
||||
background: $checkbox-disabled-color;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.checkbox-input:disabled ~ .checkbox-label {
|
||||
color: $checkbox-disabled-color;
|
||||
}
|
||||
|
||||
.checkbox-label:after {
|
||||
content: "";
|
||||
display: inline-block;
|
||||
width: 35px;
|
||||
height: 35px;
|
||||
border-radius: 50%;
|
||||
background-color: transparent;
|
||||
position: absolute;
|
||||
left: -8px;
|
||||
top: -6px;
|
||||
scale: .75;
|
||||
transition: scale 0.35s cubic-bezier(0.6,-1.25,0.6,2.25);
|
||||
}
|
||||
|
||||
|
||||
|
||||
.checkbox-fill::before {
|
||||
content: "";
|
||||
display: inline-block;
|
||||
width: calc(var(--width) * 1.8);
|
||||
height: calc(var(--width) * 1.8);
|
||||
border-radius: 50%;
|
||||
background-color: transparent;
|
||||
position: absolute;
|
||||
z-index: -1;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
scale: .75;
|
||||
transform-origin: left top;
|
||||
transition: scale 0.35s cubic-bezier(0.6,-1.25,0.6,2.25), transform 0.2s;
|
||||
}
|
||||
|
||||
.checkbox-fill:hover::before {
|
||||
background: var(--bg-core-primary-lighten);
|
||||
scale: 1;
|
||||
opacity: .5;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// $checkbox-primary-color: var(--bg-core-primary-darken);
|
||||
// $checkbox-secondary-color: #f4f4f4;
|
||||
// $checkbox-disabled-color: darken($checkbox-secondary-color, 25%);
|
||||
|
||||
// .checkbox-group {
|
||||
// margin: 0.5rem;
|
||||
// position:relative;
|
||||
|
||||
// input[type="checkbox"] {
|
||||
// position: absolute;
|
||||
// opacity: 0;
|
||||
|
||||
// + .checkbox-label {
|
||||
// &:before {
|
||||
// content: "";
|
||||
// background: transparent;
|
||||
// border: 2px solid $checkbox-primary-color;
|
||||
// display: inline-block;
|
||||
// width: 1.25em;
|
||||
// height: 1.25em;
|
||||
// position: relative;
|
||||
// top: .15rem;
|
||||
// margin-right: .75em;
|
||||
// vertical-align: top;
|
||||
// cursor: pointer;
|
||||
// text-align: center;
|
||||
// z-index: 1;
|
||||
// transition: all 250ms ease;
|
||||
// }
|
||||
// }
|
||||
// &:checked {
|
||||
// + .checkbox-label {
|
||||
// &:before {
|
||||
// background-color: $checkbox-primary-color;
|
||||
// box-shadow: inset 0 0 0 2px $checkbox-secondary-color;
|
||||
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// &:focus {
|
||||
// + .checkbox-label {
|
||||
// &:before {
|
||||
// outline: 1px solid $checkbox-primary-color;
|
||||
// border-color: $checkbox-primary-color;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// &:disabled {
|
||||
// + .checkbox-label {
|
||||
// color: darken($checkbox-secondary-color, 25%);
|
||||
// pointer-events: none;
|
||||
// &:before {
|
||||
// box-shadow: inset 0 0 0 2px $checkbox-secondary-color;
|
||||
// border-color: $checkbox-disabled-color;
|
||||
// background: $checkbox-disabled-color;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// + .checkbox-label {
|
||||
// &:empty {
|
||||
// &:before {
|
||||
// margin-right: 0;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// .checkbox-label:after {
|
||||
// content: "";
|
||||
// display: inline-block;
|
||||
// width: 35px;
|
||||
// height: 35px;
|
||||
// border-radius: 50%;
|
||||
// background-color: transparent;
|
||||
// position: absolute;
|
||||
// left: -8px;
|
||||
// top: -6px;
|
||||
// scale: .75;
|
||||
// transition: scale 0.35s cubic-bezier(0.6,-1.25,0.6,2.25);
|
||||
// }
|
||||
|
||||
.checkbox-label:hover:after {
|
||||
background: var(--bg-core-primary-lighten);
|
||||
scale: 1;
|
||||
opacity: .5;
|
||||
}
|
||||
// .checkbox-label:hover:after {
|
||||
// background: var(--bg-core-primary-lighten);
|
||||
// scale: 1;
|
||||
// opacity: .5;
|
||||
// }
|
@ -0,0 +1,218 @@
|
||||
@use "../util" as *;
|
||||
@use "../globals" as *;
|
||||
|
||||
/*CHIP*/
|
||||
/* scroll container */
|
||||
.horizontal-scroll-container {
|
||||
display: flex;
|
||||
position: relative;
|
||||
flex-wrap: nowrap;
|
||||
gap: .5rem;
|
||||
overflow: auto;
|
||||
scroll-snap-type: both mandatory;
|
||||
}
|
||||
|
||||
/* Hide scrollbar for Chrome, Safari and Opera */
|
||||
.horizontal-scroll-container::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
/* Hide scrollbar for IE, Edge and Firefox */
|
||||
.horizontal-scroll-container {
|
||||
-ms-overflow-style: none; /* IE and Edge */
|
||||
scrollbar-width: none; /* Firefox */
|
||||
}
|
||||
|
||||
|
||||
|
||||
.chip-icon {
|
||||
--height: 2.5rem;
|
||||
height: var(--height);
|
||||
aspect-ratio: 1 / 1;
|
||||
display: flex;
|
||||
flex: 1 0 auto;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: 50%;
|
||||
background-color: var(--bg-core-primary-darken);
|
||||
overflow: hidden;
|
||||
cursor: pointer;
|
||||
transition: all 0.35s cubic-bezier(0.6,-1.25,0.6,2.25);
|
||||
}
|
||||
|
||||
.chip-icon:hover,
|
||||
.chip-icon:active,
|
||||
.chip-icon:active {
|
||||
background-color: var(--bg-core-primary-dark);
|
||||
|
||||
}
|
||||
|
||||
.chip-icon.float-left {
|
||||
float: left;
|
||||
margin: .05rem .5rem .15rem 0;
|
||||
margin-top: -.25rem;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.chip-group {
|
||||
--height: 1.5rem;
|
||||
|
||||
border: 1px solid var(--bg-core-primary);
|
||||
padding: .15rem;
|
||||
min-width: max-content;
|
||||
color: var(--text-core);
|
||||
border-radius: $border-radius-pill;
|
||||
background-color: var(--bg-core-primary-light);
|
||||
display: inline-block;
|
||||
position:relative;
|
||||
scroll-snap-align: start;
|
||||
}
|
||||
|
||||
.chip-group-content{
|
||||
height: var(--height);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.chip-leading-icon {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: $border-radius-pill;
|
||||
background-color: var(--bg-core-primary-light);
|
||||
height: var(--height);
|
||||
aspect-ratio: 1 / 1;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.chip-leading-icon img{
|
||||
object-fit: cover;
|
||||
height: var(--height);
|
||||
aspect-ratio: 1 / 1;
|
||||
}
|
||||
|
||||
.chip-cta-icon{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: $border-radius-pill;
|
||||
background-color: transparent;
|
||||
cursor: pointer;
|
||||
height: var(--height);
|
||||
aspect-ratio: 1 / 1;
|
||||
transition: all 0.35s cubic-bezier(0.6,-1.25,0.6,2.25);
|
||||
}
|
||||
|
||||
.chip-label{
|
||||
font-size: $font-size-sm;
|
||||
margin:0 .85rem;
|
||||
}
|
||||
|
||||
.chip-cta-icon:hover{
|
||||
background-color: var(--bg-core-primary-lighten);
|
||||
}
|
||||
|
||||
|
||||
/*filter*/
|
||||
.chip-group.filter {
|
||||
border: 1px solid var(--bg-core-primary);
|
||||
background-color: var(--bg-core-primary-light);
|
||||
cursor: pointer;
|
||||
overflow: hidden;
|
||||
&:hover{
|
||||
background-color: var(--bg-core-primary-lighten);
|
||||
}
|
||||
&:active,
|
||||
&.active{
|
||||
border: 1px solid var(--bg-core-primary);
|
||||
background-color: var(--bg-core-primary);
|
||||
}
|
||||
}
|
||||
|
||||
.chip-group.filter .chip-leading-icon{
|
||||
//display: none;
|
||||
max-width: 0;
|
||||
transform: translateX(calc(var(--height) * -1.25));
|
||||
transition: all 0.35s cubic-bezier(0.6,-1.25,0.6,2.25);
|
||||
}
|
||||
|
||||
.chip-group.filter.active .chip-leading-icon{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: $border-radius-pill;
|
||||
background-color: var(--bg-core-primary-light);
|
||||
height: var(--height);
|
||||
aspect-ratio: 1 / 1;
|
||||
transform: translateX(0);
|
||||
max-width: var(--height);
|
||||
}
|
||||
|
||||
.chip-group.select .chip-cta-icon{
|
||||
display: none;
|
||||
}
|
||||
/*end select*/
|
||||
|
||||
/*drop-down*/
|
||||
/* The container must be positioned relative: */
|
||||
.custom-select {
|
||||
position: relative;
|
||||
font-family: Arial;
|
||||
}
|
||||
|
||||
.custom-select select {
|
||||
display: none; /*hide original SELECT element: */
|
||||
}
|
||||
|
||||
.select-selected {
|
||||
background-color: DodgerBlue;
|
||||
}
|
||||
|
||||
/* Style the arrow inside the select element: */
|
||||
.select-selected:after {
|
||||
position: absolute;
|
||||
content: "";
|
||||
top: 14px;
|
||||
right: 10px;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border: 6px solid transparent;
|
||||
border-color: #fff transparent transparent transparent;
|
||||
}
|
||||
|
||||
/* Point the arrow upwards when the select box is open (active): */
|
||||
.select-selected.select-arrow-active:after {
|
||||
border-color: transparent transparent #fff transparent;
|
||||
top: 7px;
|
||||
}
|
||||
|
||||
/* style the items (options), including the selected item: */
|
||||
.select-items div,.select-selected {
|
||||
color: #ffffff;
|
||||
padding: 8px 16px;
|
||||
border: 1px solid transparent;
|
||||
border-color: transparent transparent rgba(0, 0, 0, 0.1) transparent;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* Style items (options): */
|
||||
.select-items {
|
||||
position: absolute;
|
||||
background-color: DodgerBlue;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
right: 0;
|
||||
z-index: 99;
|
||||
}
|
||||
|
||||
/* Hide the items when the select box is closed: */
|
||||
.select-hide {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.select-items div:hover, .same-as-selected {
|
||||
background-color: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
/*end-down*/
|
||||
|
||||
/*END CHIP*/
|
@ -0,0 +1,229 @@
|
||||
@use "../util" as *;
|
||||
@use "../globals" as *;
|
||||
|
||||
// stylelint-disable function-disallowed-list
|
||||
|
||||
// .modal-open - body class for killing the scroll
|
||||
.scroll-disabled{
|
||||
overflow: hidden;
|
||||
padding-right: 0;
|
||||
}
|
||||
// .modal - container to scroll within
|
||||
// .modal-dialog - positioning shell for the actual modal
|
||||
// .modal-content - actual modal w/ bg and corners and stuff
|
||||
|
||||
|
||||
// Container that the modal scrolls within
|
||||
|
||||
|
||||
.modal {
|
||||
--modal-zindex: #{$modal-zindex};
|
||||
--modal-width: 60vw;
|
||||
--modal-height: 50vh;
|
||||
--modal-padding: 1.5rem;
|
||||
--modal-margin: 1.5rem;
|
||||
--modal-color: var(--text-core);
|
||||
--modal-bg: var(--bg-core-primary-light);
|
||||
--modal-border-color: var(--bg-core-primary-light);
|
||||
--modal-border-width: 1px;
|
||||
--modal-border-radius: 1rem;
|
||||
--modal-box-shadow: 0 0.5rem 1rem rgba(var(--bg-core-primary), 0.15);
|
||||
|
||||
--modal-header-padding-x: 1.5rem; //close button
|
||||
--modal-header-padding-y: 1.5rem; //close button
|
||||
--modal-header-bg: var(--modal-bg);
|
||||
--modal-header-padding: 1.5rem;
|
||||
--modal-header-border-color: var(--bg-core-primary-light);
|
||||
--modal-header-border-width: 1px;
|
||||
|
||||
--modal-footer-bg: var(--modal-bg);
|
||||
--modal-footer-padding: 1.5rem;
|
||||
--modal-footer-border-color: var(--bg-core-primary-light);
|
||||
--modal-footer-border-width: 1px;
|
||||
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
background-color: rgba(0,0,0,.65);
|
||||
z-index: var(--modal-zindex);
|
||||
display: none;
|
||||
opacity: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
transition: opacity .15s linear;
|
||||
// Prevent Chrome on Windows from adding a focus outline. For details, see
|
||||
// https://github.com/twbs/bootstrap/pull/10951.
|
||||
outline: 0;
|
||||
// We deliberately don't use `-webkit-overflow-scrolling: touch;` due to a
|
||||
// gnarly iOS Safari bug: https://bugs.webkit.org/show_bug.cgi?id=158342
|
||||
// See also https://github.com/twbs/bootstrap/issues/17695
|
||||
}
|
||||
|
||||
|
||||
|
||||
// When fading in the modal, animate it to slide down
|
||||
.modal.fade {
|
||||
opacity: 1;
|
||||
transition: opacity .15s linear;
|
||||
}
|
||||
.modal.show{
|
||||
display: block;
|
||||
|
||||
}
|
||||
|
||||
// When trying to close, animate focus to scale
|
||||
.modal.modal-static {
|
||||
transform:scale(1.1);
|
||||
}
|
||||
|
||||
|
||||
// Shell div to position the modal with bottom padding
|
||||
.modal-dialog {
|
||||
position: relative;
|
||||
width: auto;
|
||||
margin: var(--modal-margin);
|
||||
// allow clicks to pass through for custom click handling to close modal
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.modal-dialog-scrollable {
|
||||
height: calc(100% - var(--modal-margin) * 2);
|
||||
|
||||
|
||||
.modal-content {
|
||||
max-height: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.modal-body {
|
||||
overflow-y: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.modal-dialog-centered {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
min-height: calc(100% - var(--modal-margin) * 2);
|
||||
|
||||
}
|
||||
|
||||
// Actual modal
|
||||
.modal-content {
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
width: 100%; // Ensure `.modal-content` extends the full width of the parent `.modal-dialog`
|
||||
// counteract the pointer-events: none; in the .modal-dialog
|
||||
color: var(--modal-color);
|
||||
pointer-events: auto;
|
||||
background-color: var(--modal-bg);
|
||||
background-clip: padding-box;
|
||||
border: var(--modal-border-width) solid var(--modal-border-color);
|
||||
border-radius: var(--modal-border-radius);
|
||||
box-shadow: var(--modal-box-shadow);
|
||||
// Remove focus outline from opened modal
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Modal header
|
||||
// Top section of the modal w/ title and dismiss
|
||||
.modal-header {
|
||||
display: flex;
|
||||
flex-shrink: 0;
|
||||
align-items: center;
|
||||
justify-content: space-between; // Put modal header elements (title and dismiss) on opposite ends
|
||||
padding: var(--modal-header-padding);
|
||||
background-color: var(--modal-header-bg);
|
||||
border-bottom: var(--modal-header-border-width) solid var(--modal-header-border-color);
|
||||
|
||||
|
||||
.btn-close {
|
||||
padding: calc(var(--modal-header-padding-y) * .5) calc(var(--modal-header-padding-x) * .5);
|
||||
margin: calc(-.5 * var(--modal-header-padding-y)) calc(-.5 * var(--modal-header-padding-x)) calc(-.5 * var(--modal-header-padding-y)) auto;
|
||||
}
|
||||
}
|
||||
|
||||
// Title text within header
|
||||
.modal-title {
|
||||
margin-bottom: 0;
|
||||
|
||||
}
|
||||
|
||||
// Modal body
|
||||
// Where all modal content resides (sibling of .modal-header and .modal-footer)
|
||||
.modal-body {
|
||||
position: relative;
|
||||
// Enable `flex-grow: 1` so that the body take up as much space as possible
|
||||
// when there should be a fixed height on `.modal-dialog`.
|
||||
flex: 1 1 auto;
|
||||
padding: var(--modal-padding);
|
||||
}
|
||||
|
||||
// Footer (for actions)
|
||||
.modal-footer {
|
||||
display: flex;
|
||||
flex-shrink: 0;
|
||||
flex-wrap: wrap;
|
||||
align-items: center; // vertically center
|
||||
justify-content: flex-end; // Right align buttons with flex property because text-align doesn't work on flex items
|
||||
padding: var(--modal-footer-padding);
|
||||
background-color: var(--modal-footer-bg);
|
||||
border-radius: var(--modal-border-radius);
|
||||
gap: .5rem;
|
||||
|
||||
}
|
||||
// Automatically set modal's width for larger viewports
|
||||
|
||||
|
||||
|
||||
.modal-dialog {
|
||||
max-width: 100%;
|
||||
max-height: 100%;
|
||||
padding: 0;
|
||||
|
||||
|
||||
@include breakpoint(sm) {
|
||||
max-width: 75vw;
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
padding: var(--modal-padding);
|
||||
|
||||
}
|
||||
|
||||
@include breakpoint(lg) {
|
||||
max-width: var(--modal-width);
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// // Modal background
|
||||
// .modal-backdrop {
|
||||
// opacity: 0;
|
||||
// display: none;
|
||||
// position: fixed;
|
||||
// top: 0;
|
||||
// left: 0;
|
||||
// z-index: #{$backdrop-zindex};
|
||||
// width: 100vw;
|
||||
// height: 100vh;
|
||||
// background-color: #000;
|
||||
// transition: opacity .15s linear;
|
||||
// }
|
||||
|
||||
// .modal-backdrop.fade {
|
||||
// opacity: .5;
|
||||
// transition: opacity .15s linear;
|
||||
// }
|
||||
|
||||
// .modal-backdrop.show {
|
||||
// display: block;
|
||||
// }
|
||||
|
@ -1,86 +1,276 @@
|
||||
$color1: #f4f4f4;
|
||||
$color2: var(--bg-core-primary-darken);
|
||||
$radio-primary-color: var(--bg-core-primary-darken);
|
||||
$radio-secondary-color: #f4f4f4;
|
||||
$radio-disabled-color: darken($radio-secondary-color, 25%);
|
||||
|
||||
.radio-group {
|
||||
margin: 0.5rem;
|
||||
position:relative;
|
||||
input[type="radio"] {
|
||||
position: absolute;
|
||||
opacity: 0;
|
||||
+ .radio-label {
|
||||
&:before {
|
||||
content: "";
|
||||
background: $color1;
|
||||
border-radius: 100%;
|
||||
border: 2px solid $color2;
|
||||
display: inline-block;
|
||||
width: 1.25em;
|
||||
height: 1.25em;
|
||||
position: relative;
|
||||
top: .15rem;
|
||||
margin-right: .75em;
|
||||
vertical-align: top;
|
||||
cursor: pointer;
|
||||
text-align: center;
|
||||
z-index: 1;
|
||||
transition: all 250ms ease;
|
||||
}
|
||||
}
|
||||
&:checked {
|
||||
+ .radio-label {
|
||||
&:before {
|
||||
background-color: $color2;
|
||||
box-shadow: inset 0 0 0 2px $color1;
|
||||
}
|
||||
}
|
||||
}
|
||||
&:focus {
|
||||
+ .radio-label {
|
||||
&:before {
|
||||
outline: none;
|
||||
border-color: $color2;
|
||||
}
|
||||
}
|
||||
}
|
||||
&:disabled {
|
||||
+ .radio-label {
|
||||
color: darken($color1, 25%);
|
||||
pointer-events: none;
|
||||
&:before {
|
||||
box-shadow: inset 0 0 0 2px $color1;
|
||||
border-color: darken($color1, 25%);
|
||||
background: darken($color1, 25%);
|
||||
--width: 1.25rem;
|
||||
--height: var(--width);
|
||||
--inset: calc(var(--width) / 10);
|
||||
|
||||
margin: 0.75rem 0;
|
||||
width: max-content;
|
||||
cursor: pointer;
|
||||
position:relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap:.75rem;
|
||||
z-index: 1;
|
||||
|
||||
&.reversed{
|
||||
justify-content: space-between;
|
||||
width: 100%;
|
||||
|
||||
& :nth-child(1) {order:2;}
|
||||
& :nth-child(2) {order:1;}
|
||||
}
|
||||
|
||||
&.column{
|
||||
flex-direction: column;
|
||||
gap:.25rem;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
+ .radio-label {
|
||||
&:empty {
|
||||
&:before {
|
||||
margin-right: 0;
|
||||
|
||||
input[type="radio"] {
|
||||
position: absolute;
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.radio-fill {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
width: var(--width);
|
||||
height: var(--height);
|
||||
border-radius: 50%;
|
||||
background: transperent;
|
||||
border: 2px solid $radio-primary-color;
|
||||
transition: background 0.2s ease-in-out;
|
||||
}
|
||||
|
||||
.radio-input:checked ~ .radio-fill {
|
||||
background: var(--bg-core-primary-darken);
|
||||
box-shadow: inset 0 0 0 var(--inset) $radio-secondary-color;
|
||||
|
||||
}
|
||||
|
||||
.radio-input:focus-within ~ .radio-fill {
|
||||
outline: 1px solid $radio-primary-color;
|
||||
|
||||
}
|
||||
|
||||
.radio-input:disabled ~ .radio-fill {
|
||||
box-shadow: inset 0 0 0 var(--inset) $radio-secondary-color;
|
||||
border-color: $radio-disabled-color;
|
||||
background: $radio-disabled-color;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.radio-label:after {
|
||||
content: "";
|
||||
display: inline-block;
|
||||
width: 35px;
|
||||
height: 35px;
|
||||
border-radius: 50%;
|
||||
background-color: transparent;
|
||||
position: absolute;
|
||||
left: -8px;
|
||||
top: -6px;
|
||||
scale: .75;
|
||||
transition: scale 0.35s cubic-bezier(0.6,-1.25,0.6,2.25);
|
||||
}
|
||||
.radio-input:disabled ~ .radio-label {
|
||||
color: $radio-disabled-color;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
.radio-fill::before {
|
||||
content: "";
|
||||
display: inline-block;
|
||||
width: calc(var(--width) * 1.8);
|
||||
height: calc(var(--width) * 1.8);
|
||||
border-radius: 50%;
|
||||
background-color: transparent;
|
||||
position: absolute;
|
||||
z-index: -1;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
scale: .75;
|
||||
transform-origin: left top;
|
||||
transition: scale 0.35s cubic-bezier(0.6,-1.25,0.6,2.25), transform 0.2s;
|
||||
}
|
||||
|
||||
.radio-fill:hover::before {
|
||||
background: var(--bg-core-primary-lighten);
|
||||
scale: 1;
|
||||
opacity: .5;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// $checkbox-primary-color: var(--bg-core-primary-darken);
|
||||
// $checkbox-secondary-color: #f4f4f4;
|
||||
// $checkbox-disabled-color: darken($checkbox-secondary-color, 25%);
|
||||
|
||||
// .checkbox-group {
|
||||
// margin: 0.5rem;
|
||||
// position:relative;
|
||||
|
||||
// input[type="checkbox"] {
|
||||
// position: absolute;
|
||||
// opacity: 0;
|
||||
|
||||
// + .checkbox-label {
|
||||
// &:before {
|
||||
// content: "";
|
||||
// background: transparent;
|
||||
// border: 2px solid $checkbox-primary-color;
|
||||
// display: inline-block;
|
||||
// width: 1.25em;
|
||||
// height: 1.25em;
|
||||
// position: relative;
|
||||
// top: .15rem;
|
||||
// margin-right: .75em;
|
||||
// vertical-align: top;
|
||||
// cursor: pointer;
|
||||
// text-align: center;
|
||||
// z-index: 1;
|
||||
// transition: all 250ms ease;
|
||||
// }
|
||||
// }
|
||||
// &:checked {
|
||||
// + .checkbox-label {
|
||||
// &:before {
|
||||
// background-color: $checkbox-primary-color;
|
||||
// box-shadow: inset 0 0 0 2px $checkbox-secondary-color;
|
||||
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// &:focus {
|
||||
// + .checkbox-label {
|
||||
// &:before {
|
||||
// outline: 1px solid $checkbox-primary-color;
|
||||
// border-color: $checkbox-primary-color;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// &:disabled {
|
||||
// + .checkbox-label {
|
||||
// color: darken($checkbox-secondary-color, 25%);
|
||||
// pointer-events: none;
|
||||
// &:before {
|
||||
// box-shadow: inset 0 0 0 2px $checkbox-secondary-color;
|
||||
// border-color: $checkbox-disabled-color;
|
||||
// background: $checkbox-disabled-color;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// + .checkbox-label {
|
||||
// &:empty {
|
||||
// &:before {
|
||||
// margin-right: 0;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// .checkbox-label:after {
|
||||
// content: "";
|
||||
// display: inline-block;
|
||||
// width: 35px;
|
||||
// height: 35px;
|
||||
// border-radius: 50%;
|
||||
// background-color: transparent;
|
||||
// position: absolute;
|
||||
// left: -8px;
|
||||
// top: -6px;
|
||||
// scale: .75;
|
||||
// transition: scale 0.35s cubic-bezier(0.6,-1.25,0.6,2.25);
|
||||
// }
|
||||
|
||||
// .checkbox-label:hover:after {
|
||||
// background: var(--bg-core-primary-lighten);
|
||||
// scale: 1;
|
||||
// opacity: .5;
|
||||
// }
|
||||
|
||||
|
||||
// $radio-primary-color: var(--bg-core-primary-darken);
|
||||
// $radio-secondary-color: #f4f4f4;
|
||||
// $radio-disabled-color: darken($radio-secondary-color, 25%);
|
||||
|
||||
// .radio-group {
|
||||
// margin: 0.5rem;
|
||||
// position:relative;
|
||||
|
||||
// input[type="radio"] {
|
||||
// position: absolute;
|
||||
// opacity: 0;
|
||||
|
||||
// + .radio-label {
|
||||
// &:before {
|
||||
// content: "";
|
||||
// background: transparent;
|
||||
// border-radius: 50%;
|
||||
// border: 2px solid $radio-primary-color;
|
||||
// display: inline-block;
|
||||
// width: 1.25em;
|
||||
// height: 1.25em;
|
||||
// position: relative;
|
||||
// top: .15rem;
|
||||
// margin-right: .75em;
|
||||
// vertical-align: top;
|
||||
// cursor: pointer;
|
||||
// text-align: center;
|
||||
// z-index: 1;
|
||||
// transition: all 250ms ease;
|
||||
// }
|
||||
// }
|
||||
// &:checked {
|
||||
// + .radio-label {
|
||||
// &:before {
|
||||
// background-color: $radio-primary-color;
|
||||
// box-shadow: inset 0 0 0 2px $radio-secondary-color;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// &:focus {
|
||||
// + .radio-label {
|
||||
// &:before {
|
||||
// outline: 1px solid $radio-primary-color;
|
||||
// border-color: $radio-primary-color;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// &:disabled {
|
||||
// + .radio-label {
|
||||
// color: darken($radio-secondary-color, 25%);
|
||||
// pointer-events: none;
|
||||
// &:before {
|
||||
// box-shadow: inset 0 0 0 2px $radio-secondary-color;
|
||||
// border-color: $radio-disabled-color;
|
||||
// background: $radio-disabled-color;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// + .radio-label {
|
||||
// &:empty {
|
||||
// &:before {
|
||||
// margin-right: 0;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// .radio-label:after {
|
||||
// content: "";
|
||||
// display: inline-block;
|
||||
// width: 35px;
|
||||
// height: 35px;
|
||||
// border-radius: 50%;
|
||||
// background-color: transparent;
|
||||
// position: absolute;
|
||||
// left: -8px;
|
||||
// top: -6px;
|
||||
// scale: .75;
|
||||
// transition: scale 0.35s cubic-bezier(0.6,-1.25,0.6,2.25);
|
||||
// }
|
||||
|
||||
// .radio-label:hover:after {
|
||||
// background: var(--bg-core-primary-lighten);
|
||||
// scale: 1;
|
||||
// opacity: .5;
|
||||
// }
|
||||
|
||||
.radio-label:hover:after {
|
||||
background: var(--bg-core-primary-lighten);
|
||||
scale: 1;
|
||||
opacity: .5;
|
||||
}
|
@ -0,0 +1,107 @@
|
||||
@use "../globals/" as *;
|
||||
@use "../util/" as *;
|
||||
|
||||
$toggle-primary-color: var(--bg-core-primary-darken);
|
||||
$toggle-secondary-color: #ddd;
|
||||
$toggle-disabled-color: darken($toggle-secondary-color, 25%);
|
||||
|
||||
.toggle-group {
|
||||
--width: 42px;
|
||||
--height: calc(var(--width) / 2);
|
||||
--border-radius: calc(var(--height) / 2);
|
||||
|
||||
margin: 0.75rem 0;
|
||||
width: max-content;
|
||||
cursor: pointer;
|
||||
position:relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap:.75rem;
|
||||
|
||||
&.reversed{
|
||||
justify-content: space-between;
|
||||
width: 100%;
|
||||
|
||||
& :nth-child(1) {order:2;}
|
||||
& :nth-child(2) {order:1;}
|
||||
}
|
||||
|
||||
&.column{
|
||||
flex-direction: column;
|
||||
gap:.25rem;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
input[type="checkbox"] {
|
||||
position: absolute;
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.toggle-fill {
|
||||
position: relative;
|
||||
width: var(--width);
|
||||
height: var(--height);
|
||||
border-radius: var(--border-radius);
|
||||
background: $toggle-secondary-color;
|
||||
//margin-right: .75rem;
|
||||
transition: background 0.2s ease-in-out;
|
||||
}
|
||||
|
||||
.toggle-input:checked ~ .toggle-fill {
|
||||
background: var(--bg-core-primary-darken);
|
||||
}
|
||||
|
||||
.toggle-input:focus-within ~ .toggle-fill {
|
||||
outline: 1px solid $toggle-primary-color;
|
||||
}
|
||||
|
||||
.toggle-input:disabled ~ .toggle-fill {
|
||||
background: $toggle-disabled-color;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.toggle-input:disabled ~ .toggle-label {
|
||||
color: $toggle-disabled-color;
|
||||
}
|
||||
|
||||
.toggle-fill::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
left: 2px;
|
||||
height: calc(var(--height) - 4px);
|
||||
width: calc(var(--height) - 4px);
|
||||
background: #ffffff;
|
||||
border-radius: var(--border-radius);
|
||||
transition: transform 0.2s;
|
||||
}
|
||||
|
||||
.toggle-input:checked ~ .toggle-fill::after {
|
||||
transform: translateX(var(--height));
|
||||
}
|
||||
|
||||
.toggle-fill::before {
|
||||
content: "";
|
||||
display: inline-block;
|
||||
width: calc(var(--height) * 1.8);
|
||||
height: calc(var(--height) * 1.8);
|
||||
border-radius: 50%;
|
||||
background-color: transparent;
|
||||
position: absolute;
|
||||
left: calc(30% - var(--height));
|
||||
top: calc(60% - var(--height));
|
||||
scale: .75;
|
||||
transform-origin: center;
|
||||
transition: scale 0.35s cubic-bezier(0.6,-1.25,0.6,2.25), transform 0.2s;
|
||||
}
|
||||
|
||||
.toggle-fill:hover::before {
|
||||
background: var(--bg-core-primary-lighten);
|
||||
scale: 1;
|
||||
opacity: .5;
|
||||
}
|
||||
|
||||
.toggle-input:checked ~ .toggle-fill::before {
|
||||
transform: translateX(var(--height));
|
||||
}
|
Loading…
Reference in new issue