devextreme-vue
Version:
DevExtreme Vue UI and Visualization Components
86 lines (84 loc) • 2.4 kB
JavaScript
/*!
* devextreme-vue
* Version: 25.1.5
* Build date: Wed Sep 03 2025
*
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file in the root of the project for details.
*
* https://github.com/DevExpress/devextreme-vue
*/
export function getTemplatePropName(props, templateName) {
for (const propName in props) {
if (props[propName] === templateName) {
return propName;
}
}
return templateName;
}
export function uppercaseFirst(value) {
return value[0].toUpperCase() + value.substr(1);
}
export function lowercaseFirst(value) {
return value[0].toLowerCase() + value.substr(1);
}
export function camelize(value) {
return lowercaseFirst(value.split('-').map((v) => uppercaseFirst(v)).join(''));
}
export function toComparable(value) {
return value instanceof Date ? value.getTime() : value;
}
export function isEqual(value1, value2) {
if (toComparable(value1) === toComparable(value2)) {
return true;
}
if (Array.isArray(value1) && Array.isArray(value2)) {
return value1.length === 0 && value2.length === 0;
}
return false;
}
export function forEachChildNode(el, callback) {
Array.prototype.slice.call(el.childNodes).forEach(callback);
}
export function allKeysAreEqual(obj1, obj2) {
const obj1Keys = Object.keys(obj1);
if (obj1Keys.length !== Object.keys(obj2).length) {
return false;
}
for (const key of obj1Keys) {
if (!obj2.hasOwnProperty(key)) {
return false;
}
}
return true;
}
export function getOptionValue(options, optionPath) {
let value = options;
optionPath.split('.').forEach((p) => {
const optionInfo = getOptionInfo(p);
if (value) {
value = optionInfo.isCollection
? value[optionInfo.name]?.[optionInfo.index]
: value[optionInfo.name];
}
});
return value;
}
export function getOptionInfo(name) {
const parts = name.split('[');
if (parts.length === 1) {
return {
isCollection: false,
name,
fullName: name,
};
}
return {
isCollection: true,
name: parts[0],
fullName: name,
index: Number(parts[1].slice(0, -1)),
};
}