
Product
Socket Brings Supply Chain Security to skills.sh
Socket is now scanning AI agent skills across multiple languages and ecosystems, detecting malicious behavior before developers install, starting with skills.sh's 60,000+ skills.
An Angular select/dropdown accessible component
Install frontal from npm:
npm install frontal
Import the FrontalModule:
@NgModule({
declarations: [
...
],
imports: [
...
FrontalModule,
],
})
export class AppModule {}
Use the frontal component and directives:
<frontal [itemToString]="heroToString">
<ng-template let-value="inputValue" let-isOpen="isOpen" let-highlightedIndex="highlightedIndex"
let-selectedItem="selectedItem">
<label frontalLabel>Select your hero:</label>
<input type="text" frontalInput/>
<ul *ngIf="isOpen" frontalList>
<li *ngFor="let hero of filteredHeroes(value); let index=index;" frontalItem
[value]="hero" [class.highlight]="highlightedIndex === index">
{{ hero.name }}
</li>
</ul>
<div *ngIf="isOpen && filteredHeroes(value).length === 0">
No heroes found...
</div>
<h4>Selected hero:</h4>
<pre>{{ selectedItem | json }}</pre>
</ng-template>
</frontal>
The frontal component is the container.
itemToStringUsed for converting the selected object to a string.
Optional. Default:
(value: any) => value
isOpenThe initial isOpen value,
Optional. Default:
false
reducerFor each action frontal will dispatch the current state with the dispatched action and the changes that will apply on the state.
Based on this it's possible to modify the changes to fit your own needs. These changes will then be applied to frontal's state.
The actions can be found at actions.ts
Optional. Default:
({ state: State; action: Action; changes: Partial<State> }) => Partial<State>
changeEvent that is fired whenever the inputValue changes. The payload ($event) will be the inputValue.
selectEvent that is fired whenever the selectedItem changes. The payload ($event) will be the selectedItem.
idThe unique id of a frontal component.
selectedItemThe selected item.
default:
null
highlightedIndexThe highlighted index.
default:
null
highlightedItemThe highlighted item.
default:
null
inputValueThe input value.
default:
''
inputTextThe input text as shown in the input.
default:
''
isOpenDecides if the menu is open or closed. Based on this frontal decides how to handle some actions or the value of some ARIA attributes. For example is the isOpen is false, the input keydown events wont be handled.
default:
false
itemCountThe number of frontalItems in the list.
default:
0
frontalInput can be used as a directive to mark the input control. This will set the ARIA attributes as well as the id.
frontalButton can be used as a directive to mark the toggle control. This will set the ARIA attributes as well as the id.
frontalLabel can be used as a directive to mark the label. This will set the for attribute as well as the id.
frontalList can be used as a directive to mark the list. This will set the ARIA attributes as well as the id.
frontalItem can be used as a directive to mark a list item. This will set the ARIA attributes as well as the id.
valueThe value of the list item.
Required. Any.
A couple of implementations can be found on StackBlitz.
By taking in all this information, I wondered how this would look like in Angular.
MIT
FAQs
An Angular select/dropdown component
The npm package frontal receives a total of 6 weekly downloads. As such, frontal popularity was classified as not popular.
We found that frontal demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Socket is now scanning AI agent skills across multiple languages and ecosystems, detecting malicious behavior before developers install, starting with skills.sh's 60,000+ skills.

Product
Socket now supports PHP with full Composer and Packagist integration, enabling developers to search packages, generate SBOMs, and protect their PHP dependencies from supply chain threats.

Security News
An AI agent is merging PRs into major OSS projects and cold-emailing maintainers to drum up more work.