zu 0.3.3

Yew web components, implementing Material Design
Documentation
// 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;
    }
  }
}