Your search did not match any results.

Columns Adaptability

The Form widget can use different layouts depending on the screen width. The dependency between column count and the screen width is specified using the colCountByScreen option, which has a higher priority than the colCount and the minColWidth options. 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 Plunker
<div id="form-container"> <dx-form id="form" [formData]="employee" labelLocation="top" [minColWidth]="233" colCount="auto" [colCountByScreen]="colCountByScreen" [screenByWidth]="screen"></dx-form> <div class="options"> <div class="caption">Options</div> <div class="option"> <dx-check-box text="Set the count of columns regardless of screen size" [value]="true" (onValueChanged)="valueChanged($event)"></dx-check-box> </div> </div> </div>
import { NgModule, Component, ViewChild, enableProdMode } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { DxFormModule, DxCheckBoxModule } from 'devextreme-angular'; import { Employee, Service } from './app.service'; if(!/localhost/.test( { enableProdMode(); } @Component({ selector: 'demo-app', providers: [ Service ], templateUrl: 'app/app.component.html', styleUrls: ['app/app.component.css'] }) export class AppComponent { employee: Employee; colCountByScreen: Object; constructor( service: Service) { this.employee = service.getEmployee(); this.colCountByScreen = { md: 4, sm: 2 }; } screen(width) { return width < 720 ? "sm" : "md"; } valueChanged(e) { if (e.value) { this.colCountByScreen = { md: 4, sm: 2 } } else { this.colCountByScreen = null; } } } @NgModule({ imports: [ BrowserModule, DxCheckBoxModule, DxFormModule ], declarations: [AppComponent], bootstrap: [AppComponent] }) export class AppModule { } platformBrowserDynamic().bootstrapModule(AppModule);
/deep/ #form { margin: 10px; } /deep/ .options { padding: 20px; background-color: #f5f5f5; left: 0; position: absolute; bottom: 0; right: 0; } /deep/ .caption { font-size: 18px; font-weight: 500; } /deep/ .option { margin-top: 10px; }
import { Injectable } from '@angular/core'; export class Employee { ID: number; FirstName: string; LastName: string; CompanyName: string; Position: string; OfficeNo: string; BirthDate: Date; HireDate: Date; Address: string; City: string; State: string; Zipcode: string; Phone: string; Email: string; Skype: string; } let employee: Employee = { 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: "", Skype: "jheart_DX_skype" }; @Injectable() export class Service { getEmployee() : Employee { return employee; } }
// In real applications, you should not transpile code in the browser. You can see how to create your own application with Angular and DevExtreme here: // System.config({ transpiler: 'ts', typescriptOptions: { module: "commonjs", emitDecoratorMetadata: true, experimentalDecorators: true }, meta: { 'typescript': { "exports": "ts" } }, paths: { 'npm:': '' }, map: { 'ts': 'npm:plugin-typescript@7.0.6/lib/plugin.js', 'typescript': 'npm:typescript@2.2.2/lib/typescript.js', '@angular/core': 'npm:@angular/core@4.1.0/bundles/core.umd.js', '@angular/common': 'npm:@angular/common@4.1.0/bundles/common.umd.js', '@angular/compiler': 'npm:@angular/compiler@4.1.0/bundles/compiler.umd.js', '@angular/platform-browser': 'npm:@angular/platform-browser@4.1.0/bundles/platform-browser.umd.js', '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic@4.1.0/bundles/platform-browser-dynamic.umd.js', '@angular/http': 'npm:@angular/http@4.1.0/bundles/http.umd.js', '@angular/router': 'npm:@angular/router@4.1.0/bundles/router.umd.js', '@angular/forms': 'npm:@angular/forms@4.1.0/bundles/forms.umd.js', 'rxjs': 'npm:rxjs@5.3.1', 'devextreme': 'npm:devextreme@17.1', 'jquery': 'npm:jquery@3.1.1/dist/jquery.min.js', 'jszip': 'npm:jszip@3.1.3/dist/jszip.min.js', 'devextreme-angular': 'npm:devextreme-angular@17.1' }, packages: { 'app': { main: './app.component.ts', defaultExtension: 'ts' }, 'devextreme': { defaultExtension: 'js' }, 'devextreme-angular': { main: 'index.js', defaultExtension: 'js' } } });
<!DOCTYPE html> <html xmlns=""> <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="" /> <link rel="stylesheet" type="text/css" href="" /> <link rel="dx-theme" data-theme="generic.light" href="" /> <script src=""></script> <script src=""></script> <script src=""></script> <script src=""></script> <script src="config.js"></script> <script> System.import('app').catch(console.error.bind(console)); </script> </head> <body class="dx-viewport"> <div class="demo-container"> <demo-app>Loading...</demo-app> </div> </body> </html>