UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

121 lines (120 loc) 3.98 kB
/** * DevExtreme (esm/ui/form/ui.form.item_options_actions.js) * Version: 21.1.4 * Build date: Mon Jun 21 2021 * * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ import ItemOptionAction from "./ui.form.item_option_action"; import { data } from "../../core/element_data"; import { extend } from "../../core/utils/extend"; import { getFullOptionName } from "./ui.form.utils"; class WidgetOptionItemOptionAction extends ItemOptionAction { tryExecute() { var { value: value } = this._options; var instance = this.findInstance(); if (instance) { instance.option(value); return true } return false } } class TabOptionItemOptionAction extends ItemOptionAction { tryExecute() { var tabPanel = this.findInstance(); if (tabPanel) { var { optionName: optionName, item: item, value: value } = this._options; var itemIndex = this._itemsRunTimeInfo.findItemIndexByItem(item); if (itemIndex >= 0) { tabPanel.option(getFullOptionName("items[".concat(itemIndex, "]"), optionName), value); return true } } return false } } class TabsOptionItemOptionAction extends ItemOptionAction { tryExecute() { var tabPanel = this.findInstance(); if (tabPanel) { var { value: value } = this._options; tabPanel.option("dataSource", value); return true } return false } } class ValidationRulesItemOptionAction extends ItemOptionAction { tryExecute() { var { item: item } = this._options; var instance = this.findInstance(); var validator = instance && data(instance.$element()[0], "dxValidator"); if (validator && item) { var filterRequired = item => "required" === item.type; var oldContainsRequired = (validator.option("validationRules") || []).some(filterRequired); var newContainsRequired = (item.validationRules || []).some(filterRequired); if (!oldContainsRequired && !newContainsRequired || oldContainsRequired && newContainsRequired) { validator.option("validationRules", item.validationRules); return true } } return false } } class CssClassItemOptionAction extends ItemOptionAction { tryExecute() { var $itemContainer = this.findItemContainer(); var { previousValue: previousValue, value: value } = this._options; if ($itemContainer) { $itemContainer.removeClass(previousValue).addClass(value); return true } return false } } var tryCreateItemOptionAction = (optionName, itemActionOptions) => { switch (optionName) { case "editorOptions": case "buttonOptions": return new WidgetOptionItemOptionAction(itemActionOptions); case "validationRules": return new ValidationRulesItemOptionAction(itemActionOptions); case "cssClass": return new CssClassItemOptionAction(itemActionOptions); case "badge": case "disabled": case "icon": case "template": case "tabTemplate": case "title": return new TabOptionItemOptionAction(extend(itemActionOptions, { optionName: optionName })); case "tabs": return new TabsOptionItemOptionAction(itemActionOptions); default: return null } }; export default tryCreateItemOptionAction;