UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

91 lines (83 loc) 7.17 kB
/** * xdesign v1.0.6 * (c) 2023 xdesign * @license MIT */ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _defineProperty = require('@babel/runtime/helpers/defineProperty'); var vue = require('vue'); var isString = require('lodash/isString'); var isArray = require('lodash/isArray'); var camelCase = require('lodash/camelCase'); var hooks_slot = require('../../hooks/slot.js'); require('@babel/runtime/helpers/typeof'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty); var isString__default = /*#__PURE__*/_interopDefaultLegacy(isString); var isArray__default = /*#__PURE__*/_interopDefaultLegacy(isArray); var camelCase__default = /*#__PURE__*/_interopDefaultLegacy(camelCase); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } var getOptionsFromChildren = function getOptionsFromChildren(menuNode) { var _menuNode$, _menuNode$3, _menuNode$4; if (!menuNode) return []; if (((_menuNode$ = menuNode[0]) === null || _menuNode$ === void 0 || (_menuNode$ = _menuNode$.type) === null || _menuNode$ === void 0 ? void 0 : _menuNode$.name) === "XDropdownMenu") { var _menuNode$2, _menuNode$2$default; var groupChildren = (_menuNode$2 = menuNode[0]) === null || _menuNode$2 === void 0 || (_menuNode$2 = _menuNode$2.children) === null || _menuNode$2 === void 0 || (_menuNode$2$default = _menuNode$2["default"]) === null || _menuNode$2$default === void 0 ? void 0 : _menuNode$2$default.call(_menuNode$2); if (isArray__default["default"](groupChildren)) { return getOptionsFromChildren(groupChildren); } } if (isArray__default["default"](menuNode)) { menuNode = menuNode.reduce(function (acc, item) { acc = acc.concat(isArray__default["default"](item.children) ? item.children : item); return acc; }, []); return menuNode.map(function (item) { var _item$children, _item$children$conten, _item$children2, _item$children2$prefi, _item$children3, _item$children3$prefi, _item$children4, _item$children4$defau, _groupChildren$filter, _groupChildren$filter2; var slotContent = (_item$children = item.children) === null || _item$children === void 0 || (_item$children$conten = _item$children.content) === null || _item$children$conten === void 0 ? void 0 : _item$children$conten.call(_item$children); var slotPrefixIcon = ((_item$children2 = item.children) === null || _item$children2 === void 0 || (_item$children2$prefi = _item$children2.prefixIcon) === null || _item$children2$prefi === void 0 ? void 0 : _item$children2$prefi.call(_item$children2)) || ((_item$children3 = item.children) === null || _item$children3 === void 0 || (_item$children3$prefi = _item$children3["prefix-icon"]) === null || _item$children3$prefi === void 0 ? void 0 : _item$children3$prefi.call(_item$children3)); var groupChildren = (_item$children4 = item.children) === null || _item$children4 === void 0 || (_item$children4$defau = _item$children4["default"]) === null || _item$children4$defau === void 0 ? void 0 : _item$children4$defau.call(_item$children4); var contentCtx = groupChildren === null || groupChildren === void 0 || (_groupChildren$filter = groupChildren.filter) === null || _groupChildren$filter === void 0 ? void 0 : _groupChildren$filter.call(groupChildren, function (v) { var _v$type; return !["XDropdownMenu", "XDropdownItem"].includes((_v$type = v.type) === null || _v$type === void 0 ? void 0 : _v$type.name); }); var childrenCtx = groupChildren === null || groupChildren === void 0 || (_groupChildren$filter2 = groupChildren.filter) === null || _groupChildren$filter2 === void 0 ? void 0 : _groupChildren$filter2.call(groupChildren, function (v) { var _v$type2; return !isString__default["default"](v.children) && ["XDropdownMenu", "XDropdownItem"].includes((_v$type2 = v.type) === null || _v$type2 === void 0 ? void 0 : _v$type2.name); }); var itemProps = Object.keys(item.props || {}).reduce(function (props, propName) { props[camelCase__default["default"](propName)] = item.props[propName]; return props; }, {}); return _objectSpread(_objectSpread(_objectSpread({ content: slotContent || contentCtx || groupChildren }, itemProps), slotPrefixIcon ? { prefixIcon: function prefixIcon() { return slotPrefixIcon; } } : {}), {}, { children: (childrenCtx === null || childrenCtx === void 0 ? void 0 : childrenCtx.length) > 0 ? getOptionsFromChildren(childrenCtx) : null }); }).filter(function (v) { return !!v.content; }); } if (isArray__default["default"]((_menuNode$3 = menuNode[0]) === null || _menuNode$3 === void 0 ? void 0 : _menuNode$3.children)) return getOptionsFromChildren((_menuNode$4 = menuNode[0]) === null || _menuNode$4 === void 0 ? void 0 : _menuNode$4.children); return []; }; function useDropdownOptions(props) { var _getChildComponentSlo, _getChildComponentSlo2, _instance$slots, _instance$slots$dropd; var getChildComponentSlots = hooks_slot.useChildComponentSlots(); var instance = vue.getCurrentInstance(); var menuSlot = ((_getChildComponentSlo = getChildComponentSlots("DropdownMenu")) === null || _getChildComponentSlo === void 0 || (_getChildComponentSlo = _getChildComponentSlo[0]) === null || _getChildComponentSlo === void 0 || (_getChildComponentSlo = _getChildComponentSlo.children) === null || _getChildComponentSlo === void 0 || (_getChildComponentSlo2 = _getChildComponentSlo["default"]) === null || _getChildComponentSlo2 === void 0 ? void 0 : _getChildComponentSlo2.call(_getChildComponentSlo)) || ((_instance$slots = instance.slots) === null || _instance$slots === void 0 || (_instance$slots$dropd = _instance$slots.dropdown) === null || _instance$slots$dropd === void 0 ? void 0 : _instance$slots$dropd.call(_instance$slots)); var dropdownOptions = vue.computed(function () { if (props.options && props.options.length > 0) return props.options; return getOptionsFromChildren(menuSlot); }); return dropdownOptions; } exports["default"] = useDropdownOptions; exports.getOptionsFromChildren = getOptionsFromChildren; //# sourceMappingURL=useDropdownOptions.js.map