Панель расширения мата распространяется на другие элементы html

У меня есть панель расширения коврика, которую я хотел бы распространить на элемент под ней, а не просто переместить этот элемент вниз. Я попытался настроить z-индекс элемента расширения мата, но это не сработало. Я не видел ничего в документации angular material docs/github, что предполагало бы, что это можно сделать. Кто-нибудь делал это или знает, как этого можно достичь?

Любая помощь/советы/предложения будут высоко оценены.

мое расширение

ОБНОВЛЕНИЕ: желаемое решение должно выглядеть примерно так. Он может содержать несколько элементов (выбор мата, выбор даты и т. д.).

введите описание изображения здесь


person Brian Stanley    schedule 31.08.2018    source источник
comment
Рассматривали ли вы возможность добавления пользовательских классов и объявлений CSS или их перезаписи?   -  person Die Webagenten    schedule 31.08.2018
comment
Почему вы используете панель расширения коврика для чего-то такого маленького? Просто создайте свой собственный элемент. Панель расширения предназначена для работы в качестве гармошки. А аккордеон толкает вещи вниз :)   -  person Vinod Bhavnani    schedule 31.08.2018
comment
А точнее использовать мат меню   -  person Vinod Bhavnani    schedule 31.08.2018
comment
Просто используйте div, покажите его при необходимости с помощью *ngIf, вы также можете анимировать его. Скажите, если вам нужна помощь, я могу привести пример   -  person wFitz    schedule 31.08.2018
comment
@wFitz, какие анимационные фрагменты потребуются, чтобы получить такое же расширение, как расширение мата?   -  person Brian Stanley    schedule 31.08.2018
comment
См.: stackblitz.com/edit/angular-rb5vmu последний пример Animated Div должен дать вам отправная точка   -  person wFitz    schedule 01.09.2018


Ответы (1)


Большое спасибо @wixFitz за то, что направил меня в правильном направлении, но вот конечный продукт. введите описание изображения здесь

animation.html:

      <div class="report-filter">
    <button 
      mat-raised-button 
      class="filter-button"
      type="button"
      (click)="showDiv()"
      [ngClass]="{'menu-button-active': filterActive}">
      {{ 'TOOLTIP.filter' | translate }}
      <mat-icon>filter_list</mat-icon>
    </button>
    <div [@divState]="divState" class="menu mat-elevation-z8">
      <button
        class="center"
        mat-button
        (click)="closeMe()"
        mat-icon-button>
        <mat-icon>close</mat-icon>
      </button>
      <div class="search-brands">
        <mat-form-field>
          <mat-select placeholder="Brands" [(value)]="selectedBrand" panelClass="brandSelectDropdown">
            <mat-option (click)="resetBrand()" value="">none</mat-option>
            <mat-option *ngFor="let brand of brands" (click)="setBrand(brand.brand)" value="brand.brand">{{ brand.brand }}</mat-option>
          </mat-select>
        </mat-form-field>
      </div>
    </div>
  </div>

animation.scss:

.report-filter {
 display: flex;
 .filter-button {
 margin: 1rem 0;
}

}

.menu {
 position: absolute;
 top: 248px;
 right: 23px;
 background-color: $grey600;
 border: 1px solid gray;
 border-radius: 4px;
 z-index: 2;
 .search-brands {
  margin: 2rem 1rem;
  border: 1px solid black;
  background-color: $grey300;
  mat-form-field {
   width: 95%;
   margin: 0rem .5rem;
  }
}
button {
 mat-icon {
  color: white;
  margin: 0 0 0 0;
  }
 }
}
.menu-button-active {
 background-color: $grey600;
 color: white;
}

animation.ts: в объекте @Component

  animations: [
   trigger('divState', [
    state('show', style({ height: '100vh', width: '20vw' })),
    state('hide', style({ height: '0vh', display: 'none'})),
    transition('show => hide', animate('200ms ease-out')),
    transition('hide => show', animate('300ms ease-in'))
   ])
  ]

глобальная переменная

  divState: string = "hide";

открыть и закрыть функции

  showDiv(){
   this.divState = (this.divState == 'hide') ? 'show' : 'hide';
   this.filterActive = !this.filterActive
   this.getBrands();
  }

  closeMe(){
   this.divState = 'hide';
   this.filterActive = !this.filterActive
  }
person Brian Stanley    schedule 04.09.2018