import { nothing } from 'lit';
import { ClassInfo } from 'lit/directives/class-map.js';
import { OmniFormElement } from '../core/OmniFormElement.js';
import { RenderFunction } from '../render-element/RenderElement.js';
import '../icons/Loading.icon.js';
import '../render-element/RenderElement.js';
import '../icons/ChevronDown.icon.js';
import '../icons/Clear.icon.js';
import '../icons/More.icon.js';
/**
* Control to get / set a value within a list of options.
*
* @import
* ```js
* import '@capitec/omni-components/select';
* ```
* @example
*
* ```html
*
*
* ```
*
* @element omni-select
*
* @slot more - Replaces the icon for the more slot (Displays on mobile devices).
* @slot arrow - Replaces the icon for the arrow slot (Displays on desktop and tablet devices).
* @slot search-clear - Replaces the icon in the Search field (Displays when searchable is set to true).
*
* @cssprop --omni-select-field-text-align - Select component input field text align.
* @cssprop --omni-select-field-font-color - Select component input field font color.
* @cssprop --omni-select-field-font-family - Select component input field font family.
* @cssprop --omni-select-field-font-size - Select component input field font size.
* @cssprop --omni-select-field-font-weight - Select component input field font weight.
* @cssprop --omni-select-field-padding - Select component input field padding.
* @cssprop --omni-select-field-height - Select component input field height.
* @cssprop --omni-select-field-width - Select component input field width.
*
* @cssprop --omni-select-field-disabled-font-color - Select component input field disabled font color.
* @cssprop --omni-select-field-error-font-color - Select component input field error font color.
*
* @cssprop --omni-select-control-padding - Select component control padding.
*
* @cssprop --omni-select-control-icon-width - Select control icon width.
* @cssprop --omni-select-control-icon-height - Select control icon height.
* @cssprop --omni-select-control-icon-color - Select control icon color.
* @cssprop --omni-select-control-icon-error-color - Select control error icon color.
*
* @cssprop --omni-select-items-container-box-shadow - Select items container box shadow.
* @cssprop --omni-select-items-container-background-color - Select items container background color.
* @cssprop --omni-select-items-container-z-index - Select items container z-index.
*
* @cssprop --omni-select-items-max-height - Select items max height.
*
* @cssprop --omni-select-items-container-width - Select items container width
* @cssprop --omni-select-items-container-top - Select items container top.
* @cssprop --omni-select-items-container-render-bottom-top - Select items container top when rendered at the bottom.
*
* @cssprop --omni-select-items-height - Select items height.
* @cssprop --omni-select-items-width - Select items width.
* @cssprop --omni-select-items-background-color - Select items background color.
*
* @cssprop --omni-select-item-font-color - Select item font color.
* @cssprop --omni-select-item-font-family - Select item font family.
* @cssprop --omni-select-item-font-size - Select item font size.
* @cssprop --omni-select-item-font-weight - Select item font weight.
* @cssprop --omni-select-item-padding-top - Select item top padding.
* @cssprop --omni-select-item-padding-bottom - Select item bottom padding.
* @cssprop --omni-select-item-padding-left - Select item left padding.
* @cssprop --omni-select-item-padding-right - Select item right padding.
* @cssprop --omni-select-item-width - Select item width.
*
* @cssprop --omni-select-item-hover-background-color - Select item hover background color.
* @cssprop --omni-select-item-selected-color - Selected item color.
* @cssprop --omni-select-item-none-hover - Select item hover.
*
* @cssprop --omni-select-loading-indicator-width - Select loading indicator width.
* @cssprop --omni-select-loading-indicator-height - Select loading indicator height.
*
* @cssprop --omni-select-search-field-font-color - Select search field font color.
* @cssprop --omni-select-search-field-font-family - Select search field font family.
* @cssprop --omni-select-search-field-font-size - Select search field font size.
* @cssprop --omni-select-search-field-font-weight - Select search field font weight.
*
* @cssprop --omni-select-search-field-padding-top - Select search field top padding.
* @cssprop --omni-select-search-field-padding-bottom - Select search field bottom padding.
* @cssprop --omni-select-search-field-padding-left - Select search field left padding.
* @cssprop --omni-select-search-field-padding-right - Select search field right padding.
*
* @cssprop --omni-select-search-field-width - Select search field width.
*
* @cssprop --omni-select-search-field-top-border-width - Select search field top border width.
* @cssprop --omni-select-search-field-left-border-width - Select search field left border width.
* @cssprop --omni-select-search-field-right-border-width - Select search field right border width.
* @cssprop --omni-select-search-field-bottom-border-width - Select search field bottom border width.
* @cssprop --omni-select-search-field-bottom-border-color - Select search field bottom border color.
*
* @cssprop --omni-select-search-field-background-color - Select search field background color.
* @cssprop --omni-select-search-control-bottom-border - Select search field clear control bottom border.
*
* @cssprop --omni-select-search-clear-div-right-padding - Select search field clear div right padding.
* @cssprop --omni-select-search-clear-div-background-color - Select search field clear div background color.
*
* @cssprop --omni-select-search-clear-icon-height - Select search field clear icon height.
* @cssprop --omni-select-search-clear-icon-width - Select search field clear icon width.
* @cssprop --omni-select-search-clear-icon-color - Select search field clear icon color.
*
* @cssprop --omni-select-item-header-left - Select item header left.
* @cssprop --omni-select-item-header-right - Select item header right.
* @cssprop --omni-select-item-header-font-color - Select item header font color.
* @cssprop --omni-select-item-header-font-family - Select item header font family.
* @cssprop --omni-select-item-header-font-size - Select item header font size.
* @cssprop --omni-select-item-header-font-weight - Select item header font weight.
* @cssprop --omni-select-item-header-font-background-color - Select item header font background color.
*
* @cssprop --omni-select-item-header-padding-top - Select item header top padding.
* @cssprop --omni-select-item-header-padding-bottom - Select item head bottom padding.
* @cssprop --omni-select-item-header-padding-right - Select item head right padding.
* @cssprop --omni-select-item-header-padding-left - Select item head left padding.
*
* @cssprop --omni-select-item-header-item-border-top-left-radius - Select item header top left border radius.
* @cssprop --omni-select-item-header-item-border-top-right-radius - Select item header top right border radius.
*
* @cssprop --omni-select-dialog-width - Select dialog width
* @cssprop --omni-select-dialog-left - Select dialog left.
* @cssprop --omni-select-dialog-right - Select dialog right.
* @cssprop --omni-select-dialog-bottom - Select dialog bottom.
* @cssprop --omni-select-dialog-background-color - Select dialog background color.
*
* @cssprop --omni-select-dialog-modal-max-width - Select dialog modal max width.
* @cssprop --omni-select-dialog-modal-max-height - Select dialog height.
* @cssprop --omni-select-dialog-backdrop-color - Select dialog background color.
*
* @cssprop --omni-select-dialog-items-min-height - Select dialog items min height.
*
*/
export declare class Select extends OmniFormElement {
private _selectElement?;
private _searchElement?;
private _itemsContainer?;
/**
* Value entered into the form component.
* @attr
*/
value?: string | Record;
/**
* Selectable items of the select component.
* @attr
*/
items?: SelectItems | ((filterValue?: string) => SelectItems);
/**
* Field of the item to display as one of the selectable options.
* @attr [display-field]
*/
displayField?: string;
/**
* Id field of the items provided.
* @attr [id-field]
*/
idField: string;
/**
* Message displayed in the items container when no items are bound to the component.
* @attr [empty-message]
*/
emptyMessage: string;
/**
* Toggles the ability to search the items of the select of the component.
* @attr
*/
searchable: boolean;
/**
* Render function for each item.
* @no_attribute
*/
renderItem?: RenderFunction;
/**
* Render function for selected item.
* @no_attribute
*/
renderSelection?: RenderFunction;
/**
* Custom search function for items instead of using the default provided.
* @no_attribute
*/
filterItems?: (filterValue: string, items: SelectTypes) => SelectItems;
private _popUp;
private _bottomOfViewport;
private _isMobile;
private _searchValue?;
protected get bottomOfViewport(): boolean;
protected get isMobile(): boolean;
protected get searchValue(): string | undefined;
protected get popUp(): boolean;
protected get searchElement(): HTMLInputElement | undefined;
protected get itemsContainer(): HTMLDivElement | undefined;
protected get selectElement(): HTMLInputElement | undefined;
private _windowClickBound;
private _checkScreenDimensionsBound;
connectedCallback(): void;
protected firstUpdated(): Promise;
disconnectedCallback(): void;
_inputClick(e: Event): void;
_windowClick(e: Event): void;
_controlClick(): void;
_togglePopup(): void;
_onItemClick(item: Record | string): Promise;
_checkScreenDimensions(): Promise;
_checkForBottomOfScreen(): Promise;
_checkforMobile(): void;
_itemsMaxHeightChange(el?: Element): Promise;
_onSearchFieldInput(): void;
_onSearchFieldClear(): void;
static get styles(): import("lit").CSSResultGroup[];
protected renderContent(): import("lit-html").TemplateResult<1>;
_renderSelectionLoading(): HTMLElement | import("lit-html").TemplateResult<1>;
protected renderPicker(): import("lit-html").TemplateResult<1> | typeof nothing;
_renderDesktopPicker(): import("lit-html").TemplateResult<1>;
_renderMobilePicker(): import("lit-html").TemplateResult<1>;
_renderMobileHeader(): import("lit-html").TemplateResult<1> | typeof nothing;
_renderSearchField(): import("lit-html").TemplateResult<1> | typeof nothing;
_renderSearchClear(): import("lit-html").TemplateResult<1>;
protected renderControl(): import("lit-html").TemplateResult<1>;
_renderDesktopControl(controlIcon: ClassInfo): unknown;
_renderMobileControl(controlIcon: ClassInfo): unknown;
_renderOptions(): Promise | import("lit-html").TemplateResult<1>[]>;
_renderItems(items: SelectTypes): import("lit-html").TemplateResult<1>[];
_renderEmptyOptions(): import("lit-html").TemplateResult<1>;
_filterOption(item: string | Record): string | boolean;
_renderOption(item: Record | string): import("lit-html").TemplateResult<1>;
_renderItemLoading(): HTMLElement | typeof nothing;
_renderOptionSeparator(_item: Record | string): symbol;
protected renderLoading(): import("lit-html").TemplateResult<1>;
protected renderLabel(): import("lit-html").TemplateResult<1>;
}
export type SelectTypes = string[] | Record[];
export type SelectItems = SelectTypes | Promise;
declare global {
interface HTMLElementTagNameMap {
'omni-select': Select;
}
}
//# sourceMappingURL=Select.d.ts.map