devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
167 lines (166 loc) • 6.69 kB
JavaScript
/**
* DevExtreme (esm/__internal/grids/new/grid_core/widget.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 _extends from "@babel/runtime/helpers/esm/extends";
import {
extend
} from "../../../../core/utils/extend";
import Widget from "../../../../ui/widget/ui.widget";
import {
signal
} from "@preact/signals-core";
import {
DIContext
} from "../../../core/di/index";
import {
infernoRenderer
} from "../../../core/m_inferno_renderer";
import {
SearchView
} from "../../../grids/new/grid_core/search/view";
import {
rerender
} from "inferno";
import {
AccessibilityController
} from "./accessibility/index";
import * as ColumnChooserModule from "./column_chooser/index";
import {
CompatibilityColumnsController
} from "./columns_controller/compatibility";
import * as ColumnsControllerModule from "./columns_controller/index";
import * as DataControllerModule from "./data_controller/index";
import * as di from "./di";
import * as EditingModule from "./editing/index";
import {
EditPopupView
} from "./editing/popup/view";
import {
ErrorController
} from "./error_controller/error_controller";
import {
CompatibilityFilterSyncController,
FilterSyncController
} from "./filtering/filter_sync/index";
import {
CompatibilityHeaderFilterController,
HeaderFilterController
} from "./filtering/header_filter/index";
import {
HeaderFilterViewController
} from "./filtering/header_filter/view_controller";
import * as FilterControllerModule from "./filtering/index";
import {
ItemsController
} from "./items_controller/items_controller";
import {
LifeCycleController
} from "./lifecycle/controller";
import {
MainView
} from "./main_view";
import {
defaultOptions,
defaultOptionsRules
} from "./options";
import {
PagerView
} from "./pager/view";
import * as SearchControllerModule from "./search/index";
import * as SelectionControllerModule from "./selection/index";
import * as SortingControllerModule from "./sorting_controller/index";
import {
ToolbarController
} from "./toolbar/controller";
import {
ToolbarView
} from "./toolbar/view";
import {
WidgetMock
} from "./widget_mock";
export class GridCoreNewBase extends Widget {
_registerDIContext() {
this.diContext = new DIContext;
di.register(this.diContext)
}
_initWidgetMock() {
this.diContext.registerInstance(WidgetMock, new WidgetMock(this, this.diContext.get(DataControllerModule.CompatibilityDataController), this.diContext.get(CompatibilityColumnsController), this.diContext.get(CompatibilityHeaderFilterController), this.diContext.get(CompatibilityFilterSyncController)))
}
_initDIContext() {
this.dataController = this.diContext.get(DataControllerModule.DataController);
this.columnsController = this.diContext.get(ColumnsControllerModule.ColumnsController);
this.sortingController = this.diContext.get(SortingControllerModule.SortingController);
this.selectionController = this.diContext.get(SelectionControllerModule.Controller);
this.itemsController = this.diContext.get(ItemsController);
this.toolbarController = this.diContext.get(ToolbarController);
this.toolbarView = this.diContext.get(ToolbarView);
this.editingController = this.diContext.get(EditingModule.Controller);
this.editPopupView = this.diContext.get(EditPopupView);
this.pagerView = this.diContext.get(PagerView);
this.searchController = this.diContext.get(SearchControllerModule.SearchController);
this.columnChooserController = this.diContext.get(ColumnChooserModule.ColumnChooserController);
this.columnChooserView = this.diContext.get(ColumnChooserModule.ColumnChooserView);
this.errorController = this.diContext.get(ErrorController);
this.filterController = this.diContext.get(FilterControllerModule.FilterController);
this.headerFilterController = this.diContext.get(HeaderFilterController);
this.filterPanelView = this.diContext.get(FilterControllerModule.FilterPanelView);
this.headerFilterViewController = this.diContext.get(HeaderFilterViewController);
this.accessibilityController = this.diContext.get(AccessibilityController);
this.filterSyncController = this.diContext.get(FilterSyncController);
this.searchView = this.diContext.get(SearchView)
}
_initLifeCycleController() {
this.lifeCycleController = this.diContext.get(LifeCycleController);
this.lifeCycleController.provideContentReadyCallback((() => {
this._fireContentReadyAction()
}))
}
_init() {
super._init();
this.initialized = signal(false);
this._registerDIContext();
this._initWidgetMock();
this._initDIContext();
this._initLifeCycleController()
}
_getDefaultOptions() {
return _extends({}, super._getDefaultOptions(), extend(true, {}, defaultOptions))
}
_defaultOptionsRules() {
return super._defaultOptionsRules().concat(defaultOptionsRules)
}
_initializeComponent() {
super._initializeComponent();
this.initialized.value = true
}
_renderContent() {
this._renderContentImpl()
}
_initMarkup() {
super._initMarkup();
this.renderSubscription = this.diContext.get(MainView).render(this.$element().get(0));
rerender()
}
_optionChanged(args) {
[this.filterPanelView].forEach((c => {
if (c.isCompatibilityMode()) {
c.optionChanged(args)
}
}));
if (!args.handled) {
super._optionChanged(args)
}
}
_clean() {
var _this$renderSubscript;
null === (_this$renderSubscript = this.renderSubscription) || void 0 === _this$renderSubscript || _this$renderSubscript.call(this);
infernoRenderer.renderIntoContainer(null, this.$element().get(0), true);
super._clean()
}
}
export class GridCoreNew extends(ColumnsControllerModule.PublicMethods(DataControllerModule.PublicMethods(SortingControllerModule.PublicMethods(FilterControllerModule.PublicMethods(ColumnChooserModule.PublicMethods(SelectionControllerModule.PublicMethods(SearchControllerModule.PublicMethods(EditingModule.PublicMethods(GridCoreNewBase))))))))) {}