devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
222 lines (214 loc) • 9.62 kB
JavaScript
/**
* DevExtreme (cjs/ui/form/ui.form.layout_manager.utils.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/
*/
"use strict";
exports.EDITORS_WITHOUT_LABELS = void 0;
exports.convertToLabelMarkOptions = convertToLabelMarkOptions;
exports.convertToRenderFieldItemOptions = convertToRenderFieldItemOptions;
exports.getLabelMarkText = getLabelMarkText;
var _extend = require("../../core/utils/extend");
var _type = require("../../core/utils/type");
var _iterator = require("../../core/utils/iterator");
var _inflector = require("../../core/utils/inflector");
var _guid = _interopRequireDefault(require("../../core/guid"));
var _constants = require("./constants");
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
}
}
var EDITORS_WITH_ARRAY_VALUE = ["dxTagBox", "dxRangeSlider"];
var EDITORS_WITHOUT_LABELS = ["dxCalendar", "dxCheckBox", "dxHtmlEditor", "dxRadioGroup", "dxRangeSlider", "dxSlider", "dxSwitch"];
exports.EDITORS_WITHOUT_LABELS = EDITORS_WITHOUT_LABELS;
function convertToRenderFieldItemOptions(_ref) {
var $parent = _ref.$parent,
rootElementCssClassList = _ref.rootElementCssClassList,
formOrLayoutManager = _ref.formOrLayoutManager,
createComponentCallback = _ref.createComponentCallback,
useFlexLayout = _ref.useFlexLayout,
item = _ref.item,
template = _ref.template,
name = _ref.name,
formLabelLocation = _ref.formLabelLocation,
requiredMessageTemplate = _ref.requiredMessageTemplate,
validationGroup = _ref.validationGroup,
editorValue = _ref.editorValue,
canAssignUndefinedValueToEditor = _ref.canAssignUndefinedValueToEditor,
editorValidationBoundary = _ref.editorValidationBoundary,
editorStylingMode = _ref.editorStylingMode,
showColonAfterLabel = _ref.showColonAfterLabel,
managerLabelLocation = _ref.managerLabelLocation,
itemId = _ref.itemId,
managerMarkOptions = _ref.managerMarkOptions,
labelMode = _ref.labelMode;
var isRequired = (0, _type.isDefined)(item.isRequired) ? item.isRequired : !!_hasRequiredRuleInSet(item.validationRules);
var isSimpleItem = item.itemType === _constants.SIMPLE_ITEM_TYPE;
var helpID = item.helpText ? "dx-" + new _guid.default : null;
var labelOptions = _convertToLabelOptions({
item: item,
id: itemId,
isRequired: isRequired,
managerMarkOptions: managerMarkOptions,
showColonAfterLabel: showColonAfterLabel,
labelLocation: managerLabelLocation,
formLabelMode: labelMode
});
var needRenderLabel = labelOptions.visible && labelOptions.text;
var labelLocation = labelOptions.location,
labelID = labelOptions.labelID;
var labelNeedBaselineAlign = "top" !== labelLocation && (!!item.helpText && !useFlexLayout || ["dxTextArea", "dxRadioGroup", "dxCalendar", "dxHtmlEditor"].includes(item.editorType));
var editorOptions = _convertToEditorOptions({
editorType: item.editorType,
editorValue: editorValue,
defaultEditorName: item.dataField,
canAssignUndefinedValueToEditor: canAssignUndefinedValueToEditor,
externalEditorOptions: item.editorOptions,
editorInputId: itemId,
editorValidationBoundary: editorValidationBoundary,
editorStylingMode: editorStylingMode,
formLabelMode: labelMode,
labelText: labelOptions.textWithoutColon,
labelMark: labelOptions.markOptions.showRequiredMark ? String.fromCharCode(160) + labelOptions.markOptions.requiredMark : ""
});
var needRenderOptionalMarkAsHelpText = labelOptions.markOptions.showOptionalMark && !labelOptions.visible && "hidden" !== editorOptions.labelMode && !(0, _type.isDefined)(item.helpText);
var helpText = needRenderOptionalMarkAsHelpText ? labelOptions.markOptions.optionalMark : item.helpText;
return {
$parent: $parent,
rootElementCssClassList: rootElementCssClassList,
formOrLayoutManager: formOrLayoutManager,
createComponentCallback: createComponentCallback,
useFlexLayout: useFlexLayout,
labelOptions: labelOptions,
labelNeedBaselineAlign: labelNeedBaselineAlign,
labelLocation: labelLocation,
needRenderLabel: needRenderLabel,
item: item,
isSimpleItem: isSimpleItem,
isRequired: isRequired,
template: template,
helpID: helpID,
labelID: labelID,
name: name,
helpText: helpText,
formLabelLocation: formLabelLocation,
requiredMessageTemplate: requiredMessageTemplate,
validationGroup: validationGroup,
editorOptions: editorOptions
}
}
function getLabelMarkText(_ref2) {
var showRequiredMark = _ref2.showRequiredMark,
requiredMark = _ref2.requiredMark,
showOptionalMark = _ref2.showOptionalMark,
optionalMark = _ref2.optionalMark;
if (!showRequiredMark && !showOptionalMark) {
return ""
}
return String.fromCharCode(160) + (showRequiredMark ? requiredMark : optionalMark)
}
function convertToLabelMarkOptions(_ref3, isRequired) {
var showRequiredMark = _ref3.showRequiredMark,
requiredMark = _ref3.requiredMark,
showOptionalMark = _ref3.showOptionalMark,
optionalMark = _ref3.optionalMark;
return {
showRequiredMark: showRequiredMark && isRequired,
requiredMark: requiredMark,
showOptionalMark: showOptionalMark && !isRequired,
optionalMark: optionalMark
}
}
function _convertToEditorOptions(_ref4) {
var editorType = _ref4.editorType,
defaultEditorName = _ref4.defaultEditorName,
editorValue = _ref4.editorValue,
canAssignUndefinedValueToEditor = _ref4.canAssignUndefinedValueToEditor,
externalEditorOptions = _ref4.externalEditorOptions,
editorInputId = _ref4.editorInputId,
editorValidationBoundary = _ref4.editorValidationBoundary,
editorStylingMode = _ref4.editorStylingMode,
formLabelMode = _ref4.formLabelMode,
labelText = _ref4.labelText,
labelMark = _ref4.labelMark;
var editorOptionsWithValue = {};
if (void 0 !== editorValue || canAssignUndefinedValueToEditor) {
editorOptionsWithValue.value = editorValue
}
if (-1 !== EDITORS_WITH_ARRAY_VALUE.indexOf(editorType)) {
editorOptionsWithValue.value = editorOptionsWithValue.value || []
}
var labelMode = null === externalEditorOptions || void 0 === externalEditorOptions ? void 0 : externalEditorOptions.labelMode;
if (!(0, _type.isDefined)(labelMode)) {
labelMode = "outside" === formLabelMode ? "hidden" : formLabelMode
}
var stylingMode = (null === externalEditorOptions || void 0 === externalEditorOptions ? void 0 : externalEditorOptions.stylingMode) || editorStylingMode;
var result = (0, _extend.extend)(true, editorOptionsWithValue, externalEditorOptions, {
inputAttr: {
id: editorInputId
},
validationBoundary: editorValidationBoundary,
stylingMode: stylingMode,
label: labelText,
labelMode: labelMode,
labelMark: labelMark
});
if (externalEditorOptions) {
if (result.dataSource) {
result.dataSource = externalEditorOptions.dataSource
}
if (result.items) {
result.items = externalEditorOptions.items
}
}
if (defaultEditorName && !result.name) {
result.name = defaultEditorName
}
return result
}
function _hasRequiredRuleInSet(rules) {
var hasRequiredRule;
if (rules && rules.length) {
(0, _iterator.each)(rules, (function(index, rule) {
if ("required" === rule.type) {
hasRequiredRule = true;
return false
}
}))
}
return hasRequiredRule
}
function _convertToLabelOptions(_ref5) {
var item = _ref5.item,
id = _ref5.id,
isRequired = _ref5.isRequired,
managerMarkOptions = _ref5.managerMarkOptions,
showColonAfterLabel = _ref5.showColonAfterLabel,
labelLocation = _ref5.labelLocation,
formLabelMode = _ref5.formLabelMode;
var isEditorWithoutLabels = EDITORS_WITHOUT_LABELS.includes(item.editorType);
var labelOptions = (0, _extend.extend)({
showColon: showColonAfterLabel,
location: labelLocation,
id: id,
visible: "outside" === formLabelMode || isEditorWithoutLabels && "hidden" !== formLabelMode,
isRequired: isRequired
}, item ? item.label : {}, {
markOptions: convertToLabelMarkOptions(managerMarkOptions, isRequired)
});
if (["dxRadioGroup", "dxCheckBox", "dxLookup", "dxSlider", "dxRangeSlider", "dxSwitch", "dxHtmlEditor"].includes(item.editorType)) {
labelOptions.labelID = "dx-label-".concat(new _guid.default)
}
if (!labelOptions.text && item.dataField) {
labelOptions.text = (0, _inflector.captionize)(item.dataField)
}
if (labelOptions.text) {
labelOptions.textWithoutColon = labelOptions.text;
labelOptions.text += labelOptions.showColon ? ":" : ""
}
return labelOptions
}