feat: login rest
This commit is contained in:
Generated
Vendored
+11
-1
@@ -12,21 +12,31 @@ export default class ChatActionbar extends SuperComponent {
|
||||
replay: string;
|
||||
copy: string;
|
||||
share: string;
|
||||
quote: string;
|
||||
};
|
||||
iconActiveMap: {
|
||||
good: string;
|
||||
bad: string;
|
||||
};
|
||||
widthStyle: string;
|
||||
popoverStyle: string;
|
||||
popoverPosition: string;
|
||||
longpressVisible: boolean;
|
||||
};
|
||||
observers: {
|
||||
comment(newVal: any): void;
|
||||
'actionBar, pComment'(): void;
|
||||
'actionBar, pComment, placement'(): void;
|
||||
longPressPosition(newVal: any): void;
|
||||
};
|
||||
methods: {
|
||||
filterSpecialChars(content: string): string;
|
||||
handleActionClick(e: any): void;
|
||||
handleCopy(): void;
|
||||
setActions(): void;
|
||||
setPComment(newVal: any): void;
|
||||
showPopover(pos: any): void;
|
||||
hidePopover(): void;
|
||||
onVisibleChange(e: any): void;
|
||||
};
|
||||
lifetimes: {
|
||||
created(): void;
|
||||
|
||||
Generated
Vendored
+1
-1
@@ -1 +1 @@
|
||||
import{__decorate}from"tslib";import{SuperComponent,wxComponent}from"../common/src/index";import config from"../common/config";import props from"./props";const{prefix:prefix}=config,name=`${prefix}-chat-actionbar`;let ChatActionbar=class extends SuperComponent{constructor(){super(...arguments),this.options={multipleSlots:!0},this.properties=props,this.data={actions:[],classPrefix:name,pComment:"",iconMap:{good:"thumb-up",bad:"thumb-down",replay:"refresh",copy:"copy",share:"share-1"},iconActiveMap:{good:"thumb-up-filled",bad:"thumb-down-filled"}},this.observers={comment(t){this.setData({pComment:t||""})},"actionBar, pComment"(){this.setActions()}},this.methods={filterSpecialChars(t){let e=t;const a=[];e=e.replace(/^(\s*\|.*\|.*\n\s*\|[-: ]+\|.*\n(\s*\|.*\|.*\n)*)/gm,t=>{const e=t.replace(/\[\d+(?:,\d+)*\]\(@ref\)/g,"").replace(/(\*\*|__)(.*?)\1|(\*|_)(.*?)\3/g,"$2$4").replace(/<br\s*\/?>/gi,"\n");return a.push(e),`%%TABLE${a.length-1}%%`}),e=e.replace(/^(\s*)#{1,6}\s+/gm,"$1"),e=e.replace(/(\*\*|__)(.*?)\1|(\*|_)(.*?)\3/g,"$2$4"),e=e.replace(/!\[.*?\]\(.*?\)/g,""),e=e.replace(/\[\d+(?:,\d+)*\]\(@ref\)/g,"");return e=e.replace(/(\\|`|\{|\}|\[|\]|\(|\)|\||!|@ref|\([@#]\w+\))/g,""),e=e.replace(/\[\d+\]/g,""),e=e.replace(/<br\s*\/?>/gi,"\n"),e=e.replace(/%%TABLE(\d+)%%/g,(t,e)=>a[parseInt(e,10)]||""),e.replace(/\n{3,}/g,"\n\n").trim()},handleActionClick(t){const{name:e}=t.currentTarget.dataset;if("copy"===e&&this.data.content)this.data.handleCopy();else if("good"===e){const t="good"===this.data.pComment;this.setData({pComment:t?void 0:"good"}),this.triggerEvent("actions",{name:e,active:!t})}else if("bad"===e){const t="bad"===this.data.pComment;this.setData({pComment:t?void 0:"bad"}),this.triggerEvent("actions",{name:e,active:!t})}else this.triggerEvent("actions",{name:e})},handleCopy(){if(!this.data.content)return;const t="markdown"===this.data.copyMode?this.data.content:this.data.filterSpecialChars(this.data.content);this.triggerEvent("actions",{name:"copy",data:t})},setActions(){const t=[];Array.isArray(this.properties.actionBar)&&this.properties.actionBar.forEach(e=>{"good"===e||"bad"===e?t.push({name:e,isActive:this.data.pComment===e}):t.push({name:e,isActive:!1})}),this.setData({actions:t})}},this.lifetimes={created(){this.data.filterSpecialChars=this.filterSpecialChars.bind(this),this.data.handleActionClick=this.handleActionClick.bind(this),this.data.handleCopy=this.handleCopy.bind(this)},attached(){this.setData({pComment:this.properties.comment||""}),this.setActions()},detached(){}}}};ChatActionbar=__decorate([wxComponent()],ChatActionbar);export default ChatActionbar;
|
||||
import{__decorate}from"tslib";import{SuperComponent,wxComponent}from"../common/src/index";import config from"../common/config";import props from"./props";const{prefix:prefix}=config,name=`${prefix}-chat-actionbar`;let ChatActionbar=class extends SuperComponent{constructor(){super(...arguments),this.options={multipleSlots:!0,styleIsolation:"shared"},this.properties=props,this.data={actions:[],classPrefix:name,pComment:"",iconMap:{good:"thumb-up",bad:"thumb-down",replay:"refresh",copy:"copy",share:"share-1",quote:"enter"},iconActiveMap:{good:"thumb-up-filled",bad:"thumb-down-filled"},widthStyle:"",popoverStyle:"transition: none;position: fixed;",popoverPosition:"",longpressVisible:!1},this.observers={comment(t){this.setPComment(t)},"actionBar, pComment, placement"(){this.setActions()},longPressPosition(t){"longpress"===this.properties.placement&&(t?this.showPopover(t):this.hidePopover())}},this.methods={filterSpecialChars(t){let e=t;const i=[];e=e.replace(/^(\s*\|.*\|.*\n\s*\|[-: ]+\|.*\n(\s*\|.*\|.*\n)*)/gm,t=>{const e=t.replace(/\[\d+(?:,\d+)*\]\(@ref\)/g,"").replace(/(\*\*|__)(.*?)\1|(\*|_)(.*?)\3/g,"$2$4").replace(/<br\s*\/?>/gi,"\n");return i.push(e),`%%TABLE${i.length-1}%%`}),e=e.replace(/^(\s*)#{1,6}\s+/gm,"$1"),e=e.replace(/(\*\*|__)(.*?)\1|(\*|_)(.*?)\3/g,"$2$4"),e=e.replace(/!\[.*?\]\(.*?\)/g,""),e=e.replace(/\[\d+(?:,\d+)*\]\(@ref\)/g,"");return e=e.replace(/(\\|`|\{|\}|\[|\]|\(|\)|\||!|@ref|\([@#]\w+\))/g,""),e=e.replace(/\[\d+\]/g,""),e=e.replace(/<br\s*\/?>/gi,"\n"),e=e.replace(/%%TABLE(\d+)%%/g,(t,e)=>i[parseInt(e,10)]||""),e.replace(/\n{3,}/g,"\n\n").trim()},handleActionClick(t){const{name:e}=t.currentTarget.dataset;if("copy"===e&&this.data.content)this.data.handleCopy();else if("good"===e){const t="good"===this.data.pComment;this.setData({pComment:t?void 0:"good"}),this.triggerEvent("actions",{name:e,active:!t,chatId:this.properties.chatId})}else if("bad"===e){const t="bad"===this.data.pComment;this.setData({pComment:t?void 0:"bad"}),this.triggerEvent("actions",{name:e,active:!t,chatId:this.properties.chatId})}else this.triggerEvent("actions",{name:e,chatId:this.properties.chatId});this.onVisibleChange({detail:{visible:!1}})},handleCopy(){if(!this.data.content)return;const t="markdown"===this.data.copyMode?this.data.content:this.data.filterSpecialChars(this.data.content);this.triggerEvent("actions",{name:"copy",data:t})},setActions(){const t={replay:"刷新",copy:"复制",good:"点赞",bad:"点踩",share:"分享",quote:"引用"},e=[];let i=[];"longpress"===this.properties.placement?i=["quote","copy","share"]:Array.isArray(this.properties.actionBar)&&(i=this.properties.actionBar),i.forEach(i=>{"good"===i||"bad"===i?e.push({name:i,isActive:this.data.pComment===i,text:t[i]||i}):e.push({name:i,isActive:!1,text:t[i]||i})}),this.setData({actions:e})},setPComment(t){this.setData({pComment:t||""})},showPopover(t){this.setData({widthStyle:`width: ${128*this.data.actions.length+8*(this.data.actions.length-1)}rpx`,popoverPosition:`top:${t.y}px;left:${t.x}px`,longpressVisible:!0}),setTimeout(()=>{const t=this.selectComponent(".popover"),e=this.createSelectorQuery().in(t);e.select(".t-popover").boundingClientRect(),e.exec(t=>{const[e]=t,{screenWidth:i}=wx.getWindowInfo();e.left+e.width>i?this.setData({popoverStyle:"transition: none;position:fixed; left: unset !important; right: 16rpx !important;"}):e.left<=0&&this.setData({popoverStyle:"transition: none;position:fixed; left: 16rpx !important;"})})},200)},hidePopover(){this.onVisibleChange({detail:{visible:!1}})},onVisibleChange(t){const{visible:e}=t.detail;this.setData({longpressVisible:e}),e||setTimeout(()=>{this.setData({popoverPosition:"",popoverStyle:"transition: none;position: fixed;"})},200)}},this.lifetimes={created(){this.data.filterSpecialChars=this.filterSpecialChars.bind(this),this.data.handleActionClick=this.handleActionClick.bind(this),this.data.handleCopy=this.handleCopy.bind(this),this.data.showPopover=this.showPopover.bind(this),this.data.hidePopover=this.hidePopover.bind(this),this.data.setPComment=this.setPComment.bind(this)},attached(){this.setData({pComment:this.properties.comment||""}),this.setActions()},detached(){}}}};ChatActionbar=__decorate([wxComponent()],ChatActionbar);export default ChatActionbar;
|
||||
Generated
Vendored
+1
-1
@@ -1 +1 @@
|
||||
{"component":true,"styleIsolation":"apply-shared","usingComponents":{"t-icon":"../icon/icon"}}
|
||||
{"component":true,"styleIsolation":"apply-shared","usingComponents":{"t-icon":"../icon/icon","t-popover":"../popover/popover"}}
|
||||
Generated
Vendored
+1
-1
@@ -1 +1 @@
|
||||
<wxs src="../common/utils.wxs" module="_"/><view class="class {{[classPrefix, placement==='longpress' ? classPrefix+'__inner--popover' : '', computedPlacement]}}" style="{{_._style([style, customStyle])}}"><view class="{{classPrefix}}__inner {{classPrefix}}__inner--column"><view class="{{classPrefix}}__item {{classPrefix}}__left"><slot name="prefix"/></view><block wx:for="{{actions}}" wx:for-item="item" wx:for-index="index" wx:key="index"><button wx:if="{{item.name === 'share'}}" data-name="{{item.name}}" class="{{_.cls(classPrefix + '__item', [['active', item.isActive]])}}" open-type="{{content ? 'share' : 'none'}}" data-chat-id="{{chatId}}" bindtap="handleActionClick"><t-icon name="{{item.isActive ? iconActiveMap[item.name] : iconMap[item.name]}}" size="40rpx"/></button><view wx:else data-name="{{item.name}}" class="{{_.cls(classPrefix + '__item', [['active', item.isActive]])}}" bindtap="handleActionClick"><t-icon name="{{item.isActive ? iconActiveMap[item.name] : iconMap[item.name]}}" size="40rpx"/></view></block></view></view>
|
||||
<wxs src="../common/utils.wxs" module="_"/><view wx:if="{{placement !== 'longpress'}}" class="{{[classPrefix, placement]}}" style="{{_._style([style, customStyle])}}"><view class="{{classPrefix}}__inner {{classPrefix}}__inner--column"><view class="{{classPrefix}}__left {{classPrefix+'__item'}}"><slot name="prefix"/></view><block wx:for="{{actions}}" wx:for-item="item" wx:for-index="index" wx:key="index"><button wx:if="{{item.name === 'share'}}" data-name="{{item.name}}" class="{{_.cls(classPrefix+'__item', [['active', item.isActive]])}}" open-type="{{content ? 'share' : 'none'}}" data-chat-id="{{chatId}}" bindtap="handleActionClick"><t-icon name="{{item.isActive ? iconActiveMap[item.name] : iconMap[item.name]}}" size="40rpx"/></button><view wx:else data-name="{{item.name}}" class="{{_.cls(classPrefix+'__item', [['active', item.isActive]])}}" bindtap="handleActionClick"><t-icon name="{{item.isActive ? iconActiveMap[item.name] : iconMap[item.name]}}" size="40rpx"/></view></block></view></view><view wx:else class="{{[classPrefix, classPrefix+'__popover-skeleton']}}" style="{{popoverPosition}}"><t-popover class="popover" placement="bottom" theme="dark" visible="{{longpressVisible}}" customStyle="{{popoverStyle}}" bind:visible-change="onVisibleChange"><view class="{{[classPrefix, classPrefix+'__popover-skeleton__inner']}}"></view><view slot="content" class="{{[classPrefix, classPrefix+'--popover', 'popover-visible']}}" style="{{_._style([style, customStyle, widthStyle])}}"><view class="{{classPrefix}}__inner {{classPrefix}}__inner--column"><view class="{{classPrefix}}__left {{classPrefix+'__item--popover'}}"><slot name="prefix"/></view><block wx:for="{{actions}}" wx:for-item="item" wx:for-index="index" wx:key="index"><button wx:if="{{item.name === 'share'}}" data-name="{{item.name}}" class="{{_.cls(classPrefix+'__item--popover', [['active', item.isActive]])}}" open-type="{{content ? 'share' : 'none'}}" data-chat-id="{{chatId}}" bindtap="handleActionClick"><t-icon name="{{iconMap[item.name]}}" size="40rpx"/><view class="{{classPrefix}}__item__text">{{item.text}}</view></button><view wx:else data-name="{{item.name}}" class="{{_.cls(classPrefix+'__item--popover', [['active', item.isActive]])}}" bindtap="handleActionClick"><t-icon name="{{iconMap[item.name]}}" size="40rpx" customStyle="{{item.name === 'quote' ? 'transform: scaleX(-1)' : ''}}"/><view class="{{classPrefix}}__item__text">{{item.text}}</view></view></block></view></view></t-popover></view>
|
||||
Generated
Vendored
+8
-3
@@ -1,11 +1,16 @@
|
||||
@import '../common/style/index.wxss';.t-chat-actionbar{display:flex;padding:var(--chat-actionbar-padding,0);}
|
||||
.t-chat-actionbar.start{justify-content:flex-start;}
|
||||
.t-chat-actionbar.end{justify-content:flex-end;}
|
||||
.t-chat-actionbar--popover{color:var(--td-font-white-1,#fff);border-radius:6rpx;}
|
||||
.t-chat-actionbar--popover .t-chat-actionbar__inner{background-color:unset;border:none;display:flex;flex-wrap:wrap;gap:4rpx;}
|
||||
.t-chat-actionbar--popover .t-chat-actionbar__inner--column{gap:8rpx;}
|
||||
.t-chat-actionbar--popover .t-chat-actionbar__item--popover{color:#fff;background-color:unset;padding:0;margin:0;font-size:28rpx;line-height:42rpx;width:128rpx;height:156rpx;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8rpx;}
|
||||
.t-chat-actionbar__inner{background-color:var(--td-bg-color-secondarycontainer,var(--td-gray-color-1,#f3f3f3));border:2rpx solid var(--td-component-border,var(--td-gray-color-4,#dcdcdc));box-sizing:border-box;border-radius:var(--td-radius-default,12rpx);display:inline-flex;flex-direction:row;flex-wrap:nowrap;align-items:center;}
|
||||
.t-chat-actionbar__inner--column{display:flex;align-items:center;justify-content:space-between;}
|
||||
.t-chat-actionbar__inner--popover{padding:45rpx;background-color:var(--td-mask-active,rgba(0,0,0,.6));border-radius:32rpx;color:var(--td-font-white-1,#fff);}
|
||||
.t-chat-actionbar__left:empty{display:none;}
|
||||
.t-chat-actionbar__item{color:var(--td-text-color-primary,var(--td-font-gray-1,rgba(0,0,0,.9)));margin:12rpx 0;padding:4rpx 28rpx;border-right:2rpx solid var(--td-component-stroke,var(--td-gray-color-3,#e7e7e7));background-color:unset;outline:0;}
|
||||
.t-chat-actionbar__item{color:var(--td-text-color-primary,var(--td-font-gray-1,rgba(0,0,0,.9)));padding:var(--chat-actionbar-item-padding,16rpx 28rpx);border-right:2rpx solid var(--td-component-stroke,var(--td-gray-color-3,#e7e7e7));background-color:unset;outline:0;}
|
||||
.t-chat-actionbar__item:after{display:none;}
|
||||
.t-chat-actionbar__item:last-child{border-right:none;}
|
||||
.t-chat-actionbar__item--active{color:var(--td-brand-color,var(--td-primary-color-7,#0052d9));}
|
||||
.t-chat-actionbar__item--active{color:var(--td-brand-color,var(--td-primary-color-7,#0052d9));}
|
||||
.t-chat-actionbar__popover-skeleton{position:fixed;--td-popover-padding:8rpx 16rpx;}
|
||||
.t-chat-actionbar__popover-skeleton__inner{width:20rpx;height:20rpx;}
|
||||
+1
-1
@@ -1 +1 @@
|
||||
const props={actionBar:{type:Array,value:["replay","copy","good","bad","share"]},chatId:{type:String,value:""},comment:{type:String,value:""},content:{type:String,value:""},copyMode:{type:String,value:"markdown"},disabled:{type:Boolean,value:!1},placement:{type:String,value:"start"}};export default props;
|
||||
const props={actionBar:{type:Array,value:["replay","copy","good","bad","share"]},chatId:{type:String,value:""},comment:{type:String,value:""},content:{type:String,value:""},copyMode:{type:String,value:"markdown"},disabled:{type:Boolean,value:!1},placement:{type:String,value:"start"},longPressPosition:{type:Object,value:null}};export default props;
|
||||
+12
-1
@@ -25,6 +25,17 @@ export interface TdChatActionbarProps {
|
||||
};
|
||||
placement?: {
|
||||
type: StringConstructor;
|
||||
value?: 'start' | 'end' | 'space-around' | 'space-between';
|
||||
value?: 'start' | 'end' | 'space-around' | 'space-between' | 'longpress';
|
||||
};
|
||||
longPressPosition?: {
|
||||
type: ObjectConstructor;
|
||||
value?: {
|
||||
pageX: number;
|
||||
pageY: number;
|
||||
clientX: number;
|
||||
clientY: number;
|
||||
x: number;
|
||||
y: number;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user