升级package, 以及更新声明文件

This commit is contained in:
zhengw
2026-01-09 16:33:18 +08:00
parent 0c4b2a886c
commit cf461d33f9
238 changed files with 46252 additions and 5857 deletions

View File

@@ -0,0 +1,3 @@
export * from './props';
export * from './type';
export * from './popover';

View File

@@ -0,0 +1 @@
export*from"./props";export*from"./type";export*from"./popover";

View File

@@ -0,0 +1,50 @@
import { TdPopoverProps } from './type';
import { SuperComponent } from '../common/src/index';
export interface PopoverProps extends TdPopoverProps {
}
export default class Popover extends SuperComponent {
behaviors: string[];
externalClasses: string[];
options: {
multipleSlots: boolean;
};
properties: TdPopoverProps;
data: {
prefix: string;
classPrefix: string;
_placement: string;
contentStyle: string;
arrowStyle: string;
};
controlledProps: {
key: string;
event: string;
}[];
observers: {
visible(val: boolean): void;
'placement, realVisible'(v: boolean): void;
};
methods: {
onScroll(): void;
updateVisible(visible: boolean): void;
onOverlayTap(): void;
getToward(placement: string): {
isHorizontal: string;
isVertical: string;
isBase: string;
isEnd: boolean;
};
calcArrowStyle(placement: string, contentDom: any, popoverDom: any): string;
calcContentPosition(placement: string, triggerRect: any, contentRect: any): {
top: number;
left: number;
};
alignCrossAxis(start: number, triggerSize: number, contentSize: number, align: 'start' | 'end' | 'center'): number;
calcPlacement(isFixed: boolean, placement: string, triggerRect: any, contentRect: any): Promise<{
placement: string;
top: number;
left: number;
}>;
computePosition(): Promise<void>;
};
}

View File

@@ -0,0 +1 @@
import{__awaiter,__decorate,__rest}from"tslib";import{getWindowInfo}from"../common/wechat";import{SuperComponent,wxComponent}from"../common/src/index";import config from"../common/config";import props from"./props";import{debounce}from"../common/utils";import transition from"../mixins/transition";import pageScrollMixin from"../mixins/page-scroll";delete props.visible;const{prefix:prefix}=config,name=`${prefix}-popover`;let Popover=class extends SuperComponent{constructor(){super(...arguments),this.behaviors=[transition(),pageScrollMixin()],this.externalClasses=[`${prefix}-class`,`${prefix}-class-content`,`${prefix}-class-trigger`],this.options={multipleSlots:!0},this.properties=props,this.data={prefix:prefix,classPrefix:name,_placement:"top",contentStyle:"",arrowStyle:""},this.controlledProps=[{key:"visible",event:"visible-change"}],this.observers={visible(t){null!=t&&this.updateVisible(t)},"placement, realVisible"(t){t&&this.computePosition()}},this.methods={onScroll(){this.data.realVisible&&debounce(()=>this.computePosition(),100)},updateVisible(t){t!==this.data.visible&&this.setData({visible:t},()=>{this._trigger("visible-change",{visible:t})})},onOverlayTap(){this.properties.closeOnClickOutside&&this.updateVisible(!1)},getToward(t){const e=["top","bottom"],i=["left","right"];return{isHorizontal:e.find(e=>t.includes(e)),isVertical:i.find(e=>t.includes(e)),isBase:[...e,...i].find(e=>e===t),isEnd:t.includes("end")}},calcArrowStyle(t,e,i){const{isHorizontal:o,isVertical:s,isBase:r,isEnd:n}=this.getToward(t);if(r)return"";const{width:l,left:a}=e,{width:c,height:p}=i,{windowWidth:h}=getWindowInfo();if(o){const t=n?Math.min(l+a,c):Math.min(h-a,c);return n?`left:${t-28}px;`:`right:${t-28}px;`}if(s){const t=p-28;return n?`top:${t}px;`:`bottom:${t}px;top:unset;`}return""},calcContentPosition(t,e,i){let o=0,s=0;const r=t.startsWith("top"),n=t.startsWith("bottom"),l=t.startsWith("left"),a=t.startsWith("right");r?o=e.top-i.height:n?o=e.top+e.height:l?s=e.left-i.width:a?s=e.left+e.width:o=e.top-i.height;const c=t.includes("start"),p=t.includes("end");let h;return h=c?"start":p?"end":"center",(r||n)&&(s=this.alignCrossAxis(e.left,e.width,i.width,h)),(l||a)&&(o=this.alignCrossAxis(e.top,e.height,i.height,h)),{top:o,left:s}},alignCrossAxis:(t,e,i,o)=>"start"===o?t:"end"===o?t+e-i:t+e/2-i/2,calcPlacement(t,e,i,o){return new Promise(s=>{const r=this.selectOwnerComponent().createSelectorQuery();r.select(`.${name}-wrapper--fixed`).boundingClientRect(),r.exec(r=>{const[n]=r;n&&t&&(i=n);const{isHorizontal:l,isVertical:a}=this.getToward(e),{width:c,height:p}=o,{left:h,top:m,right:d,bottom:f}=i;let g=!0;const{windowWidth:u,windowHeight:w}=getWindowInfo();let x=e;l?e.startsWith("top")?g=m-p>=0:e.startsWith("bottom")&&(g=f+p<=w):a&&(e.startsWith("left")?g=h-c>=0:e.startsWith("right")&&(g=d+c<=u)),g||(l?x=e.startsWith("top")?e.replace("top","bottom"):e.replace("bottom","top"):a&&(x=e.startsWith("left")?e.replace("left","right"):e.replace("right","left")));const b=this.calcContentPosition(x,i,o);s(Object.assign({placement:x},b))})})},computePosition(){return __awaiter(this,void 0,void 0,function*(){const{placement:t}=this.data,e=t.replace(/-(left|top)$/,"-start").replace(/-(right|bottom)$/,"-end");this.setData({_placement:e});const i=this.createSelectorQuery();i.select(`#${name}-wrapper`).boundingClientRect(),i.select(`#${name}-content`).boundingClientRect(),i.selectViewport().scrollOffset(),i.exec(t=>__awaiter(this,void 0,void 0,function*(){const[i,o,s]=t;if(!i||!o)return;const r=this.properties.fixed,n=yield this.calcPlacement(r,e,i,o),{placement:l}=n,a=__rest(n,["placement"]);this.setData({_placement:l});const{scrollTop:c=0,scrollLeft:p=0}=s||{},h=r?a.top:a.top+c,m=r?a.left:a.left+p,d=`top:${Math.max(h,0)}px;left:${Math.max(m,0)}px;`,f=this.calcArrowStyle(e,i,o);this.setData({contentStyle:d,arrowStyle:f})}))})}}}};Popover=__decorate([wxComponent()],Popover);export default Popover;

View File

@@ -0,0 +1 @@
{"component":true,"styleIsolation":"apply-shared","usingComponents":{"t-overlay":"../overlay/overlay"}}

View File

@@ -0,0 +1 @@
<view id="{{classPrefix}}-wrapper" class="{{classPrefix}}__wrapper"><slot/></view><t-overlay id="popover-overlay" wx:if="{{realVisible && closeOnClickOutside}}" visible="{{true}}" z-index="11000" duration="0" background-color="rgba(0,0,0,0)" bind:tap="onOverlayTap"/><view wx:if="{{realVisible}}" id="{{classPrefix}}-content" style="{{style}} {{contentStyle}} {{customStyle}}" class="{{class}} {{classPrefix}} {{transitionClass}} {{prefix}}-class {{fixed ? classPrefix + '--fixed' : ''}}" data-placement="{{_placement}}"><view class="{{classPrefix}}__content {{classPrefix}}--{{theme}} {{prefix}}-class-content {{showArrow ? classPrefix + '__content--arrow' : ''}}"><slot name="content"/><view wx:if="{{content}}">{{content}}</view><view wx:if="{{showArrow}}" class="{{classPrefix}}__arrow" style="{{arrowStyle}}"></view></view></view>

View File

@@ -0,0 +1,63 @@
@import '../common/style/index.wxss';.t-popover__wrapper{display:inline-block;}
.t-popover{position:absolute;z-index:11500;overflow:visible;transition:.2s ease-in-out all;}
.t-popover--fixed{position:fixed;}
.t-popover__content{position:relative;padding:var(--td-popover-padding,24rpx);border-radius:12rpx;box-shadow:var(--td-shadow-3,0 6px 30px 5px rgba(0,0,0,.05),0 16px 24px 2px rgba(0,0,0,.04),0 8px 10px -5px rgba(0,0,0,.08));font-size:var(--td-font-size-m,32rpx);line-height:48rpx;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;word-break:break-all;}
.t-popover__arrow{position:absolute;width:0;height:0;border-style:solid;border-color:transparent;border-width:16rpx;}
.t-popover .t-popover--dark{color:#fff;background:var(--td-font-gray-1,rgba(0,0,0,.9));}
.t-popover .t-popover--dark .t-popover__arrow{color:var(--td-font-gray-1,rgba(0,0,0,.9));}
.t-popover .t-popover--light{color:var(--td-text-color-primary,var(--td-font-gray-1,rgba(0,0,0,.9)));background:var(--td-bg-color-container,var(--td-font-white-1,#fff));}
.t-popover .t-popover--light .t-popover__arrow{color:var(--td-bg-color-container,var(--td-font-white-1,#fff));}
.t-popover .t-popover--brand{color:var(--td-primary-color-7,#0052d9);background:var(--td-primary-color-1,#f2f3ff);}
.t-popover .t-popover--brand .t-popover__arrow{color:var(--td-primary-color-1,#f2f3ff);}
.t-popover .t-popover--success{color:var(--td-success-color-5,#2ba471);background:var(--td-success-color-1,#e3f9e9);}
.t-popover .t-popover--success .t-popover__arrow{color:var(--td-success-color-1,#e3f9e9);}
.t-popover .t-popover--warning{color:var(--td-warning-color-5,#e37318);background:var(--td-warning-color-1,#fff1e9);}
.t-popover .t-popover--warning .t-popover__arrow{color:var(--td-warning-color-1,#fff1e9);}
.t-popover .t-popover--error{color:var(--td-error-color-6,#d54941);background:var(--td-error-color-1,#fff0ed);}
.t-popover .t-popover--error .t-popover__arrow{color:var(--td-error-color-1,#fff0ed);}
.t-popover.t-fade-enter-to{opacity:1;visibility:visible;}
.t-popover.t-fade-enter,.t-popover.t-fade-leave-to{opacity:0;visibility:hidden;}
.t-popover[data-placement^=top] .t-popover__content{margin-bottom:16rpx;}
.t-popover[data-placement^=top] .t-popover__content--arrow{margin-bottom:24rpx;}
.t-popover[data-placement^=bottom] .t-popover__content{margin-top:16rpx;}
.t-popover[data-placement^=bottom] .t-popover__content--arrow{margin-top:24rpx;}
.t-popover[data-placement^=left] .t-popover__content{margin-right:16rpx;}
.t-popover[data-placement^=left] .t-popover__content--arrow{margin-right:24rpx;}
.t-popover[data-placement^=right] .t-popover__content{margin-left:16rpx;}
.t-popover[data-placement^=right] .t-popover__content--arrow{margin-left:24rpx;}
.t-popover[data-placement^=top] .t-popover__arrow{bottom:0;border-top-color:currentColor;border-bottom-width:0;margin-bottom:calc(16rpx * -1);}
.t-popover[data-placement=top]{transform-origin:50% 100%;}
.t-popover[data-placement=top] .t-popover__arrow{left:50%;transform:translateX(-50%);}
.t-popover[data-placement=top-start]{transform-origin:0 100%;}
.t-popover[data-placement=top-start] .t-popover__arrow{left:var(--td-popover-padding,24rpx);}
.t-popover[data-placement=top-end]{transform-origin:100% 100%;}
.t-popover[data-placement=top-end] .t-popover__arrow{right:var(--td-popover-padding,24rpx);}
.t-popover[data-placement^=bottom] .t-popover__arrow{top:0;border-top-width:0;border-bottom-color:currentColor;margin-top:calc(16rpx * -1);}
.t-popover[data-placement=bottom]{transform-origin:50% 0;}
.t-popover[data-placement=bottom] .t-popover__arrow{left:50%;transform:translateX(-50%);}
.t-popover[data-placement=bottom-start]{transform-origin:0 0;}
.t-popover[data-placement=bottom-start] .t-popover__arrow{left:var(--td-popover-padding,24rpx);}
.t-popover[data-placement=bottom-end]{transform-origin:100% 0;}
.t-popover[data-placement=bottom-end] .t-popover__arrow{right:var(--td-popover-padding,24rpx);}
.t-popover[data-placement^=left] .t-popover__arrow{right:0;border-right-width:0;border-left-color:currentColor;margin-right:calc(16rpx * -1);}
.t-popover[data-placement=left]{transform-origin:100% 50%;}
.t-popover[data-placement=left] .t-popover__arrow{top:50%;transform:translateY(-50%);}
.t-popover[data-placement=left-start]{transform-origin:100% 0;}
.t-popover[data-placement=left-start] .t-popover__arrow{top:var(--td-popover-padding,24rpx);}
.t-popover[data-placement=left-end]{transform-origin:100% 100%;}
.t-popover[data-placement=left-end] .t-popover__arrow{bottom:var(--td-popover-padding,24rpx);}
.t-popover[data-placement^=right] .t-popover__arrow{left:0;border-right-color:currentColor;border-left-width:0;margin-left:calc(16rpx * -1);}
.t-popover[data-placement=right]{transform-origin:0 50%;}
.t-popover[data-placement=right] .t-popover__arrow{top:50%;transform:translateY(-50%);}
.t-popover[data-placement=right-start]{transform-origin:0 0;}
.t-popover[data-placement=right-start] .t-popover__arrow{top:var(--td-popover-padding,24rpx);}
.t-popover[data-placement=right-end]{transform-origin:0 100%;}
.t-popover[data-placement=right-end] .t-popover__arrow{bottom:var(--td-popover-padding,24rpx);}
.content-placement-top .t-popover[data-placement^=top] .t-popover__content{margin-bottom:16rpx;}
.content-placement-top .t-popover[data-placement^=top] .t-popover__content--arrow{margin-bottom:24rpx;}
.content-placement-bottom .t-popover[data-placement^=bottom] .t-popover__content{margin-top:16rpx;}
.content-placement-bottom .t-popover[data-placement^=bottom] .t-popover__content--arrow{margin-top:24rpx;}
.content-placement-left .t-popover[data-placement^=left] .t-popover__content{margin-right:16rpx;}
.content-placement-left .t-popover[data-placement^=left] .t-popover__content--arrow{margin-right:24rpx;}
.content-placement-right .t-popover[data-placement^=right] .t-popover__content{margin-left:16rpx;}
.content-placement-right .t-popover[data-placement^=right] .t-popover__content--arrow{margin-left:24rpx;}

View File

@@ -0,0 +1,3 @@
import { TdPopoverProps } from './type';
declare const props: TdPopoverProps;
export default props;

View File

@@ -0,0 +1 @@
const props={closeOnClickOutside:{type:Boolean,value:!0},content:{type:String},fixed:{type:Boolean,value:!1},placement:{type:String,value:"top"},showArrow:{type:Boolean,value:!0},theme:{type:String,value:"dark"},visible:{type:Boolean,value:null},defaultVisible:{type:Boolean}};export default props;

View File

@@ -0,0 +1,34 @@
export interface TdPopoverProps {
closeOnClickOutside?: {
type: BooleanConstructor;
value?: boolean;
};
content?: {
type: StringConstructor;
value?: string;
};
fixed?: {
type: BooleanConstructor;
value?: boolean;
};
placement?: {
type: StringConstructor;
value?: 'top' | 'left' | 'right' | 'bottom' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'left-top' | 'left-bottom' | 'right-top' | 'right-bottom';
};
showArrow?: {
type: BooleanConstructor;
value?: boolean;
};
theme?: {
type: StringConstructor;
value?: 'dark' | 'light' | 'brand' | 'success' | 'warning' | 'error';
};
visible?: {
type: BooleanConstructor;
value?: boolean;
};
defaultVisible?: {
type: BooleanConstructor;
value?: boolean;
};
}

View File

@@ -0,0 +1 @@
export{};