UNPKG

@yandex/ui

Version:

Yandex UI components

129 lines (128 loc) 4.09 kB
import React, { RefObject, ReactNode, ReactType, KeyboardEventHandler, MouseEventHandler, Ref, FocusEventHandler } from 'react'; import { KeyboardKeys } from '../lib/keyboard'; import { IconProvider } from './Icon/Button-Icon'; import './Button.css'; export declare type ContainerElement = HTMLButtonElement | HTMLAnchorElement; export interface IButtonProps { /** * Дополнительный контент после `children` */ addonAfter?: ReactNode; /** * Дополнительный контент перед `children` */ addonBefore?: ReactNode; /** * Кнопка нажата */ checked?: boolean; /** * Иконка на кнопке */ icon?: IconProvider; /** * Иконка слева от текста кнопки */ iconLeft?: IconProvider; /** * Иконка справа от текста кнопки */ iconRight?: IconProvider; /** * Ссылка на корневой DOM элемент компонента */ innerRef?: Ref<HTMLElement>; /** * Ссылка на DOM элемент нативного контрола */ controlRef?: RefObject<ContainerElement>; /** * Набор клавиш, при нажатии на которые выставляется состояние `pressed` * * @default [Keys.SPACE, Keys.ENTER] */ pressKeys?: KeyboardKeys[]; /** * Стилевое оформление для визуального выделения прогресса */ progress?: boolean; /** * Набор клавиш, при нажатии на которые прерывается событие * * @default [] */ prvntKeys?: KeyboardKeys[]; /** * HTML-атрибут для рендера кнопки * @default 'button' */ as?: ReactType; /** * Текст кнопки. */ children?: ReactNode; /** * Тип кнопки. * @default 'button' */ type?: string; /** * Неактивное состояние кнопки. * Состояние, при котором кнопка отображается, но недоступна для действий пользователя */ disabled?: boolean; /** * Дополнительный класс */ className?: string; /** * Уникальный id компонента */ id?: string; /** * Обработчик события onKeyDown */ onKeyDown?: KeyboardEventHandler<ContainerElement>; /** * Обработчик события `onKeyUp` */ onKeyUp?: KeyboardEventHandler<ContainerElement>; /** * Обработчик клика на кнопку */ onClick?: MouseEventHandler<ContainerElement>; /** * Событие по своему действию похоже на `onClick` и возникает в момент нажатия кнопки мыши. * `onClick` в каком-то смысле является комбинацией событий `onMouseDown` и `onMouseUp` */ onMouseDown?: MouseEventHandler<ContainerElement>; /** * Обработчик события `onMouseUp` */ onMouseUp?: MouseEventHandler<ContainerElement>; /** * Обработчик события `onMouseLeave` */ onMouseLeave?: MouseEventHandler<ContainerElement>; /** * Обработчик события `onBlur` */ onBlur?: FocusEventHandler<ContainerElement>; /** * Всплывающая подсказка */ title?: string; /** * HTML-атрибут `role` */ role?: string; } export interface IButtonState { pressed?: boolean; } export declare const cnButton: import("@bem-react/classname").ClassNameFormatter; /** * Компонент для создания кнопок. * @param {IButtonProps} props */ export declare const Button: React.ComponentClass<IButtonProps, any>;