ant-design-vue
Version:
An enterprise-class UI design language and Vue-based implementation
105 lines (81 loc) • 4.15 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.noop = noop;
exports.getKeyFromChildrenIndex = getKeyFromChildrenIndex;
exports.getMenuIdFromSubMenuEventKey = getMenuIdFromSubMenuEventKey;
exports.loopMenuItemRecursively = loopMenuItemRecursively;
exports.isMobileDevice = exports.setStyle = exports.getWidth = exports.menuAllProps = void 0;
var _isMobile = _interopRequireDefault(require("./utils/isMobile"));
var _isObject = _interopRequireDefault(require("lodash/isObject"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
function noop() {}
function getKeyFromChildrenIndex(child, menuEventKey, index) {
var prefix = menuEventKey || '';
return child.key === null ? "".concat(prefix, "item_").concat(index) : child.key;
}
function getMenuIdFromSubMenuEventKey(eventKey) {
return "".concat(eventKey, "-menu-");
} // export function loopMenuItem(children, cb) {
// let index = -1;
// children.forEach(c => {
// index++;
// if (c && c.type && c.type.isMenuItemGroup) {
// c.children.default &&
// c.children.default().forEach(c2 => {
// index++;
// cb(c2, index);
// });
// } else {
// cb(c, index);
// }
// });
// }
function loopMenuItemRecursively(children, keys, ret) {
if (!children || ret.find) {
return;
}
children.forEach(function (c) {
if (ret.find) {
return;
}
var construct = c.type;
if (construct && (0, _isObject.default)(construct)) {
if (!construct || !(construct.isSubMenu || construct.isMenuItem || construct.isMenuItemGroup || construct.isMenuProvider)) {
return;
}
if (keys.indexOf(c.key) !== -1) {
ret.find = true;
} else if (c.children && c.children.default) {
loopMenuItemRecursively(c.children.default(), keys, ret);
}
}
});
}
var menuAllProps = ['defaultSelectedKeys', 'selectedKeys', 'defaultOpenKeys', 'openKeys', 'mode', 'getPopupContainer', 'openTransitionName', 'openAnimation', 'subMenuOpenDelay', 'subMenuCloseDelay', 'forceSubMenuRender', 'triggerSubMenuAction', 'level', 'selectable', 'multiple', 'visible', 'focusable', 'defaultActiveFirst', 'prefixCls', 'inlineIndent', 'title', 'rootPrefixCls', 'eventKey', 'active', 'popupAlign', 'popupOffset', 'isOpen', 'renderMenuItem', 'manualRef', 'subMenuKey', 'disabled', 'index', 'isSelected', 'store', 'activeKey', 'builtinPlacements', 'overflowedIndicator', // the following keys found need to be removed from test regression
'attribute', 'value', 'popupClassName', 'inlineCollapsed', 'menu', 'theme', 'itemIcon', 'expandIcon', 'onSelect', 'onDeselect', 'onDestroy', 'onOpenChange', 'onItemHover', 'onTitleMouseenter', 'onTitleMouseleave', 'onTitleClick', 'slots', 'ref', 'isRootMenu', 'parentUniKeys', 'parentUniKey']; // ref: https://github.com/ant-design/ant-design/issues/14007
// ref: https://bugs.chromium.org/p/chromium/issues/detail?id=360889
// getBoundingClientRect return the full precision value, which is
// not the same behavior as on chrome. Set the precision to 6 to
// unify their behavior
exports.menuAllProps = menuAllProps;
var getWidth = function getWidth(elem) {
var width = elem && typeof elem.getBoundingClientRect === 'function' && elem.getBoundingClientRect().width;
if (width) {
width = +width.toFixed(6);
}
return width || 0;
};
exports.getWidth = getWidth;
var setStyle = function setStyle(elem, styleProperty, value) {
if (elem && _typeof(elem.style) === 'object') {
elem.style[styleProperty] = value;
}
};
exports.setStyle = setStyle;
var isMobileDevice = function isMobileDevice() {
return _isMobile.default.any;
};
exports.isMobileDevice = isMobileDevice;
;