добавлять и свертывать вложенный список в angular с собственным css - PullRequest
0 голосов
/ 14 июля 2020

У меня есть два списка, в зависимости друг от друга, я хочу показать элемент вложенного списка в зависимости от выбранного элемента из первого. хочу сделать коллапс с родным css в angular. прямо сейчас происходит следующее: когда я щелкаю где-нибудь в интерфейсе, отображается только первый список; у меня есть этот html код:

<div>
  <ng-container *ngFor="let agence of agences">
    <input id="collapsible" class="toggle" type="checkbox">
    <span for="collapsible" class="lbl-toggle"> {{ agence.label }} </span>
    <div class="collapsible-content" *ngFor="let affectedUserId of agence.userList">
      <plmc-adviser  class="content-inner"[affectedUserId]="affectedUserId"></plmc-adviser>
    </div>
  </ng-container>
</div>

и этот css:

.wrap-collabsible {
  margin-bottom: 1.2rem 0;
}

input[type='checkbox'] {
  display: none;
}

.lbl-toggle {
  display: block;

  font-weight: bold;
  font-family: monospace;
  font-size: 1.2rem;
  text-transform: uppercase;
  text-align: center;

  padding: 1rem;

  color: #A77B0E;
  background: #FAE042;

  cursor: pointer;

  border-radius: 7px;
  transition: all 0.25s ease-out;
}

.lbl-toggle:hover {
  color: #7C5A0B;
}

.lbl-toggle::before {
  content: ' ';
  display: inline-block;

  border-top: 5px solid transparent;
  border-bottom: 5px solid transparent;
  border-left: 5px solid currentColor;
  vertical-align: middle;
  margin-right: .7rem;
  transform: translateY(-2px);

  transition: transform .2s ease-out;
}

.toggle:checked + .lbl-toggle::before {
  transform: rotate(90deg) translateX(-3px);
}

.collapsible-content {
  max-height: 0px;
  overflow: hidden;
  transition: max-height .25s ease-in-out;
}

.toggle:checked + .lbl-toggle + .collapsible-content {
  max-height: 100vh;
}

.toggle:checked + .lbl-toggle {
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}

.collapsible-content .content-inner {
  background: rgba(250, 224, 66, .2);
  border-bottom: 1px solid rgba(250, 224, 66, .45);
  border-bottom-left-radius: 7px;
  border-bottom-right-radius: 7px;
  padding: .5rem 1rem;
}
...