DevExtreme v24.1 is now available.

Explore our newest features/capabilities and share your thoughts with us.

Your search did not match any results.

Vue Color Box

The ColorBox allows users to enter a color or select it in the drop-down editor. When you create a ColorBox, specify its value property to set the initial color. Users can change the value after they pick a shade, or after they click the OK button. To specify the mode, use the applyValueMode property.

Backend API
<template> <div class="form"> <div class="dx-fieldset"> <div class="dx-field"> <div class="dx-field-label">Default mode</div> <div class="dx-field-value"> <DxColorBox value="#f05b41" :input-attr="defaultModeLabel" /> </div> </div> <div class="dx-field"> <div class="dx-field-label">With alpha channel editing</div> <div class="dx-field-value"> <DxColorBox :edit-alpha-channel="true" value="#f05b41" :input-attr="alphaChannelLabel" /> </div> </div> <div class="dx-field"> <div class="dx-field-label">Custom button captions</div> <div class="dx-field-value"> <DxColorBox value="#f05b41" apply-button-text="Apply" cancel-button-text="Decline" :input-attr="customButtonCaptionsLabel" /> </div> </div> <div class="dx-field"> <div class="dx-field-label">Read only</div> <div class="dx-field-value"> <DxColorBox :read-only="true" value="#f05b41" :input-attr="readOnlyLabel" /> </div> </div> <div class="dx-field"> <div class="dx-field-label">Disabled</div> <div class="dx-field-value"> <DxColorBox :disabled="true" value="#f05b41" :input-attr="disabledLabel" /> </div> </div> </div> <div class="dx-fieldset"> <div class="dx-fieldset-header">Event Handling</div> <div class="hero-block"> <div :style="{ backgroundColor: color }" class="color-block" > <div class="superhero"/> </div> <div class="hero-color-box"> <DxColorBox v-model:value="color" apply-value-mode="instantly" :input-attr="eventHandlingLabel" /> </div> </div> </div> </div> </template> <script setup lang="ts"> import { ref } from 'vue'; import DxColorBox from 'devextreme-vue/color-box'; const color = ref('#f05b41'); const defaultModeLabel = { 'aria-label': 'Default mode' }; const alphaChannelLabel = { 'aria-label': 'With alpha channel editing' }; const customButtonCaptionsLabel = { 'aria-label': 'Custom button captions' }; const readOnlyLabel = { 'aria-label': 'Read only' }; const disabledLabel = { 'aria-label': 'Disabled' }; const eventHandlingLabel = { 'aria-label': 'Event Handling' }; </script> <style> .form { min-height: 690px; } .form .dx-field-value { text-align: right; } .dx-fieldset-header { padding: 10px 0; } .color-block { width: 360px; height: 254px; background-color: #f05b41; position: relative; } .hero-color-box { position: absolute; right: 0; left: 400px; top: 110px; } .color-block .superhero { position: absolute; height: 100%; width: 100%; } .hero-block { position: relative; } .superhero { background-image: url("../../../../images/hero_white.png"); } .dx-color-scheme-dark .superhero { background-image: url("../../../../images/hero_black.png"); } .dx-color-scheme-darkmoon .superhero { background-image: url("../../../../images/hero_darkmoon.png"); } .dx-color-scheme-darkviolet .superhero { background-image: url("../../../../images/hero_darkviolet.png"); } .dx-color-scheme-greenmist .superhero { background-image: url("../../../../images/hero_greenmist.png"); } .dx-color-scheme-contrast .superhero { background-image: url("../../../../images/hero_contrast.png"); } .dx-color-scheme-blue-dark .superhero, .dx-color-scheme-orange-dark .superhero, .dx-color-scheme-teal-dark .superhero, .dx-color-scheme-lime-dark .superhero, .dx-color-scheme-purple-dark .superhero { background-image: url("../../../../images/hero_material_dark.png"); } </style>
window.exports = window.exports || {}; window.config = { transpiler: 'plugin-babel', meta: { '*.vue': { loader: 'vue-loader', }, '*.ts': { loader: 'demo-ts-loader', }, '*.svg': { loader: 'svg-loader', }, 'devextreme/time_zone_utils.js': { 'esModule': true, }, 'devextreme/localization.js': { 'esModule': true, }, 'devextreme/viz/palette.js': { 'esModule': true, }, }, paths: { 'root:': '../../../../', 'npm:': 'https://unpkg.com/', }, map: { 'vue': 'npm:vue@3.2.47/dist/vue.esm-browser.js', 'vue-loader': 'npm:dx-systemjs-vue-browser@1.1.1/index.js', 'demo-ts-loader': 'root:utils/demo-ts-loader.js', 'svg-loader': 'root:utils/svg-loader.js', 'mitt': 'npm:mitt/dist/mitt.umd.js', 'rrule': 'npm:rrule@2.6.4/dist/es5/rrule.js', 'luxon': 'npm:luxon@1.28.1/build/global/luxon.min.js', 'es6-object-assign': 'npm:es6-object-assign@1.1.0', 'devextreme': 'npm:devextreme@24.1.6/cjs', 'devextreme-vue': 'npm:devextreme-vue@24.1.6/cjs', 'jszip': 'npm:jszip@3.10.1/dist/jszip.min.js', 'devextreme-quill': 'npm:devextreme-quill@1.7.1/dist/dx-quill.min.js', 'devexpress-diagram': 'npm:devexpress-diagram@2.2.11/dist/dx-diagram.js', 'devexpress-gantt': 'npm:devexpress-gantt@4.1.56/dist/dx-gantt.js', '@devextreme/runtime': 'npm:@devextreme/runtime@3.0.13', 'inferno': 'npm:inferno@7.4.11/dist/inferno.min.js', 'inferno-compat': 'npm:inferno-compat/dist/inferno-compat.min.js', 'inferno-create-element': 'npm:inferno-create-element@7.4.11/dist/inferno-create-element.min.js', 'inferno-dom': 'npm:inferno-dom/dist/inferno-dom.min.js', 'inferno-hydrate': 'npm:inferno-hydrate@7.4.11/dist/inferno-hydrate.min.js', 'inferno-clone-vnode': 'npm:inferno-clone-vnode/dist/inferno-clone-vnode.min.js', 'inferno-create-class': 'npm:inferno-create-class/dist/inferno-create-class.min.js', 'inferno-extras': 'npm:inferno-extras/dist/inferno-extras.min.js', 'plugin-babel': 'npm:systemjs-plugin-babel@0.0.25/plugin-babel.js', 'systemjs-babel-build': 'npm:systemjs-plugin-babel@0.0.25/systemjs-babel-browser.js', // Prettier 'prettier/standalone': 'npm:prettier@2.8.8/standalone.js', 'prettier/parser-html': 'npm:prettier@2.8.8/parser-html.js', }, packages: { 'devextreme-vue': { main: 'index.js', }, 'devextreme': { defaultExtension: 'js', }, 'devextreme/events/utils': { main: 'index', }, 'devextreme/events': { main: 'index', }, 'es6-object-assign': { main: './index.js', defaultExtension: 'js', }, }, packageConfigPaths: [ 'npm:@devextreme/*/package.json', 'npm:@devextreme/runtime@3.0.13/inferno/package.json', ], babelOptions: { sourceMaps: false, stage0: true, }, }; System.config(window.config);
import { createApp } from 'vue'; import App from './App.vue'; createApp(App).mount('#app');
<!DOCTYPE html> <html lang="en"> <head> <title>DevExtreme Demo</title> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/24.1.6/css/dx.light.css" /> <script type="module"> import * as vueCompilerSFC from "https://unpkg.com/@vue/compiler-sfc@3.4.16/dist/compiler-sfc.esm-browser.js"; window.vueCompilerSFC = vueCompilerSFC; </script> <script src="https://unpkg.com/typescript@4.9.5/lib/typescript.js"></script> <script src="https://unpkg.com/core-js@2.6.12/client/shim.min.js"></script> <script src="https://unpkg.com/systemjs@0.21.3/dist/system.js"></script> <script type="text/javascript" src="config.js"></script> <script type="text/javascript"> System.import("./index.ts"); </script> </head> <body class="dx-viewport"> <div class="demo-container"> <div id="app"> </div> </div> </body> </html>

You can hide the editor's drop-down button to allow users to only type in a color code. To do this, disable the showDropDownButton property. Users can also edit the transparency of the selected shade if the editAlphaChannel property is set to true.

Configure the ColorBox

Use the following properties to specify the component's interactivity:

  • readOnly
    Specifies whether the ColorBox is read-only.

  • disabled
    Specifies whether the ColorBox responds to user interaction.

You can specify the following properties to add custom buttons into the input field, or configure the drop-down editor's buttons:

  • buttons
    Allows you to add custom buttons to the input text field.

  • showClearButton
    Specifies whether to display the Clear button in the ColorBox.

  • applyButtonText
    Specifies the text for the button that applies changes and closes the drop-down editor.

  • cancelButtonText
    Specifies the text for the button that cancels changes and closes the drop-down editor.

Handle Value Change

Implement the onValueChanged function to handle the value change when users select a color in the drop-down editor. To handle the input value change, use the onInput function.