mirror of
https://github.com/bitwarden/browser
synced 2025-12-18 01:03:35 +00:00
* [EC-547] feat: mostly migrate to new CL dialogs * [EC-547] feat: move dialog to separate module * [EC-547] chore: rename to user dialog component * [CL-547] feat: replace footer buttons with CL buttons * [EC-547] chore: move nested checkbox component into dialog module * [EC-547] feat: migrate to async actions and remove form promise * [EC-547] feat: add tab layout * [EC-547] fix: dialog vertical overflow We were using `max-height: 100vh` and `margin: 1rem 0` on the same element which meant that our full height was 100vh + 1rem which pushed the dialog outside of the screen. * [EC-547] feat: change user to member in header * [EC-547] feat: add name to header * [EC-547] feat: add ability to specify initial tab * [EC-547] fix: copy pasta in comments * [EC-547] chore: rename user to member dialog * [EC-547] chore: simplify switch statement
33 lines
843 B
TypeScript
33 lines
843 B
TypeScript
import { Component, EventEmitter, Input, Output } from "@angular/core";
|
|
|
|
import { Utils } from "@bitwarden/common/misc/utils";
|
|
|
|
@Component({
|
|
selector: "app-nested-checkbox",
|
|
templateUrl: "nested-checkbox.component.html",
|
|
})
|
|
export class NestedCheckboxComponent {
|
|
@Input() parentId: string;
|
|
@Input() checkboxes: { id: string; get: () => boolean; set: (v: boolean) => void }[];
|
|
@Output() onSavedUser = new EventEmitter();
|
|
@Output() onDeletedUser = new EventEmitter();
|
|
|
|
get parentIndeterminate() {
|
|
return !this.parentChecked && this.checkboxes.some((c) => c.get());
|
|
}
|
|
|
|
get parentChecked() {
|
|
return this.checkboxes.every((c) => c.get());
|
|
}
|
|
|
|
set parentChecked(value: boolean) {
|
|
this.checkboxes.forEach((c) => {
|
|
c.set(value);
|
|
});
|
|
}
|
|
|
|
pascalize(s: string) {
|
|
return Utils.camelToPascalCase(s);
|
|
}
|
|
}
|