UNPKG

devextreme

Version:

JavaScript/TypeScript Component Suite for Responsive Web Development

66 lines (65 loc) 2.8 kB
/** * 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/ */ "use strict"; 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;