Select
cf-select
Input component is based on Angular Material select and has such extended options:
options filter;
notification;
innerHtml for option text.
Usage
app.html
<h3>{{title}}:</h3>
<cf-select [properties]="myFruits" [required]="isRequired" [display]="isVisible" [disable]="isDisable" (cfOnOpen)="log('On open event')" (cfOnChange)="log('On change event')" (cfOnClose)="log('On close event')">
</cf-select>
<div style="text-align: left">
<h4>List of CF Demo Select 1 events:</h4>
<div *ngFor="let selectEvent of selectEvents; let i = index">{{ i + ': ' + selectEvent }}</div>
</div>
<h3>{{title2}}:</h3>
<div>
<cf-select [properties]="myAccounts" [notification]="myNotifications"></cf-select>
<cf-button md-raised-button [properties]="sender" (click)="sendMessage()"></cf-button>
</div>
<cf-select [properties]="myAccounts"></cf-select>
app.ts
title: string = "CF Demo Select 1 (with filter)";
title2: string = "CF Demo Select 1 (with HTML options)";
isVisible: Boolean = true;
isDisable: Boolean = false;
isRequired: Boolean = true;
selectEvents: Array<any> = [];
log(ev): void { this.selectEvents.push(ev); }
myFruits = new SelectModel ({
placeholder: 'Selected fruit is: ',
items: [
{itemValue: 'apl', itemLabel: 'Apple'},
{itemValue: 'ban', itemLabel: 'Banana'},
{itemValue: 'wtm', itemLabel: 'Watermelon'},
{itemValue: 'per', itemLabel: 'Pear'},
{itemValue: 'pec', itemLabel: 'Peach'},
{itemValue: 'org', itemLabel: 'Orange'},
{itemValue: 'man', itemLabel: 'Mango'},
{itemValue: 'gra', itemLabel: 'Grapes'},
{itemValue: 'lim', itemLabel: 'Lime'},
{itemValue: 'lem', itemLabel: 'Lemon'}
],
selected: '',
showFilter: true
});
myCurrency: string = 'usd';
myAccounts = new SelectModel ({
placeholder: 'Select currency: ',
items: [
{itemValue: 'usd', itemLabel: '<b style="color: #4caf50"><span style="margin-right: 8px" class="fa fa-usd"></span>USD</b>'},
{itemValue: 'eur', itemLabel: '<b style="color: #309be3"><span style="margin-right: 8px" class="fa fa-eur"></span>EURO</b>'},
{itemValue: 'gbp', itemLabel: '<b style="color: #7a73a9"><span style="margin-right: 8px" class="fa fa-gbp"></span>GBP</b>'}
],
selected: this.myCurrency,
showFilter: false
});
letters = 0;
myNotifications: NotificationModel = {
value: this.letters
};
sender = new ButtonModel({
label: "Send mail",
color: {
foreground: "",
background: "primary"
},
icon: null,
icon_position:"right"
});
sendMessage() { ++this.myNotifications.value; }
app.scss
:host {
text-align: center;
display: flex;
flex-direction: column;
}
cf-select {
margin: 20px;
}
Select input properties
Attr
Type
Details
items
SelectItemModel[]
It is array with option items json objects
selected
string
It means that component must have some selected option and it is value of option property itemLabel
placeholder
string
It is Select component placeholder text
showFilter
boolean
It is property to show/hide filter
display
boolean
To show / hide component
disable
boolean
To enable / disable component
required
boolean
If component is required
Select option input properties
Attr
Type
Details
itemValue
string
It is name of item property to be used as md-option value
itemLabel
string
It is name of item property to be used as md-option display text
Select styling properties
Attr
Type
Dateils
container
StylingModel
Styling for the container
select
StylingModel
Styling for the md-select itself
filter
StylingModel
Styling for the filter md-input-container
options
StylingModel
Styling for the md-options
Select output properties
Attr
Details
cfOnOpen
Fired when options was opened
cfOnChange
Fired when selected value was changed
cfOnClose
Fired when options was closed
Last updated