tdesign-vue
Version:
68 lines (64 loc) • 4.99 kB
JavaScript
/**
* tdesign v1.11.2
* (c) 2025 tdesign
* @license MIT
*/
import _defineProperty from '@babel/runtime/helpers/defineProperty';
import { get } from 'lodash-es';
import { computed } from '@vue/composition-api';
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var DropdownMenuName = "TDropdownMenu";
var DropdownItemName = "TDropdownItem";
var _getOptionsFromChildren = function getOptionsFromChildren(menuGroup) {
if (!menuGroup || (menuGroup === null || menuGroup === void 0 ? void 0 : menuGroup.length) === 0) return [];
if (get(menuGroup, "Ctor.extendOptions.name") === DropdownMenuName) {
var groupChildren = menuGroup.children;
if (Array.isArray(groupChildren)) {
return _getOptionsFromChildren(groupChildren);
}
return [];
}
if (Array.isArray(menuGroup)) {
return menuGroup.map(function (item) {
var _item$componentOption, _groupChildren$filter, _groupChildren$filter2, _item$componentOption2, _item$data, _item$data2, _item$componentOption3;
var groupChildren = item === null || item === void 0 || (_item$componentOption = item.componentOptions) === null || _item$componentOption === void 0 ? void 0 : _item$componentOption.children;
if (!groupChildren) return {};
var contentCtx = groupChildren === null || groupChildren === void 0 || (_groupChildren$filter = groupChildren.filter) === null || _groupChildren$filter === void 0 ? void 0 : _groupChildren$filter.call(groupChildren, function (v) {
return ![DropdownMenuName, DropdownItemName].includes(get(v, "componentOptions.Ctor.extendOptions.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) {
return typeof v.text !== "string" && [DropdownMenuName, DropdownItemName].includes(get(v, "componentOptions.Ctor.extendOptions.name"));
});
var commonProps = _objectSpread(_objectSpread({}, (_item$componentOption2 = item.componentOptions) === null || _item$componentOption2 === void 0 ? void 0 : _item$componentOption2.propsData), {}, {
style: item === null || item === void 0 || (_item$data = item.data) === null || _item$data === void 0 ? void 0 : _item$data.style,
"class": item === null || item === void 0 || (_item$data2 = item.data) === null || _item$data2 === void 0 ? void 0 : _item$data2.staticClass,
onClick: (_item$componentOption3 = item.componentOptions) === null || _item$componentOption3 === void 0 || (_item$componentOption3 = _item$componentOption3.listeners) === null || _item$componentOption3 === void 0 ? void 0 : _item$componentOption3.click,
content: contentCtx || groupChildren
});
if (childrenCtx.length === 1) {
return _objectSpread(_objectSpread({}, commonProps), {}, {
children: childrenCtx.length > 0 ? _getOptionsFromChildren(childrenCtx[0].componentOptions) : null
});
}
return _objectSpread(_objectSpread({}, commonProps), {}, {
children: childrenCtx.length > 0 ? _getOptionsFromChildren(childrenCtx) : null
});
}).filter(function (v) {
return !!v.content;
});
}
return [];
};
function useDropdownOptions(props, slots) {
var _slots$default, _slots$dropdown;
var menuSlot = (slots === null || slots === void 0 || (_slots$default = slots["default"]) === null || _slots$default === void 0 || (_slots$default = _slots$default.filter(function (v) {
return get(v, "componentOptions.Ctor.extendOptions.name") === DropdownMenuName;
})) === null || _slots$default === void 0 || (_slots$default = _slots$default[0]) === null || _slots$default === void 0 ? void 0 : _slots$default.componentOptions) || (slots === null || slots === void 0 || (_slots$dropdown = slots.dropdown) === null || _slots$dropdown === void 0 || (_slots$dropdown = _slots$dropdown[0]) === null || _slots$dropdown === void 0 ? void 0 : _slots$dropdown.componentOptions);
return computed(function () {
if (props.options && props.options.length > 0) return props.options;
return _getOptionsFromChildren(menuSlot);
});
}
export { useDropdownOptions as default, _getOptionsFromChildren as getOptionsFromChildren };
//# sourceMappingURL=useDropdownOptions.js.map