devextreme
Version:
JavaScript/TypeScript Component Suite for Responsive Web Development
66 lines (65 loc) • 2.8 kB
JavaScript
/**
* DevExtreme (cjs/__internal/scheduler/appointment_popup/m_customize_form_items.js)
* Version: 25.2.5
* Build date: Fri Feb 20 2026
*
* Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.customizeFormItems = void 0;
var _extend = require("../../../core/utils/extend");
const isGroupItem = item => "items" in item;
const createFormItemFromConfig = configItem => "string" === typeof configItem ? {
itemType: "simple",
editorType: "dxTextBox",
name: configItem,
dataField: configItem
} : configItem;
const buildFormItemsMap = function(items) {
let map = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : new Map;
return items.reduce(((accumulator, item) => {
if (item.name) {
accumulator.set(item.name, Object.assign({}, item))
}
return buildFormItemsMap(isGroupItem(item) ? item.items ?? [] : [], accumulator)
}), map)
};
const removeItemFromGroups = (itemName, itemsMap) => {
Array.from(itemsMap.values()).forEach((group => {
if (isGroupItem(group) && group.items) {
group.items = group.items.filter((item => item.name !== itemName))
}
}))
};
const getItemName = customItem => "string" === typeof customItem ? customItem : customItem.name;
const shouldMergeWithExisting = customItems => "object" === typeof customItems;
const hasChildItems = customItems => "object" === typeof customItems && isGroupItem(customItems) && Boolean(customItems.items);
const customizeFormItems = (items, userConfig) => {
if (!userConfig) {
return items
}
const defaultItemsMap = buildFormItemsMap(items);
const customize = userItems => userItems.map((customItems => {
const formItem = (customItems => {
const itemName = getItemName(customItems);
const defaultItem = itemName ? defaultItemsMap.get(itemName) : void 0;
if (defaultItem && itemName) {
removeItemFromGroups(itemName, defaultItemsMap);
return shouldMergeWithExisting(customItems) ? (0, _extend.extend)(true, {}, defaultItem, customItems) : defaultItem
}
return createFormItemFromConfig(customItems)
})(customItems);
if (isGroupItem(formItem) && hasChildItems(customItems) && customItems.items) {
return Object.assign({}, formItem, {
items: customize(customItems.items)
})
}
return formItem
}));
return customize(userConfig)
};
exports.customizeFormItems = customizeFormItems;