@ngx-performance-ui/ui
Version:
Ngx Performance UI - UI
122 lines • 9.15 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { ChangeDetectionStrategy, Component, ViewEncapsulation, Input, Output, EventEmitter, forwardRef, } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import compare from 'just-compare';
import { AbstractNgModelComponent } from '@ngx-performance-ui/core';
/**
* @record
*/
export function SelectOption() { }
if (false) {
/** @type {?|undefined} */
SelectOption.prototype.label;
/** @type {?} */
SelectOption.prototype.value;
}
export class SelectComponent extends AbstractNgModelComponent {
constructor() {
super(...arguments);
this.options = [];
this.selectClass = '';
this.compareFn = compare;
this.select = new EventEmitter();
}
/**
* @param {?} value
* @return {?}
*/
onSelect(value) {
this.select.emit(value);
}
/**
* @param {?} option
* @return {?}
*/
getOptionLabel(option) {
const { label, value } = (/** @type {?} */ (option));
return label || (typeof value === 'string' || typeof value === 'number' ? String(value) : String(option));
}
/**
* @param {?} _
* @param {?} option
* @return {?}
*/
trackByFn(_, option) {
const { label, value } = (/** @type {?} */ (option));
if (value === undefined || value instanceof Object) {
return label || option;
}
return value;
}
/**
* @param {?} option
* @return {?}
*/
getOptionValue(option) {
const { value } = (/** @type {?} */ (option));
if (value === undefined)
return option;
return value;
}
}
SelectComponent.decorators = [
{ type: Component, args: [{
selector: 'p-select',
template: `
<label [attr.for]="selectId">{{ label }}</label>
<select
class="custom-select {{ selectClass }}"
[(ngModel)]="value"
[attr.id]="selectId"
[compareWith]="compareFn"
(ngModelChange)="onSelect($event)"
>
<option [ngValue]="undefined" *ngIf="placeholder">{{ placeholder }}</option>
<option *ngFor="let option of options; trackBy: trackByFn" [ngValue]="getOptionValue(option)"
>{{ getOptionLabel(option) }}
</option>
</select>
`,
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef((/**
* @return {?}
*/
() => SelectComponent)),
multi: true,
},
],
changeDetection: ChangeDetectionStrategy.OnPush,
encapsulation: ViewEncapsulation.None
}] }
];
SelectComponent.propDecorators = {
options: [{ type: Input }],
selectId: [{ type: Input }],
selectClass: [{ type: Input }],
compareFn: [{ type: Input }],
label: [{ type: Input }],
placeholder: [{ type: Input }],
select: [{ type: Output }]
};
if (false) {
/** @type {?} */
SelectComponent.prototype.options;
/** @type {?} */
SelectComponent.prototype.selectId;
/** @type {?} */
SelectComponent.prototype.selectClass;
/** @type {?} */
SelectComponent.prototype.compareFn;
/** @type {?} */
SelectComponent.prototype.label;
/** @type {?} */
SelectComponent.prototype.placeholder;
/** @type {?} */
SelectComponent.prototype.select;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3gtcGVyZm9ybWFuY2UtdWkvdWkvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLFVBQVUsR0FDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFDbkMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFFcEUsa0NBR0M7OztJQUZDLDZCQUFlOztJQUNmLDZCQUFXOztBQWdDYixNQUFNLE9BQU8sZUFBZ0IsU0FBUSx3QkFBd0I7SUEzQjdEOztRQTZCRSxZQUFPLEdBQXVCLEVBQUUsQ0FBQztRQU1qQyxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUd6QixjQUFTLEdBQUcsT0FBTyxDQUFDO1FBU3BCLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBNEJuQyxDQUFDOzs7OztJQTFCQyxRQUFRLENBQUMsS0FBSztRQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7Ozs7O0lBRUQsY0FBYyxDQUFDLE1BQXdCO2NBQy9CLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLG1CQUFBLE1BQU0sRUFBZ0I7UUFFL0MsT0FBTyxLQUFLLElBQUksQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzVHLENBQUM7Ozs7OztJQUVELFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBd0I7Y0FDN0IsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsbUJBQUEsTUFBTSxFQUFnQjtRQUMvQyxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxZQUFZLE1BQU0sRUFBRTtZQUNsRCxPQUFPLEtBQUssSUFBSSxNQUFNLENBQUM7U0FDeEI7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Ozs7O0lBRUQsY0FBYyxDQUFDLE1BQXdCO2NBQy9CLEVBQUUsS0FBSyxFQUFFLEdBQUcsbUJBQUEsTUFBTSxFQUFnQjtRQUV4QyxJQUFJLEtBQUssS0FBSyxTQUFTO1lBQUUsT0FBTyxNQUFNLENBQUM7UUFFdkMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs7WUExRUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxVQUFVO2dCQUNwQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7O0dBY1Q7Z0JBQ0QsU0FBUyxFQUFFO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVOzs7d0JBQUMsR0FBRyxFQUFFLENBQUMsZUFBZSxFQUFDO3dCQUM5QyxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjtnQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtnQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7OztzQkFFRSxLQUFLO3VCQUdMLEtBQUs7MEJBR0wsS0FBSzt3QkFHTCxLQUFLO29CQUdMLEtBQUs7MEJBR0wsS0FBSztxQkFHTCxNQUFNOzs7O0lBbEJQLGtDQUNpQzs7SUFFakMsbUNBQ2lCOztJQUVqQixzQ0FDeUI7O0lBRXpCLG9DQUNvQjs7SUFFcEIsZ0NBQ2M7O0lBRWQsc0NBQ29COztJQUVwQixpQ0FDaUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IGNvbXBhcmUgZnJvbSAnanVzdC1jb21wYXJlJztcbmltcG9ydCB7IEFic3RyYWN0TmdNb2RlbENvbXBvbmVudCB9IGZyb20gJ0BuZ3gtcGVyZm9ybWFuY2UtdWkvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0T3B0aW9uIHtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIHZhbHVlOiBhbnk7XG59XG5cbmV4cG9ydCB0eXBlIFNlbGVjdExpc3RPcHRpb24gPSBTZWxlY3RPcHRpb24gfCBzdHJpbmcgfCBudW1iZXI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Atc2VsZWN0JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bGFiZWwgW2F0dHIuZm9yXT1cInNlbGVjdElkXCI+e3sgbGFiZWwgfX08L2xhYmVsPlxuICAgIDxzZWxlY3RcbiAgICAgIGNsYXNzPVwiY3VzdG9tLXNlbGVjdCB7eyBzZWxlY3RDbGFzcyB9fVwiXG4gICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICAgIFthdHRyLmlkXT1cInNlbGVjdElkXCJcbiAgICAgIFtjb21wYXJlV2l0aF09XCJjb21wYXJlRm5cIlxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWxlY3QoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJ1bmRlZmluZWRcIiAqbmdJZj1cInBsYWNlaG9sZGVyXCI+e3sgcGxhY2Vob2xkZXIgfX08L29wdGlvbj5cbiAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zOyB0cmFja0J5OiB0cmFja0J5Rm5cIiBbbmdWYWx1ZV09XCJnZXRPcHRpb25WYWx1ZShvcHRpb24pXCJcbiAgICAgICAgPnt7IGdldE9wdGlvbkxhYmVsKG9wdGlvbikgfX1cbiAgICAgIDwvb3B0aW9uPlxuICAgIDwvc2VsZWN0PlxuICBgLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNlbGVjdENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3ROZ01vZGVsQ29tcG9uZW50IHtcbiAgQElucHV0KClcbiAgb3B0aW9uczogU2VsZWN0TGlzdE9wdGlvbltdID0gW107XG5cbiAgQElucHV0KClcbiAgc2VsZWN0SWQ6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBzZWxlY3RDbGFzczogc3RyaW5nID0gJyc7XG5cbiAgQElucHV0KClcbiAgY29tcGFyZUZuID0gY29tcGFyZTtcblxuICBASW5wdXQoKVxuICBsYWJlbDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgQE91dHB1dCgpXG4gIHNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIG9uU2VsZWN0KHZhbHVlKSB7XG4gICAgdGhpcy5zZWxlY3QuZW1pdCh2YWx1ZSk7XG4gIH1cblxuICBnZXRPcHRpb25MYWJlbChvcHRpb246IFNlbGVjdExpc3RPcHRpb24pOiBzdHJpbmcge1xuICAgIGNvbnN0IHsgbGFiZWwsIHZhbHVlIH0gPSBvcHRpb24gYXMgU2VsZWN0T3B0aW9uO1xuXG4gICAgcmV0dXJuIGxhYmVsIHx8ICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgPyBTdHJpbmcodmFsdWUpIDogU3RyaW5nKG9wdGlvbikpO1xuICB9XG5cbiAgdHJhY2tCeUZuKF8sIG9wdGlvbjogU2VsZWN0TGlzdE9wdGlvbikge1xuICAgIGNvbnN0IHsgbGFiZWwsIHZhbHVlIH0gPSBvcHRpb24gYXMgU2VsZWN0T3B0aW9uO1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICByZXR1cm4gbGFiZWwgfHwgb3B0aW9uO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIGdldE9wdGlvblZhbHVlKG9wdGlvbjogU2VsZWN0TGlzdE9wdGlvbik6IGFueSB7XG4gICAgY29uc3QgeyB2YWx1ZSB9ID0gb3B0aW9uIGFzIFNlbGVjdE9wdGlvbjtcblxuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gb3B0aW9uO1xuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59XG4iXX0=