File

libs/acl/angular/src/lib/policy-editor/presets/presets.component.ts

Metadata

Index

Properties
Methods
Inputs
Outputs

Inputs

presets
Type : PolicyPreset[]
Default value : PRESETS

Outputs

presetSelected
Type : EventEmitter

Methods

handleSelection
handleSelection(event: Event)
Parameters :
Name Type Optional
event Event No
Returns : void

Properties

selectControl
Default value : new UntypedFormControl('DEFAULT')
import { Component, EventEmitter, Input, Output } from '@angular/core';
import { UntypedFormControl } from '@angular/forms';

export interface PolicyPreset {
  name: string;
  content: string;
}

const PRESETS: PolicyPreset[] = [
  {
    name: 'Allow All',
    content: `
      *,,view,allow
      *,,edit,allow
    `
  },
  {
    name: 'Read Only',
    content: `
      *,,view,allow
      *,,edit,deny
    `
  },
  {
    name: 'Deny All',
    content: `
      *,,view,deny
      *,,edit,deny
    `
  }
];
@Component({
  // eslint-disable-next-line @angular-eslint/component-selector
  selector: 'presets',
  templateUrl: './presets.component.html',
  styleUrls: ['./presets.component.scss'],
  standalone: false
})
export class PresetsComponent {
  @Input() presets: PolicyPreset[] = PRESETS;
  @Output() presetSelected = new EventEmitter();
  selectControl = new UntypedFormControl('DEFAULT');

  handleSelection(event: Event) {
    event.preventDefault();
    event.stopPropagation();

    const content = (event.target as HTMLSelectElement).value;
    (event.target as HTMLSelectElement).selectedIndex = 0;

    if (content !== 'DEFAULT') {
      this.presetSelected.emit(content);
    }
  }
}
<select class="inspector-select" (change)="handleSelection($event)" [formControl]="selectControl">
  <option [selected]="selectControl.value === 'DEFAULT'" hidden value="DEFAULT">
    Select Preset
  </option>
  <option
    *ngFor="let preset of presets"
    [value]="preset.content"
    [selected]="selectControl.value === preset.content"
  >
    {{ preset.name }}
  </option>
</select>

./presets.component.scss

@use '../../inspector.shared' as *;

:host {
  display: inline-block;
}
Legend
Html element
Component
Html element with directive

results matching ""

    No results matching ""