Categories
Ant Design Vue

Ant Design Vue — Cascade Selection Box and Checkbox

Spread the love

Ant Design Vue or AntD Vue, is a useful UI framework made for Vue.js.

In this article, we’ll look at how to use it in our Vue apps.

Cascade Selection Box Default Value

We can set the default value of a cascade selection box with the default-value prop:

<template>
  <a-cascader :options="options" @change="onChange" :default-value="['fruit', 'apple']"/>
</template>
<script>
export default {
  data() {
    return {
      options: [
        {
          value: "fruit",
          label: "Fruit",
          children: [
            {
              value: "apple",
              label: "Apple"
            }
          ]
        },
        {
          value: "drink",
          label: "Drink",
          disabled: true,
          children: [
            {
              value: "coffee",
              label: "Coffee"
            }
          ]
        }
      ]
    };
  },
  methods: {
    onChange(value) {
      console.log(value);
    }
  }
};
</script>

We just pass in an array of values from top-level down to set it.

Also, we can add an icon on the right of the input by populating the suffixIcon prop:

<template>
  <a-cascader :options="options" @change="onChange">
    <a-icon slot="suffixIcon" type="smile" class="test"/>
  </a-cascader>
</template>
<script>
export default {
  data() {
    return {
      options: [
        {
          value: "fruit",
          label: "Fruit",
          children: [
            {
              value: "apple",
              label: "Apple"
            }
          ]
        },
        {
          value: "drink",
          label: "Drink",
          disabled: true,
          children: [
            {
              value: "coffee",
              label: "Coffee"
            }
          ]
        }
      ]
    };
  },
  methods: {
    onChange(value) {
      console.log(value);
    }
  }
};
</script>

Cascade Selection Field Names

We can set the field-names prop to set the property names of the value and label:

<template>
  <a-cascader
    :options="options"
    @change="onChange"
    :field-names="{ label: 'name', value: 'code', children: 'items' }"
  ></a-cascader>
</template>
<script>
export default {
  data() {
    return {
      options: [
        {
          code: "fruit",
          name: "Fruit",
          items: [
            {
              code: "apple",
              name: "Apple"
            }
          ]
        },
        {
          code: "drink",
          name: "Drink",
          children: [
            {
              code: "coffee",
              name: "Coffee"
            }
          ]
        }
      ]
    };
  },
  methods: {
    onChange(value) {
      console.log(value);
    }
  }
};
</script>

The object has the label , value , and children as the keys.

And we have the property names we want to set them to as the values.

Checkbox

We can add a checkbox to with the a-checkbox component:

<template>
  <a-checkbox @change="onChange">Checkbox</a-checkbox>
</template>
<script>
export default {
  methods: {
    onChange(e) {
      console.log(e.target.checked);
    }
  }
};
</script>

The change event is emitted when we check or uncheck the checkbox.

e.target.checked has the checked value.

Checkbox Group

We can add the a-checkbox-group component to add a group of checkboxes:

<template>
  <div>
    <div>
      <a-checkbox
        :indeterminate="indeterminate"
        :checked="checkAll"
        @change="onCheckAllChange"
      >Check all</a-checkbox>
    </div>
    <br>
    <a-checkbox-group v-model="checkedList" :options="plainOptions" @change="onChange"/>
  </div>
</template>
<script>
const plainOptions = ["Apple", "Pear", "Orange"];
const defaultCheckedList = ["Apple", "Orange"];
export default {
  data() {
    return {
      checkedList: defaultCheckedList,
      indeterminate: true,
      checkAll: false,
      plainOptions
    };
  },
  methods: {
    onChange(checkedList) {
      this.indeterminate =
        !!checkedList.length && checkedList.length < plainOptions.length;
      this.checkAll = checkedList.length === plainOptions.length;
    },
    onCheckAllChange(e) {
      Object.assign(this, {
        checkedList: e.target.checked ? plainOptions : [],
        indeterminate: false,
        checkAll: e.target.checked
      });
    }
  }
};
</script>

The indeterminate prop lets us set whether the checkbox is indeterminate.

a-checkbox-group has the checkbox group.

options has an array of options.

Conclusion

We can add the cascade selection box with various options.

Also, we can add the checkbox group.

By John Au-Yeung

Web developer specializing in React, Vue, and front end development.

Leave a Reply

Your email address will not be published. Required fields are marked *