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 { bootstrapApplication } from '@angular/platform-browser';
import { Component, enableProdMode, provideZoneChangeDetection } from '@angular/core';
import { 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],
imports: [
DxCardViewModule,
DxSelectBoxModule,
DxCheckBoxModule,
],
})
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}`;
}
}
bootstrapApplication(AppComponent, {
providers: [
provideZoneChangeDetection({ eventCoalescing: true, runCoalescing: true }),
],
});
.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',
'speech-to-text',
'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,
},
'zod': {
'esModule': true,
},
'zod-to-json-schema': {
'esModule': true,
},
},
paths: {
'npm:': 'https://cdn.jsdelivr.net/npm/',
'bundles:': '../../../../bundles/',
'externals:': '../../../../bundles/externals/',
'anti-forgery:': '../../../../shared/anti-forgery/',
},
map: {
'anti-forgery': 'anti-forgery:fetch-override.js',
'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/core/primitives/di': 'bundles:@angular/core.primitives.di.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@link:../../packages/devextreme/artifacts/npm/devextreme/cjs',
'devextreme-quill': 'npm:devextreme-quill@1.7.9/dist/dx-quill.min.js',
'devexpress-diagram': 'npm:devexpress-diagram@2.2.29',
'devexpress-gantt': 'npm:devexpress-gantt@4.1.69',
/* 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',
'devextreme-angular/core/tokens': 'bundles:devextreme-angular/devextreme-angular-core-tokens.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;
}, {}),
'zod': 'externals:zod.bundle.js',
'zod-to-json-schema': 'externals:zod-to-json-schema.bundle.js',
'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.14.1/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',
'zone.js': 'npm:zone.js@0.15.1/bundles/zone.umd.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.29/package.json',
'npm:devexpress-gantt@4.1.69/package.json',
],
};
window.process = {
env: {
NODE_ENV: 'production',
},
};
System.config(window.config);
// eslint-disable-next-line no-console
// System.import('@angular/compiler').catch(console.error.bind(console));
// eslint-disable-next-line
const useTgzInCSB = ['openai'];
let packagesInfo = {
"zod": {
"version": "3.24.4"
},
"zod-to-json-schema": {
"version": "3.24.6"
},
"@angular/core": {
"version": "21.2.17"
},
"core-js": {
"version": "2.6.12"
},
"typescript": {
"version": "5.9.3"
},
"zone.js": {
"version": "0.15.1"
}
};
<!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/26.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.15.1/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.