import { EventEmitter } from '../../stencil-public-runtime';
import { IDropdownItem, IDropdownSubAction } from '../ez-dropdown/structure/DropdownItem';
type ButtonMode = 'default' | 'icon-only' | 'icon-left';
type ButtonSize = 'small' | 'medium' | 'large';
interface RippleType {
x: number;
y: number;
id: number;
}
/**
* Split Button Component
*
* @example
* ```html
*
*
* ```
*
* @fires buttonClick - Emitido quando o botão principal é clicado
* @fires dropdownItemClick - Emitido quando um botão do dropdown é clicado
* @fires dropdownSubActionClick - Emitido quando uma subação de um item do dropdown é clicada
*/
export declare class EzSplitButton {
_element: HTMLElement;
private leftButton;
private rightButton;
private dropdownParent;
private offsetParentRect;
private i18n;
leftRipples: RippleType[];
rightRipples: RippleType[];
isLeftPressed: boolean;
isRightPressed: boolean;
/**
* Se true, o dropdown do botão é exibido.
*/
show: boolean;
/**
* Se false o usuário não pode interagir com o botão.
* @deprecated Use `isDisabled` prop instead.
*/
enabled: boolean;
/**
* Se verdadeiro o clique no botão fica desabilitado mas a navegação continua funcional.
* Se full, o usuário não pode interagir com o botão.
*/
isDisabled: boolean | "full" | "";
/**
* Define o ícone a ser usado da biblioteca de ícones: [ez-icons](https://gilded-nasturtium-6b64dd.netlify.app/docs/components/layout-doc/icons/)
* @deprecated Use `leftIconName` prop instead.
*/
iconName: string;
/**
* Define o ícone esquerdo a ser usado da biblioteca de ícones: [ez-icons](https://gilded-nasturtium-6b64dd.netlify.app/docs/components/layout-doc/icons/)
*/
leftIconName: string;
/**
* Define o ícone direito a ser usado da biblioteca de ícones: [ez-icons](https://gilded-nasturtium-6b64dd.netlify.app/docs/components/layout-doc/icons/)
*/
rightIconName: string;
/**
* Define o caminho usado nos modos `icon-only` e `icon-left` para imagens não contempladas na biblioteca de ícones.
*/
image: string;
/**
* Define o conteúdo do dropdown.
*/
items: Array;
/**
* Texto a ser apresentado como label do botão.
*/
label: string;
/**
* Texto a ser apresentado como title do botão principal
*/
leftTitle: string;
/**
* Texto a ser apresentado como title do botão dropdown
*/
rightTitle: string;
/**
* Define o modo de uso do botão.
*/
mode: ButtonMode;
/**
* Define o tamanho do ez-split-button.
*/
size: ButtonSize;
/**
* Define a variante do ez-split-button.
*/
variant?: "primary" | "secondary" | "tertiary";
/**
* Se verdadeiro, desabilita a animação de ripple.
*/
suppressAnimation?: boolean;
/**
* Função builder que possibilita alterar como o item da lista vai ser apresentado.
* Observação: No react ele se transforma em VNode e não como HTMLElement.
*/
itemBuilder: (item: IDropdownItem, level: number) => HTMLElement | string;
/**
* Emitido quando o botão principal é clicado
*/
buttonClick: EventEmitter;
/**
* Emitido quando um item do dropdown é clicado
*/
dropdownItemClick: EventEmitter;
/**
* Emitido quando uma subAction de um item do dropdown é clicada
*/
dropdownSubActionClick: EventEmitter;
/**
* Remove o foco de ambos os botões.
*/
setBlur(): Promise;
/**
* Aplica o foco no botão principal.
*/
setLeftButtonFocus(): Promise;
/**
* Aplica o foco no botão do dropdown.
*/
setRightButtonFocus(): Promise;
/**
* Abre ou Fecha o dropdown do Split Button.
*/
toggleDropdown(): Promise;
/**
* Informa se a lista de ações está aberta.
*/
isOpenedDropdown(): Promise;
private rippleCounter;
private eventListeners;
private createRipple;
private getEventCoordinates;
private addRippleToButton;
private setButtonPressed;
private scheduleRippleCleanup;
private removeRipple;
onMouseDown(event: MouseEvent): void;
onTouchStart(event: TouchEvent): void;
clickListener(evt: MouseEvent): void;
private shouldShowLabelOnLeftButton;
private shouldShowIconOnLeftButton;
private getIconSize;
private closeDropdown;
private handleButtonClick;
private handleDropdownItemClick;
private handleDropdownSubActionClick;
/**
* Método responsável em posicionar o dropdown na tela.
* Faz com que o dropdown se ajuste automaticamente ao espaco na tela
*/
private positionDropdown;
private calculateDropdownPosition;
private setupEventListeners;
private cleanupEventListeners;
componentWillLoad(): Promise;
componentDidLoad(): void;
disconnectedCallback(): void;
componentDidUpdate(): void;
private addElementIDs;
private renderRipples;
render(): any;
private renderLeftButton;
private renderDivider;
private renderDropdownSection;
private renderRightButton;
private renderDropdownContent;
private renderLeftIcon;
private renderLabel;
private renderRightIcon;
private renderDropdown;
private removeForcedFocusVisibleLeft;
private removeForcedFocusVisibleRight;
private addBlurListeners;
private removeBlurListeners;
connectedCallback(): void;
private get isButtonDisabled();
private get isButtonAriaDisabled();
}
export {};