Feel free to share demo-related thoughts here.
If you have technical questions, please create a support ticket in the DevExpress Support Center.
Thank you for the feedback!
If you have technical questions, please create a support ticket in the DevExpress Support Center.
Backend API
<div class="options-panel">
<div class="caption">Options</div>
<div class="options-container">
<div class="option">
<span>Column Chooser Mode:</span>
<dx-select-box
[inputAttr]="{ 'aria-label': 'Column Chooser Mode' }"
[dataSource]="['dragAndDrop', 'select']"
[(value)]="columnChooserMode"
></dx-select-box>
</div>
<div class="option">
<dx-check-box
text="Search Enabled"
[(value)]="searchEnabled"
></dx-check-box>
</div>
<div class="option">
<dx-check-box
text="Allow Select All"
[(value)]="allowSelectAll"
[disabled]="columnChooserMode !== 'select'"
></dx-check-box>
</div>
<div class="option">
<dx-check-box
text="Select By Click On Item"
[(value)]="selectByClick"
[disabled]="columnChooserMode !== 'select'"
></dx-check-box>
</div>
<div class="option">
<dx-check-box
text="Allow Column Reordering"
[(value)]="allowColumnReordering"
></dx-check-box>
</div>
</div>
</div>
<dx-card-view
[dataSource]="employees"
keyExpr="ID"
cardsPerRow="auto"
[cardMinWidth]="300"
[allowColumnReordering]="allowColumnReordering"
>
<dxo-card-view-search-panel [visible]="true"></dxo-card-view-search-panel>
<dxo-card-view-column-chooser
[enabled]="true"
[mode]="columnChooserMode"
height="340px"
>
<dxo-card-view-column-chooser-search [enabled]="searchEnabled">
</dxo-card-view-column-chooser-search>
<dxo-card-view-column-chooser-selection
[allowSelectAll]="allowSelectAll"
[selectByClick]="selectByClick"
></dxo-card-view-column-chooser-selection>
</dxo-card-view-column-chooser>
<dxo-card-view-card-cover
[altExpr]="altExpr"
[imageExpr]="imageExpr"
></dxo-card-view-card-cover>
<dxi-card-view-column
dataField="FullName"
[calculateFieldValue]="calculateFullName"
[allowHiding]="false"
></dxi-card-view-column>
<dxi-card-view-column
dataField="Birth_Date"
dataType="date"
></dxi-card-view-column>
<dxi-card-view-column
dataField="Hire_Date"
dataType="date"
></dxi-card-view-column>
<dxi-card-view-column dataField="Position"></dxi-card-view-column>
<dxi-card-view-column dataField="Department"></dxi-card-view-column>
<dxi-card-view-column dataField="State"></dxi-card-view-column>
<dxi-card-view-column dataField="City"></dxi-card-view-column>
<dxi-card-view-column
dataField="Phone"
[allowHiding]="false"
></dxi-card-view-column>
<dxi-card-view-column
dataField="Email"
[visible]="false"
></dxi-card-view-column>
</dx-card-view>
import { NgModule, Component, enableProdMode, ViewChild } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { DxCardViewComponent, DxCardViewModule, DxSelectBoxModule, DxCheckBoxModule } from 'devextreme-angular';
import { Employee, Service } from './app.service';
if (!/localhost/.test(document.location.host)) {
enableProdMode();
}
let modulePrefix = '';
// @ts-ignore
if (window && window.config?.packageConfigPaths) {
modulePrefix = '/app';
}
@Component({
selector: 'demo-app',
templateUrl: `app/app.component.html`,
styleUrls: [`app/app.component.css`],
providers: [Service],
})
export class AppComponent {
employees: Employee[];
columnChooserMode = 'select';
allowColumnReordering = false;
searchEnabled = true;
allowSelectAll = true;
selectByClick = true;
constructor(service: Service) {
this.employees = service.getEmployees();
}
altExpr({ First_Name, Last_Name }: Employee): string {
return `Photo of ${First_Name} ${Last_Name}`;
}
imageExpr({ First_Name, Last_Name }: Employee): string {
return `../../../../images/employees/new/${First_Name} ${Last_Name}.jpg`;
}
calculateFullName({ First_Name, Last_Name }: Employee): string {
return `${First_Name} ${Last_Name}`
}
}
@NgModule({
imports: [
BrowserModule,
DxCardViewModule,
DxSelectBoxModule,
DxCheckBoxModule,
],
declarations: [AppComponent],
bootstrap: [AppComponent],
})
export class AppModule { }
platformBrowserDynamic().bootstrapModule(AppModule);
.options-panel {
margin-top: 20px;
padding: 20px;
background-color: rgba(191, 191, 191, 0.15);
}
.options-container {
display: flex;
flex-wrap: wrap;
align-items: center;
}
.caption {
font-size: 18px;
font-weight: 500;
}
.option {
margin: 10px;
display: flex;
align-items: center;
width: fit-content;
}
.option > .dx-selectbox {
width: 200px;
display: inline-block;
vertical-align: middle;
}
.option > span {
margin-right: 10px;
}
import { Injectable } from '@angular/core';
export interface Employee {
ID: number;
First_Name: string;
Last_Name: string;
Position: string;
Address: string;
City: string;
Email: string;
Skype: string;
Phone: string;
Birth_Date: string;
Hire_Date: string;
Department: string;
State: string;
}
const employees: Employee[] = [{
'ID': 3,
'First_Name': 'Arthur',
'Last_Name': 'Miller',
'Position': 'CTO',
'Address': '3800 Homer St.',
'City': 'Los Angeles',
'Email': 'arthurm@dx-email.com',
'Skype': 'arthurm_DX_skype',
'Phone': '3105558583',
'Birth_Date': '1972-07-11T00:00:00',
'Hire_Date': '2007-12-18T00:00:00',
'Department': 'Management',
'State': 'California'
}, {
'ID': 4,
'First_Name': 'Robert',
'Last_Name': 'Reagan',
'Position': 'CMO',
'Address': '4 Westmoreland Pl.',
'City': 'Pasadena',
'Email': 'robertr@dx-email.com',
'Skype': 'robertr_DX_skype',
'Phone': '8185552387',
'Birth_Date': '1974-09-07T00:00:00',
'Hire_Date': '2002-11-08T00:00:00',
'Department': 'Management',
'State': 'California'
}, {
'ID': 5,
'First_Name': 'Greta',
'Last_Name': 'Sims',
'Position': 'HR Manager',
'Address': '1700 S Grandview Dr.',
'City': 'Alhambra',
'Email': 'gretas@dx-email.com',
'Skype': 'gretas_DX_skype',
'Phone': '8185556546',
'Birth_Date': '1977-11-22T00:00:00',
'Hire_Date': '1998-04-23T00:00:00',
'Department': 'Human Resources',
'State': 'California'
}, {
'ID': 6,
'First_Name': 'Brett',
'Last_Name': 'Wade',
'Position': 'IT Manager',
'Address': '1120 Old Mill Rd.',
'City': 'San Marino',
'Email': 'brettw@dx-email.com',
'Skype': 'brettw_DX_skype',
'Phone': '6265550358',
'Birth_Date': '1968-12-01T00:00:00',
'Hire_Date': '2009-03-06T00:00:00',
'Department': 'IT',
'State': 'California'
}, {
'ID': 7,
'First_Name': 'Sandra',
'Last_Name': 'Johnson',
'Position': 'Controller',
'Address': '4600 N Virginia Rd.',
'City': 'Long Beach',
'Email': 'sandraj@dx-email.com',
'Skype': 'sandraj_DX_skype',
'Phone': '5625552082',
'Birth_Date': '1974-11-15T00:00:00',
'Hire_Date': '2005-05-11T00:00:00',
'Department': 'Human Resources',
'State': 'California'
}, {
'ID': 10,
'First_Name': 'Kevin',
'Last_Name': 'Carter',
'Position': 'Shipping Manager',
'Address': '424 N Main St.',
'City': 'Los Angeles',
'Email': 'kevinc@dx-email.com',
'Skype': 'kevinc_DX_skype',
'Phone': '2135552840',
'Birth_Date': '1978-01-09T00:00:00',
'Hire_Date': '2009-08-11T00:00:00',
'Department': 'Shipping',
'State': 'California'
}, {
'ID': 14,
'First_Name': 'Victor',
'Last_Name': 'Norris',
'Position': 'Shipping Assistant',
'Address': '811 West 7th St.',
'City': 'Los Angeles',
'Email': 'victorn@dx-email.com',
'Skype': 'victorn_DX_skype',
'Phone': '2135559278',
'Birth_Date': '1986-07-23T00:00:00',
'Hire_Date': '2012-07-23T00:00:00',
'Department': 'Shipping',
'State': 'California'
}, {
'ID': 15,
'First_Name': 'Mary',
'Last_Name': 'Stern',
'Position': 'Shipping Assistant',
'Address': '113 N Cedar St.',
'City': 'Glendale',
'Email': 'marys@dx-email.com',
'Skype': 'marys_DX_skype',
'Phone': '8185557857',
'Birth_Date': '1982-04-08T00:00:00',
'Hire_Date': '2012-08-12T00:00:00',
'Department': 'Shipping',
'State': 'California'
}, {
'ID': 16,
'First_Name': 'Robin',
'Last_Name': 'Cosworth',
'Position': 'Shipping Assistant',
'Address': '501 N Main St.',
'City': 'Los Angeles',
'Email': 'robinc@dx-email.com',
'Skype': 'robinc_DX_skype',
'Phone': '8185550942',
'Birth_Date': '1981-06-12T00:00:00',
'Hire_Date': '2012-09-01T00:00:00',
'Department': 'Shipping',
'State': 'California'
}, {
'ID': 17,
'First_Name': 'Kelly',
'Last_Name': 'Rodriguez',
'Position': 'Support Assistant',
'Address': '1601 W Mountain St.',
'City': 'Glendale',
'Email': 'kellyr@dx-email.com',
'Skype': 'kellyr_DX_skype',
'Phone': '8185559248',
'Birth_Date': '1988-05-11T00:00:00',
'Hire_Date': '2012-10-13T00:00:00',
'Department': 'Support',
'State': 'California'
}, {
'ID': 18,
'First_Name': 'James',
'Last_Name': 'Anderson',
'Position': 'Support Assistant',
'Address': '4800 Hollywood Blvd',
'City': 'Los Angeles',
'Email': 'jamesa@dx-email.com',
'Skype': 'jamesa_DX_skype',
'Phone': '3235554702',
'Birth_Date': '1987-01-29T00:00:00',
'Hire_Date': '2012-10-18T00:00:00',
'Department': 'Support',
'State': 'California'
}, {
'ID': 20,
'First_Name': 'Olivia',
'Last_Name': 'Peyton',
'Position': 'Sales Assistant',
'Address': '807 W Paseo Del Mar',
'City': 'San Pedro',
'Email': 'oliviap@dx-email.com',
'Skype': 'oliviap_DX_skype',
'Phone': '3105552728',
'Birth_Date': '1981-06-03T00:00:00',
'Hire_Date': '2012-05-14T00:00:00',
'Department': 'Sales',
'State': 'California'
}, {
'ID': 21,
'First_Name': 'Taylor',
'Last_Name': 'Riley',
'Position': 'Network Admin',
'Address': '7776 Torreyson Dr',
'City': 'West Hollywood',
'Email': 'taylorr@dx-email.com',
'Skype': 'taylorr_DX_skype',
'Phone': '3105557276',
'Birth_Date': '1982-08-14T00:00:00',
'Hire_Date': '2012-04-14T00:00:00',
'Department': 'IT',
'State': 'California'
}, {
'ID': 22,
'First_Name': 'Amelia',
'Last_Name': 'Harper',
'Position': 'Network Admin',
'Address': '527 W 7th St',
'City': 'Los Angeles',
'Email': 'ameliah@dx-email.com',
'Skype': 'ameliah_DX_skype',
'Phone': '2135554276',
'Birth_Date': '1983-11-19T00:00:00',
'Hire_Date': '2011-02-10T00:00:00',
'Department': 'IT',
'State': 'California'
}, {
'ID': 25,
'First_Name': 'Karen',
'Last_Name': 'Goodson',
'Position': 'Programmer',
'Address': '309 Monterey Rd',
'City': 'South Pasadena',
'Email': 'kareng@dx-email.com',
'Skype': 'kareng_DX_skype',
'Phone': '6265550908',
'Birth_Date': '1987-04-26T00:00:00',
'Hire_Date': '2011-03-14T00:00:00',
'Department': 'IT',
'State': 'California'
}, {
'ID': 26,
'First_Name': 'Marcus',
'Last_Name': 'Orbison',
'Position': 'Travel Coordinator',
'Address': '501 N Main St',
'City': 'Los Angeles',
'Email': 'marcuso@dx-email.com',
'Skype': 'marcuso_DX_skype',
'Phone': '2135557098',
'Birth_Date': '1982-03-02T00:00:00',
'Hire_Date': '2005-05-19T00:00:00',
'Department': 'Human Resources',
'State': 'California'
}, {
'ID': 28,
'First_Name': 'Morgan',
'Last_Name': 'Kennedy',
'Position': 'Graphic Designer',
'Address': '11222 Dilling St',
'City': 'San Fernando Valley',
'Email': 'morgank@dx-email.com',
'Skype': 'morgank_DX_skype',
'Phone': '8185558238',
'Birth_Date': '1984-07-17T00:00:00',
'Hire_Date': '2012-01-11T00:00:00',
'Department': 'IT',
'State': 'California'
}, {
'ID': 29,
'First_Name': 'Violet',
'Last_Name': 'Bailey',
'Position': 'Jr Graphic Designer',
'Address': '1418 Descanso Dr',
'City': 'La Canada',
'Email': 'violetb@dx-email.com',
'Skype': 'violetb_DX_skype',
'Phone': '8185552478',
'Birth_Date': '1985-06-10T00:00:00',
'Hire_Date': '2012-01-19T00:00:00',
'Department': 'IT',
'State': 'California'
}, {
'ID': 32,
'First_Name': 'Bart',
'Last_Name': 'Arnaz',
'Position': 'Director of Engineering',
'Address': '13109 Old Myford Rd',
'City': 'Irvine',
'Email': 'barta@dx-email.com',
'Skype': 'barta_DX_skype',
'Phone': '7145552000',
'Birth_Date': '1979-11-01T00:00:00',
'Hire_Date': '2008-06-29T00:00:00',
'Department': 'Engineering',
'State': 'California'
}, {
'ID': 33,
'First_Name': 'Leah',
'Last_Name': 'Simpson',
'Position': 'Test Coordinator',
'Address': '6755 Newlin Ave',
'City': 'Whittier',
'Email': 'leahs@dx-email.com',
'Skype': 'leahs_DX_skype',
'Phone': '5625595830',
'Birth_Date': '1983-04-19T00:00:00',
'Hire_Date': '2009-02-14T00:00:00',
'Department': 'Engineering',
'State': 'California'
}, {
'ID': 36,
'First_Name': 'Samantha',
'Last_Name': 'Piper',
'Position': 'Engineer',
'Address': '200 E Ave 43',
'City': 'Los Angeles',
'Email': 'samanthap@dx-email.com',
'Skype': 'samanthap_DX_skype',
'Phone': '3235554512',
'Birth_Date': '1984-12-01T00:00:00',
'Hire_Date': '2008-01-22T00:00:00',
'Department': 'Engineering',
'State': 'California'
}, {
'ID': 38,
'First_Name': 'Terry',
'Last_Name': 'Bradley',
'Position': 'QA Engineer',
'Address': '4595 Cochran St',
'City': 'Simi Valley',
'Email': 'terryb@dx-email.com',
'Skype': 'terryb_DX_skype',
'Phone': '8055552788',
'Birth_Date': '1984-01-09T00:00:00',
'Hire_Date': '2007-10-18T00:00:00',
'Department': 'Engineering',
'State': 'California'
}, {
'ID': 40,
'First_Name': 'Lucy',
'Last_Name': 'Ball',
'Position': 'Sales Assistant',
'Address': '203 Chautauqua Blvd',
'City': 'Pacific Palisades',
'Email': 'lucyb@dx-email.com',
'Skype': 'lucyb_DX_skype',
'Phone': '3105553357',
'Birth_Date': '1986-08-09T00:00:00',
'Hire_Date': '2006-07-19T00:00:00',
'Department': 'Sales',
'State': 'California'
}, {
'ID': 44,
'First_Name': 'Clark',
'Last_Name': 'Morgan',
'Position': 'Retail Sales Manager',
'Address': '4202 Alhambra Ave',
'City': 'Martinez',
'Email': 'clarkm@dx-email.com',
'Skype': 'clarkm_DX_skype',
'Phone': '9255552525',
'Birth_Date': '1988-04-07T00:00:00',
'Hire_Date': '2012-04-11T00:00:00',
'Department': 'Sales',
'State': 'California'
}, {
'ID': 45,
'First_Name': 'Todd',
'Last_Name': 'Hoffman',
'Position': 'Retail Sales Manager',
'Address': '2647 Arroyo Rd',
'City': 'Livermore',
'Email': 'toddh@dx-email.com',
'Skype': 'toddh_DX_skype',
'Phone': '9255553579',
'Birth_Date': '1987-03-25T00:00:00',
'Hire_Date': '2012-04-19T00:00:00',
'Department': 'Sales',
'State': 'California'
}, {
'ID': 47,
'First_Name': 'Lincoln',
'Last_Name': 'Bartlett',
'Position': 'Sales Assistant',
'Address': '800 N Alameda St',
'City': 'Los Angeles',
'Email': 'lincolnb@dx-email.com',
'Skype': 'lincoln_DX_skype',
'Phone': '2135558272',
'Birth_Date': '1990-08-02T00:00:00',
'Hire_Date': '2012-05-11T00:00:00',
'Department': 'Sales',
'State': 'California'
}, {
'ID': 48,
'First_Name': 'Brad',
'Last_Name': 'Farkus',
'Position': 'Engineer',
'Address': '1635 Woods Drive',
'City': 'Los Angeles',
'Email': 'bradf@dx-email.com',
'Skype': 'brad_DX_skype',
'Phone': '2135553626',
'Birth_Date': '1991-03-17T00:00:00',
'Hire_Date': '2010-04-15T00:00:00',
'Department': 'Engineering',
'State': 'California'
}, {
'ID': 50,
'First_Name': 'Dallas',
'Last_Name': 'Lou',
'Position': 'Shipping Assistant',
'Address': '1 Bunker Hill',
'City': 'Los Angeles',
'Email': 'dallas@dx-email.com',
'Skype': 'dallas_DX_skype',
'Phone': '2135558357',
'Birth_Date': '1994-08-19T00:00:00',
'Hire_Date': '2012-06-18T00:00:00',
'Department': 'Shipping',
'State': 'California'
}, {
'ID': 51,
'First_Name': 'Stu',
'Last_Name': 'Pizaro',
'Position': 'Engineer',
'Address': '200 N. Spring St',
'City': 'Los Angeles',
'Email': 'stu@dx-email.com',
'Skype': 'stu_DX_skype',
'Phone': '2135552552',
'Birth_Date': '1985-09-11T00:00:00',
'Hire_Date': '2011-07-19T00:00:00',
'Department': 'Engineering',
'State': 'California'
}];
@Injectable()
export class Service {
getEmployees() {
return employees;
}
}
// 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:
// https://js.devexpress.com/Documentation/Guide/Angular_Components/Getting_Started/Create_a_DevExtreme_Application/
const componentNames = [
'accordion',
'action-sheet',
'autocomplete',
'bar-gauge',
'box',
'bullet',
'button-group',
'button',
'calendar',
'card-view',
'chart',
'chat',
'check-box',
'circular-gauge',
'color-box',
'context-menu',
'data-grid',
'date-box',
'date-range-box',
'defer-rendering',
'diagram',
'draggable',
'drawer',
'drop-down-box',
'drop-down-button',
'file-manager',
'file-uploader',
'filter-builder',
'form',
'funnel',
'gallery',
'gantt',
'html-editor',
'linear-gauge',
'list',
'load-indicator',
'load-panel',
'lookup',
'map',
'menu',
'multi-view',
'nested',
'number-box',
'pagination',
'pie-chart',
'pivot-grid-field-chooser',
'pivot-grid',
'polar-chart',
'popover',
'popup',
'progress-bar',
'radio-group',
'range-selector',
'range-slider',
'recurrence-editor',
'resizable',
'responsive-box',
'sankey',
'scheduler',
'scroll-view',
'select-box',
'slider',
'sortable',
'sparkline',
'speed-dial-action',
'splitter',
'stepper',
'switch',
'tab-panel',
'tabs',
'tag-box',
'text-area',
'text-box',
'tile-view',
'toast',
'toolbar',
'tooltip',
'tree-list',
'tree-map',
'tree-view',
'validation-group',
'validation-summary',
'validator',
'vector-map',
];
window.exports = window.exports || {};
window.config = {
transpiler: 'ts',
typescriptOptions: {
module: 'system',
emitDecoratorMetadata: true,
experimentalDecorators: true,
},
meta: {
'typescript': {
'exports': 'ts',
},
'devextreme/time_zone_utils.js': {
'esModule': true,
},
'devextreme/localization.js': {
'esModule': true,
},
'devextreme/viz/palette.js': {
'esModule': true,
},
'@angular/platform-browser-dynamic': {
'esModule': true,
},
'@angular/platform-browser': {
'esModule': true,
},
'@angular/core': {
'esModule': true,
},
'@angular/common': {
'esModule': true,
},
'@angular/common/http': {
'esModule': true,
},
'@angular/animations': {
'esModule': true,
},
'@angular/forms': {
'esModule': true,
},
'openai': {
'esModule': true,
},
},
paths: {
'npm:': 'https://cdn.jsdelivr.net/npm/',
'bundles:': '../../../../bundles/',
'externals:': '../../../../bundles/externals/',
},
map: {
'ts': 'npm:plugin-typescript@8.0.0/lib/plugin.js',
'typescript': 'npm:typescript@4.2.4/lib/typescript.js',
'jszip': 'npm:jszip@3.10.1/dist/jszip.min.js',
/* @angular */
'@angular/compiler': 'bundles:@angular/compiler.umd.js',
'@angular/platform-browser-dynamic': 'bundles:@angular/platform-browser-dynamic.umd.js',
'@angular/core': 'bundles:@angular/core.umd.js',
'@angular/core/primitives/signals': 'bundles:@angular/core.primitives.signals.umd.js',
'@angular/common': 'bundles:@angular/common.umd.js',
'@angular/common/http': 'bundles:@angular/common-http.umd.js',
'@angular/platform-browser': 'bundles:@angular/platform-browser.umd.js',
'@angular/platform-browser/animations': 'bundles:@angular/platform-browser.umd.js',
'@angular/forms': 'bundles:@angular/forms.umd.js',
/* devextreme */
'devextreme': 'npm:devextreme@25.1.3/cjs',
'devextreme-quill': 'npm:devextreme-quill@1.7.3/dist/dx-quill.min.js',
'devexpress-diagram': 'npm:devexpress-diagram@2.2.19',
'devexpress-gantt': 'npm:devexpress-gantt@4.1.62',
/* devextreme-angular umd maps */
'devextreme-angular': 'bundles:devextreme-angular/devextreme-angular.umd.js',
'devextreme-angular/common/ai-integration': 'bundles:devextreme-angular/devextreme-angular-common-ai-integration.umd.js',
'devextreme-angular/core': 'bundles:devextreme-angular/devextreme-angular-core.umd.js',
'devextreme-angular/common/charts': 'bundles:devextreme-angular/devextreme-angular-common-charts.umd.js',
'devextreme-angular/common/core/animation': 'bundles:devextreme-angular/devextreme-angular-common-core-animation.umd.js',
'devextreme-angular/common/core/environment': 'bundles:devextreme-angular/devextreme-angular-common-core-environment.umd.js',
'devextreme-angular/common/core/events': 'bundles:devextreme-angular/devextreme-angular-common-core-events.umd.js',
'devextreme-angular/common/core/localization': 'bundles:devextreme-angular/devextreme-angular-common-core-localization.umd.js',
'devextreme-angular/common/core': 'bundles:devextreme-angular/devextreme-angular-common-core.umd.js',
'devextreme-angular/common/data/custom-store': 'bundles:devextreme-angular/devextreme-angular-common-data-custom-store.umd.js',
'devextreme-angular/common/data': 'bundles:devextreme-angular/devextreme-angular-common-data.umd.js',
'devextreme-angular/common/export/excel': 'bundles:devextreme-angular/devextreme-angular-common-export-excel.umd.js',
'devextreme-angular/common/export/pdf': 'bundles:devextreme-angular/devextreme-angular-common-export-pdf.umd.js',
'devextreme-angular/common/export': 'bundles:devextreme-angular/devextreme-angular-common-export.umd.js',
'devextreme-angular/common/grids': 'bundles:devextreme-angular/devextreme-angular-common-grids.umd.js',
'devextreme-angular/common': 'bundles:devextreme-angular/devextreme-angular-common.umd.js',
'devextreme-angular/http': 'bundles:devextreme-angular/devextreme-angular-http.umd.js',
...componentNames.reduce((acc, name) => {
acc[`devextreme-angular/ui/${name}`] = `bundles:devextreme-angular/devextreme-angular-ui-${name}.umd.js`;
acc[`devextreme-angular/ui/${name}/nested`] = `bundles:devextreme-angular/devextreme-angular-ui-${name}-nested.umd.js`;
return acc;
}, {}),
'tslib': 'npm:tslib/tslib.js',
'rxjs': 'npm:rxjs@7.5.3/dist/bundles/rxjs.umd.js',
'rxjs/operators': 'npm:rxjs@7.5.3/dist/cjs/operators/index.js',
'rrule': 'npm:rrule@2.6.4/dist/es5/rrule.js',
'luxon': 'npm:luxon@3.4.4/build/global/luxon.min.js',
'es6-object-assign': 'npm:es6-object-assign',
'inferno': 'npm:inferno@8.2.3/dist/inferno.min.js',
'inferno-compat': 'npm:inferno-compat/dist/inferno-compat.min.js',
'inferno-create-element': 'npm:inferno-create-element@8.2.3/dist/inferno-create-element.min.js',
'inferno-dom': 'npm:inferno-dom/dist/inferno-dom.min.js',
'inferno-hydrate': 'npm:inferno-hydrate/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',
'@preact/signals-core': 'npm:@preact/signals-core@1.8.0/dist/signals-core.min.js',
// Prettier
'prettier/standalone': 'npm:prettier@2.8.8/standalone.js',
'prettier/parser-html': 'npm:prettier@2.8.8/parser-html.js',
},
packages: {
'app': {
main: './app.component.ts',
defaultExtension: 'ts',
},
'devextreme': {
defaultExtension: 'js',
},
'devextreme/events/utils': {
main: 'index',
},
'devextreme/common/core/events/utils': {
main: 'index',
},
'devextreme/events': {
main: 'index',
},
'es6-object-assign': {
main: './index.js',
defaultExtension: 'js',
},
'rxjs': {
defaultExtension: 'js',
},
'rxjs/operators': {
defaultExtension: 'js',
},
},
packageConfigPaths: [
'npm:@devextreme/*/package.json',
'npm:rxjs@7.5.3/package.json',
'npm:rxjs@7.5.3/operators/package.json',
'npm:devexpress-diagram@2.2.19/package.json',
'npm:devexpress-gantt@4.1.62/package.json',
],
};
System.config(window.config);
// System.import('@angular/compiler').catch(console.error.bind(console));
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" 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/25.1.3/css/dx.light.css" />
<script src="https://cdn.jsdelivr.net/npm/core-js@2.6.12/client/shim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/zone.js@0.14.10/bundles/zone.umd.js"></script>
<script src="https://cdn.jsdelivr.net/npm/reflect-metadata@0.1.13/Reflect.js"></script>
<script src="https://cdn.jsdelivr.net/npm/systemjs@0.21.3/dist/system.js"></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>
To display the CardView Column Chooser, click the column chooser icon in the CardView toolbar. You can specify the column chooser's position with the columnChooser.position property.
If the column chooser contains multiple hidden columns, assign true
to the search.enabled property to enable DevExtreme’s field search UI.
In this demo, use the checkboxes above the CardView to toggle search and selection features.
To hide a field programmatically, change the columns[].visible property to false
.