devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
147 lines (146 loc) • 5.65 kB
JavaScript
/**
* DevExtreme (esm/ui/form/ui.form.item_options_actions.js)
* Version: 22.1.9
* Build date: Tue Apr 18 2023
*
* Copyright (c) 2012 - 2023 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 SimpleItemTemplateChangedAction extends ItemOptionAction {
tryExecute() {
return false
}
}
class GroupItemTemplateChangedAction extends ItemOptionAction {
tryExecute() {
var preparedItem = this.findPreparedItem();
if (null != preparedItem && preparedItem._prepareGroupItemTemplate && preparedItem._renderGroupContentTemplate) {
preparedItem._prepareGroupItemTemplate(this._options.item.template);
preparedItem._renderGroupContentTemplate();
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 "tabTemplate":
case "title":
return new TabOptionItemOptionAction(extend(itemActionOptions, {
optionName: optionName
}));
case "tabs":
return new TabsOptionItemOptionAction(itemActionOptions);
case "template":
var _itemActionOptions$it, _itemActionOptions$it2, _itemActionOptions$it3;
var itemType = null !== (_itemActionOptions$it = null === itemActionOptions || void 0 === itemActionOptions ? void 0 : null === (_itemActionOptions$it2 = itemActionOptions.item) || void 0 === _itemActionOptions$it2 ? void 0 : _itemActionOptions$it2.itemType) && void 0 !== _itemActionOptions$it ? _itemActionOptions$it : null === (_itemActionOptions$it3 = itemActionOptions.itemsRunTimeInfo.findPreparedItemByItem(null === itemActionOptions || void 0 === itemActionOptions ? void 0 : itemActionOptions.item)) || void 0 === _itemActionOptions$it3 ? void 0 : _itemActionOptions$it3.itemType;
if ("simple" === itemType) {
return new SimpleItemTemplateChangedAction(itemActionOptions)
} else if ("group" === itemType) {
return new GroupItemTemplateChangedAction(itemActionOptions)
}
return new TabOptionItemOptionAction(extend(itemActionOptions, {
optionName: optionName
}));
default:
return null
}
};
export default tryCreateItemOptionAction;