iconUtil.js 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = getIcons;
  7. var _vue = require("vue");
  8. var _DownOutlined = _interopRequireDefault(require("@ant-design/icons-vue/lib/icons/DownOutlined"));
  9. var _LoadingOutlined = _interopRequireDefault(require("@ant-design/icons-vue/lib/icons/LoadingOutlined"));
  10. var _CheckOutlined = _interopRequireDefault(require("@ant-design/icons-vue/lib/icons/CheckOutlined"));
  11. var _CloseOutlined = _interopRequireDefault(require("@ant-design/icons-vue/lib/icons/CloseOutlined"));
  12. var _CloseCircleFilled = _interopRequireDefault(require("@ant-design/icons-vue/lib/icons/CloseCircleFilled"));
  13. var _SearchOutlined = _interopRequireDefault(require("@ant-design/icons-vue/lib/icons/SearchOutlined"));
  14. function getIcons(props) {
  15. let slots = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  16. const {
  17. loading,
  18. multiple,
  19. prefixCls,
  20. hasFeedback,
  21. feedbackIcon,
  22. showArrow
  23. } = props;
  24. const suffixIcon = props.suffixIcon || slots.suffixIcon && slots.suffixIcon();
  25. const clearIcon = props.clearIcon || slots.clearIcon && slots.clearIcon();
  26. const menuItemSelectedIcon = props.menuItemSelectedIcon || slots.menuItemSelectedIcon && slots.menuItemSelectedIcon();
  27. const removeIcon = props.removeIcon || slots.removeIcon && slots.removeIcon();
  28. // Clear Icon
  29. const mergedClearIcon = clearIcon !== null && clearIcon !== void 0 ? clearIcon : (0, _vue.createVNode)(_CloseCircleFilled.default, null, null);
  30. // Validation Feedback Icon
  31. const getSuffixIconNode = arrowIcon => (0, _vue.createVNode)(_vue.Fragment, null, [showArrow !== false && arrowIcon, hasFeedback && feedbackIcon]);
  32. // Arrow item icon
  33. let mergedSuffixIcon = null;
  34. if (suffixIcon !== undefined) {
  35. mergedSuffixIcon = getSuffixIconNode(suffixIcon);
  36. } else if (loading) {
  37. mergedSuffixIcon = getSuffixIconNode((0, _vue.createVNode)(_LoadingOutlined.default, {
  38. "spin": true
  39. }, null));
  40. } else {
  41. const iconCls = `${prefixCls}-suffix`;
  42. mergedSuffixIcon = _ref => {
  43. let {
  44. open,
  45. showSearch
  46. } = _ref;
  47. if (open && showSearch) {
  48. return getSuffixIconNode((0, _vue.createVNode)(_SearchOutlined.default, {
  49. "class": iconCls
  50. }, null));
  51. }
  52. return getSuffixIconNode((0, _vue.createVNode)(_DownOutlined.default, {
  53. "class": iconCls
  54. }, null));
  55. };
  56. }
  57. // Checked item icon
  58. let mergedItemIcon = null;
  59. if (menuItemSelectedIcon !== undefined) {
  60. mergedItemIcon = menuItemSelectedIcon;
  61. } else if (multiple) {
  62. mergedItemIcon = (0, _vue.createVNode)(_CheckOutlined.default, null, null);
  63. } else {
  64. mergedItemIcon = null;
  65. }
  66. let mergedRemoveIcon = null;
  67. if (removeIcon !== undefined) {
  68. mergedRemoveIcon = removeIcon;
  69. } else {
  70. mergedRemoveIcon = (0, _vue.createVNode)(_CloseOutlined.default, null, null);
  71. }
  72. return {
  73. clearIcon: mergedClearIcon,
  74. suffixIcon: mergedSuffixIcon,
  75. itemIcon: mergedItemIcon,
  76. removeIcon: mergedRemoveIcon
  77. };
  78. }