UNPKG

devextreme-vue

Version:

DevExtreme Vue UI and Visualization Components

86 lines (84 loc) 2.4 kB
/*! * 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)), }; }