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

package.components.Accordion.accordion.scss Maven / Gradle / Ivy

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

@include pf-root($accordion) {
  // accordion
  --#{$accordion}--BackgroundColor: var(--pf-t--global--background--color--primary--default);
  --#{$accordion}--RowGap: var(--pf-t--global--spacer--xs); // No applicable spacer

  // accordion item
  --#{$accordion}__item--BorderRadius: var(--pf-t--global--border--radius--200);
  --#{$accordion}__item--m-expanded--BackgroundColor: var(--pf-t--global--background--color--action--plain--clicked);

  // accordion toggle
  --#{$accordion}__toggle--ColumnGap: var(--pf-t--global--spacer--gap--text-to-element--default);
  --#{$accordion}__toggle--PaddingBlockStart: var(--pf-t--global--spacer--sm);
  --#{$accordion}__toggle--PaddingInlineEnd: var(--pf-t--global--spacer--md);
  --#{$accordion}__toggle--PaddingBlockEnd: var(--pf-t--global--spacer--sm);
  --#{$accordion}__toggle--m-expanded--PaddingBlockEnd: var(--pf-t--global--spacer--sm);
  --#{$accordion}__toggle--PaddingInlineStart: var(--pf-t--global--spacer--md);
  --#{$accordion}__toggle--BackgroundColor: var(--pf-t--global--background--color--action--plain--default);
  --#{$accordion}__toggle--hover--BackgroundColor: var(--pf-t--global--background--color--action--plain--hover);
  --#{$accordion}__toggle--BorderRadius: var(--pf-t--global--border--radius--small);

  // Accordion toggle toggle-start modifier
  // This decreases the gap between icon and text, alternative is calc it to * 2 the token or create a new token
  --#{$accordion}--m-toggle-start__toggle--ColumnGap: var(--pf-t--global--spacer--gap--text-to-element--default);

  // accordion toggle text
  --#{$accordion}__toggle-text--Color: var(--pf-t--global--text--color--regular);
  --#{$accordion}__toggle-text--FontWeight: var(--pf-t--global--font--weight--body--default);
  --#{$accordion}__toggle--m-expanded__toggle-text--FontWeight: var(--pf-t--global--font--weight--body--bold);
  --#{$accordion}--m-display-lg__toggle--m-expanded__toggle-text--FontWeight: var(--pf-t--global--font--weight--heading--default);

  // accordion toggle icon
  --#{$accordion}__toggle-icon--Transition: .2s ease-in 0s;
  --#{$accordion}__toggle--m-expanded__toggle-icon--Rotate: 90deg;

  // accordion expandable content
  --#{$accordion}__expandable-content--MarginInlineEnd: var(--pf-t--global--spacer--md);
  --#{$accordion}__expandable-content--MarginBlockEnd: var(--pf-t--global--spacer--md);
  --#{$accordion}__expandable-content--MarginInlineStart: var(--pf-t--global--spacer--md);
  --#{$accordion}__expandable-content--BackgroundColor: var(--pf-t--global--background--color--primary--default);
  --#{$accordion}__expandable-content--BorderRadius: var(--pf-t--global--border--radius--small);
  --#{$accordion}__expandable-content--Color: var(--pf-t--global--text--color--regular);
  --#{$accordion}__expandable-content--FontSize: var(--pf-t--global--font--size--body--default);
  --#{$accordion}__expandable-content--m-fixed--MaxHeight: #{pf-size-prem(150px)};

  // accordion expandable content body
  --#{$accordion}__expandable-content-body--PaddingBlockStart: var(--pf-t--global--spacer--sm);
  --#{$accordion}__expandable-content-body--PaddingInlineEnd: var(--pf-t--global--spacer--sm);
  --#{$accordion}__expandable-content-body--PaddingBlockEnd: var(--pf-t--global--spacer--sm);
  --#{$accordion}__expandable-content-body--PaddingInlineStart: var(--pf-t--global--spacer--sm);
  --#{$accordion}__expandable-content-body--expandable-content-body--PaddingBlockStart: 0;

  // large
  --#{$accordion}--m-display-lg__toggle--PaddingBlockStart: var(--pf-t--global--spacer--md);
  --#{$accordion}--m-display-lg__toggle--PaddingInlineEnd: var(--pf-t--global--spacer--md);
  --#{$accordion}--m-display-lg__toggle--PaddingBlockEnd: var(--pf-t--global--spacer--md);
  --#{$accordion}--m-display-lg__toggle--m-expanded--PaddingBlockEnd: var(--pf-t--global--spacer--sm);
  --#{$accordion}--m-display-lg__toggle--PaddingInlineStart: var(--pf-t--global--spacer--md);
  --#{$accordion}--m-display-lg__toggle--FontFamily: var(--pf-t--global--font--family--heading);
  --#{$accordion}--m-display-lg__toggle--FontSize: var(--pf-t--global--font--size--heading--sm);
  --#{$accordion}--m-display-lg__toggle-text--FontWeight: var(--pf-t--global--font--weight--heading--default);
  --#{$accordion}--m-display-lg__expandable-content--FontSize: var(--pf-t--global--font--size--body--lg);
  --#{$accordion}--m-display-lg__expandable-content--Color: var(--pf-t--global--text--color--regular);

  // bordered
  --#{$accordion}--m-bordered--RowGap: 0;
  --#{$accordion}__item--m-bordered--BorderBlockEndWidth: var(--pf-t--global--border--width--divider--default);
  --#{$accordion}__item--m-bordered--BorderBlockEndColor: var(--pf-t--global--border--color--default);
}

.#{$accordion} {
  display: flex;
  flex-direction: column;
  row-gap: var(--#{$accordion}--RowGap);
  background-color: var(--#{$accordion}--BackgroundColor);

  &.pf-m-toggle-start {
    --#{$accordion}__toggle--ColumnGap: var(--#{$accordion}--m-toggle-start__toggle--ColumnGap);
  }

  &.pf-m-display-lg {
    --#{$accordion}__toggle--PaddingBlockStart: var(--#{$accordion}--m-display-lg__toggle--PaddingBlockStart);
    --#{$accordion}__toggle--PaddingInlineEnd: var(--#{$accordion}--m-display-lg__toggle--PaddingInlineEnd);
    --#{$accordion}__toggle--PaddingBlockEnd: var(--#{$accordion}--m-display-lg__toggle--PaddingBlockEnd);
    --#{$accordion}__toggle--m-expanded--PaddingBlockEnd: var(--#{$accordion}--m-display-lg__toggle--m-expanded--PaddingBlockEnd);
    --#{$accordion}__toggle--PaddingInlineStart: var(--#{$accordion}--m-display-lg__toggle--PaddingInlineStart);
    --#{$accordion}__toggle--FontFamily: var(--#{$accordion}--m-display-lg__toggle--FontFamily);
    --#{$accordion}__toggle--FontSize: var(--#{$accordion}--m-display-lg__toggle--FontSize);
    --#{$accordion}__toggle-text--FontWeight: var(--#{$accordion}--m-display-lg__toggle-text--FontWeight);
    --#{$accordion}__toggle--m-expanded__toggle-text--FontWeight: var(--#{$accordion}--m-display-lg__toggle--m-expanded__toggle-text--FontWeight);
    --#{$accordion}__expandable-content--FontSize: var(--#{$accordion}--m-display-lg__expandable-content--FontSize);
    --#{$accordion}__expandable-content--Color: var(--#{$accordion}--m-display-lg__expandable-content--Color);
  }

  &.pf-m-bordered {
    --#{$accordion}--RowGap: var(--#{$accordion}--m-bordered--RowGap);
    --#{$accordion}__item--BorderRadius: 0;
    --#{$accordion}__toggle--BorderRadius: 0;

    .#{$accordion}__item {
      border-block-end: var(--#{$accordion}__item--m-bordered--BorderBlockEndWidth) solid var(--#{$accordion}__item--m-bordered--BorderBlockEndColor);
    }
  }
}

.#{$accordion}__item {
  border-radius: var(--#{$accordion}__item--BorderRadius);

  &.pf-m-expanded {
    --#{$accordion}__toggle--PaddingBlockEnd: var(--#{$accordion}__toggle--m-expanded--PaddingBlockEnd);
    --#{$accordion}__toggle-text--FontWeight: var(--#{$accordion}__toggle--m-expanded__toggle-text--FontWeight);

    background-color: var(--#{$accordion}__item--m-expanded--BackgroundColor);

    .#{$accordion}__toggle-icon {
      transform: rotate(var(--#{$accordion}__toggle--m-expanded__toggle-icon--Rotate));
    }
  }
}

.#{$accordion}__toggle {
  display: flex;
  column-gap: var(--#{$accordion}__toggle--ColumnGap);
  align-items: center;
  width: 100%;
  padding-block-start: var(--#{$accordion}__toggle--PaddingBlockStart);
  padding-block-end: var(--#{$accordion}__toggle--PaddingBlockEnd);
  padding-inline-start: var(--#{$accordion}__toggle--PaddingInlineStart);
  padding-inline-end: var(--#{$accordion}__toggle--PaddingInlineEnd);
  font-family: var(--#{$accordion}__toggle--FontFamily, inherit);
  font-size: var(--#{$accordion}__toggle--FontSize, inherit);
  text-align: start;
  background-color: var(--#{$accordion}__toggle--BackgroundColor);
  border: 0;
  border-radius: var(--#{$accordion}__toggle--BorderRadius);

  &:is(:hover, :focus) {
    --#{$accordion}__toggle--BackgroundColor: var(--#{$accordion}__toggle--hover--BackgroundColor);
  }
}

.#{$accordion}__toggle-text {
  @include pf-v6-text-overflow;

  flex-grow: 1;
  font-weight: var(--#{$accordion}__toggle-text--FontWeight);
  color: var(--#{$accordion}__toggle-text--Color);
}

.#{$accordion}__toggle-icon {
  @include pf-v6-mirror-inline-on-rtl;

  transition: var(--#{$accordion}__toggle-icon--Transition);
}

.#{$accordion}__expandable-content {
  margin-block-end: var(--#{$accordion}__expandable-content--MarginBlockEnd);
  margin-inline-start: var(--#{$accordion}__expandable-content--MarginInlineStart);
  margin-inline-end: var(--#{$accordion}__expandable-content--MarginInlineEnd);
  font-size: var(--#{$accordion}__expandable-content--FontSize);
  color: var(--#{$accordion}__expandable-content--Color);
  background-color: var(--#{$accordion}__expandable-content--BackgroundColor);
  border-radius: var(--#{$accordion}__expandable-content--BorderRadius);

  &.pf-m-fixed {
    max-height: var(--#{$accordion}__expandable-content--m-fixed--MaxHeight);
    overflow-y: auto;
  }
}

.#{$accordion}__expandable-content-body {
  padding-block-start: var(--#{$accordion}__expandable-content-body--PaddingBlockStart);
  padding-block-end: var(--#{$accordion}__expandable-content-body--PaddingBlockEnd);
  padding-inline-start: var(--#{$accordion}__expandable-content-body--PaddingInlineStart);
  padding-inline-end: var(--#{$accordion}__expandable-content-body--PaddingInlineEnd);

  & + & {
    --#{$accordion}__expandable-content-body--PaddingBlockStart: var(--#{$accordion}__expandable-content-body--expandable-content-body--PaddingBlockStart);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy