All Downloads are FREE. Search and download functionalities are using the official Maven repository.

package.components.Alert.alert-group.scss Maven / Gradle / Ivy

The newest version!
@use '../../sass-utilities' as *;

// Tabs
@include pf-root($alert-group) {
  // Alert group variables
  --#{$alert-group}__item--MarginBlockStart: var(--pf-t--global--spacer--gap--group--vertical);

  // Toast variables
  --#{$alert-group}--m-toast--InsetBlockStart: var(--pf-t--global--spacer--2xl);
  --#{$alert-group}--m-toast--InsetInlineEnd: var(--pf-t--global--spacer--xl);
  --#{$alert-group}--m-toast--MaxWidth: #{pf-size-prem(600px)};
  --#{$alert-group}--m-toast--ZIndex: var(--pf-t--global--z-index--2xl);

  // Overflow button
  --#{$alert-group}__overflow-button--BorderWidth: 0;
  --#{$alert-group}__overflow-button--BorderRadius: var(--pf-t--global--border--radius--medium);
  --#{$alert-group}__overflow-button--PaddingBlockStart: var(--pf-t--global--spacer--md);
  --#{$alert-group}__overflow-button--PaddingInlineEnd: var(--pf-t--global--spacer--md);
  --#{$alert-group}__overflow-button--PaddingBlockEnd: var(--pf-t--global--spacer--md);
  --#{$alert-group}__overflow-button--PaddingInlineStart: var(--pf-t--global--spacer--md);
  --#{$alert-group}__overflow-button--Color: var(--pf-t--global--text--color--link--default);
  --#{$alert-group}__overflow-button--BoxShadow: var(--pf-t--global--box-shadow--lg);
  --#{$alert-group}__overflow-button--BackgroundColor: var(--pf-t--global--background--color--floating--default);
  --#{$alert-group}__overflow-button--hover--Color: var(--pf-t--global--text--color--link--hover);
  --#{$alert-group}__overflow-button--hover--BackgroundColor: var(--pf-t--global--background--color--floating--hover);
  --#{$alert-group}__overflow-button--hover--BoxShadow: var(--pf-t--global--box-shadow--lg), var(--pf-t--global--box-shadow--lg--bottom);
  --#{$alert-group}__overflow-button--focus--Color: var(--pf-t--global--text--color--link--hover);
  --#{$alert-group}__overflow-button--focus--BoxShadow: var(--pf-t--global--box-shadow--lg), var(--pf-t--global--box-shadow--lg--bottom);
  --#{$alert-group}__overflow-button--active--Color: var(--pf-t--global--text--color--link--hover);
  --#{$alert-group}__overflow-button--active--BoxShadow: var(--pf-t--global--box-shadow--lg), var(--pf-t--global--box-shadow--lg--bottom);
}

.#{$alert-group} {
  // Spacing between alerts
  > * + * {
    margin-block-start: var(--#{$alert-group}__item--MarginBlockStart);
  }

  // Toast positioning modifier
  &.pf-m-toast {
    position: fixed;
    inset-block-start: var(--#{$alert-group}--m-toast--InsetBlockStart);
    inset-inline-end: var(--#{$alert-group}--m-toast--InsetInlineEnd);
    z-index: var(--#{$alert-group}--m-toast--ZIndex);
    width: calc(100% - calc(var(--#{$alert-group}--m-toast--InsetInlineEnd) * 2));
    max-width: var(--#{$alert-group}--m-toast--MaxWidth);
  }
}

.#{$alert-group}__overflow-button {
  position: relative;
  width: 100%;
  padding-block-start: var(--#{$alert-group}__overflow-button--PaddingBlockStart);
  padding-block-end: var(--#{$alert-group}__overflow-button--PaddingBlockEnd);
  padding-inline-start: var(--#{$alert-group}__overflow-button--PaddingInlineStart);
  padding-inline-end: var(--#{$alert-group}__overflow-button--PaddingInlineEnd);
  color: var(--#{$alert-group}__overflow-button--Color);
  background-color: var(--#{$alert-group}__overflow-button--BackgroundColor);
  border-width: var(--#{$alert-group}__overflow-button--BorderWidth);
  border-radius: var(--#{$alert-group}__overflow-button--BorderRadius);
  box-shadow: var(--#{$alert-group}__overflow-button--BoxShadow);
}

.#{$alert-group}__item {
  // Properties to be transitioned on entry/exit
  display: grid;
  grid-template-rows: 1fr;
  opacity: 1;

  // This transition will happen when the item is added (.pf-m-offstage-top is removed)
  // Reduced motion by default
  // transparency change only
  transition: 
  opacity var(--pf-t--global--motion--duration--fade--default) var(--pf-t--global--motion--timing-function--decelerate) 0s;
  transform: translateX(0) translateY(0);

  // This transition will happen when the item is added (.pf-m-offstage-top is removed)
  // give it height, then slide it down into place
  // These values are for regular motion
  @media screen and (prefers-reduced-motion: no-preference) {
    transition: 
      opacity var(--pf-t--global--motion--duration--fade--default) var(--pf-t--global--motion--timing-function--decelerate) var(--pf-t--global--motion--duration--slide-in--default), 
      transform var(--pf-t--global--motion--duration--slide-in--default) var(--pf-t--global--motion--timing-function--decelerate) var(--pf-t--global--motion--duration--slide-in--default), 
      grid-template-rows var(--pf-t--global--motion--duration--slide-in--default) var(--pf-t--global--motion--timing-function--decelerate) 0s, 
      margin-block var(--pf-t--global--motion--duration--slide-in--default) var(--pf-t--global--motion--timing-function--decelerate) 0s;

      & .pf-v6-c-alert {
        transition: all var(--pf-t--global--motion--duration--slide-in--default) var(--pf-t--global--motion--timing-function--decelerate);
      }
  }

  // This class is used BEFORE the alert item comes into the list
  &.pf-m-offstage-top {
    // make the item have no height and position it up above
    grid-template-rows: 0fr;
    margin-block: 0;
    overflow: hidden;
    opacity: 0;
    transform: translateY(-100%);

    & .pf-v6-c-alert {
      // make it small when it's first created off to the top
      min-height: 0;
      padding-block-start: 0;
      padding-block-end: 0;
      border-width: 0;
    }
  }

  // Add this class before removing an alert
  // TODO auto dismissal should be the same motion, but has a different duration
  &.pf-m-offstage-right {
    grid-template-rows: 0fr; // collapse vertically to bring up the items below
    margin-block: 0;
    overflow: hidden;
    opacity: 0;

    // This transition will happen when the item is removed
    // Reduced motion by default
    // transparency change only
    transition: 
      opacity var(--pf-t--global--motion--duration--fade--short) var(--pf-t--global--motion--timing-function--accelerate) 0s;
    transform: translateX(100%);

    & .pf-v6-c-alert {
      min-height: 0;
      padding-block-start: 0;
      padding-block-end: 0;
      border-width: 0;
    }

    // This transition will happen when the item is added (.pf-m-offstage-top is removed)
    // give it height, then slide it down into place
    // These values are for regular motion
    @media screen and (prefers-reduced-motion: no-preference) {
      transition: 
        transform var(--pf-t--global--motion--duration--slide-out--short) var(--pf-t--global--motion--timing-function--accelerate) 0s, 
        opacity var(--pf-t--global--motion--duration--slide-out--short) var(--pf-t--global--motion--timing-function--accelerate) 0s,
        margin-block var(--pf-t--global--motion--duration--fade--short) var(--pf-t--global--motion--timing-function--accelerate) var(--pf-t--global--motion--duration--slide-out--short), 
        grid-template-rows var(--pf-t--global--motion--duration--slide-in--short) var(--pf-t--global--motion--timing-function--accelerate) var(--pf-t--global--motion--duration--slide-out--short);

        & .pf-v6-c-alert {
          transition: all var(--pf-t--global--motion--duration--slide-out--short) var(--pf-t--global--motion--timing-function--accelerate) var(--pf-t--global--motion--duration--slide-out--short);
        }
    }
  }

  &:hover {
    --#{$alert-group}__overflow-button--Color: var(--#{$alert-group}__overflow-button--hover--Color);
    --#{$alert-group}__overflow-button--BackgroundColor: var(--#{$alert-group}__overflow-button--hover--BackgroundColor);
    --#{$alert-group}__overflow-button--BoxShadow: var(--#{$alert-group}__overflow-button--hover--BoxShadow);
  }

  &:focus {
    --#{$alert-group}__overflow-button--Color: var(--#{$alert-group}__overflow-button--focus--Color);
    --#{$alert-group}__overflow-button--BoxShadow: var(--#{$alert-group}__overflow-button--focus--BoxShadow);
  }

  &:active {
    --#{$alert-group}__overflow-button--Color: var(--#{$alert-group}__overflow-button--active--Color);
    --#{$alert-group}__overflow-button--BoxShadow: var(--#{$alert-group}__overflow-button--active--BoxShadow);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy