// Copyright (c) 2024 Xu Shaohua <shaohua@biofan.org>. All rights reserved.
// Use of this source is governed by Lesser General Public License
// that can be found in the LICENSE file.
/* Styles for LoadingButton */
// Styles applied to the root element.
.ZuLoadingButton-root {
min-width: 64px;
padding: 6px 16px;
transition: background-color $zu-duration-short $zu-easing-easeInOut 0ms,
box-shadow $zu-duration-short $zu-easing-easeInOut 0ms,
border-color $zu-duration-short $zu-easing-easeInOut 0ms,
color $zu-duration-short $zu-easing-easeInOut 0ms;
// Styles applied to the startIcon element if loading={true} and loadingPosition="start".
& .ZuLoadingButton-startIconLoadingStart,
// Styles applied to the endIcon element if loading={true} and loadingPosition="end".
& .ZuLoadingButton-endIconLoadingEnd {
transition: opacity $zu-duration-short;
opacity: 0;
}
// Styles applied to the root element if loading={true}.
&.ZuLoadingButton-loading {
color: transparent;
}
}
.ZuLoadingButton-loadingPositionStart {
&.ZuLoadingButton-fullWidth {
& .ZuLoadingButton-startIconLoadingStart,
& .ZuLoadingButton-endIconLoadingEnd {
// FIXME(Shaohua): transition invalid
transition: opacity $zu-duration-short;
opacity: 0;
margin-right: -8px;
}
}
}
.ZuLoadingButton-loadingPositionEnd {
&.ZuLoadingButton-fullWidth {
& .ZuLoadingButton-startIconLoadingStart,
& .ZuLoadingButton-endIconLoadingEnd {
transition: opacity $zu-duration-short;
opacity: 0;
margin-left: -8px;
}
}
}
.ZuLoadingButton-loadingPositionCenter {
// FIXME(Shaohua): transition is invalid
transition: background-color $zu-duration-short, box-shadow $zu-duration-short,
border-color $zu-duration-short;
}
// Styles applied to the root element if disableElevation={true}.
.ZuLoadingButton-disableElevation {
}
// State class applied to the ButtonBase root element if the button is keyboard focused.\
.ZuLoadingButton-focusVisible {
}
// State class applied to the root element if disabled={true}.
.ZuLoadingButton-disabled {
}
// Styles applied to the startIcon element if supplied.
.ZuLoadingButton-startIcon {
}
// Styles applied to the endIcon element if supplied.
.ZuLoadingButton-endIcon {
}
// Styles applied to the icon element if supplied and size="small".
.ZuLoadingButton-iconSizeSmall {
}
// Styles applied to the icon element if supplied and size="medium".
.ZuLoadingButton-iconSizeMedium {
}
// Styles applied to the icon element if supplied and size="large".
.ZuLoadingButton-iconSizeLarge {
}
// Styles applied to the loadingIndicator element.
.ZuLoadingButton-loadingIndicator {
position: absolute;
display: flex;
visibility: visible;
// Styles applied to the loadingIndicator element if loadingPosition="start".
&.ZuLoadingButton-loadingIndicatorStart {
&.ZuLoadingButton-loadingIndicatorOutlined,
&.ZuLoadingButton-loadingIndicatorContained {
&.ZuLoadingButton-loadingIndicatorSizeSmall {
left: 10px;
}
&.ZuLoadingButton-loadingIndicatorSizeMedium,
&.ZuLoadingButton-loadingIndicatorSizeLarge {
left: 14px;
}
}
&.ZuLoadingButton-loadingIndicatorText {
left: 6px;
}
&.ZuLoadingButton-loadingIndicatorFullWidth {
position: relative;
left: -10px;
}
}
// Styles applied to the loadingIndicator element if loadingPosition="center".
&.ZuLoadingButton-loadingIndicatorCenter {
left: 50%;
transform: translate(-50%);
color: $zu-palette-action-disabled;
}
// Styles applied to the loadingIndicator element if loadingPosition="end".
&.ZuLoadingButton-loadingIndicatorEnd {
&.ZuLoadingButton-loadingIndicatorOutlined,
&.ZuLoadingButton-loadingIndicatorContained {
&.ZuLoadingButton-loadingIndicatorSizeSmall {
right: 10px;
}
&.ZuLoadingButton-loadingIndicatorSizeMedium,
&.ZuLoadingButton-loadingIndicatorSizeLarge {
right: 14px;
}
}
&.ZuLoadingButton-loadingIndicatorText {
right: 6px;
}
&.ZuLoadingButton-loadingIndicatorFullWidth {
position: relative;
right: -10px;
}
}
}