@mussonindustrial/pyro-mui-joy
Version:
A port of Material UI Joy Theme for Ignition by Inductive Automation
396 lines (339 loc) • 11.4 kB
CSS
.ia_dropdown,
.ia_select,
[psc='Joy/Class/Input'] {
@include variant-support(Input);
/* Define component properties */
--joy-Input-radius: var(--joy-radius-sm);
--joy-Input-gap: 0.5rem;
--joy-Input-placeholderColor: inherit;
--joy-Input-placeholderOpacity: 0.5;
--joy-Input-focused: 0;
--joy-Input-focusedThickness: var(--joy-focus-thickness);
--joy-Input-focusedHighlight: var(
--joy-variant-focusedHighlight,
var(--joy-palette-focusVisible)
);
--joy-Icon-fontSize: 1.5rem;
--joy-Input-decoratorChildOffset: min(
calc(
var(--joy-Input-paddingInline) -
(
var(--joy-Input-minHeight) - 2 *
var(--joy-variant-borderWidth, 0px) -
var(--joy-Input-decoratorChildHeight)
) / 2
),
var(--joy-Input-paddingInline)
);
--joy-_Input-paddingBlock: max(
(
var(--joy-Input-minHeight) - 2 *
var(--joy-variant-borderWidth, 0px) -
var(--joy-Input-decoratorChildHeight)
) / 2,
0px
);
--joy-Input-decoratorChildRadius: max(
var(--joy-Input-radius) - var(--joy-variant-borderWidth, 0px) -
var(--joy-_Input-paddingBlock),
min(
var(--joy-_Input-paddingBlock) + var(--joy-variant-borderWidth, 0px),
var(--joy-Input-radius) / 2
)
);
--joy-Button-minHeight: var(--joy-Input-decoratorChildHeight);
--joy-IconButton-size: var(--joy-Input-decoratorChildHeight);
--joy-Button-radius: var(--joy-Input-decoratorChildRadius);
--joy-IconButton-radius: var(--joy-Input-decoratorChildRadius);
/* Default to Medium size */
--joy-Input-minHeight: 2.5rem;
--joy-Input-paddingInline: 0.75rem;
--joy-Input-decoratorChildHeight: min(2rem, var(--joy-Input-minHeight));
/* Style */
box-sizing: border-box;
min-width: 0px;
min-height: var(--joy-Input-minHeight) ;
position: relative;
display: flex;
font-family: var(--joy-fontFamily-body);
font-size: var(--joy-fontSize-md);
/* Apply component properties */
overflow: visible;
color: var(--joy-Input-Color);
background-color: var(
--joy-Input-Bg,
var(--joy-palette-background-surface)
);
border-color: var(--joy-Input-Border);
border-width: var(--joy-Input-borderWidth);
border-style: var(--joy-Input-borderStyle);
border-radius: var(--joy-Input-radius);
min-height: var(--joy-Input-minHeight);
padding-inline: var(--joy-Input-paddingInline);
&:hover {
--joy-Input-Border: var(
--joy-variant-HoverBorder,
var(--joy-Input-default-HoverBorder)
);
}
&:disabled {
@include component-state(Input, Disabled);
pointer-events: none;
cursor: default;
}
&[psc='Joy/Size/sm'] {
--joy-Input-minHeight: 2rem;
--joy-Input-paddingInline: 0.5rem;
--joy-Input-decoratorChildHeight: min(
1.5rem,
var(--joy-Input-minHeight)
);
font-size: var(--joy-fontSize-sm, 0.875rem);
}
&[psc='Joy/Size/md'] {
--joy-Input-minHeight: 2.25rem;
--joy-Input-paddingInline: 0.75rem;
--joy-Input-decoratorChildHeight: min(
1.75rem,
var(--joy-Input-minHeight)
);
font-size: var(--joy-fontSize-md, 1rem);
}
&[psc='Joy/Size/lg'] {
--joy-Input-minHeight: 2.75rem;
--joy-Input-paddingInline: 1rem;
--joy-Input-decoratorChildHeight: min(
2.25rem,
var(--joy-Input-minHeight)
);
font-size: var(--joy-fontSize-lg, 1.125rem);
}
[psc='Joy/Variant/plain'],
[psc='Joy/Variant/outlined'] {
--joy-Input-Bg: var(--joy-palette-background-surface);
}
svg {
fill: currentColor;
}
input {
font-family: var(--joy-fontFamily-body);
font-size: var(--joy-fontSize-md);
}
&.iaDropdownCommon > div {
overflow: visible;
}
&:focus-within::before {
--joy-Input-focused: 1;
}
&::before {
box-sizing: border-box;
content: '';
display: block;
position: absolute;
pointer-events: none;
inset: 0px;
z-index: 1;
border-radius: var(--joy-Input-radius, inherit);
margin: calc(var(--joy-Input-borderWidth, 0px) * -1);
box-shadow: var(--joy-Input-focusedInset, inset) 0 0 0
calc(var(--joy-Input-focused) * var(--joy-Input-focusedThickness))
var(--joy-Input-focusedHighlight);
}
&__placeholder {
opacity: var(--joy-Input-placeholderOpacity);
}
}
.iaDropdownCommon {
&_search {
color: var(--joy-palette-text-primary);
}
&_search_enabled {
cursor: text;
}
}
.iaDropdownCommon_clear_value,
.ia_dropdown__expandIcon.material-icons.md-24 {
--joy-Icon-margin: initial;
min-width: var(--joy-IconButton-size, 2.5rem);
min-height: var(--joy-IconButton-size, 2.5rem);
padding-inline: 0.25rem;
padding-block: 0px;
margin: var(--joy-IconButton-margin);
border-radius: var(--joy-IconButton-radius, var(--joy-radius-sm));
cursor: pointer;
display: inline-flex;
align-items: center;
-webkit-box-pack: center;
justify-content: center;
position: relative;
--joy-variant-borderWidth: 0px;
margin-inline-start: calc(var(--joy-_Input-paddingBlock) / 2);
margin-inline-end: calc(var(--joy-Input-decoratorChildOffset) * -1);
margin-top: calc(var(--joy-Input-decoratorChildOffset) / 2);
margin-bottom: calc(var(--joy-Input-decoratorChildOffset) / 2);
margin-left: var(--joy-Input-decoratorChildOffset);
symbol {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
margin: var(--joy-Icon-margin);
width: 1em;
height: 1em;
display: inline-block;
fill: currentColor;
-webkit-flex-shrink: 0;
-ms-flex-negative: 0;
flex-shrink: 0;
font-size: var(--joy-Icon-fontSize, 1.25rem);
color: var(--joy-Icon-color);
}
}
.ia_dropdown__valuePill {
@include variant-support(Chip);
@include variant-forced(Chip, soft);
--joy-Chip-radius: 1.5rem;
cursor: pointer;
color: var(--joy-Chip-Color);
background-color: var(--joy-Chip-Bg);
border-color: var(--joy-Chip-Border);
border-width: var(--joy-Chip-borderWidth);
border-style: var(--joy-Chip-borderStyle);
border-radius: var(--joy-Chip-radius);
font-size: var(--joy-joy-fontSize-sm);
font-weight: var(--joy-joy-fontWeight-md);
font-family: var(--joy-joy-fontFamily-body);
margin-block-start: 3px;
margin-block-end: 3px;
padding-inline-start: 12px;
padding-inline-end: 12px;
}
.ia_dropdown__removeValue {
@include variant-support(Button);
@include variant-forced(Button, solid);
--joy-Button-radius: 100%;
margin-right: -7px;
height: 22px;
width: 22px;
color: var(--joy-Button-Color);
background-color: var(--joy-Button-Bg);
border-color: var(--joy-Button-Border);
border-width: var(--joy-Button-borderWidth);
border-style: var(--joy-Button-borderStyle);
border-radius: var(--joy-Button-radius);
&:hover {
@include component-state-forced(Button, solid, Hover);
}
&:active {
@include component-state-forced(Button, solid, Active);
}
}
.iaDropdownCommon_clear_value,
.ia_dropdown__expandIcon {
@include variant-support(Button);
--joy-Button-borderStyle: none;
--joy-Button-radius: var(--joy-radius-sm);
color: var(--joy-Button-Color);
background-color: var(--joy-Button-Bg);
border-color: var(--joy-Button-Border);
border-width: var(--joy-Button-borderWidth);
border-style: var(--joy-Button-borderStyle);
border-radius: var(--joy-Button-radius);
border-radius: var(--joy-IconButton-radius, var(--joy-radius-sm));
&:hover {
@include component-state(Button, Hover);
}
&:active {
@include component-state(Button, Active);
}
}
.ia_dropdown__optionsModal {
background-color: var(--joy-palette-background-popup);
border-color: var(--joy-palette-neutral-outlinedBorder);
border-width: var(--joy-variant-outlined-borderWidth);
border-style: var(--joy-variant-outlined-borderStyle);
box-shadow: var(--joy-shadow-lg);
border-radius: var(--joy-radius-sm);
}
.ia_dropdown__option {
@include variant-support(Option);
@include style-forced(Option, plain, neutral);
/* Define component properties */
--joy-OptionDivider-gap: 0.375rem;
--joy-Option-minHeight: 2.5rem;
--joy-Option-paddingY: 0.375rem;
--joy-Option-paddingX: 0.75rem;
--joy-Option-fontSize: var(--joy-joy-fontSize-md);
--joy-Option-paddingLeft: var(--joy-Option-paddingX);
--joy-Option-paddingRight: var(--joy-Option-paddingX);
--joy-Option-startActionTranslateX: calc(
0.5 * var(--joy-Option-paddingLeft)
);
--joy-Option-endActionTranslateX: calc(
-0.5 * var(--joy-Option-paddingRight)
);
/* Style */
font-family: var(--joy-fontFamily-body);
padding-block: calc(
var(--joy-Option-paddingY) - var(--joy-Option-borderWidth, 0px)
);
margin-inline: var(--joy-ListItemButton-marginInline);
text-align: initial;
background-color: initial;
cursor: pointer;
margin-block-start: var(--joy-List-gap);
padding-inline-start: calc(
var(--joy-Option-paddingLeft) +
var(
--joy-Option-startActionWidth,
var(--joy-unstable_startActionWidth, 0px)
)
);
padding-inline-end: calc(
var(--joy-Option-paddingRight) +
var(
--joy-Option-endActionWidth,
var(--joy-unstable_endActionWidth, 0px)
)
);
min-block-size: var(--joy-Option-minHeight);
/* Apply component properties */
color: var(--joy-Option-Color);
background-color: var(--joy-Option-Bg);
border-color: var(--joy-Option-Border);
border-width: var(--joy-Option-borderWidth);
border-style: var(--joy-Option-borderStyle);
font-size: var(--joy-Option-fontSize);
&:hover {
--joy-Option-Bg: var(--joy-palette-neutral-plainHoverBg);
}
&--joy-selected {
@include style-forced(Option, soft, primary);
font-weight: var(--joy-fontWeight-md);
}
}
/* Resets and Adjustments */
.iaDropdownCommon.iaDropdownCommon_multi-select > div {
& > *:first-child:has(.ia_dropdown__valuePill) {
margin-left: calc(var(--joy-Input-decoratorChildOffset) * -1);
}
& > *:last-child:has(symbol) {
margin-right: calc(var(--joy-Input-decoratorChildOffset) * -1);
}
}
.iaDropdownCommon_options_modal .iaDropdownCommon_option.ia_dropdown__option {
padding: 8px 8px;
}
.iaDropdownCommon .iaDropdownCommon_value-container .ia_dropdown__valuePill {
align-items: center;
}
.iaDropdownCommon.ia_dropdown {
overflow: visible;
}
.iaSelectCommon {
align-items: stretch;
justify-content: stretch;
}
.iaSelectCommon_select {
height: unset ;
}