devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
56 lines (54 loc) • 2.19 kB
JavaScript
/**
* DevExtreme (cjs/__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/
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ToolbarController = void 0;
var _signalsCore = require("@preact/signals-core");
var _options_controller = require("../options_controller/options_controller");
var _const = require("./const");
var _utils = require("./utils");
function _extends() {
return _extends = Object.assign ? Object.assign.bind() : function(n) {
for (var e = 1; e < arguments.length; e++) {
var t = arguments[e];
for (var r in t) {
({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
}
}
return n
}, _extends.apply(null, arguments)
}
class ToolbarController {
constructor(options) {
this.options = options;
this.itemSubscriptions = {};
this.defaultItems = (0, _signalsCore.signal)({});
this.userItems = this.options.oneWay("toolbar.items");
this.items = (0, _signalsCore.computed)((() => (0, _utils.normalizeToolbarItems)((0, _utils.getSortedToolbarItems)(this.defaultItems.value), this.userItems.value, _const.DEFAULT_TOOLBAR_ITEMS)))
}
addDefaultItem(item) {
let needRender = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : (0, _signalsCore.signal)(true);
const {
name: name
} = item.peek();
this.itemSubscriptions[name] = (0, _signalsCore.effect)((() => {
const newDefaultItems = _extends({}, this.defaultItems.peek());
if (needRender.value) {
newDefaultItems[name] = item.value
} else {
delete newDefaultItems[name]
}
this.defaultItems.value = newDefaultItems
}))
}
}
exports.ToolbarController = ToolbarController;
ToolbarController.dependencies = [_options_controller.OptionsController];