File

icon-selector/icon-selector.component.ts

Metadata

Index

Properties
Methods
Inputs
Outputs

Constructor

constructor()

Inputs

iconCategoriesToExclude
Type : string[]
Default value : []
selectedIcon
Type : SupportedIconsSuggestions
showIconClass
Type : boolean
Default value : true

Outputs

onSelect
Type : EventEmitter

Methods

filterIconsByCategoryAndSearchTerm
filterIconsByCategoryAndSearchTerm(iconCategories: DefaultIconDefinition[], selectedCategory: string, searchTerm: string)
Parameters :
Name Type Optional
iconCategories DefaultIconDefinition[] No
selectedCategory string No
searchTerm string No
Async loadIconDefinitions
loadIconDefinitions()
onCategoryFilterChanged
onCategoryFilterChanged(categoryChange: string)
Parameters :
Name Type Optional
categoryChange string No
Returns : void
onIconClicked
onIconClicked(icon: ReadonlyArray)
Parameters :
Name Type Optional
icon ReadonlyArray<string> No
Returns : void
onSearchChange
onSearchChange(searchTerm: string)
Parameters :
Name Type Optional
searchTerm string No
Returns : void

Properties

availableIconCategories$
Type : Observable<string[]>
filteredIcons$
Type : Observable<DefaultIconDefinition[]>
icons$
Type : Observable<DefaultIconDefinition[]>
searchTerm$
Type : unknown
Default value : new BehaviorSubject('')
selectedIconCategory$
Type : unknown
Default value : new BehaviorSubject<string>(allIconCategory)
<div class="p-l-24 p-r-24 p-t-8 p-b-8 separator-bottom">
  <div class="row d-flex-sm">
    <div class="col-sm-6 m-b-8">
      <div
        class="input-group-search input-group"
        style="width: auto"
      >
        <input
          class="form-control"
          id="filter-icons"
          placeholder="{{ 'Type to filter icons…' | translate }}"
          type="search"
          [ngModel]="searchTerm$ | async"
          (ngModelChange)="onSearchChange($event)"
        />
        @if (searchTerm$ | async) {
          <span
            class="input-group-addon pointer"
            (click)="onSearchChange('')"
          >
            <i c8yIcon="times"></i>
          </span>
        } @else {
          <span class="input-group-addon">
            <i c8yIcon="search"></i>
          </span>
        }
      </div>
    </div>
    <div class="col-sm-6 m-b-8 text-right">
      <div class="d-inline-flex a-i-center text-left">
        <label
          class="m-b-0 m-r-8 flex-no-shrink"
          translate
        >
          Filter by type
        </label>
        <div class="c8y-select-wrapper">
          <select
            class="form-control"
            id="exampleSelect"
            [ngModel]="selectedIconCategory$ | async"
            (ngModelChange)="onCategoryFilterChanged($event)"
          >
            @for (category of availableIconCategories$ | async; track category) {
              <option [ngValue]="category">
                {{ category | translate }}
              </option>
            }
          </select>
          <span></span>
        </div>
      </div>
    </div>
  </div>
</div>
<div class="modal-inner-scroll">
  <div
    class="modal-body"
    style="height: calc(100vh - 293px)"
  >
    <div class="dtm-icon-grid">
      @for (iconDefinition of filteredIcons$ | async; track iconDefinition) {
        <div class="d-contents">
          <div class="legend form-block center grid__col--fullspan">
            {{ iconDefinition.label | translate }}
          </div>

          @for (icon of iconDefinition.icons; track icon) {
            <div class="d-contents">
              <div
                class="dtm-icon-grid__item"
                [ngClass]="{
                  'dtm-icon-grid__item--selected': selectedIcon && icon[0] === selectedIcon
                }"
              >
                <button
                  class="dtm-icon-grid__btn"
                  [title]="icon[0] | iconName"
                  (click)="onIconClicked(icon)"
                >
                  <i
                    class="d-block icon-40 c8y-icon-duocolor"
                    [c8yIcon]="icon[0]"
                  ></i>
                  @if (showIconClass) {
                    <small class="text-break-word">
                      {{ icon[0] | iconName }}
                    </small>
                  }
                </button>
              </div>
            </div>
          }
        </div>
      } @empty {
        <c8y-ui-empty-state
          icon="search"
          style="grid-column: 1 / 3"
          [title]="'No icons found' | translate"
          [subtitle]="
            'Try adjusting your search or filter to find what you\'re looking for.' | translate
          "
          [horizontal]="true"
        ></c8y-ui-empty-state>
      }
    </div>
  </div>
</div>

results matching ""

    No results matching ""