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

package.components.Drawer.drawer.scss Maven / Gradle / Ivy

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

$pf-v6-c-drawer--breakpoint-map: build-breakpoint-map("base", "lg", "xl", "2xl");
$pf-v6-c-drawer--breakpoint-map--width: build-breakpoint-map("base", "lg", "xl", "2xl");
$pf-v6-c-drawer__panel--list--width: (25, 33, 50, 66, 75, 100);

@include pf-root($drawer) {
  // Section
  --#{$drawer}__section--BackgroundColor: var(--pf-t--global--background--color--primary--default);
  --#{$drawer}__section--m-secondary--BackgroundColor: var(--pf-t--global--background--color--secondary--default);

  // Content
  --#{$drawer}__content--FlexBasis: 100%;
  --#{$drawer}__content--BackgroundColor: transparent;
  --#{$drawer}__content--m-primary--BackgroundColor: var(--pf-t--global--background--color--primary--default);
  --#{$drawer}__content--m-secondary--BackgroundColor: var(--pf-t--global--background--color--secondary--default);
  --#{$drawer}__content--ZIndex: var(--pf-t--global--z-index--xs);

  // Panel
  --#{$drawer}__panel--MinWidth: 50%; // change to __panel--md--MinWidth at breaking change
  --#{$drawer}__panel--MaxHeight: auto;
  --#{$drawer}__panel--ZIndex: var(--pf-t--global--z-index--sm);
  --#{$drawer}__panel--BackgroundColor: var(--pf-t--global--background--color--floating--default);
  --#{$drawer}__panel--m-inline--BackgroundColor: var(--pf-t--global--background--color--primary--default);
  --#{$drawer}__panel--m-secondary--BackgroundColor: var(--pf-t--global--background--color--secondary--default);
  --#{$drawer}__panel--RowGap: var(--pf-t--global--spacer--sm);
  --#{$drawer}__panel--PaddingBlockStart: var(--pf-t--global--spacer--sm);
  --#{$drawer}__panel--PaddingBlockEnd: var(--pf-t--global--spacer--sm);
  --#{$drawer}__panel--TransitionDuration: 250ms;
  --#{$drawer}__panel--TransitionProperty: margin, transform, box-shadow, flex-basis;
  --#{$drawer}__panel--FlexBasis: 100%;
  --#{$drawer}__panel--md--FlexBasis--min: #{pf-size-prem(24px)};
  --#{$drawer}__panel--md--FlexBasis: 50%;
  --#{$drawer}__panel--md--FlexBasis--max: 100%;
  --#{$drawer}__panel--xl--MinWidth: #{pf-size-prem(450px)};
  --#{$drawer}__panel--xl--FlexBasis: #{pf-size-prem(450px)};
  --#{$drawer}--m-panel-bottom__panel--md--MinHeight: 50%;
  --#{$drawer}--m-panel-bottom__panel--xl--MinHeight: #{pf-size-prem(300px)};
  --#{$drawer}--m-panel-bottom__panel--xl--FlexBasis: #{pf-size-prem(300px)};
  --#{$drawer}__panel--m-resizable--FlexDirection: row;
  --#{$drawer}__panel--m-resizable--md--FlexBasis--min: var(--#{$drawer}__splitter--m-vertical--Width);
  --#{$drawer}__panel--m-resizable--MinWidth: #{pf-size-prem(24px)};
  --#{$drawer}--m-panel-bottom__panel--m-resizable--FlexDirection: column;
  --#{$drawer}--m-panel-bottom__panel--m-resizable--md--FlexBasis--min: #{pf-size-prem(24px)};
  --#{$drawer}--m-panel-bottom__panel--m-resizable--MinHeight: #{pf-size-prem(24px)};

  // Drawer panel head
  --#{$drawer}__head--ColumnGap: var(--pf-t--global--spacer--gap--text-to-element--default);
  --#{$drawer}__head--PaddingBlockStart: var(--pf-t--global--spacer--sm);
  --#{$drawer}__head--PaddingBlockEnd: var(--pf-t--global--spacer--sm);
  --#{$drawer}__head--PaddingInlineStart: var(--pf-t--global--spacer--md);
  --#{$drawer}__head--PaddingInlineEnd: var(--pf-t--global--spacer--md);

  // Drawer panel description
  --#{$drawer}__description--PaddingInlineStart: var(--pf-t--global--spacer--md);
  --#{$drawer}__description--PaddingInlineEnd: var(--pf-t--global--spacer--md);

  // Drawer body padding
  --#{$drawer}__body--PaddingBlockStart--base: var(--pf-t--global--spacer--md);
  --#{$drawer}__body--PaddingInlineEnd--base: var(--pf-t--global--spacer--md);
  --#{$drawer}__body--PaddingBlockEnd--base: var(--pf-t--global--spacer--md);
  --#{$drawer}__body--PaddingInlineStart--base: var(--pf-t--global--spacer--md);

  // Drawer content body
  --#{$drawer}__content__body--PaddingBlockStart: 0;
  --#{$drawer}__content__body--PaddingInlineEnd: 0;
  --#{$drawer}__content__body--PaddingBlockEnd: 0;
  --#{$drawer}__content__body--PaddingInlineStart: 0;

  // Drawer panel body
  --#{$drawer}__panel__body--PaddingBlockStart: var(--#{$drawer}__body--PaddingBlockStart--base);
  --#{$drawer}__panel__body--PaddingInlineEnd: var(--#{$drawer}__body--PaddingInlineEnd--base);
  --#{$drawer}__panel__body--PaddingBlockEnd: var(--#{$drawer}__body--PaddingBlockEnd--base);
  --#{$drawer}__panel__body--PaddingInlineStart: var(--#{$drawer}__body--PaddingInlineStart--base);

  // Modified body padding
  --#{$drawer}__body--m-padding--PaddingBlockStart: var(--pf-t--global--spacer--md);
  --#{$drawer}__body--m-padding--PaddingInlineEnd: var(--pf-t--global--spacer--md);
  --#{$drawer}__body--m-padding--PaddingBlockEnd: var(--pf-t--global--spacer--md);
  --#{$drawer}__body--m-padding--PaddingInlineStart: var(--pf-t--global--spacer--md);

  // Splitter
  --#{$drawer}__splitter--Height: #{pf-size-prem(9px)};
  --#{$drawer}__splitter--Width: 100%;
  --#{$drawer}__splitter--BackgroundColor: var(--pf-t--global--background--color--primary--default);
  --#{$drawer}__splitter--Cursor: row-resize;
  --#{$drawer}__splitter--m-vertical--Height: 100%;
  --#{$drawer}__splitter--m-vertical--Width: #{pf-size-prem(9px)};
  --#{$drawer}__splitter--m-vertical--Cursor: col-resize;
  --#{$drawer}--m-inline__splitter--focus--OutlineOffset: #{pf-size-prem(-1px)};

  // Splitter border
  --#{$drawer}__splitter--after--BorderColor: var(--pf-t--global--border--color--default);
  --#{$drawer}__splitter--after--border-width--base: var(--pf-t--global--border--width--divider--default);
  --#{$drawer}__splitter--after--BorderBlockStartWidth: 0;
  --#{$drawer}__splitter--after--BorderInlineEndWidth: var(--#{$drawer}__splitter--after--border-width--base);
  --#{$drawer}__splitter--after--BorderBlockEndWidth: 0;
  --#{$drawer}__splitter--after--BorderInlineStartWidth: var(--#{$drawer}__splitter--after--border-width--base);
  --#{$drawer}--m-panel-bottom__splitter--after--BorderBlockStartWidth: var(--#{$drawer}__splitter--after--border-width--base);
  --#{$drawer}--m-panel-bottom__splitter--after--BorderBlockEndWidth: var(--#{$drawer}__splitter--after--border-width--base);
  --#{$drawer}--m-inline__splitter--m-vertical--Width: #{pf-size-prem(10px)};
  --#{$drawer}--m-inline__splitter-handle--InsetInlineStart: 50%;
  --#{$drawer}--m-inline--m-panel-bottom__splitter--Height: #{pf-size-prem(10px)};
  --#{$drawer}--m-inline--m-panel-bottom__splitter-handle--InsetBlockStart: 50%;
  --#{$drawer}--m-inline--m-panel-bottom__splitter--after--BorderBlockStartWidth: var(--#{$drawer}__splitter--after--border-width--base);

  // Splitter handle
  --#{$drawer}__splitter-handle--InsetBlockStart: 50%;
  --#{$drawer}__splitter-handle--InsetInlineStart: calc(50% - var(--#{$drawer}__splitter--after--border-width--base));
  --#{$drawer}--m-panel-left__splitter-handle--InsetInlineStart: 50%;
  --#{$drawer}--m-panel-bottom__splitter-handle--InsetBlockStart: calc(50% - var(--#{$drawer}__splitter--after--border-width--base));

  // Splitter handle line
  --#{$drawer}__splitter-handle--after--BorderColor: var(--pf-t--global--border--color--default);
  --#{$drawer}__splitter-handle--after--BorderBlockStartWidth: var(--pf-t--global--border--width--divider--default);
  --#{$drawer}__splitter-handle--after--BorderInlineEndWidth: 0;
  --#{$drawer}__splitter-handle--after--BorderBlockEndWidth: var(--pf-t--global--border--width--divider--default);
  --#{$drawer}__splitter-handle--after--BorderInlineStartWidth: 0;
  --#{$drawer}__splitter--hover__splitter-handle--after--BorderColor: var(--pf-t--global--border--color--hover);
  --#{$drawer}__splitter--m-vertical__splitter-handle--after--BorderBlockStartWidth: 0;
  --#{$drawer}__splitter--m-vertical__splitter-handle--after--BorderInlineEndWidth: var(--pf-t--global--border--width--divider--default);
  --#{$drawer}__splitter--m-vertical__splitter-handle--after--BorderBlockEndWidth: 0;
  --#{$drawer}__splitter--m-vertical__splitter-handle--after--BorderInlineStartWidth: var(--pf-t--global--border--width--divider--default);
  --#{$drawer}__splitter-handle--after--Width: #{pf-size-prem(12px)};
  --#{$drawer}__splitter-handle--after--Height: #{pf-size-prem(4px)};
  --#{$drawer}__splitter--m-vertical__splitter-handle--after--Width: #{pf-size-prem(4px)};
  --#{$drawer}__splitter--m-vertical__splitter-handle--after--Height: #{pf-size-prem(12px)};

  @media screen and (min-width: $pf-v6-global--breakpoint--xl) {
    --#{$drawer}__panel--MinWidth: var(--#{$drawer}__panel--xl--MinWidth);

    &.pf-m-panel-bottom {
      --#{$drawer}__panel--MinWidth: auto;
      --#{$drawer}__panel--MinHeight: var(--#{$drawer}--m-panel-bottom__panel--xl--MinHeight);
    }
  }

  // Actions
  --#{$drawer}__actions--MarginBlockStart: calc(var(--pf-t--global--spacer--control--vertical--compact) * -1.5);
  --#{$drawer}__actions--MarginInlineEnd: calc(var(--pf-t--global--spacer--control--horizontal--compact) * -1.5);

  // Box shadow
  --#{$drawer}__panel--BoxShadow: none;
  --#{$drawer}--m-expanded--m-panel-bottom__panel--BoxShadow: var(--pf-t--global--box-shadow--md--top);

  // Divider
  --#{$drawer}__panel--after--Width: var(--pf-t--global--border--width--divider--default);
  --#{$drawer}--m-panel-bottom__panel--after--Height: var(--pf-t--global--border--width--divider--default);
  --#{$drawer}__panel--after--BackgroundColor: transparent;
  --#{$drawer}--m-inline--m-expanded__panel--after--BackgroundColor: var(--pf-t--global--border--color--default);
  --#{$drawer}--m-inline__panel--PaddingInlineStart: var(--#{$drawer}__panel--after--Width);
  --#{$drawer}--m-panel-left--m-inline__panel--PaddingInlineEnd: var(--#{$drawer}__panel--after--Width);
  --#{$drawer}--m-panel-bottom--m-inline__panel--PaddingBlockStart: var(--#{$drawer}__panel--after--Width);
}

.#{$drawer} {
  @include pf-v6-bidirectional-style(
    $prop: --#{$drawer}--m-expanded__panel--BoxShadow,
    $ltr-val: var(--pf-t--global--box-shadow--md--left),
    $rtl-val: var(--pf-t--global--box-shadow--md--right)
  );
  @include pf-v6-bidirectional-style(
    $prop: --#{$drawer}--m-expanded--m-panel-left__panel--BoxShadow,
    $ltr-val: var(--pf-t--global--box-shadow--md--right),
    $rtl-val: var(--pf-t--global--box-shadow--md--left)
  );

  display: flex;
  flex-direction: column;
  height: 100%;
  overflow-x: hidden;

  &.pf-m-inline,
  &.pf-m-static {
    --#{$drawer}__panel--BackgroundColor: var(--#{$drawer}__panel--m-inline--BackgroundColor);

    > .#{$drawer}__main > .#{$drawer}__panel:not(.pf-m-no-border, .pf-m-resizable) {
      padding-inline-start: var(--#{$drawer}--m-inline__panel--PaddingInlineStart);
    }
  }

  &.pf-m-panel-left > .#{$drawer}__main {
    > .#{$drawer}__panel {
      order: 0;
      margin-inline-end: calc(var(--#{$drawer}__panel--FlexBasis) * -1);

      @include pf-v6-bidirectional-style(
        $prop: transform,
        $ltr-val: translateX(-100%),
        $rtl-val: translateX(#{pf-v6-calc-inverse(-100%)}),
      );
    }

    > .#{$drawer}__content {
      order: 1;
    }
  }

  &.pf-m-panel-bottom > .#{$drawer}__main {
    flex-direction: column;
  }

  // Expanded
  // stylelint-disable selector-max-class
  &.pf-m-expanded {
    > .#{$drawer}__main > .#{$drawer}__panel {
      @include pf-v6-bidirectional-style(
        $prop: transform,
        $ltr-val: translateX(-100%),
        $rtl-val: translateX(#{pf-v6-calc-inverse(-100%)}),
      );
    }

    &.pf-m-panel-left > .#{$drawer}__main > .#{$drawer}__panel {
      transform: translateX(0);
    }

    &.pf-m-panel-bottom > .#{$drawer}__main > .#{$drawer}__panel {
      transform: translate(0, -100%);
    }
  }
  // stylelint-enable

  &.pf-m-resizing {
    --#{$drawer}__panel--TransitionProperty: none;

    pointer-events: none;

    .#{$drawer}__splitter {
      pointer-events: auto;
    }
  }
}

// Header area
.#{$drawer}__section {
  flex-grow: 0;
  background-color: var(--#{$drawer}__section--BackgroundColor);

  &.pf-m-secondary {
    --#{$drawer}__section--BackgroundColor: var(--#{$drawer}__section--m-secondary--BackgroundColor);
  }

  &.pf-m-no-background {
    --#{$drawer}__section--BackgroundColor: transparent;
  }
}

// Main area
.#{$drawer}__main {
  display: flex;
  flex: 1;
  overflow: hidden;
}

// Content / panel
.#{$drawer}__content,
.#{$drawer}__panel,
.#{$drawer}__panel-main {
  display: flex;
  flex-direction: column;
  flex-shrink: 0;
  overflow: auto;
}

// Content
.#{$drawer}__content {
  z-index: var(--#{$drawer}__content--ZIndex);
  flex-basis: var(--#{$drawer}__content--FlexBasis);
  order: 0;
  background-color: var(--#{$drawer}__content--BackgroundColor);

  &.pf-m-primary {
    --#{$drawer}__content--BackgroundColor: var(--#{$drawer}__content--m-primary--BackgroundColor);
  }

  &.pf-m-secondary {
    --#{$drawer}__content--BackgroundColor: var(--#{$drawer}__content--m-secondary--BackgroundColor);
  }

  > .#{$drawer}__body {
    padding-block-start: var(--#{$drawer}__content__body--PaddingBlockStart);
    padding-block-end: var(--#{$drawer}__content__body--PaddingBlockEnd);
    padding-inline-start: var(--#{$drawer}__content__body--PaddingInlineStart);
    padding-inline-end: var(--#{$drawer}__content__body--PaddingInlineEnd);
  }
}

// Panel
.#{$drawer}__panel {
  position: relative;
  z-index: var(--#{$drawer}__panel--ZIndex);
  flex-basis: var(--#{$drawer}__panel--FlexBasis);
  row-gap: var(--#{$drawer}__panel--RowGap);
  order: 1;
  max-height: var(--#{$drawer}__panel--MaxHeight);
  overflow: auto;
  background-color: var(--#{$drawer}__panel--BackgroundColor);
  box-shadow: var(--#{$drawer}__panel--BoxShadow);
  transition-duration: var(--#{$drawer}__panel--TransitionDuration);
  transition-property: var(--#{$drawer}__panel--TransitionProperty);
  -webkit-overflow-scrolling: touch;

  &::after {
    position: absolute;
    inset-block-start: 0;
    inset-inline-start: 0;
    width: var(--#{$drawer}__panel--after--Width);
    height: 100%;
    content: "";
    background-color: var(--#{$drawer}__panel--after--BackgroundColor);
  }

  &:not(.pf-m-resizable) {
    padding-block-start: var(--#{$drawer}__panel--PaddingBlockStart);
    padding-block-end: var(--#{$drawer}__panel--PaddingBlockEnd);
  }

  &.pf-m-secondary {
    --#{$drawer}__panel--BackgroundColor: var(--#{$drawer}__panel--m-secondary--BackgroundColor);
  }

  &.pf-m-no-background {
    --#{$drawer}__panel--BackgroundColor: transparent;
  }

  @media screen and (min-width: $pf-v6-global--breakpoint--md) {
    --#{$drawer}__panel--FlexBasis:
      max(
        var(--#{$drawer}__panel--md--FlexBasis--min),
        min(var(--#{$drawer}__panel--md--FlexBasis), var(--#{$drawer}__panel--md--FlexBasis--max))
      );
  }

  @media screen and (min-width: $pf-v6-global--breakpoint--xl) {
    --#{$drawer}__panel--md--FlexBasis: var(--#{$drawer}__panel--xl--FlexBasis);

    .#{$drawer}.pf-m-panel-bottom & {
      --#{$drawer}__panel--md--FlexBasis: var(--#{$drawer}--m-panel-bottom__panel--xl--FlexBasis);
    }
  }
}

.#{$drawer}__panel,
.#{$drawer}__panel-main {
  > .#{$drawer}__body {
    padding-block-start: var(--#{$drawer}__panel__body--PaddingBlockStart);
    padding-block-end: var(--#{$drawer}__panel__body--PaddingBlockEnd);
    padding-inline-start: var(--#{$drawer}__panel__body--PaddingInlineStart);
    padding-inline-end: var(--#{$drawer}__panel__body--PaddingInlineEnd);
  }
}

.#{$drawer}__panel-main {
  flex-grow: 1;
  padding-block-start: var(--#{$drawer}__panel--PaddingBlockStart);
  padding-block-end: var(--#{$drawer}__panel--PaddingBlockEnd);
}

// Remove tab focus
@include pf-v6-animate-remove-tab-focus(".#{$drawer}__panel", var(--#{$drawer}__panel--TransitionDuration));

// Panel head
.#{$drawer}__head {
  display: grid;
  grid-template-columns: auto;
  grid-auto-columns: max-content;
  column-gap: var(--#{$drawer}__head--ColumnGap);
  padding-block-start: var(--#{$drawer}__head--PaddingBlockStart);
  padding-block-end: var(--#{$drawer}__head--PaddingBlockEnd);
  padding-inline-start: var(--#{$drawer}__head--PaddingInlineStart);
  padding-inline-end: var(--#{$drawer}__head--PaddingInlineEnd);

  > * {
    grid-column: 1;
  }
}

// Panel actions
.#{$drawer}__actions {
  display: flex;
  grid-row: 1;
  grid-column: 2;
  align-self: baseline;
  margin-block-start: var(--#{$drawer}__actions--MarginBlockStart);
  margin-inline-end: var(--#{$drawer}__actions--MarginInlineEnd);
}

// Drawer panel description
.#{$drawer}__description {
  padding-inline-start: var(--#{$drawer}__description--PaddingInlineStart);
  padding-inline-end: var(--#{$drawer}__description--PaddingInlineEnd);
}

// Modified content children
.#{$drawer}__body {
  // No padding
  &.pf-m-no-padding {
    padding: 0;
  }

  // Padding
  &.pf-m-padding {
    padding-block-start: var(--#{$drawer}__body--m-padding--PaddingBlockStart);
    padding-block-end: var(--#{$drawer}__body--m-padding--PaddingBlockEnd);
    padding-inline-start: var(--#{$drawer}__body--m-padding--PaddingInlineStart);
    padding-inline-end: var(--#{$drawer}__body--m-padding--PaddingInlineEnd);
  }

  &:not(.pf-m-no-padding) + * {
    padding-block-start: 0;
  }

  &:last-child {
    flex: 1 1;
  }
}

.#{$drawer}__splitter {
  position: relative;
  display: none;
  width: var(--#{$drawer}__splitter--Width);
  height: var(--#{$drawer}__splitter--Height);
  cursor: var(--#{$drawer}__splitter--Cursor);
  background-color: var(--#{$drawer}__splitter--BackgroundColor);

  &.pf-m-vertical {
    --#{$drawer}__splitter--Height: var(--#{$drawer}__splitter--m-vertical--Height);
    --#{$drawer}__splitter--Width: var(--#{$drawer}__splitter--m-vertical--Width);
    --#{$drawer}__splitter--Cursor: var(--#{$drawer}__splitter--m-vertical--Cursor);
    --#{$drawer}__splitter-handle--after--Width: var(--#{$drawer}__splitter--m-vertical__splitter-handle--after--Width);
    --#{$drawer}__splitter-handle--after--Height: var(--#{$drawer}__splitter--m-vertical__splitter-handle--after--Height);
    --#{$drawer}__splitter-handle--after--BorderBlockStartWidth: var(--#{$drawer}__splitter--m-vertical__splitter-handle--after--BorderBlockStartWidth);
    --#{$drawer}__splitter-handle--after--BorderInlineEndWidth: var(--#{$drawer}__splitter--m-vertical__splitter-handle--after--BorderInlineEndWidth);
    --#{$drawer}__splitter-handle--after--BorderBlockEndWidth: var(--#{$drawer}__splitter--m-vertical__splitter-handle--after--BorderBlockEndWidth);
    --#{$drawer}__splitter-handle--after--BorderInlineStartWidth: var(--#{$drawer}__splitter--m-vertical__splitter-handle--after--BorderInlineStartWidth);
  }

  &:hover,
  &:focus {
    --#{$drawer}__splitter-handle--after--BorderColor: var(--#{$drawer}__splitter--hover__splitter-handle--after--BorderColor);
  }

  &::after {
    position: absolute;
    inset-block-start: 0;
    inset-block-end: 0;
    inset-inline-start: 0;
    inset-inline-end: 0;
    content: "";
    border: solid var(--#{$drawer}__splitter--after--BorderColor);
    border-block-start-width: var(--#{$drawer}__splitter--after--BorderBlockStartWidth);
    border-block-end-width: var(--#{$drawer}__splitter--after--BorderBlockEndWidth);
    border-inline-start-width: var(--#{$drawer}__splitter--after--BorderInlineStartWidth);
    border-inline-end-width: var(--#{$drawer}__splitter--after--BorderInlineEndWidth);
  }
}

.#{$drawer}__splitter-handle {
  position: absolute;
  inset-block-start: var(--#{$drawer}__splitter-handle--InsetBlockStart);
  inset-inline-start: var(--#{$drawer}__splitter-handle--InsetInlineStart);

  @include pf-v6-bidirectional-style(
    $prop: transform,
    $ltr-val: translate(-50%, -50%),
    $rtl-val: translate(#{pf-v6-calc-inverse(-50%)}, -50%),
  );


  &::after {
    display: block;
    width: var(--#{$drawer}__splitter-handle--after--Width);
    height: var(--#{$drawer}__splitter-handle--after--Height);
    content: "";
    border-color: var(--#{$drawer}__splitter-handle--after--BorderColor);
    border-style: solid;
    border-block-start-width: var(--#{$drawer}__splitter-handle--after--BorderBlockStartWidth);
    border-block-end-width: var(--#{$drawer}__splitter-handle--after--BorderBlockEndWidth);
    border-inline-start-width: var(--#{$drawer}__splitter-handle--after--BorderInlineStartWidth);
    border-inline-end-width: var(--#{$drawer}__splitter-handle--after--BorderInlineEndWidth);
  }
}

// Layout modifications happen after md breakpoint
@media screen and (min-width: $pf-v6-global--breakpoint--md) {
  // Default
  .#{$drawer} {
    min-width: var(--#{$drawer}__panel--MinWidth);

    // stylelint-disable selector-max-class
    // Expanded
    &.pf-m-expanded > .#{$drawer}__main {
      > .#{$drawer}__panel {
        box-shadow: var(--#{$drawer}--m-expanded__panel--BoxShadow);
      }
    }

    > .#{$drawer}__main > .#{$drawer}__panel.pf-m-resizable {
      --#{$drawer}__panel--md--FlexBasis--min: var(--#{$drawer}__panel--m-resizable--md--FlexBasis--min);

      flex-direction: var(--#{$drawer}__panel--m-resizable--FlexDirection);
      min-width: var(--#{$drawer}__panel--m-resizable--MinWidth);

      &::after {
        width: 0;
        height: 0;
      }

      > .#{$drawer}__splitter {
        flex-shrink: 0;
      }

      > .#{$drawer}__panel-main {
        flex-shrink: 1;
      }
    }
  }

  // Panel left
  .#{$drawer}.pf-m-panel-left {
    --#{$drawer}--m-expanded__panel--BoxShadow: var(--#{$drawer}--m-expanded--m-panel-left__panel--BoxShadow);

    &.pf-m-inline,
    &.pf-m-static {
      > .#{$drawer}__main > .#{$drawer}__panel:not(.pf-m-no-border, .pf-m-resizable) {
        padding-inline-start: 0;
        padding-inline-end: var(--#{$drawer}--m-panel-left--m-inline__panel--PaddingInlineEnd);
      }
    }

    &.pf-m-expanded > .#{$drawer}__main > .#{$drawer}__panel {
      transform: translateX(0);
    }

    > .#{$drawer}__main > .#{$drawer}__panel::after {
      inset-inline-start: auto;
      inset-inline-end: 0;
    }

    > .#{$drawer}__main > .#{$drawer}__panel.pf-m-resizable {
      > .#{$drawer}__splitter {
        --#{$drawer}__splitter-handle--InsetInlineStart: var(--#{$drawer}--m-panel-left__splitter-handle--InsetInlineStart);

        order: 1;
      }
    }
  }

  .#{$drawer}.pf-m-panel-bottom {
    --#{$drawer}--m-expanded__panel--BoxShadow: var(--#{$drawer}--m-expanded--m-panel-bottom__panel--BoxShadow);
    --#{$drawer}__panel--MaxHeight: 100%;
    --#{$drawer}__panel--FlexBasis--min: var(--#{$drawer}--m-panel-bottom__panel--FlexBasis--min);

    min-width: auto;
    min-height: var(--#{$drawer}--m-panel-bottom__panel--md--MinHeight);

    &.pf-m-inline,
    &.pf-m-static {
      > .#{$drawer}__main > .#{$drawer}__panel:not(.pf-m-no-border, .pf-m-resizable) {
        padding-block-start: var(--#{$drawer}--m-panel-bottom--m-inline__panel--PaddingBlockStart);
        padding-inline-start: 0;
      }
    }

    > .#{$drawer}__main > .#{$drawer}__panel::after {
      inset-block-start: 0;
      inset-inline-start: auto;
      width: 100%;
      height: var(--#{$drawer}--m-panel-bottom__panel--after--Height);
    }

    > .#{$drawer}__main > .#{$drawer}__panel.pf-m-resizable {
      --#{$drawer}__panel--md--FlexBasis--min: var(--#{$drawer}--m-panel-bottom__panel--m-resizable--md--FlexBasis--min);
      --#{$drawer}__panel--m-resizable--FlexDirection: var(--#{$drawer}--m-panel-bottom__panel--m-resizable--FlexDirection);
      --#{$drawer}__panel--m-resizable--MinWidth: 0;

      min-height: var(--#{$drawer}--m-panel-bottom__panel--m-resizable--MinHeight);

      > .#{$drawer}__splitter {
        --#{$drawer}__splitter-handle--InsetBlockStart: var(--#{$drawer}--m-panel-bottom__splitter-handle--InsetBlockStart);
        --#{$drawer}__splitter--after--BorderBlockStartWidth: var(--#{$drawer}--m-panel-bottom__splitter--after--BorderBlockStartWidth);
        --#{$drawer}__splitter--after--BorderInlineEndWidth: 0;
        --#{$drawer}__splitter--after--BorderBlockEndWidth: var(--#{$drawer}--m-panel-bottom__splitter--after--BorderBlockEndWidth);
        --#{$drawer}__splitter--after--BorderInlineStartWidth: 0;
      }
    }
  }

  .#{$drawer}.pf-m-inline {
    > .#{$drawer}__main > .#{$drawer}__panel.pf-m-resizable {
      > .#{$drawer}__splitter {
        --#{$drawer}__splitter--m-vertical--Width: var(--#{$drawer}--m-inline__splitter--m-vertical--Width);
        --#{$drawer}__splitter-handle--InsetInlineStart: var(--#{$drawer}--m-inline__splitter-handle--InsetInlineStart);

        outline-offset: var(--#{$drawer}--m-inline__splitter--focus--OutlineOffset);
      }
    }

    &.pf-m-panel-bottom {
      > .#{$drawer}__main > .#{$drawer}__panel.pf-m-resizable {
        > .#{$drawer}__splitter {
          --#{$drawer}__splitter--Height: var(--#{$drawer}--m-inline--m-panel-bottom__splitter--Height);
          --#{$drawer}__splitter-handle--InsetBlockStart: var(--#{$drawer}--m-inline--m-panel-bottom__splitter-handle--InsetBlockStart);
          --#{$drawer}__splitter--after--BorderBlockStartWidth: var(--#{$drawer}--m-inline--m-panel-bottom__splitter--after--BorderBlockStartWidth);
          --#{$drawer}__splitter--after--BorderInlineEndWidth: 0;
          --#{$drawer}__splitter--after--BorderInlineStartWidth: 0;
        }
      }
    }
  }

  // Border
  .#{$drawer} > .#{$drawer}__main > .#{$drawer}__panel.pf-m-no-border,
  .#{$drawer}.pf-m-panel-left > .#{$drawer}__main > .#{$drawer}__panel.pf-m-no-border {
    --#{$drawer}--m-expanded__panel--BoxShadow: none;
  }
  // stylelint-enable

  .#{$drawer}__splitter {
    display: block;
  }
}

// Responsive width modifiers
@each $breakpoint, $breakpoint-value in $pf-v6-c-drawer--breakpoint-map--width {
  $breakpoint-name: if($breakpoint != "base", -on-#{$breakpoint}, "");

  @if $breakpoint == "base" {
    $breakpoint: "md";
  }

  @include pf-v6-apply-breakpoint($breakpoint) {
    @each $width-value in $pf-v6-c-drawer__panel--list--width {
      .#{$drawer}__panel.pf-m-width-#{$width-value}#{$breakpoint-name} {
        --#{$drawer}__panel--md--FlexBasis: #{percentage(math.div($width-value, 100))};
      }
    }
  }
}

// Responsive modifiers
@each $breakpoint, $breakpoint-value in $pf-v6-c-drawer--breakpoint-map {
  $breakpoint-name: if($breakpoint != "base", -on-#{$breakpoint}, "");

  @if $breakpoint == "base" {
    $breakpoint: "md";
  }

  @include pf-v6-apply-breakpoint($breakpoint) {
    // Drawer and inline
    .#{$drawer}.pf-m-inline#{$breakpoint-name},
    .#{$drawer}.pf-m-static#{$breakpoint-name} {
      > .#{$drawer}__main > .#{$drawer}__content {
        flex-shrink: 1;
      }

      > .#{$drawer}__main > .#{$drawer}__panel {
        --#{$drawer}--m-expanded__panel--BoxShadow: none;

        &:not(.pf-m-no-border)::after {
          background-color: var(--#{$drawer}--m-inline--m-expanded__panel--after--BackgroundColor);
        }
      }
    }

    // Drawer inline
    .#{$drawer}.pf-m-inline#{$breakpoint-name} {
      > .#{$drawer}__main > .#{$drawer}__content {
        overflow-x: auto;
      }

      > .#{$drawer}__main > .#{$drawer}__panel {
        margin-inline-start: calc(var(--#{$drawer}__panel--FlexBasis) * -1);

        @include pf-v6-bidirectional-style(
          $prop: transform,
          $ltr-val: translateX(100%),
          $rtl-val: translateX(#{pf-v6-calc-inverse(100%)}),
        );
      }

      // stylelint-disable selector-max-class, selector-max-combinators, selector-max-compound-selectors
      // Inline, expanded
      &.pf-m-expanded > .#{$drawer}__main > .#{$drawer}__panel {
        margin-inline-start: 0;
        transform: translateX(0);
      }

      > .#{$drawer}__main > .#{$drawer}__panel > .#{$drawer}__body > .#{$drawer}__head .#{$drawer}__close {
        display: unset;
      }

      // Panel left
      &.pf-m-panel-left {
        > .#{$drawer}__main > .#{$drawer}__panel {
          margin-inline-start: 0;
          margin-inline-end: calc(var(--#{$drawer}__panel--FlexBasis) * -1);

          @include pf-v6-bidirectional-style(
            $prop: transform,
            $ltr-val: translateX(-100%),
            $rtl-val: translateX(#{pf-v6-calc-inverse(-100%)}),
          );
        }

        // Inline, expanded, panel left
        &.pf-m-expanded > .#{$drawer}__main > .#{$drawer}__panel {
          margin-inline-end: 0;
          transform: translateX(0);
        }

        > .#{$drawer}__main > .#{$drawer}__panel > .#{$drawer}__body > .#{$drawer}__head .#{$drawer}__close {
          display: unset;
        }
      }

      // Panel bottom
      &.pf-m-panel-bottom {
        > .#{$drawer}__main > .#{$drawer}__panel {
          margin-block-end: calc(var(--#{$drawer}__panel--FlexBasis) * -1);
          transform: translateY(100%);
        }

        // Inline, expanded, panel left
        &.pf-m-expanded > .#{$drawer}__main > .#{$drawer}__panel {
          margin-block-end: 0;
          transform: translateY(0);
        }
      }
      // stylelint-enable
    }

    // Static
    .#{$drawer}.pf-m-static#{$breakpoint-name} {
      > .#{$drawer}__main > .#{$drawer}__panel {
        transform: translateX(0);
      }

      // stylelint-disable max-nesting-depth, selector-max-class, selector-max-combinators, selector-max-compound-selectors
      &.pf-m-panel-left {
        > .#{$drawer}__main > .#{$drawer}__panel {
          margin-inline-end: 0;
          transform: translateX(0);
        }
      }

      &.pf-m-panel-bottom {
        > .#{$drawer}__main > .#{$drawer}__panel {
          transform: translateX(0);
        }
      }

      > .#{$drawer}__main > .#{$drawer}__panel > .#{$drawer}__body > .#{$drawer}__head .#{$drawer}__close {
        display: none;
      }
      // stylelint-enable
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy