Panel.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. "use client";
  2. import * as React from 'react';
  3. import classNames from 'classnames';
  4. import { Panel } from 'rc-cascader';
  5. import DefaultRenderEmpty from '../config-provider/defaultRenderEmpty';
  6. import DisabledContext from '../config-provider/DisabledContext';
  7. import useCSSVarCls from '../config-provider/hooks/useCSSVarCls';
  8. import useBase from './hooks/useBase';
  9. import useCheckable from './hooks/useCheckable';
  10. import useColumnIcons from './hooks/useColumnIcons';
  11. import useStyle from './style';
  12. import usePanelStyle from './style/panel';
  13. function CascaderPanel(props) {
  14. const {
  15. prefixCls: customizePrefixCls,
  16. className,
  17. multiple,
  18. rootClassName,
  19. notFoundContent,
  20. direction,
  21. expandIcon,
  22. disabled: customDisabled
  23. } = props;
  24. const disabled = React.useContext(DisabledContext);
  25. const mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;
  26. const [prefixCls, cascaderPrefixCls, mergedDirection, renderEmpty] = useBase(customizePrefixCls, direction);
  27. const rootCls = useCSSVarCls(cascaderPrefixCls);
  28. const [wrapCSSVar, hashId, cssVarCls] = useStyle(cascaderPrefixCls, rootCls);
  29. usePanelStyle(cascaderPrefixCls);
  30. const isRtl = mergedDirection === 'rtl';
  31. // ===================== Icon ======================
  32. const [mergedExpandIcon, loadingIcon] = useColumnIcons(prefixCls, isRtl, expandIcon);
  33. // ===================== Empty =====================
  34. const mergedNotFoundContent = notFoundContent || (renderEmpty === null || renderEmpty === void 0 ? void 0 : renderEmpty('Cascader')) || (/*#__PURE__*/React.createElement(DefaultRenderEmpty, {
  35. componentName: "Cascader"
  36. }));
  37. // =================== Multiple ====================
  38. const checkable = useCheckable(cascaderPrefixCls, multiple);
  39. // ==================== Render =====================
  40. return wrapCSSVar(/*#__PURE__*/React.createElement(Panel, Object.assign({}, props, {
  41. checkable: checkable,
  42. prefixCls: cascaderPrefixCls,
  43. className: classNames(className, hashId, rootClassName, cssVarCls, rootCls),
  44. notFoundContent: mergedNotFoundContent,
  45. direction: mergedDirection,
  46. expandIcon: mergedExpandIcon,
  47. loadingIcon: loadingIcon,
  48. disabled: mergedDisabled
  49. })));
  50. }
  51. export default CascaderPanel;