@cc-dev-kit-test/console-components-console-menu
Version:
React component for Alibaba Cloud.
84 lines (73 loc) • 3.45 kB
JavaScript
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
import _extends from "@babel/runtime/helpers/esm/extends";
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (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 = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
import React, { useCallback, useState } from 'react';
import { isFunction } from 'lodash';
import { ConfigProvider } from '@alicloud/console-components';
import cs from 'classnames';
import { SProductSelect } from './styles';
/* eslint-disable @typescript-eslint/no-explicit-any */
/**
* @param {Number} level
*/
export var getPriority = function getPriority(level) {
return new Array(level).fill('&').join('');
};
/**
* Checks if value is `null` or `undefined`
* @param {*} value
* @return {Boolean}
*/
export var isNil = function isNil(value) {
return value == null;
};
export function GetFusionConfig(Wrapped) {
var ConfifgConsumer = ConfigProvider.Consumer;
var HOC = function HOC(props) {
return React.createElement(ConfifgConsumer, null, function (context) {
return React.createElement(Wrapped, _extends({}, props, {
fusionConfig: context
}));
});
};
return HOC;
}
export var ProductSelect = function ProductSelect(_ref) {
var _ref$dropdownProps = _ref.dropdownProps,
dropdownProps = _ref$dropdownProps === void 0 ? {} : _ref$dropdownProps,
onSelect = _ref.onSelect,
restProps = _objectWithoutProperties(_ref, ["dropdownProps", "onSelect"]);
var onVisibleChange = dropdownProps.onVisibleChange,
restDropdownProps = _objectWithoutProperties(dropdownProps, ["onVisibleChange"]);
var _useState = useState(false),
_useState2 = _slicedToArray(_useState, 2),
isActive = _useState2[0],
setIsActive = _useState2[1];
var handleSelect = useCallback(function (value, item) {
isFunction(onSelect) && onSelect(value, item);
setIsActive(false);
}, [onSelect]);
var handleVisibleChange = useCallback(function (visible, type, e) {
setIsActive(visible);
isFunction(onVisibleChange) && onVisibleChange(visible, type, e);
}, [onVisibleChange]);
return React.createElement(SProductSelect, _extends({
className: cs('wind-consolemenu-product-select', {
active: isActive
}),
showSelectLabel: true,
onSelect: handleSelect,
dropdownProps: _objectSpread({
onVisibleChange: handleVisibleChange
}, restDropdownProps, {
style: {
width: '176px'
},
align: 'tl, bl',
offset: [-1, 0]
})
}, restProps));
};