@nebular/theme
Version:
@nebular/theme
586 lines (585 loc) • 22 kB
TypeScript
import { AfterContentInit, AfterViewInit, ChangeDetectorRef, ComponentRef, ElementRef, EventEmitter, OnDestroy, QueryList } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { NbAdjustableConnectedPositionStrategy, NbPosition, NbPositionBuilderService } from '../cdk/overlay/overlay-position';
import { NbOverlayRef, NbPortalDirective, NbScrollStrategy } from '../cdk/overlay/mapping';
import { NbOverlayService } from '../cdk/overlay/overlay-service';
import { NbTriggerStrategy, NbTriggerStrategyBuilderService } from '../cdk/overlay/overlay-trigger';
import { NbFocusKeyManager } from '../cdk/a11y/focus-key-manager';
import { NbComponentSize } from '../component-size';
import { NbComponentShape } from '../component-shape';
import { NbComponentStatus } from '../component-status';
import { NbOptionComponent } from './option.component';
export declare type NbSelectAppearance = 'outline' | 'filled' | 'hero';
export declare class NbSelectLabelComponent {
}
/**
* The `NbSelectComponent` provides a capability to select one of the passed items.
*
* @stacked-example(Showcase, select/select-showcase.component)
*
* ### Installation
*
* Import `NbSelectModule` to your feature module.
* ```ts
* @NgModule({
* imports: [
* // ...
* NbSelectModule,
* ],
* })
* export class PageModule { }
* ```
* ### Usage
*
* If you want to use it as the multi-select control you have to mark it as `multiple`.
* In this case, `nb-select` will work only with arrays - accept arrays and propagate arrays.
*
* @stacked-example(Multiple, select/select-multiple.component)
*
* Items without values will clean the selection. Both `null` and `undefined` values will also clean the selection.
*
* @stacked-example(Clean selection, select/select-clean.component)
*
* Select may be bounded using `selected` input:
*
* ```html
* <nb-select [(selected)]="selected"></nb-selected>
* ```
*
* Or you can bind control with form controls or ngModel:
*
* @stacked-example(Select form binding, select/select-form.component)
*
* Options in the select may be grouped using `nb-option-group` component.
*
* @stacked-example(Grouping, select/select-groups.component)
*
* Select may have a placeholder that will be shown when nothing selected:
*
* @stacked-example(Placeholder, select/select-placeholder.component)
*
* You can disable select, options and whole groups.
*
* @stacked-example(Disabled select, select/select-disabled.component)
*
* Also, the custom label may be provided in select.
* This custom label will be used for instead placeholder when something selected.
*
* @stacked-example(Custom label, select/select-label.component)
*
* Default `nb-select` size is `medium` and status color is `primary`.
* Select is available in multiple colors using `status` property:
*
* @stacked-example(Select statuses, select/select-status.component)
*
* There are five select sizes:
*
* @stacked-example(Select sizes, select/select-sizes.component)
*
* And two additional style types - `filled`:
*
* @stacked-example(Filled select, select/select-filled.component)
*
* and `hero`:
*
* @stacked-example(Select colors, select/select-hero.component)
*
* Select is available in different shapes, that could be combined with the other properties:
*
* @stacked-example(Select shapes, select/select-shapes.component)
*
* @additional-example(Interactive, select/select-interactive.component)
*
* @styles
*
* select-cursor:
* select-disabled-cursor:
* select-min-width:
* select-options-list-max-height:
* select-options-list-shadow:
* select-options-list-border-style:
* select-options-list-border-width:
* select-outline-width:
* select-outline-color:
* select-text-font-family:
* select-text-font-weight:
* select-placeholder-text-font-weight:
* select-option-background-color:
* select-option-text-color:
* select-option-selected-background-color:
* select-option-selected-text-color:
* select-option-focus-background-color:
* select-option-focus-text-color:
* select-option-hover-background-color:
* select-option-hover-text-color:
* select-option-disabled-background-color:
* select-option-disabled-text-color:
* select-tiny-text-font-size:
* select-tiny-text-line-height:
* select-tiny-max-width:
* select-small-text-font-size:
* select-small-text-line-height:
* select-small-max-width:
* select-medium-text-font-size:
* select-medium-text-line-height:
* select-medium-max-width:
* select-large-text-font-size:
* select-large-text-line-height:
* select-large-max-width:
* select-giant-text-font-size:
* select-giant-text-line-height:
* select-giant-max-width:
* select-rectangle-border-radius:
* select-semi-round-border-radius:
* select-round-border-radius:
* select-outline-background-color:
* select-outline-border-color:
* select-outline-border-style:
* select-outline-border-width:
* select-outline-icon-color:
* select-outline-text-color:
* select-outline-placeholder-text-color:
* select-outline-focus-border-color:
* select-outline-hover-border-color:
* select-outline-disabled-background-color:
* select-outline-disabled-border-color:
* select-outline-disabled-icon-color:
* select-outline-disabled-text-color:
* select-outline-tiny-padding:
* select-outline-small-padding:
* select-outline-medium-padding:
* select-outline-large-padding:
* select-outline-giant-padding:
* select-outline-primary-border-color:
* select-outline-primary-focus-border-color:
* select-outline-primary-hover-border-color:
* select-outline-primary-disabled-border-color:
* select-outline-success-border-color:
* select-outline-success-focus-border-color:
* select-outline-success-hover-border-color:
* select-outline-success-disabled-border-color:
* select-outline-info-border-color:
* select-outline-info-focus-border-color:
* select-outline-info-hover-border-color:
* select-outline-info-disabled-border-color:
* select-outline-warning-border-color:
* select-outline-warning-focus-border-color:
* select-outline-warning-hover-border-color:
* select-outline-warning-disabled-border-color:
* select-outline-danger-border-color:
* select-outline-danger-focus-border-color:
* select-outline-danger-hover-border-color:
* select-outline-danger-disabled-border-color:
* select-option-outline-tiny-padding:
* select-option-outline-small-padding:
* select-option-outline-medium-padding:
* select-option-outline-large-padding:
* select-option-outline-giant-padding:
* select-open-outline-border-color:
* select-outline-adjacent-border-color:
* select-outline-adjacent-border-style:
* select-outline-adjacent-border-width:
* select-outline-primary-adjacent-border-color:
* select-outline-success-adjacent-border-color:
* select-outline-info-adjacent-border-color:
* select-outline-warning-adjacent-border-color:
* select-outline-danger-adjacent-border-color:
* select-group-option-outline-tiny-start-padding:
* select-group-option-outline-small-start-padding:
* select-group-option-outline-medium-start-padding:
* select-group-option-outline-large-start-padding:
* select-group-option-outline-giant-start-padding:
* select-options-list-outline-border-color:
* select-options-list-outline-primary-border-color:
* select-options-list-outline-success-border-color:
* select-options-list-outline-info-border-color:
* select-options-list-outline-warning-border-color:
* select-options-list-outline-danger-border-color:
* select-filled-background-color:
* select-filled-border-color:
* select-filled-border-style:
* select-filled-border-width:
* select-filled-icon-color:
* select-filled-text-color:
* select-filled-placeholder-text-color:
* select-filled-focus-border-color:
* select-filled-hover-border-color:
* select-filled-disabled-background-color:
* select-filled-disabled-border-color:
* select-filled-disabled-icon-color:
* select-filled-disabled-text-color:
* select-filled-tiny-padding:
* select-filled-small-padding:
* select-filled-medium-padding:
* select-filled-large-padding:
* select-filled-giant-padding:
* select-filled-primary-background-color:
* select-filled-primary-border-color:
* select-filled-primary-icon-color:
* select-filled-primary-text-color:
* select-filled-primary-placeholder-text-color:
* select-filled-primary-focus-background-color:
* select-filled-primary-focus-border-color:
* select-filled-primary-hover-background-color:
* select-filled-primary-hover-border-color:
* select-filled-primary-disabled-background-color:
* select-filled-primary-disabled-border-color:
* select-filled-primary-disabled-icon-color:
* select-filled-primary-disabled-text-color:
* select-filled-success-background-color:
* select-filled-success-border-color:
* select-filled-success-icon-color:
* select-filled-success-text-color:
* select-filled-success-placeholder-text-color:
* select-filled-success-focus-background-color:
* select-filled-success-focus-border-color:
* select-filled-success-hover-background-color:
* select-filled-success-hover-border-color:
* select-filled-success-disabled-background-color:
* select-filled-success-disabled-border-color:
* select-filled-success-disabled-icon-color:
* select-filled-success-disabled-text-color:
* select-filled-info-background-color:
* select-filled-info-border-color:
* select-filled-info-icon-color:
* select-filled-info-text-color:
* select-filled-info-placeholder-text-color:
* select-filled-info-focus-background-color:
* select-filled-info-focus-border-color:
* select-filled-info-hover-background-color:
* select-filled-info-hover-border-color:
* select-filled-info-disabled-background-color:
* select-filled-info-disabled-border-color:
* select-filled-info-disabled-icon-color:
* select-filled-info-disabled-text-color:
* select-filled-warning-background-color:
* select-filled-warning-border-color:
* select-filled-warning-icon-color:
* select-filled-warning-text-color:
* select-filled-warning-placeholder-text-color:
* select-filled-warning-focus-background-color:
* select-filled-warning-focus-border-color:
* select-filled-warning-hover-background-color:
* select-filled-warning-hover-border-color:
* select-filled-warning-disabled-background-color:
* select-filled-warning-disabled-border-color:
* select-filled-warning-disabled-icon-color:
* select-filled-warning-disabled-text-color:
* select-filled-danger-background-color:
* select-filled-danger-border-color:
* select-filled-danger-icon-color:
* select-filled-danger-text-color:
* select-filled-danger-placeholder-text-color:
* select-filled-danger-focus-background-color:
* select-filled-danger-focus-border-color:
* select-filled-danger-hover-background-color:
* select-filled-danger-hover-border-color:
* select-filled-danger-disabled-background-color:
* select-filled-danger-disabled-border-color:
* select-filled-danger-disabled-icon-color:
* select-filled-danger-disabled-text-color:
* select-option-filled-tiny-padding:
* select-group-option-filled-tiny-padding-start:
* select-option-filled-small-padding:
* select-group-option-filled-small-padding-start:
* select-option-filled-medium-padding:
* select-group-option-filled-medium-padding-start:
* select-option-filled-large-padding:
* select-group-option-filled-large-padding-start:
* select-option-filled-giant-padding:
* select-group-option-filled-giant-padding-start:
* select-options-list-filled-border-color:
* select-options-list-filled-primary-border-color:
* select-options-list-filled-success-border-color:
* select-options-list-filled-info-border-color:
* select-options-list-filled-warning-border-color:
* select-options-list-filled-danger-border-color:
* select-hero-background-color:
* select-hero-border-color:
* select-hero-border-style:
* select-hero-border-width:
* select-hero-icon-color:
* select-hero-text-color:
* select-hero-placeholder-text-color:
* select-hero-focus-border-color:
* select-hero-hover-border-color:
* select-hero-disabled-background-color:
* select-hero-disabled-icon-color:
* select-hero-disabled-text-color:
* select-hero-tiny-padding:
* select-hero-small-padding:
* select-hero-medium-padding:
* select-hero-large-padding:
* select-hero-giant-padding:
* select-hero-primary-left-background-color:
* select-hero-primary-right-background-color:
* select-hero-primary-icon-color:
* select-hero-primary-text-color:
* select-hero-primary-placeholder-text-color:
* select-hero-primary-focus-left-background-color:
* select-hero-primary-focus-right-background-color:
* select-hero-primary-hover-left-background-color:
* select-hero-primary-hover-right-background-color:
* select-hero-primary-disabled-background-color:
* select-hero-primary-disabled-icon-color:
* select-hero-primary-disabled-text-color:
* select-hero-success-left-background-color:
* select-hero-success-right-background-color:
* select-hero-success-icon-color:
* select-hero-success-text-color:
* select-hero-success-placeholder-text-color:
* select-hero-success-focus-left-background-color:
* select-hero-success-focus-right-background-color:
* select-hero-success-hover-left-background-color:
* select-hero-success-hover-right-background-color:
* select-hero-success-disabled-background-color:
* select-hero-success-disabled-icon-color:
* select-hero-success-disabled-text-color:
* select-hero-info-left-background-color:
* select-hero-info-right-background-color:
* select-hero-info-icon-color:
* select-hero-info-text-color:
* select-hero-info-placeholder-text-color:
* select-hero-info-focus-left-background-color:
* select-hero-info-focus-right-background-color:
* select-hero-info-hover-left-background-color:
* select-hero-info-hover-right-background-color:
* select-hero-info-disabled-background-color:
* select-hero-info-disabled-icon-color:
* select-hero-info-disabled-text-color:
* select-hero-warning-left-background-color:
* select-hero-warning-right-background-color:
* select-hero-warning-icon-color:
* select-hero-warning-text-color:
* select-hero-warning-placeholder-text-color:
* select-hero-warning-focus-left-background-color:
* select-hero-warning-focus-right-background-color:
* select-hero-warning-hover-left-background-color:
* select-hero-warning-hover-right-background-color:
* select-hero-warning-disabled-background-color:
* select-hero-warning-disabled-icon-color:
* select-hero-warning-disabled-text-color:
* select-hero-danger-left-background-color:
* select-hero-danger-right-background-color:
* select-hero-danger-icon-color:
* select-hero-danger-text-color:
* select-hero-danger-placeholder-text-color:
* select-hero-danger-focus-left-background-color:
* select-hero-danger-focus-right-background-color:
* select-hero-danger-hover-left-background-color:
* select-hero-danger-hover-right-background-color:
* select-hero-danger-disabled-background-color:
* select-hero-danger-disabled-icon-color:
* select-hero-danger-disabled-text-color:
* select-option-hero-tiny-padding:
* select-group-option-hero-tiny-padding-start:
* select-option-hero-small-padding:
* select-group-option-hero-small-padding-start:
* select-option-hero-medium-padding:
* select-group-option-hero-medium-padding-start:
* select-option-hero-large-padding:
* select-group-option-hero-large-padding-start:
* select-option-hero-giant-padding:
* select-group-option-hero-giant-padding-start:
* select-options-list-hero-border-color:
* select-options-list-hero-primary-border-color:
* select-options-list-hero-success-border-color:
* select-options-list-hero-info-border-color:
* select-options-list-hero-warning-border-color:
* select-options-list-hero-danger-border-color:
* */
export declare class NbSelectComponent<T> implements AfterViewInit, AfterContentInit, OnDestroy, ControlValueAccessor {
protected document: any;
protected overlay: NbOverlayService;
protected hostRef: ElementRef<HTMLElement>;
protected positionBuilder: NbPositionBuilderService;
protected triggerStrategyBuilder: NbTriggerStrategyBuilderService;
protected cd: ChangeDetectorRef;
/**
* Select size, available sizes:
* `tiny`, `small`, `medium` (default), `large`, `giant`
*/
size: NbComponentSize;
/**
* Select status (adds specific styles):
* `primary`, `info`, `success`, `warning`, `danger`
*/
status: '' | NbComponentStatus;
/**
* Select shapes: `rectangle` (default), `round`, `semi-round`
*/
shape: NbComponentShape;
/**
* Select appearances: `outline` (default), `filled`, `hero`
*/
appearance: NbSelectAppearance;
/**
* Adds `outline` styles
*/
outline: boolean;
/**
* Adds `filled` styles
*/
filled: boolean;
/**
* Adds `hero` styles
*/
hero: boolean;
/**
* Disables the select
*/
disabled: boolean;
protected _disabled: boolean;
/**
* If set element will fill its container
*/
fullWidth: boolean;
protected _fullWidth: boolean;
/**
* Renders select placeholder if nothing selected.
* */
placeholder: string;
/**
* Accepts selected item or array of selected items.
* */
selected: T | T[];
/**
* Gives capability just write `multiple` over the element.
* */
multiple: boolean;
protected _multiple: boolean;
/**
* Will be emitted when selected value changes.
* */
selectedChange: EventEmitter<T | T[]>;
/**
* List of `NbOptionComponent`'s components passed as content.
* TODO maybe it would be better provide wrapper
* */
options: QueryList<NbOptionComponent<T>>;
/**
* Custom select label, will be rendered instead of default enumeration with coma.
* */
customLabel: any;
/**
* NbCard with options content.
* */
portal: NbPortalDirective;
button: ElementRef<HTMLButtonElement>;
/**
* Determines is select opened.
* */
readonly isOpen: boolean;
/**
* List of selected options.
* */
selectionModel: NbOptionComponent<T>[];
positionStrategy: NbAdjustableConnectedPositionStrategy;
/**
* Current overlay position because of we have to toggle overlayPosition
* in [ngClass] direction and this directive can use only string.
*/
overlayPosition: NbPosition;
protected ref: NbOverlayRef;
protected triggerStrategy: NbTriggerStrategy;
protected alive: boolean;
protected keyManager: NbFocusKeyManager<NbOptionComponent<T>>;
/**
* If a user assigns value before content nb-options's rendered the value will be putted in this variable.
* And then applied after content rendered.
* Only the last value will be applied.
* */
protected queue: T | T[];
/**
* Function passed through control value accessor to propagate changes.
* */
protected onChange: Function;
protected onTouched: Function;
constructor(document: any, overlay: NbOverlayService, hostRef: ElementRef<HTMLElement>, positionBuilder: NbPositionBuilderService, triggerStrategyBuilder: NbTriggerStrategyBuilderService, cd: ChangeDetectorRef);
/**
* Determines is select hidden.
* */
readonly isHidden: boolean;
/**
* Returns width of the select button.
* */
readonly hostWidth: number;
readonly selectButtonClasses: string[];
readonly optionsListClasses: string[];
/**
* Content rendered in the label.
* */
readonly selectionView: any;
ngAfterContentInit(): void;
ngAfterViewInit(): void;
ngOnDestroy(): void;
show(): void;
hide(): void;
registerOnChange(fn: any): void;
registerOnTouched(fn: any): void;
setDisabledState(isDisabled: boolean): void;
writeValue(value: T | T[]): void;
/**
* Selects option or clear all selected options if value is null.
* */
protected handleOptionClick(option: NbOptionComponent<T>): void;
/**
* Deselect all selected options.
* */
protected reset(): void;
/**
* Determines how to select option as multiple or single.
* */
protected selectOption(option: NbOptionComponent<T>): void;
/**
* Select single option.
* */
protected handleSingleSelect(option: NbOptionComponent<T>): void;
/**
* Select for multiple options.
* */
protected handleMultipleSelect(option: NbOptionComponent<T>): void;
protected attachToOverlay(): void;
protected setActiveOption(): void;
protected createOverlay(): void;
protected createKeyManager(): void;
protected createPositionStrategy(): NbAdjustableConnectedPositionStrategy;
protected createScrollStrategy(): NbScrollStrategy;
protected createTriggerStrategy(): NbTriggerStrategy;
protected subscribeOnTriggers(): void;
protected subscribeOnPositionChange(): void;
protected subscribeOnOptionClick(): void;
protected subscribeOnOverlayKeys(): void;
protected getContainer(): ComponentRef<any>;
/**
* Propagate selected value.
* */
protected emitSelected(selected: T | T[]): void;
/**
* Set selected value in model.
* */
protected setSelection(value: T | T[]): void;
/**
* Selects value.
* */
protected selectValue(value: T): void;
/**
* Sets touched if focus moved outside of button and overlay,
* ignoring the case when focus moved to options overlay.
*/
trySetTouched(): void;
protected isClickedWithinComponent($event: Event): boolean;
readonly tiny: boolean;
readonly small: boolean;
readonly medium: boolean;
readonly large: boolean;
readonly giant: boolean;
readonly primary: boolean;
readonly info: boolean;
readonly success: boolean;
readonly warning: boolean;
readonly danger: boolean;
readonly rectangle: boolean;
readonly round: boolean;
readonly semiRound: boolean;
}