parent
							
								
									10a5fb28cb
								
							
						
					
					
						commit
						d221171e53
					
				|  | @ -2,9 +2,7 @@ | |||
| 
 | ||||
| exports[`Popconfirm should show overlay when trigger is clicked 1`] = ` | ||||
| <div class="ant-popover-content"> | ||||
|   <div class="ant-popover-arrow"> | ||||
|     <!----> | ||||
|   </div> | ||||
|   <div class="ant-popover-arrow"><span class="ant-popover-arrow-content"></span></div> | ||||
|   <div class="ant-popover-inner" role="tooltip"> | ||||
|     <div class="ant-popover-inner-content"> | ||||
|       <div class="ant-popover-message"><span role="img" aria-label="exclamation-circle" class="anticon anticon-exclamation-circle"><svg class="" data-icon="exclamation-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true" viewBox="64 64 896 896" focusable="false"><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-32 232c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 010-96 48.01 48.01 0 010 96z"></path></svg></span> | ||||
|  |  | |||
|  | @ -2,9 +2,7 @@ | |||
| 
 | ||||
| exports[`Popover should show overlay when trigger is clicked 1`] = ` | ||||
| <div class="ant-popover-content"> | ||||
|   <div class="ant-popover-arrow"> | ||||
|     <!----> | ||||
|   </div> | ||||
|   <div class="ant-popover-arrow"><span class="ant-popover-arrow-content"></span></div> | ||||
|   <div class="ant-popover-inner" role="tooltip"> | ||||
|     <div> | ||||
|       <div class="ant-popover-title">code</div> | ||||
|  | @ -16,9 +14,7 @@ exports[`Popover should show overlay when trigger is clicked 1`] = ` | |||
| 
 | ||||
| exports[`Popover should show overlay when trigger is clicked 2`] = ` | ||||
| <div class="ant-popover-content"> | ||||
|   <div class="ant-popover-arrow"> | ||||
|     <!----> | ||||
|   </div> | ||||
|   <div class="ant-popover-arrow"><span class="ant-popover-arrow-content"></span></div> | ||||
|   <div class="ant-popover-inner" role="tooltip"> | ||||
|     <div> | ||||
|       <div class="ant-popover-title">code</div> | ||||
|  |  | |||
|  | @ -18,9 +18,7 @@ exports[`Slider should show tooltip when hovering slider handler 1`] = ` | |||
|     <!----> | ||||
|     <div class="ant-tooltip  ant-slider-tooltip ant-tooltip-placement-top"> | ||||
|       <div class="ant-tooltip-content"> | ||||
|         <div class="ant-tooltip-arrow"> | ||||
|           <!----> | ||||
|         </div> | ||||
|         <div class="ant-tooltip-arrow"><span class="ant-tooltip-arrow-content"></span></div> | ||||
|         <div class="ant-tooltip-inner" role="tooltip">30</div> | ||||
|       </div> | ||||
|     </div> | ||||
|  | @ -46,9 +44,7 @@ exports[`Slider should show tooltip when hovering slider handler 2`] = ` | |||
|     <!----> | ||||
|     <div class="ant-tooltip  ant-slider-tooltip ant-tooltip-placement-top" style="display: none;"> | ||||
|       <div class="ant-tooltip-content"> | ||||
|         <div class="ant-tooltip-arrow"> | ||||
|           <!----> | ||||
|         </div> | ||||
|         <div class="ant-tooltip-arrow"><span class="ant-tooltip-arrow-content"></span></div> | ||||
|         <div class="ant-tooltip-inner" role="tooltip">30</div> | ||||
|       </div> | ||||
|     </div> | ||||
|  |  | |||
|  | @ -1,8 +1,9 @@ | |||
| import { defineComponent, ExtractPropTypes, inject } from 'vue'; | ||||
| import { defineComponent, ExtractPropTypes, inject, CSSProperties } from 'vue'; | ||||
| import VcTooltip from '../vc-tooltip'; | ||||
| import classNames from '../_util/classNames'; | ||||
| import getPlacements from './placements'; | ||||
| import PropTypes from '../_util/vue-types'; | ||||
| import { PresetColorTypes } from '../_util/colors'; | ||||
| import { | ||||
|   hasProp, | ||||
|   getComponent, | ||||
|  | @ -28,6 +29,8 @@ const splitObject = (obj: any, keys: string[]) => { | |||
| }; | ||||
| const props = abstractTooltipProps(); | ||||
| 
 | ||||
| const PresetColorRegex = new RegExp(`^(${PresetColorTypes.join('|')})(-inverse)?$`); | ||||
| 
 | ||||
| const tooltipProps = { | ||||
|   ...props, | ||||
|   title: PropTypes.VNodeChild, | ||||
|  | @ -176,7 +179,13 @@ export default defineComponent({ | |||
| 
 | ||||
|   render() { | ||||
|     const { $props, $data, $attrs } = this; | ||||
|     const { prefixCls: customizePrefixCls, openClassName, getPopupContainer } = $props; | ||||
|     const { | ||||
|       prefixCls: customizePrefixCls, | ||||
|       openClassName, | ||||
|       getPopupContainer, | ||||
|       color, | ||||
|       overlayClassName, | ||||
|     } = $props; | ||||
|     const { getPopupContainer: getContextPopupContainer } = this.configProvider; | ||||
|     const getPrefixCls = this.configProvider.getPrefixCls; | ||||
|     const prefixCls = getPrefixCls('tooltip', customizePrefixCls); | ||||
|  | @ -197,6 +206,16 @@ export default defineComponent({ | |||
|       [openClassName || `${prefixCls}-open`]: sVisible, | ||||
|       [child.props && child.props.class]: child.props && child.props.class, | ||||
|     }); | ||||
|     const customOverlayClassName = classNames(overlayClassName, { | ||||
|       [`${prefixCls}-${color}`]: color && PresetColorRegex.test(color), | ||||
|     }); | ||||
|     let formattedOverlayInnerStyle: CSSProperties; | ||||
|     let arrowContentStyle: CSSProperties; | ||||
|     if (color && !PresetColorRegex.test(color)) { | ||||
|       formattedOverlayInnerStyle = { backgroundColor: color }; | ||||
|       arrowContentStyle = { backgroundColor: color }; | ||||
|     } | ||||
| 
 | ||||
|     const vcTooltipProps = { | ||||
|       ...$attrs, | ||||
|       ...$props, | ||||
|  | @ -206,6 +225,9 @@ export default defineComponent({ | |||
|       overlay: this.getOverlay(), | ||||
|       visible: sVisible, | ||||
|       ref: 'tooltip', | ||||
|       overlayClassName: customOverlayClassName, | ||||
|       overlayInnerStyle: formattedOverlayInnerStyle, | ||||
|       arrowContent: <span class={`${prefixCls}-arrow-content`} style={arrowContentStyle}></span>, | ||||
|       onVisibleChange: this.handleVisibleChange, | ||||
|       onPopupAlign: this.onPopupAlign, | ||||
|     }; | ||||
|  |  | |||
|  | @ -22,6 +22,7 @@ export default () => ({ | |||
|       'rightBottom', | ||||
|     ), | ||||
|   ).def('top'), | ||||
|   color: PropTypes.string, | ||||
|   transitionName: PropTypes.string.def('zoom-big-fast'), | ||||
|   overlayStyle: PropTypes.object.def(() => ({})), | ||||
|   overlayClassName: PropTypes.string, | ||||
|  |  | |||
|  | @ -73,7 +73,7 @@ | |||
|     background: transparent; | ||||
|     pointer-events: none; | ||||
| 
 | ||||
|     &::before { | ||||
|     &-content { | ||||
|       position: absolute; | ||||
|       top: 0; | ||||
|       right: 0; | ||||
|  | @ -94,7 +94,7 @@ | |||
|   &-placement-topRight &-arrow { | ||||
|     bottom: @tooltip-distance - @tooltip-arrow-rotate-width; | ||||
| 
 | ||||
|     &::before { | ||||
|     &-content { | ||||
|       box-shadow: @tooltip-arrow-shadow-width @tooltip-arrow-shadow-width 7px fade(@black, 7%); | ||||
|       transform: translateY((-@tooltip-arrow-rotate-width / 2)) rotate(45deg); | ||||
|     } | ||||
|  | @ -118,7 +118,7 @@ | |||
|   &-placement-rightBottom &-arrow { | ||||
|     left: @tooltip-distance - @tooltip-arrow-rotate-width; | ||||
| 
 | ||||
|     &::before { | ||||
|     &-content { | ||||
|       box-shadow: -@tooltip-arrow-shadow-width @tooltip-arrow-shadow-width 7px fade(@black, 7%); | ||||
|       transform: translateX((@tooltip-arrow-rotate-width / 2)) rotate(45deg); | ||||
|     } | ||||
|  | @ -142,7 +142,7 @@ | |||
|   &-placement-leftBottom &-arrow { | ||||
|     right: @tooltip-distance - @tooltip-arrow-rotate-width; | ||||
| 
 | ||||
|     &::before { | ||||
|     &-content { | ||||
|       box-shadow: @tooltip-arrow-shadow-width -@tooltip-arrow-shadow-width 7px fade(@black, 7%); | ||||
|       transform: translateX((-@tooltip-arrow-rotate-width / 2)) rotate(45deg); | ||||
|     } | ||||
|  | @ -166,7 +166,7 @@ | |||
|   &-placement-bottomRight &-arrow { | ||||
|     top: @tooltip-distance - @tooltip-arrow-rotate-width; | ||||
| 
 | ||||
|     &::before { | ||||
|     &-content { | ||||
|       box-shadow: -@tooltip-arrow-shadow-width -@tooltip-arrow-shadow-width 7px fade(@black, 7%); | ||||
|       transform: translateY((@tooltip-arrow-rotate-width / 2)) rotate(45deg); | ||||
|     } | ||||
|  | @ -185,3 +185,20 @@ | |||
|     right: @tooltip-arrow-offset-horizontal; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| .generator-tooltip-preset-color(@i: length(@preset-colors)) when (@i > 0) { | ||||
|   .generator-tooltip-preset-color(@i - 1); | ||||
|   @color: extract(@preset-colors, @i); | ||||
|   @lightColor: '@{color}-6'; | ||||
|   .@{tooltip-prefix-cls}-@{color} { | ||||
|     .@{tooltip-prefix-cls}-inner { | ||||
|       background-color: @@lightColor; | ||||
|     } | ||||
|     .@{tooltip-prefix-cls}-arrow { | ||||
|       &-content { | ||||
|         background-color: @@lightColor; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
| .generator-tooltip-preset-color(); | ||||
|  |  | |||
|  | @ -6,6 +6,7 @@ export default { | |||
|     prefixCls: PropTypes.string, | ||||
|     overlay: PropTypes.any, | ||||
|     trigger: PropTypes.any, | ||||
|     overlayInnerStyle: PropTypes.any, | ||||
|   }, | ||||
|   updated() { | ||||
|     const { trigger } = this; | ||||
|  | @ -14,9 +15,9 @@ export default { | |||
|     } | ||||
|   }, | ||||
|   render() { | ||||
|     const { overlay, prefixCls } = this; | ||||
|     const { overlay, prefixCls, overlayInnerStyle } = this; | ||||
|     return ( | ||||
|       <div class={`${prefixCls}-inner`} role="tooltip"> | ||||
|       <div class={`${prefixCls}-inner`} role="tooltip" style={overlayInnerStyle}> | ||||
|         {typeof overlay === 'function' ? overlay() : overlay} | ||||
|       </div> | ||||
|     ); | ||||
|  |  | |||
|  | @ -28,10 +28,11 @@ export default defineComponent({ | |||
|     arrowContent: PropTypes.any.def(null), | ||||
|     tipId: PropTypes.string, | ||||
|     builtinPlacements: PropTypes.object, | ||||
|     overlayInnerStyle: PropTypes.style, | ||||
|   }, | ||||
|   methods: { | ||||
|     getPopupElement() { | ||||
|       const { prefixCls, tipId } = this.$props; | ||||
|       const { prefixCls, tipId, overlayInnerStyle } = this.$props; | ||||
|       return [ | ||||
|         <div class={`${prefixCls}-arrow`} key="arrow"> | ||||
|           {getComponent(this, 'arrowContent')} | ||||
|  | @ -42,6 +43,7 @@ export default defineComponent({ | |||
|           prefixCls={prefixCls} | ||||
|           id={tipId} | ||||
|           overlay={getComponent(this, 'overlay')} | ||||
|           overlayInnerStyle={overlayInnerStyle} | ||||
|         />, | ||||
|       ]; | ||||
|     }, | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 ajuner
						ajuner