@eisgs/button

3.0.0 • Public • Published

Типы (ЕИСЖС)

import { PrintIcon } from '@eisgs/icon';

const types = ['primary', 'secondary', 'destructive', 'textButton', 'icon'];

const styles = {
  marginBottom: 16
};

types.map(type => (
  <Button 
    {...type.includes('icon') && {Icon: PrintIcon}}
    key={type}
    type={type}
    styles={styles}
  >
    {type}
  </Button>
))

Типы (ИЖС)

import { PrintIcon } from '@eisgs/icon';

const types = ['primary', 'secondary', 'ordinary', 'destructive', 'textButton', 'iconPrimary', 'iconSecondary', 'iconOrdinary', 'floating'];

const styles = {
  marginBottom: 16
};

types.map(type => (
  <Button 
    {...type.includes('icon') && {Icon: PrintIcon}}
    key={type}
    styles={styles}
    type={type}
  >
    {type}
  </Button>
))

Цвет (ЕИСЖС)

Кастомный цвет кнопке можно задавать в параметре color.

<Button type="primary" color="red">
  Primary
</Button>

Кнопка с иконкой (ЕИСЖС)

Иконка передается как компонент Icon. Дополнительно можно передать параметры iconSize, iconColor.

По умолчанию иконка располагается слева от текста внутри кнопки. Управлять положением иконки можно с помощью параметра iconAlign.

import { EditIcon } from '@eisgs/icon';

const types = ['primary', 'secondary', 'destructive', 'textButton'];

const styles = {
  marginBottom: 16
};

types.map(type => (
  <Button
    key={type}
    type={type}
    Icon={EditIcon}
    styles={styles}
  >
    {type}
  </Button>
))

Кнопка с иконкой (ИЖС)

Иконка передается как компонент Icon. Дополнительно можно передать iconColor.

По умолчанию иконка располагается слева от текста внутри кнопки. Управлять положением иконки можно с помощью параметра iconAlign.

import { EditIcon } from '@eisgs/icon';

const types = ['primary', 'secondary', 'ordinary', 'destructive', 'textButton', 'iconPrimary', 'iconSecondary', 'iconOrdinary'];

const styles = {
  marginBottom: 16
};

types.map(type => (
  <Button
    key={type}
    type={type}
    Icon={EditIcon}
    styles={styles}
  >
    {type}
  </Button>
))

Disabled (ЕИСЖС)

При передаче флага disabled кнопка будет заблокирована.

import { PrintIcon } from '@eisgs/icon';

const types = ['primary', 'secondary', 'destructive', 'textButton', 'icon'];

const styles = {
  marginBottom: 16
};

types.map(type => (
  <Button
    {...type.includes('icon') && {Icon: PrintIcon}}
    key={type}
    styles={styles}
    type={type}
    disabled
  >
    {type}
  </Button>
))

Disabled (ИЖС)

При передаче флага disabled кнопка будет заблокирована.

import { PrintIcon } from '@eisgs/icon';

const types = ['primary', 'secondary', 'ordinary', 'destructive', 'textButton', 'iconPrimary', 'iconSecondary', 'iconOrdinary', 'floating'];

const styles = {
  marginBottom: 16
};

types.map(type => (
  <Button
    {...type.includes('icon') && {Icon: PrintIcon}}
    key={type}
    styles={styles}
    type={type}
    disabled
  >
    {type}
  </Button>
))

Loading (ЕИСЖС)

Состояние loading добавляет лоадер поверх кнопки. Текст в данном состоянии скрывается.

import { PrintIcon } from '@eisgs/icon';

const types = ['primary', 'secondary', 'destructive', 'textButton', 'icon'];

const styles = {
  marginBottom: 16
};

types.map(type => (
  <Button
    {...type.includes('icon') && {Icon: PrintIcon}}
    key={type}
    styles={styles}
    type={type}
    loading
  >
    {type}
  </Button>
))

Поведение в форме

Для того чтобы задать у кнопки type="submit", необходимо передать флаг isSubmit.

const handleSubmit = (e) => {
  e.preventDefault();

  alert('Submit');
};

<form onSubmit={handleSubmit}>
  <Button isSubmit type="primary">
    Отправить
  </Button>
</form>

Размеры (ИЖС)

Все типы, кроме textButton и floating имеют 3 размера - small, medium, large. Значение по умолчанию medium.

import { PrintIcon } from '@eisgs/icon';

const sizes = ['large', 'medium', 'small'];
const twoSizesTypes = ['textButton', 'floating'];
const types = ['primary', 'secondary', 'ordinary', 'destructive', 'iconPrimary', 'iconSecondary', 'iconOrdinary', ...twoSizesTypes];

const styles = {
  display: 'flex',
  marginBottom: 16
};

const buttonStyles = {
  marginRight: 16
};

types.map(type => (
  <div style={styles} key={type}>
    {(twoSizesTypes.includes(type) ? sizes.slice(0, 2) : sizes).map(size => (
      <Button
        {...type.includes('icon') && {Icon: PrintIcon}}
        styles={{marginRight: 16}}
        key={`${type}-${size}`}
        type={type}
        size={size}
      >
        {type}
      </Button>
    ))}
  </div>
))

Счетчик (ИЖС)

Типы iconPrimary, iconSecondary, iconOrdinary поддерживают отображение счетчика. При передаче значения больше 100, счетчик отображается со значением 99+.

import { PrintIcon } from '@eisgs/icon';

const types = ['iconPrimary', 'iconSecondary', 'iconOrdinary'];

const styles = {
  marginBottom: 16
};

types.map((type, index) => (
  <Button
    key={type}
    styles={styles}
    Icon={PrintIcon}
    type={type}
    count={Math.pow(10, index)}
  >
    {type}
  </Button>
))

Selected (ИЖС)

Для типа textButton можно указать параметр selected.

const [isSelected, setIsSelected] = React.useState(true);

<Button type="textButton" selected={isSelected} onClick={() => setIsSelected(prev => !prev)}>{isSelected ? 'Selected' : 'Default'}</Button>

Readme

Keywords

none

Package Sidebar

Install

npm i @eisgs/button

Weekly Downloads

13

Version

3.0.0

License

MIT

Unpacked Size

45.1 kB

Total Files

5

Last publish

Collaborators

  • traidersu
  • krll_mdntsv
  • lzdyd