devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
145 lines (143 loc) • 5.6 kB
JavaScript
/**
* DevExtreme (esm/__internal/grids/new/card_view/main_view.js)
* Version: 25.1.3
* Build date: Wed Jun 25 2025
*
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
import {
createVNode,
createFragment,
createComponentVNode
} from "inferno";
import {
computed
} from "@preact/signals-core";
import {
ColumnChooserView
} from "../../../grids/new/grid_core/column_chooser/index";
import {
View
} from "../../../grids/new/grid_core/core/view";
import {
FilterPanelView
} from "../../../grids/new/grid_core/filtering/filter_panel/view";
import {
HeaderFilterPopupView
} from "../../../grids/new/grid_core/filtering/header_filter/index";
import {
KeyboardNavigationController
} from "../../../grids/new/grid_core/keyboard_navigation/index";
import {
PagerView
} from "../../../grids/new/grid_core/pager/view";
import {
ToolbarView
} from "../../../grids/new/grid_core/toolbar/view";
import {
A11yStatusContainer,
AccessibilityController
} from "../grid_core/accessibility/index";
import {
ConfigContext
} from "../grid_core/core/config_context";
import {
EditPopupView
} from "../grid_core/editing/popup/view";
import {
RootElementUpdater
} from "../grid_core/inferno_wrappers/root_element_updater";
import {
ContentView
} from "./content_view/view";
import {
ContextMenuView
} from "./context_menu/view";
import {
HeaderPanelView
} from "./header_panel/view";
import {
OptionsController
} from "./options_controller";
const CLASSES = {
cardView: "dx-cardview"
};
function MainViewComponent(_ref) {
let {
Toolbar: Toolbar,
Content: Content,
Pager: Pager,
HeaderPanel: HeaderPanel,
HeaderFilterPopup: HeaderFilterPopup,
FilterPanel: FilterPanel,
ColumnChooser: ColumnChooser,
ContextMenu: ContextMenu,
EditPopup: EditPopup,
config: config,
rootElementRef: rootElementRef,
accessibilityDescription: accessibilityDescription,
accessibilityStatus: accessibilityStatus,
onKeyDown: onKeyDown
} = _ref;
return createFragment([createComponentVNode(2, ConfigContext.Provider, {
value: config,
children: createComponentVNode(2, RootElementUpdater, {
rootElementRef: rootElementRef,
className: CLASSES.cardView,
children: createVNode(1, "div", "dx-cardview-root-container", [createComponentVNode(2, A11yStatusContainer, {
statusText: accessibilityStatus
}), createVNode(1, "div", "dx-cardview-header-container", [createComponentVNode(2, Toolbar), createComponentVNode(2, HeaderPanel)], 4), createComponentVNode(2, Content), createComponentVNode(2, FilterPanel), createVNode(1, "div", null, createComponentVNode(2, Pager), 0), createComponentVNode(2, HeaderFilterPopup), createComponentVNode(2, EditPopup), createComponentVNode(2, ColumnChooser), createComponentVNode(2, ContextMenu)], 4, {
role: "group",
"aria-label": accessibilityDescription,
onKeyDown: onKeyDown
})
})
})], 4)
}
export class MainView extends View {
constructor(content, pager, toolbar, headerPanel, headerFilterPopup, filterPanel, columnsChooser, editPopup, contextMenu, options, keyboardNavigation, accessibility) {
super();
this.content = content;
this.pager = pager;
this.toolbar = toolbar;
this.headerPanel = headerPanel;
this.headerFilterPopup = headerFilterPopup;
this.filterPanel = filterPanel;
this.columnsChooser = columnsChooser;
this.editPopup = editPopup;
this.contextMenu = contextMenu;
this.options = options;
this.keyboardNavigation = keyboardNavigation;
this.accessibility = accessibility;
this.component = MainViewComponent;
this.config = computed((() => ({
rtlEnabled: this.options.oneWay("rtlEnabled").value,
disabled: this.options.oneWay("disabled").value,
templatesRenderAsynchronously: this.options.oneWay("templatesRenderAsynchronously").value
})))
}
getProps() {
return computed((() => ({
Toolbar: this.toolbar.asInferno(),
Content: this.content.asInferno(),
Pager: this.pager.asInferno(),
HeaderPanel: this.headerPanel.asInferno(),
HeaderFilterPopup: this.headerFilterPopup.asInferno(),
FilterPanel: this.filterPanel.asInferno(),
ColumnChooser: this.columnsChooser.asInferno(),
EditPopup: this.editPopup.asInferno(),
ContextMenu: this.contextMenu.asInferno(),
config: this.config.value,
rootElementRef: {
current: this.root
},
onKeyDown: event => {
this.keyboardNavigation.onKeyDown(event)
},
accessibilityDescription: this.accessibility.componentDescription.value,
accessibilityStatus: this.accessibility.componentStatus.value
})))
}
}
MainView.dependencies = [ContentView, PagerView, ToolbarView, HeaderPanelView, HeaderFilterPopupView, FilterPanelView, ColumnChooserView, EditPopupView, ContextMenuView, OptionsController, KeyboardNavigationController, AccessibilityController];