Help us shape the 2021 DevExtreme Roadmap. Take our 5 minute survey.
Dismiss
Your search did not match any results.
Form

Columns Adaptability

Documentation

The Form UI component can use different layouts depending on the screen width. The dependency between column count and the screen width is specified using the colCountByScreen property, which has a higher priority than the colCount and the minColWidth properties. In this demo, the form is displayed using a 4-column layout on wide screens and a 2-column layout on narrow screens. Switch between the landscape and portrait layouts to see how the form looks on wide and narrow screens.

Copy to CodeSandBox
Apply
Reset
<template> <div> <DxForm id="form" :form-data="employee" :col-count-by-screen="colCountByScreen" :screen-by-width="screenByWidth" :min-col-width="233" label-location="top" col-count="auto" /> <div class="options"> <div class="caption">Options</div> <div class="option"> <DxCheckBox :text="'Set the count of columns regardless of screen size'" v-model:value="useColCountByScreen" /> </div> </div> </div> </template> <script> import DxCheckBox from 'devextreme-vue/check-box'; import DxForm from 'devextreme-vue/form'; import employee from './data.js'; export default { components: { DxCheckBox, DxForm }, data() { return { employee, useColCountByScreen: true }; }, computed: { colCountByScreen() { return this.useColCountByScreen ? { sm: 2, md: 3 } : null; } }, methods: { screenByWidth(width) { return width < 720 ? 'sm' : 'md'; } } }; </script> <style scoped> #form { padding: 10px 10px 110px; } .options { padding: 20px; background-color: rgba(191, 191, 191, 0.15); left: 0; position: absolute; bottom: 0; right: 0; } .caption { font-size: 18px; font-weight: 500; } .option { margin-top: 10px; } </style>
import { createApp } from 'vue'; import App from './App.vue'; createApp(App).mount('#app');
<!DOCTYPE html> <html> <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=1.0" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/20.2.5/css/dx.common.css" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/20.2.5/css/dx.light.css" /> <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" /> <script src="https://unpkg.com/core-js@2.4.1/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.js'); </script> </head> <body class="dx-viewport"> <div class="demo-container"> <div id="app"> </div> </div> </body> </html>
export default { 'ID': 1, 'FirstName': 'John', 'LastName': 'Heart', 'CompanyName': 'Super Mart of the West', 'Position': 'CEO', 'OfficeNo': '901', 'BirthDate': new Date(1964, 2, 16), 'HireDate': new Date(1995, 0, 15), 'Address': '351 S Hill St.', 'City': 'Los Angeles', 'State': 'CA', 'Zipcode': '90013', 'Phone': '+1(213) 555-9392', 'Email': 'jheart@dx-email.com', 'Skype': 'jheart_DX_skype' };
System.config({ transpiler: 'plugin-babel', meta: { '*.vue': { loader: 'vue-loader' }, 'devextreme/localization.js': { "esModule": true }, }, paths: { 'npm:': 'https://unpkg.com/' }, map: { 'vue': 'npm:vue@3.0.0/dist/vue.esm-browser.js', 'vue-loader': 'npm:dx-systemjs-vue-browser@1.0.15/index.js', 'mitt': 'npm:mitt/dist/mitt.umd.js', 'rrule': 'npm:rrule@2.6.6/dist/es5/rrule.js', 'luxon': 'npm:luxon@1.25.0/build/global/luxon.min.js', 'es6-object-assign': 'npm:es6-object-assign@1.1.0', 'devextreme': 'npm:devextreme@20.2.5', 'devextreme-vue': 'npm:devextreme-vue@20.2.5', 'jszip': 'npm:jszip@3.5.0/dist/jszip.min.js', 'devextreme-quill': 'npm:devextreme-quill@0.9.8/dist/dx-quill.min.js', 'devexpress-diagram': 'npm:devexpress-diagram@2.0.11/dist/dx-diagram.js', 'devexpress-gantt': 'npm:devexpress-gantt@2.0.18/dist/dx-gantt.js', 'preact': 'npm:preact@10.5.11/dist/preact.js', 'preact/hooks': 'npm:preact@10.5.11/hooks/dist/hooks.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' }, 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' } }, babelOptions: { sourceMaps: false, stage0: true } });