Button

Button is used to start an instant operation.

When To Use

It marks (or encapsulates a group of) operation commands, responds to user clicks, and triggers corresponding business logic.

Basic Usage

:::demo Use variant to set button shape. Three types are supported: solid, outline and text, default outline.

<template>
  <div class="demo-spacing">
    <d-button variant="solid">Solid Button</d-button>
    <d-button>Outline Button</d-button>
    <d-button variant="text">Text Button</d-button>
  </div>
</template>

:::

Theme Color

:::demo Use color to set Button theme color. Three types of theme colors are supported: primary, secondary, and danger.
Note: If the variant is set to solid, the primar theme color will be used by default.

<template>
  <div class="demo-spacing">
    <d-button variant="solid" color="primary">Primary</d-button>
    <d-button color="primary">Primary</d-button>
    <d-button variant="text" color="primary">Primary</d-button>
  </div>

  <div class="demo-spacing">
    <d-button variant="solid" color="secondary">Secondary</d-button>
    <d-button color="secondary">Secondary</d-button>
    <d-button variant="text" color="secondary">Secondary</d-button>
  </div>

  <div class="demo-spacing">
    <d-button variant="solid" color="danger">Danger</d-button>
    <d-button color="danger">Danger</d-button>
    <d-button variant="text" color="danger">Danger</d-button>
  </div>
</template>

:::

Size

:::demo Use size to set Button size. Three types of sizes are supported: sm, md, and lg, default md.

<template>
  <div class="demo-spacing">
    <d-button size="sm">Small</d-button>
    <d-button>Medium</d-button>
    <d-button size="lg">Large</d-button>
  </div>
</template>

:::

Disabled

:::demo Use the disabled parameter to set the status of the button to Disabled.

<template>
  <div class="demo-spacing">
    <d-button variant="solid">Solid Button</d-button>
    <d-button>Outline Button</d-button>
    <d-button variant="text">Text Button</d-button>
  </div>

  <div class="demo-spacing">
    <d-button variant="solid" disabled>Solid Button</d-button>
    <d-button disabled>Outline Button</d-button>
    <d-button variant="text" disabled>Text Button</d-button>
  </div>
</template>

:::

Loading

:::demo Use the loading parameter to set the status of the button to Loading.

<template>
  <d-button variant="solid" :loading="showLoading" @click="handleClick">Click Me</d-button>
</template>
<script>
import { ref } from 'vue';

export default {
  setup() {
    const showLoading = ref(false);

    const handleClick = () => {
      showLoading.value = true;

      setTimeout(() => {
        showLoading.value = false;
      }, 2000);
    };

    return { showLoading, handleClick };
  },
};
</script>

:::

Icon

:::demo

<template>
  <div class="demo-spacing">
    <d-button icon="add" variant="solid">New</d-button>
    <d-button icon="filter">Filter</d-button>
    <d-button icon="connect" variant="text">Link</d-button>
    <d-button icon="delete" variant="text" title="Delete"></d-button>
    <d-button shape="round" title="Add">Add</d-button>
    <d-button icon="delete" shape="circle" title="Delete" size="sm"></d-button>
    <d-button icon="delete" shape="circle" title="Delete"></d-button>
    <d-button variant="solid" icon="filter" shape="circle" title="Add" size="lg"></d-button>
  </div>
</template>

:::

Button group

Buttons can be grouped. The size of the button group can be set by size and mixed with the dropdown menu. :::demo

<template>
  <d-button-group>
    <d-button variant="solid">Button Name</d-button>
    <d-button icon="icon-select-arrow" variant="solid"></d-button>
  </d-button-group>
  
  <p>Size:sm</p>
  <d-button-group size="sm">
    <d-button color="primary" variant="solid">Shanghai</d-button>
    <d-button>Beijing</d-button>
    <d-button>Shenzhen</d-button>
  </d-button-group>

  <p>Size:default</p>
  <d-button-group>
    <d-button color="primary">Shanghai</d-button>
    <d-button>Beijing</d-button>
    <d-button>Shenzhen</d-button>
  </d-button-group>

  <p>Size:lg</p>
  <d-button-group size="lg">
    <d-button color="primary">Shanghai</d-button>
    <d-button>Beijing</d-button>
    <d-button>Shenzhen</d-button>
  </d-button-group>

  <p>Use with dropdown menu</p>
  <d-button-group>
    <d-dropdown style="width: 100px;" :position="position" align="start">
      <d-button>Click Me 1</d-button>
      <template #menu>
        <ul class="list-menu">
          <li class="menu-item">Item 1</li>
          <li class="menu-item">Item 2</li>
          <li class="menu-item">Item 3</li>
          <li class="menu-item">Item 4</li>
        </ul>
      </template>
    </d-dropdown>
    <d-button icon="add" variant="solid">Shanghai</d-button>
    <d-dropdown style="width: 100px;" :position="position" align="start">
      <d-button>Click Me 2</d-button>
      <template #menu>
        <ul class="list-menu">
          <li class="menu-item">Item 1</li>
          <li class="menu-item">Item 2</li>
          <li class="menu-item">Item 3</li>
          <li class="menu-item">Item 4</li>
        </ul>
      </template>
    </d-dropdown>
    <d-button icon="filter">Beijing</d-button>
    <d-dropdown style="width: 100px;" :position="position" align="start">
      <d-button>Click Me 3</d-button>
      <template #menu>
        <ul class="list-menu">
          <li class="menu-item">Item 1</li>
          <li class="menu-item">Item 2</li>
          <li class="menu-item">Item 3</li>
          <li class="menu-item">Item 4</li>
        </ul>
      </template>
    </d-dropdown>
  </d-button-group>
</template>
<script>
import { defineComponent, ref } from 'vue';

export default defineComponent({
  setup() {
    return {
      position: ref(['bottom-start', 'top-start']),
    };
  },
});
</script>

:::

Button Props

Parameter Type Default Description Jump to Demo
variant IButtonVariant 'outline' Optional. Button style. Basic Usage
color IButtonColor 'secondary' Optional. Button theme. theme color
size IButtonSize 'md' Optional. Button size. size
icon string -- Optional. Customize icons in buttons. icon
shape IButtonShape -- Optional. Button shape(round/rounded). shape
disabled boolean false Optional. Disable button. disabled
loading boolean false Optional. Set status in loading. loading

Button TypeDefine

IButtonVariant

type IButtonVariant = 'solid' | 'outline' | 'text';

IButtonSize

type IButtonSize = 'lg' | 'md' | 'sm';

IButtonColor

type IButtonColor = 'primary' | 'secondary' | 'danger';

IButtonShape

type IButtonShape = 'circle' | 'round';

ButtonGroup Props

Parameter Type Default Description Jump to Demo
size IButtonSize 'md' Optional. Button group size. button group

ButtonGroup TypeDefine

IButtonGroupSize

type IButtonGroupSize = 'lg' | 'md' | 'sm';