devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
50 lines (49 loc) • 1.7 kB
JavaScript
/**
* DevExtreme (esm/__internal/grids/new/grid_core/toolbar/controller.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 {
computed,
effect,
signal
} from "@preact/signals-core";
import {
OptionsController
} from "../options_controller/options_controller";
import {
DEFAULT_TOOLBAR_ITEMS
} from "./const";
import {
getSortedToolbarItems,
normalizeToolbarItems
} from "./utils";
export class ToolbarController {
constructor(options) {
this.options = options;
this.itemSubscriptions = {};
this.defaultItems = signal({});
this.userItems = this.options.oneWay("toolbar.items");
this.items = computed((() => normalizeToolbarItems(getSortedToolbarItems(this.defaultItems.value), this.userItems.value, DEFAULT_TOOLBAR_ITEMS)))
}
addDefaultItem(item) {
let needRender = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : signal(true);
const {
name: name
} = item.peek();
this.itemSubscriptions[name] = effect((() => {
const newDefaultItems = _extends({}, this.defaultItems.peek());
if (needRender.value) {
newDefaultItems[name] = item.value
} else {
delete newDefaultItems[name]
}
this.defaultItems.value = newDefaultItems
}))
}
}
ToolbarController.dependencies = [OptionsController];